From: Chet Ramey Date: Mon, 26 Sep 2022 15:49:46 +0000 (-0400) Subject: bash-5.2 distribution sources and documentation X-Git-Tag: bash-5.2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=74091dd4e8086db518b30df7f222691524469998;p=thirdparty%2Fbash.git bash-5.2 distribution sources and documentation --- diff --git a/CHANGES b/CHANGES index 7a47c7c57..e4e0124f2 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,549 @@ +This document details the changes between this version, bash-5.2-release, and +the previous version, bash-5.2-rc4. + +1. Changes to Bash + +2. Changes to Readline + +a. When replacing a history entry, make sure the existing entry has a non-NULL + timestamp before copying it; it may have been added by the application, not + the history library. + +3. New Features in Bash + +4. New Features in Readline + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.2-rc4, and +the previous version, bash-5.2-rc3. + +1. Changes to Bash + +a. Changed how the compatibility mode enabling of extglob works in conjunction + with parsing conditional commands. + +b. Fixed a problem with aliases containing command substitutions. + +2. Changes to Readline + +3. New Features in Bash + +4. New Features in Readline + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.2-rc3, and +the previous version, bash-5.2-rc2. + +1. Changes to Bash + +a. Added a compatibility mode feature that causes the parser to parse command + substitutions as if extglob were enabled. If it is enabled before execution, + parse at execution will succeed. If not, the subsequent execution parse will + fail. + +b. Fixed an issue with handling a `return' executed in a trap action if the + trap is executed while running in a shell function. + +2. Changes to Readline + +3. New Features in Bash + +4. New Features in Readline + +a. Readline now checks for changes to locale settings (LC_ALL/LC_CTYPE/LANG) + each time it is called, and modifies the appropriate locale-specific display + and key binding variables when the locale changes. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.2-rc2, and +the previous version, bash-5.2-rc1. + +1. Changes to Bash + +a. Fixed a bug that could disable history saving after a compound array + assignment in an interactive shell. + +b. Fixed a bug that could cause incorrect error messages when running a DEBUG + trap during a conditional or arithmetic command. + +c. Fixed a bug that caused test to print an error message when given ! ! arg + as arguments. + +d. Fixed a bug that resulted in incorrect error messages when completing a + backquoted command substitution. + +e. Changed command substitution parsing to reproduce the original text more + closely when reconsituting the command string from the parsed command. + +f. Fixed a bug that could cause an EXIT trap to use the wrong variable context + when the errexit option is set. + +g. Fixed a bug that could cause the parser to incorrectly delimit a token when + an alias expansion ended with a multibyte character. + +2. Changes to Readline + +3. New Features in Bash + +a. Since there is no `declare -' equivalent of `local -', make sure to use + `local -' in the output of `local -p'. + +b. Null anchored matches in pattern substitution now process `&' in the + replacement string, like sed. + +4. New Features in Readline + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.2-rc1, and +the previous version, bash-5.2-beta. + +1. Changes to Bash + +a. Changes to `wait -p' and how it sets the variable name in the presence of + valid and invalid PID arguments. + +b. Fixed a bug that caused compgen to dump core if the completion engine was + not initialized. + +c. Fixed a memory leak in the variable name programmable completion code. + +d. Here-documents and here-strings use tempfiles if the shell compatibility + level is 50 or lower. + +e. Non-interactive shells exit on a syntax error encountered while parsing a + command substitution. + +f. Fixed a bug with inherited parser state while parsing a command substitution. + +g. Fixed a bug that caused the shell not to check for terminating signals + after executing the command_string supplied with `-c' and before executing + the exit trap. + +h. Changes to avoid a make race condition while generating builtins.c. + +i. Make it explicit that BASH_REMATCH is always a global variable, and that + local copies are (currently) ignored. + +j. Fixed a bug that caused an ambiguous redirection (>&word) to be printed + incorrectly (>&word) if no file descriptor was supplied. + +2. Changes to Readline + +a. Fixed a bug that caused rl_eof_found to be set prematurely while reading a + multi-character key sequence in callback mode. + +3. New Features in Bash + +a. In posix mode, the `printf' builtin checks for the `L' length modifier and + uses long double for floating point conversion specifiers if it's present, + double otherwise. + +b. The `globbing' completion code now takes the `globstar' option into account. + +c. `suspend -f' now forces the shell to suspend even if job control is not + currently enabled. + +4. New Features in Readline + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.2-beta, and +the previous version, bash-5.2-alpha. + +1. Changes to Bash + +a. Fixed a problem with command-oriented history and multi-line commands that + caused embedded blank lines to be run together. + +b. Changed the way `&' is quoted when performing pattern substitution and + `patsub_replacement' is enabled. + +c. Fixed some integer overflows when expanding strings or reading the output + of command substitution larger than 2GB. + +d. `wait -p' without the `-n' option now does something useful if there are no + jobs. + +e. Fixed an issue with read timeouts in posix mode. + +f. Changed here-document processing to process $'...' and $"..." only when they + appear in the WORD portion of ${PARAM OP WORD} in the here-document body + and the body is being expanded. + +g. Changed alias expansion in command substitution to be posix-conformant + (performed while initially parsing the command substitution) when in posix + mode. + +h. Bash optimizes away more forks in subshells. + +i. Here-document construction now performs quote removal on the here-document + delimiter only if it's marked as quoted, which prevents quote characters in + command substitutions from being removed. + +j. Prompt string expansion now gives invisible characters in the expansion of + the \w, \W, and \s escape sequences a visible representation to avoid + problems with redisplay. + +k. Fixed a problem with SIGINT during the execution of a command bound with + `bind -x' affecting the saved terminal settings. + +l. Fixed an inconsistency with how $@ expands in a construct like ${@:+set} + or ${array[@]:+set} in the presence of null positional parameters or + array elements. + +2. Changes to Readline + +a. Prevent some display problems when running a command as the result of a + trap or one bound using `bind -x' and the command generates output. + +b. Fixed an issue with multi-line prompt strings that have one or more + invisible characters at the end of a physical line. + +c. Fixed an issue that caused a history line's undo list to be cleared when + it should not have been. + +3. New Features in Bash + +a. There is a new bindable readline command name: `vi-edit-and-execute-command'. + +4. New Features in Readline + +a. Two new bindable string variables: active-region-start-color and + active-region-end-color. The first sets the color used to display the + active region; the second turns it off. If set, these are used in place + of terminal standout mode. + +b. New readline state (RL_STATE_EOF) and application-visible variable + (rl_eof_found) to allow applications to detect when readline reads EOF + before calling the deprep-terminal hook. + +c. There is a new configuration option: --with-shared-termcap-library, which + forces linking the shared readline library with the shared termcap (or + curses/ncurses/termlib) library so applications don't have to do it. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.2-alpha, and +the previous version, bash-5.1-release. + +1. Changes to Bash + +a. Fixed a bug that assigned a value to the variable name supplied as an + argument to `wait -p' when there were no jobs. + +b. Fixed a bug that resulted in performing incorrect word expansion on the + key/value pairs in a compound array assignment. + +c. Fixed a bug that could put the child forked to run a command substitution + into the wrong process group. + +d. Fixed a problem that could cause the lastpipe option to work incorrectly if + file descriptor 0 was closed. + +e. Bash tries to suppress traps if a forked child receives a trapped signal + before it has a chance to reset its signal handlers. + +f. Fixed several memory leaks in compound array assignments. + +g. Fixed a problem with performing an assignment with `+=' to an array element + that was the value of a nameref. + +h. Fixed a bug that could cause a nameref containing an array reference using + `@' or `*' not to expand to multiple words. + +i. Fixed a bug where extended glob functions could match `.' or `..' when it + wasn't explicitly specified, even if dotglob was set. + +j. Fixed a bug that caused non-interactive posix-mode shells not to exit on a + variable assignment error while assigning into the temporary environment. + +k. Fixed a bug that caused parsing errors if an alias contained a compound + array assignment. + +l. Fixed a couple of instances where bash checked syntax too aggressively when + trying to determine how to add a partial command to command-oriented + history. + +m. Fixed a parser problem that caused it not to allow reserved words to follow + the `((' and `[[' commands. + +n. Fixed a bad offset calculation when using negative offsets to `history -d'. + +o. Fixed an off-by-one error that caused a read past the end of a buffer when + reading a multibyte character from the output of a command substitution. + +p. Fixed a problem with a failed `exec' command not setting $? to the right + value for an exit trap. + +q. Fixed a problem that caused bash not to unlink FIFOs created as part of + expanding redirections for an external command. + +r. Fixed a bug that could cause aliases not to be expanded in case statements. + +s. Fixed a bug that could cause word completion to attempt programmable + completion for the target of a redirection, instead of filename completion. + +t. Fixed a bug that could result in errors after rebinding a key sequence with + `bind -x' multiple times. + +u. Fixed a problem that could result in not quoting the result when performing + command name completion with a glob pattern in the command name. + +v. `mapfile' now uses fully-buffered reads in more cases, which should improve + bulk read performance. + +w. Fixed a bug that caused `wait -n' to not reset its internal state when + interrupted by a signal, resulting in subsequent calls failing. + +x. Fixed a bug with parsing numeric arguments to readline key sequences + installed with `bind -x'. + +y. Bash suppresses forking in several additional cases, including most uses + of $( 128 in the current encoding. + +hh. Fixed a problem that could cause the shell to attempt to free unallocated + memory if an expansion error occurred. + +ii. Fixed a bug in the bash malloc implementation of malloc_usable_size. Bash + did not use it, but it could cause problems with library functions that + did. + +jj. If the `exec' builtin fails, and the shell does not exit, it restores + trapped signals to their trapped state. + +kk. Fixed a bug that could cause variable assignment arguments to `declare' to + expand variables using attributes that the call to declare was turning off. + +ll. Fixed a bug with LINENO and arithmetic for commands. + +mm. Fixed a posix-mode bug that caused tildes not to be expanded after an + unquoted colon on the right side of an assignment statement. + +nn. Fixed a problem with `caller' and line numbers when executing an ERR trap. + +oo. Fixed a problem that could make the value returned by ${a:=b} not be the + final value assigned to a (e.g., if `a' has an attribute that modifies + the value on assignment). + +pp. Fixed a problem with saving multi-line here-documents to the history list + where the here-document delimiter does not appear on the first line. + +qq. Fixed a bug with using += to assign to dynamic variables like RANDOM. + +rr. Fixed a bug that caused `set -n' to modify $? if set after execution had + started. + +ss. Builtins like printf/read/wait now behave more consistently when assigning + arbitrary keys to associative arrays (like `]'. when appropriately quoted). + +tt. Fixed a problem with here-document collection printing the wrong prompt + when parsing a compound list in an interactive shell. + +uu. Fixed a problem with quoting shell expansion characters (like `$') when + they appear in a tab-completed word along with characters that do need + quoting (e.g.. $HOME/VirtualBox VMs). + +2. Changes to Readline + +a. Fixed a problem with cleaning up active marks when using callback mode. + +b. Fixed a problem with arithmetic comparison operators checking the version. + +c. Fixed a problem that could cause readline not to build on systems without + POSIX signal functions. + +d. Fixed a bug that could cause readline to crash if the application removed + the callback line handler before readline read all typeahead. + +e. Added additional checks for read errors in the middle of readline commands. + +f. Fixed a redisplay problem that occurred when switching from the digit- + argument prompt `(arg: N)' back to the regular prompt and the regular + prompt contained invisible characters. + +g. Fixed a problem with restoring the prompt when aborting an incremental + search. + +h. Fix a problem with characters > 128 not being displayed correctly in certain + single-byte encodings. + +i. Fixed a problem with unix-filename-rubout that caused it to delete too much + when applied to a pathname consisting only of one or more slashes. + +j. Fixed a display problem that caused the prompt to be wrapped incorrectly if + the screen changed dimensions during a call to readline() and the prompt + became longer than the screen width. + +k. Fixed a problem that caused the \r output by turning off bracketed paste + to overwrite the line if terminal echo was disabled. + +l. Fixed a bug that could cause colored-completion-prefix to not display if + completion-prefix-display-length was set. + +m. Fixed a problem with line wrapping prompts when a group of invisible + characters runs to the right edge of the screen and the prompt extends + longer then the screen width. + +n. Fixed a couple problems that could cause rl_end to be set incorrectly by + transpose-words. + +3. New Features in Bash + +a. The bash malloc returns memory that is aligned on 16-byte boundaries. + +b. There is a new internal timer framework used for read builtin timeouts. + +c. Rewrote the command substitution parsing code to call the parser recursively + and rebuild the command string from the parsed command. This allows better + syntax checking and catches errors much earlier. Along with this, if + command substitution parsing completes with here-documents remaining to be + read, the shell prints a warning message and reads the here-document bodies + from the current input stream. + +d. The `ulimit' builtin now treats an operand remaining after all of the options + and arguments are parsed as an argument to the last command specified by + an option. This is for POSIX compatibility. + +e. Here-document parsing now handles $'...' and $"..." quoting when reading the + here-document body. + +f. The `shell-expand-line' and `history-and-alias-expand-line' bindable readline + commands now understand $'...' and $"..." quoting. + +g. There is a new `spell-correct-word' bindable readline command to perform + spelling correction on the current word. + +h. The `unset' builtin now attempts to treat arguments as array subscripts + without parsing or expanding the subscript, even when `assoc_expand_once' + is not set. + +i. There is a default value for $BASH_LOADABLES_PATH in config-top.h. + +j. Associative array assignment and certain instances of referencing (e.g., + `test -v') now allow `@' and `*' to be used as keys. + +k. Bash attempts to expand indexed and associative array subscripts only + once when executing shell constructs and word expansions. + +l. The `unset' builtin allows a subscript of `@' or `*' to unset a key with + that value for associative arrays instead of unsetting the entire array + (which you can still do with `unset arrayname'). For indexed arrays, it + removes all elements of the array without unsetting it (like `A=()'). + +m. Additional builtins (printf/test/read/wait) do a better job of not + parsing array subscripts if array_expand_once is set. + +n. New READLINE_ARGUMENT variable set to numeric argument for readline commands + defined using `bind -x'. + +o. The new `varredir_close' shell option causes bash to automatically close + file descriptors opened with {var}&WORD- redirection has WORD expand to the empty + string, treat the redirection as [N]<&- or [N]>&- and close file descriptor + N (default 0). + +w. Invalid parameter transformation operators are now invalid word expansions, + and so cause fatal errors in non-interactive shells. + +x. New shell option: patsub_replacement. When enabled, a `&' in the replacement + string of the pattern substitution expansion is replaced by the portion of + the string that matched the pattern. Backslash will escape the `&' and + insert a literal `&'. + +y. `command -p' no longer looks in the hash table for the specified command. + +z. The new `--enable-translatable-strings' option to `configure' allows $"..." + support to be compiled in or out. + +aa. The new `globskipdots' shell option forces pathname expansion never to + return `.' or `..' unless explicitly matched. It is enabled by default. + +bb. Array references using `@' and `*' that are the value of nameref variables + (declare -n ref='v[@]' ; echo $ref) no longer cause the shell to exit if + set -u is enabled and the array (v) is unset. + +4. New Features in Readline + +a. There is now an HS_HISTORY_VERSION containing the version number of the + history library for applications to use. + +b. History expansion better understands multiple history expansions that may + contain strings that would ordinarily inhibit history expansion (e.g., + `abc!$!$'). + +c. There is a new framework for readline timeouts, including new public + functions to set timeouts and query how much time is remaining before a + timeout hits, and a hook function that can trigger when readline times + out. There is a new state value to indicate a timeout. + +d. Automatically bind termcap key sequences for page-up and page-down to + history-search-backward and history-search-forward, respectively. + +e. There is a new `fetch-history' bindable command that retrieves the history + entry corresponding to its numeric argument. Negative arguments count back + from the end of the history. + +f. `vi-undo' is now a bindable command. + +g. There is a new option: `enable-active-region'. This separates control of + the active region and bracketed-paste. It has the same default value as + bracketed-paste, and enabling bracketed paste enables the active region. + Users can now turn off the active region while leaving bracketed paste + enabled. + +h. rl_completer_word_break_characters is now `const char *' like + rl_basic_word_break_characters. + +i. Readline looks in $LS_COLORS for a custom filename extension + (*.readline-colored-completion-prefix) and uses that as the default color + for the common prefix displayed when `colored-completion-prefix' is set. + +------------------------------------------------------------------------------ This document details the changes between this version, bash-5.1-rc3, and the previous version, bash-5.1-rc2. @@ -4024,7 +4570,7 @@ l. There is a new configuration option (in config-top.h) that forces bash to 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 +n. There is a new configure 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 @@ -4065,7 +4611,7 @@ d. New bindable function: skip-csi-sequence. Can be used as a default to 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 + to rewrite 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 @@ -4147,7 +4693,7 @@ 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. + substitution was followed 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. @@ -9083,7 +9629,7 @@ gg. `alias' and `unalias' now print error messages when passed an argument 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. + defined, as POSIX.2 specifies. ii. `cd -' now prints the pathname of the new working directory if the shell is interactive. diff --git a/COMPAT b/COMPAT index 5cfb83600..9fda7fb8f 100644 --- a/COMPAT +++ b/COMPAT @@ -2,11 +2,11 @@ Compatibility with previous versions ==================================== This document details the incompatibilities between this version of bash, -bash-5.1, and the previous widely-available versions, bash-3.2 (which is +bash-5.2, and the previous widely-available versions, bash-3.2 (which is still the `standard' version for Mac OS X), 4.2/4.3 (which are still -standard on a few Linux distributions), and bash-4.4/bash-5.0, the current -widely-available versions. These were discovered by users of bash-2.x -through 5.x, so this list is not comprehensive. Some of these +standard on a few Linux distributions), and bash-4.4/bash-5.0/bash-5.1, +the current widely-available versions. These were discovered by users of +bash-2.x through 5.x, so this list is not comprehensive. Some of these incompatibilities occur between the current version and versions 2.0 and above. @@ -419,6 +419,14 @@ above. options that posix mode modifies to the state they had before enabling posix mode. Previous versions restored these options to default values. +66. Bash-5.2 attempts to prevent double-expansion of array subscripts under + certain circumstances, especially arithmetic evaluation, by acting as if + the `assoc_expand_once' shell option were set. + +67. The `unset' builtin in bash-5.2 treats array subscripts `@' and `*' + differently than previous versions, and differently depending on whether + the array is indexed or associative. + Shell Compatibility Level ========================= @@ -542,7 +550,43 @@ compat50 (set using BASH_COMPAT) printed an informational message to that effect even when writing output in a format that can be reused as input (-l). Bash-5.1 suppresses that message if -l is supplied - + - Bash-5.1 and later use pipes for here-documents and here-strings if + they are smaller than the pipe capacity. If the shell compatibility + level is set to 50 or lower, it reverts to using temporary files. + +compat51 (set using BASH_COMPAT) + - The `unset' builtin will unset the array a given an argument like + `a[@]'. Bash-5.2 will unset an element with key `@' (associative + arrays) or remove all the elements without unsetting the array + (indexed arrays) + - arithmetic commands ( ((...)) ) and the expressions in an arithmetic + for statement can be expanded more than once + - expressions used as arguments to arithmetic operators in the [[ + conditional command can be expanded more than once + - indexed and associative array subscripts used as arguments to the + operators in the [[ conditional command (e.g., `[[ -v') can be + expanded more than once. Bash-5.2 behaves as if the + `assoc_expand_once' option were enabled. + - the expressions in substring parameter brace expansion can be + expanded more than once + - the expressions in the $(( ... )) word expansion can be expanded + more than once + - arithmetic expressions used as indexed array subscripts can be + expanded more than once; + - `test -v', when given an argument of A[@], where A is an existing + associative array, will return true if the array has any set + elements. Bash-5.2 will look for a key named `@'; + - the ${param[:]=value} word expansion will return VALUE, before any + variable-specific transformations have been performed (e.g., + converting to lowercase). Bash-5.2 will return the final value + assigned to the variable, as POSIX specifies; + - Parsing command substitutions will act as if extended glob is + enabled, so that parsing a command substitution containing an extglob + pattern (say, as part of a shell function) will not fail. This + assumes the intent is to enable extglob before the command is + executed and word expansions are performed. It will fail at word + expansion time if extglob hasn't been enabled by the time the + command is executed. ------------------------------------------------------------------------------- diff --git a/CWRU/changelog b/CWRU/changelog index 27f62c026..da6d4aa1c 100644 --- a/CWRU/changelog +++ b/CWRU/changelog @@ -1,9182 +1,3952 @@ - 9/15/2016 + 12/6/2020 --------- -[bash-4.4 released] - 9/17 - ---- -builtins/common.c - - display_signal_list: if 0 is supplied as an argument to kill -l, - display a signal-out-of-range error. Fixes bug reported by - Martijn Dekker - - 9/18 - ---- -print_cmd.c - - print_heredoc_bodies: take a list of redirections, all here documents, - and print the here-document bodies including the ending delimiter, - followed by a newline - - print_redirection_list: print the heredoc headers the first time - through the list of redirections so we print them in the same left- - to-right order they're supplied; print the bodies and delimiters with - print_heredoc_bodies after we print all the redirections if we're - not printing a list of commands (printing_connection == 0). Fix for - problem reported by Isabella Parakiss - - print_deferred_heredocs: don't print heredoc headers, since they're - now printed in print_redirection_list - - print_deferred_heredocs: use print_heredoc_bodies - - 9/20 - ---- -builtins/mapfile.def - - readarray: update usage synopsis to include -d delim. Report and - fix from jhankins@homewood.k12.al.us - -test.c - - test_binop: if op[0] == '-', make sure op[1] != 0 before checking - op[2] or op[3]. Fixes out-of-bounds read reported by Franco - Costantini - -parse.y - - cond_term: if yylval.word->word[0] == '-' make sure word[1] != 0 - before checking word[2] and calling test_unop. Fixes out-of-bounds - read reported by Franco Costantini - - make sure to check all instances of the return value of the - simple_command production before trying to hook redirections onto it, - since it can potentially return NULL. - Reported by Franco Costantini - - 9/21 - ---- -parse.y - - token_is_assignment: make sure to check that the return value from - assignment() finds the `=' we just added at index I to avoid false - positives from g=g=g=g=g=g=(). Reported by Franco Costantini - - - 9/22 - ---- -parse.y - - token_is_assignment: if we're not using the bash malloc (which has - guard bytes after the requested allocation size), use a new - buffer so we can make sure it's big enough to hold the current - token and at least two additional characters. Reported by - Franco Costantini - - 9/23 - ---- -execute_cmd.c - - execute_in_subshell: call without_job_control for both job control - and non-job-control builds to avoid waiting for last_made_pid - inherited from parent shell. Related to fix from 8/4 to - initialize_subshell. Fixes bug reported by Martijn Dekker - - -builtins/declare.def - - local_builtin: allow `local --help' to work even when not executing - a function. Suggestion from Norm Abramovitz - - 9/25 - ---- -builtins/printf.def - - bexpand: if passed a null or empty string, return a newly-allocated - empty string (so the return value can always be freed) instead of - NULL. - - printstr: if passed a null string, treat it as if it were an empty - string so any precision or fieldwidth arguments are handled - correctly. Report from isabella parakiss - -subst.c - - skip_matched_pair: make the flags argument of 1 affect whether or - not backslash can quote characters in the string, so it affects - all quoting mechanisms - -arrayfunc.c - - unbind_array_element: now takes a third (flags) argument; flags&1 - means to not expand an associative array index. This is only called - from a shell builtin context, which means the argument should have - already undergone word expansion, so it should be ok. Will still - be a problem for uses like "unset -v 'var[$ind]'", quoted to avoid - globbing - - valid_array_reference: pass second flags argument to skipsubscript; - still set to 0 by all callers - -arrayfunc.h - - unbind_array_element: updated prototype - -builtins/set.def - - unset_builtin: add third argument of 1 to unbind_array_element calls - [TEMPORARILY DISABLED] - - unset_builtin: call valid_array_reference with second arg of 1 to - handle unmatched pairs of quotes and [/] - -array.c - - array_reference: optimize access locality as well as sequential - access by adding ability to start from last-accessed element and move - backwards or forwards depending on the desired index. Inspired by - report from Tom McCurdy and followup from - Christian Franke - -variables.c - - all_array_variables: include associative arrays, not just indexed - arrays. Reported by Grisha Levit - -execute_cmd.c - - execute_disk_command: if we're optimizing out the fork (CMD_NO_FORK), - decrement the shell level so we don't end up incrementing it twice. - We should decrement the shell level for an implicit exec like an - explicit one. Reported by Stephane Chazelas - - -builtins/exec.def - - exec_builtin: don't bother to decrement the shell level if we are - already in a `(command)' subshell. Reported by Stephane Chazelas - - -lib/readline/macro.c - - macro_level: count of macro nesting level, maintained by - _rl_push_executing_macro and _rl_pop_executing macro - - _rl_with_macro_input: if current nesting level exceeds - MAX_MACRO_LEVEL, abort the current command line with _rl_abort_internal - and return to the top level. Reported by Christian Klomp - - -lib/readine/history.c - - add_history: if allocating the history list for the first time, - make sure the max history list size isn't so large that it will - cause allocation errors. Cap it at MAX_HISTORY_INITIAL_SIZE - (8192). Reported by Sean Zha - -jobs.c - - wait_for: if a foreground job with job control enabled is killed by a - SIGINT and sourcelevel != 0, act as if we received the SIGINT so the - file sourcing can be terminated. Reported by PePa - - - 9/26 - ---- -subst.c - - read_comsub: only warn once for null bytes in command substitution - output, instead of once for every null byte - -arrayfunc.c - - array_variable_part: now takes a `flags' argument; changed all callers - to initially pass 0 - - array_variable_name: now takes a `flags' argument; changed all callers - to initially pass 0 - - array_variable_name: pass `flags' argument to skipsubscript instead - of just passing 0 - -arrayfunc.h - - array_variable_{name,part}: added new argument to prototypes - - 9/29 - ---- -bashline.c - - bash_directory_completion_hook: don't bother to try and expand a - ${ or $( that isn't complete; expand_prompt_string will complain. - Fixes reports from John Passaro and - Valentin Bajrami - -lib/readline/history.c - - _hs_append_history_line: use a strategy that attempts to avoid - realloc copying memory to a newly-allocated block if the history - line we're appending to gets `too long' (currently 256 bytes). - We reallocate in powers of 2 starting at 512, and rely on realloc - not allocating a new block and copying into it if the size is the - same as the last call to realloc. Addresses issue raised by - Hubert Schmid - -trap.h - - check_signals: new extern declaration - - trapped_signal_received: new extern declaration - -builtins/read.def - - read_builtin: if one of the zread* functions returns < 0 (which - usually only happens in Posix mode), make sure we call check_signals() - before eventually calling run_pending_traps() because zread() isn't - going to call it - - include trap.h for correct extern functions and variable declarations - -lib/sh/zread.c - - zread: if executing a builtin, call check_signals_and_traps() for - backwards compatibility. If not, call check_signals() only, because - we don't want to run traps during, for instance, reading command - substitution output. Fixes race condition bug reported by Luiz Angelo - Daros de Luca - - 9/30 - ---- -subst.c - - command_substitute: reset parse_and_execute_level to 0 in the child - process, since it's independent of the other parse_and_execute - calls. Adds command substitution inside other parse_and_execute - calls optimizations to suppress forks, as suggested by - Martijn Dekker - - 10/3 - ---- -configure.ac - - SHOBJ_STATUS: make sure it defaults to unsupported and is substituted - if the shobj-conf script isn't run. Fixes `make install' bug with - a minimal config reported by Andrew Tomazos - - 10/5 - ---- -support/shobj-conf - - darwin: set compatibility_version for a shared build of the readline - library (the standalone readline distribution shares this file) to - $(SHLIB_MAJOR)$(SHLIB_MINOR). Recommendation from Max Horn - - - 10/6 - ---- -array.h - - array_first_index: new convenience define - -array.c - - ADD_AFTER: new define, complement of ADD_BEFORE - - UNSET_LASTREF: now takes an array as an argument, prepping for move - of lastref pointer into the array struct - - array_insert: check whether we are adding at the beginning of the - array and take a fast path if so - - array_insert: use same strategy as array_reference to find the place - to insert, starting from the last-referenced element and moving - forward or back from there; use ADD_AFTER if moving backward - - array_insert: if replacing an existing element, just replace the - value with new->value instead of the entire element - - array_reference: short-circuit quickly if looking for an element - before the first assigned index - - array_reference: if we don't find the element, leave lastref pointing - to the closest element under the assumption we will be assigning or - looking for something close - - array_reference: take advantage of ordered indexes to short-circuit - when looking for element that is not set - - 10/7 - ---- -array.c - - array_remove: short-circuit if asked to remove index after max - index or before first index - - 10/10 - ----- -lib/malloc/malloc.c - - internal_realloc: if we are requesting reallocation to the same size - as the block's current size, short-circuit and return `mem' right - after doing bounds check - - internal_realloc: if we are reducing the size of an allocation, and - the new size fits in the next lower bin, just keep the same block - and adjust the size, so we can avoid some copies - -parse.y - - set_line_mbstate: keep track of the allocated size of - shell_input_line_property, only request reallocation if the size - increases, but don't let it get too big - - 10/11 - ----- -jobs.c - - wait_for_background_pids: make sure we wait for pid in - last_procsub_child since it's not found in any job -- still needs - more work to wait for multiple process substitutions - -subst.c - - process_substitute: if make_child fails, make sure we call - restore_pipeline to undo the previous save_pipeline() - - 10/15 - ----- -subst.c - - process_substitute,command_substitute: leave subshell_level (reflected - as $BASH_SUBSHELL) intact for any exit trap instead of decrementing - it. Suggested by Martijn Dekker - -builtins/evalstring.c - - optimize_subshell_command: new function, framework for optimizing - out forks for command that have already forked and are executing - in a subshell. Not used yet - -expr.c - - readtok: if we have a post-increment or post-decrement, and the - previous token is not a string, check whether the previous token is - a number that results from a pre-increment or pre-decrement, and - make that an error. Report from Conrad Hoffmann - - 10/16 - ----- -aclocal.m4 - - BASH_JOB_CONTROL_MISSING: convert from AC_TRY_RUN to AC_TRY_COMPILE - with existing set of preprocessor defines, so it can work when - cross-compiling. Suggested by Felix Janda - - 10/19 - ----- -variables.c - - get_bashpid: BASHPID is no longer readonly; assignments to it are - just ignored. - -doc/{bash.1,bashref.texi} - - BASHPID: note that assignments are ignored and unsetting BASHPID - causes it to lose its special properties - - 10/28 - ----- -builtins/pushd.def - - popd_builtin: make sure to check the normalized stack offset - (i.e., negatives counting back from the end of the stack) is within - bounds before trying to free that stack entry. Report from - Fernando Muñoz - -lib/readline/histfile.c - - chown: protect calls with HAVE_CHOWN. Fixes for MinGW{64,32} from - J. Peter Mugaas - -lib/readline/colors.c - - S_ISDIR: add define if missing - - S_ISUID, S_ISGID, S_ISLNK, S_ISSOCK: don't use unless defined. - Fixes for MinGW{64,32} from J. Peter Mugaas - -bashhist.c - - current_command_line_comment: set to the most recent line in a - possibly multi-line command that contains a shell comment; set in - maybe_add_history and bash_add_history to either the current - command number or -2 - - maybe_add_history: set current_command_line_comment for first line - of command - - bash_add_history: chars_to_add set to "\n" if the current command line - is one greater than the previous line containing a comment - (current_command_line_comment). Fixes complaint from back in - January, 2016 from Dave Rutherford - -array.h - - lastref: move last-referenced pointer into each array struct, so all - arrays can have reference locality - -array.c - - array_create: set lastref element to 0 - - array_copy: if copying the lastref in array a, set the new lastref - in the copy to the same element - - IS_LASTREF, LASTREF_START, LASTREF, INVALIDATE_LASTREF, SET_LASTREF, - UNSET_LASTREF: change to use new array `lastref' member - -pathexp.c - - quote_string_for_globbing: if quoting for a regexp, make sure to - skip and copy a leading `^' in a bracket expression, and skip and - copy a subsequent `]' (after an optional `^'), so that leading - bracket doesn't close the bracket expression. Report from - Stephane Chazelas - - 10/29 - ----- -subst.c - - extract_delimited_string: add calls to CHECK_STRING_OVERRUN for - $( inside $((, nested OPENERs, nested ALT_OPENERs, and backquotes - - skip_to_delim: add calls to CHECK_STRING_OVERRUN for $(, ${, - process substitution - - extract_dollar_brace_string: add calls to CHECK_STRING_OVERRUN for - $( - - extract_dollar_brace_string: use skipsubscript to skip over the - array subscript in ${var[sub]} (non-quoted case uses string_extract, - which already uses skipsubscript). Tagged for bash-5.0 - - 10/30 - ----- -variables.c - - EPOCHSECONDS: new dynamic variable, time in seconds since Unix - epoch; assignments are ignored. Can be used on systems where - strftime() doesn't support '%s' - - EPOCHREALTIME: new dynamic variable, time in seconds since Unix - epoch with microsecond granularity - -doc/{bash.1,bashref.texi} - - EPOCHSECONDS documentation - - EPOCHREALTIME documentation - -execute_cmd.c - - decpoint: moved to locale.c, renamed locale_decpoint; changed callers - -{bashintl,externs}.h - - locale_decpoint: extern declaration or #define if support for - localeconv() not there - - 10/31 - ----- -lib/malloc/malloc.c - - posix_memalign: add new posix-mandated interface - -examples/loadables/rm.c - - rm: minimal loadable builtin, removes files and directories, only - handles -r and -f options. Original from Tim Ruehsen - , heavily rewritten for inclusion as loadable - -examples/loadables/Makefile.in - - rm: add rules to build rm as one of the `other' targets - -examples/loadables/stat.c - - stat: new loadable builtin that takes a filename and loads the info - returned by stat(2) into an associative array specified by the -A - argument (default STAT) - - 11/1 - ---- -variables.c - - BASH_ARGV0: new dynamic variable, returns $0 on reference and sets - $0 on assignment. From a suggestion from Rocky Bernstein - a few years ago - -doc/{bash.1,bashref.texi} - - BASH_ARGV0: document - - 11/2 - ---- -lib/glob/sm_loop.c - - parse_collsym: make sure to not return an out-of-bounds read if a - collating symbol is unterminated. Fixes OOB read reported by - Jerzy Kramarz - - brackmatch: after incrementing p, before checking whether it's a - character range, check whether *p was NULL before the increment - and short-circuit the bracket expression if it is - -jobs.c - - discard_last_procsub_child: new function, safely discards - last_procsub_child and sets it to NULL - -subst.c - - process_substitute: call discard_last_procsub_child instead of - calling discard_pipeline directly. Fixes bug reported by - Christian Weisgerber - - 11/3 - ---- -shell.h - - EX_DISKFALLBACK: new special return status available to builtins; - means to attempt to execute a disk command with the same name as - the builtin - -examples/loadables/rm.c - - if we see the -i option, return EX_DISKFALLBACK - -execute_cmd.c - - execute_simple_command: if executing a builtin returns EX_DISKFALLBACK, - try running execute_disk_command instead - -bashline.c - - shell_expand_line: use expand_word to expand the readline line - buffer, which allows us to pass flags with the word. If a numeric - argument is supplied, do not perform quote removal (pass - Q_HERE_DOCUMENT since here-doc quoting does the right thing) and - do not perform command or process subsitution. From a suggestion - by Dabrien 'Dabe' Murphy based on an old bug-bash - discussion - -subst.c - - expand_word_internal: note that we have added a quoted IFS char to - istring by setting sentinel has_quoted_ifs. Usually we only add - one if we are not going to be performing word splitting, but we - will not perform word splitting if there's no expansion, so we need - to take care of that case - - expand_word_internal: when performing final word split, if there are - no expansions but has_quoted_ifs is non-zero, call remove_quoted_ifs() - to remove any quoted ifs characters we added while processing - - remove_quoted_ifs: new function, removes CTLESC chars preceding - (single-byte) chars in IFS. Used when we are not performing word - splitting. Fixes bug reported by Martijn Dekker - - 11/4 - ---- -lib/readline/macro.c - - _rl_peek_macro_key: return the next character from the current - keyboard macro; the next character from the `next' keyboard macro, - if there is one, if at the end of the current macro; or 0 to - indicate that we are at the end of a keyboard macro sequence - -lib/readline/rlprivate.h - - _rl_peek_macro_key: extern declaration - -lib/readline/readline.c - - _rl_dispatch_subseq: add test for ESC at the end of a keyboard macro, - which should cause the keyboard timeout for ESC to kick in. The - previous test didn't run the timeout code if executing from a macro, - even if we had read the last character of the macro. Fixes bug - reported by Clark Wang - -lib/glob/sm_loop.c - - GMATCH: allow trailing backslash in pattern to explicitly match a - backslash that is the last character in the string. Bug report from - Stephane Chazelas - - 11/5 - ---- -builtins/common.c - - display_signal_list: if displaying a signal name corresponding to an - exit status > 128, don't display the SIG prefix at all. Old code - made displaying the SIG prefix dependent on JOB_CONTROL define. - Report and fix from Martijn Dekker - -execute_cmd.c - - execute_subshell_builtin_or_function: call without_job_control even - if JOB_CONTROL is not defined. Similar to fix from 9/23. - Report from Martijn Dekker - -execute_cmd.c - - execute_simple_command: free memory allocated and passed to - make_child in the child process if JOB_CONTROL is defined - - execute_command_internal: free memory allocated and passed to - make_child in the child process created to run a () subshell or a - compound command within a pipeline if JOB_CONTROL is defined - - execute_coproc: free memory allocated and passed to make_child in - the child process if JOB_CONTROL is defined - - execute_disk_command: free memory allocated and passed to - make_child in the child process if JOB_CONTROL is defined. This - series of fixes is the result of reports from - Eduardo A. Bustamante López - - 11/6 - ---- -lib/sh/unicode.c - - u32toutf16: fix to prevent outputting broken surrogate pairs for - Japanese locales (ja_JP.UTF-8) on cygwin (which uses UTF-16 natively). - Report and fix from Koichi MURASE - -builtins/trap.def - - trap_builtin: if OP is `-' (revert), set the SIGINT signal handler - to sigint_sighandler if the shell is interactive and sourcing a - file (interactive_shell && sourcelevel) or running a trap - (interactive_shell && running_trap) even if it's not currently - interactive. Report from Martijn Dekker - -builtins/read.def - - check for and read multibyte characters in all cases, not just when - we are reading a specific number of characters, as long as - mb_cur_max > 1 - -subst.c - - expand_word_internal: some improvements to code that converts istring - into a WORD_LIST * to avoid multiple allocations and copies of - istring, which is already malloc'ed memory -- reduce number of malloc - and free calls - -test.c - - unary_test: make sure if we test -v array[@] or array[*] that we - free the return value from array_value - - 11/8 - ---- -expr.c - - expcond: make sure to set `noeval' before reading tokens depending on - the result of the conditional test, since readtok() can evaluate - identifiers (and recursively those containing expressions). Report - and fix from Koichi MURASE - -builtins/evalstring.c - - should_suppress_fork: make sure to check for traps on EXIT and - ERR, since any_signals_trapped() only checks for `real' signals, - not the fake shell ones. Fixes bug reported by Werner Fink - - - optimize_subshell_command: ditto - - 11/9 - ---- -eval.c - - reader_loop: change so that we don't reset the SIGINT handler every - time through the command loop in an interactive shell if the signal - is trapped (as the comment noted). Reported by Report from Martijn - Dekker - -subst.c - - parameter_brace_{patsub,remove_pattern,transform,casemod}: save and - restore this_command_name while temporarily setting it for use in - error messages. Fixes use-after-free error reported by - Jerzy Kramarz - - string_extract_verbatim: make sure when we increment i by 2 due to - a CTLESC or CTLESC-CTLNUL that we don't read past the end of the - string. This can happen if the string ends with an odd number of - CTLESC chars. Fixes oob-read error reported by - Jerzy Kramarz - - 11/11 - ----- -configure.ac,aclocal.m4 - - BASH_FUNC_SBRK: make sure sbrk actually works, instead of being just - a stub function like on several Linux distributions - -lib/malloc/malloc.c - - malloc_usable_size: return the maximum number of bytes available for - a particular memory allocation (size of block allocated for it) - - 11/12 - ----- -configure.ac - - changes to make --enable-profiling work on Linux (-pg, no static link, - no -static in LDFLAGS) - -Makefile.in - - changes to make --enable-profiling work on Linux (take - ${PROFILE_FLAGS} out of BASE_CCFLAGS, add to CCFLAGS instead; add - BASE_LDFLAGS define that doesn't include -pg or -static; use - BASE_LDFLAGS in LDFLAGS; move ${PROFILE_FLAGS} and ${STATIC_LD} to - LDFLAGS) - -tests/run-gprof - - changes to make profiling test suite with gprof work on Linux (set - GMON_OUT_PREFIX to handle multiple profiled processes per test; - change default filename to gmon.out from bash.gmon; look for - gprof output files in ${TMPDIR} instead of /tmp; handle multiple - profiling files starting with $GMON_OUT_PREFIX) - -locale.c - - locale_isutf8: use locale_charset() if it's available and nl_langinfo - isn't - - locale_isutf8: add code to parse a locale specification and determine - whether the encoding is UTF-8 (or utf8) in the absence of - nl_langinfo and locale_charset - - set_default_locale: make sure to set locale_utf8locale early on - - locale_utf8locale: set via call to locale_isutf8 wherever LANG, - LC_ALL, or LC_CTYPE is set - - 11/13 - ----- -lib/readline/display.c - - rl_redisplay: handle report of potential integer overflow in - horizontal display mode from Mateusz Lenik - -lib/sh/mbschr.c - - mbschr: if in a UTF-8 locale (locale_utf8locale) and we are looking - for an ASCII character, use (essentially) strchr as a shortcut - -lib/sh/shmbchar.c - - utf8_{mbstrlen,mblen,mbsmbchar,mbsnlen}: UTF-8-specific replacement - functions (should also be able to use utf8_mblen in subst.c: - string_extract_verbatim) - - mbsmbchar: if locale_utf8locale is true, call utf8_mbsmbchar - - mbsmbchar: in UTF-8 locale, use utf8_mblen instead of mbrlen (not - used if earlier shortcut taken) - -lib/sh/unicode.c - - u32cconv: don't use nl_langinfo early to call u32toutf8() - - u32cconv: use locale_utf8locale to set utf8locale - - u32cconv: when initializing (u32init == 0), use locale_charset, then - nl_langinfo, then stub_charset to determine the charset - - u32cconv: even if we don't have iconv, if locale_utf8locale is non- - zero, return u32toutf8 - - 11/15 - ----- -lib/readline/nls.c - - _rl_init_locale: new function, split off code that determines current - locale from _rl_init_eightbit, use it to set _rl_utf8locale - -lib/readiline/rlprivate.h - - _rl_init_locale: new extern declaration - -lib/readline/readline.c - - rl_initialize: if not initializing everything the first time, call - _rl_init_locale to check current locale and set _rl_utf8locale - -lib/readline/text.c - - _rl_insert_char: optimize cases where we are inserting a single-byte - character in a locale with multibyte characters - - _rl_insert_char: check whether character is single byte if we know - we are in a UTF-8 locale, optimize single-byte case to avoid calls - to mbrtowc and memmove/memcpy - -lib/readline/mbutil.c - - _rl_char_value: if we are in a UTF-8 locale (_rl_utf8locale) and the - current character does not have the eighth bit set ((c & 0x80) == 0), - return that char without bothering to call mbrtowc - - _rl_adjust_point: don't bother calling mbrlen if we are in a UTF-8 - locale and the current character is not a multibyte character - - _rl_find_next_mbchar_internal: if we are in a UTF-8 locale, use that - to avoid calls to mbrtowc - -lib/readline/display.c - - _rl_col_width: if in a UTF-8 locale, take advantage of that to avoid - calls to mbrlen and mbrtowc - - rl_redisplay: if in a UTF-8 locale, take advantage of that to avoid - calls to mbrtowc - - 11/17 - ----- -lib/readline/histlib.h - - PATTERN_SEARCH: new flag for history search interfaces, means to - search for a pattern as Posix specifies - -lib/readline/histsearch.c - - history_search_internal: now takes a `flags' argument instead of just - an `anchored' argument to accommodate PATTERN_SEARCH - - _hs_history_patsearch: new internal interface to use when flags - specify PATTERN_SEARCH - -lib/readline/rlprivate.h - - SF_PATTERN: new flag for non-incremental search contexts, means to - treat search string as a pattern (maps to PATTERN_SEARCH) - -lib/readline/search.c - - noninc_dosearch: takes an additional `flags' argument for SF_PATTERN - - noninc_search_from_pos: takes an additional `flags' argument for - SF_PATTERN - - noninc_dosearch: pass flags argument through to noninc_search_from_pos - - _rl_nsearch_init: if we are in vi command mode, and `pchar' (key used - to invoke the search) is `?' or `/', add SF_PATTERN to the flags - to conform to Posix spec for vi-mode editing - - _rl_nsearch_dosearch: if cxt->sflags indicates that we should do a - pattern search, pass SF_PATTERN to noninc_search_from_pos - - rl_noninc_forward_search_again: if in vi command mode and key == `N', - make sure flags arg passed to noninc_dosearch includes SF_PATTERN - - rl_noninc_reverse_search_again: if in vi command mode and key == `n', - make sure flags arg passed to noninc_dosearch includes SF_PATTERN - - rl_history_search_internal: pass extra flags arg to noninc_search_from_pos - - 11/18 - ----- -lib/readline/search.c - - noninc_search_from_pos: takes a new argument, a pointer to int where - it stores the offset of the match in the history line (if non-NULL), - modified callers - - rl_history_search_internal: pass newcol pointer to - noninc_search_from_pos to avoid having to recompute the match offset - in the matching history entry - -config.h.in - - define HAVE_FNMATCH if we have the fnmatch function (configure was - already checking for it) - -lib/readline/histsearch.c - - _hs_history_patsearch: transform the pattern into one ending in a - `*' to avoid having to perform multiple match attempts from each - index in the history line - - history_search_internal: changes to handle pattern matching if - PATTERN_SEARCH is in the flags and HAVE_FNMATCH is defined. This - makes vi-mode history searching treat the user-specified search - string as an fnmatch pattern, as Posix requires. Fixes issue - reported by - - 11/19 - ----- -builtins/shopt.def - - shopt_enable_hostname_completion: only declare this if READLINE - defined, since that's the only time it's used. Reported by - isabella parakiss - - 11/20 - ----- -builtins/common.c - - display_signal_list: make `kill -l 0' print `EXIT', modifying change - from 9/17 - - 11/21 - ----- -subst.c - - expand_word_internal: when the shell encounters a backslash as the - last character of the string, don't try to add a '\'0' to the end - of the string if the string is quoted, just add a <\> and - skip to the end of string processing. Fixes oob-read error - reported by Jerzy Kramarz - -test.c - - two_arguments: check argv[pos][1] before checking argv[pos][2] when - looking for a unary argument. Fixes oob-read error on single `-' - in unary operator position reported by Jerzy Kramarz - - - ANDOR: check s[1] before checking s[2] in case s[1] == end of string. - Fixes oob-read error reported by Jerzy Kramarz - -subst.c - - command_substitute: now takes additional flags argument, changed one - caller (param_expand) to pass through PF_ASSIGNRHS flag; other callers - pass 0 - - command_substitute: pass through flags argument to read_comsub - - read_comsub: now takes additional new flags argument to indicate - whether or not the word is in a context where word splitting will - eventually be performed - - read_comsub: if we are running in a context where word splitting - will not take place (PF_ASSIGNRHS), we read a CTLESC, and CTLESC is - in $IFS, add a CTLESC to make sure it gets through a round of - dequoting - - 11/23 - ----- -parse.y - - xparse_dolparen: since reset_parser frees the pushed string list, - and this is supposed to be a separate parsing context, we need to - save and restore pushed_string_list around the call to parse_string - and reset_parser. Fixes bug reported by Dan Douglas - - -bashhist.h - - HISTEXPAND_DEFAULT: default value of history_expansion, moved here - from flags.c - -flags.[ch] - - histexp_flag: new variable, this is what set -H/set -o histexpand - sets; history_expansion set to value of this variable; defaults to 0 - - history_expansion: now set to HISTEXPAND_DEFAULT - -bashhist.c - - bash_history_reinit: if interact == 0, set history_expansion to the - value of histexp_flag, to allow -H option to enable history - expansion - - bash_history_reinit: if interact == 0, make sure - history_expansion_inhibited is set opposite of histexp_flag, so - enabling history expansion with -H invocation option turns off - inhibited expansion. If interactive shell, we turn it off so - history_expansion controls whether or not history expansion takes - place. In practice, this function is always called with interact == 0, - and -c command still doesn't perform history expansion - -shell.c - - init_interactive: make sure histexp_flag and history_expansion are - identical in an interactive shell; allows both -H/+H option and - default compilation options (HISTEXPAND_DEFAULT) to work - - 11/24 - ----- -subst.c - - get_word_from_string: take advantage of the fact that SEPARATORS is - always a (possibly local) copy of IFS, so build a local charmap of - separators and use it instead of the (cached and possibly stale) - ifs_cmap map and isifs macro. Fixes bug with -N stripping leading - whitespace reported by Clark Wang - - 11/25 - ----- -builtins/read.def - - read_builtin: make `i' volatile, since auto variables are technically - undefined after a longjmp, and a timeout on SIGALRM causes one. - Fix suggested by Dmitry Goncharov - - 11/27 - ----- -parse.y - - shell_getc: if we are reading input from a string, and we get the - ending '\0', and we are not expanding an alias, return EOF right - away. It might be an eval'ed string that has a syntax error. - Fixes bug reported by Dan Douglas - - 11/28 - ----- -subst.c - - expand_word_internal: if we're expanding a quoted string containing - a tilde as the first character of a word, only expand the tilde if - we're expanding an array subscript (Q_ARRAYSUB), not if we're - expanding any arithmetic expression (Q_ARITH). This fixes a - backwards compatibility issue with expressions like ~0 reported by - Bize Ma - -subst.c - - parameter_brace_expand_indir: if the variable is not special and - the indirect variable is unset (!variable where variable is unset), - report an error. This is a slight incompatibility with previous - versions, which did not differentiate between indirecting an unset - variable and an indirect expansion resulting in an unset variable. - Fixes omission reported by otenba@protonmail.com - - 11/30 - ----- -lib/readline/doc/{rluser.texi,readline.3},doc/bash.1 - - do-uppercase-version: since this doesn't actually exist, replace it - with do-lowercase-version, with the caveat that do-lowercase-version - results in undefined behavior if bound to a character that's - already lowercase. Suggested by Branden Robinson - - -lib/readline/doc/rluser.texi - - history-substring-search-forward: was misspelled as "substr-search"; - ditto for search-backward - -doc/bash.1 - - history-substring-search-{backward,forward}: add documentation, text - straight from readline.3 - -jobs.c - - initialize_job_control: if the terminal's process group is valid, - but the shell is not the foreground process, check for terminating - signals (like SIGHUP, which the kernel would send if the process - group were orphaned) during the loop where we try to stop the shell - if it's not in the foreground. Not a perfect solution; the kernel - might not send SIGHUP - - 12/1 - ---- -jobs.c - - initialize_job_control: only go through the SIGTTIN loop 16 times at - most before deciding we're in the background and probably a member of - an orphaned process group; set original_pgrp to the terminal's pgrp - (so the eventual give_terminal_to doesn't leave the terminal in the - wrong pgrp); and bail on job control initialization - -tests/run-all - - unset SHELLOPTS to avoid its options `polluting' the test - environment. Suggestion from Vladimir Marek - - -tests/execscript - - use $PWD/exec8.sub to protect against someone who has a cd command - in his bashrc. Report from Vladimir Marek - - - 12/2 - ---- -shell.c - - open_shell_script: call end_job_control before exiting the shell in - case we were run as `bash -i script' and there is a problem with - executing `script'. If we don't, the terminal ends up in the wrong - process group. Fix from Clark Wang - - 12/3 - ---- -parse.y - - read_comsub: if we look for a character following a `<' and it's - not `<' (indicating that we don't have to read a here-document), - make sure we push that character back and go through the loop again - so we note the right word start location. Fixes bug reported by - parasite parasite <42parasite@gmail.com> - -subst.c - - parameter_brace_expand_indir: clean up checks for unset variables to - minimize incompatibilities with previous versions - - 12/5 - ---- -lib/readline/history.c - - add_history: don't update history_length until all of the updates to - the_history are complete, so history_length is always consistent. - Report and fix from Hong Cho - -bashline.c - - bash_backward_shellword: fix to work better at the end of the line, - with multiple trailing whitespace characters. Inspired by report - from Kirill Timofeev - -Makefile.in - - bashbug: use `^' as the sed delimiter instead of `%'; some compilers - use `%' in CFLAGS. Report from Vladimir Marek - - - 12/6 - ---- -test.c - - test_unop: make sure op[1] != 0 before testing op[2] - - term: make sure argv[pos][1] != 0 before testing argv[pos][2]. Fixes - oob-read reported by Jerzy Kramarz - - 12/7 - ---- -lib/glob/glob.c - - glob_filename: assign the return value of realloc (results, ...) to - a temp pointer, so if realloc returns NULL, we make sure we free - results. Report from Kirill Timofeev - - 12/12 - ----- -lib/sh/shquote.c - - sh_backslash_quote: if FLAGS&2, backslash-quote other single-byte - characters that are in the current locale's character class - -builtins/printf.def - - printf_builtin: when processing the `%q' format, make sure to - backslash quote all characters by making sure that FLAGS - passed to sh_backslash_quote includes 2. Fixes issue for certain - iso-8859-1 locales where character 160 (octal 240, hex 0xa0) is a - non-breaking space. Report from Stephane Chazelas - - -lib/sh/eaccess.c - - sh_stat: if DEV_FD_STAT_BROKEN is defined, take /dev/fd/N and turn - it into a stat on file descriptor N, as if /dev/fd were not - available. This is the case on some old versions of SunOS. Report - and patch from Dmitry Goncharov - -config.h.in - - DEV_FD_STAT_BROKEN: add define - -configure.ac - - --enable-dev-fd-stat-broken: new command-line option, defines - DEV_FD_STAT_BROKEN if supplied at configure time - -doc/bashref.texi - - --enable-dev-fd-stat-broken: document new command-line option for - configure - -arrayfunc.c - - assoc_expand_once: new variable, declared here just because - -arrayfunc.h - - assoc_expand_once: extern declaration - - AV_NOEXPAND: new flag value for the array_value family of functions: - means to not run associative array subscripts through word expansion - -builtins/set.def - - unset_builtin: call unbind_array_element with assoc_expand_once as - third arg, controls whether we expand associative array subscripts - (if 1, we suppress the usual expansion). With accompanying shopt, - provides backwards compatible option to solve problem with quotes - and other characters in associative array subscripts pointed out - most recently by Mingye Wang (Arthur2e5) - -builtins/shopt.def - - assoc_expand_once: new option, controls value of internal variable - with the same name. Currently undocumented because I'm not completely - sold on the name - -expr.c - - evalexp: now takes a second argument, flags. Changed all callers in - multiple other files (builtins/let.def,execute_cmd.c,arrayfunc.c, - subst.c,test.c,variables.c) - -externs.h - - EXP_EXPANDED, new flag for second argument to evalexp - -builtins/let.def - - let_builtin: add EXP_EXPANDED to flags passed to evalexp - -execute_cmd.c - - execute_arith_command: add EXP_EXPANDED to flags passed to evalexp, - since the command string is run through expand_words_no_vars before - being evaluated - -expr.c - - set expression-global variable already_expanded if flags arg to - evalexp contains EXP_EXPANDED - - if assoc_expand_once option set and already_expanded flag set, pass - 1 in flags to array_variable_part to skip over quotes and expansions - in the subscript - - if those two variables set, pass AV_NOEXPAND as flag to - get_array_value to prevent word expansions on the subscript - -arrayfunc.c - - if flags passed to unbind_array_element includes 1, pass flag on to - skipsubscript so we don't expect matched quotes or process - expansions in the subscript - - if flags to array_value_internal include AV_NOEXPAND, pass 1 as flag - to array_variable_part to pass along to skipsubscript - - if flags to array_value_internal include AV_NOEXPAND, don't call - expand_assignment_string_to_string; just use the unexpanded subscript - to produce the key [THIS IS A WORK IN PROGRESS] - - 12/14 - ----- -subst.h - - ASS_NOEXPAND: assignment flag that inhibits expansion of associative - array subscripts - -variables.c - - bind_int_variable: takes new flags arg; flags are taken from the - ASS_ set of assignment flags, changed callers (bashline.c, expr.c, - pcomplete.c) - - bind_int_variable: if flags includes ASS_NOEXPAND, pass 1 as flag to - valid_array_reference and array_variable_part to pass along to - skipsubscript, so we don't try to skip over quoted strings in the - subscript - - bind_int_variable: pass flags along to assign_array_element - -variables.h - - bind_int_variable: updated extern declaration with new flags arg - -expr.c - - expr_bind_variable: if the assoc_expand_once option is enabled, and - the flags to evalexp indicate that we have already run the expression - through word expansion, pass ASS_NOEXPAND as flag to bind_int_variable - -arrayfunc.c - - assign_array_element: if flags includes ASS_NOEXPAND, pass 1 as flag - to array_variable_name to pass along to skipsubscript - - assign_array_element: if flags includes ASS_NOEXPAND, don't run an - associative array subscript through word expansion, just use as-is - -subst.c - - param_expand: call evalexp with EXP_EXPANDED flag for arithmetic - substitution because the string has already been expanded with - expand_arith_string - - 12/15 - ----- -builtins/read.def - - read_builtin: use value of assoc_expand_once for valid_array_reference - as with other uses - - bind_read_variable: if assoc_expand_once is set, pass ASS_NOEXPAND - to assign_array_element - -general.c - - assignment: instead of checking whether flags == 0 to allow a `[', - explicitly check for (flags&1) to disallow it. This leaves the door - open for additional flag values - -builtins/printf.def - - printf_builtin: use value of assoc_expand_once for - valid_array_reference as with other uses - - bind_printf_variable: if assoc_expand_once is set, pass ASS_NOEXPAND - to assign_array_element - - 12/16 - ----- -builtins/history.def - - change history -d option to handle negative arguments; negative - arguments offset from the end of the history list (last_position + 1 - so history -d -1 deletes the history -d command that just got - added). Original patch from Piotr Grzybowski - -doc/bash.1,lib/readline/doc/hsuser.texi - - documented new behavior of negative offsets for `history -d' - - 12/17 - ----- -lib/readline/history.c - - remove_history: use memmove to move the history list around instead - of a loop that copies pointers one at a time, similar to add_history - - 12/19 - ----- -configure.ac - - linux: make sure PGRP_PIPE is defined unconditionally for all kernel - versions greater than 2.3.* - -lib/readline/history.c - - clear_history: when clearing the history, reset history_base to 1 - (its default) - - remove_history_range: new function, removes a set of history entries - and returns them all for deallocation - -lib/readline/history.h - - remove_history_range: extern declaration - - 12/20 - ----- -execute_cmd.c - - eval_arith_for_expr: pass EXP_EXPANDED to evalexp, since we run the - expression through expand_words_no_vars - - 12/21 - ----- -input.c - - b_fill_buffer: when read returns EOF or error, and we reset the - buffer and pointers, reset the input pointer to 0. Fixes issue - reported by Stephane Chazelas - - 12/22 - ----- -arrayfunc.[ch],subst.c - - array_expand_index: added new FLAGS argument, reserved for future use, - changed callers - - - 12/24 - ----- -variables.c - - can_optimize_assignment,optimized_assignment: see if we can detect - whether or not we're trying to append a string to a string variable, - and optimize that using realloc/strcpy. Based on a log-ago - suggestion from Aharon Robbins - - 12/27 - ----- -builtins/help.def - - help_builtin: don't pass return value from ngettext() directly to - printf - - 12/28 - ----- -sig.c - - set_signal_handler: set SA_RESTART for SIGWINCH, so window size - changes don't interrupt open/read/write. Suggested by - Andriy Prystupa back in 10/2016 - - 12/30 - ----- -execute_cmd.c - - coproc_pidchk: if MULTIPLE_COPROCS, call cpl_search to find coproc - associated with pid, don't remove it from the list with cpl_delete. - Just mark as dead and wait for coproc_reap/cpl_reap to take care - of disposing it - - execute_coproc: NEW FEATURE: run the coproc name through word - expansion before creating the coproc; this allows unique coprocs - to be created in loops. Originally requested way back in 2012 by - Erik Brandsberg - -command.h - - subshell_com: now has a line number member: line - -make_cmd.c - - make_subshell_command: assign current line number (line number of the - ending right paren) to `line' member - -copy_cmd.c - - copy_subshell_command: copy the `line' member - -execute_command.c - - execute_command_internal: when executing a user subshell (`(command)'), - set the line number and line number for the ERR trap from the line - number saved in the subshell command struct. Fix from - Eduardo A. Bustamante López - - execute_arith_command: set line number for ERR trap from line number - saved in the arith command struct. Fix from - Eduardo A. Bustamante López - - execute_cond_command: set line number for ERR trap from line number - saved in the cond command struct. Fix from - Eduardo A. Bustamante López - -variables.c - - bind_variable_internal: move can_optimize_assignment call to the - right place - - 12/31 - ----- -variables.c - - find_variable_nameref: treat a circular variable reference as - referring to a variable of that name in the global scope (for now), - if one exists. PROVISIONAL change: inspired by suggestion back in - 6/2016 by Grisha Levit - - 1/2/2017 - -------- -{expr,general,hashcmd}.c - - include flags.h for flag values - -make_cmd.c - - include shell.h instead of the files it includes - -flags.h - - new extern declarations for want_pending_command, read_from_stdin - -subst.h - - add extern declaration for expanding_redir, assigning_in_environment - -trap.h - - add extern declaration for running_trap - -execute_cmd.h - - added extern declarations for variables declared in execute_cmd.c, - changed files that declare lots of extern variables - -shell.h - - added extern declarations for variables declared in shell.c, - changed files that declare lots of extern variables - -parser.h - - added extern declarations for variables declared in parse.y, - changed files that declare lots of extern variables - -[lots of changes to reduce the number of extern declarations in C and DEF files] - -parse.y - - xparse_dolparen: need ALIAS or DPAREN_ARITHMETIC to be defined to - use STRING_SAVER - - 1/3 - --- -sig.c - - termsig_handler: don't call end_job_control if subshell_environment - indicates that we're in a command or process substitution. - Provisional fix for bug reported by Russell King - -jobs.c - - end_job_control: only attempt to give the terminal back to - original_pgrp if job_control != 0; don't test interactive_shell - -execute_cmd.c - - execute_disk_command: call QUIT after search_for_command, since - the only time QUIT gets called is when the path is actually - searched. It doesn't happen for an absolute pathname. Fix for - bug reported by Russell King - - 1/16 - ---- -lib/glob/glob.c - - extglob_skipname,wextglob_skipname: if we don't find a reason to - not skip the name in any subpattern (r returns 0 for any subpattern), - return 1 because we should skip the name - - extglob_skipname,wextglob_skipname: if we don't find a reason to - not skip the name in any subpattern, but the first part of the extglob - pattern is a wildcard (`*(pat)'), check the rest of the pattern, if - any, to decide whether or not to skip the name. Fixes bug reported - by Grisha Levit - -lib/glob/glob_loop.c - - CHAR -> GCHAR (unsigned char); change uses of CHAR to GCHAR - -lib/glob/glob.c - - wchkname -> wskipname - - wskipname: now takes a third `flags' argument, like the other variants - of skipname - - 1/17 - ---- -redir.c - - here_document_to_fd: set the file descriptor open for writing to the - here document to be close-on-exec. Fixes bug reported by - Siteshwar Vashisht - - 1/18 - ---- -{gmisc,gm_loop}.c - - match_pattern_char,match_pattern_wchar: moved to gm_loop.c (new file), - compile twice for single and wide characters as with the rest of - the functions - - umatchlen,wmatchlen: ditto - - extglob_pattern_p: move to gm_loop.c, generalize for regular and - wide-char versions - - 1/19 - ---- -lib/readline/complete.c - - stat_char: fix small memory leak if stat/lstat returns -1 - -bashline.c - - bash_filename_stat_hook,bash_directory_completion_hook: make sure - expand_prompt_string is caled wth W_NOPROCSUB flag - - directory_exists: don't dequote the filename passed as an argument; - this function should never get quoted pathnames - -subst.c - - expand_word_internal: when calling expand_word_internal recursively - after reading a double-quoted string, make sure the W_NOCOMSUB and - W_NOPROCSUB flags make it to the recursive invocation. Fixes bug - reported by Jens Heyens - - 1/23 - ---- -lib/readline/signals.c - - _rl_orig_sigset: original signal mask, set and restored by - rl_set_signals (rl_clear_signals doesn't block signals). If we - are not installing signal handlers, just save signal mask each - time rl_set_signals is called - -lib/readline/input.c - - rl_getc: use _rl_orig_sigmask in the call to pselect(), so we block - the set of signals originally blocked by the calling application. - Fixes bug reported by Frédéric Brière - -parse.y - - yy_readline_get: try to unset NONBLOCK mode on readline's input - file descriptor before calling readline(). Inspired by report from - Siteshwar Vashisht - - 1/30 - ---- -parse.y - - parse_comsub: don't unconditionally set the LEX_WASDOL flag when we - see a `$'; we should toggle it to accommodate things like $$. - Fixes bug reported by Christian Weisgerber - - parse_matched_pair: do the same thing with LEX_WASDOL - - 2/1 - --- -jobs.h - - JWAIT_PERROR,JWAIT_FORCE: new defines for the wait_for_ family of - functions - -jobs.c - - wait_for_job, wait_for_any_job: take new flags argument for use by - the wait builtin - - wait_for_job: if JWAIT_FORCE flag supplied, loop waiting for job to - terminate instead of change state - - wait_for_single_pid: if JWAIT_FORCE flag supplied, loop waiting for - child process to terminate instead of change state - -builtins/wait.def - - takes a new `-f' option, signifying to wait until the specified job - or process terminates, instead of changes state - -doc/{bash.1,bashref.texi} - - wait: document the new -f option and its behavior when job control - is enabled - - job control: add a paragraph describing how the wait builtin changes - behavior when job control is enabled: it returns when a job changes - state - - 2/2 - --- -examples/loadables/fdflags.c - - fdflags: new loadable builtin to set and unset file descriptor flags - (such as non-blocking, though bash undoes that) for descriptors bash - has open. Developed in consultation with Christos Zoulas - - - 2/3 - --- - -lib/readline/text.c - - rl_previous_screen_line: attempt to move to the same column on the - previous screen line of the current readline buffer by moving back - a number of characters equal to the screen width - - rl_next_screen_line: attempt to move to the same column on the - next screen line of the current readline buffer by moving forward - a number of characters equal to the screen width. Both originally - suggested by Hans Ginzel - -lib/readline/readline.h - - rl_{next,previous}_screen_line: extern declarations - -lib/readline/funmap.c - - {next,previous}-screen-line: new bindable command names - -lib/readline/doc/{rluser.texi,readline.3} - - {next,previous}-screen-line: document behavior, including limitations - - 2/5 - --- -lib/readline/input.c - - rl_read_key: when reading input from a macro, make sure to return - the next character as an unsigned char, so we handle multibyte - character sequences correctly. Report and fix from Grisha Levit - - - 2/6 - --- -shell.c - - --pretty-print: new invocation option, currently undocumented, dumps - a pretty-printed version of a shell script given as an argument to - stdout - - main: call pretty_print_loop() if we're in pretty-printing mode in - a non-interactive shell - -eval.c - - pretty_print_loop: new function, similar to reader_loop, reads - commands and prints them by displaying the result from - make_command_string() - -externs.h - - pretty_print_loop: new extern declaration - - 2/9 - --- -doc/{bash.1,bashref.texi} - - here strings: correct documentation to note they do not undergo - brace expansion. Report from Conor McCarthy - - 2/9 - --- -lib/readline/display.c - - expand_prompt: instead of recomputing the line break offsets for - prompts that span multiple screen lines on every call to rl_redisplay, - do it here. Manage a local array local_prompt_newlines; set an offset - every time `physchars' hits a multiple of the screen width. Inspired - by https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843819 - - rl_redisplay: don't calculate multi-line prompt line break indices - here; use the values calculated by expand_prompt - - rl_{save,restore}_prompt: save and restore local_prompt_newlines - - 2/11 - ---- -lib/readline/mbutil.c - - _rl_find_prev_mbchar_internal: since we're traversing the string - from the beginning, shortcut non-multibyte characters in a UTF-8 - locale - -parse.y - - parse_comsub: if we are parsing a here document with a quoted - delimiter (LEX_QUOTEDDOC), we should not remove - pairs from the body of the here document. Need to add LEX_QUOTEDDOC - to the values in tflags when calling shell_getc. Fixes bug reported - by Michael Homer , patch was originally - contributed by Geir Hauge - - 2/15 - ---- -jobs.c - - bgp_add: if hashed pid collides with bgpids.head index, print a - warning and move to the next index. Attempt to avoid collision - problem reported by Graham Northup - - 2/17 - ---- -subst.c - - process_substitute: call remove_quoted_escapes on the command string - like command substitution does, since the string will be run through - the parser again. Fixes bug reported by David Simmons - - -config-top.h - - STATIC_PATH_VALUE: new config variable, undefined by default - -variables.c - - shell_initialize: if STATIC_PATH_VALUE is defined, use it to set the - PATH variable at shell startup, overriding the environment and any - value for DEFAULT_PATH_VALUE. Based on a suggestion from - Lonnie Abelbeck - - 2/18 - ---- -shell.c - - maybe_make_restricted: clear the hash table before making the PATH - variable read-only by calling stupidly_hack_special_variables. - Suggestion from Lonnie Abelbeck - -subst.c - - expand_string_for_pat: change expansion of WORD in ${param[%[%]][#[#]]word} - to use this new function, initially identical to - expand_string_for_rhs - - getpattern: use expand_string_for_pat to expand the pattern - - 2/19 - ---- -subst.c - - expand_string_for_rhs: now that this is only used to expand the RHS - of the various non-pattern ${paramOPword} expansions, set - expand_no_split_dollar_star depending on whether or not the entire - brace expansion is going to be subjected to word splitting: if it's - quoted or if IFS is set but null, we will not be splitting so we set - this to 1 and let $* expand to separate fields separated by a space. - This was heavily debated back in October 2014 and resulted in Posix - interp 888. Reported by Martijn Dekker - - 2/20 - ---- -subst.c - - expand_string_for_rhs: now takes `op' (brace expansion operator) as - an additional argument; changed call in parameter_brace_expand_rhs - - expand_string_for_rhs: make sure to set expand_no_split_dollar_star - if `op' is `=', since we are supposed to preserve the assignment - statement expansion semantics on the RHS of ${param=word} - -jobs.c - - bgp_delindex: make sure to set ps->pid to NO_PID so we more - effectively remove it from the hash table. It shouldn't matter as - long as nothing in pidstat_table points to it, but better to be safe - - bgp_delete,bgp_search: generalize previous collision detection to - loop detection: abort search if we are going to go back to the - first index we tried - - 2/21 - ---- -lib/readline/vi_mode.c - - rl_vi_bword: if we're trying to move backward to non-whitespace - in a line that begins with whitespace, make sure we don't move - point to 0 and test memory locations before the start of the - buffer. Report and fix from Jason Hood - -lib/readline/display.c - - expand_prompt: if _rl_screenwith == 0, call rl_reset_screen_size to - initialize it. If it's still 0 after that, guess that the screen - width is 80 and use that to guess how many screen lines the prompt - consumes - -lib/readline/readline.c - - readline_internal_setup: if in emacs editing mode, and we are - showing the editing mode in the prompt, call _rl_reset_prompt() to - make sure that the updated setting of _rl_show_mode_in_prompt - (presumably set in an inputrc file) is reflected in the redisplay - performed by rl_callback_newline via readline_internal_setup. - Fix from Jason Hood - - 2/22 - ---- -builtins/complete.def - - print_one_completion,print_compopts: make sure to display the - `nosort' and `noquote' options if they've been set for a particular - compspec. Fix from Grisha Levit - -builtins/read.def - - read_builtin: if -e is supplied, read needs to free rlbuf before - returning, since it uses discard_unwind_frame at that point. Bug - and fix from ZhangXiao - -execute_cmd.c - - execute_for_command: when using a nameref as the for loop control - variable, make sure we check for readonly namerefs and make sure - that we force bind_variable to enforce restrictions on nameref - assignments. Fix from Grisha Levit - - 2/23 - ---- -general.c - - make_absolute: convert deprecated cygwin_conv_to_full_posix_path - to cygwin_conv_path (CCP_WIN_A_TO_POSIX, ...) - -{shell,variables}.c,config-top.h - - modify change from 2/17: rename STATIC_PATH_VALUE to RBASH_STATIC_PATH_VALUE; - don't use it in shell_initialize; set PATH to it just before - imposing restricted shell restrictions - - 2/24 - ---- -subst.c - - expand_string_for_rhs: revert change from 2/19 concerning setting - expand_no_split_dollar_star so we are consistent with the Posix - examples. This anticipates Martijn Dekker initiating an austin - group discussion about this case - - 2/25 - ---- -pcomplete.c - - gen_shell_function_matches: if COMPREPLY is an associative array, - don't coerce it to an indexed array, which will fail to produce any - matches anyway. Report from Grisha Levit - - bind_comp_words: if COMP_WORDS exists as a nameref variable, ignore - the nameref attribute. Report from Grisha Levit - - -subst.c - - parameter_brace_expand: if expand_no_split_dollar_star is set, make - sure chk_atstar treats ${var[*]} as quoted by passing Q_DOUBLE_QUOTES - as the second argument. Fixes differing treatment of $* and ${v[*]} - reported by Grisha Levit , because otherwise - *contains_dollar_at gets set to 1 and the word is inappropriately - split - - 3/1 - --- -subst.c - - expand_word_list_internal: if a variable assignment fails (e.g., due - to a readonly variable) in a non-interactive posix mode shell, don't - abort the shell if the assignment is being performed by the command - builtin, even if it's something like `command eval v=1'. Fixes - RedHat bug https://bugzilla.redhat.com/show_bug.cgi?id=1389838 - (reported by Denys Vlasenko) - - 3/3 - --- -builtins/shopt.def - - set_compatibility_level: make sure that changing the compatibility - level sets or modifies BASH_COMPAT. Fixes bug reported by - Stephane Chazelas - -lib/glob/smatch.c - - is_cclass: broke into two functions: is_valid_cclass and cclass_test, - for future expansion. No functionality change - -lib/glob/sm_loop.c - - BRACKMATCH: when testing a character against a character class name, - use the unfolded (original) character, since we're not performing a - comparison. This is what glibc does. Fixes bug reported by - Lukáš BaÅinka - - 3/4 - --- -doc/{bash.1,bashref.texi} - - note that the arguments to -eq and the rest of the arithmetic - operators are evaluated as expressions when using [[. Report from - Rob la Lau - - - 3/7 - --- -lib/readline/display.c - - update_line: completely rewrote the code that handles line wrapping - in the presence of multibyte/double-width characters; punts to a - dumb update in cases where the number of screen positions doesn't - match - - update_line: in one case, where we are deleting characters from the - line, if we are writing a non-space into the last screen character - position, note that we are no longer using a space as a placeholder - for a line wrap where there is a multi-width character that won't - fit on the screen line (wrapped_line[current_line+1] = 0) - - 3/10 - ---- -lib/readline/readline.c - - bind_arrow_keys_internal: add default key bindings for control- - arrow keys, suggested by Per Bothner - - 3/13 - ---- -doc/{bash.1,bashref.texi} - - clarify the prompt strings the undergo expansion (PS0, PS1, PS2, and - PS4) before being displayed. Based on a report from Grisha Levit - - - 3/14 - ---- -input.c - - bufstream_ungetc: return EOF if being asked to unget a character to - a NULL buffer - - buffered_getchar: check buffered_fd is valid and buffers[buffered_fd] - is non-NULL before trying to dereference. Fixes bug reported by - floyd - -execute_cmd.c - - execute_null_command: if we fork to execute the command, the subshell - is not interactive - - execute_null_command: for safety's sake, if a redirection attached - to a null command affects fd 0 or the fd the shell is reading for - input, and the redirection can potentially change or close that file - descriptor, force a fork so the redirection is done in a subshell - - 3/15 - ---- -lib/readline/display.c - - update_line: if we have to output some bytes, and we are outputting - the prompt string, make sure we correct _rl_last_c_pos if we are - at the wrap offset -- what if all of the characters in the prompt - are invisible, so the visible length is 0? Fixes display bug - reported by Grisha Levit - -execute_cmd.c - - undo_partial_redirects: new function, performs redirections specified - in redirection_undo_list and disposes of them. Intended to be used - to unwind redirections performed before a redirection error - - dispose_partial_redirects: new function, disposes of - redirection_undo_list and nulls the list - - execute_command_internal: use undo_partial_redirects - -execute_cmd.h - - undo_partial_redirects: extern declaration - - dispose_partial_redirects: extern declaration - -subst.c - - exp_jump_to_top_level: if we are throwing an expansion error while - expanding a redirection (expanding_redir != 0), undo any undoable - redirections by calling undo_partial_redirects() so we don't leave - any in place - -variables.c - - initialize_shell_variables: if SHELLOPTS is in the environment, - unset the readonly attribute on any existing variable with that - name. It may have been created by processing a -o option on the - command line. Fixes issue reported by Stephane Chazelas - - - 3/16 - ---- -lib/readline/histfile.c - - read_history_range: short-circuit and do nothing if the history file - is of 0 size - - read_history_range: make sure the buffer is zero-terminated so the - timestamp tests work right for history files of 1 character. Report - and recommended fix from Denis Martinez - -lib/readline/complete.c - - compute_lcd_of_matches: when trying to compute the common prefix - of a set of matches while performing case-insensitive completion - matching, don't sort the match list unless rl_sort_completion_matches - is non-zero. Fixes problem reported by Roee Bar - - 3/18 - ---- -subst.c - - extract_dollar_brace_string: handle process substitution embedded in - a ${...} expansion in the same way as command substitution. Reported - by D630 - -parse.y - - LEX_GTLT: new flag, set by parse_matched_pair when a `<' or '>' is - read - - parse_matched_pair: handle an embedded process substitution like an - embedded command substitution if we are parsing an array index or - a dollar-brace expansion. Reported by D630 - - 3/21 - ---- -subst.h - - ASS_NOEVAL, ASS_NOLONGJMP: new values for assignments, used by - make_variable_value - -variables.c - - make_variable_value: ASS_NOEVAL: if this is set, don't attempt - arithmetic evaluation or case modification, just produce the value - (still honor ASS_APPEND) - - make_variable_value: ASS_NOLONGJMP: don't longjmp back to top_level - if arithmetic evaluation fails due to a syntax error - - bind_variable_internal: make sure aflags is passed to all calls to - make_variable_value - - push_temp_var: add ASS_NOLONGJMP to the flags passed to - bind_variable_internal. Fixes bug reported by D630 - -bashline.c - - bash_execute_unix_command: don't bother to attempt optimization by - checking whether the call to parse_and_execute changes $READLINE_LINE; - it can be defeated by the new code that optimizes appends to string - variables. Bug reported by Grisha Levit - - 3/22 - ---- -subst.c - - expand_string_for_rhs: re-apply change from 2/19 based on discussion - on the austin-group mailing list about how unquoted ${var-$*} - expands when IFS is null. Originally reported by Martijn Dekker - - - 3/25 - ---- -parse.y - - read_token_word: if we read a WORD immediately after a CASE, FOR, or - SELECT, increment `expecting_in_token' to note that we're going to - be reading IN as the next non-newline token - - special_case_tokens: if we're expecting an IN (expecting_in_token > 0) - and we have an "in", return IN and decrement expecting_in_token. This - is a better implementation of Posix grammar rule 6 than the previous - code in that function (which is still there for posterity, but should - eventually be removed). Fixes bug reported by Torka Noda - - -subst.c - - string_list_pos_params: if the expansion is not quoted, and IFS is - null, return a string containing the quoted positional parameters - separated by spaces. Callers know what to do with the string - - parameter_brace_substring,parameter_brace_remove_pattern, - parameter_brace_transform,parameter_brace_patsub,parameter_brace_casemod: - for the VT_POSPARMS case, after calling the operator-specific - expansion function, which eventually calls string_list_pos_params, - leave the returned string alone, since it's already quoted properly - - parameter_brace_expand: after calling the above functions to perform - expansions, if the expansion is being performed on an unquoted $* - when IFS is null, set the W_SPLITSPACE flag in the return WORD_DESC - so that splitting on spaces is performed on the already-quoted word. - Fixes bug reported by Grisha Levit - - 3/28 - ---- -subst.c - - process_substitute: change so the subshell doesn't inherit the 'v' - option, like command substitution now does (as of bash-4.4). - Suggested by Grisha Levit - - 3/30 - ---- -subst.c - - parameter_brace_casemod: now takes a pflags parameter, like - parameter_brace_patsub; changed callers - - parameter_brace_transform: now takes a pflags parameter, like - parameter_brace_patsub; changed callers - - pos_params_pat_subst,pos_params_modcase: if mflags indicates we're - on the rhs of an assignment statement and not going to perform - word splitting, we're expanding $*, and $IFS is null, make sure - string_list_pos_params treats the expansion as double-quoted, so - the positional parameters will be concatenated. Fixes bug reported - by Grisha Levit - - 3/31 - ---- -doc/{bash.1,bashref.texi} - - add notes to the description of pipelines emphasizing that each - element of a pipeline is executed in a subshell, referring to the - description of a command execution environment, and that the - lastpipe option can modify that behavior. From a discussion with - Jean Delvare - - 4/1 - --- -subst.c - - expand_word_internal: set had_quoted_null to note for later if we - expand '', "", or "$x" when x is unset - - expand_word_internal: if we expand "$param" (or "${param}") and we - come back with a single word with the W_HAVEQUOTEDNULL flag set, - make sure we set had_quoted_null to remember it for later. In this - case, if we already have seen a quoted null and we expanded $@ in - this (sub)string expansion, we don't want to do any of the special - $@ handling. In particular, we don't want to set *expanded_something, - because that will result in word splitting and quoted null removal. - Fixes bug reported by Grisha Levit - - parameter_brace_patsub: when expanding ${*/pat/sub} in the case - where ifs_is_null != 0 and (pflags & PF_NOSPLIT2) (meaning we aren't - going to be doing word splitting), pass MATCH_ASSIGNRHS so we do - the right thing in this case. Part of a set of cases inspired by - Grisha Levit - - param_expand: case '*': if we are on the rhs of an assignment - (PF_ASSIGNRHS) and ifs is unset, and $1 == " ", we need to make sure - string_list_dollar_at gets called with Q_DOUBLE_QUOTES so it quotes - the positional parameters before joining them into a string with - string_list_internal. Otherwise, that first space gets removed by - the implicit word splitting that gets performed. Reported by - Grisha Levit - -array.c - - array_patsub,array_modcase: handle ${A[*]} identically to $* when - not quoted and IFS is null (separate with spaces). Makes things - like ${A[*]/x/y} behave the same as ${*/x/y} when IFS is null - -subst.c - - parameter_brace_patsub,parameter_brace_casemod: if expanding ${A[*]} - when the match is on the rhs of an assignment statement (PF_ASSIGNRHS) - and ifs is null, make sure the match is performed as if it were - quoted - - parameter_brace_substring: now takes a PFLAGS argument - - parameter_brace_substring: if expanding $* in a context where we - don't want to do word splitting (expand_no_split_dollar_star && - PF_NOSPLIT2), make sure we expand $* as if it were quoted - - parameter_brace_substring: if expanding an unquoted $* on the rhs of - an assignment statement when IFS is null, make sure we expand the $* - as if it were quoted - - 4/4 - --- -doc/{bash.1,bashref.texi} - - read: document that a delim argument of '' terminates each line when - a NUL character appears - - 4/5 - --- -subst.c - - parameter_brace_expand_word: handle case where unquoted $@ is - expanded in a context where word splitting is not performed (PF_NOSPLIT2) - and IFS is not equal to the standard value - - param_expand: handle case where unquoted $@ is expanded in a context - where word splitting is not performed (PF_NOSPLIT2) and IFS is not - equal to the standard value. Fixes bug with IFS == $1 when expanding - unquoted $@ reported by Grisha Levit - - 4/7 - --- -subst.c - - pos_params_pat_subst: if MATCH_ASSIGNRHS is set, don't expand $* - as quoted unless expand_no_split_dollar_star is also set. Fixes - expansion bug reported on 4/4 by Grisha Levit - - parameter_brace_transform: if we transform unquoted A[@] or A[*] - when IFS is null, don't quote the result of array_transform in the - same way we don't quote the result of parameter_list_transform, - since it will come back quoted. Fixes bug reported by - Grisha Levit - - list_transform: if we transform unquoted $* or ${a[*]} when IFS is - null and expand_no_split_dollar_star is non-zero, call - string_list_pos_params with Q_DOUBLE_QUOTES to inhibit splitting. - We do this in all cases except @Q, which is inconsistent but more - intuitive. - Fixes bug reported by Grisha Levit - - 4/8 - --- -builtins/read.def - - read_mbchar: if unbuffered == 2, we are running read -N and need to - use zreadn to read the rest of the multibyte char, since the - previous call to zreadn may have buffered characters. Fixes bug - reported by Stephane Chazelas - -pathexp.h - - QGLOB_CTLESC: new flag for quote_string_for_globbing: means to turn - CTLESC CTLESC (quoted CTLESC that's usually removed as part of - word splitting or quote removal) into CTLESC - -pathexp.c - - quote_string_for_globbing: if QGLOB_CTLESC is present in flags, - turn CTLESC CTLESC into CTLESC, even if the first CTLESC is preceded - by a backslash. Callers can't do this because the remaining CTLESC - will be treated as a quoting character and turned into a backslash - -execute_cmd.c - - execute_case_command: if the pattern is not quoted, make sure to tell - quote_string_for_globbing to turn CTLESC CTLESC into CTLESC by - passing QGLOB_CTLESC. Fixes bug reported 4/2 by Martijn Dekker - - - 4/9 - --- -subst.c - - string_transform: after calling ansiexpand for the `E' transformation, - need to call dequote_escapes because ansiexpand assumes it is being - called by the parser and arranges for ansicstr to quote CTLESC and - CTLNUL with CTLESC. Reported by Grisha Levit - -variables.c - - mk_env_string: when exporting functions, run them through - dequote_escapes because any strings containing CTLESC or CTLNUL are - still quoted with CTLESC. Reported by Grisha Levit - - -subst.[ch] - - quote_escapes,dequote_escapes: now take const char * argument - -execute_cmd.c - - execute_intern_function: if the function name contains CTLESC, run - it through dequote_escapes just in case it got CTLESC quoting - CTLESC or CTLNUL from the parser - - 4/11 - ---- -eval.c - - reader_loop: make sure PS0 is expanded and displayed before - incrementing the command number - -parse.y - - prompt_history_number: function to make history number as reported - by \!, or posix mode !!, be the same index that the (possibly multi- - line) command will be stored with. The history library increments - history_offset as soon as a new line is entered, and it's up to the - history code to store the second and subsequent lines of a command - in the same history entry. If we are expanding PS0 or PS4, or - a ${var@P} expansion, we're already past the history entry no - matter what. Inspired by patch from Grisha Levit - - - decode_prompt_string: call prompt_history_number - - decode_prompt_string: if expanding PS4 or ${var@P}, make the - command number the same as reported by PS0/PS1/PS2 - - 4/12 - ---- -support/Makefile.in - - clean: remove man2html.o as part of this production instead of - waiting until `distclean'. Reported by chrlis - -subst.c - - string_list_pos_params: if we are expanding $* in a context where - IFS is null and expand_no_split_dollar_star is set (no word - splitting), use string_list_dollar_star to force the positional - parameters to be joined without first separating them into a list - and attempting to join them later. Fixes problem with constructs - like ${var=${*:1}}, pointed out by Grisha Levit - . This undoes change to @Q from 4/7, so - list_transform change reverted - - 4/19 - ---- -builtins.h - - added BUILTINS_H include guard - -examples/loadables/Makefile.in - - install loadables.h as sample include file, along with Makefile.inc - - 4/23 - ---- -bashline.c - - maybe_make_readline_line: don't try to do anything if the passed - NEW_LINE is NULL. Report from Jaren Stangret , - fix from Eduardo Bustamante - - 4/24 - ---- -parse.y - - xparse_dolparen: if the current token (the last thing read_token - returned to yylex) is shell_eof_token, assume that it is the new - bison lookahead token and clear it. Fixes bug reported by - Werner Fink - - 4/25 - ---- -doc/{bash.1,bashref.texi} - - cmdhist: clarify that this option only has an effect if history is - enabled. Suggested by Matthew Braun - - 4/26 - ---- -jobs.c - - wait_for: if a non-interactive shell with job control enabled (set -m) - detects that a foreground job died due to SIGINT, act as if the shell - also received the SIGINT. Prompted by an austin-group-l discussion - - waitchld: run SIGCHLD trap for each child exited even if job control - is not enabled when in Posix mode. Prompted by an austin-group-l - discussion - - 4/27 - ---- -lib/readline/histfile.c - - read_history_range: if the history file is empty, free the history - filename before returning. Report and fix from Eduardo Bustamante - - -lib/readline/bind.c - - rl_parse_and_bind: make sure there is something, even if it's a - quoted empty string, before the `:' in a key binding. Report from - Eduardo Bustamante - - rl_parse_and_bind: if the right side of a key binding starts with a - quote, make sure there's a matching close quote before treating it - as a macro definition - - rl_translate_keyseq: if a key sequence ends with \C- or \M- (or - \C-\M-) make sure we break out of the loop if moving to the character - to be translated is a NUL. Old code did this only in the \C-\M- - case. Report from Eduardo Bustamante - - 4/28 - ---- -lib/glob/sm_loop.c - - GMATCH: implement a clever technique from glibc that avoids - backtracking past a `*' if we've already chosen to use it and need - matches beyond it. Look at https://research.swtch.com/glob for a - longer explanation. This results in a significant speedup for globs - with multiple instances of `*', especially with more than 4. - - 5/2 - --- -lib/readline/bind.c - - rl_translate_keyseq: make sure a trailing backslash in the key - sequence is preserved. Report from Eduardo Bustamante - - - 5/3 - --- -builtins/builtin.def - - builtin_builtin: make sure to set this_shell_builtin to the builtin - command being executed, overwriting `builtin'. Leave - last_shell_builtin alone. Fixes bug reported by Luiz Angelo Daros - de Luca - -jobs.c - - waitchld: modify change of 4/26 to run SIGCHLD traps even if job - control is not enabled - -lib/readline/misc.c - - rl_get_previous_history: if we didn't find a previous history entry - to use, call rl_maybe_unsave_line before returning because we - aren't going to use the saved line, and it has the same undo list - as rl_undo_list. Fixes fuzzing bug reported by Eduardo Bustamante - - - rl_get_{next,previous}_history: if there is no history list, don't - bother doing anything - - 5/4 - --- -expr.c - - popexp: if we error out due to stack underflow, make sure to zero out - expression and lasttp; they may contain undefined values we don't - want evalerror to print - - expr_unwind: handle expr_depth decrementing below zero - - evalexp: restore the old value of evalbuf even if we error and - longjmp; we may have called evalexp recursively - - evalerror: make sure expression is non-NULL before trying to print it. - These fix fuzzing bug reported by Eduardo Bustamante - , happens only in cases where we don't longjmp on - a fatal expansion error - - 5/5 - --- -parse.y - - read_token_word: when checking for a word that's a target of a - redirection, we can potentially call valid_array_reference, which - can end up calling the parser recursively. If it does that, we - need to make sure that yylval.word doesn't change, so we set it back - to the_word. Fixes another fuzzing bug - -parse.y - - arith_for_command: make syntax errors in the arithmetic for command - (signaled by make_arith_for_command returning NULL) more like - language syntax errors by calling YYERROR. Avoids complicated - attempts at error recovery and dealing with NULL returns from - command productions. Pointed out by Eduardo Bustamante - - -lib/readline/kill.c - - _rl_copy_to_kill_ring: make sure the current slot in the kill ring - has something in it, even if the last command was a kill, before - trying to modify it. Another fuzzing bug - - 5/6 - --- -builtins/read.def - - read_builtin: if we see a backslash when not in raw mode (not -r), - only back up `i' when we read the next character if we know we added - a CTLESC the last time through the loop (skip_ctlesc == 0), - especially if i == 0. Another fuzzing bug from Eduardo Bustamante - - - 5/8 - --- -builtins/read.def - - read_mbchar: handle zreadn/zreadc/zread returning EOF in the middle - of an incomplete multibyte sequence. Fixes another fuzzing bug - - read_builtin: use mb_cur_max instead of constant 4 when deciding - whether the next character can exceed the number of bytes available - in input_string - -lib/readline/input.c - - MinGW: include before . Fix from Eli Zaretskii - - -builtins/read.def - - read_builtin: if we get input from readline, we need to get the - remainder of a multibyte character from rlbuf instead of calling - read_mbchar. Bug reported by Eduardo Bustamante - - 5/9 - --- -parse.y - - token_is_assignment: use the allocated buffer approach in all cases, - not just if we're not using bash malloc. This avoids the assignment - to t[i+1] writing beyond the end of the allocated token if - i == token_buffer_size - 1. Another fuzzing bug - - xparse_dolparen: if parse_string returns < 0, we clear out the - current shell_input_line before performing a longjmp, since we're - abandoning parsing of this command. This is consistent with how - the parser resynchronizes after other syntax errors - - GRAMMAR: add 'error yacc_EOF' production to handle a syntax error - that's immediately followed by an EOF after resynchronization. - Fixes another fuzzing bug - - 5/10 - ---- -lib/readline/text.c - - _rl_set_mark_at_pos: don't let the mark be set to a position < 0. - Fixes a fuzzing bug - - rl_exchange_point_and_mark: don't do anything if the mark is already - less than 0 - - 5/12 - ---- -lib/readline/rlmbutil.h - - wchar_t: make sure this is defined as int if multibyte characters - aren't supported - -lib/readline/text.c - - _rl_change_case: don't force use of ascii toupper and tolower if - isascii returns true; it's not defined to work on characters outside - the 0..255 (really 0..127) range. Bug reported by - Eduardo Bustamante - - 5/14 - ---- -lib/readline/text.c - - rl_change_case: handle case where the old and new characters (after - the case change) are not the same number of bytes. Pointed out in - http://lists.gnu.org/archive/html/bug-bash/2015-01/msg00091.html - -lib/readline/display.c - - expand_prompt: use `ret' as first parameter to _rl_find_prev_mbchar - since that needs the base of the array. Bug from fuzzing reported by - Eduardo Bustamante - - 5/15 - ---- -execute_cmd.c - - execute_simple_command, execute_arith_command, execute_cond_command, - execute_arith_for_command: adjust the line number when executing a - function interactively so that the first command in the function is - line 1, not line 0, as Posix requires. Reported by Robert Elz - - - execute_simple_command, execute_arith_command, execute_cond_command, - execute_arith_for_command: ony adjust the line number when executing - a function interactively if we are not sourcing a file - (sourcelevel == 0), so this is consistent everywhere we adjust the - line number - - 5/16 - ---- -bashline.c - - bash_directory_completion_hook: when calling split_at_delims to see - whether a ${ or $( is closed, use the right value for `start' relative - to the substring beginning at `$'. Bug from fuzzing reported by - Eduardo Bustamante - -expr.c - - expassign: if the call to expcond generates a syntax error in a - context when the shell won't longjmp (like when evaluating $PS1), - it will end up NULL and we need to catch it before calling strlen. - Bug from fuzzing reported by Eduardo Bustamante - -examples/bash-completion/ - - new place to include a current or recent version of the - bash-completion package - - 5/19 - ---- -lib/readline/display.c - - CHECK_INV_LBREAKS: new versions for multibyte and single-byte chars, - so the multibyte version can check and increase the size of - line_state_invisible->wbsize and line_state_invisible->wrapped_line, - callers who call CHECK_INV_LBREAKS must update - wrapped_line[newlines] when in HANDLE_MULTIBYTE mode. Fuzzing bug - reported by Eduardo Bustamante - - 5/24 - ---- -lib/readline/search.c - - _rl_nsearch_callback,noninc_search: handle _rl_search_getchar - returning -1 (EOF or read error) by aborting the search. - Fuzzing bug reported by Eduardo Bustamante - - 5/25 - ---- -variables.c - - localvar_inherit: new variable, controlled by shopt localvar_inherit - option - - make_local_variable: if localvar_inherit is set, the new local - variable inherits a previous scope's variable's value, attributes - (except nameref), and dynamic variable information. If a local - variable inherits a value, the local is not invisible - -builtins/shopt.def - - localvar_inherit: new option - -doc/{bash.1,bashref.texi} - - localvar_inherit: document new shopt option - - 5/29 - ---- -lib/readline/readline.c - - _rl_subseq_result: only return -1 and back up the chain if we are - dealing with a result (r) that's already < 0 and we are at the end - of a multi-key sequence. Otherwise, a failing readline command (e.g., - delete-char at the end of a line) could cause this code to be - executed. Report from Nuzhna Pomoshch - -lib/readline/histfile.c - - read_history_range: if the file isn't a regular file, return an - error. Bug report from Eduardo Bustamante , - relaying from IRC - - 5/30 - ---- -variables.c - - set_pwd: if in Posix mode, and PWD appears in initial environment as - an absolute pathname to the current directory, set PWD to the result - of canonicalizing the environment value, or to the physical path if - canonicalization fails. From a suggestion by Eduardo Bustamante - - - 5/31 - ---- -builtins/read.def - - read_builtin: if -n or -N option is supplied with a 0 argument, - don't attempt to read any characters; bail out right away. Reported - by Eduardo Bustamante , relaying from IRC - - 6/3 - --- -config.h.in - - HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC: add define, used by stat-time.h - to construct a timespec from struct stat. Report and fix from - Siteshwar Vashisht - -variables.h - - att_regenerate: new internal variable attribute: if set, regenerate - dynamic variable's value when it's exported and we are creating the - export environment - -variables.c - - init_dynamic_variables: LINENO, EPOCHSECONDS, EPOCHREALTIME: set - internal regenerate attribute for these dynamic variables - - make_env_array_from_var_list: if a dynamic variable has the - regenerate attribute set, call the dynamic value function to generate - an updated value before placing it in the environment. From a report - about exporting LINENO from Robert Elz - - 6/4 - --- -lib/glob/sm_loop.c - - BRACKMATCH: at the matched: label, make sure we get the bracket - character we're looking for (char class, collating symbol. etc.) - before we decrement the count of braces we're looking for. Eventually - we could do something about badly-formed bracket expressions - - 6/7 - --- -lib/readline/histlib.h - - strchr: only declare if __STDC__ is not defined, since we already - include . Report from Chi-Hsuan Yen - - 6/9 - --- -lib/readline/display.c - - update_line: when wrapping lines with multibyte chars at the end of - the new line being wrapped, make sure we copy the NULL byte in old - when moving the contents of old around. Fuzzing bug reported by - Eduardo Bustamante - -lib/readline/mbutil.c - - _rl_get_char_len: use MB_CUR_MAX in the call to mbrlen; there's no - need to look at the rest of the string when we're just interested in - the length of a single character - - 6/12 - ---- -jobs.c - - wait_for: when waiting for the next child to exit (ANY_PID), make - sure to restore the old SIGINT handler before returning. Fixes - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864649 - - 6/14 - ---- -lib/readline/display.c - - expand_prompt: make sure `ret' is NULL-terminated before calling - _rl_prev_mbchar_internal, since that calls strlen, which requires - the passed string to be NULL-terminated. Another fuzzing bug. - - 6/15 - ---- -lib/readline/isearch.c - - _rl_isearch_fini: use rl_replace_line instead of strcpy so rl_end - gets set right - - _rl_isearch_fini: after restoring rl_point, call _rl_fix_point so - we don't set rl_point > rl_end. Fixes a fuzzing bug - -lib/readline/mbutil.c - - _rl_find_next_mbchar_internal: if _rl_adjust_point returns < 0, - just punt, treat the value as a byte, and advance point by 1 - -lib/readline/util.c - - rl_tilde_expand: rearrange code in the whitespace loop so that - `start' gets tested first and we don't try to dereference - rl_line_buffer[-1]. Another fuzzing bug from dualbus@gmail.com - -bashline.c - - bash_dequote_filename: make sure that pointers that are used as - indices into sh_syntaxtab are cast to unsigned char first, to - avoid problems with signed chars > 128. Fixes a fuzzing bug. - -lib/readline/kill.c - - _rl_copy_to_kill_ring: when reallocating the kill ring, make sure to - allocate one more than the max number of kills so the loop that - copies the kill ring entries down runs right (and to mirror the - initial allocation). Fixes a fuzzing bug. - -lib/readline/isearch.c - - _rl_isearch_dispatch: make sure that cxt->sline_index never goes < 0 - even when searching a line in reverse. Fixes a fuzzing bug - - 6/16 - ---- -parse.y - - xparse_dolparen: short-circuit immediately if passed a empty string - -lib/readline/display.c - - update_line: when wrapping multibyte characters, make sure we deal - with WCWIDTH returning -1. Fixes a fuzzing bug - - 6/17 - ---- -execute_cmd.c - - execute_coproc: make sure `invert' is set before trying to use it - when returning failure on invalid coproc name. Report and fix from - Eduardo Bustamante - - execute_command_internal: make sure execute_coproc sets - last_command_exit_value if it returns failure, so an invalid name - can set $? = 1. Report and fix from Eduardo Bustamante - - -lib/readline/display.c - - update_line: make sure all references to `wrapped_line' are wrapped - with #ifdef HANDLE_MULTIBYTE. Report and fix from Eduardo Bustamante - - -lib/readline/vi_mode.c - - _rl_vi_change_char: don't use rl_point++ when you mean to move - forward a character; use _rl_vi_append_forward to account for - multibyte characters and take vi end of line handling into account - - _rl_vi_last_replacement: now an array of chars whether we are - using multibyte chars or not. If we're not, the character we read - to use as the replacement is saved as the first element of the array - - rl_vi_change_char,_rl_vi_callback_change_char: changes to deal with - _rl_vi_last_replacement being an array. Fixes bug reported by - Eduardo Bustamante - -lib/readline/mbutil.c - - _rl_get_char_len: look at at most MB_CUR_MAX characters, but maybe - fewer if the length of the string is less - -builtins/bind.def - - unbind_keyseq: new function for the -r option; checks whether the - key sequence is actually bound before trying to bind it to NULL. - Partial fix for https://savannah.gnu.org/support/?109329 - -parse.y - - augment `error yacc_EOF' production to call YYABORT in non-interactive - shells or calls to parse_and_execute (eval, command substitution, - etc.) Fixes bug reported by Martijn Dekker - - 6/19 - ---- -bashline.c - - edit_and_execute_command: don't add rl_line_buffer to the history - list if it's empty; consistent with how other code treats an empty - line - -execute_cmd.c - - execute_builtin: make sure to preserve the temporary env across the - execution of the `read' builtin or `fc' builtin if HISTORY is - defined, in case `read -e' calls edit-and-execute-command. Should - have no side effects. Reported by Eduardo Bustamante - - -general.c - - line_isblank: new function: returns true if passed string is composed - entirely of blanks - -general.h - - line_isblank: new extern declaration - -parse.y - - history_delimiting_chars: return "" for a blank line, since there's - nothing to delimit with `;' - - 6/21 - ---- -jobs.c - - wait_for: make sure to call restore_sigint_handler before returning - if we return out of the loop due to no children. Report from - Eduardo Bustamante - -subst.c - - expand_word_internal: if split_on_spaces is set, and the word is - unquoted, and IFS is null, split the results of the previous steps - on $' \t\n' instead of just ' '. This relies on the previous steps - quoting the portions of the word that should not be split. Fixes - bug reported by Kevin Brodsky - -expr.c - - evalexp: after running expr_unwind, make sure we reset expr_depth - to 0 for the next call - - expr_streval: if after a call to get_array_value (which can call - the expression evaluator recursively) we discover that expr_depth - is less than it was before we called it, we assume there has been - some kind of error and an expr_unwind, so we treat it as an - error and either longjmp back to the expression top level or return - 0 immediately. Fixes bug reported by Eduardo Bustamante - - - 6/23 - ---- -doc/{bash.1,bashref.texi} - - add text noting that $* and ${array[*]} (unquoted) can also expand - to multiple words - - 6/29 - ---- -general.[ch] - - default_columns: new function, returns the value of COLUMNS, or - refreshes it if check_window_size is set and COLUMNS is unset. By - default, it returns 80 - -execute_cmd.c - - select_query: use default_columns() instead of fetching value of - COLUMNS directly - -builtins/help.def - - show_builtin_command_help: use default_columns() instead of fetching - value of COLUMNS directly - - 6/30 - ---- -builtins/read.def - - read_builtin: call QUIT during the read loop, just in case we get a - signal we should act on that didn't cause read to be interrupted. - Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1466737 - - read_builtin: if -n or -N is supplied with a 0 argument, try a zero- - length read to detect errors and return failure if that read returns - a value < 0. Suggested by dualbus@gmail.com - - 7/4 - --- -bashhist.c - - maybe_add_history: keep track of whether the current line is a shell - comment, even if we're not adding it because it's in a multi-line - command, so we use appropriate delimiters between it and any - subsequent lines. Fixes bug reported by Grisha Levit - back on 2/28/2017 - -bashline.c - - operate_and_get_next: if given an explicit argument, use that to - choose which line in the history to use. - -lib/readline/doc/rluser.texi,doc/bash.1 - - operate-and-get-next: document new effect of explicit numeric arg - -lib/readline/complete.c - - fnprint: make sure print_len is initialized before using it on - systems without multibyte character support. Report and fix from - Juan Manuel Guerrero - - 7/6 - --- -builtins/printf.def - - PRETURN,printf_builtin: check variable returned by bind_printf_variable, - return failure if that indicates we can't perform an assignment - because the variable is marked readonly or noassign. Fixes bug - reported by Arnaud Gaillard - - 7/7 - --- -lib/readline/text.c - - rl_quoted_insert: new feature: a negative argument means to insert - the next -COUNT characters using quoted-insert. Original feature - from Jason Hood . Still needs work on - redisplay - - _rl_insert_next_callback: implement support for negative arguments - similar to rl_quoted_insert: we just insert one at a time and keep - increasing the count until it hits 0 - -lib/readline/misc.c - - _rl_arg_callback: if the return value from _rl_arg_dispatch indicates - we should keep reading a numeric argument, update the message with - the new arg value - - 7/8 - --- -lib/readline/signals.c - - _rl_handle_signal: make sure all uses of any of the job control - signals are protected by a check for SIGTSTP being defined. Report - from Juan Manuel Guerrero - - 7/11 - ---- -lib/readline/vi_mode.c - - rl_vi_replace: when making the new keymap for vi replacement mode, - make sure that ANYOTHERKEY is set correctly, otherwise some input - will cause _rl_dispatch to return -2 to the top level. Fixes fuzzing - bug reported by Ben Wong - - 7/19 - ---- -builtins/read.def - - struct ttsave: make the attrs member a struct, not a pointer, to force - a structure copy that will survive a longjmp to another context. - Leaving it as a pointer to a local struct is not portable - - 9/10 - ---- -execute_cmd.c - - execute_builtin: make sure that we set up the unwind-protect for - pop_scope (temporary_env is non-zero) so that the temporary env - is propagated to the current environment only for special builtins - (source/eval/unset) not run by the command builtin - (flags & CMD_COMMAND_BUILTIN == 0). Fixes bug reported by - Martijn Dekker - - 9/17 - ---- -builtins/printf.def - - asciicode: don't use mblen to check whether or not a character is a - valid multibyte character; use mbtowc right away and then inspect - the return value. Fixes bug reported by Stephane Chazelas - - - 9/27 - ---- -{jobs,subst}.h - - move declaration of last_command_subst_pid to subst.h, since it's - declared in subst.c and doesn't depend on job control. Reported by - Martijn Dekker - -builtins/read.def,variables.c - - fixed a couple of problems (READLINE, ARRAY_VARS) that prevented - the minimal config from building - - 10/1 - ---- -parse.y - - special_case_tokens: if we are returning DO in a case where the last - two tokens read are `FOR' and `WORD' make sure we decrement - expecting_in_token. Fixes bug reported by Martijn Dekker - - - 10/4 - ---- -subst.c - - expand_string_for_rhs: now takes an additional PFLAGS argument from - its caller (one so far); passes that through to call_expand_word_internal - as W_ASSIGNRHS. Fixes bug reported by Martijn Dekker - - - expand_string_for_rhs: expanding b in ${a[:]=b} is now done as if - b were the rhs of an assignment statement. This means that splitting - isn't done, but tilde expansion is performed as if the statement - were `a=b'. Fixes splitting bug with $* reported by Martijn Dekker - - -command.h - - W_NOASSNTILDE: new word flag, means to not perform tilde expansion - following a `:' even if the word has the W_ASSIGNRHS flag enabled - -subst.c - - expand_word_internal: if we see a `:' with the W_NOASSNTILDE flag - set, just add the character and inhibit any subsequent tilde - expansion. Currently not set anywhere, but it could be set in - expand_string_for_rhs to satisfy its peculiar semantics - - 10/6 - ---- -lib/sh/casemod.c - - sh_modcase: convert even single-byte wide characters to wide upper - or lowercase equivalents to accommodate locales where single-byte - characters have multibyte upper and lower case conversions. Bug - reported by Stephane Chazelas - - 10/7 - ---- -doc/{bash.1,bashref.texi} - - slight changes to the description of command_not_found_handle to - clarify that it's executed in a separate execution environment, - just like if the command was found. Reported by Martijn Dekker - - - 10/8 - ---- -lib/readline/doc/{history.3,hstech.texi} - - history_get: clarify the range of valid values for the OFFSET - argument. From a report by Kevin Ryde - - 10/21 - ----- -subst.c - - expand_string_for_rhs: set W_NOASSNTILDE if the operator is `=' - for backwards compatibility with bash-4.4 - -shell.c - - main: set positional parameters before running the startup files, - so the startup files can inspect $@. Often-requested feature, - most recently from Stephane Chazelas - - 10/27 - ----- -doc/{bash.1,bashref.texi} - - Arrays: add some clarifying language to make it clear that array - references that don't use the ${a[s]} syntax are subject to - globbing when passed as arguments to commands such as unset, and - should be quoted for safety. Change prompted by a report from - Eli Barzilay - -parse.y - - parse_comsub: make sure we don't run off the end of the `ret' - buffer when checking for the here doc delimiter. Report from - Jakub Wilk , the result of a fuzzing test. Pointer - to place for the fix from Eduardo Bustamante - - 10/30 - ----- -builtins/pushd.def - - get_directory_stack: make sure the current directory (element 0 of - the stack) is passed to polite_directory_format under the same - conditions as the rest of the stack entries (flags & 1). Otherwise - something like `cd ${DIRSTACK[0]}' will fail. Fixes bug reported - by Steve Jones - -builtins/declare.def - - declare_internal: when checking for a `[' to see whether or not this - is an array variable declaration (declare -a foo[12]), make sure - we don't do the check if we're just dealing with shell functions. - Bug and pointer to fix from PJ Eby - - 11/1 - ---- -parse.y - - parse_comsub: if we read a four-character word followed by a break - character, and that word is not one of the reserved words, set - lex_rwlen to 0 since we are no longer in a reserved word. It only - hurts if another break character immediately follows, so that test - succeeds again. Turn off the RESWDOK flag only if it's not a shell - metacharacter, too. Fixes bug reported by Kjetil Torgrim Homme - - - 11/3 - ---- -lib/readline/isearch.c - - _rl_isearch_dispatch: if we are searching in reverse order, let - sline_index go to -1 to avoid searching the same line twice. It - gets reset right after that, so there's no danger of indexing into - the history line with a negative index. - - 11/7 - ---- -execute_cmd.c - - time_command: only restore command->flags if CODE indicates we didn't - perform a longjmp back to top_level. If we did, `command' has already - been freed. Fixes bug reported on savannah by - ukuvbu oibws - https://savannah.gnu.org/support/?109403 - - 11/10 - ----- -lib/sh/unicode.c - - u32cconv: make sure to initialize localconv to -1 (error) in case - we switch from a utf-8 locale to something else and call - iconv_close. Report from Egmont Koblinger ; fix - from Eduardo Bustamante - - 11/16 - ----- -subst.c - - parse_comsub: istring_index should be a size_t to avoid integer - overflow when allocating large pieces of memory. Report and fix - from Siteshwar Vashisht , originally based on - http://lists.gnu.org/archive/html/bug-bash/2017-11/msg00047.html - - 11/24 - ----- -lib/readline/bind.c - - rl_empty_keymap: new public function, returns non-zero if there are - no keys bound in the keymap passed as an argument - -lib/readline/readline.h - - rl_empty_keymap: new public extern declaration - -lib/readline/doc/rltech.texi - - rl_empty_keymap: document new function - -lib/readline/bind.c - - rl_generic_bind: keep track of the previous keymap and previous - index in a multi-key key sequence so we can remove an empty terminal - keymap and remove a previous override to ANYOTHERKEY. Right now, - this only works for one previous keymap level. Inspired by a report - from Clark Wang - - 11/25 - ----- -lib/readline/display.c - - _rl_update_final: make sure that computing the length of the visible - bottom line (botline_length) takes any invisible characters in the - prompt into account (woff). This value is used as part of the check - whether or not we want to remove the line-wrapping indicator on - terminals like xterm - - _rl_update_final: when removing the line-wrapping indicator on xterm, - make sure we take invisible characters in the prompt (woff) into - account when computing the character in the rightmost physical - screen position. Fixes cosmetic line-wrapping issue reported by - Egmont Koblinger - - 11/27 - ----- -lib/sh/ufuncs.c - - fsleep: if using select to implement sleep, use restart after - a signal interrupts the select and handle pending signals. If - pselect is available, use that instead and block SIGCHLD while - pselect is executing. - Fixes report from Thiruvadi Rajaraman - - 11/28 - ----- -lib/readline/signals.c - - rl_check_signals: new public function: a wrapper for RL_CHECK_SIGNALS - that can be used by applications that install a wrapper for - rl_getc (rl_getc_function) so they can respond to signals that - arrive while waiting for input in the same way as rl_getc. The app - can use rl_pending_signal() to get the most recently-received - signal. From a discussion about Gnuplot initiated by - Rin Okuyama - -lib/readline/readline.h - - rl_check_signals: new extern declaration - -lib/readline/doc/rltech.texi - - rl_check_signals: document new public function - -variables.c - - set_pwd: test for and force an inherited OLDPWD to be a directory - if OLDPWD_CHECK_DIRECTORY is defined in config-top.h (it is by - default). Issue raised by Mikulas Patocka - -config-top.h - - OLDPWD_CHECK_DIRECTORY: new define, defined to 1 by default - - 11/29 - ----- -Makefile.in - - pathexp.o: add dependencies on libintl.h. Reported by - Ross Burton - - 12/1 - ---- -lib/sh/ufuncs.c - - fsleep: add blocking and releasing SIGCHLD using sigprocmask - around call to select(2) even if pselect(2) is not available - - 12/3 - ---- -execute_cmd.c - - coproc_setstatus: new utility function, take a pointer to a coproc - and a status and mark the coproc as dead and having been reaped - with that status. Used by child processes who want to invalidate - the coproc's pid - - 12/5 - ---- -subst.c - - process_substitute: instead of just having a flag to denote that a - file descriptor is connected to a process substitution, store the - pid of the child process (still needs work) - - find_procsub_child,set_procsub_status,reap_procsubs: utility - functions to allow the job control code to detect that a process - substitution child has died and deallocate the file descriptors - or pathname - -subst.h - - find_procsub_child,set_procsub_status,reap_procsubs: extern - declarations - -nojobs.c - - set_pid_status: if we are reaping a process substitution, call - set_procsub_status to record the fact - -jobs.c - - waitchld: if we are reaping a process substitution, call - set_procsub_status to record the fact. Doesn't really do anything - yet - - 12/6 - ---- -execute_cmd.c - - execute_command: don't call unlink_fifo_list if we're in the - middle of executing a list of commands (executing_list != 0). - Partial fix for bug reported by Stephane Chazelas - - - execute_simple_command: don't close process substitution file - descriptors in the parent after forking children in a pipeline; - defer until pipeline completes, since parent may have inherited - fds from a calling scope (e.g., via `.'). EXPERIMENTAL - - execute_disk_command: don't close process substitution file - descriptors in the parent after forking the child. EXPERIMENTAL - - 12/7 - ---- -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - show-mode-in-prompt: clarify that this must be enabled before the - vi and emacs mode strings are prefixed to the prompt. Report from - Rob Foehl - - 12/8 - ---- -execute_cmd.c - - execute_coproc: don't warn about an existing coproc if the write and - read file descriptors are unusable (-1), as they will be after a - call to coproc_closeall in a subshell. Fixes spurious warning - reported by Tobias Hoffmann - -jobs.c - - bgp_resize: avoid overflow when calculating the new size if the - child process limit is something ridiculously large. Report and - fix from Natanael Copa - -execute_cmd.c - - execute_builtin_or_function: if we return via the return builtin, we - don't get a chance to free the saved fifo list, so add an unwind- - protect to make sure it happens. Part of fix for leak reported by - Oyvind Hvidsten - - execute_command_internal: if we unwind via the return builtin (e.g., - we execute a function which then returns via the return builtin to - a previous function), we don't free the saved fifo list, so add an - unwind-protect to make sure the free happens. Rest of fix for leak - reported by Oyvind Hvidsten - -subst.c - - add_fifo_list: for the FIFO case (no /dev/fd), make sure we - initialize the new members of the fifo list after xrealloc - - 12/9 - ---- -subst.c - - dev_fd_list: now a list of type `pid_t' so we can store process - associated with the pipe fd into the right element; change all - necessary functions (copy_fifo_list, add_fifo_list) - - process_substitute: store pid of child process into the right - index in dev_fd_list after opening the pipe. Process ID of -1 means - process has been reaped and fd needs to be closed (or FIFO needs to - be unlinked); value of 0 means slot is unused - -jobs.c - - wait_for_background_pids: call reap_procsubs to make sure we clean - up all reaped process substitutions before trying to wait for - everything (still needs work) - -tests/{run-procsub,procsub.{tests,right}} - - new file, tests of process substitution that have failed in the past - - 12/10 - ----- -jobs.c - - wait_for_background_pids: warn if one of the jobs is stopped - -subst.c - - wait_procsubs: new function, call wait_for for every "live" process - substitution - -jobs.c - - wait_for_background_pids: call wait_procsubs to reap any living - process subsitutions - - 12/13 - ----- -lib/readline/bind.c - - parser_if: add support for testing the readline version, using the - full set of arithmetic comparison operators (and supporting both - = and ==), using version numbers of the form major[.[minor]] - - 12/14 - ----- -subst.[ch] - - string_list_dollar_star: now takes QUOTED and PFLAGS arguments like - string_list_dollar_at, changed all callers. Not used yet. - - 12/16 - ----- -subst.c - - param_expand: broke out cases of expanding unquoted (quoted == 0) - $* on the rhs of an assignment statement (pflags & PF_ASSIGNRHS) - with various values of IFS (unset, null, set to non-null value) to - capture the expansion subtleties. From a report back on 11/24 by - Martijn Dekker - - 12/17 - ----- -array.h - - set_element_value: new define, sets array element AE to VALUE - -variables.c - - set_pipestatus_array: use set_element_value where appropriate - - 12/18 - ----- -subst.c - - parameter_brace_find_indir: when expanding the indirect parameter - to find the eventual variable name, we don't perform word splitting. - Make sure this does the right thing for * and @. Fixes bug - reported by isabella parakiss - - 12/19 - ----- -doc/{bash.1,bashref.texi} - - indirect expansion: make sure to note that the value of the indirect - variable does not undergo word splitting as one of its expansions, - as in fix from 12/18 - - 12/22 - ----- -subst.c - - parameter_brace_expand_rhs: make sure the value this function returns - when OP is `=' is quoted appropriately, as the callers expect. More - changes from Posix interp 221. Fixes report from Martijn Dekker - - -variables.c - - assign_hashcmd: if running in a restricted shell, make sure the - target of the hash assignment can be found via a $PATH search, to - prevent users assigning commands to the hash table they would not - ordinarily have access to. Fixes issue raised by Drew Parker - - -builtins/hash.def - - hash_builtin: if running in a restricted shell, make sure the - pathname target of `hash -p' can be found via a $PATH search, to - prevent users assigning commands to the hash table they would not - ordinarily have access to. - - 12/27 - ----- -array.c,arrayfunc.c,... - - many changes to clean up unused variables and functions. From a - report from Siteshwar Vashisht - - 12/28 - ----- -lib/readline/terminal.c - - _rl_term_clrscroll: save the `E3' termcap capability, which clears - the scrollback buffer where supported. Unused right now - -lib/readline/rlprivate.h - - _rl_term_clrscroll: extern declaration - -lib/readline/bind.c - - parser_if: added simple variable comparison capability. Allowable - operators are `=', `==', and `!='; boolean variables must be - compared to either `on' or `off'; variable names must be separated - from the operator by whitespace - -doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} - - document new `if variable comparison value' construct - - 1/2/2018 - -------- -lib/glob/sm_loop.c - - EXTMATCH: when matching against !(patlist), if a filename beginning - with a `.' does not match any of the patterns in patlist, don't - return it as a match if leading dots need to be matched explicitly - (flags & FNM_PERIOD). Report from Eric Cook - - 1/3 - --- -variables.[ch] - - bind_function_def: takes an additional flags argument. If FLAGS&1, - overwrite any existing function_def hash table entry; if FLAGS==0, - leave any existing function_def alone. - -make_cmd.c - - make_function_def: call bind_function_def with flags == 0 - -execute_cmd.c - - execute_intern_function: call bind_function_def with flags == 1 so - we have function_def information that's correct for where the - function is defined, not just where it's last parsed. Fixes report - from Bruno Vasselle ; final piece of - fix from 12/15/2011 - - 1/4 - --- -subst.c - - param_expand: deal with string_list_dollar_star returning NULL. - Fixes bug reported by Martijn Dekker - -builtins/history.def - - history_builtin: enabled code that performs range deletion - - 1/5 - --- -subst.c - - do_assignment_internal: if performing a compound assignment, make - sure to pass ASS_CHKLOCAL flag to do_compound_assignment if the - assignment word has the W_CHKLOCAL flag set - - do_compound_assignment: honor ASS_CHKLOCAL flag and check for an - existing local variable before creating or modifying a global - variable - -builtins/declare.def - - declare_internal: new (undocumented so far) option: -G. Means to - act on global variables (create, modify) if no local variable is - found with the specified name - - declare_find_variable: new declare-specific wrapper functon for - declare builtin; obeys -g and -G options in one place - - declare_internal: if no variable is found after following any nameref - chain, look up the variable using declare_find_variable to honor the - -G option. XXX - so far, this is the only place that function is used - -subst.c - - shell_expand_word_list: before calling make_internal_declare, add - 'G' to the options list if W_CHKLOCAL is set in the word's flags. - This makes builtins like `readonly' that modify local variables in - a function behave the same for scalar and array variables - - 1/11 - ---- -parse.y - - shell_getc: move code that decides whether to append a space to an - alias expansion here from mk_alexpansion, so we can inhibit adding - a space if we're currently parsing a single or double quoted string - - 1/12 - ---- - -parse.y - - clear_string_list_expander: take a pointer to an alias that's about - to be freed and make sure there aren't any pointers to it in the - list of pushed strings. If there are, zero it out in the pushed - string list to avoid referencing freed memory in pop_string() - -alias.c - - free_alias_data: if an alias being freed is currently being expanded, - call clear_string_list_expander to remove references to it from the - list of pushed strings - - 1/14 - ---- -pcomplib.c - - progcomp_search: add code to look up an alias for the CMD argument - and return the completions for the first word of that alias if one - is found. Just a start at completing aliases, a much-requested - feature - -pcomplete.h - - COPT_LASTUSER: last flag value used by user-settable completion - options - - PCOMP_RETRYFAIL, PCOMP_NOTFOUND: new #defines, possible return values - from programmable_completions in FOUNDP argument. Moved RETRYFAIL - define here from pcomplete.c to avoid collisions with user-settable - option values (COPT_*) - - 1/15 - ---- -pcomplete.c - - programmable_completions: if we don't find any completions for a - command, and RETRY is 0, see if the command is a defined alias, - expand it, and try to expand the first word of the value as a - command, and find any programmable completions for it. Here right - now, could be moved to attempt_shell_completion later if we need - to do more analysis of the expanded line. We'll see how it works - in practice. (Disabled for now.) - - 1/16 - ---- -parse.y - - grammar: when timing the null command, make sure to turn off the - flags in parser_state (PST_REDIRLIST) that make_simple_command sets - when given a NULL second argument, since it assumes that it's going - to turn those off when it gets the next word of the simple command - (which it never gets in this case). Fixes bug reported by - Anti Räis - - 1/19 - ---- -lib/readline/rltty.c - - prepare_terminal_settings (termios/termio): if there is a function - bound to the VDISCARD character in the current keymap, set VDISCARD - to _POSIX_VDISABLE while readline is active. From a report from - Rhialto - - 1/22 - ---- -builtins/history.def - - histtime: check whether or not localtime() returns NULL, and make - sure we only call strftime() with a valid struct tm. This can happen - when the timestamps in the history file overflow a time_t. Fixes bug - reported by Luke Dashjr - -bashline.c - - edit_and_execute_command: if we're in vi editing mode, make sure - we end up in insert mode after executing the commands from the - edited file. This seems to be what other shells do. Report from - Stan Marsh - - 1/26 - ---- -bashline.c - - command_word_completion_function: match alias and shell function - names case-insensitively if the readline completion-ignore-case - variable is set. Inspired by report from - -lib/readline/display.c - - update_line: when performing a dumb update after wrapping the line - (usually due to printing the prompt), make sure we adjust - _rl_last_c_pos if there are invisible characters in prompt lines - other than the first (we assume those invisible characters are in - the last line, which is nearly always the case). We adjust by the - total number of invisible chars less the number of invisible chars - in the first prompt line. From a report in - https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1745273 - -execute_cmd.c - - execute_command_internal: if redirections attached to a compound - command fail, make sure we discard the `internal_fifos' unwind- - protect frame after freeing the copied fifo_list and before returning - - 1/30 - ---- -lib/readline/rlprivate.h - - BRACK_PASTE_FINI: add \r to the end of the string to avoid problems - with the tty driver thinking the cursor was in the wrong position. - Fixes issue reported by Egmont Koblinger - - 1/31 - ---- -lib/sh/zread.c - - zread,zreadintr: call check_signals() before calling read() to - minimize the race window between signal delivery, signal handling, - and a blocking read(2). Partial fix for FIFO read issue reported by - Oyvind Hvidsten - -doc/{bash.1,bashref.texi} - - shopt: document `assoc_expand_once' shell option - - 2/1 - --- -config-top.h - - DONT_REPORT_SIGTERM: define, so non-interactive shells will no - longer print termination messages for child processes killed by - SIGTERM - - 2/6 - --- -lib/readline/text.c - - rl_insert: don't attempt to optimize typeahead if we are only reading - a fixed number of characters (rl_num_chars_to_read > 0) - -redir.c - - redir_special_open: if the shell is restricted, return a - RESTRICTED_REDIRECT error for attempts to open /dev/tcp and /dev/udp - sockets. Inspired by report from Blake Burkhart - - do_redirection_internal: if redir_open returns RESTRICTED_REDIRECT, - return that right away (instead of errno) so we can print a better - error message - - 2/11 - ---- -jobs.c - - bgp_resize: fix problems with (pid_t) overflow when calculating new - size for table when js.c_childmax is near the limit of a pid_t - (e.g., 2**31 - 1 on a 32-bit system, or 2**63-1 on a system with - 32-bit pid_t). Fixes hang reported by Natanael Copa - based on his patch from 12/8. - - bgp_resize: cap max table size for bgpids at MAX_CHILD_MAX (32768) - -include/typemax.h - - TYPE_MINIMUM, TYPE_MAXIMUM: updated definitions from coreutils-8.29, - silences some compiler warnings - - 2/14 - ---- -Makefile.in - - maybe-clean: use cd and pwd -P to test whether or not two directory - names identical, since topdir = '.' and BUILD_DIR = full pathname - when you use something like `bash ./configure'. Problem reported by - Michael Felt - -subst.c - - split_at_delims: if SD_NOQUOTEDELIM is in the flags argument, don't - treat `'' and `"' as candidates for possible sequences of delimiters, - even if they're part of the delimiter set (the delims argument). - Fixes problem with completing lines like `foo --bar='quux baz' xx' - reported by Nick Patavalis - - 2/15 - ---- -copy_cmd.c - - copy_word_list: build the list in the right order, avoiding having - to reverse it at the end. Helps with long argument lists - -shell.c - - bind_args: build the argument list in the right order, avoiding - having to reverse it at the end. - - bind_args: only call push_args to save argc and argv as BASH_ARGC - and BASH_ARGV if debugging mode is enabled (debugging_mode != 0). - Inspired by report from Ambrose Feinstein - - bind_args: note that we've saved BASH_ARGC and BASH_ARGV by setting - bash_argv_initialized - - shell_reinitialize: reset bash_argv_initialized back to 0 so - BASH_ARGV and BASH_ARGC will be recreated if we're in debugging mode - -variables.c - - save_bash_argv: new function, initializes BASH_ARGV and BASH_ARGC - from the saved positional parameters - - init_bash_argv: initialize BASH_ARGV and BASH_ARGC if - bash_argv_initialized == 0 - -builtins/shopt.def - - shopt_set_debug_mode: if we're turning on debug mode, initialize - BASH_ARGC and BASH_ARGV if bash_argv_initialized == 0 - - 2/16 - ---- -execute_cmd.c - - execute_function: make sure BASH_ARGV and BASH_ARGC are initialized - before calling push_args (and before calling remember_args) - -builtins/source.def - - source_builtin: make sure BASH_ARGV and BASH_ARGC are initialized - before calling push_args (and before calling remember_args) - -builtins/evalfile.c - - _evalfile: if the shell compatibility level is 44 or lower, make - sure BASH_ARGV and BASH_ARGC are initialized before calling - array_push - -builtins/shopt.def - - compat44: new shell option. This will be the last compatXX option - -doc/{bash.1,bashref.texi} - - compat44: document new shell option - - 2/21 - ---- -builtins/common.h - - ISOPTION: check s[1] before s[2] to avoid out of bound reads. Fixes - bug reported by jeremy@feusi.co - -input.h - - B_SHAREDBUF: new flag for buffered input fds, indicates that this - fd shares its b_buffer with another fd - -input.c - - duplicate_buffered_stream: when duplicating *from* the buffer - corresponding to bash input, make sure the new buffer has B_SHAREDBUF - in the flags, because copy_buffered_stream copies pointers - - duplicate_buffered_stream: if the buffer being copied to has the - B_SHAREDBUF flag set, make sure the b_buffer doesn't get freed. - Fixes use-after-free bug reported by jeremy@feusi.co - - save_bash_input,close_buffered_stream: make sure a buffer with - B_SHAREDBUF set has its b_buffer set to NULL before calling - free_buffered_stream - - 2/24 - ---- -subst.c - - parameter_brace_expand_error: add parameter saying whether or not - we are checking whether value is null, so we can have different - error messages for ${x:?} and ${x?}. Report and fix from - don fong - - 3/5 - --- -lib/readline/bind.c - - _rl_read_file: instead of calling stat/open on the passed filename, - use open/fstat to avoid one possible filename translation and close - a small (benign) race condition. Report and fix from Roy Ivy - - - 3/11 - ---- -variables.c - - makunbound: if new variable localvar_unset is non-zero, mark local - vars in previous scopes as invisible and unset so they will show - up as unset until that previous scope returns (similar to how local - variables in the current local scope are handled). localvar_unset - is currently set to 0 with no way for a script to change its value. - Eventually there will be an option to modify it. From a bug-bash - discussion started by Nikolai Kondrashov back - on 2/11/2018 - - 3/13 - ---- -subst.c - - expand_word_list_internal: short-circuit and exit right away if a - variable assignment preceding a special builtin fails in posix mode - - expand_word_list_internal: if a variable assignment precedes an - empty command name (after expansion), fix to exit right away when - the shell is in posix mode - - 3/15 - ---- -doc/{bash.1,bashref.texi} - - Add text to Pathname Expansion clarifying that a slash must be - matched by a slash in the pattern when matching pathnames, but - not in other matching contexts. Suggested by - -builtins/common.c - - read_octal: allow octal numbers greater than 777 to accommodate - modes and umasks that include sticky/setuid/setgid bits. Report - and fix from Martijn Dekker - - 3/19 - ---- -lib/readline/bind.c - - rl_generic_bind: make sure we only assign to prevkey in the loop - if the key sequence index is > 0, so ic is valid. Fixes bug - reported by Koichi Murase - -builtins/read.def - - read_builtin: be slightly less aggressive checking for timeouts and - SIGALRM: if we successfully read a character, don't check for a - timeout until we store or process it. Fixes timing problem - reported by Rob Foehl - - 3/22 - ---- -sig.c - - termsig_handler: add a call to exit(1) after the kill, just in case - there are circumstances where the SIG_DFL signal handler is - ignored. Report from Andrei Vagin - - 3/25 - ---- -lib/readline/bind.c - - _rl_function_of_keyseq_internal: new internal function that takes a - length parameter to accommodate NUL in the key sequence. Patch from - Koichi Murase - - rl_function_of_keyseq_len: new application-callable function that - takes a length parameter; otherwise equivalent to rl_function_of_keyseq. - -lib/readline/readline.h - - rl_function_of_keyseq_len: add extern declaration for new function - -lib/readline/doc/rltech.texi - - rl_function_of_keyseq_len: document new function interface - -bashline.c - - bash_execute_unix_command: use rl_function_of_keyseq_len to handle - key sequences with embedded NULs (\C-@). Fix from Koichi Murase - - -lib/readline/bind.c - - rl_bind_key_if_unbound,rl_bind_key_if_unbound_in_map: run the KEY - argument through rl_untranslate_keyseq to produce a symbolic sequence - that can encode \C-@. - - rl_bind_keyseq_if_unbound_in_map: translate the key sequence in order - to accommodate symbolic key sequences; should be a no-op for `raw' - key sequences such as the arrow key seqeunces from terminfo. Change - from Koichi Murase - - 4/2 - --- -jobs.c - - wait_for: when setting the SIGINT signal handler to wait_sigint_handler - make sure we're not setting old_sigint_handler recursively, as we - can when running an external command in a trap we took after a - command exited due to SIGINT. We don't want to overwrite - old_sigint_handler here. Fixes bug reported by Dr. Werner Fink - - -execute_cmd.c - - execute_disk_command: when there is a command_not_found_hook, make - sure the subshell turns off job control before running it, in case - it runs processes. We don't want it to manipulate process groups. - Fixes bug reported by ÐиÑиллов Ðима - - execute_command_internal: make sure the command run by the `command' - builtin doesn't cause the ERR trap to be executed; wait for the - status to be returned by the command builtin. Fixes bug reported by - Martijn Dekker - - 4/4 - --- -subst.c - - process_substitute: handle longjmp back to top_level and function - returns (return_catch) in the child process, like command - substitution, so we don't longjmp back to some arbitrary spot from - the `exit' or `return' builtins, or on an expansion error, like - the command timing code. Fixes bug reported by Basin Ilya - - - 4/6 - --- -parse.y - - read_token_word: when reading a matched pair of backquotes as part - of a word, treat it as quoted so the characters are read as a single - word, but do not let the presence of the backquote mark the word as - quoted. Fixes here-document delimiter bug reported by Denys Vlasenko - - - 4/7 - --- -execute_cmd.c - - execute_case_command: call quote_string_for_globbing with the - QGLOB_CTLESC flag for both quoted and unquoted words, so it will - remove CTLESC/CTLESC in all cases while converting other quoted - characters to use a preceding backslash. Bug reported by - Martijn Dekker - - 4/9 - --- -smatch.c - - posix_cclass_only: helper function that checks whether a pattern has - only posix single-byte character classes ([:alpha:], etc.) or has - none at all - - xstrmatch: if running in a multibyte locale, make sure to short- - circuit to the single-byte matching code only if there are no - unrecognized character class names, since the wide character ctype - functions allow locales to define their own character class names - (e.g., "hyphen"). Fixes issue reported by yangyajing - - 4/10 - ---- -configure.ac,cross-build/qnx.cache - - qnx: add a configure cache file for cross-building, treat qnx 7 like - qnx 6 in terms of cpp options. Fix from Brian Carnes - - -aclocal.m4 - - BASH_CHECK_DEV_STDIN: experimental change to test for /dev/stdin - independently of /dev/fd or /proc/self/fd. Suggested for QNX by - Brian Carnes - - - 4/11 - ---- -lib/glob/glob.c - - glob_testdir: return -2 if DIR is a symlink, to differentiate it from - any other kind of non-directory file - - glob_vector: if we have GX_ALLDIRS (globstar), we want to skip over - symlinks to directories, since we will pick up the real directory - later. Fixes incompatibility reported by Murukesh Mohanan - - -bashline.c - - bash_execute_unix_command: changes to make READLINE_POINT apply to - characters instead of bytes when in a multibyte locale. Report and - fix from Koichi Murase - - 4/12 - ---- -builtins/evalstring.c - - parse_and_execute_cleanup: now takes an argument which is the value - of running_trap at some point before parse_and_execute was called; - changed callers in sig.c, builtins/evalfile.c - -builtins/common.h - - parse_and_execute_cleanup: changed prototype - - 4/13 - ---- -builtins/evalstring.c - - parse_and_execute_cleanup: if the argument holding the previous state - of running_trap is the same value as the current running_trap state, - don't call run_trap_cleanup: assume that there is a caller who will - take care of the cleanup after this returns. Fixes recursive trap - call on "eval return" reported by Martijn Dekker - -parse.y - - read_a_line: if remove_quoted_newline is non-zero, indicating the - here-document delimiter is unquoted, we will be running the contents - of the here-document through word expansion and need to quote CTLESC - and CTLNUL in the input. Fixes bug with ^A in here document reported - by Jorge Alberto Baca Garcia - - 4/18 - ---- -pathexp.c - - quote_string_for_globbing: make sure the QGLOB_CTLESC code handles - both CTLESC CTLESC and CTLESC CTLNUL in the same way. Fixes bug - reported by Martijn Dekker - - 4/19 - ---- -execute_cmd.c - - execute_command_internal: before executing any command in the current - shell, and before copying any existing FIFO list, call - reap_procsubs to unlink or close any process substitution pipes - associated with processes that have exited. Fixes hang in test suite - when trying to open a FIFO with no process having it open for - reading - - 4/26 - ---- -parse.y - - read_token_word: if returning REDIR_WORD for a {id}>foo construct, - for example, make sure to assign the_word to yylval.word before - returning, in case a recursive call to the parser overwrites it - (e.g., when evaluating array indexes). From a message to - austin-group-l from Stephane Chazelas - -lib/glob/sm_loop.c - - BRACKMATCH: if we have an invalid character class in an otherwise - well-formed bracket expression, don't try to match each character - of the (invalid) class individually; just skip over the class and - move on. From a message on the austin-group list from - Stephane Chazelas - - 4/27 - ---- -variables.c - - push_exported_var,push_func_var,push_temp_var: make sure to set the - context correctly in the variable we bind in the previous (non-temp) - scope. Report from Martijn Dekker - -pathexp.c - - unquoted_glob_pattern_p: a pattern that contains a backslash can - have it removed by the matching engine (since backslash is special - in pattern matching), so if the pattern contains a backslash, and - does not end in a backslash, we need to return true. Fixes bug - reported by Robert Elz - -lib/glob/glob_loop.c - - INTERNAL_GLOB_PATTERN_P: same change to return TRUE for a backslash - that doesn't end the pattern - -lib/sh/timeval.c - - print_timeval: use locale_decpoint() instead of fixed `.' to print - decimal point. Bug report in austin-group email from Joerg Schilling - - -lib/sh/clock.c - - print_clock_t: use locale_depoint() in the same way as print_timeval - - 4/29 - ---- -subst.c - - expand_cond_node: if special != 0, make sure to add QGLOB_CTLESC - to the flags passed to quote_string_for_globbing. Same issue as the - one with `case' fixed on 4/7, report from Martijn Dekker - - - 4/30 - ---- -redir.c - - do_redirection_internal: r_close_this: if the file descriptor is - already closed before the shell is asked to close it, make sure to - add an undo list redirect to make sure it stays closed. Report from - Martijn Dekker - - 5/2 - --- -variables.c - - push_posix_temp_var: new function, takes the SHELL_VAR * passed as - an argument and uses the name and value to create a global variable - - merge_temporary_env: if posixly_correct is set, call - push_posix_temp_var to create global variables, otherwise call - push_temp_var to preserve the old behavior. Right now, it's only - called when in posix mode, but that might change. This undoes the - change from 4/27 when in posix mode - - 5/3 - --- -sig.c - - struct that holds the terminating signal information has a new - field: whether that signal is expected to cause a core dump - - termsig_handler: if the call to kill(2) doesn't kill the process, - we have a problem. If our pid is not 1, we just exit with status - 128+sig (fake the sig exit status). If the pid is 1, we assume - we're in a Linux pid namespace and aren't allowed to send a signal - to ourselves. If we need to generate a core dump, we try to get - the kernel to SIGSEGV us by dereferencing location 0. If not, we - just exit with 128+sig. From a report and patch from Andrei Vagin - - - 5/4 - --- -bashline.c - - bash_execute_unix_command: make sure that parse_and_execute is called - with newly-allocated memory to avoid prematurely freeing the - command. Report and fix from Koichi Murase - - 5/7 - --- -builtins/shopt.def - - syslog_history: a shell option to control whether history is logged - to syslog; can be modified at runtime. Original patch from - Siteshwar Vashisht - -config-top.h - - SYSLOG_SHOPT: new configurable option, determines whether there is a - shell option to control syslogging history lines at runtime and sets - the default value of the option - -bashline.c - - syslog_history: new variable to control whether history lines are - sent to syslog; default value is the value of SYSLOG_SHOPT (or 1 - if that's not defined) - - bash_add_history: send history lines to syslog if syslog_history is - non-zero - - 5/10 - ---- - -variables.c - - push_var_context: if we are in Posix mode and manipulating the - temporary environment (temporary_env), implement behavior specified - in Posix interp 1009 and make sure that temporary assignments - preceding function calls modify the current environment *before* - the function is executed. - -[bash-5.0-alpha frozen] - - 5/12 - ---- -execute_cmd.c - - execute_in_subshell: subshells should set loop_level == 0, since - they are no longer "enclosed" by the loop, according to posix. - Report from Aeron.E. Wang - - 5/24 - ---- -Makefile.in - - pkgconfigdir: don't fail installing bash.pc if this directory doesn't - exist or isn't writable -- there's no error in failing to install - something nothing will use - - install-headers-dirs: creat $(pkgconfigdir) if it doesn't exist - -lib/sh/shmbchar.c - - utf8_mblen: replace with version from gnulib - - utf8_mbstrlen: reimplement using utf8_mblen so it handles invalid - multibyte sequences in the same way as mbstrlen - -lib/readline/mbutil.c - - _rl_utf8_mblen: utf-8 specific version of mblen from gnulib - -include/shmbutil.h - - ADVANCE_CHAR,COPY_CHAR_P: do better job detecting end of string in - UTF-8 locales (should not be called with an empty string, but to - be safe) - - 5/25 - ---- -lib/sh/utf8.c - - new file, utf-8-specific functions collected from other files - -externs.h - - extern declarations moved around for utf8.c - -include/shmbutil.h - - SADD_MBCHAR, SADD_MBQCHAR_BODY, ADVANCE_CHAR_P: if the locale is a - UTF-8 locale, don't bother with a call to mbrlen if the current - character cannot start a multibyte character - -variables.c - - push_var_context: only merge the temporary environment in posix mode - if we are executing a shell function (flags & VC_FUNCENV). Report - from Martijn Dekker - -lib/readline/mbutil.c - - _rl_get_char_len: don't call mbrlen if we are in a UTF-8 locale and - the character cannot start a multibyte sequence - -builtins/read.def - - read_builtin: if mb_cur_max > 1, call read_mbchar only if we're not - in a utf-8 locale or, if we are, the character we just read indicates - the start of a multibyte sequence - -subst.c - - string_extract_verbatim: don't call MBRLEN if we're in a utf-8 - locale and the current character can't start a multibyte sequence - - setifs: don't call MBRLEN if we're in a utf-8 locale and the first - character of $IFS can't start a multibyte sequence - -lib/readline/kill.c - - rl_bracketed_paste_begin: make sure we return 0 here if rl_insert_text - returns the right number of characters inserted to be consistent - with other functions. Returns 1 otherwise. Report and fix from - Gabe Krabbe back in March, 2018 - -lib/readline/readline.c - - rl_subseq_result: make sure r is < 0 before checking map[ANYOTHERKEY] - to see if we shadowed a key that should now be tried - - 5/27 - ---- -variables.c - - assign_aliasvar: perform same validity check on subscript assignment - as alias builtin performs on name argument. Bug report from - Mike Jonkmans - - 5/29 - ---- -builtins/setattr.def - - set_var_attribute: we should not propagate a variable assignment - preceding a builtin back to the calling environment unless the - shell is in posix mode. Since previous versions of the shell do - this, setting the shell compatibility level to 44 or less will - continue the propagation behavior - - 6/1 - --- -lib/readline/histexpand.c - - history_tokenize_word: as part of teaching history tokenization more - and more about shell syntax, allow command and process subsitution - and extended globbing patterns to appear within a word being - tokenized and not just at the beginning. Fixes bug reported back in - 2/2017 by ecki@tofex.de - -bashhist.c - - load_history: use HISTSIZE_DEFAULT (still defaults to "500") to set - the initial value of $HISTSIZE. HISTSIZE_DEFAULT can be overridden - in config-top.h - - 6/4 - --- -configure.ac - - make sure we link against an external readline library that's at - least version 8 - - 6/8 - --- -pcomplete.h - - INITIALWORD: internal compspec name for programmable completion on - the initial (usually the command) word - -bashline.c - - attempt_shell_completion: if we are in a command position and the - user has defined a compspec for INITIALWORD, use programmable - completion to complete command words. Original patch from - Luca Boccassi - -lib/readline/doc/rluser.texi,builtins/complete.def,doc/bash.1 - - make it clearer that -D takes precedence over -E when supplied as - options to `complete', not when they are applied during completion - -builtins/complete.def - - complete_builtin,compgen_builtin: add support for -I option - - print_one_completion,print_compopts: display -I when appropriate - -lib/readline/doc/rluser.texi,doc/bash.1 - - complete,compgen: document new -I option and its effect - - 6/10 - ---- -lib/readline/histfile.c - - read_history_range: don't apply the heuristic and try to append a - history line to an existing history entry if we don't have any - history entries. Bug and fix from Edward Huff - - 6/12 - ---- -bashline.c - - attempt_shell_completion: don't all the programmable completion for - INITIALWORD if programmable completion is disabled - - attempt_shell_completion: make sure in_command_position remains set - for an empty command word on an otherwise blank line, making the - presence of assignment statements optional. Report from - Luca Boccassi - - 6/20 - ---- -lib/malloc/malloc.c - - morecore,internal_malloc,internal_free: requests for more than - 128K bytes (defined as MMAP_THRESHOLD and saved in the new - malloc_mmap_threshold variable) are now satisfied via mmap and - freed via munmap. We only use mmap if we have mmap and MAP_ANON - (or MAP_ANONYMOUS). These blocks are not available for splitting - or coalescing, so every request for 128K bytes or smaller is - satisfied via sbrk(). We don't use mremap for realloc yet, but - we could in the future - -lib/malloc/mstats.h - - malloc_stats: the malloc stats now include the number of calls to - mmap and the total number of bytes requested via mmap. The number - of calls to munmap is captured in each bucket's lesscore count - -lib/malloc/stats.c - - print_malloc_stats: now prints an indication of where the change from - sbrk to mmap takes place, and prints number of mmap calls and total - number of bytes allocated using mmap - - 6/22 - ---- -variables.c - - get_bashargcv: new dynamic "fetch" variable for BASH_ARGV and - BASH_ARGC, for backwards compatibility: if a script makes a - reference to either variable at the top level (not in a shell - function) without enabling debugging mode and not having initialized - the variable previously (using a simple semaphore), create the - variables - - 6/25 - ---- -configure.ac - - opt_bash_malloc: bash malloc no longer disabled for systems that - require eight-bit alignment; the bash malloc has had this for a - long time - - 7/4 - --- -bashline.c - - pre_process_line: if command-oriented history is enabled, and the - line being expanded is the second or later in a multi-line command, - and we know the command is being saved as the current history entry, - decrease history_length before calling history_expand so references - like !! refer to the previous history entry as usual - -lib/readline/histexpand.c - - history_quoting_state: new variable, can be set by calling - application before calling history_expand to note that the string - being expanded is part of a quoted string. Can be set to a single - quote, a double quote, or 0 (no quoting) - - history_expand: look at history_quoting_state and honor the - single-quote setting by not expanding any initial portion of the - line before the closing single quote. This allows history expansions - to be performed on a line containing a closing single quote if they - appear after the single quote - -lib/readline/history.h - - history_quoting_state: extern declaration - -bashhist.c - - bash_history_inhibit_expansion: if history_quoting_state indicates - that this string is single-quoted, skip over the single-quoted - portion and determine whether or not the portion after the - quoted string needs to be inhibited from history expansion - -parse.y - - shell_getc: set history_quoting_state based on the contents of the - current delimiter before calling pre_process_line - - 7/6 - --- -lib/readline/doc/hsuser.texi - - describe the default behavior of backslash and single and double - quotes - -lib/readline/doc/hstech.texi - - history_quoting_state: describe effect of setting this variable - - history_quotes_inihibit_expansion: expand the description to include - the default quoting behavior that setting this variable enables - - 7/9 - --- -support/man2html.c - - unescape: use memmove instead of strcpy to handle overlapping strings - Report and fix from Bernhard M. Wiedemann - -lib/sh/getenv.c - - getenv: check that environ is non-NULL before looking through it. - Report and fix from Keeley Hoek - - 7/12 - ---- -braces.c - - mkseq: use better integer overflow handling for systems with 32-bit - ints and 64-bit intmax_ts. Bug reported by Simon Wörner - as the result of fuzzing - -builtins/declare.def - - declare_internal: make sure bind_variable returns non-NULL when - setting attributes for a variable named as an argument to declare - that also appears in the temporary environment (and is a nameref). - Bug reported by Simon Wörner - -parse.y,externs.h - - reset_readahead_token: new convenience function for the rest of - the shell, resets token_to_read if it's a newline (as it will be - after reset_parser is called) - -eval.c - - reader_loop: if we're just going to execute one command, make sure - the read-ahead token isn't set to something that will result in a - NULL command (by calling reset_readahead_token), since the code - will take that as the one command and set EOF_Reached - - 7/15 - ---- -doc/{bash.1,bashref.texi} - - indirect expansion: clarify that the expansion works on parameters, - not just variables (NAMEs). Suggested by konsolebox - - - 7/16 - ---- -doc/{bash.1,bashref.texi} - - INSIDE_EMACS: document its effect on line editing - - 7/17 - ---- -lib/readline/{readline.c,rlprivate.h} - - _rl_eof_found: new variable, private to the readline library, that - indicates whether the current call to readline() will return NULL - because we read EOF - -lib/readline/rltty.c - - rl_deprep_terminal: if bracketed paste mode is active, the last - character of the string to disable it is \r (to avoid confusing - the terminal driver about where the cursor is). In this case, - output a newline before returning so subsequent text (like the - `exit' bash prints) doesn't overwrite the prompt. Bug from - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=903936 - -variables.c - - make_local_assoc_variable: add second argument like corresponding - local array function, to allow this function to return an existing - local array variable to the caller for the caller to handle - -variables.h - - make_local_assoc_variable: change function prototype to add second - arg - -{subst.c,variables.c} - - make_local_assoc_variable: change callers - -builtins/declare.def - - declare_internal: call make_local_assoc_variable with a non-zero - second arg to have it return an existing local array variable to be - flagged as an error. Fixes bug reported by Grisha Levit - - - declare_internal: call make_local_array_variable with unconditional - second argument of 1 for the same reason as above - - 7/18 - ---- -variables.c - - bind_invalid_envvar: new function, takes invalid names from the - initial environment (names that are not valid shell identifiers) and - stores them in a separate hash table (invalid_env) - - maybe_make_export_env: make sure to add names from invalid_env to - the export env - - assign_in_env: for now, prevent variable names that aren't shell - identifiers from being added to the temporary environment. Addresses - issue raised by Grisha Levit - -test.c - - unary_test: rearrange code slightly to avoid a wasted variable lookup - if the argument to -v is a subscripted array reference - - 7/19 - ---- -variables.c - - nameref_transform_name: if a name doesn't resolve to a shell variable, - this function will check whether it resolves to a nameref that - points to a variable that hasn't been created yet - -variables.h - - nameref_transform_name: extern declaration - -subst.c - - do_compound_assignment: make sure that we follow any nameref chain - if the name passed resolves to a nameref that points to a variable - that doesn't exist. Fixes issue raised by Grisha Levit - - -builtins/declare.def - - declare_internal: before calling any variant of make_local_variable, - make sure to perform any transformation of the name indicated by an - existing nameref. Fixes issue raised by Grisha Levit - - - 7/20 - ---- -builtins/declare.def - - declare_internal: if we are creating a global variable with -g, even - if we're not giving it a value, check for namerefs at the global - scope to avoid confusion with namerefs at the local (function) scope. - -subst.c - - expand_word_internal: if a double-quoted string expands to nothing, - make sure we note that for later by setting had_quoted_null, just - as we do for single-quoted empty strings - -subst.[ch] - - W_SAWQUOTEDNULL: new flag (replaces W_HASCTLESC, which is unused), - means that we saw a possibly-discarded quoted null while expanding - this word - -subst.c - - expand_word_internal: if expansion results in a non-empty word but - we saw a quoted null during expansion (had_quoted_null == 1), set - W_SAWQUOTED_NULL in the returned word - - expand_word_internal: if a recursive call to param_expand comes back - with W_SAWQUOTEDNULL set in the resulting word, set had_quoted_null - to note it - - parameter_brace_expand_rhs: if a recursive call to expand_word_internal - returns a non-quoted-null string (after an optional call to - string_list) make sure we pass the W_SAWQUOTEDNULL flag back to the - caller - - word_list_split: if a word expands to nothing after expansion and - splitting, but we saw a quoted null during the expansion - (W_SAWQUOTEDNULL), return an empty word - - 7/25 - ---- - -subst.c - - do_compound_assignment: if creating a local variable, make sure to - set `newname' to the name of the variable returned from find_variable, - since that follows namerefs. Fixes issue raised by Grisha Levit - - - 7/29 - ---- -subst.c - - get_var_and_type: if VALUE is NULL, check before calling dequote_string. - Report and fix from Grisha Levit - - 7/30 - ---- -variables.c - - make_local_{array,assoc}_variable: make sure we're not trying to - inherit a value from an incompatible array type. Fixes issue raised - by Grisha Levit - - nameref_transform_name: if we're trying to resolve a nameref that - will be used to create a local variable, make sure the nameref is - at the same variable scope. Report from Grisha Levit - - - 8/2 - --- -array.c - - array_subrange: change to use string_list_pos_params after creating a - WORD_LIST from the array slice, like assoc_subrange does - -subst.c - - parameter_brace_substring: since assoc_subrange and array_subrange - both call string_list_pos_params now, treat the results the same as - the VT_POSPARAMS case (pos_params also calls string_list_pos_params). - Fixes behavior difference between ${a[@]:sub} and ${@:sub} reported - by Ilkka Virta - - 8/3 - --- -array.c - - array_patsub: rewrite to work in terms of a WORD_LIST * and call - string_list_pos_params on the result to be consistent with the - expansions of ${@/pat/rep} and ${*/pat/rep} - -assoc.c - - assoc_patsub: rewrite to work in terms of a WORD_LIST * and call - string_list_pos_params on the result to be consistent with the - expansions of ${@/pat/rep} and ${*/pat/rep} - -subst.c - - parameter_brace_patsub: change how return value of {array,assoc}_patsub - is treated to make it identical to pos_params_pat_subst, since they - all call string_list_pos_params now - - expand_string_for_pat: make sure we preserve the value of - expand_no_split_dollar_star instead of just unconditionally setting - it back to 0 in case it was 1 before this function was called - - 8/6 - --- -array.c - - array_modcase: rewrite to work in terms of a WORD_LIST * and call - string_list_pos_params on the result to be consistent with the - expansions of ${@,,} and ${*,,} - -assoc.c - - assoc_modcase: rewrite to work in terms of a WORD_LIST * and call - string_list_pos_params on the result to be consistent with the - expansions of ${@,,} and ${*,,} - -subst.c - - parameter_brace_casemod: change how return value of {array,assoc}_modcase - is treated to make it identical to pos_params_modcase, since they - all call string_list_pos_params now - - 8/8 - --- -builtins/declare.def - - declare_internal: if we are making local variables, and not dealing - with the nameref attribute, make sure that any nameref variable we - followed when resolving the name given was at the same variable - context. If not, we just want to make or use a local variable with - the name passed; if so, we want to use the nameref value as the - variable name. Report from Grisha Levit - - 8/9 - --- -configure.ac - - globasciiranges: RRI now on by default, must be turned off explicitly - at configure time or runtime with `shopt -u globasciiranges' - - 8/14 - ---- -variables.c - - dispose_saved_dollar_vars: decrement stack pointer before looking - for saved positional parameters to dispose; stack pointer always - points to the first unused slot - - 8/15 - ---- -variables.c - - dollar_arg_stack: now a stack of struct saved_dollar_vars, which has - an array for the first ten (dollar_vars) and a WORD_LIST * for the - remaining (rest_of_args). Fixes performance issue with function calls - and large numbers of positional parameters raised by - Bize Ma - - {save,restore,free,free_saved}_dollar_vars: new functions to manage - dollar_vars and dollar_arg_stack members. Need to keep these in sync - with whatever remember_args does - - push_dollar_vars: use save_dollar_vars, which just copies pointers, - and directly assign rest_of_args, without copying the words, to the - dollar_arg_stack entry. Have to clear dollar_vars and rest_of_args - with the assumption that callers will call remember_args(args, 1) - immediately following - - pop_dollar_vars: free current positional parameters and restore old - ones from pointers saved in dollar_arg_stack, making sure to - invalidate any cached value for "$@" - - dispose_saved_dollar_vars: free saved pointers from current index - into dollar_arg_stack - -doc/{bash.1,bashref.texi} - - POSIXLY_CORRECT: make sure to note that bash makes sure this variable - is set when posix mode is enabled - - 8/17 - ---- -{jobs,nojobs}.c - - set_jobs_list_frozen: set jobs_list_frozen to a particular value. - Intended to save and restore the value around code sections instead - of unconditionally unfreezing it. - -jobs.h - - set_jobs_list_frozen: extern declaration - -execute_cmd.c - - execute_pipeline: if lastpipe is enabled, save and restore the - value of jobs_list_frozen using freeze_jobs_list/set_jobs_list_frozen - to avoid problems with race conditions and nested pipelines - causing jobs to be removed from the jobs table. Fixes savannah issue - https://savannah.gnu.org/support/index.php?109541 reported by - Björn Kautler - - 8/24 - ---- -execute_cmd.c - - lastpipe_cleanup: call set_jobs_list_frozen instead of - unfreeze_jobs_list - - execute_pipeline: set up lastpipe_cleanup with old value of - jobs_list_frozen - - 9/3 - --- -builtins/printf.def - - getuintmax,getfloatmax: on a conversion error, return as much of the - value as we were able to convert instead of 0. Fixes bug reported - by Robert Elz - - 9/4 - --- -lib/readline/text.c,lib/readline/rlprivate.h - - _rl_backward_char_internal: new function, guts of rl_backward_char - and rl_backward_byte, not currently used there - -lib/readline/vi_mode.c - - _rl_vi_advance_point: new function, move point forward by one - character, handling multibyte locales and characters and the end - of line semantics - - _rl_vi_backup_point: new function, move point backward by one - character, handling multibyte locales and characters - - rl_vi_eword,rl_vi_eWord: use rl_vi_advance_point instead of a simple - increment to handle multibyte characters. Fixes bug reported by - Enrico Maria De Angelis - - 9/5 - --- -lib/readline/vi_mode.c - - rl_vi_fword,rl_vi_fWord: use rl_vi_advance_point instead of a simple - increment to handle multibyte characters - - rl_vi_bword,rl_vi_bWord: use rl_vi_backup_point instead of a simple - decrement (and _rl_vi_advance_point where necessary) to handle - multibyte characters - - rl_vi_complete,_rl_vi_change_mbchar_case,_rl_vi_domove_motion_cleanup: - use _rl_vi_advance_point instead of simple rl_point increment - - vi_delete_dispatch,vi_change_dispatch,vi_yank_dispatch: use - INCREMENT_POS instead of a simple increment to rl_mark to handle - multibyte characters - - rl_vi_column: use _rl_forward_char_internal, starting with - rl_point == 0, to handle multibyte characters (Posix says `character - position', not index) - - 9/7 - --- -configure.ac - - changed release status to `beta' - - 9/9 - --- -lib/readline/display.c - - _rl_update_final: if the bottom line has zero characters and we are - on that line at column 0, don't bother with an additional \r\n. - Fixes redisplay nit reported by Per Bothner - - -configure.ac - - openbsd needs DEV_FD_STAT_BROKEN defined - -[bash-5.0-beta frozen] - - 9/11 - ---- -builtins/exec.def - - exec_builtin: make sure to sync the buffered stream where bash is - reading input (especially if it's fd 0) so a command exec'd by the - script can read the rest of stdin after the exec - - 9/15 - ---- -lib/readline/histexpand.c - - history_tokenize_internal: if the event contains embedded newlines - (e.g., bash with command-oriented history and lithist), use them as - word delimiters, equivalent to space and tab, so they don't end up - as separate words. Fixes issue pointed out by Viktor Dukhovni - - - history_tokenize_word: don't break if we get a newline (though we - shouldn't get one due to the loop in history_tokenize_internal - - history_expand_internal: use newline as a whitespace character when - expanding by words, as we do with history_tokenize_internal - -jobs.h - - J_PIPEFAIL: new flag for `flags' element of job struct - -jobs.c - - stop_pipeline: if pipefail_opt set, newjob gets J_PIPEFAIL in its - flags word - - raw_job_exit_status: use J_PIPEFAIL (setting of pipefail when job - created) instead of current setting of pipefail status to determine - how to compute exit status of pipeline. Tentative implementation of - Posix proposal - -expr.c - - exp0: don't call expr_bind_variable with a NULL string. Fixes - fuzzing bug reported by Eduardo Bustamante - - expr_bind_variable: don't try to do anything with a NULL or empty - LHS - - 9/16 - ---- -lib/readline/undo.c - - rl_do_undo: before we release the undo list entry we've just - processed, make sure we avoid any pointer aliasing issues caused - by having the entry being removed as part of the undo list in - _rl_saved_line_for_history. Fixes fuzzing bug reported by - Eduardo Bustamante - - 9/17 - ---- -[bash-5.0-beta released] - - 9/18 - ---- -lib/readline/bind.c - - name_and_keymap: new struct for keymap names and maps - - builtin_keymap_names: static array of builtin keymap names and - maps; preparing for allowing applications to set the names of - keymaps they create; keymap_names is initially a pointer to - this array - - _rl_get_keymap_by_name,_rl_get_keymap_by_map: new functions for - searching the keymap_names array and returning an index - - rl_get_keymap_by_name, rl_get_keymap_name: rewritten in terms of - new functions above - - rl_set_keymap_name (char *name, Keymap map): new function, set - name of MAP to NAME. NAME must not be builtin; MAP must not be one - of the builtin keymaps. Request and initial implementation from - Tom Tromey - -lib/readline/readline.h - - rl_set_keymap_name: new extern declaration for new public function - -lib/readline/doc/rltech.texi - - rl_set_keymap_name: add documentation - -lib/readline/doc/rluser.texi - - add text to `set keymap' description to note that applications - can add keymap names that can be used there - - 9/20 - ---- -parse.y - - shell_getc: don't execute the alias hack (returning a space at the - end of the string) if we are parsing a command substitution that - starts with a double paren (subshell inside a comsub), in which - case the flags are PSH_DPAREN. Fixes fuzzing bug reported by - Eduardo Bustamante - -lib/readline/isearch.c - - _rl_isearch_dispatch: default case: make sure we check multibyte - char length when deciding whether to enlarge the search string - buffer, instead of using the old assumption. Fixes fuzzing bug - reported by Eduardo Bustamante - -builtins/fc.def,execute_cmd.c - - fixed some missing free()s uncovered by coverity. Report from - Siteshwar Vashisht - -lib/glob/glob.c - - glob_vector: make sure name_vector is initialized to NULL - -lib/sh/{pathcanon,pathphys}.c - - {pathcanon,pathphys}: use memmove instead of strcpy on a possibly- - overlapping region of memory - -subst.c - - parameter_list_transform: make sure to dispose the word list in all - cases before returning - - parameter_brace_expand_rhs: make sure t1 is freed before returning - due to an invalid name resulting from an indirect expansion - -support/man2html.c - - fixed a couple of memory leaks - - 9/21 - ---- -subst.c - - process_substitute: if we are part of a job control process chain - (pipeline_pgrp != shell_pgrp), have the child shell forked to run - the process substitution set pipeline_pgrp to its own PID, - effectively becoming a process group leader without changing - its own process group. Fixes stray SIGHUP issue reported by - Jeremy Townshend - - 9/23 - ---- -arrayfunc.c - - assign_array_element: if we are assigning to an existing associative - array, and assoc_expand_once is set, allow `*' and `@' as subscripts. - Partial fix for report from Grisha Levit - -variables.c - - bind_int_variable: if valid_array_reference (lhs) is not true, - make sure that the lhs is a valid identifier before assigning the - value - -arrayfunc.c - - valid_array_reference: allow blank subscripts. They are treated as - `normal' keys for associative arrays and evaluate to 0 for indexed - arrays. More of fix for report from Grisha Levit - - - 9/24 - ---- -bashline.c - - restore_tilde: if the expanded length (xl) is longer than vl - we end up requesting a negative amount of memory (an extremely - large unsigned number). Just punt and return val in this case. - Fuzzing bug reported by Eduardo Bustamante - - restore_tilde: make sure we return what the user typed if tilde - expansion fails - - 9/29 - ---- -builtins/shopt.def - - uncomment `localvar_unset' option definition - -doc/{bash.1,bashref.texi} - - document `localvar_unset' shell option - -arrayfunc.c - - valid_array_reference: if we are parsing a subscript for an existing - associative array, the `assoc_expand_once' option is set, and the - VA_ONEWORD flag is set in FLAGS (meaning there should be nothing - following the closing `]'), don't call skipsubscript to find the - closing `]', use one that is at the end of the word. Part of fix for - issue reported by Grisha Levit - -builtins/{printf,set}.def - - pass VA_ONEWORD as part of flags value everywhere valid_array_reference - is used - -config-top.h - - CHECKWINSIZE_DEFAULT: now 1, so check_window_size is on by default - - HISTEXPAND_DEFAULT: new define, allows builder to enable or disable - history expansion by default at build time - -doc/{bash.1,bashref.texi} - - checkwinsize: document new default value - -bashhist.h - - HISTEXPAND_DEFAULT: don't define if it's already defined. Strict - POSIX mode continues to default to off - - 9/30 - ---- -lib/readline/input.c - - win32_isatty: win32-specific changes from GDB. Patch submitted by - Tom Tromey , originally from Eli Zaretskii - - - 10/1 - ---- -lib/readline/vi_mode.c - - rl_vi_start_inserting: start an undo group so we can grab the text - inserted here as a single unit, avoiding any insert coalescing - performed by rl_insert_text. Report and fix from Richard Todd - - - 10/3 - ---- -subst.c - - parameter_brace_transform: if we're asked to display the attributes - of an unset variable, check that the variable exists even if - get_var_and_type returns NULL (it checks invisible_p). Requested by - Michal Pesa - -lib/readline/kill.c - - _rl_bracketed_text: new function, collects the text pasted in - bracketed paste mode and consumes the bracketed paste end marker; - returns the pasted text and its length - - rl_bracketed_paste_begin: call _rl_bracketed_text to collect the - text - -lib/readline/isearch.c - - _rl_isearch_dispatch: set cxt->lastc to -7 if the input resolves to - rl_bracketed_paste_begin - - _rl_isearch_dispatch: if cxt->lastc == -7, call _rl_bracketed_text - to collect the pasted text and add it to the accumulating search - string. Only works if ESC is not one of the isearch terminators. - Fixes issue reported in Debian bug report 891780, - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=891780 - - 10/5 - ---- -variables.c - - push_posix_tempvar_internal: new function, body of push_func_var - with additional argument saying whether it's being called from a - function or (special) builtin code path - - push_builtin_var: new function, calls push_posix_tempvar_internal - with second argument indicating builtin code path - - push_func_var: now a stub that calls push_posix_tempvar_internal - with second argument indicating function code path - - pop_scope: if called from a special builtin, call push_builtin_var - instead of push_func_var to do the right variable propagation - -builtins/shopt.def - - progcomp_alias: uncomment, make available to users - -doc/{bash.1,bashref.texi},lib/readline/doc/rluser.texi - - progcomp_alias: document shopt option, describe its use in - the section on programmable completion - -trap.c - - decode_signal: handle SIGRTMIN+n at runtime, with the `SIG' prefix - or without, case-insensitively if requested, and return SIGRTMIN+n. - These values could be different than what was available at compile - time. Report and patch from Rasmus Villemoes - - 10/8 - ---- -execute_cmd.c - - execute_command_internal: only set line_number from command->value.Subshell - if the type == cm_subshell; otherwise defer and set later - - 10/10 - ----- -examples/loadables/seq.c - - seq: new loadable builtin, derived originally from coreutils:seq.c - but with very little of that code remaining - - 10/12 - ----- -trap.c - - run_pending_traps,_run_trap_internal: honor evalnest_max and - increment/decrement evalnest accordingly, since trap actions - are processed as if run by `eval'. Feature suggsted by Mike - Gerwitz - - 10/16 - ----- -expr.c - - expr_skipsubscript: new function, calls skipsubscript with flags - similar to arrayfunc.c:valid_array_subscript if assoc_expand_once - is set and it looks like we've already expanded the subscript of - an associative array. Reported back on 8/27 by Grisha Levit - - - readtok: call expr_skipsubscript instead of skipsubscript - -arrayfunc.c - - valid_array_reference: call skipsubscript with a third arg computed - from the VA_NOEXPAND flag only if we're expanding an associative - array subscript -- we already figure out whether or not we are - -[bumped release status to beta2] - - 10/20 - ----- -builtins/setattr.def - - set_or_show_attributes: after isolating NAME, make sure to restore - the "[+]=" in case we need the word later. Issue pointed out by - Grisha Levit - - 10/21 - ----- -lib/readline/search.c - - noninc_search_from_pos: if we are supposed to be searching for a - pattern (vi mode), make sure to pass S to _hs_history_patsearch, - since that has any leading `^' stripped - -lib/readline/histsearch.c - - _hs_history_patsearch: if the search isn't anchored, put a `*' at - the beginning to force fnmatch to match anywhere in the line (could - look at this later to make a change to history_search_internal that - would avoid the need to add the leading `*') - -subst.c - - parameter_brace_expand_rhs: treat a failure to assign a variable with - a ${param:=value} expansion as an expansion error, and, in a non- - interactive posix-mode shell, exit the shell - - param_expand: don't set W_SPLITSPACE for $* unless IFS is NULL; - consistent with other uses of W_SPLITSPACE - - 10/22 - ----- -doc/{bash.1,bashref.texi} - - tweak description of bash conditional expressions to note that the - test and [ commands determine their behavior based on the number of - arguments. Suggested by Ilkka Virta - - 10/24 - ----- -execute_cmd.c - - execute_simple_command: don't set $_ to NULL when executing a - command that forks; just leave it unchanged. Tweaked the documentation - slightly as a result. Inspired by report from Ricky Tigg - - - 10/28 - ----- -redir.c - - here_document_to_fd: make sure the temp files used to store here - documents are readable (and writable, where necessary) by the user. - This can happen in the unlikely case that someone decides to shoot - himself in the foot by setting the umask to 400. Issue originally - raised back in March by Stephane Chazelas - ; fix inspired by Martijn Dekker - - - 10/29 - ----- -lib/readline/terminal.c - - bind_termcap_arrow_keys: bind the "kI" capability (what the Insert - keypad key outputs) to overwrite mode. Patch from Xose Vazquez Perez - - - 10/30 - ----- -braces.c - - mkseq: make sure to terminate result array before passing it to - strvec_dispose on an interrupt. Report and fix from Corbin Souffrant - - - 11/6 - ---- -trap.c - - _run_trap_internal: if the signal shows up as SIG_CHANGED after - running the trap handler, check for terminating signals and run any - terminating signal handler indicates. Fixes issue reported by - Owen Stephens - - 11/7 - ---- -execute_cmd.c - - execute_builtin: don't merge the temporary environment when the - `return' builtin is being executed if it's being executed by the - `command' builtin, since that's supposed to inhibit the special - builtin properties. Part of POSIX conformance problems reported - by Martin Rehak - -builtins/cd.def - - bindpwd: if canonicalization fails when -P is specified (e.g. if the - directory name length exceeds PATH_MAX), reset dirname ($PWD value) = - to the_current_working_directory (Posix cd description, step 10.) - Part of POSIX conformance problems reported by Martin Rehak - - -builtins/kill.def - - kill_builtin: support -sSIG and -nSIG without requiring them to be - separate arguments. POSIX says a "conforming implementation" should - accept them. - Part of POSIX conformance problems reported by Martin Rehak - - - 11/8 - ---- -arrayfunc.c - - array_value_internal: return NULL for invisible array variables. - Fixes issue with FUNCNAME sometimes returning invalid value reported - by Great Big Dot - -builtins/cd.def - - change_to_directory: if we are in posix mode, and the chdir to the - absolute pathname ($PWD/dirname) fails, return an error without - trying to use just `dirname' (posix cd step 10). - Part of POSIX conformance problems reported by Martin Rehak - - -execute_cmd.c - - execute_case_command: use expand_word_leave_quoted to expand the - word, then dequote the resulting string. This performs the - expansions in the order posix specifies. - Part of POSIX conformance problems reported by Martin Rehak - - -subst.c - - expand_word_unsplit: rewrite in terms of expand_word_leave_quoted - - ifs_whitespace: new macro, Posix ifs whitespace (ISSPACE; member - of current locale's space char class) - - ifs_whitesep: new macro, whitespace that is a member of $IFS; used - by list_string and get_word_from_string - - list_string: use ifs_whitesep instead of spctabnl in case $IFS - contains whitespace characters that are not space, tab, or newline - - get_word_from_string: use ifs_whitesep instead of spctabnl in case - $IFS contains whitespace characters that are not space, tab, or - newline. - Part of POSIX conformance problems reported by Martin Rehak - - - 11/9 - ---- -general.c - - posix_initialize: enable the shift_verbose option when turning on - posix mode, and disable it when posix mode is disabled. From a - report by Eric Blake - -doc/bashref.texi - - posix mode: note the effect of posix mode on shift_verbose - - 11/12 - ----- -subst.c - - parameter_brace_expand: if parameter_brace_expand_word returns an - error, make sure to set TEMP = 0 (to note that the variable is unset). - From a report by Grisha Levit - - param_expand: if expanding $! when set -u is enabled, honor the - PF_IGNUNBOUND flag and just return NULL, relying on the caller to - take care of understanding that the variable is unset - From a report by Grisha Levit - - parameter_brace_expand: if we are checking nullness, and we have a - valid array expansion, a quoted null string resulting from the array - expansion of a * or @ subscript satisfies the nullness check. - From a report by Grisha Levit - - 11/14 - ----- -aclocal.m4 - - BASH_CHECK_LIB_TERMCAP: add last-ditch check for libncursesw, since - it's apparently the only curses library on some distributions. - Report from John Frankish - - 11/16 - ----- -bashline.c - - attempt_shell_completion: allow an initial word completion to - complete a partial first word (point appears in the middle of - the word) before resorting to command completion. Report and fix - from Luca Boccassi - -[bash-5.0-beta2 frozen] - - 11/27 - ----- -bashline.c - - attempt_shell_completion: better fix for problems with fix from - 11/16. Report and fix from Tom Ryder - -expr.c - - expr_skipsubscript: fix return type. Report and fix from - Andreas Schwab - - 11/29 - ----- -subst.c - - quote_escapes_internal: refactored quote_escapes into a function - that takes an additional flag saying whether or not we are going - to split the result. If we are not, and CTLESC is in IFS, we quote - the CTLESC (ditto for CTLNUL) to prevent it being removed when the - string is dequoted. - - quote_escapes: call quote_escapes_internal with FLAGS == 0 - - quote_rhs: new function, calls quote_escapes with FLAGS == PF_NOSPLIT2 - so that a CTLESC will be quoted if CTLESC is in $IFS - - parameter_brace_expand_word: call quote_rhs on the value of a variable - if PFLAGS includes PF_ASSIGNRHS, indicating that we will not be - splitting the word, but we will be dequoting it. Fixes bug reported - by Martijn Dekker - - param_expand: same change as for parameter_brace_expand_word - -execute_cmd.c - - execute_in_subshell: if we are running a trap (running_trap > 0), - turn off the SIG_INPROGRESS and SIG_CHANGED flags for that signal - by calling run_trap_cleanup and reset running_trap to 0 (watch the - second part!). Tagged for bash-5.1. - - 11/30 - ----- -lib/readline/doc/rltech.texi - - rl_set_keymap_name: correct typo in the name; some updates to the - description that clarify usage. Report from - - 12/4 - ---- -aclocal.m4 - - BASH_FUNC_FNMATCH_EQUIV_FALLBACK: a test of whether fnmatch(3) - understands bracket equivalence classes ([=c=]) for characters - that collate with equal weights but are not identical - -configure.ac,config.h.in - - call BASH_FUNC_FNMATCH_EQUIV_FALLBACK and define - FNMATCH_EQUIV_FALLBACK to 1 if it can be used for equivalence - classes - - 12/5 - ---- -execute_cmd.c - - eval_arith_for_expr,execute_arith_command,execute_cond_command: make - sure running_trap == 0 before we reset the_printed_command_except_trap - Report from Peng Yu - -lib/glob/smatch.c - - _fnmatch_fallback_wc: new function, takes two wide characters c1 and - c2, converts them to a pattern ([[=c2=]]) and a string (c1) for - fnmatch to determine whether or not they are members of the same - equivalence class - - collequiv_wc: call _fnmatch_fallback_wc if rangecmp_wc returns - non-zero if FNMATCH_EQUIV_FALLBACK is defined, so we know that - fnmatch understands equivalence classes. Another Posix test suite - issue from Martin Rehak - - 12/6 - ---- -redir.c - - add missing cases to switch statements to shut up gcc +[bash-5.1 released] 12/7 ---- -builtins/set.def - - find_minus_o_option: new helper function, returns index into - o_options given option name - - minus_o_option_value,set_minus_o_option: use find_minus_o_option - -general.c - - new table of variables (currently all shopt options) that are - modified by going into and out of posix mode; num_posix_options() - returns the number of variables - - get_posix_options: fill in a bitmap passed as an argument (or return - a new one) of values of posix-mode-modified variables in the table - - set_posix_options: set values of posix-mode-modified variables from - the table using the passed bitmap for values - -builtins/set.def - - get_current_options: make the bitmap large enough to hold the options - in the set table and the table of posix-mode-modified variables; call - get_posix_options to fill in those values after the values from the - o_options table - - set_current_options: call set_posix_options to reset the values of - the posix-mode-modified variables at the end of the bitmap, after - the o_options values. Fixes issue reported by PJ Eby - - - 12/9 - ---- -parse.y - - select_command: add two additional productions to support select - commands without a word_list following the `in'. Fixes omission - reported by Martijn Dekker +Makefile.in + - bashline.o: add dependency on ${DEFDIR}/builtext.h. Report from + Fazal Majid 12/11 ----- -variables.c - - assign_in_env: don't allow namerefs in temporary environment - assignments to create variables with invalid names for export. Fixes - bug reported by Grisha Levit - - 12/14 - ----- -parse.y - - don't change last_command_exit_value in the 'error yacc_EOF' production - if the parser sets it to something non-zero; just make sure it - indicates an error. Fixes problem with unexpected EOF in eval - reported by Martijn Dekker +builtins/wait.def + - wait_builtin: don't assign the variable given with -p if there are no + jobs to wait for. Report and fix from OÄuz - 12/17 - ----- -expr.c - - exp2 -> expmuldiv +arrayfunc.c + - kvpair_assignment_p: return non-zero if argument L appears to be a + key-value pair associative array compound assignment + - expand_and_quote_kvpair_word: run a single word in a key-value pair + associative array compound assignment through the appropriate + expansions and single-quote the result -lib/sh/smatch.c - - fnmatch: add extern declaration if FNMATCH_EQUIV_FALLBACK is being - used +arrayfunc.h + - kvpair_assignment_p, expand_and_quote_kvpair_word: extern declarations -hashlib.c - - hash_string: add FNV offset as initial value for hash instead of - starting at 0, changes hash for associative arrays and requires a - bunch of changes to the "right" test suite files +subst.c + - expand_oneword: detect whether VALUE appears to be a key-value + pair compound assignment and call the appropriate function to expand + each word in the resulting list. Fixes inconsistency reported by + oguzismailuysal@gmail.com -variables.c - - rseed: make it explicitly 32 bits; that's all we're interested in - anyway + 12/12 + ----- +subst.c + - command_substitute: don't reset pipeline_pgrp to shell_pgrp if we + are already forked to run a command (SUBSHELL_FORK). Fixes SIGINT + in command substitution in here-document in forked child issue + reported by oguzismailuysal@gmail.com 12/18 ----- - -variables.c - - brand: add some comments, make the constants explicitly 32 bits; - use signed 32-bit values for the intermediate calculations. The - algorithm is still minstd - -[bash-5.0-rc1 frozen] +execute_cmd.c + - execute_pipeline: execute the lastpipe code even if prev == 0. It + can only be 0 here if stdin was closed when this function was + executed + - execute_pipeline: if prev == 0, set lstdin to a sentinel (-1) that + means to close fd 0 after executing the command, and call close(prev) + before restoring stdin. restore_stdin now understands -1, and closes + fd 0. Fixes issue reported by Tomas Janousek 12/21 ----- -doc/bash.1 - - }1: remove macro definition; it's outlived its bugfix purpose. - Report from Derek Schrock - - 12/22 - ----- -subst.c - - expand_arith_string: set W_NOTILDE in the flags so we don't perform - tilde expansion at all, even for the previously-special-case array - subscript expansion. Report from Bize Ma - - expand_word_internal: take out Q_ARRAYSUB check for tilde expansion +doc/bashref.texi + - PROMPT_COMMANDS: clean up a couple of remaining instances of this + name. Report from Eli Schwartz 12/26 ----- -builtins/evalstring.c - - parse_and_execute: if the eval builtin gets a parser error while - parsing a string in posix mode, don't exit the shell if the eval - was run by the command builtin. report from Martijn Dekker - - -examples/loadables/{basename,dirname}.c - - dirname_builtin: skip over any `--' ending the options. Report from - Peng Yu +subst.c + - command_substitute: make sure that the child process always has + pipeline_pgrp == shell_pgrp: if pipeline_pgrp is non-zero when we + get to the child, meaning that we're part of an already-forked + child that is, for instance, running redirections, we need to reset + shell_pgrp to it to preserve the invariant. Fixes bug with terminal + being set to the incorrect pgrp reported by oguzismailuysal@gmail.com - 12/27 + 12/29 ----- -examples/loadables/mkdir.c - - make_path: add argument noting whether or not the user specified -m; - only attempt the chmod on an existing directory if the user did so - - make_path: when creating intermediate directories, perform the - mkdir (path, 0) and chmod separately as the posix text recommends +configure.ac,builtins/shobj-conf,m4/threadlib.m4 + - midnightbsd: update auto-configuration to treat MidnightBSD like + FreeBSD. From https://savannah.gnu.org/patch/?10006 - 12/28 + 12/30 ----- -parser.h - - PST_COMMENT: new state, set when the shell is reading characters - until newline as part of comment processing +examples/loadables/stat.c + - stattime: use strftime with a default format or the format supplied + with the -F option to format the file time information + - stat_builtin: now takes a -F fmt option for a strftime format string; + change to function calling sequences to pass the format down to + stattime -parse.y - - shell_getc: don't return a space at the end of a token if the parser - is consuming a comment. Fixes bug reported by Harald van Dijk - +examples/loadables/Makefile.in + - stat: now built and installed by default 12/31 ----- -lib/glob/glob_loop.c - - INTERNAL_GLOB_PATTERN_P: revert change from 4/27 that makes this - function return non-zero for a backslash in the string. Based on a - report from Tom Ryder - -[bash-5.0 frozen] - -[bash-5.0 released] - - 1/6/2019 - -------- - -examples/loadables/basename.c - - make sure to include bashgetopt.h. Reported by Angel - +command.h + - SUBSHELL_IGNTRAP: new flag value -lib/malloc/malloc.c - - stdlib.h: include if botch isn't defined to provide a declaration - for abort() +jobs.c + - make_child: set SUBSHELL_IGNTRAP in subshell_environment in the + child process, meaning that we should not execute trap handlers for + trapped signals -hashlib.c,Makefile.in - - fixes to make hash library testing work for others from - Eduardo Bustamante +execute_cmd.c + - execute_in_subshell, execute_simple_command, execute_disk_command: + make sure to unset SUBSHELL_IGNTRAP after a child process restores + the original signal dispositions + - execute_simple_command: make sure to set SUBSHELL_IGNTRAP after + make_child returns and we're setting subshell_environment directly -lib/readline/unicode.c - - u32toutf16: correct the second argument to be wchar_t *, and treat - it as such, even though it doesn't make a difference in practice. - Report and fix from Eduardo Bustamante +subst.c + - command_substitute,process_substitute: unset SUBSHELL_IGNTRAP after + the child process has reset the trapped signal dispositions - 1/8 - --- +trap.c + - trap_handler: if we get a signal for which we have set a trap, but + SUBSHELL_IGNTRAP is set in subshell_environmnent, make sure we + restore the original signal disposition and resend the signal to + ourselves. Fixes issue reported by Nikolay Borisov + (or at least makes the race window much smaller) -builtins/return.def - - return_builtin: return EX_USAGE if we're not executing a shell - function or sourcing a script, so a posix-mode shell exits. Fixes - bug reported by Robert Hailey +sig.c + - initialize_terminating_signal: set the original signal handler from + the return value from sigaction; a minor optimization that saves a + system call or two + 1/5/2021 + -------- builtins/declare.def - - declare_internal: don't let `declare -f +f' turn off the function - attribute. Fix from Grisha Levit - - declare_internal: reject attempts to add the -A or -a attributes - to functions. Report from Grisha Levit + - declare_internal: make some option combinations that don't make + sense errors (e.g., -f and -a/-A/-i/-n) + - declare_internal: if we build a new variable name by expanding the + value of a nameref variable, make sure to chop the `+' in a `+=' + off before going on - 1/9 + 1/7 --- -bashline.c - - completion_glob_pattern: new function, returns true if the passed - string contains a glob pattern that should be process by the glob - completion code. Completion glob patterns don't pay attention to - backslashes unless they're the last character in the string. This - is a different, more self-contained, fix for the problem reported - by Tom Ryder - -lib/glob/glob_loop.c - - INTERNAL_GLOB_PATTERN_P: restore change from 4/27 and make this - function return non-zero if it encounters a backslash in the string. - It needs to match pathexp.c:unquoted_glob_pattern_p(). Adds fix - back for issue reported by axel@freakout.de - -test.c - - arithcomp: when calling evalexp, make sure to call it with the - EXP_EXPANDED flag, since all arguments here have been evaluated - already - -arrayfunc.c - - array_expand_index: call evalexp with EXP_EXPANDED flag, since we - have run the string through expand_arith_string already - - 1/11 - ---- -parser.h - - PST_ENDALIAS: new state, means we just consumed the last character - of an alias expansion and returned the fake space - -parse.y - - shell_getc: add PST_ENDALIAS to parser_state before returning the - fake space that marks the end of the alias, making sure to do it - only once. With that set, fall through to the pop_string(), making - sure to unset PST_ENDALIAS. Fixes alias bug reported by - Ante Peric +doc/{bash.1,bashref.texi} + - bind: add an example to the synopsis making it clear that you can + use any readline command line as a non-option argument, as it says + in the text. From a report from Dan Jacobson 1/12 ---- -lib/glob/glob.c - - {extglob,wextglob}_skipname: make sure we check the rest of the - pattern if the extglob pattern is null, and therefore won't match - anything. If that is followed by a `.', quoted or unquoted, we can - match a leading `.' in the pathname. This code is currently not - active. +locale.c + - local_shiftstates -> locale_shiftsates in the non-multibyte code + branch. Reported by Henry Bent -builtins/hash.def - - hash_builtin: if -d is supplied without an argument, print an error - message and return failure, just like -t without an argument. Fixes - inconsistency reported by Dan Jacobson +subst.c + - expand_compound_assignment_word: make sure to call dispose_words on + the WORD_LIST * returned from expand_oneword after turning it back + into a string. Fixes memory leak reported by Alexander Mescheryakov + 1/13 ---- -parse.y - - shell_getc: use shellblank when testing the last character of an - alias to determine whether or not to add a trailing space instead - of testing against a space only. These are the non-shell-metacharacters - that can delimit words. Used together with PST_ENDALIAS - - 1/17 - ---- -parse.y - - shell_getc: keep track of whether the last character read from - shell_input_line is an unquoted backslash and don't add a space to - the end of an alias if the alias value ends in an unquoted backslash. - From an austin-group mailing list discussion message from - Harald van Dijk - - 1/20 - ---- -general.c - - check_identifier: make sure CHECK_WORD is non-zero before we check - whether or not the word consists of all digits. This allows function - names to consist solely of digits when not in posix mode. From a - report by Andrey Butirsky - - 1/22 - ---- -bashline.c - - initialize_readline: only unbind ^E in vi_movement_keymap if it's - still bound to the default rl_emacs_editing_mode. Fixes bug - reported by Greg Bell - - 1/23 - ---- -builtins/shopt.def - - we need the extern declaration for syslog_history if SYSLOG_HISTORY - is defined, since it's used even if SYSLOG_SHOPT is not defined. - From a Gentoo Linux bug report, eventually reported to bug-bash by - Tomas Mozes - - 1/25 - ---- -command.h - - CMD_TRY_OPTIMIZING: new command flag, means this (simple) command is - a candidate for fork optimization (suppression) - -builtins/evalstring.c - - can_optimize_connection: new function, takes an AND_OR list (&& or - ||) from parse_and_execute, makes sure it's the last in a possibly - multi-command list, and returns non-zero if it's a simple command, - indicating that it's a candidate for fork optimization. - - parse_and_execute: if we have a cm_connection command, call - can_optimize_connection to determine if it's a suitable candidate - and set CMD_TRY_OPTIMIZING if that returns non-zero - - optimize_fork: don't bother unless the rhs of the && or || command - has the CMD_TRY_OPTIMIZING flag set. These fix the bug reported by - Brad Spencer - -execute_cmd.c - - execute_connection: case AND_AND and OR_OR: call optimize_fork on - the right side of the command before executing `second'. This will - safely restore the fork optimization we removed from - parse_and_execute() - -builtins/complete.def - - build_actions: make sure the function name argument to -F is a - valid shell function name: it doesn't contain any invalid posix- - mode characters and doesn't contain any shell break characters that - would need to be quoted when defining a function. Fixes issue - reported by Great Big Dot - - 1/28 - ---- variables.c - - dispose_temporary_env: make sure to save temporary_env to a temp - pointer and set temporary_env to NULL before trying to dispose it, - so no flush function ever tries to add a temporary variable back - into the table (e.g., bind_variable()) + - bind_variable_internal: when performing an assignment to a subscripted + array variable that was the value of a nameref (used in the original + assignment), don't call make_variable_value on the value, since that + messes up +=. Just call assign_array_element and let that take care + of calling make_variable_value appropriately. Fixes bug reported by + Oguz - 1/29 + 1/14 ---- -builtins/evalstring.c - - can_optimize_connection,optimize_fork: add the last command in lists - separated by `;' to the list of candidates for fork optimization +findcmd.c + - search_for_command: if `checkhash' is set, don't add non-executable + files to the command hash table, since we will just remove them + later - 1/30 - ---- -examples/loadables/strftime.c - - strftime_builtin: try to extend the buffer longer than tbsize*3, - which is a minimum of 24 characters, in case some of the formats - (e.g., %c) expand to something longer than that. Fixes bug - reported by Stan Marsh +lib/sh/winsize.c + - get_new_window_size: set *rp and *cp even if READLINE is not defined - 1/31 + 1/15 ---- -lib/readline/undo.c - - rl_do_undo: before inserting text while undoing UNDO_DELETE, or - performing a deletion while undoing UNDO_INSERT, make sure that - rl_point is valid by calling _rl_fix_point. Fuzzing bug and fix - from Eduardo Bustamante - -lib/readline/search.c - - _rl_nsearch_abort: validate new values for rl_point and rl_mark by - calling _rl_fix_point(). Fuzzing bug and fix from - Eduardo Bustamante - -subst.c - - string_extract_double_quoted: if we parse a syntactically-incorrect - $( expression while extracting a double-quoted string, si will - appear to go `backward'. Just skip over the rest of the string and - continue. Fuzzing bug from Eduardo Bustamante - -lib/readline/text.c - - rl_change_case: if towupper or towlower returns a valid wide char - that can't be converted back to a valid multibyte character, use - the original character and go on. Fuzzing bug from - Eduardo Bustamante - -lib/glob/glob.c - - wdequote_pathname: if there are no multibyte characters in pathname, - just call udequote_pathname and don't bother converting it to wide - characters - - glob_pattern_p: if there are no multibyte characters in the pattern, - just call internal_glob_pattern_p right away - -lib/glob/glob_loop.c - - INTERNAL_GLOB_PATTERN_P: return 2 if we see only backslash-quoted - characters without any other unquoted glob pattern characters, so - interested callers can shortcut and just dequote the pathname - -pathexp.c - - unquoted_glob_pattern_p: return 2 if we see only backslash-quoted - characters without any other unquoted glob pattern characters, - consistent with the glob library - - unquoted_glob_pattern_p: don't count a backslash quoting a slash as - a backslash that will trigger a call to shell_glob_filename, since - backslashes at the end of patterns (pathname components) will always - fail to match. XXX - this is provisional - -lib/glob/glob.c - - glob_filename: if we have a directory name that has no unquoted - special glob chars, but has backslashes, just dequote it and return - it without going through the rest of the glob expansions. Partial - fix for issue with unreadable directories reported by - Andrew Church - - 2/2 - --- -lib/readline/readline.c - - readline_internal_teardown: if revert-all-at-newline is set, make - sure that the history position is at the end of the history before - calling _rl_revert_all_lines(). Fixes bug reported by - johnlinp@gmail.com and frederik@ofb.net - - 2/4 - --- -builtins/complete.def - - complete_builtin: fix check for argument to -F to use strpbrk - instead of incomplete use of strcspn. Fix from Grisha Levit - +lib/sh/winsize.c + - get_new_window_size: call rl_set_window_size only if we can determine + we're using readline: an interactive shell without no-line-editing, + or if we've already initialized readline, presumably in a non- + interactive shell - 2/5 - --- -lib/readline/readline.c - - rl_parse_and_bind: change parsing of boolean variable values to - look for and consume an optional whitespace-delimited word. This - allows trailing spaces and everything that follows to work. Idea - from Bize Ma - - rl_parse_and_bind: print error message about unknown variable names - instead of calling rl_variable_bind to do it - - rl_variable_bind: report error if setting string variable returns - non-zero - - 2/6 - --- -lib/readline/histfile.c - - read_history_range: close FILE before returning if the history file - size is 0 +support/Makefile.in + - man2html: add LDFLAGS_FOR_BUILD to the recipe. Report from + Jeffrey Walton - 2/11 + 1/17 ---- -bashline.c - - edit_and_execute_command: add the current line buffer to the history - list even if it's empty and rely on other code in bash_add_history - to take care to not add multiple semicolons with multiple blank - lines and command_oriented_history. Live with the blank lines as - history entries for now. Fixes problem reported by - Johannes Hielscher - lib/readline/misc.c - - _rl_revert_all_lines: renamed to _rl_revert_previous_lines, since - that is basically what it does - - _rl_revert_all_lines: now just makes sure the history offset is at - the end of the history and calls _rl_revert_previous_lines. Inspired - by a suggestion from johnlinp@gmail.com + - rl_operate_and_get_next: fix old K&R function declaration. Report + from Tom Tromey lib/readline/readline.c - - readline_internal_teardown: revert change of 2/2, moved that code - into the (new) _rl_revert_all_lines - -lib/readline/rlprivate.h - - _rl_revert_previous_lines: new extern declaration - -builtins/bind.def - - bind_builtin: make sure the unwind-protect gets run when the --help - option is used, so use `case GETOPT_HELP:' instead of `CASE_HELPOPT;'. - Report and fix from Koichi Murase - - 2/12 - ---- -lib/readline/util.c - - _rl_abort_internal: don't just turn off the MACRODEF state, call - _rl_kill_kbd_macro to delete any traces of an in-progress macro - definition before turning it off. Fixes fuzzing bug. - - 2/13 - ---- -examples/loadables/Makefile.in - - CCFLAGS: add $(CPPFLAGS) to value, based on a report from - Christian Weisgerber - - 2/15 - ---- -bashline.c - - posix_readline_initialize: keep track of the vi insertion keymap - binding for TAB, since we change it in this function. Save the - old binding before we change it when turning posix mode on, and - restore that old binding when turning posix mode off, as long as - the current binding is still rl_insert. Suggested by a report from - Koichi Murase - - 2/17 - ---- -builtins/exec.def - - exec_builtin: save value of job_control; use it to restore the value - of job_control if an exec fails in an interactive shell instead of - enabling it by default in an interactive shell. Report from - Grisha Levit + - _rl_internal_char_cleanup: move code that cleans up the active region + and deactivates the mark inside this function so callback mode + applications get the intended functionality. Report and fix from + sparrowhawk996@gmail.com lib/readline/bind.c - - _rl_function_of_keyseq_internal: make sure to use checks against LEN - instead of a NULL character in KEYSEQ to determine the length of the - key sequence. - Report and fix from Koichi Murase - - rl_bind_key: make sure the KEY argument is not larger than the - largest unsigned character. - Report and fix from Koichi Murase - - rl_translate_keyseq: make sure that M-x correctly adds "\ex" to the - key sequence array when convert-meta is set. - Report and fix from Koichi Murase - - rl_translate_keyseq: now unconditionally converts meta characters to - ESC-prefixed key sequences when processing \0nnn \Xnnn and \[char] - escape sequences that resolve to meta characters and for `normal' - characters that have the meta bit set - Report and fix from Koichi Murase - -jobs.c - - end_job_control: if the terminal pgrp (terminal_pgrp) is not the same - as the original pgrp (original_pgrp), set the terminal's pgrp to the - original pgrp so when we reset the shell's pgrp to original_pgrp, - we'll continue to be able to read from the terminal if the shell is - interactive. Fixes bug with turning off job control before starting - an interactive shell reported by Grisha Levit - + - rl_parse_and_bind: when using the arithmetic comparison operators on + the version, make sure to invert the tests so that we stop parsing + if the test fails. Report and fix from Tom Tromey - 2/19 + 1/19 ---- +Makefile.in + - pipesize.h: add dependency on ${BUILTINS_LIBRARY} to avoid parallel + makes trying to create it twice. Report and fix from + Richard Purdie -jobs.c - - end_job_control: if the setpgid(0, ...) succeeds, reset the value of - shell_pgrp. Fixes pgrp mismatch after failed exec in an interactive - login shell reported by Grisha Levit - - 2/20 + 1/21 ---- -bashhist.c - - pre_process_line: save history_length before calling history_expand, - and after possibly decrementing history_length, just restore the old - value instead of incrementing it. Fixes bug reported by - Michael Albinus - - bash_add_history: don't bother calling really_add_history if the - history is stifled and the max number of entries is 0 - -aclocal.m4,configure.ac,m4/*.m4 - - replace the old set of gettext m4 macros with the latest m4 files - from the gnulib and gettext distributions +subst.c + - param_expand: if a nameref expands to array[@] or array[*], make sure + to call chk_atstar so the right variables are set to split the + result. Report from Oguz - 2/21 + 1/22 ---- -builtins/cd.def - - bindpwd: initialize canon_failed to 0 to prevent `cd -e' from always - failing +builtins/declare.def + - Rewrote to reduce complexity. Still needs some work. -command.h - - W_EXPANDRHS: new flag, set when expanding WORD in ${paramOPword} +lib/readline/*.h, lib/tilde/tilde.h + - PARAMS: remove, rely on compilers understanding function prototypes -subst.c - - expand_string_for_rhs: set W_EXPANDRHS in word to be expanded +lib/readline/{undo.c,histlib.h} + - _hs_replace_history_data: move extern declaration to histlib.h -subst.c - - expand_word_internal: when encountering a single or double quoted - string that expands to nothing, add a CTLNUL if the W_EXPANDRHS - flag is set and the word isn't quoted, indicating that the word - will eventually be split and we need to preserve the null to - produce an empty word. From a discussion on bug-bash started by - sunnycemetery@gmail.com +lib/readline/readline.c + - _rl_parse_colors: instead of an extern declaration for this, include + "parse-colors.h" for it - 2/22 - ---- -bashline.c - - completion_glob_pattern: make sure to skip over a character quoted - by a backslash. Fixes bug reported by John Van Sickle - +lib/readline/{histfile.c,histlib.h} + - _hs_append_history_line: move extern declaration to histlib.h - 2/23 - ---- -lib/readline/complete.c - - last_completion_failed: keep track of whether the last completion - attempt generated any matches - - rl_complete: if the last readline command was completion, but the - completion attempt didn't generate any matches, don't regenerate - and display the match list. Treat it as a new completion attempt. - Suggested by Richard Stallman +lib/readline/history.h + - HS_HISTORY_VERSION: define to 0x0801 (current library version) if + it's not already defined. We conditionally define it in case an + application has (unwisely) chosen to use it, since the history + library doesn't do anything with it yet -bashhist.c - - maybe_append_history: try to handle the case where the number of - history entries in the current shell session is greater than the - number of entries in the history list. Based on a report from - +lib/readine/{rlprivate.h,{search,misc,readline}.c} + - _rl_free_history_entry: add extern declaration to rlprivate.h, remove + extern declaration from c source files. Use HS_HISTORY_VERSION as a + sentinel that it's ok to use HIST_ENTRY in rlprivate.h - 2/25 +lib/readline/{rlprivate.h,{isearch,search,undo}.c} + - _rl_saved_line_for_history: add extern declaration to rlprivate.h, + remove extern declaration from c source files, using HS_HISTORY_VERSION + in the same way + + 1/24 ---- -aclocal.m4 - - BASH_FUNC_FNMATCH_EQUIV_FALLBACK: use en_US.UTF-8 instead of - de_DE.UTF-8; it's more likely to be installed +lib/readline/signals.c + - _rl_handle_signal: make sure that all sigprocmask calls are protected + by HAVE_POSIX_SIGNALS. Report and fix from Tom Tromey - 2/26 + 1/26 ---- -doc/{bash.1,bashref.texi} - - extdebug: make sure to note that setting this option in a startup - file causes an attempt to start the debugger. Noted by Linda - Walsh +lib/readline/callback.c + - rl_callback_read_char: make sure rl_linefunc is non-NULL before + calling through the pointer. The line function could have been + removed by the application before readline processes any typeahead + input. Bug reported by Matthias Klose , pointer + to root cause from Koichi Murase -builtins/fc.def - - fc_builtin: if we are not listing, and delete the last history entry, - make sure that histbeg or histend, whichever is greater, is clamped - at the value of last_hist to avoid dereferencing the just-removed - history index. Fixes bug reported by Chris King-Parra - +lib/glob/glob.c + - skipname,wskipname: put in some additional checks for `.' to ensure + that we don't get false positives (or incomplete tests) that can + affect the results of extglob patterns. Reported by + gregrwm - 2/27 + 1/27 ---- -shell.c - - init_interactive: assignment to histexp_flag should be protected by - #ifdef BANG_HISTORY. https://savannah.gnu.org/patch/?9759 - -subst.c - - list_string: if we have a non-null string, but quoted null character - removal leaves an empty string, set W_SAWQUOTEDNULL in the returned - word flags so the caller can deal with it - - parameter_brace_expand_rhs: deal with word with null or empty word - and W_SAWQUOTEDNULL in the flags coming back from expand_string_for_rhs - by turning it into a quoted null word and modifying the flags. Part - of fix for bug report from Grisha Levit - - expand_word_internal: if a double-quoted string comes back with a - quoted null as the expansion of "$@", note that we saw it, but still - add a quoted null into the result string instead of short-circuiting. - Part of fix for bug report from Grisha Levit +lib/glob/glob.c + - extglob_skipname,wextglob_skipname: fixed an off-by-one error (SE + was being set to one character before the end of the pattern string, + not the null character at the end of the pattern string like other + callers of glob_patscan) that caused the last character of the last + subpattern to be cut off when calling skipname + - extglob_skipname,wextglob_skipname: some cleanups so the code is + closer to identical for the single-byte and wide character versions - 3/1 + 2/1 --- -examples/loadables/fdflags.c - - O_CLOEXEC: instead of not using it, synthesize a definition for it - from unused bits in the file status word. It's only used as a - placeholder anyway. Fix from code by Robert Elz - execute_cmd.c - - execute_connection: call optimize_fork on the rhs of a `;' connection - to attempt to optimize the last simple command in a list - - 3/4 - --- -subst.c - - parameter_brace_expand: add `@' to the list of operators that cause - unbound parameter errors. Fixes oversight bug reported by - Martin Schulte + - execute_simple_command: in posix mode, if we have a variable + assignment error while assigning into the temporary environment (e.g., + assigning to a readonly variable), a non-interactive shell running a + special builtin exits; a non-interactive shell running anything else + jumps back to the top level. A shell compiled with -DSTRICT_POSIX + exits unconditionally. + - execute_simple_command: make sure posix mode sets $? to non-zero + if a variable assignment error occurs preceding a non-special builtin - 3/5 - --- subst.c - - expand_word_internal: update to fix from 2/21 and 2/27 to accommodate - contexts when word splitting will not take place (W_ASSIGNRHS). Fix - from Grisha Levit - - param_expand: if IFS is unset, and we are expanding $* in a context - where we're not going to be performing word splitting, just treat it - as if IFS=" " and don't set W_SPLITSPACE. Report and hint at fix - from Grisha Levit - - param_expand: if IFS is not null, and we are expanding $* in a - context where we're not going to be performing word splitting, and - we quote a null string (resulting in a quoted null), make sure we - set W_SAWQUOTEDNULL to note this for the caller - - parameter_brace_expand_rhs: make sure to remove any W_SAWQUOTEDNULL - flag for a the word on the rhs of the `=' operator if the original - string is null or the original string is not null and the returned - string (after dequoting) is not null. For instance ${v= ''} should - not have the SAWQUOTEDNULL flag set because it is " " after - expansion and dequoting, even though we saw a quoted null there - - 3/6 - --- -lib/sh/eaccess.c - - sh_eaccess: AIX needs the same kind of additional checks as FreeBSD - and Solaris when running as root and checking whether or not a file - is executable. Report and fix from REIX, Tony + - do_assignment_statements: take the code from expand_word_list_internal + that performs assignment statements, either standalone or preceding + simple command names, and factor it out into this function + - expand_word_list_internal: call do_assignment_statements where + appropriate - 3/7 + 2/2 --- -lib/glob/glob.h - - GX_RECURSE: new flag, indicates internal call to glob_filename - lib/glob/glob.c - - glob_filename: add GX_RECURSE to recursive call to glob_filename - - glob_filename: dequote a directory name (in the absence of a - filename) only if this is not a recursive call to glob_filename - ((flags & GX_RECURSE) == 0). Fixes bug reported by Dr. Werner Fink - - - 3/8 - --- -parse.y - - handle_eof_input_unit: before calling exit_builtin, set - last_shell_builtin and this_shell_builtin appropriately, since the - exit builtin uses them to determine whether or not to exit - immediately. Fixes bug reported by Tom Levy - -lib/sh/shquote.c - - sh_double_quote,sh_mkdoublequoted,sh_backslash_quote_for_double_quotes: - make sure to handle multibyte characters that may contain characters - that need to be quoted in double quotes; adding a spurious double - quote may turn them into different characters or uncover characters - that are special in double quotes. Fixes bug reported by - Stephane Chazelas - - sh_backslash_quote: don't call COPY_CHAR_P if we're in a UTF-8 - locale and the current character doesn't have its eighth bit set; - only check mb_cur_max and is_basic if we're not in a UTF-8 character - set - - 3/9 - --- -subst.c - - read_comsub: if it looks like we're starting a multibyte character, - read a whole multibyte character from buf and add it all at once, - so we don't quote each byte in a multibyte character sequence. Fixes - bug uncovered by shquote changes from 3/8 - - 3/11 - ---- -subst.c - - expand_word_internal: if we are in a context where word splitting - will not occur, but one where we need to make sure we eventually - expand "$@" to multiple words, add a space as quoted so we can still - split on the space separator in $@. Fixes bug reported by - Grisha Levit + - dequote_pathname: fix function definition for non-multibyte systems. + Report and fix from Marc Aurèle La France - 3/13 - ---- -subst.c - - parameter_brace_substring, parameter_brace_patsub: treat the case - where pflags includes PF_ASSIGNRHS the same as if IFS is null, since - word splitting will not take place +Makefile.in,doc/Makefile.in + - for certain targets, remove files before creating them to deal with + symlinked build trees. + Report and fix from Marc Aurèle La France -{subst,array,assoc}.c,subst.h - - string_list_pos_params: add a fourth argument: pflags; change all - callers to initially pass 0 as fourth arg +examples/loadables/accept.c + - include limits.h before typemax.h + Report and fix from Marc Aurèle La France - 3/14 - ---- -subst.c - - expand_word_internal: split words with W_ASSIGNRHS flag set specially. - These and subsequent changes fix expansion bugs reported by - Grisha Levit +builtins/gen-helpfiles.c + - if USING_BASH_MALLOC is defined, make sure to undefine malloc as well + as free. Fixes bug reported by George R Goffe -subst.c - - string_list_pos_params: if we are expanding `@', make sure we honor - PFLAGS including PF_ASSIGNRHS and use string_list_dollar_at to make - sure the positional parameters are separated by spaces - - string_list_pos_params: if we are expanding `*', make sure we honor - PFLAGS including PF_ASSIGNRHS and separate the positional parameters - with the first character of $IFS - - pos_params_pat_subst,pos_params_modcase: calculate appropriate value - for PFLAGS depending on match flags value, and pass right value to - string_list_pos_params (affects @, * expansion) - - pos_params: now takes PFLAGS as argument to pass to string_list_pos_params; - changed caller - -array.c - - array_pat_subst,array_modcase: calculate appropriate value for - PFLAGS depending on match flags value, and pass right value to - string_list_pos_params (affects @, * subscript expansion) +builtins/Makefile.in + - install-help: now depends on $(HELPFILES_TARGET) so we make sure the + separate helpfiles are created before we try to install them if we + don't go through the `all' makefile target -array.[ch] - - array_subrange: now takes additional PFLAGS argument to pass to - string_list_pos_params +configure.ac + - HELPDIR: now ${datadir}/bash/helpfiles -assoc.c - - assoc_pat_subst,assoc_modcase: calculate appropriate value for - PFLAGS depending on match flags value, and pass right value to - string_list_pos_params (affects @, * subscript expansion) - STILL NEED TO DO SUBRANGE + 2/3 + --- +parse.y + - parse_string_to_word_list: before expanding a compound assignment + statement body, make sure to save any alias that's currently being + expanded. Restore the alias after the compound assignment is parsed. + Reported back in 11/2020 by Alex fxmbsw7 Ratchev -subst.c - - parameter_brace_substring: add PFLAGS argument to array_subrange + 2/4 + --- +lib/readline/histexpand.c + - history_expand_internal: when calling the history_inhibit_expansion + function, make sure to call it using the string as we've expanded it + to that point (RESULT), adding the expansion and next characters + temporarily, since we make expansion decisions based on what we've + accumulated, not what we started with. This makes things like + echo abc!$!$ work, where before the second `!' inhibited expansion + because bash_history_inhibit_expansion mistakenly took it as the + second character in a `$!' word expansion. Fixes bug reported back + in 10/2020 by Paul Fox -arrayfunc.c - - array_keys: use string_list_pos_params instead of calling - string_list_dollar_{star,at} directly. +array.h + - array_pop: instead of calling array_dispose_element from this macro, + just call array_shift with the AS_DISPOSE flag -arrayfunc.[ch] - - array_keys: now takes a PFLAGS argument, passes to string_list_pos_params + 2/5 + --- +bashhist.c + - shell_comment: move condition to return 0 if the delimiter stack is + not empty or the shell is parsing a here document into the function + itself, don't have the callers check so the check is in one place. + Fixes bug reported by Oguz -subst.c - - parameter_brace_expand: add PFLAGS argument to call to array_keys +array.h,variables.c + - ARRAY_ELEMENT_REPLACE: convenience define for modifying an array + element's value -subst.c - - parameter_brace_expand_indir: now takes a PFLAGS argument and uses it - in the call to parameter_brace_expand_word - - parameter_brace_expand: add PFLAGS argument to call to - parameter_brace_expand_indir +variables.c + - pop_args: a couple of code simplifications - 3/15 - ---- -subst.c - - chk_atstar: now takes a PFLAGS parameter, changed callers. Will - eventually affect whether or not we saw $@ - - chk_atstar: if we see "$*" don't note that we saw $@ unless - expand_no_split_dollar_star is unset. This is what param_expand - does + 2/7 + --- +lib/malloc/malloc.c + - pagesz: at least MALLOC_PAGESIZE_MIN (4096) bytes + - union mhead: now 16-byte aligned on all systems, 32-bit and 64-bit + pointers + - binsizes: since the smallest allocation overhead is now 16 bytes, + redo the buckets so binsizes[0] == 32; adjust the thresholds for + split/coalesce/prepopulate/mmap (NBUCKETS = 28; STARTBUCK = 0). + Sizes stay pretty much the same; indices change + - consistently use MALLOC_SIZE_T instead of long/unsigned int/int + - use MAGIC8_NUMBYTES as the length of the mh_magic8 buffer, in case + it changes later for alignment + - internal_remap: new function, calls mremap to reallocate a chunk of + memory allocated using mmap(); called from internal_realloc if the + old size and new size are both bigger than the mmap threshold + - internal_realloc: call internal_remap if the old size and new size + are both above the threshold where we use mmap for allocation - 3/18 + 2/10 ---- -lib/readline/misc.c - - rl_get_previous_history: if we are trying to go back from the - beginning of the history, or if we are trying to go back before the - beginning of the history, call _rl_free_saved_history_line to just - get rid of the history line we saved instead of using - rl_maybe_unsave_line, which modifies the current line buffer. - Fixes bug reported by lessbug +include/timer.h + - new file, declaration for a timer struct to be used by a set of + functions to implement timers using SIGALRM or select/pselect - 3/20 - ---- -execute_cmd.c - - execute_command_internal: save and restore line_number around - user_subshell setting it to the line number saved in the command. - Fixes bug reported in https://bugzilla.novell.com/show_bug.cgi?id=1128936 +lib/sh/timers.c + - new file, set of functions to manipulate timer objects and timeouts + using SIGALRM or select/pselect. Inspired by a patch from + Koichi Murase . Not used yet - 3/21 + 2/11 ---- -lib/sh/strtrans.c - - ansicstr: handle multibyte characters that are not preceded by a - backslash so we skip over potential escapes in characters whose - multibyte representation contains a backslash. Fixes issue reported by - Stephane Chazelas +builtins/read.def + - read_builtin: if there is a timeout set, block SIGCHLD around calls + to zread and its siblings, or calls to readline for `read -e', so + SIGCHLD (and the consequent waitpid) doesn't interrupt the read. + Fixes bug reported by Koichi Murase , but + there may be a different fix coming -subst.c - - reap_some_procsubs: reap_procsubs, but parameterized to take the - max index to check -- general function for future use - - reap_procsubs: now just calls reap_some_procsubs with the right arg +Makefile.in,builtins/Makefile.in + - fix up dependencies, especially on builtins.h and builtext.h -execute_cmd.c - - execute_command_internal: if we are using /dev/fd for process - substitution, reap the procsubs at the end of this function (FIFOs - do it at the beginning -- look at this more closely). Only do it - for loops to avoid fd exhaustion. Fixes bug reported by - sunnycemetery@gmail.com - 3/22 + 2/12 ---- -lib/readline/{rlprivate.h,signals.c} - - _rl_interrupt_immediately: removed as no longer used - -redir.c - - heredoc_expand: new function, called for both here-documents and - here-strings, takes care of expanding the document and returns a - string - - write_here_document: use heredoc_expand, call write(2) once on the - entire document; structure is now very similar to write_here_string +lib/readline/input.c + - rl_read_key: if we set rl_done == 1, set RL_STATE_DONE as well + Reported by Koichi Murase - 3/23 - ---- -redir.c - - here_document_to_fd: expand the here document/here string first, - using heredoc_expand, then decide what to do; remove calls to - write_here_document/write_here_string in favor of calling - heredoc_write directly - - here_document_to_fd: if the expanded document is of zero length, - just open /dev/null right away and return it -- idea from yash - - here_document_to_fd: if the length of the expanded document is - between 1 and PIPESIZE (pipe capacity, computed by builtins/psize.aux - and stored in builtins/pipesize.h), try to use a pipe: write - the document to the write end and return the read end. Prompted by a - report from Daniel Kahn Gillmor +lib/readline/isearch.c + - _rl_search_getchar: only call _rl_read_mbstring if rl_read_key returns + >= 0, avoid some work -builtins/enable.def - - dyn_load_builtin: add warning if dynamic builtin with a load function - is loaded more than once, before running the load function a second - time. From a suggestion by Stan Marsh +lib/readline/vi_mode.c + - _rl_vi_callback_change_char,_rl_vi_change_char: don't overwrite the + last replacement string if _rl_vi_callback_getchar returns -1. + It will likely make no difference, since the next read will return + an error or EOF, but being careful + - rl_vi_overstrike: if _rl_overwrite_char doesn't return 0, break out + of the loop - 3/25 - ---- -jobs.[ch] - - wait_for_any_job: takes a new argument, a struct procstat * that - gets the PID of the exited job's process leader (the one that - contributes the status) and the same status we return from the - function +lib/readline/text.c + - _rl_overwrite_char: return 1 if _rl_read_mbstring returns < 0 so + we don't try to insert garbage -builtins/wait.def - - wait_builtin: pass a struct procstat * to wait_for_any_job to get - the pid of the job's process leader (and the same status the - function returns). We don't do anything with it yet +bashline.c + - posix_edit_macros: handle rl_read_key() returning <= 0 - 3/28 + 2/15 ---- -variable.c - - seedrand: add a couple more variables to the random seed +parse.y + - read_comsub: make sure to turn on the LEX_RESWDOK flag if we are in + a case statement and read a `)', since we can get a valid `esac'. + Fixes bug reported by Oguz + - read_comsub: if we're in a case statement, recognize `}' as a + reserved word and set the LEX_RESWDOK flag for the next word, since + we can get an esac (or another reserved word) after it -lib/sh/tmpfile.c - - sh_mktmpdir: new function, makes a temporary directory using - mkdtemp if it's available, and generates a filename using - sh_mktmpname (which uses mktemp, if available) and makes a - directory with it if not + 2/16 + ---- +parse.y + - reserved_word_acceptable: add ARITH_CMD and COND_END to the list of + tokens that can precede a reserved word, so you can use reserved + words after ((...)) and [[...]]. + Reported by Koichi Murase -config-{top,bot}.h - - set up to use mkdtemp if available + 2/17 + ---- +parse.y + - parse_comsub: use new LEX_CASEWD flag to track when we are reading + the WORD in `case WORD in' and turn on the LEX_RESWDOK flag when + that word ends. This allows $(case x in esac), which no one uses. + - parse_comsub: use LEX_PATLIST flag to track when we are reading a + case pattern list so `|' doesn't turn on the LES_RESWDOK flag + - parse_comsub: case_level: simple counter to count the number of esacs + we need to see before we're no longer in a case statement; analog of + esacs_needed_count from the lexer -externs.h - - sh_mktmpdir: extern declaration - - MT_TEMPFILE: new flag for the tempfile functions; means to use the - value in the NAMEROOT argument as a template for the mktemp/mkstemp/ - mkdtemp functions. Not used in mainline shell code + 2/19 + ---- +parse.y + - CHECK_FOR_RESERVED_WORD: don't return ESAC if we read `esac' after a + left paren in a case pattern list. From an austingroup-bugs discussion + about https://www.austingroupbugs.net/view.php?id=1454 + - parse_comsub: if we read a `(' while looking for a case pattern list + and LEX_CKESAC is set, we have a leading left paren in the pattern + list and should turn off LEX_CKESAC so (esac) doesn't prematurely + terminate the case command. From an austingroup-bugs discussion + about https://www.austingroupbugs.net/view.php?id=1454 -examples/loadables/mktemp.c - - mktemp: new loadable builtin, with BSD options and basic semantics + 2/26 + ---- +builtins/history.def + - history_builtin: when checking negative offsets to -d, which are + supposed to count back from the end of the history list, check the + range against 0 instead of history_base, because the calculation is + done against history_length, which is independent of history_base. + Report and fix from Christopher Gurnee - 3/29 + 2/28 ---- -builtins/common.c,builtins/printf.def - - builtin_bind_variable: moved bind_printf_variable to common.c from - printf.def, renamed to builtin_bind_variable, made global for other - builtins to use +doc/bashref.texi + - replaced a number of uses of @var with a mixture of @env and @dfn + to better match up with the texinfo standards -builtins/read.def - - bind_read_variable: now uses builtin_bind_variable +doc/{bash.1,bashref.texi} + - clarify some aspects of the coproc description, especially the + use of NAME and when it's optional - 4/4 + 3/1 --- -lib/readline/histfile.c - - history_rename: wrapper function for rename(2) to deal with the Win32 - refusal to rename over an existing file; changed callers. Bug and fix - from +subst.c + - read_comsub: fix off-by-one error in mbrtowc that causes a read one + character past the end of buf. Report and fix from + Platon Pronko in + https://savannah.gnu.org/patch/?10035 - 4/8 + 3/3 --- -builtins/trap.def - - display_traps,showtrap: take an additional int argument, that, if - non-zero, means to print a trap command for a signal whose disposition - is SIG_DFL - - trap_builtin: if the -p option is given, and posix mode is enabled, - pass the `show every signal' flag to display_traps so SIG_DFL signals - are displayed as `trap -- - '. From an austin-group - interpretation (1212) initiated by Robert Elz . - Tagged for bash-5.1 - - 4/9 +builtins/ulimit.def + - ulimit_builtin: Posix compatibility: if the last command specified + by an option does not have an option argument, but there is an + operand remaining after all the options are parsed, treat the + operand as an argument to that last command. From an austin-group + discussion and a Geoff Clare suggestion back in November, 2020. + Austin Group interpretation 1418 + +examples/shellmath + - a package of shell functions to perform floating-point math entirely + in bash. Contributed by Michael Wood . Available + at https://github.com/clarity20/shellmath + + 3/4 --- -jobs.c - - list_one_job: printing one job counts as notifying the user about - it, so add a call to cleanup_dead_jobs like in the other job display - functions. Fixes https://savannah.gnu.org/support/?109667 reported - by "Brian K. White" +support/shobj-conf + - darwin: take out the -arch-only option in SHOBJ_XLDFLAGS and + SHOBJ_ARCHFLAGS; no longer needed - 4/10 - ---- -redir.c - - HEREDOC_PIPESIZE: define to PIPESIZE if not defined, allow it to be - specified at build time; used in here_document_to_fd to determine - whether or not a pipe is used - - HEREDOC_PIPEMAX: allow build-time definition of the max heredoc size - that will be written to a pipe - - here_document_to_fd: if F_GETPIPE_SZ is defined (Linux), ensure that - the document is shorter than the possibly-dynamic max pipe size, - and fall back to the tempfile implementation if it is not - - HEREDOC_PARANOID: if this is defined to a non-zero value, - here_document_to_fd ensures that both file descriptors opened on - the temporary file refer to the same file +doc/{bash.1,bashref.texi} + - coprocesses: suggested changes from rms@gnu.org; recommend the + `coproc NAME { commands; }' form as the simplest and most flexible -lib/sh/zmapfd.c - - zmapfd: increased the default allocation sizes + 3/5 + --- +builtins/exec.def + - exec_builtin: set last_command_exit_value before calling exit_shell + so any exit trap gets the right value for $?. From Matthew Bauer + via https://savannah.gnu.org/patch/?10039 -lib/sh/zcatfd.c - - zcatfd: increased the default allocation sizes + 3/8 + --- +include/timer.h + - SHTIMER_ALRMSET: new flag, indicates that there is an active alarm + associated with this timer (falarm() was called) -input.c - - localbuf: increased the default buffer size for reads +lib/sh/timers.c + - shtimer_set: set the SHTIMER_ALRMSET flag after calling falarm + - shtimer_unset: don't call falarm(0,0) unless the SHTIMER_ALRMSET flag + is set - 4/11 - ---- -subst.c - - cond_expand_word: like expand_word_unsplit, we need to peform - quoted null character removal on both the LHS and RHS of the - operator, since we are not performing word splitting. Fixes bug - reported by Matt Whitlock in https://savannah.gnu.org/support/?109671 + 3/9 + --- +include/posixtime.h + - added some BSD convenience defines if they are not present - 4/12 - ---- -jobs.c - - wait_for_background_pids: don't bother with the loop that waits for - and reaps all children of the shell in the case that it's inherited - some children it doesn't care about. Report from Daniel Kahn Gillmor - +parse.y,shell.h + - {save,restore}_parser_state: save and restore shell_eof_token and + pushed_string_list; change callers (e.g., xparse_dolparen) so they + don't have to manage them - 4/14 + 3/10 ---- -subst.c - - command_substitute: add an unwind-protect to make sure the read end - of the pipe gets closed in the parent on a SIGINT that interrupts - the zread. Fixes fast SIGINT fd leak reported by Tycho Kirchner - - -bashhist.c - - history_number: if enable_history_list is set (`set -o history' has - been executed), return the current history number even if we're - not currently saving commands in the history list - (remember_on_history == 0). Prompted by report from Paul Wise - +builtins/common.h + - extern declarations for moving to timers (sh_timer) for read builtin + timeouts - 4/20 - ---- -doc/bash.1,lib/readline/doc/rluser.texi - - make it clear that the `bind' builtin can be used to set readline - keybindings and variables. Suggestion from Dan Jacobson - +quit.h + - CHECK_ALRM: remove, no longer used - 4/22 - ---- -lib/glob/glob.h - - GX_SYMLINK: new internal flag denoting we are processing a symlink to - a directory. If GX_GLOBSTAR is active, we should not `descend' into - that directory +trap.c + - check_signals: call check_read_timeout instead of CHECK_ALRM -lib/glob/glob.c - - glob_filename: if the directory portion of the pattern is `**' - (all_starstar), we have globbed all of the directories corresponding - to that pattern, and we encounter a name that is a symlink to a - directory, don't descend into it: if the filename portion is null, - return that name only; if the filename portion is non-null, skip over - it because we will pick it up when we process the `real' directory. - This is a better fix for the issue originally reported by - Murukesh Mohanan back in 4/2018 and - addresses the issue raised by Eli Schwartz - - glob_dir_to_array: slight optimization: if array[i] is the empty - string, don't bother to strcpy it or check the result for a directory - for GX_MARKDIRS support - - 4/23 - ---- bashline.c - - test_for_canon_directory: test a pathname for a directory, but - expand and canonicalize it first using bash_filename_stat_hook() - before calling stat(2) - - bash_progcomp_ignore_filenames: strip non-directories out of a match - list, but use the function above that canonicalizes the pathname to - expand the name before testing - - bash_directory_completion_matches: use bash_progcomp_ignore_filenames - to strip out non-directories so we get consistent results between - programmable completion and tab completion. Fixes bug reported by - Ville Skyttä + - bash_event_hook: use read_timeout instead of checking `sigalrm_seen'; + that no longer exists + - bash_event_hook: accommodate readline timing out (not used yet) +lib/sh/zread.c + - zread: call read_builtin_timeout() to check for a timeout before + calling a blocking read() + builtins/read.def - - read_builtin: allow read -e and read -u N to be used together, by - calling fdopen(fd) if fd != 0. Save and restore rl_instream. Fixes - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=927768 + - sigalrm,reset_timeout,check_read_timeout,read_builtin_timeout: new + and modified functions to use sh_timers for timeouts instead of + SIGALRM. Based on work contributed by Koichi Murase + + - read_builtin: use sh_timers for read timeouts (-t N) instead of + using SIGALRM + - edit_line: simulate receiving SIGALRM if readline times out (not + used yet) - 4/24 + 3/11 ---- -lib/readline/input.c - - rl_getc: if readline catches SIGTSTP, the calling application must - not have had it ignored. Run the signal handler and set the signal - hook in case the application wants to handle it. Report from - Robert Elz +lib/readline/readline.c + - rl_initialize: call _rl_timeout_init to set things up for any timeout + that was set with rl_set_timeout + - readline_internal_charloop: if we longjmped because of a timeout, + make sure to set rl_done/RL_STATE_DONE and return; we are + abandoning this call to readline(). The readline timeout changes + were based on work contributed by Koichi Murase + - 4/26 - ---- -parse.y - - parser_will_prompt: check and return true if we have consumed the - entire readline line buffer and will have to go back to readline for - more input, printing a prompt as a consequence +lib/readline/readline.h + - extern declarations for new timeout functions and hook + - rl_clear_timeout: new define -eval.c - - parse_command: if parser_will_prompt() returns 0, indicating that we - still have unconsumed input in the readline line buffer, don't - execute PROMPT_COMMAND. TENTATIVE fix prompted by report from - Matteo Landi +lib/readline/callback.c + - rl_callback_read_char: if we longjmped because of a timeout, + make sure to set rl_done/RL_STATE_DONE and return; we are + abandoning this call to readline() -builtins/read.def - - set_eol_delim: save the old values before changing the bindings for - RETURN and the delimiter character, in case the delimiter is RETURN. - Fixes bug report from Stephane Chazelas - - read_builtin: if the delimiter is '\0' and we are using readline, - don't terminate the buffer and go back to read another character; - allow the NULL to pass through and terminate the read. - Fixes bug report from Stephane Chazelas +lib/readline/util.c + - _rl_abort_internal: if we time out, don't ring the bell; let the + caller handle it - 5/9 - --- -bashhist.c - - bash_delete_histent: decrement history_lines_this_session only if - remove_history returns a non-null history entry, and return failure - if it does return a null entry +lib/readline/input.c + - extern declarations for public and readline-library-private functions + and hooks to implement timeouts + - rl_set_timeout,rl_timeout_remaining: new public functions + - _rl_timeout_select: new function, uses select/pselect to implement + read timeouts that take timeouts set with rl_set_timeout into account; + calling hook function if a timeout occurs + - rl_gather_tyi, _rl_input_available: use _rl_timeout_select, taking + any existing timeout into consideration if it expires before the + timeout passed as an argument + - rl_getc: use _rl_timeout_select and handle any timeouts by calling + _rl_timehout_handle + - set_alarm,reset_alarm: new functions to implement timeouts using + SIGALRM for systems that lack a working select/pselect + - _rl_timeout_init: new function, sets things up for reading input + with a specified timeout + - _rl_timeout_handle: a timeout handler; calls any event hook and + sets up to abort the current readline() call + - _rl_timeout_handle_sigalrm: a timeout handler for systems using + SIGALRM to implement timeouts + +lib/readline/parens.c + - rl_insert_close: use _rl_timeout_select to take timeouts into account -builtins/history.def - - history_builtin: when checking the argument to -d, display an error - if the argument is >= history_base + history_length, since that's - what history_get and remove_history check. Fixes issue reported by - +lib/readline/rlprivate.h + - extern declarations for readline-library-private timeout functions -support/shobj-conf - - hpux11: change stanza to create shared libraries on later versions of - HPUX 11. Contributed by Michael Osipov +lib/readline/rltty.c + - rl_deprep_terminal: don't print a newline after the bracketed paste + disable sequence if we timed out -lib/readline/terminal.c - - _rl_init_terminal_io: assume TGETENT_BROKEN defined means that tgetent - returns 0 on success, as on HPUX 11. Bug reported by Michael Osipov - +lib/readline/signals.c + - _rl_handle_signal: if sig is SIGALRM, call _rl_timeout_handle_sigalrm() -configure.ac - - hpux: add -DTGETENT_BROKEN to LOCAL_CFLAGS +lib/readline/doc/rltech.texi + - rl_set_timeout,rl_timeout_remaining: document new public functions + - RL_STATE_TIMEOUT: document new possible state value for rl_readline_state + - rl_timeout_event_hook: document new hook function, called when + readline times out -execute_cmd.c - - select_builtin: set executing_builtin around the call to read_builtin - so we can run traps if the read call is interrupted. From a report - from Andreas Kusalananda Kähäri +builtins/read.def + - read_builtin: changes to use the readline timeout functions to + implement timeouts with `read -e'; these use rl_set_timeout and + sh_timer structs together - 5/12 + 3/12 ---- -doc/bashref.texi - - The Restricted Shell: add some language detailing the weaknesses of - the restricted shell mode in isolation, inspired by a discussion on - the zsh mailing list +subst.c + - expand_string_dollar_quote: new function, expands $'...' and $"..." + in a string for those code paths that don't expand it themselves - 5/15 - ---- -xmalloc.h - - malloc: define to sh_malloc to get file and line information from - malloc (not xmalloc) calls. From a suggestion by achurch@achurch.org - (Andrew Church) +subst.h + - expand_string_dollar_quote: extern declaration -builtins/evalstring.c - - parse_and_execute: make sure the parser is not expanding an alias - before terminating the loop that processes characters in the string. - Fixes problem with -c commands that end with an alias reported by - Yu Kou - - should_suppress_fork: make sure that we don't try to optimize out a - fork if the parser is still expanding an alias +parse.y + - read_secondary_line: if $'...' or $"..." appears in the line, call + expand_string_dollar_quote to expand them. This now returns new + memory, need to change callers - 5/16 - ---- -lib/readline/misc.c - - rl_get_previous_history: if previous_history() returns NULL, only - free the saved history if we were the ones who saved it; leave any - existing saved history entry alone. Fixes problem with ^N not working - at the end of the history if we previously moved back to the start - of history - -lib/readline/histfile.c - - read_history_range: when reading until FROM lines with a history - file that has timestamps, make sure to skip to the end of the command - line corresponding to the FROMth line instead of leaving line_start - pointing to it, and keep track of the start of the last timestamp in - last_ts for use by the loop below. Fix for history -n bug reported - by HIROSE Masaaki +make_cmd.c + - make_here_document: account for read_secondary_line returning newly + allocated memory, free `full_line' appropriately -lib/readline/display.c - - init_line_structures: if, for some reason, _rl_screenwidth ends up - bigger than the line_size default of 1024 (e.g., gdb's setting the - terminal width to 0), make sure line_size is at least _rl_screenwidth. - From a report by Tom de Vries +bashline.c + - shell_expand_line,history_and_alias_expand_line: expand $'...' and + $"..." in the line by calling expand_string_dollar_quote, since + that happens after history expansion and before alias expansion in + normal processing - 5/17 + 3/15 ---- -variables.c - - brand: split the code into a function that generates a 32-bit value - given the last value in the sequence (intrand32) and a function that - returns a 16-bit random number (brand) - - seedrand: small change in hopes of adding slightly more entropy - - brand: modify the 16-bit version to XOR the top 16 bits of the 32-bit - seed with the bottom 16 bits and return the lower 15 bits of that - result as before. Based on an analysis by Andrew Church - +subst.c + - expand_string_dollar_quote: fix out-of-order initialization - 5/18 - ---- -variables.c - - genseed: break code that generates the 32-bit seed for the RNG into - a separate function; call from seedrand - - {brand32,sbrand32,seedrand32}: new 32-bit versions of the random - number generator functions that use the entire 32-bit internal value. - Prep for systems that don't have /dev/urandom or arc4random() - - perturb_rand32: shake up the 32-bit LCRNG in subshells +Makefile.in + - {TAGS,tags}: add ETAGS/ETAGSFLAGS/CTAGS/CTAGS flags; make sure to + cd to the source directory before running them to get source files + that don't have absolute paths. Fix from Mike Jonkmans + - 5/19 +parse.y + - xparse_dolparen: don't longjmp if FLAGS includes SX_NOLONGJMP. From + a report by Xu Lu + + 3/16 ---- -variables.c - - get_urandom32: get a 32-bit random number by using the first one of - these that succeeds: reading from /dev/urandom (if available), - calling arc4random (if available), and using the internal 32-bit - RNG (always available) - - SRANDOM: expand to a 32-bit random number. This is not a LCRNG, so - the numbers shouldn't have any relationship to previous returned - values. Assignments are accepted but have no effect on the sequence. - Not documented yet +subst.c + - process_substitute: set startup_state and parse_and_execute_level + to see if we can avoid a fork() + +bashline.c + - bash_spell_correct_word: bindable command (spell-correct-word) to + perform spelling correction on the current `shellword', using the + same code as the `cdspell' option and directory spelling correction + during completion. Feature suggested by in 10/2020 by + Karl Kleinpaste + - bash_spell_correct_word: bound to "C-x s" by default in emacs mode + +lib/readline/display.c + - rl_redisplay: fix redisplay problem that occurs when switching from + the rl-digit-argument prompt "(arg: N)" back to the regular prompt, + and the regular prompt contains invisible characters + +doc/bash.1,lib/readline/doc/rluser.texi + - spell-correct-word: document new function and its default binding - 5/20 + 3/17 ---- doc/{bash.1,bashref.texi} - - SRANDOM: document new special variable + - cd: slight changes to specify that it sets PWD and OLDPWD + - {pushd,popd}: make it clear that these builtins use cd to change + the current working directory; change wording to simplify the + description and clarify the exit status - 5/22 + 3/18 ---- -jobs.c - - find_pid_in_pipeline: abstract some code from find_pipeline to look - for a PID in a specific pipline passed as an argument - - find_pipeline: if we have some saved pipeline(s), look there to find - the PID instead of returning failure. This process could have been - started from a DEBUG trap that saved the_pipeline. Fixes Linux bug - reported by Hengyang Zhao +execute_cmd.c + - execute_disk_command: after performing redirections, call + unlink_all_fifos() to remove the FIFOs created as part of + expanding redirections. They should have been opened by then, and + we're going to call shell_execve right away anyway, so we won't be + around to remove the FIFOs. From a report from + Michael Felt -builtins/bind.def - - unbind_keyseq: use rl_function_of_keyseq_len so you can unbind ^@ - (which translates to 0). Fixes bug reported by - Dennis Williamson + 3/22 + ---- +parse.y + - alias_expand_token: slight tweak to check for alias expansion: perform + expansion unconditionally if PST_ALEXPNEXT is set, and disable it + in case statement pattern lists if the previous token indicates a + command name is acceptable. + From a report by Oguz + +config-bot.h + - HAVE_MKDTEMP: fix typo - 5/23 + 3/25 ---- -lib/readline/display.c - - rl_redisplay: make sure that the line structures can hold up to - _rl_screenwidth characters, to support applications like gdb that - set the screen width to huge values. Report and fix from - Tom de Vries +lib/readline/terminal.c + - look in terminfo for key sequences for page up (kP) and page down + (kN) and bind them to history-search-{backward,forward}, + respectively. From a patch from Xose Vazquez Perez + - 5/24 + 3/30 ---- -lib/readline/bind.c - - rl_generic_bind: move `ic' from block scope to function scope to - avoid problems with compilers that destroy and recreate it every - time through the loop. Report and fix from Adam Richter - +doc/bashref.texi + - expand the node describing $"..." string translation with additional + details and examples - 5/30 + 3/31 ---- -jobs.c - - wait_for_job: now takes an additional struct procstat * argument, - and returns the pid and status of the job's `controlling process' - to the caller +misc.c + - rl_fetch_history: moved here from vi_mode.c + - rl_fetch_history: negative arguments count back from the end of + the history, instead of taking you to the beginning of the history + list + - rl_fetch_history: in vi mode, an out-of-range argument rings the + bell and doesn't change the line -{jobs,nojobs}.c - - wait_for_background_pids: take a struct proctstat * argument and fill - it in with pid and status of the last process to terminate +vi_mode.c + - rl_vi_fetch_history: call rl_fetch_history -jobs.h - - wait_for_job, wait_for_background_pids: add additional argument to - declaration +readline.h + - rl_fetch_history: new extern declaration -builtins/wait.def - - wait_builtin: set pstat.{pid,status} each time through the pid-or-job - loop and for wait without arguments +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - rl_fetch_history: add description + +builtins/setattr.def + - show_var_attributes: if a variable's value indicates that it should + be ANSI-C quoted, use ansic_quote instead of sh_double_quote to + format the value string. From proposal by Greg Wooledge + - 6/4 + 4/5 --- -sig.c - - termsig_handler: clean up last_procsub_child before exiting, after - unlinking all FIFOs or closing FDs to all the pipes. Might need to - send it a SIGTERM too. Fixes issue reported by mwnx +arrayfunc.c + - unbind_array_element: if FLAGS includes VA_ONEWORD, don't use + skipsubscript to parse the subscript, just assume the entire SUB is + the subcript and that it contains the closing `]', so we just want + everything in SUB except the last character. -config-top.h - - CASEMOD_CAPCASE: no longer defined by default +parse.y: + - select_command: use compound_list instead of list, like for_command. + Report by Greywolf + - list: move this into compound_list (replacing the instance of `list' + in the compound_list production), remove from the grammar - 6/5 + 4/6 --- -lib/glob/glob.c - - glob_always_skip_dot_and_dotdot: new global variable, if set to - a non-zero value, no glob pattern will ever match `.' or `..'. - Disabled by default +arrayfunc.c + - unbind_array_element: use VA_NOEXPAND instead of literal 1 - 6/7 + 4/7 --- -bashline.c - - cmd_xmap: changes to support multiple cmd_xmaps, one per editing - mode keymap (one each for vi insert and command modes). Changes from - Koichi Murase +lib/readline/funmap.c + - default_funmap: add missing `vi-undo' to the list of vi-mode bindable + functions. Reported by Xirui Zhao -execute_cmd.c - - execute_arith_command: change from expanding the expression using - expand_words_no_vars to use expand_arith_string, with the accompanying - conversion from a WORD_LIST into a string. This makes it more - consistent with other arithmetic expansions. Inspired by a - discussion begun by Nils Emmerich + 4/8 + --- - 6/10 - ---- -jobs.c - - waitchld: since process substitutions are asynchronous, save the - status of one that exits (that we still know about) in the bgpids - list +config-top.h + - DEFAULT_LOADABLE_BUILTINS_PATH: default value for BASH_LOADABLES_PATH + +doc/{bash.1,bashref.texi} + - enable: note that it uses $BASH_LOADABLES_PATH, and that the default + is system-dependent - 6/12 +variables.c + - initialize_shell_variables: initialize BASH_LOADABLES_PATH to the + default given in DEFAULT_LOADABLE_BUILTINS_PATH + + 4/12 ---- -jobs.c - - wait_for_background_pids: wait for the last procsub only if it's the - same as last_asynchronous_pid +doc/{bash.1,bashref.texi} + - add link to git master tar file as a place to get the current version + 4/14 + ---- bashline.c - - bash_backward_shellword: changes to behave better when at the - beginning of the last character on the line and to leave point at - the beginning of the shellword, like backward-word. Fixes from - Andrew Gaylard + - attempt_shell_completion: use -1 as a sentinel value for + in_command_position indicating that we cannot be in a command position + (e.g., because we're the target of a redirection) and should not + check for a programmable command completion or tell the programmable + completion code to use command completion. Report and fix from + Marc Aurèle La France - 6/13 + 4/16 ---- -bashline.c - - __P: Replaced with PARAMS. First of many - - bash_transpose_shellwords: transpose-words, but using `shellword' - word boundaries like shell-forward-word and shell-backward-word. - Contributed by Andrew Gaylard - - "shell-transpose-words": new name binding for bash_transpose_shellwords - - bash_readline_initialize: add default bindings for shell-forward-word, - shell-backward-word, shell-transpose-words, and shell-kill-word. - Suggested by Andrew Gaylard - -lib/readline/doc/rluser.texi - - shell-transpose-words: document - - {shell-forward-word,shell-backward-word,shell-kill-word,shell-transpose-words}: - document new default bindings bash now adds +builtins/bind.def + - bind_builtin: reverse sense of strvec_search return value when + deciding whether or not to remove a unix-command binding from the + cmd keymap. Bug report by Dale Sedivec -variables.c - - set_argv0: function to assign argv0 if it's found in the initial - shell environment. Suggested by Cuong Manh Le - - - initialize_shell_variables: call set_argv0() as part of shell - initialization +lib/readline/doc/rltech.texi + - RL_PROMPT_{START,END}_IGNORE: document current values of \001 and + \002. Report from Mingye Wang - 6/14 + 4/19 ---- -execute_cmd.c - - execute_for_command: make sure to call stupidly_hack_special_variables - on the index variable each time bind_variable is called on it. If - someone does something nonsensical like `for OPTIND in ...' we want - the side effects to happen. Reported by Stephane Chazelas - - - execute_select_command: do the same thing for the selection variable - after calling bind_variable +arrayfunc.c + - assign_assoc_from_kvlist: fix memory leak reported by konsolebox + - 6/15 + 4/20 ---- -builtins/set.def - - unset_builtin: if neither -f nor -v is supplied, and a NAME cannot - be a shell variable because it's not a shell identifier, try to - unset a shell function whether we're in posix mode or not. Suggested - back in 1/2019 by PePa65 and Robert Elz - +command.h,subst.c + - W_ITILDE: remove, replace with a variable since it's only used inside + a single call to expand_word_internal -execute_cmd.c - - execute_simple_command: if this is being executed by the command - builtin (flags&CMD_COMMAND_BUILTIN), don't bother to print the - command words if set -x is enabled. From a report by Martijn Dekker - back in 4/2018 + 4/21 + ---- +{subst.c,make_cmd.c,parse.y} + - W_DQUOTE: no longer used, use W_NOPROCSUB and W_NOTILDE directly + (for arithmetic commands and words in arithmetic for commands) - 6/19 + 4/24 ---- -lib/glob/glob.c - - glob_filename: if we are not being called recursively, and there is - only a directory name, dequote the passed pathname and see if it - names an existing directory. If it does, return it; otherwise return - failure ((char **)&glob_error_return). This is what makes backslash - escaped-characters in pathnames in shell variables work the same as - the same value passed directly. From an anonymous comment on - https://savannah.gnu.org/support/?109629 and a discussion on the - austin-group list. +bashline.c + - executable_completion: since this function gets an unquoted filename + from rl_filename_completion_function, we need to quote special + characters before passing it to bash_directory_completion_hook. + Report from Alex fxmbsw7 Ratchev + + 4/26 + ---- +lib/readline/search.c + - _rl_nsearch_abort: move function calls around so _rl_restore_prompt + happens before rl_clear_message, like when aborting an incremental + search. Suggested by sparrowhawk996@gmail.com + +subst.h + - ASS_ALLOWALLSUB: new assignment flag value, means to allow @ and * as + valid array subscripts when assigning to existing associative arrays + +arrayfunc.c + - assign_array_element: allow assignment of key `@' to an existing + associative array if the caller passes ASS_ALLOWALLSUB + - assign_compound_array_list: allow ( [@]=value ) to an existing + associative array + +builtins/declare.def + - declare_internal: allow assignment of key `@' to an existing + associative array by passing ASS_ALLOWALLSUB to assign_array_element + as part of local_aflags. This affects declare, local, and typeset + +subst.c + - do_assignment_internal: allow a[@]=value to an existing associative + array by passing ASS_ALLOWALLSUB to assign_array_element + + 4/27 + ---- +builtins/common.[ch] + - builtin_bind_var_to_int: wrapper for bind_var_to_int to be used by + builtin commands; placeholder for future work + +builtins/wait.def + - builtin_bind_var_to_int: use instead of bind_var_to_int - 6/20 - ---- -pathexp.c,lib/glob/glob.c - - posix_glob_backslash: variable to control whether or not pathname - expansion handles backslashes in the pattern the way Posix says it - should. Enabled by default +builtins/common.c + - builtin_bind_variable: allow assignment of key `@' to an existing + associative array by passing ASS_ALLOWALLSUB to assign_array_element. + This affects printf and read -pathexp.h - - posix_glob_backslash: new extern declaration +builtins/variables.[ch] + - bind_var_to_int: add third `flags' argument to pass to bind_variable + instead of always passing 0 -builtins/shopt.def - - posixglob: new option, reflects the value of posix_glob_backslash +redir.c,builtins/common.c,builtins/printf.def + - bind_var_to_int: change callers, add third flags argument -general.c - - posix_vars: add posix_glob_backslash to the table - - posix_initialize: set posix_glob_backslash to 1 when turning on - posix mode +builtins/common.c + - builtin_bind_var_to_int: pass ASS_ALLOWALLSUB to bind_var_to_int so + builtins like wait can assign to assoc[@] and assoc[*] - 6/21 + 4/28 ---- -doc/{bash.1,bashref.texi} - - pathname expansion: note that under some circumstances the shell - will invoke the matching engine for words with unquoted backslashes - - posixglob: document the new shell option and its effects +bashline.c + - command_word_completion_function: make sure to initialize + old_glob_ignore_case before trying to restore from it + - command_word_completion_function: if we are completing a glob + pattern, make sure to set rl_filename_completion_desired, so we get + quoting and appending -- we are completing a filename, after all. + From a report from Manuel Boni - 6/27 - ---- -{config.h.in,configure.ac} - - setresuid,setresgid: check and set HAVE_{DECL,}_SETRES[UG]ID as - appropriate +lib/readline/bind.c + - enable-active-region: separate control of the active region and + bracketed paste. Still set to the same default value as bracketed + paste, and enabling bracketed paste enables the active region. + Now you can enable bracketed paste and then turn off the active + region. -shell.c - - disable_priv_mode: if we have setres[ug]id, use them over - set[ug]id, which only set the save user-id and group-id if the - process is running as root. From Ian Eldred Pudney - in https://savannah.gnu.org/patch/?9822 +doc/bash.1,lib/readline/doc/{readline.3,rltech.texi} + - enable-active-region: document new bindable readline variable and + its effects - 6/28 + 4/30 ---- -lib/glob/glob.c - - glob_vector: don't bother trying to read the directory if the filename - pattern doesn't have any globbing characters except backslash; just - dequote the pattern and try to lstat(2) it as if there were no - globbing characters at all. From an austingroup-bugs discussion - message from Stephane Chazelas +command.h + - W_ARRAYREF: new flag, meaning the word is a valid array reference + with subscript, replaces W_DOLLARSTAR, which was unused -bashline.c - - completion_glob_pattern: just call glob_pattern_p and make sure it - returns 1 (non-backslash globbing characters) +subst.c + - expand_subscript_string,expand_array_subscript: new functions to + parse and expand-and-quote array subscripts. For future use -builtins/help.def - - help_builtin: don't try pattern matching the help topic argument - unless glob_pattern_p returns 1 + 5/3 + --- +builtins/mapfile.def + - mapfile: if the delimiter is a newline, set unbuffered_read = 1 + for any file descriptor that isn't seekable and lseek sets errno + to ESPIPE (pipes, FIFOs, maybe terminal devices). If it's not a + newline, only allow buffered reads if the file descriptor is a + regular file. Report from Koichi Murase -pathexp.c - - unquoted_glob_pattern_p: when in a bracket expression (open > 0), - don't allow an unquoted slash as part of the bracket expression. - Report from Stephane Chazelas +builtins/read.def + - read_builtin: only set unbuffered_read = 1 if the input is coming + from a pipe (which we can't seek on) or the input is a terminal and + we want to read a specified number of characters or we're using a + non-standard delimiter - 7/1 + 5/4 --- -print_cmd.c - - print_function_def,named_function_string: make sure to call - PRINT_DEFERRED_HEREDOCS to finish printing any here documents and - delimiters before printing the function closing brace. Fixes bug - reported by Denis McKeon -execute_cmd.c - - execute_command_internal: call reap_procsubs at the end of executing - a group command on systems that have /dev/fd. Fixes bug reported by - kfm@plushkava.net +builtins/mapfile.def + - mapfile: call zsyncfd before calling the callback. Suggested by + Koichi Murase ; we'll see how it goes - 7/3 + 5/5 --- -jobs.c - - waitchld: this is in the potential SIGCHLD path, so don't call - bgp_add, which can potentially call malloc. The glibc malloc doesn't - handle that well. Report from howaboutsynergy@protonmail.com +subst.h + - expand_subscript_string: extern declaration - 7/5 - --- -builtins/bind.def - - bind_builtin: make sure return_code is >= 0 before returning it. - Fixes bug with bind -x and invalid key sequences reported by - bashbug@jonkmans.nl +{arrayfunc,subst}.c + - expand_subscript_string: replace expand_assignment_string_to_string + with calls to this when expanding array subscripts - 7/8 - --- -doc/{bash.1,bashref.texi} - - unset: fixed up list of special variables that lose their special - properties if they are unset. Report and fix from Edward Huff - +subst.c + - cond_expand_word: call expand_word_internal with Q_ARITH if `special' + says we should quote for an arithmetic expression context + - expand_word_internal: call expand_array_subscript when we see `[' in + arithmetic or array subscript contexts, make conditional on the + compatibility level later + - expand_word_internal: make sure W_ARRAYREF makes it through this + function and into the returned word - 7/9 + 5/6 --- -test.c - - unary_test: update the `-N' test to use timespecs and nanosecond - granularity if available, and use mtime > atime instead of the - old mtime >= atime. Fixes bug reported by kfm@plushkava.net -lib/sh/strtod.c - - strtod: make sure to use locale_decpoint() to determine the radix - character +arrayfunc.c + - array_expand_index: call evalexp with a flag of 0 since we call + expand_arith_string with Q_ARITH and we want evalexp to remove + the quotes + +execute_cmd.c + - eval_arith_for_expr,execute_arith_command: now that Q_ARITH has an + effect on array subscripts (it quotes the special expansion + characters), call evalexp with 0 as the flags arg so quote removal + is performed on this quoted argument. Make this conditional on the + shell compatibility level later + - execute_cond_command: make sure to expand the argument to -v by + calling cond_expand_node with Q_ARITH, and correspondingly turn off + assoc_expand_once when calling unary_test with that argument, since + we want it to be expanded again to remove the quotes + - execute_cond_command: expand the arguments to the arithmetic operators + with Q_ARITH and pass TEST_ARITHEXP to binary_test to ensure that + it lets evalexp expand the arguments to remove the quoting - 7/11 - ---- -lib/sh/utf8.c - - utf8_mblen: return -2 if the UTF-8 sequence is incomplete - - utf8_mblen: 4-byte UTF-8 characters start with a byte <= 0xf4; limit - to 4-byte UTF-8 (since 5- and 6-byte code points were removed in 2003) +test.c + - arithcomp: if TEST_ARITHEXP is in FLAGS, call evalexp with a flag + if 0 to force evalexp to expand the arguments to remove the quoting - 7/12 - ---- -parse.y,shell.h - - sh_input_line_state_t: if HANDLE_MULTIBYTE is defined, add members - for saving shell_input_line_property and its associated size; let - save_line_state and restore_line_state manage it. This means - restore_line_state no longer calls set_line_mbstate. From a report - from astian +subst.c + - param_expand: since we call expand_arith_string with Q_ARITH, we need + to call evalexp with 0 instead of EXP_EXPANDED for $((...)) expansion + - expand_word_internal: if we recursively call expand_word_internal to + expand the contents of a double-quoted string, make sure we pass + through Q_ARITH if it appears in QUOTED + - verify_substring_values: call expand_arith_string with Q_ARITH and + correspondingly call evalexp with 0 instead of EXP_EXPANDED -parse.y - - set_line_mbstate: if the current locale is not multibyte, just set - everything in the property array to 1 - - set_line_mbstate: use locale_utf8locale to optimize away calls to - mbrlen; just use utf8_mblen +execute_cmd.c + - execute_cond_node: if -v is the operator, and the operand is a valid + array reference, pass TEST_ARRAYEXP flag to unary_test - 7/14 - ---- -variables.c - - sv_tz: remake the export env if TZ is being unset. Fixes bug - reported by Travis Everett + 5/7 + --- +builtins/common.[ch] + - set_expand_once: set array_expand_once to the value passed as the + first argument, returning the original value -lib/readline/display.c - - rl_expand_prompt: if the prompt contains embedded newlines, compute - local_prompt_prefix before local_prompt because each call sets - local_prompt_newlines, and we want the values computed in the call - that uses local_prompt to be the ones that we use. Fixes prompt - wrapping bug reported by Tianon Gravi +builtins.h + - ARRAYREF_BUILTIN: new flag for shell builtins, means that the builtin + can take array references, with subscripts, as arguments - 7/16 - ---- -Makefile.in - - added a number of dependencies from Vemake Vemake - as reported in - http://savannah.gnu.org/patch/download.php?file_id=47219 +builtins/mkbuiltins.c + - set ARRAYREF_BUILTIN flag on builtins given in the arrayvar_builtins + array - 7/19 - ---- -lib/sh/utf8.c - - utf8_mblen: changes to handle invalid multibyte sequences better, - even when N means that the sequence would be too short anyway +execute_cmd.c + - execute_cond_node: use set_expand_once to set array_expand_once to 0 + before calling unary_test with -v (see change from 5/6) arrayfunc.c - - bind_assoc_var_internal: new convenience function to assign a - key-value pair to an associative array. It gets the SHELL_VAR * AND - a HASH_TABLE *, which may or may not correspond to the assoc_cell - of the variable, and performs the insertion into the hash table. - Callers take care of passing the right values. - - bind_assoc_variable: call bind_assoc_var_internal to do the real - work - - assign_compound_array_list: change to assign associative array - key-value pairs into a new hash table (NHASH), so we can still use - the old value for expansion. We do this in place of clearing out - the contents of the associative array before performing the expansion - and assignments. After doing all the assignments into NHASH, we swap - NHASH into the variable as its value and dispose of the old value. - Fixes inconsistency reported by Darren 'Tadgy' Austin - + - unbind_array_element: allow the caller to choose whether or not a + subscript of `*' or `@' unsets the entire array by passing + VA_ALLOWALL in FLAGS. Right now, since the unset builtin doesn't + pass VA_ALLOWALL, those subscripts unset individual elements for + associative arrays. We preserve the old behavior of unsetting + indexed arrays for the time being with new indexed-array-specific + code - 7/20 - ---- -aclocal.m4 - - include bashansi.h in a bunch of AC_TRY_RUN recipies to avoid - exit() being flagged as an implicit declaration. Report and fix - from Chris Yungmann + 5/9 + --- -shell.c - - set_exit_status: set last_command_exit_value to the argument and make - sure to set PIPESTATUS from that exit value +builtins/shopt.def + - expand_once_flag: "assoc_expand_once" option now sets this flag, + calls set_assoc_expand on change + - set_assoc_expand: sets assoc_expand_once to mirror expand_once_flag; + placeholder for future changes -shell.h - - set_exit_status: extern declaration +builtins/common.h + - expand_once_flag: extern declaration -parse.y - - report_syntax_error: make sure to set PIPESTATUS if we set - last_command_exit_value on a syntax error - - parse_string_to_word_list,parse_compound_assignment: set PIPESTATUS - when we set last_command_exit_value + 5/10 + ---- +doc/{bash.1,bashref.texi} + - note that case patterns undergo quote removal. Reported by + AlvinSeville7cf -sig.c - - throw_to_top_level,sigint_sighandler: set PIPESTATUS when we set - last_command_exit_value + 5/11 + ---- -variables.c - - sv_locale: call set_exit_status to set PIPESTATUS and last_command_exit_value +builtins/bashgetopt.c + - list_optflags: flags associated with the word corresponding to + list_optarg, assuming list_optarg is a separate argument -arrayfunc.c - - find_or_make_array_variable,array_expand_index,assign_compound_array_list: - call set_exit_status to set PIPESTATUS and last_command_exit_value +builtins/bashgetopt.h + - list_optflags: extern declaration -builtins/evalstring.c - - parse_and_execute: set PIPESTATUS when we set last_command_exit_value +builtins/set.def + - unset_builtin: set VFLAGS each time through the loop, since we take + whether or not the word has W_ARRAYREF set into account + - unset_builtin: don't pass VA_ALLOWALL to unbind_array_element for + now -braces.c - - brace_expand: call set_exit_status to set PIPESTATUS and last_command_exit_value +test.c + - unary_test: in the -v case, use assoc_expand_once in the first call + to valid_array_reference () -eval.c - - reader_loop: call set_exit_status to set PIPESTATUS and last_command_exit_value +builtins/printf.def + - printf_builtin: only set VA_ONEWORD if the option argument to -v has + W_ARRAYREF set (look at list_optflags) -make_cmd.c - - set PIPESTATUS when setting $? due to syntax errors or constructs - not being available + 5/12 + ---- + +subst.c + - expand_array_subscript: don't quote @ or * in the expanded subscript + at all, even when they are the only character in the subscript. See + how this works out -- it might uncover places where we need to allow + `*' and `@' as subscripts where they are not allowed now expr.c - - expr_streval: set PIPESTATUS when setting $? due to syntax errors + - expr_bind_variable: pass ASS_ALLOWALLSUB to bind_int_variable so we + can allow (( A[@]=value )) when A is an existing associative array -subst.c - - extract_delimited_string,extract_dollar_brace_string,do_assignment_internal, - call_expand_word_internal,array_length_reference,param_expand, - parameter_brace_expand_word,parameter_brace_expand_rhs, - parameter_brace_expand_error,parameter_brace_expand,err_unboundvar: - set PIPESTATUS when setting last_command_exit_value on error - conditions +arrayfunc.h + - AV_ATSTARKEYS: new flag value, means to accept a[@] and a[*] but + treat them as keys/expressions and not special values -redir.c - - REDIRECTION_ERROR: set PIPESTATUS when setting last_command_exit_value - on error conditions +arrayfunc.c + - array_value_internal: check AV_ATSTARKEYS and don't treat them as + ALL_ELEMENT_SUB values; they fall through to use as keys/indices -subst.c - - match_upattern,match_wpattern: if the match length is greater than the - string length, short-circuit and return failure. Fixes bug - reported by Eduardo Bustamante +test.c + - unary_test: if -v is passed an array reference, add AV_ATSTARKEYS to + the flags passed to array_value so we treat @ and * as keys for an + existing associative array - 7/22 + 5/13 ---- -lib/glob/sm_loop.c - - BRACKMATCH: if we think we've matched, tighten up the rules for - the closing right bracket in the bracket expression to be correct - in the presence of invalid character classes, collating symbols, - and equivalence classes. If they're invalid, they shouldn't require - additional right brackets to close them - 7/25 - ---- -builtins/colon.def - - add the right includes so colon_builtin and false_builtin can take - a WORD_LIST * argument like the prototype says they do +subst.c + - expand_cond_word: if SPECIAL == 3 (arithmetic expression), dequote the + resulting WORD_LIST * as if special == 0, because we don't want to + quote the list for pattern matching. Report from + Adjudicator Darren - 7/29 + 5/14 ---- -lib/readline/kill.c - - _rl_read_bracketed_paste_prefix: read the character prefix that - indicates a pasted string in bracketed paste mode. If we don't - read a valid bracketed paste prefix, push the other characters - back onto the input stack with _rl_unget_char - - _rl_bracketed_read_key: handle reading pasted input when bracketed - paste mode is enabled, including reading multibyte characters; push - anything beyond a single byte back onto the input stack where it - can be read by _rl_read_mbstring or subsequent input - - _rl_bracketed_read_mbstring: handle reading pasted input in bracketed - paste mode, using _rl_bracketed_read_key to get the pasted text, - then call _rl_read_mbstring to get the rest of any multibyte char - +subst.c + - expand_array_subscript: add double quote (") to the list of characters + that are backslash-quoted in subscripts after word expansion. + skipsubscript treats them specially, so you have to quote them to + do things like `key='"' ; array[$key]=1 ; [[ -v array[$key] ]]' -lib/readline/vi_mode.c - - _rl_vi_callback_getchar: call _rl_bracketed_read_mbstring to handle - bracketed paste mode input. Fixes issue with vi-change-char reported - by - - rl_vi_domove_getchar: just call _rl_bracketed_read_key and return - the result -- we're not interested in multibyte-character input here - yet - - rl_vi_replace: bind BRACK_PASTE_PREF key sequence if bracketed paste - mode has been enabled - - _rl_overstrike_bracketed_paste: key binding function for the bracketed - paste prefix key sequence in overwrite mode; reads the pasted text - and uses rl_vi_overstrike to add each character in overwrite mode. - Fixes issue reported by - - 7/31 + 5/16 ---- -lib/readline/input.c - - _rl_read_mbchar: the first time through the loop (mb_len == 0), call - _rl_bracketed_read_key to process any bracketed paste characters -lib/readline/text.c - - _rl_char_search: use _rl_bracketed_read_key in the non-multibyte - character case +builtins/wait.def + - wait_builtin: if we longjmp to wait_intr_buf, call unset_waitlist if + we have called set_waitlist (wflags & JWAIT_WAITING). Fixes bug with + wait -n interrupted by a trapped signal (not SIGINT) reported by + Jonas Alfredsson -lib/readline/misc.c - - _rl_arg_dispatch: use _rl_bracketed_read_key in place of rl_read_key +jobs.c + - wait_sigint_cleanup: restore the old sigint handler before we longjmp + out by calling restore_sigint_handler() -subst.c - - list_string: if string_extract_verbatim returns something, just make - a WORD_DESC * and add current_word directly to it, noting that we - don't want to free current_word (free_word = 0) - - string_extract_verbatim: if the separator string is the empty - string, don't bother with the loop -- just savestring the string, - update *sindex, and return the copy - - read_comsub: make the string we use to save the output from the pipe - 512 bytes instead of 128 (same size as the buffer used to read from - the pipe); fewer calls to xrealloc in the worst case - - parameter_brace_expand_length: optimize the common case (non-dynamic - scalar variable without `set -u' in effect) and just call MB_STRLEN - on the variable value in that case. From a report from - Alkis Georgopoulos - - 8/13 + 5/17 ---- -execute_cmd.c - - execute_subshell_builtin_or_function: call subshell_exit() instead of - sh_exit() or exit() so the exit trap gets run. Fixes issue reported - in https://savannah.gnu.org/support/?109840 - - replace __P with PARAMS - -lib/readline/colors.c - - _rl_print_color_indicator: eliminate one use of S_ISLNK. - Report and fix from Christian Biesinger +builtins/read.def + - bind_read_variable: now takes an additional argument, flags to pass + to builtin_bind_variable; change callers + - SET_VFLAGS: set vflags and bindflags + - read_builtin: call SET_VFLAGS to set vflags and bindflags from each + word before calling valid_array_reference and bind_read_variable - 8/22 - ---- -variables.c - - push_posix_temp_var: change to use bind_variable and modify variables - at the current local scope or create and modify variables at the - global scope, as if a standalone assignment statement had been - executed. This restores some bash-4.4 backwards compatibility with - respect to posix-mode assignment statements preceding special - builtins and shell functions. The bash-5.0 behavior, while perhaps - defensible, caused too many compatibility problems. Originally - prompted by several discussions with Martijn Dekker; the current - incarnation and tests based on a report to Debian BTS from - Thorsten Glaser - - 8/26 - ---- -shell.c,bashhist.c - - __P -> PARAMS +builtins/common.c + - builtin_bind_variable: set vflags (for valid_array_reference) and + bindflags (for bind_variable/assign_array_element) separately for + clarity -shell.c - - set_option_defaults,reset_option_defaults: before calling - list_minus_o_options at invocation, call set_option_defaults to - set the options that are initialized to -1 to either 1 or 0, as - appropriate; then call reset_option_defaults to set them back to -1 - after list_minus_o_options returns - - init_interactive: if enable_history_list == -1, set it to 1, then - set remember_on_history to enable_history_list. Fixes bug reported - by Alex Kerzner - - init_noninteractive: if enable_history_list == -1, set it to 0, let - bash_history_reinit take care of setting remember_on_history - - init_interactive_script: if enable_history_list == -1, set it to 1, - then set remember_on_history to enable_history_list +arrayfunc.c + - assign_array_element: sanity check: make sure that the subscript + returned by array_variable_name consumes the entire NAME, otherwise + flag it as a subscript error. This keeps things like + `KEY=' ]'; read assoc[$KEY] <<< hello' from assigning to incomplete + subscripts -bashhist.c - - enable_history_list: initialize to -1 to note when it gets changed - by -o history or +o history at invocation +builtins/printf.def + - printf_builtin: if LIST_OPTFLAGS includes W_ARRAYREF, set VA_NOEXPAND + in VFLAGS - 8/28 + 5/17 ---- -lib/readline/terminal.c - - TGETENT_SUCCESS, TGETFLAG_SUCCESS: defines to represent successful - returns from tgetent and tgetflag, since HPUX manages to get them - wrong. New patch from Osipov, Michael - - TGETFLAG: new define, make sure tgetflag returns TGETENT_SUCCESS - - _rl_init_terminal_io: use TGETENT_SUCCESS and TGETFLAG -configure.ac - - hpux: make sure to define TGETFLAG_BROKEN +lib/readline/complete.c + - compute_lcd_of_matches: move a couple of strlen calls out of a loop + in calls to mbrtowc; performance improvement only. Report and fix + from sparrowhawk996@gmail.com - 8/30 - ---- -tests - - add copyright notices to all scripts longer than 15 lines at the - request of the FSF +lib/readline/bind.c + - rl_trim_arg_from_keyseq: take a key sequence and its length and + return the index into the key sequence following any initial numeric + argument. Return -1 if there is no numeric argument (the caller is + expected to make sure) or if the key sequence consists *only* of + the numeric argument. The caller should use the remainder of the + key sequence to look up the desired key binding. - 9/1 - --- -lib/readline/complete.c - - _rl_complete_internal: move logic that checks whether the last - completion attempt failed and the current attempt returned a single - match and insert the single completion here. A better implementation - of Richard Stallman's suggestion of 2/23. +lib/readline/readline.h + - rl_trim_arg_from_keyseq: extern declaration - 9/3 - --- bashline.c - - edit_and_execute_command: reset the readahead token after calling - restore_parser_state, in case some call to reset_parser set - token_to_read. Fixes bug reported by null + - bash_execute_unix_command: if the argument count is > 1 or we have + an explicit argument, call rl_trim_arg_from_keyseq to get past the + numeric argument and deal with the rest of the key sequence. We still + need a way to pass it to the invoked program or function. From + a report from Jesper Nygards - 9/9 - --- -execute_cmd.c - - execute_command_internal: if we're executing a command list - (executing_list != 0), save the old fifo list and close any new - FIFOs that the command opens. Fixes bug reported by - Kamil Cukrowski - - 9/10 + 5/18 ---- -aclocal.m4,m4/intdiv0.m4 - - make sure `exit' is used consistently with included - - make sure `main' isn't declared to implicitly return int - - include before using ulimit - - include before testing string functions - - fixes from Florian Weimer -configure.ac - - setresuid,setresgid: use AC_CHECK_FUNCS instead of AC_CHECK_DECL, - which always fails +bashline.c + - bash_execute_unix_command: if the user supplied a numeric argument + when invoking bash_execute_unix_command, pass it to the command in + the READLINE_ARGUMENT variable -shell.c - - disable_priv_mode: use HAVE_SETRESUID and HAVE_SETRESGID instead of - the HAVE_DECL variants, which always fail configure tests +lib/readline/readline.[ch] + - _rl_del_executing_keyseq: convenience function to `delete' the last + character added to the executing key sequence. Intended to be used + before calling rl_execute_next or similar functions that push input + back to be re-read -m4/intl.m4 - - gt_INTL_SUBDIR_CORE: add back check for localeconv, removed in - newer gettext releases +doc/{bash.1,bashref.texi} + - READLINE_ARGUMENT: documented new variable available for commands + defined using `bind -x' keybindings - 9/16 - ---- -builtins/help.def - - help_builtin: make the closing quote printed after the argument list - for a glob pattern argument a translatable string to ease translation - for certain languages. Report from Roland Illig +lib/readline/doc/rltech.texi + - rl_trim_arg_from_keyseq: documented new function -builtins/{reserved,complete,exec,getopts}.def - - minor typographical fixes from Roland Illig + 5/19 + ---- -siglist.c - - include general.h for INT_STRLEN_BOUND - - initialize_siglist: use the same string for the strlen and xmalloc - for the message about an unknown signal number; use INT_STRLEN_BOUND - instead of a fixed 10 for the number +builtins/evalstring.c + - should_suppress_fork: suppress the fork if we're in a process + substitution subshell, in addition to being a simple command + without redirections. From a report back in 10/2020 from + Hyunho Cho -builtins/getopts.def,doc/{bash.1,bashref.texi} - - getopts: minor changes to the description of the effect of supplying - additional arguments. Report from Roland Illig +bashline.c + - command_word_completion_function: if we're trying to complete an + absolute program (one containing a slash), don't run strcmp or + strcasecmp on the return value from rl_filename_completion_function, + since that duplicates work the filename completion function already + does. From a report back in 1/2021 by awa54@cdak.net - 9/17 + 5/22 ---- -jobs.[ch] - - save_proc_status: external interface to bgp_add, takes care of - blocking and unblocking SIGCHLD - - __P -> PARAMS +parse.y + - CHECK_FOR_RESERVED_WORD: if we are returning an ESAC and unsetting + PST_CASESTMT, decrement esacs_needed_count - 9/18 - ---- -jobs.[ch] - - procsub_{free,add,search,delete,waitpid,waitall,clear,prune}: new - functions to keep track of the list of active process substitutions - and their statuses. Implementation is currently a singly-linked list - of PROCESS *, so functions that expect a PROCESS * to manipulate - continue to work. Inspired by report from leo.dalecki@ntymail.com - - find_pipeline,cleanup_dead_jobs,wait_for_background_pids: call new - procsub_* functions to manage procsub list; don't call the functions - in subst.c any more +parse.y,shell.h + - sh_parser_state_t: save and restore esacs_needed_count and + expecting_in_token in the shell parser state struct and + save_parser_state/restore_parser_state -subst.c - - process_substitute: call procsub_add with the PROCESS * returned - from make_child; let the functions in jobs.c manage the list. - waitchld continues to set the pid field in the fifo list as a hint - that a particular fd or FIFO is no longer used and can be reaped - - process_substitute: let the child process clear out any existing - procsub pid list - - wait_procsubs: no longer compiled in +print_cmd.c + - print_simple_command: don't bother to call command_print_word_list + with an empty list + - print_simple_command: don't print a space before a redirection list + if there weren't any command words to print -sig.c - - termsig_handler: replace discard_last_procsub_child with call to - procsub_clear + 5/24 + ---- -lib/readline/display.c - - init_line_structures: fix a problem which results in references to - uninitialized memory when gdb sets the number of columns to 32767 - (their `unlimited'). Modification of change from 5/23. Report and - fix from Andrew Burgess +lib/sh/input_avail.c + - nchars_avail: make sure SET and OSET are declared on systems with + select(2). Reported by Larkin Nickle - 9/19 - ---- parse.y - - xparse_dolparen: after calling parse_string to consume input, make - sure to reset the parser (reset_parser()) before restoring the EOF - token and the parser_state variable. Fixes issue with nested traps - running command substitutions in command lines with command - substitutions reported by Travis Everett + - cond_term: if we read a `!' toggle CMD_INVERT_RETURN instead of + setting it unconditionally. Report and patch from + Vincent Menegaux via + https://savannah.gnu.org/patch/?10070 - 9/20 - ---- -doc/{bashref.texi,bash.1} - - fixed a typo in the example for the =~ operator: the ? should follow - the (a), not precede it. Report from hk - - some changes to the text describing regular expression matching for - the =~ operator - - 9/25 + 5/25 ---- -general.c,builtins/shopt.def - - posix_glob_backslash: remove references to this variable and the - `posixglob' shell option - doc/{bash.1,bashref.texi} - - remove references to the `posixglob' shell option + - test: add the ( $2 $3 ) case to the description of the four-argument + behavior. Inspired by a discussion with Christoph Anton Mitterer + - 9/26 + 5/27 ---- -{jobs,nojobs}.c - - DEFAULT_MAX_CHILD: bump this up to 4096 - - set_maxchild: set lmaxchild to MAX_CHILD_MAX if getmaxchild returns - -1 without changing errno (assume that sysconf returns -1 meaning - unlimited) - - initialize_job_control: call set_maxchild instead of inline code - - mark_dead_jobs_as_notified: call set_maxchild to set js.c_childmax - if it hasn't been set yet +doc/bashref.texi + - replace most of the GNU parallel section with a reference to the + tutorial on gnu.org - 9/30 - ---- -lib/glob/xmbsrtowcs.c - - xwcsrtombs: implementation of wcsrtombs from gnulib, modified to - treat invalid wide characters (or wide characters that can't be - converted to multibyte character sequences) as bytes. Should be - used only in unusual circumstances where wcsrtombs fails. +lib/glob/glob.h + - GX_NEGATE: new flag; indicates whether the pattern is being negated + as part of an extglob pattern. Not used yet lib/glob/glob.c - - wdequote_pathname: if wcsrtombs fails to convert the dequoted wide - character pathname back to a sequence of multibyte characters, call - xwcsrtombs to try to treat the invalid wide characters as bytes -- - the call to xdupmbstowcs treats bytes that don't convert to wide - characters as just bytes, which kind of causes this problem in the - first place. Inspired by report from Geoff Kuenning + - extglob_skipname,wextglob_skipname: pass GX_NEGATE to the skipname + functions if the pattern is being negated. Not checked yet -lib/readline/complete.c - - compute_lcd_of_matches: use the case-folding code (which performs - character-by-character checking and compares invalid multibyte - sequences as bytes) instead of the old case-sensitive code (which - used _rl_compare_chars), converting characters to lowercase as - needed. Fixes bug with invalid sequences in common filename prefixes - reported by Grisha Levit - - 10/1 + 5/28 ---- -builtins/shopt.def - - reset_shopt_options: add in resets for some missing shopt options. - Report and fix from Grisha Levit +doc/{bash.1,bashref.texi} + - dotglob: add text to clarify that `.' and `..' have to be matched by + a pattern beginning with `.' or -- and this is the sketchy part -- + that a pattern beginning with `.' has to be one of the patterns in + an extended glob expression -execute_cmd.c - - execute_command_internal: make sure a failed attempt to define a - shell function causes the shell to exit if -e is enabled. Report - from Andreas Kusalananda Kähäri - - execute_command_internal: combine cm_function_def, cm_arith, and - cm_cond cases into one switch case, since the code is virtually - identical across all three +lib/glob/glob.c + - skipname,wskipname: perform the special checks for `.' only if the + pattern is not being negated - 10/3 - ---- -pathexp.[ch],lib/glob/glob.c,lib/glob/glob_loop.c - - remove all references to posix_glob_backslash in preparation for - implementing austin group interpretation #1234 + 6/3 + --- +parse.y,shell.h + - eol_ungetc_lookahead: save and restore as part of the parser state + included in {save,restore}_parser_state -pathexp.c - - unquoted_glob_pattern_p: revert to bash-4.4 behavior of returning 1 - only if there is an unquoted `*', `?', or bracket expression, as - per austin group interpretation #1234 + 6/7 + --- +lib/readline/display.c + - puts_face: make sure to cast each member of STR to unsigned char, so + it's not misinterpreted as EOF, which putc_face does not display. + Report and fix from Volodymyr Prodan in + https://savannah.gnu.org/patch/?10076 -lib/glob/glob_loop.c - - INTERNAL_GLOB_PATTERN_P: revert to bash-4.4 behavior of returning 1 - only if there is an unquoted `*', `?', or bracket expression, as - per austin group interpretation #1234 +examples/shobj-conf + - aix*gcc: change SHOBJ_LD to ${CC}, prefix the SHOBJ_LDFLAGS flags + with -Wl, so gcc will pass them to the linker. Report from + lehel@maxer.hu in https://savannah.gnu.org/support/?110505 - 10/4 + 6/11 ---- -variables.c - - assign_seconds,get_seconds: use the tv_sec value returned from - gettimeofday() instead of time() to get a better approximation of - the number of seconds since the epoch for future calculations. - From a report by Stephane Chazelas +doc/{bash.1,bashref.texi} + - cd: additional arguments are not ignored; they raise an error. + Report from Douglas McIlroy + +lib/glob/strmatch.h + - FNM_DOTDOT: enable special handling for `.' and `..': if FNM_PERIOD + is not set, `.' and `..' at the start of a string or as a pathname + component need to be matched by a `.' in the pattern and cannot be + matched by `?', `*', or a bracket expression + +lib/glob/glob.c + - glob_vector: pass FNM_DOTDOT to strmatch() if noglob_dot_filenames + is not set to enable special handling of `.' and `..'. Prompted by a + discussion with Nora Platiel + - skipname,wskipname: remove special checks for `.' and (disabled) + checks for `..' -pathexp.[ch],{bashline,subst}.c - - shell_glob_filename: now takes an additional flags argument to pass - to quote_string_for_globbing +lib/glob/sm_loop.c + - GMATCH: implement special handling for FNM_DOTDOT and `.' and `..': + make sure they can't be matched by any special glob characters at + the start of the string or as a pathname component (if FNM_PATHNAME + is set). This also means that !(pattern) won't return `.' or `..' + if dotglob is set + - GMATCH,EXTMATCH: don't pass FNM_DOTDOT down to recursive calls, like + FNM_PERIOD, once we process the first character in the string or + pathname component - 10/6 - ---- -subst.c - - glob_expand_word_list: call shell_glob_filename with QGLOB_CTLESC - because quote removal hasn't been performed yet +lib/glob/smatch.c + - ISDIRSEP,PATHSEP,SDOT_OR_DOTDOT,PDOT_OR_DOTDOT: provide definitions + for single-byte or wide character strings for sm_loop.c to use - 10/7 + 6/16 ---- -pathexp.c - - quote_string_for_globbing: if we have an unquoted backslash followed - by a CTLESC-quoted character (not CTLESC-CTLESC), just perform the - usual CTLESC-to-backslash conversion instead of skipping over it. - Fixes issue raised in austin-group discussion about globbing by - Geoff Clare (austin-group issue 1234), though - it's still inherently ambiguous - 10/8 - ---- -include/shmbutil.h - - xwcsrtombs: extern declaration, to match other functions in that file +doc/{bash.1,bashref.texi},lib/readline/doc/{rluser,rltech}.texi + - slight wording changes to rewrite gender-specific language. From a + report by Vipul Kumar , suggested + language from G. Branden Robinson , + Lawrence Velázquez , + and Andrew Church -lib/glob/glob.c - - wcdequote_pathname: new function, actual backslash quote removal code - from wdequote_pathname; wdequote_pathname calls it +builtins/fc.def + - fc_builtin: make sure an entry in the history list is non-null + before trying to write it to stdout or the temporary file. From a + report from Sibo Dong -lib/glob/glob.c - - {udequote,wcdequote}_pathname: now public void functions +builtins/common.[ch] + - builtin_arrayref_flags: given a WORD_DESC * (which includes flags) + and a base set of flags, return a set of flags to pass to + valid_array_reference and similar functions -lib/glob/smatch.c - - DEQUOTE_PATHNAME: defined appropriately to udequote_pathname or - wcdequote_pathname +builtins/set.def + - unset_builtin: call builtin_arrayref_flags to set vflags -lib/glob/sm_loop.c - - DEQUOTE_PATHNAME: appropriate extern declaration - - BRACKMATCH: call DEQUOTE_PATHNAME to dequote a character class name - in a bracket expression. This is the result of a discussion on the - austin-group mailing list, from Geoff Clare and - Robert Elz + 6/19 + ---- - 10/10 - ----- -execute_cmd.[ch] - - async_redirect_stdin: now a global function +parse.y + - parse_comsub: rewrite to recursively call the parser (yyparse()) and + return a string constructed from the resulting parse tree. Probably + will only work with bison. Error reporting is more accurate about + line numbers and invalid tokens, and command substitution errors + are caught earlier, before expansion + - DOLPAREN: new token, never created by yylex; only ever set by + parse_comsub and xparse_dolparen to indicate we're recursively + calling the parser for a command substitution + - comsub: new grammar production that's triggered by DOLPAREN and + parses a command substitution, returning a . It's one of + the possible end states for the top-level parser + - grammar: only call rewind_input_string if the shell's input is + coming from a string + - shell_ungets: push a string back onto the shell input; only used by + make_here_document for backwards compatibility -- allowing a here- + document to be terminated by a token at the end of a command + substitution + - yylex: don't need any more special handling when returning + shell_eof_token, but we keep the clause for future work + - read_token_word: don't handle backslashes (leave them in the input + stream) if we are reading a command substitution (PST_NOEXPAND) + - reserved_word_acceptable: allow reserved words after DOLPAREN + - report_syntax_error: better error handling if we hit EOF while + looking for the ending right paren in a command substitution + - parse_string_to_word_list,parse_compound_assignment: make sure to + turn off parse_comsub sentinel temporarily -subst.c - - process_substitute: call async_redirect_stdin in the child to keep - it from having stdin connected to the terminal, since it's not a - job control process +make_cmd.c + - make_here_document: backwards compatibility: if we end a here + document on the same line as the end of a command substitution, + allow the token to terminate the here document (without requiring + a newline) and push the remainder of the line back for the parser + to consume and terminate the command substitution - 10/11 - ----- -subst.c - - process_substitute: in the child process, set interactive = 0, since - an asynchronous process substitution process is not interactive. - Seems to fix issue reported by Grisha Levit +builtins/evalstring.c + - parse_string: if we read shell_eof_token and use it to terminate a + command, rewind the input string here before returning, instead of + guessing where to rewind it in the caller -lib/sh/shmatch.c - - sh_regmatch: implement a suggestion from Grisha Levit - and don't allow nocaseglob to enable case- - insensitive regexp matching. It hasn't been documented that way - in years + 6/22 + ---- - 10/30 - ----- -bashhist.c - - bash_add_history: fix a couple of problems with adding extra blank - lines to history entries containing here-documents. Fixes bug - reported by Oguz +redir.c + - do_redirection_internal: if VARASSIGN_REDIR_AUTOCLOSE is non-zero, + add a redirect to automatically close {var} +builtins/shopt.def + - varredir_close: new shell option, mirrors the value of + varassign_redir_autoclose. Suggested multiple times by multiple + people doc/{bash.1,bashref.texi} - - BASH_REMATCH: document that it's no longer set to readonly - -subst.c - - getpattern: since expand_string_for_pat leaves the pattern quoted, - we need to remove quoted nulls before running the string through - string_list (and then quote_string_for_globbing, since QGLOB_CVTNULL - only handles pat[0] == CTLNUL). Fixes bug reported by Oguz - - - 11/4 - ---- -configure.ac,config.h.in - - AC_HEADER_MAJOR: look for `major' and `minor' in various header files - and define MAJOR_IN_MAKEDEV or MAJOR_IN_SYSMACROS as appropriate. - From a patch from Eli Schwartz + - varredir_close: document new shell option (the name is tentative) -examples/loadables/finfo.c - - include and as appropriate for - definitions of major/minor - - 11/6 + 6/24 ---- -redir.c - - heredoc_expand: if we are expanding the WORD in a here-string, use - expand_assignment_string_to_string so the expansions are consistent - in contexts where word splitting is not performed. From a bug report - by Robin A. Meade - 11/7 - ---- parse.y - - xparse_dolparen: if the command substitution is incomplete or doesn't - end in `)', print an error message instead of allowing EOS to - terminate the comsub. From a bug report from - Oguz - - 11/11 - ----- -lib/sh/unicode.c - - u32toutf8: fix a typo that assigned the wrong value to the first - byte of a six-byte UTF-8 character. Report and fix from - István Pásztor + - yylex: if read_token returns a value < 0, return YYerror to the + parser + - parse_comsub: if the current_token is not shell_eof_token when + yyparse returns, return an error to read_token_word instead of + trying to keep parsing. Fixes interactive-only (?) bug reported by + Koichi Murase - 11/15 - ----- -doc/bash.1,lib/readline/doc/{history.3,hsuser.texi} - - quick substitution: make it clear that ^s1^s2^ is equivalent to - !!:s^s1^s2^, since that's the internal transformation we perform. - Reported by Jim Monte - - note that the `q' and `x' modifiers are mutually exclusive; last - one wins. Reported by Jim Monte - - note that the `G' modifier can work with `&' as well as `s'. - Reported by Jim Monte - - note that a word designator of `-' is equivalent to `0-'. - Reported by Jim Monte - - note that a missing `new' in a substitution modifier causes - instances of `old' to be deleted +parser.h + - PST_NOERROR: don't print error messages in yyerror(), just reset + the parser and return -lib/readline/histexpand.c - - history_expand_internal: make multiple :p modifiers work to suppress - execution. Reported by Jim Monte - - get_history_word_specifier: fix so a `^' word designator works as - the second part of a range. - Reported by Jim Monte - - hist_error: make sure we don't blindly copy a null character into - the error string (e.g., if there is a missing word designator - following `:'). Reported by Jim Monte - - get_history_event: if the history event specifier (!) is followed - immediately by a `-' and a non-digit (e.g. !-a), make sure the - is - treated as part of a search string instead of making it an offset of - 0. Reported by Jim Monte - - 11/19 - ----- -lib/readline/{colors,complete,histfile,input}.c,support/shobj-conf - - fixes to make readline compile on the latest HPE Nonstop (Tandem) - releases. From Randall S. Becker +parse.y + - yyerror: if parser_state & PST_NOERROR, don't print an error message + - xparse_dolparen: if the flags includes SX_COMPLETE, add PST_NOERROR + to parser_state, to inhibit error messages. Fixes bug with adding + lines with incomplete command substitutions to the history list + reported by Koichi Murase subst.c - - pat_subst: if we have a null match, make sure we advance by one - character, not one byte. Bug reported by Chris Carlen - - - 11/22 - ----- -jobs.[ch],nojobs.c,builtins/jobs.def - - get_job_by_pid: now takes a PROCESS ** third argument; if non-null, - it gets a pointer to the PROCESS struct corresponding to the PID - argument. A convenience, not used by any caller yet + - skip_matched_pair: make sure to pass the SX_COMPLETE flag to + extract_delimited_string -builtins/wait.def - - interrupt_immediately: remove any uses, no longer used anywheren + 6/28 + ---- -variables.c - - check_unbind_variable: return -2 if the variable name is readonly - (change) or non-unsettable (new) to differentiate the return value - from -1 from makunbound (which means variable not found) +lib/readline/bind.c + - rl_trim_arg_from_keyseq: handle rl_vi_arg_digit if VI_MODE is + defined. Report and fix from Koichi Murase + - rl_trim_arg_from_keyseq: rework to handle case where the digit + argument is given as a discrete sequence of multiple rl_digit_argument + commands (e.g, "M-1 M-2" instead of "M-1 2"). Report and fix from + Koichi Murase -builtins/common.[ch] - - builtin_unbind_variable: identical to check_unbind_variable but calls - builtin_error; for use by builtin commands +subst.c + - pat_subst: avoid calling RESIZE_MALLOCED_BUFFER with STRLEN(s) as an + argument, since it ends up going into a loop. Report and fix from + Koichi Murase -buitins/wait.def - - wait_builtin: now has -p VARNAME option, which takes the pid - returned by `wait -n' or wait without arguments and assigns it to - VARNAME, unsetting VARNAME first. Requested by Robert Elz - after a similar feature in netbsd sh (not - completely compatible yet) +lib/sh/casemod.c + - cval: take the string length as an argument, to avoid having to call + strlen every time (in HANDLE_MULTIBYTE mode). The caller already has + this info. Report and fix from Koichi Murase -doc/{bash.1,bashref.texi} - - wait: document new -p option +builtins/complete.def + - print_cmd_name: single-quote the command name if it contains any + shell metacharacters + - print_one_completion: call print_arg with a second arg of 1 if the + function name contains shell metacharacters. Report and fix from + Koichi Murase - 11/25 - ----- -lib/readline/display.c - - rl_redisplay: auto-set horizontal scrolling if the terminal has - only one line; disable it if we auto-set it if the terminal grows - to more than one line. Fix from Sören Tempel - + 6/30 + ---- -lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 - - horizontal-scroll-mode: document auto-setting behavior +configure.ac + - substitute BASE_CFLAGS_FOR_BUILD and STYLE_CFLAGS into Makefile + targets + - take STYLE_CFLAGS out of the CFLAGS_FOR_BUILD variable that gets + substituted + - remove STYLE_CFLAGS from CFLAGS + - use `:+' expansion to set variables based on whether $GCC is set + or null, since configure can do GCC= -builtins/set.def - - set_posix_mode: make setting posix mode when it's already set, or - unsetting it when it's not set, a no-op. Inspired by a report - from Ulrich Mueller +support/Makefile.in + - man2html: remove CCFLAGS_FOR_BUILD from the recipe, leaving only + LDFLAGS_FOR_BUILD. Report from Jay K + - gen-helpfiles: remove CCFLAGS_FOR_BUILD from the recipe, leaving + only LDFLAGS_FOR_BUILD + - man2html: use $(STYLE_CFLAGS) in BASE_CCFLAGS variable for C file + compilation options - 11/26 - ----- -doc/{bash.1,bashref.texi} - - functions: clarify that when in default mode, function names are not - limited to shell identifiers. - Suggested by Reuti +{,builtins}/Makefile.in, lib/{sh,readline,malloc,glob}/Makefile.in + - use STYLE_CFLAGS so specifying CFLAGS=-g to make doesn't clutter the + output with warnings about parens and format strings - 11/27 - ----- -lib/readline/display.c - - _rl_optimize_redisplay: tell the redisplay routines to not worry - about calculating differences between the lines and just draw the - new one. Right now, it just sets the _rl_quick_redisplay flag - - rl_redisplay: if _rl_quick_redisplay is set, just draw NEW onto - the screen at column 0 with a dumb update and clear the rest of - the line. Intended to be used when the caller knows the new line is - sufficiently different from the old one (e.g., when drawing the - i-search prompt for the first time) that it doesn't pay off to do - the calculations. As a side effect, fixes the bug reported by - ÐлекÑей Шилин + 7/9 + --- +lib/readline/search.c + - make_history_line_current: call _rl_free_saved_history_line to clean + up _rl_saved_line_from_history and get all the code that frees it + into one place -lib/readline/isearch.c - - rl_display_search: if there isn't a search string, assume this is - the first time this is called and call _rl_optimize_redisplay to - give the redisplay code a hint +lib/readline/misc.c + - _rl_free_saved_history_line: if rl_undo_list points to the data + member of _rl_saved_line_from_history, set it to NULL to avoid having + it point to freed memory, since the next thing we do now is to free + the undo list the data member points to + - _rl_start_using_history: call _rl_free_saved_history_line instead of + calling _rl_free_history_entry directly. Fixes memory leak reported + by Trung Dam - 12/2 + 7/12 ---- -builtins/wait.def - - wait_builtin: allow argument to -p to be a valid array subscript +lib/readline/search.c + - make_history_line_current: free rl_undo_list before replacing the + current line with the line from history, since it is a private + undo list from reading the search string - 12/3 - ---- -lib/readline/isearch.c - - _rl_isearch_fini: add call to _rl_optimize_redisplay because we are - switching the prompt back again and it's safer to redraw everything - (even though part of the line is the same) to deal with differences - in the prompt strings. Fixes additional problem reported by - ÐлекÑей Шилин +lib/readline/rlmbutil.h + - Since wchar_t/mbrtowc/wcrtomb are limited to 16 bits on Windows + with MSVC, start abstracting the differences using WCHAR_T/ + MBRTOWC/WCRTOMB -lib/readline/display.c - - update_line: quick redisplay no longer sets cpos_adjusted before - the dumb update - - update_line: adjust _rl_last_c_pos in the case of a dumb update if we - are redrawing the prompt that includes invisible characters, since - _rl_col_width does not. We adjust by the count of invisible chars in - the first line of the prompt - - update_line: make sure to clear the rest of the line if it looks like - the number of visible characters on the new line is less than the - number of visible characters on the current line; the old calculation - does that just for the number of bytes (which is also useful) - - 12/4 - ---- -lib/readline/display.c - - rl_redisplay: if we are changing from one line to multiple lines, - don't try quick redisplay - - update_line: changes to quick redisplay to take advantage of knowing - the physical length of the prompt to avoid having to compute column - widths of the prompt string again; moved code to call clear screen - to the quick update section; no longer performs `goto dumb_update' - - update_line: try to take advantage of prompt_physical_chars when we - know we have written the prompt string (several places) to set - _rl_last_c_pos and calculate column widths - - update_line: if the spot where the old and new lines are the same is - before the end of the prompt string, adjust NLS and OLS so we write - the entire prompt string (as long as it's all on one line) and can - take advantage of already knowing prompt_physical_chars so we don't - have to compute column widths - - update_line: when copying chars from first diff to last match, adjust - _rl_last_c_pos by prompt_invis_chars_first_line, not wrap offset, - since we are on the first line, and only do this if we inserted more - bytes than wrap_offset (old code checked _rl_last_c_pos, which is - wrong in the presence of multibyte characters) - - 12/5 + 7/13 ---- -lib/readline/display.c - - ADJUST_CPOS: define macro and use it in places where _rl_last_c_pos - is changed - 12/12 - ----- -lib/readline/isearch.c - - _rl_isearch_dispatch: check for multibyte characters mapped to one - of the editing functions we treat specially to modify the search - string +lib/readline/{complete,display,input,text,util,vi_mode}.c + - use WCHAR_T/MBRTOWC/WCRTOMB. Part of a set of Windows MSVC fixes + from sparrowhawk996@gmail.com - 12/13 - ----- -support/shobj-conf - - FreeBSD and Dragonfly are ELF-only and can use the same code as - Linux, so add those to the linux stanza and remove the old FreeBSD - version-specific sections. Report and fix from Baptiste Daroussin - +builtins/{enable,hash,help}.def + - enable_builtin: use sh_chkwrite after output to check for write errors + + 7/16 + ---- +arrayfunc.c + - quote_compound_array_word: free SUB and VALUE after assigning from + sh_single_quote(). From a coverity report from + Siteshwar Vashisht -bashline.[ch] - - bash_execute_unix_command: no longer static, available for other - parts of the shell to use +bashhist.c + - bash_remove_history_range: free DISCARD_LIST after freeing its + elements bashline.c - - unbind_unix_command: take a key sequence as an argument, and unbind - it in the appropriate unix command keymap + - bash_directory_expansion: add code to free D as a separate branch, + though it's never hit in practice -builtins/bind.def - - unbind_keyseq: if we are unbinding a key sequence bound to - bash_execute_unix_command, which means it was added by `bind -x', - call unbind_unix_command() to remove it from the appropriate unix - command keymap. Fixes issue originally raised by - Koichi Murase and recently by - Å imon Let - - bind_builtin: check the number of bindings to bash_execute_unix_command - before and after a call to rl_parse_and_bind and if there are fewer - after binding, we know that the bind has re-bound one of the key - sequences that was bound to execute a shell command. We unbind any - key sequences from the list before the call to rl_parse_and_bind that - don't appear in the list after the call using unbind_unix_command - - 12/19 - ----- -include/posixstat.h - - added some definitions for MinGW. Report and patch from - Eli Zaretskii +builtins/trap.def + - showtrap: free T even if show_default == 1 if it's a non-default + trap string - 12/20 - ----- -lib/readline/display.c - - update_line: when wrapping lines containing multibyte characters at - the wrap point, and the number of screen positions consumed by the - first character on the new line isn't the same as the old line, - make sure we set OE before the `goto dumb_update;' since clearing - the rest of the line may use it. Tentative fix for bug reported by - Kirill Chibisov + 7/17 + ---- +execute_cmd.c + - execute_coproc: free NAME on invalid identifier error -lib/readline/signals.c - - _rl_signal_handler: set RL_STATE_SIGHANDLER around SIGWINCH code, - like _rl_handle_signal does +lib/glob/glob.c + - glob_vector: make sure NEXTLINK is allocated using malloc before + passing it to free() + - glob_filename: free RESULT before returning glob_error_return when + there is only a filename - 12/26 - ----- -lib/sh/stringvec.c - - strvec_posixcmp: new function that conforms to posix requirement for - sorting globs: perform a bytewise comparison if the two strings - collate equally. Posix interp 963 and 1070 - - strvec_sort: take a new flags argument, if non-zero use the posix - string comparison function +print_cmd.c + - indirection_level_string: make sure we free PS4 after calling + decode_prompt_string if *ps4 == 0 -pathexp.c - - shell_glob_filename: call strvec_sort with the flag value to be - posix conformant +subst.c + - parameter_brace_transform: if vtype == VT_VARIABLE, we need to free + a non-null VAL -lib/sh/stringlist.c - - strvec_sort: change callers +variables.c + - assign_in_env: if NAME is not a valid shell identifier, free it + after printing the error message and before returning. These are + the rest of the fixes from Siteshwar Vashisht - 12/29 - ----- -sig.c - - throw_to_top_level: set running_trap to 0 after calling run_trap_cleanup. - This avoids spurious (in non-release versions) warnings from - run_pending_traps the next time a trap handler for that signal - runs. Bug report from Martijn Dekker + 7/22 + ---- +shell.c + - main: set dollar_vars[0] to shell_script_filename before calling + run_startup_files() in the non-interactive case. Restore it after + run_startup_files returns so we can get better error messages if + we can't open a script file. Suggested by several people, originally + by Marc Aurèle La France back in 2/2021 (in a + different form) and most recently by Tapani Tarvainen + - 1/14/2020 - --------- -bashline.c - - find_cmd_start: don't treat the open brace in brace expansion as a - command start character; only treat open brace specially if it can - be a reserved word. Fixes bug reported back in October, 2019 in - https://savannah.gnu.org/support/index.php?110063 + 7/28 + ---- +trap.c + - any_signals_trapped: return that a signal is trapped only if it's + not ignored. This is an additional opportunity for optimization, + reported in https://bugzilla.redhat.com/show_bug.cgi?id=1981926 - 1/15 + 7/30 ---- -lib/readline/readline.c - - _rl_dispatch_subseq,_rl_subseq_result: if we push back a character - with _rl_unget_char or otherwise go back up the chain without a - sequence match, make sure we back up in rl_executing_keyseq. - Report and fix from Koichi Murase +examples/loadables/sleep.c + - main: if the uconvert conversion fails, but the argument appears to + contain a GNU-like interval specifier like "1m30s", return + EX_DISKFALLBACK so the execute_builtin code tries to run the + external version -builtins/bind.def - - unbind_keyseq: if we unbind something that ends up pointing to a - shadow keymap, restore the ANYOTHERKEY binding that we used when - binding it. - Report and fix from Koichi Murase +builtins/enable.def + - enable_shell_builtin: if the builtin isn't found, return EX_NOTFOUND + to allow the caller (enable_builtin) to react differently if it + wants to + - dyn_load_builtin: if the shared object isn't found, return EX_NOTFOUND, + change enable_builtin to deal with it + - enable_builtin: if there are no supplied options, and we attempt to + enable a non-existent builtin, try modifying `enable name' to the + equivalent of `enable -f name name' and return success if we + successfully load a builtin from a shared object. Proposed several + times, most recently by Robert Elz -bashline.c - - bash_execute_unix_command: if we walked cmd_xmap for rl_executing_keyseq - and ended up pointing to a keymap (type == ISKMAP) we want the - binding for ANYOTHERKEY instead. - Report and fix from Koichi Murase +doc/{bash.1,bashref.texi} + - enable: document new behavior of `enable NAME' when NAME is not a + current shell builtin -lib/readline/bind.c - - rl_bind_key: if we're trying to bind a key sequence containing '\0' - using the old-style binding syntax (C-SPC), make sure we quote the - NULL so it will make it through rl_translate_keyseq(). - Report and fix from Koichi Murase - - rl_bind_key: if we're overwriting a binding for a macro, make sure to - free the old macro value. - Report and fix from Koichi Murase - - rl_generic_bind: if we're overwriting a macro saved to ANYOTHERKEY in - a shadow keymap created by rl_generic_bind, make sure to free the - macro data. - Report and fix from Koichi Murase + 8/3 + --- +lib/glob/sm_loop.c + - GMATCH: check for interrupts or terminating signals each time through + the loop and return FNM_NOMATCH immediately if received. Let the + higher layers deal with interrupting the match and jumping out. + Inspired by a report from andrej@podzimek.org -trap.c - - run_pending_traps: save and restore the value of running_trap around - cycle through pending signals so recursive trap handler calls don't - set running_trap to 0 - - _run_trap_internal: allow some signals the shell treats specially - (e.g., SIGINT) to run recursive handlers - - _run_trap_internal: don't turn off SIG_INPROGRESS flag if it was on - for this signal when _run_trap_internal was called - - _run_trap_internal: save and restore the value of running_trap around - running the trap handler, except for SIGCHLD. Fixes bug reported by - Martijn Dekker + 8/6 + --- +subst.c + - {parameter_brace_remove_pattern,parameter_brace_transform, + parameter_brace_substring,parameter_brace_casemod, + parameter_brace_patsub}: make sure the IND argument is of type + arrayind_t to handle the full range of subscripts. Reported by + felix@f-hauri.ch - 1/16 - ---- -general.c - - posix_initialize: if turning posix mode off, restore settings from - any saved set, if one exists, instead of setting a default environment +builtins/printf.def + - printf_builtin: take new format specifier: %Q. This acts like %q + but applies any supplied precision to the original unquoted + argument, then quotes that result and outputs the entire quoted + string, preserving the original field width. Originally suggested + back in 4/2020 by Sam Liddicott - 1/17 - ---- +subst.c + - char_is_quoted: check whether or not we are on the second or later + line of a command with an unclosed quoted string from a previous + line. If we are, see if it's closed before the character we're + checking, so we don't interpret a closing quote as starting a new + quoted string. Reported several times, most recently by + Phi Debian in 6/2021. + + 8/9 + --- parse.y,subst.c - - process_substitution: now available in POSIX mode. Most recently - requested by Martijn Dekker ; requested several - times in the past + - locale_expand: if the variable SINGLEQUOTE_TRANSLATIONS is non-zero, + single-quote the translated result of $"..." (if it's different from + the untranslated string) -doc/bashref.texi - - posix mode: remove restriction that posix mode is not available +builtins/shopt.def + - noexpand_translation: new option to expose the value of + SINGLEQUOTE_TRANSLATIONS -lib/readline/vi_mode.c - - rl_domove_motion_callback: make sure to extend rl_line_buffer so it - can hold the dummy blank character we're appending. From a fuzzing - report by Tillmann Osswald - - vi_yank_dispatch: after we do an undo, make sure to fix point to be - less than the (new) rl_end + 8/10 + ---- +doc/{bash.1,bashref.texi} + - noexpand_translation: add description of new option -lib/readline/text.c - - rl_forward_word: make sure that MB_NEXTCHAR doesn't go past rl_end on - invalid multibyte sequences + 8/16 + ---- +builtins/printf.def + - printf_builtin: initialize retval after parsing arguments, since we + use it for the `v' option. Bug report from Keith Thompson + - 1/18 +lib/sh/unicode.c + - u32tocesc: fix typo that returned \uXXXXXXXX instead of \UXXXXXXXX. + From https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=992257 by + + + 8/17 ---- -test.c - - for the `-v' operator, use a clever trick from Martijn Dekker and - just test whether N is between 0 and $#. +siglist.c + - include command.h before general.h for PARAMS and prototypes. Report + from Osipov, Michael (LDA IT PLM) - 1/21 + 8/18 ---- -lib/readline/text.c - - rl_change_case: fix argument to rl_extend_line_buffer; make sure to - reset s and e after call in case rl_line_buffer was reallocated +lib/readline/colors.c + - S_ISBLK: make sure it's defined before we use it, like in complete.c -lib/readline/vi_mode.c - - _rl_vi_save_replace: if start ends up being less than zero, make - sure we don't read before the start of rl_line_buffer - - rl_vi_overstrike_kill_line,rl_vi_overstrike_kill_word: replacement - functions for ^U and ^W in vi overstrike mode, to keep right value - for vi_replace_count. - - rl_vi_overstrike_yank: similar for ^Y and rl_yank +lib/readline/complete.c,{bashline,variables}.c + - minor changes to prep for making rl_completer_word_break_characters + `const' - 1/22 - ---- -lib/readline/display.c - - update_line: if we're trying to wrap lines on an autowrap terminal, - punt and do a dumb update if the number of bytes in the first char - on the new line is greater than the number of bytes in the first char - of the old line. There's no guarantee we'll be able to extend the - old line buffer enough to accommodate the new bytes - - update_line: try to avoid some operations when wrapping lines if the - number of bytes in the first characters of the old and new lines is - the same - - update_line: when updating vis_lbreaks after fixing up the lines when - wrapping, make sure we don't exceed an index of _rl_vis_botlin when - updating the line break offsets +subst.[ch],pcomplete.c + - split_at_delims: the DELIMS argument is now `const'; change callers -lib/readline/text.c - - rl_delete_text: if deleting text leaves the mark past rl_end, adjust - it to rl_end +lib/readline/rlmbutil.h + - _rl_wcwidth: add function prototype for inline function declaration -lib/readline/vi_mode.c - - _rl_vi_goto_mark: make sure to call _rl_fix_point after setting - rl_point to rl_mark +lib/readline/bind.c + - _rl_get_keyname: print keys greater than 160 (which are valid UTF-8) + as octal escape sequences - 1/23 +lib/readline/text.c + - do_lowercase_version: return 99999 to prevent the linker from + combining it with _rl_null_function and optimizing away the separate + copy. That messes with function pointer comparisons. Part of this + batch of fixes from sparrowhawk996@gmail.com + + 8/19 ---- -lib/readline/kill.c - - rl_kill_region,region_kill_internal: call _rl_fix_point +complete.c,readline.c,readline.h + - rl_completer_word_break_characters: now const char * like + rl_basic_word_break_characters; element of readline state struct + used to save it also const. THIS IS AN API CHANGE -lib/readline/text.c,lib/readline/rlprivate.h - - _rl_fix_mark: new function to clamp rl_mark between 0 and rl_end +bashline.c + - orig_rl_completer_word_break_characters: now const char * like + rl_completer_word_break_characters - 1/24 - ---- -lib/readline/bind.c - - rl_translate_keyseq: rework how key sequences are translated with - the intent of normalizing backslash treatment. Since the current - behavior of, e.g., \C-\\, is inconsistent, this change chooses to - effectively treat and display \\ as \\ instead of \C-\. This is not - completely backwards compatible, but it seems like the most reasonable - choice. This allows things like \M-\a but is not compatible with - pre-bash-4.4 (readline 7.0) handling of \C-\, which is now treated - like \C-\0. If that proves to be a problem, we can add code to - understand \C-\ as equivalent to \C-\\. Since attempting to bind - "\C-\" has generated an error for a long time, it doesn't seem like - it will be too much of a problem. - Fixes from Koichi Murase - - rl_invoking_keyseqs_in_map: make sure to consistently output - backslash as `\\' instead of producing `\C-\' - Fixes from Koichi Murase - - 1/29 + 8/20 ---- bashline.c - - readline_get_char_offset: translate a readline buffer offset - (rl_point, rl_mark, rl_end) into a number of (possibly multibyte) - characters - - readline_set_char_offset: translate a number of (possibly multibyte) - characters into a buffer offset in rl_line_buffer. Uses a private - readline function to do it, which is bad - - bash_execute_unix_command: use readline_{get,set}_char_offset to - translate the rl_point to a character offset - - bash_execute_unix_command: bind READLINE_MARK variable, exposing - the value of rl_mark to `bind -x' functions + - bash_directory_completion_hook: if direxpand and dirspell are both + set while trying to complete an absolute pathname as a command, don't + take a spell-corrected directory name that is shorter than the + original hint. https://bugzilla.redhat.com/show_bug.cgi?id=1782809 + +builtins/common.[ch] + - sh_noassign: convenience function to print an error message when a + user attempts an assignment to a "noassign" variable. Not used yet + +assoc.[ch] + - assoc_to_kvpair_list: new function, returns a WORD_LIST containing + key-value pairs as separate words + +array.[ch] + - array_to_kvpair_list: new function, returns a WORD_LIST containing + index-value pairs as separate words + +subst.c + - string_transform: handle '@k' transform like '@K' + - valid_parameter_transform: 'k' is a valid transform operator + - array_transform: handle '@k' transformation by calling one of + array_to_kvpair_list or assoc_to_kvpair_list and treating the + result as if expanding the array depending on whether the index is + `@' or `*' with the usual meanings doc/{bash.1,bashref.texi} - - READLINE_MARK: document new variable set by the shell + - document new '@k' parameter transformation operator - 1/31 + 8/27 ---- -examples/loadables/accept.c - - accept: new loadable builtin that will accept a TCP connection on a - specified port. Inspired by Stan Marsh - - 2/1 - --- -lib/readline/histfile.c - - history_do_write,history_truncate_file: translate the return value rv - to errno when histfile_restore returns -1 (e.g., if rename() fails). - Report and fix from A +lib/readline/kill.c + - rl_unix_filename_rubout: handle pathnames that consist only of one + or more slashes. The old code went too far and deleted the previous + word as well. From dabe@dabe.com - 2/3 - --- -lib/sh/ufuncs.c - - fsleep: if pselect/select is interrupted by a signal, return -1 and - let the caller deal with it + 8/31 + ---- +parse.y + - STRING_SAVER: now save and restore shell_input_line_len; not sure + why it wasn't done before; fix push_string and pop_string accordingly + - prompt_again: now takes a parameter FORCE; not used yet (every + caller passes 0), needs more thought -lib/sh/timeval.c - - multimeval: new function, multiply a timeval by a constant integer - - divtimeval: new function, divide a timeval by a constant integer +builtins/evalstring.h + - open_redir_file: broke code that expands the redirection and opens + the resultant filename into a new function, called from cat_file -lib/sh/uconvert.c - - uconvert: new additional argument: EP. If non-null, it gets the - address of the first non-digit that ends conversion (like strtod); - we try to do as much of the conversion as possible if EP is set so - the caller can clean up +redir.h + - open_redir_file: extern declaration here for now - 2/4 - --- -examples/loadables/mkfifo.c - - mkfifo: new loadable builtin +builtins/evalstring.c + - parse_string: takes a new argument: COMMAND **cmdp; if non-null, saves + the parsed command to *cmdp and lets the caller manage it itself. + global_command is still not modified. Changed callers in parse.y - 2/6 + 9/1 --- -variables.c - - make_local_variable: make sure local variables that have the same - names as variables found in the temporary environment are marked as - local. From Grisha Levit back in 12/2018 +parse.y + - parse_string_to_command: stripped-down version of xparse_dolparen + that takes a string, runs it through the parser, and returns the + resultant COMMAND *; uses parse_string with the new argument - 2/7 - --- -sig.[ch] - - restore_sigmask: function to restore top-level signal mask using - sigprocmask +externs.h + - parse_string_to_command: extern declaration -{sig,eval,jobs,nojobs}.c - - replace calls to sigprocmask with restore_sigmask(); remove extern - declarations of top_level_mask +builtins/evalstring.c + - can_optimize_cat_file: new function, takes a COMMAND * argument and + returns true if the command can be optimized like $(&", see if we can optimize the command and call + optimize_cat_file to do it if we can. -execute_cmd.c - - execute_pipeline: if lastpipe is enabled and we're executing the - rightmost pipeline element in the current shell, make sure to unblock - SIGCHLD before calling execute_command, in case `return' or `exec' - is run and that call doesn't return. From a report by - Harald van Dijk following up to a report - by Martijn Dekker + 9/2 + --- +configure.ac,config.h.in,lib/sh/setlinebuf.c + - SETVBUF_REVERSED: remove all references - 2/10 - ---- -builtins/trap.def - - trap_builtin: in posix mode, when trap is run with -p, show - the disposition of all signals, even those that are still in the - default state, including signals that were ignored when the shell - starts up and haven't been reset. Don't do it in default mode. - From an austin-group discussion back in April, 2019 (interp 1211) +configure.ac,aclocal.m4 + - AC_OUTPUT: move created files and commands to AC_CONFIG_FILES and + AC_CONFIG_COMMANDS; call AC_OUTPUT without any arguments + - require autoconf version 2.63 + - AC_HELP_STRING -> AS_HELP_STRING + - replace references to $ac_cv_prog_gcc with $GCC + - AC_C_LONG_DOUBLE -> AC_TYPE_LONG_DOUBLE + - enable-alt-array-implementation: new configure option, placeholder + for later -findcmd.c - - search_for_command: don't add commands without the execute bit set - to the command hash table. From https://savannah.gnu.org/patch/?9789 - contributed by michaeljs1990 +unwind_prot.c + - stddef.h: include if HAVE_STDDEF_H is defined, not STDC_HEADERS - 2/11 - ---- -expr.c - - strlong: require `base#' to be followed by an integer constant; - otherwise throw an error. From a report from Jeremy Townshend - back in June, 2019 +bashansi.h + - memory.h: don't include any more; assume has all the + necessary defines -test.c - - unary_test: allow -v N to test whether or not positional parameter - N is set. Most recently suggested by Peng Yu - and Martijn Dekker +aclocal.m4 + - AC_HEADER_STDC: remove AC_REQUIRE calls to this; change tests to use + appropriate checks instead of STDC_HEADERS -builtins/getopts.def - - dogetopts: use number_of_args() to compute the number of positional - parameters + 9/3 + --- +configure.ac,config.h.in + - AC_TYPE_SIGNAL,BASH_TYPE_SIGHANDLER: remove calls, remove mention of + RETSIGTYPE and VOID_SIGHANDLER + - AC_USE_SYSTEM_EXTENSIONS: use this instead of AC_ISC_POSIX (which is + well and truly obsolete) and AC_MINIX (which just calls it anyway). + All the right defines are already present + - AC_HEADER_TIME: removed + - AC_HEADER_STDC: removed + - AC_DECL_SYS_SIGLIST: replaced with BASH_DECL_SYS_SIGLIST + - BASH_FUNC_CTYPE_NONASCII: removed + +sig.h,lib/readline/signals.c + - RETSIGTYPE -> void, SIGHANDLER_RETURN -> return + +include/posixtime.h + - don't bother with TIME_WITH_SYS_TIME, just include if + we have it and include unconditionally + +include/chartypes.h,lib/readline/chardefs.h + - IN_CTYPE_DOMAIN: no longer uses STDC_HEADERS define, checks against + CHAR_MAX for non-C89 systems, still a no-op on C89 systems + +lib/readline/chardefs.h + - memory.h: don't include, no need for STDC_HEADERS; assume the mem* + functions are defined in as in C89 + - now that we assume IN_CTYPE_DOMAIN bounds its argument to unsigned + chars, we don't need NON_NEGATIVE checks at all + +lib/readline/chardefs.h,util.c + - ALPHABETIC -> _rl_alphabetic_p -{findcmd,variables,subst,trap,sig}.h,builtins/common.h - - __P --> PARAMS + 9/8 + --- -builtins/shift.def,builtins/common.c - - shift_builtin: moved code that modifies dollar_vars and rest_of_args - to common.c:shift_args(int times), part of move to localize changes - to positional parameters +lib/sh/strftime.c + - include after reworking above; include + unconditionally in case it defines time_t. From a report by + Ori Sky Farrell -builtins/common.c,variables.c - - posparam_count: keep a running count of the number of posititional - parameters when dollar_vars and rest_of_args are set + 9/9 + --- +lib/readline/search.c + - rl_history_search_internal: set rl_undo_list to NULL after calling + rl_maybe_save_line, since it will be restored one way or another + after the search completes, and we don't want it to be freed twice + - rl_history_search_internal: leave the current history offset at the + position of the last matching history entry. This means that things + like ^P will start back from that history entry, ^N will move + forward from there, and operate-and-get-next will work like it does + with incremental searches. Reported by Vandrus Zoltán + - 2/12 + 9/10 ---- -subst.c - - number_of_args: just return posparam_count +aclocal.m4 + - BASH_C_LONG_LONG: removed + - BASH_TYPE_LONG_DOUBLE: removed + - BASH_TYPE_LONG_LONG,BASH_TYPE_UNSIGNED_LONG_LONG: removed + - BASH_FUNC_CTYPE_NONASCII: removed + - BASH_SYS_SIGNAL_VINTAGE,BASH_SYS_REINSTALL_SIGHANDLERS: don't + require AC_TYPE_SIGNAL, use void instead of RETSIGTYPE + - BASH_TYPE_SIGHANDLER: removed + +configure.ac,aclocal.m4,config.h.in + - BASH_TYPE_LONG_LONG: removed, call AC_TYPE_LONG_LONG_INT directly, + change #define to HAVE_LONG_LONG_INT + - BASH_TYPE_UNSIGNED_LONG_LONG: removed, call AC_TYPE_UNSIGNED_LONG_LONG_INT + directly, change #define to HAVE_UNSIGNED_LONG_LONG_INT + +externs.h,include/typemax.h,lib/sh/{fmtullong,snprintf,strtoimax,strtoll, +strtoull,strtoumax}.c + - HAVE_LONG_LONG -> HAVE_LONG_LONG_INT + - HAVE_UNSIGNED_LONG_LONG -> HAVE_UNSIGNED_LONG_LONG_INT -builtins/shift.def - - shift_builtin: if asked to clear the positional parameters with - something like `shift $#', just call clear_dollar_vars instead of - iterating through them, unsetting them one by one +configure.ac + - AC_TRY_COMPILE -> AC_COMPILE_IFELSE + - BASH_CHECK_TYPE (intmax_t) -> AC_TYPE_INTMAX_T + - BASH_CHECK_TYPE (uintmax_t) -> AC_TYPE_UINTMAX_T + - BASH_CHECK_TYPE (sig_atomic_t): removed -subst.[ch],builtins/common.[ch] - - number_of_args: moved to builtins/common.c +aclocal.m4 + - BASH_FUNC_STRSIGNAL: changed to use AC_LINK_IFELSE + - BASH_FUNC_LSTAT: changed to use AC_LINK_IFELSE + - BASH_FUNC_SBRK: changed to use AC_LINK_IFELSE and AC_RUN_IFELSE, + fixed typo + - BASH_CHECK_SPEED_T: changed to use AC_COMPILE_IFELSE + - BASH_TYPE_SIG_ATOMIC_T: use BASH_CHECK_TYPE instead of AC_CHECK_TYPE + - BASH_STRUCT_DIRENT: new macro, like _AC_STRUCT_DIRENT but public and + sets a different bash-specific shell variable + - BASH_STRUCT_DIRENT_D_{INO,FILENO,NAMLEN}: call BASH_STRUCT_DIRENT + with a different first argument instead of using inline code and + AC_TRY_COMPILE - 2/14 + 9/11 ---- -subst.c - - clear_fifo_list: when using named pipes, clear out the FIFO list - without unlinking anything and set NFIFO to 0 +[prayers for the victims of 9/11/2001] -execute_cmd.c - - execute_disk_command: in the child, clear out the FIFO list, since - we haven't created any FIFOs yet - - execute_in_subshell: clear out the FIFO list, since we haven't - created any FIFOs yet +aclocal.m4 + - BASH_CHECK_DECL: just call AC_CHECK_DECLS and use the default + includes, which includes the files we used to specify + - BASH_FUNC_INET_ATON: changed to use AC_LINK_IFELSE + - BASH_STRUCT_WEXITSTATUS_OFFSET: changed to use AC_RUN_IFELSE + - BASH_FUNC_OPENDIR_CHECK: changed to use AC_RUN_IFELSE + - BASH_FUNC_ULIMIT_MAXFDS: changed to use AC_RUN_IFELSE + - BASH_UNDER_SYS_SIGLIST: changed to use AC_RUN_IFELSE + - BASH_SYS_SIGLIST: changed to use AC_RUN_IFELSE + - BASH_FUNC_DUP2_CLOEXEC_CHECK: changed to use AC_RUN_IFELSE + - BASH_FUNC_GETENV: changed to use AC_RUN_IFELSE + - BASH_FUNC_GETCWD: changed to use AC_RUN_IFELSE + - BASH_FUNC_FNMATCH_EXTMATCH: changed to use AC_RUN_IFELSE + - BASH_FUNC_POSIX_SETJMP: changed to use AC_RUN_IFELSE + - BASH_FUNC_STRCOLL: changed to use AC_RUN_IFELSE + - BASH_FUNC_PRINTF_A_FORMAT: changed to use AC_RUN_IFELSE + - BASH_SYS_PGRP_SYNC: changed to use AC_RUN_IFELSE + - BASH_SYS_SIGNAL_VINTAGE: changed to use AC_RUN_IFELSE + - BASH_SYS_NAMED_PIPES: changed to use AC_RUN_IFELSE + - BASH_CHECK_RTSIGS: changed to use AC_RUN_IFELSE + - BASH_CHECK_MULTIBYTE: changed to use AC_RUN_IFELSE + - RL_LIB_READLINE_VERSION: changed to use AC_RUN_IFELSE + - BASH_CHECK_WCONTINUED: changed to use AC_RUN_IFELSE + - BASH_FUNC_SNPRINTF: changed to use AC_RUN_IFELSE + - BASH_FUNC_VSNPRINTF: changed to use AC_RUN_IFELSE + - BASH_FUNC_FNMATCH_EQUIV_FALLBACK: changed to use AC_RUN_IFELSE + - BASH_DECL_PRINTF: changed to use AC_RUN_IFELSE + - BASH_TYPE_RLIMIT: rewrote to avoid quad_t, now uses AC_COMPILE_IFELSE + to determine whether rlim_t is available, otherwise determines the + value of RLIMTYPE based on sizeof(rlim.rlim_cur): int, long, or + long long + - BASH_SIZEOF_RLIMIT,BASH_SIZEOF_QUAD_T: helper macros for + BASH_TYPE_RLIMIT in the case that rlim_t is not present -parse.y - - special_case_tokens: allow `time -- command' +configure.ac + - BASH_CHECK_DECL -> AC_CHECK_DECLS + - quad_t: use AC_CHECK_TYPE (new style) instead of BASH_CHECK_TYPE - 2/21 - ---- -subst.c - - get_var_and_type: if an unset variable (not an array) is supplied - with the `[@]' subscript, don't return "". Fix to bug reported by - Arfrever Frehtes Taifersar Arahesis ; - original bug introduced 7/29/2018 - - array_transform: take a STARSUB argument instead of VARNAME, since - we've already computed what kind of index the array reference uses - in get_var_and_type, and passing VARNAME to figure out the index - type doesn't do the right thing when we're using indirect variable - expansion. Fixes bug reported by - Arfrever Frehtes Taifersar Arahesis - - array_remove_pattern: take the same new STARSUB argument for the - same reason - - parameter_brace_transform,parameter_brace_remove_pattern: change - callers to pass STARSUB instead of VARNAME - - 2/22 + + 9/14 ---- execute_cmd.c - - fix_assignment_words: if an assignment is supplied to a builtin that - creates or modifies local variables while a function is executing, - set the W_FORCELOCAL flag for that word in addition to any of the - various assignment flags + - time_command: if we longjmp back to the top_level we saved, make sure + we're in the same subshell environment before printing the timing + stats. We could have longjmped back from a child process of the + command or pipeline we want to time. From a report by + Sergej Alikov + - time_command: restore command->flags even if we longjmp back -subst.c - - shell_expand_word_list: while processing a list of assignments that - are arguments to a builtin that creates or modifies local variables, - if make_internal_declare fails while attempting to create the local - variable (or give it attributes), skip attempting the assignment but - otherwise do not make this a fatal error. This results in two error - messages: one to create the variable or modify its attributes, and - one while attempting to assign the value, but the errors to not - cause the function to return immediately. Fixes inconsistency - reported by Arfrever Frehtes Taifersar Arahesis - +general.c + - check_binary_file: if the first line of the ENOEXEC file starts with + a `#!', check the rest of the buffer for NULs to determine whether + this is a binary file. Since we only check the first line, a #! line + followed by binary data could be confused for a shell script - 2/23 + 9/16 ---- -trap.c - - first_pending_trap: generalize into first_pending_trap and - next_pending_trap - -wait.def - - wait_builtin: close up the trapped-signal-arrives hole a little more - by looking for a signal that arrived between the last check for - pending traps and setting wait_intr_flag and behaving as if it - arrived while wait was executing. Use first_pending_trap and - next_pending_trap to find a pending trap that is not SIGCHLD - -trap.c - - trap_handler: longjmp to wait_intr_buf unconditionally if - wait_intr_flag is set; don't bother with interrupt_immediately any - more - -variables.c - - all_local_variables: now takes an arg saying whether to restrict - return value to visible variables or return all local variables, - even those that are unset (the new default) - - visible_variable_in_context: new function, restricts return values - to set local variables in the current context; variable_in_context - now returns all local variables in the current context, even the - unset ones - -variables.h - - all_local_variables: change extern function declaration - -builtins/setattr.def - - show_local_var_attributes: show all local variables at the current - variable context, including unset ones, and their attributes - - show_localname_attributes: show attributes for NAME as long as NAME - resolves to a local variable at the current variable context, even - if NAME is unset +bashjmp.h + - EXITBLTIN: new longjmp `code' value: used by the exit builtin -builtins/common.h - - show_local_var_attributes, show_localname_attributes: new extern - declarations +{execute_cmd,shell,subst,trap}.c,builtins/evalstring.c + - treat EXITBLTIN exactly the same as EXITPROG (for now) -builtins/declare.def - - declare_internal: allow `-p' option for `local' builtin - - declare_internal: if `local' is supplied without options, or with - the `-p' option, but no variable name arguments, display all local - variables at the current variable context by calling - show_local_var_attributes - - declare_internal: if `local -p' is supplied with variable name - arguments, call show_localname_attributes to display the attributes - for that name if it resolves to a local variable at the current - variable context. Fixes issue reported by - pepa65 +builtins/exit.def + - exit_builtin: jump_to_top_level with value EXITBLTIN -subst.c - - array_var_assignment: if VAR is unset, print the declare command - without the assignment statement, just with the attributes - - array_transform: special-case the 'a' attribute and return the - attribute string even if the array variable is unset. Feature request - from Arfrever Frehtes Taifersar Arahesis - - parameter_brace_transform: if asked to display the attributes and - value ('A') of an unset variable, make sure we pass the variable, if - it exists with attributes but without a value, to string_transform - - string_transform: if we don't have a value but the operator is 'A', - pass the variable through to string_var_assignment - - string_var_assignment: if we have an unset variable with attributes, - return a declare command that just sets the attributes. Feature request - from Arfrever Frehtes Taifersar Arahesis +builtins/evalstring.c + - parse_and_execute: EXITBLTIN has its own case, with the same contents + as EXITPROG - 2/24 + 9/17 ---- -locale.c - - mblen: don't try to use unless HANDLE_MULITBYTE is defined. From - https://savannah.gnu.org/support/?110200 - - set_default_locale: if HAVE_SETLOCALE isn't defined, set the default - locale to "C" +builtins/evalstring.c + - parse_and_execute: change EXITBLTIN case to avoid running the + unwind-protect stack to the `pe_dispose' tag (which has the effect + of running all the unwind-protects installed by the commands in + the string) if we're executing in a function and EXIT is trapped. + This has the effect of running the EXIT trap in the function context, + which is what we do when we're not in parse_and_execute (eval, + bash -c, command substitution, etc.) - 2/25 + 9/18 ---- -general.c - - interrupt_immediately: remove all references to this that are - already commented out - - 3/2 - --- -variables.c - - push_var_context,push_posix_tempvar_internal: assignment statements - preceding shell functions no longer persist after the function - completes in posix mode. POSIX interp #654, was in P1003.1-2017 - - push_posix_temp_var: variable assignments preceding special builtins - now act as if an assignment statement had been executed in posix mode - (the Posix `current execution environment') instead of unconditionally - creating a global variable - -trap.c - - clear_pending_traps: new function, just clears the pending traps flag - for all signals - - 3/6 - --- -execute_cmd.c - - execute_in_subshell: check for interrupts and terminating signals - before resetting the terminating signal handlers, and clear all - pending traps -- they're not pending for us and we should not run a - trap handler for them - - execute_in_subshell: enable bash-5.1 change from 11/29/2018 that - resets the signal-in-progress flag if we're running a command in - a subshell, since we're not running the trap command (we are the - trap command) +arrayfunc.c + - expand_and_quote_kvpair_word,quote_compound_array_word, + expand_and_quote_assoc_word,quote_compound_array_list: make sure + the value has CTLESC characters doubled even when being single- + quoted, since that's what the parser does with standalone assignment + statements. From https://savannah.gnu.org/support/?110538 - 3/10 + 9/19 ---- -subst.c - - parameter_brace_expand: if we assign the empty string to a variable - using the [:]= expansion in a quoted expansion, make sure we note - we are returning a quoted null string to the caller by setting - W_HASQUOTEDNULL. Fixes bug reported by Martin Castillo - +aclocal.m4 + - AC_TRY_COMPILE -> AC_COMPILE_IFELSE (AC_TRY_LINK calls left to + modify to avoid obsolete warnings) + - BASH_STRUCT_WINSIZE: broke out checks for separate headers into new + macros, call them and work with the results; needed to avoid two + calls to AC_TRY_COMPILE + - BASH_CHECK_KERNEL_RLIMIT: avoid multiple calls to AC_TRY_COMPILE by + breaking basic test for RLIMIT_ defines into a separate test and + calling the HPUX-specific _KERNEL test only if that fails + +m4/gettext.m4,configure.ac + - AM_GNU_GETTEXT -> BASH_GNU_GETTEXT: remove deprecation warning, since + [no-libtool] is how we use this; rename to avoid someone's local + copy from overriding ours - 3/17 + 9/20 ---- -lib/readline/histfile.c - - history_truncate_file: only chown the file if we really need to. From - alex@lisas.de via https://savannah.gnu.org/support/?110207 +aclocal.m4 + - BASH_CHECK_MULTIBYTE: take out code that checks for nl_langinfo(CODESET) + since that's already provided by AM_LANGINFO_CODESET, which is + called by BASH_GNU_GETTEXT. We AC_REQUIRE it here, though, to avoid + problems from future changes + - BASH_SYS_SIGNAL_VINTAGE: broke the code that checks for the different + signal vintages into different AC_DEFUNed macros, changed + BASH_SYS_SIGNAL_VINTAGE to stitch them together with shell code + testing the cached variables + - AC_TRY_LINK -> AC_LINK_IFELSE: there are no more autoconf warnings -lib/readline/bind.c - - rl_unbind_function_in_map: since we are looking for functions, not - key sequences, descend into keymaps attached to the keymap passed - as an argument. From a report from lockywolf@gmail.com back on 2/27, - TENTATIVE CHANGE + 9/21 + ---- +array.[ch] + - array_from_argv: new convenience function -variables.h - - MKLOC_ARRAYOK,MKLOC_ASSOCOK: new flags values for - make_local_{array,assoc}_variable so we can avoid hard-coded values - of 1 and make it possible to eventually pass in additional flags +array.h + - num_elements: now an arrayind_t, since that's the type of indices, it + makes sense to allow that many elements -builtins/declare.def - - declare_internal: make_local_array_variable: pass MKLOC_ASSOCOK - - declare_internal: make_local_assoc_variable: pass MKLOC_ARRAYOK + 9/22 + ---- +lib/readline/terminal.c + - rl_term_kP: fix typo. Fix from Koichi Murase -variables.c - - make_local_{array,assoc}_variable: understand new flags, pass - MKLOC_INHERIT to make_local_variable if it appears in the flags - argument + 9/25 + ---- +lib/readline/display.c + - rl_clear_visible_line: call _rl_clear_to_eol with _rl_screenwidth as + the argument so we clear out the entire line even if the terminal + doesn't have a clear-to-eol sequence; make sure to add a call to + rl_cr after that so we know we're always in column 0 + - _rl_redisplay_after_sigwinch: just call rl_clear_visible_line instead + of erasing the last line of the display + - _rl_redisplay_after_sigwinch: if the prompt is longer than the screen + width, make sure to call _rl_reset_prompt to recalculate the + local_prompt_newlines array. Should fix issue from + https://savannah.gnu.org/support/index.php?110543 -builtins/declare.def - - declare_internal: add a new -I option for local and declare that - inherits attributes and value from a variable with the same name - at a previous scope. Inspired by netbsd sh - - if -I option is supplied, pass MKLOC_INHERIT to make_local_variable - and its array counterparts make_local_{array,assoc}_variable +redir.c + - do_redirection_internal: if given [N]<&WORD- or [N]>&WORD- and WORD + expands to null, make it identical to <&- or >&- and close file + descriptor N (default 0). From a discussion back in 5/2021 -subst.c - - shell_expand_word_list: pass -I to declare if constructing a declare - command with make_local_declare, meaning we have an array or assoc - compound assignment. (Slighty unsatisfactory, but ok for now) Fix - for bug report from Kevin Locke , - https://savannah.gnu.org/support/index.php?109669 + 9/27 + ---- +arrayfunc.c + - expand_compound_array_assignment: since we run the string through + the parser to turn it into a list (so we can make sure all shell + metacharacters are properly quoted), we need to remove the CTLESC + the parser uses to quote CTLESC and CTLNUL in *unquoted* words. + The rest of the code assumes this has been done, and assumes that + any CTLESC characters passed to expansion are part of the original + word and should themselves be quoted, doubling the number of CTLESCs - 3/18 + 9/28 ---- -examples/loadables/basename.c - - basename_builtin: handle -- option without crashing. Report by Peng Yu - +arrayfunc.c + - expand_and_quote_kvpair_word,quote_compound_array_word, + expand_and_quote_assoc_word,quote_compound_array_list: if we are + single-quoting associative array subscripts and associative and + indexed array values, we need to quote CTLESC characters, because + that's how they come out of the parser and how the assignment + statement code expects to see them. + Fixes https://savannah.gnu.org/support/index.php?110538 -jobs.c - - notify_of_job_status: if in posix-mode shell is started with -c, - jobs should print the status of completed jobs. From a report by - Robert Elz back in 12/18 + 9/29 + ---- +subst.c + - parameter_brace_transform: invalid transformation operators are now + fatal errors in non-interactive shells, as with the other word + expansions. Reported by Martin Schulte in + https://lists.gnu.org/archive/html/bug-bash/2020-10/msg00026.html + +execute_cmd.c + - execute_disk_command: if we're optimizing out the fork (nofork) and + not directly in a pipeline (pipe_in == pipe_out == NO_PIPE), only + modify shell_level if subshell_environment says we're not already in + a pipeline. Reported by Paul Smith 10/11/2020 + against GNU make - 3/19 +evalstring.c + - should_suppress_fork: remove #if 1 for code that tries to suppress + the fork in a process substitution subshell + + 9/30 ---- -variables.c - - assign_in_env: if we're assigning POSIXLY_CORRECT or POSIX_PEDANTIC - in the temporary environment, save the values of the options - affected by posix mode so we can restore them when we restore the - old value of the variable after the command executes. Suggested by - Martijn Dekker +builtins/mapfile.def + - do_chop: make sure we're comparing unsigned chars when checking + whether the delim is the last character on the line. Reported by + Greg Wooledge - 3/20 + 10/1 ---- -syntax.h - - slashify_in_here_document: add `"' to this list, since POSIX says - that backslashes in here documents behave like backslashes in - double quotes, and backslash can quote a double quote in a double- - quoted string. This means that given P=A, +lib/readline/rltty.c + - rl_deprep_terminal: if we're not echoing to the terminal + (_rl_echoing_p == 0), and we just output the bracketed paste end + sequence, output a newline to compensate for the \r at the end of + BRACK_PASTE_FINI, since redisplay didn't do it for us. Reported by + Siteshwar Vashisht - cat < back in 1/2019. + 10/4 + ---- +shell.c + - include if we're debugging malloc (MALLOC_DEBUG) + so we can get an extern declaration of trace_malloc_stats - 3/23 + 10/5 ---- subst.c - - string_transform: add `U' (convert to uppercase), `u' (convert - first character to uppercase), and `L' (convert to lowercase) - transformations. Inspired by a discussion with Phil Smith - back in May, 2019 - - parameter_brace_transform: make sure `u', `U', and `L' are valid - transform operators + - expand_subscript_string: allocate new memory for td.word, copying + STRING, in case it gets freed on error by expand_word_internal. + Report and fix from Koichi Murase -doc/{bash.1,bashref.texi} - - parameter transformation: document new `U', `u', and `L' operators +lib/malloc/malloc.c + - malloc_usable_size: return the allocated size instead of the chunk + size, since writing over the bounds checking will cause fatal errors. + Reported by Julien Moutinho , fix from + Dominique Martinet -eval.c - - execute_prompt_command: if an array variable PROMPT_COMMANDS exists, - prefer it to PROMPT_COMMAND and execute all of the commands contained - as array elements in index order. From a proposal by Daniel - Colascione back in 1/2018 - - execute_array_command: function for array_walk to use when executing - commands in PROMPT_COMMANDS +arrayfunc.c + - unbind_array_elememnt: pass (flags&VA_NOEXPAND) to skipsubscript(), + instead of unconditionally passing 1 if we're operating on an + associative array. This is consistent with how valid_array_reference + determines the length of the subscript. + Report and fix from Koichi Murase -doc/{bash.1,bashref.texi} - - PROMPT_COMMANDS: new array variable + 10/6 + ---- + +subst.c + - skip_to_delim: add a new value for FLAGS. If FLAGS&2, we assume that + START is one character after the opening OPEN. If not, we assume that + START is at OPEN, and needs to be incremented past it. Part of fix + from Koichi Murase - 3/24 +arrayfunc.c + - unbind_array_element: make sure to pass FLAGS to skipsubscript with + bit 2 set, since we are passed a SUB index that's one past the + opening bracket. Rest of fix from + Koichi Murase + - array_variable_name: make sure we pass (FLAGS&1) to skipsubscript, so + we don't inadvertently pass a value with bit 2 set, which would + cause an off-by-one error in subscript parsing + + 10/8 ---- -builtins/ulimit.def - - new -R option, for RLIMIT_RTTIME (max time a real-time process can - run without blocking). Patch from Maciej Wolny - back in 7/2017 +trap.c + - restore_traps: inverse of reset_signal_handlers. This understands + how reset_signal_handlers changes the signal disposition while + leaving the trap string in place, and knows how to restore flags + and state based on that preserved trap string and whether or not + the signal is "special" to the shell. -doc/{bash.1,bashref.texi} - - ulimit: document new -R option +builtins/exec.def + - exec_builtin: instead of using restore_original_signals to completely + cancel the traps, call reset_signal_handlers so the trap strings are + preserved. Then if the exec fails (and we're not exiting) we can + look at the trap strings and see how to restore the trap state. + This calls restore_traps after reinitializing the shell signal + handlers, using the trap strings saved by reset_signal_handlers. + Fixes issue with not exiting after a failed exec clearing the EXIT + trap reported by Mark March , using the + approach suggested by Robert Elz + +subst.c + - expand_declaration_argument: when parsing options that modify + attributes that affect how the value is handled (i, c, u, etc.), + make sure to create an option string and call make_internal_declare + with options that start with a `+' so the attribute is off when + the assignment is performed and changes how the value is expanded. + From a report by Léa Gris -lib/readline/{display.c,rlprivate.h} - - _rl_clear_screen: now takes an argument saying whether to attempt to - clear the terminal scrollback buffer if the right termcap capability - exists +lib/readline/complete.c + - rl_display_match_list: even if _rl_completion_prefix_display_length + is set to a non-zero value, pass the common prefix length to + fnprint if we've turned on colored completion prefixes; passes + through to fnprint via print_filename + - fnprint: add the ellipsis if prefix_bytes exceeds the + _rl_completion_prefix_display_length, add explicit check for + prefix_bytes being longer since print_filename passes it through + if colored-completion-prefix is set. This means that while + completion-prefix-display-length still has precedence over + colored-completion-prefix, it doesn't override it if both are set + and the common prefix length is shorter than + completion-prefix-display-length. From a report by + Christoph Anton Mitterer -lib/readline/{text.c,readline.h} - - rl_clear_display: new bindable command that clears the screen and - scrollback buffer + 10/10 + ----- +parse.y + - parse_dparen: if the last token is FOR, increment word_top and assign + word_lineno like for other for loops. Fixes bug with LINENO after + arithmetic for commands reported by + Tom Coleman -lib/readline/funmap.c - - clear-display: new bindable command name + 10/11 + ----- +execute_cmd.c + - shell_execve: if execve fails with ENOENT, but executable_file() + succeeds, display a slightly more descriptive error message. Prompted + by a report from Andrea Monaco -lib/readline/emacs_keymap.c - - emacs mode M-C-l now bound to clear-display +stringlib.c + - strcreplace: allow backslash to escape a backslash, since we allow it + to escape a `&' -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - clear-display: document new function and default emacs mode binding + 10/14 + ----- +pcomplib.c + - COMPLETE_HASH_BUCKETS: double to 512 -arrayfunc.c - - assign_assoc_from_kvlist: allow compound assignments to associative - arrays that do not contain words of the form `[key]=value', assume - such lists are of the form (key1 value1 key2 value2). A missing or - empty key is an error; a missing value is treated as NULL. You - cannot mix the two forms. Inspired by a suggestion from Sebastian - Gniazdowski back in 7/2019 +stringlib.c + - strcreplace: the last argument is now a flags argument. 1 has its + previous meaning (glob); 2 means to allow backslash to escape a + backslash (as added on 10/11) -doc/{bash.1,bashref.texi} - - documented new associative array assignment syntax +subst.c + - pat_subst: call strcreplace with 2 as the flags value -assoc.[ch] - - assoc_to_kvpair: new function that returns a string with quoted - key/value pairs from given associative array + 10/15 + ----- +doc/bashref.texi + - updates to Installation section -array.[ch] - - array_to_kvpair: new function that returns a string with quoted - key/value pairs from given indexed array (for completeness) +doc/{mkposix,mkinst,mkrbash},doc/Makefile.in + - changes to allow scripts to be run outside the source directory + 10/18 + ----- subst.c - - parameter_brace_transform: new operator `K': produces the (possibly - quoted) value of a variable, except for arrays, where it expands to - indexed or associative array assignments in key/value pair form - - string_transform,parameter_list_transform: expand `K' to (possibly - quoted) values - - array_var_assignment: take a new fourth argument saying which kind - of assoc assignment statement to produce; calls array_to_kvpair or - assoc_to_kvpair as appropriate and just returns that value if - necessary without creating a declare command - - array_transform: if the operator is `K', call array_var_assignment - with new argument that will produce a list of key/value pairs + - patsub_replacement: controls whether pattern substitution expands `&' + in the replacement string. Initialized to 1 by default + 10/19 + ----- doc/{bash.1,bashref.texi} - - document new 'K' parameter transformation operator - - 3/25 - ---- -doc/bash.1,lib/readline/doc/{history.3,readline.3} - - some text and formatting cleanups from Bjarni Ingi Gislason - + - document bash's WCE SIGINT behavior when job control is not enabled + and the shell receives a SIGINT while waiting for the foreground + command to complete. Added at Red Hat's request. A complete + discussion is at https://www.cons.org/cracauer/sigint.html -bashhist.c - - SYSLOG_MAXLEN: increase to 1024, since that seems to be what most - syslog daemons handle - - bash_syslog_history: if the line is longer than SYSLOG_MAXLEN minus - the header length, log it in multiple message with a sequence number - instead of truncating. Inspired by a report from - back in 7/2018 + 10/25 + ----- +builtins/shopt.def + - patsub_replacement: new shell option, exposes patsub_replacement + variable controlling whether pattern substitution expands `&' in + the replacement string. Still enabled by default. -lib/readline/text.c - - rl_activate_mark,rl_deactivate_mark,rl_mark_is_active_p, - rl_keep_mark_active: new functions to manage an active region. We - don't do anything with an active region yet. Part of a large patch - for active regions from Daniel Colascione - originally back in 3/2018 - - rl_clear_screen: call rl_keep_mark_active to keep the region active - across the screen refresh - - rl_newline: make sure to deactivate the region even though we don't - do any redisplay with it yet +doc/{bash.1,bashref.texi} + - patsub_replacement: document new shopt option -lib/readline/readline.h - - rl_activate_mark,rl_deactivate_mark,rl_mark_is_active_p, - rl_keep_mark_active: new extern function declarations. They are - public functions for now + 10/26 + ----- +lib/readline/display.c + - expand_prompt: group runs of invisible characters at the right edge + of the screen with the previous physical characters when setting + local_prompt_newlines, since that's how update_line() expects to + get it. Fix from sparrowhawk996@gmail.com. -lib/readline/readline.c - - readline_internal_setup: make sure the region starts out as not - active - - readline_internal_charloop: make sure to deactivate the mark after - a command, unless the command calls rl_keep_mark_active keep it - active +lib/readline/macro.c + - rl_end_kbd_macro: make sure current_macro_index is > 0 after + subtracting the key sequence length, clamp it to 0 before writing + the ending NULL. From a fuzzing report by + Tillmann Osswald -lib/readline/kill.c - - rl_bracketed_paste_begin: set rl_mark before inserting the pasted - text, so the pasted text defines the region - - rl_bracketed_paste_begin: set the region as active after inserting - the pasted text +lib/readline/isearch.c + - _rl_isearch_dispatch: in the bracketed paste case, don't assume the + pasted text is null-terminated, so use memcpy instead of strcpy for + the length of the pasted text, then make sure the search string is + null-terminated. From a fuzzing report by + Tillmann Osswald -lib/readline/util.c - - _rl_abort_internal: make sure we deactivate the region +lib/readline/text.c + - rl_transpose_words: make sure to preserve the value of rl_end from + the beginning to the end of the function. From a fuzzing report by + Tillmann Osswald -lib/readline/{terminal.c,rlprivate.h} - - _rl_cr: new function to just output the term_cr (or '\r'). Part of - the active region patch +lib/readline/vi_mode.c + - rl_vi_delete_to,rl_vi_change_to,rl_vi_yank_to: if we are redoing a + command (_rl_vi_redoing == 1), save the old _rl_vimvcxt, allocate a + new one, and restore the old one before returning. Prevents some + pointer aliasing problems. From a fuzzing report by + Tillmann Osswald -lib/readline/display.c - - _rl_cr: use where appropriate to replace MSDOS-dependent code and - calls to tputs + 10/29 + ----- +arrayfunc.c + - tokenize_array_reference: take valid_array_reference and add a third + argument (char **SUBP), which, if non-NULL, gets the null-terminated + subscript parsed from the NAME argument. If it's NULL, the caller + gets the old valid_array_reference behavior. Fix from + Koichi Murase + - valid_array_reference: just call tokenize_array_reference with a + NULL third argument + - unbind_array_element: assume the caller (unset_builtin) passes a + null-terminated SUB that's already been validated by a call to + tokenize_array_reference so we don't need to call skipsubscript() or + check VA_ONEWORD. Fix from Koichi Murase -lib/readline/terminal.c - - get and store the terminal sequences to enter and exit standout - (usually some background color) mode +arrayfunc.h + - tokenize_array_reference: extern declaration - 3/26 - ---- -subst.[ch] - - copy_fifo_list: now returns void * - - close_new_fifos: now takes a void * as the first argument, since it's - usually the return value from copy_fifo_list - - close_new_fifos: (named pipes): cast first argument to a char *, - since copy_fifo_list will (someday) return a bitmap - - close_new_fifos: (HAVE_DEV_FD): cast first argument to a pid_t *, - since it takes a copy of dev_fd_list; use that in the loop to - determine whether or not to close file descriptors. First half of - fix for bug reported by Valentin Lab - - unlink_fifo_list: (named pipes): when compacting the list, make sure - to avoid the copy if i == j, and, after copying fifo_list[i] to - fifo_list[j], null out fifo_list[i] so we don't try to access it - later +builtins/set.def + - unset_builtin: use tokenize_array_reference to figure out T and pass + that to unbind_array_element. Fix from + Koichi Murase + - unset_builtin: pass non-null argument to array_variable_part to get + the length of the subscript (T), then cut off any final `]' before + passing it to unbind_array_element, since that's what it now + expects -execute_cmd.c - - execute_command_internal: don't call reap_procsubs after executing - the command. Rest of fix for bug reported by Valentin Lab - - - execute_command_internal,execute_builtin_or_function: ofifo_list is - now a void * instead of a char * +subst.c + - expand_string_for_rhs,expand_string_for_pat: assign td.word from + newly-allocated memory in case it gets freed on error during the + call to call_expand_word_internal(); free it manually when that + call returns - 3/30 + 11/1 ---- -lib/readline/{terminal.c,rlprivate.h} - - _rl_standout_{on,off}: new functions, to enter and exit terminal - standout mode +findcmd.c + - search_for_command: if FLAGS includes CMDSRCH_STDPATH, don't look in + the hash table for the command name. Prompted by a report from + Roger Morris -lib/readline/rlprivate.h - - _rl_refresh_line: new extern declaration +aclocal.m4 + - BASH_FUNC_POSIX_SETJMP: add a check by fetching the signal mask + after the siglongjmp and making sure that SIGINT is not blocked, + indicating we restored the original signal mask -lib/readline/display.c - - visible and invisible lines: added members to deal with tracking the - `current face' - - realloc_line: broke code to manage visible_line and invisible_line - allocation out of init_line_structures, added code to manage arrays - of visible and invisible line face info per character - - invis_{addc,adds,nul}: new functions to add characters to the - invisible line and keep the invisible face data updated with whatever - the current face is - - set_active_region: keep track of the display region that should be - in standout mode - - rl_redisplay: use invis_addc/adds/nul to update the invisible line - buffer instead of modifying invisible_line directly - - _rl_refresh_line: moved body of function here from text.c + 11/2 + ---- +subst.c + - expand_string_assignment: make sure to add W_TILDEEXP to the flags so + expand_word_internal performs the right tilde expansion on tildes + following an unquoted colon. Report from Anders Kaseorg + -lib/readline/text.c - - rl_refresh_line: now just calls _rl_refresh_line and marks the display - as fixed - 3/31 + 11/3 ---- -variables.c - - bind_variable_internal: dynamic variables with assignment functions - now honor the readonly attribute by giving an error. Fixes issue - reported by Rob Landley - - assign_seconds: allow seconds to be assigned using an arithmetic - expression - - assign_random: allow RANDOM to be assigned using an arithmetic - expression - -doc/{bash.1,bashref.texi} - - HISTCMD: note that assignments to HISTCMD have no effect +aclocal.m4 + - BASH_FUNC_POSIX_SETJMP: if cross-compiling, default to `present' if + we've determined we have posix signal functions - 4/2 - --- + 11/4 + ---- execute_cmd.c - - execute_in_subshell: make sure we note that we're not reading our - command input from a buffered stream any more, so we don't - sync the buffered stream backwards in subsequent commands this - subshell runs. Fixes bug reported by OÄuz + - SET_LINE_NUMBER: set line_number, but don't set line_number_for_err_trap + if we're already running the ERR trap + - GET_LINE_NUMBER: evaluates to line_number_for_err_trap if we're + running the ERR trap and executing_line_number() otherwise + - execute_function: use GET_LINE_NUMBER to push the value for the line + number into the BASH_LINENO array + - execute_command_internal,execute_arith_command,execute_cond_command: + use SET_LINE_NUMBER to avoid overwriting line_number_for_err trap + while executing the ERR trap. Tentative fix for `caller' problem + reported by Quinn Grier + +configure.ac,patchlevel.h + - set bash version to 5.2-devel, meaning shell_compatibility_level = 52, + which required updating tests (array.tests, array21.sub, + quotearray3.sub, new-exp10.sub, history2.sub). The first three are + because bash-5.2 flushes an indexed array but does not unset the + variable when given `unset a[@]' or `unset[*]' (that is, it acts + like `a=()' instead of `unset a'); the other two are because the + version number changed - 4/3 - --- -builtins/read.def - - read_builtin: if a read in posix mode is interrupted by a signal, - make sure to preserve the value of errno around calls to - check_signals and run_pending_traps so any error message isn't quite - as confusing. Issue reported by Stan Marsh - -lib/sh/zread.c - - zread: preserve value of errno (always EINTR) around calls to - check_signals or check_signals_and_traps + 11/8 + ---- +doc/Makefile.in + - bash.info: use `makeinfo -o' instead of calling infopost.sh to edit + the filename, since the tags table includes absolute byte offsets to + nodes. From https://savannah.gnu.org/support/?110557 -trap.c - - run_debug_trap: allow suppress_debug_trap_verbose being set to - turn off `set -v' temporarily while executing the DEBUG trap (if - it's set) + 11/15 + ----- +examples/loadables/realpath.c + - add -a NAME argument to put canonicalized pathnames into an indexed + array instead of displaying them on stdout. Suggested by + felix@f-hauri.ch -builtins/fc.def - - set suppress_debug_trap_verbose so set -v won't be in effect while - the DEBUG trap runs. Most recently reported by Ami Fischman - ; originally raised by Boruch Baum - back in 10/2017 +lib/readline/colors.c + - _rl_custom_readline_prefix: new function, looks in $LS_COLORS for a + custom extension (*.readline-colored-completion-prefix) and uses that, + if found, as the default color for the common prefix displayed when + `colored-completion-prefix' is set. Suggested by + Christoph Anton Mitterer + - _rl_print_prefix_color: try the return value from _rl_custom_readline_prefix + before defaulting to the C_PREFIX (C_SOCK) color. Suggested by + Christoph Anton Mitterer - 4/6 - --- -lib/readline/display.c - - puts_face,putc_face: new functions to write strings or characters to - the display while handling standout mode - - update_line,_rl_move_cursor_relative: take additional argument(s) - describing the visible and invisible faces corresponding to the - visible and invisible lines, respectively +lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 + - readline-colored-completion-prefix: document new custom suffix for + readline's colored-completion-prefix color -lib/readline/readline.c - - _rl_enable_bracketed_paste: for the time being, initialize to 1 (on - by default) + 11/16 + ----- +doc/{bash.1,bashref.texi},builtins/set.def + - set: modify usage synopsis slightly, based on + https://bugzilla.redhat.com/show_bug.cgi?id=2022324 -trap.c - - run_interrupt_trap: set pending_sigs[SIGINT] and catch_flag to 0 - since run_pending_trap usually does these things +builtins/set.def + - unset_builtin: add shell compatibility level check <= bash-5.1 to + force `unset a[@]' to unset array variable `a', like in previous + versions, instead of unsetting associative array element `@' or + removing all elements of an indexed array without unsetting the + variable itself -sig.c - - throw_to_top_level: only call the SIGINT trap if there is a SIGINT - trap pending (shouldn't matter, just a check) +builtins/common.c + - set_expand_once: now a no-op if the shell compatibility level is + <= bash-5.1, preserving the previous versions' behavior for [[ -v + (dependent on assoc_expand_once instead of forcing it) -bashline.c - - bash_event_hook: try to identify the signal of interest we've - received - - bash_event_hook: if in posix mode running the read builtin, and we - get a (trappped) SIGINT, throw to top level so we can interrupt - the read. From a report by Robert Elz +subst.c + - parameter_brace_expand_rhs: make sure that the final value assigned + is always returned from ${a:=b}, even when `a' has a variable + attribute that modifies the value on assignment. Reported back on + 1/20/2021 by oguzismailuysal@gmail.com; bash-5.2 tag removed - 4/7 - --- -lib/readline/display.c - - update_line: make sure to update and compare face data at the same - time as comparing old and new line data: the lines are only the same - if the face information and character information are identical - (ofd, ols, etc.) - - update_line: make sure to copy face data along with line data - - update_line: use puts_face in place of _rl_output_some_chars to - output face data along with line data - - _rl_move_cursor_relative: when we write characters, make sure to take - the face data into account using puts_face - [END OF INTEGRATION OF ACTIVE MARK AND FACE PATCHES from - Daniel Colascione ] - -{jobs,nojobs}.c - - make_child: to avoid installing a handler for SIGTERM in interactive - shells, and avoid race conditions with child processes resetting the - SIGTERM signal handler to the default, block SIGTERM and then - reset the SIGTERM handler to SIG_DFL before fork, then reset the - handler to SIG_IGN and unblock it in the parent after fork() returns. - Fix for readline and SIGTERM handling reported by Chris Down - (original change was back in 2/2013) that - allows a bash waiting in readline() for input to be killed with a - SIGTERM sent by another process - - take out calls to RESET_SIGTERM, no longer needed + 11/22 + ----- +doc/{bashref.texi,bash.1} + - unset: change the description of `unset name[@]' (unset name[*]) + to reflect the new behavior (unset associative array subscripts or + remove all elements from an indexed array) and the difference from + previous versions + - set: document -r for restricted shell mode + - restricted shell: change occurrences of `set +o restricted' to + `shopt -u restricted_shell'. From a report from + Jin Xiang + - read: note that read -t0 may return 0 if a subsequent read will + return EOF. From a suggestion by Dale R. Worley + execute_cmd.c - - execute_in_subshell,execute_simple_command,execute_disk_command: - remove calls to CHECK_SIGTERM, since we don't install a handler - any more - -lib/readline/readline.c - - _rl_enable_bracketed_paste: enabled by default for the time being - - 4/9 - --- -jobs.h - - JWAIT_WAITING: new flag for wait functions; means only wait for jobs - with the J_WAITING flag set - - J_WAITING: new job flag, part of arg list to `wait -n' - - IS_WAITING(i): job i has the J_WAITING flag set - -jobs.c - - wait_for_any_job: if the flags includes JWAIT_WAITING, we only return - jobs with the J_WAITING flag already set; otherwise we skip them. - For `wait -n args' support - -builtins/wait.def - - set_waitlist: take a list of jobspecs and set the J_WAITING flag in - each valid job from the list - - unset_waitlist: turn off the J_WAITING flag for all jobs where it's - set - - wait_builtin: if -n is supplied with a list of arguments, set the - J_WAITING flag in each job in the list, call wait_for_any_job with - the JWAIT_WAITING flag, and clean up by calling unset_waitlist(). - From a suggestion from Robert Elz back in 3/2019 - (originally in 10/2017) + - execute_arith_command,eval_arith_for_expr: don't pass EXP_EXPANDED + to evalexp if shell_compatibility_level > 5.1, assuming that the + expression has been quoted by Q_ARITH handling - 4/11 - ---- -lib/readline/display.c - - update_line: in step 5b of the line wrapping prompt code, make sure - OFDF and NFDF are set before performing a dumb update +test.c + - test_arithcomp: if we're being called by the conditional command + code and treating the arguments to the arithmetic operators as + expressions, don't pass EXP_EXPANDED to evalexp if the shell + compatibility level is > 5.1, assuming that the expression has been + quoted by Q_ARITH handling - 4/12 - ---- -sig.c - - termsig_handler: make sure to restore TOP_LEVEL_SIGMASK before - resending a terminating signal to ourselves, in the event that this - is called in a signal handler context with the terminating signal - blocked. Inspired by a report from + 11/29 + ----- +examples/loadables/getconf.[ch] + - getconf: new implementation of loadable builtin, based on glibc + getconf - 4/13 - ---- +examples/loadables/sleep.c + - parse_gnutimefmt: parse GNU interval format (2m30s), returning + seconds and microseconds like uconvert + - sleep: use parse_gnutimefmt if uconvert can't parse the format right + away and "dhms" appears in the format string. Don't return + EX_DISKFALLBACK under any circumstances -lib/readline/text.c - - rl_newline: if the region is active, call rl_redisplay to clear - standout mode before returning + 11/30 + ----- -lib/readline/display.c - - norm_face: new function to mark a portion of the invisible face - buffer as normal text (no standout) - - rl_redisplay: if the line consumes more than a screen's worth of - lines, mark the lines that are off the top of the display as having - a `normal' face +builtins/wait.def + - wait_builtin: refer to unset_waitlist only if JOB_CONTROL is enabled. + Report from Joel Ebel - 4/14 - ---- -variables.c - - LINENO: no longer has the integer attribute, since it does not take - arithmetic expressions on assignment (use $((expr)) instead) - -lib/readline/mbutil.c - - _rl_find_prev_utf8char: new function, uses the structure of UTF-8 - characters to find the start of the previous one no matter where we - start: at the beginning of the next character, at the end of a - multibyte character, or in the middle of a multibyte character. - EXPERIMENTAL - - _rl_find_prev_mbchar_internal: for now, call _rl_find_prev_utf8char - if we are in a UTF-8 locale. EXPERIMENTAL - - 4/15 - ---- -lib/readline/mbutil.c - - _rl_utf8_mblen: changes to handle invalid multibyte sequences better, - even when N means that the sequence would be too short anyway +parse.y,builtins/set.def + - changes for minimal config restrictions -examples/loadables/csv.c - - csv: new loadable builtin to parse a line of csv data and store it - into an array supplied as an argument +configure.ac,config.h.in + - --enable-translatable-strings: new configuration option to allow + $"..." support to be compiled in or out; not included in the minimal + shell configuration - 4/16 - ---- -examples/loadables/cut.c - - cut: new loadable builtin - - lcut: new builtin that does what cut does but on a string supplied - as an argument (only one string for now) +shell.c + - main: don't include any of the dump-strings options if + TRANSLATABLE_STRINGS is not defined - 4/17 - ---- -jobs.h - - FORK_SYNC,FORK_ASYNC,FORK_NOJOB: new flag values for the second - argument to make_child +lib/sh/shquote.c + - sh_backslash_quote_for_double_quotes: needed for translatable strings -jobs.c - - make_child: now takes a set of flags as the second argument +parse.y + - support for translating $"..." strings now conditional on + TRANSLATABLE_STRINGS -execute_cmd.c - - make_child: change callers to pass FORK_ASYNC instead of a non-zero - value as the second argument +locale.c + - locale_expand: now conditional on TRANSLATABLE_STRINGS subst.c - - make_child: change callers to pass FORK_ASYNC instead of a non-zero - value as the second argument + - expand_string_dollar_quote: support for $"..." now conditional on + TRANSLATABLE_STRINGS -doc/{bash.1,bashref.texi} - - document that the words in a compound array assignment undergo all - the shell word expansions, including filename generation and word - splitting. From a report from E. Choroba +doc/bashref.texi + - --enable-translatable-strings: document new configuration option - 4/18 + 12/2 ---- subst.c - - command_substitute: use JOB_CONTROL instead of INTERACTIVE in the - test to determine whether or not to give the terminal back to - pipeline_pgrp - -jobs.c - - make_child: if FORK_NOTERM is set in the flags argument, don't call - give_terminal_to + - verify_substring_values: now that the default compatibility level is + 52, and the Q_ARITH code is enabled, make the EXP_EXPANDED flag for + evalexp() dependent on the compatibility level + - param_expand: arithmetic substitution: make EXP_EXPANDED flag + for evalexp() dependent on the compatibility level + - expand_word_internal: don't call expand_array_subscript if the + shell compatibility level is 51 or below (Q_ARITH) -{jobs,nojobs}.c,jobs.h - - wait_for: now takes a second argument, a flags word +test.c + - test_unop: if the shell compatibility level is > 51, using [@] with + an existing associative array will report on a key of `@' -{execute_cmd,subst}.c - - wait_for: change all callers to add second argument to wait_for +arrayfunc.c + - array_expand_index: if the compatibility level is > 51, Q_ARITH is + used and we don't pass EXP_EXPANDED to evalexp() -jobs.c - - wait_for: if JWAIT_NOTERM is set in the flags argument, don't call - give_terminal_to +COMPAT,doc/bashref.texi + - shell compatibility mode: document effects of setting the + compatibility mode to 51 - 4/19 + 12/3 ---- -subst.c - - command_substitute: block SIGINT around call to read_comsub, so we - let any interrupts affect the command substitution. Fixes issue - reported by DALECKI Léo +lib/malloc/malloc.c + - mremap: only use if MREMAP_MAYMOVE is defined, since we use the Linux + version of the function signature -hashcmd.h - - FILENAME_HASH_BUCKETS: increase to 256 + 12/6 + ---- +bashhist.c + - bash_add_history: if we're parsing a here-document (PST_HEREDOC), only + suppress adding the newline between lines if we're not at the first + line of the here-document (here_doc_first_line != 0). From a report + by S0AndS0 -assoc.h - - ASSOC_HASH_BUCKETS: new define, set to 1024 + 12/8 + ---- +lib/readline/colors.c + - _rl_custom_readline_prefix: use STREQN to check for the extension + string in $LS_COLORS, since it's not necessarily null-terminated. + From https://savannah.gnu.org/patch/?10158 + 12/10 + ----- variables.c - - make_new_assoc_variable,make_local_assoc_variable: call assoc_create - with ASSOC_HASH_BUCKETS as argument. This changes the hash function - and how the array keys are ordered (which is not guaranteed) - -builtins/read.def - - read_builtin: in posix mode, or if the read call returns -1/EINTR, - don't call run_pending_traps until the read command returns. This - allows a trap action to see the same exit status that the read - builtin would return when it exits on a signal (e.g., SIGINT == 130). - From a suggestion by - - 4/20 - ---- -hashlib.c - - hash_rehash: function to rehash a table, after increasing or decreasing - the number of buckets. From patches from Thomas Kremer - (https://savannah.gnu.org/patch/?9850) and Koichi Murase - - - hash_grow,hash_shrink: grow or shrink a hash table by a factor of - HASH_REHASH_MULTIPLIER (4) - - hash_insert,hash_search: call hash_grow if necessary + - set_int_value,set_string_value: broke common code for setting int + and string dynamic variable values out into separate functions; + changed all callers to use them where appropriate. set_int_value + takes a flags argument saying whether or not to force the integer + attribute on + - assign_random: store the value assigned as the variable value so + things like RANDOM=42; RANDOM+=7 generate consistent sequences + like in ksh93 + - assign_seconds: store the value assigned as the variable value so + things like SECONDS=42 ; SECONDS+=7 generate what's expected + +doc/Makefile.in + - changes to allow man pages that include others (.so FN) to be built + outside the source tree + 12/13 + ----- arrayfunc.c - - convert_var_to_{array,assoc}: if the original variable had no value - (it was unset), the array variable should be unset as well. Reported - by andrej@podzimek.org + - assign_array_element_internal: take an additional argument: char **NVALP. + If non-null, it gets the value eventually assigned to the array + element + - assign_array_element: take an additional NVALP argument; pass it to + assign_array_element_internal - 4/21 - ---- -bashline.c - - set_saved_history: change logic used to decide where in the history - operate_and_get_next should start by using a logical offset into the - history list that is an offset from history_base. This avoids having - to take whether or not the history is stifled and full into account. - Report and fix from Greg Price - - operate_and_get_next: just calculate the logical offset of where we - should be in the history instead of an absolute offset +arrayfunc.h + - assign_array_element: new extern function declaration -lib/readline/input.c - - _rl_nchars_available: new function, returns the number of characters - available to be read if FIONREAD is available +{subst,variables}.c,builtins/{common.c,declare.def} + - assign_array_element: change callers - 4/22 - ---- -lib/readline/{readline.c,rlprivate.h} - - _rl_pending_command: new struct to hold information about a pending - command for readline to execute when the current command completes. - A command can set this up so that it gets executed like a - continuation before redisplay +subst.c + - parameter_brace_expand_rhs: for the ${param:=value}, use the value + returned by assign_array_element in NVALP as the return value, since + it's the value ultimately assigned to the variable after possible + modification (e.g., arithmetic evaluation). Reported by + oguzismailuysal@gmail.com after flawed fix applied 11/16 -lib/readline/readline.c - - readline_internal_charloop: after _rl_dispatch returns, check - _rl_command_to_execute, and, if it's non-zero, redisplay and then - execute it as a command - - added a small set of library-private functions for managing the - executing key sequence (not used yet) + 12/14 + ----- +arrayfunc.h + - array_eltstate_t: an object that encapsulates an array element's + state (type, index, key, value) whether it's an indexed or + associative array -lib/readline/isearch.c - - _rl_isearch_dispatch: if we have found an opcode or have added a - character to the search string and searched for it, reset the keymap - and okeymap members of the search context in preparation for reading - another key sequence/opcode - - _rl_isearch_dispatch: if we read a key sequence bound to an editing - command that is not an `opcode', set up _rl_command_to_execute to - execute it after the searching returns and arrange to break out of - the search - - _rl_isearch_dispatch: if we paste in text from bracketed paste, set - the mark as active so we can highlight it when we display the search - string - - _rl_isearch_dispatch: if we've found the search string, activate the - mark and set rl_point and rl_mark so the search string is highlighted - when we display the search results - - _rl_isearch_dispatch: do translation for keys that map to - rl_do_lowercase_version like we do when dispatching while reading a - key sequence +arrayfunc.c + - {init,flush}_eltstate: new functions to initialize and flush any + allocated memory from array_eltstate_t objects. No allocation/ + deallocation functions yet; the only use is with a static instance + - assign_array_element_internal: take an array_eltstate_t * instead of + a char ** as the final argument, so we can return keys/indices and + values depending on the type of array; populates it with the + appropriate values + - assign_array_element: take array_eltstate_t * as final argument + instead of a char **; pass it to assign_array_element_internal + +{subst,variables}.c,builtins/{common.c,declare.def} + - assign_array_element: change callers to modify final argument - 4/23 - ---- -lib/readline/isearch.c - - _rl_isearch_dispatch: if bracketed paste mode is enabled and there are - enough characters waiting in the terminal's input queue, try to read - the bracketed paste prefix and jump straight to the opcode execution - if we read it. Otherwise, just go on with the ESC. Inspired by report - from + 12/15 + ----- +arrayfunc.c + - array_value_internal: now takes an array_eltstate_t * as the final + argument; there is no more `rtype' argument in favor of the + `subtype' member; returns the appropriate values in its members + - array_value: changed to pass array_eltstate_t to array_value_internal, + saves and fetches its `ind' member into *indp; saves `subtype' + member into *rtype + - get_arrary_value: changed to take array_eltstate_t as third argument, + passes it to array_value_internal + +{redir,expr}.c + - get_array_value: changed callers; initializing the array_eltstate_t + argument as necessary -parse.y - - parse_comsub: posix-mode shells don't allow a closing right paren to - delimit a pending here-document -- it requires the newline +test.c + - test_builtin: changed to use get_array_value, adding AV_ALLOWALL to + the flags, since it didn't use any QUOTED argument. Pass + array_eltstate_t * as final argument and get subtype from it (the + only thing we're interested in, to deallocate memory) -doc/bashref.texi - - POSIX mode: updated posix mode description with the new here-document - delimiter requirement + 12/16 + ----- +arrayfunc.c + - array_value: now takes a final argument of array_eltstate_t *, which + it passes to array_value_internal; no more rtype and indp args. + Callers are responsible for marshalling values into estatep -lib/readline/search.c - - _rl_nsearch_dispatch: if bracketed paste mode is enabled, and we read - an ESC, try to see if we have a bracketed paste op and insert the - pasted next. If we don't, go on with the ESC - - _rl_nsearch_dosearch: experimental code to highlight the search string - when displaying the line found in the history. Only done when we are - not searching for a pattern, since we don't have information on the - end of the matching portion of the line. Experimental because it - changes where we put point and mark if searching is successful +arrayfunc.h + - array_value: changed function signature -expr.c - - expr_streval: if find_variable for the case where the string is not - an array reference doesn't find anything, see if we can find - something by using find_variable_last_nameref and use the value - from there in the call to expr_streval, kind of using the expression - recursion to complement the nameref recursion. Report from - Daniel Molina +subst.c + - get_var_and_type,parameter_brace_expand_word: changed calls to + array_value to use array_eltstate_t argument and initialize it + appropriately. Copy values back from it to the parameters we need + to modify - 4/24 - ---- -jobs.c - - {start,stop}_pipeline: don't reset pipeline_pgrp to 0 if it's already - the same as shell_pgrp, since we don't want to reset it in the middle - of a shell started to run a command or process substitution (after - forking a child to run one command, but before forking another, for - instance). Reported by Rob Landley +variables.c + - assign_lineno: call set_int_value to store the value, like with + RANDOM and SECONDS (from 12/10) - 4/27 - ---- -parse.y - - function_def: break the productions starting with `function' without - `()' into two productions to avoid a shift-reduce conflict. Report - and patch from Dale R. Worley + 12/17 + ----- +{eval,execute_cmd}.c + - when bypassing a parsed command because read_but_dont_execute is + set, don't modify last_command_exit_value. From a report by + Robert Elz -variables.h - - localvar_inherit: add extern declaration here +parse.y + - parse_comsub: make sure the first call to shell_getc to check whether + or not it's an arithmetic expansion skips a quoted newline. From a + report by Robert Elz + 12/21 + ----- subst.c - - shell_expand_word_list: take out change from 3/17 to pass -I to - make_internal_declare; it generates errors the user will find - confusing if there is a variable with the same name but a different - type at a previous scope - - shell_expand_word_list: check for and note whether or not -I is - supplied to the declaration command, since it changes the default - behavior of a compound assignment without -a or -A - - shell_expand_word_list: if we have a compound assignment that is an - argument to a declaration command, but there are no options supplied - to the command that determine the type of the array, make sure we - call make_internal_declare with either -a (no localvar_inherit or -I) - or at least -- (if we are inheriting), because we don't want the - declare to get skipped before we perform the word assignment. Fixes - bug reported by Ross Goldberg + - parameter_brace_remove_pattern,parameter_brace_patsub,parameter_brace_casemod, + parameter_brace_transform,parameter_brace_substring: now take an + array_eltstate_t * argument in place of the arrayind_t argument, pass + it to get_var_and_type; this generalizes the indexed array behavior + of expanding array subscripts once to associative arrays via an + eventual call to array_value_internal with a non-null KEY member + - get_var_and_type: now takes an array_eltstate_t * argument in place + of the arrayind_t argument; use it in calls to array_value so we + can only expand array subscripts once whether they are indexed or + associative arrays + - parameter_brace_expand_word: take an array_eltstate_t * argument in + place of the arrayind_t * argument; pass it to array_value; use a + static version (which we init and flush) if the argument passed is + NULL so we can get the right state passed back and forth + - parameter_brace_expand: pass a pointer to a static array_eltstate_t + to parameter_brace_expand_word, and use that in the various calls to + parameter_brace_XXX functions that perform specific expansions in + place of the old arrayind_t argument; make sure to flush it before + returning, even on errors - 4/28 - ---- -subst.c - - expand_declaration_argument: new function, broke code that handles - compound assignments that are arguments to declaration commands out - of shell_expand_word_list into this function. No functional change - yet + 12/22 + ----- +{trap,variables}.c + - internal_warning: calls changed to use translatable strings + consistently - 4/29 - ---- -subst.c - - expand_compound_assignment_word: helper function for - expand_declaration_argument: takes NAME[+]=( VALUE ), converts VALUE - to a list of words, then single-quotes each word and reconstructs - the original word. This assumes the result will go to - do_word_assignment, which will remove the single quotes - - expand_oneword: helper function for expand_compound_assignment_word, - takes VALUE and performs the splitting into words, and then the - expansion and single-quoting of each individual word. Indexed and - associative arrays take different code paths, because they undergo - different expansions and associative arrays need special handling to - avoid having to scan for the end of the subscript multiple times - - expand_declaration_argument: call expand_compound_assignment_word to - get the expansion-before-calling-builtins word expansion sequence - correct. Better fix for for bug report from Kevin Locke - , - https://savannah.gnu.org/support/index.php?109669 +error.[ch] + - internal_debug: new function, prints a message like internal_warning, + no-op if DEBUG is not defined + - INTERNAL_DEBUG: macro that expands to internal_debug when DEBUG is + defined, and nothing otherwise -arrayfunc.c - - quote_array_compound_word: take [IND]=VALUE and convert it to - ['IND']='VALUE'. Called by quote_compound_array_list for each word - in the list - - expand_and_quote_assoc_qword: take [KEY]=VALUE and convert it to - ['expanded-key']='expanded-value' (or VALUE to 'expanded-value'). - Called by subst.c:expand_oneword() for each word in the list - - quote_compound_array_list: take a list of words and convert each - [IND]=VALUE to ['IND']='VALUE' (or just 'VALUE' if there is no - [IND]=). Used for indexed arrays +{jobs,trap}.c + - changed some internal_warning and internal_inform calls to use + internal_debug, since they were active only when DEBUG is defined -arrayfunc.h - - expand_and_quote_assoc_word,quote_compound_array_list: new extern - declarations +parse.y + - parse_comsub: add internal_debug call when a command substitution + ends with unterminated here-documents - 4/30 - ---- -doc/{bashref.texi,bash.1} - - rework description of reserved words a little; add a reserved words - node to bashref.texi. Based on a report from Dale R. Worley - +builtins/common.c + - number_of_args: unconditionally return posparam_count -builtins/history.def - - history_builtin: if the shell is restricted, don't allow pathnames - with slashes to be read or written. From a report from - Diffie +{jobs,execute_cmd,subst}.c,parse.y,builtins/{command.def,evalstring.c} + - INTERNAL_DEBUG: use instead of calls to itrace protected by #ifdef + DEBUG -shell.c - - maybe_make_restricted: add HISTFILE to the list of readonly variables + 12/26 + ----- +lib/glob/glob.c + - glob_always_skip_dot_and_dotdot: initialize to 1 (enabled) -doc/{bashref.texi,bash.1} - - document new restricted shell restrictions +builtins/shopt.def + - globskipdots: new shell option, exposes glob_always_skip_dot_and_dotdot - 5/1 - --- -jobs.c - - wait_for: don't try to give the terminal to shell_pgrp if JWAIT_NOTERM - is set in the flags argument +doc/{bash.1,bashref.texi} + - globskipdots: document new shell option + +execute_cmd.c + - fix_arrayref_words: call valid_array_reference with 0 for third arg + because the words have not undergone any word expansions yet and + the quotes are still present. This makes things like + A=[\[]=set + unset A[\[] + work subst.c - - command_substitute: call make_child with FORK_NOTERM flag so it - doesn't try to set the terminal's process group - - command_substitute: call wait_for with JWAIT_NOTERM so it doesn't - try to set the terminal's process group - - command_substitute: now that wait_for doesn't try to reset the - terminal's process group, remove the code that tries to clean up - after that + - word_list_split: if a word undergoes word splitting but is not + changed, preserve any W_ARRAYREF flag into the new word. This makes + things like + rkey=']' + unset A[$rkey] + work because the unset builtin sees the W_ARRAYREF flag on its + argument - 5/4 - --- -doc/bash.1 - - make sure to mention /etc/inputrc as the ultimate default readline - init file, like other documentation does. Update from - Greg Price + 12/29 + ----- +builtins/common.h + - SET_VFLAGS: take a set of word flags, and set flags for use with + valid_array_reference (vflags) and assign_array_element/bind_int_variable + (bindflags) based on those flags and the setting of assoc_expand_once + (moved from read.def and generalized) -lib/readline/readline.c - - if the private startup hook function variable _rl_internal_startup_hook - is set, execute that after any user-specified startup hook +arrayfunc.c + - array_variable_name: now exclusively takes AV_xxx flags; understands + how to translate AV_NOEXPAND to the right flag for skipsubscript; + understands AV_ONEWORD and AV_NOEXPAND + - array_variable_part: just passes the FLAGS arg to array_variable_name + - assign_array_element: translates ASS_ flags to AV_ flags for + array_variable_name + - array_value_internal: now just passes flags straight through to + array_variable_part (which sends them to array_variable_name) -lib/readline/rlprivate.h - - _rl_internal_startup_hook: new extern declaration +builtins/common.[ch] + - builtin_bind_var_to_int: now takes a new FLAGS third argument; passes + it to bind_var_to_int -bashline.c,lib/readline/{misc.c,readline.h} - - operate_and_get_next: moved to rl_operate_and_get_next so it's - available to all readline programs, uses _rl_internal_startup_hook. - Based on patch from Greg Price +builtins/printf.def + - printf_builtin: use SET_VFLAGS to set flags for builtin_bind_variable + (bindflags); makes things like + declare -A A; key=']' ; printf -v A[$key] "foo" + work without a subscript error as long as assoc_expand_once is defined -lib/readline/funmap.c - - "operate-and-get-next": now a bindable readline command +builtins/read.def + - read_builtin: use new common version of SET_VFLAGS instead of + private version; changed to use new calling sequence; makes things like + declare -A A; key=']' ; read A[$key] <<<"foo" + work without a subscript error as long as assoc_expand_once is defined -lib/readline/emacs_keymap.c - - rl_operate_and_get_next: bound to ^O in emacs mode by default +builtins/wait.def + - wait_builtin: use SET_VFLAGS for variable name with -p option + - wait_builtin: call builtin_bind_var_to_int with new bindflags third + argument -doc/bash.1,lib/readline/{readline.3,rluser.texi} - - operate-and-get-next: move to readline section of the manuals, out of - bash-specific functions section +expr.c + - expr_streval: just pass TFLAG (AV_xxx flags) straight through to + array_variable_part - 5/5 - --- -hashlib.c - - hash_string: use a series of shifts and adds to avoid a multiply by - FNV_PRIME. From Landon Curt Noll's FNV web page +variables.c + - bind_int_variable: translate the assignment flags (ASS_xxx) to + VA_xxx flags for valid_array_reference calls (ASS_ONEWORD); translate + assignment flags to AV_xxx flags for array_variable_part -builtins/fc.def - - fc_gethist,fc_gethnum: now take an additional argument indicating the - operating mode: if the arg is 1, fc is listing commands; if it is 0, - fc is executing commands. Affects how -0 is handled (fc_gethnum - returns -1). Changed callers to handle the return value appropriately. - Report from Jason Franklin about - seg fault and core dump - - fc_builtin: if fc_gethnum returns < 0 when setting histbeg or histend, - report a range error - -doc/bash.1,lib/readline/doc/hsuser.texi - - fc: document how 0 and -0 are treated for listing and executing + 12/30 + ----- +subst.c + - parameter_brace_expand: when expanding an indirect variable, extend + the special case for array[@] and array[*] (set -u/no positional + parameters, obeying the baroque quoting rules) to the value of the + indirection. Report and fix from konsolebox -shell.c - - run_one_command: call parse_and_execute with SEVAL_RESETLINE so the - line number gets set to 1. Reported by Rob Landley + 12/31 + ----- +parse.y + - compound_list: when parsing a compound_list production, collect any + pending here-documents after reading a newline, not after reading + any command terminator. Fixes interactive-only prompting bug + reported back in 8/2021 by Hyunho Cho - 5/8 + 1/1/2022 + -------- +bashline.c + - set_filename_quote_chars: break code that modifies + rl_filename_quote_characters based on whether DIRNAME needs to be + expanded from bash_directory_completion_hook into its own function + - bash_check_expchar: break code that checks whether DIRNAME will be + word expanded from bash_directory_completion_hook into its own + function + - bashline_reset,attempt_shell_completion: make sure complete_fullquote + is set to 1 (as it is by default) in case a completion modifies it + - bash_quote_filename: if we are completing (but not expanding -- + direxpand is unset) and backslash-quoting a filename with expansion + characters as determined by bash_check_expchar, make sure + filename_bstab is set not to include the expansion char (and any + following char and closer) and set complete_fullquote to 0 so + sh_backslash_quote uses filename_bstab. Fixes the longstanding issue + of quoting a `$', for instance, if the rest of the filename contains + any characters that need quoting in filenames. This assumes that the + filename is unquoted (*QCP == 0) so the word will be expanded and is + not part of the filename (if needed, we can use file_exists to check + whether the expansion characters are actually part of the filename) + + 1/7 --- -support/config.{guess,sub} - - update to latest versions +examples/loadables/accept.c + - new -b bindaddr option to bind to a specific IP address + - move setsockopt calls before bind() to avoid TIME_WAIT issues. Fixes + from Dzogovic Vehbo + 1/10 + ---- configure.ac - - add support for `genode' from Emery Hemingway + - bumped version to 5.2-alpha. - 5/14 + 1/16 ---- -test.c - - term: fix case where an argument that looks like a unary operator, - but doesn't have enough tokens left to have an argument to that - operator, was not being treated as a one-argument test. Affects - only uses of test with four and greater arguments, which posix says - are unspecified. This is a bug, or at least an incompatibility, at - least 30 years old. - - test_command: if there are unconsumed arguments, call test_syntax_error - with a `syntax error' argument if the first remaining argument starts - with a `-'. Better than a generic `too many arguments' error - 5/19 +tests/{unicode1,glob2,intl2}.sub, tests/run-intl + - minor changes to add warnings for missing locales that cause test + failures + + 1/17 ---- -configure.ac,config.h.in - - getrandom: add test, define HAVE_GETRANDOM - - getentropy: add test, define HAVE_GETENTROPY +parse.y + - history_delimiting_chars: if we have a blank line by the time we + hit the end of the tests, return a semicolon for the first blank + line to avoid running lines of a multi-line command together. + Fixes bug reported by Joakim Lindblad + +subst.c + - expand_string_for_patsub: expand the replacement string for pattern + substitution assuming that it will eventually be passed to + strcreplace to replace `&' with the matched portion of the string. + This calls expand_string_for_pat(), which leaves the string quoted + and does not perform word splitting, then calls + quote_string_for_repl to post-process the expanded string. + - quote_string_for_repl: perform quote removal on passed string while + replacing CTLESC escaping a `&' or a backslash with a backslash. The + result must be passed to strcreplace + - parameter_brace_patsub: call expand_string_for_patsub if + patsub_replacement is set to quote -variables.c - - get_urand32: use getrandom; provide imperfect emulation that uses - getentropy if available, and falls back to reading /dev/urandom if - that's not available. The idea is to use /dev/urandom as little as - possible + 1/18 + ---- +subst.c + - read_comsub: make istring_index a size_t to avoid overflow with very + large values of istring_size. + From https://savannah.gnu.org/support/index.php?110596 + - expand_word_internal: make istring_index a size_t - 5/20 + 1/20 ---- -configure.ac - - updated version to 5.1-alpha +buitins/cd.def + - add a description of `cd -' to the help text. Suggested by + Rob Landley -lib/readline/readline.h - - updated defines to readline version 8.1 + 1/21 + ---- +lib/glob/glob.c + - glob_vector: if we allocate NEXTLINK using malloc, and free it due to + some allocation failure, reset FIRSTMALLOC to avoid duplicate frees + later on -variables.c - - brand: if shell_compatibility_level is 50 or below, don't xor the - top and bottom halves of the 32-bit random number together, since - previous versions did not +subst.[ch] + - sub_append_string: the INDX parameter is now a size_t to avoid + overflow - 5/21 - ---- -COMPAT - - overhauled and updated the descriptions of the various shopt compatNN - options +parse.y + - decode_prompt_string: RESULT_INDEX is now a size_t to pass to + sub_append_string -doc/bashref.texi - - Shell Compatibility Mode: new section, describes compatibility levels, - BASH_COMPAT, and the various compatNN shopt options +jobs.[ch],nojobs.c + - wait_for_background_pids: now returns the number of jobs/processes + reaped - 5/23 - ---- -doc/bash.1 - - added Shell Compatibility mode section +builtins/wait.def + - wait_builtin: if -p pid supplied without -n, make sure we do something + useful if no job/pid arguments are supplied and there are no jobs. + Reported by Oguz -doc/{bash.1,bashref.texi} - - changed shopt section to list the compatibility options and refer - to Shell Compatibility Mode section - - BASH_COMPAT: overhauled the text, refers to Shell Compatibility Mode - section +builtins/read.def + - read_builtin: if we have a timeout, use SIGALRM instead of select + when in posix mode, since we use read instead of zread. Fixes bug + reported by Andreas Schwab - 5/27 +subst.c + - expand_string_dollar_quote: handle single-quoted and double-quoted + strings that might include $' and $" without attempting translation; + do more error checking for unterminated $' and $" that leaves those + characters unmodified. This is for use by readline's various line + expansion functions (shell_expand_line) + + 1/23 ---- -variables.c,/lib/sh/random.c - - moved functions that manage 16-bit and 32-bit random values to - lib/sh/random.c +parse.y,make_cmd.c + - revert change that unconditionally processes $'...' and $"..." in + here-document bodies; there are only a couple of cases where they + should be processed in a double-quote environment -alias.c - - add_alias: don't bother checking null alias values for ending in - space or tab + 1/24 + ---- -braces.c,include/typemax.h - - move sh_imaxabs and overflow and underflow detection to typemax.h - so the expression evaluation code can use it in the future +subst.c + - extract_dollar_brace_string: if we see another `${' on the rhs of + the operator, reset the dolbrace_state to DOLBRACE_PARAM while we + read this new ${...} string + - extract_heredoc_dolbrace_string: new function, variant of + extract_dollar_brace_string, to process the WORD in ${PARAM OP WORD} + while expanding lines of here-document data. It's complicated by the + requirement to add to the result string as we go along, since we + need to change the contents of the input string with ansi expansion + or locale translation. + - string_extract_single_quoted: take a new third argument: ALLOWESC. + This allows backslash to escape an embedded single quote, needed by + extract_heredoc_dolbrace_string to process $'...'; changed callers - 5/28 + 1/25 ---- -lib/readline/kill.c - - _rl_bracketed_read_mbstring: make sure to fill in mb[0] even if - the locale says MB_CUR_MAX == 1 in case a caller uses it. Partial - fix for bug reported by Phi Debian +parse.y + - parse_matched_pair: ansi-expand $'...' in WORD for ${PARAM OP WORD} + and single-quote the result if dolbrace_state == DOLBRACE_QUOTE + (posix pattern removal operators) even if extended_quote == 0 -lib/readline/vi_mode.c - - rl_vi_change_char: make sure _rl_vi_last_replacement gets filled in - in the case where MB_CUR_MAX == 1. Rest of fix for bug reported by - Phi Debian - - _rl_vi_callback_change_char: same fix for _rl_vi_last_replacement +subst.c + - extract_heredoc_dolbrace_string: add logic to align with parse.y: + parse_matched_pair and its $'...' expansion, including handling + extended_quote - 5/29 + 1/27 ---- -lib/malloc/malloc.c - - __P -> PARAMS - - union mhead: now 16 bytes to force 16-byte alignment; extra 8 bytes - at the end of struct minfo to use for guard bytes. Enabled if - pointers are 64 bits (SIZEOF_CHAR_P == 8) - - if we have 64-bit pointers, prepopulate the 64-byte bin first instead - of the 32-byte bin (pointers and WORD_DESCs still fit into 32 bytes, - but WORD_LISTs are now 36 bytes with malloc overhead). We can still - split 64-byte blocks to satisfy 32-byte requests - - internal_malloc: fill in the new 8 mh_magic8 bytes with MAGIC1 guard - bytes - - internal_malloc: print a warning message if the returned pointer is - not aligned according to MALIGN_MASK - - internal_free: detect underflow by checking that mh_magic8 is full - of MAGIC1 bytes - - internal_realloc: detect underflow by checking that mh_magic8 is full - of MAGIC1 bytes - -lib/malloc/stats.c - - _print_malloc_stats: slight adjustment for better column alignment - - 6/1 - --- +builtins/evalstring.c + - should_optimize_fork: broke conditions for optimizing away the fork + for a simple command out of optimize_fork into new function, call + from should_suppress_fork and optimize_subshell_command. Call from + optimize_fork if (subshell_environment & SUBSHELL_PAREN), relying + on fact that CMD_TRY_OPTIMIZING is only set in a couple of specific + conditions + - optimize_fork: call should_suppress_fork only if startup_state == 2; + it does the extra checks for that specific case + - optimize_fork: call should_optimize_fork if we're in a (list) + subshell (subshell_environment & SUBSHELL_PAREN) + - optimize_subshell_command: set CMD_TRY_OPTIMIZING on the right side + of a `&&', `||', or `;' list as long as it's a simple command so + we can check with optimize_fork() when it's time to execute it + execute_cmd.c - - execute_command_internal: treat a redirection failure with errexit - set as a command failure that exits the shell. Bug report from - Hyunho Cho + - execute_in_subshell: call optimize_subshell_command for (list) + subshells to either set CMD_NO_FORK for simple commands or set + CMD_TRY_OPTIMIZING for likely candidates for later optimization - 6/3 - --- -redir.c - - redirection_error: takes a new argument, FN, which if non-NULL is - the filename to be used in the error message. +builtins/common.h,builtins/evalstring.c + - optimize_fork: renamed to optimize_connection_fork; changed callers + + 1/31 + ---- +include/shmbutil.h + - COPY_CHAR_I,SCOPY_CHAR_I: add check for locale_utf8locale and + (c & 0x80) as in other macros -redir.[ch],builtins/evalstring.c - - redirection_error: changed extern declaration and callers +lib/sh/shquote.c + - sh_backslash_quote_for_double_quotes: rewrote to use array indexing + and COPY_CHAR_I to make it easier to drop in future calls to + charvis() to make `unsafe' characters visible if FLAGS == 1 -redir.c - - do_redirection_internal: takes a new third parameter, FNP, a char ** - to use (*FNP, if non-NULL) to store and return the expanded filename - for those redirections that take one - - do_redirections: pass a char ** (&fn) to do_redirection_internal to - get a pointer to the expanded filename; pass it to redirection_error - if appropriate. Free FN in any case, since do_redirection_internal - won't. Fix for double expansion of filename in certain redirections - reported by OÄuz - - 6/4 + 2/1 --- parse.y - - parse_comsub: while we're reading a here-document, don't perform any - history expansion (set history_expansion_inhibited). Fixes issue - reported by "ladyrick" + - parse_comsub: if we are currently expanding aliases, temporarily + turn off alias expansion if we are not in posix mode so we defer + alias expansion until command_substitute(). Fixes double-expansion + bug reported by Martijn Dekker and aligns with + https://www.austingroupbugs.net/view.php?id=1342 + - xparse_dolparen: turn off alias expansion entirely while running the + parser: either we do it in parse_comsub (posix mode) or in + command_substitute (default mode) + - parse_string_to_command: ditto + +subst.c + - command_substitute: if we are expanding aliases, temporarily turn + off alias expansion if we are in posix mode, since we already + performed it in parse_comsub() and are using the command string + reconstituted from the parse result -general.h,parse.y - - __P -> PARAMS +doc/bashref.texi + - bash posix mode: add description of alias expansion and command + substitution parsing and execution -shell.c - - shellstart: struct timeval used to initialize shell starting time; - shell_start_time now initialized from shellstart.tv_sec + 2/4 + --- +lib/readline/rltty.c + - rl_deprep_terminal: set _rl_last_c_pos to 0 after outputting + BRACK_PASTE_FINI, since the last character in that is \r. Partially + address issue raised by Markus Schwarzenberg + in https://lists.gnu.org/archive/html/bug-bash/2022-02/msg00056.html -variables.c - - assign_seconds: reset shellstart to set shell starting time + 2/5 + --- +doc/{bash.1,bashref.texi} + - minor typo fixes from Helge Kreutzmann -pcomplete.c - - include posixtime.h instead of + 2/7 + --- +{arrayfunc,variables}.c + - ARRAY_EXPORT: changes to encode array and assoc variables using a + scheme similar to shell functions so we can export arrays and + differentiate them from scalar variables and differentiate array + and assoc variables. Still not enabled by default. -lib/sh/{ufuncs,uconvert}.c - - include posixtime.h instead of the inline conditional includes +variables.c + - mk_env_string: third argument is now the variable's attributes or 0, + with all the attributes we can export arrays -aclocal.m4 - - BASH_STRUCT_TIMEVAL: convert to use AC_COMPILE_IFELSE instead of the - deprecated AC_HEADER_EGREP +lib/readline/bind.c + - active-region-start-color,active-region-end-color: new bindable + string variables, one to set the active region color (instead of + standout mode) and one to turn it off (instead of the "se" terminal + capability). They set _rl_active_region_start_color and + _rl_active_region_end_color variables via functions -posixtime.h - - struct timeval: if HAVE_TIMEVAL is not defined, provide a replacement - definition +lib/readline/display.c + - putc_face: if setting standout mode, check for both the start color + and end color variables and output the start color string. If turning + off standout mode (normal face), output the end color string. Both + variables must be set -lib/sh/gettimeofday.c - - gettimeofday: replacement function, so we don't have to use - HAVE_GETTIMEOFDAY in the rest of the code +lib/readline/{readline.c,rlprivate.h} + - declarations for _rl_active_region_start_color and + _rl_active_region_end_color - 6/5 + 2/8 --- -{lots of files}.[ch] -builtins/{lots of files}.{c,h,def} -lib/glob/{lots of files}.[ch] -lib/malloc/{lots of files}.[ch] -lib/sh/{lots of files}.c -include/{lots of files}.h -examples/loadables/{lots of files}.c - - __P -> PARAMS +bashline.c + - initialize_readline: add bindable name `vi-edit-and-execute-command' -doc/{bash.1,bashref.texi} - - SECONDS: clarify that the number of seconds is always determined by - querying the system clock +shell.c + - subshell_exit: make sure to set last_command_exit_value before + calling the exit trap. Fixes bug reported by Greg Edwards + - 6/8 + 2/9 --- -configure.ac - - if CFLAGS is not supplied in the environment or on the command line, - add the gcc options that suppress warnings about parens and print - formats in a slightly different way that will avoid some collisions - -lib/readline/readline.c - - _rl_dispatch_subseq: don't set rl_last_func to rl_vi_arg_digit, just - the same as if it were rl_digit_argument. This allows functions like - rl_yank_last_arg, which behave differently when called multiple times - in a row, to work closer to what is expected. This allows what - Leo Alekseyev reported to work, with caveats +lib/readline/{terminal.c,rlprivate.h} + - _rl_region_color_on,_rl_region_color_off: functions to output the + _rl_active_region_start_color and _rl_active_region_end_color + - _rl_reset_region_color: function to encapsulate setting the region + color to an arbitrary string, including doing memory management -lib/readline/vi_mode.c - - rl_vi_yank_arg: make sure to pass `key' to rl_yank_nth_arg, in case - it needs to use it later - - rl_vi_redo: suppress attempts to redo `.' when the current keymap is - vi_movement_keymap, since that will recursively call vi_redo +lib/readline/display.c + - putc_face: call _rl_region_color_on and _rl_region_color_off instead + of _rl_standout_on and _rl_standout_off - 6/11 - ---- -redir.c - - limit HEREDOC_PIPESIZE to 4096 on FreeBSD; that is where it can - handle atomic writes without hanging. Tested on FreeBSD 13 +lib/readline/terminal.c + - _rl_init_terminal_io: initialize _rl_active_region_start_color and + _rl_active_region_end_color from _rl_term_so and _rl_term_se, + respectively; reset every time the terminal is changed + - _rl_init_terminal_io: turn off the active region for a dumb terminal -[bash-5.1-alpha frozen] +lib/readline/bind.c + - sv_region_{start,end}_color: call _rl_reset_region_color with the + appropriate value for WHICH - 6/15 + 2/10 ---- -subst.c - - do_assignment_internal: call stupidly_hack_special_variables on the - name returned from the variable assignment, in case there was a - nameref expansion, and on the original name only if the assignment - returned NULL. Fixes bug reported by James D. Lin +lib/readline/doc/{rluser.texi,readline.3},doc/bash.1 + - active-region-start-color,active-region-end-color: documented new + bindable readline variables + - enable-active-region: document using active-region-start-color to + highlight the text in the region - 6/16 + 2/11 ---- -builtins/hash.def - - hash_builtin: don't print anything if the hash table is empty when - listing portably (-l) unless the shell compatibility level is <= 50 - Issue originally raised by +parse.y + - read_token,read_token_word: make sure characters read by shell_getc + are protected by appropriate calls to MBTEST when testing for shell + metacharacters and operators - 6/17 + 2/14 ---- -pathexp.c - - glob_name_is_acceptable: extend GLOBIGNORE to ignore `.' and `..' - as a terminal pathname component instead of just ignoring filenames - that are `.' or `..'. From a suggestion by Ilkka Virta - +builtins/shopt.def + - set_compatibility_level: if the current compatibility level is outside + the range of the compatNN options, just leave it alone when + unsetting one of the options (which by definition was already + unset). Fixes issue reported by Mihai Moldovan - 6/18 + 2/16 ---- -po/Makefile.in.in - - MKINSTALLDIRS: deprecated, no longer in AM_INTL_SUBDIR, so we have - to create the variable manually +lib/readline/search.c + - rl_history_search_{pos,len,flags}: rename to have a leading `_' + - _rl_history_search_pos: no longer static so other parts of readline + can see it -lib/readline/doc/rltech.texi - - add descriptions of the active mark functions that are available to - applications. I guess they will remain public +lib/readline/rlprivate.h + - _rl_history_search_pos: extern declaration -subst.c - - valid_parameter_transform: new function, reject transformations - longer than a single character or invalid transformation operators - - parameter_brace_transform: call valid_parameter_transform +lib/readline/readline.c + - readline_internal_teardown: don't run the undo list against the + current history entry if the non-incremental search functions have + set _rl_history_search_pos to it, since it doesn't reflect the + current contents of the line buffer. Fixes issue reported by + Andreas Schwab - 6/22 +lib/readline/misc.c + - _rl_start_using_history: initialize _rl_history_search_pos to + something invalid so it doesn't match where_history() + + 2/17 ---- -lib/sh/zread.c - - lbuf: bump size up to ZBUFSIZ (default 4096). From a report by - Jason A. Donenfeld +lib/readline/callback.c + - rl_callback_read_char: make sure _rl_eof_found is set to the value + of eof before calling the deprep terminal function, so it can do + different things based on whether the input code read EOF (or the + user entered the EOF character). From a gdb discussion started by + Andrew Burgess (still more to do, since this + is not part of the public API) -lib/sh/zcatfd.c - - zcatfd: lbuf: bump size up to ZBUFSIZ (default 4096) + 2/18 + ---- +lib/readline/readline.h + - RL_STATE_EOF: new readline state value; set when readline reads an + EOF character on an empty line or a read returns an error + - rl_eof_found: new public variable -lib/sh/zmapfd.c - - zmapfd: lbuf: bump size up to ZBUFSIZ (default 4096) +lib/readline/rprivate.h + - _rl_eof_found: renamed to rl_eof_found, so not declared here - 6/29 - ---- -aclocal.m4 - - BASH_FUNC_SBRK: changes for cross-compiling on FreeBSD variants, - from Jessica Clarke +lib/readline/{callback,readline}.c + - RL_STATE_EOF: set appropriately when readline gets an EOF. Suggested + by Andrew Burgess + - RL_STATE_EOF: make sure it's not set when readline starts + - rl_eof_found: set appropriately when readline gets an EOF -xmalloc.c - - HAVE_SBRK: use #if instead of #ifdef so we only use it if we think - it works +lib/readline/{callback,readline,rltty}.c + - rl_eof_found: new name for _rl_eof_found -examples/loadables/finfo.c - - st_dev,st_nlink: cast to unsigned long, report from Jessica Clarke - +lib/readline/doc/rltech.texi + - RL_STATE_EOF: document -unwind_prot.c - - unwind_protect_mem_internal: make sure we allocate at least as many - bytes for an entire UNWIND_ELT. Fix from Jessica Clarke - + 2/19 + ---- +parse.y + - parse_comsub: turn off parser state flags we don't want to inherit + into this call to the parser (PST_REGEXP, PST_EXTPAT, PST_CONDCMD, + PST_CONDEXPR for now). Fixes bug reported by konsolebox + - 7/1 - --- -eval.c - - alrm_catcher: use write(2) instead of fprintf to print the - auto-logout message to the terminal + 2/23 + ---- +findcmd.c,builtins/hash.def + - replace calls to is_directory with file_isdir, which only performs a + stat and doesn't do the eaccess call to check for an executable file -jobs.c - - UNQUEUE_SIGCHLD: set queue_sigchld to 1 around call to waitchld(), - since it is not being called from a signal handler and so SIGCHLD is - not blocked. Fixes report by Godmar Back +findcmd.c + - find_in_path_element: takes a new RFLAGSP argument, an int * where + the status flags for the returned pathname are returned; saves + additional calls to stat/eaccess + - search_for_command: get the returned flags from + find_user_command_in_path so we don't need any additional calls to + file_status after we find the command in $PATH - 7/2 - --- + 2/24 + ---- doc/{bash.1,bashref.texi} - - read: clarify that without any name arguments, the line assigned to - REPLY is not modified. From a question by M. Nejat AYDIN - with input from Eli Schwartz - + - FUNCTIONS: some small changes to the description of local variables + and dynamic scoping, with emphasis on how that affects `unset' + behavior. Inspired by a discussion with + Christoph Anton Mitterer - 7/5 - --- -lib/readline/vi_mode.c - - _rl_vi_done_inserting: make sure to close out all undo groups when - leaving insert mode, so we don't have anything dangling. - Report and fix from David Fries + 2/25 + ---- +examples/loadables/realpath.c + - renamed -s option to -q to align with other versions + - perform array assignment for `-a varname' even if -q option supplied + - renamed -S option to -s for Linux compatibility - 7/6 - --- -lib/readline/vi_mode.c - - _rl_vi_domove_motion_cleanup: the `c' and `C' commands should enter - insert mode even if the motion command doesn't delete any text. - From a report by David Fries - - _rl_vi_done_inserting: add a missing rl_end_undo_group when - _rl_vi_doing_insert is set: there should be one begun by - rl_vi_start_inserting and one begun by the command (change or replace). - From a report by David Fries - - rl_vi_replace: set _rl_vi_last_key_before_insert to 'R' explicitly, - since other code checks that and we want to allow users to rebind - this function - - 7/7 + 2/28 + ---- +lib/readline/misc.c + - _rl_free_saved_history_line: call rl_free_undo_list, saving and + setting rl_undo_list to the saved history line's data, so the right + call to _hs_replace_history_data happens and we don't end up with + a pointer aliasing problem. Fixes core dump reported by + Andreas Schwab , but does not make his + scenario equivalent to incremental search + + 3/1 --- -lib/readline/vi_mode.c - - rl_vi_{delete,change,yank}_to: if we have a non-null _rl_vimvcxt, - just reinitialize it so we don't have to allocate a new one. This is - a change primarily for callback mode, and fixes a memory leak +lib/readline/search.c + - make_history_line_current: save the current line before replacing it + with the found history entry using rl_maybe_save_line + - noninc_dosearch: we don't want the saved history line, so free it + after calling make_history_line_current + - _rl_history_search_internal: call rl_maybe_replace_line after making + changes to the line buffer with make_history_line_current so we can + save the undo list we constructed before we set the history position -builtins/evalstring.c - - optimize_shell_function: try to optimize away the fork in the last - command in a shell function body, under certain conditions + 3/2 + --- +lib/readline/display.c + - expand_prompt: add missing piece to patch from 10/26/2021: if we are + recalculating the number of invisible characters on the first line + of the prompt, we need to update INVFL, even if we already set it + when we hit the number of physical characters. This ends up being + assigned to prompt_invis_chars_first_line, and is used in several + subsequent calculations. Reported by + Andreas Schwab -execute_cmd.c - - execute_function: attempt to optimize away forks in a shell function - that is already marked NO_FORK and being executed in a command - substitution +lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 + - enable-bracketed-paste: add some language making it clearer that + bracketed paste prevents the pasted text from being interpreted as + editing commands. Suggested by Karl O. Pinc - 7/8 + 3/4 --- -{jobs,nojobs,trap,unwind_prot}.c,lib/malloc/{malloc,table}.c - - interrupt_immediately: remove, no longer used +make_cmd.c + - make_here_document: perform quote removal on the here-doc delimiter + only if it's marked as quoted, which prevents quotes from inside a + command substitution from being removed (they're supposed to begin a + new quoting context) when the word itself isn't flagged as quoted + (which means the body of the here-document gets expanded). You can't + perform quote removal *and* expand the here-document lines. From an + austin-group discussion back in early February + +lib/sh/strvis.c + - charvis -> sh_charvis; change caller + - sh_charvis: now take an additional SLEN argument to avoid having to + compute the string length every time; change callers + - sh_charvis: add a utf-8 locale-specific check before calling + COPY_CHAR_I (in practice, doesn't make any real difference) + + 3/10 + ---- +arrayfunc.c + - convert_var_to_array: if we're being asked to create an associative + array (flags & 2), and we have an existing variable that is not an + assoc array (and not an existing indexed array), call + convert_var_to_assoc to make it one + 3/11 + ---- jobs.c - - waitchld: don't perform asynchronous notification if we are currently - executing a builtin (executing_builtin != 0). Inspired by a report - from Godmar Back + - wait_for: don't call get_tty_state() if readline is dispatching + (RL_STATE_DISPATCHING) with the terminal settings changed + (RL_STATE_TERMPREPPED), the same way we don't if we are running a + command for programmable completion. Fixes bug with SIGINT reverting + to the saved readline terminal settings reported by + Markus Napierkowski - 7/9 - --- -lib/readline/signals.c - - _rl_handle_signal: block SIGTTOU while handling a SIGTTOU, since we - no longer run this in a signal handling context where SIGTTOIU would - be blocked +parse.y + - decode_prompt_string: make sure the expansion of \w, \W, and \s + are all run through sh_strvis before calling + sh_backslash_quote_for_double_quotes or just through sh_strvis if + we're not running the prompt string through word expansions. + Fixes issue reported by Josh Harcome back + in mid-January - 7/14 + 3/16 ---- -execute_cmd.c - - execute_simple_command: use new variable `cmdflags' instead of using - simple_command->flags directly; initialize from simple_command->flags - - check_command_builtin: take a simple command list of words starting - with `command' and including a command_word argument, and peel off - the `command' and any instances of `-p' and `--' and return the - updated list - - execute_simple_command: if the first word of the simple command is - `command', call check_command_builtin to peel off any `command' and - `-p' and `--' and go on to execute the rest of the words as a simple - command. If we're in posix mode, we've got the special builtins - handled before this runs. Fixes complaint about `command' in the - background running an extra bash process from Dmitry Alexandrov - +bashline.c + - bash_quote_filename: if we have a word to complete that contains + characters that introduce a word expansion, make sure the passed + string does *not* exist as a filename before removing those + characters from the set that must be backslash-quoted. See change + from 1/1/2022 - 7/17 + 3/18 ---- -doc/bash.1 -lib/readline/doc/{rltech,hstech,rluser}.texi -lib/readline/doc/{readline,history}.3 - - a few small tweaks to make the language gender-neutral +lib/readline/search.c + - make_history_line_current: don't free rl_undo_list or + _rl_saved_line_for_history; don't unconditionally save the history + line. This reverts some of the changes to support setting the + history position in history-search-backward + - rl_history_search_internal: only free the saved history line if we + were the ones who created it - 7/18 + 3/21 ---- -subst.c - - expand_word_internal: case `:' make sure the shell is either not in - posix mode or W_TILDEEXP is set before turning on W_ITILDE. The old - code would turn it on unconditionally if the W_ASSIGNMENT flag was - set. Fixes bug reported by OÄuz +lib/readline/nls.c + - xmalloc.h: include for systems without setlocale(), so xfree has a + prototype. Report and fix from András Kucsma - 7/20 - ---- -builtins/complete.def - - replace macros used to print compspec actions, options, and other - info with a small set of functions that traverse the structs used - to hold that information and print everything instead of eumerating - each option and action separately. From a patch submitted by - Martin Kealey +lib/readline/search.c + - _rl_history_search_internal: use previous-history/next-history to + move to the found history line instead of directly calling + history_set_pos. This makes the behavior more similar to incremental + search + - rl_history_search_internal: make sure to set rl_undo_list to the + current history undo list around the calls to rl_get_previous_history + or rl_get_next_history, in order to fool the call to + maybe_replace_line they make - 7/27 - ---- -variables.c - - push_posix_tempvar_internal: restore $SHELLOPTS after restoring the - values of shell options saved by `local -' by calling set_shellopts(). - Report from Grisha Levit +lib/readline/readline.c + - _rl_executing_func: the currently-executing readline command function -flags.c - - reset_shell_flags: set histexp_flag to 0 and let bash_history_reinit - take care of setting history_expansion appropriately. Report and fix - from Grisha Levit +lib/readline/rlprivate.h + - _rl_executing_func: extern declaration - 7/28 +lib/readline/search.c + - _rl_history_search_internal: removed (commented out) code that sets + the current history entry to the found history entry, too much + assumes that the current undo list should be applied to the current + history entry (where_history()) + + 3/23 ---- -general.c - - assignment: if (FLAGS & 1), we are parsing the contents of a compound - assignment, and a word must begin with a `[' and have a valid - subscript terminated by `]' before the `=' to be considered an - assignment statemen and subsequently expanded like one. Report from - Alexey Izbyshev +subst.c + - parameter_brace_expand_word: if we have double-quoted ${*} or ${@}, + make sure we are setting W_HASQUOTEDNULL in the flags we return to + the caller if we are returning QUOTED_NULL(word) + - parameter_brace_expand_word: if we have a double-quoted associative + array reference using `*' or `@', make sure we are setting + W_HASQUOTEDNULL in the flags we return to the caller if we are + returning QUOTED_NULL(word) + - parameter_brace_expand: if we're using the `[:]+' word expansion + operator, we need to note a quoted null string and pass the + W_QUOTEDNULL flag back to the caller + - expand_word_internal: make sure to return a QUOTED_NULL + (word[0] == CTLNUL) back to the caller if HAD_QUOTED_NULL is set, + regardless of whether or not we see a quoted dollar at. Fix for bug + reported by Andreas Luik - 7/30 +arrayfunc.c + - array_value_internal: fix typo and set estatep->type to ARRAY_INDEXED + for indexed arrays + + 3/31 ---- -lib/glob/sm_loop.c - - BRACKMATCH: if the bracket expression is matching simple characters - and not a range, compare the character from the string and the - pattern directly, as required by Posix interp 948 +lib/readline/{history.c,histlib.h} + - _hs_at_end_of_history: convenience function to tell whether or not + the current history position is at the end of the history list -lib/glob/smatch.c - - charcmp_wc: split off code that calls wcscoll from rangecmp_wc, - just return the results of wcscoll - - rangecmp_wc: call charcmp_wc and impose a total ordering - by performing a byte comparison (or wint_t comparison) of C1 and C2 - as required by Posix interp 948 (charcmp_wc takes care of the - behavior of FORCECOLL) - - collequiv_wc: call charcmp_wc instead of rangecmp_wc - - charcmp: character comparison code from rangecmp - - rangecmp: call charcmp and impose total ordering as required by - Posix interp 948 - - collequiv: call charcmp instead of rangecmp - - _fnmatch_fallback: ASCII version of fallback for equivalence classes - when there are no multibyte characters in the pattern; just calls - fnmatch with a reconstructed equivalence class pattern - - collequiv: call _fnmatch_fallback if charcmp returns non-zero and - the configure check indicates fnmatch has character class support. - Fixes issue reported by Harald van Dijk - - 8/2 + 4/1 --- -lib/readline/signals.c - - _rl_handle_signal: since we're not called in a signal handler context - any more, we don't need to explicitly unblock the signal we received - so the application's signal handler will get it when we resend the - signal to ourselves. It doesn't hurt anything to do it, but we don't - have to - - _rl_handle_signal: Set up a framework for any signals that need to - be blocked during cleanup: add the signal to SET (initialized to the - existing set of blocked signals) and set BLOCK_SIG to 1. We block - that set around the call to rl_cleanup_after_signal(). - - _rl_handle_signal: on AIX, if the signal is SIGHUP, make sure we - block SIGHUP while running rl_cleanup_after_signal() +lib/readline/search.c + - make_history_line_current: don't free rl_undo_list if it is equal to + _rl_saved_line_for_history->data, since we will need to restore it + later if we got it from a history entry. Fixes issue dating back to + 7/2021 and changes to _rl_free_saved_line_for_history, current issue + reported by Andreas Schwab - 8/3 + 4/5 --- -jobs.c - - start_job: don't allow `fg' or `bg' in a command substitution to - attempt to start a parent's jobs. Suggested by OÄuz - +lib/readline/{complete,histfile,histsearch,isearch,terminal}.c + - xfree: use instead of free -builtins/set.def - - set_current_options: only call change_flag or SET_BINARY_O_OPTION_VALUE - if the value has changed from what is stored in the bitmap, to avoid - any side effects from setting the options and save time on any - unnecessary function calls. Inspired by report from Grisha Levit - + 4/7 + --- +configure.ac + - bumped version to bash-5.2-beta -parse.y - - xparse_dolparen: before we jump to top level, check whether we are - still reading from the string (we might have run all the unwind- - protects) and turn off PST_CMDSUBST if we are not. Fixes fuzzing - bug reported by Jakub Wilk +[bash-5.2-beta frozen] - 8/4 + 4/8 --- -subst.c - - process_substitute: set subshell_environment to include SUBSHELL_ASYNC - in the child process, since we passed FORK_ASYNC to make_child. Fixes - DEBUG trap problem reported by Jonathan Rascher +lib/readline/input.c + - _rl_orig_sigset: need extern declaration if HAVE_SELECT is defined. + From https://savannah.gnu.org/support/?110634 -subst.c - - unlink_all_fifos: new function, just unconditionally closes and - unlinks (if using FIFOs) each pipe used for process substitution. - There is an open to unblock any child processes sleeping on the - FIFO first. Inspired by a suggestion from "CHIGOT, CLEMENT" - +examples/loadables/seq.c + - PRIdMAX: redefine if PRI_MACROS_BROKEN is defined. + From https://savannah.gnu.org/support/index.php?110635 -shell.c - - exit_shell: call unlink_all_fifos() instead of unlink_fifo_list() + 4/11 + ---- +configure.ac + - BASH_FUNC_STRTOIMAX: replace strtoimax if the system doesn't provide + a declaration in a standard header file. Uses new m4/strtoimax.m4. + From https://savannah.gnu.org/support/index.php?110633 -sig.c - - termsig_handler: call unlink_all_fifos() instead of - unlink_fifo_list() +builtins/printf.def + - getdouble: new function, parses string into `double' using strtod + - printf_builtin: check for the `L' length modifier and use long + doubles for the floating point conversion specifiers. If it's not + supplied, use `double' when in posix mode (as posix specifies) and + long double (if it's available, double if not) in default mode. + From a report from Paul Eggert - 8/5 - --- -arrayfunc.c - - quote_compound_array_list: turn empty strings into '' instead of - leaving them unmodified. Fixes bug in changes from 4/29 reported - by andy_bash + 4/12 + ---- +lib/sh/oslib.c + - bzero: update function signature to modern BSD version - 8/10 + 4/14 ---- -bashline.c - - edit_and_execute_command,bash_execute_unix_command: restore the bash - signal handlers before running parse_and_execute() so bash will catch - and handle signals, instead of letting readline catch them without - any opportunity to run _rl_handle_signal(). Fixes bug reported by - Stan Marsh +lib/sh/oslib.c + - bcopy, gethostname, mkfifo: update function signatures to modern + versions - 8/11 + 4/15 ---- -builtins/fc.def - - fc_gethnum: return HIST_INVALID for -0 if not in listing mode - - fc_builtin: throw an out-of-range error if histbeg or histend gets - set to HIST_INVALID - - fc_builtin: don't throw errors for other out-of-range history - specifications, clamp them at the beginning or end of the history - list, as appropriate, per POSIX. Report and fix from Martijn Dekker - +jobs.c,nojobs.c + - wait_for_single_pid: if the pid or job argument is invalid -- isn't + a child of this shell -- return 257, which is out of the range of + valid 8-bit status values + +execute_cmd.c + - execute_pipeline: if wait_for_single_pid returns > 256, set it to + 127 (invalid process) - 8/12 +jobs.c + - wait_for_background_pids: if wait_for_single_pid returns > 256, set + the status we return in PS to 127 (what it was before) + +builtins/wait.def + - wait_builtin: if wait_for_single_pid returns > 256, treat it as an + error and set pstat.pid to NO_PID + - wait_builtin: if -p supplied, and we get to the end of the argument + list with PSTAT.PID != NO_PID (which we assume means that the return + value is set from PSTAT.STATUS), set the variable name to PSTAT.PID. + From a report by Robert Elz + - wait_builtin: for compatibility with the netbsd sh, leave the variable + name specified with `-p' unset if there are no PID arguments. + From a report by Robert Elz + + 4/17 ---- -builtins/fc.def - - fc_gethnum: return HIST_NOTFOUND (new error) if the string is not a - number and doesn't correspond to any command in the history list - - fc_builtin: print a "no command found" error message if fc_gethnum - returns HIST_NOTFOUND +parse.y + - xparse_dolparen: if (flags & SX_NOLONGJMP), don't call + jump_to_top_level() on errors + +bashline.c + - bash_quote_filename: don't call quote_word_break_chars() unless we + have word break chars initialized. Fixes bug reported by + Sam James - 8/14 + 4/18 ---- -flags.c - - no_invisible_vars: removed undocumented `-I' flag +pcomplete.c + - gen_globpat_matches: call glob_filename with the GX_GLOBSTAR flag if + the `globstar' shell option is enabled. From a report by + Steve -{flags,variables}.c,flags.h,builtins/{declare,setattr.def} - - no_invisible_vars: remove all references +lib/malloc/malloc.c + - internal_free: remove the GLIBC21 code (!) + - internal_free: make the code that tests against memtop and calls + lesscore depend on USE_LESSCORE being defined, which it is by + default -command.h - - PF_ALLINDS: new flag, means to expand an array variable name without - a subscript as if it were subscripted by `@' instead of `0' +lib/malloc/imalloc.h + - USE_LESSCORE: define -subst.c - - parameter_brace_expand_word: if PFLAGS contains PF_ALLINDS, expand - an array variable name as if it were subscripted by "@" instead of - 0/"0": a string with the element values separated by " ". Little - nuance; we're just interested in whether or not there are any - values at all - - parameter_brace_expand: if we are expanding something like ${foo@a}, - pass PF_ALLINDS to parameter_brace_expand_word and - parameter_brace_expand_indir so we don't get tripped up on `nounset' - if foo has an assigned subscript other than 0/"0". Inspired by a - report from Andrew Neff +parse.y,shell.h + - token_buffer_size and its corresponding saved value in the shell's + parser state are now size_t instead of int - 8/17 +stringlib.c + - strsub,strcreplace: use size_t instead of int for local length and + indexing variables + +lib/sh/zmapfd.c + - zmapfd: use size_t instead of int for local length and indexing + variables + +lib/sh/zgetline.c + - zgetline: use size_t instead of int for local length and indexing + variables + + 4/20 ---- -bashhist.c - - bash_add_history,maybe_add_history: don't need to call shell_comment - if we are in the middle of adding a here-document, since it may - call the parser recursively on data that is not guaranteed to be - valid input. From a report by Hyunho Cho +pcomplete.c + - init_itemlist_from_varlist: free VLIST after assigning it from + *SVFUNC and after we get the variable names and values out of it. + Report from Robert E. Griffith - 8/24 + 4/25 ---- -lib/readline/complete.c - - compare_match: compare TEXT from the line buffer and MATCH, a - possible completion for TEXT, after dequoting TEXT if necessary - - rl_complete_internal,rl_menu_complete : if show-all-if-unmodified is - set, use compare_match instead of a straight strcmp to determine if - the match has changed the text to complete, so we can use it for - filenames that require quoting. Report and pointer to fix from - Abon B +redir.c + - here_document_to_fd: if the shell compatibility level is bash-5.0 or + earlier, use tempfiles for all here-documents and here-strings. From + a bug-bash discussion started by Sam Liddicott - 8/25 + 4/26 ---- -eval.c - - execute_prompt_command: PROMPT_COMMAND can now be an array, subsuming - PROMPT_COMMANDS, which bash no longer looks for. Prompted by a - suggestion from Martijn Dekker +parse.y + - parse_comsub: non-interactive shells exit on a syntax error while + parsing the command substitution + - parse_comsub: unset additional PARSER_STATE flags before calling + yyparse(). Inspired by https://bugs.gentoo.org/837203; unsetting + PST_COMPASSIGN is the fix for that bug + - parse_string_to_word_list: use save_parser_state/restore_parser_state + instead of saving pieces of the shell state in individual variables + - parse_compound_assignment: use save_parser_state/restore_parser_state + instead of saving pieces of the shell state in individual variables + - parse_compound_assignment: unset additional PARSER_STATE flags before + calling read_token(); set esacs_needed_count and expecting_in_token + to 0 like in parse_comsub() since read_token can use them - 8/26 + 4/27 ---- -builtins/fc.def - - fc_gethnum: now takes a flags word as the third argument, with two - current flag values: HN_LISTING, which means we are listing history - entries, and HN_FIRST, which means we are parsing the first in a - first,last range of history entries - - fc_gethnum: if we have a number >= 0, and it's out of range, return - different values (0 or last history) depending on whether we are - parsing the first or last in a range argument. Based on a report from - Martijn Dekker +lib/sh/strvis.c + - sh_charvis: changes to handle being compiled without multibyte support - 8/31 + 4/29 ---- -parse.y - - grammar: call handle_eof_input_unit from the eof-after-error - production only from interactive top-level shells, so a syntax error - in `eval' doesn't exit an interactive shell. Report and fix from - Koichi Murase +lib/readline/callback.c + - rl_callback_read_char: don't set rl_eof_found unless eof is > 0, + since it can be -3 if we need to read more input in a multi-key + sequence. Report from Andrew Burgess -bashline.c - - bash_execute_unix_command: if we call parse_and_execute with allocated - memory, make sure not to include SEVAL_NOFREE in the flags so it will - free that command string before returning. Report and fix from - Koichi Murase +examples/loadables/Makefile.sample.in + - new file, containing the rules to build the example shared object + - includes Makefile.inc from wherever it's installed. Suggested by + Robert E. Griffith -array.[ch] - - array_to_argv: now takes a second argument: COUNTP; returns the number - of elements stored in the strvec - - array_to_argv: don't store array elements with null values; it makes - it hard for callers to walk the whole array reliably +examples/loadables/Makefile.inc.in + - remove rules that create the example shared object -pcomplete.c - - gen_shell_function_matches: change call to array_to_argv + 4/30 + ---- +builtins/evalstring.c + - parse_and_execute: check for terminating signals before returning, + after any longjmp, to improve responsiveness and fix the -c code + path before running any exit trap. Report from + Emanuele Torre -array.h - - execute_array_command: now takes the entire ARRAY * as the first - parameter + 5/17 + ---- +builtins/suspend.def + - suspend_builtin: the -f option now forces a suspend even if job + control is not enabled. Inspired by a discussion with + Robert Elz -eval.c - - execute_array_command: now takes the entire array, puts the elements - into a strvec, and executes each element of the strvevc as a command. - This protects against a command from PROMPT_COMMAND[n] unsetting the - corresponding element of PROMPT_COMMAND. - From a report from Koichi Murase +doc/{bash.1,bashref.texi} + - suspend: updated description to include expanded -f behavior - 9/7 + 5/25 + ---- +builtins/mkbuiltins.c + - -includefile: new argument, specifies extern filename to insert + into the #include statement in the structfile (builtins.c) and + the filename in the comment in the extern file (builtext.h). + From Alexander Kanavin via + https://savannah.gnu.org/patch/?10210 + +builtins/Makefile.in + - builtins.c: change call to mkbuiltins to add -includefile option + - builtins.c: change recipe to run all the commands in the same shell + invocation + - builtins.c: change recipe to specify new filenames in the call to + mkbuiltins and move them onto builtins.c/builtext.h if the new ones + are different; make the new filenames use the current make recipe + shell pid in the filename ($$RECPID). + Inspired by Alexander Kanavin via + https://savannah.gnu.org/patch/?10210 + + 6/2 --- -[bash-5.1-beta frozen] +builtins/common.c + - builtin_find_indexed_array: new function, factored common code out + of mapfile and read builtins to find an in-scope indexed array or + create one - 9/8 - --- -lib/readline/display.c - - _rl_update_final: don't bother doing anything if the line structures - have not been initialized. Report and fix from gary@catalyst.net.nz +builtins/common.h + - builtin_find_indexed_array: extern declaration + +builtins/{mapfile,read}.def + - change callers to use builtin_find_indexed_array variables.c - - get_histcmd: perform the same adjustment as in prompt_history_number; - make sure to subtract one if we're doing this while executing a - command that has already been saved to the history list. Inspired - by a report from L A Walsh + - unbind_global_variable, unbind_global_variable_noref: new functions + that remove variables from the global_variables table - 9/14 - ---- -aclocal.m4 - - BASH_STRUCT_WEXITSTATUS_OFFSET: fix typo in loop condition reported - by Andreas K. Hüttel +lib/sh/shmatch.c + - sh_regmatch: use unbind_global_variable_noref to make sure we act on + the copy of BASH_REMATCH in the global scope all the time, ignoring + any local variables that might exist. Tentative fix for memory leak + report from Emanuele Torre -syntax.h - - slashify_in_here_document: restore previous value that doesn't - include double quote, since it's only special in certain cases +doc/{bash.1,bashref.texi} + - BASH_REMATCH: add caveat about making it a local variable -subst.c - - expand_word_internal: when processing backslash-double quote inside - a ${...} construct inside a here documemt, treat it the same as if - it were double-quoted, as posix says. Fixes report from - Andreas Schwab + 6/6 + --- +print_cmd.c + - print_redirection: if the redirectee for r_duplicating_output_word + (r_duplicating_input_word) is 1 (0), don't print it; only print a + non-default file descriptor number + - print_redirection_list: remove the code that tries to temporarily + translate a >&word redirection to >&word now that we won't print a + non-default file descriptor number. Fixes issue with `declare -f' and + function export reported by Namikaze Minato - 9/15 + 6/13 ---- -support/signames.c - - added a number of more esoteric signal names from AIX and Solaris +configure.ac + - bumped version to bash-5.2-rc1 -parse.y - - report_syntax_error: make sure that the exit status is only set to - one of the special builtin exit statuses if we are really executing - a builtin here, not just if parse_and_execute_level > 0. Reported by - Rob Landley +[bash-5.2-rc1 released] -execute_cmd.c - - EX_BADSYNTAX: make sure that gets translated into EX_BADUSAGE (2) - - execute_simple_command: if a function returns a value greater than - EX_SHERRBASE, use builtin_status to translate it, as if a builtin - were being executed - - builtin_status: make sure a status > EX_SHERRBASE gets translated to - EXECUTION_FAILURE + 6/15 + ---- +parse.y + - parse_string_to_word_list: save the parser state before any state- + changing functions like bash_history_disable(). Reported by + Clark Wang - 9/21 + 6/16 ---- -subst.c - - process_substitute: set up input from /dev/null (standard for an - asynchronous process) only if the shell is interactive and reading - input from the terminal. This allows scripts to use process - substitution to filter stdin. From a report from - Andreas Schwab +doc/bash.1 + - play tricks with the value of the zZ number register to refer to + `bash(1)' instead of `above' or `below' when creating the builtins + man page - 9/23 + 6/17 ---- doc/{bash.1,bashref.texi} - - ENV: a couple of changes clarifying that it's only used when an - interactive shell is started in posix mode. Report from - Reuben Thomas + - wait: note that wait will return > 128 if interrupted by a signal. + Reported by AA -examples/loadables/asort.c - - asort: loadable builtin to sort an array. Contributed by - Geir Hauge +execute_cmd.c + - {execute_cond_node,execute_arith_command,eval_arith_for_expr}: make + sure to reset this_command_name after running any DEBUG trap so the + DEBUG trap doesn't overwrite it. + Reported by Emanuele Torre . + - execute_select_command: set this_command_name to NULL after running + any DEBUG trap like execute_for_command does - 10/1 + 6/23 ---- +test.c + - three_arguments: when given [ ! ! arg ], make sure to advance POS + after calling two_arguments to avoid a `too many arguments' error. + Report from Steffen Nurpmeso -[bash-5.1-rc1 frozen] - - 10/7 + 6/27 ---- subst.c - - process_substitute: try it without setting the stdin for a process - substitution started from an interactive shell to /dev/null. We will - have to see if this causes problems like those reported back in - 9/2019 by Grisha Levit. From a report by Hyunho Cho + - expand_word_internal: when expanding backquoted command substitution, + call string_extract with the SX_REQMATCH flag (closing backquote + required) only if the word flags don't contain W_COMPLETE, + indicating that we're doing this for completion, probably to + determine whether or not to append something to the word. Fixes bug + reported by Emanuele Torre . -lib/readline/terminal.c - - _rl_init_terminal_io: if the terminal is unknown, disable bracketed - paste on the assumption it can't handle the enable/disable escape - sequences + 7/5 + --- +execute_cmd.c + - execute_connection: treat a connector of '\n' the same as ';' - 10/8 +print_cmd.c + - print_comsub: new function, sets flag noting we are printing a + command substitution and calls make_command_string + - make_command_string_internal: add '\n' to the ';' case; print command + list with newline connector appropriately + +parse.y + - parse_comsub: call print_comsub instead of make_command_string + - list1 production (part of compound_list): if a list is separated by + newlines, and the parser is parsing a command substitution, make + the connection command with a '\n' connector. Makes the text + output of parse_comsub closer to the original source text. From a + report from Martijn Dekker + + 7/6 + --- +doc/bash.1,lib/readline/doc/rluser.texi + - complete: add note about arguments passed to command specified by + `complete -C'; suggested by Mark Chandler + +builtins/setattr.def + - show_local_var_attributes: special-case `local -', since there is + no `declare -' equivalent. + Reported by Emanuele Torre . + - show_all_var_attributes: use `local -' when printing a variable named + `-' at the current non-zero variable context + +parse.y + - shell_getc: if we are at the end of an alias, returning a space, + make sure we mark the previous character as single-byte by modifying + shell_input_line_property so the space we return is properly + recognized. This would fail before if the last character of the + alias was a multi-byte character. Reported by + Vangelis Natsios + + 7/12 ---- -lib/readline/terminal.c - - _rl_init_terminal_io: if the terminal name is "dumb", disable - bracketed paste mode. Suggested by - Andreas Schwab +lib/readline/isearch.c + - rl_display_search: don't call rl_redisplay_function before returning; + rl_message already calls it. Reported by + Frédéric Moulins - 10/13 - ----- -trap.[ch] - - set_trap_state: new function to allow other signal handlers to set - the internal state that trap_handler would set to note that the - shell received a trapped signal. Used by sigint_sighandler(). +configure.ac + - bumped version to bash-5.2-rc2 -sig.c - - sigint_sighandler: call set_trap_state to set the pending trap state - for SIGINT if trap_handler is not called. Needed because - throw_to_top_level now checks whether a signal is pending before - running the trap (change from 4/2020) + 7/18 + ---- +jobs.c + - set_job_control: don't bother calling tcgetpgrp if shell_tty < 0, + since it will just fail -builtins/trap.def - - trap_builtin: if the shell is interactive (interactive_shell != 0) - but running something like PROMPT_COMMAND that sets - parse_and_execute_level > 0 but interactive == 0, make sure to set - the signal handler to the default interactive shell SIGINT handler - (sigint_sighandler) instead of the default non-interactive one. - Fixes bug reported by Daniel Farina with a hint - from felix +variables.c + - reset_local_contexts: new function, delete all context tables + associated with shell functions and set variable_context to 0. + Called when we want to stop executing in a shell function without + going through the pop_context chain with its side effects - 10/26 - ----- +variables.h + - reset_local_contexts: extern declaration -lib/readline/{readline.c,rlprivate.h} - - _rl_enable_active_region: new variable, mirrors value of - _rl_enable_bracketed_paste - - BRACKETED_PASTE_DEFAULT: new define, default initial value of - _rl_enable_bracketed_paste and _rl_enable_active_region +builtins/evalstring.c + - parse_and_execute: call reset_local_contexts instead of setting + variable_context to 0 -lib/readline/bind.c - - hack_special_boolean_var: make sure that _rl_enable_active_region - is set appropriately when "enable-bracketed-paste" is modified +eval.c + - reader_loop: call reset_local_contexts in cases where the shell has + longjmped for a fatal error and errexit is enabled (ERREXIT), but + not for other cases, and especially not for the exit builtin, + instead of just setting variable_context to 0. Fixes issue originally + reported by Robert Stoll -lib/readline/isearch.c - - _rl_isearch_dispatch: make sure that we activate the mark on finding - the search string only if _rl_enable_active_region is non-zero, even - if bracketed paste is enabled +subst.c + - pat_subst: implement sed-like behavior when presented with a null + pattern that's anchored at the start or end of the string, or when + presented with a null string: process the replacement string for `&' + and `\&' and substitute in the result as before. Patch from + Koichi Murase -lib/readline/search.c - - noninc_dosearch: make sure that we activate the mark on finding - the search string only if _rl_enable_active_region is non-zero, even - if bracketed paste is enabled + 7/20 + ---- -lib/readline/kill.c - - rl_bracketed_paste_begin: make sure we activate the mark only if - _rl_enable_active_region is enabled +[bash-5.2-rc2 frozen] -lib/readline/isearch.c - - _rl_isearch_dispatch: the requirement for number of available unread - characters (bytes) to trigger the bracketed paste test is now - BRACK_PASTE_SLEN-1, like for non-incremental searches + 7/27 + ---- +parse.y + - reset_parser: set need_here_doc, esacs_needed_count, expecting_in_token + all to 0, since jumping back to a top-level parse needs that + - parse_comsub: make sure to reset expand_aliases and shell_eof_token + if we're not going to exit immediately out of this function - 10/29 - ----- + 7/28 + ---- +parse.y + - parse_comsub: if the compatibility level is <= 51, set extglob while + parsing the command substitution, so bad pattern errors can still be + caught but valid patterns are let through and can be evaluated at + runtime, when extglob may have been set. If it isn't set, it will + still be a parser error when the command substitution is executed. + Fixes report from Sam James about gentoo scripts. + - reset_parser: set extended_glob from global_extglob if the parser + state includes PST_CMDSUBST + - xparse_dolparen: set global_extglob but don't modify extended_glob, + so parse errors can be caught before forking a child for command + substitution, as part of word expansion, but after extglob may have + been set by command execution (e.g., in a shell function) -doc/bash.1,lib/readline/rluser.texi - - enable-bracketed-paste: change to note the the current default is `On' + 8/5 + --- +[bump version to bash-5.2-rc3] - 10/30 - ----- -lib/glob/glob.c - - wdequote_pathname: if wcsrtombs fails, make sure to check whether it - leaves wpathname set to a non-NULL value before checking whether or - not *wpathname is a null character (indicating an incomplete - conversion). Fixes https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=972286 - with an assist from Bernhard Übelacker + 8/6 + --- +trap.c + - run_pending_traps: move code from evalstring() so we call + parse_and_execute() directly and handle any `return' invocations so + we can restore the value of running_trap. Otherwise, if we longjmp + past this function, we will think we're running a trap after we + finish. Prompted by post from Koichi Murase - 11/1 + 8/9 + --- + +lib/readline/nls.c + - _rl_current_locale: private variable, stores the value of the + LC_CTYPE locale category, as determined by _rl_init_locale; set + to allocated memory in _rl_init_locale() + - _rl_set_localevars: new function, code from _rl_init_eightbit that + checks the current locale (passed as an argument) and sets the + various locale-aware variables based on it. It accepts a second + argument: FORCE. If non-zero, it means to restore the default "C" + locale values if the locale is "C" or "POSIX", now that this + function can be called multiple times + - _rl_init_eightbit: now just calls _rl_init_locale and + _rl_set_localevars + - _rl_reset_locale: new function, checks whether our the locale has + changed since we last called _rl_init_locale to set our internal + idea of its value. If it has changed, call _rl_set_localevars with + the new locale and a FORCE argument of 1 to change the + locale-dependent variables. + +lib/readline/rlprivate.h + - _rl_reset_locale: extern declaration + +lib/readline/readline.c + - rl_initialize: call _rl_reset_locale instead of _rl_init_locale so + the internal readline variables get set when we move from a non- + multibyte locale ("C") to a multibyte one ("en_US.UTF-8"). Report + from Alan Coopersmith + + 8/16 ---- -lib/readline/isearch.c - - _rl_isearch_dispatch: when checking whether the current character is - one of the isearch `opcodes', only check the multibyte character - member of CXT if we're currently running in a multibyte locale. Don't - assume that other parts of the code will set mb[0] = c and mb[1] = 0. - Report from Detlef Vollmann +lib/sh/setlinebuf.c + - sh_setlinebuf: allocate buffers for line-buffering stdout and stderr + only once, the first time it is requested. Only allocate memory if + we're using setvbuf (we usually are). Double the buffer size to 2016 + if we're using the bash malloc. Otherwise, let stdio handle it. + + 8/17 + ---- +builtins/exec.def + - exec_builtin: make sure to initialize orig_job_control in case the + command is not found by search_for_command. Report and fix from + Xiami -[bash-5.1-rc2 frozen] +[bash-5.2-rc3 frozen] - 11/10 - ----- -lib/readline/isearch.c - - _rl_isearch_dispatch: if we are aborting the search, make sure to - call _rl_fix_point and to make sure the point and mark are less - than the new rl_end, in case they got out of sync. Report and fix - from Tillmann Osswald + 8/27 + ---- +parse.y + - parse_comsub: restore extended_glob to a local copy (local_extglob) + only if we changed it; a safer way to do it. Fixes extglob change + issue reported by Kerin Millar + - cond_term: restore extended_glob to a local copy; safer than using + global_extglob, which we will reserve for error recovery -test.c - - unary_test: assume the argument has already been expanded (the code - paths for [[ and [ expand it) and add AV_NOEXPAND to the flags passed - to array_value if assoc_expand_once is enabled. Prompted by a report - from Greg Wooledge + 8/30 + ---- +parse.y + - parse_comsub: don't clear the pushed string list; we might need it to + consume additional input to satisfy this command substitution. When + we restore the parser state, don't restore the pushed string list in + case we used it. From + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1018727 + - parse_comsub: don't modify extended_glob if parser_state includes + PST_EXTPAT, in which case we've already set extended_glob and + global_extglob appropriately. Only matters in compatibility mode. -[bash-5.1-rc3 frozen] + 8/31 + ---- +subst.c + - parameter_brace_transform: make sure we return an error if *xform + is '\0'. Report from Ivan Kapranov - 11/18 - ----- -doc/{bash.1,bashref.texi} - - small tweaks to the ulimit description to make it more consistent with - the Posix standard's terminology + 9/7 + --- +[bump version to bash-5.2-rc4] + + 9/8 + --- +[bash-5.2-rc4 frozen] - 12/4 + 9/20 ---- +lib/readline/history.c + - replace_history_entry: check for a NULL timestamp before trying to + copy it. Report from nov.ondrej@gmail.com -[bash-5.1-release frozen] + 9/23 + ---- +[bash-5.2 frozen] diff --git a/CWRU/misc/bison b/CWRU/misc/bison old mode 100755 new mode 100644 diff --git a/ChangeLog b/ChangeLog deleted file mode 120000 index 12c9a285d..000000000 --- a/ChangeLog +++ /dev/null @@ -1 +0,0 @@ -CWRU/changelog \ No newline at end of file diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 000000000..da6d4aa1c --- /dev/null +++ b/ChangeLog @@ -0,0 +1,3952 @@ + + 12/6/2020 + --------- + +[bash-5.1 released] + + 12/7 + ---- +Makefile.in + - bashline.o: add dependency on ${DEFDIR}/builtext.h. Report from + Fazal Majid + + 12/11 + ----- +builtins/wait.def + - wait_builtin: don't assign the variable given with -p if there are no + jobs to wait for. Report and fix from OÄuz + +arrayfunc.c + - kvpair_assignment_p: return non-zero if argument L appears to be a + key-value pair associative array compound assignment + - expand_and_quote_kvpair_word: run a single word in a key-value pair + associative array compound assignment through the appropriate + expansions and single-quote the result + +arrayfunc.h + - kvpair_assignment_p, expand_and_quote_kvpair_word: extern declarations + +subst.c + - expand_oneword: detect whether VALUE appears to be a key-value + pair compound assignment and call the appropriate function to expand + each word in the resulting list. Fixes inconsistency reported by + oguzismailuysal@gmail.com + + 12/12 + ----- +subst.c + - command_substitute: don't reset pipeline_pgrp to shell_pgrp if we + are already forked to run a command (SUBSHELL_FORK). Fixes SIGINT + in command substitution in here-document in forked child issue + reported by oguzismailuysal@gmail.com + + 12/18 + ----- +execute_cmd.c + - execute_pipeline: execute the lastpipe code even if prev == 0. It + can only be 0 here if stdin was closed when this function was + executed + - execute_pipeline: if prev == 0, set lstdin to a sentinel (-1) that + means to close fd 0 after executing the command, and call close(prev) + before restoring stdin. restore_stdin now understands -1, and closes + fd 0. Fixes issue reported by Tomas Janousek + + 12/21 + ----- +doc/bashref.texi + - PROMPT_COMMANDS: clean up a couple of remaining instances of this + name. Report from Eli Schwartz + + 12/26 + ----- +subst.c + - command_substitute: make sure that the child process always has + pipeline_pgrp == shell_pgrp: if pipeline_pgrp is non-zero when we + get to the child, meaning that we're part of an already-forked + child that is, for instance, running redirections, we need to reset + shell_pgrp to it to preserve the invariant. Fixes bug with terminal + being set to the incorrect pgrp reported by oguzismailuysal@gmail.com + + 12/29 + ----- +configure.ac,builtins/shobj-conf,m4/threadlib.m4 + - midnightbsd: update auto-configuration to treat MidnightBSD like + FreeBSD. From https://savannah.gnu.org/patch/?10006 + + 12/30 + ----- +examples/loadables/stat.c + - stattime: use strftime with a default format or the format supplied + with the -F option to format the file time information + - stat_builtin: now takes a -F fmt option for a strftime format string; + change to function calling sequences to pass the format down to + stattime + +examples/loadables/Makefile.in + - stat: now built and installed by default + + 12/31 + ----- +command.h + - SUBSHELL_IGNTRAP: new flag value + +jobs.c + - make_child: set SUBSHELL_IGNTRAP in subshell_environment in the + child process, meaning that we should not execute trap handlers for + trapped signals + +execute_cmd.c + - execute_in_subshell, execute_simple_command, execute_disk_command: + make sure to unset SUBSHELL_IGNTRAP after a child process restores + the original signal dispositions + - execute_simple_command: make sure to set SUBSHELL_IGNTRAP after + make_child returns and we're setting subshell_environment directly + +subst.c + - command_substitute,process_substitute: unset SUBSHELL_IGNTRAP after + the child process has reset the trapped signal dispositions + +trap.c + - trap_handler: if we get a signal for which we have set a trap, but + SUBSHELL_IGNTRAP is set in subshell_environmnent, make sure we + restore the original signal disposition and resend the signal to + ourselves. Fixes issue reported by Nikolay Borisov + (or at least makes the race window much smaller) + +sig.c + - initialize_terminating_signal: set the original signal handler from + the return value from sigaction; a minor optimization that saves a + system call or two + + 1/5/2021 + -------- +builtins/declare.def + - declare_internal: make some option combinations that don't make + sense errors (e.g., -f and -a/-A/-i/-n) + - declare_internal: if we build a new variable name by expanding the + value of a nameref variable, make sure to chop the `+' in a `+=' + off before going on + + 1/7 + --- +doc/{bash.1,bashref.texi} + - bind: add an example to the synopsis making it clear that you can + use any readline command line as a non-option argument, as it says + in the text. From a report from Dan Jacobson + + 1/12 + ---- +locale.c + - local_shiftstates -> locale_shiftsates in the non-multibyte code + branch. Reported by Henry Bent + +subst.c + - expand_compound_assignment_word: make sure to call dispose_words on + the WORD_LIST * returned from expand_oneword after turning it back + into a string. Fixes memory leak reported by Alexander Mescheryakov + + + 1/13 + ---- +variables.c + - bind_variable_internal: when performing an assignment to a subscripted + array variable that was the value of a nameref (used in the original + assignment), don't call make_variable_value on the value, since that + messes up +=. Just call assign_array_element and let that take care + of calling make_variable_value appropriately. Fixes bug reported by + Oguz + + 1/14 + ---- +findcmd.c + - search_for_command: if `checkhash' is set, don't add non-executable + files to the command hash table, since we will just remove them + later + +lib/sh/winsize.c + - get_new_window_size: set *rp and *cp even if READLINE is not defined + + 1/15 + ---- +lib/sh/winsize.c + - get_new_window_size: call rl_set_window_size only if we can determine + we're using readline: an interactive shell without no-line-editing, + or if we've already initialized readline, presumably in a non- + interactive shell + +support/Makefile.in + - man2html: add LDFLAGS_FOR_BUILD to the recipe. Report from + Jeffrey Walton + + 1/17 + ---- +lib/readline/misc.c + - rl_operate_and_get_next: fix old K&R function declaration. Report + from Tom Tromey + +lib/readline/readline.c + - _rl_internal_char_cleanup: move code that cleans up the active region + and deactivates the mark inside this function so callback mode + applications get the intended functionality. Report and fix from + sparrowhawk996@gmail.com + +lib/readline/bind.c + - rl_parse_and_bind: when using the arithmetic comparison operators on + the version, make sure to invert the tests so that we stop parsing + if the test fails. Report and fix from Tom Tromey + + 1/19 + ---- +Makefile.in + - pipesize.h: add dependency on ${BUILTINS_LIBRARY} to avoid parallel + makes trying to create it twice. Report and fix from + Richard Purdie + + 1/21 + ---- +subst.c + - param_expand: if a nameref expands to array[@] or array[*], make sure + to call chk_atstar so the right variables are set to split the + result. Report from Oguz + + 1/22 + ---- +builtins/declare.def + - Rewrote to reduce complexity. Still needs some work. + +lib/readline/*.h, lib/tilde/tilde.h + - PARAMS: remove, rely on compilers understanding function prototypes + +lib/readline/{undo.c,histlib.h} + - _hs_replace_history_data: move extern declaration to histlib.h + +lib/readline/readline.c + - _rl_parse_colors: instead of an extern declaration for this, include + "parse-colors.h" for it + +lib/readline/{histfile.c,histlib.h} + - _hs_append_history_line: move extern declaration to histlib.h + +lib/readline/history.h + - HS_HISTORY_VERSION: define to 0x0801 (current library version) if + it's not already defined. We conditionally define it in case an + application has (unwisely) chosen to use it, since the history + library doesn't do anything with it yet + +lib/readine/{rlprivate.h,{search,misc,readline}.c} + - _rl_free_history_entry: add extern declaration to rlprivate.h, remove + extern declaration from c source files. Use HS_HISTORY_VERSION as a + sentinel that it's ok to use HIST_ENTRY in rlprivate.h + +lib/readline/{rlprivate.h,{isearch,search,undo}.c} + - _rl_saved_line_for_history: add extern declaration to rlprivate.h, + remove extern declaration from c source files, using HS_HISTORY_VERSION + in the same way + + 1/24 + ---- +lib/readline/signals.c + - _rl_handle_signal: make sure that all sigprocmask calls are protected + by HAVE_POSIX_SIGNALS. Report and fix from Tom Tromey + + 1/26 + ---- +lib/readline/callback.c + - rl_callback_read_char: make sure rl_linefunc is non-NULL before + calling through the pointer. The line function could have been + removed by the application before readline processes any typeahead + input. Bug reported by Matthias Klose , pointer + to root cause from Koichi Murase + +lib/glob/glob.c + - skipname,wskipname: put in some additional checks for `.' to ensure + that we don't get false positives (or incomplete tests) that can + affect the results of extglob patterns. Reported by + gregrwm + + 1/27 + ---- +lib/glob/glob.c + - extglob_skipname,wextglob_skipname: fixed an off-by-one error (SE + was being set to one character before the end of the pattern string, + not the null character at the end of the pattern string like other + callers of glob_patscan) that caused the last character of the last + subpattern to be cut off when calling skipname + - extglob_skipname,wextglob_skipname: some cleanups so the code is + closer to identical for the single-byte and wide character versions + + 2/1 + --- +execute_cmd.c + - execute_simple_command: in posix mode, if we have a variable + assignment error while assigning into the temporary environment (e.g., + assigning to a readonly variable), a non-interactive shell running a + special builtin exits; a non-interactive shell running anything else + jumps back to the top level. A shell compiled with -DSTRICT_POSIX + exits unconditionally. + - execute_simple_command: make sure posix mode sets $? to non-zero + if a variable assignment error occurs preceding a non-special builtin + +subst.c + - do_assignment_statements: take the code from expand_word_list_internal + that performs assignment statements, either standalone or preceding + simple command names, and factor it out into this function + - expand_word_list_internal: call do_assignment_statements where + appropriate + + 2/2 + --- +lib/glob/glob.c + - dequote_pathname: fix function definition for non-multibyte systems. + Report and fix from Marc Aurèle La France + +Makefile.in,doc/Makefile.in + - for certain targets, remove files before creating them to deal with + symlinked build trees. + Report and fix from Marc Aurèle La France + +examples/loadables/accept.c + - include limits.h before typemax.h + Report and fix from Marc Aurèle La France + +builtins/gen-helpfiles.c + - if USING_BASH_MALLOC is defined, make sure to undefine malloc as well + as free. Fixes bug reported by George R Goffe + +builtins/Makefile.in + - install-help: now depends on $(HELPFILES_TARGET) so we make sure the + separate helpfiles are created before we try to install them if we + don't go through the `all' makefile target + +configure.ac + - HELPDIR: now ${datadir}/bash/helpfiles + + 2/3 + --- +parse.y + - parse_string_to_word_list: before expanding a compound assignment + statement body, make sure to save any alias that's currently being + expanded. Restore the alias after the compound assignment is parsed. + Reported back in 11/2020 by Alex fxmbsw7 Ratchev + + 2/4 + --- +lib/readline/histexpand.c + - history_expand_internal: when calling the history_inhibit_expansion + function, make sure to call it using the string as we've expanded it + to that point (RESULT), adding the expansion and next characters + temporarily, since we make expansion decisions based on what we've + accumulated, not what we started with. This makes things like + echo abc!$!$ work, where before the second `!' inhibited expansion + because bash_history_inhibit_expansion mistakenly took it as the + second character in a `$!' word expansion. Fixes bug reported back + in 10/2020 by Paul Fox + +array.h + - array_pop: instead of calling array_dispose_element from this macro, + just call array_shift with the AS_DISPOSE flag + + 2/5 + --- +bashhist.c + - shell_comment: move condition to return 0 if the delimiter stack is + not empty or the shell is parsing a here document into the function + itself, don't have the callers check so the check is in one place. + Fixes bug reported by Oguz + +array.h,variables.c + - ARRAY_ELEMENT_REPLACE: convenience define for modifying an array + element's value + +variables.c + - pop_args: a couple of code simplifications + + 2/7 + --- +lib/malloc/malloc.c + - pagesz: at least MALLOC_PAGESIZE_MIN (4096) bytes + - union mhead: now 16-byte aligned on all systems, 32-bit and 64-bit + pointers + - binsizes: since the smallest allocation overhead is now 16 bytes, + redo the buckets so binsizes[0] == 32; adjust the thresholds for + split/coalesce/prepopulate/mmap (NBUCKETS = 28; STARTBUCK = 0). + Sizes stay pretty much the same; indices change + - consistently use MALLOC_SIZE_T instead of long/unsigned int/int + - use MAGIC8_NUMBYTES as the length of the mh_magic8 buffer, in case + it changes later for alignment + - internal_remap: new function, calls mremap to reallocate a chunk of + memory allocated using mmap(); called from internal_realloc if the + old size and new size are both bigger than the mmap threshold + - internal_realloc: call internal_remap if the old size and new size + are both above the threshold where we use mmap for allocation + + 2/10 + ---- +include/timer.h + - new file, declaration for a timer struct to be used by a set of + functions to implement timers using SIGALRM or select/pselect + +lib/sh/timers.c + - new file, set of functions to manipulate timer objects and timeouts + using SIGALRM or select/pselect. Inspired by a patch from + Koichi Murase . Not used yet + + 2/11 + ---- +builtins/read.def + - read_builtin: if there is a timeout set, block SIGCHLD around calls + to zread and its siblings, or calls to readline for `read -e', so + SIGCHLD (and the consequent waitpid) doesn't interrupt the read. + Fixes bug reported by Koichi Murase , but + there may be a different fix coming + +Makefile.in,builtins/Makefile.in + - fix up dependencies, especially on builtins.h and builtext.h + + + 2/12 + ---- +lib/readline/input.c + - rl_read_key: if we set rl_done == 1, set RL_STATE_DONE as well + Reported by Koichi Murase + +lib/readline/isearch.c + - _rl_search_getchar: only call _rl_read_mbstring if rl_read_key returns + >= 0, avoid some work + +lib/readline/vi_mode.c + - _rl_vi_callback_change_char,_rl_vi_change_char: don't overwrite the + last replacement string if _rl_vi_callback_getchar returns -1. + It will likely make no difference, since the next read will return + an error or EOF, but being careful + - rl_vi_overstrike: if _rl_overwrite_char doesn't return 0, break out + of the loop + +lib/readline/text.c + - _rl_overwrite_char: return 1 if _rl_read_mbstring returns < 0 so + we don't try to insert garbage + +bashline.c + - posix_edit_macros: handle rl_read_key() returning <= 0 + + 2/15 + ---- +parse.y + - read_comsub: make sure to turn on the LEX_RESWDOK flag if we are in + a case statement and read a `)', since we can get a valid `esac'. + Fixes bug reported by Oguz + - read_comsub: if we're in a case statement, recognize `}' as a + reserved word and set the LEX_RESWDOK flag for the next word, since + we can get an esac (or another reserved word) after it + + 2/16 + ---- +parse.y + - reserved_word_acceptable: add ARITH_CMD and COND_END to the list of + tokens that can precede a reserved word, so you can use reserved + words after ((...)) and [[...]]. + Reported by Koichi Murase + + 2/17 + ---- +parse.y + - parse_comsub: use new LEX_CASEWD flag to track when we are reading + the WORD in `case WORD in' and turn on the LEX_RESWDOK flag when + that word ends. This allows $(case x in esac), which no one uses. + - parse_comsub: use LEX_PATLIST flag to track when we are reading a + case pattern list so `|' doesn't turn on the LES_RESWDOK flag + - parse_comsub: case_level: simple counter to count the number of esacs + we need to see before we're no longer in a case statement; analog of + esacs_needed_count from the lexer + + 2/19 + ---- +parse.y + - CHECK_FOR_RESERVED_WORD: don't return ESAC if we read `esac' after a + left paren in a case pattern list. From an austingroup-bugs discussion + about https://www.austingroupbugs.net/view.php?id=1454 + - parse_comsub: if we read a `(' while looking for a case pattern list + and LEX_CKESAC is set, we have a leading left paren in the pattern + list and should turn off LEX_CKESAC so (esac) doesn't prematurely + terminate the case command. From an austingroup-bugs discussion + about https://www.austingroupbugs.net/view.php?id=1454 + + 2/26 + ---- +builtins/history.def + - history_builtin: when checking negative offsets to -d, which are + supposed to count back from the end of the history list, check the + range against 0 instead of history_base, because the calculation is + done against history_length, which is independent of history_base. + Report and fix from Christopher Gurnee + + 2/28 + ---- +doc/bashref.texi + - replaced a number of uses of @var with a mixture of @env and @dfn + to better match up with the texinfo standards + +doc/{bash.1,bashref.texi} + - clarify some aspects of the coproc description, especially the + use of NAME and when it's optional + + 3/1 + --- +subst.c + - read_comsub: fix off-by-one error in mbrtowc that causes a read one + character past the end of buf. Report and fix from + Platon Pronko in + https://savannah.gnu.org/patch/?10035 + + 3/3 + --- +builtins/ulimit.def + - ulimit_builtin: Posix compatibility: if the last command specified + by an option does not have an option argument, but there is an + operand remaining after all the options are parsed, treat the + operand as an argument to that last command. From an austin-group + discussion and a Geoff Clare suggestion back in November, 2020. + Austin Group interpretation 1418 + +examples/shellmath + - a package of shell functions to perform floating-point math entirely + in bash. Contributed by Michael Wood . Available + at https://github.com/clarity20/shellmath + + 3/4 + --- +support/shobj-conf + - darwin: take out the -arch-only option in SHOBJ_XLDFLAGS and + SHOBJ_ARCHFLAGS; no longer needed + +doc/{bash.1,bashref.texi} + - coprocesses: suggested changes from rms@gnu.org; recommend the + `coproc NAME { commands; }' form as the simplest and most flexible + + 3/5 + --- +builtins/exec.def + - exec_builtin: set last_command_exit_value before calling exit_shell + so any exit trap gets the right value for $?. From Matthew Bauer + via https://savannah.gnu.org/patch/?10039 + + 3/8 + --- +include/timer.h + - SHTIMER_ALRMSET: new flag, indicates that there is an active alarm + associated with this timer (falarm() was called) + +lib/sh/timers.c + - shtimer_set: set the SHTIMER_ALRMSET flag after calling falarm + - shtimer_unset: don't call falarm(0,0) unless the SHTIMER_ALRMSET flag + is set + + 3/9 + --- +include/posixtime.h + - added some BSD convenience defines if they are not present + +parse.y,shell.h + - {save,restore}_parser_state: save and restore shell_eof_token and + pushed_string_list; change callers (e.g., xparse_dolparen) so they + don't have to manage them + + 3/10 + ---- +builtins/common.h + - extern declarations for moving to timers (sh_timer) for read builtin + timeouts + +quit.h + - CHECK_ALRM: remove, no longer used + +trap.c + - check_signals: call check_read_timeout instead of CHECK_ALRM + +bashline.c + - bash_event_hook: use read_timeout instead of checking `sigalrm_seen'; + that no longer exists + - bash_event_hook: accommodate readline timing out (not used yet) + +lib/sh/zread.c + - zread: call read_builtin_timeout() to check for a timeout before + calling a blocking read() + +builtins/read.def + - sigalrm,reset_timeout,check_read_timeout,read_builtin_timeout: new + and modified functions to use sh_timers for timeouts instead of + SIGALRM. Based on work contributed by Koichi Murase + + - read_builtin: use sh_timers for read timeouts (-t N) instead of + using SIGALRM + - edit_line: simulate receiving SIGALRM if readline times out (not + used yet) + + 3/11 + ---- +lib/readline/readline.c + - rl_initialize: call _rl_timeout_init to set things up for any timeout + that was set with rl_set_timeout + - readline_internal_charloop: if we longjmped because of a timeout, + make sure to set rl_done/RL_STATE_DONE and return; we are + abandoning this call to readline(). The readline timeout changes + were based on work contributed by Koichi Murase + + +lib/readline/readline.h + - extern declarations for new timeout functions and hook + - rl_clear_timeout: new define + +lib/readline/callback.c + - rl_callback_read_char: if we longjmped because of a timeout, + make sure to set rl_done/RL_STATE_DONE and return; we are + abandoning this call to readline() + +lib/readline/util.c + - _rl_abort_internal: if we time out, don't ring the bell; let the + caller handle it + +lib/readline/input.c + - extern declarations for public and readline-library-private functions + and hooks to implement timeouts + - rl_set_timeout,rl_timeout_remaining: new public functions + - _rl_timeout_select: new function, uses select/pselect to implement + read timeouts that take timeouts set with rl_set_timeout into account; + calling hook function if a timeout occurs + - rl_gather_tyi, _rl_input_available: use _rl_timeout_select, taking + any existing timeout into consideration if it expires before the + timeout passed as an argument + - rl_getc: use _rl_timeout_select and handle any timeouts by calling + _rl_timehout_handle + - set_alarm,reset_alarm: new functions to implement timeouts using + SIGALRM for systems that lack a working select/pselect + - _rl_timeout_init: new function, sets things up for reading input + with a specified timeout + - _rl_timeout_handle: a timeout handler; calls any event hook and + sets up to abort the current readline() call + - _rl_timeout_handle_sigalrm: a timeout handler for systems using + SIGALRM to implement timeouts + +lib/readline/parens.c + - rl_insert_close: use _rl_timeout_select to take timeouts into account + +lib/readline/rlprivate.h + - extern declarations for readline-library-private timeout functions + +lib/readline/rltty.c + - rl_deprep_terminal: don't print a newline after the bracketed paste + disable sequence if we timed out + +lib/readline/signals.c + - _rl_handle_signal: if sig is SIGALRM, call _rl_timeout_handle_sigalrm() + +lib/readline/doc/rltech.texi + - rl_set_timeout,rl_timeout_remaining: document new public functions + - RL_STATE_TIMEOUT: document new possible state value for rl_readline_state + - rl_timeout_event_hook: document new hook function, called when + readline times out + +builtins/read.def + - read_builtin: changes to use the readline timeout functions to + implement timeouts with `read -e'; these use rl_set_timeout and + sh_timer structs together + + 3/12 + ---- +subst.c + - expand_string_dollar_quote: new function, expands $'...' and $"..." + in a string for those code paths that don't expand it themselves + +subst.h + - expand_string_dollar_quote: extern declaration + +parse.y + - read_secondary_line: if $'...' or $"..." appears in the line, call + expand_string_dollar_quote to expand them. This now returns new + memory, need to change callers + +make_cmd.c + - make_here_document: account for read_secondary_line returning newly + allocated memory, free `full_line' appropriately + +bashline.c + - shell_expand_line,history_and_alias_expand_line: expand $'...' and + $"..." in the line by calling expand_string_dollar_quote, since + that happens after history expansion and before alias expansion in + normal processing + + 3/15 + ---- +subst.c + - expand_string_dollar_quote: fix out-of-order initialization + +Makefile.in + - {TAGS,tags}: add ETAGS/ETAGSFLAGS/CTAGS/CTAGS flags; make sure to + cd to the source directory before running them to get source files + that don't have absolute paths. Fix from Mike Jonkmans + + +parse.y + - xparse_dolparen: don't longjmp if FLAGS includes SX_NOLONGJMP. From + a report by Xu Lu + + 3/16 + ---- +subst.c + - process_substitute: set startup_state and parse_and_execute_level + to see if we can avoid a fork() + +bashline.c + - bash_spell_correct_word: bindable command (spell-correct-word) to + perform spelling correction on the current `shellword', using the + same code as the `cdspell' option and directory spelling correction + during completion. Feature suggested by in 10/2020 by + Karl Kleinpaste + - bash_spell_correct_word: bound to "C-x s" by default in emacs mode + +lib/readline/display.c + - rl_redisplay: fix redisplay problem that occurs when switching from + the rl-digit-argument prompt "(arg: N)" back to the regular prompt, + and the regular prompt contains invisible characters + +doc/bash.1,lib/readline/doc/rluser.texi + - spell-correct-word: document new function and its default binding + + 3/17 + ---- +doc/{bash.1,bashref.texi} + - cd: slight changes to specify that it sets PWD and OLDPWD + - {pushd,popd}: make it clear that these builtins use cd to change + the current working directory; change wording to simplify the + description and clarify the exit status + + 3/18 + ---- +execute_cmd.c + - execute_disk_command: after performing redirections, call + unlink_all_fifos() to remove the FIFOs created as part of + expanding redirections. They should have been opened by then, and + we're going to call shell_execve right away anyway, so we won't be + around to remove the FIFOs. From a report from + Michael Felt + + 3/22 + ---- +parse.y + - alias_expand_token: slight tweak to check for alias expansion: perform + expansion unconditionally if PST_ALEXPNEXT is set, and disable it + in case statement pattern lists if the previous token indicates a + command name is acceptable. + From a report by Oguz + +config-bot.h + - HAVE_MKDTEMP: fix typo + + 3/25 + ---- +lib/readline/terminal.c + - look in terminfo for key sequences for page up (kP) and page down + (kN) and bind them to history-search-{backward,forward}, + respectively. From a patch from Xose Vazquez Perez + + + 3/30 + ---- +doc/bashref.texi + - expand the node describing $"..." string translation with additional + details and examples + + 3/31 + ---- +misc.c + - rl_fetch_history: moved here from vi_mode.c + - rl_fetch_history: negative arguments count back from the end of + the history, instead of taking you to the beginning of the history + list + - rl_fetch_history: in vi mode, an out-of-range argument rings the + bell and doesn't change the line + +vi_mode.c + - rl_vi_fetch_history: call rl_fetch_history + +readline.h + - rl_fetch_history: new extern declaration + +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - rl_fetch_history: add description + +builtins/setattr.def + - show_var_attributes: if a variable's value indicates that it should + be ANSI-C quoted, use ansic_quote instead of sh_double_quote to + format the value string. From proposal by Greg Wooledge + + + 4/5 + --- +arrayfunc.c + - unbind_array_element: if FLAGS includes VA_ONEWORD, don't use + skipsubscript to parse the subscript, just assume the entire SUB is + the subcript and that it contains the closing `]', so we just want + everything in SUB except the last character. + +parse.y: + - select_command: use compound_list instead of list, like for_command. + Report by Greywolf + - list: move this into compound_list (replacing the instance of `list' + in the compound_list production), remove from the grammar + + 4/6 + --- +arrayfunc.c + - unbind_array_element: use VA_NOEXPAND instead of literal 1 + + 4/7 + --- +lib/readline/funmap.c + - default_funmap: add missing `vi-undo' to the list of vi-mode bindable + functions. Reported by Xirui Zhao + + 4/8 + --- + +config-top.h + - DEFAULT_LOADABLE_BUILTINS_PATH: default value for BASH_LOADABLES_PATH + +doc/{bash.1,bashref.texi} + - enable: note that it uses $BASH_LOADABLES_PATH, and that the default + is system-dependent + +variables.c + - initialize_shell_variables: initialize BASH_LOADABLES_PATH to the + default given in DEFAULT_LOADABLE_BUILTINS_PATH + + 4/12 + ---- +doc/{bash.1,bashref.texi} + - add link to git master tar file as a place to get the current version + + 4/14 + ---- +bashline.c + - attempt_shell_completion: use -1 as a sentinel value for + in_command_position indicating that we cannot be in a command position + (e.g., because we're the target of a redirection) and should not + check for a programmable command completion or tell the programmable + completion code to use command completion. Report and fix from + Marc Aurèle La France + + 4/16 + ---- +builtins/bind.def + - bind_builtin: reverse sense of strvec_search return value when + deciding whether or not to remove a unix-command binding from the + cmd keymap. Bug report by Dale Sedivec + +lib/readline/doc/rltech.texi + - RL_PROMPT_{START,END}_IGNORE: document current values of \001 and + \002. Report from Mingye Wang + + 4/19 + ---- +arrayfunc.c + - assign_assoc_from_kvlist: fix memory leak reported by konsolebox + + + 4/20 + ---- +command.h,subst.c + - W_ITILDE: remove, replace with a variable since it's only used inside + a single call to expand_word_internal + + 4/21 + ---- +{subst.c,make_cmd.c,parse.y} + - W_DQUOTE: no longer used, use W_NOPROCSUB and W_NOTILDE directly + (for arithmetic commands and words in arithmetic for commands) + + 4/24 + ---- +bashline.c + - executable_completion: since this function gets an unquoted filename + from rl_filename_completion_function, we need to quote special + characters before passing it to bash_directory_completion_hook. + Report from Alex fxmbsw7 Ratchev + + 4/26 + ---- +lib/readline/search.c + - _rl_nsearch_abort: move function calls around so _rl_restore_prompt + happens before rl_clear_message, like when aborting an incremental + search. Suggested by sparrowhawk996@gmail.com + +subst.h + - ASS_ALLOWALLSUB: new assignment flag value, means to allow @ and * as + valid array subscripts when assigning to existing associative arrays + +arrayfunc.c + - assign_array_element: allow assignment of key `@' to an existing + associative array if the caller passes ASS_ALLOWALLSUB + - assign_compound_array_list: allow ( [@]=value ) to an existing + associative array + +builtins/declare.def + - declare_internal: allow assignment of key `@' to an existing + associative array by passing ASS_ALLOWALLSUB to assign_array_element + as part of local_aflags. This affects declare, local, and typeset + +subst.c + - do_assignment_internal: allow a[@]=value to an existing associative + array by passing ASS_ALLOWALLSUB to assign_array_element + + 4/27 + ---- +builtins/common.[ch] + - builtin_bind_var_to_int: wrapper for bind_var_to_int to be used by + builtin commands; placeholder for future work + +builtins/wait.def + - builtin_bind_var_to_int: use instead of bind_var_to_int + +builtins/common.c + - builtin_bind_variable: allow assignment of key `@' to an existing + associative array by passing ASS_ALLOWALLSUB to assign_array_element. + This affects printf and read + +builtins/variables.[ch] + - bind_var_to_int: add third `flags' argument to pass to bind_variable + instead of always passing 0 + +redir.c,builtins/common.c,builtins/printf.def + - bind_var_to_int: change callers, add third flags argument + +builtins/common.c + - builtin_bind_var_to_int: pass ASS_ALLOWALLSUB to bind_var_to_int so + builtins like wait can assign to assoc[@] and assoc[*] + + 4/28 + ---- +bashline.c + - command_word_completion_function: make sure to initialize + old_glob_ignore_case before trying to restore from it + - command_word_completion_function: if we are completing a glob + pattern, make sure to set rl_filename_completion_desired, so we get + quoting and appending -- we are completing a filename, after all. + From a report from Manuel Boni + +lib/readline/bind.c + - enable-active-region: separate control of the active region and + bracketed paste. Still set to the same default value as bracketed + paste, and enabling bracketed paste enables the active region. + Now you can enable bracketed paste and then turn off the active + region. + +doc/bash.1,lib/readline/doc/{readline.3,rltech.texi} + - enable-active-region: document new bindable readline variable and + its effects + + 4/30 + ---- +command.h + - W_ARRAYREF: new flag, meaning the word is a valid array reference + with subscript, replaces W_DOLLARSTAR, which was unused + +subst.c + - expand_subscript_string,expand_array_subscript: new functions to + parse and expand-and-quote array subscripts. For future use + + 5/3 + --- +builtins/mapfile.def + - mapfile: if the delimiter is a newline, set unbuffered_read = 1 + for any file descriptor that isn't seekable and lseek sets errno + to ESPIPE (pipes, FIFOs, maybe terminal devices). If it's not a + newline, only allow buffered reads if the file descriptor is a + regular file. Report from Koichi Murase + +builtins/read.def + - read_builtin: only set unbuffered_read = 1 if the input is coming + from a pipe (which we can't seek on) or the input is a terminal and + we want to read a specified number of characters or we're using a + non-standard delimiter + + 5/4 + --- + +builtins/mapfile.def + - mapfile: call zsyncfd before calling the callback. Suggested by + Koichi Murase ; we'll see how it goes + + 5/5 + --- +subst.h + - expand_subscript_string: extern declaration + +{arrayfunc,subst}.c + - expand_subscript_string: replace expand_assignment_string_to_string + with calls to this when expanding array subscripts + +subst.c + - cond_expand_word: call expand_word_internal with Q_ARITH if `special' + says we should quote for an arithmetic expression context + - expand_word_internal: call expand_array_subscript when we see `[' in + arithmetic or array subscript contexts, make conditional on the + compatibility level later + - expand_word_internal: make sure W_ARRAYREF makes it through this + function and into the returned word + + 5/6 + --- + +arrayfunc.c + - array_expand_index: call evalexp with a flag of 0 since we call + expand_arith_string with Q_ARITH and we want evalexp to remove + the quotes + +execute_cmd.c + - eval_arith_for_expr,execute_arith_command: now that Q_ARITH has an + effect on array subscripts (it quotes the special expansion + characters), call evalexp with 0 as the flags arg so quote removal + is performed on this quoted argument. Make this conditional on the + shell compatibility level later + - execute_cond_command: make sure to expand the argument to -v by + calling cond_expand_node with Q_ARITH, and correspondingly turn off + assoc_expand_once when calling unary_test with that argument, since + we want it to be expanded again to remove the quotes + - execute_cond_command: expand the arguments to the arithmetic operators + with Q_ARITH and pass TEST_ARITHEXP to binary_test to ensure that + it lets evalexp expand the arguments to remove the quoting + +test.c + - arithcomp: if TEST_ARITHEXP is in FLAGS, call evalexp with a flag + if 0 to force evalexp to expand the arguments to remove the quoting + +subst.c + - param_expand: since we call expand_arith_string with Q_ARITH, we need + to call evalexp with 0 instead of EXP_EXPANDED for $((...)) expansion + - expand_word_internal: if we recursively call expand_word_internal to + expand the contents of a double-quoted string, make sure we pass + through Q_ARITH if it appears in QUOTED + - verify_substring_values: call expand_arith_string with Q_ARITH and + correspondingly call evalexp with 0 instead of EXP_EXPANDED + +execute_cmd.c + - execute_cond_node: if -v is the operator, and the operand is a valid + array reference, pass TEST_ARRAYEXP flag to unary_test + + 5/7 + --- +builtins/common.[ch] + - set_expand_once: set array_expand_once to the value passed as the + first argument, returning the original value + +builtins.h + - ARRAYREF_BUILTIN: new flag for shell builtins, means that the builtin + can take array references, with subscripts, as arguments + +builtins/mkbuiltins.c + - set ARRAYREF_BUILTIN flag on builtins given in the arrayvar_builtins + array + +execute_cmd.c + - execute_cond_node: use set_expand_once to set array_expand_once to 0 + before calling unary_test with -v (see change from 5/6) + +arrayfunc.c + - unbind_array_element: allow the caller to choose whether or not a + subscript of `*' or `@' unsets the entire array by passing + VA_ALLOWALL in FLAGS. Right now, since the unset builtin doesn't + pass VA_ALLOWALL, those subscripts unset individual elements for + associative arrays. We preserve the old behavior of unsetting + indexed arrays for the time being with new indexed-array-specific + code + + 5/9 + --- + +builtins/shopt.def + - expand_once_flag: "assoc_expand_once" option now sets this flag, + calls set_assoc_expand on change + - set_assoc_expand: sets assoc_expand_once to mirror expand_once_flag; + placeholder for future changes + +builtins/common.h + - expand_once_flag: extern declaration + + 5/10 + ---- +doc/{bash.1,bashref.texi} + - note that case patterns undergo quote removal. Reported by + AlvinSeville7cf + + 5/11 + ---- + +builtins/bashgetopt.c + - list_optflags: flags associated with the word corresponding to + list_optarg, assuming list_optarg is a separate argument + +builtins/bashgetopt.h + - list_optflags: extern declaration + +builtins/set.def + - unset_builtin: set VFLAGS each time through the loop, since we take + whether or not the word has W_ARRAYREF set into account + - unset_builtin: don't pass VA_ALLOWALL to unbind_array_element for + now + +test.c + - unary_test: in the -v case, use assoc_expand_once in the first call + to valid_array_reference () + +builtins/printf.def + - printf_builtin: only set VA_ONEWORD if the option argument to -v has + W_ARRAYREF set (look at list_optflags) + + 5/12 + ---- + +subst.c + - expand_array_subscript: don't quote @ or * in the expanded subscript + at all, even when they are the only character in the subscript. See + how this works out -- it might uncover places where we need to allow + `*' and `@' as subscripts where they are not allowed now + +expr.c + - expr_bind_variable: pass ASS_ALLOWALLSUB to bind_int_variable so we + can allow (( A[@]=value )) when A is an existing associative array + +arrayfunc.h + - AV_ATSTARKEYS: new flag value, means to accept a[@] and a[*] but + treat them as keys/expressions and not special values + +arrayfunc.c + - array_value_internal: check AV_ATSTARKEYS and don't treat them as + ALL_ELEMENT_SUB values; they fall through to use as keys/indices + +test.c + - unary_test: if -v is passed an array reference, add AV_ATSTARKEYS to + the flags passed to array_value so we treat @ and * as keys for an + existing associative array + + 5/13 + ---- + +subst.c + - expand_cond_word: if SPECIAL == 3 (arithmetic expression), dequote the + resulting WORD_LIST * as if special == 0, because we don't want to + quote the list for pattern matching. Report from + Adjudicator Darren + + 5/14 + ---- +subst.c + - expand_array_subscript: add double quote (") to the list of characters + that are backslash-quoted in subscripts after word expansion. + skipsubscript treats them specially, so you have to quote them to + do things like `key='"' ; array[$key]=1 ; [[ -v array[$key] ]]' + + 5/16 + ---- + +builtins/wait.def + - wait_builtin: if we longjmp to wait_intr_buf, call unset_waitlist if + we have called set_waitlist (wflags & JWAIT_WAITING). Fixes bug with + wait -n interrupted by a trapped signal (not SIGINT) reported by + Jonas Alfredsson + +jobs.c + - wait_sigint_cleanup: restore the old sigint handler before we longjmp + out by calling restore_sigint_handler() + + 5/17 + ---- +builtins/read.def + - bind_read_variable: now takes an additional argument, flags to pass + to builtin_bind_variable; change callers + - SET_VFLAGS: set vflags and bindflags + - read_builtin: call SET_VFLAGS to set vflags and bindflags from each + word before calling valid_array_reference and bind_read_variable + +builtins/common.c + - builtin_bind_variable: set vflags (for valid_array_reference) and + bindflags (for bind_variable/assign_array_element) separately for + clarity + +arrayfunc.c + - assign_array_element: sanity check: make sure that the subscript + returned by array_variable_name consumes the entire NAME, otherwise + flag it as a subscript error. This keeps things like + `KEY=' ]'; read assoc[$KEY] <<< hello' from assigning to incomplete + subscripts + +builtins/printf.def + - printf_builtin: if LIST_OPTFLAGS includes W_ARRAYREF, set VA_NOEXPAND + in VFLAGS + + 5/17 + ---- + +lib/readline/complete.c + - compute_lcd_of_matches: move a couple of strlen calls out of a loop + in calls to mbrtowc; performance improvement only. Report and fix + from sparrowhawk996@gmail.com + +lib/readline/bind.c + - rl_trim_arg_from_keyseq: take a key sequence and its length and + return the index into the key sequence following any initial numeric + argument. Return -1 if there is no numeric argument (the caller is + expected to make sure) or if the key sequence consists *only* of + the numeric argument. The caller should use the remainder of the + key sequence to look up the desired key binding. + +lib/readline/readline.h + - rl_trim_arg_from_keyseq: extern declaration + +bashline.c + - bash_execute_unix_command: if the argument count is > 1 or we have + an explicit argument, call rl_trim_arg_from_keyseq to get past the + numeric argument and deal with the rest of the key sequence. We still + need a way to pass it to the invoked program or function. From + a report from Jesper Nygards + + 5/18 + ---- + +bashline.c + - bash_execute_unix_command: if the user supplied a numeric argument + when invoking bash_execute_unix_command, pass it to the command in + the READLINE_ARGUMENT variable + +lib/readline/readline.[ch] + - _rl_del_executing_keyseq: convenience function to `delete' the last + character added to the executing key sequence. Intended to be used + before calling rl_execute_next or similar functions that push input + back to be re-read + +doc/{bash.1,bashref.texi} + - READLINE_ARGUMENT: documented new variable available for commands + defined using `bind -x' keybindings + +lib/readline/doc/rltech.texi + - rl_trim_arg_from_keyseq: documented new function + + 5/19 + ---- + +builtins/evalstring.c + - should_suppress_fork: suppress the fork if we're in a process + substitution subshell, in addition to being a simple command + without redirections. From a report back in 10/2020 from + Hyunho Cho + +bashline.c + - command_word_completion_function: if we're trying to complete an + absolute program (one containing a slash), don't run strcmp or + strcasecmp on the return value from rl_filename_completion_function, + since that duplicates work the filename completion function already + does. From a report back in 1/2021 by awa54@cdak.net + + 5/22 + ---- +parse.y + - CHECK_FOR_RESERVED_WORD: if we are returning an ESAC and unsetting + PST_CASESTMT, decrement esacs_needed_count + +parse.y,shell.h + - sh_parser_state_t: save and restore esacs_needed_count and + expecting_in_token in the shell parser state struct and + save_parser_state/restore_parser_state + +print_cmd.c + - print_simple_command: don't bother to call command_print_word_list + with an empty list + - print_simple_command: don't print a space before a redirection list + if there weren't any command words to print + + 5/24 + ---- + +lib/sh/input_avail.c + - nchars_avail: make sure SET and OSET are declared on systems with + select(2). Reported by Larkin Nickle + +parse.y + - cond_term: if we read a `!' toggle CMD_INVERT_RETURN instead of + setting it unconditionally. Report and patch from + Vincent Menegaux via + https://savannah.gnu.org/patch/?10070 + + 5/25 + ---- +doc/{bash.1,bashref.texi} + - test: add the ( $2 $3 ) case to the description of the four-argument + behavior. Inspired by a discussion with Christoph Anton Mitterer + + + 5/27 + ---- +doc/bashref.texi + - replace most of the GNU parallel section with a reference to the + tutorial on gnu.org + +lib/glob/glob.h + - GX_NEGATE: new flag; indicates whether the pattern is being negated + as part of an extglob pattern. Not used yet + +lib/glob/glob.c + - extglob_skipname,wextglob_skipname: pass GX_NEGATE to the skipname + functions if the pattern is being negated. Not checked yet + + 5/28 + ---- +doc/{bash.1,bashref.texi} + - dotglob: add text to clarify that `.' and `..' have to be matched by + a pattern beginning with `.' or -- and this is the sketchy part -- + that a pattern beginning with `.' has to be one of the patterns in + an extended glob expression + +lib/glob/glob.c + - skipname,wskipname: perform the special checks for `.' only if the + pattern is not being negated + + 6/3 + --- +parse.y,shell.h + - eol_ungetc_lookahead: save and restore as part of the parser state + included in {save,restore}_parser_state + + 6/7 + --- +lib/readline/display.c + - puts_face: make sure to cast each member of STR to unsigned char, so + it's not misinterpreted as EOF, which putc_face does not display. + Report and fix from Volodymyr Prodan in + https://savannah.gnu.org/patch/?10076 + +examples/shobj-conf + - aix*gcc: change SHOBJ_LD to ${CC}, prefix the SHOBJ_LDFLAGS flags + with -Wl, so gcc will pass them to the linker. Report from + lehel@maxer.hu in https://savannah.gnu.org/support/?110505 + + 6/11 + ---- +doc/{bash.1,bashref.texi} + - cd: additional arguments are not ignored; they raise an error. + Report from Douglas McIlroy + +lib/glob/strmatch.h + - FNM_DOTDOT: enable special handling for `.' and `..': if FNM_PERIOD + is not set, `.' and `..' at the start of a string or as a pathname + component need to be matched by a `.' in the pattern and cannot be + matched by `?', `*', or a bracket expression + +lib/glob/glob.c + - glob_vector: pass FNM_DOTDOT to strmatch() if noglob_dot_filenames + is not set to enable special handling of `.' and `..'. Prompted by a + discussion with Nora Platiel + - skipname,wskipname: remove special checks for `.' and (disabled) + checks for `..' + +lib/glob/sm_loop.c + - GMATCH: implement special handling for FNM_DOTDOT and `.' and `..': + make sure they can't be matched by any special glob characters at + the start of the string or as a pathname component (if FNM_PATHNAME + is set). This also means that !(pattern) won't return `.' or `..' + if dotglob is set + - GMATCH,EXTMATCH: don't pass FNM_DOTDOT down to recursive calls, like + FNM_PERIOD, once we process the first character in the string or + pathname component + +lib/glob/smatch.c + - ISDIRSEP,PATHSEP,SDOT_OR_DOTDOT,PDOT_OR_DOTDOT: provide definitions + for single-byte or wide character strings for sm_loop.c to use + + 6/16 + ---- + +doc/{bash.1,bashref.texi},lib/readline/doc/{rluser,rltech}.texi + - slight wording changes to rewrite gender-specific language. From a + report by Vipul Kumar , suggested + language from G. Branden Robinson , + Lawrence Velázquez , + and Andrew Church + +builtins/fc.def + - fc_builtin: make sure an entry in the history list is non-null + before trying to write it to stdout or the temporary file. From a + report from Sibo Dong + +builtins/common.[ch] + - builtin_arrayref_flags: given a WORD_DESC * (which includes flags) + and a base set of flags, return a set of flags to pass to + valid_array_reference and similar functions + +builtins/set.def + - unset_builtin: call builtin_arrayref_flags to set vflags + + 6/19 + ---- + +parse.y + - parse_comsub: rewrite to recursively call the parser (yyparse()) and + return a string constructed from the resulting parse tree. Probably + will only work with bison. Error reporting is more accurate about + line numbers and invalid tokens, and command substitution errors + are caught earlier, before expansion + - DOLPAREN: new token, never created by yylex; only ever set by + parse_comsub and xparse_dolparen to indicate we're recursively + calling the parser for a command substitution + - comsub: new grammar production that's triggered by DOLPAREN and + parses a command substitution, returning a . It's one of + the possible end states for the top-level parser + - grammar: only call rewind_input_string if the shell's input is + coming from a string + - shell_ungets: push a string back onto the shell input; only used by + make_here_document for backwards compatibility -- allowing a here- + document to be terminated by a token at the end of a command + substitution + - yylex: don't need any more special handling when returning + shell_eof_token, but we keep the clause for future work + - read_token_word: don't handle backslashes (leave them in the input + stream) if we are reading a command substitution (PST_NOEXPAND) + - reserved_word_acceptable: allow reserved words after DOLPAREN + - report_syntax_error: better error handling if we hit EOF while + looking for the ending right paren in a command substitution + - parse_string_to_word_list,parse_compound_assignment: make sure to + turn off parse_comsub sentinel temporarily + +make_cmd.c + - make_here_document: backwards compatibility: if we end a here + document on the same line as the end of a command substitution, + allow the token to terminate the here document (without requiring + a newline) and push the remainder of the line back for the parser + to consume and terminate the command substitution + +builtins/evalstring.c + - parse_string: if we read shell_eof_token and use it to terminate a + command, rewind the input string here before returning, instead of + guessing where to rewind it in the caller + + 6/22 + ---- + +redir.c + - do_redirection_internal: if VARASSIGN_REDIR_AUTOCLOSE is non-zero, + add a redirect to automatically close {var} + +parser.h + - PST_NOERROR: don't print error messages in yyerror(), just reset + the parser and return + +parse.y + - yyerror: if parser_state & PST_NOERROR, don't print an error message + - xparse_dolparen: if the flags includes SX_COMPLETE, add PST_NOERROR + to parser_state, to inhibit error messages. Fixes bug with adding + lines with incomplete command substitutions to the history list + reported by Koichi Murase + +subst.c + - skip_matched_pair: make sure to pass the SX_COMPLETE flag to + extract_delimited_string + + 6/28 + ---- + +lib/readline/bind.c + - rl_trim_arg_from_keyseq: handle rl_vi_arg_digit if VI_MODE is + defined. Report and fix from Koichi Murase + - rl_trim_arg_from_keyseq: rework to handle case where the digit + argument is given as a discrete sequence of multiple rl_digit_argument + commands (e.g, "M-1 M-2" instead of "M-1 2"). Report and fix from + Koichi Murase + +subst.c + - pat_subst: avoid calling RESIZE_MALLOCED_BUFFER with STRLEN(s) as an + argument, since it ends up going into a loop. Report and fix from + Koichi Murase + +lib/sh/casemod.c + - cval: take the string length as an argument, to avoid having to call + strlen every time (in HANDLE_MULTIBYTE mode). The caller already has + this info. Report and fix from Koichi Murase + +builtins/complete.def + - print_cmd_name: single-quote the command name if it contains any + shell metacharacters + - print_one_completion: call print_arg with a second arg of 1 if the + function name contains shell metacharacters. Report and fix from + Koichi Murase + + 6/30 + ---- + +configure.ac + - substitute BASE_CFLAGS_FOR_BUILD and STYLE_CFLAGS into Makefile + targets + - take STYLE_CFLAGS out of the CFLAGS_FOR_BUILD variable that gets + substituted + - remove STYLE_CFLAGS from CFLAGS + - use `:+' expansion to set variables based on whether $GCC is set + or null, since configure can do GCC= + +support/Makefile.in + - man2html: remove CCFLAGS_FOR_BUILD from the recipe, leaving only + LDFLAGS_FOR_BUILD. Report from Jay K + - gen-helpfiles: remove CCFLAGS_FOR_BUILD from the recipe, leaving + only LDFLAGS_FOR_BUILD + - man2html: use $(STYLE_CFLAGS) in BASE_CCFLAGS variable for C file + compilation options + +{,builtins}/Makefile.in, lib/{sh,readline,malloc,glob}/Makefile.in + - use STYLE_CFLAGS so specifying CFLAGS=-g to make doesn't clutter the + output with warnings about parens and format strings + + 7/9 + --- +lib/readline/search.c + - make_history_line_current: call _rl_free_saved_history_line to clean + up _rl_saved_line_from_history and get all the code that frees it + into one place + +lib/readline/misc.c + - _rl_free_saved_history_line: if rl_undo_list points to the data + member of _rl_saved_line_from_history, set it to NULL to avoid having + it point to freed memory, since the next thing we do now is to free + the undo list the data member points to + - _rl_start_using_history: call _rl_free_saved_history_line instead of + calling _rl_free_history_entry directly. Fixes memory leak reported + by Trung Dam + + 7/12 + ---- +lib/readline/search.c + - make_history_line_current: free rl_undo_list before replacing the + current line with the line from history, since it is a private + undo list from reading the search string + +lib/readline/rlmbutil.h + - Since wchar_t/mbrtowc/wcrtomb are limited to 16 bits on Windows + with MSVC, start abstracting the differences using WCHAR_T/ + MBRTOWC/WCRTOMB + + 7/13 + ---- + +lib/readline/{complete,display,input,text,util,vi_mode}.c + - use WCHAR_T/MBRTOWC/WCRTOMB. Part of a set of Windows MSVC fixes + from sparrowhawk996@gmail.com + +builtins/{enable,hash,help}.def + - enable_builtin: use sh_chkwrite after output to check for write errors + + 7/16 + ---- +arrayfunc.c + - quote_compound_array_word: free SUB and VALUE after assigning from + sh_single_quote(). From a coverity report from + Siteshwar Vashisht + +bashhist.c + - bash_remove_history_range: free DISCARD_LIST after freeing its + elements + +bashline.c + - bash_directory_expansion: add code to free D as a separate branch, + though it's never hit in practice + +builtins/trap.def + - showtrap: free T even if show_default == 1 if it's a non-default + trap string + + 7/17 + ---- +execute_cmd.c + - execute_coproc: free NAME on invalid identifier error + +lib/glob/glob.c + - glob_vector: make sure NEXTLINK is allocated using malloc before + passing it to free() + - glob_filename: free RESULT before returning glob_error_return when + there is only a filename + +print_cmd.c + - indirection_level_string: make sure we free PS4 after calling + decode_prompt_string if *ps4 == 0 + +subst.c + - parameter_brace_transform: if vtype == VT_VARIABLE, we need to free + a non-null VAL + +variables.c + - assign_in_env: if NAME is not a valid shell identifier, free it + after printing the error message and before returning. These are + the rest of the fixes from Siteshwar Vashisht + + 7/22 + ---- +shell.c + - main: set dollar_vars[0] to shell_script_filename before calling + run_startup_files() in the non-interactive case. Restore it after + run_startup_files returns so we can get better error messages if + we can't open a script file. Suggested by several people, originally + by Marc Aurèle La France back in 2/2021 (in a + different form) and most recently by Tapani Tarvainen + + + 7/28 + ---- +trap.c + - any_signals_trapped: return that a signal is trapped only if it's + not ignored. This is an additional opportunity for optimization, + reported in https://bugzilla.redhat.com/show_bug.cgi?id=1981926 + + 7/30 + ---- +examples/loadables/sleep.c + - main: if the uconvert conversion fails, but the argument appears to + contain a GNU-like interval specifier like "1m30s", return + EX_DISKFALLBACK so the execute_builtin code tries to run the + external version + +builtins/enable.def + - enable_shell_builtin: if the builtin isn't found, return EX_NOTFOUND + to allow the caller (enable_builtin) to react differently if it + wants to + - dyn_load_builtin: if the shared object isn't found, return EX_NOTFOUND, + change enable_builtin to deal with it + - enable_builtin: if there are no supplied options, and we attempt to + enable a non-existent builtin, try modifying `enable name' to the + equivalent of `enable -f name name' and return success if we + successfully load a builtin from a shared object. Proposed several + times, most recently by Robert Elz + +doc/{bash.1,bashref.texi} + - enable: document new behavior of `enable NAME' when NAME is not a + current shell builtin + + 8/3 + --- +lib/glob/sm_loop.c + - GMATCH: check for interrupts or terminating signals each time through + the loop and return FNM_NOMATCH immediately if received. Let the + higher layers deal with interrupting the match and jumping out. + Inspired by a report from andrej@podzimek.org + + 8/6 + --- +subst.c + - {parameter_brace_remove_pattern,parameter_brace_transform, + parameter_brace_substring,parameter_brace_casemod, + parameter_brace_patsub}: make sure the IND argument is of type + arrayind_t to handle the full range of subscripts. Reported by + felix@f-hauri.ch + +builtins/printf.def + - printf_builtin: take new format specifier: %Q. This acts like %q + but applies any supplied precision to the original unquoted + argument, then quotes that result and outputs the entire quoted + string, preserving the original field width. Originally suggested + back in 4/2020 by Sam Liddicott + +subst.c + - char_is_quoted: check whether or not we are on the second or later + line of a command with an unclosed quoted string from a previous + line. If we are, see if it's closed before the character we're + checking, so we don't interpret a closing quote as starting a new + quoted string. Reported several times, most recently by + Phi Debian in 6/2021. + + 8/9 + --- +parse.y,subst.c + - locale_expand: if the variable SINGLEQUOTE_TRANSLATIONS is non-zero, + single-quote the translated result of $"..." (if it's different from + the untranslated string) + +builtins/shopt.def + - noexpand_translation: new option to expose the value of + SINGLEQUOTE_TRANSLATIONS + + 8/10 + ---- +doc/{bash.1,bashref.texi} + - noexpand_translation: add description of new option + + 8/16 + ---- +builtins/printf.def + - printf_builtin: initialize retval after parsing arguments, since we + use it for the `v' option. Bug report from Keith Thompson + + +lib/sh/unicode.c + - u32tocesc: fix typo that returned \uXXXXXXXX instead of \UXXXXXXXX. + From https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=992257 by + + + 8/17 + ---- +siglist.c + - include command.h before general.h for PARAMS and prototypes. Report + from Osipov, Michael (LDA IT PLM) + + 8/18 + ---- +lib/readline/colors.c + - S_ISBLK: make sure it's defined before we use it, like in complete.c + +lib/readline/complete.c,{bashline,variables}.c + - minor changes to prep for making rl_completer_word_break_characters + `const' + +subst.[ch],pcomplete.c + - split_at_delims: the DELIMS argument is now `const'; change callers + +lib/readline/rlmbutil.h + - _rl_wcwidth: add function prototype for inline function declaration + +lib/readline/bind.c + - _rl_get_keyname: print keys greater than 160 (which are valid UTF-8) + as octal escape sequences + +lib/readline/text.c + - do_lowercase_version: return 99999 to prevent the linker from + combining it with _rl_null_function and optimizing away the separate + copy. That messes with function pointer comparisons. Part of this + batch of fixes from sparrowhawk996@gmail.com + + 8/19 + ---- +complete.c,readline.c,readline.h + - rl_completer_word_break_characters: now const char * like + rl_basic_word_break_characters; element of readline state struct + used to save it also const. THIS IS AN API CHANGE + +bashline.c + - orig_rl_completer_word_break_characters: now const char * like + rl_completer_word_break_characters + + 8/20 + ---- +bashline.c + - bash_directory_completion_hook: if direxpand and dirspell are both + set while trying to complete an absolute pathname as a command, don't + take a spell-corrected directory name that is shorter than the + original hint. https://bugzilla.redhat.com/show_bug.cgi?id=1782809 + +builtins/common.[ch] + - sh_noassign: convenience function to print an error message when a + user attempts an assignment to a "noassign" variable. Not used yet + +assoc.[ch] + - assoc_to_kvpair_list: new function, returns a WORD_LIST containing + key-value pairs as separate words + +array.[ch] + - array_to_kvpair_list: new function, returns a WORD_LIST containing + index-value pairs as separate words + +subst.c + - string_transform: handle '@k' transform like '@K' + - valid_parameter_transform: 'k' is a valid transform operator + - array_transform: handle '@k' transformation by calling one of + array_to_kvpair_list or assoc_to_kvpair_list and treating the + result as if expanding the array depending on whether the index is + `@' or `*' with the usual meanings + +doc/{bash.1,bashref.texi} + - document new '@k' parameter transformation operator + + 8/27 + ---- +lib/readline/kill.c + - rl_unix_filename_rubout: handle pathnames that consist only of one + or more slashes. The old code went too far and deleted the previous + word as well. From dabe@dabe.com + + 8/31 + ---- +parse.y + - STRING_SAVER: now save and restore shell_input_line_len; not sure + why it wasn't done before; fix push_string and pop_string accordingly + - prompt_again: now takes a parameter FORCE; not used yet (every + caller passes 0), needs more thought + +builtins/evalstring.h + - open_redir_file: broke code that expands the redirection and opens + the resultant filename into a new function, called from cat_file + +redir.h + - open_redir_file: extern declaration here for now + +builtins/evalstring.c + - parse_string: takes a new argument: COMMAND **cmdp; if non-null, saves + the parsed command to *cmdp and lets the caller manage it itself. + global_command is still not modified. Changed callers in parse.y + + 9/1 + --- +parse.y + - parse_string_to_command: stripped-down version of xparse_dolparen + that takes a string, runs it through the parser, and returns the + resultant COMMAND *; uses parse_string with the new argument + +externs.h + - parse_string_to_command: extern declaration + +builtins/evalstring.c + - can_optimize_cat_file: new function, takes a COMMAND * argument and + returns true if the command can be optimized like $(&", see if we can optimize the command and call + optimize_cat_file to do it if we can. + + 9/2 + --- +configure.ac,config.h.in,lib/sh/setlinebuf.c + - SETVBUF_REVERSED: remove all references + +configure.ac,aclocal.m4 + - AC_OUTPUT: move created files and commands to AC_CONFIG_FILES and + AC_CONFIG_COMMANDS; call AC_OUTPUT without any arguments + - require autoconf version 2.63 + - AC_HELP_STRING -> AS_HELP_STRING + - replace references to $ac_cv_prog_gcc with $GCC + - AC_C_LONG_DOUBLE -> AC_TYPE_LONG_DOUBLE + - enable-alt-array-implementation: new configure option, placeholder + for later + +unwind_prot.c + - stddef.h: include if HAVE_STDDEF_H is defined, not STDC_HEADERS + +bashansi.h + - memory.h: don't include any more; assume has all the + necessary defines + +aclocal.m4 + - AC_HEADER_STDC: remove AC_REQUIRE calls to this; change tests to use + appropriate checks instead of STDC_HEADERS + + 9/3 + --- +configure.ac,config.h.in + - AC_TYPE_SIGNAL,BASH_TYPE_SIGHANDLER: remove calls, remove mention of + RETSIGTYPE and VOID_SIGHANDLER + - AC_USE_SYSTEM_EXTENSIONS: use this instead of AC_ISC_POSIX (which is + well and truly obsolete) and AC_MINIX (which just calls it anyway). + All the right defines are already present + - AC_HEADER_TIME: removed + - AC_HEADER_STDC: removed + - AC_DECL_SYS_SIGLIST: replaced with BASH_DECL_SYS_SIGLIST + - BASH_FUNC_CTYPE_NONASCII: removed + +sig.h,lib/readline/signals.c + - RETSIGTYPE -> void, SIGHANDLER_RETURN -> return + +include/posixtime.h + - don't bother with TIME_WITH_SYS_TIME, just include if + we have it and include unconditionally + +include/chartypes.h,lib/readline/chardefs.h + - IN_CTYPE_DOMAIN: no longer uses STDC_HEADERS define, checks against + CHAR_MAX for non-C89 systems, still a no-op on C89 systems + +lib/readline/chardefs.h + - memory.h: don't include, no need for STDC_HEADERS; assume the mem* + functions are defined in as in C89 + - now that we assume IN_CTYPE_DOMAIN bounds its argument to unsigned + chars, we don't need NON_NEGATIVE checks at all + +lib/readline/chardefs.h,util.c + - ALPHABETIC -> _rl_alphabetic_p + + 9/8 + --- + +lib/sh/strftime.c + - include after reworking above; include + unconditionally in case it defines time_t. From a report by + Ori Sky Farrell + + 9/9 + --- +lib/readline/search.c + - rl_history_search_internal: set rl_undo_list to NULL after calling + rl_maybe_save_line, since it will be restored one way or another + after the search completes, and we don't want it to be freed twice + - rl_history_search_internal: leave the current history offset at the + position of the last matching history entry. This means that things + like ^P will start back from that history entry, ^N will move + forward from there, and operate-and-get-next will work like it does + with incremental searches. Reported by Vandrus Zoltán + + + 9/10 + ---- +aclocal.m4 + - BASH_C_LONG_LONG: removed + - BASH_TYPE_LONG_DOUBLE: removed + - BASH_TYPE_LONG_LONG,BASH_TYPE_UNSIGNED_LONG_LONG: removed + - BASH_FUNC_CTYPE_NONASCII: removed + - BASH_SYS_SIGNAL_VINTAGE,BASH_SYS_REINSTALL_SIGHANDLERS: don't + require AC_TYPE_SIGNAL, use void instead of RETSIGTYPE + - BASH_TYPE_SIGHANDLER: removed + +configure.ac,aclocal.m4,config.h.in + - BASH_TYPE_LONG_LONG: removed, call AC_TYPE_LONG_LONG_INT directly, + change #define to HAVE_LONG_LONG_INT + - BASH_TYPE_UNSIGNED_LONG_LONG: removed, call AC_TYPE_UNSIGNED_LONG_LONG_INT + directly, change #define to HAVE_UNSIGNED_LONG_LONG_INT + +externs.h,include/typemax.h,lib/sh/{fmtullong,snprintf,strtoimax,strtoll, +strtoull,strtoumax}.c + - HAVE_LONG_LONG -> HAVE_LONG_LONG_INT + - HAVE_UNSIGNED_LONG_LONG -> HAVE_UNSIGNED_LONG_LONG_INT + +configure.ac + - AC_TRY_COMPILE -> AC_COMPILE_IFELSE + - BASH_CHECK_TYPE (intmax_t) -> AC_TYPE_INTMAX_T + - BASH_CHECK_TYPE (uintmax_t) -> AC_TYPE_UINTMAX_T + - BASH_CHECK_TYPE (sig_atomic_t): removed + +aclocal.m4 + - BASH_FUNC_STRSIGNAL: changed to use AC_LINK_IFELSE + - BASH_FUNC_LSTAT: changed to use AC_LINK_IFELSE + - BASH_FUNC_SBRK: changed to use AC_LINK_IFELSE and AC_RUN_IFELSE, + fixed typo + - BASH_CHECK_SPEED_T: changed to use AC_COMPILE_IFELSE + - BASH_TYPE_SIG_ATOMIC_T: use BASH_CHECK_TYPE instead of AC_CHECK_TYPE + - BASH_STRUCT_DIRENT: new macro, like _AC_STRUCT_DIRENT but public and + sets a different bash-specific shell variable + - BASH_STRUCT_DIRENT_D_{INO,FILENO,NAMLEN}: call BASH_STRUCT_DIRENT + with a different first argument instead of using inline code and + AC_TRY_COMPILE + + 9/11 + ---- +[prayers for the victims of 9/11/2001] + +aclocal.m4 + - BASH_CHECK_DECL: just call AC_CHECK_DECLS and use the default + includes, which includes the files we used to specify + - BASH_FUNC_INET_ATON: changed to use AC_LINK_IFELSE + - BASH_STRUCT_WEXITSTATUS_OFFSET: changed to use AC_RUN_IFELSE + - BASH_FUNC_OPENDIR_CHECK: changed to use AC_RUN_IFELSE + - BASH_FUNC_ULIMIT_MAXFDS: changed to use AC_RUN_IFELSE + - BASH_UNDER_SYS_SIGLIST: changed to use AC_RUN_IFELSE + - BASH_SYS_SIGLIST: changed to use AC_RUN_IFELSE + - BASH_FUNC_DUP2_CLOEXEC_CHECK: changed to use AC_RUN_IFELSE + - BASH_FUNC_GETENV: changed to use AC_RUN_IFELSE + - BASH_FUNC_GETCWD: changed to use AC_RUN_IFELSE + - BASH_FUNC_FNMATCH_EXTMATCH: changed to use AC_RUN_IFELSE + - BASH_FUNC_POSIX_SETJMP: changed to use AC_RUN_IFELSE + - BASH_FUNC_STRCOLL: changed to use AC_RUN_IFELSE + - BASH_FUNC_PRINTF_A_FORMAT: changed to use AC_RUN_IFELSE + - BASH_SYS_PGRP_SYNC: changed to use AC_RUN_IFELSE + - BASH_SYS_SIGNAL_VINTAGE: changed to use AC_RUN_IFELSE + - BASH_SYS_NAMED_PIPES: changed to use AC_RUN_IFELSE + - BASH_CHECK_RTSIGS: changed to use AC_RUN_IFELSE + - BASH_CHECK_MULTIBYTE: changed to use AC_RUN_IFELSE + - RL_LIB_READLINE_VERSION: changed to use AC_RUN_IFELSE + - BASH_CHECK_WCONTINUED: changed to use AC_RUN_IFELSE + - BASH_FUNC_SNPRINTF: changed to use AC_RUN_IFELSE + - BASH_FUNC_VSNPRINTF: changed to use AC_RUN_IFELSE + - BASH_FUNC_FNMATCH_EQUIV_FALLBACK: changed to use AC_RUN_IFELSE + - BASH_DECL_PRINTF: changed to use AC_RUN_IFELSE + - BASH_TYPE_RLIMIT: rewrote to avoid quad_t, now uses AC_COMPILE_IFELSE + to determine whether rlim_t is available, otherwise determines the + value of RLIMTYPE based on sizeof(rlim.rlim_cur): int, long, or + long long + - BASH_SIZEOF_RLIMIT,BASH_SIZEOF_QUAD_T: helper macros for + BASH_TYPE_RLIMIT in the case that rlim_t is not present + +configure.ac + - BASH_CHECK_DECL -> AC_CHECK_DECLS + - quad_t: use AC_CHECK_TYPE (new style) instead of BASH_CHECK_TYPE + + + 9/14 + ---- +execute_cmd.c + - time_command: if we longjmp back to the top_level we saved, make sure + we're in the same subshell environment before printing the timing + stats. We could have longjmped back from a child process of the + command or pipeline we want to time. From a report by + Sergej Alikov + - time_command: restore command->flags even if we longjmp back + +general.c + - check_binary_file: if the first line of the ENOEXEC file starts with + a `#!', check the rest of the buffer for NULs to determine whether + this is a binary file. Since we only check the first line, a #! line + followed by binary data could be confused for a shell script + + 9/16 + ---- +bashjmp.h + - EXITBLTIN: new longjmp `code' value: used by the exit builtin + +{execute_cmd,shell,subst,trap}.c,builtins/evalstring.c + - treat EXITBLTIN exactly the same as EXITPROG (for now) + +builtins/exit.def + - exit_builtin: jump_to_top_level with value EXITBLTIN + +builtins/evalstring.c + - parse_and_execute: EXITBLTIN has its own case, with the same contents + as EXITPROG + + 9/17 + ---- +builtins/evalstring.c + - parse_and_execute: change EXITBLTIN case to avoid running the + unwind-protect stack to the `pe_dispose' tag (which has the effect + of running all the unwind-protects installed by the commands in + the string) if we're executing in a function and EXIT is trapped. + This has the effect of running the EXIT trap in the function context, + which is what we do when we're not in parse_and_execute (eval, + bash -c, command substitution, etc.) + + 9/18 + ---- +arrayfunc.c + - expand_and_quote_kvpair_word,quote_compound_array_word, + expand_and_quote_assoc_word,quote_compound_array_list: make sure + the value has CTLESC characters doubled even when being single- + quoted, since that's what the parser does with standalone assignment + statements. From https://savannah.gnu.org/support/?110538 + + 9/19 + ---- +aclocal.m4 + - AC_TRY_COMPILE -> AC_COMPILE_IFELSE (AC_TRY_LINK calls left to + modify to avoid obsolete warnings) + - BASH_STRUCT_WINSIZE: broke out checks for separate headers into new + macros, call them and work with the results; needed to avoid two + calls to AC_TRY_COMPILE + - BASH_CHECK_KERNEL_RLIMIT: avoid multiple calls to AC_TRY_COMPILE by + breaking basic test for RLIMIT_ defines into a separate test and + calling the HPUX-specific _KERNEL test only if that fails + +m4/gettext.m4,configure.ac + - AM_GNU_GETTEXT -> BASH_GNU_GETTEXT: remove deprecation warning, since + [no-libtool] is how we use this; rename to avoid someone's local + copy from overriding ours + + 9/20 + ---- +aclocal.m4 + - BASH_CHECK_MULTIBYTE: take out code that checks for nl_langinfo(CODESET) + since that's already provided by AM_LANGINFO_CODESET, which is + called by BASH_GNU_GETTEXT. We AC_REQUIRE it here, though, to avoid + problems from future changes + - BASH_SYS_SIGNAL_VINTAGE: broke the code that checks for the different + signal vintages into different AC_DEFUNed macros, changed + BASH_SYS_SIGNAL_VINTAGE to stitch them together with shell code + testing the cached variables + - AC_TRY_LINK -> AC_LINK_IFELSE: there are no more autoconf warnings + + 9/21 + ---- +array.[ch] + - array_from_argv: new convenience function + +array.h + - num_elements: now an arrayind_t, since that's the type of indices, it + makes sense to allow that many elements + + 9/22 + ---- +lib/readline/terminal.c + - rl_term_kP: fix typo. Fix from Koichi Murase + + 9/25 + ---- +lib/readline/display.c + - rl_clear_visible_line: call _rl_clear_to_eol with _rl_screenwidth as + the argument so we clear out the entire line even if the terminal + doesn't have a clear-to-eol sequence; make sure to add a call to + rl_cr after that so we know we're always in column 0 + - _rl_redisplay_after_sigwinch: just call rl_clear_visible_line instead + of erasing the last line of the display + - _rl_redisplay_after_sigwinch: if the prompt is longer than the screen + width, make sure to call _rl_reset_prompt to recalculate the + local_prompt_newlines array. Should fix issue from + https://savannah.gnu.org/support/index.php?110543 + +redir.c + - do_redirection_internal: if given [N]<&WORD- or [N]>&WORD- and WORD + expands to null, make it identical to <&- or >&- and close file + descriptor N (default 0). From a discussion back in 5/2021 + + 9/27 + ---- +arrayfunc.c + - expand_compound_array_assignment: since we run the string through + the parser to turn it into a list (so we can make sure all shell + metacharacters are properly quoted), we need to remove the CTLESC + the parser uses to quote CTLESC and CTLNUL in *unquoted* words. + The rest of the code assumes this has been done, and assumes that + any CTLESC characters passed to expansion are part of the original + word and should themselves be quoted, doubling the number of CTLESCs + + 9/28 + ---- +arrayfunc.c + - expand_and_quote_kvpair_word,quote_compound_array_word, + expand_and_quote_assoc_word,quote_compound_array_list: if we are + single-quoting associative array subscripts and associative and + indexed array values, we need to quote CTLESC characters, because + that's how they come out of the parser and how the assignment + statement code expects to see them. + Fixes https://savannah.gnu.org/support/index.php?110538 + + 9/29 + ---- +subst.c + - parameter_brace_transform: invalid transformation operators are now + fatal errors in non-interactive shells, as with the other word + expansions. Reported by Martin Schulte in + https://lists.gnu.org/archive/html/bug-bash/2020-10/msg00026.html + +execute_cmd.c + - execute_disk_command: if we're optimizing out the fork (nofork) and + not directly in a pipeline (pipe_in == pipe_out == NO_PIPE), only + modify shell_level if subshell_environment says we're not already in + a pipeline. Reported by Paul Smith 10/11/2020 + against GNU make + +evalstring.c + - should_suppress_fork: remove #if 1 for code that tries to suppress + the fork in a process substitution subshell + + 9/30 + ---- +builtins/mapfile.def + - do_chop: make sure we're comparing unsigned chars when checking + whether the delim is the last character on the line. Reported by + Greg Wooledge + + 10/1 + ---- +lib/readline/rltty.c + - rl_deprep_terminal: if we're not echoing to the terminal + (_rl_echoing_p == 0), and we just output the bracketed paste end + sequence, output a newline to compensate for the \r at the end of + BRACK_PASTE_FINI, since redisplay didn't do it for us. Reported by + Siteshwar Vashisht + +shell.h + - MATCH_EXPREP: new matching flag, understood only by pattern + substitution; means to expand unquoted `&' in the replacement + STRING to the match of PATTERN + +subst.c + - shouldexp_replacement: uncommented + - pat_subst: we expand & in the replacement string if MATCH_EXPREP + appears in MFLAGS + - parameter_brace_patsub: push call to shouldexp_replacement out here, + after the replacement string is expanded; set MATCH_EXPREP if there + is an unquoted `&' (by backslash) in the expanded replacement + string + +doc/{bash.1,bashref.texi} + - pattern substitution: overhauled the description, moved each of the + possible forms to be tags in the tagged paragraph. The description + now specifies the expansions that the replacement string undergoes + - pattern substitution: documented new behavior of unquoted & in the + replacement string + + 10/4 + ---- +shell.c + - include if we're debugging malloc (MALLOC_DEBUG) + so we can get an extern declaration of trace_malloc_stats + + 10/5 + ---- +subst.c + - expand_subscript_string: allocate new memory for td.word, copying + STRING, in case it gets freed on error by expand_word_internal. + Report and fix from Koichi Murase + +lib/malloc/malloc.c + - malloc_usable_size: return the allocated size instead of the chunk + size, since writing over the bounds checking will cause fatal errors. + Reported by Julien Moutinho , fix from + Dominique Martinet + +arrayfunc.c + - unbind_array_elememnt: pass (flags&VA_NOEXPAND) to skipsubscript(), + instead of unconditionally passing 1 if we're operating on an + associative array. This is consistent with how valid_array_reference + determines the length of the subscript. + Report and fix from Koichi Murase + + 10/6 + ---- + +subst.c + - skip_to_delim: add a new value for FLAGS. If FLAGS&2, we assume that + START is one character after the opening OPEN. If not, we assume that + START is at OPEN, and needs to be incremented past it. Part of fix + from Koichi Murase + +arrayfunc.c + - unbind_array_element: make sure to pass FLAGS to skipsubscript with + bit 2 set, since we are passed a SUB index that's one past the + opening bracket. Rest of fix from + Koichi Murase + - array_variable_name: make sure we pass (FLAGS&1) to skipsubscript, so + we don't inadvertently pass a value with bit 2 set, which would + cause an off-by-one error in subscript parsing + + 10/8 + ---- +trap.c + - restore_traps: inverse of reset_signal_handlers. This understands + how reset_signal_handlers changes the signal disposition while + leaving the trap string in place, and knows how to restore flags + and state based on that preserved trap string and whether or not + the signal is "special" to the shell. + +builtins/exec.def + - exec_builtin: instead of using restore_original_signals to completely + cancel the traps, call reset_signal_handlers so the trap strings are + preserved. Then if the exec fails (and we're not exiting) we can + look at the trap strings and see how to restore the trap state. + This calls restore_traps after reinitializing the shell signal + handlers, using the trap strings saved by reset_signal_handlers. + Fixes issue with not exiting after a failed exec clearing the EXIT + trap reported by Mark March , using the + approach suggested by Robert Elz + +subst.c + - expand_declaration_argument: when parsing options that modify + attributes that affect how the value is handled (i, c, u, etc.), + make sure to create an option string and call make_internal_declare + with options that start with a `+' so the attribute is off when + the assignment is performed and changes how the value is expanded. + From a report by Léa Gris + +lib/readline/complete.c + - rl_display_match_list: even if _rl_completion_prefix_display_length + is set to a non-zero value, pass the common prefix length to + fnprint if we've turned on colored completion prefixes; passes + through to fnprint via print_filename + - fnprint: add the ellipsis if prefix_bytes exceeds the + _rl_completion_prefix_display_length, add explicit check for + prefix_bytes being longer since print_filename passes it through + if colored-completion-prefix is set. This means that while + completion-prefix-display-length still has precedence over + colored-completion-prefix, it doesn't override it if both are set + and the common prefix length is shorter than + completion-prefix-display-length. From a report by + Christoph Anton Mitterer + + 10/10 + ----- +parse.y + - parse_dparen: if the last token is FOR, increment word_top and assign + word_lineno like for other for loops. Fixes bug with LINENO after + arithmetic for commands reported by + Tom Coleman + + 10/11 + ----- +execute_cmd.c + - shell_execve: if execve fails with ENOENT, but executable_file() + succeeds, display a slightly more descriptive error message. Prompted + by a report from Andrea Monaco + +stringlib.c + - strcreplace: allow backslash to escape a backslash, since we allow it + to escape a `&' + + 10/14 + ----- +pcomplib.c + - COMPLETE_HASH_BUCKETS: double to 512 + +stringlib.c + - strcreplace: the last argument is now a flags argument. 1 has its + previous meaning (glob); 2 means to allow backslash to escape a + backslash (as added on 10/11) + +subst.c + - pat_subst: call strcreplace with 2 as the flags value + + 10/15 + ----- +doc/bashref.texi + - updates to Installation section + +doc/{mkposix,mkinst,mkrbash},doc/Makefile.in + - changes to allow scripts to be run outside the source directory + + 10/18 + ----- +subst.c + - patsub_replacement: controls whether pattern substitution expands `&' + in the replacement string. Initialized to 1 by default + + 10/19 + ----- +doc/{bash.1,bashref.texi} + - document bash's WCE SIGINT behavior when job control is not enabled + and the shell receives a SIGINT while waiting for the foreground + command to complete. Added at Red Hat's request. A complete + discussion is at https://www.cons.org/cracauer/sigint.html + + 10/25 + ----- +builtins/shopt.def + - patsub_replacement: new shell option, exposes patsub_replacement + variable controlling whether pattern substitution expands `&' in + the replacement string. Still enabled by default. + +doc/{bash.1,bashref.texi} + - patsub_replacement: document new shopt option + + 10/26 + ----- +lib/readline/display.c + - expand_prompt: group runs of invisible characters at the right edge + of the screen with the previous physical characters when setting + local_prompt_newlines, since that's how update_line() expects to + get it. Fix from sparrowhawk996@gmail.com. + +lib/readline/macro.c + - rl_end_kbd_macro: make sure current_macro_index is > 0 after + subtracting the key sequence length, clamp it to 0 before writing + the ending NULL. From a fuzzing report by + Tillmann Osswald + +lib/readline/isearch.c + - _rl_isearch_dispatch: in the bracketed paste case, don't assume the + pasted text is null-terminated, so use memcpy instead of strcpy for + the length of the pasted text, then make sure the search string is + null-terminated. From a fuzzing report by + Tillmann Osswald + +lib/readline/text.c + - rl_transpose_words: make sure to preserve the value of rl_end from + the beginning to the end of the function. From a fuzzing report by + Tillmann Osswald + +lib/readline/vi_mode.c + - rl_vi_delete_to,rl_vi_change_to,rl_vi_yank_to: if we are redoing a + command (_rl_vi_redoing == 1), save the old _rl_vimvcxt, allocate a + new one, and restore the old one before returning. Prevents some + pointer aliasing problems. From a fuzzing report by + Tillmann Osswald + + 10/29 + ----- +arrayfunc.c + - tokenize_array_reference: take valid_array_reference and add a third + argument (char **SUBP), which, if non-NULL, gets the null-terminated + subscript parsed from the NAME argument. If it's NULL, the caller + gets the old valid_array_reference behavior. Fix from + Koichi Murase + - valid_array_reference: just call tokenize_array_reference with a + NULL third argument + - unbind_array_element: assume the caller (unset_builtin) passes a + null-terminated SUB that's already been validated by a call to + tokenize_array_reference so we don't need to call skipsubscript() or + check VA_ONEWORD. Fix from Koichi Murase + +arrayfunc.h + - tokenize_array_reference: extern declaration + +builtins/set.def + - unset_builtin: use tokenize_array_reference to figure out T and pass + that to unbind_array_element. Fix from + Koichi Murase + - unset_builtin: pass non-null argument to array_variable_part to get + the length of the subscript (T), then cut off any final `]' before + passing it to unbind_array_element, since that's what it now + expects + +subst.c + - expand_string_for_rhs,expand_string_for_pat: assign td.word from + newly-allocated memory in case it gets freed on error during the + call to call_expand_word_internal(); free it manually when that + call returns + + 11/1 + ---- +findcmd.c + - search_for_command: if FLAGS includes CMDSRCH_STDPATH, don't look in + the hash table for the command name. Prompted by a report from + Roger Morris + +aclocal.m4 + - BASH_FUNC_POSIX_SETJMP: add a check by fetching the signal mask + after the siglongjmp and making sure that SIGINT is not blocked, + indicating we restored the original signal mask + + 11/2 + ---- +subst.c + - expand_string_assignment: make sure to add W_TILDEEXP to the flags so + expand_word_internal performs the right tilde expansion on tildes + following an unquoted colon. Report from Anders Kaseorg + + + + 11/3 + ---- +aclocal.m4 + - BASH_FUNC_POSIX_SETJMP: if cross-compiling, default to `present' if + we've determined we have posix signal functions + + 11/4 + ---- +execute_cmd.c + - SET_LINE_NUMBER: set line_number, but don't set line_number_for_err_trap + if we're already running the ERR trap + - GET_LINE_NUMBER: evaluates to line_number_for_err_trap if we're + running the ERR trap and executing_line_number() otherwise + - execute_function: use GET_LINE_NUMBER to push the value for the line + number into the BASH_LINENO array + - execute_command_internal,execute_arith_command,execute_cond_command: + use SET_LINE_NUMBER to avoid overwriting line_number_for_err trap + while executing the ERR trap. Tentative fix for `caller' problem + reported by Quinn Grier + +configure.ac,patchlevel.h + - set bash version to 5.2-devel, meaning shell_compatibility_level = 52, + which required updating tests (array.tests, array21.sub, + quotearray3.sub, new-exp10.sub, history2.sub). The first three are + because bash-5.2 flushes an indexed array but does not unset the + variable when given `unset a[@]' or `unset[*]' (that is, it acts + like `a=()' instead of `unset a'); the other two are because the + version number changed + + 11/8 + ---- +doc/Makefile.in + - bash.info: use `makeinfo -o' instead of calling infopost.sh to edit + the filename, since the tags table includes absolute byte offsets to + nodes. From https://savannah.gnu.org/support/?110557 + + 11/15 + ----- +examples/loadables/realpath.c + - add -a NAME argument to put canonicalized pathnames into an indexed + array instead of displaying them on stdout. Suggested by + felix@f-hauri.ch + +lib/readline/colors.c + - _rl_custom_readline_prefix: new function, looks in $LS_COLORS for a + custom extension (*.readline-colored-completion-prefix) and uses that, + if found, as the default color for the common prefix displayed when + `colored-completion-prefix' is set. Suggested by + Christoph Anton Mitterer + - _rl_print_prefix_color: try the return value from _rl_custom_readline_prefix + before defaulting to the C_PREFIX (C_SOCK) color. Suggested by + Christoph Anton Mitterer + +lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 + - readline-colored-completion-prefix: document new custom suffix for + readline's colored-completion-prefix color + + 11/16 + ----- +doc/{bash.1,bashref.texi},builtins/set.def + - set: modify usage synopsis slightly, based on + https://bugzilla.redhat.com/show_bug.cgi?id=2022324 + +builtins/set.def + - unset_builtin: add shell compatibility level check <= bash-5.1 to + force `unset a[@]' to unset array variable `a', like in previous + versions, instead of unsetting associative array element `@' or + removing all elements of an indexed array without unsetting the + variable itself + +builtins/common.c + - set_expand_once: now a no-op if the shell compatibility level is + <= bash-5.1, preserving the previous versions' behavior for [[ -v + (dependent on assoc_expand_once instead of forcing it) + +subst.c + - parameter_brace_expand_rhs: make sure that the final value assigned + is always returned from ${a:=b}, even when `a' has a variable + attribute that modifies the value on assignment. Reported back on + 1/20/2021 by oguzismailuysal@gmail.com; bash-5.2 tag removed + + 11/22 + ----- +doc/{bashref.texi,bash.1} + - unset: change the description of `unset name[@]' (unset name[*]) + to reflect the new behavior (unset associative array subscripts or + remove all elements from an indexed array) and the difference from + previous versions + - set: document -r for restricted shell mode + - restricted shell: change occurrences of `set +o restricted' to + `shopt -u restricted_shell'. From a report from + Jin Xiang + - read: note that read -t0 may return 0 if a subsequent read will + return EOF. From a suggestion by Dale R. Worley + + +execute_cmd.c + - execute_arith_command,eval_arith_for_expr: don't pass EXP_EXPANDED + to evalexp if shell_compatibility_level > 5.1, assuming that the + expression has been quoted by Q_ARITH handling + +test.c + - test_arithcomp: if we're being called by the conditional command + code and treating the arguments to the arithmetic operators as + expressions, don't pass EXP_EXPANDED to evalexp if the shell + compatibility level is > 5.1, assuming that the expression has been + quoted by Q_ARITH handling + + 11/29 + ----- +examples/loadables/getconf.[ch] + - getconf: new implementation of loadable builtin, based on glibc + getconf + +examples/loadables/sleep.c + - parse_gnutimefmt: parse GNU interval format (2m30s), returning + seconds and microseconds like uconvert + - sleep: use parse_gnutimefmt if uconvert can't parse the format right + away and "dhms" appears in the format string. Don't return + EX_DISKFALLBACK under any circumstances + + 11/30 + ----- + +builtins/wait.def + - wait_builtin: refer to unset_waitlist only if JOB_CONTROL is enabled. + Report from Joel Ebel + +parse.y,builtins/set.def + - changes for minimal config restrictions + +configure.ac,config.h.in + - --enable-translatable-strings: new configuration option to allow + $"..." support to be compiled in or out; not included in the minimal + shell configuration + +shell.c + - main: don't include any of the dump-strings options if + TRANSLATABLE_STRINGS is not defined + +lib/sh/shquote.c + - sh_backslash_quote_for_double_quotes: needed for translatable strings + +parse.y + - support for translating $"..." strings now conditional on + TRANSLATABLE_STRINGS + +locale.c + - locale_expand: now conditional on TRANSLATABLE_STRINGS + +subst.c + - expand_string_dollar_quote: support for $"..." now conditional on + TRANSLATABLE_STRINGS + +doc/bashref.texi + - --enable-translatable-strings: document new configuration option + + 12/2 + ---- +subst.c + - verify_substring_values: now that the default compatibility level is + 52, and the Q_ARITH code is enabled, make the EXP_EXPANDED flag for + evalexp() dependent on the compatibility level + - param_expand: arithmetic substitution: make EXP_EXPANDED flag + for evalexp() dependent on the compatibility level + - expand_word_internal: don't call expand_array_subscript if the + shell compatibility level is 51 or below (Q_ARITH) + +test.c + - test_unop: if the shell compatibility level is > 51, using [@] with + an existing associative array will report on a key of `@' + +arrayfunc.c + - array_expand_index: if the compatibility level is > 51, Q_ARITH is + used and we don't pass EXP_EXPANDED to evalexp() + +COMPAT,doc/bashref.texi + - shell compatibility mode: document effects of setting the + compatibility mode to 51 + + 12/3 + ---- +lib/malloc/malloc.c + - mremap: only use if MREMAP_MAYMOVE is defined, since we use the Linux + version of the function signature + + 12/6 + ---- +bashhist.c + - bash_add_history: if we're parsing a here-document (PST_HEREDOC), only + suppress adding the newline between lines if we're not at the first + line of the here-document (here_doc_first_line != 0). From a report + by S0AndS0 + + 12/8 + ---- +lib/readline/colors.c + - _rl_custom_readline_prefix: use STREQN to check for the extension + string in $LS_COLORS, since it's not necessarily null-terminated. + From https://savannah.gnu.org/patch/?10158 + + 12/10 + ----- +variables.c + - set_int_value,set_string_value: broke common code for setting int + and string dynamic variable values out into separate functions; + changed all callers to use them where appropriate. set_int_value + takes a flags argument saying whether or not to force the integer + attribute on + - assign_random: store the value assigned as the variable value so + things like RANDOM=42; RANDOM+=7 generate consistent sequences + like in ksh93 + - assign_seconds: store the value assigned as the variable value so + things like SECONDS=42 ; SECONDS+=7 generate what's expected + +doc/Makefile.in + - changes to allow man pages that include others (.so FN) to be built + outside the source tree + + 12/13 + ----- +arrayfunc.c + - assign_array_element_internal: take an additional argument: char **NVALP. + If non-null, it gets the value eventually assigned to the array + element + - assign_array_element: take an additional NVALP argument; pass it to + assign_array_element_internal + +arrayfunc.h + - assign_array_element: new extern function declaration + +{subst,variables}.c,builtins/{common.c,declare.def} + - assign_array_element: change callers + +subst.c + - parameter_brace_expand_rhs: for the ${param:=value}, use the value + returned by assign_array_element in NVALP as the return value, since + it's the value ultimately assigned to the variable after possible + modification (e.g., arithmetic evaluation). Reported by + oguzismailuysal@gmail.com after flawed fix applied 11/16 + + 12/14 + ----- +arrayfunc.h + - array_eltstate_t: an object that encapsulates an array element's + state (type, index, key, value) whether it's an indexed or + associative array + +arrayfunc.c + - {init,flush}_eltstate: new functions to initialize and flush any + allocated memory from array_eltstate_t objects. No allocation/ + deallocation functions yet; the only use is with a static instance + - assign_array_element_internal: take an array_eltstate_t * instead of + a char ** as the final argument, so we can return keys/indices and + values depending on the type of array; populates it with the + appropriate values + - assign_array_element: take array_eltstate_t * as final argument + instead of a char **; pass it to assign_array_element_internal + +{subst,variables}.c,builtins/{common.c,declare.def} + - assign_array_element: change callers to modify final argument + + 12/15 + ----- +arrayfunc.c + - array_value_internal: now takes an array_eltstate_t * as the final + argument; there is no more `rtype' argument in favor of the + `subtype' member; returns the appropriate values in its members + - array_value: changed to pass array_eltstate_t to array_value_internal, + saves and fetches its `ind' member into *indp; saves `subtype' + member into *rtype + - get_arrary_value: changed to take array_eltstate_t as third argument, + passes it to array_value_internal + +{redir,expr}.c + - get_array_value: changed callers; initializing the array_eltstate_t + argument as necessary + +test.c + - test_builtin: changed to use get_array_value, adding AV_ALLOWALL to + the flags, since it didn't use any QUOTED argument. Pass + array_eltstate_t * as final argument and get subtype from it (the + only thing we're interested in, to deallocate memory) + + 12/16 + ----- +arrayfunc.c + - array_value: now takes a final argument of array_eltstate_t *, which + it passes to array_value_internal; no more rtype and indp args. + Callers are responsible for marshalling values into estatep + +arrayfunc.h + - array_value: changed function signature + +subst.c + - get_var_and_type,parameter_brace_expand_word: changed calls to + array_value to use array_eltstate_t argument and initialize it + appropriately. Copy values back from it to the parameters we need + to modify + +variables.c + - assign_lineno: call set_int_value to store the value, like with + RANDOM and SECONDS (from 12/10) + + 12/17 + ----- +{eval,execute_cmd}.c + - when bypassing a parsed command because read_but_dont_execute is + set, don't modify last_command_exit_value. From a report by + Robert Elz + +parse.y + - parse_comsub: make sure the first call to shell_getc to check whether + or not it's an arithmetic expansion skips a quoted newline. From a + report by Robert Elz + + 12/21 + ----- +subst.c + - parameter_brace_remove_pattern,parameter_brace_patsub,parameter_brace_casemod, + parameter_brace_transform,parameter_brace_substring: now take an + array_eltstate_t * argument in place of the arrayind_t argument, pass + it to get_var_and_type; this generalizes the indexed array behavior + of expanding array subscripts once to associative arrays via an + eventual call to array_value_internal with a non-null KEY member + - get_var_and_type: now takes an array_eltstate_t * argument in place + of the arrayind_t argument; use it in calls to array_value so we + can only expand array subscripts once whether they are indexed or + associative arrays + - parameter_brace_expand_word: take an array_eltstate_t * argument in + place of the arrayind_t * argument; pass it to array_value; use a + static version (which we init and flush) if the argument passed is + NULL so we can get the right state passed back and forth + - parameter_brace_expand: pass a pointer to a static array_eltstate_t + to parameter_brace_expand_word, and use that in the various calls to + parameter_brace_XXX functions that perform specific expansions in + place of the old arrayind_t argument; make sure to flush it before + returning, even on errors + + 12/22 + ----- +{trap,variables}.c + - internal_warning: calls changed to use translatable strings + consistently + +error.[ch] + - internal_debug: new function, prints a message like internal_warning, + no-op if DEBUG is not defined + - INTERNAL_DEBUG: macro that expands to internal_debug when DEBUG is + defined, and nothing otherwise + +{jobs,trap}.c + - changed some internal_warning and internal_inform calls to use + internal_debug, since they were active only when DEBUG is defined + +parse.y + - parse_comsub: add internal_debug call when a command substitution + ends with unterminated here-documents + +builtins/common.c + - number_of_args: unconditionally return posparam_count + +{jobs,execute_cmd,subst}.c,parse.y,builtins/{command.def,evalstring.c} + - INTERNAL_DEBUG: use instead of calls to itrace protected by #ifdef + DEBUG + + 12/26 + ----- +lib/glob/glob.c + - glob_always_skip_dot_and_dotdot: initialize to 1 (enabled) + +builtins/shopt.def + - globskipdots: new shell option, exposes glob_always_skip_dot_and_dotdot + +doc/{bash.1,bashref.texi} + - globskipdots: document new shell option + +execute_cmd.c + - fix_arrayref_words: call valid_array_reference with 0 for third arg + because the words have not undergone any word expansions yet and + the quotes are still present. This makes things like + A=[\[]=set + unset A[\[] + work + +subst.c + - word_list_split: if a word undergoes word splitting but is not + changed, preserve any W_ARRAYREF flag into the new word. This makes + things like + rkey=']' + unset A[$rkey] + work because the unset builtin sees the W_ARRAYREF flag on its + argument + + 12/29 + ----- +builtins/common.h + - SET_VFLAGS: take a set of word flags, and set flags for use with + valid_array_reference (vflags) and assign_array_element/bind_int_variable + (bindflags) based on those flags and the setting of assoc_expand_once + (moved from read.def and generalized) + +arrayfunc.c + - array_variable_name: now exclusively takes AV_xxx flags; understands + how to translate AV_NOEXPAND to the right flag for skipsubscript; + understands AV_ONEWORD and AV_NOEXPAND + - array_variable_part: just passes the FLAGS arg to array_variable_name + - assign_array_element: translates ASS_ flags to AV_ flags for + array_variable_name + - array_value_internal: now just passes flags straight through to + array_variable_part (which sends them to array_variable_name) + +builtins/common.[ch] + - builtin_bind_var_to_int: now takes a new FLAGS third argument; passes + it to bind_var_to_int + +builtins/printf.def + - printf_builtin: use SET_VFLAGS to set flags for builtin_bind_variable + (bindflags); makes things like + declare -A A; key=']' ; printf -v A[$key] "foo" + work without a subscript error as long as assoc_expand_once is defined + +builtins/read.def + - read_builtin: use new common version of SET_VFLAGS instead of + private version; changed to use new calling sequence; makes things like + declare -A A; key=']' ; read A[$key] <<<"foo" + work without a subscript error as long as assoc_expand_once is defined + +builtins/wait.def + - wait_builtin: use SET_VFLAGS for variable name with -p option + - wait_builtin: call builtin_bind_var_to_int with new bindflags third + argument + +expr.c + - expr_streval: just pass TFLAG (AV_xxx flags) straight through to + array_variable_part + +variables.c + - bind_int_variable: translate the assignment flags (ASS_xxx) to + VA_xxx flags for valid_array_reference calls (ASS_ONEWORD); translate + assignment flags to AV_xxx flags for array_variable_part + + 12/30 + ----- +subst.c + - parameter_brace_expand: when expanding an indirect variable, extend + the special case for array[@] and array[*] (set -u/no positional + parameters, obeying the baroque quoting rules) to the value of the + indirection. Report and fix from konsolebox + + 12/31 + ----- +parse.y + - compound_list: when parsing a compound_list production, collect any + pending here-documents after reading a newline, not after reading + any command terminator. Fixes interactive-only prompting bug + reported back in 8/2021 by Hyunho Cho + + 1/1/2022 + -------- +bashline.c + - set_filename_quote_chars: break code that modifies + rl_filename_quote_characters based on whether DIRNAME needs to be + expanded from bash_directory_completion_hook into its own function + - bash_check_expchar: break code that checks whether DIRNAME will be + word expanded from bash_directory_completion_hook into its own + function + - bashline_reset,attempt_shell_completion: make sure complete_fullquote + is set to 1 (as it is by default) in case a completion modifies it + - bash_quote_filename: if we are completing (but not expanding -- + direxpand is unset) and backslash-quoting a filename with expansion + characters as determined by bash_check_expchar, make sure + filename_bstab is set not to include the expansion char (and any + following char and closer) and set complete_fullquote to 0 so + sh_backslash_quote uses filename_bstab. Fixes the longstanding issue + of quoting a `$', for instance, if the rest of the filename contains + any characters that need quoting in filenames. This assumes that the + filename is unquoted (*QCP == 0) so the word will be expanded and is + not part of the filename (if needed, we can use file_exists to check + whether the expansion characters are actually part of the filename) + + 1/7 + --- +examples/loadables/accept.c + - new -b bindaddr option to bind to a specific IP address + - move setsockopt calls before bind() to avoid TIME_WAIT issues. Fixes + from Dzogovic Vehbo + + 1/10 + ---- +configure.ac + - bumped version to 5.2-alpha. + + 1/16 + ---- + +tests/{unicode1,glob2,intl2}.sub, tests/run-intl + - minor changes to add warnings for missing locales that cause test + failures + + 1/17 + ---- +parse.y + - history_delimiting_chars: if we have a blank line by the time we + hit the end of the tests, return a semicolon for the first blank + line to avoid running lines of a multi-line command together. + Fixes bug reported by Joakim Lindblad + +subst.c + - expand_string_for_patsub: expand the replacement string for pattern + substitution assuming that it will eventually be passed to + strcreplace to replace `&' with the matched portion of the string. + This calls expand_string_for_pat(), which leaves the string quoted + and does not perform word splitting, then calls + quote_string_for_repl to post-process the expanded string. + - quote_string_for_repl: perform quote removal on passed string while + replacing CTLESC escaping a `&' or a backslash with a backslash. The + result must be passed to strcreplace + - parameter_brace_patsub: call expand_string_for_patsub if + patsub_replacement is set to quote + + 1/18 + ---- +subst.c + - read_comsub: make istring_index a size_t to avoid overflow with very + large values of istring_size. + From https://savannah.gnu.org/support/index.php?110596 + - expand_word_internal: make istring_index a size_t + + 1/20 + ---- +buitins/cd.def + - add a description of `cd -' to the help text. Suggested by + Rob Landley + + 1/21 + ---- +lib/glob/glob.c + - glob_vector: if we allocate NEXTLINK using malloc, and free it due to + some allocation failure, reset FIRSTMALLOC to avoid duplicate frees + later on + +subst.[ch] + - sub_append_string: the INDX parameter is now a size_t to avoid + overflow + +parse.y + - decode_prompt_string: RESULT_INDEX is now a size_t to pass to + sub_append_string + +jobs.[ch],nojobs.c + - wait_for_background_pids: now returns the number of jobs/processes + reaped + +builtins/wait.def + - wait_builtin: if -p pid supplied without -n, make sure we do something + useful if no job/pid arguments are supplied and there are no jobs. + Reported by Oguz + +builtins/read.def + - read_builtin: if we have a timeout, use SIGALRM instead of select + when in posix mode, since we use read instead of zread. Fixes bug + reported by Andreas Schwab + +subst.c + - expand_string_dollar_quote: handle single-quoted and double-quoted + strings that might include $' and $" without attempting translation; + do more error checking for unterminated $' and $" that leaves those + characters unmodified. This is for use by readline's various line + expansion functions (shell_expand_line) + + 1/23 + ---- +parse.y,make_cmd.c + - revert change that unconditionally processes $'...' and $"..." in + here-document bodies; there are only a couple of cases where they + should be processed in a double-quote environment + + 1/24 + ---- + +subst.c + - extract_dollar_brace_string: if we see another `${' on the rhs of + the operator, reset the dolbrace_state to DOLBRACE_PARAM while we + read this new ${...} string + - extract_heredoc_dolbrace_string: new function, variant of + extract_dollar_brace_string, to process the WORD in ${PARAM OP WORD} + while expanding lines of here-document data. It's complicated by the + requirement to add to the result string as we go along, since we + need to change the contents of the input string with ansi expansion + or locale translation. + - string_extract_single_quoted: take a new third argument: ALLOWESC. + This allows backslash to escape an embedded single quote, needed by + extract_heredoc_dolbrace_string to process $'...'; changed callers + + 1/25 + ---- +parse.y + - parse_matched_pair: ansi-expand $'...' in WORD for ${PARAM OP WORD} + and single-quote the result if dolbrace_state == DOLBRACE_QUOTE + (posix pattern removal operators) even if extended_quote == 0 + +subst.c + - extract_heredoc_dolbrace_string: add logic to align with parse.y: + parse_matched_pair and its $'...' expansion, including handling + extended_quote + + 1/27 + ---- +builtins/evalstring.c + - should_optimize_fork: broke conditions for optimizing away the fork + for a simple command out of optimize_fork into new function, call + from should_suppress_fork and optimize_subshell_command. Call from + optimize_fork if (subshell_environment & SUBSHELL_PAREN), relying + on fact that CMD_TRY_OPTIMIZING is only set in a couple of specific + conditions + - optimize_fork: call should_suppress_fork only if startup_state == 2; + it does the extra checks for that specific case + - optimize_fork: call should_optimize_fork if we're in a (list) + subshell (subshell_environment & SUBSHELL_PAREN) + - optimize_subshell_command: set CMD_TRY_OPTIMIZING on the right side + of a `&&', `||', or `;' list as long as it's a simple command so + we can check with optimize_fork() when it's time to execute it + +execute_cmd.c + - execute_in_subshell: call optimize_subshell_command for (list) + subshells to either set CMD_NO_FORK for simple commands or set + CMD_TRY_OPTIMIZING for likely candidates for later optimization + +builtins/common.h,builtins/evalstring.c + - optimize_fork: renamed to optimize_connection_fork; changed callers + + 1/31 + ---- +include/shmbutil.h + - COPY_CHAR_I,SCOPY_CHAR_I: add check for locale_utf8locale and + (c & 0x80) as in other macros + +lib/sh/shquote.c + - sh_backslash_quote_for_double_quotes: rewrote to use array indexing + and COPY_CHAR_I to make it easier to drop in future calls to + charvis() to make `unsafe' characters visible if FLAGS == 1 + + 2/1 + --- +parse.y + - parse_comsub: if we are currently expanding aliases, temporarily + turn off alias expansion if we are not in posix mode so we defer + alias expansion until command_substitute(). Fixes double-expansion + bug reported by Martijn Dekker and aligns with + https://www.austingroupbugs.net/view.php?id=1342 + - xparse_dolparen: turn off alias expansion entirely while running the + parser: either we do it in parse_comsub (posix mode) or in + command_substitute (default mode) + - parse_string_to_command: ditto + +subst.c + - command_substitute: if we are expanding aliases, temporarily turn + off alias expansion if we are in posix mode, since we already + performed it in parse_comsub() and are using the command string + reconstituted from the parse result + +doc/bashref.texi + - bash posix mode: add description of alias expansion and command + substitution parsing and execution + + 2/4 + --- +lib/readline/rltty.c + - rl_deprep_terminal: set _rl_last_c_pos to 0 after outputting + BRACK_PASTE_FINI, since the last character in that is \r. Partially + address issue raised by Markus Schwarzenberg + in https://lists.gnu.org/archive/html/bug-bash/2022-02/msg00056.html + + 2/5 + --- +doc/{bash.1,bashref.texi} + - minor typo fixes from Helge Kreutzmann + + 2/7 + --- +{arrayfunc,variables}.c + - ARRAY_EXPORT: changes to encode array and assoc variables using a + scheme similar to shell functions so we can export arrays and + differentiate them from scalar variables and differentiate array + and assoc variables. Still not enabled by default. + +variables.c + - mk_env_string: third argument is now the variable's attributes or 0, + with all the attributes we can export arrays + +lib/readline/bind.c + - active-region-start-color,active-region-end-color: new bindable + string variables, one to set the active region color (instead of + standout mode) and one to turn it off (instead of the "se" terminal + capability). They set _rl_active_region_start_color and + _rl_active_region_end_color variables via functions + +lib/readline/display.c + - putc_face: if setting standout mode, check for both the start color + and end color variables and output the start color string. If turning + off standout mode (normal face), output the end color string. Both + variables must be set + +lib/readline/{readline.c,rlprivate.h} + - declarations for _rl_active_region_start_color and + _rl_active_region_end_color + + 2/8 + --- +bashline.c + - initialize_readline: add bindable name `vi-edit-and-execute-command' + +shell.c + - subshell_exit: make sure to set last_command_exit_value before + calling the exit trap. Fixes bug reported by Greg Edwards + + + 2/9 + --- +lib/readline/{terminal.c,rlprivate.h} + - _rl_region_color_on,_rl_region_color_off: functions to output the + _rl_active_region_start_color and _rl_active_region_end_color + - _rl_reset_region_color: function to encapsulate setting the region + color to an arbitrary string, including doing memory management + +lib/readline/display.c + - putc_face: call _rl_region_color_on and _rl_region_color_off instead + of _rl_standout_on and _rl_standout_off + +lib/readline/terminal.c + - _rl_init_terminal_io: initialize _rl_active_region_start_color and + _rl_active_region_end_color from _rl_term_so and _rl_term_se, + respectively; reset every time the terminal is changed + - _rl_init_terminal_io: turn off the active region for a dumb terminal + +lib/readline/bind.c + - sv_region_{start,end}_color: call _rl_reset_region_color with the + appropriate value for WHICH + + 2/10 + ---- +lib/readline/doc/{rluser.texi,readline.3},doc/bash.1 + - active-region-start-color,active-region-end-color: documented new + bindable readline variables + - enable-active-region: document using active-region-start-color to + highlight the text in the region + + 2/11 + ---- +parse.y + - read_token,read_token_word: make sure characters read by shell_getc + are protected by appropriate calls to MBTEST when testing for shell + metacharacters and operators + + 2/14 + ---- +builtins/shopt.def + - set_compatibility_level: if the current compatibility level is outside + the range of the compatNN options, just leave it alone when + unsetting one of the options (which by definition was already + unset). Fixes issue reported by Mihai Moldovan + + 2/16 + ---- +lib/readline/search.c + - rl_history_search_{pos,len,flags}: rename to have a leading `_' + - _rl_history_search_pos: no longer static so other parts of readline + can see it + +lib/readline/rlprivate.h + - _rl_history_search_pos: extern declaration + +lib/readline/readline.c + - readline_internal_teardown: don't run the undo list against the + current history entry if the non-incremental search functions have + set _rl_history_search_pos to it, since it doesn't reflect the + current contents of the line buffer. Fixes issue reported by + Andreas Schwab + +lib/readline/misc.c + - _rl_start_using_history: initialize _rl_history_search_pos to + something invalid so it doesn't match where_history() + + 2/17 + ---- +lib/readline/callback.c + - rl_callback_read_char: make sure _rl_eof_found is set to the value + of eof before calling the deprep terminal function, so it can do + different things based on whether the input code read EOF (or the + user entered the EOF character). From a gdb discussion started by + Andrew Burgess (still more to do, since this + is not part of the public API) + + 2/18 + ---- +lib/readline/readline.h + - RL_STATE_EOF: new readline state value; set when readline reads an + EOF character on an empty line or a read returns an error + - rl_eof_found: new public variable + +lib/readline/rprivate.h + - _rl_eof_found: renamed to rl_eof_found, so not declared here + +lib/readline/{callback,readline}.c + - RL_STATE_EOF: set appropriately when readline gets an EOF. Suggested + by Andrew Burgess + - RL_STATE_EOF: make sure it's not set when readline starts + - rl_eof_found: set appropriately when readline gets an EOF + +lib/readline/{callback,readline,rltty}.c + - rl_eof_found: new name for _rl_eof_found + +lib/readline/doc/rltech.texi + - RL_STATE_EOF: document + + 2/19 + ---- +parse.y + - parse_comsub: turn off parser state flags we don't want to inherit + into this call to the parser (PST_REGEXP, PST_EXTPAT, PST_CONDCMD, + PST_CONDEXPR for now). Fixes bug reported by konsolebox + + + 2/23 + ---- +findcmd.c,builtins/hash.def + - replace calls to is_directory with file_isdir, which only performs a + stat and doesn't do the eaccess call to check for an executable file + +findcmd.c + - find_in_path_element: takes a new RFLAGSP argument, an int * where + the status flags for the returned pathname are returned; saves + additional calls to stat/eaccess + - search_for_command: get the returned flags from + find_user_command_in_path so we don't need any additional calls to + file_status after we find the command in $PATH + + 2/24 + ---- +doc/{bash.1,bashref.texi} + - FUNCTIONS: some small changes to the description of local variables + and dynamic scoping, with emphasis on how that affects `unset' + behavior. Inspired by a discussion with + Christoph Anton Mitterer + + 2/25 + ---- +examples/loadables/realpath.c + - renamed -s option to -q to align with other versions + - perform array assignment for `-a varname' even if -q option supplied + - renamed -S option to -s for Linux compatibility + + 2/28 + ---- +lib/readline/misc.c + - _rl_free_saved_history_line: call rl_free_undo_list, saving and + setting rl_undo_list to the saved history line's data, so the right + call to _hs_replace_history_data happens and we don't end up with + a pointer aliasing problem. Fixes core dump reported by + Andreas Schwab , but does not make his + scenario equivalent to incremental search + + 3/1 + --- +lib/readline/search.c + - make_history_line_current: save the current line before replacing it + with the found history entry using rl_maybe_save_line + - noninc_dosearch: we don't want the saved history line, so free it + after calling make_history_line_current + - _rl_history_search_internal: call rl_maybe_replace_line after making + changes to the line buffer with make_history_line_current so we can + save the undo list we constructed before we set the history position + + 3/2 + --- +lib/readline/display.c + - expand_prompt: add missing piece to patch from 10/26/2021: if we are + recalculating the number of invisible characters on the first line + of the prompt, we need to update INVFL, even if we already set it + when we hit the number of physical characters. This ends up being + assigned to prompt_invis_chars_first_line, and is used in several + subsequent calculations. Reported by + Andreas Schwab + +lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 + - enable-bracketed-paste: add some language making it clearer that + bracketed paste prevents the pasted text from being interpreted as + editing commands. Suggested by Karl O. Pinc + + 3/4 + --- +make_cmd.c + - make_here_document: perform quote removal on the here-doc delimiter + only if it's marked as quoted, which prevents quotes from inside a + command substitution from being removed (they're supposed to begin a + new quoting context) when the word itself isn't flagged as quoted + (which means the body of the here-document gets expanded). You can't + perform quote removal *and* expand the here-document lines. From an + austin-group discussion back in early February + +lib/sh/strvis.c + - charvis -> sh_charvis; change caller + - sh_charvis: now take an additional SLEN argument to avoid having to + compute the string length every time; change callers + - sh_charvis: add a utf-8 locale-specific check before calling + COPY_CHAR_I (in practice, doesn't make any real difference) + + 3/10 + ---- +arrayfunc.c + - convert_var_to_array: if we're being asked to create an associative + array (flags & 2), and we have an existing variable that is not an + assoc array (and not an existing indexed array), call + convert_var_to_assoc to make it one + + 3/11 + ---- +jobs.c + - wait_for: don't call get_tty_state() if readline is dispatching + (RL_STATE_DISPATCHING) with the terminal settings changed + (RL_STATE_TERMPREPPED), the same way we don't if we are running a + command for programmable completion. Fixes bug with SIGINT reverting + to the saved readline terminal settings reported by + Markus Napierkowski + +parse.y + - decode_prompt_string: make sure the expansion of \w, \W, and \s + are all run through sh_strvis before calling + sh_backslash_quote_for_double_quotes or just through sh_strvis if + we're not running the prompt string through word expansions. + Fixes issue reported by Josh Harcome back + in mid-January + + 3/16 + ---- +bashline.c + - bash_quote_filename: if we have a word to complete that contains + characters that introduce a word expansion, make sure the passed + string does *not* exist as a filename before removing those + characters from the set that must be backslash-quoted. See change + from 1/1/2022 + + 3/18 + ---- +lib/readline/search.c + - make_history_line_current: don't free rl_undo_list or + _rl_saved_line_for_history; don't unconditionally save the history + line. This reverts some of the changes to support setting the + history position in history-search-backward + - rl_history_search_internal: only free the saved history line if we + were the ones who created it + + 3/21 + ---- +lib/readline/nls.c + - xmalloc.h: include for systems without setlocale(), so xfree has a + prototype. Report and fix from András Kucsma + +lib/readline/search.c + - _rl_history_search_internal: use previous-history/next-history to + move to the found history line instead of directly calling + history_set_pos. This makes the behavior more similar to incremental + search + - rl_history_search_internal: make sure to set rl_undo_list to the + current history undo list around the calls to rl_get_previous_history + or rl_get_next_history, in order to fool the call to + maybe_replace_line they make + +lib/readline/readline.c + - _rl_executing_func: the currently-executing readline command function + +lib/readline/rlprivate.h + - _rl_executing_func: extern declaration + +lib/readline/search.c + - _rl_history_search_internal: removed (commented out) code that sets + the current history entry to the found history entry, too much + assumes that the current undo list should be applied to the current + history entry (where_history()) + + 3/23 + ---- +subst.c + - parameter_brace_expand_word: if we have double-quoted ${*} or ${@}, + make sure we are setting W_HASQUOTEDNULL in the flags we return to + the caller if we are returning QUOTED_NULL(word) + - parameter_brace_expand_word: if we have a double-quoted associative + array reference using `*' or `@', make sure we are setting + W_HASQUOTEDNULL in the flags we return to the caller if we are + returning QUOTED_NULL(word) + - parameter_brace_expand: if we're using the `[:]+' word expansion + operator, we need to note a quoted null string and pass the + W_QUOTEDNULL flag back to the caller + - expand_word_internal: make sure to return a QUOTED_NULL + (word[0] == CTLNUL) back to the caller if HAD_QUOTED_NULL is set, + regardless of whether or not we see a quoted dollar at. Fix for bug + reported by Andreas Luik + +arrayfunc.c + - array_value_internal: fix typo and set estatep->type to ARRAY_INDEXED + for indexed arrays + + 3/31 + ---- +lib/readline/{history.c,histlib.h} + - _hs_at_end_of_history: convenience function to tell whether or not + the current history position is at the end of the history list + + 4/1 + --- +lib/readline/search.c + - make_history_line_current: don't free rl_undo_list if it is equal to + _rl_saved_line_for_history->data, since we will need to restore it + later if we got it from a history entry. Fixes issue dating back to + 7/2021 and changes to _rl_free_saved_line_for_history, current issue + reported by Andreas Schwab + + 4/5 + --- +lib/readline/{complete,histfile,histsearch,isearch,terminal}.c + - xfree: use instead of free + + 4/7 + --- +configure.ac + - bumped version to bash-5.2-beta + +[bash-5.2-beta frozen] + + 4/8 + --- +lib/readline/input.c + - _rl_orig_sigset: need extern declaration if HAVE_SELECT is defined. + From https://savannah.gnu.org/support/?110634 + +examples/loadables/seq.c + - PRIdMAX: redefine if PRI_MACROS_BROKEN is defined. + From https://savannah.gnu.org/support/index.php?110635 + + 4/11 + ---- +configure.ac + - BASH_FUNC_STRTOIMAX: replace strtoimax if the system doesn't provide + a declaration in a standard header file. Uses new m4/strtoimax.m4. + From https://savannah.gnu.org/support/index.php?110633 + +builtins/printf.def + - getdouble: new function, parses string into `double' using strtod + - printf_builtin: check for the `L' length modifier and use long + doubles for the floating point conversion specifiers. If it's not + supplied, use `double' when in posix mode (as posix specifies) and + long double (if it's available, double if not) in default mode. + From a report from Paul Eggert + + 4/12 + ---- +lib/sh/oslib.c + - bzero: update function signature to modern BSD version + + 4/14 + ---- +lib/sh/oslib.c + - bcopy, gethostname, mkfifo: update function signatures to modern + versions + + 4/15 + ---- +jobs.c,nojobs.c + - wait_for_single_pid: if the pid or job argument is invalid -- isn't + a child of this shell -- return 257, which is out of the range of + valid 8-bit status values + +execute_cmd.c + - execute_pipeline: if wait_for_single_pid returns > 256, set it to + 127 (invalid process) + +jobs.c + - wait_for_background_pids: if wait_for_single_pid returns > 256, set + the status we return in PS to 127 (what it was before) + +builtins/wait.def + - wait_builtin: if wait_for_single_pid returns > 256, treat it as an + error and set pstat.pid to NO_PID + - wait_builtin: if -p supplied, and we get to the end of the argument + list with PSTAT.PID != NO_PID (which we assume means that the return + value is set from PSTAT.STATUS), set the variable name to PSTAT.PID. + From a report by Robert Elz + - wait_builtin: for compatibility with the netbsd sh, leave the variable + name specified with `-p' unset if there are no PID arguments. + From a report by Robert Elz + + 4/17 + ---- +parse.y + - xparse_dolparen: if (flags & SX_NOLONGJMP), don't call + jump_to_top_level() on errors + +bashline.c + - bash_quote_filename: don't call quote_word_break_chars() unless we + have word break chars initialized. Fixes bug reported by + Sam James + + 4/18 + ---- +pcomplete.c + - gen_globpat_matches: call glob_filename with the GX_GLOBSTAR flag if + the `globstar' shell option is enabled. From a report by + Steve + +lib/malloc/malloc.c + - internal_free: remove the GLIBC21 code (!) + - internal_free: make the code that tests against memtop and calls + lesscore depend on USE_LESSCORE being defined, which it is by + default + +lib/malloc/imalloc.h + - USE_LESSCORE: define + +parse.y,shell.h + - token_buffer_size and its corresponding saved value in the shell's + parser state are now size_t instead of int + +stringlib.c + - strsub,strcreplace: use size_t instead of int for local length and + indexing variables + +lib/sh/zmapfd.c + - zmapfd: use size_t instead of int for local length and indexing + variables + +lib/sh/zgetline.c + - zgetline: use size_t instead of int for local length and indexing + variables + + 4/20 + ---- +pcomplete.c + - init_itemlist_from_varlist: free VLIST after assigning it from + *SVFUNC and after we get the variable names and values out of it. + Report from Robert E. Griffith + + 4/25 + ---- +redir.c + - here_document_to_fd: if the shell compatibility level is bash-5.0 or + earlier, use tempfiles for all here-documents and here-strings. From + a bug-bash discussion started by Sam Liddicott + + 4/26 + ---- +parse.y + - parse_comsub: non-interactive shells exit on a syntax error while + parsing the command substitution + - parse_comsub: unset additional PARSER_STATE flags before calling + yyparse(). Inspired by https://bugs.gentoo.org/837203; unsetting + PST_COMPASSIGN is the fix for that bug + - parse_string_to_word_list: use save_parser_state/restore_parser_state + instead of saving pieces of the shell state in individual variables + - parse_compound_assignment: use save_parser_state/restore_parser_state + instead of saving pieces of the shell state in individual variables + - parse_compound_assignment: unset additional PARSER_STATE flags before + calling read_token(); set esacs_needed_count and expecting_in_token + to 0 like in parse_comsub() since read_token can use them + + 4/27 + ---- +lib/sh/strvis.c + - sh_charvis: changes to handle being compiled without multibyte support + + 4/29 + ---- +lib/readline/callback.c + - rl_callback_read_char: don't set rl_eof_found unless eof is > 0, + since it can be -3 if we need to read more input in a multi-key + sequence. Report from Andrew Burgess + +examples/loadables/Makefile.sample.in + - new file, containing the rules to build the example shared object + - includes Makefile.inc from wherever it's installed. Suggested by + Robert E. Griffith + +examples/loadables/Makefile.inc.in + - remove rules that create the example shared object + + 4/30 + ---- +builtins/evalstring.c + - parse_and_execute: check for terminating signals before returning, + after any longjmp, to improve responsiveness and fix the -c code + path before running any exit trap. Report from + Emanuele Torre + + 5/17 + ---- +builtins/suspend.def + - suspend_builtin: the -f option now forces a suspend even if job + control is not enabled. Inspired by a discussion with + Robert Elz + +doc/{bash.1,bashref.texi} + - suspend: updated description to include expanded -f behavior + + 5/25 + ---- +builtins/mkbuiltins.c + - -includefile: new argument, specifies extern filename to insert + into the #include statement in the structfile (builtins.c) and + the filename in the comment in the extern file (builtext.h). + From Alexander Kanavin via + https://savannah.gnu.org/patch/?10210 + +builtins/Makefile.in + - builtins.c: change call to mkbuiltins to add -includefile option + - builtins.c: change recipe to run all the commands in the same shell + invocation + - builtins.c: change recipe to specify new filenames in the call to + mkbuiltins and move them onto builtins.c/builtext.h if the new ones + are different; make the new filenames use the current make recipe + shell pid in the filename ($$RECPID). + Inspired by Alexander Kanavin via + https://savannah.gnu.org/patch/?10210 + + 6/2 + --- +builtins/common.c + - builtin_find_indexed_array: new function, factored common code out + of mapfile and read builtins to find an in-scope indexed array or + create one + +builtins/common.h + - builtin_find_indexed_array: extern declaration + +builtins/{mapfile,read}.def + - change callers to use builtin_find_indexed_array + +variables.c + - unbind_global_variable, unbind_global_variable_noref: new functions + that remove variables from the global_variables table + +lib/sh/shmatch.c + - sh_regmatch: use unbind_global_variable_noref to make sure we act on + the copy of BASH_REMATCH in the global scope all the time, ignoring + any local variables that might exist. Tentative fix for memory leak + report from Emanuele Torre + +doc/{bash.1,bashref.texi} + - BASH_REMATCH: add caveat about making it a local variable + + 6/6 + --- +print_cmd.c + - print_redirection: if the redirectee for r_duplicating_output_word + (r_duplicating_input_word) is 1 (0), don't print it; only print a + non-default file descriptor number + - print_redirection_list: remove the code that tries to temporarily + translate a >&word redirection to >&word now that we won't print a + non-default file descriptor number. Fixes issue with `declare -f' and + function export reported by Namikaze Minato + + 6/13 + ---- +configure.ac + - bumped version to bash-5.2-rc1 + +[bash-5.2-rc1 released] + + 6/15 + ---- +parse.y + - parse_string_to_word_list: save the parser state before any state- + changing functions like bash_history_disable(). Reported by + Clark Wang + + 6/16 + ---- +doc/bash.1 + - play tricks with the value of the zZ number register to refer to + `bash(1)' instead of `above' or `below' when creating the builtins + man page + + 6/17 + ---- +doc/{bash.1,bashref.texi} + - wait: note that wait will return > 128 if interrupted by a signal. + Reported by AA + +execute_cmd.c + - {execute_cond_node,execute_arith_command,eval_arith_for_expr}: make + sure to reset this_command_name after running any DEBUG trap so the + DEBUG trap doesn't overwrite it. + Reported by Emanuele Torre . + - execute_select_command: set this_command_name to NULL after running + any DEBUG trap like execute_for_command does + + 6/23 + ---- +test.c + - three_arguments: when given [ ! ! arg ], make sure to advance POS + after calling two_arguments to avoid a `too many arguments' error. + Report from Steffen Nurpmeso + + 6/27 + ---- +subst.c + - expand_word_internal: when expanding backquoted command substitution, + call string_extract with the SX_REQMATCH flag (closing backquote + required) only if the word flags don't contain W_COMPLETE, + indicating that we're doing this for completion, probably to + determine whether or not to append something to the word. Fixes bug + reported by Emanuele Torre . + + 7/5 + --- +execute_cmd.c + - execute_connection: treat a connector of '\n' the same as ';' + +print_cmd.c + - print_comsub: new function, sets flag noting we are printing a + command substitution and calls make_command_string + - make_command_string_internal: add '\n' to the ';' case; print command + list with newline connector appropriately + +parse.y + - parse_comsub: call print_comsub instead of make_command_string + - list1 production (part of compound_list): if a list is separated by + newlines, and the parser is parsing a command substitution, make + the connection command with a '\n' connector. Makes the text + output of parse_comsub closer to the original source text. From a + report from Martijn Dekker + + 7/6 + --- +doc/bash.1,lib/readline/doc/rluser.texi + - complete: add note about arguments passed to command specified by + `complete -C'; suggested by Mark Chandler + +builtins/setattr.def + - show_local_var_attributes: special-case `local -', since there is + no `declare -' equivalent. + Reported by Emanuele Torre . + - show_all_var_attributes: use `local -' when printing a variable named + `-' at the current non-zero variable context + +parse.y + - shell_getc: if we are at the end of an alias, returning a space, + make sure we mark the previous character as single-byte by modifying + shell_input_line_property so the space we return is properly + recognized. This would fail before if the last character of the + alias was a multi-byte character. Reported by + Vangelis Natsios + + 7/12 + ---- +lib/readline/isearch.c + - rl_display_search: don't call rl_redisplay_function before returning; + rl_message already calls it. Reported by + Frédéric Moulins + +configure.ac + - bumped version to bash-5.2-rc2 + + 7/18 + ---- +jobs.c + - set_job_control: don't bother calling tcgetpgrp if shell_tty < 0, + since it will just fail + +variables.c + - reset_local_contexts: new function, delete all context tables + associated with shell functions and set variable_context to 0. + Called when we want to stop executing in a shell function without + going through the pop_context chain with its side effects + +variables.h + - reset_local_contexts: extern declaration + +builtins/evalstring.c + - parse_and_execute: call reset_local_contexts instead of setting + variable_context to 0 + +eval.c + - reader_loop: call reset_local_contexts in cases where the shell has + longjmped for a fatal error and errexit is enabled (ERREXIT), but + not for other cases, and especially not for the exit builtin, + instead of just setting variable_context to 0. Fixes issue originally + reported by Robert Stoll + +subst.c + - pat_subst: implement sed-like behavior when presented with a null + pattern that's anchored at the start or end of the string, or when + presented with a null string: process the replacement string for `&' + and `\&' and substitute in the result as before. Patch from + Koichi Murase + + 7/20 + ---- + +[bash-5.2-rc2 frozen] + + 7/27 + ---- +parse.y + - reset_parser: set need_here_doc, esacs_needed_count, expecting_in_token + all to 0, since jumping back to a top-level parse needs that + - parse_comsub: make sure to reset expand_aliases and shell_eof_token + if we're not going to exit immediately out of this function + + 7/28 + ---- +parse.y + - parse_comsub: if the compatibility level is <= 51, set extglob while + parsing the command substitution, so bad pattern errors can still be + caught but valid patterns are let through and can be evaluated at + runtime, when extglob may have been set. If it isn't set, it will + still be a parser error when the command substitution is executed. + Fixes report from Sam James about gentoo scripts. + - reset_parser: set extended_glob from global_extglob if the parser + state includes PST_CMDSUBST + - xparse_dolparen: set global_extglob but don't modify extended_glob, + so parse errors can be caught before forking a child for command + substitution, as part of word expansion, but after extglob may have + been set by command execution (e.g., in a shell function) + + 8/5 + --- +[bump version to bash-5.2-rc3] + + 8/6 + --- +trap.c + - run_pending_traps: move code from evalstring() so we call + parse_and_execute() directly and handle any `return' invocations so + we can restore the value of running_trap. Otherwise, if we longjmp + past this function, we will think we're running a trap after we + finish. Prompted by post from Koichi Murase + + 8/9 + --- + +lib/readline/nls.c + - _rl_current_locale: private variable, stores the value of the + LC_CTYPE locale category, as determined by _rl_init_locale; set + to allocated memory in _rl_init_locale() + - _rl_set_localevars: new function, code from _rl_init_eightbit that + checks the current locale (passed as an argument) and sets the + various locale-aware variables based on it. It accepts a second + argument: FORCE. If non-zero, it means to restore the default "C" + locale values if the locale is "C" or "POSIX", now that this + function can be called multiple times + - _rl_init_eightbit: now just calls _rl_init_locale and + _rl_set_localevars + - _rl_reset_locale: new function, checks whether our the locale has + changed since we last called _rl_init_locale to set our internal + idea of its value. If it has changed, call _rl_set_localevars with + the new locale and a FORCE argument of 1 to change the + locale-dependent variables. + +lib/readline/rlprivate.h + - _rl_reset_locale: extern declaration + +lib/readline/readline.c + - rl_initialize: call _rl_reset_locale instead of _rl_init_locale so + the internal readline variables get set when we move from a non- + multibyte locale ("C") to a multibyte one ("en_US.UTF-8"). Report + from Alan Coopersmith + + 8/16 + ---- +lib/sh/setlinebuf.c + - sh_setlinebuf: allocate buffers for line-buffering stdout and stderr + only once, the first time it is requested. Only allocate memory if + we're using setvbuf (we usually are). Double the buffer size to 2016 + if we're using the bash malloc. Otherwise, let stdio handle it. + + 8/17 + ---- +builtins/exec.def + - exec_builtin: make sure to initialize orig_job_control in case the + command is not found by search_for_command. Report and fix from + Xiami + +[bash-5.2-rc3 frozen] + + 8/27 + ---- +parse.y + - parse_comsub: restore extended_glob to a local copy (local_extglob) + only if we changed it; a safer way to do it. Fixes extglob change + issue reported by Kerin Millar + - cond_term: restore extended_glob to a local copy; safer than using + global_extglob, which we will reserve for error recovery + + 8/30 + ---- +parse.y + - parse_comsub: don't clear the pushed string list; we might need it to + consume additional input to satisfy this command substitution. When + we restore the parser state, don't restore the pushed string list in + case we used it. From + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1018727 + - parse_comsub: don't modify extended_glob if parser_state includes + PST_EXTPAT, in which case we've already set extended_glob and + global_extglob appropriately. Only matters in compatibility mode. + + 8/31 + ---- +subst.c + - parameter_brace_transform: make sure we return an error if *xform + is '\0'. Report from Ivan Kapranov + + 9/7 + --- +[bump version to bash-5.2-rc4] + + 9/8 + --- +[bash-5.2-rc4 frozen] + + 9/20 + ---- +lib/readline/history.c + - replace_history_entry: check for a NULL timestamp before trying to + copy it. Report from nov.ondrej@gmail.com + + 9/23 + ---- +[bash-5.2 frozen] diff --git a/INSTALL b/INSTALL index 91f1dd9a7..2033143a1 100644 --- a/INSTALL +++ b/INSTALL @@ -20,20 +20,28 @@ The simplest way to compile Bash is: 3. Optionally, type 'make tests' to run the Bash test suite. 4. Type 'make install' to install 'bash' and 'bashbug'. This will - also install the manual pages and Info file. + also install the manual pages and Info file, message translation + files, some supplemental documentation, a number of example + loadable builtin commands, and a set of header files for developing + loadable builtins. You may need additional privileges to install + 'bash' to your desired destination, so 'sudo make install' might be + required. More information about controlling the locations where + 'bash' and other files are installed is below (*note Installation + Names::). The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a 'Makefile' in each directory of the package -(the top directory, the 'builtins', 'doc', and 'support' directories, -each directory under 'lib', and several others). It also creates a -'config.h' file containing system-dependent definitions. Finally, it -creates a shell script named 'config.status' that you can run in the -future to recreate the current configuration, a file 'config.cache' that -saves the results of its tests to speed up reconfiguring, and a file -'config.log' containing compiler output (useful mainly for debugging -'configure'). If at some point 'config.cache' contains results you -don't want to keep, you may remove or edit it. +(the top directory, the 'builtins', 'doc', 'po', and 'support' +directories, each directory under 'lib', and several others). It also +creates a 'config.h' file containing system-dependent definitions. +Finally, it creates a shell script named 'config.status' that you can +run in the future to recreate the current configuration, a file +'config.cache' that saves the results of its tests to speed up +reconfiguring, and a file 'config.log' containing compiler output +(useful mainly for debugging 'configure'). If at some point +'config.cache' contains results you don't want to keep, you may remove +or edit it. To find out more about the options and arguments that the 'configure' script understands, type @@ -64,7 +72,7 @@ considered for the next release. The file 'configure.ac' is used to create 'configure' by a program called Autoconf. You only need 'configure.ac' if you want to change it or regenerate 'configure' using a newer version of Autoconf. If you do -this, make sure you are using Autoconf version 2.50 or newer. +this, make sure you are using Autoconf version 2.69 or newer. You can remove the program binaries and object files from the source code directory by typing 'make clean'. To also remove the files that @@ -101,7 +109,7 @@ need to supply the '--srcdir=PATH' argument to tell 'configure' where the source files are. 'configure' automatically checks for the source code in the directory that 'configure' is in and in '..'. -If you have to use a 'make' that does not supports the 'VPATH' variable, +If you have to use a 'make' that does not support the 'VPATH' variable, you can compile Bash for one architecture at a time in the source code directory. After you have installed Bash for one architecture, use 'make distclean' before reconfiguring for another architecture. @@ -122,10 +130,13 @@ Installation Names ================== By default, 'make install' will install into '/usr/local/bin', -'/usr/local/man', etc. You can specify an installation prefix other -than '/usr/local' by giving 'configure' the option '--prefix=PATH', or -by specifying a value for the 'DESTDIR' 'make' variable when running -'make install'. +'/usr/local/man', etc.; that is, the "installation prefix" defaults to +'/usr/local'. You can specify an installation prefix other than +'/usr/local' by giving 'configure' the option '--prefix=PATH', or by +specifying a value for the 'prefix' 'make' variable when running 'make +install' (e.g., 'make install prefix=PATH'). The 'prefix' variable +provides a default for 'exec_prefix' and other variables used when +installing bash. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give 'configure' the @@ -133,11 +144,35 @@ option '--exec-prefix=PATH', 'make install' will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. +If you would like to change the installation locations for a single run, +you can specify these variables as arguments to 'make': 'make install +exec_prefix=/' will install 'bash' and 'bashbug' into '/bin' instead of +the default '/usr/local/bin'. + +If you want to see the files bash will install and where it will install +them without changing anything on your system, specify the variable +'DESTDIR' as an argument to 'make'. Its value should be the absolute +directory path you'd like to use as the root of your sample installation +tree. For example, + + mkdir /fs1/bash-install + make install DESTDIR=/fs1/bash-install + +will install 'bash' into '/fs1/bash-install/usr/local/bin/bash', the +documentation into directories within +'/fs1/bash-install/usr/local/share', the example loadable builtins into +'/fs1/bash-install/usr/local/lib/bash', and so on. You can use the +usual 'exec_prefix' and 'prefix' variables to alter the directory paths +beneath the value of 'DESTDIR'. + +The GNU Makefile standards provide a more complete description of these +variables and their effects. + Specifying the System Type ========================== There may be some features 'configure' can not figure out automatically, -but need to determine by the type of host Bash will run on. Usually +but needs to determine by the type of host Bash will run on. Usually 'configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the '--host=TYPE' option. 'TYPE' can either be a short name for the system type, such as 'sun4', or a @@ -235,16 +270,20 @@ the Bash 'configure' recognizes. subdirectories of that directory (include files in PREFIX/'include' and the library in PREFIX/'lib'). -'--with-purify' - Define this to use the Purify memory allocation checker from - Rational Software. +'--with-libintl-prefix[=PREFIX]' + Define this to make Bash link with a locally-installed version of + the libintl library instead of the version in 'lib/intl'. + +'--with-libiconv-prefix[=PREFIX]' + Define this to make Bash look for libiconv in PREFIX instead of the + standard system locations. There is no version included with Bash. '--enable-minimal-config' This produces a shell with minimal features, close to the historical Bourne shell. -There are several '--enable-' options that alter how Bash is compiled -and linked, rather than changing run-time features. +There are several '--enable-' options that alter how Bash is compiled, +linked, and installed, rather than changing run-time features. '--enable-largefile' Enable support for large files @@ -257,6 +296,10 @@ and linked, rather than changing run-time features. This builds a Bash binary that produces profiling information to be processed by 'gprof' each time it is executed. +'--enable-separate-helpfiles' + Use external files for the documentation displayed by the 'help' + builtin instead of storing the text internally. + '--enable-static-link' This causes Bash to be linked statically, if 'gcc' is being used. This could be used to build a version to use as root's shell. @@ -265,14 +308,21 @@ The 'minimal-config' option can be used to disable all of the following options, but it is processed first, so individual options may be enabled using 'enable-FEATURE'. -All of the following options except for 'disabled-builtins', -'direxpand-default', and 'xpg-echo-default' are enabled by default, -unless the operating system does not provide the necessary support. +All of the following options except for 'alt-array-implementation', +'disabled-builtins', 'direxpand-default', 'strict-posix-default', and +'xpg-echo-default' are enabled by default, unless the operating system +does not provide the necessary support. '--enable-alias' Allow alias expansion and include the 'alias' and 'unalias' builtins (*note Aliases::). +'--enable-alt-array-implementation' + This builds bash using an alternate implementation of arrays (*note + Arrays::) that provides faster access at the expense of using more + memory (sometimes many times more, depending on how sparse an array + is). + '--enable-arith-for-command' Include support for the alternate form of the 'for' command that behaves like the C language 'for' statement (*note Looping @@ -292,7 +342,7 @@ unless the operating system does not provide the necessary support. '--enable-casemod-attributes' Include support for case-modifying attributes in the 'declare' - builtin and assignment statements. Variables with the UPPERCASE + builtin and assignment statements. Variables with the 'uppercase' attribute, for example, will have their values converted to uppercase upon assignment. @@ -351,7 +401,7 @@ unless the operating system does not provide the necessary support. described above under *note Pattern Matching::. '--enable-extended-glob-default' - Set the default value of the EXTGLOB shell option described above + Set the default value of the 'extglob' shell option described above under *note The Shopt Builtin:: to be enabled. '--enable-function-import' @@ -360,10 +410,10 @@ unless the operating system does not provide the necessary support. enabled by default. '--enable-glob-asciirange-default' - Set the default value of the GLOBASCIIRANGES shell option described - above under *note The Shopt Builtin:: to be enabled. This controls - the behavior of character ranges when used in pattern matching - bracket expressions. + Set the default value of the 'globasciiranges' shell option + described above under *note The Shopt Builtin:: to be enabled. + This controls the behavior of character ranges when used in pattern + matching bracket expressions. '--enable-help-builtin' Include the 'help' builtin, which displays help on shell builtins @@ -414,10 +464,6 @@ unless the operating system does not provide the necessary support. Include the 'select' compound command, which allows the generation of simple menus (*note Conditional Constructs::). -'--enable-separate-helpfiles' - Use external files for the documentation displayed by the 'help' - builtin instead of storing the text internally. - '--enable-single-help-strings' Store the text displayed by the 'help' builtin as a single string for each help topic. This aids in translating the text to @@ -427,6 +473,10 @@ unless the operating system does not provide the necessary support. '--enable-strict-posix-default' Make Bash POSIX-conformant by default (*note Bash POSIX Mode::). +'--enable-translatable-strings' + Enable support for '$"STRING"' translatable strings (*note Locale + Translation::). + '--enable-usg-echo-default' A synonym for '--enable-xpg-echo-default'. diff --git a/MANIFEST b/MANIFEST index 54f327cf4..a45b3cfc2 100644 --- a/MANIFEST +++ b/MANIFEST @@ -22,6 +22,7 @@ examples/startup-files d examples/misc d examples/loadables d examples/loadables/perl d +examples/shellmath d include d lib d lib/glob d @@ -40,7 +41,7 @@ support d tests d tests/misc d ABOUT-NLS f -ChangeLog s CWRU/changelog +ChangeLog c CWRU/changelog CHANGES f COMPAT f COPYING f @@ -61,6 +62,7 @@ config-bot.h f config.h.in f aclocal.m4 f array.c f +array2.c f arrayfunc.c f assoc.c f eval.c f @@ -146,10 +148,11 @@ redir.h f bashtypes.h f mailcheck.h f xmalloc.h f -y.tab.c f -y.tab.h f -parser-built f pathnames.h.in f +# order is important here +y.tab.c F +y.tab.h F +parser-built F builtins/Makefile.in f builtins/alias.def f builtins/bind.def f @@ -203,11 +206,11 @@ builtins/umask.def f builtins/wait.def f builtins/psize.c f builtins/psize.sh f -builtins/inlib.def f +#builtins/inlib.def f builtins/bashgetopt.c f builtins/common.h f builtins/bashgetopt.h f -cross-build/cygwin32.cache f +#cross-build/cygwin32.cache f cross-build/x86-beos.cache f cross-build/opennt.cache f cross-build/qnx.cache f @@ -230,6 +233,7 @@ include/shtty.h f include/stat-time.h f include/stdc.h f include/systimes.h f +include/timer.h f include/typemax.h f include/unionwait.h f lib/glob/Makefile.in f @@ -366,6 +370,7 @@ lib/readline/posixdir.h f lib/readline/posixjmp.h f lib/readline/posixselect.h f lib/readline/posixstat.h f +lib/readline/posixtime.h f lib/readline/ansi_stdlib.h f lib/readline/rlstdc.h f lib/readline/rlprivate.h f @@ -449,6 +454,8 @@ lib/sh/strtoul.c f lib/sh/strtoull.c f lib/sh/strtoumax.c f lib/sh/strtrans.c f +lib/sh/strvis.c f +lib/sh/timers.c f lib/sh/times.c f lib/sh/timeval.c f lib/sh/tmpfile.c f @@ -477,6 +484,7 @@ lib/tilde/Makefile.in f lib/tilde/tilde.c f lib/tilde/tilde.h f lib/tilde/shell.c f +m4/strtoimax.m4 f m4/stat-time.m4 f m4/timespec.m4 f m4/codeset.m4 f @@ -631,7 +639,6 @@ doc/bashref.info f doc/bash.info f doc/article.ms f doc/htmlpost.sh f 755 -doc/infopost.sh f 755 doc/fdl.texi f doc/fdl.txt f # @@ -710,6 +717,7 @@ examples/loadables/template.c f examples/loadables/loadables.h f examples/loadables/Makefile.in f examples/loadables/Makefile.inc.in f +examples/loadables/Makefile.sample.in f examples/loadables/necho.c f examples/loadables/hello.c f examples/loadables/asort.c f @@ -721,12 +729,13 @@ examples/loadables/setpgid.c f examples/loadables/sleep.c f examples/loadables/strftime.c f examples/loadables/truefalse.c f -#examples/loadables/getconf.h f -#examples/loadables/getconf.c f +examples/loadables/getconf.h f +examples/loadables/getconf.c f examples/loadables/fdflags.c f examples/loadables/finfo.c f examples/loadables/cat.c f examples/loadables/csv.c f +examples/loadables/dsv.c f examples/loadables/cut.c f examples/loadables/logname.c f examples/loadables/basename.c f @@ -819,6 +828,7 @@ examples/functions/which f #examples/scripts/adventure.sh f #examples/scripts/bash-hexdump.sh f #examples/scripts/bcsh.sh f +examples/scripts/bcalc f examples/scripts/cat.sh f examples/scripts/center f #examples/scripts/dd-ex.sh f @@ -862,6 +872,16 @@ examples/startup-files/bashrc f examples/misc/aliasconv.sh f examples/misc/aliasconv.bash f examples/misc/cshtobash f +examples/shellmath/LICENSE f +examples/shellmath/README.md f +examples/shellmath/assert.sh f +examples/shellmath/faster_e_demo.sh f +examples/shellmath/image.png f +examples/shellmath/runTests.sh f +examples/shellmath/shellmath.sh f +examples/shellmath/slower_e_demo.sh f +examples/shellmath/testCases.in f +examples/shellmath/timingData.txt f tests/README f tests/COPYRIGHT f tests/test-glue-functions f @@ -871,6 +891,7 @@ tests/alias2.sub f tests/alias3.sub f tests/alias4.sub f tests/alias5.sub f +tests/alias6.sub f tests/alias.right f tests/appendop.tests f tests/appendop1.sub f @@ -918,6 +939,8 @@ tests/array25.sub f tests/array26.sub f tests/array27.sub f tests/array28.sub f +tests/array29.sub f +tests/array30.sub f tests/array-at-star f tests/array2.right f tests/assoc.tests f @@ -933,6 +956,13 @@ tests/assoc8.sub f tests/assoc9.sub f tests/assoc10.sub f tests/assoc11.sub f +tests/assoc12.sub f +tests/assoc13.sub f +tests/assoc14.sub f +tests/assoc15.sub f +tests/assoc16.sub f +tests/assoc17.sub f +tests/assoc18.sub f tests/attr.tests f tests/attr.right f tests/attr1.sub f @@ -971,6 +1001,8 @@ tests/comsub1.sub f tests/comsub2.sub f tests/comsub3.sub f tests/comsub4.sub f +tests/comsub5.sub f +tests/comsub6.sub f tests/comsub-eof.tests f tests/comsub-eof0.sub f tests/comsub-eof1.sub f @@ -985,6 +1017,8 @@ tests/comsub-posix.right f tests/comsub-posix1.sub f tests/comsub-posix2.sub f tests/comsub-posix3.sub f +tests/comsub-posix5.sub f +tests/comsub-posix6.sub f tests/cond.tests f tests/cond.right f tests/cond-regexp1.sub f @@ -1010,6 +1044,8 @@ tests/dollar-at-star6.sub f tests/dollar-at-star7.sub f tests/dollar-at-star8.sub f tests/dollar-at-star9.sub f +tests/dollar-at-star10.sub f +tests/dollar-at-star11.sub f tests/dollar-at1.sub f tests/dollar-at2.sub f tests/dollar-at3.sub f @@ -1044,6 +1080,7 @@ tests/errors5.sub f tests/errors6.sub f tests/errors7.sub f tests/errors8.sub f +tests/errors9.sub f tests/execscript f tests/exec.right f tests/exec1.sub f 755 @@ -1074,6 +1111,7 @@ tests/exp9.sub f tests/exp10.sub f tests/exp11.sub f tests/exp12.sub f +tests/exp13.sub f tests/exportfunc.tests f tests/exportfunc.right f tests/exportfunc1.sub f @@ -1091,6 +1129,8 @@ tests/extglob3.tests f tests/extglob3.right f tests/extglob4.sub f tests/extglob5.sub f +tests/extglob6.sub f +tests/extglob7.sub f tests/func.tests f tests/func.right f tests/func1.sub f @@ -1119,6 +1159,7 @@ tests/glob6.sub f tests/glob7.sub f tests/glob8.sub f tests/glob9.sub f +tests/glob10.sub f tests/glob.right f tests/globstar.tests f tests/globstar.right f @@ -1132,6 +1173,8 @@ tests/heredoc2.sub f tests/heredoc3.sub f tests/heredoc4.sub f tests/heredoc5.sub f +tests/heredoc6.sub f +tests/heredoc7.sub f tests/herestr.tests f tests/herestr.right f tests/herestr1.sub f @@ -1152,6 +1195,7 @@ tests/history2.sub f tests/history3.sub f tests/history4.sub f tests/history5.sub f +tests/history6.sub f tests/ifs.tests f tests/ifs.right f tests/ifs1.sub f @@ -1183,6 +1227,7 @@ tests/lastpipe.right f tests/lastpipe.tests f tests/lastpipe1.sub f tests/lastpipe2.sub f +tests/lastpipe3.sub f tests/mapfile.data f tests/mapfile.right f tests/mapfile.tests f @@ -1212,6 +1257,8 @@ tests/nameref18.sub f tests/nameref19.sub f tests/nameref20.sub f tests/nameref21.sub f +tests/nameref22.sub f +tests/nameref23.sub f tests/nameref.right f tests/new-exp.tests f tests/new-exp1.sub f @@ -1229,12 +1276,15 @@ tests/new-exp12.sub f tests/new-exp13.sub f tests/new-exp14.sub f tests/new-exp15.sub f +tests/new-exp16.sub f tests/new-exp.right f tests/nquote.tests f tests/nquote.right f tests/nquote1.sub f tests/nquote2.sub f tests/nquote3.sub f +tests/nquote4.sub f +tests/nquote5.sub f tests/nquote1.tests f tests/nquote1.right f tests/nquote2.tests f @@ -1285,6 +1335,13 @@ tests/quote1.sub f tests/quote2.sub f tests/quote3.sub f tests/quote4.sub f +tests/quotearray.right f +tests/quotearray.tests f +tests/quotearray1.sub f +tests/quotearray2.sub f +tests/quotearray3.sub f +tests/quotearray4.sub f +tests/quotearray5.sub f tests/read.tests f tests/read.right f tests/read1.sub f @@ -1293,6 +1350,8 @@ tests/read3.sub f tests/read4.sub f tests/read5.sub f tests/read6.sub f +tests/read7.sub f +tests/read8.sub f tests/redir.tests f tests/redir.right f tests/redir1.sub f @@ -1385,6 +1444,7 @@ tests/run-precedence f tests/run-printf f tests/run-procsub f tests/run-quote f +tests/run-quotearray f tests/run-read f tests/run-redir f tests/run-rhs-exp f @@ -1421,6 +1481,7 @@ tests/tilde.tests f tests/tilde.right f tests/tilde2.tests f tests/tilde2.right f +tests/tilde3.sub f tests/trap.tests f tests/trap.right f tests/trap1.sub f 755 @@ -1463,6 +1524,7 @@ tests/varenv18.sub f tests/varenv19.sub f tests/varenv20.sub f tests/varenv21.sub f +tests/varenv22.sub f tests/version f tests/version.mini f tests/vredir.tests f @@ -1474,6 +1536,7 @@ tests/vredir4.sub f tests/vredir5.sub f tests/vredir6.sub f tests/vredir7.sub f +tests/vredir8.sub f tests/misc/dev-tcp.tests f tests/misc/perf-script f tests/misc/perftest f diff --git a/Makefile.in b/Makefile.in index 3e3a5d483..0b4df73a7 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,6 +1,6 @@ -# Makefile for bash-5.0, version 4.30 +# Makefile for bash-5.2, version 5.1 # -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -87,6 +87,11 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALLMODE= -m 0755 INSTALLMODE2 = -m 0555 +CTAGS = ctags +CTAGSFLAGS = -x +ETAGS = etags +ETAGSFLAGS = + TESTSCRIPT = @TESTSCRIPT@ DEBUGGER_START_FILE = @DEBUGGER_START_FILE@ @@ -132,6 +137,7 @@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ @CROSS_COMPILE@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} ${MALLOC_DEBUG} +STYLE_CFLAGS = @STYLE_CFLAGS@ DEFS = @DEFS@ LOCAL_DEFS = @LOCAL_DEFS@ @@ -147,7 +153,7 @@ LOCAL_LDFLAGS = @LOCAL_LDFLAGS@ SYSTEM_FLAGS = -DPROGRAM='"$(Program)"' -DCONF_HOSTTYPE='"$(Machine)"' -DCONF_OSTYPE='"$(OS)"' -DCONF_MACHTYPE='"$(MACHTYPE)"' -DCONF_VENDOR='"$(VENDOR)"' $(LOCALE_DEFS) BASE_CCFLAGS = $(SYSTEM_FLAGS) $(LOCAL_DEFS) \ - $(DEFS) $(LOCAL_CFLAGS) $(INCLUDES) + $(DEFS) $(LOCAL_CFLAGS) $(INCLUDES) $(STYLE_CFLAGS) CCFLAGS = $(ADDON_CFLAGS) $(BASE_CCFLAGS) ${PROFILE_FLAGS} $(CPPFLAGS) $(CFLAGS) @@ -170,7 +176,8 @@ GCC_LINT_FLAGS = -O -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wno-parentheses -Wcast-align -Wstrict-prototypes -Wconversion -Wformat \ -Wformat-nonliteral -Wmissing-braces -Wuninitialized \ -Wmissing-declarations -Winline \ - -Wmissing-prototypes -Wtraditional -Wredundant-decls -pedantic + -Wmissing-prototypes -Wtraditional -Wredundant-decls \ + -Wformat-security -pedantic GCC_LINT_CFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(GCC_LINT_FLAGS) @@ -232,7 +239,8 @@ SHLIB_SOURCE = ${SH_LIBSRC}/clktck.c ${SH_LIBSRC}/getcwd.c \ ${SH_LIBSRC}/fnxform.c ${SH_LIBSRC}/unicode.c \ ${SH_LIBSRC}/wcswidth.c ${SH_LIBSRC}/wcsnwidth.c \ ${SH_LIBSRC}/shmbchar.c ${SH_LIBSRC}/utf8.c \ - ${SH_LIBSRC}/random.c ${SH_LIBSRC}/gettimeofday.c + ${SH_LIBSRC}/random.c ${SH_LIBSRC}/gettimeofday.c \ + ${SH_LIBSRC}/timers.c ${SH_LIBSRC}/strvis.c SHLIB_LIB = -lsh SHLIB_LIBNAME = libsh.a @@ -420,11 +428,12 @@ BASHINCFILES = $(BASHINCDIR)/posixstat.h $(BASHINCDIR)/ansi_stdlib.h \ $(BASHINCDIR)/shtty.h $(BASHINCDIR)/typemax.h \ $(BASHINCDIR)/ocache.h -LIBRARIES = $(GLOB_LIB) $(SHLIB_LIB) $(READLINE_LIB) $(HISTORY_LIB) $(TERMCAP_LIB) \ - $(TILDE_LIB) $(MALLOC_LIB) $(INTL_LIB) $(LIBICONV) $(LOCAL_LIBS) +LIBRARIES = $(GLOB_LIB) $(SHLIB_LIB) $(READLINE_LIB) $(HISTORY_LIB) \ + $(TERMCAP_LIB) $(TILDE_LIB) $(MALLOC_LIB) $(INTL_LIB) $(LIBICONV) \ + $(LOCAL_LIBS) -LIBDEP = $(GLOB_DEP) $(SHLIB_DEP) $(INTL_DEP) $(READLINE_DEP) $(HISTORY_DEP) $(TERMCAP_DEP) \ - $(TILDE_DEP) $(MALLOC_DEP) +LIBDEP = $(GLOB_DEP) $(SHLIB_DEP) $(INTL_DEP) $(READLINE_DEP) $(HISTORY_DEP) \ + $(TERMCAP_DEP) $(TILDE_DEP) $(MALLOC_DEP) LIBRARY_LDFLAGS = $(READLINE_LDFLAGS) $(HISTORY_LDFLAGS) $(GLOB_LDFLAGS) \ $(TILDE_LDFLAGS) $(MALLOC_LDFLAGS) $(SHLIB_LDFLAGS) @@ -460,7 +469,8 @@ INSTALLED_HEADERS = shell.h bashjmp.h command.h syntax.h general.h error.h \ make_cmd.h subst.h sig.h externs.h builtins.h \ bashtypes.h xmalloc.h config-top.h config-bot.h \ bashintl.h bashansi.h bashjmp.h alias.h hashlib.h \ - conftypes.h unwind_prot.h jobs.h siglist.h + conftypes.h unwind_prot.h jobs.h siglist.h \ + execute_cmd.h INSTALLED_BUILTINS_HEADERS = bashgetopt.h common.h getopt.h INSTALLED_INCFILES = posixstat.h ansi_stdlib.h filecntl.h posixdir.h \ memalloc.h stdc.h posixjmp.h posixwait.h posixtime.h systimes.h \ @@ -475,12 +485,14 @@ JOBS_O = @JOBS_O@ SIGLIST_O = @SIGLIST_O@ SIGNAMES_O = @SIGNAMES_O@ +ARRAY_O = @ARRAY_O@ + # Matching object files. OBJECTS = shell.o eval.o y.tab.o general.o make_cmd.o print_cmd.o $(GLOBO) \ dispose_cmd.o execute_cmd.o variables.o copy_cmd.o error.o \ expr.o flags.o $(JOBS_O) subst.o hashcmd.o hashlib.o mailcheck.o \ trap.o input.o unwind_prot.o pathexp.o sig.o test.o version.o \ - alias.o array.o arrayfunc.o assoc.o braces.o bracecomp.o bashhist.o \ + alias.o $(ARRAY_O) arrayfunc.o assoc.o braces.o bracecomp.o bashhist.o \ bashline.o $(SIGLIST_O) list.o stringlib.o locale.o findcmd.o redir.o \ pcomplete.o pcomplib.o syntax.o xmalloc.o $(SIGNAMES_O) @@ -560,7 +572,7 @@ CREATED_MAKEFILES = Makefile builtins/Makefile doc/Makefile \ lib/readline/Makefile lib/glob/Makefile \ lib/sh/Makefile lib/tilde/Makefile lib/malloc/Makefile \ lib/termcap/Makefile examples/loadables/Makefile \ - examples/loadables/Makefile.inc \ + examples/loadables/Makefile.inc examples/loadables/Makefile.sample \ examples/loadables/perl/Makefile support/Makefile \ lib/intl/Makefile po/Makefile po/Makefile.in CREATED_HEADERS = signames.h config.h pathnames.h version.h y.tab.h \ @@ -578,13 +590,13 @@ LOADABLES_DIR = ${top_builddir}/examples/loadables .made: $(Program) bashbug $(SDIR)/man2html$(EXEEXT) @echo "$(Program) last made for a $(Machine) running $(OS)" >.made -$(Program): .build $(OBJECTS) $(BUILTINS_DEP) $(LIBDEP) +$(Program): $(OBJECTS) $(BUILTINS_DEP) $(LIBDEP) .build $(RM) $@ $(PURIFY) $(CC) $(BUILTINS_LDFLAGS) $(LIBRARY_LDFLAGS) $(LDFLAGS) -o $(Program) $(OBJECTS) $(LIBS) ls -l $(Program) -$(SIZE) $(Program) -.build: $(SOURCES) config.h Makefile version.h $(VERSPROG) +.build: $(SOURCES) config.h Makefile $(DEFDIR)/builtext.h version.h $(VERSPROG) @echo @echo " ***********************************************************" @echo " * *" @@ -604,16 +616,18 @@ strip: $(Program) .made -$(SIZE) $(Program) lint: - ${MAKE} ${MFLAGS} CFLAGS='${GCC_LINT_FLAGS}' .made + ${MAKE} ${MFLAGS} ADDON_CFLAGS='${GCC_LINT_FLAGS}' .made asan: ${MAKE} ${MFLAGS} ADDON_CFLAGS='${ASAN_XCFLAGS}' ADDON_LDFLAGS='${ASAN_XLDFLAGS}' .made +valgrind: + ${MAKE} ${MFLAGS} ADDON_CFLAGS='-DDISABLE_MALLOC_WRAPPERS' ADDON_LDFLAGS= .made + # cheating gcov: ${MAKE} ${MFLAGS} CFLAGS=-g ADDON_CFLAGS='${GCOV_XCFLAGS}' ADDON_LDFLAGS='${GCOV_XLDFLAGS}' .made - # have to make this separate because making tests depend on $(PROGRAM) asan-tests: asan $(TESTS_SUPPORT) @-test -d tests || mkdir tests @@ -649,6 +663,7 @@ ${GRAM_H}: y.tab.h y.tab.c: parse.y # -if test -f y.tab.h; then mv -f y.tab.h old-y.tab.h; fi $(YACC) -d $(srcdir)/parse.y + $(RM) parser-built touch parser-built # -if cmp -s old-y.tab.h y.tab.h; then mv old-y.tab.h y.tab.h; else cp -p y.tab.h ${GRAM_H}; fi @@ -733,7 +748,7 @@ syntax.c: mksyntax${EXEEXT} $(srcdir)/syntax.h $(RM) $@ ./mksyntax$(EXEEXT) -o $@ -$(BUILTINS_LIBRARY): $(BUILTIN_DEFS) $(BUILTIN_C_SRC) config.h ${BASHINCDIR}/memalloc.h $(DEFDIR)/builtext.h version.h +$(BUILTINS_LIBRARY): $(DEFDIR)/builtext.h $(BUILTIN_DEFS) $(BUILTIN_C_SRC) config.h ${BASHINCDIR}/memalloc.h version.h @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} targets ) || exit 1 # these require special rules to circumvent make builtin rules @@ -746,7 +761,7 @@ ${DEFDIR}/bashgetopt.o: $(BUILTIN_SRCDIR)/bashgetopt.c ${DEFDIR}/builtext.h: $(BUILTIN_DEFS) @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) builtext.h ) || exit 1 -${DEFDIR}/pipesize.h: +${DEFDIR}/pipesize.h: ${BUILTINS_LIBRARY} @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) pipesize.h ) || exit 1 $(SDIR)/man2html$(EXEEXT): ${SUPPORT_SRC}/man2html.c @@ -807,10 +822,10 @@ force: # unused TAGS: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) - etags $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) + ( cd $(topdir) && $(ETAGS) $(ETAGSFLAGS) $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) ) tags: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) - ctags -x $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) > $@ + ( cd $(topdir) && $(CTAGS) $(CTAGSFLAGS) $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) > $@ ) # Targets that actually do things not part of the build @@ -986,6 +1001,7 @@ hashtest: hashlib.c # Files that depend on the definitions in config-top.h, which are not meant # to be changed array.o: $(srcdir)/config-top.h +array2.o: $(srcdir)/config-top.h bashhist.o: $(srcdir)/config-top.h shell.o: $(srcdir)/config-top.h input.o: $(srcdir)/config-top.h @@ -1204,7 +1220,7 @@ trap.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h arra trap.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h parser.h trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h trap.o: signames.h $(DEFSRC)/common.h -trap.o: ${DEFDIR}/builtext.h jobs.h +trap.o: ${DEFDIR}/builtext.h builtins.h jobs.h unwind_prot.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h unwind_prot.o: general.h xmalloc.h unwind_prot.h quit.h sig.h unwind_prot.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h error.h @@ -1249,6 +1265,13 @@ array.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h array.o: make_cmd.h subst.h sig.h pathnames.h externs.h array.o: $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h array.o: $(DEFSRC)/common.h +array2.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +array2.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +array2.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h +array2.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +array2.o: make_cmd.h subst.h sig.h pathnames.h externs.h +array2.o: $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h +array2.o: $(DEFSRC)/common.h arrayfunc.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h arrayfunc.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h arrayfunc.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h @@ -1281,18 +1304,24 @@ alias.o: ${BASHINCDIR}/chartypes.h pcomplib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashtypes.h pcomplib.o: ${BASHINCDIR}/stdc.h hashlib.h pcomplete.h shell.h syntax.h -pcomplib.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h arrayfunc.h conftypes.h quit.h +pcomplib.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h +pcomplib.o: arrayfunc.h conftypes.h quit.h pcomplib.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h pcomplib.o: externs.h ${BASHINCDIR}/maxpath.h assoc.h array.h pcomplib.o: ${BASHINCDIR}/posixjmp.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h pcomplete.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashtypes.h pcomplete.o: ${BASHINCDIR}/stdc.h hashlib.h pcomplete.h shell.h syntax.h -pcomplete.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h arrayfunc.h conftypes.h quit.h +pcomplete.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h +pcomplete.o: execute_cmd.h pathexp.h arrayfunc.h conftypes.h quit.h trap.h +pcomplete.o: jobs.h siglist.h bashline.h alias.h +pcomplete.o: ${BASHINCDIR}/posixwait.h ${BASHINCDIR}/unionwait.h +pcomplete.o: ${BASHINCDIR}/posixtime.h ${BASHINCDIR}/posixstat.h pcomplete.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h pcomplete.o: externs.h ${BASHINCDIR}/maxpath.h execute_cmd.h pcomplete.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h -pcomplete.o: ${DEFDIR}/builtext.h +pcomplete.o: builtins.h ${DEFDIR}/builtext.h ${DEFSRC}/common.h +pcomplete.o: ${GLOB_LIBSRC}/glob.h ${GLOB_LIBSRC}/strmatch.h # library support files @@ -1350,6 +1379,10 @@ variables.o: $(RL_LIBSRC)/rltypedefs.h jobs.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h jobs.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h jobs.o: $(RL_LIBSRC)/rltypedefs.h +pcomplete.o: $(RL_LIBSRC)/rlconf.h +pcomplete.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/rlstdc.h +pcomplete.o: $(RL_LIBSRC)/chardefs.h $(RL_LIBSRC)/readline.h +pcomplete.o: $(RL_LIBSRC)/rltypedefs.h ${RL_LIBSRC}/rlmbutil.h shell.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h variables.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h @@ -1357,12 +1390,14 @@ subst.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h bashline.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h bashhist.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h y.tab.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h +pcomplete.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h bashline.o: $(TILDE_LIBSRC)/tilde.h bracecomp.o: $(TILDE_LIBSRC)/tilde.h execute_cmd.o: $(TILDE_LIBSRC)/tilde.h general.o: $(TILDE_LIBSRC)/tilde.h mailcheck.o: $(TILDE_LIBSRC)/tilde.h +pcomplete.o: $(TILDE_LIBSRC)/tilde.h shell.o: $(TILDE_LIBSRC)/tilde.h subst.o: $(TILDE_LIBSRC)/tilde.h variables.o: $(TILDE_LIBSRC)/tilde.h @@ -1435,7 +1470,7 @@ builtins/evalstring.o: ${BASHINCDIR}/memalloc.h variables.h arrayfunc.h conftype builtins/evalstring.o: quit.h unwind_prot.h ${BASHINCDIR}/maxpath.h jobs.h builtins.h builtins/evalstring.o: dispose_cmd.h make_cmd.h subst.h externs.h builtins/evalstring.o: jobs.h builtins.h flags.h input.h execute_cmd.h -builtins/evalstring.o: bashhist.h $(DEFSRC)/common.h pathnames.h +builtins/evalstring.o: bashhist.h $(DEFSRC)/common.h pathnames.h redir.h builtins/evalstring.o: ${DEFDIR}/builtext.h builtins/getopt.o: config.h ${BASHINCDIR}/memalloc.h builtins/getopt.o: shell.h syntax.h bashjmp.h command.h general.h xmalloc.h error.h @@ -1486,6 +1521,7 @@ builtins/declare.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general. builtins/declare.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/declare.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/declare.o: $(DEFSRC)/bashgetopt.h pathnames.h flags.h +builtins/declare.o: ${DEFDIR}/builtext.h builtins/echo.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/echo.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/echo.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h @@ -1510,6 +1546,7 @@ builtins/exit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h x builtins/exit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/exit.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/exit.o: pathnames.h execute_cmd.h +builtins/exit.o: ${DEFDIR}/builtext.h builtins/fc.o: bashtypes.h ${BASHINCDIR}/posixstat.h builtins/fc.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins.h command.h ${BASHINCDIR}/stdc.h builtins/fc.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h @@ -1568,6 +1605,7 @@ builtins/pushd.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h builtins/pushd.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/pushd.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/pushd.o: $(DEFSRC)/common.h pathnames.h +builtins/pushd.o: ${DEFDIR}/builtext.h builtins/read.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/read.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/read.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h diff --git a/NEWS b/NEWS index a6170be85..62d22127f 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,174 @@ +This is a terse description of the new features added to bash-5.2 since +the release of bash-5.1. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. The bash malloc returns memory that is aligned on 16-byte boundaries. + +b. There is a new internal timer framework used for read builtin timeouts. + +c. Rewrote the command substitution parsing code to call the parser recursively + and rebuild the command string from the parsed command. This allows better + syntax checking and catches errors much earlier. Along with this, if + command substitution parsing completes with here-documents remaining to be + read, the shell prints a warning message and reads the here-document bodies + from the current input stream. + +d. The `ulimit' builtin now treats an operand remaining after all of the options + and arguments are parsed as an argument to the last command specified by + an option. This is for POSIX compatibility. + +e. Here-document parsing now handles $'...' and $"..." quoting when reading the + here-document body. + +f. The `shell-expand-line' and `history-and-alias-expand-line' bindable readline + commands now understand $'...' and $"..." quoting. + +g. There is a new `spell-correct-word' bindable readline command to perform + spelling correction on the current word. + +h. The `unset' builtin now attempts to treat arguments as array subscripts + without parsing or expanding the subscript, even when `assoc_expand_once' + is not set. + +i. There is a default value for $BASH_LOADABLES_PATH in config-top.h. + +j. Associative array assignment and certain instances of referencing (e.g., + `test -v' now allow `@' and `*' to be used as keys. + +k. Bash attempts to expand indexed array subscripts only once when executing + shell constructs and word expansions. + +l. The `unset' builtin allows a subscript of `@' or `*' to unset a key with + that value for associative arrays instead of unsetting the entire array + (which you can still do with `unset arrayname'). For indexed arrays, it + removes all elements of the array without unsetting it (like `A=()'). + +m. Additional builtins (printf/test/read/wait) do a better job of not + parsing array subscripts if array_expand_once is set. + +n. New READLINE_ARGUMENT variable set to numeric argument for readline commands + defined using `bind -x'. + +o. The new `varredir_close' shell option causes bash to automatically close + file descriptors opened with {var}&WORD- redirection has WORD expand to the empty + string, treat the redirection as [N]<&- or [N]>&- and close file descriptor + N (default 0). + +w. Invalid parameter transformation operators are now invalid word expansions, + and so cause fatal errors in non-interactive shells. + +x. New shell option: patsub_replacement. When enabled, a `&' in the replacement + string of the pattern substitution expansion is replaced by the portion of + the string that matched the pattern. Backslash will escape the `&' and + insert a literal `&'. + +y. `command -p' no longer looks in the hash table for the specified command. + +z. The new `--enable-translatable-strings' option to `configure' allows $"..." + support to be compiled in or out. + +aa. The new `globskipdots' shell option forces pathname expansion never to + return `.' or `..' unless explicitly matched. It is enabled by default. + +bb. Array references using `@' and `*' that are the value of nameref variables + (declare -n ref='v[@]' ; echo $ref) no longer cause the shell to exit if + set -u is enabled and the array (v) is unset. + +cc. There is a new bindable readline command name: + `vi-edit-and-execute-command'. + +dd. In posix mode, the `printf' builtin checks for the `L' length modifier and + uses long double for floating point conversion specifiers if it's present, + double otherwise. + +ee. The `globbing' completion code now takes the `globstar' option into account. + +ff. `suspend -f' now forces the shell to suspend even if job control is not + currently enabled. + +gg. Since there is no `declare -' equivalent of `local -', make sure to use + `local -' in the output of `local -p'. + +2. New Features in Readline + +a. There is now an HS_HISTORY_VERSION containing the version number of the + history library for applications to use. + +b. History expansion better understands multiple history expansions that may + contain strings that would ordinarily inhibit history expansion (e.g., + `abc!$!$'). + +c. There is a new framework for readline timeouts, including new public + functions to set timeouts and query how much time is remaining before a + timeout hits, and a hook function that can trigger when readline times + out. There is a new state value to indicate a timeout. + +d. Automatically bind termcap key sequences for page-up and page-down to + history-search-backward and history-search-forward, respectively. + +e. There is a new `fetch-history' bindable command that retrieves the history + entry corresponding to its numeric argument. Negative arguments count back + from the end of the history. + +f. `vi-undo' is now a bindable command. + +g. There is a new option: `enable-active-region'. This separates control of + the active region and bracketed-paste. It has the same default value as + bracketed-paste, and enabling bracketed paste enables the active region. + Users can now turn off the active region while leaving bracketed paste + enabled. + +h. rl_completer_word_break_characters is now `const char *' like + rl_basic_word_break_characters. + +i. Readline looks in $LS_COLORS for a custom filename extension + (*.readline-colored-completion-prefix) and uses that as the default color + for the common prefix displayed when `colored-completion-prefix' is set. + +j. Two new bindable string variables: active-region-start-color and + active-region-end-color. The first sets the color used to display the + active region; the second turns it off. If set, these are used in place + of terminal standout mode. + +k. New readline state (RL_STATE_EOF) and application-visible variable + (rl_eof_found) to allow applications to detect when readline reads EOF + before calling the deprep-terminal hook. + +l. There is a new configuration option: --with-shared-termcap-library, which + forces linking the shared readline library with the shared termcap (or + curses/ncurses/termlib) library so applications don't have to do it. + +m. Readline now checks for changes to locale settings (LC_ALL/LC_CTYPE/LANG) + each time it is called, and modifies the appropriate locale-specific display + and key binding variables when the locale changes. + +------------------------------------------------------------------------------- This is a terse description of the new features added to bash-5.1 since the release of bash-5.0. As always, the manual page (doc/bash.1) is the place to look for complete descriptions. @@ -916,7 +1087,7 @@ l. There is a new configuration option (in config-top.h) that forces bash to 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 +n. There is a new configure 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 @@ -963,7 +1134,7 @@ d. New bindable function: skip-csi-sequence. Can be used as a default to 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 + to rewrite 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 diff --git a/POSIX b/POSIX index 24114af14..4e78dbb75 100644 --- a/POSIX +++ b/POSIX @@ -33,203 +33,219 @@ The following list is what's changed when 'POSIX mode' is in effect: 7. Reserved words appearing in a context where reserved words are recognized do not undergo alias expansion. - 8. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number + 8. Alias expansion is performed when initially parsing a command + substitution. The default mode generally defers it, when enabled, + until the command substitution is executed. This means that + command substitution will not expand aliases that are defined after + the command substitution is initially parsed (e.g., as part of a + function definition). + + 9. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number and '!!' to '!' are enabled, and parameter expansion is performed on the values of 'PS1' and 'PS2' regardless of the setting of the 'promptvars' option. - 9. The POSIX startup files are executed ('$ENV') rather than the + 10. The POSIX startup files are executed ('$ENV') rather than the normal Bash files. - 10. Tilde expansion is only performed on assignments preceding a + 11. Tilde expansion is only performed on assignments preceding a command name, rather than on all assignment statements on the line. - 11. The default history file is '~/.sh_history' (this is the default + 12. The default history file is '~/.sh_history' (this is the default value of '$HISTFILE'). - 12. Redirection operators do not perform filename expansion on the + 13. Redirection operators do not perform filename expansion on the word in the redirection unless the shell is interactive. - 13. Redirection operators do not perform word splitting on the word in + 14. Redirection operators do not perform word splitting on the word in the redirection. - 14. Function names must be valid shell 'name's. That is, they may not + 15. Function names must be valid shell 'name's. That is, they may not contain characters other than letters, digits, and underscores, and may not start with a digit. Declaring a function with an invalid name causes a fatal syntax error in non-interactive shells. - 15. Function names may not be the same as one of the POSIX special + 16. Function names may not be the same as one of the POSIX special builtins. - 16. POSIX special builtins are found before shell functions during + 17. POSIX special builtins are found before shell functions during command lookup. - 17. When printing shell function definitions (e.g., by 'type'), Bash + 18. When printing shell function definitions (e.g., by 'type'), Bash does not print the 'function' keyword. - 18. Literal tildes that appear as the first character in elements of + 19. Literal tildes that appear as the first character in elements of the 'PATH' variable are not expanded as described above under *note Tilde Expansion::. - 19. The 'time' reserved word may be used by itself as a command. When + 20. The 'time' reserved word may be used by itself as a command. When used in this way, it displays timing statistics for the shell and its completed children. The 'TIMEFORMAT' variable controls the format of the timing information. - 20. When parsing and expanding a ${...} expansion that appears within + 21. When parsing and expanding a ${...} expansion that appears within double quotes, single quotes are no longer special and cannot be used to quote a closing brace or other special character, unless the operator is one of those defined to perform pattern removal. In this case, they do not have to appear as matched pairs. - 21. The parser does not recognize 'time' as a reserved word if the + 22. The parser does not recognize 'time' as a reserved word if the next token begins with a '-'. - 22. The '!' character does not introduce history expansion within a + 23. The '!' character does not introduce history expansion within a double-quoted string, even if the 'histexpand' option is enabled. - 23. If a POSIX special builtin returns an error status, a + 24. If a POSIX special builtin returns an error status, a non-interactive shell exits. The fatal errors are those listed in the POSIX standard, and include things like passing incorrect options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. - 24. A non-interactive shell exits with an error status if a variable + 25. 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. - 25. A non-interactive shell exits with an error status if a variable + 26. A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a - special builtin, but not with any other simple command. + special builtin, but not with any other simple command. For any + other simple command, the shell aborts execution of that command, + and execution continues at the top level ("the shell shall not + perform any further processing of the command in which the error + occurred"). - 26. A non-interactive shell exits with an error status if the + 27. 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. - 27. Non-interactive shells exit if FILENAME in '.' FILENAME is not + 28. Non-interactive shells exit if FILENAME in '.' FILENAME is not found. - 28. Non-interactive shells exit if a syntax error in an arithmetic + 29. Non-interactive shells exit if a syntax error in an arithmetic expansion results in an invalid expression. - 29. Non-interactive shells exit if a parameter expansion error occurs. + 30. Non-interactive shells exit if a parameter expansion error occurs. - 30. Non-interactive shells exit if there is a syntax error in a script + 31. Non-interactive shells exit if there is a syntax error in a script read with the '.' or 'source' builtins, or in a string processed by the 'eval' builtin. - 31. While variable indirection is available, it may not be applied to + 32. While variable indirection is available, it may not be applied to the '#' and '?' special parameters. - 32. When expanding the '*' special parameter in a pattern context - where the expansion is double-quoted does not treat the '$*' as if - it were double-quoted. + 33. Expanding the '*' special parameter in a pattern context where the + expansion is double-quoted does not treat the '$*' as if it were + double-quoted. - 33. Assignment statements preceding POSIX special builtins persist in + 34. Assignment statements preceding POSIX special builtins persist in the shell environment after the builtin completes. - 34. The 'command' builtin does not prevent builtins that take + 35. The 'command' builtin does not prevent builtins that take assignment statements as arguments from expanding them as assignment statements; when not in POSIX mode, assignment builtins lose their assignment statement expansion properties when preceded by 'command'. - 35. The 'bg' builtin uses the required format to describe each job + 36. The 'bg' builtin uses the required format to describe each job placed in the background, which does not include an indication of whether the job is the current or previous job. - 36. The output of 'kill -l' prints all the signal names on a single + 37. The output of 'kill -l' prints all the signal names on a single line, separated by spaces, without the 'SIG' prefix. - 37. The 'kill' builtin does not accept signal names with a 'SIG' + 38. The 'kill' builtin does not accept signal names with a 'SIG' prefix. - 38. The 'export' and 'readonly' builtin commands display their output + 39. The 'export' and 'readonly' builtin commands display their output in the format required by POSIX. - 39. The 'trap' builtin displays signal names without the leading + 40. The 'trap' builtin displays signal names without the leading 'SIG'. - 40. The 'trap' builtin doesn't check the first argument for a possible + 41. The 'trap' builtin doesn't check the first argument for a possible signal specification and revert the signal handling to the original disposition if it is, unless that argument consists solely of digits and is a valid signal number. If users want to reset the handler for a given signal to the original disposition, they should use '-' as the first argument. - 41. 'trap -p' displays signals whose dispositions are set to SIG_DFL + 42. 'trap -p' displays signals whose dispositions are set to SIG_DFL and those that were ignored when the shell started. - 42. The '.' and 'source' builtins do not search the current directory + 43. The '.' and 'source' builtins do not search the current directory for the filename argument if it is not found by searching 'PATH'. - 43. Enabling POSIX mode has the effect of setting the + 44. Enabling POSIX mode has the effect of setting the 'inherit_errexit' option, so subshells spawned to execute command substitutions inherit the value of the '-e' option from the parent shell. When the 'inherit_errexit' option is not enabled, Bash clears the '-e' option in such subshells. - 44. Enabling POSIX mode has the effect of setting the 'shift_verbose' + 45. Enabling POSIX mode has the effect of setting the 'shift_verbose' option, so numeric arguments to 'shift' that exceed the number of positional parameters will result in an error message. - 45. When the 'alias' builtin displays alias definitions, it does not + 46. When the 'alias' builtin displays alias definitions, it does not display them with a leading 'alias ' unless the '-p' option is supplied. - 46. When the 'set' builtin is invoked without options, it does not + 47. When the 'set' builtin is invoked without options, it does not display shell function names and definitions. - 47. When the 'set' builtin is invoked without options, it displays + 48. When the 'set' builtin is invoked without options, it displays variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. - 48. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname + 49. When the 'cd' builtin is invoked in logical mode, and the pathname constructed from '$PWD' and the directory name supplied as an argument does not refer to an existing directory, 'cd' will fail - instead of falling back to PHYSICAL mode. + instead of falling back to physical mode. - 49. When the 'cd' builtin cannot change a directory because the length + 50. When the 'cd' builtin cannot change a directory because the length of the pathname constructed from '$PWD' and the directory name - supplied as an argument exceeds PATH_MAX when all symbolic links + supplied as an argument exceeds 'PATH_MAX' when all symbolic links are expanded, 'cd' will fail instead of attempting to use only the supplied directory name. - 50. The 'pwd' builtin verifies that the value it prints is the same as + 51. 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. - 51. When listing the history, the 'fc' builtin does not include an + 52. When listing the history, the 'fc' builtin does not include an indication of whether or not a history entry has been modified. - 52. The default editor used by 'fc' is 'ed'. + 53. The default editor used by 'fc' is 'ed'. - 53. The 'type' and 'command' builtins will not report a non-executable + 54. 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'. - 54. The 'vi' editing mode will invoke the 'vi' editor directly when + 55. The 'vi' editing mode will invoke the 'vi' editor directly when the 'v' command is run, instead of checking '$VISUAL' and '$EDITOR'. - 55. When the 'xpg_echo' option is enabled, Bash does not attempt to + 56. 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. - 56. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' + 57. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' and '-f' options. - 57. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + 58. 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. - 58. The 'read' builtin may be interrupted by a signal for which a trap + 59. The 'read' builtin may be interrupted by a signal for which a trap has been set. If Bash receives a trapped signal while executing 'read', the trap handler executes and 'read' returns an exit status greater than 128. - 59. Bash removes an exited background process's status from the list + 60. The 'printf' builtin uses 'double' (via 'strtod') to convert + arguments corresponding to floating point conversion specifiers, + instead of 'long double' if it's available. The 'L' length + modifier forces 'printf' to use 'long double' if it's available. + + 61. Bash removes an exited background process's status from the list of such statuses after the 'wait' builtin is used to obtain it. There is other POSIX behavior that Bash does not implement by default diff --git a/RBASH b/RBASH index 9732c769c..7d0a5e8d1 100644 --- a/RBASH +++ b/RBASH @@ -29,7 +29,8 @@ with the exception that the following are disallowed or not performed: * Using the 'enable' builtin command to enable disabled shell builtins. * Specifying the '-p' option to the 'command' builtin. - * Turning off restricted mode with 'set +r' or 'set +o restricted'. + * Turning off restricted mode with 'set +r' or 'shopt -u + restricted_shell'. These restrictions are enforced after any startup files are read. @@ -40,10 +41,10 @@ spawned to execute the script. The restricted shell mode is only one component of a useful restricted environment. It should be accompanied by setting 'PATH' to a value that allows execution of only a few verified commands (commands that allow -shell escapes are particularly vulnerable), leaving the user in a -non-writable directory other than his home directory after login, not -allowing the restricted shell to execute shell scripts, and cleaning the -environment of variables that cause some commands to modify their +shell escapes are particularly vulnerable), changing the current +directory to a non-writable directory other than '$HOME' after login, +not allowing the restricted shell to execute shell scripts, and cleaning +the environment of variables that cause some commands to modify their behavior (e.g., 'VISUAL' or 'PAGER'). Modern systems provide more secure ways to implement a restricted diff --git a/README b/README index 70b7a8517..90d0be5bf 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ Introduction ============ -This is GNU Bash, version 5.1. Bash is the GNU Project's Bourne +This is GNU Bash, version 5.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 @@ -15,8 +15,8 @@ See the file POSIX for a discussion of how the Bash defaults differ from the POSIX spec and a description of the Bash `posix mode'. There are some user-visible incompatibilities between this version -of Bash and previous widely-distributed versions, bash-4.4 and -bash-5.0. For details, see the file COMPAT. The NEWS file tersely +of Bash and previous widely-distributed versions, bash-4.4, bash-5.0, +and bash-5.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 @@ -25,7 +25,7 @@ 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'. +`doc/FAQ'. (That file is no longer updated.) To compile Bash, type `./configure', then `make'. Bash auto-configures the build process, so no further intervention should be necessary. Bash @@ -94,12 +94,13 @@ Other Packages This distribution includes, in examples/bash-completion, a recent version of the `bash-completion' package, which provides programmable completions for a number of commands. It's available as a package in many distributions, -and that is the first place from which to obtain it. If it's not a package -from your vendor, you may install the included version. +and that is the first place from which to obtain it. The latest version of bash-completion is always available from https://github.com/scop/bash-completion. +If it's not a package from your vendor, you may install the included version. + Enjoy! Chet Ramey diff --git a/aclocal.m4 b/aclocal.m4 index 6899e8202..cc97bd4b8 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -3,55 +3,8 @@ dnl Bash specific tests dnl dnl Some derived from PDKSH 5.1.3 autoconf tests dnl - -AC_DEFUN(BASH_C_LONG_LONG, -[AC_CACHE_CHECK(for long long, ac_cv_c_long_long, -[if test "$GCC" = yes; then - ac_cv_c_long_long=yes -else -AC_TRY_RUN([ -#include -int -main() -{ -long long foo = 0; -exit(sizeof(long long) < sizeof(long)); -} -], ac_cv_c_long_long=yes, ac_cv_c_long_long=no) -fi]) -if test $ac_cv_c_long_long = yes; then - AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.]) -fi -]) - +dnl Copyright (C) 1987-2021 Free Software Foundation, Inc. dnl -dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX -dnl (< changed to <=) added. -dnl -AC_DEFUN(BASH_C_LONG_DOUBLE, -[AC_CACHE_CHECK(for long double, ac_cv_c_long_double, -[if test "$GCC" = yes; then - ac_cv_c_long_double=yes -else -AC_TRY_RUN([ -#include -int -main() -{ - /* The Stardent Vistra knows sizeof(long double), but does not - support it. */ - long double foo = 0.0; - /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ - /* On IRIX 5.3, the compiler converts long double to double with a warning, - but compiles this successfully. */ - exit(sizeof(long double) <= sizeof(double)); -} -], ac_cv_c_long_double=yes, ac_cv_c_long_double=no) -fi]) -if test $ac_cv_c_long_double = yes; then - AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.]) -fi -]) dnl dnl Check for . This is separated out so that it can be @@ -72,13 +25,14 @@ dnl dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND]) AC_DEFUN(BASH_CHECK_TYPE, [ -AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([BASH_HEADER_INTTYPES]) AC_MSG_CHECKING(for $1) AC_CACHE_VAL(bash_cv_type_$1, [AC_EGREP_CPP($1, [#include -#if STDC_HEADERS +#if HAVE_STDLIB_H #include +#endif +#if HAVE_STDDEF_H #include #endif #if HAVE_INTTYPES_H @@ -106,32 +60,14 @@ dnl AC_CHECK_DECL dnl AC_DEFUN(BASH_CHECK_DECL, [ -AC_REQUIRE([AC_HEADER_STDC]) AC_REQUIRE([BASH_HEADER_INTTYPES]) -AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1, -[AC_TRY_LINK( -[ -#if STDC_HEADERS -# include -#endif -#if HAVE_INTTYPES_H -# include -#endif -], -[return !$1;], -bash_cv_decl_$1=yes, bash_cv_decl_$1=no)]) -bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -if test $bash_cv_decl_$1 = yes; then - AC_DEFINE_UNQUOTED($bash_tr_func, 1) -else - AC_DEFINE_UNQUOTED($bash_tr_func, 0) -fi +AC_CHECK_DECLS([$1]) ]) AC_DEFUN(BASH_DECL_PRINTF, [AC_MSG_CHECKING(for declaration of printf in ) AC_CACHE_VAL(bash_cv_printf_declared, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #ifdef __STDC__ typedef int (*_bashfunc)(const char *, ...); @@ -146,7 +82,7 @@ _bashfunc pf; pf = (_bashfunc) printf; exit(pf == 0); } -], bash_cv_printf_declared=yes, bash_cv_printf_declared=no, +]])], [bash_cv_printf_declared=yes], [bash_cv_printf_declared=no], [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes) bash_cv_printf_declared=yes] )]) @@ -173,13 +109,13 @@ dnl AC_DEFUN(BASH_DECL_UNDER_SYS_SIGLIST, [AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h]) AC_CACHE_VAL(bash_cv_decl_under_sys_siglist, -[AC_TRY_COMPILE([ +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include #ifdef HAVE_UNISTD_H #include -#endif], [ char *msg = _sys_siglist[2]; ], - bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no, +#endif]], [[ char *msg = _sys_siglist[2]; ]])], + [bash_cv_decl_under_sys_siglist=yes], [bash_cv_decl_under_sys_siglist=no], [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl AC_MSG_RESULT($bash_cv_decl_under_sys_siglist) if test $bash_cv_decl_under_sys_siglist = yes; then @@ -191,7 +127,7 @@ AC_DEFUN(BASH_UNDER_SYS_SIGLIST, [AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) AC_MSG_CHECKING([for _sys_siglist in system C library]) AC_CACHE_VAL(bash_cv_under_sys_siglist, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #ifdef HAVE_UNISTD_H @@ -206,21 +142,34 @@ main() { char *msg = (char *)_sys_siglist[2]; exit(msg == 0); -}], - bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no, +} +]])], + [bash_cv_under_sys_siglist=yes], [bash_cv_under_sys_siglist=no], [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no) - bash_cv_under_sys_siglist=no])]) + bash_cv_under_sys_siglist=no] +)]) AC_MSG_RESULT($bash_cv_under_sys_siglist) if test $bash_cv_under_sys_siglist = yes; then AC_DEFINE(HAVE_UNDER_SYS_SIGLIST) fi ]) +dnl this defines HAVE_DECL_SYS_SIGLIST +AC_DEFUN([BASH_DECL_SYS_SIGLIST], +[AC_CHECK_DECLS([sys_siglist],,, +[#include +/* NetBSD declares sys_siglist in unistd.h. */ +#ifdef HAVE_UNISTD_H +# include +#endif +]) +]) + AC_DEFUN(BASH_SYS_SIGLIST, -[AC_REQUIRE([AC_DECL_SYS_SIGLIST]) +[AC_REQUIRE([BASH_DECL_SYS_SIGLIST]) AC_MSG_CHECKING([for sys_siglist in system C library]) AC_CACHE_VAL(bash_cv_sys_siglist, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #ifdef HAVE_UNISTD_H @@ -235,10 +184,11 @@ main() { char *msg = sys_siglist[2]; exit(msg == 0); -}], - bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no, +} +]])], [bash_cv_sys_siglist=yes], [bash_cv_sys_siglist=no], [AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no) - bash_cv_sys_siglist=no])]) + bash_cv_sys_siglist=no] +)]) AC_MSG_RESULT($bash_cv_sys_siglist) if test $bash_cv_sys_siglist = yes; then AC_DEFINE(HAVE_SYS_SIGLIST) @@ -263,11 +213,15 @@ dnl Check for sys_errlist[] and sys_nerr, check for declaration AC_DEFUN(BASH_SYS_ERRLIST, [AC_MSG_CHECKING([for sys_errlist and sys_nerr]) AC_CACHE_VAL(bash_cv_sys_errlist, -[AC_TRY_LINK([#include ], -[extern char *sys_errlist[]; - extern int sys_nerr; - char *msg = sys_errlist[sys_nerr - 1];], - bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +]],[[ +extern char *sys_errlist[]; +extern int sys_nerr; +char *msg = sys_errlist[sys_nerr - 1]; +]] )], +[bash_cv_sys_errlist=yes], [bash_cv_sys_errlist=no] +)]) AC_MSG_RESULT($bash_cv_sys_errlist) if test $bash_cv_sys_errlist = yes; then AC_DEFINE(HAVE_SYS_ERRLIST) @@ -280,7 +234,7 @@ dnl AC_DEFUN(BASH_FUNC_DUP2_CLOEXEC_CHECK, [AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag) AC_CACHE_VAL(bash_cv_dup2_broken, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -298,10 +252,10 @@ main() /* fl will be 1 if dup2 did not reset the close-on-exec flag. */ exit(fl != 1); } -], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no, +]])], [bash_cv_dup2_broken=yes], [bash_cv_dup2_broken=no], [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no) - bash_cv_dup2_broken=no]) -]) + bash_cv_dup2_broken=no] +)]) AC_MSG_RESULT($bash_cv_dup2_broken) if test $bash_cv_dup2_broken = yes; then AC_DEFINE(DUP2_BROKEN) @@ -311,11 +265,12 @@ fi AC_DEFUN(BASH_FUNC_STRSIGNAL, [AC_MSG_CHECKING([for the existence of strsignal]) AC_CACHE_VAL(bash_cv_have_strsignal, -[AC_TRY_LINK([#include +[AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include #include -#include ], -[char *s = (char *)strsignal(2);], - bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)]) +#include ]], +[[char *s = (char *)strsignal(2);]])], + [bash_cv_have_strsignal=yes], [bash_cv_have_strsignal=no])]) AC_MSG_RESULT($bash_cv_have_strsignal) if test $bash_cv_have_strsignal = yes; then AC_DEFINE(HAVE_STRSIGNAL) @@ -327,7 +282,7 @@ AC_DEFUN(BASH_FUNC_OPENDIR_CHECK, [AC_REQUIRE([AC_HEADER_DIRENT])dnl AC_MSG_CHECKING(if opendir() opens non-directories) AC_CACHE_VAL(bash_cv_opendir_not_robust, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -370,7 +325,8 @@ dir = opendir("bash-aclocal/not_a_directory"); unlink("bash-aclocal/not_a_directory"); rmdir("bash-aclocal"); exit (dir == 0); -}], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no, +} +]])], [bash_cv_opendir_not_robust=yes], [bash_cv_opendir_not_robust=no], [AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no) bash_cv_opendir_not_robust=no] )]) @@ -380,26 +336,6 @@ AC_DEFINE(OPENDIR_NOT_ROBUST) fi ]) -dnl -AC_DEFUN(BASH_TYPE_SIGHANDLER, -[AC_MSG_CHECKING([whether signal handlers are of type void]) -AC_CACHE_VAL(bash_cv_void_sighandler, -[AC_TRY_COMPILE([#include -#include -#ifdef signal -#undef signal -#endif -#ifdef __cplusplus -extern "C" -#endif -void (*signal ()) ();], -[int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl -AC_MSG_RESULT($bash_cv_void_sighandler) -if test $bash_cv_void_sighandler = yes; then -AC_DEFINE(VOID_SIGHANDLER) -fi -]) - dnl dnl A signed 16-bit integer quantity dnl @@ -487,82 +423,98 @@ else fi ]) -AC_DEFUN(BASH_TYPE_LONG_LONG, -[ -AC_CACHE_CHECK([for long long], bash_cv_type_long_long, -[AC_TRY_LINK([ -long long ll = 1; int i = 63;], -[ -long long llm = (long long) -1; -return ll << i | ll >> i | llm / ll | llm % ll; -], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')]) -if test "$bash_cv_type_long_long" = 'long long'; then - AC_DEFINE(HAVE_LONG_LONG, 1) -fi +AC_DEFUN(BASH_SIZEOF_RLIMIT, +[AC_MSG_CHECKING(for size of struct rlimit fields) +AC_CACHE_VAL(bash_cv_sizeof_rlim_cur, +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#ifdef HAVE_SYS_TIME_H +#include +#endif +#include +#include +main() +{ +struct rlimit r; +exit(sizeof (r.rlim_cur)); +} +]])], [bash_cv_sizeof_rlim_cur=$?], [bash_cv_sizeof_rlim_cur=$?], + [AC_MSG_WARN(cannot check size of rlimit fields if cross compiling -- defaulting to long) + bash_cv_sizeof_rlim_cur=$ac_cv_sizeof_long] +)]) +AC_MSG_RESULT($bash_cv_sizeof_rlim_cur) ]) -AC_DEFUN(BASH_TYPE_UNSIGNED_LONG_LONG, -[ -AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long, -[AC_TRY_LINK([ -unsigned long long ull = 1; int i = 63;], -[ -unsigned long long ullmax = (unsigned long long) -1; -return ull << i | ull >> i | ullmax / ull | ullmax % ull; -], bash_cv_type_unsigned_long_long='unsigned long long', - bash_cv_type_unsigned_long_long='unsigned long')]) -if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then - AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1) -fi +AC_DEFUN(BASH_SIZEOF_QUAD_T, +[AC_MSG_CHECKING(for size of quad_t) +AC_CACHE_VAL(bash_cv_sizeof_quad_t, +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +#include +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif + +main() +{ +#if HAVE_QUAD_T +quad_t x; +exit(sizeof (x)); +#else +exit (0); +#endif +} +]])], [bash_cv_sizeof_quad_t=$?], [bash_cv_sizeof_quad_t=$?], + [AC_MSG_WARN(cannot check size of quad_t if cross compiling -- defaulting to 0) + bash_cv_sizeof_quad_t=0] +)]) +AC_MSG_RESULT($bash_cv_sizeof_quad_t) ]) dnl -dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0) -dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use -dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify -dnl matters, this just checks for rlim_t, quad_t, or long. +dnl Type of struct rlimit fields: updated to check POSIX rlim_t and +dnl if it doesn't exist determine the best guess based on sizeof(r.rlim_cur) dnl AC_DEFUN(BASH_TYPE_RLIMIT, -[AC_MSG_CHECKING(for size and type of struct rlimit fields) +[AC_MSG_CHECKING(for type of struct rlimit fields) AC_CACHE_VAL(bash_cv_type_rlimit, -[AC_TRY_COMPILE([#include -#include ], -[rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[ -AC_TRY_RUN([ +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include -#include -#include -#include -int -main() -{ -#ifdef HAVE_QUAD_T - struct rlimit rl; - if (sizeof(rl.rlim_cur) == sizeof(quad_t)) - exit(0); -#endif - exit(1); -}], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long, - [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long) - bash_cv_type_rlimit=long])]) -]) -AC_MSG_RESULT($bash_cv_type_rlimit) -if test $bash_cv_type_rlimit = quad_t; then -AC_DEFINE(RLIMTYPE, quad_t) -elif test $bash_cv_type_rlimit = rlim_t; then -AC_DEFINE(RLIMTYPE, rlim_t) +#include ]], +[[rlim_t xxx;]] +)], + [bash_cv_type_rlimit=rlim_t], [ +BASH_SIZEOF_RLIMIT +BASH_SIZEOF_QUAD_T +if test $bash_cv_sizeof_rlim_cur = $ac_cv_sizeof_long; then + bash_cv_type_rlimit='unsigned long' +elif test $bash_cv_sizeof_rlim_cur = $ac_cv_sizeof_long_long; then + bash_cv_type_rlimit='unsigned long long' +elif test $bash_cv_sizeof_rlim_cur = $ac_cv_sizeof_int; then + bash_cv_type_rlimit='unsigned int' +elif test $bash_cv_sizeof_rlim_cur = $bash_cv_sizeof_quad_t; then + bash_cv_type_rlimit='quad_t' +else + bash_cv_type_rlimit='unsigned long' fi +] +)]) +AC_MSG_RESULT($bash_cv_type_rlimit) +AC_DEFINE_UNQUOTED([RLIMTYPE], [$bash_cv_type_rlimit]) ]) AC_DEFUN(BASH_TYPE_SIG_ATOMIC_T, [AC_CACHE_CHECK([for sig_atomic_t in signal.h], ac_cv_have_sig_atomic_t, -[AC_TRY_LINK([ -#include -],[ sig_atomic_t x; ], -ac_cv_have_sig_atomic_t=yes, ac_cv_have_sig_atomic_t=no)]) +[AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ #include ]], + [[ sig_atomic_t x; ]])], + [ac_cv_have_sig_atomic_t=yes],[ac_cv_have_sig_atomic_t=no])]) if test "$ac_cv_have_sig_atomic_t" = "no" then - AC_CHECK_TYPE(sig_atomic_t,int) + BASH_CHECK_TYPE(sig_atomic_t, [#include ], int) fi ]) @@ -570,11 +522,13 @@ AC_DEFUN(BASH_FUNC_LSTAT, [dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an dnl inline function in . AC_CACHE_CHECK([for lstat], bash_cv_func_lstat, -[AC_TRY_LINK([ -#include -#include -],[ lstat(".",(struct stat *)0); ], -bash_cv_func_lstat=yes, bash_cv_func_lstat=no)]) +[AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[ + #include + #include + ]], + [[ lstat(".",(struct stat *)0); ]])], + [bash_cv_func_lstat=yes],[bash_cv_func_lstat=no])]) if test $bash_cv_func_lstat = yes; then AC_DEFINE(HAVE_LSTAT) fi @@ -583,12 +537,12 @@ fi AC_DEFUN(BASH_FUNC_INET_ATON, [ AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton, -[AC_TRY_LINK([ +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include #include #include -struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ], -bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)]) +struct in_addr ap;]], [[ inet_aton("127.0.0.1", &ap); ]])], +[bash_cv_func_inet_aton=yes], [bash_cv_func_inet_aton=no])]) if test $bash_cv_func_inet_aton = yes; then AC_DEFINE(HAVE_INET_ATON) else @@ -599,7 +553,7 @@ fi AC_DEFUN(BASH_FUNC_GETENV, [AC_MSG_CHECKING(to see if getenv can be redefined) AC_CACHE_VAL(bash_cv_getenv_redef, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #ifdef HAVE_UNISTD_H # include #endif @@ -632,7 +586,7 @@ exit(1); s = getenv("ABCDE"); exit(s == 0); /* force optimizer to leave getenv in */ } -], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no, +]])], [bash_cv_getenv_redef=yes], [bash_cv_getenv_redef=no], [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes) bash_cv_getenv_redef=yes] )]) @@ -645,12 +599,13 @@ fi # We should check for putenv before calling this AC_DEFUN(BASH_FUNC_STD_PUTENV, [ -AC_REQUIRE([AC_HEADER_STDC]) AC_REQUIRE([AC_C_PROTOTYPES]) AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv, -[AC_TRY_LINK([ -#if STDC_HEADERS +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#if HAVE_STDLIB_H #include +#endif +#if HAVE_STDDEF_H #include #endif #ifndef __STDC__ @@ -663,9 +618,8 @@ extern int putenv (char *); #else extern int putenv (); #endif -], -[return (putenv == 0);], -bash_cv_std_putenv=yes, bash_cv_std_putenv=no +]], [[return (putenv == 0);]] )], +[bash_cv_std_putenv=yes], [bash_cv_std_putenv=no] )]) if test $bash_cv_std_putenv = yes; then AC_DEFINE(HAVE_STD_PUTENV) @@ -675,12 +629,13 @@ fi # We should check for unsetenv before calling this AC_DEFUN(BASH_FUNC_STD_UNSETENV, [ -AC_REQUIRE([AC_HEADER_STDC]) AC_REQUIRE([AC_C_PROTOTYPES]) AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv, -[AC_TRY_LINK([ -#if STDC_HEADERS +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#if HAVE_STDLIB_H #include +#endif +#if HAVE_STDDEF_H #include #endif #ifndef __STDC__ @@ -693,9 +648,8 @@ extern int unsetenv (const char *); #else extern int unsetenv (); #endif -], -[return (unsetenv == 0);], -bash_cv_std_unsetenv=yes, bash_cv_std_unsetenv=no +]], [[return (unsetenv == 0);]] )], +[bash_cv_std_unsetenv=yes], [bash_cv_std_unsetenv=no] )]) if test $bash_cv_std_unsetenv = yes; then AC_DEFINE(HAVE_STD_UNSETENV) @@ -705,7 +659,7 @@ fi AC_DEFUN(BASH_FUNC_ULIMIT_MAXFDS, [AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize) AC_CACHE_VAL(bash_cv_ulimit_maxfds, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #ifdef HAVE_ULIMIT_H #include @@ -716,7 +670,7 @@ main() long maxfds = ulimit(4, 0L); exit (maxfds == -1L); } -], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no, +]])], [bash_cv_ulimit_maxfds=yes], [bash_cv_ulimit_maxfds=no], [AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no) bash_cv_ulimit_maxfds=no] )]) @@ -729,7 +683,7 @@ fi AC_DEFUN(BASH_FUNC_GETCWD, [AC_MSG_CHECKING([if getcwd() will dynamically allocate memory with 0 size]) AC_CACHE_VAL(bash_cv_getcwd_malloc, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #ifdef HAVE_UNISTD_H #include @@ -743,7 +697,7 @@ main() xpwd = getcwd(0, 0); exit (xpwd == 0); } -], bash_cv_getcwd_malloc=yes, bash_cv_getcwd_malloc=no, +]])], [bash_cv_getcwd_malloc=yes], [bash_cv_getcwd_malloc=no], [AC_MSG_WARN(cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no) bash_cv_getcwd_malloc=no] )]) @@ -756,7 +710,7 @@ fi dnl dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every -dnl system, we can't use AC_PREREQ +dnl system, we can't use AC_PREREQ. Only called if we need the socket library dnl AC_DEFUN(BASH_FUNC_GETHOSTBYNAME, [if test "X$bash_cv_have_gethostbyname" = "X"; then @@ -766,11 +720,14 @@ AC_MSG_CHECKING(for gethostbyname in socket library) _bash_needmsg= fi AC_CACHE_VAL(bash_cv_have_gethostbyname, -[AC_TRY_LINK([#include ], -[ struct hostent *hp; - hp = gethostbyname("localhost"); -], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)] -) +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +]], [[ +struct hostent *hp; +hp = gethostbyname("localhost"); +]] )], +[bash_cv_have_gethostbyname=yes], [bash_cv_have_gethostbyname=no] +)]) if test "X$_bash_needmsg" = Xyes; then AC_MSG_CHECKING(for gethostbyname in socket library) fi @@ -783,7 +740,7 @@ fi AC_DEFUN(BASH_FUNC_FNMATCH_EXTMATCH, [AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH) AC_CACHE_VAL(bash_cv_fnm_extmatch, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include int @@ -795,10 +752,10 @@ main() return (1); #endif } -], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no, +]])], [bash_cv_fnm_extmatch=yes], [bash_cv_fnm_extmatch=no], [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no) - bash_cv_fnm_extmatch=no]) -]) + bash_cv_fnm_extmatch=no] +)]) AC_MSG_RESULT($bash_cv_fnm_extmatch) if test $bash_cv_fnm_extmatch = yes; then AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH) @@ -809,7 +766,7 @@ AC_DEFUN(BASH_FUNC_POSIX_SETJMP, [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp) AC_CACHE_VAL(bash_cv_func_sigsetjmp, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #ifdef HAVE_UNISTD_H #include #endif @@ -826,21 +783,30 @@ exit (1); #else int code; -sigset_t set, oset; +sigset_t set, oset, nset; sigjmp_buf xx; /* get the mask */ sigemptyset(&set); sigemptyset(&oset); -sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); + sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); +/* paranoia -- make sure SIGINT is not blocked */ +sigdelset (&oset, SIGINT); +sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); /* save it */ code = sigsetjmp(xx, 1); if (code) - exit(0); /* could get sigmask and compare to oset here. */ +{ + sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &nset); + /* could compare nset to oset here, but we just look for SIGINT */ + if (sigismember (&nset, SIGINT)) + exit(1); + exit(0); +} -/* change it */ +/* change it so that SIGINT is blocked */ sigaddset(&set, SIGINT); sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); @@ -848,9 +814,14 @@ sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); siglongjmp(xx, 10); exit(1); #endif -}], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing, - [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing) - bash_cv_func_sigsetjmp=missing] +} +]])], [bash_cv_func_sigsetjmp=present], [bash_cv_func_sigsetjmp=missing], + [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to $bash_cv_posix_signals) + if test "$bash_cv_posix_signals" = "yes" ; then + bash_cv_func_sigsetjmp=present + else + bash_cv_func_sigsetjmp=missing + fi] )]) AC_MSG_RESULT($bash_cv_func_sigsetjmp) if test $bash_cv_func_sigsetjmp = present; then @@ -859,10 +830,9 @@ fi ]) AC_DEFUN(BASH_FUNC_STRCOLL, -[ -AC_MSG_CHECKING(whether or not strcoll and strcmp differ) +[AC_MSG_CHECKING(whether or not strcoll and strcmp differ) AC_CACHE_VAL(bash_cv_func_strcoll_broken, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #if defined (HAVE_LOCALE_H) #include @@ -900,7 +870,7 @@ char *v[]; in the default locale. */ exit (r1 > 0 && r2 > 0); } -], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no, +]])], [bash_cv_func_strcoll_broken=yes], [bash_cv_func_strcoll_broken=no], [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no) bash_cv_func_strcoll_broken=no] )]) @@ -913,7 +883,7 @@ fi AC_DEFUN(BASH_FUNC_PRINTF_A_FORMAT, [AC_MSG_CHECKING([for printf floating point output in hex notation]) AC_CACHE_VAL(bash_cv_printf_a_format, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -927,7 +897,7 @@ main() sprintf(abuf, "%A", y); exit(strchr(abuf, 'P') == (char *)0); } -], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no, +]])], [bash_cv_printf_a_format=yes], [bash_cv_printf_a_format=no], [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no) bash_cv_printf_a_format=no] )]) @@ -964,12 +934,10 @@ AC_DEFUN(BASH_STRUCT_ST_BLOCKS, [ AC_MSG_CHECKING([for struct stat.st_blocks]) AC_CACHE_VAL(bash_cv_struct_stat_st_blocks, -[AC_TRY_COMPILE( -[ +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include -], -[ +]], [[ int main() { @@ -977,7 +945,7 @@ static struct stat a; if (a.st_blocks) return 0; return 0; } -], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no) +]])], [bash_cv_struct_stat_st_blocks=yes], [bash_cv_struct_stat_st_blocks=no]) ]) AC_MSG_RESULT($bash_cv_struct_stat_st_blocks) if test "$bash_cv_struct_stat_st_blocks" = "yes"; then @@ -1022,7 +990,8 @@ elif test $bash_cv_termcap_lib = libc; then TERMCAP_LIB= TERMCAP_DEP= else -TERMCAP_LIB=-lcurses +# we assume ncurses is installed somewhere the linker can find it +TERMCAP_LIB=-lncurses TERMCAP_DEP= fi ]) @@ -1077,11 +1046,12 @@ if test $bash_cv_have_socklib = yes; then fi ]) -AC_DEFUN(BASH_STRUCT_DIRENT_D_INO, -[AC_REQUIRE([AC_HEADER_DIRENT]) -AC_MSG_CHECKING(for struct dirent.d_ino) -AC_CACHE_VAL(bash_cv_dirent_has_dino, -[AC_TRY_COMPILE([ +dnl like _AC_STRUCT_DIRENT(MEMBER) but public +AC_DEFUN(BASH_STRUCT_DIRENT, +[ +AC_REQUIRE([AC_HEADER_DIRENT]) +AC_CHECK_MEMBERS(struct dirent.$1, bash_cv_dirent_has_$1=yes, bash_cv_dirent_has_$1=no, +[[ #include #include #ifdef HAVE_UNISTD_H @@ -1101,11 +1071,15 @@ AC_CACHE_VAL(bash_cv_dirent_has_dino, # include # endif #endif /* HAVE_DIRENT_H */ -],[ -struct dirent d; int z; z = d.d_ino; -], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)]) -AC_MSG_RESULT($bash_cv_dirent_has_dino) -if test $bash_cv_dirent_has_dino = yes; then +]]) +]) + +AC_DEFUN(BASH_STRUCT_DIRENT_D_INO, +[AC_REQUIRE([AC_HEADER_DIRENT]) +AC_MSG_CHECKING(for struct dirent.d_ino) +AC_CACHE_VAL(bash_cv_dirent_has_d_ino, [BASH_STRUCT_DIRENT([d_ino])]) +AC_MSG_RESULT($bash_cv_dirent_has_d_ino) +if test $bash_cv_dirent_has_d_ino = yes; then AC_DEFINE(HAVE_STRUCT_DIRENT_D_INO) fi ]) @@ -1113,30 +1087,7 @@ fi AC_DEFUN(BASH_STRUCT_DIRENT_D_FILENO, [AC_REQUIRE([AC_HEADER_DIRENT]) AC_MSG_CHECKING(for struct dirent.d_fileno) -AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, -[AC_TRY_COMPILE([ -#include -#include -#ifdef HAVE_UNISTD_H -# include -#endif /* HAVE_UNISTD_H */ -#if defined(HAVE_DIRENT_H) -# include -#else -# define dirent direct -# ifdef HAVE_SYS_NDIR_H -# include -# endif /* SYSNDIR */ -# ifdef HAVE_SYS_DIR_H -# include -# endif /* SYSDIR */ -# ifdef HAVE_NDIR_H -# include -# endif -#endif /* HAVE_DIRENT_H */ -],[ -struct dirent d; int z; z = d.d_fileno; -], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)]) +AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, [BASH_STRUCT_DIRENT([d_fileno])]) AC_MSG_RESULT($bash_cv_dirent_has_d_fileno) if test $bash_cv_dirent_has_d_fileno = yes; then AC_DEFINE(HAVE_STRUCT_DIRENT_D_FILENO) @@ -1146,30 +1097,7 @@ fi AC_DEFUN(BASH_STRUCT_DIRENT_D_NAMLEN, [AC_REQUIRE([AC_HEADER_DIRENT]) AC_MSG_CHECKING(for struct dirent.d_namlen) -AC_CACHE_VAL(bash_cv_dirent_has_d_namlen, -[AC_TRY_COMPILE([ -#include -#include -#ifdef HAVE_UNISTD_H -# include -#endif /* HAVE_UNISTD_H */ -#if defined(HAVE_DIRENT_H) -# include -#else -# define dirent direct -# ifdef HAVE_SYS_NDIR_H -# include -# endif /* SYSNDIR */ -# ifdef HAVE_SYS_DIR_H -# include -# endif /* SYSDIR */ -# ifdef HAVE_NDIR_H -# include -# endif -#endif /* HAVE_DIRENT_H */ -],[ -struct dirent d; int z; z = d.d_namlen; -], bash_cv_dirent_has_d_namlen=yes, bash_cv_dirent_has_d_namlen=no)]) +AC_CACHE_VAL(bash_cv_dirent_has_d_namlen, [BASH_STRUCT_DIRENT([d_namlen])]) AC_MSG_RESULT($bash_cv_dirent_has_d_namlen) if test $bash_cv_dirent_has_d_namlen = yes; then AC_DEFINE(HAVE_STRUCT_DIRENT_D_NAMLEN) @@ -1213,16 +1141,47 @@ if test $bash_cv_struct_timezone = yes; then fi ]) +AC_DEFUN(BASH_CHECK_WINSIZE_IOCTL, +[AC_CACHE_VAL(bash_cv_struct_winsize_ioctl, +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +]], +[[ +struct winsize x; +if (sizeof (x) > 0) return (0); +]] )], [bash_cv_struct_winsize_ioctl=yes], [bash_cv_struct_winsize_ioctl=no]) +]) +]) + +AC_DEFUN(BASH_CHECK_WINSIZE_TERMIOS, +[AC_CACHE_VAL(bash_cv_struct_winsize_termios, +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +]], +[[ +struct winsize x; +if (sizeof (x) > 0) return (0); +]] )], [bash_cv_struct_winsize_termios=yes], [bash_cv_struct_winsize_termios=no]) +]) +]) + AC_DEFUN(BASH_STRUCT_WINSIZE, [AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h) AC_CACHE_VAL(bash_cv_struct_winsize_header, -[AC_TRY_COMPILE([#include -#include ], [struct winsize x;], - bash_cv_struct_winsize_header=ioctl_h, - [AC_TRY_COMPILE([#include -#include ], [struct winsize x;], - bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other) -])]) +[ +BASH_CHECK_WINSIZE_IOCTL +BASH_CHECK_WINSIZE_TERMIOS + +if test $bash_cv_struct_winsize_ioctl = yes; then + bash_cv_struct_winsize_header=ioctl_h +elif test $bash_cv_struct_winsize_termios = yes; then + bash_cv_struct_winsize_header=termios_h +else + bash_cv_struct_winsize_header=other +fi +]) if test $bash_cv_struct_winsize_header = ioctl_h; then AC_MSG_RESULT(sys/ioctl.h) AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL) @@ -1234,35 +1193,68 @@ else fi ]) -dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7) -AC_DEFUN(BASH_SYS_SIGNAL_VINTAGE, -[AC_REQUIRE([AC_TYPE_SIGNAL]) -AC_MSG_CHECKING(for type of signal functions) -AC_CACHE_VAL(bash_cv_signal_vintage, -[ - AC_TRY_LINK([#include ],[ +AC_DEFUN(BASH_HAVE_POSIX_SIGNALS, +[AC_CACHE_VAL(bash_cv_posix_signals, +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +]], [[ sigset_t ss; struct sigaction sa; sigemptyset(&ss); sigsuspend(&ss); sigaction(SIGINT, &sa, (struct sigaction *) 0); sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); - ], bash_cv_signal_vintage=posix, - [ - AC_TRY_LINK([#include ], [ - int mask = sigmask(SIGINT); - sigsetmask(mask); sigblock(mask); sigpause(mask); - ], bash_cv_signal_vintage=4.2bsd, - [ - AC_TRY_LINK([ - #include - RETSIGTYPE foo() { }], [ - int mask = sigmask(SIGINT); - sigset(SIGINT, foo); sigrelse(SIGINT); - sighold(SIGINT); sigpause(SIGINT); - ], bash_cv_signal_vintage=svr3, bash_cv_signal_vintage=v7 - )] - )] -) +]] )], +[bash_cv_posix_signals=yes], [bash_cv_posix_signals=no] +)]) +]) + +AC_DEFUN(BASH_HAVE_BSD_SIGNALS, +[AC_CACHE_VAL(bash_cv_bsd_signals, +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +]], [[ +int mask = sigmask(SIGINT); +sigsetmask(mask); sigblock(mask); sigpause(mask); +]] )], +[bash_cv_bsd_signals=yes], [bash_cv_bsd_signals=no] +)]) +]) + +AC_DEFUN(BASH_HAVE_SYSV_SIGNALS, +[AC_CACHE_VAL(bash_cv_sysv_signals, +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +void foo() { } +]], [[ +int mask = sigmask(SIGINT); +sigset(SIGINT, foo); sigrelse(SIGINT); +sighold(SIGINT); sigpause(SIGINT); +]] )], +[bash_cv_sysv_signals=yes], [bash_cv_sysv_signals=no] +)]) +]) + +dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7) +AC_DEFUN(BASH_SYS_SIGNAL_VINTAGE, +[AC_MSG_CHECKING(for type of signal functions) +AC_CACHE_VAL(bash_cv_signal_vintage, +[ +BASH_HAVE_POSIX_SIGNALS +if test $bash_cv_posix_signals = yes; then + bash_cv_signal_vintage=posix +else + BASH_HAVE_BSD_SIGNALS + if test $bash_cv_bsd_signals = yes; then + bash_cv_signal_vintage=4.2bsd + else + BASH_HAVE_SYSV_SIGNALS + if test $bash_cv_sysv_signals = yes; then + bash_cv_signal_vintage=svr3 + else + bash_cv_signal_vintage=v7 + fi + fi +fi ]) AC_MSG_RESULT($bash_cv_signal_vintage) if test "$bash_cv_signal_vintage" = posix; then @@ -1279,7 +1271,7 @@ AC_DEFUN(BASH_SYS_PGRP_SYNC, [AC_REQUIRE([AC_FUNC_GETPGRP]) AC_MSG_CHECKING(whether pgrps need synchronization) AC_CACHE_VAL(bash_cv_pgrp_pipe, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #ifdef HAVE_UNISTD_H # include #endif @@ -1332,10 +1324,10 @@ main() wait(&status); exit(ok ? 0 : 5); } -], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes, +]])], [bash_cv_pgrp_pipe=no], [bash_cv_pgrp_pipe=yes], [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no) - bash_cv_pgrp_pipe=no]) -]) + bash_cv_pgrp_pipe=no] +)]) AC_MSG_RESULT($bash_cv_pgrp_pipe) if test $bash_cv_pgrp_pipe = yes; then AC_DEFINE(PGRP_PIPE) @@ -1343,18 +1335,17 @@ fi ]) AC_DEFUN(BASH_SYS_REINSTALL_SIGHANDLERS, -[AC_REQUIRE([AC_TYPE_SIGNAL]) -AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) +[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked]) AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #ifdef HAVE_UNISTD_H #include #endif #include -typedef RETSIGTYPE sigfunc(); +typedef void sigfunc(); volatile int nsigint; @@ -1376,7 +1367,7 @@ set_signal_handler(sig, handler) #define set_signal_handler(s, h) signal(s, h) #endif -RETSIGTYPE +void sigint(s) int s; { @@ -1392,7 +1383,7 @@ main() kill((int)getpid(), SIGINT); exit(nsigint != 2); } -], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes, +]])], [bash_cv_must_reinstall_sighandlers=no], [bash_cv_must_reinstall_sighandlers=yes], [AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no) bash_cv_must_reinstall_sighandlers=no] )]) @@ -1407,7 +1398,7 @@ AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING, [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) AC_MSG_CHECKING(for presence of necessary job control definitions) AC_CACHE_VAL(bash_cv_job_control_missing, -[AC_TRY_COMPILE([ +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #ifdef HAVE_SYS_WAIT_H #include @@ -1448,7 +1439,8 @@ AC_CACHE_VAL(bash_cv_job_control_missing, #error #endif -], , bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing +]], [[ int x; ]] )], +[bash_cv_job_control_missing=present], [bash_cv_job_control_missing=missing] )]) AC_MSG_RESULT($bash_cv_job_control_missing) if test $bash_cv_job_control_missing = missing; then @@ -1461,7 +1453,7 @@ dnl this requires a previous check for mkfifo, but that is awkward to specify AC_DEFUN(BASH_SYS_NAMED_PIPES, [AC_MSG_CHECKING(for presence of named pipes) AC_CACHE_VAL(bash_cv_sys_named_pipes, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #ifdef HAVE_UNISTD_H @@ -1501,7 +1493,8 @@ close(fd); unlink ("bash-aclocal/sh-np-autoconf"); rmdir ("bash-aclocal"); exit(0); -}], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing, +} +]])], [bash_cv_sys_named_pipes=present], [bash_cv_sys_named_pipes=missing], [AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing) bash_cv_sys_named_pipes=missing] )]) @@ -1533,9 +1526,11 @@ AC_DEFINE_UNQUOTED(DEFAULT_MAIL_DIRECTORY, "$bash_cv_mail_dir") AC_DEFUN(BASH_HAVE_TIOCGWINSZ, [AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h) AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl, -[AC_TRY_COMPILE([#include -#include ], [int x = TIOCGWINSZ;], - bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)]) +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include ]], [[int x = TIOCGWINSZ;]] )], + [bash_cv_tiocgwinsz_in_ioctl=yes], [bash_cv_tiocgwinsz_in_ioctl=no] +)]) AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl) if test $bash_cv_tiocgwinsz_in_ioctl = yes; then AC_DEFINE(GWINSZ_IN_SYS_IOCTL) @@ -1545,9 +1540,11 @@ fi AC_DEFUN(BASH_HAVE_TIOCSTAT, [AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h) AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl, -[AC_TRY_COMPILE([#include -#include ], [int x = TIOCSTAT;], - bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)]) +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include ]], [[int x = TIOCSTAT;]] )], + [bash_cv_tiocstat_in_ioctl=yes], [bash_cv_tiocstat_in_ioctl=no] +)]) AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl) if test $bash_cv_tiocstat_in_ioctl = yes; then AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL) @@ -1557,9 +1554,11 @@ fi AC_DEFUN(BASH_HAVE_FIONREAD, [AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h) AC_CACHE_VAL(bash_cv_fionread_in_ioctl, -[AC_TRY_COMPILE([#include -#include ], [int x = FIONREAD;], - bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)]) +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include ]], [[int x = FIONREAD;]] )], + [bash_cv_fionread_in_ioctl=yes], [bash_cv_fionread_in_ioctl=no] +)]) AC_MSG_RESULT($bash_cv_fionread_in_ioctl) if test $bash_cv_fionread_in_ioctl = yes; then AC_DEFINE(FIONREAD_IN_SYS_IOCTL) @@ -1575,8 +1574,11 @@ dnl AC_DEFUN(BASH_CHECK_SPEED_T, [AC_MSG_CHECKING(for speed_t in sys/types.h) AC_CACHE_VAL(bash_cv_speed_t_in_sys_types, -[AC_TRY_COMPILE([#include ], [speed_t x;], - bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)]) +[AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[speed_t x;]])], + [bash_cv_speed_t_in_sys_types=yes],[bash_cv_speed_t_in_sys_types=no])]) AC_MSG_RESULT($bash_cv_speed_t_in_sys_types) if test $bash_cv_speed_t_in_sys_types = yes; then AC_DEFINE(SPEED_T_IN_SYS_TYPES) @@ -1646,31 +1648,41 @@ if test $bash_cv_dev_stdin = "present"; then fi ]) + +AC_DEFUN(BASH_CHECK_RLIMIT, +[AC_CACHE_VAL(bash_cv_rlimit, +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +]], +[[ + int f; + f = RLIMIT_DATA; +]] )], +[bash_cv_rlimit=yes], [bash_cv_rlimit=no] +)]) +]) + dnl dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions dnl AC_DEFUN(BASH_CHECK_KERNEL_RLIMIT, [AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines]) AC_CACHE_VAL(bash_cv_kernel_rlimit, -[AC_TRY_COMPILE([ -#include -#include -], -[ - int f; - f = RLIMIT_DATA; -], bash_cv_kernel_rlimit=no, -[AC_TRY_COMPILE([ +[BASH_CHECK_RLIMIT +if test $bash_cv_rlimit = no; then +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #define _KERNEL #include #undef _KERNEL -], -[ - int f; - f = RLIMIT_DATA; -], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)] -)]) +]], +[[ + int f; + f = RLIMIT_DATA; +]] )], [bash_cv_kernel_rlimit=yes], [bash_cv_kernel_rlimit=no] ) +fi +]) AC_MSG_RESULT($bash_cv_kernel_rlimit) if test $bash_cv_kernel_rlimit = yes; then AC_DEFINE(RLIMIT_NEEDS_KERNEL) @@ -1685,14 +1697,15 @@ dnl sizeof(off_t) is > 4. dnl AC_DEFUN(BASH_CHECK_OFF_T_64, [AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64, -AC_TRY_COMPILE([ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #ifdef HAVE_UNISTD_H #include #endif #include -],[ +]],[[ switch (0) case 0: case (sizeof (off_t) <= 4):; -], bash_cv_off_t_64=no, bash_cv_off_t_64=yes)) +]] )], [bash_cv_off_t_64=no], [bash_cv_off_t_64=yes] +)) if test $bash_cv_off_t_64 = yes; then AC_DEFINE(HAVE_OFF_T_64) fi]) @@ -1700,7 +1713,7 @@ fi]) AC_DEFUN(BASH_CHECK_RTSIGS, [AC_MSG_CHECKING(for unusable real-time signals due to large values) AC_CACHE_VAL(bash_cv_unusable_rtsigs, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -1720,7 +1733,8 @@ main () #endif exit(rtmin < n_sigs); -}], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no, +} +]])], [bash_cv_unusable_rtsigs=yes], [bash_cv_unusable_rtsigs=no], [AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes) bash_cv_unusable_rtsigs=yes] )]) @@ -1767,48 +1781,43 @@ fi AC_CHECK_FUNCS(iswlower iswupper towlower towupper iswctype) -AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset, -[AC_TRY_LINK( -[#include ], -[char* cs = nl_langinfo(CODESET);], -bash_cv_langinfo_codeset=yes, bash_cv_langinfo_codeset=no)]) -if test $bash_cv_langinfo_codeset = yes; then - AC_DEFINE(HAVE_LANGINFO_CODESET) -fi +AC_REQUIRE([AM_LANGINFO_CODESET]) dnl check for wchar_t in AC_CACHE_CHECK([for wchar_t in wchar.h], bash_cv_type_wchar_t, -[AC_TRY_COMPILE( -[#include -], -[ +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +[#include ]], +[[ wchar_t foo; foo = 0; -], bash_cv_type_wchar_t=yes, bash_cv_type_wchar_t=no)]) +]] )], [bash_cv_type_wchar_t=yes], [bash_cv_type_wchar_t=no] +)]) if test $bash_cv_type_wchar_t = yes; then AC_DEFINE(HAVE_WCHAR_T, 1, [systems should define this type here]) fi dnl check for wctype_t in AC_CACHE_CHECK([for wctype_t in wctype.h], bash_cv_type_wctype_t, -[AC_TRY_COMPILE( -[#include ], -[ +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +[#include ]], +[[ wctype_t foo; foo = 0; -], bash_cv_type_wctype_t=yes, bash_cv_type_wctype_t=no)]) +]] )], [bash_cv_type_wctype_t=yes], [bash_cv_type_wctype_t=no] +)]) if test $bash_cv_type_wctype_t = yes; then AC_DEFINE(HAVE_WCTYPE_T, 1, [systems should define this type here]) fi dnl check for wint_t in AC_CACHE_CHECK([for wint_t in wctype.h], bash_cv_type_wint_t, -[AC_TRY_COMPILE( -[#include ], -[ +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +[#include ]], +[[ wint_t foo; foo = 0; -], bash_cv_type_wint_t=yes, bash_cv_type_wint_t=no)]) +]] )], [bash_cv_type_wint_t=yes], [bash_cv_type_wint_t=no] +)]) if test $bash_cv_type_wint_t = yes; then AC_DEFINE(HAVE_WINT_T, 1, [systems should define this type here]) fi @@ -1816,7 +1825,7 @@ fi dnl check for broken wcwidth AC_CACHE_CHECK([for wcwidth broken with unicode combining characters], bash_cv_wcwidth_broken, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -1835,8 +1844,9 @@ char **v; w = wcwidth (0x0301); exit (w == 0); /* exit 0 if wcwidth broken */ } -], -bash_cv_wcwidth_broken=yes, bash_cv_wcwidth_broken=no, bash_cv_wcwidth_broken=no)]) +]])], [bash_cv_wcwidth_broken=yes], [bash_cv_wcwidth_broken=no], + [bash_cv_wcwidth_broken=no] +)]) if test "$bash_cv_wcwidth_broken" = yes; then AC_DEFINE(WCWIDTH_BROKEN, 1, [wcwidth is usually not broken]) fi @@ -1886,7 +1896,7 @@ CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" AC_CACHE_VAL(ac_cv_rl_version, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -1907,10 +1917,11 @@ main() fclose(fp); exit(0); } -], -ac_cv_rl_version=`cat conftest.rlv`, -ac_cv_rl_version='0.0', -ac_cv_rl_version='8.0')]) +]])], +[ac_cv_rl_version=`cat conftest.rlv`], +[ac_cv_rl_version='0.0'], +[ac_cv_rl_version='8.0'] +)]) CFLAGS="$_save_CFLAGS" LDFLAGS="$_save_LDFLAGS" @@ -1973,57 +1984,11 @@ AC_MSG_RESULT($ac_cv_rl_version) fi ]) -AC_DEFUN(BASH_FUNC_CTYPE_NONASCII, -[ -AC_MSG_CHECKING(whether the ctype macros accept non-ascii characters) -AC_CACHE_VAL(bash_cv_func_ctype_nonascii, -[AC_TRY_RUN([ -#ifdef HAVE_LOCALE_H -#include -#endif -#include -#include -#include - -int -main(c, v) -int c; -char *v[]; -{ - char *deflocale; - unsigned char x; - int r1, r2; - -#ifdef HAVE_SETLOCALE - /* We take a shot here. If that locale is not known, try the - system default. We try this one because '\342' (226) is - known to be a printable character in that locale. */ - deflocale = setlocale(LC_ALL, "en_US.ISO8859-1"); - if (deflocale == 0) - deflocale = setlocale(LC_ALL, ""); -#endif - - x = '\342'; - r1 = isprint(x); - x -= 128; - r2 = isprint(x); - exit (r1 == 0 || r2 == 0); -} -], bash_cv_func_ctype_nonascii=yes, bash_cv_func_ctype_nonascii=no, - [AC_MSG_WARN(cannot check ctype macros if cross compiling -- defaulting to no) - bash_cv_func_ctype_nonascii=no] -)]) -AC_MSG_RESULT($bash_cv_func_ctype_nonascii) -if test $bash_cv_func_ctype_nonascii = yes; then -AC_DEFINE(CTYPE_NON_ASCII) -fi -]) - AC_DEFUN(BASH_CHECK_WCONTINUED, [ AC_MSG_CHECKING(whether WCONTINUED flag to waitpid is unavailable or available but broken) AC_CACHE_VAL(bash_cv_wcontinued_broken, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -2044,7 +2009,7 @@ main() else exit (0); } -], bash_cv_wcontinued_broken=no,bash_cv_wcontinued_broken=yes, +]])], [bash_cv_wcontinued_broken=no], [bash_cv_wcontinued_broken=yes], [AC_MSG_WARN(cannot check WCONTINUED if cross compiling -- defaulting to no) bash_cv_wcontinued_broken=no] )]) @@ -2060,7 +2025,7 @@ dnl AC_DEFUN([AM_PATH_LISPDIR], - [AC_ARG_WITH(lispdir, AC_HELP_STRING([--with-lispdir], [override the default lisp directory]), + [AC_ARG_WITH(lispdir, AS_HELP_STRING([--with-lispdir], [override the default lisp directory]), [ lispdir="$withval" AC_MSG_CHECKING([where .elc files should go]) AC_MSG_RESULT([$lispdir])], @@ -2097,7 +2062,7 @@ AC_DEFUN([BASH_FUNC_SNPRINTF], AC_CHECK_FUNCS_ONCE([snprintf]) if test X$ac_cv_func_snprintf = Xyes; then AC_CACHE_CHECK([for standard-conformant snprintf], [bash_cv_func_snprintf], - [AC_TRY_RUN([ + [AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include @@ -2108,7 +2073,7 @@ main() n = snprintf (0, 0, "%s", "0123456"); exit(n != 7); } -], bash_cv_func_snprintf=yes, bash_cv_func_snprintf=no, +]])], [bash_cv_func_snprintf=yes], [bash_cv_func_snprintf=no], [AC_MSG_WARN([cannot check standard snprintf if cross-compiling]) bash_cv_func_snprintf=yes] )]) @@ -2127,7 +2092,7 @@ AC_DEFUN([BASH_FUNC_VSNPRINTF], AC_CHECK_FUNCS_ONCE([vsnprintf]) if test X$ac_cv_func_vsnprintf = Xyes; then AC_CACHE_CHECK([for standard-conformant vsnprintf], [bash_cv_func_vsnprintf], - [AC_TRY_RUN([ + [AC_RUN_IFELSE([AC_LANG_SOURCE([[ #if HAVE_STDARG_H #include #else @@ -2165,7 +2130,7 @@ main() n = foo("%s", "0123456"); exit(n != 7); } -], bash_cv_func_vsnprintf=yes, bash_cv_func_vsnprintf=no, +]])], [bash_cv_func_vsnprintf=yes], [bash_cv_func_vsnprintf=no], [AC_MSG_WARN([cannot check standard vsnprintf if cross-compiling]) bash_cv_func_vsnprintf=yes] )]) @@ -2182,7 +2147,7 @@ main() AC_DEFUN(BASH_STRUCT_WEXITSTATUS_OFFSET, [AC_MSG_CHECKING(for offset of exit status in return status from wait) AC_CACHE_VAL(bash_cv_wexitstatus_offset, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include @@ -2216,7 +2181,7 @@ main(c, v) exit (254); } -], bash_cv_wexitstatus_offset=0, bash_cv_wexitstatus_offset=$?, +]])], [bash_cv_wexitstatus_offset=0], [bash_cv_wexitstatus_offset=$?], [AC_MSG_WARN(cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0) bash_cv_wexitstatus_offset=0] )]) @@ -2232,13 +2197,15 @@ AC_DEFUN([BASH_FUNC_SBRK], [ AC_MSG_CHECKING([for sbrk]) AC_CACHE_VAL(ac_cv_func_sbrk, - [AC_TRY_LINK([#include ], - [ void *x = sbrk (4096); ], - ac_cv_func_sbrk=yes, ac_cv_func_sbrk=no)]) + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[ void *x = sbrk (4096); ]])], + [ac_cv_func_sbrk=yes],[ac_cv_func_sbrk=no])]) AC_MSG_RESULT($ac_cv_func_sbrk) if test X$ac_cv_func_sbrk = Xyes; then AC_CACHE_CHECK([for working sbrk], [bash_cv_func_sbrk], - [AC_TRY_RUN([ + [AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include @@ -2250,10 +2217,9 @@ main(int c, char **v) x = sbrk (4096); exit ((x == (void *)-1) ? 1 : 0); } -], bash_cv_func_sbrk=yes, bash_cv_func_snprintf=sbrk, - [AC_MSG_WARN([cannot check working sbrk if cross-compiling]) - bash_cv_func_sbrk=yes] -)]) +]])],[bash_cv_func_sbrk=yes],[bash_cv_func_sbrk=no],[AC_MSG_WARN([cannot check working sbrk if cross-compiling]) + bash_cv_func_sbrk=yes +])]) if test $bash_cv_func_sbrk = no; then ac_cv_func_sbrk=no fi @@ -2267,7 +2233,7 @@ main(int c, char **v) AC_DEFUN(BASH_FUNC_FNMATCH_EQUIV_FALLBACK, [AC_MSG_CHECKING(whether fnmatch can be used to check bracket equivalence classes) AC_CACHE_VAL(bash_cv_fnmatch_equiv_fallback, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -2287,8 +2253,7 @@ main (int c, char **v) exit (0); exit (1); } - -], bash_cv_fnmatch_equiv_fallback=yes, bash_cv_fnmatch_equiv_fallback=no, +]])], [bash_cv_fnmatch_equiv_fallback=yes], [bash_cv_fnmatch_equiv_fallback=no], [AC_MSG_WARN(cannot check fnmatch if cross compiling -- defaulting to no) bash_cv_fnmatch_equiv_fallback=no] )]) diff --git a/alias.c b/alias.c index cd5e99b7e..23f967fa8 100644 --- a/alias.c +++ b/alias.c @@ -1,7 +1,7 @@ /* alias.c -- Not a full alias, but just the kind that we use in the shell. Csh style alias is somewhere else (`over there, in a box'). */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. diff --git a/array.c b/array.c index 6d3554bf4..910bbaad8 100644 --- a/array.c +++ b/array.c @@ -9,7 +9,7 @@ * chet@ins.cwru.edu */ -/* Copyright (C) 1997-2020 Free Software Foundation, Inc. +/* Copyright (C) 1997-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -84,7 +84,6 @@ array_create() ARRAY_ELEMENT *head; r = (ARRAY *)xmalloc(sizeof(ARRAY)); - r->type = array_indexed; r->max_index = -1; r->num_elements = 0; r->lastref = (ARRAY_ELEMENT *)0; @@ -134,7 +133,6 @@ ARRAY *a; if (a == 0) return((ARRAY *) NULL); a1 = array_create(); - a1->type = a->type; a1->max_index = a->max_index; a1->num_elements = a->num_elements; for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) { @@ -161,7 +159,6 @@ ARRAY_ELEMENT *s, *e; arrayind_t mi; a = array_create (); - a->type = array->type; for (mi = 0, p = s, i = 0; p != e; p = element_forw(p), i++) { n = array_create_element (element_index(p), element_value(p)); @@ -796,6 +793,27 @@ ARRAY *a; return (REVERSE_LIST(list, WORD_LIST *)); } +WORD_LIST * +array_to_kvpair_list(a) +ARRAY *a; +{ + WORD_LIST *list; + ARRAY_ELEMENT *ae; + char *k, *v; + + if (a == 0 || array_empty(a)) + return((WORD_LIST *)NULL); + list = (WORD_LIST *)NULL; + for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) { + k = itos(element_index(ae)); + v = element_value(ae); + list = make_word_list (make_bare_word(k), list); + list = make_word_list (make_bare_word(v), list); + free(k); + } + return (REVERSE_LIST(list, WORD_LIST *)); +} + ARRAY * array_assign_list (array, list) ARRAY *array; @@ -835,6 +853,55 @@ int *countp; *countp = i; return (ret); } + +ARRAY * +array_from_argv(a, vec, count) +ARRAY *a; +char **vec; +int count; +{ + arrayind_t i; + ARRAY_ELEMENT *ae; + char *t; + + if (a == 0 || array_num_elements (a) == 0) + { + for (i = 0; i < count; i++) + array_insert (a, i, t); + return a; + } + + /* Fast case */ + if (array_num_elements (a) == count && count == 1) + { + ae = element_forw (a->head); + t = vec[0] ? savestring (vec[0]) : 0; + ARRAY_ELEMENT_REPLACE (ae, t); + } + else if (array_num_elements (a) <= count) + { + /* modify in array_num_elements members in place, then add */ + ae = a->head; + for (i = 0; i < array_num_elements (a); i++) + { + ae = element_forw (ae); + t = vec[0] ? savestring (vec[0]) : 0; + ARRAY_ELEMENT_REPLACE (ae, t); + } + /* add any more */ + for ( ; i < count; i++) + array_insert (a, i, vec[i]); + } + else + { + /* deleting elements. it's faster to rebuild the array. */ + array_flush (a); + for (i = 0; i < count; i++) + array_insert (a, i, vec[i]); + } + + return a; +} /* * Return a string that is the concatenation of the elements in A from START diff --git a/array.h b/array.h index 189d646f2..4214e8b41 100644 --- a/array.h +++ b/array.h @@ -1,7 +1,7 @@ /* array.h -- definitions for the interface exported by array.c that allows the rest of the shell to manipulate array variables. */ -/* Copyright (C) 1997-2020 Free Software Foundation, Inc. +/* Copyright (C) 1997-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -27,33 +27,55 @@ typedef intmax_t arrayind_t; -enum atype {array_indexed, array_assoc}; /* only array_indexed used */ - typedef struct array { - enum atype type; arrayind_t max_index; - int num_elements; + arrayind_t num_elements; +#ifdef ALT_ARRAY_IMPLEMENTATION + arrayind_t first_index; + arrayind_t alloc_size; + struct array_element **elements; +#else struct array_element *head; struct array_element *lastref; +#endif } ARRAY; typedef struct array_element { arrayind_t ind; char *value; +#ifndef ALT_ARRAY_IMPLEMENTATION struct array_element *next, *prev; +#endif } ARRAY_ELEMENT; +#define ARRAY_DEFAULT_SIZE 1024 + typedef int sh_ae_map_func_t PARAMS((ARRAY_ELEMENT *, void *)); /* Basic operations on entire arrays */ +#ifdef ALT_ARRAY_IMPLEMENTATION +extern void array_alloc PARAMS((ARRAY *, arrayind_t)); +extern void array_resize PARAMS((ARRAY *, arrayind_t)); +extern void array_expand PARAMS((ARRAY *, arrayind_t)); +extern void array_dispose_elements PARAMS((ARRAY_ELEMENT **)); +#endif extern ARRAY *array_create PARAMS((void)); extern void array_flush PARAMS((ARRAY *)); extern void array_dispose PARAMS((ARRAY *)); extern ARRAY *array_copy PARAMS((ARRAY *)); +#ifndef ALT_ARRAY_IMPLEMENTATION extern ARRAY *array_slice PARAMS((ARRAY *, ARRAY_ELEMENT *, ARRAY_ELEMENT *)); +#else +extern ARRAY *array_slice PARAMS((ARRAY *, arrayind_t, arrayind_t)); +#endif + extern void array_walk PARAMS((ARRAY *, sh_ae_map_func_t *, void *)); +#ifndef ALT_ARRAY_IMPLEMENTATION extern ARRAY_ELEMENT *array_shift PARAMS((ARRAY *, int, int)); +#else +extern ARRAY_ELEMENT **array_shift PARAMS((ARRAY *, int, int)); +#endif extern int array_rshift PARAMS((ARRAY *, int, char *)); extern ARRAY_ELEMENT *array_unshift_element PARAMS((ARRAY *)); extern int array_shift_element PARAMS((ARRAY *, char *)); @@ -81,10 +103,12 @@ extern char *array_reference PARAMS((ARRAY *, arrayind_t)); extern WORD_LIST *array_to_word_list PARAMS((ARRAY *)); extern ARRAY *array_from_word_list PARAMS((WORD_LIST *)); extern WORD_LIST *array_keys_to_word_list PARAMS((ARRAY *)); +extern WORD_LIST *array_to_kvpair_list PARAMS((ARRAY *)); extern ARRAY *array_assign_list PARAMS((ARRAY *, WORD_LIST *)); extern char **array_to_argv PARAMS((ARRAY *, int *)); +extern ARRAY *array_from_argv PARAMS((ARRAY *, char **, int)); extern char *array_to_kvpair PARAMS((ARRAY *, int)); extern char *array_to_assign PARAMS((ARRAY *, int)); @@ -96,22 +120,42 @@ extern ARRAY *array_from_string PARAMS((char *, char *)); #define array_num_elements(a) ((a)->num_elements) #define array_max_index(a) ((a)->max_index) +#ifndef ALT_ARRAY_IMPLEMENTATION #define array_first_index(a) ((a)->head->next->ind) #define array_head(a) ((a)->head) +#define array_alloc_size(a) ((a)->alloc_size) +#else +#define array_first_index(a) ((a)->first_index) +#define array_head(a) ((a)->elements) +#endif #define array_empty(a) ((a)->num_elements == 0) #define element_value(ae) ((ae)->value) #define element_index(ae) ((ae)->ind) + +#ifndef ALT_ARRAY_IMPLEMENTATION #define element_forw(ae) ((ae)->next) #define element_back(ae) ((ae)->prev) +#else +extern arrayind_t element_forw PARAMS((ARRAY *, arrayind_t)); +extern arrayind_t element_back PARAMS((ARRAY *, arrayind_t)); +#endif + #define set_element_value(ae, val) ((ae)->value = (val)) +#ifdef ALT_ARRAY_IMPLEMENTATION +#define set_first_index(a, i) ((a)->first_index = (i)) +#endif + +#define set_max_index(a, i) ((a)->max_index = (i)) +#define set_num_elements(a, n) ((a)->num_elements = (n)) + /* Convenience */ #define array_push(a,v) \ do { array_rshift ((a), 1, (v)); } while (0) #define array_pop(a) \ - do { array_dispose_element (array_shift ((a), 1, 0)); } while (0) + do { array_shift ((a), 1, AS_DISPOSE); } while (0) #define GET_ARRAY_FROM_VAR(n, v, a) \ do { \ @@ -119,6 +163,17 @@ extern ARRAY *array_from_string PARAMS((char *, char *)); (a) = ((v) && array_p ((v))) ? array_cell (v) : (ARRAY *)0; \ } while (0) +#define ARRAY_ELEMENT_REPLACE(ae, v) \ + do { \ + free ((ae)->value); \ + (ae)->value = (v); \ + } while (0) + +#ifdef ALT_ARRAY_IMPLEMENTATION +#define ARRAY_VALUE_REPLACE(a, i, v) \ + ARRAY_ELEMENT_REPLACE((a)->elements[(i)], (v)) +#endif + #define ALL_ELEMENT_SUB(c) ((c) == '@' || (c) == '*') /* In eval.c, but uses ARRAY * */ diff --git a/array2.c b/array2.c new file mode 100644 index 000000000..fa8be00d6 --- /dev/null +++ b/array2.c @@ -0,0 +1,1374 @@ +/* + * array.c - functions to create, destroy, access, and manipulate arrays + * of strings. + * + * Arrays are structs containing an array of elements and bookkeeping information. + * An element's index is stored with it. + * + * Chet Ramey + * chet@ins.cwru.edu + */ + +/* Copyright (C) 1997-2021 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#if defined (ARRAY_VARS) + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include +#include "bashansi.h" + +#include "shell.h" +#include "array.h" +#include "builtins/common.h" + +#define ARRAY_MAX_DOUBLE 16777216 + +static ARRAY_ELEMENT **array_copy_elements PARAMS((ARRAY *)); +static char *array_to_string_internal PARAMS((ARRAY *, arrayind_t, arrayind_t, char *, int)); + +static char *spacesep = " "; + +void +array_alloc (a, n) +ARRAY *a; +arrayind_t n; +{ + arrayind_t i; + + if (a == 0) + return; /* for now */ + a->elements = (ARRAY_ELEMENT **)xmalloc (n * sizeof (ARRAY_ELEMENT *)); + for (i = 0; i < n; i++) + a->elements[i] = 0; + a->alloc_size = n; +} + +void +array_resize (a, n) +ARRAY *a; +arrayind_t n; +{ + ARRAY_ELEMENT **e, *ae; + arrayind_t i, nsize; + + if (a == 0) + return; + if (a->alloc_size > 0 && n >= a->max_index && n <= a->alloc_size) + return; + + e = (ARRAY_ELEMENT **)xrealloc (a->elements, n * sizeof (ARRAY_ELEMENT *)); + a->elements = e; + + for (i = a->alloc_size; i < n; i++) + a->elements[i] = (ARRAY_ELEMENT *)NULL; + + a->alloc_size = n; +} + +void +array_expand (a, n) +ARRAY *a; +arrayind_t n; +{ + arrayind_t nsize; + + if (n >= a->alloc_size) { + nsize = a->alloc_size ? a->alloc_size : ARRAY_DEFAULT_SIZE; + while (n >= nsize) + nsize <<= 1; + if (nsize > ARRAY_MAX_DOUBLE) + nsize = n + ARRAY_DEFAULT_SIZE; + array_resize (a, nsize); + } +} + +ARRAY * +array_create() +{ + ARRAY *r; + + r = (ARRAY *)xmalloc(sizeof(ARRAY)); + r->max_index = r->first_index = -1; + r->num_elements = 0; + r->alloc_size = 0; + r->elements = (ARRAY_ELEMENT **)NULL; + return(r); +} + +void +array_flush (a) +ARRAY *a; +{ + int r; + + if (a == 0) + return; + if (array_empty(a)) { + a->max_index = a->first_index = -1; /* paranoia */ + return; + } + for (r = a->first_index; r <= a->max_index; r++) + if (a->elements[r]) { + array_dispose_element(a->elements[r]); + a->elements[r] = 0; + } + a->max_index = a->first_index = -1; + a->num_elements = 0; +} + +void +array_dispose_elements(elist) +ARRAY_ELEMENT **elist; +{ + arrayind_t i; + + if (elist == 0) + return; + for (i = 0; elist[i]; i++) + array_dispose_element(elist[i]); + free(elist); +} + +void +array_dispose(a) +ARRAY *a; +{ + if (a == 0) + return; + array_dispose_elements (a->elements); + a->alloc_size = 0; + free(a); +} + +static ARRAY_ELEMENT ** +array_copy_elements (a) +ARRAY *a; +{ + ARRAY_ELEMENT **ret; + arrayind_t i; + + if (a == 0 || a->num_elements == 0) + return (ARRAY_ELEMENT **)NULL; + ret = (ARRAY_ELEMENT **)xmalloc (a->alloc_size * sizeof (ARRAY_ELEMENT *)); + for (i = 0; i < a->alloc_size; i++) + ret[i] = a->elements[i] ? array_copy_element (a->elements[i]) : 0; + return ret; +} + +ARRAY * +array_copy(a) +ARRAY *a; +{ + ARRAY *a1; + + if (a == 0) + return((ARRAY *) NULL); + a1 = array_create(); + a1->max_index = a->max_index; + a1->first_index = a->first_index; + a1->num_elements = a->num_elements; + + a1->alloc_size = a->alloc_size; + a1->elements = array_copy_elements (a); + + return(a1); +} + +/* + * Make and return a new array composed of the elements in array A from + * S to E, inclusive. The callers do the bounds checking. + */ +ARRAY * +array_slice(array, s, e) +ARRAY *array; +arrayind_t s, e; +{ + ARRAY *a; + ARRAY_ELEMENT *p, *n; + arrayind_t i, ni; + arrayind_t mi, nsize; + + a = array_create (); + + nsize = ARRAY_DEFAULT_SIZE; + while (nsize < array->alloc_size) + nsize <<= 1; + if (nsize > ARRAY_MAX_DOUBLE) + nsize = array->alloc_size + ARRAY_DEFAULT_SIZE; + + array_resize (a, nsize); + + for (i = s; i < e; i++) { + p = array->elements[i]; + n = p ? array_create_element (element_index(p), element_value(p)) : (ARRAY_ELEMENT *)NULL; + a->elements[i] = n; + } + a->num_elements = e - s; + a->max_index = e; + a->first_index = s; + + return a; +} + +/* + * Walk the array, calling FUNC once for each element, with the array + * element as the argument. + */ +void +array_walk(a, func, udata) +ARRAY *a; +sh_ae_map_func_t *func; +void *udata; +{ + arrayind_t i; + register ARRAY_ELEMENT *ae; + + if (a == 0 || array_empty(a)) + return; + for (i = array_first_index (a); i <= array_max_index(a); i++) { + if ((ae = a->elements[i]) == 0) + continue; + if ((*func)(ae, udata) < 0) + return; + } +} + +/* + * Shift the array A N elements to the left. Delete the first N elements + * and subtract N from the indices of the remaining elements. If FLAGS + * does not include AS_DISPOSE, this returns a null-terminated array of + * elements so the caller can dispose of the chain. If FLAGS includes + * AS_DISPOSE, this function disposes of the shifted-out elements and + * returns NULL. + */ +ARRAY_ELEMENT ** +array_shift(a, n, flags) +ARRAY *a; +int n, flags; +{ + ARRAY_ELEMENT **r, *ae; + register arrayind_t ni, ri; + int i, j; + + if (a == 0 || array_empty(a) || n <= 0) + return ((ARRAY_ELEMENT **)NULL); + + r = (ARRAY_ELEMENT **)xmalloc ((n + 1) * sizeof (ARRAY_ELEMENT *)); + + /* Easy case; shifting out all of the elements */ + if (n >= a->num_elements) { + if (flags & AS_DISPOSE) { + array_flush (a); + return ((ARRAY_ELEMENT **)NULL); + } + for (ri = 0, i = a->first_index; i <= a->max_index; i++) + if (a->elements[i]) { + r[ri++] = a->elements[i]; + a->elements[i] = 0; + } + + a->first_index = a->max_index = -1; + a->num_elements = 0; + r[ri] = (ARRAY_ELEMENT *)NULL; + return r; + } + + /* Shift out the first N elements, return them in R. Handle sparse + arrays by skipping over NULL array elements. */ + for (i = a->first_index, ri = 0, j = 0; j < n; i++) { + if ((ae = a->elements[i]) == 0) + continue; + if (i > a->max_index) + break; + ni = i + n; + j++; + if (ae) + r[ri++] = a->elements[i]; + a->elements[i] = a->elements[ni]; + if (a->elements[i]) + element_index(a->elements[i]) = i; + } + r[ri]= (ARRAY_ELEMENT *)NULL; + +#ifdef DEBUG +if (j < n) + itrace("array_shift: short count: j = %d n = %d", j, n); +#endif + + /* Now shift everything else, modifying the index in each element */ + for (; i <= a->max_index; i++) { + ni = i + n; + a->elements[i] = (ni <= a->max_index) ? a->elements[ni] : (ARRAY_ELEMENT *)NULL; + if (a->elements[i]) + element_index(a->elements[i]) = i; + } + + a->num_elements -= n; /* modify bookkeeping information */ + if (a->num_elements == 0) + a->first_index = a->max_index == -1; + else { + a->max_index -= n; + for (i = 0; i <= a->max_index; i++) + if (a->elements[i]) + break; + a->first_index = i; + } + + if (flags & AS_DISPOSE) { + for (i = 0; i < ri; i++) + array_dispose_element(r[i]); + free (r); + return ((ARRAY_ELEMENT **)NULL); + } + + return r; +} + +/* + * Shift array A right N indices. If S is non-null, it becomes the value of + * the new element 0. Returns the number of elements in the array after the + * shift. + */ +int +array_rshift (a, n, s) +ARRAY *a; +int n; +char *s; +{ + register ARRAY_ELEMENT *ae, *new; + arrayind_t ni, nsize; + + if (a == 0 || (array_empty(a) && s == 0)) + return 0; + else if (n <= 0) + return (a->num_elements); + + if (n >= a->alloc_size) + array_expand(a, n); + + /* Shift right, adjusting the element indexes as we go */ + for (ni = a->max_index; ni >= 0; ni--) { + a->elements[ni+n] = a->elements[ni]; + if (a->elements[ni+n]) + element_index(a->elements[ni+n]) = ni + n; + a->elements[ni] = (ARRAY_ELEMENT *)NULL; + } + a->max_index += n; + +#if 0 + /* Null out all the old indexes we just copied from */ + for (ni = a->first_index; ni >= 0 && ni < n; ni++) + a->elements[ni] = (ARRAY_ELEMENT *)NULL; +#endif + a->first_index += n; + + if (s) { + new = array_create_element(0, s); + a->elements[0] = new; + a->num_elements++; + a->first_index = 0; + if (array_num_elements(a) == 1) /* array was empty */ + a->max_index = 0; + } + + return (a->num_elements); +} + +ARRAY_ELEMENT * +array_unshift_element(a) +ARRAY *a; +{ + ARRAY_ELEMENT **r, *ret; + + r = array_shift (a, 1, 0); + ret = r[0]; + free (r); + return ret; +} + +int +array_shift_element(a, v) +ARRAY *a; +char *v; +{ + return (array_rshift (a, 1, v)); +} + +ARRAY * +array_quote(array) +ARRAY *array; +{ + register arrayind_t i; + ARRAY_ELEMENT *a; + char *t; + + if (array == 0 || array_head(array) == 0 || array_empty(array)) + return (ARRAY *)NULL; + for (i = array_first_index(array); i <= array_max_index(array); i++) { + if ((a = array->elements[i]) == 0) + continue; + t = quote_string (a->value); + FREE(a->value); + a->value = t; + } + return array; +} + +ARRAY * +array_quote_escapes(array) +ARRAY *array; +{ + register arrayind_t i; + ARRAY_ELEMENT *a; + char *t; + + if (array == 0 || array_head(array) == 0 || array_empty(array)) + return (ARRAY *)NULL; + for (i = array_first_index(array); i <= array_max_index(array); i++) { + if ((a = array->elements[i]) == 0) + continue; + t = quote_escapes (a->value); + FREE(a->value); + a->value = t; + } + return array; +} + +ARRAY * +array_dequote(array) +ARRAY *array; +{ + register arrayind_t i; + ARRAY_ELEMENT *a; + char *t; + + if (array == 0 || array_head(array) == 0 || array_empty(array)) + return (ARRAY *)NULL; + + for (i = array->first_index; i <= array->max_index; i++) { + if ((a = array->elements[i]) == 0) + continue; + t = dequote_string (a->value); + FREE(a->value); + a->value = t; + } + return array; +} + +ARRAY * +array_dequote_escapes(array) +ARRAY *array; +{ + register arrayind_t i; + ARRAY_ELEMENT *a; + char *t; + + if (array == 0 || array_head(array) == 0 || array_empty(array)) + return (ARRAY *)NULL; + for (i = array->first_index; i <= array->max_index; i++) { + if ((a = array->elements[i]) == 0) + continue; + t = dequote_escapes (a->value); + FREE(a->value); + a->value = t; + } + return array; +} + +ARRAY * +array_remove_quoted_nulls(array) +ARRAY *array; +{ + register arrayind_t i; + ARRAY_ELEMENT *a; + + if (array == 0 || array_head(array) == 0 || array_empty(array)) + return (ARRAY *)NULL; + for (i = array->first_index; i <= array->max_index; i++) { + if ((a = array->elements[i]) == 0) + continue; + a->value = remove_quoted_nulls (a->value); + } + return array; +} + +/* + * Return a string whose elements are the members of array A beginning at + * index START and spanning NELEM members. Null elements are counted. + * Since arrays are sparse, unset array elements are not counted. + */ +char * +array_subrange (a, start, nelem, starsub, quoted, pflags) +ARRAY *a; +arrayind_t start, nelem; +int starsub, quoted, pflags; +{ + ARRAY *a2; + arrayind_t s, e; + int i; + char *t; + WORD_LIST *wl; + + if (array_empty (a) || start > array_max_index(a)) + return ((char *)NULL); + + /* + * Find element with index START. If START corresponds to an unset + * element (arrays can be sparse), use the first element whose index + * is >= START. If START is < 0, we count START indices back from + * the end of A (not elements, even with sparse arrays -- START is an + * index). + */ + for (s = start; a->elements[s] == 0 && s <= a->max_index; s++) + ; + + if (s > a->max_index) + return ((char *)NULL); + + /* Starting at S, take NELEM elements, inclusive. */ + for (i = 0, e = s; e <= a->max_index && i < nelem; e++) { + if (a->elements[e]) /* arrays are sparse */ + i++; + } + + a2 = array_slice(a, s, e); + + wl = array_to_word_list(a2); + array_dispose(a2); + if (wl == 0) + return (char *)NULL; + t = string_list_pos_params(starsub ? '*' : '@', wl, quoted, pflags); /* XXX */ + dispose_words(wl); + + return t; +} + +char * +array_patsub (a, pat, rep, mflags) +ARRAY *a; +char *pat, *rep; +int mflags; +{ + char *t; + int pchar, qflags, pflags; + WORD_LIST *wl, *save; + + if (a == 0 || array_head(a) == 0 || array_empty(a)) + return ((char *)NULL); + + wl = array_to_word_list(a); + if (wl == 0) + return (char *)NULL; + + for (save = wl; wl; wl = wl->next) { + t = pat_subst (wl->word->word, pat, rep, mflags); + FREE (wl->word->word); + wl->word->word = t; + } + + pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; + qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + pflags = (mflags & MATCH_ASSIGNRHS) ? PF_ASSIGNRHS : 0; + + t = string_list_pos_params (pchar, save, qflags, pflags); + dispose_words(save); + + return t; +} + +char * +array_modcase (a, pat, modop, mflags) +ARRAY *a; +char *pat; +int modop; +int mflags; +{ + char *t; + int pchar, qflags, pflags; + WORD_LIST *wl, *save; + + if (a == 0 || array_head(a) == 0 || array_empty(a)) + return ((char *)NULL); + + wl = array_to_word_list(a); + if (wl == 0) + return ((char *)NULL); + + for (save = wl; wl; wl = wl->next) { + t = sh_modcase(wl->word->word, pat, modop); + FREE(wl->word->word); + wl->word->word = t; + } + + pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; + qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + pflags = (mflags & MATCH_ASSIGNRHS) ? PF_ASSIGNRHS : 0; + + t = string_list_pos_params (pchar, save, qflags, pflags); + dispose_words(save); + + return t; +} + +/* + * Allocate and return a new array element with index INDEX and value + * VALUE. + */ +ARRAY_ELEMENT * +array_create_element(indx, value) +arrayind_t indx; +char *value; +{ + ARRAY_ELEMENT *r; + + r = (ARRAY_ELEMENT *)xmalloc(sizeof(ARRAY_ELEMENT)); + r->ind = indx; + r->value = value ? savestring(value) : (char *)NULL; + return(r); +} + +ARRAY_ELEMENT * +array_copy_element(ae) +ARRAY_ELEMENT *ae; +{ + return(ae ? array_create_element(element_index(ae), element_value(ae)) + : (ARRAY_ELEMENT *) NULL); +} + +void +array_dispose_element(ae) +ARRAY_ELEMENT *ae; +{ + if (ae) { + FREE(ae->value); + free(ae); + } +} + +/* + * Add a new element with index I and value V to array A (a[i] = v). + */ +int +array_insert(a, i, v) +ARRAY *a; +arrayind_t i; +char *v; +{ + register ARRAY_ELEMENT *new, *old; + arrayind_t nsize; + + if (a == 0) + return(-1); + if (i >= a->alloc_size) + array_expand(a, i); + old = a->elements[i]; + if (i > array_max_index(a)) + a->max_index = i; + if (array_first_index(a) < 0 || i < array_first_index(a)) + a->first_index = i; + + if (old) { /* Replacing an existing element. */ + free(element_value(old)); + old->value = v ? savestring (v) : (char *)NULL; + old->ind = i; + return(0); + } else { + a->elements[i] = array_create_element(i, v); + a->num_elements++; + } + + return (-1); /* problem */ +} + +/* + * Delete the element with index I from array A and return it so the + * caller can dispose of it. + */ +ARRAY_ELEMENT * +array_remove(a, i) +ARRAY *a; +arrayind_t i; +{ + register ARRAY_ELEMENT *ae; + arrayind_t ind; + + if (a == 0 || array_empty(a)) + return((ARRAY_ELEMENT *) NULL); + if (i > array_max_index(a) || i < array_first_index(a)) + return((ARRAY_ELEMENT *)NULL); + ae = a->elements[i]; + a->elements[i] = 0; + if (ae) { + a->num_elements--; + if (a->num_elements == 0) + a->first_index = a->max_index == -1; + if (i == array_max_index(a)) { + for (ind = i; ind >= array_first_index(a); ind--) + if (a->elements[ind]) + break; + a->max_index = ind; + } + if (i == array_first_index(a)) { + for (ind = i; ind <= array_max_index(a); ind++) + if (a->elements[ind]) + break; + a->first_index = ind; + } + } + return (ae); +} + +/* + * Return the value of a[i]. + */ +char * +array_reference(a, i) +ARRAY *a; +arrayind_t i; +{ + register ARRAY_ELEMENT *ae; + + if (a == 0 || array_empty(a)) + return((char *) NULL); + if (i > array_max_index(a) || i < array_first_index(a)) + return((char *)NULL); + ae = a->elements[i]; + + return(ae ? element_value(ae) : (char *)NULL); +} + +/* Convenience routines for the shell to translate to and from the form used + by the rest of the code. */ + +WORD_LIST * +array_to_word_list(a) +ARRAY *a; +{ + register arrayind_t i; + WORD_LIST *list; + ARRAY_ELEMENT *ae; + + if (a == 0 || array_empty(a)) + return((WORD_LIST *)NULL); + list = (WORD_LIST *)NULL; + + for (i = array_first_index(a); i <= array_max_index(a); i++) { + if ((ae = a->elements[i]) == 0) + continue; + list = make_word_list (make_bare_word(element_value(ae)), list); + } + return (REVERSE_LIST(list, WORD_LIST *)); +} + +ARRAY * +array_from_word_list (list) +WORD_LIST *list; +{ + ARRAY *a; + + if (list == 0) + return((ARRAY *)NULL); + a = array_create(); + return (array_assign_list (a, list)); +} + +WORD_LIST * +array_keys_to_word_list(a) +ARRAY *a; +{ + arrayind_t ind; + WORD_LIST *list; + ARRAY_ELEMENT *ae; + char *t; + + if (a == 0 || array_empty(a)) + return((WORD_LIST *)NULL); + list = (WORD_LIST *)NULL; + for (ind = array_first_index(a); ind <= array_max_index(a); ind++) { + if ((ae = a->elements[ind]) == 0) + continue; + t = itos(element_index(ae)); + list = make_word_list (make_bare_word(t), list); + free(t); + } + return (REVERSE_LIST(list, WORD_LIST *)); +} + +WORD_LIST * +array_to_kvpair_list(a) +ARRAY *a; +{ + arrayind_t ind; + WORD_LIST *list; + ARRAY_ELEMENT *ae; + char *k, *v; + + if (a == 0 || array_empty(a)) + return((WORD_LIST *)NULL); + list = (WORD_LIST *)NULL; + for (ind = array_first_index(a); ind <= array_max_index(a); ind++) { + if ((ae = a->elements[ind]) == 0) + continue; + k = itos(element_index(ae)); + v = element_value (ae); + list = make_word_list (make_bare_word(k), list); + list = make_word_list (make_bare_word(v), list); + free(k); + } + return (REVERSE_LIST(list, WORD_LIST *)); +} + +ARRAY * +array_assign_list (array, list) +ARRAY *array; +WORD_LIST *list; +{ + register WORD_LIST *l; + register arrayind_t i; + + for (l = list, i = 0; l; l = l->next, i++) + array_insert(array, i, l->word->word); + return array; +} + +char ** +array_to_argv (a, countp) +ARRAY *a; +int *countp; +{ + char **ret, *t; + int i; + arrayind_t ind; + ARRAY_ELEMENT *ae; + + if (a == 0 || array_empty(a)) { + if (countp) + *countp = 0; + return ((char **)NULL); + } + ret = strvec_create (array_num_elements (a) + 1); + i = 0; + for (ind = array_first_index(a); ind <= array_max_index(a); ind++) { + if (a->elements[ind]) + ret[i++] = savestring (element_value(a->elements[ind])); + } + ret[i] = (char *)NULL; + if (countp) + *countp = i; + return (ret); +} + +ARRAY * +array_from_argv(a, vec, count) +ARRAY *a; +char **vec; +int count; +{ + arrayind_t i; + char *t; + + if (a == 0 || array_num_elements (a) == 0) { + for (i = 0; i < count; i++) + array_insert(a, i, vec[i]); + return a; + } + + /* Fast case */ + if (array_num_elements (a) == count && count == 1) { + t = vec[0] ? savestring (vec[0]) : 0; + ARRAY_VALUE_REPLACE(a, 0, t); + } else if (array_num_elements (a) <= count) { + /* modify in array_num_elements members in place, then add */ + for (i = 0; i < array_num_elements (a); i++) { + t = vec[i] ? savestring (vec[i]) : 0; + ARRAY_VALUE_REPLACE(a, i, t); + } + + /* add any more */ + for ( ; i < count; i++) + array_insert(a, i, vec[i]); + } else { + /* deleting elements. replace the first COUNT, free the rest */ + for (i = 0; i < count; i++) { + t = vec[i] ? savestring (vec[i]) : 0; + ARRAY_VALUE_REPLACE(a, i, t); + } + + for ( ; i <= array_max_index (a); i++) { + array_dispose_element(a->elements[i]); + a->elements[i] = (ARRAY_ELEMENT *)NULL; + } + + /* bookkeeping usually taken care of by array_insert */ + set_max_index(a, count - 1); + set_first_index(a, 0); + set_num_elements(a, count); + } + return a; +} + +/* + * Return the next non-null array element after A[IND] + */ +arrayind_t +element_forw(a, ind) +ARRAY *a; +arrayind_t ind; +{ + register arrayind_t i; + + for (i = ind + 1; i <= array_max_index(a); i++) + if (a->elements[i]) + break; + if (a->elements[i]) + return i; + return (array_max_index(a)); +} + +/* + * Return the previous non-null array element before A[IND] + */ +arrayind_t +element_back (a, ind) +ARRAY *a; +arrayind_t ind; +{ + register arrayind_t i; + + for (i = ind - 1; i >= array_first_index(a); i--) + if (a->elements[i]) + break; + if (a->elements[i] && i >= array_first_index(a)) + return i; + return (array_first_index(a)); +} + +/* + * Return a string that is the concatenation of the elements in A from START + * to END, separated by SEP. + */ +static char * +array_to_string_internal (a, start, end, sep, quoted) +ARRAY *a; +arrayind_t start, end; +char *sep; +int quoted; +{ + arrayind_t i; + char *result, *t; + ARRAY_ELEMENT *ae; + int slen, rsize, rlen, reg; + + slen = strlen(sep); + result = NULL; + for (rsize = rlen = 0, i = start; i <= end; i++) { + if ((ae = a->elements[i]) == 0) + continue; + if (rsize == 0) + result = (char *)xmalloc (rsize = 64); + if (element_value(ae)) { + t = quoted ? quote_string(element_value(ae)) : element_value(ae); + reg = strlen(t); + RESIZE_MALLOCED_BUFFER (result, rlen, (reg + slen + 2), + rsize, rsize); + strcpy(result + rlen, t); + rlen += reg; + if (quoted) + free(t); + /* + * Add a separator only after non-null elements. + */ + if (element_forw(a, i) <= end) { + strcpy(result + rlen, sep); + rlen += slen; + } + } + } + if (result) + result[rlen] = '\0'; /* XXX */ + return(result); +} + +char * +array_to_kvpair (a, quoted) +ARRAY *a; +int quoted; +{ + arrayind_t ind; + char *result, *valstr, *is; + char indstr[INT_STRLEN_BOUND(intmax_t) + 1]; + ARRAY_ELEMENT *ae; + int rsize, rlen, elen; + + if (a == 0 || array_empty (a)) + return((char *)NULL); + + result = (char *)xmalloc (rsize = 128); + result[rlen = 0] = '\0'; + + for (ind = array_first_index(a); ind <= array_max_index(a); ind++) { + if ((ae = a->elements[ind]) == 0) + continue; + is = inttostr (element_index(ae), indstr, sizeof(indstr)); + valstr = element_value (ae) ? + (ansic_shouldquote (element_value (ae)) ? + ansic_quote (element_value(ae), 0, (int *)0) : + sh_double_quote (element_value (ae))) + : (char *)NULL; + elen = STRLEN (is) + 8 + STRLEN (valstr); + RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize); + + strcpy (result + rlen, is); + rlen += STRLEN (is); + result[rlen++] = ' '; + if (valstr) { + strcpy (result + rlen, valstr); + rlen += STRLEN (valstr); + } else { + strcpy (result + rlen, "\"\""); + rlen += 2; + } + + if (ind < array_max_index (a)) + result[rlen++] = ' '; + + FREE (valstr); + } + RESIZE_MALLOCED_BUFFER (result, rlen, 1, rsize, 8); + result[rlen] = '\0'; + + if (quoted) { + /* This is not as efficient as it could be... */ + valstr = sh_single_quote (result); + free (result); + result = valstr; + } + return(result); +} + +char * +array_to_assign (a, quoted) +ARRAY *a; +int quoted; +{ + arrayind_t ind; + char *result, *valstr, *is; + char indstr[INT_STRLEN_BOUND(intmax_t) + 1]; + ARRAY_ELEMENT *ae; + int rsize, rlen, elen; + + if (a == 0 || array_empty (a)) + return((char *)NULL); + + result = (char *)xmalloc (rsize = 128); + result[0] = '('; + rlen = 1; + + for (ind = array_first_index(a); ind <= array_max_index(a); ind++) { + if ((ae = a->elements[ind]) == 0) + continue; + is = inttostr (element_index(ae), indstr, sizeof(indstr)); + valstr = element_value (ae) ? + (ansic_shouldquote (element_value (ae)) ? + ansic_quote (element_value(ae), 0, (int *)0) : + sh_double_quote (element_value (ae))) + : (char *)NULL; + elen = STRLEN (is) + 8 + STRLEN (valstr); + RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize); + + result[rlen++] = '['; + strcpy (result + rlen, is); + rlen += STRLEN (is); + result[rlen++] = ']'; + result[rlen++] = '='; + if (valstr) { + strcpy (result + rlen, valstr); + rlen += STRLEN (valstr); + } + + if (ind < array_max_index(a)) + result[rlen++] = ' '; + + FREE (valstr); + } + RESIZE_MALLOCED_BUFFER (result, rlen, 1, rsize, 8); + result[rlen++] = ')'; + result[rlen] = '\0'; + if (quoted) { + /* This is not as efficient as it could be... */ + valstr = sh_single_quote (result); + free (result); + result = valstr; + } + return(result); +} + +char * +array_to_string (a, sep, quoted) +ARRAY *a; +char *sep; +int quoted; +{ + if (a == 0) + return((char *)NULL); + if (array_empty(a)) + return(savestring("")); + return (array_to_string_internal (a, array_first_index(a), array_max_index(a), sep, quoted)); +} + +#if defined (INCLUDE_UNUSED) || defined (TEST_ARRAY) +/* + * Return an array consisting of elements in S, separated by SEP + */ +ARRAY * +array_from_string(s, sep) +char *s, *sep; +{ + ARRAY *a; + WORD_LIST *w; + + if (s == 0) + return((ARRAY *)NULL); + w = list_string (s, sep, 0); + if (w == 0) + return((ARRAY *)NULL); + a = array_from_word_list (w); + return (a); +} +#endif + +#if defined (TEST_ARRAY) +/* + * To make a running version, compile -DTEST_ARRAY and link with: + * xmalloc.o syntax.o lib/malloc/libmalloc.a lib/sh/libsh.a + */ +int interrupt_immediately = 0; + +int +signal_is_trapped(s) +int s; +{ + return 0; +} + +void +fatal_error(const char *s, ...) +{ + fprintf(stderr, "array_test: fatal memory error\n"); + abort(); +} + +void +programming_error(const char *s, ...) +{ + fprintf(stderr, "array_test: fatal programming error\n"); + abort(); +} + +WORD_DESC * +make_bare_word (s) +const char *s; +{ + WORD_DESC *w; + + w = (WORD_DESC *)xmalloc(sizeof(WORD_DESC)); + w->word = s ? savestring(s) : savestring (""); + w->flags = 0; + return w; +} + +WORD_LIST * +make_word_list(x, l) +WORD_DESC *x; +WORD_LIST *l; +{ + WORD_LIST *w; + + w = (WORD_LIST *)xmalloc(sizeof(WORD_LIST)); + w->word = x; + w->next = l; + return w; +} + +WORD_LIST * +list_string(s, t, i) +char *s, *t; +int i; +{ + char *r, *a; + WORD_LIST *wl; + + if (s == 0) + return (WORD_LIST *)NULL; + r = savestring(s); + wl = (WORD_LIST *)NULL; + a = strtok(r, t); + while (a) { + wl = make_word_list (make_bare_word(a), wl); + a = strtok((char *)NULL, t); + } + return (REVERSE_LIST (wl, WORD_LIST *)); +} + +GENERIC_LIST * +list_reverse (list) +GENERIC_LIST *list; +{ + register GENERIC_LIST *next, *prev; + + for (prev = 0; list; ) { + next = list->next; + list->next = prev; + prev = list; + list = next; + } + return prev; +} + +char * +pat_subst(s, t, u, i) +char *s, *t, *u; +int i; +{ + return ((char *)NULL); +} + +char * +quote_string(s) +char *s; +{ + return savestring(s); +} + +print_element(ae) +ARRAY_ELEMENT *ae; +{ + char lbuf[INT_STRLEN_BOUND (intmax_t) + 1]; + + printf("array[%s] = %s\n", + inttostr (element_index(ae), lbuf, sizeof (lbuf)), + element_value(ae)); +} + +print_array(a) +ARRAY *a; +{ + printf("\n"); + array_walk(a, print_element, (void *)NULL); +} + +main() +{ + ARRAY *a, *new_a, *copy_of_a; + ARRAY_ELEMENT *ae, *aew; + char *s; + + a = array_create(); + array_insert(a, 1, "one"); + array_insert(a, 7, "seven"); + array_insert(a, 4, "four"); + array_insert(a, 1029, "one thousand twenty-nine"); + array_insert(a, 12, "twelve"); + array_insert(a, 42, "forty-two"); + print_array(a); + s = array_to_string (a, " ", 0); + printf("s = %s\n", s); + copy_of_a = array_from_string(s, " "); + printf("copy_of_a:"); + print_array(copy_of_a); + array_dispose(copy_of_a); + printf("\n"); + free(s); + ae = array_remove(a, 4); + array_dispose_element(ae); + ae = array_remove(a, 1029); + array_dispose_element(ae); + array_insert(a, 16, "sixteen"); + print_array(a); + s = array_to_string (a, " ", 0); + printf("s = %s\n", s); + copy_of_a = array_from_string(s, " "); + printf("copy_of_a:"); + print_array(copy_of_a); + array_dispose(copy_of_a); + printf("\n"); + free(s); + array_insert(a, 2, "two"); + array_insert(a, 1029, "new one thousand twenty-nine"); + array_insert(a, 0, "zero"); + array_insert(a, 134, ""); + print_array(a); + s = array_to_string (a, ":", 0); + printf("s = %s\n", s); + copy_of_a = array_from_string(s, ":"); + printf("copy_of_a:"); + print_array(copy_of_a); + array_dispose(copy_of_a); + printf("\n"); + free(s); + new_a = array_copy(a); + print_array(new_a); + s = array_to_string (new_a, ":", 0); + printf("s = %s\n", s); + copy_of_a = array_from_string(s, ":"); + free(s); + printf("copy_of_a:"); + print_array(copy_of_a); + array_shift(copy_of_a, 2, AS_DISPOSE); + printf("copy_of_a shifted by two:"); + print_array(copy_of_a); + ae = array_shift(copy_of_a, 2, 0); + printf("copy_of_a shifted by two:"); + print_array(copy_of_a); + for ( ; ae; ) { + aew = element_forw(ae); + array_dispose_element(ae); + ae = aew; + } + array_rshift(copy_of_a, 1, (char *)0); + printf("copy_of_a rshift by 1:"); + print_array(copy_of_a); + array_rshift(copy_of_a, 2, "new element zero"); + printf("copy_of_a rshift again by 2 with new element zero:"); + print_array(copy_of_a); + s = array_to_assign(copy_of_a, 0); + printf("copy_of_a=%s\n", s); + free(s); + ae = array_shift(copy_of_a, array_num_elements(copy_of_a), 0); + for ( ; ae; ) { + aew = element_forw(ae); + array_dispose_element(ae); + ae = aew; + } + array_dispose(copy_of_a); + printf("\n"); + array_dispose(a); + array_dispose(new_a); +} + +#endif /* TEST_ARRAY */ +#endif /* ARRAY_VARS */ diff --git a/arrayfunc.c b/arrayfunc.c index 9338dfc71..2c05d15b4 100644 --- a/arrayfunc.c +++ b/arrayfunc.c @@ -1,6 +1,6 @@ /* arrayfunc.c -- High-level array functions used by other parts of the shell. */ -/* Copyright (C) 2001-2020 Free Software Foundation, Inc. +/* Copyright (C) 2001-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -53,14 +53,14 @@ int assoc_expand_once = 0; int array_expand_once = 0; static SHELL_VAR *bind_array_var_internal PARAMS((SHELL_VAR *, arrayind_t, char *, char *, int)); -static SHELL_VAR *assign_array_element_internal PARAMS((SHELL_VAR *, char *, char *, char *, int, char *, int)); +static SHELL_VAR *assign_array_element_internal PARAMS((SHELL_VAR *, char *, char *, char *, int, char *, int, array_eltstate_t *)); static void assign_assoc_from_kvlist PARAMS((SHELL_VAR *, WORD_LIST *, HASH_TABLE *, int)); static char *quote_assign PARAMS((const char *)); static void quote_array_assignment_chars PARAMS((WORD_LIST *)); static char *quote_compound_array_word PARAMS((char *, int)); -static char *array_value_internal PARAMS((const char *, int, int, int *, arrayind_t *)); +static char *array_value_internal PARAMS((const char *, int, int, array_eltstate_t *)); /* Standard error message to use when encountering an invalid array subscript */ const char * const bash_badsub_errmsg = N_("bad array subscript"); @@ -318,19 +318,44 @@ bind_assoc_variable (entry, name, key, value, flags) return (bind_assoc_var_internal (entry, assoc_cell (entry), key, value, flags)); } +inline void +init_eltstate (array_eltstate_t *estatep) +{ + if (estatep) + { + estatep->type = ARRAY_INVALID; + estatep->subtype = 0; + estatep->key = estatep->value = 0; + estatep->ind = INTMAX_MIN; + } +} + +inline void +flush_eltstate (array_eltstate_t *estatep) +{ + if (estatep) + FREE (estatep->key); +} + /* Parse NAME, a lhs of an assignment statement of the form v[s], and assign VALUE to that array element by calling bind_array_variable(). Flags are ASS_ assignment flags */ SHELL_VAR * -assign_array_element (name, value, flags) +assign_array_element (name, value, flags, estatep) char *name, *value; int flags; + array_eltstate_t *estatep; { char *sub, *vname; - int sublen, isassoc; + int sublen, isassoc, avflags; SHELL_VAR *entry; - vname = array_variable_name (name, (flags & ASS_NOEXPAND) != 0, &sub, &sublen); + avflags = 0; + if (flags & ASS_NOEXPAND) + avflags |= AV_NOEXPAND; + if (flags & ASS_ONEWORD) + avflags |= AV_ONEWORD; + vname = array_variable_name (name, avflags, &sub, &sublen); if (vname == 0) return ((SHELL_VAR *)NULL); @@ -338,21 +363,36 @@ assign_array_element (name, value, flags) entry = find_variable (vname); isassoc = entry && assoc_p (entry); - if (((isassoc == 0 || (flags & ASS_NOEXPAND) == 0) && (ALL_ELEMENT_SUB (sub[0]) && sub[1] == ']')) || (sublen <= 1)) + /* We don't allow assignment to `*' or `@' associative array keys if the + caller hasn't told us the subscript has already been expanded + (ASS_NOEXPAND). If the caller has explicitly told us it's ok + (ASS_ALLOWALLSUB) we allow it. */ + if (((isassoc == 0 || (flags & (ASS_NOEXPAND|ASS_ALLOWALLSUB)) == 0) && + (ALL_ELEMENT_SUB (sub[0]) && sub[1] == ']')) || + (sublen <= 1) || + (sub[sublen] != '\0')) /* sanity check */ { free (vname); err_badarraysub (name); return ((SHELL_VAR *)NULL); } - entry = assign_array_element_internal (entry, name, vname, sub, sublen, value, flags); + entry = assign_array_element_internal (entry, name, vname, sub, sublen, value, flags, estatep); + +#if ARRAY_EXPORT + if (entry && exported_p (entry)) + { + INVALIDATE_EXPORTSTR (entry); + array_needs_making = 1; + } +#endif free (vname); return entry; } static SHELL_VAR * -assign_array_element_internal (entry, name, vname, sub, sublen, value, flags) +assign_array_element_internal (entry, name, vname, sub, sublen, value, flags, estatep) SHELL_VAR *entry; char *name; /* only used for error messages */ char *vname; @@ -360,15 +400,19 @@ assign_array_element_internal (entry, name, vname, sub, sublen, value, flags) int sublen; char *value; int flags; + array_eltstate_t *estatep; { - char *akey; + char *akey, *nkey; arrayind_t ind; + char *newval; + + /* rely on the caller to initialize estatep */ if (entry && assoc_p (entry)) { sub[sublen-1] = '\0'; if ((flags & ASS_NOEXPAND) == 0) - akey = expand_assignment_string_to_string (sub, 0); /* [ */ + akey = expand_subscript_string (sub, 0); /* [ */ else akey = savestring (sub); sub[sublen-1] = ']'; @@ -378,7 +422,15 @@ assign_array_element_internal (entry, name, vname, sub, sublen, value, flags) FREE (akey); return ((SHELL_VAR *)NULL); } + if (estatep) + nkey = savestring (akey); /* assoc_insert/assoc_replace frees akey */ entry = bind_assoc_variable (entry, vname, akey, value, flags); + if (estatep) + { + estatep->type = ARRAY_ASSOC; + estatep->key = nkey; + estatep->value = entry ? assoc_reference (assoc_cell (entry), nkey) : 0; + } } else { @@ -392,6 +444,12 @@ assign_array_element_internal (entry, name, vname, sub, sublen, value, flags) return ((SHELL_VAR *)NULL); } entry = bind_array_variable (vname, ind, value, flags); + if (estatep) + { + estatep->type = ARRAY_INDEXED; + estatep->ind = ind; + estatep->value = entry ? array_reference (array_cell (entry), ind) : 0; + } } return (entry); @@ -446,6 +504,8 @@ find_or_make_array_variable (name, flags) report_error (_("%s: cannot convert indexed to associative array"), name); return ((SHELL_VAR *)NULL); } + else if (flags & 2) + var = assoc_p (var) ? var : convert_var_to_assoc (var); else if (array_p (var) == 0 && assoc_p (var) == 0) var = convert_var_to_array (var); @@ -523,8 +583,17 @@ expand_compound_array_assignment (var, value, flags) shell expansions including pathname generation and word splitting. */ /* First we split the string on whitespace, using the shell parser (ksh93 seems to do this). */ + /* XXX - this needs a rethink, maybe use split_at_delims */ list = parse_string_to_word_list (val, 1, "array assign"); + /* If the parser has quoted CTLESC and CTNLNUL with CTLESC in unquoted + words, we need to remove those here because the code below assumes + they are there because they exist in the original word. */ + /* XXX - if we rethink parse_string_to_word_list above, change this. */ + for (nlist = list; nlist; nlist = nlist->next) + if ((nlist->word->flags & W_QUOTED) == 0) + remove_quoted_escapes (nlist->word->word); + /* Note that we defer expansion of the assignment statements for associative arrays here, so we don't have to scan the subscript and find the ending bracket twice. See the caller below. */ @@ -573,7 +642,7 @@ assign_assoc_from_kvlist (var, nlist, h, flags) if (list->next) list = list->next; - akey = expand_assignment_string_to_string (k, 0); + akey = expand_subscript_string (k, 0); if (akey == 0 || *akey == 0) { err_badarraysub (k); @@ -581,7 +650,7 @@ assign_assoc_from_kvlist (var, nlist, h, flags) continue; } - aval = expand_assignment_string_to_string (v, 0); + aval = expand_subscript_string (v, 0); if (aval == 0) { aval = (char *)xmalloc (1); @@ -606,10 +675,13 @@ char * expand_and_quote_kvpair_word (w) char *w; { - char *t, *r; + char *r, *s, *t; - t = w ? expand_assignment_string_to_string (w, 0) : 0; - r = sh_single_quote (t ? t : ""); + t = w ? expand_subscript_string (w, 0) : 0; + s = (t && strchr (t, CTLESC)) ? quote_escapes (t) : t; + r = sh_single_quote (s ? s : ""); + if (s != t) + free (s); free (t); return r; } @@ -709,13 +781,10 @@ assign_compound_array_list (var, nlist, flags) continue; } - if (ALL_ELEMENT_SUB (w[1]) && len == 2) + if (ALL_ELEMENT_SUB (w[1]) && len == 2 && array_p (var)) { set_exit_status (EXECUTION_FAILURE); - if (assoc_p (var)) - report_error (_("%s: invalid associative array key"), w); - else - report_error (_("%s: cannot assign to non-numeric index"), w); + report_error (_("%s: cannot assign to non-numeric index"), w); continue; } @@ -737,7 +806,7 @@ assign_compound_array_list (var, nlist, flags) { /* This is not performed above, see expand_compound_array_assignment */ w[len] = '\0'; /*[*/ - akey = expand_assignment_string_to_string (w+1, 0); + akey = expand_subscript_string (w+1, 0); w[len] = ']'; /* And we need to expand the value also, see below */ if (akey == 0 || *akey == 0) @@ -773,7 +842,7 @@ assign_compound_array_list (var, nlist, flags) /* See above; we need to expand the value here */ if (assoc_p (var)) { - val = expand_assignment_string_to_string (val, 0); + val = expand_subscript_string (val, 0); if (val == 0) { val = (char *)xmalloc (1); @@ -888,26 +957,33 @@ quote_compound_array_word (w, type) int ind, wlen, i; if (w[0] != LBRACK) - return (sh_single_quote (w)); + return (sh_single_quote (w)); /* XXX - quote CTLESC */ ind = skipsubscript (w, 0, 0); if (w[ind] != RBRACK) - return (sh_single_quote (w)); + return (sh_single_quote (w)); /* XXX - quote CTLESC */ wlen = strlen (w); w[ind] = '\0'; - sub = sh_single_quote (w+1); + t = (strchr (w+1, CTLESC)) ? quote_escapes (w+1) : w+1; + sub = sh_single_quote (t); + if (t != w+1) + free (t); w[ind] = RBRACK; nword = xmalloc (wlen * 4 + 5); /* wlen*4 is max single quoted length */ nword[0] = LBRACK; i = STRLEN (sub); memcpy (nword+1, sub, i); + free (sub); i++; /* accommodate the opening LBRACK */ nword[i++] = w[ind++]; /* RBRACK */ if (w[ind] == '+') nword[i++] = w[ind++]; nword[i++] = w[ind++]; - value = sh_single_quote (w + ind); + t = (strchr (w+ind, CTLESC)) ? quote_escapes (w+ind) : w+ind; + value = sh_single_quote (t); + if (t != w+ind) + free (t); strcpy (nword + i, value); return nword; @@ -925,19 +1001,22 @@ expand_and_quote_assoc_word (w, type) char *w; int type; { - char *nword, *key, *value, *t; + char *nword, *key, *value, *s, *t; int ind, wlen, i; if (w[0] != LBRACK) - return (sh_single_quote (w)); + return (sh_single_quote (w)); /* XXX - quote_escapes */ ind = skipsubscript (w, 0, 0); if (w[ind] != RBRACK) - return (sh_single_quote (w)); + return (sh_single_quote (w)); /* XXX - quote_escapes */ w[ind] = '\0'; - t = expand_assignment_string_to_string (w+1, 0); + t = expand_subscript_string (w+1, 0); + s = (t && strchr (t, CTLESC)) ? quote_escapes (t) : t; + key = sh_single_quote (s ? s : ""); + if (s != t) + free (s); w[ind] = RBRACK; - key = sh_single_quote (t ? t : ""); free (t); wlen = STRLEN (key); @@ -951,8 +1030,11 @@ expand_and_quote_assoc_word (w, type) nword[i++] = w[ind++]; nword[i++] = w[ind++]; - t = expand_assignment_string_to_string (w+ind, 0); - value = sh_single_quote (t ? t : ""); + t = expand_subscript_string (w+ind, 0); + s = (t && strchr (t, CTLESC)) ? quote_escapes (t) : t; + value = sh_single_quote (s ? s : ""); + if (s != t) + free (s); free (t); nword = xrealloc (nword, wlen + 5 + STRLEN (value)); strcpy (nword + i, value); @@ -972,7 +1054,7 @@ quote_compound_array_list (list, type) WORD_LIST *list; int type; { - char *t; + char *s, *t; WORD_LIST *l; for (l = list; l; l = l->next) @@ -980,7 +1062,12 @@ quote_compound_array_list (list, type) if (l->word == 0 || l->word->word == 0) continue; /* should not happen, but just in case... */ if ((l->word->flags & W_ASSIGNMENT) == 0) - t = sh_single_quote (l->word->word); + { + s = (strchr (l->word->word, CTLESC)) ? quote_escapes (l->word->word) : l->word->word; + t = sh_single_quote (s); + if (s != l->word->word) + free (s); + } else t = quote_compound_array_word (l->word->word, type); free (l->word->word); @@ -1020,32 +1107,34 @@ quote_array_assignment_chars (list) /* This function is called with SUB pointing to just after the beginning `[' of an array subscript and removes the array element to which SUB expands from array VAR. A subscript of `*' or `@' unsets the array. */ -/* If FLAGS&1 we don't expand the subscript; we just use it as-is. */ +/* If FLAGS&1 (VA_NOEXPAND) we don't expand the subscript; we just use it + as-is. If FLAGS&VA_ONEWORD, we don't try to use skipsubscript to parse + the subscript, we just assume the subscript ends with a close bracket, + if one is present, and use what's inside the brackets. */ int unbind_array_element (var, sub, flags) SHELL_VAR *var; char *sub; int flags; { - int len; arrayind_t ind; char *akey; ARRAY_ELEMENT *ae; - len = skipsubscript (sub, 0, (flags&1) || (var && assoc_p(var))); /* XXX */ - if (sub[len] != ']' || len == 0) - { - builtin_error ("%s[%s: %s", var->name, sub, _(bash_badsub_errmsg)); - return -1; - } - sub[len] = '\0'; + /* Assume that the caller (unset_builtin) passes us a null-terminated SUB, + so we don't have to use VA_ONEWORD or parse the subscript again with + skipsubscript(). */ if (ALL_ELEMENT_SUB (sub[0]) && sub[1] == 0) { if (array_p (var) || assoc_p (var)) { - unbind_variable (var->name); /* XXX -- {array,assoc}_flush ? */ - return (0); + if (flags & VA_ALLOWALL) + { + unbind_variable (var->name); /* XXX -- {array,assoc}_flush ? */ + return (0); + } + /* otherwise we fall through and try to unset element `@' or `*' */ } else return -2; /* don't allow this to unset scalar variables */ @@ -1053,7 +1142,7 @@ unbind_array_element (var, sub, flags) if (assoc_p (var)) { - akey = (flags & 1) ? sub : expand_assignment_string_to_string (sub, 0); + akey = (flags & VA_NOEXPAND) ? sub : expand_subscript_string (sub, 0); if (akey == 0 || *akey == 0) { builtin_error ("[%s]: %s", sub, _(bash_badsub_errmsg)); @@ -1066,7 +1155,28 @@ unbind_array_element (var, sub, flags) } else if (array_p (var)) { - ind = array_expand_index (var, sub, len+1, 0); + if (ALL_ELEMENT_SUB (sub[0]) && sub[1] == 0) + { + /* We can go several ways here: + 1) remove the array (backwards compatible) + 2) empty the array (new behavior) + 3) do nothing; treat the `@' or `*' as an expression and throw + an error + */ + /* Behavior 1 */ + if (shell_compatibility_level <= 51) + { + unbind_variable (name_cell (var)); + return 0; + } + else /* Behavior 2 */ + { + array_flush (array_cell (var)); + return 0; + } + /* Fall through for behavior 3 */ + } + ind = array_expand_index (var, sub, strlen (sub) + 1, 0); /* negative subscripts to indexed arrays count back from end */ if (ind < 0) ind = array_max_index (array_cell (var)) + 1 + ind; @@ -1082,7 +1192,7 @@ unbind_array_element (var, sub, flags) else /* array_p (var) == 0 && assoc_p (var) == 0 */ { akey = this_command_name; - ind = array_expand_index (var, sub, len+1, 0); + ind = array_expand_index (var, sub, strlen (sub) + 1, 0); this_command_name = akey; if (ind == 0) { @@ -1144,14 +1254,23 @@ print_assoc_assignment (var, quoted) /* Return 1 if NAME is a properly-formed array reference v[sub]. */ +/* Return 1 if NAME is a properly-formed array reference v[sub]. */ + +/* When NAME is a properly-formed array reference and a non-null argument SUBP + is supplied, '[' and ']' that enclose the subscript are replaced by '\0', + and the pointer to the subscript in NAME is assigned to *SUBP, so that NAME + and SUBP can be later used as the array name and the subscript, + respectively. When SUBP is the null pointer, the original string NAME will + not be modified. */ /* We need to reserve 1 for FLAGS, which we pass to skipsubscript. */ int -valid_array_reference (name, flags) - const char *name; +tokenize_array_reference (name, flags, subp) + char *name; int flags; + char **subp; { char *t; - int r, len, isassoc; + int r, len, isassoc, ssflags; SHELL_VAR *entry; t = mbschr (name, '['); /* ] */ @@ -1166,10 +1285,15 @@ valid_array_reference (name, flags) if (r == 0) return 0; + ssflags = 0; if (isassoc && ((flags & (VA_NOEXPAND|VA_ONEWORD)) == (VA_NOEXPAND|VA_ONEWORD))) len = strlen (t) - 1; else if (isassoc) - len = skipsubscript (t, 0, flags&VA_NOEXPAND); /* VA_NOEXPAND must be 1 */ + { + if (flags & VA_NOEXPAND) + ssflags |= 1; + len = skipsubscript (t, 0, ssflags); + } else /* Check for a properly-terminated non-null subscript. */ len = skipsubscript (t, 0, 0); /* arithmetic expression */ @@ -1182,16 +1306,34 @@ valid_array_reference (name, flags) existing associative arrays, using isassoc */ for (r = 1; r < len; r++) if (whitespace (t[r]) == 0) - return 1; - return 0; -#else + break; + if (r == len) + return 0; /* Fail if the subscript contains only whitespaces. */ +#endif + + if (subp) + { + t[0] = t[len] = '\0'; + *subp = t + 1; + } + /* This allows blank subscripts */ return 1; -#endif } return 0; } +/* Return 1 if NAME is a properly-formed array reference v[sub]. */ + +/* We need to reserve 1 for FLAGS, which we pass to skipsubscript. */ +int +valid_array_reference (name, flags) + const char *name; + int flags; +{ + return tokenize_array_reference ((char *)name, flags, (char **)NULL); +} + /* Expand the array index beginning at S and extending LEN characters. */ arrayind_t array_expand_index (var, s, len, flags) @@ -1201,7 +1343,7 @@ array_expand_index (var, s, len, flags) int flags; { char *exp, *t, *savecmd; - int expok; + int expok, eflag; arrayind_t val; exp = (char *)xmalloc (len); @@ -1212,11 +1354,13 @@ array_expand_index (var, s, len, flags) t = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH|Q_ARRAYSUB); /* XXX - Q_ARRAYSUB for future use */ else t = exp; -#endif +#else t = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH|Q_ARRAYSUB); /* XXX - Q_ARRAYSUB for future use */ +#endif savecmd = this_command_name; this_command_name = (char *)NULL; - val = evalexp (t, EXP_EXPANDED, &expok); /* XXX - was 0 but we expanded exp already */ + eflag = (shell_compatibility_level > 51) ? 0 : EXP_EXPANDED; + val = evalexp (t, eflag, &expok); /* XXX - was 0 but we expanded exp already */ this_command_name = savecmd; if (t != exp) free (t); @@ -1245,7 +1389,7 @@ array_variable_name (s, flags, subp, lenp) int *lenp; { char *t, *ret; - int ind, ni; + int ind, ni, ssflags; t = mbschr (s, '['); if (t == 0) @@ -1257,7 +1401,15 @@ array_variable_name (s, flags, subp, lenp) return ((char *)NULL); } ind = t - s; - ni = skipsubscript (s, ind, flags); /* XXX - was 0 not flags */ + if ((flags & (AV_NOEXPAND|AV_ONEWORD)) == (AV_NOEXPAND|AV_ONEWORD)) + ni = strlen (s) - 1; + else + { + ssflags = 0; + if (flags & AV_NOEXPAND) + ssflags |= 1; + ni = skipsubscript (s, ind, ssflags); + } if (ni <= ind + 1 || s[ni] != ']') { err_badarraysub (s); @@ -1323,19 +1475,19 @@ array_variable_part (s, flags, subp, lenp) is non-null it gets 1 if the array reference is name[*], 2 if the reference is name[@], and 0 otherwise. */ static char * -array_value_internal (s, quoted, flags, rtype, indp) +array_value_internal (s, quoted, flags, estatep) const char *s; - int quoted, flags, *rtype; - arrayind_t *indp; + int quoted, flags; + array_eltstate_t *estatep; { - int len; + int len, isassoc, subtype; arrayind_t ind; char *akey; char *retval, *t, *temp; WORD_LIST *l; SHELL_VAR *var; - var = array_variable_part (s, (flags&AV_NOEXPAND) ? 1 : 0, &t, &len); /* XXX */ + var = array_variable_part (s, flags, &t, &len); /* XXX */ /* Expand the index, even if the variable doesn't exist, in case side effects are needed, like ${w[i++]} where w is unset. */ @@ -1347,38 +1499,53 @@ array_value_internal (s, quoted, flags, rtype, indp) if (len == 0) return ((char *)NULL); /* error message already printed */ + isassoc = var && assoc_p (var); /* [ */ akey = 0; - if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']') + subtype = 0; + if (estatep) + estatep->value = (char *)NULL; + + /* Backwards compatibility: we only change the behavior of A[@] and A[*] + for associative arrays, and the caller has to request it. */ + if ((isassoc == 0 || (flags & AV_ATSTARKEYS) == 0) && ALL_ELEMENT_SUB (t[0]) && t[1] == ']') { - if (rtype) - *rtype = (t[0] == '*') ? 1 : 2; + if (estatep) + estatep->subtype = (t[0] == '*') ? 1 : 2; if ((flags & AV_ALLOWALL) == 0) { err_badarraysub (s); return ((char *)NULL); } - else if (var == 0 || value_cell (var) == 0) /* XXX - check for invisible_p(var) ? */ + else if (var == 0 || value_cell (var) == 0) return ((char *)NULL); else if (invisible_p (var)) return ((char *)NULL); else if (array_p (var) == 0 && assoc_p (var) == 0) - l = add_string_to_list (value_cell (var), (WORD_LIST *)NULL); + { + if (estatep) + estatep->type = ARRAY_SCALAR; + l = add_string_to_list (value_cell (var), (WORD_LIST *)NULL); + } else if (assoc_p (var)) { + if (estatep) + estatep->type = ARRAY_ASSOC; l = assoc_to_word_list (assoc_cell (var)); if (l == (WORD_LIST *)NULL) return ((char *)NULL); } else { + if (estatep) + estatep->type = ARRAY_INDEXED; l = array_to_word_list (array_cell (var)); if (l == (WORD_LIST *)NULL) return ((char *) NULL); } - /* Caller of array_value takes care of inspecting rtype and duplicating - retval if rtype == 0, so this is not a memory leak */ + /* Caller of array_value takes care of inspecting estatep->subtype and + duplicating retval if subtype == 0, so this is not a memory leak */ if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) { temp = string_list_dollar_star (l, quoted, (flags & AV_ASSIGNRHS) ? PF_ASSIGNRHS : 0); @@ -1392,11 +1559,11 @@ array_value_internal (s, quoted, flags, rtype, indp) } else { - if (rtype) - *rtype = 0; + if (estatep) + estatep->subtype = 0; if (var == 0 || array_p (var) || assoc_p (var) == 0) { - if ((flags & AV_USEIND) == 0 || indp == 0) + if ((flags & AV_USEIND) == 0 || estatep == 0) { ind = array_expand_index (var, t, len, flags); if (ind < 0) @@ -1407,17 +1574,23 @@ array_value_internal (s, quoted, flags, rtype, indp) if (ind < 0) INDEX_ERROR(); } - if (indp) - *indp = ind; + if (estatep) + estatep->ind = ind; } - else if (indp) - ind = *indp; + else if (estatep && (flags & AV_USEIND)) + ind = estatep->ind; + if (estatep && var) + estatep->type = array_p (var) ? ARRAY_INDEXED : ARRAY_SCALAR; } else if (assoc_p (var)) { t[len - 1] = '\0'; - if ((flags & AV_NOEXPAND) == 0) - akey = expand_assignment_string_to_string (t, 0); /* [ */ + if (estatep) + estatep->type = ARRAY_ASSOC; + if ((flags & AV_USEIND) && estatep && estatep->key) + akey = savestring (estatep->key); + else if ((flags & AV_NOEXPAND) == 0) + akey = expand_subscript_string (t, 0); /* [ */ else akey = savestring (t); t[len - 1] = ']'; @@ -1427,26 +1600,34 @@ array_value_internal (s, quoted, flags, rtype, indp) INDEX_ERROR(); } } - - if (var == 0 || value_cell (var) == 0) /* XXX - check invisible_p(var) ? */ + + if (var == 0 || value_cell (var) == 0) { - FREE (akey); + FREE (akey); return ((char *)NULL); } else if (invisible_p (var)) { - FREE (akey); + FREE (akey); return ((char *)NULL); } if (array_p (var) == 0 && assoc_p (var) == 0) - return (ind == 0 ? value_cell (var) : (char *)NULL); + retval = (ind == 0) ? value_cell (var) : (char *)NULL; else if (assoc_p (var)) { retval = assoc_reference (assoc_cell (var), akey); - free (akey); + if (estatep && estatep->key && (flags & AV_USEIND)) + free (akey); /* duplicated estatep->key */ + else if (estatep) + estatep->key = akey; /* XXX - caller must manage */ + else /* not saving it anywhere */ + free (akey); } else retval = array_reference (array_cell (var), ind); + + if (estatep) + estatep->value = retval; } return retval; @@ -1455,12 +1636,15 @@ array_value_internal (s, quoted, flags, rtype, indp) /* Return a string containing the elements described by the array and subscript contained in S, obeying quoting for subscripts * and @. */ char * -array_value (s, quoted, flags, rtype, indp) +array_value (s, quoted, flags, estatep) const char *s; - int quoted, flags, *rtype; - arrayind_t *indp; + int quoted, flags; + array_eltstate_t *estatep; { - return (array_value_internal (s, quoted, flags|AV_ALLOWALL, rtype, indp)); + char *retval; + + retval = array_value_internal (s, quoted, flags|AV_ALLOWALL, estatep); + return retval; } /* Return the value of the array indexing expression S as a single string. @@ -1468,12 +1652,15 @@ array_value (s, quoted, flags, rtype, indp) is used by other parts of the shell such as the arithmetic expression evaluator in expr.c. */ char * -get_array_value (s, flags, rtype, indp) +get_array_value (s, flags, estatep) const char *s; - int flags, *rtype; - arrayind_t *indp; + int flags; + array_eltstate_t *estatep; { - return (array_value_internal (s, 0, flags, rtype, indp)); + char *retval; + + retval = array_value_internal (s, 0, flags, estatep); + return retval; } char * diff --git a/arrayfunc.h b/arrayfunc.h index 838e76d2d..69112b579 100644 --- a/arrayfunc.h +++ b/arrayfunc.h @@ -1,6 +1,6 @@ /* arrayfunc.h -- declarations for miscellaneous array functions in arrayfunc.c */ -/* Copyright (C) 2001-2020 Free Software Foundation, Inc. +/* Copyright (C) 2001-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -23,6 +23,29 @@ /* Must include variables.h before including this file. */ +/* An object to encapsulate the state of an array element. It can describe + an array assignment A[KEY]=VALUE or a[IND]=VALUE depending on TYPE, or + for passing array subscript references around, where VALUE would be + ${a[IND]} or ${A[KEY]}. This is not dependent on ARRAY_VARS so we can + use it in function parameters. */ + +/* values for `type' field */ +#define ARRAY_INVALID -1 +#define ARRAY_SCALAR 0 +#define ARRAY_INDEXED 1 +#define ARRAY_ASSOC 2 + +/* KEY will contain allocated memory if called through the assign_array_element + code path because of how assoc_insert works. */ +typedef struct element_state +{ + short type; /* assoc or indexed, says which fields are valid */ + short subtype; /* `*', `@', or something else */ + arrayind_t ind; + char *key; /* can be allocated memory */ + char *value; +} array_eltstate_t; + #if defined (ARRAY_VARS) /* This variable means to not expand associative array subscripts more than @@ -32,17 +55,23 @@ extern int assoc_expand_once; /* The analog for indexed array subscripts */ extern int array_expand_once; -/* Flags for array_value_internal and callers array_value/get_array_value */ -#define AV_ALLOWALL 0x001 +/* Flags for array_value_internal and callers array_value/get_array_value; also + used by array_variable_name and array_variable_part. */ +#define AV_ALLOWALL 0x001 /* treat a[@] like $@ and a[*] like $* */ #define AV_QUOTED 0x002 #define AV_USEIND 0x004 #define AV_USEVAL 0x008 /* XXX - should move this */ #define AV_ASSIGNRHS 0x010 /* no splitting, special case ${a[@]} */ #define AV_NOEXPAND 0x020 /* don't run assoc subscripts through word expansion */ +#define AV_ONEWORD 0x040 /* not used yet */ +#define AV_ATSTARKEYS 0x080 /* accept a[@] and a[*] but use them as keys, not special values */ -/* Flags for valid_array_reference. Value 1 is reserved for skipsubscript() */ +/* Flags for valid_array_reference. Value 1 is reserved for skipsubscript(). + Also used by unbind_array_element, which is currently the only function + that uses VA_ALLOWALL. */ #define VA_NOEXPAND 0x001 #define VA_ONEWORD 0x002 +#define VA_ALLOWALL 0x004 /* allow @ to mean all elements of the array */ extern SHELL_VAR *convert_var_to_array PARAMS((SHELL_VAR *)); extern SHELL_VAR *convert_var_to_assoc PARAMS((SHELL_VAR *)); @@ -51,7 +80,7 @@ extern char *make_array_variable_value PARAMS((SHELL_VAR *, arrayind_t, char *, extern SHELL_VAR *bind_array_variable PARAMS((char *, arrayind_t, char *, int)); extern SHELL_VAR *bind_array_element PARAMS((SHELL_VAR *, arrayind_t, char *, int)); -extern SHELL_VAR *assign_array_element PARAMS((char *, char *, int)); +extern SHELL_VAR *assign_array_element PARAMS((char *, char *, int, array_eltstate_t *)); extern SHELL_VAR *bind_assoc_variable PARAMS((SHELL_VAR *, char *, char *, char *, int)); @@ -78,22 +107,33 @@ extern void print_assoc_assignment PARAMS((SHELL_VAR *, int)); extern arrayind_t array_expand_index PARAMS((SHELL_VAR *, char *, int, int)); extern int valid_array_reference PARAMS((const char *, int)); -extern char *array_value PARAMS((const char *, int, int, int *, arrayind_t *)); -extern char *get_array_value PARAMS((const char *, int, int *, arrayind_t *)); +extern int tokenize_array_reference PARAMS((char *, int, char **)); + +extern char *array_value PARAMS((const char *, int, int, array_eltstate_t *)); +extern char *get_array_value PARAMS((const char *, int, array_eltstate_t *)); extern char *array_keys PARAMS((char *, int, int)); extern char *array_variable_name PARAMS((const char *, int, char **, int *)); extern SHELL_VAR *array_variable_part PARAMS((const char *, int, char **, int *)); +extern void init_eltstate (array_eltstate_t *); +extern void flush_eltstate (array_eltstate_t *); + #else #define AV_ALLOWALL 0 #define AV_QUOTED 0 #define AV_USEIND 0 +#define AV_USEVAL 0 #define AV_ASSIGNRHS 0 +#define AV_NOEXPAND 0 +#define AV_ONEWORD 0 +#define AV_ATSTARKEYS 0 +#define VA_NOEXPAND 0 #define VA_ONEWORD 0 +#define VA_ALLOWALL 0 #endif diff --git a/assoc.c b/assoc.c index 5782e8567..cbb5c7e4f 100644 --- a/assoc.c +++ b/assoc.c @@ -7,7 +7,7 @@ * chet@ins.cwru.edu */ -/* Copyright (C) 2008,2009,2011-2020 Free Software Foundation, Inc. +/* Copyright (C) 2008,2009,2011-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -544,6 +544,30 @@ assoc_keys_to_word_list (h) return (assoc_to_word_list_internal (h, 1)); } +WORD_LIST * +assoc_to_kvpair_list (h) + HASH_TABLE *h; +{ + WORD_LIST *list; + int i; + BUCKET_CONTENTS *tlist; + char *k, *v; + + if (h == 0 || assoc_empty (h)) + return((WORD_LIST *)NULL); + list = (WORD_LIST *)NULL; + + for (i = 0; i < h->nbuckets; i++) + for (tlist = hash_items (i, h); tlist; tlist = tlist->next) + { + k = (char *)tlist->key; + v = (char *)tlist->data; + list = make_word_list (make_bare_word (k), list); + list = make_word_list (make_bare_word (v), list); + } + return (REVERSE_LIST(list, WORD_LIST *)); +} + char * assoc_to_string (h, sep, quoted) HASH_TABLE *h; diff --git a/assoc.h b/assoc.h index 78ec07386..664d13740 100644 --- a/assoc.h +++ b/assoc.h @@ -1,7 +1,7 @@ /* assoc.h -- definitions for the interface exported by assoc.c that allows the rest of the shell to manipulate associative array variables. */ -/* Copyright (C) 2008,2009-2020 Free Software Foundation, Inc. +/* Copyright (C) 2008,2009-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -60,6 +60,7 @@ extern char *assoc_to_assign PARAMS((HASH_TABLE *, int)); extern WORD_LIST *assoc_to_word_list PARAMS((HASH_TABLE *)); extern WORD_LIST *assoc_keys_to_word_list PARAMS((HASH_TABLE *)); +extern WORD_LIST *assoc_to_kvpair_list PARAMS((HASH_TABLE *)); extern char *assoc_to_string PARAMS((HASH_TABLE *, char *, int)); #endif /* _ASSOC_H_ */ diff --git a/bashansi.h b/bashansi.h index 2c33937d0..dd2a544cd 100644 --- a/bashansi.h +++ b/bashansi.h @@ -1,6 +1,6 @@ /* bashansi.h -- Typically included information required by picky compilers. */ -/* Copyright (C) 1993-2009 Free Software Foundation, Inc. +/* Copyright (C) 1993-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -22,9 +22,6 @@ #define _BASHANSI_H_ #if defined (HAVE_STRING_H) -# if ! defined (STDC_HEADERS) && defined (HAVE_MEMORY_H) -# include -# endif # include #endif /* !HAVE_STRING_H */ diff --git a/bashhist.c b/bashhist.c index 2a05a53fa..90cd8c34f 100644 --- a/bashhist.c +++ b/bashhist.c @@ -1,6 +1,6 @@ /* bashhist.c -- bash interface to the GNU history library. */ -/* Copyright (C) 1993-2019 Free Software Foundation, Inc. +/* Copyright (C) 1993-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -374,8 +374,11 @@ bash_delete_history_range (first, last) HIST_ENTRY **discard_list; discard_list = remove_history_range (first, last); - for (i = 0; discard_list && discard_list[i]; i++) + if (discard_list == 0) + return 0; + for (i = 0; discard_list[i]; i++) free_history_entry (discard_list[i]); + free (discard_list); history_lines_this_session -= i; return 1; @@ -653,6 +656,8 @@ shell_comment (line) char *p; int n; + if (dstack.delimiter_depth != 0 || (parser_state & PST_HEREDOC)) + return 0; if (line == 0) return 0; for (p = line; p && *p && whitespace (*p); p++) @@ -757,7 +762,7 @@ maybe_add_history (line) int is_comment; hist_last_line_added = 0; - is_comment = (parser_state & PST_HEREDOC) ? 0 : shell_comment (line); + is_comment = shell_comment (line); /* Don't use the value of history_control to affect the second and subsequent lines of a multi-line command (old code did @@ -874,7 +879,7 @@ bash_add_history (line) add_it = 1; if (command_oriented_history && current_command_line_count > 1) { - is_comment = (parser_state & PST_HEREDOC) ? 0 : shell_comment (line); + is_comment = shell_comment (line); /* The second and subsequent lines of a here document have the trailing newline preserved. We don't want to add extra newlines here, but we @@ -887,7 +892,7 @@ bash_add_history (line) (current_command_line_count > 2) don't add a newline here. This will also take care of the literal_history case if the other conditions are met. */ - if ((parser_state & PST_HEREDOC) && current_command_line_count > 2 && line[strlen (line) - 1] == '\n') + if ((parser_state & PST_HEREDOC) && here_doc_first_line == 0 && line[strlen (line) - 1] == '\n') chars_to_add = ""; else if (current_command_line_count == current_command_line_comment+1) chars_to_add = "\n"; diff --git a/bashjmp.h b/bashjmp.h index 8ed1ac472..1a4721bc8 100644 --- a/bashjmp.h +++ b/bashjmp.h @@ -1,6 +1,6 @@ /* bashjmp.h -- wrapper for setjmp.h with necessary bash definitions. */ -/* Copyright (C) 1987-2009 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -42,5 +42,6 @@ extern int no_longjmp_on_fatal_error; #define EXITPROG 3 /* Unconditionally exit the program now. */ #define ERREXIT 4 /* Exit due to error condition */ #define SIGEXIT 5 /* Exit due to fatal terminating signal */ +#define EXITBLTIN 6 /* Exit due to the exit builtin. */ #endif /* _BASHJMP_H_ */ diff --git a/bashline.c b/bashline.c index c69c0c5ee..c85b05b69 100644 --- a/bashline.c +++ b/bashline.c @@ -1,6 +1,6 @@ /* bashline.c -- Bash's interface to the readline library. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -56,6 +56,7 @@ #include "shmbutil.h" #include "trap.h" #include "flags.h" +#include "timer.h" #if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) # include /* mbschr */ @@ -141,6 +142,8 @@ static int bash_kill_shellword PARAMS((int, int)); static int bash_backward_kill_shellword PARAMS((int, int)); static int bash_transpose_shellwords PARAMS((int, int)); +static int bash_spell_correct_shellword PARAMS((int, int)); + /* Helper functions for Readline. */ static char *restore_tilde PARAMS((char *, char *)); static char *maybe_restore_tilde PARAMS((char *, char *)); @@ -189,6 +192,8 @@ static int return_zero PARAMS((const char *)); static char *bash_dequote_filename PARAMS((char *, int)); static char *quote_word_break_chars PARAMS((char *)); +static int bash_check_expchar PARAMS((char *, int, int *, int *)); +static void set_filename_quote_chars PARAMS((int, int, int)); static void set_filename_bstab PARAMS((const char *)); static char *bash_quote_filename PARAMS((char *, int, char *)); @@ -225,6 +230,7 @@ static char **prog_complete_matches; extern int no_symbolic_links; extern STRING_INT_ALIST word_token_alist[]; +extern sh_timer *read_timeout; /* SPECIFIC_COMPLETION_FUNCTIONS specifies that we have individual completion functions which indicate what type of completion should be @@ -370,7 +376,8 @@ enable_hostname_completion (on_or_off) int on_or_off; { int old_value; - char *at, *nv, *nval; + char *nv, *nval; + const char *at; old_value = perform_hostname_completion; @@ -430,7 +437,7 @@ enable_hostname_completion (on_or_off) strcpy (nval + 1, rl_completer_word_break_characters); } - free (rl_completer_word_break_characters); + free ((void *)rl_completer_word_break_characters); rl_completer_word_break_characters = nval; } @@ -468,6 +475,9 @@ initialize_readline () rl_add_defun ("shell-backward-kill-word", bash_backward_kill_shellword, -1); rl_add_defun ("shell-transpose-words", bash_transpose_shellwords, -1); + rl_add_defun ("spell-correct-word", bash_spell_correct_shellword, -1); + rl_bind_key_if_unbound_in_map ('s', bash_spell_correct_shellword, emacs_ctlx_keymap); + #ifdef ALIAS rl_add_defun ("alias-expand-line", alias_expand_line, -1); # ifdef BANG_HISTORY @@ -480,6 +490,9 @@ initialize_readline () rl_add_defun ("display-shell-version", display_shell_version, -1); rl_add_defun ("edit-and-execute-command", emacs_edit_and_execute_command, -1); +#if defined (VI_MODE) + rl_add_defun ("vi-edit-and-execute-command", vi_edit_and_execute_command, -1); +#endif #if defined (BRACE_COMPLETION) rl_add_defun ("complete-into-braces", bash_brace_completion, -1); @@ -666,6 +679,8 @@ bashline_reset () rl_attempted_completion_function = attempt_shell_completion; rl_completion_entry_function = NULL; rl_ignore_some_completions_function = filename_completion_ignore; + + complete_fullquote = 1; rl_filename_quote_characters = default_filename_quote_characters; set_filename_bstab (rl_filename_quote_characters); @@ -1028,6 +1043,8 @@ posix_edit_macros (count, key) char alias_name[3], *alias_value, *macro; c = rl_read_key (); + if (c <= 0) + return 0; alias_name[0] = '_'; alias_name[1] = c; alias_name[2] = '\0'; @@ -1320,6 +1337,55 @@ bash_transpose_shellwords (count, key) return 0; } +/* Directory name spelling correction on the current word (not shellword). + COUNT > 1 is not exactly correct yet. */ +static int +bash_spell_correct_shellword (count, key) + int count, key; +{ + int opoint, wbeg, wend; + char *text, *newdir; + + opoint = rl_point; + while (count) + { + bash_backward_shellword (1, key); + wbeg = rl_point; + bash_forward_shellword (1, key); + wend = rl_point; + + if (wbeg > wend) + break; + + text = rl_copy_text (wbeg, wend); + + newdir = dirspell (text); + if (newdir) + { + rl_begin_undo_group (); + rl_delete_text (wbeg, wend); + rl_point = wbeg; + if (*newdir) + rl_insert_text (newdir); + rl_mark = wbeg; + rl_end_undo_group (); + } + + free (text); + free (newdir); + + if (rl_point >= rl_end) + break; + + count--; + + if (count) + bash_forward_shellword (1, key); /* XXX */ + } + + return 0; +} + /* **************************************************************** */ /* */ /* How To Do Shell Completion */ @@ -1516,6 +1582,7 @@ attempt_shell_completion (text, start, end) matches = (char **)NULL; rl_ignore_some_completions_function = filename_completion_ignore; + complete_fullquote = 1; /* full filename quoting by default */ rl_filename_quote_characters = default_filename_quote_characters; set_filename_bstab (rl_filename_quote_characters); set_directory_hook (); @@ -1560,7 +1627,7 @@ attempt_shell_completion (text, start, end) in_command_position++; if (check_redir (ti) == 1) - in_command_position = 0; + in_command_position = -1; /* sentinel that we're not the first word on the line */ } else { @@ -1569,7 +1636,7 @@ attempt_shell_completion (text, start, end) assignments. */ } - if (in_command_position && invalid_completion (text, ti)) + if (in_command_position > 0 && invalid_completion (text, ti)) { rl_attempted_completion_over = 1; return ((char **)NULL); @@ -1577,9 +1644,9 @@ attempt_shell_completion (text, start, end) /* Check that we haven't incorrectly flagged a closed command substitution as indicating we're in a command position. */ - if (in_command_position && ti >= 0 && rl_line_buffer[ti] == '`' && + if (in_command_position > 0 && ti >= 0 && rl_line_buffer[ti] == '`' && *text != '`' && unclosed_pair (rl_line_buffer, end, "`") == 0) - in_command_position = 0; + in_command_position = -1; /* not following a command separator */ /* Special handling for command substitution. If *TEXT is a backquote, it can be the start or end of an old-style command substitution, or @@ -1587,8 +1654,8 @@ attempt_shell_completion (text, start, end) succeed. Don't bother if readline found a single quote and we are completing on the substring. */ if (*text == '`' && rl_completion_quote_character != '\'' && - (in_command_position || (unclosed_pair (rl_line_buffer, start, "`") && - unclosed_pair (rl_line_buffer, end, "`")))) + (in_command_position > 0 || (unclosed_pair (rl_line_buffer, start, "`") && + unclosed_pair (rl_line_buffer, end, "`")))) matches = rl_completion_matches (text, command_subst_completion_function); #if defined (PROGRAMMABLE_COMPLETION) @@ -1596,7 +1663,7 @@ attempt_shell_completion (text, start, end) have_progcomps = prog_completion_enabled && (progcomp_size () > 0); iw_compspec = progcomp_search (INITIALWORD); if (matches == 0 && - (in_command_position == 0 || text[0] == '\0' || (in_command_position && iw_compspec)) && + (in_command_position == 0 || text[0] == '\0' || (in_command_position > 0 && iw_compspec)) && current_prompt_string == ps1_prompt) { int s, e, s1, e1, os, foundcs; @@ -1718,7 +1785,7 @@ attempt_shell_completion (text, start, end) if (matches == 0) { dflags = 0; - if (in_command_position) + if (in_command_position > 0) dflags |= DEFCOMP_CMDPOS; matches = bash_default_completion (text, start, end, qc, dflags); } @@ -1872,10 +1939,17 @@ executable_completion (filename, searching_path) const char *filename; int searching_path; { - char *f; + char *f, c; int r; + /* This gets an unquoted filename, so we need to quote special characters + in the filename before the completion hook gets it. */ +#if 0 f = savestring (filename); +#else + c = 0; + f = bash_quote_filename ((char *)filename, SINGLE_MATCH, &c); +#endif bash_directory_completion_hook (&f); r = searching_path ? executable_file (f) : executable_or_directory (f); @@ -1927,6 +2001,8 @@ command_word_completion_function (hint_text, state) temp = rl_variable_value ("completion-ignore-case"); igncase = RL_BOOLEAN_VARIABLE_VALUE (temp); + old_glob_ignore_case = glob_ignore_case; + if (glob_matches) { free (glob_matches); @@ -2112,6 +2188,8 @@ globword: { if (state == 0) { + rl_filename_completion_desired = 1; + glob_ignore_case = igncase; glob_matches = shell_glob_filename (hint, 0); glob_ignore_case = old_glob_ignore_case; @@ -2232,10 +2310,16 @@ globword: if (absolute_program (hint)) { +#if 0 if (igncase == 0) match = strncmp (val, hint, hint_len) == 0; else match = strncasecmp (val, hint, hint_len) == 0; +#else + /* Why duplicate the comparison rl_filename_completion_function + already performs? */ + match = 1; +#endif /* If we performed tilde expansion, restore the original filename. */ @@ -2760,7 +2844,7 @@ static int history_and_alias_expand_line (count, ignore) int count, ignore; { - char *new_line; + char *new_line, *t; new_line = 0; #if defined (BANG_HISTORY) @@ -2798,7 +2882,7 @@ static int shell_expand_line (count, ignore) int count, ignore; { - char *new_line; + char *new_line, *t; WORD_LIST *expanded_string; WORD_DESC *w; @@ -2807,6 +2891,10 @@ shell_expand_line (count, ignore) new_line = history_expand_line_internal (rl_line_buffer); #endif + t = expand_string_dollar_quote (new_line ? new_line : rl_line_buffer, 0); + FREE (new_line); + new_line = t; + #if defined (ALIAS) if (new_line) { @@ -3191,6 +3279,8 @@ bash_directory_expansion (dirname) free (d); *dirname = nd; } + else + free (d); } /* If necessary, rewrite directory entry */ @@ -3372,38 +3462,7 @@ bash_directory_completion_hook (dirname) return_value = should_expand_dirname = nextch = closer = 0; local_dirname = *dirname; - if (t = mbschr (local_dirname, '$')) - { - should_expand_dirname = '$'; - nextch = t[1]; - /* Deliberately does not handle the deprecated $[...] arithmetic - expansion syntax */ - if (nextch == '(') - closer = ')'; - else if (nextch == '{') - closer = '}'; - else - nextch = 0; - - if (closer) - { - int p; - char delims[2]; - - delims[0] = closer; delims[1] = 0; - p = skip_to_delim (t, 1, delims, SD_NOJMP|SD_COMPLETE); - if (t[p] != closer) - should_expand_dirname = 0; - } - } - else if (local_dirname[0] == '~') - should_expand_dirname = '~'; - else - { - t = mbschr (local_dirname, '`'); - if (t && unclosed_pair (local_dirname, strlen (local_dirname), "`") == 0) - should_expand_dirname = '`'; - } + should_expand_dirname = bash_check_expchar (local_dirname, 1, &nextch, &closer); if (should_expand_dirname && directory_exists (local_dirname, 1)) should_expand_dirname = 0; @@ -3422,24 +3481,8 @@ bash_directory_completion_hook (dirname) free (new_dirname); dispose_words (wl); local_dirname = *dirname; - /* XXX - change rl_filename_quote_characters here based on - should_expand_dirname/nextch/closer. This is the only place - custom_filename_quote_characters is modified. */ - if (rl_filename_quote_characters && *rl_filename_quote_characters) - { - int i, j, c; - i = strlen (default_filename_quote_characters); - custom_filename_quote_characters = xrealloc (custom_filename_quote_characters, i+1); - for (i = j = 0; c = default_filename_quote_characters[i]; i++) - { - if (c == should_expand_dirname || c == nextch || c == closer) - continue; - custom_filename_quote_characters[j++] = c; - } - custom_filename_quote_characters[j] = '\0'; - rl_filename_quote_characters = custom_filename_quote_characters; - set_filename_bstab (rl_filename_quote_characters); - } + + set_filename_quote_chars (should_expand_dirname, nextch, closer); } else { @@ -3494,7 +3537,16 @@ bash_directory_completion_hook (dirname) subsequent directory checks don't fail. */ if (temp2 == 0 && dircomplete_spelling && dircomplete_expand) { + size_t l1, l2; + temp2 = dirspell (temp1); + l2 = STRLEN (temp2); + /* Don't take matches if they are shorter than the original path */ + if (temp2 && l2 < strlen (temp1) && STREQN (temp1, temp2, l2)) + { + free (temp2); + temp2 = 0; + } if (temp2) { free (temp1); @@ -3729,7 +3781,7 @@ bash_complete_filename_internal (what_to_do) rl_completion_func_t *orig_attempt_func; rl_icppfunc_t *orig_dir_func; rl_compignore_func_t *orig_ignore_func; - /*const*/ char *orig_rl_completer_word_break_characters; + const char *orig_rl_completer_word_break_characters; int r; orig_func = rl_completion_entry_function; @@ -4099,6 +4151,95 @@ quote_word_break_chars (text) return ret; } +/* Return a character in DIRNAME that will cause shell expansion to be + performed. If NEXTP is non-null, *NEXTP gets the expansion character that + follows RET (e.g., '{' or `(' for `$'). If CLOSERP is non-null, *CLOSERP + gets the character that should close . If NEED_CLOSER is non- + zero, any expansion pair that isn't closed causes this function to + return 0, which indicates that we didn't find an expansion character. It's + used in case DIRNAME is going to be expanded. If DIRNAME is just going to + be quoted, NEED_CLOSER will be 0. */ +static int +bash_check_expchar (dirname, need_closer, nextp, closerp) + char *dirname; + int need_closer; + int *nextp, *closerp; +{ + char *t; + int ret, n, c; + + ret = n = c = 0; + if (t = mbschr (dirname, '$')) + { + ret = '$'; + n = t[1]; + /* Deliberately does not handle the deprecated $[...] arithmetic + expansion syntax */ + if (n == '(') + c = ')'; + else if (n == '{') + c = '}'; + else + n = 0; + + if (c && need_closer) /* XXX */ + { + int p; + char delims[2]; + + delims[0] = c; delims[1] = 0; + p = skip_to_delim (t, 1, delims, SD_NOJMP|SD_COMPLETE); + if (t[p] != c) + ret = 0; + } + } + else if (dirname[0] == '~') + ret = '~'; + else + { + t = mbschr (dirname, '`'); + if (t) + { + if (need_closer == 0) + ret = '`'; + else if (unclosed_pair (dirname, strlen (dirname), "`") == 0) + ret = '`'; + } + } + + if (nextp) + *nextp = n; + if (closerp) + *closerp = c; + + return ret; +} + +/* Make sure EXPCHAR and, if non-zero, NEXTCH and CLOSER are not in the set + of characters to be backslash-escaped. This is the only place + custom_filename_quote_characters is modified. */ +static void +set_filename_quote_chars (expchar, nextch, closer) + int expchar, nextch, closer; +{ + int i, j, c; + + if (rl_filename_quote_characters && *rl_filename_quote_characters) + { + i = strlen (default_filename_quote_characters); + custom_filename_quote_characters = xrealloc (custom_filename_quote_characters, i+1); + for (i = j = 0; c = default_filename_quote_characters[i]; i++) + { + if (c == expchar || c == nextch || c == closer) + continue; + custom_filename_quote_characters[j++] = c; + } + custom_filename_quote_characters[j] = '\0'; + rl_filename_quote_characters = custom_filename_quote_characters; + set_filename_bstab (rl_filename_quote_characters); + } +} + /* Use characters in STRING to populate the table of characters that should be backslash-quoted. The table will be used for sh_backslash_quote from this file. */ @@ -4127,6 +4268,7 @@ bash_quote_filename (s, rtype, qcp) { char *rtext, *mtext, *ret; int rlen, cs; + int expchar, nextch, closer; rtext = (char *)NULL; @@ -4144,7 +4286,18 @@ bash_quote_filename (s, rtype, qcp) the word being completed contains newlines, since those are not quoted correctly using backslashes (a backslash-newline pair is special to the shell parser). */ - if (*qcp == '\0' && cs == COMPLETE_BSQUOTE && mbschr (s, '\n')) + expchar = nextch = closer = 0; + if (*qcp == '\0' && cs == COMPLETE_BSQUOTE && dircomplete_expand == 0 && + (expchar = bash_check_expchar (s, 0, &nextch, &closer)) && + file_exists (s) == 0) + { + /* Usually this will have been set by bash_directory_completion_hook, + but there are cases where it will not be. */ + if (rl_filename_quote_characters != custom_filename_quote_characters) + set_filename_quote_chars (expchar, nextch, closer); + complete_fullquote = 0; + } + else if (*qcp == '\0' && cs == COMPLETE_BSQUOTE && mbschr (s, '\n')) cs = COMPLETE_SQUOTE; else if (*qcp == '"') cs = COMPLETE_DQUOTE; @@ -4187,7 +4340,8 @@ bash_quote_filename (s, rtype, qcp) /* We may need to quote additional characters: those that readline treats as word breaks that are not quoted by backslash_quote. */ - if (rtext && cs == COMPLETE_BSQUOTE) + /* XXX - test complete_fullquote here? */ + if (rtext && cs == COMPLETE_BSQUOTE && rl_completer_word_break_characters) { mtext = quote_word_break_chars (rtext); free (rtext); @@ -4294,12 +4448,28 @@ bash_execute_unix_command (count, key) SHELL_VAR *v; char ibuf[INT_STRLEN_BOUND(int) + 1]; Keymap cmd_xmap; + const char *kseq; + size_t kslen; + + kseq = rl_executing_keyseq; + kslen = rl_key_sequence_length; + + /* If we have a numeric argument, chop it off the front of the key sequence */ + if (count > 1 || rl_explicit_arg) + { + i = rl_trim_arg_from_keyseq (rl_executing_keyseq, rl_key_sequence_length, rl_get_keymap ()); + if (i > 0) + { + kseq = rl_executing_keyseq + i; + kslen = rl_key_sequence_length - i; + } + } /* First, we need to find the right command to execute. This is tricky, because we might have already indirected into another keymap, so we have to walk cmd_xmap using the entire key sequence. */ cmd_xmap = get_cmd_xmap_from_keymap (rl_get_keymap ()); - cmd = (char *)rl_function_of_keyseq_len (rl_executing_keyseq, rl_key_sequence_length, cmd_xmap, &type); + cmd = (char *)rl_function_of_keyseq_len (kseq, kslen, cmd_xmap, &type); if (type == ISKMAP && (type = ((Keymap) cmd)[ANYOTHERKEY].type) == ISMACR) cmd = (char*)((Keymap) cmd)[ANYOTHERKEY].function; @@ -4336,6 +4506,14 @@ bash_execute_unix_command (count, key) v = bind_int_variable ("READLINE_MARK", value, 0); if (v) VSETATTR (v, att_exported); + + if (count > 1 || rl_explicit_arg) + { + value = inttostr (count, ibuf, sizeof (ibuf)); + v = bind_int_variable ("READLINE_ARGUMENT", value, 0); + if (v) + VSETATTR (v, att_exported); + } array_needs_making = 1; save_parser_state (&ps); @@ -4358,6 +4536,7 @@ bash_execute_unix_command (count, key) check_unbind_variable ("READLINE_LINE"); check_unbind_variable ("READLINE_POINT"); check_unbind_variable ("READLINE_MARK"); + check_unbind_variable ("READLINE_ARGUMENT"); array_needs_making = 1; /* and restore the readline buffer and display after command execution. */ @@ -4625,21 +4804,29 @@ bash_event_hook () sig = terminating_signal; else if (interrupt_state) sig = SIGINT; - else if (sigalrm_seen) + else if (read_timeout && read_timeout->alrmflag) sig = SIGALRM; + else if (RL_ISSTATE (RL_STATE_TIMEOUT)) /* just in case */ + { + sig = SIGALRM; + if (read_timeout) + read_timeout->alrmflag = 1; + } else sig = first_pending_trap (); /* If we're going to longjmp to top_level, make sure we clean up readline. check_signals will call QUIT, which will eventually longjmp to top_level, - calling run_interrupt_trap along the way. The check for sigalrm_seen is - to clean up the read builtin's state. */ - if (terminating_signal || interrupt_state || sigalrm_seen) + calling run_interrupt_trap along the way. The check against read_timeout + is so we can clean up the read builtin's state. */ + if (terminating_signal || interrupt_state || (read_timeout && read_timeout->alrmflag)) rl_cleanup_after_signal (); bashline_reset_event_hook (); + RL_UNSETSTATE (RL_STATE_TIMEOUT); /* XXX */ + /* posix mode SIGINT during read -e. We only get here if SIGINT is trapped. */ - if (posixly_correct && this_shell_builtin == read_builtin && sig == 2) + if (posixly_correct && this_shell_builtin == read_builtin && sig == SIGINT) { last_command_exit_value = 128|SIGINT; throw_to_top_level (); diff --git a/bashline.h b/bashline.h index 48c9fecfb..d40228e29 100644 --- a/bashline.h +++ b/bashline.h @@ -53,7 +53,7 @@ extern int unbind_unix_command PARAMS((char *)); extern char **bash_default_completion PARAMS((const char *, int, int, int, int)); -void set_directory_hook PARAMS((void)); +extern void set_directory_hook PARAMS((void)); /* Used by programmable completion code. */ extern char *command_word_completion_function PARAMS((const char *, int)); diff --git a/builtins.h b/builtins.h index dac95fdba..015659356 100644 --- a/builtins.h +++ b/builtins.h @@ -1,6 +1,6 @@ /* builtins.h -- What a builtin looks like, and where to find them. */ -/* Copyright (C) 1987-2009 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -45,6 +45,7 @@ #define ASSIGNMENT_BUILTIN 0x10 /* This builtin takes assignment statements. */ #define POSIX_BUILTIN 0x20 /* This builtins is special in the Posix command search order. */ #define LOCALVAR_BUILTIN 0x40 /* This builtin creates local variables */ +#define ARRAYREF_BUILTIN 0x80 /* This builtin takes array references as arguments */ #define BASE_INDENT 4 diff --git a/builtins/Makefile.in b/builtins/Makefile.in index b349e93ce..642878c6c 100644 --- a/builtins/Makefile.in +++ b/builtins/Makefile.in @@ -1,6 +1,6 @@ # This Makefile for building libbuiltins.a is in -*- text -*- for Emacs. # -# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# Copyright (C) 1996-2022 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -59,6 +59,7 @@ LIBBUILD = ${BUILD_DIR}/lib PROFILE_FLAGS = @PROFILE_FLAGS@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ @CROSS_COMPILE@ +STYLE_CFLAGS = @STYLE_CFLAGS@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} @@ -92,7 +93,7 @@ HELPFILES_TARGET = @HELPFILES_TARGET@ INCLUDES = -I. -I.. @RL_INCLUDE@ -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib -I$(srcdir) ${INTL_INC} BASE_CCFLAGS = ${PROFILE_FLAGS} $(DEFS) $(LOCAL_DEFS) $(SYSTEM_FLAGS) \ - ${INCLUDES} $(LOCAL_CFLAGS) + ${INCLUDES} $(STYLE_CFLAGS) $(LOCAL_CFLAGS) CCFLAGS = ${ADDON_CFLAGS} $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS) @@ -182,28 +183,30 @@ gen-helpfiles.o: gen-helpfiles.c $(CC_FOR_BUILD) -c $(CCFLAGS_FOR_BUILD) $< gen-helpfiles: tmpbuiltins.o gen-helpfiles.o - $(CC_FOR_BUILD) ${CCFLAGS_FOR_BUILD} $(LDFLAGS_FOR_BUILD) -o $@ gen-helpfiles.o tmpbuiltins.o $(LIBS_FOR_BUILD) + $(CC_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ gen-helpfiles.o tmpbuiltins.o $(LIBS_FOR_BUILD) builtext.h builtins.c: $(MKBUILTINS) $(DEFSRC) - @-if test -f builtins.c; then mv -f builtins.c old-builtins.c; fi - @-if test -f builtext.h; then mv -f builtext.h old-builtext.h; fi - ./$(MKBUILTINS) -externfile builtext.h -structfile builtins.c \ - -noproduction $(DIRECTDEFINE) $(HELPDIRDEFINE) $(HELPSTRINGS) $(DEFSRC) - @-if cmp -s old-builtext.h builtext.h 2>/dev/null; then \ - mv old-builtext.h builtext.h; \ - else \ - $(RM) old-builtext.h; \ - fi - @-if cmp -s old-builtins.c builtins.c 2>/dev/null; then \ - mv old-builtins.c builtins.c; \ - else \ - $(RM) old-builtins.c; \ - fi + @RECPID=$$$$ ; \ + NEW_BUILTEXT=builtext-$$RECPID.h NEW_BUILTINS=builtins-$$RECPID.c ; \ + ./$(MKBUILTINS) -externfile $$NEW_BUILTEXT \ + -includefile builtext.h \ + -structfile $$NEW_BUILTINS \ + -noproduction $(DIRECTDEFINE) $(HELPDIRDEFINE) $(HELPSTRINGS) $(DEFSRC) ; \ + if cmp -s $$NEW_BUILTEXT builtext.h 2>/dev/null; then \ + $(RM) $$NEW_BUILTEXT; \ + else \ + mv $$NEW_BUILTEXT builtext.h; \ + fi ; \ + if cmp -s $$NEW_BUILTINS builtins.c 2>/dev/null; then \ + $(RM) $$NEW_BUILTINS ; \ + else \ + mv $$NEW_BUILTINS builtins.c; \ + fi helpdoc: gen-helpfiles ./gen-helpfiles ${HELPDIRDEFINE} -install-help: +install-help: $(HELPFILES_TARGET) @-if test -n "${HELPDIR}" && test -d helpfiles ; then \ test -d $(DESTDIR)${HELPDIR} || ${SHELL} ${MKDIRS} $(DESTDIR)$(HELPDIR) ;\ ( for f in helpfiles/*; do \ @@ -707,3 +710,14 @@ suspend.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h type.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h ulimit.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h umask.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h + +cd.o: $(topdir)/config-top.h +command.o: $(topdir)/config-top.h +common.o: $(topdir)/config-top.h +declare.o: $(topdir)/config-top.h +break.o: $(topdir)/config-top.h +echo.o: $(topdir)/config-top.h +evalstring.o: $(topdir)/config-top.h +exit.o: $(topdir)/config-top.h +kill.o: $(topdir)/config-top.h +shopt.o: $(topdir)/config-top.h diff --git a/builtins/bashgetopt.c b/builtins/bashgetopt.c index 405ced437..d40ffa23a 100644 --- a/builtins/bashgetopt.c +++ b/builtins/bashgetopt.c @@ -1,6 +1,6 @@ /* bashgetopt.c -- `getopt' for use by the builtins. */ -/* Copyright (C) 1992-2002 Free Software Foundation, Inc. +/* Copyright (C) 1992-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -39,6 +39,7 @@ static int sp; char *list_optarg; +int list_optflags; int list_optopt; int list_opttype; @@ -62,6 +63,7 @@ char *opts; if (list == 0) { list_optarg = (char *)NULL; + list_optflags = 0; loptend = (WORD_LIST *)NULL; /* No non-option arguments */ return -1; } @@ -102,6 +104,7 @@ char *opts; sp = 1; } list_optarg = NULL; + list_optflags = 0; if (lcurrent) loptend = lcurrent->next; return('?'); @@ -113,6 +116,7 @@ char *opts; /* We allow -l2 as equivalent to -l 2 */ if (lcurrent->word->word[sp+1]) { list_optarg = lcurrent->word->word + sp + 1; + list_optflags = 0; lcurrent = lcurrent->next; /* If the specifier is `;', don't set optarg if the next argument looks like another option. */ @@ -123,15 +127,18 @@ char *opts; #endif lcurrent = lcurrent->next; list_optarg = lcurrent->word->word; + list_optflags = lcurrent->word->flags; lcurrent = lcurrent->next; } else if (*cp == ';') { list_optarg = (char *)NULL; + list_optflags = 0; lcurrent = lcurrent->next; } else { /* lcurrent->next == NULL */ errstr[1] = c; sh_needarg (errstr); sp = 1; list_optarg = (char *)NULL; + list_optflags = 0; return('?'); } sp = 1; @@ -140,19 +147,24 @@ char *opts; if (lcurrent->word->word[sp+1]) { if (DIGIT(lcurrent->word->word[sp+1])) { list_optarg = lcurrent->word->word + sp + 1; + list_optflags = 0; lcurrent = lcurrent->next; - } else + } else { list_optarg = (char *)NULL; + list_optflags = 0; + } } else { if (lcurrent->next && legal_number(lcurrent->next->word->word, (intmax_t *)0)) { lcurrent = lcurrent->next; list_optarg = lcurrent->word->word; + list_optflags = lcurrent->word->flags; lcurrent = lcurrent->next; } else { errstr[1] = c; sh_neednumarg (errstr); sp = 1; list_optarg = (char *)NULL; + list_optflags = 0; return ('?'); } } @@ -164,6 +176,7 @@ char *opts; lcurrent = lcurrent->next; } list_optarg = (char *)NULL; + list_optflags = 0; } return(c); diff --git a/builtins/bashgetopt.h b/builtins/bashgetopt.h index dcdaa48aa..79be34315 100644 --- a/builtins/bashgetopt.h +++ b/builtins/bashgetopt.h @@ -1,6 +1,6 @@ /* bashgetopt.h -- extern declarations for stuff defined in bashgetopt.c. */ -/* Copyright (C) 1993-2020 Free Software Foundation, Inc. +/* Copyright (C) 1993-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -29,6 +29,7 @@ #define GETOPT_HELP -99 extern char *list_optarg; +extern int list_optflags; extern int list_optopt; extern int list_opttype; diff --git a/builtins/bind.def b/builtins/bind.def index ccfc08dcd..53a65ac7c 100644 --- a/builtins/bind.def +++ b/builtins/bind.def @@ -1,7 +1,7 @@ This file is bind.def, from which is created bind.c. It implements the builtin "bind" in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -290,7 +290,7 @@ bind_builtin (list) if (nlen < olen) /* fewer bind -x bindings */ for (d = olen - nlen, i = 0; i < olen && d > 0; i++) - if (nlen == 0 || strvec_search (nbindings, obindings[i]) >= 0) + if (nlen == 0 || strvec_search (nbindings, obindings[i]) < 0) { unbind_unix_command (obindings[i]); d--; diff --git a/builtins/cd.def b/builtins/cd.def index 7205608c6..b87c5d9d2 100644 --- a/builtins/cd.def +++ b/builtins/cd.def @@ -1,7 +1,7 @@ This file is cd.def, from which is created cd.c. It implements the builtins "cd" and "pwd" in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -79,7 +79,7 @@ $SHORT_DOC cd [-L|[-P [-e]] [-@]] [dir] Change the shell working directory. Change the current directory to DIR. The default DIR is the value of the -HOME shell variable. +HOME shell variable. If DIR is "-", it is converted to $OLDPWD. The variable CDPATH defines the search path for the directory containing DIR. Alternative directory names in CDPATH are separated by a colon (:). diff --git a/builtins/command.def b/builtins/command.def index acd46cc1b..3efdbe6bc 100644 --- a/builtins/command.def +++ b/builtins/command.def @@ -124,9 +124,7 @@ command_builtin (list) #define COMMAND_BUILTIN_FLAGS (CMD_NO_FUNCTIONS | CMD_INHIBIT_EXPANSION | CMD_COMMAND_BUILTIN | (use_standard_path ? CMD_STDPATH : 0)) -#ifdef DEBUG - itrace("command_builtin: running execute_command for `%s'", list->word->word); -#endif + INTERNAL_DEBUG (("command_builtin: running execute_command for `%s'", list->word->word)); /* We don't want this to be reparsed (consider command echo 'foo &'), so just make a simple_command structure and call execute_command with it. */ diff --git a/builtins/common.c b/builtins/common.c index 3c9ac49de..19b00c4d0 100644 --- a/builtins/common.c +++ b/builtins/common.c @@ -1,6 +1,6 @@ /* common.c - utility functions for all builtins */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -266,6 +266,13 @@ sh_readonly (s) builtin_error (_("%s: readonly variable"), s); } +void +sh_noassign (s) + const char *s; +{ + internal_error (_("%s: cannot assign"), s); /* XXX */ +} + void sh_erange (s, desc) char *s, *desc; @@ -451,7 +458,7 @@ shift_args (times) int number_of_args () { -#ifdef DEBUG +#if 0 register WORD_LIST *list; int n; @@ -462,9 +469,9 @@ number_of_args () if (n != posparam_count) itrace("number_of_args: n (%d) != posparam_count (%d)", n, posparam_count); -#endif - +#else return posparam_count; +#endif } static int changed_dollar_vars; @@ -935,7 +942,7 @@ find_special_builtin (name) current_builtin->function : (sh_builtin_func_t *)NULL); } - + static int shell_builtin_compare (sbp1, sbp2) struct builtin *sbp1, *sbp2; @@ -971,6 +978,7 @@ builtin_help () /* */ /* **************************************************************** */ +/* Assign NAME=VALUE, passing FLAGS to the assignment functions. */ SHELL_VAR * builtin_bind_variable (name, value, flags) char *name; @@ -978,12 +986,22 @@ builtin_bind_variable (name, value, flags) int flags; { SHELL_VAR *v; + int vflags, bindflags; #if defined (ARRAY_VARS) - if (valid_array_reference (name, assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0) == 0) + /* Callers are responsible for calling this with array references that have + already undergone valid_array_reference checks (read, printf). */ + vflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0; + bindflags = flags | (assoc_expand_once ? ASS_NOEXPAND : 0) | ASS_ALLOWALLSUB; + if (flags & ASS_NOEXPAND) + vflags |= VA_NOEXPAND; + if (flags & ASS_ONEWORD) + vflags |= VA_ONEWORD; + + if (valid_array_reference (name, vflags) == 0) v = bind_variable (name, value, flags); else - v = assign_array_element (name, value, flags | (assoc_expand_once ? ASS_NOEXPAND : 0)); + v = assign_array_element (name, value, bindflags, (array_eltstate_t *)0); #else /* !ARRAY_VARS */ v = bind_variable (name, value, flags); #endif /* !ARRAY_VARS */ @@ -994,6 +1012,52 @@ builtin_bind_variable (name, value, flags) return v; } +SHELL_VAR * +builtin_bind_var_to_int (name, val, flags) + char *name; + intmax_t val; + int flags; +{ + SHELL_VAR *v; + + v = bind_var_to_int (name, val, flags|ASS_ALLOWALLSUB); + return v; +} + +#if defined (ARRAY_VARS) +SHELL_VAR * +builtin_find_indexed_array (array_name, flags) + char *array_name; + int flags; +{ + SHELL_VAR *entry; + + if ((flags & 2) && legal_identifier (array_name) == 0) + { + sh_invalidid (array_name); + return (SHELL_VAR *)NULL; + } + + entry = find_or_make_array_variable (array_name, 1); + /* With flags argument & 1, find_or_make_array_variable checks for readonly + and noassign variables and prints error messages. */ + if (entry == 0) + return entry; + else if (array_p (entry) == 0) + { + builtin_error (_("%s: not an indexed array"), array_name); + return (SHELL_VAR *)NULL; + } + else if (invisible_p (entry)) + VUNSETATTR (entry, att_invisible); /* no longer invisible */ + + if (flags & 1) + array_flush (array_cell (entry)); + + return entry; +} +#endif /* ARRAY_VARS */ + /* Like check_unbind_variable, but for use by builtins (only matters for error messages). */ int @@ -1015,3 +1079,53 @@ builtin_unbind_variable (vname) } return (unbind_variable (vname)); } + +int +builtin_arrayref_flags (w, baseflags) + WORD_DESC *w; + int baseflags; +{ + char *t; + int vflags; + + vflags = baseflags; + + /* Don't require assoc_expand_once if we have an argument that's already + passed through valid_array_reference and been expanded once. That + doesn't protect it from normal expansions like word splitting, so + proper quoting is still required. */ + if (w->flags & W_ARRAYREF) + vflags |= VA_ONEWORD|VA_NOEXPAND; + +# if 0 + /* This is a little sketchier but handles quoted arguments. */ + if (assoc_expand_once && (t = strchr (w->word, '[')) && t[strlen(t) - 1] == ']') + vflags |= VA_ONEWORD|VA_NOEXPAND; +# endif + + return vflags; +} + +/* **************************************************************** */ +/* */ +/* External interface to manipulate shell options */ +/* */ +/* **************************************************************** */ + +#if defined (ARRAY_VARS) +int +set_expand_once (nval, uwp) + int nval, uwp; +{ + int oa; + + oa = assoc_expand_once; + if (shell_compatibility_level > 51) /* XXX - internal */ + { + if (uwp) + unwind_protect_int (assoc_expand_once); + assoc_expand_once = nval; + } + return oa; +} +#endif diff --git a/builtins/common.h b/builtins/common.h index a4f9275d8..f5cd87f08 100644 --- a/builtins/common.h +++ b/builtins/common.h @@ -1,6 +1,6 @@ /* common.h -- extern declarations for functions defined in common.c. */ -/* Copyright (C) 1993-2020 Free Software Foundation, Inc. +/* Copyright (C) 1993-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -40,7 +40,7 @@ do { \ builtin_help (); \ return (EX_USAGE) -/* Flag values for parse_and_execute () */ +/* Flag values for parse_and_execute () and parse_string () */ #define SEVAL_NONINT 0x001 #define SEVAL_INTERACT 0x002 #define SEVAL_NOHIST 0x004 @@ -95,10 +95,11 @@ extern void sh_invalidoptname PARAMS((char *)); extern void sh_invalidid PARAMS((char *)); extern void sh_invalidnum PARAMS((char *)); extern void sh_invalidsig PARAMS((char *)); +extern void sh_readonly PARAMS((const char *)); +extern void sh_noassign PARAMS((const char *)); extern void sh_erange PARAMS((char *, char *)); extern void sh_badpid PARAMS((char *)); extern void sh_badjob PARAMS((char *)); -extern void sh_readonly PARAMS((const char *)); extern void sh_nojobs PARAMS((char *)); extern void sh_restricted PARAMS((char *)); extern void sh_notbuiltin PARAMS((char *)); @@ -138,6 +139,10 @@ extern sh_builtin_func_t *builtin_address PARAMS((char *)); extern sh_builtin_func_t *find_special_builtin PARAMS((char *)); extern void initialize_shell_builtins PARAMS((void)); +#if defined (ARRAY_VARS) +extern int set_expand_once PARAMS((int, int)); +#endif + /* Functions from exit.def */ extern void bash_logout PARAMS((void)); @@ -151,6 +156,9 @@ extern void builtin_help PARAMS((void)); extern void read_tty_cleanup PARAMS((void)); extern int read_tty_modified PARAMS((void)); +extern int read_builtin_timeout PARAMS((int)); +extern void check_read_timeout PARAMS((void)); + /* Functions from set.def */ extern int minus_o_option_value PARAMS((char *)); extern void list_minus_o_opts PARAMS((int, int)); @@ -205,10 +213,11 @@ extern WORD_LIST *get_directory_stack PARAMS((int)); extern int parse_and_execute PARAMS((char *, const char *, int)); extern int evalstring PARAMS((char *, const char *, int)); extern void parse_and_execute_cleanup PARAMS((int)); -extern int parse_string PARAMS((char *, const char *, int, char **)); +extern int parse_string PARAMS((char *, const char *, int, COMMAND **, char **)); extern int should_suppress_fork PARAMS((COMMAND *)); extern int can_optimize_connection PARAMS((COMMAND *)); -extern void optimize_fork PARAMS((COMMAND *)); +extern int can_optimize_cat_file PARAMS((COMMAND *)); +extern void optimize_connection_fork PARAMS((COMMAND *)); extern void optimize_subshell_command PARAMS((COMMAND *)); extern void optimize_shell_function PARAMS((COMMAND *)); @@ -223,8 +232,12 @@ extern sh_builtin_func_t *this_shell_builtin; extern sh_builtin_func_t *last_shell_builtin; extern SHELL_VAR *builtin_bind_variable PARAMS((char *, char *, int)); +extern SHELL_VAR *builtin_bind_var_to_int PARAMS((char *, intmax_t, int)); extern int builtin_unbind_variable PARAMS((const char *)); +extern SHELL_VAR *builtin_find_indexed_array PARAMS((char *, int)); +extern int builtin_arrayref_flags PARAMS((WORD_DESC *, int)); + /* variables from evalfile.c */ extern int sourcelevel; @@ -236,12 +249,14 @@ extern int breaking; extern int continuing; extern int loop_level; -/* variables from read.def */ -extern int sigalrm_seen; - /* variables from shift.def */ extern int print_shift_error; +/* variables from shopt.def */ +#if defined (ARRAY_VARS) +extern int expand_once_flag; +#endif + /* variables from source.def */ extern int source_searches_cwd; extern int source_uses_path; @@ -249,4 +264,19 @@ extern int source_uses_path; /* variables from wait.def */ extern int wait_intr_flag; +/* common code to set flags for valid_array_reference and builtin_bind_variable */ +#if defined (ARRAY_VARS) +#define SET_VFLAGS(wordflags, vflags, bindflags) \ + do { \ + vflags = assoc_expand_once ? VA_NOEXPAND : 0; \ + bindflags = assoc_expand_once ? ASS_NOEXPAND : 0; \ + if (assoc_expand_once && (wordflags & W_ARRAYREF)) \ + vflags |= VA_ONEWORD|VA_NOEXPAND; \ + if (vflags & VA_NOEXPAND) \ + bindflags |= ASS_NOEXPAND; \ + if (vflags & VA_ONEWORD) \ + bindflags |= ASS_ONEWORD; \ + } while (0) +#endif + #endif /* !__COMMON_H */ diff --git a/builtins/complete.def b/builtins/complete.def index 28a9ec2f9..6d600efb5 100644 --- a/builtins/complete.def +++ b/builtins/complete.def @@ -1,7 +1,7 @@ This file is complete.def, from which is created complete.c. It implements the builtins "complete", "compgen", and "compopt" in Bash. -Copyright (C) 1999-2020 Free Software Foundation, Inc. +Copyright (C) 1999-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -541,6 +541,8 @@ static void print_cmd_name (cmd) const char *cmd; { + char *x; + if (STREQ (cmd, DEFAULTCMD)) printf ("-D"); else if (STREQ (cmd, EMPTYCMD)) @@ -549,6 +551,12 @@ print_cmd_name (cmd) printf ("-I"); else if (*cmd == 0) /* XXX - can this happen? */ printf ("''"); + else if (sh_contains_shell_metas (cmd)) + { + x = sh_single_quote (cmd); + printf ("%s", x); + free (x); + } else printf ("%s", cmd); } @@ -575,7 +583,7 @@ print_one_completion (cmd, cs) print_arg (cs->command, "-C", 1); /* simple arguments that don't require quoting */ - print_arg (cs->funcname, "-F", 0); + print_arg (cs->funcname, "-F", sh_contains_shell_metas (cs->funcname) != 0); print_cmd_name (cmd); printf ("\n"); diff --git a/builtins/declare.def b/builtins/declare.def index 21e4516d1..54db59c55 100644 --- a/builtins/declare.def +++ b/builtins/declare.def @@ -1,7 +1,7 @@ This file is declare.def, from which is created declare.c. It implements the builtins "declare" and "local" in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -22,7 +22,7 @@ $PRODUCES declare.c $BUILTIN declare $FUNCTION declare_builtin -$SHORT_DOC declare [-aAfFgiIlnrtux] [-p] [name[=value] ...] +$SHORT_DOC declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...] Set variable values and attributes. Declare variables and give them attributes. If no NAMEs are given, @@ -64,7 +64,7 @@ $END $BUILTIN typeset $FUNCTION declare_builtin -$SHORT_DOC typeset [-aAfFgiIlnrtux] [-p] name[=value] ... +$SHORT_DOC typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...] Set variable values and attributes. A synonym for `declare'. See `help declare'. @@ -91,6 +91,9 @@ $END #include "bashgetopt.h" static SHELL_VAR *declare_find_variable PARAMS((const char *, int, int)); +static char *declare_build_newname PARAMS((char *, char *, int, char *, int)); +static char *declare_transform_name PARAMS((char *, int, int)); + static int declare_internal PARAMS((register WORD_LIST *, int)); /* Declare or change variable attributes. */ @@ -162,6 +165,68 @@ declare_find_variable (name, mkglobal, chklocal) return (find_global_variable (name)); } +/* Build a new string + NAME[SUBSCRIPT][[+]=VALUE] + from expanding a nameref into NAME */ +static char * +declare_build_newname (name, subscript_start, offset, value, aflags) + char *name, *subscript_start; + int offset; + char *value; + int aflags; +{ + size_t namelen, savelen; + char *ret; + + savelen = namelen = strlen (name); + if (subscript_start) + { + *subscript_start = '['; /* ] */ + namelen += strlen (subscript_start); + } + ret = xmalloc (namelen + 2 + strlen (value) + 1); + strcpy (ret, name); + if (subscript_start) + strcpy (ret + savelen, subscript_start); + if (offset) + { + if (aflags & ASS_APPEND) + ret[namelen++] = '+'; + ret[namelen++] = '='; + if (value && *value) + strcpy (ret + namelen, value); + else + ret[namelen] = '\0'; + } + + return (ret); +} + +static char * +declare_transform_name (name, flags_on, flags_off) + char *name; + int flags_on, flags_off; +{ + SHELL_VAR *var, *v; + char *newname; + + var = find_variable (name); + if (var == 0) + newname = nameref_transform_name (name, ASS_MKLOCAL); + else if ((flags_on & att_nameref) == 0 && (flags_off & att_nameref) == 0) + { + /* Ok, we're following namerefs here, so let's make sure that if + we followed one, it was at the same context (see below for + more details). */ + v = find_variable_last_nameref (name, 1); + newname = (v && v->context != variable_context) ? name : name_cell (var); + } + else + newname = name; /* dealing with nameref attribute */ + + return (newname); +} + /* The workhorse function. */ static int declare_internal (list, local_var) @@ -204,10 +269,9 @@ declare_internal (list, local_var) return (EX_USAGE); #endif case 'p': -/* if (local_var == 0) */ - pflag++; + pflag++; break; - case 'F': + case 'F': nodefs++; *flags |= att_function; break; @@ -271,7 +335,7 @@ declare_internal (list, local_var) /* If there are no more arguments left, then we just want to show some variables. */ - if (list == 0) /* declare -[aAfFirtx] */ + if (list == 0) /* declare -[aAfFilnrtux] */ { /* Show local variables defined at this context level if this is the `local' builtin. */ @@ -287,7 +351,7 @@ declare_internal (list, local_var) return (sh_chkwrite (EXECUTION_SUCCESS)); } - if (pflag) /* declare -p [-aAfFirtx] name [name...] */ + if (pflag) /* declare -p [-aAfFilnrtux] [name ...] */ { for (any_failed = 0; list; list = list->next) { @@ -306,13 +370,31 @@ declare_internal (list, local_var) return (sh_chkwrite (any_failed ? EXECUTION_FAILURE : EXECUTION_SUCCESS)); } + /* Some option combinations that don't make any sense */ + if ((flags_on & att_function) && (flags_on & (att_array|att_assoc|att_integer|att_nameref))) + { + char *optchar; + + if (flags_on & att_nameref) + optchar = "-n"; + else if (flags_on & att_integer) + optchar = "-i"; + else if (flags_on & att_assoc) + optchar = "-A"; + else if (flags_on & att_array) + optchar = "-a"; + + sh_invalidopt (optchar); + return (EXECUTION_FAILURE); + } + #define NEXT_VARIABLE() free (name); list = list->next; continue /* There are arguments left, so we are making variables. */ - while (list) /* declare [-aAfFirx] name [name ...] */ + while (list) /* declare [-aAfFilnrtux] name[=value] [name[=value] ...] */ { - char *value, *name, *oldname; - int offset, aflags, wflags, created_var, namelen; + char *value, *name, *newname; + int offset, aflags, wflags, created_var; int assoc_noexpand; #if defined (ARRAY_VARS) int making_array_special, compound_array_assign, simple_array_assign; @@ -326,6 +408,12 @@ declare_internal (list, local_var) #else assoc_noexpand = 0; #endif + /* XXX - we allow unbalanced brackets if assoc_noexpand is set, we count + brackets and make sure they match if assoc_noexpand is not set. So we + need to make sure we're checking assoc_noexpand and expand_once_flag + for backwards compatibility. We also use assoc_noexpand below when + we call assign_array_element, so we need to make sure they're + consistent in how they count brackets. */ offset = assignment (name, assoc_noexpand ? 2 : 0); aflags = 0; created_var = 0; @@ -340,6 +428,76 @@ declare_internal (list, local_var) NEXT_VARIABLE (); } + /* If we are declaring a function, then complain about it in some way. + We don't let people make functions by saying `typeset -f foo=bar'. */ + + /* Can't define functions using assignment statements */ + if (offset && (flags_on & att_function)) /* declare -f [-rix] foo=bar */ + { + builtin_error (_("cannot use `-f' to make functions")); + free (name); + return (EXECUTION_FAILURE); + } + + /* There should be a way, however, to let people look at a particular + function definition by saying `typeset -f foo'. This is the only + place in this builtin where we deal with functions. */ + + if (flags_on & att_function) + { + /* Should we restrict this when the shell is in posix mode even if + the function was created before the shell entered posix mode? + Previous versions of the shell enforced the restriction. */ + if (posixly_correct && legal_identifier (name) == 0) + { + sh_invalidid (name); + assign_error++; + NEXT_VARIABLE (); + } + + var = find_function (name); + + if (var) + { + if (readonly_p (var) && (flags_off & att_readonly)) + { + builtin_error (_("%s: readonly function"), name); + any_failed++; + NEXT_VARIABLE (); + } + /* declare -[Ff] name [name...] */ + if (flags_on == att_function && flags_off == 0) + { +#if defined (DEBUGGER) + if (nodefs && debugging_mode) + { + shell_fn = find_function_def (name_cell (var)); + if (shell_fn) + printf ("%s %d %s\n", name_cell (var), shell_fn->line, shell_fn->source_file); + else + printf ("%s\n", name_cell (var)); + } + else +#endif /* DEBUGGER */ + { + t = nodefs ? name_cell (var) : named_function_string (name, function_cell (var), FUNC_MULTILINE|FUNC_EXTERNAL); + printf ("%s\n", t); + any_failed = sh_chkwrite (any_failed); + } + } + else /* declare -[fF] -[rx] name [name...] */ + { + VSETATTR (var, flags_on); + flags_off &= ~att_function; /* makes no sense */ + VUNSETATTR (var, flags_off); + } + } + else + any_failed++; + + NEXT_VARIABLE (); + } + if (offset) /* declare [-aAfFirx] name=value */ { name[offset] = '\0'; @@ -361,7 +519,7 @@ declare_internal (list, local_var) if (valid_array_reference (name, 0)) { builtin_error (_("%s: reference variable cannot be an array"), name); - assign_error++; + any_failed++; NEXT_VARIABLE (); } else @@ -372,29 +530,32 @@ declare_internal (list, local_var) if (variable_context == 0) { builtin_error (_("%s: nameref variable self references not allowed"), name); - assign_error++; + assign_error++; /* XXX any_failed++ instead? */ NEXT_VARIABLE (); } else builtin_warning (_("%s: circular name reference"), name); } -#if 1 if (value && *value && (aflags & ASS_APPEND) == 0 && valid_nameref_value (value, 1) == 0) { builtin_error (_("`%s': invalid variable name for name reference"), value); assign_error++; NEXT_VARIABLE (); } -#endif } restart_new_var_name: + + /* The rest of the loop body deals with declare -[aAlinrtux] name [name...] + where each NAME can be an assignment statement. */ + + subscript_start = (char *)NULL; /* used below */ #if defined (ARRAY_VARS) + /* Determine whether we are creating or assigning an array variable */ var_exists = array_exists = creating_array = 0; compound_array_assign = simple_array_assign = 0; array_subscript_assignment = 0; - subscript_start = (char *)NULL; - if ((t = strchr (name, '[')) && (flags_on & att_function) == 0) /* ] */ + if (t = strchr (name, '[')) /* ] */ { /* If offset != 0 we have already validated any array reference because assignment() calls skipsubscript() */ @@ -413,11 +574,8 @@ restart_new_var_name: making_array_special = 0; #endif - /* If we're in posix mode or not looking for a shell function (since - shell function names don't have to be valid identifiers when the - shell's not in posix mode), check whether or not the argument is a - valid, well-formed shell identifier. */ - if ((posixly_correct || (flags_on & att_function) == 0) && legal_identifier (name) == 0) + /* Ensure the argument is a valid, well-formed shell identifier. */ + if (legal_identifier (name) == 0) { sh_invalidid (name); assign_error++; @@ -432,25 +590,12 @@ restart_new_var_name: variable that was in the temporary environment. Watch out for this. */ refvar = (SHELL_VAR *)NULL; - if (variable_context && mkglobal == 0 && ((flags_on & att_function) == 0)) + if (variable_context && mkglobal == 0) { - char *newname; - - /* check name for validity here? */ - var = find_variable (name); - if (var == 0) - newname = nameref_transform_name (name, ASS_MKLOCAL); - else if ((flags_on & att_nameref) == 0 && (flags_off & att_nameref) == 0) - { - /* Ok, we're following namerefs here, so let's make sure that if - we followed one, it was at the same context (see below for - more details). */ - refvar = find_variable_last_nameref (name, 1); - newname = (refvar && refvar->context != variable_context) ? name : var->name; - refvar = (SHELL_VAR *)NULL; - } - else - newname = name; /* dealing with nameref attribute */ + /* We don't check newname for validity here. We should not have an + invalid name assigned as the value of a nameref, but this could + cause problems. */ + newname = declare_transform_name (name, flags_on, flags_off); #if defined (ARRAY_VARS) /* Pass 1 as second argument to make_local_{assoc,array}_variable @@ -478,12 +623,12 @@ restart_new_var_name: else if (refvar && refvar->context == variable_context) var = refvar; /* Maybe we just want to create a new local variable */ - else if (var == 0 || var->context != variable_context) + else if ((var = find_variable (name)) == 0 || var->context != variable_context) var = make_local_variable (name, inherit_flag); /* otherwise we have a var at the right context */ } else - /* XXX - check name for validity here with valid_nameref_value */ + /* XXX - check name for validity here with valid_nameref_value? */ var = make_local_variable ((flags_on & att_nameref) ? name : newname, inherit_flag); /* sets att_invisible for new vars */ if (var == 0) @@ -501,483 +646,386 @@ restart_new_var_name: else var = (SHELL_VAR *)NULL; - /* If we are declaring a function, then complain about it in some way. - We don't let people make functions by saying `typeset -f foo=bar'. */ + /* VAR is non-null if we just created or fetched a local variable. */ - /* There should be a way, however, to let people look at a particular - function definition by saying `typeset -f foo'. */ + /* Here's what ksh93 seems to do as of the 2012 version: if we are + using declare -n to modify the value of an existing nameref + variable, don't follow the nameref chain at all and just search + for a nameref at the current context. If we have a nameref, + modify its value (changing which variable it references). */ + if (var == 0 && (flags_on & att_nameref)) + { + /* See if we are trying to modify an existing nameref variable, + but don't follow the nameref chain. */ + var = mkglobal ? find_global_variable_noref (name) : find_variable_noref (name); + if (var && nameref_p (var) == 0) + var = 0; + } - if (flags_on & att_function) + /* However, if we're turning off the nameref attribute on an existing + nameref variable, we first follow the nameref chain to the end, + modify the value of the variable this nameref variable references + if there is an assignment statement argument, + *CHANGING ITS VALUE AS A SIDE EFFECT*, then turn off the nameref + flag *LEAVING THE NAMEREF VARIABLE'S VALUE UNCHANGED* */ + else if (var == 0 && (flags_off & att_nameref)) { - if (offset) /* declare -f [-rix] foo=bar */ - { - builtin_error (_("cannot use `-f' to make functions")); - free (name); - return (EXECUTION_FAILURE); - } - else /* declare -f [-rx] name [name...] */ + /* See if we are trying to modify an existing nameref variable */ + refvar = mkglobal ? find_global_variable_last_nameref (name, 0) : find_variable_last_nameref (name, 0); + if (refvar && nameref_p (refvar) == 0) + refvar = 0; + /* If the nameref is readonly but doesn't have a value, ksh93 + allows the nameref attribute to be removed. If it's readonly + and has a value, even if the value doesn't reference an + existing variable, we disallow the modification */ + if (refvar && nameref_cell (refvar) && readonly_p (refvar)) { - var = find_function (name); - - if (var) - { - if (readonly_p (var) && (flags_off & att_readonly)) - { - builtin_error (_("%s: readonly function"), name); - any_failed++; - NEXT_VARIABLE (); - } - else if (flags_on & (att_array|att_assoc)) - { - sh_invalidopt ((flags_on & att_array) ? "-a" : "-A"); - any_failed++; - NEXT_VARIABLE (); - } - /* declare -[Ff] name [name...] */ - if (flags_on == att_function && flags_off == 0) - { -#if defined (DEBUGGER) - if (nodefs && debugging_mode) - { - shell_fn = find_function_def (var->name); - if (shell_fn) - printf ("%s %d %s\n", var->name, shell_fn->line, shell_fn->source_file); - else - printf ("%s\n", var->name); - } - else -#endif /* DEBUGGER */ - { - t = nodefs ? var->name - : named_function_string (name, function_cell (var), FUNC_MULTILINE|FUNC_EXTERNAL); - printf ("%s\n", t); - any_failed = sh_chkwrite (any_failed); - } - } - else /* declare -[fF] -[rx] name [name...] */ - { - VSETATTR (var, flags_on); - flags_off &= ~att_function; /* makes no sense */ - VUNSETATTR (var, flags_off); - } - } - else - any_failed++; + sh_readonly (name); + any_failed++; NEXT_VARIABLE (); } - } - else /* declare -[aAinrx] name [name...] */ - { - /* Non-null if we just created or fetched a local variable. */ -#if 0 - /* This is bash-4.3 code. */ - /* Here's what ksh93 seems to do. If we are modifying an existing - nameref variable, we don't follow the nameref chain past the last - nameref, and we set the nameref variable's value so future - references to that variable will return the value of the variable - we're assigning right now. */ -#else - /* Here's what ksh93 seems to do as of the 2012 version: if we are - using declare -n to modify the value of an existing nameref - variable, don't follow the nameref chain at all and just search - for a nameref at the current context. If we have a nameref, - modify its value (changing which variable it references). */ -#endif - if (var == 0 && (flags_on & att_nameref)) + + /* If all we're doing is turning off the nameref attribute, don't + bother with VAR at all, whether it exists or not. Just turn it + off and go on. */ + if (refvar && flags_on == 0 && offset == 0 && flags_off == att_nameref) { - /* See if we are trying to modify an existing nameref variable, - but don't follow the nameref chain. */ - var = mkglobal ? find_global_variable_noref (name) : find_variable_noref (name); - if (var && nameref_p (var) == 0) - var = 0; + VUNSETATTR (refvar, att_nameref); + NEXT_VARIABLE (); } - /* However, if we're turning off the nameref attribute on an existing - nameref variable, we first follow the nameref chain to the end, - modify the value of the variable this nameref variable references - if there is an assignment statement argument, - *CHANGING ITS VALUE AS A SIDE EFFECT*, then turn off the nameref - flag *LEAVING THE NAMEREF VARIABLE'S VALUE UNCHANGED* */ - else if (var == 0 && (flags_off & att_nameref)) - { - /* See if we are trying to modify an existing nameref variable */ - refvar = mkglobal ? find_global_variable_last_nameref (name, 0) : find_variable_last_nameref (name, 0); - if (refvar && nameref_p (refvar) == 0) - refvar = 0; - /* If the nameref is readonly but doesn't have a value, ksh93 - allows the nameref attribute to be removed. If it's readonly - and has a value, even if the value doesn't reference an - existing variable, we disallow the modification */ - if (refvar && nameref_cell (refvar) && readonly_p (refvar)) - { - sh_readonly (name); - any_failed++; - NEXT_VARIABLE (); - } - - /* If all we're doing is turning off the nameref attribute, don't - bother with VAR at all, whether it exists or not. Just turn it - off and go on. */ - if (refvar && flags_on == 0 && offset == 0 && (flags_off & ~att_nameref) == 0) - { - VUNSETATTR (refvar, att_nameref); - NEXT_VARIABLE (); - } - if (refvar) - /* XXX - use declare_find_variable here? */ - var = mkglobal ? find_global_variable (nameref_cell (refvar)) : find_variable (nameref_cell (refvar)); - } + if (refvar) + var = declare_find_variable (nameref_cell (refvar), mkglobal, 0); + } #if defined (ARRAY_VARS) - /* If we have an array assignment to a nameref, remove the nameref - attribute and go on. */ - else if (var == 0 && offset && array_subscript_assignment) + /* If we have an array assignment to a nameref, remove the nameref + attribute and go on. This handles + declare -n xref[=value]; declare [-a] xref[1]=one */ + else if (var == 0 && offset && array_subscript_assignment) + { + var = mkglobal ? find_global_variable_noref (name) : find_variable_noref (name); + if (var && nameref_p (var)) { - var = mkglobal ? find_global_variable_noref (name) : find_variable_noref (name); - if (var && nameref_p (var)) - { - internal_warning (_("%s: removing nameref attribute"), name); - FREE (value_cell (var)); /* XXX - bash-4.3 compat */ - var_setvalue (var, (char *)NULL); - VUNSETATTR (var, att_nameref); - } + internal_warning (_("%s: removing nameref attribute"), name); + FREE (value_cell (var)); /* XXX - bash-4.3 compat */ + var_setvalue (var, (char *)NULL); + VUNSETATTR (var, att_nameref); } + } #endif - /* See if we are trying to set flags or value (or create) for an - existing nameref that points to a non-existent variable: e.g., + /* See if we are trying to set flags or value (or create) for an + existing nameref that points to a non-existent variable: e.g., declare -n foo=bar unset foo # unsets bar declare -i foo foo=4+4 - declare -p foo */ - if (var == 0 && (mkglobal || flags_on || flags_off || offset)) + declare -p foo + */ + if (var == 0 && (mkglobal || flags_on || flags_off || offset)) + { + refvar = mkglobal ? find_global_variable_last_nameref (name, 0) : find_variable_last_nameref (name, 0); + if (refvar && nameref_p (refvar) == 0) + refvar = 0; + if (refvar) + var = declare_find_variable (nameref_cell (refvar), mkglobal, 0); + if (refvar && var == 0) { - refvar = mkglobal ? find_global_variable_last_nameref (name, 0) : find_variable_last_nameref (name, 0); - if (refvar && nameref_p (refvar) == 0) - refvar = 0; - if (refvar) - /* XXX - use declare_find_variable here? */ - var = mkglobal ? find_global_variable (nameref_cell (refvar)) : find_variable (nameref_cell (refvar)); - if (refvar && var == 0) - { - oldname = name; /* need to free this */ + /* I'm not sure subscript_start is ever non-null here. In any + event, build a new name from the nameref value, including any + subscript, and add the [[+]=value] if offset != 0 */ + newname = declare_build_newname (nameref_cell (refvar), subscript_start, offset, value, aflags); + free (name); + name = newname; - namelen = strlen (nameref_cell (refvar)); -#if defined (ARRAY_VARS) - if (subscript_start) - { - *subscript_start = '['; /*]*/ - namelen += strlen (subscript_start); - } -#endif - name = xmalloc (namelen + 2 + strlen (value) + 1); - strcpy (name, nameref_cell (refvar)); -#if defined (ARRAY_VARS) - if (subscript_start) - strcpy (name + strlen (nameref_cell (refvar)), subscript_start); -#endif - /* We are committed to using the new name, so reset */ - if (offset) + if (offset) + { + offset = assignment (name, 0); + /* If offset was valid previously, but substituting the + the nameref value results in an invalid assignment, + throw an invalid identifier error */ + if (offset == 0) { - /* Rebuild assignment and restore offset and value */ - if (aflags & ASS_APPEND) - name[namelen++] = '+'; - name[namelen++] = '='; - if (value && *value) - strcpy (name + namelen, value); - else - name[namelen] = '\0'; - offset = assignment (name, 0); - /* if offset was valid previously, but the substituting - of the nameref value results in an invalid assignment, - throw an invalid identifier error */ - if (offset == 0) - { - free (oldname); - sh_invalidid (name); - assign_error++; - NEXT_VARIABLE (); - } - name[offset] = '\0'; - value = name + namelen; + sh_invalidid (name); + assign_error++; + NEXT_VARIABLE (); } - free (oldname); + name[(aflags & ASS_APPEND) ? offset - 1 : offset] = '\0'; + value = name + offset + 1; + } - /* OK, let's turn off the nameref attribute. - Now everything else applies to VAR. */ - if (flags_off & att_nameref) - VUNSETATTR (refvar, att_nameref); + /* OK, let's turn off the nameref attribute. + Now everything else applies to VAR. */ + if (flags_off & att_nameref) + VUNSETATTR (refvar, att_nameref); - goto restart_new_var_name; - /* NOTREACHED */ - } + goto restart_new_var_name; + /* NOTREACHED */ } - if (var == 0) - var = declare_find_variable (name, mkglobal, chklocal); + } + if (var == 0) + var = declare_find_variable (name, mkglobal, chklocal); + /* At this point, VAR is the variable we are dealing with; REFVAR is the + nameref variable we dereferenced to get VAR, if any. */ #if defined (ARRAY_VARS) - var_exists = var != 0; - array_exists = var && (array_p (var) || assoc_p (var)); - creating_array = flags_on & (att_array|att_assoc); + var_exists = var != 0; + array_exists = var && (array_p (var) || assoc_p (var)); + creating_array = flags_on & (att_array|att_assoc); #endif - if (var == 0) - { + /* Make a new variable if we need to. */ + if (var == 0) + { #if defined (ARRAY_VARS) - if (flags_on & att_assoc) - { - var = make_new_assoc_variable (name); - if (var && offset == 0) - VSETATTR (var, att_invisible); - } - else if ((flags_on & att_array) || making_array_special) - { - var = make_new_array_variable (name); - if (var && offset == 0) - VSETATTR (var, att_invisible); - } - else -#endif - { - var = mkglobal ? bind_global_variable (name, (char *)NULL, ASS_FORCE) : bind_variable (name, (char *)NULL, ASS_FORCE); - if (var && offset == 0) - VSETATTR (var, att_invisible); - } - if (var == 0) - { - /* Has to appear in brackets */ - NEXT_VARIABLE (); - } - created_var = 1; - } - /* Can't take an existing array variable and make it a nameref */ - else if ((array_p (var) || assoc_p (var)) && (flags_on & att_nameref)) - { - builtin_error (_("%s: reference variable cannot be an array"), name); - assign_error++; - NEXT_VARIABLE (); - } - else if (nameref_p (var) && (flags_on & att_nameref) == 0 && (flags_off & att_nameref) == 0 && offset && valid_nameref_value (value, 1) == 0) - { - builtin_error (_("`%s': invalid variable name for name reference"), value); - any_failed++; - NEXT_VARIABLE (); - } - else if (flags_on & att_nameref) - { -#if 1 - /* Check of offset is to allow an assignment to a nameref var as - part of the declare word to override existing value */ - if (nameref_p (var) == 0 && var_isset (var) && offset == 0 && valid_nameref_value (value_cell (var), 0) == 0) - { - builtin_error (_("`%s': invalid variable name for name reference"), value_cell (var)); - any_failed++; - NEXT_VARIABLE (); - } + if (flags_on & att_assoc) + var = make_new_assoc_variable (name); + else if ((flags_on & att_array) || making_array_special) + var = make_new_array_variable (name); + else #endif - if (readonly_p (var)) - { - sh_readonly (name); - any_failed++; - NEXT_VARIABLE (); - } - /* ksh93 compat: turning on nameref attribute turns off -ilu */ - VUNSETATTR (var, att_integer|att_uppercase|att_lowercase|att_capcase); - } + var = mkglobal ? bind_global_variable (name, (char *)NULL, ASS_FORCE) : bind_variable (name, (char *)NULL, ASS_FORCE); - /* Cannot use declare +r to turn off readonly attribute. */ - if (readonly_p (var) && (flags_off & att_readonly)) + if (var == 0) { - sh_readonly (name_cell (var)); - any_failed++; + /* Has to appear in brackets */ NEXT_VARIABLE (); } + if (offset == 0) + VSETATTR (var, att_invisible); + created_var = 1; + } - /* Cannot use declare to assign value to readonly or noassign - variable. */ - if ((readonly_p (var) || noassign_p (var)) && offset) - { - if (readonly_p (var)) - sh_readonly (name); - assign_error++; - NEXT_VARIABLE (); - } + /* Nameref variable error checking. */ + + /* Can't take an existing array variable and make it a nameref */ + else if ((array_p (var) || assoc_p (var)) && (flags_on & att_nameref)) + { + builtin_error (_("%s: reference variable cannot be an array"), name); + any_failed++; + NEXT_VARIABLE (); + } + /* Can't have an invalid identifier as nameref value */ + else if (nameref_p (var) && (flags_on & att_nameref) == 0 && (flags_off & att_nameref) == 0 && offset && valid_nameref_value (value, 1) == 0) + { + builtin_error (_("`%s': invalid variable name for name reference"), value); + any_failed++; + NEXT_VARIABLE (); + } + /* Can't make an existing variable a nameref if its current value is not + a valid identifier. Check of offset is to allow an assignment to a + nameref var as part of the declare word to override existing value. */ + else if ((flags_on & att_nameref) && nameref_p (var) == 0 && var_isset (var) && offset == 0 && valid_nameref_value (value_cell (var), 0) == 0) + { + builtin_error (_("`%s': invalid variable name for name reference"), value_cell (var)); + any_failed++; + NEXT_VARIABLE (); + } + /* Can't make an existing readonly variable a nameref. */ + else if ((flags_on & att_nameref) && readonly_p (var)) + { + sh_readonly (name); + any_failed++; + NEXT_VARIABLE (); + } + + /* Readonly variable error checking. */ + + /* Cannot use declare +r to turn off readonly attribute. */ + if (readonly_p (var) && (flags_off & att_readonly)) + { + sh_readonly (name_cell (var)); + any_failed++; + NEXT_VARIABLE (); + } + /* Cannot use declare to assign value to readonly or noassign variable. */ + else if ((readonly_p (var) || noassign_p (var)) && offset) + { + if (readonly_p (var)) + sh_readonly (name); + assign_error++; + NEXT_VARIABLE (); + } #if defined (ARRAY_VARS) - /* make declare a[2]=foo as similar to a[2]=foo as possible if - a is already an array or assoc variable. */ - if (array_subscript_assignment && array_exists && creating_array == 0) - simple_array_assign = 1; - else if ((making_array_special || creating_array || array_exists) && offset) - { - int vlen; - vlen = STRLEN (value); -/*itrace("declare_builtin: name = %s value = %s flags = %d", name, value, wflags);*/ - if (shell_compatibility_level > 43 && (wflags & W_COMPASSIGN) == 0 && - value[0] == '(' && value[vlen-1] == ')') - { - /* The warning is only printed when using compound assignment - to an array variable that doesn't already exist. We use - creating_array to allow things like - declare -a foo$bar='(abc)' to work. */ - if (array_exists == 0 && creating_array == 0) - internal_warning (_("%s: quoted compound array assignment deprecated"), list->word->word); - compound_array_assign = array_exists || creating_array; - simple_array_assign = making_array_special; - } - else if (value[0] == '(' && value[vlen-1] == ')' && (shell_compatibility_level < 44 || (wflags & W_COMPASSIGN))) - compound_array_assign = 1; - else - simple_array_assign = 1; - } + /* Array variable error checking. */ - /* Cannot use declare +a name or declare +A name to remove an - array variable. */ - if (((flags_off & att_array) && array_p (var)) || ((flags_off & att_assoc) && assoc_p (var))) - { - builtin_error (_("%s: cannot destroy array variables in this way"), name); - any_failed++; - NEXT_VARIABLE (); - } + /* Cannot use declare +a name or declare +A name to remove an array variable. */ + if (((flags_off & att_array) && array_p (var)) || ((flags_off & att_assoc) && assoc_p (var))) + { + builtin_error (_("%s: cannot destroy array variables in this way"), name); + any_failed++; + NEXT_VARIABLE (); + } + else if ((flags_on & att_array) && assoc_p (var)) + { + builtin_error (_("%s: cannot convert associative to indexed array"), name); + any_failed++; + NEXT_VARIABLE (); + } + else if ((flags_on & att_assoc) && array_p (var)) + { + builtin_error (_("%s: cannot convert indexed to associative array"), name); + any_failed++; + NEXT_VARIABLE (); + } - if ((flags_on & att_array) && assoc_p (var)) - { - builtin_error (_("%s: cannot convert associative to indexed array"), name); - any_failed++; - NEXT_VARIABLE (); - } - if ((flags_on & att_assoc) && array_p (var)) - { - builtin_error (_("%s: cannot convert indexed to associative array"), name); - any_failed++; - NEXT_VARIABLE (); - } + /* make declare A[2]=foo as similar to A[2]=foo as possible if A is + already an array or assoc variable. */ + if (array_subscript_assignment && array_exists && creating_array == 0) + simple_array_assign = 1; + else if ((making_array_special || creating_array || array_exists) && offset) + { + int vlen; + vlen = STRLEN (value); +/*itrace("declare_builtin: name = %s value = %s flags = %d", name, value, wflags);*/ - /* declare -A name[[n]] makes name an associative array variable. */ - if (flags_on & att_assoc) + if (shell_compatibility_level > 43 && (wflags & W_COMPASSIGN) == 0 && + value[0] == '(' && value[vlen-1] == ')') { - if (assoc_p (var) == 0) - var = convert_var_to_assoc (var); + /* I don't believe this warning is printed any more. + We use creating_array to allow things like + declare -a foo$bar='(abc)' + to work as they have in the past. */ + if (array_exists == 0 && creating_array == 0) + internal_warning (_("%s: quoted compound array assignment deprecated"), list->word->word); + compound_array_assign = array_exists || creating_array; + simple_array_assign = making_array_special; } - /* declare -a name[[n]] or declare name[n] makes name an indexed - array variable. */ - else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0 && assoc_p (var) == 0) - var = convert_var_to_array (var); + else if (value[0] == '(' && value[vlen-1] == ')' && (shell_compatibility_level < 44 || (wflags & W_COMPASSIGN))) + compound_array_assign = 1; + else + simple_array_assign = 1; + } + + /* declare -A name[[n]] makes name an associative array variable. */ + if (flags_on & att_assoc) + { + if (assoc_p (var) == 0) + var = convert_var_to_assoc (var); + } + /* declare -a name[[n]] or declare name[n] makes NAME an indexed + array variable. */ + else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0 && assoc_p (var) == 0) + var = convert_var_to_array (var); #endif /* ARRAY_VARS */ - /* XXX - we note that we are turning on nameref attribute and defer - setting it until the assignment has been made so we don't do an - inadvertent nameref lookup. Might have to do the same thing for - flags_off&att_nameref. */ - /* XXX - ksh93 makes it an error to set a readonly nameref variable - using a single typeset command. */ - onref = (flags_on & att_nameref); - flags_on &= ~att_nameref; + /* ksh93 compat: turning on nameref attribute turns off -ilu */ + if (flags_on & att_nameref) + VUNSETATTR (var, att_integer|att_uppercase|att_lowercase|att_capcase); + + /* XXX - we note that we are turning on nameref attribute and defer + setting it until the assignment has been made so we don't do an + inadvertent nameref lookup. Might have to do the same thing for + flags_off&att_nameref. */ + /* XXX - ksh93 makes it an error to set a readonly nameref variable + using a single typeset command. */ + onref = (flags_on & att_nameref); + flags_on &= ~att_nameref; #if defined (ARRAY_VARS) - if (array_p (var) || assoc_p (var) - || (offset && compound_array_assign) - || simple_array_assign) - onref = 0; /* array variables may not be namerefs */ + /* I don't believe this condition ever tests true, but array variables + may not be namerefs */ + if (array_p (var) || assoc_p (var) || compound_array_assign || simple_array_assign) + onref = 0; #endif - /* ksh93 seems to do this */ - offref = (flags_off & att_nameref); - flags_off &= ~att_nameref; + /* ksh93 seems to do this */ + offref = (flags_off & att_nameref); + flags_off &= ~att_nameref; - VSETATTR (var, flags_on); - VUNSETATTR (var, flags_off); + VSETATTR (var, flags_on); + VUNSETATTR (var, flags_off); #if defined (ARRAY_VARS) - if (offset && compound_array_assign) - assign_array_var_from_string (var, value, aflags|ASS_FORCE); - else if (simple_array_assign && subscript_start) - { - int local_aflags; - /* declare [-aA] name[N]=value */ - *subscript_start = '['; /* ] */ - /* XXX - problem here with appending */ - local_aflags = aflags&ASS_APPEND; - local_aflags |= assoc_noexpand ? ASS_NOEXPAND : 0; - var = assign_array_element (name, value, local_aflags); /* XXX - not aflags */ - *subscript_start = '\0'; - if (var == 0) /* some kind of assignment error */ - { - assign_error++; - flags_on |= onref; - flags_off |= offref; - NEXT_VARIABLE (); - } - } - else if (simple_array_assign) + if (offset && compound_array_assign) + assign_array_var_from_string (var, value, aflags|ASS_FORCE); + else if (simple_array_assign && subscript_start) + { + int local_aflags; + + /* declare [-aA] name[N]=value */ + *subscript_start = '['; /* ] */ + /* XXX - problem here with appending */ + local_aflags = aflags&ASS_APPEND; + local_aflags |= assoc_noexpand ? ASS_NOEXPAND : 0; + local_aflags |= ASS_ALLOWALLSUB; /* allow declare a[@]=at */ + var = assign_array_element (name, value, local_aflags, (array_eltstate_t *)0); /* XXX - not aflags */ + *subscript_start = '\0'; + if (var == 0) /* some kind of assignment error */ { - /* let bind_{array,assoc}_variable take care of this. */ - if (assoc_p (var)) - bind_assoc_variable (var, name, savestring ("0"), value, aflags|ASS_FORCE); - else - bind_array_variable (name, 0, value, aflags|ASS_FORCE); + assign_error++; + flags_on |= onref; + flags_off |= offref; + NEXT_VARIABLE (); } + } + else if (simple_array_assign) + { + /* let bind_{array,assoc}_variable take care of this. */ + if (assoc_p (var)) + bind_assoc_variable (var, name, savestring ("0"), value, aflags|ASS_FORCE); else + bind_array_variable (name, 0, value, aflags|ASS_FORCE); + } + else #endif - /* XXX - no ASS_FORCE here */ - /* bind_variable_value duplicates the essential internals of - bind_variable() */ - if (offset) + /* XXX - no ASS_FORCE here */ + /* bind_variable_value duplicates the essential internals of bind_variable() */ + if (offset) + { + if (onref || nameref_p (var)) + aflags |= ASS_NAMEREF; + v = bind_variable_value (var, value, aflags); + if (v == 0 && (onref || nameref_p (var))) { - if (onref || nameref_p (var)) - aflags |= ASS_NAMEREF; - v = bind_variable_value (var, value, aflags); - if (v == 0 && (onref || nameref_p (var))) - { - if (valid_nameref_value (value, 1) == 0) - sh_invalidid (value); - assign_error++; - /* XXX - unset this variable? or leave it as normal var? */ - if (created_var) - delete_var (var->name, mkglobal ? global_variables : shell_variables); - flags_on |= onref; /* undo change from above */ - flags_off |= offref; - NEXT_VARIABLE (); - } + if (valid_nameref_value (value, 1) == 0) + sh_invalidid (value); + assign_error++; + /* XXX - unset this variable? or leave it as normal var? */ + if (created_var) + delete_var (name_cell (var), mkglobal ? global_variables : shell_variables); + flags_on |= onref; /* undo change from above */ + flags_off |= offref; + NEXT_VARIABLE (); } + } - /* If we found this variable in the temporary environment, as with - `var=value declare -x var', make sure it is treated identically - to `var=value export var'. Do the same for `declare -r' and - `readonly'. Preserve the attributes, except for att_tempvar. */ - /* XXX -- should this create a variable in the global scope, or - modify the local variable flags? ksh93 has it modify the - global scope. - Need to handle case like in set_var_attribute where a temporary - variable is in the same table as the function local vars. */ - if ((flags_on & (att_exported|att_readonly)) && tempvar_p (var)) - { - SHELL_VAR *tv; - char *tvalue; + /* If we found this variable in the temporary environment, as with + `var=value declare -x var', make sure it is treated identically + to `var=value export var'. Do the same for `declare -r' and + `readonly'. Preserve the attributes, except for att_tempvar. */ + /* XXX -- should this create a variable in the global scope, or + modify the local variable flags? ksh93 has it modify the + global scope. + Need to handle case like in set_var_attribute where a temporary + variable is in the same table as the function local vars. */ + if ((flags_on & (att_exported|att_readonly)) && tempvar_p (var)) + { + SHELL_VAR *tv; + char *tvalue; - tv = find_tempenv_variable (var->name); + tv = find_tempenv_variable (name_cell (var)); + if (tv) + { + tvalue = var_isset (var) ? savestring (value_cell (var)) : savestring (""); + tv = bind_variable (name_cell (var), tvalue, 0); if (tv) { - tvalue = var_isset (var) ? savestring (value_cell (var)) : savestring (""); - tv = bind_variable (var->name, tvalue, 0); - if (tv) - { - tv->attributes |= var->attributes & ~att_tempvar; - if (tv->context > 0) - VSETATTR (tv, att_propagate); - } - free (tvalue); + tv->attributes |= var->attributes & ~att_tempvar; + if (tv->context > 0) + VSETATTR (tv, att_propagate); } - VSETATTR (var, att_propagate); + free (tvalue); } + VSETATTR (var, att_propagate); } /* Turn on nameref attribute we deferred above. */ - /* XXX - should we turn on the noassign attribute for consistency with - ksh93 when we turn on the nameref attribute? */ VSETATTR (var, onref); flags_on |= onref; VUNSETATTR (var, offref); flags_off |= offref; + /* Yuck. ksh93 compatibility. XXX - need to investigate more but definitely happens when turning off nameref attribute on nameref (see comments above). Under no circumstances allow this to turn diff --git a/builtins/enable.def b/builtins/enable.def index 9d9010b78..27d341a6f 100644 --- a/builtins/enable.def +++ b/builtins/enable.def @@ -1,7 +1,7 @@ This file is enable.def, from which is created enable.c. It implements the builtin "enable" in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -75,6 +75,7 @@ $END #define ENABLED 1 #define DISABLED 2 #define SPECIAL 4 +#define SILENT 8 /* affects dyn_load_builtin behavior */ #define AFLAG 0x01 #define DFLAG 0x02 @@ -110,6 +111,7 @@ enable_builtin (list) { int result, flags; int opt, filter; + WORD_LIST *next; #if defined (HAVE_DLOPEN) && defined (HAVE_DLSYM) char *filename; #endif @@ -178,6 +180,7 @@ enable_builtin (list) filter |= SPECIAL; list_some_builtins (filter); + result = sh_chkwrite (EXECUTION_SUCCESS); } #if defined (HAVE_DLOPEN) && defined (HAVE_DLSYM) else if (flags & FFLAG) @@ -187,6 +190,8 @@ enable_builtin (list) filter |= SPECIAL; result = dyn_load_builtin (list, filter, filename); + if (result != EXECUTION_SUCCESS) + result = EXECUTION_FAILURE; /* normalize return value */ #if defined (PROGRAMMABLE_COMPLETION) set_itemlist_dirty (&it_builtins); #endif @@ -212,13 +217,37 @@ enable_builtin (list) while (list) { opt = enable_shell_command (list->word->word, flags & NFLAG); + next = list->next; - if (opt == EXECUTION_FAILURE) +#if defined (HAVE_DLOPEN) && defined (HAVE_DLSYM) + /* If we try to enable a non-existent builtin, and we have dynamic + loading, try the equivalent of `enable -f name name'. */ + if (opt == EX_NOTFOUND) + { + int dflags, r; + + dflags = ENABLED|SILENT|((flags & SFLAG) ? SPECIAL : 0); + + list->next = 0; + r = dyn_load_builtin (list, dflags, list->word->word); + list->next = next; + if (r == EXECUTION_SUCCESS) + opt = r; +#if defined (PROGRAMMABLE_COMPLETION) + set_itemlist_dirty (&it_builtins); +#endif + } +#endif + + if (opt == EX_NOTFOUND) { sh_notbuiltin (list->word->word); result = EXECUTION_FAILURE; } - list = list->next; + else if (opt != EXECUTION_SUCCESS) + result = EXECUTION_FAILURE; + + list = next; } } return (result); @@ -260,7 +289,7 @@ enable_shell_command (name, disable_p) b = builtin_address_internal (name, 1); if (b == 0) - return (EXECUTION_FAILURE); + return (EX_NOTFOUND); if (disable_p) b->flags &= ~BUILTIN_ENABLED; @@ -339,11 +368,16 @@ dyn_load_builtin (list, flags, filename) if (handle == 0) { - name = printable_filename (filename, 0); - builtin_error (_("cannot open shared object %s: %s"), name, dlerror ()); - if (name != filename) - free (name); - return (EXECUTION_FAILURE); + /* If we've been told to be quiet, don't complain about not finding the + specified shared object. */ + if ((flags & SILENT) == 0) + { + name = printable_filename (filename, 0); + builtin_error (_("cannot open shared object %s: %s"), name, dlerror ()); + if (name != filename) + free (name); + } + return (EX_NOTFOUND); } for (new = 0, l = list; l; l = l->next, new++) @@ -369,7 +403,7 @@ dyn_load_builtin (list, flags, filename) { name = printable_filename (filename, 0); builtin_error (_("cannot find %s in shared object %s: %s"), - struct_name, name, dlerror ()); + struct_name, name, dlerror ()); if (name != filename) free (name); free (struct_name); diff --git a/builtins/evalstring.c b/builtins/evalstring.c index 18928a17e..fd6352995 100644 --- a/builtins/evalstring.c +++ b/builtins/evalstring.c @@ -1,6 +1,6 @@ /* evalstring.c - evaluate a string as one or more shell commands. */ -/* Copyright (C) 1996-2020 Free Software Foundation, Inc. +/* Copyright (C) 1996-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -84,30 +84,35 @@ restore_lastcom (x) the_printed_command_except_trap = x; } +int +should_optimize_fork (command, subshell) + COMMAND *command; + int subshell; +{ + return (running_trap == 0 && + command->type == cm_simple && + signal_is_trapped (EXIT_TRAP) == 0 && + signal_is_trapped (ERROR_TRAP) == 0 && + any_signals_trapped () < 0 && + (subshell || (command->redirects == 0 && command->value.Simple->redirects == 0)) && + ((command->flags & CMD_TIME_PIPELINE) == 0) && + ((command->flags & CMD_INVERT_RETURN) == 0)); +} + +/* This has extra tests to account for STARTUP_STATE == 2, which is for + -c command but has been extended to command and process substitution + (basically any time you call parse_and_execute in a subshell). */ int should_suppress_fork (command) COMMAND *command; { -#if 0 /* TAG: bash-5.2 */ int subshell; subshell = subshell_environment & SUBSHELL_PROCSUB; /* salt to taste */ -#endif return (startup_state == 2 && parse_and_execute_level == 1 && - running_trap == 0 && *bash_input.location.string == '\0' && parser_expanding_alias () == 0 && - command->type == cm_simple && - signal_is_trapped (EXIT_TRAP) == 0 && - signal_is_trapped (ERROR_TRAP) == 0 && - any_signals_trapped () < 0 && -#if 0 /* TAG: bash-5.2 */ - (subshell || (command->redirects == 0 && command->value.Simple->redirects == 0)) && -#else - command->redirects == 0 && command->value.Simple->redirects == 0 && -#endif - ((command->flags & CMD_TIME_PIPELINE) == 0) && - ((command->flags & CMD_INVERT_RETURN) == 0)); + should_optimize_fork (command, subshell)); } int @@ -121,13 +126,14 @@ can_optimize_connection (command) } void -optimize_fork (command) +optimize_connection_fork (command) COMMAND *command; { if (command->type == cm_connection && (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') && (command->value.Connection->second->flags & CMD_TRY_OPTIMIZING) && - should_suppress_fork (command->value.Connection->second)) + ((startup_state == 2 && should_suppress_fork (command->value.Connection->second)) || + ((subshell_environment & SUBSHELL_PAREN) && should_optimize_fork (command->value.Connection->second, 0)))) { command->value.Connection->second->flags |= CMD_NO_FORK; command->value.Connection->second->value.Simple->flags |= CMD_NO_FORK; @@ -138,21 +144,19 @@ void optimize_subshell_command (command) COMMAND *command; { - if (running_trap == 0 && - command->type == cm_simple && - signal_is_trapped (EXIT_TRAP) == 0 && - signal_is_trapped (ERROR_TRAP) == 0 && - any_signals_trapped () < 0 && - command->redirects == 0 && command->value.Simple->redirects == 0 && - ((command->flags & CMD_TIME_PIPELINE) == 0) && - ((command->flags & CMD_INVERT_RETURN) == 0)) + if (should_optimize_fork (command, 0)) { command->flags |= CMD_NO_FORK; command->value.Simple->flags |= CMD_NO_FORK; } else if (command->type == cm_connection && - (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR)) - optimize_subshell_command (command->value.Connection->second); + (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') && + command->value.Connection->second->type == cm_simple && + parser_expanding_alias () == 0) + { + command->value.Connection->second->flags |= CMD_TRY_OPTIMIZING; + command->value.Connection->second->value.Simple->flags |= CMD_TRY_OPTIMIZING; + } } void @@ -175,6 +179,19 @@ optimize_shell_function (command) } } +int +can_optimize_cat_file (command) + COMMAND *command; +{ + return (command->type == cm_simple && !command->redirects && + (command->flags & CMD_TIME_PIPELINE) == 0 && + command->value.Simple->words == 0 && + command->value.Simple->redirects && + command->value.Simple->redirects->next == 0 && + command->value.Simple->redirects->instruction == r_input_direction && + command->value.Simple->redirects->redirector.dest == 0); +} + /* How to force parse_and_execute () to clean up after itself. */ void parse_and_execute_cleanup (old_running_trap) @@ -346,12 +363,14 @@ parse_and_execute (string, from_file, flags) these circumstances. Don't bother with cleanup here because we don't want to run the function execution cleanup stuff that will cause pop_context and other functions to run. + We call reset_local_contexts() instead, which just frees + context memory. XXX - change that if we want the function context to be unwound. */ if (exit_immediately_on_error && variable_context) { discard_unwind_frame ("pe_dispose"); - variable_context = 0; /* not in a function */ + reset_local_contexts (); /* not in a function */ } should_jump_to_top_level = 1; goto out; @@ -364,6 +383,25 @@ parse_and_execute (string, from_file, flags) should_jump_to_top_level = 1; goto out; + case EXITBLTIN: + if (command) + { + if (variable_context && signal_is_trapped (0)) + { + /* Let's make sure we run the exit trap in the function + context, as we do when not running parse_and_execute. + The pe_dispose unwind frame comes before any unwind- + protects installed by the string we're evaluating, so + it will undo the current function scope. */ + dispose_command (command); + discard_unwind_frame ("pe_dispose"); + } + else + run_unwind_frame ("pe_dispose"); + } + should_jump_to_top_level = 1; + goto out; + case DISCARD: if (command) run_unwind_frame ("pe_dispose"); @@ -390,7 +428,7 @@ parse_and_execute (string, from_file, flags) break; } } - + if (parse_command () == 0) { if ((flags & SEVAL_PARSEONLY) || (interactive_shell == 0 && read_but_dont_execute)) @@ -473,13 +511,7 @@ parse_and_execute (string, from_file, flags) if (startup_state == 2 && (subshell_environment & SUBSHELL_COMSUB) && *bash_input.location.string == '\0' && - command->type == cm_simple && !command->redirects && - (command->flags & CMD_TIME_PIPELINE) == 0 && - command->value.Simple->words == 0 && - command->value.Simple->redirects && - command->value.Simple->redirects->next == 0 && - command->value.Simple->redirects->instruction == r_input_direction && - command->value.Simple->redirects->redirector.dest == 0) + can_optimize_cat_file (command)) { int r; r = cat_file (command->value.Simple->redirects); @@ -531,6 +563,8 @@ parse_and_execute (string, from_file, flags) throw_to_top_level (); } + CHECK_TERMSIG; + if (should_jump_to_top_level) jump_to_top_level (code); @@ -543,10 +577,11 @@ parse_and_execute (string, from_file, flags) command substitutions during parsing to obey Posix rules about finding the end of the command and balancing parens. */ int -parse_string (string, from_file, flags, endp) +parse_string (string, from_file, flags, cmdp, endp) char *string; const char *from_file; int flags; + COMMAND **cmdp; char **endp; { int code, nc; @@ -563,7 +598,6 @@ parse_string (string, from_file, flags, endp) sigprocmask (SIG_BLOCK, (sigset_t *)NULL, (sigset_t *)&ps_sigmask); #endif -/*itrace("parse_string: `%s'", string);*/ /* Reset the line number if the caller wants us to. If we don't reset the line number, we have to subtract one, because we will add one just before executing the next command (resetting the line number sets it to @@ -575,9 +609,9 @@ parse_string (string, from_file, flags, endp) code = should_jump_to_top_level = 0; oglobal = global_command; - ostring = string; with_input_from_string (string, from_file); + ostring = bash_input.location.string; while (*(bash_input.location.string)) /* XXX - parser_expanding_alias () ? */ { command = (COMMAND *)NULL; @@ -593,15 +627,15 @@ parse_string (string, from_file, flags, endp) if (code) { -#if defined (DEBUG) -itrace("parse_string: longjmp executed: code = %d", code); -#endif + INTERNAL_DEBUG(("parse_string: longjmp executed: code = %d", code)); + should_jump_to_top_level = 0; switch (code) { case FORCE_EOF: case ERREXIT: case EXITPROG: + case EXITBLTIN: case DISCARD: /* XXX */ if (command) dispose_command (command); @@ -621,7 +655,10 @@ itrace("parse_string: longjmp executed: code = %d", code); if (parse_command () == 0) { - dispose_command (global_command); + if (cmdp) + *cmdp = global_command; + else + dispose_command (global_command); global_command = (COMMAND *)NULL; } else @@ -637,7 +674,11 @@ itrace("parse_string: longjmp executed: code = %d", code); } if (current_token == yacc_EOF || current_token == shell_eof_token) + { + if (current_token == shell_eof_token) + rewind_input_string (); break; + } } out: @@ -663,12 +704,10 @@ out: return (nc); } -/* Handle a $( < file ) command substitution. This expands the filename, - returning errors as appropriate, then just cats the file to the standard - output. */ -static int -cat_file (r) +int +open_redir_file (r, fnp) REDIRECT *r; + char **fnp; { char *fn; int fd, rval; @@ -694,9 +733,30 @@ cat_file (r) { file_error (fn); free (fn); + if (fnp) + *fnp = 0; return -1; } + if (fnp) + *fnp = fn; + return fd; +} + +/* Handle a $( < file ) command substitution. This expands the filename, + returning errors as appropriate, then just cats the file to the standard + output. */ +static int +cat_file (r) + REDIRECT *r; +{ + char *fn; + int fd, rval; + + fd = open_redir_file (r, &fn); + if (fd < 0) + return -1; + rval = zcatfd (fd, 1, fn); free (fn); diff --git a/builtins/exec.def b/builtins/exec.def index cbcb641a6..add908229 100644 --- a/builtins/exec.def +++ b/builtins/exec.def @@ -1,7 +1,7 @@ This file is exec.def, from which is created exec.c. It implements the builtin "exec" in Bash. -Copyright (C) 1987-2019 Free Software Foundation, Inc. +Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -104,7 +104,7 @@ exec_builtin (list) int cleanenv, login, opt, orig_job_control; char *argv0, *command, **args, **env, *newname, *com2; - cleanenv = login = 0; + cleanenv = login = orig_job_control = 0; exec_argv0 = argv0 = (char *)NULL; reset_internal_getopt (); @@ -215,7 +215,7 @@ exec_builtin (list) maybe_save_shell_history (); #endif /* HISTORY */ - restore_original_signals (); + reset_signal_handlers (); /* leave trap strings in place */ #if defined (JOB_CONTROL) orig_job_control = job_control; /* XXX - was also interactive_shell */ @@ -253,7 +253,7 @@ failed_exec: FREE (command); if (subshell_environment || (interactive == 0 && no_exit_on_failed_exec == 0)) - exit_shell (exit_value); + exit_shell (last_command_exit_value = exit_value); if (args) strvec_dispose (args); @@ -261,8 +261,11 @@ failed_exec: if (env && env != export_env) strvec_dispose (env); - initialize_traps (); + /* If we're not exiting after the exec fails, we restore the shell signal + handlers and then modify the signal dispositions based on the trap strings + before the failed exec. */ initialize_signals (1); + restore_traps (); #if defined (JOB_CONTROL) if (orig_job_control) diff --git a/builtins/exit.def b/builtins/exit.def index dc6f3d5b6..9c85bc582 100644 --- a/builtins/exit.def +++ b/builtins/exit.def @@ -1,7 +1,7 @@ This file is exit.def, from which is created exit.c. It implements the builtins "exit", and "logout" in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -151,7 +151,7 @@ exit_or_logout (list) last_command_exit_value = exit_value; /* Exit the program. */ - jump_to_top_level (EXITPROG); + jump_to_top_level (EXITBLTIN); /*NOTREACHED*/ } diff --git a/builtins/fc.def b/builtins/fc.def index 467dbcbcc..9b8a997de 100644 --- a/builtins/fc.def +++ b/builtins/fc.def @@ -1,7 +1,7 @@ This file is fc.def, from which is created fc.c. It implements the builtin "fc" in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -450,6 +450,8 @@ fc_builtin (list) for (i = reverse ? histend : histbeg; reverse ? i >= histbeg : i <= histend; reverse ? i-- : i++) { QUIT; + if (hlist[i] == 0) + continue; if (numbering) fprintf (stream, "%d", i + history_base); if (listing) @@ -459,7 +461,8 @@ fc_builtin (list) else fprintf (stream, "\t%c", histdata (i) ? '*' : ' '); } - fprintf (stream, "%s\n", histline (i)); + if (histline (i)) + fprintf (stream, "%s\n", histline (i)); } if (listing) diff --git a/builtins/gen-helpfiles.c b/builtins/gen-helpfiles.c index 6bed44745..d27d306b1 100644 --- a/builtins/gen-helpfiles.c +++ b/builtins/gen-helpfiles.c @@ -1,6 +1,6 @@ /* gen-helpfiles - create files containing builtin help text */ -/* Copyright (C) 2012-2020 Free Software Foundation, Inc. +/* Copyright (C) 2012-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -64,6 +64,7 @@ #undef xrealloc #undef xfree +#undef malloc #undef free /* defined in xmalloc.h */ #endif diff --git a/builtins/hash.def b/builtins/hash.def index c58e91c4f..03ae5474d 100644 --- a/builtins/hash.def +++ b/builtins/hash.def @@ -1,7 +1,7 @@ This file is hash.def, from which is created hash.c. It implements the builtin "hash" in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -138,7 +138,7 @@ hash_builtin (list) (list_portably == 0 || shell_compatibility_level <= 50)) printf (_("%s: hash table empty\n"), this_command_name); - return (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); } if (expunge_hash_table) @@ -177,7 +177,7 @@ hash_builtin (list) continue; else if (pathname) { - if (is_directory (pathname)) + if (file_isdir (pathname)) { #ifdef EISDIR builtin_error ("%s: %s", pathname, strerror (EISDIR)); diff --git a/builtins/help.def b/builtins/help.def index f33b2b935..346d93fe8 100644 --- a/builtins/help.def +++ b/builtins/help.def @@ -1,7 +1,7 @@ This file is help.def, from which is created help.c. It implements the builtin "help" in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -186,8 +186,7 @@ help_builtin (list) return (EXECUTION_FAILURE); } - fflush (stdout); - return (EXECUTION_SUCCESS); + return (sh_chkwrite (EXECUTION_SUCCESS)); } void diff --git a/builtins/history.def b/builtins/history.def index 5db44c2c2..6918d8a42 100644 --- a/builtins/history.def +++ b/builtins/history.def @@ -1,7 +1,7 @@ This file is history.def, from which is created history.c. It implements the builtin "history" in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -100,6 +100,10 @@ static int expand_and_print_history PARAMS((WORD_LIST *)); #define CFLAG 0x40 #define DFLAG 0x80 +#ifndef TIMELEN_MAX +# define TIMELEN_MAX 128 +#endif + int history_builtin (list) WORD_LIST *list; @@ -189,35 +193,29 @@ history_builtin (list) return (EXECUTION_FAILURE); } if (delete_arg[0] == '-' && delete_start < 0) - { - /* the_history[history_length] == 0x0, so this is correct */ - delete_start += history_length; - if (delete_start < history_base) - { -start_error: - sh_erange (delete_arg, _("history position")); - return (EXECUTION_FAILURE); - } - } + /* the_history[history_length] == 0x0, so this is correct */ + delete_start += history_length; /* numbers as displayed by display_history are offset by history_base */ else if (delete_start > 0) delete_start -= history_base; + if (delete_start < 0 || delete_start >= history_length) - goto start_error; + { + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } + if (range[0] == '-' && delete_end < 0) - { - delete_end += history_length; - if (delete_end < history_base) - { -range_error: - sh_erange (range, _("history position")); - return (EXECUTION_FAILURE); - } - } + delete_end += history_length; else if (delete_end > 0) delete_end -= history_base; + if (delete_end < 0 || delete_end >= history_length) - goto range_error; + { + sh_erange (range, _("history position")); + return (EXECUTION_FAILURE); + } + /* XXX - print error if end < start? */ result = bash_delete_history_range (delete_start, delete_end); if (where_history () > history_length) history_set_pos (history_length); @@ -237,7 +235,7 @@ range_error: that history -d -1 will delete the last history entry, which at this point is the history -d -1 we just added. */ ind = history_length + delete_offset; - if (ind < history_base) + if (ind < 0) /* offset by history_base below */ { sh_erange (delete_arg, _("history position")); return (EXECUTION_FAILURE); @@ -328,7 +326,7 @@ histtime (hlist, histtimefmt) HIST_ENTRY *hlist; const char *histtimefmt; { - static char timestr[128]; + static char timestr[TIMELEN_MAX]; time_t t; struct tm *tm; diff --git a/builtins/mapfile.def b/builtins/mapfile.def index 65c3cb4f3..4ddd72338 100644 --- a/builtins/mapfile.def +++ b/builtins/mapfile.def @@ -2,7 +2,7 @@ This file is mapfile.def, from which is created mapfile.c. It implements the builtin "mapfile" in Bash. Copyright (C) 2005-2006 Rocky Bernstein for Free Software Foundation, Inc. -Copyright (C) 2008-2020 Free Software Foundation, Inc. +Copyright (C) 2008-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -68,6 +68,7 @@ $END #include #include "builtins.h" +#include "../bashtypes.h" #include "posixstat.h" #if defined (HAVE_UNISTD_H) @@ -140,7 +141,7 @@ do_chop(line, delim) int length; length = strlen (line); - if (length && line[length-1] == delim) + if (length && (unsigned char)line[length-1] == delim) line[length-1] = '\0'; } @@ -156,6 +157,7 @@ mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_n size_t line_length; unsigned int array_index, line_count; SHELL_VAR *entry; + struct stat sb; int unbuffered_read; line = NULL; @@ -165,34 +167,22 @@ mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_n /* The following check should be done before reading any lines. Doing it here allows us to call bind_array_element instead of bind_array_variable and skip the variable lookup on every call. */ - entry = find_or_make_array_variable (array_name, 1); - if (entry == 0 || readonly_p (entry) || noassign_p (entry)) - { - if (entry && readonly_p (entry)) - err_readonly (array_name); - - return (EXECUTION_FAILURE); - } - else if (array_p (entry) == 0) - { - builtin_error (_("%s: not an indexed array"), array_name); - return (EXECUTION_FAILURE); - } - else if (invisible_p (entry)) - VUNSETATTR (entry, att_invisible); /* no longer invisible */ - - if (flags & MAPF_CLEARARRAY) - array_flush (array_cell (entry)); + entry = builtin_find_indexed_array (array_name, flags & MAPF_CLEARARRAY); + if (entry == 0) + return EXECUTION_FAILURE; #ifndef __CYGWIN__ - unbuffered_read = (lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE); + /* If the delimiter is a newline, turn on unbuffered reads for pipes + (terminals are ok). If the delimiter is not a newline, unbuffered reads + for every file descriptor that's not a regular file. */ + if (delim == '\n') + unbuffered_read = (lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE); + else + unbuffered_read = (fstat (fd, &sb) != 0) || (S_ISREG (sb.st_mode) == 0); #else unbuffered_read = 1; #endif - if (delim != '\n') - unbuffered_read = 1; - zreset (); /* Skip any lines at beginning of file? */ @@ -215,11 +205,11 @@ mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_n /* Has a callback been registered and if so is it time to call it? */ if (callback && line_count && (line_count % callback_quantum) == 0) { - run_callback (callback, array_index, line); - /* Reset the buffer for bash own stream. */ if (unbuffered_read == 0) zsyncfd (fd); + + run_callback (callback, array_index, line); } /* XXX - bad things can happen if the callback modifies ENTRY, e.g., diff --git a/builtins/mkbuiltins.c b/builtins/mkbuiltins.c index e243021ff..f505ebde1 100644 --- a/builtins/mkbuiltins.c +++ b/builtins/mkbuiltins.c @@ -1,7 +1,7 @@ /* mkbuiltins.c - Create builtins.c, builtext.h, and builtdoc.c from a single source file called builtins.def. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -72,7 +72,8 @@ extern char *strcpy (); #define BUILTIN_FLAG_SPECIAL 0x01 #define BUILTIN_FLAG_ASSIGNMENT 0x02 #define BUILTIN_FLAG_LOCALVAR 0x04 -#define BUILTIN_FLAG_POSIX_BUILTIN 0x08 +#define BUILTIN_FLAG_POSIX_BUILTIN 0x08 +#define BUILTIN_FLAG_ARRAYREF_ARG 0x10 #define BASE_INDENT 4 @@ -112,6 +113,12 @@ char *struct_filename = (char *)NULL; /* The name of the external declaration file. */ char *extern_filename = (char *)NULL; +/* The name of the include file to write into the structure file, if it's + different from extern_filename. */ +char *include_filename = (char *)NULL; + +/* The name of the include file to put into the generated struct filename. */ + /* Here is a structure for manipulating arrays of data. */ typedef struct { int size; /* Number of slots allocated to array. */ @@ -173,11 +180,22 @@ char *posix_builtins[] = (char *)NULL }; +/* The builtin commands that can take array references as arguments and pay + attention to `assoc_expand_once'. These are the ones that don't assign + values, but need to avoid double expansions. */ +char *arrayvar_builtins[] = +{ + "declare", "let", "local", "printf", "read", "test", "[", + "typeset", "unset", "wait", /*]*/ + (char *)NULL +}; + /* Forward declarations. */ static int is_special_builtin (); static int is_assignment_builtin (); static int is_localvar_builtin (); static int is_posix_builtin (); +static int is_arrayvar_builtin (); #if !defined (HAVE_RENAME) static int rename (); @@ -229,6 +247,8 @@ main (argc, argv) if (strcmp (arg, "-externfile") == 0) extern_filename = argv[arg_index++]; + else if (strcmp (arg, "-includefile") == 0) + include_filename = argv[arg_index++]; else if (strcmp (arg, "-structfile") == 0) struct_filename = argv[arg_index++]; else if (strcmp (arg, "-noproduction") == 0) @@ -272,6 +292,9 @@ main (argc, argv) } } + if (include_filename == 0) + include_filename = extern_filename; + /* If there are no files to process, just quit now. */ if (arg_index == argc) exit (0); @@ -831,6 +854,8 @@ builtin_handler (self, defs, arg) new->flags |= BUILTIN_FLAG_LOCALVAR; if (is_posix_builtin (name)) new->flags |= BUILTIN_FLAG_POSIX_BUILTIN; + if (is_arrayvar_builtin (name)) + new->flags |= BUILTIN_FLAG_ARRAYREF_ARG; array_add ((char *)new, defs->builtins); building_builtin = 1; @@ -1111,7 +1136,7 @@ char *structfile_header[] = { "/* This file is manufactured by ./mkbuiltins, and should not be", " edited by hand. See the source to mkbuiltins for details. */", "", - "/* Copyright (C) 1987-2015 Free Software Foundation, Inc.", + "/* Copyright (C) 1987-2022 Free Software Foundation, Inc.", "", " This file is part of GNU Bash, the Bourne Again SHell.", "", @@ -1173,7 +1198,7 @@ write_file_headers (structfile, externfile) fprintf (structfile, "%s\n", structfile_header[i]); fprintf (structfile, "#include \"%s\"\n", - extern_filename ? extern_filename : "builtext.h"); + include_filename ? include_filename : "builtext.h"); fprintf (structfile, "#include \"bashintl.h\"\n"); @@ -1183,7 +1208,7 @@ write_file_headers (structfile, externfile) if (externfile) fprintf (externfile, "/* %s - The list of builtins found in libbuiltins.a. */\n", - extern_filename ? extern_filename : "builtext.h"); + include_filename ? include_filename : "builtext.h"); } /* Write out any necessary closing information for @@ -1250,12 +1275,13 @@ write_builtins (defs, structfile, externfile) else fprintf (structfile, "(sh_builtin_func_t *)0x0, "); - fprintf (structfile, "%s%s%s%s%s, %s_doc,\n", + fprintf (structfile, "%s%s%s%s%s%s, %s_doc,\n", "BUILTIN_ENABLED | STATIC_BUILTIN", (builtin->flags & BUILTIN_FLAG_SPECIAL) ? " | SPECIAL_BUILTIN" : "", (builtin->flags & BUILTIN_FLAG_ASSIGNMENT) ? " | ASSIGNMENT_BUILTIN" : "", (builtin->flags & BUILTIN_FLAG_LOCALVAR) ? " | LOCALVAR_BUILTIN" : "", (builtin->flags & BUILTIN_FLAG_POSIX_BUILTIN) ? " | POSIX_BUILTIN" : "", + (builtin->flags & BUILTIN_FLAG_ARRAYREF_ARG) ? " | ARRAYREF_BUILTIN" : "", document_name (builtin)); /* Don't translate short document summaries that are identical @@ -1645,6 +1671,13 @@ is_posix_builtin (name) return (_find_in_table (name, posix_builtins)); } +static int +is_arrayvar_builtin (name) + char *name; +{ + return (_find_in_table (name, arrayvar_builtins)); +} + #if !defined (HAVE_RENAME) static int rename (from, to) diff --git a/builtins/printf.def b/builtins/printf.def index 0a5f4897f..84658c399 100644 --- a/builtins/printf.def +++ b/builtins/printf.def @@ -1,7 +1,7 @@ This file is printf.def, from which is created printf.c. It implements the builtin "printf" in Bash. -Copyright (C) 1997-2020 Free Software Foundation, Inc. +Copyright (C) 1997-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -40,6 +40,8 @@ printf interprets: %b expand backslash escape sequences in the corresponding argument %q quote the argument in a way that can be reused as shell input + %Q like %q, but apply any precision to the unquoted argument before + quoting %(fmt)T output the date-time string resulting from using FMT as a format string for strftime(3) @@ -149,7 +151,7 @@ extern int errno; if (vflag) \ { \ SHELL_VAR *v; \ - v = builtin_bind_variable (vname, vbuf, 0); \ + v = builtin_bind_variable (vname, vbuf, bindflags); \ stupidly_hack_special_variables (vname); \ if (v == 0 || readonly_p (v) || noassign_p (v)) \ return (EXECUTION_FAILURE); \ @@ -184,6 +186,10 @@ extern int errno; #define SKIP1 "#'-+ 0" #define LENMODS "hjlLtz" +#ifndef TIMELEN_MAX +# define TIMELEN_MAX 128 +#endif + extern time_t shell_start_time; #if !HAVE_ASPRINTF @@ -209,13 +215,16 @@ static uintmax_t getuintmax PARAMS((void)); #if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD && !defined(STRTOLD_BROKEN) typedef long double floatmax_t; +# define USE_LONG_DOUBLE 1 # define FLOATMAX_CONV "L" # define strtofltmax strtold #else typedef double floatmax_t; +# define USE_LONG_DOUBLE 0 # define FLOATMAX_CONV "" # define strtofltmax strtod #endif +static double getdouble PARAMS((void)); static floatmax_t getfloatmax PARAMS((void)); static intmax_t asciicode PARAMS((void)); @@ -226,6 +235,7 @@ static int conversion_error; /* printf -v var support */ static int vflag = 0; +static int bindflags = 0; static char *vbuf, *vname; static size_t vbsize; static int vblen; @@ -240,8 +250,8 @@ printf_builtin (list) WORD_LIST *list; { int ch, fieldwidth, precision; - int have_fieldwidth, have_precision; - char convch, thisch, nextch, *format, *modstart, *fmt, *start; + int have_fieldwidth, have_precision, use_Lmod, altform; + char convch, thisch, nextch, *format, *modstart, *precstart, *fmt, *start; #if defined (HANDLE_MULTIBYTE) char mbch[25]; /* 25 > MB_LEN_MAX, plus can handle 4-byte UTF-8 and large Unicode characters*/ int mbind, mblen; @@ -251,8 +261,6 @@ printf_builtin (list) #endif conversion_error = 0; - retval = EXECUTION_SUCCESS; - vflag = 0; reset_internal_getopt (); @@ -262,12 +270,14 @@ printf_builtin (list) { case 'v': vname = list_optarg; + bindflags = 0; #if defined (ARRAY_VARS) - arrayflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0; - if (legal_identifier (vname) || valid_array_reference (vname, arrayflags)) + SET_VFLAGS (list_optflags, arrayflags, bindflags); + retval = legal_identifier (vname) || valid_array_reference (vname, arrayflags); #else - if (legal_identifier (vname)) + retval = legal_identifier (vname); #endif + if (retval) { vflag = 1; if (vbsize == 0) @@ -310,6 +320,7 @@ printf_builtin (list) format = list->word->word; tw = 0; + retval = EXECUTION_SUCCESS; garglist = orig_arglist = list->next; @@ -330,7 +341,8 @@ printf_builtin (list) for (fmt = format; *fmt; fmt++) { precision = fieldwidth = 0; - have_fieldwidth = have_precision = 0; + have_fieldwidth = have_precision = altform = 0; + precstart = 0; if (*fmt == '\\') { @@ -367,9 +379,11 @@ printf_builtin (list) continue; } - /* found format specification, skip to field width */ + /* Found format specification, skip to field width. We check for + alternate form for possible later use. */ for (; *fmt && strchr(SKIP1, *fmt); ++fmt) - ; + if (*fmt == '#') + altform++; /* Skip optional field width. */ if (*fmt == '*') @@ -404,6 +418,8 @@ printf_builtin (list) if (*fmt == '-') #endif fmt++; + if (DIGIT (*fmt)) + precstart = fmt; while (DIGIT (*fmt)) fmt++; } @@ -411,8 +427,12 @@ printf_builtin (list) /* skip possible format modifiers */ modstart = fmt; + use_Lmod = 0; while (*fmt && strchr (LENMODS, *fmt)) - fmt++; + { + use_Lmod |= USE_LONG_DOUBLE && *fmt == 'L'; + fmt++; + } if (*fmt == 0) { @@ -449,7 +469,7 @@ printf_builtin (list) case '(': { - char *timefmt, timebuf[128], *t; + char *timefmt, timebuf[TIMELEN_MAX], *t; int n; intmax_t arg; time_t secs; @@ -531,7 +551,7 @@ printf_builtin (list) if (var && *var) { if (legal_identifier (var)) - bind_var_to_int (var, tw); + bind_var_to_int (var, tw, 0); else { sh_invalidid (var); @@ -573,12 +593,27 @@ printf_builtin (list) } case 'q': /* print with shell quoting */ + case 'Q': { char *p, *xp; - int r; + int r, mpr; + size_t slen; r = 0; p = getstr (); + /* Decode precision and apply it to the unquoted string. */ + if (convch == 'Q' && precstart) + { + mpr = *precstart++ - '0'; + while (DIGIT (*precstart)) + mpr = (mpr * 10) + (*precstart++ - '0'); + /* Error if precision > INT_MAX here? */ + precision = (mpr < 0 || mpr > INT_MAX) ? INT_MAX : mpr; + slen = strlen (p); + /* printf precision works in bytes. */ + if (precision < slen) + p[precision] = '\0'; + } if (p && *p == 0) /* XXX - getstr never returns null */ xp = savestring ("''"); else if (ansic_shouldquote (p)) @@ -587,6 +622,12 @@ printf_builtin (list) xp = sh_backslash_quote (p, 0, 3); if (xp) { + if (convch == 'Q') + { + slen = strlen (xp); + if (slen > precision) + precision = slen; + } /* Use printstr to get fieldwidth and precision right. */ r = printstr (start, xp, strlen (xp), fieldwidth, precision); if (r < 0) @@ -662,11 +703,24 @@ printf_builtin (list) #endif { char *f; - floatmax_t p; - p = getfloatmax (); - f = mklong (start, FLOATMAX_CONV, sizeof(FLOATMAX_CONV) - 1); - PF (f, p); + if (use_Lmod || posixly_correct == 0) + { + floatmax_t p; + + p = getfloatmax (); + f = mklong (start, "L", 1); + PF (f, p); + } + else /* posixly_correct */ + { + double p; + + p = getdouble (); + f = mklong (start, "", 0); + PF (f, p); + } + break; } @@ -760,7 +814,7 @@ printstr (fmt, string, len, fieldwidth, precision) fw = (mfw < 0 || mfw > INT_MAX) ? INT_MAX : mfw; } - /* get precision, if present */ + /* get precision, if present. doesn't handle negative precisions */ if (*fmt == '.') { fmt++; @@ -776,6 +830,8 @@ printstr (fmt, string, len, fieldwidth, precision) mpr = (mpr * 10) + (*fmt++ - '0'); /* Error if precision > INT_MAX here? */ pr = (mpr < 0 || mpr > INT_MAX) ? INT_MAX : mpr; + if (pr < precision && precision < INT_MAX) + pr = precision; /* XXX */ } else pr = 0; /* "a null digit string is treated as zero" */ @@ -1214,6 +1270,33 @@ getuintmax () return (ret); } +static double +getdouble () +{ + double ret; + char *ep; + + if (garglist == 0) + return (0); + + if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"') + return asciicode (); + + errno = 0; + ret = strtod (garglist->word->word, &ep); + + if (*ep) + { + sh_invalidnum (garglist->word->word); + conversion_error = 1; + } + else if (errno == ERANGE) + printf_erange (garglist->word->word); + + garglist = garglist->next; + return (ret); +} + static floatmax_t getfloatmax () { diff --git a/builtins/read.def b/builtins/read.def index 39e16e844..3c38bc027 100644 --- a/builtins/read.def +++ b/builtins/read.def @@ -1,7 +1,7 @@ This file is read.def, from which is created read.c. It implements the builtin "read" in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -30,7 +30,8 @@ if the -u option is supplied. The line is split into fields as with word splitting, and the first word is assigned to the first NAME, the second word to the second NAME, and so on, with any leftover words assigned to the last NAME. Only the characters found in $IFS are recognized as word -delimiters. +delimiters. By default, the backslash character escapes delimiter characters +and newline. If no NAMEs are supplied, the line read is stored in the REPLY variable. @@ -107,6 +108,7 @@ $END #endif #include "shmbutil.h" +#include "timer.h" #if !defined(errno) extern int errno; @@ -124,19 +126,19 @@ static int set_itext PARAMS((void)); static char *edit_line PARAMS((char *, char *)); static void set_eol_delim PARAMS((int)); static void reset_eol_delim PARAMS((char *)); +static void set_readline_timeout PARAMS((sh_timer *t, time_t, long)); #endif -static SHELL_VAR *bind_read_variable PARAMS((char *, char *)); +static SHELL_VAR *bind_read_variable PARAMS((char *, char *, int)); #if defined (HANDLE_MULTIBYTE) static int read_mbchar PARAMS((int, char *, int, int, int)); #endif static void ttyrestore PARAMS((struct ttsave *)); static sighandler sigalrm PARAMS((int)); -static void reset_alarm PARAMS((void)); +static void reset_timeout PARAMS((void)); /* Try this to see what the rest of the shell can do with the information. */ -procenv_t alrmbuf; -int sigalrm_seen; +sh_timer *read_timeout; static int reading, tty_modified; static SigHandler *old_alrm; @@ -148,21 +150,44 @@ static struct ttsave termsave; avoids problems with the semi-tricky stuff we do with the xfree of input_string at the top of the unwind-protect list (see below). */ -/* Set a flag that CHECK_ALRM can check. This relies on zread or read_builtin - calling trap.c:check_signals(), which knows about sigalrm_seen and alrmbuf. */ +/* Set a flag that check_read_timeout can check. This relies on zread or + read_builtin calling trap.c:check_signals() (which calls check_read_timeout()) */ static sighandler sigalrm (s) int s; { - sigalrm_seen = 1; + /* Display warning if this is called without read_timeout set? */ + if (read_timeout) + read_timeout->alrmflag = 1; } static void -reset_alarm () +reset_timeout () { /* Cancel alarm before restoring signal handler. */ - falarm (0, 0); - set_signal_handler (SIGALRM, old_alrm); + if (read_timeout) + shtimer_clear (read_timeout); + read_timeout = 0; +} + +void +check_read_timeout () +{ + if (read_timeout && shtimer_chktimeout (read_timeout)) + sh_longjmp (read_timeout->jmpenv, 1); +} + +int +read_builtin_timeout (fd) + int fd; +{ + if ((read_timeout == 0) || + (read_timeout->fd != fd) || + (read_timeout->tmout.tv_sec == 0 && read_timeout->tmout.tv_usec == 0)) + return 0; + + return ((read_timeout->flags & SHTIMER_ALARM) ? shtimer_alrm (read_timeout) + : shtimer_select (read_timeout)); } /* Read the value of the shell variables whose names follow. @@ -191,10 +216,12 @@ read_builtin (list) struct stat tsb; SHELL_VAR *var; TTYSTRUCT ttattrs, ttset; + sigset_t chldset, prevset; #if defined (ARRAY_VARS) WORD_LIST *alist; int vflags; #endif + int bindflags; #if defined (READLINE) char *rlbuf, *itext; int rlind; @@ -225,7 +252,8 @@ read_builtin (list) USE_VAR(ps2); USE_VAR(lastsig); - sigalrm_seen = reading = tty_modified = 0; + reading = tty_modified = 0; + read_timeout = 0; i = 0; /* Index into the string that we are reading. */ raw = edit = 0; /* Not reading raw input by default. */ @@ -330,18 +358,16 @@ read_builtin (list) /* `read -t 0 var' tests whether input is available with select/FIONREAD, and fails if those are unavailable */ if (have_timeout && tmsec == 0 && tmusec == 0) -#if 0 - return (EXECUTION_FAILURE); -#else return (input_avail (fd) ? EXECUTION_SUCCESS : EXECUTION_FAILURE); -#endif /* Convenience: check early whether or not the first of possibly several variable names is a valid identifier, and bail early if so. */ #if defined (ARRAY_VARS) - vflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0; + if (list) + SET_VFLAGS (list->word->flags, vflags, bindflags); if (list && legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, vflags) == 0) #else + bindflags = 0; if (list && legal_identifier (list->word->word) == 0) #endif { @@ -387,6 +413,12 @@ read_builtin (list) } } +#if defined (SIGCHLD) + sigemptyset (&chldset); + sigprocmask (SIG_BLOCK, (sigset_t *)0, &chldset); + sigaddset (&chldset, SIGCHLD); +#endif + begin_unwind_frame ("read_builtin"); #if defined (BUFFERED_INPUT) @@ -435,10 +467,27 @@ read_builtin (list) if (tmsec > 0 || tmusec > 0) { - code = setjmp_nosigs (alrmbuf); + read_timeout = shtimer_alloc (); + read_timeout->flags = SHTIMER_LONGJMP; + +#if defined (HAVE_SELECT) + read_timeout->flags |= (edit || posixly_correct) ? SHTIMER_ALARM : SHTIMER_SELECT; +#else + read_timeout->flags |= SHTIMER_ALARM; +#endif + read_timeout->fd = fd; + + read_timeout->alrm_handler = sigalrm; + } + + if (tmsec > 0 || tmusec > 0) + { + code = setjmp_nosigs (read_timeout->jmpenv); if (code) { - sigalrm_seen = 0; + reset_timeout (); + sigprocmask (SIG_SETMASK, &prevset, (sigset_t *)0); + /* Tricky. The top of the unwind-protect stack is the free of input_string. We want to run all the rest and use input_string, so we have to save input_string temporarily, run the unwind- @@ -460,16 +509,17 @@ read_builtin (list) } if (interactive_shell == 0) initialize_terminating_signals (); - old_alrm = set_signal_handler (SIGALRM, sigalrm); - add_unwind_protect (reset_alarm, (char *)NULL); + add_unwind_protect (reset_timeout, (char *)NULL); #if defined (READLINE) if (edit) { add_unwind_protect (reset_attempted_completion_function, (char *)NULL); add_unwind_protect (bashline_reset_event_hook, (char *)NULL); + set_readline_timeout (read_timeout, tmsec, tmusec); } + else #endif - falarm (tmsec, tmusec); + shtimer_set (read_timeout, tmsec, tmusec); } /* If we've been asked to read only NCHARS chars, or we're using some @@ -545,12 +595,16 @@ read_builtin (list) of the unwind-protect stack after the realloc() works right. */ add_unwind_protect (xfree, input_string); - CHECK_ALRM; + check_read_timeout (); + /* These only matter if edit == 0 */ if ((nchars > 0) && (input_is_tty == 0) && ignore_delim) /* read -N */ unbuffered_read = 2; +#if 0 else if ((nchars > 0) || (delim != '\n') || input_is_pipe) +#else + else if (((nchars > 0 || delim != '\n') && input_is_tty) || input_is_pipe) unbuffered_read = 1; - +#endif if (prompt && edit == 0) { fprintf (stderr, "%s", prompt); @@ -564,7 +618,7 @@ read_builtin (list) ps2 = 0; for (print_ps2 = eof = retval = 0;;) { - CHECK_ALRM; + check_read_timeout (); #if defined (READLINE) if (edit) @@ -575,6 +629,10 @@ read_builtin (list) free (rlbuf); rlbuf = (char *)0; } +#if defined (SIGCHLD) + if (tmsec > 0 || tmusec > 0) + sigprocmask (SIG_SETMASK, &chldset, &prevset); +#endif if (rlbuf == 0) { reading = 1; @@ -582,6 +640,10 @@ read_builtin (list) reading = 0; rlind = 0; } +#if defined (SIGCHLD) + if (tmsec > 0 || tmusec > 0) + sigprocmask (SIG_SETMASK, &prevset, (sigset_t *)0); +#endif if (rlbuf == 0) { eof = 1; @@ -603,14 +665,24 @@ read_builtin (list) } reading = 1; - CHECK_ALRM; + check_read_timeout (); errno = 0; + +#if defined (SIGCHLD) + if (tmsec > 0 || tmusec > 0) + sigprocmask (SIG_SETMASK, &chldset, &prevset); +#endif if (unbuffered_read == 2) retval = posixly_correct ? zreadintr (fd, &c, 1) : zreadn (fd, &c, nchars - nr); else if (unbuffered_read) retval = posixly_correct ? zreadintr (fd, &c, 1) : zread (fd, &c, 1); else retval = posixly_correct ? zreadcintr (fd, &c) : zreadc (fd, &c); +#if defined (SIGCHLD) + if (tmsec > 0 || tmusec > 0) + sigprocmask (SIG_SETMASK, &prevset, (sigset_t *)0); +#endif + reading = 0; if (retval <= 0) @@ -644,7 +716,7 @@ read_builtin (list) #endif if (retval <= 0) /* XXX shouldn't happen */ - CHECK_ALRM; + check_read_timeout (); /* XXX -- use i + mb_cur_max (at least 4) for multibyte/read_mbchar */ if (i + (mb_cur_max > 4 ? mb_cur_max : 4) >= size) @@ -704,7 +776,7 @@ read_builtin (list) add_char: input_string[i++] = c; - CHECK_ALRM; + check_read_timeout (); #if defined (HANDLE_MULTIBYTE) /* XXX - what if C == 127? Can DEL introduce a multibyte sequence? */ @@ -741,7 +813,7 @@ add_char: break; } input_string[i] = '\0'; - CHECK_ALRM; + check_read_timeout (); #if defined (READLINE) if (edit) @@ -758,7 +830,7 @@ add_char: } if (tmsec > 0 || tmusec > 0) - reset_alarm (); + reset_timeout (); if (nchars > 0 || delim != '\n') { @@ -797,28 +869,14 @@ assign_vars: an assign them to `arrayname' in turn. */ if (arrayname) { - if (legal_identifier (arrayname) == 0) - { - sh_invalidid (arrayname); - free (input_string); - return (EXECUTION_FAILURE); - } - - var = find_or_make_array_variable (arrayname, 1); + /* pass 1 for flags arg to clear the existing array + 2 to check for a + valid identifier. */ + var = builtin_find_indexed_array (arrayname, 3); if (var == 0) { free (input_string); return EXECUTION_FAILURE; /* readonly or noassign */ } - if (assoc_p (var)) - { - builtin_error (_("%s: cannot convert associative to indexed array"), arrayname); - free (input_string); - return EXECUTION_FAILURE; /* existing associative array */ - } - else if (invisible_p (var)) - VUNSETATTR (var, att_invisible); - array_flush (array_cell (var)); alist = list_string (input_string, ifs_chars, 0); if (alist) @@ -883,6 +941,7 @@ assign_vars: { varname = list->word->word; #if defined (ARRAY_VARS) + SET_VFLAGS (list->word->flags, vflags, bindflags); if (legal_identifier (varname) == 0 && valid_array_reference (varname, vflags) == 0) #else if (legal_identifier (varname) == 0) @@ -906,16 +965,16 @@ assign_vars: if (t && saw_escape) { t1 = dequote_string (t); - var = bind_read_variable (varname, t1); + var = bind_read_variable (varname, t1, bindflags); free (t1); } else - var = bind_read_variable (varname, t ? t : ""); + var = bind_read_variable (varname, t ? t : "", bindflags); } else { t = (char *)0; - var = bind_read_variable (varname, ""); + var = bind_read_variable (varname, "", bindflags); } FREE (t); @@ -931,6 +990,7 @@ assign_vars: /* Now assign the rest of the line to the last variable argument. */ #if defined (ARRAY_VARS) + SET_VFLAGS (list->word->flags, vflags, bindflags); if (legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, vflags) == 0) #else if (legal_identifier (list->word->word) == 0) @@ -967,11 +1027,11 @@ assign_vars: if (saw_escape && input_string && *input_string) { t = dequote_string (input_string); - var = bind_read_variable (list->word->word, t); + var = bind_read_variable (list->word->word, t, bindflags); free (t); } else - var = bind_read_variable (list->word->word, input_string ? input_string : ""); + var = bind_read_variable (list->word->word, input_string ? input_string : "", bindflags); if (var) { @@ -988,12 +1048,13 @@ assign_vars: } static SHELL_VAR * -bind_read_variable (name, value) +bind_read_variable (name, value, flags) char *name, *value; + int flags; { SHELL_VAR *v; - v = builtin_bind_variable (name, value, 0); + v = builtin_bind_variable (name, value, flags); return (v == 0 ? v : ((readonly_p (v) || noassign_p (v)) ? (SHELL_VAR *)NULL : v)); } @@ -1131,7 +1192,15 @@ edit_line (p, itext) bashline_reset_event_hook (); if (ret == 0) - return ret; + { + if (RL_ISSTATE (RL_STATE_TIMEOUT)) + { + sigalrm (SIGALRM); /* simulate receiving SIGALRM */ + check_read_timeout (); + } + return ret; + } + len = strlen (ret); ret = (char *)xrealloc (ret, len + 2); ret[len++] = delim; @@ -1139,6 +1208,17 @@ edit_line (p, itext) return ret; } +static void +set_readline_timeout (t, sec, usec) + sh_timer *t; + time_t sec; + long usec; +{ + t->tmout.tv_sec = sec; + t->tmout.tv_usec = usec; + rl_set_timeout (sec, usec); +} + static int old_delim_ctype; static rl_command_func_t *old_delim_func; static int old_newline_ctype; diff --git a/builtins/reserved.def b/builtins/reserved.def index 33184b029..420042dcf 100644 --- a/builtins/reserved.def +++ b/builtins/reserved.def @@ -114,22 +114,22 @@ Returns the status of the last command executed. $END $BUILTIN while -$SHORT_DOC while COMMANDS; do COMMANDS; done +$SHORT_DOC while COMMANDS; do COMMANDS-2; done Execute commands as long as a test succeeds. -Expand and execute COMMANDS as long as the final command in the -`while' COMMANDS has an exit status of zero. +Expand and execute COMMANDS-2 as long as the final command in COMMANDS has +an exit status of zero. Exit Status: Returns the status of the last command executed. $END $BUILTIN until -$SHORT_DOC until COMMANDS; do COMMANDS; done +$SHORT_DOC until COMMANDS; do COMMANDS-2; done Execute commands as long as a test does not succeed. -Expand and execute COMMANDS as long as the final command in the -`until' COMMANDS has an exit status which is not zero. +Expand and execute COMMANDS-2 as long as the final command in COMMANDS has +an exit status which is not zero. Exit Status: Returns the status of the last command executed. diff --git a/builtins/set.def b/builtins/set.def index 8ee016579..44f176919 100644 --- a/builtins/set.def +++ b/builtins/set.def @@ -1,7 +1,7 @@ This file is set.def, from which is created set.c. It implements the "set" and "unset" builtins in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -52,7 +52,7 @@ $PRODUCES set.c $BUILTIN set $FUNCTION set_builtin -$SHORT_DOC set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] +$SHORT_DOC set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...] Set or unset values of shell options and positional parameters. Change the value of shell attributes and positional parameters, or @@ -835,7 +835,7 @@ unset_builtin (list) WORD_LIST *list; { int unset_function, unset_variable, unset_array, opt, nameref, any_failed; - int global_unset_func, global_unset_var, vflags, valid_id; + int global_unset_func, global_unset_var, vflags, base_vflags, valid_id; char *name, *tname; unset_function = unset_variable = unset_array = nameref = any_failed = 0; @@ -873,7 +873,7 @@ unset_builtin (list) nameref = 0; #if defined (ARRAY_VARS) - vflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0; + base_vflags = assoc_expand_once ? VA_NOEXPAND : 0; #endif while (list) @@ -889,15 +889,15 @@ unset_builtin (list) unset_function = global_unset_func; unset_variable = global_unset_var; +#if defined (ARRAY_VARS) + vflags = builtin_arrayref_flags (list->word, base_vflags); +#endif + #if defined (ARRAY_VARS) unset_array = 0; /* XXX valid array reference second arg was 0 */ - if (!unset_function && nameref == 0 && valid_array_reference (name, vflags)) - { - t = strchr (name, '['); - *t++ = '\0'; - unset_array++; - } + if (!unset_function && nameref == 0 && tokenize_array_reference (name, vflags, &t)) + unset_array = 1; #endif /* Get error checking out of the way first. The low-level functions just perform the unset, relying on the caller to verify. */ @@ -959,6 +959,9 @@ unset_builtin (list) #if defined (ARRAY_VARS) if (var && unset_array) { + if (shell_compatibility_level <= 51) + vflags |= VA_ALLOWALL; + /* Let unbind_array_element decide what to do with non-array vars */ tem = unbind_array_element (var, t, vflags); /* XXX new third arg */ if (tem == -2 && array_p (var) == 0 && assoc_p (var) == 0) @@ -981,9 +984,16 @@ unset_builtin (list) #if defined (ARRAY_VARS) if (valid_array_reference (nameref_cell (var), 0)) { + int len; + tname = savestring (nameref_cell (var)); - if (var = array_variable_part (tname, 0, &t, (int *)0)) - tem = unbind_array_element (var, t, vflags); /* XXX new third arg */ + if (var = array_variable_part (tname, 0, &t, &len)) + { + /* change to what unbind_array_element now expects */ + if (t[len - 1] == ']') + t[len - 1] = 0; + tem = unbind_array_element (var, t, vflags); /* XXX new third arg */ + } free (tname); } else diff --git a/builtins/setattr.def b/builtins/setattr.def index a193462da..50c8edf68 100644 --- a/builtins/setattr.def +++ b/builtins/setattr.def @@ -1,7 +1,7 @@ This file is setattr.def, from which is created setattr.c. It implements the builtins "export" and "readonly", in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -363,7 +363,11 @@ show_all_var_attributes (v, nodefs) for (i = any_failed = 0; var = variable_list[i]; i++) { - show_var_attributes (var, READONLY_OR_EXPORT, nodefs); + /* There is no equivalent `declare -'. */ + if (variable_context && var->context == variable_context && STREQ (var->name, "-")) + printf ("local -\n"); + else + show_var_attributes (var, READONLY_OR_EXPORT, nodefs); if (any_failed = sh_chkwrite (any_failed)) break; } @@ -372,7 +376,7 @@ show_all_var_attributes (v, nodefs) } /* Show all local variable variables with their attributes. This shows unset - local variables (all_local_variables called with 0 argment). */ + local variables (all_local_variables called with 0 argument). */ int show_local_var_attributes (v, nodefs) int v, nodefs; @@ -387,7 +391,11 @@ show_local_var_attributes (v, nodefs) for (i = any_failed = 0; var = variable_list[i]; i++) { - show_var_attributes (var, READONLY_OR_EXPORT, nodefs); + /* There is no equivalent `declare -'. */ + if (STREQ (var->name, "-")) + printf ("local -\n"); + else + show_var_attributes (var, READONLY_OR_EXPORT, nodefs); if (any_failed = sh_chkwrite (any_failed)) break; } @@ -514,7 +522,10 @@ show_var_attributes (var, pattr, nodefs) printf ("%s\n", var->name); else { - x = sh_double_quote (value_cell (var)); + if (ansic_shouldquote (value_cell (var))) + x = ansic_quote (value_cell (var), 0, (int *)0); + else + x = sh_double_quote (value_cell (var)); printf ("%s=%s\n", var->name, x); free (x); } diff --git a/builtins/shopt.def b/builtins/shopt.def index 6dca22421..33d61d4c5 100644 --- a/builtins/shopt.def +++ b/builtins/shopt.def @@ -1,7 +1,7 @@ This file is shopt.def, from which is created shopt.c. It implements the Bash `shopt' builtin. -Copyright (C) 1994-2020 Free Software Foundation, Inc. +Copyright (C) 1994-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -89,10 +89,14 @@ extern int check_jobs_at_exit; extern int autocd; extern int glob_star; extern int glob_asciirange; +extern int glob_always_skip_dot_and_dotdot; extern int lastpipe_opt; extern int inherit_errexit; extern int localvar_inherit; extern int localvar_unset; +extern int varassign_redir_autoclose; +extern int singlequote_translations; +extern int patsub_replacement; #if defined (EXTENDED_GLOB) extern int extended_glob; @@ -120,6 +124,7 @@ extern int debugging_mode; #if defined (ARRAY_VARS) extern int assoc_expand_once; extern int array_expand_once; +int expand_once_flag; #endif #if defined (SYSLOG_HISTORY) @@ -140,6 +145,10 @@ static int shopt_enable_hostname_completion PARAMS((char *, int)); static int shopt_set_complete_direxpand PARAMS((char *, int)); #endif +#if defined (ARRAY_VARS) +static int set_assoc_expand PARAMS((char *, int)); +#endif + static int shopt_set_debug_mode PARAMS((char *, int)); static int shopt_login_shell; @@ -163,7 +172,7 @@ static struct { } shopt_vars[] = { { "autocd", &autocd, (shopt_set_func_t *)NULL }, #if defined (ARRAY_VARS) - { "assoc_expand_once", &assoc_expand_once, (shopt_set_func_t *)NULL }, + { "assoc_expand_once", &expand_once_flag, set_assoc_expand }, #endif { "cdable_vars", &cdable_vars, (shopt_set_func_t *)NULL }, { "cdspell", &cdspelling, (shopt_set_func_t *)NULL }, @@ -202,6 +211,7 @@ static struct { { "force_fignore", &force_fignore, (shopt_set_func_t *)NULL }, #endif { "globasciiranges", &glob_asciirange, (shopt_set_func_t *)NULL }, + { "globskipdots", &glob_always_skip_dot_and_dotdot, (shopt_set_func_t *)NULL }, { "globstar", &glob_star, (shopt_set_func_t *)NULL }, { "gnu_errfmt", &gnu_error_format, (shopt_set_func_t *)NULL }, #if defined (HISTORY) @@ -228,7 +238,9 @@ static struct { #endif { "nocaseglob", &glob_ignore_case, (shopt_set_func_t *)NULL }, { "nocasematch", &match_ignore_case, (shopt_set_func_t *)NULL }, + { "noexpand_translation", &singlequote_translations, (shopt_set_func_t *)NULL }, { "nullglob", &allow_null_glob_expansion, (shopt_set_func_t *)NULL }, + { "patsub_replacement", &patsub_replacement, (shopt_set_func_t *)NULL }, #if defined (PROGRAMMABLE_COMPLETION) { "progcomp", &prog_completion_enabled, (shopt_set_func_t *)NULL }, # if defined (ALIAS) @@ -244,6 +256,7 @@ static struct { #if defined (SYSLOG_HISTORY) && defined (SYSLOG_SHOPT) { "syslog_history", &syslog_history, (shopt_set_func_t *)NULL }, #endif + { "varredir_close", &varassign_redir_autoclose, (shopt_set_func_t *)NULL }, { "xpg_echo", &xpg_echo, (shopt_set_func_t *)NULL }, { (char *)0, (int *)0, (shopt_set_func_t *)NULL } }; @@ -352,6 +365,9 @@ reset_shopt_options () glob_ignore_case = match_ignore_case = 0; print_shift_error = 0; source_uses_path = promptvars = 1; + varassign_redir_autoclose = 0; + singlequote_translations = 0; + patsub_replacement = 1; #if defined (JOB_CONTROL) check_jobs_at_exit = 0; @@ -362,7 +378,7 @@ reset_shopt_options () #endif #if defined (ARRAY_VARS) - assoc_expand_once = 0; + expand_once_flag = assoc_expand_once = 0; #endif #if defined (HISTORY) @@ -630,9 +646,14 @@ set_compatibility_level (option_name, mode) char *option_name; int mode; { - int ind; + int ind, oldval; char *rhs; + /* If we're unsetting one of the compatibility options, make sure the + current value is in the range of the compatNN space. */ + if (mode == 0) + oldval = shell_compatibility_level; + /* If we're setting something, redo some of the work we did above in toggle_shopt(). Unset everything and reset the appropriate option based on OPTION_NAME. */ @@ -660,6 +681,8 @@ set_compatibility_level (option_name, mode) shell_compatibility_level = 43; else if (shopt_compat44) shell_compatibility_level = 44; + else if (oldval > 44 && shell_compatibility_level < DEFAULT_COMPAT_LEVEL) + ; else shell_compatibility_level = DEFAULT_COMPAT_LEVEL; @@ -682,6 +705,8 @@ set_compatibility_opts () switch (shell_compatibility_level) { case DEFAULT_COMPAT_LEVEL: + case 51: /* completeness */ + case 50: break; case 44: shopt_compat44 = 1; break; @@ -897,3 +922,17 @@ initialize_bashopts (no_bashopts) /* Set up the $BASHOPTS variable. */ set_bashopts (); } + +#if defined (ARRAY_VARS) +static int +set_assoc_expand (option_name, mode) + char *option_name; + int mode; +{ +#if 0 /* leave this disabled */ + if (shell_compatibility_level <= 51) +#endif + assoc_expand_once = expand_once_flag; + return 0; +} +#endif diff --git a/builtins/suspend.def b/builtins/suspend.def index e99fd26b5..4f3a56c9c 100644 --- a/builtins/suspend.def +++ b/builtins/suspend.def @@ -1,7 +1,7 @@ This file is suspend.def, from which is created suspend.c. It implements the builtin "suspend" in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -27,10 +27,12 @@ $SHORT_DOC suspend [-f] Suspend shell execution. Suspend the execution of this shell until it receives a SIGCONT signal. -Unless forced, login shells cannot be suspended. +Unless forced, login shells and shells without job control cannot be +suspended. Options: - -f force the suspend, even if the shell is a login shell + -f force the suspend, even if the shell is a login shell or job + control is not enabled. Exit Status: Returns success unless job control is not enabled or an error occurs. @@ -96,16 +98,15 @@ suspend_builtin (list) } list = loptend; - - if (job_control == 0) - { - sh_nojobs (_("cannot suspend")); - return (EXECUTION_FAILURE); - } + no_args (list); if (force == 0) { - no_args (list); + if (job_control == 0) + { + sh_nojobs (_("cannot suspend")); + return (EXECUTION_FAILURE); + } if (login_shell) { diff --git a/builtins/trap.def b/builtins/trap.def index daeec9eaf..94229433c 100644 --- a/builtins/trap.def +++ b/builtins/trap.def @@ -1,7 +1,7 @@ This file is trap.def, from which is created trap.c. It implements the builtin "trap" in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -250,7 +250,9 @@ showtrap (i, show_default) int i, show_default; { char *t, *p, *sn; + int free_t; + free_t = 1; p = trap_list[i]; if (p == (char *)DEFAULT_SIG && signal_is_hard_ignored (i) == 0) { @@ -258,6 +260,7 @@ showtrap (i, show_default) t = "-"; else return; + free_t = 0; } else if (signal_is_hard_ignored (i)) t = (char *)NULL; @@ -279,7 +282,7 @@ showtrap (i, show_default) else printf ("trap -- %s %s\n", t ? t : "''", sn); - if (show_default == 0) + if (free_t) FREE (t); } diff --git a/builtins/ulimit.def b/builtins/ulimit.def index a895c5e26..fd9f7a3df 100644 --- a/builtins/ulimit.def +++ b/builtins/ulimit.def @@ -1,7 +1,7 @@ This file is ulimit.def, from which is created ulimit.c. It implements the builtin "ulimit" in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -23,7 +23,7 @@ $PRODUCES ulimit.c $BUILTIN ulimit $FUNCTION ulimit_builtin $DEPENDS_ON !_MINIX -$SHORT_DOC ulimit [-SHabcdefiklmnpqrstuvxPT] [limit] +$SHORT_DOC ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit] Modify shell resource limits. Provides control over the resources available to the shell and processes @@ -428,6 +428,15 @@ ulimit_builtin (list) } } + /* POSIX compatibility. If the last item in cmdlist does not have an option + argument, but there is an operand (list != 0), treat the operand as if + it were an option argument for that last command. */ + if (list && list->word && cmdlist[ncmd - 1].arg == 0) + { + cmdlist[ncmd - 1].arg = list->word->word; + list = list->next; + } + for (c = 0; c < ncmd; c++) if (ulimit_internal (cmdlist[c].cmd, cmdlist[c].arg, mode, ncmd > 1) == EXECUTION_FAILURE) return (EXECUTION_FAILURE); diff --git a/builtins/wait.def b/builtins/wait.def index e70a4d942..b066d78d0 100644 --- a/builtins/wait.def +++ b/builtins/wait.def @@ -1,7 +1,7 @@ -This file is wait.def, from which is created wait.c. +'This file is wait.def, from which is created wait.c. It implements the builtin "wait" in Bash. -Copyright (C) 1987-2020 Free Software Foundation, Inc. +Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -111,7 +111,7 @@ int wait_builtin (list) WORD_LIST *list; { - int status, code, opt, nflag; + int status, code, opt, nflag, vflags, bindflags; volatile int wflags; char *vname; SHELL_VAR *pidvar; @@ -119,7 +119,7 @@ wait_builtin (list) USE_VAR(list); - nflag = wflags = 0; + nflag = wflags = vflags = 0; vname = NULL; pidvar = (SHELL_VAR *)NULL; reset_internal_getopt (); @@ -136,6 +136,7 @@ wait_builtin (list) break; case 'p': vname = list_optarg; + vflags = list_optflags; break; #endif CASE_HELPOPT; @@ -152,9 +153,10 @@ wait_builtin (list) #if defined (ARRAY_VARS) int arrayflags; - arrayflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0; + SET_VFLAGS (vflags, arrayflags, bindflags); if (legal_identifier (vname) == 0 && valid_array_reference (vname, arrayflags) == 0) #else + bindflags = 0; if (legal_identifier (vname) == 0) #endif { @@ -181,8 +183,10 @@ wait_builtin (list) last_command_exit_signal = wait_signal_received; status = 128 + wait_signal_received; wait_sigint_cleanup (); +#if defined (JOB_CONTROL) if (wflags & JWAIT_WAITING) unset_waitlist (); +#endif WAIT_RETURN (status); } @@ -217,7 +221,7 @@ wait_builtin (list) status = wait_for_any_job (wflags, &pstat); if (vname && status >= 0) - bind_var_to_int (vname, pstat.pid); + builtin_bind_var_to_int (vname, pstat.pid, bindflags); if (status < 0) status = 127; @@ -231,9 +235,13 @@ wait_builtin (list) currently active background processes. */ if (list == 0) { - wait_for_background_pids (&pstat); - if (vname) - bind_var_to_int (vname, pstat.pid); + opt = wait_for_background_pids (&pstat); +#if 0 + /* Compatibility with NetBSD sh: don't set VNAME since it doesn't + correspond to the return status. */ + if (vname && opt) + builtin_bind_var_to_int (vname, pstat.pid, bindflags); +#endif WAIT_RETURN (EXECUTION_SUCCESS); } @@ -251,8 +259,11 @@ wait_builtin (list) { pid = (pid_t)pid_value; status = wait_for_single_pid (pid, wflags|JWAIT_PERROR); - pstat.pid = pid; - pstat.status = status; + /* status > 256 means pid error */ + pstat.pid = (status > 256) ? NO_PID : pid; + pstat.status = (status > 256) ? 127 : status; + if (status > 256) + status = 127; } else { @@ -309,6 +320,9 @@ wait_builtin (list) list = list->next; } + if (vname && pstat.pid != NO_PID) + builtin_bind_var_to_int (vname, pstat.pid, bindflags); + WAIT_RETURN (status); } diff --git a/command.h b/command.h index b84775280..e0dc2f955 100644 --- a/command.h +++ b/command.h @@ -1,7 +1,7 @@ /* command.h -- The structures used internally to represent commands, and the extern declarations of the functions used to create them. */ -/* Copyright (C) 1993-2020 Free Software Foundation, Inc. +/* Copyright (C) 1993-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -81,18 +81,18 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, #define W_NOGLOB (1 << 5) /* Do not perform globbing on this word. */ #define W_NOSPLIT2 (1 << 6) /* Don't split word except for $@ expansion (using spaces) because context does not allow it. */ #define W_TILDEEXP (1 << 7) /* Tilde expand this assignment word */ -#define W_DOLLARAT (1 << 8) /* $@ and its special handling -- UNUSED */ -#define W_DOLLARSTAR (1 << 9) /* $* and its special handling -- UNUSED */ +#define W_DOLLARAT (1 << 8) /* UNUSED - $@ and its special handling */ +#define W_ARRAYREF (1 << 9) /* word is a valid array reference */ #define W_NOCOMSUB (1 << 10) /* Don't perform command substitution on this word */ #define W_ASSIGNRHS (1 << 11) /* Word is rhs of an assignment statement */ #define W_NOTILDE (1 << 12) /* Don't perform tilde expansion on this word */ -#define W_ITILDE (1 << 13) /* Internal flag for word expansion */ +#define W_NOASSNTILDE (1 << 13) /* don't do tilde expansion like an assignment statement */ #define W_EXPANDRHS (1 << 14) /* Expanding word in ${paramOPword} */ #define W_COMPASSIGN (1 << 15) /* Compound assignment */ #define W_ASSNBLTIN (1 << 16) /* word is a builtin command that takes assignments */ #define W_ASSIGNARG (1 << 17) /* word is assignment argument to command */ #define W_HASQUOTEDNULL (1 << 18) /* word contains a quoted null character */ -#define W_DQUOTE (1 << 19) /* word should be treated as if double-quoted */ +#define W_DQUOTE (1 << 19) /* UNUSED - word should be treated as if double-quoted */ #define W_NOPROCSUB (1 << 20) /* don't perform process substitution */ #define W_SAWQUOTEDNULL (1 << 21) /* word contained a quoted null that was removed */ #define W_ASSIGNASSOC (1 << 22) /* word looks like associative array assignment */ @@ -102,8 +102,8 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, #define W_NOBRACE (1 << 26) /* Don't perform brace expansion */ #define W_COMPLETE (1 << 27) /* word is being expanded for completion */ #define W_CHKLOCAL (1 << 28) /* check for local vars on assignment */ -#define W_NOASSNTILDE (1 << 29) /* don't do tilde expansion like an assignment statement */ -#define W_FORCELOCAL (1 << 30) /* force assignments to be to local variables, non-fatal on assignment errors */ +#define W_FORCELOCAL (1 << 29) /* force assignments to be to local variables, non-fatal on assignment errors */ +/* UNUSED (1 << 30) */ /* Flags for the `pflags' argument to param_expand() and various parameter_brace_expand_xxx functions; also used for string_list_dollar_at */ diff --git a/config-bot.h b/config-bot.h index b075c7783..a687e4029 100644 --- a/config-bot.h +++ b/config-bot.h @@ -1,7 +1,7 @@ /* config-bot.h */ /* modify settings or make new ones based on what autoconf tells us. */ -/* Copyright (C) 1989-2009 Free Software Foundation, Inc. +/* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -99,7 +99,7 @@ #endif #if !HAVE_MKDTEMP -# undef USE_MKDTMP +# undef USE_MKDTEMP #endif /* If the shell is called by this name, it will become restricted. */ diff --git a/config-top.h b/config-top.h index 735f75e31..db4ab6ee3 100644 --- a/config-top.h +++ b/config-top.h @@ -1,6 +1,6 @@ /* config-top.h - various user-settable options not under the control of autoconf. */ -/* Copyright (C) 2002-2009 Free Software Foundation, Inc. +/* Copyright (C) 2002-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -77,6 +77,12 @@ "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc" #endif +/* The default path for enable -f */ +#ifndef DEFAULT_LOADABLE_BUILTINS_PATH +#define DEFAULT_LOADABLE_BUILTINS_PATH \ + "/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:." +#endif + /* Default primary and secondary prompt strings. */ #define PPROMPT "\\s-\\v\\$ " #define SPROMPT "> " @@ -108,7 +114,7 @@ /* Define if you want the case-toggling operators (~[~]) and the `capcase' variable attribute (declare -c). */ -/* TAG: bash-5.2 disable */ +/* TAG: bash-5.2 disable? */ #define CASEMOD_TOGGLECASE #define CASEMOD_CAPCASE diff --git a/config.h.in b/config.h.in index ab316d468..d6d52930b 100644 --- a/config.h.in +++ b/config.h.in @@ -23,15 +23,6 @@ /* Template settings for autoconf */ -#undef __EXTENSIONS__ -#undef _ALL_SOURCE -#undef _GNU_SOURCE -#undef _POSIX_SOURCE -#undef _POSIX_1_SOURCE -#undef _POSIX_PTHREAD_SEMANTICS -#undef _TANDEM_SOURCE -#undef _MINIX - /* Configuration feature settings controllable by autoconf. */ /* Define JOB_CONTROL if your operating system supports @@ -219,10 +210,10 @@ #undef __CHAR_UNSIGNED__ -/* Define if the compiler supports `long long' variables. */ -#undef HAVE_LONG_LONG +/* Define if the compiler supports `long long int' variables. */ +#undef HAVE_LONG_LONG_INT -#undef HAVE_UNSIGNED_LONG_LONG +#undef HAVE_UNSIGNED_LONG_LONG_INT /* The number of bytes in a int. */ #undef SIZEOF_INT @@ -233,6 +224,9 @@ /* The number of bytes in a pointer to char. */ #undef SIZEOF_CHAR_P +/* The number of bytes in a size_t. */ +#undef SIZEOF_SIZE_T + /* The number of bytes in a double (hopefully 8). */ #undef SIZEOF_DOUBLE @@ -252,6 +246,8 @@ /* Characteristics of the system's header files and libraries that affect the compilation environment. */ +/* These are set by AC_USE_SYSTEM_EXTENSIONS */ + /* Define if the system does not provide POSIX.1 features except with this defined. */ #undef _POSIX_1_SOURCE @@ -259,11 +255,18 @@ /* Define if you need to in order for stat and other things to work. */ #undef _POSIX_SOURCE -/* Define to use GNU libc extensions */ +/* Define to use GNU libc extensions. */ #undef _GNU_SOURCE -/* Define if you have the ANSI C header files. */ -#undef STDC_HEADERS +/* Define to enable general system extensions on Solaris. */ +#undef __EXTENSIONS__ + +/* General system extensions on AIX */ +#undef _ALL_SOURCE + +#undef _POSIX_PTHREAD_SEMANTICS +#undef _TANDEM_SOURCE +#undef _MINIX /* Memory management functions. */ @@ -513,11 +516,6 @@ #undef PGRP_PIPE -/* Define if the setvbuf function takes the buffering type as its second - argument and the buffer pointer as the third, as on System V - before release 3. */ -#undef SETVBUF_REVERSED - #undef STAT_MACROS_BROKEN #undef ULIMIT_MAXFDS @@ -530,8 +528,6 @@ #undef HAVE_PRINTF_A_FORMAT -#undef CTYPE_NON_ASCII - /* Define if you have and nl_langinfo(CODESET). */ #undef HAVE_LANGINFO_CODESET @@ -554,12 +550,6 @@ /* Type and behavior of signal handling functions. */ -/* Define as the return type of signal handlers (int or void). */ -#undef RETSIGTYPE - -/* Define if return type of signal handlers is void */ -#undef VOID_SIGHANDLER - #undef MUST_REINSTALL_SIGHANDLERS #undef HAVE_BSD_SIGNALS @@ -1092,8 +1082,6 @@ /* Define if you have */ #undef HAVE_SYS_TIME_H -#undef TIME_WITH_SYS_TIME - /* Define if you have */ #undef HAVE_SYS_TIMES_H @@ -1169,6 +1157,13 @@ #undef DEV_FD_STAT_BROKEN +/* An array implementation that prioritizes speed (O(1) access) over space, + in array2.c */ +#undef ALT_ARRAY_IMPLEMENTATION + +/* Support for $"..." translatable strings. */ +#undef TRANSLATABLE_STRINGS + /* Additional defines for configuring lib/intl, maintained by autoscan/autoheader */ /* Define if you have the header file. */ diff --git a/configure b/configure index 0f1d3ed17..47313753e 100755 --- a/configure +++ b/configure @@ -1,12 +1,13 @@ #! /bin/sh -# From configure.ac for Bash 5.1, version 5.022. +# From configure.ac for Bash 5.2, version 5.046. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for bash 5.1-release. +# Generated by GNU Autoconf 2.71 for bash 5.2-release. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. # # # This configure script is free software; the Free Software Foundation @@ -17,14 +18,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -34,46 +37,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -82,13 +85,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -97,8 +93,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -110,30 +110,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -155,20 +135,22 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else +else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( @@ -188,42 +170,53 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : -else +else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : + if (eval "$as_required") 2>/dev/null +then : as_have_required=yes -else +else $as_nop as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : -else +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base + as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : break 2 fi fi @@ -231,14 +224,21 @@ fi esac as_found=false done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi - if test "x$CONFIG_SHELL" != x; then : + if test "x$CONFIG_SHELL" != x +then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -256,18 +256,19 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org and bug-bash@gnu.org + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and bug-bash@gnu.org $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do @@ -295,6 +296,7 @@ as_fn_unset () } as_unset=as_fn_unset + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -312,6 +314,14 @@ as_fn_exit () as_fn_set_status $1 exit $1 } # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_mkdir_p # ------------- @@ -326,7 +336,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -335,7 +345,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -374,12 +384,13 @@ as_fn_executable_p () # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -391,18 +402,27 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- @@ -414,9 +434,9 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -443,7 +463,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -487,7 +507,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -501,6 +521,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits exit } + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -514,6 +538,13 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -581,52 +612,47 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='5.1-release' -PACKAGE_STRING='bash 5.1-release' +PACKAGE_VERSION='5.2-release' +PACKAGE_STRING='bash 5.2-release' PACKAGE_BUGREPORT='bug-bash@gnu.org' PACKAGE_URL='' ac_unique_file="shell.h" # Factoring default headers for most tests. ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include +#include +#ifdef HAVE_STDIO_H +# include #endif -#ifdef STDC_HEADERS +#ifdef HAVE_STDLIB_H # include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif #endif #ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif # include #endif -#ifdef HAVE_STRINGS_H -# include -#endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif #ifdef HAVE_UNISTD_H # include #endif" +ac_header_c_list= gt_needs= -ac_header_list= +ac_func_c_list= gl_use_threads_default= -ac_func_list= ac_subst_vars='LTLIBOBJS LOCAL_DEFS LOCAL_LDFLAGS @@ -734,14 +760,16 @@ READLINE_LIB RL_MINOR RL_MAJOR RL_VERSION +EGREP +GREP +CPP LIBS_FOR_BUILD +STYLE_CFLAGS +BASE_CFLAGS_FOR_BUILD STATIC_LD SIGNAMES_O SIGNAMES_H CROSS_COMPILE -EGREP -GREP -CPP OBJEXT EXEEXT ac_ct_CC @@ -754,6 +782,7 @@ HELPFILES_TARGET HELPINSTALL HELPDIRDEFINE HELPDIR +ARRAY_O MALLOC_DEP MALLOC_LDFLAGS MALLOC_LIBRARY @@ -793,6 +822,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -822,6 +852,7 @@ with_gnu_malloc with_installed_readline enable_minimal_config enable_alias +enable_alt_array_implementation enable_arith_for_command enable_array_variables enable_bang_history @@ -856,6 +887,7 @@ enable_select enable_separate_helpfiles enable_single_help_strings enable_strict_posix_default +enable_translatable_strings enable_usg_echo_default enable_xpg_echo_default enable_mem_scramble @@ -925,6 +957,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -954,8 +987,6 @@ do *) ac_optarg=yes ;; esac - # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; @@ -996,9 +1027,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1022,9 +1053,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1177,6 +1208,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1226,9 +1266,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1242,9 +1282,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1288,9 +1328,9 @@ Try \`$0 --help' for more information" *) # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1306,7 +1346,7 @@ if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1314,7 +1354,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1370,7 +1410,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | +printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1427,7 +1467,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bash 5.1-release to adapt to many kinds of systems. +\`configure' configures bash 5.2-release to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1467,6 +1507,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1492,7 +1533,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 5.1-release:";; + short | recursive ) echo "Configuration of bash 5.2-release:";; esac cat <<\_ACEOF @@ -1502,6 +1543,9 @@ Optional Features: --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-minimal-config a minimal sh-like configuration --enable-alias enable shell aliases + --enable-alt-array-implementation + enable an alternate array implementation that + optimizes speed at the cost of space --enable-arith-for-command enable arithmetic for command --enable-array-variables @@ -1563,6 +1607,8 @@ Optional Features: translation --enable-strict-posix-default configure bash to be posix-conformant by default + --enable-translatable-strings + include support for $"..." translatable strings --enable-usg-echo-default a synonym for --enable-xpg-echo-default --enable-xpg-echo-default @@ -1646,9 +1692,9 @@ if test "$ac_init_help" = "recursive"; then case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1676,7 +1722,8 @@ esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive @@ -1684,7 +1731,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1693,10 +1740,10 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bash configure 5.1-release -generated by GNU Autoconf 2.69 +bash configure 5.2-release +generated by GNU Autoconf 2.71 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1713,14 +1760,14 @@ fi ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1728,14 +1775,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1745,51 +1793,38 @@ fi } # ac_fn_c_try_compile -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval -} # ac_fn_c_try_link +} # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- @@ -1803,7 +1838,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1811,14 +1846,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1828,169 +1864,52 @@ fi } # ac_fn_c_try_cpp -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------- ## -## Report this to bug-bash@gnu.org ## -## ------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=$ac_status + ac_retval=1 fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval -} # ac_fn_c_try_run - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile +} # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- @@ -1998,11 +1917,12 @@ $as_echo "$ac_res" >&6; } ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. @@ -2010,16 +1930,9 @@ else #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif + which can conflict with char $2 (); below. */ +#include #undef $2 /* Override any GCC internal prototype to avoid an error. @@ -2037,46 +1950,91 @@ choke me #endif int -main () +main (void) { return $2 (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func -# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -# ------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_c_check_type () +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) { if (sizeof ($2)) return 0; @@ -2084,12 +2042,13 @@ if (sizeof ($2)) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof (($2))) return 0; @@ -2097,41 +2056,45 @@ if (sizeof (($2))) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop eval "$3=yes" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type -# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES -# --------------------------------------------- +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR -# accordingly. -ac_fn_c_check_decl () +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 -$as_echo_n "checking whether $as_decl_name is declared... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { #ifndef $as_decl_name #ifdef __cplusplus @@ -2145,19 +2108,22 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -} # ac_fn_c_check_decl +} # ac_fn_check_decl # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- @@ -2173,7 +2139,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; @@ -2183,14 +2149,15 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; @@ -2200,9 +2167,10 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=$ac_mid; break -else +else $as_nop as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= @@ -2210,14 +2178,14 @@ else fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; @@ -2227,14 +2195,15 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; @@ -2244,9 +2213,10 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_lo=$ac_mid; break -else +else $as_nop as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= @@ -2254,14 +2224,14 @@ else fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else +else $as_nop ac_lo= ac_hi= fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val @@ -2269,7 +2239,7 @@ while test "x$ac_lo" != "x$ac_hi"; do /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; @@ -2279,12 +2249,13 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=$ac_mid -else +else $as_nop as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; @@ -2294,12 +2265,12 @@ esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } +static long int longval (void) { return $2; } +static unsigned long int ulongval (void) { return $2; } #include #include int -main () +main (void) { FILE *f = fopen ("conftest.val", "w"); @@ -2327,9 +2298,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : echo >>conftest.val; read $3 &5 -$as_echo_n "checking for $2.$3... " >&6; } -if eval \${$4+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int -main () +main (void) { static $2 ac_aggr; if (ac_aggr.$3) @@ -2367,14 +2340,15 @@ return 0; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$4=yes" -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int -main () +main (void) { static $2 ac_aggr; if (sizeof ac_aggr.$3) @@ -2383,29 +2357,50 @@ return 0; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$4=yes" -else +else $as_nop eval "$4=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$4 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bash $as_me 5.1-release, which was -generated by GNU Autoconf 2.69. Invocation command line was +It was created by bash $as_me 5.2-release, which was +generated by GNU Autoconf 2.71. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -2438,8 +2433,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS @@ -2474,7 +2473,7 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -2509,11 +2508,13 @@ done # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo - $as_echo "## ---------------- ## + printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -2524,8 +2525,8 @@ trap 'exit_status=$? case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -2549,7 +2550,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ) echo - $as_echo "## ----------------- ## + printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -2557,14 +2558,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## + printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo @@ -2572,15 +2573,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - $as_echo "## ----------- ## + printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo @@ -2588,8 +2589,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; echo fi test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -2603,63 +2604,48 @@ ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -$as_echo "/* confdefs.h */" > confdefs.h +printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac + ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" + +for ac_site_file in $ac_site_files do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi @@ -2669,32 +2655,449 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" gt_needs="$gt_needs need-ngettext" -as_fn_append ac_header_list " stdlib.h" -as_fn_append ac_header_list " unistd.h" -as_fn_append ac_header_list " sys/param.h" -as_fn_append ac_func_list " symlink" -as_fn_append ac_func_list " uselocale" -as_fn_append ac_header_list " xlocale.h" -as_fn_append ac_header_list " sys/time.h" -as_fn_append ac_func_list " alarm" -as_fn_append ac_func_list " fpurge" -as_fn_append ac_func_list " __fpurge" -as_fn_append ac_func_list " snprintf" -as_fn_append ac_func_list " vsnprintf" +as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" +as_fn_append ac_func_c_list " getpagesize HAVE_GETPAGESIZE" +as_fn_append ac_func_c_list " symlink HAVE_SYMLINK" +as_fn_append ac_func_c_list " uselocale HAVE_USELOCALE" +as_fn_append ac_header_c_list " xlocale.h xlocale_h HAVE_XLOCALE_H" +as_fn_append ac_func_c_list " vprintf HAVE_VPRINTF" +as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H" +as_fn_append ac_func_c_list " alarm HAVE_ALARM" +as_fn_append ac_func_c_list " fpurge HAVE_FPURGE" +as_fn_append ac_func_c_list " __fpurge HAVE___FPURGE" +as_fn_append ac_func_c_list " snprintf HAVE_SNPRINTF" +as_fn_append ac_func_c_list " vsnprintf HAVE_VSNPRINTF" + +# Auxiliary files required by this configure script. +ac_aux_files="config.rpath install-sh config.guess config.sub" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/./support" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -2705,12 +3108,12 @@ for ac_var in $ac_precious_vars; do eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) @@ -2719,24 +3122,24 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -2746,11 +3149,12 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi done if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## @@ -2767,39 +3171,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_aux_dir= -for ac_dir in ./support "$srcdir"/./support; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in ./support \"$srcdir\"/./support" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - ac_config_headers="$ac_config_headers config.h" -BASHVERS=5.1 +BASHVERS=5.2 RELSTATUS=release case "$RELSTATUS" in @@ -2807,26 +3183,30 @@ alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' *) DEBUG= MALLOC_DEBUG= ;; esac -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else + + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; @@ -2845,21 +3225,22 @@ IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; @@ -2929,31 +3310,36 @@ esac # Check whether --with-afs was given. -if test "${with_afs+set}" = set; then : +if test ${with_afs+y} +then : withval=$with_afs; opt_afs=$withval fi # Check whether --with-bash-malloc was given. -if test "${with_bash_malloc+set}" = set; then : +if test ${with_bash_malloc+y} +then : withval=$with_bash_malloc; opt_bash_malloc=$withval fi # Check whether --with-curses was given. -if test "${with_curses+set}" = set; then : +if test ${with_curses+y} +then : withval=$with_curses; opt_curses=$withval fi # Check whether --with-gnu-malloc was given. -if test "${with_gnu_malloc+set}" = set; then : +if test ${with_gnu_malloc+y} +then : withval=$with_gnu_malloc; opt_bash_malloc=$withval fi # Check whether --with-installed-readline was given. -if test "${with_installed_readline+set}" = set; then : +if test ${with_installed_readline+y} +then : withval=$with_installed_readline; opt_with_installed_readline=$withval fi @@ -2967,7 +3353,7 @@ if test "$opt_bash_malloc" = yes; then MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)' MALLOC_DEP='$(MALLOC_LIBRARY)' - $as_echo "#define USING_BASH_MALLOC 1" >>confdefs.h + printf "%s\n" "#define USING_BASH_MALLOC 1" >>confdefs.h else MALLOC_LIB= @@ -2977,7 +3363,7 @@ else fi if test "$opt_afs" = yes; then - $as_echo "#define AFS 1" >>confdefs.h + printf "%s\n" "#define AFS 1" >>confdefs.h fi @@ -3027,12 +3413,17 @@ opt_dircomplete_expand_default=no opt_globascii_default=yes opt_function_import=yes opt_dev_fd_stat_broken=no +opt_alt_array_impl=no +opt_translatable_strings=yes + +ARRAY_O=array.o opt_static_link=no opt_profiling=no # Check whether --enable-minimal-config was given. -if test "${enable_minimal_config+set}" = set; then : +if test ${enable_minimal_config+y} +then : enableval=$enable_minimal_config; opt_minimal_config=$enableval fi @@ -3047,207 +3438,260 @@ if test $opt_minimal_config = yes; then opt_net_redirs=no opt_progcomp=no opt_separate_help=no opt_multibyte=yes opt_cond_regexp=no opt_coproc=no opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no + opt_translatable_strings=no opt_globascii_default=yes fi # Check whether --enable-alias was given. -if test "${enable_alias+set}" = set; then : +if test ${enable_alias+y} +then : enableval=$enable_alias; opt_alias=$enableval fi +# Check whether --enable-alt-array-implementation was given. +if test ${enable_alt_array_implementation+y} +then : + enableval=$enable_alt_array_implementation; opt_alt_array_impl=$enableval +fi + # Check whether --enable-arith-for-command was given. -if test "${enable_arith_for_command+set}" = set; then : +if test ${enable_arith_for_command+y} +then : enableval=$enable_arith_for_command; opt_arith_for_command=$enableval fi # Check whether --enable-array-variables was given. -if test "${enable_array_variables+set}" = set; then : +if test ${enable_array_variables+y} +then : enableval=$enable_array_variables; opt_array_variables=$enableval fi # Check whether --enable-bang-history was given. -if test "${enable_bang_history+set}" = set; then : +if test ${enable_bang_history+y} +then : enableval=$enable_bang_history; opt_bang_history=$enableval fi # Check whether --enable-brace-expansion was given. -if test "${enable_brace_expansion+set}" = set; then : +if test ${enable_brace_expansion+y} +then : enableval=$enable_brace_expansion; opt_brace_expansion=$enableval fi # Check whether --enable-casemod-attributes was given. -if test "${enable_casemod_attributes+set}" = set; then : +if test ${enable_casemod_attributes+y} +then : enableval=$enable_casemod_attributes; opt_casemod_attrs=$enableval fi # Check whether --enable-casemod-expansions was given. -if test "${enable_casemod_expansions+set}" = set; then : +if test ${enable_casemod_expansions+y} +then : enableval=$enable_casemod_expansions; opt_casemod_expansions=$enableval fi # Check whether --enable-command-timing was given. -if test "${enable_command_timing+set}" = set; then : +if test ${enable_command_timing+y} +then : enableval=$enable_command_timing; opt_command_timing=$enableval fi # Check whether --enable-cond-command was given. -if test "${enable_cond_command+set}" = set; then : +if test ${enable_cond_command+y} +then : enableval=$enable_cond_command; opt_cond_command=$enableval fi # Check whether --enable-cond-regexp was given. -if test "${enable_cond_regexp+set}" = set; then : +if test ${enable_cond_regexp+y} +then : enableval=$enable_cond_regexp; opt_cond_regexp=$enableval fi # Check whether --enable-coprocesses was given. -if test "${enable_coprocesses+set}" = set; then : +if test ${enable_coprocesses+y} +then : enableval=$enable_coprocesses; opt_coproc=$enableval fi # Check whether --enable-debugger was given. -if test "${enable_debugger+set}" = set; then : +if test ${enable_debugger+y} +then : enableval=$enable_debugger; opt_debugger=$enableval fi # Check whether --enable-dev-fd-stat-broken was given. -if test "${enable_dev_fd_stat_broken+set}" = set; then : +if test ${enable_dev_fd_stat_broken+y} +then : enableval=$enable_dev_fd_stat_broken; opt_dev_fd_stat_broken=$enableval fi # Check whether --enable-direxpand-default was given. -if test "${enable_direxpand_default+set}" = set; then : +if test ${enable_direxpand_default+y} +then : enableval=$enable_direxpand_default; opt_dircomplete_expand_default=$enableval fi # Check whether --enable-directory-stack was given. -if test "${enable_directory_stack+set}" = set; then : +if test ${enable_directory_stack+y} +then : enableval=$enable_directory_stack; opt_dirstack=$enableval fi # Check whether --enable-disabled-builtins was given. -if test "${enable_disabled_builtins+set}" = set; then : +if test ${enable_disabled_builtins+y} +then : enableval=$enable_disabled_builtins; opt_disabled_builtins=$enableval fi # Check whether --enable-dparen-arithmetic was given. -if test "${enable_dparen_arithmetic+set}" = set; then : +if test ${enable_dparen_arithmetic+y} +then : enableval=$enable_dparen_arithmetic; opt_dparen_arith=$enableval fi # Check whether --enable-extended-glob was given. -if test "${enable_extended_glob+set}" = set; then : +if test ${enable_extended_glob+y} +then : enableval=$enable_extended_glob; opt_extended_glob=$enableval fi # Check whether --enable-extended-glob-default was given. -if test "${enable_extended_glob_default+set}" = set; then : +if test ${enable_extended_glob_default+y} +then : enableval=$enable_extended_glob_default; opt_extglob_default=$enableval fi # Check whether --enable-function-import was given. -if test "${enable_function_import+set}" = set; then : +if test ${enable_function_import+y} +then : enableval=$enable_function_import; opt_function_import=$enableval fi # Check whether --enable-glob-asciiranges-default was given. -if test "${enable_glob_asciiranges_default+set}" = set; then : +if test ${enable_glob_asciiranges_default+y} +then : enableval=$enable_glob_asciiranges_default; opt_globascii_default=$enableval fi # Check whether --enable-help-builtin was given. -if test "${enable_help_builtin+set}" = set; then : +if test ${enable_help_builtin+y} +then : enableval=$enable_help_builtin; opt_help=$enableval fi # Check whether --enable-history was given. -if test "${enable_history+set}" = set; then : +if test ${enable_history+y} +then : enableval=$enable_history; opt_history=$enableval fi # Check whether --enable-job-control was given. -if test "${enable_job_control+set}" = set; then : +if test ${enable_job_control+y} +then : enableval=$enable_job_control; opt_job_control=$enableval fi # Check whether --enable-multibyte was given. -if test "${enable_multibyte+set}" = set; then : +if test ${enable_multibyte+y} +then : enableval=$enable_multibyte; opt_multibyte=$enableval fi # Check whether --enable-net-redirections was given. -if test "${enable_net_redirections+set}" = set; then : +if test ${enable_net_redirections+y} +then : enableval=$enable_net_redirections; opt_net_redirs=$enableval fi # Check whether --enable-process-substitution was given. -if test "${enable_process_substitution+set}" = set; then : +if test ${enable_process_substitution+y} +then : enableval=$enable_process_substitution; opt_process_subst=$enableval fi # Check whether --enable-progcomp was given. -if test "${enable_progcomp+set}" = set; then : +if test ${enable_progcomp+y} +then : enableval=$enable_progcomp; opt_progcomp=$enableval fi # Check whether --enable-prompt-string-decoding was given. -if test "${enable_prompt_string_decoding+set}" = set; then : +if test ${enable_prompt_string_decoding+y} +then : enableval=$enable_prompt_string_decoding; opt_prompt_decoding=$enableval fi # Check whether --enable-readline was given. -if test "${enable_readline+set}" = set; then : +if test ${enable_readline+y} +then : enableval=$enable_readline; opt_readline=$enableval fi # Check whether --enable-restricted was given. -if test "${enable_restricted+set}" = set; then : +if test ${enable_restricted+y} +then : enableval=$enable_restricted; opt_restricted=$enableval fi # Check whether --enable-select was given. -if test "${enable_select+set}" = set; then : +if test ${enable_select+y} +then : enableval=$enable_select; opt_select=$enableval fi # Check whether --enable-separate-helpfiles was given. -if test "${enable_separate_helpfiles+set}" = set; then : +if test ${enable_separate_helpfiles+y} +then : enableval=$enable_separate_helpfiles; opt_separate_help=$enableval fi # Check whether --enable-single-help-strings was given. -if test "${enable_single_help_strings+set}" = set; then : +if test ${enable_single_help_strings+y} +then : enableval=$enable_single_help_strings; opt_single_longdoc_strings=$enableval fi # Check whether --enable-strict-posix-default was given. -if test "${enable_strict_posix_default+set}" = set; then : +if test ${enable_strict_posix_default+y} +then : enableval=$enable_strict_posix_default; opt_strict_posix=$enableval fi +# Check whether --enable-translatable-strings was given. +if test ${enable_translatable_strings+y} +then : + enableval=$enable_translatable_strings; opt_translatable_strings=$enableval +fi + # Check whether --enable-usg-echo-default was given. -if test "${enable_usg_echo_default+set}" = set; then : +if test ${enable_usg_echo_default+y} +then : enableval=$enable_usg_echo_default; opt_xpg_echo=$enableval fi # Check whether --enable-xpg-echo-default was given. -if test "${enable_xpg_echo_default+set}" = set; then : +if test ${enable_xpg_echo_default+y} +then : enableval=$enable_xpg_echo_default; opt_xpg_echo=$enableval fi # Check whether --enable-mem-scramble was given. -if test "${enable_mem_scramble+set}" = set; then : +if test ${enable_mem_scramble+y} +then : enableval=$enable_mem_scramble; opt_memscramble=$enableval fi # Check whether --enable-profiling was given. -if test "${enable_profiling+set}" = set; then : +if test ${enable_profiling+y} +then : enableval=$enable_profiling; opt_profiling=$enableval fi # Check whether --enable-static-link was given. -if test "${enable_static_link+set}" = set; then : +if test ${enable_static_link+y} +then : enableval=$enable_static_link; opt_static_link=$enableval fi @@ -3260,134 +3704,143 @@ fi if test $opt_alias = yes; then -$as_echo "#define ALIAS 1" >>confdefs.h +printf "%s\n" "#define ALIAS 1" >>confdefs.h fi if test $opt_dirstack = yes; then -$as_echo "#define PUSHD_AND_POPD 1" >>confdefs.h +printf "%s\n" "#define PUSHD_AND_POPD 1" >>confdefs.h fi if test $opt_restricted = yes; then -$as_echo "#define RESTRICTED_SHELL 1" >>confdefs.h +printf "%s\n" "#define RESTRICTED_SHELL 1" >>confdefs.h fi if test $opt_process_subst = yes; then -$as_echo "#define PROCESS_SUBSTITUTION 1" >>confdefs.h +printf "%s\n" "#define PROCESS_SUBSTITUTION 1" >>confdefs.h fi if test $opt_prompt_decoding = yes; then -$as_echo "#define PROMPT_STRING_DECODE 1" >>confdefs.h +printf "%s\n" "#define PROMPT_STRING_DECODE 1" >>confdefs.h fi if test $opt_select = yes; then -$as_echo "#define SELECT_COMMAND 1" >>confdefs.h +printf "%s\n" "#define SELECT_COMMAND 1" >>confdefs.h fi if test $opt_help = yes; then -$as_echo "#define HELP_BUILTIN 1" >>confdefs.h +printf "%s\n" "#define HELP_BUILTIN 1" >>confdefs.h fi if test $opt_array_variables = yes; then -$as_echo "#define ARRAY_VARS 1" >>confdefs.h +printf "%s\n" "#define ARRAY_VARS 1" >>confdefs.h fi if test $opt_dparen_arith = yes; then -$as_echo "#define DPAREN_ARITHMETIC 1" >>confdefs.h +printf "%s\n" "#define DPAREN_ARITHMETIC 1" >>confdefs.h fi if test $opt_brace_expansion = yes; then -$as_echo "#define BRACE_EXPANSION 1" >>confdefs.h +printf "%s\n" "#define BRACE_EXPANSION 1" >>confdefs.h fi if test $opt_disabled_builtins = yes; then -$as_echo "#define DISABLED_BUILTINS 1" >>confdefs.h +printf "%s\n" "#define DISABLED_BUILTINS 1" >>confdefs.h fi if test $opt_command_timing = yes; then -$as_echo "#define COMMAND_TIMING 1" >>confdefs.h +printf "%s\n" "#define COMMAND_TIMING 1" >>confdefs.h fi if test $opt_xpg_echo = yes ; then -$as_echo "#define DEFAULT_ECHO_TO_XPG 1" >>confdefs.h +printf "%s\n" "#define DEFAULT_ECHO_TO_XPG 1" >>confdefs.h fi if test $opt_strict_posix = yes; then -$as_echo "#define STRICT_POSIX 1" >>confdefs.h +printf "%s\n" "#define STRICT_POSIX 1" >>confdefs.h fi if test $opt_extended_glob = yes ; then -$as_echo "#define EXTENDED_GLOB 1" >>confdefs.h +printf "%s\n" "#define EXTENDED_GLOB 1" >>confdefs.h fi if test $opt_extglob_default = yes; then -$as_echo "#define EXTGLOB_DEFAULT 1" >>confdefs.h +printf "%s\n" "#define EXTGLOB_DEFAULT 1" >>confdefs.h else -$as_echo "#define EXTGLOB_DEFAULT 0" >>confdefs.h +printf "%s\n" "#define EXTGLOB_DEFAULT 0" >>confdefs.h fi if test $opt_cond_command = yes ; then -$as_echo "#define COND_COMMAND 1" >>confdefs.h +printf "%s\n" "#define COND_COMMAND 1" >>confdefs.h fi if test $opt_cond_regexp = yes ; then -$as_echo "#define COND_REGEXP 1" >>confdefs.h +printf "%s\n" "#define COND_REGEXP 1" >>confdefs.h fi if test $opt_coproc = yes; then -$as_echo "#define COPROCESS_SUPPORT 1" >>confdefs.h +printf "%s\n" "#define COPROCESS_SUPPORT 1" >>confdefs.h fi if test $opt_arith_for_command = yes; then -$as_echo "#define ARITH_FOR_COMMAND 1" >>confdefs.h +printf "%s\n" "#define ARITH_FOR_COMMAND 1" >>confdefs.h fi if test $opt_net_redirs = yes; then -$as_echo "#define NETWORK_REDIRECTIONS 1" >>confdefs.h +printf "%s\n" "#define NETWORK_REDIRECTIONS 1" >>confdefs.h fi if test $opt_progcomp = yes; then -$as_echo "#define PROGRAMMABLE_COMPLETION 1" >>confdefs.h +printf "%s\n" "#define PROGRAMMABLE_COMPLETION 1" >>confdefs.h fi if test $opt_multibyte = no; then -$as_echo "#define NO_MULTIBYTE_SUPPORT 1" >>confdefs.h +printf "%s\n" "#define NO_MULTIBYTE_SUPPORT 1" >>confdefs.h fi if test $opt_debugger = yes; then -$as_echo "#define DEBUGGER 1" >>confdefs.h +printf "%s\n" "#define DEBUGGER 1" >>confdefs.h fi if test $opt_casemod_attrs = yes; then -$as_echo "#define CASEMOD_ATTRS 1" >>confdefs.h +printf "%s\n" "#define CASEMOD_ATTRS 1" >>confdefs.h fi if test $opt_casemod_expansions = yes; then -$as_echo "#define CASEMOD_EXPANSIONS 1" >>confdefs.h +printf "%s\n" "#define CASEMOD_EXPANSIONS 1" >>confdefs.h fi if test $opt_dircomplete_expand_default = yes; then -$as_echo "#define DIRCOMPLETE_EXPAND_DEFAULT 1" >>confdefs.h +printf "%s\n" "#define DIRCOMPLETE_EXPAND_DEFAULT 1" >>confdefs.h fi if test $opt_globascii_default = yes; then -$as_echo "#define GLOBASCII_DEFAULT 1" >>confdefs.h +printf "%s\n" "#define GLOBASCII_DEFAULT 1" >>confdefs.h else -$as_echo "#define GLOBASCII_DEFAULT 0" >>confdefs.h +printf "%s\n" "#define GLOBASCII_DEFAULT 0" >>confdefs.h fi if test $opt_function_import = yes; then -$as_echo "#define FUNCTION_IMPORT 1" >>confdefs.h +printf "%s\n" "#define FUNCTION_IMPORT 1" >>confdefs.h fi if test $opt_dev_fd_stat_broken = yes; then -$as_echo "#define DEV_FD_STAT_BROKEN 1" >>confdefs.h +printf "%s\n" "#define DEV_FD_STAT_BROKEN 1" >>confdefs.h + +fi +if test $opt_alt_array_impl = yes; then +printf "%s\n" "#define ALT_ARRAY_IMPLEMENTATION 1" >>confdefs.h + +ARRAY_O=array2.o +fi +if test $opt_translatable_strings = yes; then +printf "%s\n" "#define TRANSLATABLE_STRINGS 1" >>confdefs.h fi if test $opt_memscramble = yes; then -$as_echo "#define MEMSCRAMBLE 1" >>confdefs.h +printf "%s\n" "#define MEMSCRAMBLE 1" >>confdefs.h fi @@ -3400,7 +3853,7 @@ fi HELPDIR= HELPDIRDEFINE= HELPINSTALL= HELPFILES_TARGET= if test "$opt_separate_help" != no; then if test "$opt_separate_help" = "yes" ; then - HELPDIR='${datadir}/bash' + HELPDIR='${datadir}/bash/helpfiles' else HELPDIR=$opt_separate_help fi @@ -3430,6 +3883,8 @@ fi + + if test -z "$CFLAGS"; then want_auto_cflags=1 fi @@ -3438,6 +3893,15 @@ echo "" echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}" echo "" + + + + + + + + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3446,11 +3910,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3458,11 +3923,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3473,11 +3942,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3486,11 +3955,12 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -3498,11 +3968,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3513,11 +3987,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -3525,8 +3999,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -3539,11 +4013,12 @@ if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3551,11 +4026,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3566,11 +4045,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3579,11 +4058,12 @@ fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3592,15 +4072,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3616,18 +4100,18 @@ if test $ac_prog_rejected = yes; then # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3638,11 +4122,12 @@ if test -z "$CC"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3650,11 +4135,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3665,11 +4154,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3682,11 +4171,12 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -3694,11 +4184,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3709,11 +4203,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3725,34 +4219,138 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi +else + CC="$ac_cv_prog_CC" fi fi -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do +for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -3762,7 +4360,7 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -3770,7 +4368,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -3782,9 +4380,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" @@ -3805,11 +4403,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -3826,7 +4425,7 @@ do # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -3842,44 +4441,46 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else +else $as_nop ac_file='' fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -3893,15 +4494,15 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext @@ -3910,7 +4511,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; @@ -3922,8 +4523,8 @@ _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in @@ -3931,10 +4532,10 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in @@ -3942,39 +4543,40 @@ $as_echo "$ac_try_echo"; } >&5 *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -3988,11 +4590,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in @@ -4001,31 +4604,32 @@ $as_echo "$ac_try_echo"; } >&5 break;; esac done -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -4035,29 +4639,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no @@ -4066,57 +4674,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else +else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then @@ -4131,94 +4742,144 @@ else CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC - fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi fi ac_ext=c @@ -4229,542 +4890,199 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$want_auto_cflags"; then - AUTO_CFLAGS="-g ${GCC+-O2}" - AUTO_LDFLAGS="-g ${GCC+-O2}" - STYLE_CFLAGS="${GCC+-Wno-parentheses} ${GCC+-Wno-format-security}" + AUTO_CFLAGS="-g ${GCC:+-O2}" + AUTO_LDFLAGS="-g ${GCC:+-O2}" +# STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security} ${GCC:+-Wno-tautological-constant-out-of-range-compare}" + STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security}" else AUTO_CFLAGS= AUTO_LDFLAGS= STYLE_CFLAGS= fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 -$as_echo_n "checking for library containing strerror... " >&6; } -if ${ac_cv_search_strerror+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char strerror (); +# define __EXTENSIONS__ 1 + $ac_includes_default int -main () +main (void) { -return strerror (); + ; return 0; } _ACEOF -for ac_lib in '' cposix; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_strerror=$ac_res +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else $as_nop + ac_cv_safe_to_define___extensions__=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_strerror+:} false; then : - break +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -done -if ${ac_cv_search_strerror+:} false; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } -else - ac_cv_search_strerror=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 -$as_echo "$ac_cv_search_strerror" >&6; } -ac_res=$ac_cv_search_strerror -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -fi + #include + mbstate_t x; +int +main (void) +{ -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f conftest* - +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no fi -rm -f conftest* +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } -fi + printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif + printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h -fi + printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h -done + printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h + printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h + printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h - ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" -if test "x$ac_cv_header_minix_config_h" = xyes; then : - MINIX=yes -else - MINIX= -fi + printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h - if test "$MINIX" = yes; then + printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h -$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h -$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h -$as_echo "#define _MINIX 1" >>confdefs.h - - fi + printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf "%s\n" "#define _MINIX 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 -$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } -if ${ac_cv_safe_to_define___extensions__+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ + printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h -# define __EXTENSIONS__ 1 - $ac_includes_default -int -main () -{ + printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_safe_to_define___extensions__=yes -else - ac_cv_safe_to_define___extensions__=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else $as_nop + MINIX= fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 -$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } - test $ac_cv_safe_to_define___extensions__ = yes && - $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h - - $as_echo "#define _ALL_SOURCE 1" >>confdefs.h - - $as_echo "#define _GNU_SOURCE 1" >>confdefs.h - - $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h - - $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h - + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h +fi # Check whether --enable-largefile was given. -if test "${enable_largefile+set}" = set; then : +if test ${enable_largefile+y} +then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 -$as_echo_n "checking for special C compiler options needed for large files... " >&6; } -if ${ac_cv_sys_largefile_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC @@ -4778,44 +5096,47 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : break fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam CC="$CC -n32" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_largefile_CC=' -n32'; break fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 -$as_echo "$ac_cv_sys_largefile_CC" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } -if ${ac_cv_sys_file_offset_bits+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if test ${ac_cv_sys_file_offset_bits+y} +then : + printf %s "(cached) " >&6 +else $as_nop while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4824,22 +5145,23 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_file_offset_bits=no; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 @@ -4848,43 +5170,43 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_file_offset_bits=64; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 -$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) -cat >>confdefs.h <<_ACEOF -#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits -_ACEOF +printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 -$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } -if ${ac_cv_sys_large_files+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } +if test ${ac_cv_sys_large_files+y} +then : + printf %s "(cached) " >&6 +else $as_nop while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4893,22 +5215,23 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_large_files=no; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 @@ -4917,40 +5240,37 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_sys_large_files=1; break fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 -$as_echo "$ac_cv_sys_large_files" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +printf "%s\n" "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) -cat >>confdefs.h <<_ACEOF -#define _LARGE_FILES $ac_cv_sys_large_files -_ACEOF +printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h ;; esac rm -rf conftest* fi - - fi @@ -4997,7 +5317,7 @@ CFLAGS=${CFLAGS-"$AUTO_CFLAGS"} if test "$opt_profiling" = "yes"; then PROFILE_FLAGS=-pg case "$host_os" in - solaris2*|linux*) ;; + solaris2*|linux*|darwin*) ;; *) opt_static_link=yes ;; esac DEBUG= MALLOC_DEBUG= @@ -5010,7 +5330,7 @@ if test "$opt_static_link" = yes; then prefer_static=yes prefer_shared=no # if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2 - if test -n "$GCC" || test "$ac_cv_c_compiler_gnu" = "yes"; then + if test "$GCC" = "yes"; then STATIC_LD="-static" case "$host_os" in solaris2*|linux*) ;; @@ -5032,9 +5352,12 @@ if test "X$cross_compiling" = "Xno"; then fi # CFLAGS set above to default value if not passed in environment if test -n "$want_auto_cflags" ; then - CFLAGS_FOR_BUILD="${CFLAGS} ${STYLE_CFLAGS}" + CFLAGS_FOR_BUILD="${CFLAGS}" + BASE_CFLAGS_FOR_BUILD="${CFLAGS}" else + # passed in environment CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'} + BASE_CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'} fi LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'} else @@ -5042,6 +5365,7 @@ else CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""} LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""} CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD="-g"} + BASE_CFLAGS_FOR_BUILD=${BASE_CFLAGS_FOR_BUILD="-g"} LIBS_FOR_BUILD=${LIBS_FOR_BUILD-""} fi @@ -5056,12 +5380,290 @@ fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + if test $ac_cv_c_compiler_gnu = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5 -$as_echo_n "checking whether $CC needs -traditional... " >&6; } -if ${ac_cv_prog_gcc_traditional+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5 +printf %s "checking whether $CC needs -traditional... " >&6; } +if test ${ac_cv_prog_gcc_traditional+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_pattern="Autoconf.*'x'" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5069,12 +5671,13 @@ else Autoconf TIOCGETP _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then : + $EGREP "$ac_pattern" >/dev/null 2>&1 +then : ac_cv_prog_gcc_traditional=yes -else +else $as_nop ac_cv_prog_gcc_traditional=no fi -rm -f conftest* +rm -rf conftest* if test $ac_cv_prog_gcc_traditional = no; then @@ -5084,15 +5687,16 @@ rm -f conftest* Autoconf TCGETA _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then : + $EGREP "$ac_pattern" >/dev/null 2>&1 +then : ac_cv_prog_gcc_traditional=yes fi -rm -f conftest* +rm -rf conftest* fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5 -$as_echo "$ac_cv_prog_gcc_traditional" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5 +printf "%s\n" "$ac_cv_prog_gcc_traditional" >&6; } if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" fi @@ -5110,22 +5714,25 @@ then if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes else -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 -$as_echo_n "checking which library has the termcap functions... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 +printf %s "checking which library has the termcap functions... " >&6; } _bash_needmsg= fi -if ${bash_cv_termcap_lib+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${bash_cv_termcap_lib+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_fn_c_check_func "$LINENO" "tgetent" "ac_cv_func_tgetent" -if test "x$ac_cv_func_tgetent" = xyes; then : +if test "x$ac_cv_func_tgetent" = xyes +then : bash_cv_termcap_lib=libc -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 -$as_echo_n "checking for tgetent in -ltermcap... " >&6; } -if ${ac_cv_lib_termcap_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 +printf %s "checking for tgetent in -ltermcap... " >&6; } +if test ${ac_cv_lib_termcap_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ltermcap $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -5134,37 +5741,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_termcap_tgetent=yes -else +else $as_nop ac_cv_lib_termcap_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 -$as_echo "$ac_cv_lib_termcap_tgetent" >&6; } -if test "x$ac_cv_lib_termcap_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_termcap_tgetent" >&6; } +if test "x$ac_cv_lib_termcap_tgetent" = xyes +then : bash_cv_termcap_lib=libtermcap -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5 -$as_echo_n "checking for tgetent in -ltinfo... " >&6; } -if ${ac_cv_lib_tinfo_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5 +printf %s "checking for tgetent in -ltinfo... " >&6; } +if test ${ac_cv_lib_tinfo_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ltinfo $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -5173,37 +5780,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_tinfo_tgetent=yes -else +else $as_nop ac_cv_lib_tinfo_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5 -$as_echo "$ac_cv_lib_tinfo_tgetent" >&6; } -if test "x$ac_cv_lib_tinfo_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_tinfo_tgetent" >&6; } +if test "x$ac_cv_lib_tinfo_tgetent" = xyes +then : bash_cv_termcap_lib=libtinfo -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5 -$as_echo_n "checking for tgetent in -lcurses... " >&6; } -if ${ac_cv_lib_curses_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5 +printf %s "checking for tgetent in -lcurses... " >&6; } +if test ${ac_cv_lib_curses_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lcurses $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -5212,37 +5819,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_curses_tgetent=yes -else +else $as_nop ac_cv_lib_curses_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5 -$as_echo "$ac_cv_lib_curses_tgetent" >&6; } -if test "x$ac_cv_lib_curses_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_curses_tgetent" >&6; } +if test "x$ac_cv_lib_curses_tgetent" = xyes +then : bash_cv_termcap_lib=libcurses -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 -$as_echo_n "checking for tgetent in -lncurses... " >&6; } -if ${ac_cv_lib_ncurses_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 +printf %s "checking for tgetent in -lncurses... " >&6; } +if test ${ac_cv_lib_ncurses_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lncurses $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -5251,37 +5858,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_ncurses_tgetent=yes -else +else $as_nop ac_cv_lib_ncurses_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 -$as_echo "$ac_cv_lib_ncurses_tgetent" >&6; } -if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_ncurses_tgetent" >&6; } +if test "x$ac_cv_lib_ncurses_tgetent" = xyes +then : bash_cv_termcap_lib=libncurses -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5 -$as_echo_n "checking for tgetent in -lncursesw... " >&6; } -if ${ac_cv_lib_ncursesw_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5 +printf %s "checking for tgetent in -lncursesw... " >&6; } +if test ${ac_cv_lib_ncursesw_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lncursesw $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -5290,32 +5897,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_ncursesw_tgetent=yes -else +else $as_nop ac_cv_lib_ncursesw_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5 -$as_echo "$ac_cv_lib_ncursesw_tgetent" >&6; } -if test "x$ac_cv_lib_ncursesw_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_ncursesw_tgetent" >&6; } +if test "x$ac_cv_lib_ncursesw_tgetent" = xyes +then : bash_cv_termcap_lib=libncursesw -else +else $as_nop bash_cv_termcap_lib=gnutermcap fi @@ -5332,11 +5938,11 @@ fi fi if test "X$_bash_needmsg" = "Xyes"; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 -$as_echo_n "checking which library has the termcap functions... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 +printf %s "checking which library has the termcap functions... " >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5 -$as_echo "using $bash_cv_termcap_lib" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5 +printf "%s\n" "using $bash_cv_termcap_lib" >&6; } if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then LDFLAGS="$LDFLAGS -L./lib/termcap" TERMCAP_LIB="./lib/termcap/libtermcap.a" @@ -5354,15 +5960,16 @@ elif test $bash_cv_termcap_lib = libc; then TERMCAP_LIB= TERMCAP_DEP= else -TERMCAP_LIB=-lcurses +# we assume ncurses is installed somewhere the linker can find it +TERMCAP_LIB=-lncurses TERMCAP_DEP= fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking version of installed readline library" >&5 -$as_echo_n "checking version of installed readline library... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking version of installed readline library" >&5 +printf %s "checking version of installed readline library... " >&6; } # What a pain in the ass this is. @@ -5386,12 +5993,15 @@ LIBS="$LIBS -lreadline ${TERMCAP_LIB}" CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" -if ${ac_cv_rl_version+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : +if test ${ac_cv_rl_version+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : ac_cv_rl_version='8.0' -else + +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5417,9 +6027,10 @@ main() } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_rl_version=`cat conftest.rlv` -else +else $as_nop ac_cv_rl_version='0.0' fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -5463,31 +6074,25 @@ RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}" # Readline versions greater than 4.2 have these defines in readline.h if test $ac_cv_rl_version = '0.0' ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not test version of installed readline library." >&5 -$as_echo "$as_me: WARNING: Could not test version of installed readline library." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Could not test version of installed readline library." >&5 +printf "%s\n" "$as_me: WARNING: Could not test version of installed readline library." >&2;} elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then # set these for use by the caller RL_PREFIX=$ac_cv_rl_prefix RL_LIBDIR=$ac_cv_rl_libdir RL_INCLUDEDIR=$ac_cv_rl_includedir - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rl_version" >&5 -$as_echo "$ac_cv_rl_version" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rl_version" >&5 +printf "%s\n" "$ac_cv_rl_version" >&6; } else -cat >>confdefs.h <<_ACEOF -#define RL_READLINE_VERSION $RL_VERSION -_ACEOF +printf "%s\n" "#define RL_READLINE_VERSION $RL_VERSION" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define RL_VERSION_MAJOR $RL_MAJOR -_ACEOF +printf "%s\n" "#define RL_VERSION_MAJOR $RL_MAJOR" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define RL_VERSION_MINOR $RL_MINOR -_ACEOF +printf "%s\n" "#define RL_VERSION_MINOR $RL_MINOR" >>confdefs.h @@ -5499,8 +6104,8 @@ RL_PREFIX=$ac_cv_rl_prefix RL_LIBDIR=$ac_cv_rl_libdir RL_INCLUDEDIR=$ac_cv_rl_includedir -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rl_version" >&5 -$as_echo "$ac_cv_rl_version" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rl_version" >&5 +printf "%s\n" "$ac_cv_rl_version" >&6; } fi @@ -5508,17 +6113,17 @@ fi case "$ac_cv_rl_version" in 8*|9*) ;; *) opt_with_installed_readline=no - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: installed readline library is too old to be linked with bash" >&5 -$as_echo "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using private bash version" >&5 -$as_echo "$as_me: WARNING: using private bash version" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: installed readline library is too old to be linked with bash" >&5 +printf "%s\n" "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using private bash version" >&5 +printf "%s\n" "$as_me: WARNING: using private bash version" >&2;} ;; esac fi TILDE_LIB=-ltilde if test $opt_readline = yes; then - $as_echo "#define READLINE 1" >>confdefs.h + printf "%s\n" "#define READLINE 1" >>confdefs.h if test "$opt_with_installed_readline" != "no" ; then case "$opt_with_installed_readline" in @@ -5554,11 +6159,11 @@ else fi if test $opt_history = yes || test $opt_bang_history = yes; then if test $opt_history = yes; then - $as_echo "#define HISTORY 1" >>confdefs.h + printf "%s\n" "#define HISTORY 1" >>confdefs.h fi if test $opt_bang_history = yes; then - $as_echo "#define BANG_HISTORY 1" >>confdefs.h + printf "%s\n" "#define BANG_HISTORY 1" >>confdefs.h fi if test "$opt_with_installed_readline" != "no"; then @@ -5600,7 +6205,8 @@ fi -# Find a good install program. We prefer a C program (faster), + + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install @@ -5614,20 +6220,25 @@ fi # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; @@ -5637,13 +6248,13 @@ case $as_dir/ in #(( # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else @@ -5651,12 +6262,12 @@ case $as_dir/ in #(( echo one > conftest.one echo two > conftest.two mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi @@ -5672,7 +6283,7 @@ IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi - if test "${ac_cv_path_install+set}" = set; then + if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a @@ -5682,8 +6293,8 @@ fi INSTALL=$ac_install_sh fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -5696,11 +6307,12 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else @@ -5708,11 +6320,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5723,11 +6339,11 @@ fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5736,11 +6352,12 @@ if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else @@ -5748,11 +6365,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5763,11 +6384,11 @@ fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_AR" = x; then @@ -5775,8 +6396,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR @@ -5789,11 +6410,12 @@ test -n "$ARFLAGS" || ARFLAGS="cr" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else @@ -5801,11 +6423,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5816,11 +6442,11 @@ fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5829,11 +6455,12 @@ if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else @@ -5841,11 +6468,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5856,11 +6487,11 @@ fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then @@ -5868,8 +6499,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -5882,11 +6513,12 @@ for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_YACC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_YACC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else @@ -5894,11 +6526,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5909,11 +6545,11 @@ fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 -$as_echo "$YACC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 +printf "%s\n" "$YACC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5921,13 +6557,14 @@ fi done test -n "$YACC" || YACC="yacc" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @@ -5943,20 +6580,20 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } SET_MAKE= else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi case "$ac_cv_prog_YACC" in *bison*) ;; -*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: bison not available; needed to process parse.y" >&5 -$as_echo "$as_me: WARNING: bison not available; needed to process parse.y" >&2;} ;; +*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: bison not available; needed to process parse.y" >&5 +printf "%s\n" "$as_me: WARNING: bison not available; needed to process parse.y" >&2;} ;; esac case "$host_os" in @@ -6022,6 +6659,11 @@ fi + + + + + # codeset.m4 serial 5 (gettext-0.18.2) @@ -6326,19 +6968,17 @@ fi -$as_echo "#define _GNU_SOURCE 1" >>confdefs.h - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +printf %s "checking for an ANSI C-conforming const... " >&6; } +if test ${ac_cv_c_const+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __cplusplus @@ -6351,7 +6991,7 @@ main () /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. + /* IBM XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ @@ -6379,7 +7019,7 @@ main () iptr p = 0; ++p; } - { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; @@ -6395,47 +7035,50 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_const=yes -else +else $as_nop ac_cv_c_const=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf "%s\n" "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then -$as_echo "#define const /**/" >>confdefs.h +printf "%s\n" "#define const /**/" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -$as_echo_n "checking for inline... " >&6; } -if ${ac_cv_c_inline+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +printf %s "checking for inline... " >&6; } +if test ${ac_cv_c_inline+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; -static $ac_kw foo_t static_foo () {return 0; } -$ac_kw foo_t foo () {return 0; } +static $ac_kw foo_t static_foo (void) {return 0; } +$ac_kw foo_t foo (void) {return 0; } #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_inline=$ac_kw fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +printf "%s\n" "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; @@ -6452,11 +7095,12 @@ _ACEOF ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -6467,7 +7111,8 @@ else typedef int dummy; _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. @@ -6491,7 +7136,7 @@ if ac_fn_c_try_compile "$LINENO"; then : fi done fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -6500,7 +7145,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #include int -main () +main (void) { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ @@ -6512,7 +7157,8 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6520,7 +7166,7 @@ if ac_fn_c_try_compile "$LINENO"; then : #include int -main () +main (void) { #if BYTE_ORDER != BIG_ENDIAN not big endian @@ -6530,14 +7176,15 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_bigendian=yes -else +else $as_nop ac_cv_c_bigendian=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). @@ -6546,7 +7193,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #include int -main () +main (void) { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros @@ -6556,14 +7203,15 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { #ifndef _BIG_ENDIAN not big endian @@ -6573,31 +7221,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_bigendian=yes -else +else $as_nop ac_cv_c_bigendian=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes +then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -short int ascii_mm[] = +unsigned short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = + unsigned short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } - short int ebcdic_ii[] = + unsigned short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = + unsigned short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; @@ -6605,14 +7255,15 @@ short int ascii_mm[] = extern int foo; int -main () +main (void) { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi @@ -6625,13 +7276,13 @@ if ac_fn_c_try_compile "$LINENO"; then : fi fi fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { /* Are we little or big endian? From Harbison&Steele. */ @@ -6647,9 +7298,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_c_bigendian=no -else +else $as_nop ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -6658,17 +7310,17 @@ fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf "%s\n" "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) - $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h + printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) -$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h +printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) @@ -6676,11 +7328,12 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for preprocessor stringizing operator" >&5 -$as_echo_n "checking for preprocessor stringizing operator... " >&6; } -if ${ac_cv_c_stringize+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for preprocessor stringizing operator" >&5 +printf %s "checking for preprocessor stringizing operator... " >&6; } +if test ${ac_cv_c_stringize+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define x(y) #y @@ -6688,53 +7341,43 @@ else char *s = x(teststring); _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "#teststring" >/dev/null 2>&1; then : + $EGREP "#teststring" >/dev/null 2>&1 +then : ac_cv_c_stringize=no -else +else $as_nop ac_cv_c_stringize=yes fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stringize" >&5 -$as_echo "$ac_cv_c_stringize" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stringize" >&5 +printf "%s\n" "$ac_cv_c_stringize" >&6; } if test $ac_cv_c_stringize = yes; then -$as_echo "#define HAVE_STRINGIZE 1" >>confdefs.h +printf "%s\n" "#define HAVE_STRINGIZE 1" >>confdefs.h fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double with more range or precision than double" >&5 -$as_echo_n "checking for long double with more range or precision than double... " >&6; } -if ${ac_cv_type_long_double_wider+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long double" >&5 +printf %s "checking for long double... " >&6; } +if test ${ac_cv_type_long_double+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$GCC" = yes; then + ac_cv_type_long_double=yes + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include - long double const a[] = - { - 0.0L, DBL_MIN, DBL_MAX, DBL_EPSILON, - LDBL_MIN, LDBL_MAX, LDBL_EPSILON - }; - long double - f (long double x) - { - return ((x + (unsigned long int) 10) * (-1 / x) + a[0] - + (x ? f (x) : 'c')); - } - +/* The Stardent Vistra knows sizeof (long double), but does + not support it. */ + long double foo = 0.0L; int -main () +main (void) { -static int test_array [1 - 2 * !((0 < ((DBL_MAX_EXP < LDBL_MAX_EXP) - + (DBL_MANT_DIG < LDBL_MANT_DIG) - - (LDBL_MAX_EXP < DBL_MAX_EXP) - - (LDBL_MANT_DIG < DBL_MANT_DIG))) - && (int) LDBL_EPSILON == 0 - )]; +static int test_array [1 - 2 * !(/* On Ultrix 4.3 cc, long double is 4 and double is 8. */ + sizeof (double) <= sizeof (long double))]; test_array [0] = 0; return test_array [0]; @@ -6742,54 +7385,43 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_type_long_double_wider=yes -else - ac_cv_type_long_double_wider=no +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_type_long_double=yes +else $as_nop + ac_cv_type_long_double=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double_wider" >&5 -$as_echo "$ac_cv_type_long_double_wider" >&6; } - if test $ac_cv_type_long_double_wider = yes; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double" >&5 +printf "%s\n" "$ac_cv_type_long_double" >&6; } + if test $ac_cv_type_long_double = yes; then -$as_echo "#define HAVE_LONG_DOUBLE_WIDER 1" >>confdefs.h +printf "%s\n" "#define HAVE_LONG_DOUBLE 1" >>confdefs.h fi - ac_cv_c_long_double=$ac_cv_type_long_double_wider - if test $ac_cv_c_long_double = yes; then - -$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h - - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for function prototypes" >&5 -$as_echo_n "checking for function prototypes... " >&6; } -if test "$ac_cv_prog_cc_c89" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +if test "$ac_prog_cc_stdc" != no; then -$as_echo "#define PROTOTYPES 1" >>confdefs.h +printf "%s\n" "#define PROTOTYPES 1" >>confdefs.h -$as_echo "#define __PROTOTYPES 1" >>confdefs.h +printf "%s\n" "#define __PROTOTYPES 1" >>confdefs.h -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5 -$as_echo_n "checking whether char is unsigned... " >&6; } -if ${ac_cv_c_char_unsigned+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5 +printf %s "checking whether char is unsigned... " >&6; } +if test ${ac_cv_c_char_unsigned+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { static int test_array [1 - 2 * !(((char) -1) < 0)]; test_array [0] = 0; @@ -6799,30 +7431,32 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_char_unsigned=no -else +else $as_nop ac_cv_c_char_unsigned=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5 -$as_echo "$ac_cv_c_char_unsigned" >&6; } -if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then - $as_echo "#define __CHAR_UNSIGNED__ 1" >>confdefs.h +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5 +printf "%s\n" "$ac_cv_c_char_unsigned" >&6; } +if test $ac_cv_c_char_unsigned = yes; then + printf "%s\n" "#define __CHAR_UNSIGNED__ 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 -$as_echo_n "checking for working volatile... " >&6; } -if ${ac_cv_c_volatile+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 +printf %s "checking for working volatile... " >&6; } +if test ${ac_cv_c_volatile+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { volatile int x; @@ -6832,87 +7466,98 @@ return !x && !y; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_volatile=yes -else +else $as_nop ac_cv_c_volatile=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 -$as_echo "$ac_cv_c_volatile" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 +printf "%s\n" "$ac_cv_c_volatile" >&6; } if test $ac_cv_c_volatile = no; then -$as_echo "#define volatile /**/" >>confdefs.h +printf "%s\n" "#define volatile /**/" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 -$as_echo_n "checking for C/C++ restrict keyword... " >&6; } -if ${ac_cv_c_restrict+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 +printf %s "checking for C/C++ restrict keyword... " >&6; } +if test ${ac_cv_c_restrict+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_c_restrict=no - # The order here caters to the fact that C++ does not require restrict. - for ac_kw in __restrict __restrict__ _Restrict restrict; do + # Put '__restrict__' first, to avoid problems with glibc and non-GCC; see: + # https://lists.gnu.org/archive/html/bug-autoconf/2016-02/msg00006.html + # Put 'restrict' last, because C++ lacks it. + for ac_kw in __restrict__ __restrict _Restrict restrict; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -typedef int * int_ptr; - int foo (int_ptr $ac_kw ip) { - return ip[0]; - } +typedef int *int_ptr; + int foo (int_ptr $ac_kw ip) { return ip[0]; } + int bar (int [$ac_kw]); /* Catch GCC bug 14050. */ + int bar (int ip[$ac_kw]) { return ip[0]; } + int -main () +main (void) { int s[1]; - int * $ac_kw t = s; - t[0] = 0; - return foo(t) + int *$ac_kw t = s; + t[0] = 0; + return foo (t) + bar (t); + ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_restrict=$ac_kw fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test "$ac_cv_c_restrict" != no && break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 -$as_echo "$ac_cv_c_restrict" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 +printf "%s\n" "$ac_cv_c_restrict" >&6; } case $ac_cv_c_restrict in restrict) ;; - no) $as_echo "#define restrict /**/" >>confdefs.h + no) printf "%s\n" "#define restrict /**/" >>confdefs.h ;; - *) cat >>confdefs.h <<_ACEOF -#define restrict $ac_cv_c_restrict -_ACEOF + *) printf "%s\n" "#define restrict $ac_cv_c_restrict" >>confdefs.h ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done @@ -6923,7 +7568,7 @@ IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then + if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a @@ -6933,14 +7578,15 @@ fi MKDIR_P="$ac_install_sh -d" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" @@ -6954,10 +7600,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED @@ -6966,13 +7617,13 @@ case `"$ac_path_SED" --version 2>&1` in ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" + printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -7000,23 +7651,24 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 -$as_echo_n "checking whether NLS is requested... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. -if test "${enable_nls+set}" = set; then : +if test ${enable_nls+y} +then : enableval=$enable_nls; USE_NLS=$enableval -else +else $as_nop USE_NLS=yes fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } @@ -7055,11 +7707,12 @@ rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. @@ -7087,20 +7740,21 @@ esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 -$as_echo "$MSGFMT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf "%s\n" "$MSGFMT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GMSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. @@ -7110,11 +7764,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7127,11 +7785,11 @@ esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 -$as_echo "$GMSGFMT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf "%s\n" "$GMSGFMT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7177,11 +7835,12 @@ rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_XGETTEXT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else $as_nop case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. @@ -7209,11 +7868,11 @@ esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 -$as_echo "$XGETTEXT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf "%s\n" "$XGETTEXT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f messages.po @@ -7254,11 +7913,12 @@ rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGMERGE+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else $as_nop case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. @@ -7285,11 +7945,11 @@ esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 -$as_echo "$MSGMERGE" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf "%s\n" "$MSGMERGE" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7300,11 +7960,12 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2 or newer" >&5 -$as_echo_n "checking whether we are using the GNU C Library 2 or newer... " >&6; } -if ${ac_cv_gnu_library_2+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2 or newer" >&5 +printf %s "checking whether we are using the GNU C Library 2 or newer... " >&6; } +if test ${ac_cv_gnu_library_2+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7317,18 +7978,19 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Lucky GNU user" >/dev/null 2>&1; then : + $EGREP "Lucky GNU user" >/dev/null 2>&1 +then : ac_cv_gnu_library_2=yes -else +else $as_nop ac_cv_gnu_library_2=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2" >&5 -$as_echo "$ac_cv_gnu_library_2" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2" >&5 +printf "%s\n" "$ac_cv_gnu_library_2" >&6; } GLIBC2="$ac_cv_gnu_library_2" @@ -7338,40 +8000,43 @@ $as_echo "$ac_cv_gnu_library_2" >&6; } CFLAG_VISIBILITY= HAVE_VISIBILITY=0 if test -n "$GCC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5 -$as_echo_n "checking whether the -Werror option is usable... " >&6; } -if ${gl_cv_cc_vis_werror+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5 +printf %s "checking whether the -Werror option is usable... " >&6; } +if test ${gl_cv_cc_vis_werror+y} +then : + printf %s "(cached) " >&6 +else $as_nop gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gl_cv_cc_vis_werror=yes -else +else $as_nop gl_cv_cc_vis_werror=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5 -$as_echo "$gl_cv_cc_vis_werror" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 -$as_echo_n "checking for simple visibility declarations... " >&6; } -if ${gl_cv_cc_visibility+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5 +printf "%s\n" "$gl_cv_cc_vis_werror" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 +printf %s "checking for simple visibility declarations... " >&6; } +if test ${gl_cv_cc_visibility+y} +then : + printf %s "(cached) " >&6 +else $as_nop gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fvisibility=hidden" if test $gl_cv_cc_vis_werror = yes; then @@ -7386,24 +8051,25 @@ extern __attribute__((__visibility__("hidden"))) int hiddenvar; void dummyfunc (void) {} int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gl_cv_cc_visibility=yes -else +else $as_nop gl_cv_cc_visibility=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5 -$as_echo "$gl_cv_cc_visibility" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5 +printf "%s\n" "$gl_cv_cc_visibility" >&6; } if test $gl_cv_cc_visibility = yes; then CFLAG_VISIBILITY="-fvisibility=hidden" HAVE_VISIBILITY=1 @@ -7412,69 +8078,67 @@ $as_echo "$gl_cv_cc_visibility" >&6; } -cat >>confdefs.h <<_ACEOF -#define HAVE_VISIBILITY $HAVE_VISIBILITY -_ACEOF +printf "%s\n" "#define HAVE_VISIBILITY $HAVE_VISIBILITY" >>confdefs.h ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : +if test "x$ac_cv_type_size_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF +printf "%s\n" "#define size_t unsigned int" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5 -$as_echo_n "checking for stdint.h... " >&6; } -if ${gl_cv_header_stdint_h+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5 +printf %s "checking for stdint.h... " >&6; } +if test ${gl_cv_header_stdint_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int -main () +main (void) { uintmax_t i = (uintmax_t) -1; return !i; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gl_cv_header_stdint_h=yes -else +else $as_nop gl_cv_header_stdint_h=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_h" >&5 -$as_echo "$gl_cv_header_stdint_h" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_h" >&5 +printf "%s\n" "$gl_cv_header_stdint_h" >&6; } if test $gl_cv_header_stdint_h = yes; then -cat >>confdefs.h <<_ACEOF -#define HAVE_STDINT_H_WITH_UINTMAX 1 -_ACEOF +printf "%s\n" "#define HAVE_STDINT_H_WITH_UINTMAX 1" >>confdefs.h fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 -$as_echo_n "checking for working alloca.h... " >&6; } -if ${ac_cv_working_alloca_h+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { char *p = (char *) alloca (2 * sizeof (int)); if (p) return 0; @@ -7482,52 +8146,52 @@ char *p = (char *) alloca (2 * sizeof (int)); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_working_alloca_h=yes -else +else $as_nop ac_cv_working_alloca_h=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 -$as_echo "$ac_cv_working_alloca_h" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf "%s\n" "$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then -$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h +printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 -$as_echo_n "checking for alloca... " >&6; } -if ${ac_cv_func_alloca_works+:} false; then : - $as_echo_n "(cached) " >&6 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test $ac_cv_working_alloca_h = yes; then + ac_cv_func_alloca_works=yes else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __GNUC__ -# define alloca __builtin_alloca -#else -# ifdef _MSC_VER +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER # include # define alloca _alloca # else -# ifdef HAVE_ALLOCA_H -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -void *alloca (size_t); -# endif -# endif +# ifdef __cplusplus +extern "C" # endif +void *alloca (size_t); # endif #endif int -main () +main (void) { char *p = (char *) alloca (1); if (p) return 0; @@ -7535,20 +8199,22 @@ char *p = (char *) alloca (1); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_func_alloca_works=yes -else +else $as_nop ac_cv_func_alloca_works=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 -$as_echo "$ac_cv_func_alloca_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf "%s\n" "$ac_cv_func_alloca_works" >&6; } +fi if test $ac_cv_func_alloca_works = yes; then -$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h +printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h else # The SVR3 libPW and SVR4 libucb both contain incompatible functions @@ -7558,58 +8224,19 @@ else ALLOCA=\${LIBOBJDIR}alloca.$ac_objext -$as_echo "#define C_ALLOCA 1" >>confdefs.h - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 -$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } -if ${ac_cv_os_cray+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#if defined CRAY && ! defined CRAY2 -webecray -#else -wenotbecray -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "webecray" >/dev/null 2>&1; then : - ac_cv_os_cray=yes -else - ac_cv_os_cray=no -fi -rm -f conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 -$as_echo "$ac_cv_os_cray" >&6; } -if test $ac_cv_os_cray = yes; then - for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - -cat >>confdefs.h <<_ACEOF -#define CRAY_STACKSEG_END $ac_func -_ACEOF - - break -fi +printf "%s\n" "#define C_ALLOCA 1" >>confdefs.h - done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 -$as_echo_n "checking stack direction for C alloca... " >&6; } -if ${ac_cv_c_stack_direction+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : ac_cv_c_stack_direction=0 -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default @@ -7630,9 +8257,10 @@ main (int argc, char **argv) return find_stack_direction (0, argc + !argv + 20) < 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_c_stack_direction=1 -else +else $as_nop ac_cv_c_stack_direction=-1 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -7640,58 +8268,44 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 -$as_echo "$ac_cv_c_stack_direction" >&6; } -cat >>confdefs.h <<_ACEOF -#define STACK_DIRECTION $ac_cv_c_stack_direction -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf "%s\n" "$ac_cv_c_stack_direction" >&6; } +printf "%s\n" "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h fi - - - for ac_header in $ac_header_list -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi done - - - - - - -for ac_func in getpagesize -do : - ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" -if test "x$ac_cv_func_getpagesize" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETPAGESIZE 1 -_ACEOF - -fi -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 -$as_echo_n "checking for working mmap... " >&6; } -if ${ac_cv_func_mmap_fixed_mapped+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_mmap_fixed_mapped=no -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +printf %s "checking for working mmap... " >&6; } +if test ${ac_cv_func_mmap_fixed_mapped+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on platforms where we know the result. + linux*) ac_cv_func_mmap_fixed_mapped=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_mmap_fixed_mapped=no ;; + esac +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default @@ -7723,10 +8337,6 @@ $ac_includes_default #include #include -#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H -char *malloc (); -#endif - /* This mess was copied from the GNU getpagesize.h. */ #ifndef HAVE_GETPAGESIZE # ifdef _SC_PAGESIZE @@ -7760,7 +8370,7 @@ char *malloc (); #endif /* no HAVE_GETPAGESIZE */ int -main () +main (void) { char *data, *data2, *data3; const char *cdata2; @@ -7828,12 +8438,15 @@ main () if (*(data + i) != *(data3 + i)) return 14; close (fd); + free (data); + free (data3); return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_func_mmap_fixed_mapped=yes -else +else $as_nop ac_cv_func_mmap_fixed_mapped=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -7841,22 +8454,23 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 -$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 +printf "%s\n" "$ac_cv_func_mmap_fixed_mapped" >&6; } if test $ac_cv_func_mmap_fixed_mapped = yes; then -$as_echo "#define HAVE_MMAP 1" >>confdefs.h +printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h fi rm -f conftest.mmap conftest.txt - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether integer division by zero raises SIGFPE" >&5 -$as_echo_n "checking whether integer division by zero raises SIGFPE... " >&6; } -if ${gt_cv_int_divbyzero_sigfpe+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether integer division by zero raises SIGFPE" >&5 +printf %s "checking whether integer division by zero raises SIGFPE... " >&6; } +if test ${gt_cv_int_divbyzero_sigfpe+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_cv_int_divbyzero_sigfpe= case "$host_os" in @@ -7871,7 +8485,8 @@ else ;; esac if test -z "$gt_cv_int_divbyzero_sigfpe"; then - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes +then : # Guess based on the CPU. case "$host_cpu" in @@ -7881,7 +8496,7 @@ else gt_cv_int_divbyzero_sigfpe="guessing no";; esac -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7918,9 +8533,10 @@ int main () } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : gt_cv_int_divbyzero_sigfpe=yes -else +else $as_nop gt_cv_int_divbyzero_sigfpe=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -7930,24 +8546,23 @@ fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_int_divbyzero_sigfpe" >&5 -$as_echo "$gt_cv_int_divbyzero_sigfpe" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_int_divbyzero_sigfpe" >&5 +printf "%s\n" "$gt_cv_int_divbyzero_sigfpe" >&6; } case "$gt_cv_int_divbyzero_sigfpe" in *yes) value=1;; *) value=0;; esac -cat >>confdefs.h <<_ACEOF -#define INTDIV0_RAISES_SIGFPE $value -_ACEOF +printf "%s\n" "#define INTDIV0_RAISES_SIGFPE $value" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5 -$as_echo_n "checking for inttypes.h... " >&6; } -if ${gl_cv_header_inttypes_h+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5 +printf %s "checking for inttypes.h... " >&6; } +if test ${gl_cv_header_inttypes_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7955,39 +8570,41 @@ else #include int -main () +main (void) { uintmax_t i = (uintmax_t) -1; return !i; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gl_cv_header_inttypes_h=yes -else +else $as_nop gl_cv_header_inttypes_h=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_inttypes_h" >&5 -$as_echo "$gl_cv_header_inttypes_h" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_inttypes_h" >&5 +printf "%s\n" "$gl_cv_header_inttypes_h" >&6; } if test $gl_cv_header_inttypes_h = yes; then -cat >>confdefs.h <<_ACEOF -#define HAVE_INTTYPES_H_WITH_UINTMAX 1 -_ACEOF +printf "%s\n" "#define HAVE_INTTYPES_H_WITH_UINTMAX 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 -$as_echo_n "checking for unsigned long long int... " >&6; } -if ${ac_cv_type_unsigned_long_long_int+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_type_unsigned_long_long_int=yes - if test "x${ac_cv_prog_cc_c99-no}" = xno; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + case $ac_prog_cc_stdc in + no | c89) ;; + *) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* For now, do not test the preprocessor; as of 2007 there are too many @@ -8005,7 +8622,7 @@ else ? 1 : -1)]; int i = 63; int -main () +main (void) { /* Test availability of runtime routines for shift and division. */ long long int llmax = 9223372036854775807ll; @@ -8019,20 +8636,21 @@ main () } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : -else +else $as_nop ac_cv_type_unsigned_long_long_int=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext;; + esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 -$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf "%s\n" "$ac_cv_type_unsigned_long_long_int" >&6; } if test $ac_cv_type_unsigned_long_long_int = yes; then -$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h +printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h fi @@ -8045,35 +8663,29 @@ $as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h && ac_type='unsigned long long' \ || ac_type='unsigned long' -cat >>confdefs.h <<_ACEOF -#define uintmax_t $ac_type -_ACEOF +printf "%s\n" "#define uintmax_t $ac_type" >>confdefs.h else -$as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_UINTMAX_T 1" >>confdefs.h fi - for ac_header in inttypes.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" -if test "x$ac_cv_header_inttypes_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_INTTYPES_H 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" +if test "x$ac_cv_header_inttypes_h" = xyes +then : + printf "%s\n" "#define HAVE_INTTYPES_H 1" >>confdefs.h fi -done - if test $ac_cv_header_inttypes_h = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5 -$as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; } -if ${gt_cv_inttypes_pri_broken+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5 +printf %s "checking whether the inttypes.h PRIxNN macros are broken... " >&6; } +if test ${gt_cv_inttypes_pri_broken+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8084,29 +8696,28 @@ char *p = PRId32; #endif int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gt_cv_inttypes_pri_broken=no -else +else $as_nop gt_cv_inttypes_pri_broken=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_inttypes_pri_broken" >&5 -$as_echo "$gt_cv_inttypes_pri_broken" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_inttypes_pri_broken" >&5 +printf "%s\n" "$gt_cv_inttypes_pri_broken" >&6; } fi if test "$gt_cv_inttypes_pri_broken" = yes; then -cat >>confdefs.h <<_ACEOF -#define PRI_MACROS_BROKEN 1 -_ACEOF +printf "%s\n" "#define PRI_MACROS_BROKEN 1" >>confdefs.h PRI_MACROS_BROKEN=1 else @@ -8120,9 +8731,10 @@ _ACEOF # Check whether --enable-threads was given. -if test "${enable_threads+set}" = set; then : +if test ${enable_threads+y} +then : enableval=$enable_threads; gl_use_threads=$enableval -else +else $as_nop if test -n "$gl_use_threads_default"; then gl_use_threads="$gl_use_threads_default" else @@ -8157,7 +8769,7 @@ fi # need special flags to disable these optimizations. For example, the # definition of 'errno' in . case "$host_os" in - aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; + aix* | freebsd* | midnightbsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; esac fi @@ -8184,9 +8796,10 @@ fi # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : +if test ${with_gnu_ld+y} +then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else +else $as_nop with_gnu_ld=no fi @@ -8204,25 +8817,26 @@ if test "${PATH_SEPARATOR+set}" != set; then fi if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld" >&5 -$as_echo_n "checking for ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld" >&5 +printf %s "checking for ld... " >&6; } elif test "$GCC" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } fi if test -n "$LD"; then # Let the user override the test with a path. : else - if ${acl_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else $as_nop acl_cv_path_LD= # Final result of this test ac_prog=ld # Program to search in $PATH @@ -8291,7 +8905,8 @@ else #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : # The compiler produces 64-bit code. Add option '-b64' so that the # linker groks 64-bit object files. case "$acl_cv_path_LD " in @@ -8300,7 +8915,7 @@ if ac_fn_c_try_compile "$LINENO"; then : esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; sparc64-*-netbsd*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -8312,9 +8927,10 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop # The compiler produces 32-bit code. Add option '-m elf32_sparc' # so that the linker groks 32-bit object files. case "$acl_cv_path_LD " in @@ -8323,7 +8939,7 @@ else esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac @@ -8332,18 +8948,19 @@ fi LD="$acl_cv_path_LD" fi if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +printf "%s\n" "$LD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${acl_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &1 &5 -$as_echo "$acl_cv_prog_gnu_ld" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5 +printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 -$as_echo_n "checking for shared library run path origin... " >&6; } -if ${acl_cv_rpath+:} false; then : - $as_echo_n "(cached) " >&6 -else + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh @@ -8374,8 +8994,8 @@ else acl_cv_rpath=done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 -$as_echo "$acl_cv_rpath" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf "%s\n" "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" @@ -8386,20 +9006,22 @@ $as_echo "$acl_cv_rpath" >&6; } acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. -if test "${enable_rpath+set}" = set; then : +if test ${enable_rpath+y} +then : enableval=$enable_rpath; : -else +else $as_nop enable_rpath=yes fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5 -$as_echo_n "checking 32-bit host C ABI... " >&6; } -if ${gl_cv_host_cpu_c_abi_32bit+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5 +printf %s "checking 32-bit host C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi_32bit+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$gl_cv_host_cpu_c_abi"; then case "$gl_cv_host_cpu_c_abi" in i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc) @@ -8433,12 +9055,13 @@ else #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gl_cv_host_cpu_c_abi_32bit=no -else +else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; arm* | aarch64 ) @@ -8457,12 +9080,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gl_cv_host_cpu_c_abi_32bit=no -else +else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) @@ -8477,12 +9101,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gl_cv_host_cpu_c_abi_32bit=no -else +else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; ia64* ) @@ -8497,12 +9122,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gl_cv_host_cpu_c_abi_32bit=yes -else +else $as_nop gl_cv_host_cpu_c_abi_32bit=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; mips* ) @@ -8517,12 +9143,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gl_cv_host_cpu_c_abi_32bit=no -else +else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; powerpc* ) @@ -8541,12 +9168,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gl_cv_host_cpu_c_abi_32bit=no -else +else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; rs6000 ) @@ -8565,12 +9193,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gl_cv_host_cpu_c_abi_32bit=no -else +else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; s390* ) @@ -8585,12 +9214,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gl_cv_host_cpu_c_abi_32bit=no -else +else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; sparc | sparc64 ) @@ -8605,12 +9235,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gl_cv_host_cpu_c_abi_32bit=no -else +else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; *) @@ -8620,8 +9251,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5 -$as_echo "$gl_cv_host_cpu_c_abi_32bit" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5 +printf "%s\n" "$gl_cv_host_cpu_c_abi_32bit" >&6; } HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit" @@ -8631,11 +9262,12 @@ $as_echo "$gl_cv_host_cpu_c_abi_32bit" >&6; } case "$host_os" in solaris*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 -$as_echo_n "checking for 64-bit host... " >&6; } -if ${gl_cv_solaris_64bit+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +printf %s "checking for 64-bit host... " >&6; } +if test ${gl_cv_solaris_64bit+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _LP64 @@ -8645,23 +9277,25 @@ else #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gl_cv_solaris_64bit=yes -else +else $as_nop gl_cv_solaris_64bit=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 -$as_echo "$gl_cv_solaris_64bit" >&6; };; +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +printf "%s\n" "$gl_cv_solaris_64bit" >&6; };; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5 -$as_echo_n "checking for the common suffixes of directories in the library search path... " >&6; } -if ${acl_cv_libdirstems+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5 +printf %s "checking for the common suffixes of directories in the library search path... " >&6; } +if test ${acl_cv_libdirstems+y} +then : + printf %s "(cached) " >&6 +else $as_nop acl_libdirstem=lib acl_libdirstem2= case "$host_os" in @@ -8708,8 +9342,8 @@ else acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5 -$as_echo "$acl_cv_libdirstems" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5 +printf "%s\n" "$acl_cv_libdirstems" >&6; } # Decompose acl_cv_libdirstems into acl_libdirstem and acl_libdirstem2. acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e '/,/s/.*,//'` @@ -8722,31 +9356,34 @@ $as_echo "$acl_cv_libdirstems" >&6; } LIBMULTITHREAD= LTLIBMULTITHREAD= if test "$gl_use_threads" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5 -$as_echo_n "checking whether imported symbols can be declared weak... " >&6; } -if ${gl_cv_have_weak+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5 +printf %s "checking whether imported symbols can be declared weak... " >&6; } +if test ${gl_cv_have_weak+y} +then : + printf %s "(cached) " >&6 +else $as_nop gl_cv_have_weak=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ extern void xyzzy (); #pragma weak xyzzy int -main () +main (void) { xyzzy(); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gl_cv_have_weak=maybe fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test $gl_cv_have_weak = maybe; then - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __ELF__ @@ -8755,15 +9392,16 @@ rm -f core conftest.err conftest.$ac_objext \ _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Extensible Linking Format" >/dev/null 2>&1; then : + $EGREP "Extensible Linking Format" >/dev/null 2>&1 +then : gl_cv_have_weak="guessing yes" -else +else $as_nop gl_cv_have_weak="guessing no" fi -rm -f conftest* +rm -rf conftest* -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8774,9 +9412,10 @@ int main () return (fputs == NULL); } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : gl_cv_have_weak=yes -else +else $as_nop gl_cv_have_weak=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -8789,19 +9428,19 @@ fi esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5 -$as_echo "$gl_cv_have_weak" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5 +printf "%s\n" "$gl_cv_have_weak" >&6; } if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that # it groks . It's added above, in gl_THREADLIB_EARLY_BODY. - ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" -if test "x$ac_cv_header_pthread_h" = xyes; then : + ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" +if test "x$ac_cv_header_pthread_h" = xyes +then : gl_have_pthread_h=yes -else +else $as_nop gl_have_pthread_h=no fi - if test "$gl_have_pthread_h" = yes; then # Other possible tests: # -lpthreads (FSU threads, PCthreads) @@ -8824,7 +9463,7 @@ fi pthread_mutexattr_t ma; int -main () +main (void) { pthread_mutex_lock (&m); pthread_mutexattr_init (&ma); @@ -8832,12 +9471,13 @@ pthread_mutex_lock (&m); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gl_have_pthread=yes LIBTHREAD=$gl_pthread LTLIBTHREAD=$gl_pthread LIBMULTITHREAD=$gl_pthread LTLIBMULTITHREAD=$gl_pthread fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$save_LIBS test -n "$gl_have_pthread" && break @@ -8848,11 +9488,12 @@ rm -f core conftest.err conftest.$ac_objext \ if test -n "$gl_have_pthread" && test -z "$LIBTHREAD"; then # The program links fine without libpthread. But it may actually # need to link with libpthread in order to create multiple threads. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 -$as_echo_n "checking for pthread_kill in -lpthread... " >&6; } -if ${ac_cv_lib_pthread_pthread_kill+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 +printf %s "checking for pthread_kill in -lpthread... " >&6; } +if test ${ac_cv_lib_pthread_pthread_kill+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -8861,30 +9502,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char pthread_kill (); int -main () +main (void) { return pthread_kill (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_pthread_pthread_kill=yes -else +else $as_nop ac_cv_lib_pthread_pthread_kill=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 -$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; } -if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 +printf "%s\n" "$ac_cv_lib_pthread_pthread_kill" >&6; } +if test "x$ac_cv_lib_pthread_pthread_kill" = xyes +then : LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread # On Solaris and HP-UX, most pthread functions exist also in libc. # Therefore pthread_in_use() needs to actually try to create a @@ -8895,7 +9535,7 @@ if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then : case "$host_os" in solaris | solaris2.1-9 | solaris2.1-9.* | hpux*) -$as_echo "#define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h +printf "%s\n" "#define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h esac @@ -8903,11 +9543,12 @@ fi elif test -z "$gl_have_pthread"; then # Some library is needed. Try libpthread and libc_r. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 -$as_echo_n "checking for pthread_kill in -lpthread... " >&6; } -if ${ac_cv_lib_pthread_pthread_kill+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 +printf %s "checking for pthread_kill in -lpthread... " >&6; } +if test ${ac_cv_lib_pthread_pthread_kill+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -8916,30 +9557,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char pthread_kill (); int -main () +main (void) { return pthread_kill (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_pthread_pthread_kill=yes -else +else $as_nop ac_cv_lib_pthread_pthread_kill=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 -$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; } -if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 +printf "%s\n" "$ac_cv_lib_pthread_pthread_kill" >&6; } +if test "x$ac_cv_lib_pthread_pthread_kill" = xyes +then : gl_have_pthread=yes LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread @@ -8947,11 +9587,12 @@ fi if test -z "$gl_have_pthread"; then # For FreeBSD 4. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5 -$as_echo_n "checking for pthread_kill in -lc_r... " >&6; } -if ${ac_cv_lib_c_r_pthread_kill+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5 +printf %s "checking for pthread_kill in -lc_r... " >&6; } +if test ${ac_cv_lib_c_r_pthread_kill+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lc_r $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -8960,30 +9601,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char pthread_kill (); int -main () +main (void) { return pthread_kill (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_c_r_pthread_kill=yes -else +else $as_nop ac_cv_lib_c_r_pthread_kill=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5 -$as_echo "$ac_cv_lib_c_r_pthread_kill" >&6; } -if test "x$ac_cv_lib_c_r_pthread_kill" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5 +printf "%s\n" "$ac_cv_lib_c_r_pthread_kill" >&6; } +if test "x$ac_cv_lib_c_r_pthread_kill" = xyes +then : gl_have_pthread=yes LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r @@ -8994,12 +9634,12 @@ fi if test -n "$gl_have_pthread"; then gl_threads_api=posix -$as_echo "#define USE_POSIX_THREADS 1" >>confdefs.h +printf "%s\n" "#define USE_POSIX_THREADS 1" >>confdefs.h if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then -$as_echo "#define USE_POSIX_THREADS_WEAK 1" >>confdefs.h +printf "%s\n" "#define USE_POSIX_THREADS_WEAK 1" >>confdefs.h LIBTHREAD= LTLIBTHREAD= @@ -9020,17 +9660,18 @@ $as_echo "#define USE_POSIX_THREADS_WEAK 1" >>confdefs.h #include int -main () +main (void) { thr_self(); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gl_have_solaristhread=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gl_save_LIBS" if test -n "$gl_have_solaristhread"; then @@ -9040,11 +9681,11 @@ rm -f core conftest.err conftest.$ac_objext \ LIBMULTITHREAD="$LIBTHREAD" LTLIBMULTITHREAD="$LTLIBTHREAD" -$as_echo "#define USE_SOLARIS_THREADS 1" >>confdefs.h +printf "%s\n" "#define USE_SOLARIS_THREADS 1" >>confdefs.h if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then -$as_echo "#define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h +printf "%s\n" "#define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h LIBTHREAD= LTLIBTHREAD= @@ -9059,11 +9700,12 @@ $as_echo "#define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libpth" >&5 -$as_echo_n "checking how to link with libpth... " >&6; } -if ${ac_cv_libpth_libs+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libpth" >&5 +printf %s "checking how to link with libpth... " >&6; } +if test ${ac_cv_libpth_libs+y} +then : + printf %s "(cached) " >&6 +else $as_nop @@ -9086,7 +9728,8 @@ else # Check whether --with-libpth-prefix was given. -if test "${with_libpth_prefix+set}" = set; then : +if test ${with_libpth_prefix+y} +then : withval=$with_libpth_prefix; if test "X$withval" = "Xno"; then use_additional=no @@ -9530,8 +10173,8 @@ fi ac_cv_libpth_prefix="$LIBPTH_PREFIX" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libpth_libs" >&5 -$as_echo "$ac_cv_libpth_libs" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libpth_libs" >&5 +printf "%s\n" "$ac_cv_libpth_libs" >&6; } LIBPTH="$ac_cv_libpth_libs" LTLIBPTH="$ac_cv_libpth_ltlibs" INCPTH="$ac_cv_libpth_cppflags" @@ -9573,17 +10216,18 @@ $as_echo "$ac_cv_libpth_libs" >&6; } /* end confdefs.h. */ #include int -main () +main (void) { pth_self(); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gl_have_pth=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gl_save_LIBS" if test -n "$gl_have_pth"; then @@ -9593,12 +10237,12 @@ rm -f core conftest.err conftest.$ac_objext \ LIBMULTITHREAD="$LIBTHREAD" LTLIBMULTITHREAD="$LTLIBTHREAD" -$as_echo "#define USE_PTH_THREADS 1" >>confdefs.h +printf "%s\n" "#define USE_PTH_THREADS 1" >>confdefs.h if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then -$as_echo "#define USE_PTH_THREADS_WEAK 1" >>confdefs.h +printf "%s\n" "#define USE_PTH_THREADS_WEAK 1" >>confdefs.h LIBTHREAD= LTLIBTHREAD= @@ -9618,17 +10262,17 @@ $as_echo "#define USE_PTH_THREADS_WEAK 1" >>confdefs.h }; then gl_threads_api=windows -$as_echo "#define USE_WINDOWS_THREADS 1" >>confdefs.h +printf "%s\n" "#define USE_WINDOWS_THREADS 1" >>confdefs.h fi ;; esac fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for multithread API to use" >&5 -$as_echo_n "checking for multithread API to use... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_threads_api" >&5 -$as_echo "$gl_threads_api" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for multithread API to use" >&5 +printf %s "checking for multithread API to use... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_threads_api" >&5 +printf "%s\n" "$gl_threads_api" >&6; } @@ -9646,26 +10290,29 @@ $as_echo "$gl_threads_api" >&6; } has_rwlock=false ac_fn_c_check_type "$LINENO" "pthread_rwlock_t" "ac_cv_type_pthread_rwlock_t" "#include " -if test "x$ac_cv_type_pthread_rwlock_t" = xyes; then : +if test "x$ac_cv_type_pthread_rwlock_t" = xyes +then : has_rwlock=true -$as_echo "#define HAVE_PTHREAD_RWLOCK 1" >>confdefs.h +printf "%s\n" "#define HAVE_PTHREAD_RWLOCK 1" >>confdefs.h fi if $has_rwlock; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthread_rwlock_rdlock prefers a writer to a reader" >&5 -$as_echo_n "checking whether pthread_rwlock_rdlock prefers a writer to a reader... " >&6; } -if ${gl_cv_pthread_rwlock_rdlock_prefer_writer+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthread_rwlock_rdlock prefers a writer to a reader" >&5 +printf %s "checking whether pthread_rwlock_rdlock prefers a writer to a reader... " >&6; } +if test ${gl_cv_pthread_rwlock_rdlock_prefer_writer+y} +then : + printf %s "(cached) " >&6 +else $as_nop save_LIBS="$LIBS" LIBS="$LIBS $LIBMULTITHREAD" - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes +then : gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing yes" -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9781,9 +10428,10 @@ main () } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : gl_cv_pthread_rwlock_rdlock_prefer_writer=yes -else +else $as_nop gl_cv_pthread_rwlock_rdlock_prefer_writer=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -9793,12 +10441,12 @@ fi LIBS="$save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_pthread_rwlock_rdlock_prefer_writer" >&5 -$as_echo "$gl_cv_pthread_rwlock_rdlock_prefer_writer" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_pthread_rwlock_rdlock_prefer_writer" >&5 +printf "%s\n" "$gl_cv_pthread_rwlock_rdlock_prefer_writer" >&6; } case "$gl_cv_pthread_rwlock_rdlock_prefer_writer" in *yes) -$as_echo "#define HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER 1" >>confdefs.h +printf "%s\n" "#define HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER 1" >>confdefs.h ;; esac @@ -9810,7 +10458,7 @@ $as_echo "#define HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER 1" >>confdefs.h #include int -main () +main (void) { #if __FreeBSD__ == 4 @@ -9827,15 +10475,96 @@ return !x; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -$as_echo "#define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h +printf "%s\n" "#define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 +printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else $as_nop + ac_cv_c_undeclared_builtin_options=$ac_arg +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in #( + 'cannot detect') : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See \`config.log' for more details" "$LINENO" 5; } ;; #( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; #( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + @@ -9861,7 +10590,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Check whether --with-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then : +if test ${with_libiconv_prefix+y} +then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no @@ -10330,11 +11060,12 @@ fi done - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 -$as_echo_n "checking for iconv... " >&6; } -if ${am_cv_func_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else $as_nop am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no @@ -10345,7 +11076,7 @@ else #include int -main () +main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); @@ -10354,10 +11085,11 @@ iconv_t cd = iconv_open("",""); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : am_cv_func_iconv=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" @@ -10369,7 +11101,7 @@ rm -f core conftest.err conftest.$ac_objext \ #include int -main () +main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); @@ -10378,24 +11110,26 @@ iconv_t cd = iconv_open("",""); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 -$as_echo "$am_cv_func_iconv" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf "%s\n" "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 -$as_echo_n "checking for working iconv... " >&6; } -if ${am_cv_func_iconv_works+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then @@ -10403,12 +11137,13 @@ else fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes +then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10420,7 +11155,7 @@ else #endif int -main () +main (void) { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful @@ -10532,7 +11267,8 @@ int result = 0; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : am_cv_func_iconv_works=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -10544,8 +11280,8 @@ fi LIBS="$am_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 -$as_echo "$am_cv_func_iconv_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf "%s\n" "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; @@ -10555,14 +11291,14 @@ $as_echo "$am_cv_func_iconv_works" >&6; } fi if test "$am_func_iconv" = yes; then -$as_echo "#define HAVE_ICONV 1" >>confdefs.h +printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 -$as_echo_n "checking how to link with libiconv... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 -$as_echo "$LIBICONV" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf "%s\n" "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= @@ -10572,11 +11308,12 @@ $as_echo "$LIBICONV" >&6; } if test "$am_cv_func_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 -$as_echo_n "checking for iconv declaration... " >&6; } - if ${am_cv_proto_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 +printf %s "checking for iconv declaration... " >&6; } + if test ${am_cv_proto_iconv+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10594,34 +11331,33 @@ size_t iconv(); #endif int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : am_cv_proto_iconv_arg1="" -else +else $as_nop am_cv_proto_iconv_arg1="const" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" fi am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_proto_iconv" >&5 -$as_echo " +printf "%s\n" " $am_cv_proto_iconv" >&6; } else am_cv_proto_iconv_arg1="" fi -cat >>confdefs.h <<_ACEOF -#define ICONV_CONST $am_cv_proto_iconv_arg1 -_ACEOF +printf "%s\n" "#define ICONV_CONST $am_cv_proto_iconv_arg1" >>confdefs.h @@ -10632,83 +11368,177 @@ _ACEOF /* end confdefs.h. */ int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; } int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : -$as_echo "#define HAVE_BUILTIN_EXPECT 1" >>confdefs.h +printf "%s\n" "#define HAVE_BUILTIN_EXPECT 1" >>confdefs.h fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - for ac_header in argz.h inttypes.h limits.h unistd.h sys/param.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "argz.h" "ac_cv_header_argz_h" "$ac_includes_default" +if test "x$ac_cv_header_argz_h" = xyes +then : + printf "%s\n" "#define HAVE_ARGZ_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" +if test "x$ac_cv_header_inttypes_h" = xyes +then : + printf "%s\n" "#define HAVE_INTTYPES_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi + + ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes +then : + printf "%s\n" "#define HAVE_GETCWD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getegid" "ac_cv_func_getegid" +if test "x$ac_cv_func_getegid" = xyes +then : + printf "%s\n" "#define HAVE_GETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "geteuid" "ac_cv_func_geteuid" +if test "x$ac_cv_func_geteuid" = xyes +then : + printf "%s\n" "#define HAVE_GETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgid" "ac_cv_func_getgid" +if test "x$ac_cv_func_getgid" = xyes +then : + printf "%s\n" "#define HAVE_GETGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getuid" "ac_cv_func_getuid" +if test "x$ac_cv_func_getuid" = xyes +then : + printf "%s\n" "#define HAVE_GETUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" +if test "x$ac_cv_func_mempcpy" = xyes +then : + printf "%s\n" "#define HAVE_MEMPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "munmap" "ac_cv_func_munmap" +if test "x$ac_cv_func_munmap" = xyes +then : + printf "%s\n" "#define HAVE_MUNMAP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" +if test "x$ac_cv_func_stpcpy" = xyes +then : + printf "%s\n" "#define HAVE_STPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes +then : + printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strtoul" "ac_cv_func_strtoul" +if test "x$ac_cv_func_strtoul" = xyes +then : + printf "%s\n" "#define HAVE_STRTOUL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "tsearch" "ac_cv_func_tsearch" +if test "x$ac_cv_func_tsearch" = xyes +then : + printf "%s\n" "#define HAVE_TSEARCH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "argz_count" "ac_cv_func_argz_count" +if test "x$ac_cv_func_argz_count" = xyes +then : + printf "%s\n" "#define HAVE_ARGZ_COUNT 1" >>confdefs.h fi +ac_fn_c_check_func "$LINENO" "argz_stringify" "ac_cv_func_argz_stringify" +if test "x$ac_cv_func_argz_stringify" = xyes +then : + printf "%s\n" "#define HAVE_ARGZ_STRINGIFY 1" >>confdefs.h -done +fi +ac_fn_c_check_func "$LINENO" "argz_next" "ac_cv_func_argz_next" +if test "x$ac_cv_func_argz_next" = xyes +then : + printf "%s\n" "#define HAVE_ARGZ_NEXT 1" >>confdefs.h - for ac_func in getcwd getegid geteuid getgid getuid mempcpy munmap \ - stpcpy strcasecmp strdup strtoul tsearch argz_count argz_stringify \ - argz_next __fsetlocking -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +fi +ac_fn_c_check_func "$LINENO" "__fsetlocking" "ac_cv_func___fsetlocking" +if test "x$ac_cv_func___fsetlocking" = xyes +then : + printf "%s\n" "#define HAVE___FSETLOCKING 1" >>confdefs.h fi -done - for ac_func in localeconv -do : - ac_fn_c_check_func "$LINENO" "localeconv" "ac_cv_func_localeconv" -if test "x$ac_cv_func_localeconv" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LOCALECONV 1 -_ACEOF + ac_fn_c_check_func "$LINENO" "localeconv" "ac_cv_func_localeconv" +if test "x$ac_cv_func_localeconv" = xyes +then : + printf "%s\n" "#define HAVE_LOCALECONV 1" >>confdefs.h fi -done - ac_fn_c_check_decl "$LINENO" "feof_unlocked" "ac_cv_have_decl_feof_unlocked" "#include -" -if test "x$ac_cv_have_decl_feof_unlocked" = xyes; then : + ac_fn_check_decl "$LINENO" "feof_unlocked" "ac_cv_have_decl_feof_unlocked" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_feof_unlocked" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FEOF_UNLOCKED $ac_have_decl -_ACEOF -ac_fn_c_check_decl "$LINENO" "fgets_unlocked" "ac_cv_have_decl_fgets_unlocked" "#include -" -if test "x$ac_cv_have_decl_fgets_unlocked" = xyes; then : +printf "%s\n" "#define HAVE_DECL_FEOF_UNLOCKED $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "fgets_unlocked" "ac_cv_have_decl_fgets_unlocked" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_fgets_unlocked" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FGETS_UNLOCKED $ac_have_decl -_ACEOF +printf "%s\n" "#define HAVE_DECL_FGETS_UNLOCKED $ac_have_decl" >>confdefs.h @@ -10717,11 +11547,12 @@ _ACEOF do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_INTLBISON+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_INTLBISON+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$INTLBISON"; then ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test. else @@ -10729,11 +11560,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_INTLBISON="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -10744,11 +11579,11 @@ fi fi INTLBISON=$ac_cv_prog_INTLBISON if test -n "$INTLBISON"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLBISON" >&5 -$as_echo "$INTLBISON" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INTLBISON" >&5 +printf "%s\n" "$INTLBISON" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -10758,8 +11593,8 @@ done if test -z "$INTLBISON"; then ac_verc_fail=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of bison" >&5 -$as_echo_n "checking version of bison... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking version of bison" >&5 +printf %s "checking version of bison... " >&6; } ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; @@ -10767,8 +11602,8 @@ $as_echo_n "checking version of bison... " >&6; } ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5 -$as_echo "$ac_prog_version" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5 +printf "%s\n" "$ac_prog_version" >&6; } fi if test $ac_verc_fail = yes; then INTLBISON=: @@ -10776,103 +11611,111 @@ $as_echo "$ac_prog_version" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 -$as_echo_n "checking for long long int... " >&6; } -if ${ac_cv_type_long_long_int+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_type_long_long_int=yes - if test "x${ac_cv_prog_cc_c99-no}" = xno; then - ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int - if test $ac_cv_type_long_long_int = yes; then - if test "$cross_compiling" = yes; then : + case $ac_prog_cc_stdc in + no | c89) ;; + *) + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + if test "$cross_compiling" = yes +then : : -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include - #ifndef LLONG_MAX - # define HALF \ - (1LL << (sizeof (long long int) * CHAR_BIT - 2)) - # define LLONG_MAX (HALF - 1 + HALF) - #endif + #ifndef LLONG_MAX + # define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + # define LLONG_MAX (HALF - 1 + HALF) + #endif int -main () +main (void) { long long int n = 1; - int i; - for (i = 0; ; i++) - { - long long int m = n << i; - if (m >> i != n) - return 1; - if (LLONG_MAX / 2 < m) - break; - } - return 0; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : -else +else $as_nop ac_cv_type_long_long_int=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi - fi + fi;; + esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 -$as_echo "$ac_cv_type_long_long_int" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +printf "%s\n" "$ac_cv_type_long_long_int" >&6; } if test $ac_cv_type_long_long_int = yes; then -$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h +printf "%s\n" "#define HAVE_LONG_LONG_INT 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5 -$as_echo_n "checking for wchar_t... " >&6; } -if ${gt_cv_c_wchar_t+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5 +printf %s "checking for wchar_t... " >&6; } +if test ${gt_cv_c_wchar_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include wchar_t foo = (wchar_t)'\0'; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gt_cv_c_wchar_t=yes -else +else $as_nop gt_cv_c_wchar_t=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5 -$as_echo "$gt_cv_c_wchar_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5 +printf "%s\n" "$gt_cv_c_wchar_t" >&6; } if test $gt_cv_c_wchar_t = yes; then -$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_WCHAR_T 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5 -$as_echo_n "checking for wint_t... " >&6; } -if ${gt_cv_c_wint_t+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5 +printf %s "checking for wint_t... " >&6; } +if test ${gt_cv_c_wint_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10886,32 +11729,34 @@ else #include wint_t foo = (wchar_t)'\0'; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gt_cv_c_wint_t=yes -else +else $as_nop gt_cv_c_wint_t=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5 -$as_echo "$gt_cv_c_wint_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5 +printf "%s\n" "$gt_cv_c_wint_t" >&6; } if test $gt_cv_c_wint_t = yes; then -$as_echo "#define HAVE_WINT_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_WINT_T 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wint_t is too small" >&5 -$as_echo_n "checking whether wint_t is too small... " >&6; } -if ${gl_cv_type_wint_t_too_small+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether wint_t is too small" >&5 +printf %s "checking whether wint_t is too small... " >&6; } +if test ${gl_cv_type_wint_t_too_small+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10928,22 +11773,23 @@ else int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1]; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gl_cv_type_wint_t_too_small=no -else +else $as_nop gl_cv_type_wint_t_too_small=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wint_t_too_small" >&5 -$as_echo "$gl_cv_type_wint_t_too_small" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wint_t_too_small" >&5 +printf "%s\n" "$gl_cv_type_wint_t_too_small" >&6; } if test $gl_cv_type_wint_t_too_small = yes; then GNULIB_OVERRIDES_WINT_T=1 else @@ -10957,11 +11803,12 @@ $as_echo "$gl_cv_type_wint_t_too_small" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5 -$as_echo_n "checking for intmax_t... " >&6; } -if ${gt_cv_c_intmax_t+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5 +printf %s "checking for intmax_t... " >&6; } +if test ${gt_cv_c_intmax_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10975,7 +11822,7 @@ else #endif int -main () +main (void) { intmax_t x = -1; return !x; @@ -10983,30 +11830,33 @@ intmax_t x = -1; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gt_cv_c_intmax_t=yes -else +else $as_nop gt_cv_c_intmax_t=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_intmax_t" >&5 -$as_echo "$gt_cv_c_intmax_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_intmax_t" >&5 +printf "%s\n" "$gt_cv_c_intmax_t" >&6; } if test $gt_cv_c_intmax_t = yes; then -$as_echo "#define HAVE_INTMAX_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_INTMAX_T 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf() supports POSIX/XSI format strings" >&5 -$as_echo_n "checking whether printf() supports POSIX/XSI format strings... " >&6; } -if ${gt_cv_func_printf_posix+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf() supports POSIX/XSI format strings" >&5 +printf %s "checking whether printf() supports POSIX/XSI format strings... " >&6; } +if test ${gt_cv_func_printf_posix+y} +then : + printf %s "(cached) " >&6 +else $as_nop - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -11017,15 +11867,16 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "notposix" >/dev/null 2>&1; then : + $EGREP "notposix" >/dev/null 2>&1 +then : gt_cv_func_printf_posix="guessing no" -else +else $as_nop gt_cv_func_printf_posix="guessing yes" fi -rm -f conftest* +rm -rf conftest* -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -11041,9 +11892,10 @@ int main () return (strcmp (buf, "55 33") != 0); } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : gt_cv_func_printf_posix=yes -else +else $as_nop gt_cv_func_printf_posix=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -11052,22 +11904,23 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_printf_posix" >&5 -$as_echo "$gt_cv_func_printf_posix" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_printf_posix" >&5 +printf "%s\n" "$gt_cv_func_printf_posix" >&6; } case $gt_cv_func_printf_posix in *yes) -$as_echo "#define HAVE_POSIX_PRINTF 1" >>confdefs.h +printf "%s\n" "#define HAVE_POSIX_PRINTF 1" >>confdefs.h ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5 -$as_echo_n "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; } -if ${ac_cv_gnu_library_2_1+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5 +printf %s "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; } +if test ${ac_cv_gnu_library_2_1+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -11083,40 +11936,37 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Lucky" >/dev/null 2>&1; then : + $EGREP "Lucky" >/dev/null 2>&1 +then : ac_cv_gnu_library_2_1=yes -else +else $as_nop ac_cv_gnu_library_2_1=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5 -$as_echo "$ac_cv_gnu_library_2_1" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5 +printf "%s\n" "$ac_cv_gnu_library_2_1" >&6; } GLIBC21="$ac_cv_gnu_library_2_1" - for ac_header in stdint.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" -if test "x$ac_cv_header_stdint_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STDINT_H 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" +if test "x$ac_cv_header_stdint_h" = xyes +then : + printf "%s\n" "#define HAVE_STDINT_H 1" >>confdefs.h fi -done - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIZE_MAX" >&5 -$as_echo_n "checking for SIZE_MAX... " >&6; } -if ${gl_cv_size_max+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SIZE_MAX" >&5 +printf %s "checking for SIZE_MAX... " >&6; } +if test ${gl_cv_size_max+y} +then : + printf %s "(cached) " >&6 +else $as_nop gl_cv_size_max= cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -11132,22 +11982,25 @@ Found it _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Found it" >/dev/null 2>&1; then : + $EGREP "Found it" >/dev/null 2>&1 +then : gl_cv_size_max=yes fi -rm -f conftest* +rm -rf conftest* if test -z "$gl_cv_size_max"; then if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) * CHAR_BIT - 1" "size_t_bits_minus_1" "#include -#include "; then : +#include " +then : -else +else $as_nop size_t_bits_minus_1= fi - if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) <= sizeof (unsigned int)" "fits_in_uint" "#include "; then : + if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) <= sizeof (unsigned int)" "fits_in_uint" "#include " +then : -else +else $as_nop fits_in_uint= fi @@ -11160,17 +12013,18 @@ fi extern unsigned long foo; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : fits_in_uint=0 fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $fits_in_uint = 1; then gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" @@ -11183,46 +12037,23 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_size_max" >&5 -$as_echo "$gl_cv_size_max" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_size_max" >&5 +printf "%s\n" "$gl_cv_size_max" >&6; } if test "$gl_cv_size_max" != yes; then -cat >>confdefs.h <<_ACEOF -#define SIZE_MAX $gl_cv_size_max -_ACEOF +printf "%s\n" "#define SIZE_MAX $gl_cv_size_max" >>confdefs.h fi - for ac_header in stdint.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" -if test "x$ac_cv_header_stdint_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STDINT_H 1 -_ACEOF - -fi - -done - - - - - - for ac_func in $ac_func_list -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" +if test "x$ac_cv_header_stdint_h" = xyes +then : + printf "%s\n" "#define HAVE_STDINT_H 1" >>confdefs.h fi -done @@ -11231,19 +12062,21 @@ done - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5 -$as_echo_n "checking for working fcntl.h... " >&6; } -if ${gl_cv_header_working_fcntl_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5 +printf %s "checking for working fcntl.h... " >&6; } +if test ${gl_cv_header_working_fcntl_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : case "$host_os" in # Guess 'no' on native Windows. mingw*) gl_cv_header_working_fcntl_h='no' ;; *) gl_cv_header_working_fcntl_h=cross-compiling ;; esac -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -11269,7 +12102,7 @@ else }; int -main () +main (void) { int result = !constants; @@ -11339,9 +12172,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : gl_cv_header_working_fcntl_h=yes -else +else $as_nop case $? in #( 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( @@ -11355,17 +12189,15 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5 -$as_echo "$gl_cv_header_working_fcntl_h" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5 +printf "%s\n" "$gl_cv_header_working_fcntl_h" >&6; } case $gl_cv_header_working_fcntl_h in #( *O_NOATIME* | no | cross-compiling) ac_val=0;; #( *) ac_val=1;; esac -cat >>confdefs.h <<_ACEOF -#define HAVE_WORKING_O_NOATIME $ac_val -_ACEOF +printf "%s\n" "#define HAVE_WORKING_O_NOATIME $ac_val" >>confdefs.h case $gl_cv_header_working_fcntl_h in #( @@ -11373,11 +12205,7 @@ _ACEOF *) ac_val=1;; esac -cat >>confdefs.h <<_ACEOF -#define HAVE_WORKING_O_NOFOLLOW $ac_val -_ACEOF - - +printf "%s\n" "#define HAVE_WORKING_O_NOFOLLOW $ac_val" >>confdefs.h @@ -11394,19 +12222,21 @@ _ACEOF if test $ac_cv_func_uselocale = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether uselocale works" >&5 -$as_echo_n "checking whether uselocale works... " >&6; } -if ${gt_cv_func_uselocale_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether uselocale works" >&5 +printf %s "checking whether uselocale works... " >&6; } +if test ${gt_cv_func_uselocale_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : # Guess no on AIX, yes otherwise. case "$host_os" in aix*) gt_cv_func_uselocale_works="guessing no" ;; *) gt_cv_func_uselocale_works="guessing yes" ;; esac -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -11421,9 +12251,10 @@ int main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : gt_cv_func_uselocale_works=yes -else +else $as_nop gt_cv_func_uselocale_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -11432,15 +12263,15 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_uselocale_works" >&5 -$as_echo "$gt_cv_func_uselocale_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_uselocale_works" >&5 +printf "%s\n" "$gt_cv_func_uselocale_works" >&6; } else gt_cv_func_uselocale_works=no fi case "$gt_cv_func_uselocale_works" in *yes) -$as_echo "#define HAVE_WORKING_USELOCALE 1" >>confdefs.h +printf "%s\n" "#define HAVE_WORKING_USELOCALE 1" >>confdefs.h ;; esac @@ -11449,18 +12280,20 @@ $as_echo "#define HAVE_WORKING_USELOCALE 1" >>confdefs.h case "$gt_cv_func_uselocale_works" in *yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fake locale system (OpenBSD)" >&5 -$as_echo_n "checking for fake locale system (OpenBSD)... " >&6; } -if ${gt_cv_locale_fake+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fake locale system (OpenBSD)" >&5 +printf %s "checking for fake locale system (OpenBSD)... " >&6; } +if test ${gt_cv_locale_fake+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : case "$host_os" in openbsd*) gt_cv_locale_fake="guessing yes" ;; *) gt_cv_locale_fake="guessing no" ;; esac -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -11478,9 +12311,10 @@ int main () return !(loc1 == loc2); } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : gt_cv_locale_fake=yes -else +else $as_nop gt_cv_locale_fake=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -11489,26 +12323,27 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fake" >&5 -$as_echo "$gt_cv_locale_fake" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fake" >&5 +printf "%s\n" "$gt_cv_locale_fake" >&6; } ;; *) gt_cv_locale_fake=no ;; esac case "$gt_cv_locale_fake" in *yes) -$as_echo "#define HAVE_FAKE_LOCALES 1" >>confdefs.h +printf "%s\n" "#define HAVE_FAKE_LOCALES 1" >>confdefs.h ;; esac case "$gt_cv_func_uselocale_works" in *yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris 11.4 locale system" >&5 -$as_echo_n "checking for Solaris 11.4 locale system... " >&6; } -if ${gt_cv_locale_solaris114+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Solaris 11.4 locale system" >&5 +printf %s "checking for Solaris 11.4 locale system... " >&6; } +if test ${gt_cv_locale_solaris114+y} +then : + printf %s "(cached) " >&6 +else $as_nop case "$host_os" in solaris*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -11519,47 +12354,44 @@ else locale_t y; int -main () +main (void) { *y = x; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : gt_cv_locale_solaris114=yes -else +else $as_nop gt_cv_locale_solaris114=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; *) gt_cv_locale_solaris114=no ;; esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_solaris114" >&5 -$as_echo "$gt_cv_locale_solaris114" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_solaris114" >&5 +printf "%s\n" "$gt_cv_locale_solaris114" >&6; } ;; *) gt_cv_locale_solaris114=no ;; esac if test $gt_cv_locale_solaris114 = yes; then -$as_echo "#define HAVE_SOLARIS114_LOCALES 1" >>confdefs.h +printf "%s\n" "#define HAVE_SOLARIS114_LOCALES 1" >>confdefs.h fi case "$gt_cv_func_uselocale_works" in *yes) - for ac_func in getlocalename_l -do : - ac_fn_c_check_func "$LINENO" "getlocalename_l" "ac_cv_func_getlocalename_l" -if test "x$ac_cv_func_getlocalename_l" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETLOCALENAME_L 1 -_ACEOF + ac_fn_c_check_func "$LINENO" "getlocalename_l" "ac_cv_func_getlocalename_l" +if test "x$ac_cv_func_getlocalename_l" = xyes +then : + printf "%s\n" "#define HAVE_GETLOCALENAME_L 1" >>confdefs.h fi -done ;; esac @@ -11568,111 +12400,117 @@ done if false; then gt_nameless_locales=yes -$as_echo "#define HAVE_NAMELESS_LOCALES 1" >>confdefs.h +printf "%s\n" "#define HAVE_NAMELESS_LOCALES 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 -$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } -if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gt_cv_func_CFPreferencesCopyAppValue=yes -else +else $as_nop gt_cv_func_CFPreferencesCopyAppValue=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then -$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h +printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 -$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } -if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { CFLocaleCopyCurrent(); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gt_cv_func_CFLocaleCopyCurrent=yes -else +else $as_nop gt_cv_func_CFLocaleCopyCurrent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf "%s\n" "$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then -$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h +printf "%s\n" "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5 -$as_echo_n "checking for CFLocaleCopyPreferredLanguages... " >&6; } -if ${gt_cv_func_CFLocaleCopyPreferredLanguages+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5 +printf %s "checking for CFLocaleCopyPreferredLanguages... " >&6; } +if test ${gt_cv_func_CFLocaleCopyPreferredLanguages+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { CFLocaleCopyPreferredLanguages(); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gt_cv_func_CFLocaleCopyPreferredLanguages=yes -else +else $as_nop gt_cv_func_CFLocaleCopyPreferredLanguages=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5 -$as_echo "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5 +printf "%s\n" "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; } if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then -$as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h +printf "%s\n" "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h fi INTL_MACOSX_LIBS= @@ -11689,11 +12527,12 @@ $as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flexible array members" >&5 -$as_echo_n "checking for flexible array members... " >&6; } -if ${ac_cv_c_flexmember+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for flexible array members" >&5 +printf %s "checking for flexible array members... " >&6; } +if test ${ac_cv_c_flexmember+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -11701,32 +12540,33 @@ else #include struct s { int n; double d[]; }; int -main () +main (void) { int m = getchar (); - struct s *p = malloc (offsetof (struct s, d) - + m * sizeof (double)); + struct s *p = (struct s *) malloc (offsetof (struct s, d) + + m * sizeof (double)); p->d[0] = 0.0; return p->d != (double *) NULL; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_flexmember=yes -else +else $as_nop ac_cv_c_flexmember=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_flexmember" >&5 -$as_echo "$ac_cv_c_flexmember" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_flexmember" >&5 +printf "%s\n" "$ac_cv_c_flexmember" >&6; } if test $ac_cv_c_flexmember = yes; then -$as_echo "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h +printf "%s\n" "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h else - $as_echo "#define FLEXIBLE_ARRAY_MEMBER 1" >>confdefs.h + printf "%s\n" "#define FLEXIBLE_ARRAY_MEMBER 1" >>confdefs.h fi @@ -11740,11 +12580,12 @@ $as_echo "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else @@ -11752,11 +12593,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -11767,11 +12612,11 @@ fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -11780,11 +12625,12 @@ if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else @@ -11792,11 +12638,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -11807,11 +12657,11 @@ fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_AR" = x; then @@ -11819,8 +12669,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR @@ -11844,77 +12694,150 @@ fi ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" -if test "x$ac_cv_type_ptrdiff_t" = xyes; then : +if test "x$ac_cv_type_ptrdiff_t" = xyes +then : -else +else $as_nop -$as_echo "#define ptrdiff_t long" >>confdefs.h +printf "%s\n" "#define ptrdiff_t long" >>confdefs.h fi - for ac_header in features.h stddef.h stdlib.h string.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "features.h" "ac_cv_header_features_h" "$ac_includes_default" +if test "x$ac_cv_header_features_h" = xyes +then : + printf "%s\n" "#define HAVE_FEATURES_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "stddef.h" "ac_cv_header_stddef_h" "$ac_includes_default" +if test "x$ac_cv_header_stddef_h" = xyes +then : + printf "%s\n" "#define HAVE_STDDEF_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h - for ac_func in asprintf fwprintf newlocale putenv setenv setlocale \ - snprintf strnlen uselocale wcslen wcsnlen mbrtowc wcrtomb -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +fi +ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" +if test "x$ac_cv_header_string_h" = xyes +then : + printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h fi -done + ac_fn_c_check_func "$LINENO" "asprintf" "ac_cv_func_asprintf" +if test "x$ac_cv_func_asprintf" = xyes +then : + printf "%s\n" "#define HAVE_ASPRINTF 1" >>confdefs.h - ac_fn_c_check_decl "$LINENO" "_snprintf" "ac_cv_have_decl__snprintf" "#include -" -if test "x$ac_cv_have_decl__snprintf" = xyes; then : +fi +ac_fn_c_check_func "$LINENO" "fwprintf" "ac_cv_func_fwprintf" +if test "x$ac_cv_func_fwprintf" = xyes +then : + printf "%s\n" "#define HAVE_FWPRINTF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "newlocale" "ac_cv_func_newlocale" +if test "x$ac_cv_func_newlocale" = xyes +then : + printf "%s\n" "#define HAVE_NEWLOCALE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "putenv" "ac_cv_func_putenv" +if test "x$ac_cv_func_putenv" = xyes +then : + printf "%s\n" "#define HAVE_PUTENV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv" +if test "x$ac_cv_func_setenv" = xyes +then : + printf "%s\n" "#define HAVE_SETENV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale" +if test "x$ac_cv_func_setlocale" = xyes +then : + printf "%s\n" "#define HAVE_SETLOCALE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf" +if test "x$ac_cv_func_snprintf" = xyes +then : + printf "%s\n" "#define HAVE_SNPRINTF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strnlen" "ac_cv_func_strnlen" +if test "x$ac_cv_func_strnlen" = xyes +then : + printf "%s\n" "#define HAVE_STRNLEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "uselocale" "ac_cv_func_uselocale" +if test "x$ac_cv_func_uselocale" = xyes +then : + printf "%s\n" "#define HAVE_USELOCALE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wcslen" "ac_cv_func_wcslen" +if test "x$ac_cv_func_wcslen" = xyes +then : + printf "%s\n" "#define HAVE_WCSLEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wcsnlen" "ac_cv_func_wcsnlen" +if test "x$ac_cv_func_wcsnlen" = xyes +then : + printf "%s\n" "#define HAVE_WCSNLEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mbrtowc" "ac_cv_func_mbrtowc" +if test "x$ac_cv_func_mbrtowc" = xyes +then : + printf "%s\n" "#define HAVE_MBRTOWC 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wcrtomb" "ac_cv_func_wcrtomb" +if test "x$ac_cv_func_wcrtomb" = xyes +then : + printf "%s\n" "#define HAVE_WCRTOMB 1" >>confdefs.h + +fi + + + ac_fn_check_decl "$LINENO" "_snprintf" "ac_cv_have_decl__snprintf" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl__snprintf" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL__SNPRINTF $ac_have_decl -_ACEOF -ac_fn_c_check_decl "$LINENO" "_snwprintf" "ac_cv_have_decl__snwprintf" "#include -" -if test "x$ac_cv_have_decl__snwprintf" = xyes; then : +printf "%s\n" "#define HAVE_DECL__SNPRINTF $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "_snwprintf" "ac_cv_have_decl__snwprintf" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl__snwprintf" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL__SNWPRINTF $ac_have_decl -_ACEOF +printf "%s\n" "#define HAVE_DECL__SNWPRINTF $ac_have_decl" >>confdefs.h - ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "#include -" -if test "x$ac_cv_have_decl_getc_unlocked" = xyes; then : + ac_fn_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getc_unlocked" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl -_ACEOF +printf "%s\n" "#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl" >>confdefs.h case $gt_cv_func_printf_posix in @@ -11948,69 +12871,73 @@ _ACEOF - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 -$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } -if ${am_cv_langinfo_codeset+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 +printf %s "checking for nl_langinfo and CODESET... " >&6; } +if test ${am_cv_langinfo_codeset+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { char* cs = nl_langinfo(CODESET); return !cs; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : am_cv_langinfo_codeset=yes -else +else $as_nop am_cv_langinfo_codeset=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 -$as_echo "$am_cv_langinfo_codeset" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 +printf "%s\n" "$am_cv_langinfo_codeset" >&6; } if test $am_cv_langinfo_codeset = yes; then -$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h +printf "%s\n" "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 -$as_echo_n "checking for LC_MESSAGES... " >&6; } -if ${gt_cv_val_LC_MESSAGES+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 +printf %s "checking for LC_MESSAGES... " >&6; } +if test ${gt_cv_val_LC_MESSAGES+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { return LC_MESSAGES ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gt_cv_val_LC_MESSAGES=yes -else +else $as_nop gt_cv_val_LC_MESSAGES=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5 -$as_echo "$gt_cv_val_LC_MESSAGES" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5 +printf "%s\n" "$gt_cv_val_LC_MESSAGES" >&6; } if test $gt_cv_val_LC_MESSAGES = yes; then -$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h +printf "%s\n" "#define HAVE_LC_MESSAGES 1" >>confdefs.h fi @@ -12043,11 +12970,12 @@ $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. set dummy ${ac_tool_prefix}windres; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_WINDRES+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_WINDRES+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$WINDRES"; then ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test. else @@ -12055,11 +12983,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_WINDRES="${ac_tool_prefix}windres" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -12070,11 +13002,11 @@ fi fi WINDRES=$ac_cv_prog_WINDRES if test -n "$WINDRES"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5 -$as_echo "$WINDRES" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5 +printf "%s\n" "$WINDRES" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -12083,11 +13015,12 @@ if test -z "$ac_cv_prog_WINDRES"; then ac_ct_WINDRES=$WINDRES # Extract the first word of "windres", so it can be a program name with args. set dummy windres; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_WINDRES+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_WINDRES+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_WINDRES"; then ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test. else @@ -12095,11 +13028,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_WINDRES="windres" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -12110,11 +13047,11 @@ fi fi ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES if test -n "$ac_ct_WINDRES"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5 -$as_echo "$ac_ct_WINDRES" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5 +printf "%s\n" "$ac_ct_WINDRES" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_WINDRES" = x; then @@ -12122,8 +13059,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac WINDRES=$ac_ct_WINDRES @@ -12158,107 +13095,112 @@ fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 -$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } -if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gt_cv_func_CFPreferencesCopyAppValue=yes -else +else $as_nop gt_cv_func_CFPreferencesCopyAppValue=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then -$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h +printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 -$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } -if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { CFLocaleCopyCurrent(); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gt_cv_func_CFLocaleCopyCurrent=yes -else +else $as_nop gt_cv_func_CFLocaleCopyCurrent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf "%s\n" "$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then -$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h +printf "%s\n" "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5 -$as_echo_n "checking for CFLocaleCopyPreferredLanguages... " >&6; } -if ${gt_cv_func_CFLocaleCopyPreferredLanguages+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5 +printf %s "checking for CFLocaleCopyPreferredLanguages... " >&6; } +if test ${gt_cv_func_CFLocaleCopyPreferredLanguages+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { CFLocaleCopyPreferredLanguages(); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gt_cv_func_CFLocaleCopyPreferredLanguages=yes -else +else $as_nop gt_cv_func_CFLocaleCopyPreferredLanguages=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5 -$as_echo "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5 +printf "%s\n" "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; } if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then -$as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h +printf "%s\n" "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h fi INTL_MACOSX_LIBS= @@ -12291,18 +13233,19 @@ $as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included gettext is requested" >&5 -$as_echo_n "checking whether included gettext is requested... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether included gettext is requested" >&5 +printf %s "checking whether included gettext is requested... " >&6; } # Check whether --with-included-gettext was given. -if test "${with_included_gettext+set}" = set; then : +if test ${with_included_gettext+y} +then : withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval -else +else $as_nop nls_cv_force_use_gnu_gettext=no fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $nls_cv_force_use_gnu_gettext" >&5 -$as_echo "$nls_cv_force_use_gnu_gettext" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $nls_cv_force_use_gnu_gettext" >&5 +printf "%s\n" "$nls_cv_force_use_gnu_gettext" >&6; } nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then @@ -12324,11 +13267,12 @@ typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; gt_expression_test_code= fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 -$as_echo_n "checking for GNU gettext in libc... " >&6; } -if eval \${$gt_func_gnugettext_libc+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -12343,7 +13287,7 @@ extern int *_nl_domain_bindings; $gt_revision_test_code int -main () +main (void) { bindtextdomain ("", ""); @@ -12353,17 +13297,18 @@ return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$gt_func_gnugettext_libc=yes" -else +else $as_nop eval "$gt_func_gnugettext_libc=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then @@ -12388,7 +13333,8 @@ $as_echo "$ac_res" >&6; } # Check whether --with-libintl-prefix was given. -if test "${with_libintl_prefix+set}" = set; then : +if test ${with_libintl_prefix+y} +then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no @@ -12826,11 +13772,12 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 -$as_echo_n "checking for GNU gettext in libintl... " >&6; } -if eval \${$gt_func_gnugettext_libintl+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" @@ -12853,7 +13800,7 @@ const char *_nl_expand_alias (const char *); $gt_revision_test_code int -main () +main (void) { bindtextdomain ("", ""); @@ -12863,12 +13810,13 @@ return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$gt_func_gnugettext_libintl=yes" -else +else $as_nop eval "$gt_func_gnugettext_libintl=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" @@ -12890,7 +13838,7 @@ const char *_nl_expand_alias (const char *); $gt_revision_test_code int -main () +main (void) { bindtextdomain ("", ""); @@ -12900,21 +13848,22 @@ return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi eval ac_res=\$$gt_func_gnugettext_libintl - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ @@ -12960,20 +13909,20 @@ $as_echo "$ac_res" >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then -$as_echo "#define ENABLE_NLS 1" >>confdefs.h +printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 -$as_echo_n "checking whether to use NLS... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 -$as_echo_n "checking where the gettext function comes from... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" @@ -12983,18 +13932,18 @@ $as_echo_n "checking where the gettext function comes from... " >&6; } else gt_source="included intl directory" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 -$as_echo "$gt_source" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf "%s\n" "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 -$as_echo_n "checking how to link with libintl... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 -$as_echo "$LIBINTL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf "%s\n" "$LIBINTL" >&6; } for element in $INCINTL; do haveit= @@ -13021,10 +13970,10 @@ $as_echo "$LIBINTL" >&6; } fi -$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h +printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h -$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h +printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h fi @@ -13072,19 +14021,20 @@ $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 -$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } -if eval \${$as_ac_Header+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +printf %s "checking for $ac_hdr that defines DIR... " >&6; } +if eval test \${$as_ac_Header+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> int -main () +main (void) { if ((DIR *) 0) return 0; @@ -13092,19 +14042,21 @@ return 0; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$as_ac_Header=yes" -else +else $as_nop eval "$as_ac_Header=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$as_ac_Header - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break @@ -13113,11 +14065,12 @@ fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -13125,56 +14078,59 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char opendir (); int -main () +main (void) { return opendir (); ; return 0; } _ACEOF -for ac_lib in '' dir; do +for ac_lib in '' dir +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_opendir=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : + if test ${ac_cv_search_opendir+y} +then : break fi done -if ${ac_cv_search_opendir+:} false; then : +if test ${ac_cv_search_opendir+y} +then : -else +else $as_nop ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -13182,196 +14138,315 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char opendir (); int -main () +main (void) { return opendir (); ; return 0; } _ACEOF -for ac_lib in '' x; do +for ac_lib in '' x +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_opendir=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : + if test ${ac_cv_search_opendir+y} +then : break fi done -if ${ac_cv_search_opendir+:} false; then : +if test ${ac_cv_search_opendir+y} +then : -else +else $as_nop ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if ${ac_cv_header_time+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_time=yes -else - ac_cv_header_time=no +ac_fn_c_check_header_compile "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_mkdev_h" = xyes +then : + +printf "%s\n" "#define MAJOR_IN_MKDEV 1" >>confdefs.h + +fi + +if test $ac_cv_header_sys_mkdev_h = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_sysmacros_h" = xyes +then : + +printf "%s\n" "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h + +fi + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + + + ac_fn_c_check_header_compile "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" +if test "x$ac_cv_header_inttypes_h" = xyes +then : + printf "%s\n" "#define HAVE_INTTYPES_H 1" >>confdefs.h + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then -$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h + + +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "stdarg.h" "ac_cv_header_stdarg_h" "$ac_includes_default" +if test "x$ac_cv_header_stdarg_h" = xyes +then : + printf "%s\n" "#define HAVE_STDARG_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "varargs.h" "ac_cv_header_varargs_h" "$ac_includes_default" +if test "x$ac_cv_header_varargs_h" = xyes +then : + printf "%s\n" "#define HAVE_VARARGS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" +if test "x$ac_cv_header_string_h" = xyes +then : + printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf "%s\n" "#define HAVE_MEMORY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "termcap.h" "ac_cv_header_termcap_h" "$ac_includes_default" +if test "x$ac_cv_header_termcap_h" = xyes +then : + printf "%s\n" "#define HAVE_TERMCAP_H 1" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/types.h defines makedev" >&5 -$as_echo_n "checking whether sys/types.h defines makedev... " >&6; } -if ${ac_cv_header_sys_types_h_makedev+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -return makedev(0, 0); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_header_sys_types_h_makedev=yes -else - ac_cv_header_sys_types_h_makedev=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" "$ac_includes_default" +if test "x$ac_cv_header_termio_h" = xyes +then : + printf "%s\n" "#define HAVE_TERMIO_H 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_types_h_makedev" >&5 -$as_echo "$ac_cv_header_sys_types_h_makedev" >&6; } +ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "$ac_includes_default" +if test "x$ac_cv_header_termios_h" = xyes +then : + printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h -if test $ac_cv_header_sys_types_h_makedev = no; then -ac_fn_c_check_header_mongrel "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_mkdev_h" = xyes; then : +fi +ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" +if test "x$ac_cv_header_dlfcn_h" = xyes +then : + printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h -$as_echo "#define MAJOR_IN_MKDEV 1" >>confdefs.h +fi +ac_fn_c_check_header_compile "$LINENO" "stdbool.h" "ac_cv_header_stdbool_h" "$ac_includes_default" +if test "x$ac_cv_header_stdbool_h" = xyes +then : + printf "%s\n" "#define HAVE_STDBOOL_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "stddef.h" "ac_cv_header_stddef_h" "$ac_includes_default" +if test "x$ac_cv_header_stddef_h" = xyes +then : + printf "%s\n" "#define HAVE_STDDEF_H 1" >>confdefs.h +fi +ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" +if test "x$ac_cv_header_stdint_h" = xyes +then : + printf "%s\n" "#define HAVE_STDINT_H 1" >>confdefs.h +fi +ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "$ac_includes_default" +if test "x$ac_cv_header_netdb_h" = xyes +then : + printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h - if test $ac_cv_header_sys_mkdev_h = no; then - ac_fn_c_check_header_mongrel "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_sysmacros_h" = xyes; then : +fi +ac_fn_c_check_header_compile "$LINENO" "pwd.h" "ac_cv_header_pwd_h" "$ac_includes_default" +if test "x$ac_cv_header_pwd_h" = xyes +then : + printf "%s\n" "#define HAVE_PWD_H 1" >>confdefs.h -$as_echo "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h +fi +ac_fn_c_check_header_compile "$LINENO" "grp.h" "ac_cv_header_grp_h" "$ac_includes_default" +if test "x$ac_cv_header_grp_h" = xyes +then : + printf "%s\n" "#define HAVE_GRP_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default" +if test "x$ac_cv_header_strings_h" = xyes +then : + printf "%s\n" "#define HAVE_STRINGS_H 1" >>confdefs.h +fi +ac_fn_c_check_header_compile "$LINENO" "regex.h" "ac_cv_header_regex_h" "$ac_includes_default" +if test "x$ac_cv_header_regex_h" = xyes +then : + printf "%s\n" "#define HAVE_REGEX_H 1" >>confdefs.h - fi fi +ac_fn_c_check_header_compile "$LINENO" "syslog.h" "ac_cv_header_syslog_h" "$ac_includes_default" +if test "x$ac_cv_header_syslog_h" = xyes +then : + printf "%s\n" "#define HAVE_SYSLOG_H 1" >>confdefs.h +fi +ac_fn_c_check_header_compile "$LINENO" "ulimit.h" "ac_cv_header_ulimit_h" "$ac_includes_default" +if test "x$ac_cv_header_ulimit_h" = xyes +then : + printf "%s\n" "#define HAVE_ULIMIT_H 1" >>confdefs.h +fi - for ac_header in inttypes.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" -if test "x$ac_cv_header_inttypes_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_INTTYPES_H 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "sys/pte.h" "ac_cv_header_sys_pte_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_pte_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PTE_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "sys/stream.h" "ac_cv_header_sys_stream_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_stream_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_STREAM_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_FILE_H 1" >>confdefs.h +fi +ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_ioctl_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h -for ac_header in unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ - memory.h locale.h termcap.h termio.h termios.h dlfcn.h \ - stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \ - regex.h syslog.h ulimit.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +fi +ac_fn_c_check_header_compile "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_mman_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_MMAN_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "sys/random.h" "ac_cv_header_sys_random_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_random_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_RANDOM_H 1" >>confdefs.h -for ac_header in sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \ - sys/mman.h sys/param.h sys/random.h sys/socket.h sys/stat.h \ - sys/time.h sys/times.h sys/types.h sys/wait.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +fi +ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_socket_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_stat_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h -for ac_header in netinet/in.h arpa/inet.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +fi +ac_fn_c_check_header_compile "$LINENO" "sys/times.h" "ac_cv_header_sys_times_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_times_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIMES_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_types_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$ac_includes_default" +if test "x$ac_cv_header_netinet_in_h" = xyes +then : + printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "$ac_includes_default" +if test "x$ac_cv_header_arpa_inet_h" = xyes +then : + printf "%s\n" "#define HAVE_ARPA_INET_H 1" >>confdefs.h + +fi ac_fn_c_check_header_compile "$LINENO" "sys/ptem.h" "ac_cv_header_sys_ptem_h" " @@ -13380,37 +14455,38 @@ ac_fn_c_check_header_compile "$LINENO" "sys/ptem.h" "ac_cv_header_sys_ptem_h" " #endif " -if test "x$ac_cv_header_sys_ptem_h" = xyes; then : +if test "x$ac_cv_header_sys_ptem_h" = xyes +then : fi - ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" " #if HAVE_SYS_TIME_H # include #endif " -if test "x$ac_cv_header_sys_resource_h" = xyes; then : - $as_echo "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h fi - # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 -$as_echo_n "checking for working alloca.h... " >&6; } -if ${ac_cv_working_alloca_h+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { char *p = (char *) alloca (2 * sizeof (int)); if (p) return 0; @@ -13418,52 +14494,52 @@ char *p = (char *) alloca (2 * sizeof (int)); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_working_alloca_h=yes -else +else $as_nop ac_cv_working_alloca_h=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 -$as_echo "$ac_cv_working_alloca_h" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf "%s\n" "$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then -$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h +printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 -$as_echo_n "checking for alloca... " >&6; } -if ${ac_cv_func_alloca_works+:} false; then : - $as_echo_n "(cached) " >&6 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test $ac_cv_working_alloca_h = yes; then + ac_cv_func_alloca_works=yes else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __GNUC__ -# define alloca __builtin_alloca -#else -# ifdef _MSC_VER +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER # include # define alloca _alloca # else -# ifdef HAVE_ALLOCA_H -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -void *alloca (size_t); -# endif -# endif +# ifdef __cplusplus +extern "C" # endif +void *alloca (size_t); # endif #endif int -main () +main (void) { char *p = (char *) alloca (1); if (p) return 0; @@ -13471,20 +14547,22 @@ char *p = (char *) alloca (1); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_func_alloca_works=yes -else +else $as_nop ac_cv_func_alloca_works=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 -$as_echo "$ac_cv_func_alloca_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf "%s\n" "$ac_cv_func_alloca_works" >&6; } +fi if test $ac_cv_func_alloca_works = yes; then -$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h +printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h else # The SVR3 libPW and SVR4 libucb both contain incompatible functions @@ -13494,58 +14572,19 @@ else ALLOCA=\${LIBOBJDIR}alloca.$ac_objext -$as_echo "#define C_ALLOCA 1" >>confdefs.h - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 -$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } -if ${ac_cv_os_cray+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#if defined CRAY && ! defined CRAY2 -webecray -#else -wenotbecray -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "webecray" >/dev/null 2>&1; then : - ac_cv_os_cray=yes -else - ac_cv_os_cray=no -fi -rm -f conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 -$as_echo "$ac_cv_os_cray" >&6; } -if test $ac_cv_os_cray = yes; then - for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - -cat >>confdefs.h <<_ACEOF -#define CRAY_STACKSEG_END $ac_func -_ACEOF - - break -fi +printf "%s\n" "#define C_ALLOCA 1" >>confdefs.h - done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 -$as_echo_n "checking stack direction for C alloca... " >&6; } -if ${ac_cv_c_stack_direction+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : ac_cv_c_stack_direction=0 -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default @@ -13566,9 +14605,10 @@ main (int argc, char **argv) return find_stack_direction (0, argc + !argv + 20) < 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_c_stack_direction=1 -else +else $as_nop ac_cv_c_stack_direction=-1 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -13576,72 +14616,67 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 -$as_echo "$ac_cv_c_stack_direction" >&6; } -cat >>confdefs.h <<_ACEOF -#define STACK_DIRECTION $ac_cv_c_stack_direction -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf "%s\n" "$ac_cv_c_stack_direction" >&6; } +printf "%s\n" "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 -$as_echo_n "checking for uid_t in sys/types.h... " >&6; } -if ${ac_cv_type_uid_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 +printf %s "checking for uid_t in sys/types.h... " >&6; } +if test ${ac_cv_type_uid_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "uid_t" >/dev/null 2>&1; then : + $EGREP "uid_t" >/dev/null 2>&1 +then : ac_cv_type_uid_t=yes -else +else $as_nop ac_cv_type_uid_t=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 -$as_echo "$ac_cv_type_uid_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 +printf "%s\n" "$ac_cv_type_uid_t" >&6; } if test $ac_cv_type_uid_t = no; then -$as_echo "#define uid_t int" >>confdefs.h - - -$as_echo "#define gid_t int" >>confdefs.h +printf "%s\n" "#define uid_t int" >>confdefs.h -fi -for ac_header in unistd.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" -if test "x$ac_cv_header_unistd_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_UNISTD_H 1 -_ACEOF +printf "%s\n" "#define gid_t int" >>confdefs.h fi -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working chown" >&5 -$as_echo_n "checking for working chown... " >&6; } -if ${ac_cv_func_chown_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_chown_works=no -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working chown" >&5 +printf %s "checking for working chown... " >&6; } +if test ${ac_cv_func_chown_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on glibc systems. + *-gnu*) ac_cv_func_chown_works=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_chown_works=no ;; + esac +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default #include int -main () +main (void) { char *f = "conftest.chown"; struct stat before, after; @@ -13660,9 +14695,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_func_chown_works=yes -else +else $as_nop ac_cv_func_chown_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -13672,86 +14708,82 @@ fi rm -f conftest.chown fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chown_works" >&5 -$as_echo "$ac_cv_func_chown_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chown_works" >&5 +printf "%s\n" "$ac_cv_func_chown_works" >&6; } if test $ac_cv_func_chown_works = yes; then -$as_echo "#define HAVE_CHOWN 1" >>confdefs.h +printf "%s\n" "#define HAVE_CHOWN 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5 -$as_echo_n "checking whether getpgrp requires zero arguments... " >&6; } -if ${ac_cv_func_getpgrp_void+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5 +printf %s "checking whether getpgrp requires zero arguments... " >&6; } +if test ${ac_cv_func_getpgrp_void+y} +then : + printf %s "(cached) " >&6 +else $as_nop # Use it with a single arg. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { getpgrp (0); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_func_getpgrp_void=no -else +else $as_nop ac_cv_func_getpgrp_void=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpgrp_void" >&5 -$as_echo "$ac_cv_func_getpgrp_void" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpgrp_void" >&5 +printf "%s\n" "$ac_cv_func_getpgrp_void" >&6; } if test $ac_cv_func_getpgrp_void = yes; then -$as_echo "#define GETPGRP_VOID 1" >>confdefs.h - -fi +printf "%s\n" "#define GETPGRP_VOID 1" >>confdefs.h -if ${ac_cv_func_setvbuf_reversed+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_func_setvbuf_reversed=no fi -for ac_func in vprintf -do : - ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" -if test "x$ac_cv_func_vprintf" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_VPRINTF 1 -_ACEOF -ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" -if test "x$ac_cv_func__doprnt" = xyes; then : +if test "x$ac_cv_func_vprintf" = xno +then : + ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" +if test "x$ac_cv_func__doprnt" = xyes +then : -$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h +printf "%s\n" "#define HAVE_DOPRNT 1" >>confdefs.h fi fi -done - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 -$as_echo_n "checking for working strcoll... " >&6; } -if ${ac_cv_func_strcoll_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_strcoll_works=no -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +printf %s "checking for working strcoll... " >&6; } +if test ${ac_cv_func_strcoll_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on glibc systems. + *-gnu*) ac_cv_func_strcoll_works=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_strcoll_works=no ;; + esac +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { return (strcoll ("abc", "def") >= 0 || strcoll ("ABC", "DEF") >= 0 || @@ -13760,9 +14792,10 @@ return (strcoll ("abc", "def") >= 0 || return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_func_strcoll_works=yes -else +else $as_nop ac_cv_func_strcoll_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -13770,11 +14803,11 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 -$as_echo "$ac_cv_func_strcoll_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +printf "%s\n" "$ac_cv_func_strcoll_works" >&6; } if test $ac_cv_func_strcoll_works = yes; then -$as_echo "#define HAVE_STRCOLL 1" >>confdefs.h +printf "%s\n" "#define HAVE_STRCOLL 1" >>confdefs.h fi @@ -13791,23 +14824,24 @@ if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; the fi if test "$ac_cv_func_vprintf" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of vprintf in stdio.h" >&5 -$as_echo_n "checking for declaration of vprintf in stdio.h... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for declaration of vprintf in stdio.h" >&5 +printf %s "checking for declaration of vprintf in stdio.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "[int[ ]*vprintf[^a-zA-Z0-9]]" >/dev/null 2>&1; then : + $EGREP "[int[ ]*vprintf[^a-zA-Z0-9]]" >/dev/null 2>&1 +then : ac_cv_func_vprintf=yes fi -rm -f conftest* +rm -rf conftest* - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vprintf" >&5 -$as_echo "$ac_cv_func_vprintf" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vprintf" >&5 +printf "%s\n" "$ac_cv_func_vprintf" >&6; } if test $ac_cv_func_vprintf = yes; then - $as_echo "#define HAVE_VPRINTF 1" >>confdefs.h + printf "%s\n" "#define HAVE_VPRINTF 1" >>confdefs.h fi fi @@ -13821,83 +14855,189 @@ esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 -$as_echo_n "checking return type of signal handlers... " >&6; } -if ${ac_cv_type_signal+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include +ac_fn_c_check_func "$LINENO" "__setostype" "ac_cv_func___setostype" +if test "x$ac_cv_func___setostype" = xyes +then : + printf "%s\n" "#define HAVE_SETOSTYPE 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes +then : + printf "%s\n" "#define HAVE_WAIT3 1" >>confdefs.h -int -main () -{ -return *(signal (0, 0)) (0) == 1; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_type_signal=int -else - ac_cv_type_signal=void fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf "%s\n" "#define HAVE_MKFIFO 1" >>confdefs.h + +else $as_nop + printf "%s\n" "#define MKFIFO_MISSING 1" >>confdefs.h + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 -$as_echo "$ac_cv_type_signal" >&6; } -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE $ac_cv_type_signal -_ACEOF +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf "%s\n" "#define HAVE_DUP2 1" >>confdefs.h +fi +ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" +if test "x$ac_cv_func_eaccess" = xyes +then : + printf "%s\n" "#define HAVE_EACCESS 1" >>confdefs.h -ac_fn_c_check_func "$LINENO" "__setostype" "ac_cv_func___setostype" -if test "x$ac_cv_func___setostype" = xyes; then : - $as_echo "#define HAVE_SETOSTYPE 1" >>confdefs.h +fi +ac_fn_c_check_func "$LINENO" "fcntl" "ac_cv_func_fcntl" +if test "x$ac_cv_func_fcntl" = xyes +then : + printf "%s\n" "#define HAVE_FCNTL 1" >>confdefs.h fi +ac_fn_c_check_func "$LINENO" "getdtablesize" "ac_cv_func_getdtablesize" +if test "x$ac_cv_func_getdtablesize" = xyes +then : + printf "%s\n" "#define HAVE_GETDTABLESIZE 1" >>confdefs.h -ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" -if test "x$ac_cv_func_wait3" = xyes; then : - $as_echo "#define HAVE_WAIT3 1" >>confdefs.h +fi +ac_fn_c_check_func "$LINENO" "getentropy" "ac_cv_func_getentropy" +if test "x$ac_cv_func_getentropy" = xyes +then : + printf "%s\n" "#define HAVE_GETENTROPY 1" >>confdefs.h fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf "%s\n" "#define HAVE_GETGROUPS 1" >>confdefs.h +fi +ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + printf "%s\n" "#define HAVE_GETHOSTNAME 1" >>confdefs.h -ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" -if test "x$ac_cv_func_mkfifo" = xyes; then : - $as_echo "#define HAVE_MKFIFO 1" >>confdefs.h +fi +ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" +if test "x$ac_cv_func_getpagesize" = xyes +then : + printf "%s\n" "#define HAVE_GETPAGESIZE 1" >>confdefs.h -else - $as_echo "#define MKFIFO_MISSING 1" >>confdefs.h +fi +ac_fn_c_check_func "$LINENO" "getpeername" "ac_cv_func_getpeername" +if test "x$ac_cv_func_getpeername" = xyes +then : + printf "%s\n" "#define HAVE_GETPEERNAME 1" >>confdefs.h fi +ac_fn_c_check_func "$LINENO" "getrandom" "ac_cv_func_getrandom" +if test "x$ac_cv_func_getrandom" = xyes +then : + printf "%s\n" "#define HAVE_GETRANDOM 1" >>confdefs.h +fi +ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" +if test "x$ac_cv_func_getrlimit" = xyes +then : + printf "%s\n" "#define HAVE_GETRLIMIT 1" >>confdefs.h -for ac_func in dup2 eaccess fcntl getdtablesize getentropy getgroups \ - gethostname getpagesize getpeername getrandom getrlimit \ - getrusage gettimeofday kill killpg lstat pselect readlink \ - select setdtablesize setitimer tcgetpgrp uname ulimit waitpid -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +fi +ac_fn_c_check_func "$LINENO" "getrusage" "ac_cv_func_getrusage" +if test "x$ac_cv_func_getrusage" = xyes +then : + printf "%s\n" "#define HAVE_GETRUSAGE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday" +if test "x$ac_cv_func_gettimeofday" = xyes +then : + printf "%s\n" "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "kill" "ac_cv_func_kill" +if test "x$ac_cv_func_kill" = xyes +then : + printf "%s\n" "#define HAVE_KILL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "killpg" "ac_cv_func_killpg" +if test "x$ac_cv_func_killpg" = xyes +then : + printf "%s\n" "#define HAVE_KILLPG 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf "%s\n" "#define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect" +if test "x$ac_cv_func_pselect" = xyes +then : + printf "%s\n" "#define HAVE_PSELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf "%s\n" "#define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "select" "ac_cv_func_select" +if test "x$ac_cv_func_select" = xyes +then : + printf "%s\n" "#define HAVE_SELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setdtablesize" "ac_cv_func_setdtablesize" +if test "x$ac_cv_func_setdtablesize" = xyes +then : + printf "%s\n" "#define HAVE_SETDTABLESIZE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setitimer" "ac_cv_func_setitimer" +if test "x$ac_cv_func_setitimer" = xyes +then : + printf "%s\n" "#define HAVE_SETITIMER 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "tcgetpgrp" "ac_cv_func_tcgetpgrp" +if test "x$ac_cv_func_tcgetpgrp" = xyes +then : + printf "%s\n" "#define HAVE_TCGETPGRP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "uname" "ac_cv_func_uname" +if test "x$ac_cv_func_uname" = xyes +then : + printf "%s\n" "#define HAVE_UNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ulimit" "ac_cv_func_ulimit" +if test "x$ac_cv_func_ulimit" = xyes +then : + printf "%s\n" "#define HAVE_ULIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf "%s\n" "#define HAVE_WAITPID 1" >>confdefs.h fi -done ac_fn_c_check_func "$LINENO" "rename" "ac_cv_func_rename" -if test "x$ac_cv_func_rename" = xyes; then : - $as_echo "#define HAVE_RENAME 1" >>confdefs.h +if test "x$ac_cv_func_rename" = xyes +then : + printf "%s\n" "#define HAVE_RENAME 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" rename.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS rename.$ac_objext" @@ -13907,89 +15047,290 @@ esac fi +ac_fn_c_check_func "$LINENO" "bcopy" "ac_cv_func_bcopy" +if test "x$ac_cv_func_bcopy" = xyes +then : + printf "%s\n" "#define HAVE_BCOPY 1" >>confdefs.h -for ac_func in bcopy bzero confstr faccessat fnmatch \ - getaddrinfo gethostbyname getservbyname getservent inet_aton \ - imaxdiv memmove pathconf putenv raise random regcomp regexec \ - setenv setlinebuf setlocale setvbuf siginterrupt strchr \ - sysconf syslog tcgetattr times ttyname tzset unsetenv -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +fi +ac_fn_c_check_func "$LINENO" "bzero" "ac_cv_func_bzero" +if test "x$ac_cv_func_bzero" = xyes +then : + printf "%s\n" "#define HAVE_BZERO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "confstr" "ac_cv_func_confstr" +if test "x$ac_cv_func_confstr" = xyes +then : + printf "%s\n" "#define HAVE_CONFSTR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "faccessat" "ac_cv_func_faccessat" +if test "x$ac_cv_func_faccessat" = xyes +then : + printf "%s\n" "#define HAVE_FACCESSAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fnmatch" "ac_cv_func_fnmatch" +if test "x$ac_cv_func_fnmatch" = xyes +then : + printf "%s\n" "#define HAVE_FNMATCH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getaddrinfo" "ac_cv_func_getaddrinfo" +if test "x$ac_cv_func_getaddrinfo" = xyes +then : + printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = xyes +then : + printf "%s\n" "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getservbyname" "ac_cv_func_getservbyname" +if test "x$ac_cv_func_getservbyname" = xyes +then : + printf "%s\n" "#define HAVE_GETSERVBYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getservent" "ac_cv_func_getservent" +if test "x$ac_cv_func_getservent" = xyes +then : + printf "%s\n" "#define HAVE_GETSERVENT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "inet_aton" "ac_cv_func_inet_aton" +if test "x$ac_cv_func_inet_aton" = xyes +then : + printf "%s\n" "#define HAVE_INET_ATON 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "imaxdiv" "ac_cv_func_imaxdiv" +if test "x$ac_cv_func_imaxdiv" = xyes +then : + printf "%s\n" "#define HAVE_IMAXDIV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove" +if test "x$ac_cv_func_memmove" = xyes +then : + printf "%s\n" "#define HAVE_MEMMOVE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pathconf" "ac_cv_func_pathconf" +if test "x$ac_cv_func_pathconf" = xyes +then : + printf "%s\n" "#define HAVE_PATHCONF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "putenv" "ac_cv_func_putenv" +if test "x$ac_cv_func_putenv" = xyes +then : + printf "%s\n" "#define HAVE_PUTENV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "raise" "ac_cv_func_raise" +if test "x$ac_cv_func_raise" = xyes +then : + printf "%s\n" "#define HAVE_RAISE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "random" "ac_cv_func_random" +if test "x$ac_cv_func_random" = xyes +then : + printf "%s\n" "#define HAVE_RANDOM 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "regcomp" "ac_cv_func_regcomp" +if test "x$ac_cv_func_regcomp" = xyes +then : + printf "%s\n" "#define HAVE_REGCOMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "regexec" "ac_cv_func_regexec" +if test "x$ac_cv_func_regexec" = xyes +then : + printf "%s\n" "#define HAVE_REGEXEC 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv" +if test "x$ac_cv_func_setenv" = xyes +then : + printf "%s\n" "#define HAVE_SETENV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf" +if test "x$ac_cv_func_setlinebuf" = xyes +then : + printf "%s\n" "#define HAVE_SETLINEBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale" +if test "x$ac_cv_func_setlocale" = xyes +then : + printf "%s\n" "#define HAVE_SETLOCALE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" +if test "x$ac_cv_func_setvbuf" = xyes +then : + printf "%s\n" "#define HAVE_SETVBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "siginterrupt" "ac_cv_func_siginterrupt" +if test "x$ac_cv_func_siginterrupt" = xyes +then : + printf "%s\n" "#define HAVE_SIGINTERRUPT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strchr" "ac_cv_func_strchr" +if test "x$ac_cv_func_strchr" = xyes +then : + printf "%s\n" "#define HAVE_STRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sysconf" "ac_cv_func_sysconf" +if test "x$ac_cv_func_sysconf" = xyes +then : + printf "%s\n" "#define HAVE_SYSCONF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "syslog" "ac_cv_func_syslog" +if test "x$ac_cv_func_syslog" = xyes +then : + printf "%s\n" "#define HAVE_SYSLOG 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "tcgetattr" "ac_cv_func_tcgetattr" +if test "x$ac_cv_func_tcgetattr" = xyes +then : + printf "%s\n" "#define HAVE_TCGETATTR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "times" "ac_cv_func_times" +if test "x$ac_cv_func_times" = xyes +then : + printf "%s\n" "#define HAVE_TIMES 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname" +if test "x$ac_cv_func_ttyname" = xyes +then : + printf "%s\n" "#define HAVE_TTYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "tzset" "ac_cv_func_tzset" +if test "x$ac_cv_func_tzset" = xyes +then : + printf "%s\n" "#define HAVE_TZSET 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "unsetenv" "ac_cv_func_unsetenv" +if test "x$ac_cv_func_unsetenv" = xyes +then : + printf "%s\n" "#define HAVE_UNSETENV 1" >>confdefs.h + +fi + + +ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf" +if test "x$ac_cv_func_vasprintf" = xyes +then : + printf "%s\n" "#define HAVE_VASPRINTF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "asprintf" "ac_cv_func_asprintf" +if test "x$ac_cv_func_asprintf" = xyes +then : + printf "%s\n" "#define HAVE_ASPRINTF 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "isascii" "ac_cv_func_isascii" +if test "x$ac_cv_func_isascii" = xyes +then : + printf "%s\n" "#define HAVE_ISASCII 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isblank" "ac_cv_func_isblank" +if test "x$ac_cv_func_isblank" = xyes +then : + printf "%s\n" "#define HAVE_ISBLANK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isgraph" "ac_cv_func_isgraph" +if test "x$ac_cv_func_isgraph" = xyes +then : + printf "%s\n" "#define HAVE_ISGRAPH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isprint" "ac_cv_func_isprint" +if test "x$ac_cv_func_isprint" = xyes +then : + printf "%s\n" "#define HAVE_ISPRINT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isspace" "ac_cv_func_isspace" +if test "x$ac_cv_func_isspace" = xyes +then : + printf "%s\n" "#define HAVE_ISSPACE 1" >>confdefs.h fi -done +ac_fn_c_check_func "$LINENO" "isxdigit" "ac_cv_func_isxdigit" +if test "x$ac_cv_func_isxdigit" = xyes +then : + printf "%s\n" "#define HAVE_ISXDIGIT 1" >>confdefs.h +fi -for ac_func in vasprintf asprintf -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "getpwent" "ac_cv_func_getpwent" +if test "x$ac_cv_func_getpwent" = xyes +then : + printf "%s\n" "#define HAVE_GETPWENT 1" >>confdefs.h fi -done +ac_fn_c_check_func "$LINENO" "getpwnam" "ac_cv_func_getpwnam" +if test "x$ac_cv_func_getpwnam" = xyes +then : + printf "%s\n" "#define HAVE_GETPWNAM 1" >>confdefs.h -for ac_func in isascii isblank isgraph isprint isspace isxdigit -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +fi +ac_fn_c_check_func "$LINENO" "getpwuid" "ac_cv_func_getpwuid" +if test "x$ac_cv_func_getpwuid" = xyes +then : + printf "%s\n" "#define HAVE_GETPWUID 1" >>confdefs.h fi -done -for ac_func in getpwent getpwnam getpwuid -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes +then : + printf "%s\n" "#define HAVE_MKSTEMP 1" >>confdefs.h fi -done - -for ac_func in mkstemp mkdtemp -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "mkdtemp" "ac_cv_func_mkdtemp" +if test "x$ac_cv_func_mkdtemp" = xyes +then : + printf "%s\n" "#define HAVE_MKDTEMP 1" >>confdefs.h fi -done -for ac_func in arc4random -do : - ac_fn_c_check_func "$LINENO" "arc4random" "ac_cv_func_arc4random" -if test "x$ac_cv_func_arc4random" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_ARC4RANDOM 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "arc4random" "ac_cv_func_arc4random" +if test "x$ac_cv_func_arc4random" = xyes +then : + printf "%s\n" "#define HAVE_ARC4RANDOM 1" >>confdefs.h fi -done ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" -if test "x$ac_cv_func_getcwd" = xyes; then : - $as_echo "#define HAVE_GETCWD 1" >>confdefs.h +if test "x$ac_cv_func_getcwd" = xyes +then : + printf "%s\n" "#define HAVE_GETCWD 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" getcwd.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS getcwd.$ac_objext" @@ -13997,12 +15338,12 @@ else esac fi - ac_fn_c_check_func "$LINENO" "memset" "ac_cv_func_memset" -if test "x$ac_cv_func_memset" = xyes; then : - $as_echo "#define HAVE_MEMSET 1" >>confdefs.h +if test "x$ac_cv_func_memset" = xyes +then : + printf "%s\n" "#define HAVE_MEMSET 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" memset.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS memset.$ac_objext" @@ -14011,12 +15352,12 @@ esac fi - ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" -if test "x$ac_cv_func_strcasecmp" = xyes; then : - $as_echo "#define HAVE_STRCASECMP 1" >>confdefs.h +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" strcasecmp.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strcasecmp.$ac_objext" @@ -14024,12 +15365,12 @@ else esac fi - ac_fn_c_check_func "$LINENO" "strcasestr" "ac_cv_func_strcasestr" -if test "x$ac_cv_func_strcasestr" = xyes; then : - $as_echo "#define HAVE_STRCASESTR 1" >>confdefs.h +if test "x$ac_cv_func_strcasestr" = xyes +then : + printf "%s\n" "#define HAVE_STRCASESTR 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" strcasestr.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strcasestr.$ac_objext" @@ -14037,12 +15378,12 @@ else esac fi - ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" -if test "x$ac_cv_func_strerror" = xyes; then : - $as_echo "#define HAVE_STRERROR 1" >>confdefs.h +if test "x$ac_cv_func_strerror" = xyes +then : + printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" strerror.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strerror.$ac_objext" @@ -14050,12 +15391,12 @@ else esac fi - ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" -if test "x$ac_cv_func_strftime" = xyes; then : - $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h +if test "x$ac_cv_func_strftime" = xyes +then : + printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" strftime.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strftime.$ac_objext" @@ -14063,12 +15404,12 @@ else esac fi - ac_fn_c_check_func "$LINENO" "strnlen" "ac_cv_func_strnlen" -if test "x$ac_cv_func_strnlen" = xyes; then : - $as_echo "#define HAVE_STRNLEN 1" >>confdefs.h +if test "x$ac_cv_func_strnlen" = xyes +then : + printf "%s\n" "#define HAVE_STRNLEN 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" strnlen.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strnlen.$ac_objext" @@ -14076,12 +15417,12 @@ else esac fi - ac_fn_c_check_func "$LINENO" "strpbrk" "ac_cv_func_strpbrk" -if test "x$ac_cv_func_strpbrk" = xyes; then : - $as_echo "#define HAVE_STRPBRK 1" >>confdefs.h +if test "x$ac_cv_func_strpbrk" = xyes +then : + printf "%s\n" "#define HAVE_STRPBRK 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" strpbrk.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strpbrk.$ac_objext" @@ -14089,12 +15430,12 @@ else esac fi - ac_fn_c_check_func "$LINENO" "strstr" "ac_cv_func_strstr" -if test "x$ac_cv_func_strstr" = xyes; then : - $as_echo "#define HAVE_STRSTR 1" >>confdefs.h +if test "x$ac_cv_func_strstr" = xyes +then : + printf "%s\n" "#define HAVE_STRSTR 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" strstr.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strstr.$ac_objext" @@ -14103,12 +15444,12 @@ esac fi - ac_fn_c_check_func "$LINENO" "strtod" "ac_cv_func_strtod" -if test "x$ac_cv_func_strtod" = xyes; then : - $as_echo "#define HAVE_STRTOD 1" >>confdefs.h +if test "x$ac_cv_func_strtod" = xyes +then : + printf "%s\n" "#define HAVE_STRTOD 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" strtod.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strtod.$ac_objext" @@ -14116,12 +15457,12 @@ else esac fi - ac_fn_c_check_func "$LINENO" "strtol" "ac_cv_func_strtol" -if test "x$ac_cv_func_strtol" = xyes; then : - $as_echo "#define HAVE_STRTOL 1" >>confdefs.h +if test "x$ac_cv_func_strtol" = xyes +then : + printf "%s\n" "#define HAVE_STRTOL 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" strtol.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strtol.$ac_objext" @@ -14129,12 +15470,12 @@ else esac fi - ac_fn_c_check_func "$LINENO" "strtoul" "ac_cv_func_strtoul" -if test "x$ac_cv_func_strtoul" = xyes; then : - $as_echo "#define HAVE_STRTOUL 1" >>confdefs.h +if test "x$ac_cv_func_strtoul" = xyes +then : + printf "%s\n" "#define HAVE_STRTOUL 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" strtoul.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strtoul.$ac_objext" @@ -14142,12 +15483,12 @@ else esac fi - ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" -if test "x$ac_cv_func_strtoll" = xyes; then : - $as_echo "#define HAVE_STRTOLL 1" >>confdefs.h +if test "x$ac_cv_func_strtoll" = xyes +then : + printf "%s\n" "#define HAVE_STRTOLL 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" strtoll.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strtoll.$ac_objext" @@ -14155,12 +15496,12 @@ else esac fi - ac_fn_c_check_func "$LINENO" "strtoull" "ac_cv_func_strtoull" -if test "x$ac_cv_func_strtoull" = xyes; then : - $as_echo "#define HAVE_STRTOULL 1" >>confdefs.h +if test "x$ac_cv_func_strtoull" = xyes +then : + printf "%s\n" "#define HAVE_STRTOULL 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" strtoull.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strtoull.$ac_objext" @@ -14168,25 +15509,12 @@ else esac fi - -ac_fn_c_check_func "$LINENO" "strtoimax" "ac_cv_func_strtoimax" -if test "x$ac_cv_func_strtoimax" = xyes; then : - $as_echo "#define HAVE_STRTOIMAX 1" >>confdefs.h - -else - case " $LIBOBJS " in - *" strtoimax.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS strtoimax.$ac_objext" - ;; -esac - -fi - ac_fn_c_check_func "$LINENO" "strtoumax" "ac_cv_func_strtoumax" -if test "x$ac_cv_func_strtoumax" = xyes; then : - $as_echo "#define HAVE_STRTOUMAX 1" >>confdefs.h +if test "x$ac_cv_func_strtoumax" = xyes +then : + printf "%s\n" "#define HAVE_STRTOUMAX 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" strtoumax.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strtoumax.$ac_objext" @@ -14195,12 +15523,12 @@ esac fi - ac_fn_c_check_func "$LINENO" "dprintf" "ac_cv_func_dprintf" -if test "x$ac_cv_func_dprintf" = xyes; then : - $as_echo "#define HAVE_DPRINTF 1" >>confdefs.h +if test "x$ac_cv_func_dprintf" = xyes +then : + printf "%s\n" "#define HAVE_DPRINTF 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" dprintf.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS dprintf.$ac_objext" @@ -14209,12 +15537,12 @@ esac fi - ac_fn_c_check_func "$LINENO" "strchrnul" "ac_cv_func_strchrnul" -if test "x$ac_cv_func_strchrnul" = xyes; then : - $as_echo "#define HAVE_STRCHRNUL 1" >>confdefs.h +if test "x$ac_cv_func_strchrnul" = xyes +then : + printf "%s\n" "#define HAVE_STRCHRNUL 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" strchrnul.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strchrnul.$ac_objext" @@ -14223,12 +15551,12 @@ esac fi - ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" -if test "x$ac_cv_func_strdup" = xyes; then : - $as_echo "#define HAVE_STRDUP 1" >>confdefs.h +if test "x$ac_cv_func_strdup" = xyes +then : + printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" strdup.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strdup.$ac_objext" @@ -14238,481 +15566,209 @@ esac fi +ac_fn_c_check_header_compile "$LINENO" "libaudit.h" "ac_cv_header_libaudit_h" "$ac_includes_default" +if test "x$ac_cv_header_libaudit_h" = xyes +then : + printf "%s\n" "#define HAVE_LIBAUDIT_H 1" >>confdefs.h -for ac_header in libaudit.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "libaudit.h" "ac_cv_header_libaudit_h" "$ac_includes_default" -if test "x$ac_cv_header_libaudit_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBAUDIT_H 1 -_ACEOF - -fi - -done - -ac_fn_c_check_decl "$LINENO" "AUDIT_USER_TTY" "ac_cv_have_decl_AUDIT_USER_TTY" "#include -" -if test "x$ac_cv_have_decl_AUDIT_USER_TTY" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 fi -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_AUDIT_USER_TTY $ac_have_decl -_ACEOF - - -ac_fn_c_check_decl "$LINENO" "confstr" "ac_cv_have_decl_confstr" "$ac_includes_default" -if test "x$ac_cv_have_decl_confstr" = xyes; then : +ac_fn_check_decl "$LINENO" "AUDIT_USER_TTY" "ac_cv_have_decl_AUDIT_USER_TTY" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_AUDIT_USER_TTY" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi +printf "%s\n" "#define HAVE_DECL_AUDIT_USER_TTY $ac_have_decl" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_CONFSTR $ac_have_decl -_ACEOF -ac_fn_c_check_decl "$LINENO" "printf" "ac_cv_have_decl_printf" "$ac_includes_default" -if test "x$ac_cv_have_decl_printf" = xyes; then : +ac_fn_check_decl "$LINENO" "confstr" "ac_cv_have_decl_confstr" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_confstr" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi +printf "%s\n" "#define HAVE_DECL_CONFSTR $ac_have_decl" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_PRINTF $ac_have_decl -_ACEOF - -ac_fn_c_check_decl "$LINENO" "sbrk" "ac_cv_have_decl_sbrk" "$ac_includes_default" -if test "x$ac_cv_have_decl_sbrk" = xyes; then : +ac_fn_check_decl "$LINENO" "printf" "ac_cv_have_decl_printf" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_printf" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi +printf "%s\n" "#define HAVE_DECL_PRINTF $ac_have_decl" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_SBRK $ac_have_decl -_ACEOF - -ac_fn_c_check_decl "$LINENO" "setregid" "ac_cv_have_decl_setregid" "$ac_includes_default" -if test "x$ac_cv_have_decl_setregid" = xyes; then : +ac_fn_check_decl "$LINENO" "sbrk" "ac_cv_have_decl_sbrk" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sbrk" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi +printf "%s\n" "#define HAVE_DECL_SBRK $ac_have_decl" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_SETREGID $ac_have_decl -_ACEOF - -ac_fn_c_check_decl "$LINENO" "strcpy" "ac_cv_have_decl_strcpy" "$ac_includes_default" -if test "x$ac_cv_have_decl_strcpy" = xyes; then : +ac_fn_check_decl "$LINENO" "setregid" "ac_cv_have_decl_setregid" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_setregid" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi +printf "%s\n" "#define HAVE_DECL_SETREGID $ac_have_decl" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRCPY $ac_have_decl -_ACEOF - -ac_fn_c_check_decl "$LINENO" "strsignal" "ac_cv_have_decl_strsignal" "$ac_includes_default" -if test "x$ac_cv_have_decl_strsignal" = xyes; then : +ac_fn_check_decl "$LINENO" "strcpy" "ac_cv_have_decl_strcpy" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_strcpy" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi +printf "%s\n" "#define HAVE_DECL_STRCPY $ac_have_decl" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRSIGNAL $ac_have_decl -_ACEOF - - -for ac_func in setresuid setresgid -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -ac_fn_c_check_decl "$LINENO" "strtold" "ac_cv_have_decl_strtold" "$ac_includes_default" -if test "x$ac_cv_have_decl_strtold" = xyes; then : +ac_fn_check_decl "$LINENO" "strsignal" "ac_cv_have_decl_strsignal" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_strsignal" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi +printf "%s\n" "#define HAVE_DECL_STRSIGNAL $ac_have_decl" >>confdefs.h + + +ac_fn_c_check_func "$LINENO" "setresuid" "ac_cv_func_setresuid" +if test "x$ac_cv_func_setresuid" = xyes +then : + printf "%s\n" "#define HAVE_SETRESUID 1" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRTOLD $ac_have_decl -_ACEOF -if test $ac_have_decl = 1; then : - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken strtold" >&5 -$as_echo_n "checking for broken strtold... " >&6; } - if ${bash_cv_strtold_broken+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -long double r; char *foo, bar; r = strtold(foo, &bar); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - bash_cv_strtold_broken=no -else - bash_cv_strtold_broken=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_strtold_broken" >&5 -$as_echo "$bash_cv_strtold_broken" >&6; } - if test "$bash_cv_strtold_broken" = "yes" ; then - $as_echo "#define STRTOLD_BROKEN 1" >>confdefs.h - - fi - -fi - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoimax" >&5 -$as_echo_n "checking for declaration of strtoimax... " >&6; } -if ${bash_cv_decl_strtoimax+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#if STDC_HEADERS -# include -#endif -#if HAVE_INTTYPES_H -# include -#endif - -int -main () -{ -return !strtoimax; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - bash_cv_decl_strtoimax=yes -else - bash_cv_decl_strtoimax=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoimax" >&5 -$as_echo "$bash_cv_decl_strtoimax" >&6; } -bash_tr_func=HAVE_DECL_`echo strtoimax | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -if test $bash_cv_decl_strtoimax = yes; then - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 1 -_ACEOF - -else - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 0 -_ACEOF - -fi - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtol" >&5 -$as_echo_n "checking for declaration of strtol... " >&6; } -if ${bash_cv_decl_strtol+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#if STDC_HEADERS -# include -#endif -#if HAVE_INTTYPES_H -# include -#endif - -int -main () -{ -return !strtol; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - bash_cv_decl_strtol=yes -else - bash_cv_decl_strtol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtol" >&5 -$as_echo "$bash_cv_decl_strtol" >&6; } -bash_tr_func=HAVE_DECL_`echo strtol | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -if test $bash_cv_decl_strtol = yes; then - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 1 -_ACEOF - -else - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 0 -_ACEOF - -fi - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoll" >&5 -$as_echo_n "checking for declaration of strtoll... " >&6; } -if ${bash_cv_decl_strtoll+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#if STDC_HEADERS -# include -#endif -#if HAVE_INTTYPES_H -# include -#endif - -int -main () -{ -return !strtoll; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - bash_cv_decl_strtoll=yes -else - bash_cv_decl_strtoll=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoll" >&5 -$as_echo "$bash_cv_decl_strtoll" >&6; } -bash_tr_func=HAVE_DECL_`echo strtoll | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -if test $bash_cv_decl_strtoll = yes; then - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 1 -_ACEOF - -else - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 0 -_ACEOF - -fi - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoul" >&5 -$as_echo_n "checking for declaration of strtoul... " >&6; } -if ${bash_cv_decl_strtoul+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#if STDC_HEADERS -# include -#endif -#if HAVE_INTTYPES_H -# include -#endif - -int -main () -{ -return !strtoul; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - bash_cv_decl_strtoul=yes -else - bash_cv_decl_strtoul=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoul" >&5 -$as_echo "$bash_cv_decl_strtoul" >&6; } -bash_tr_func=HAVE_DECL_`echo strtoul | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -if test $bash_cv_decl_strtoul = yes; then - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 1 -_ACEOF - -else - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 0 -_ACEOF - fi +ac_fn_c_check_func "$LINENO" "setresgid" "ac_cv_func_setresgid" +if test "x$ac_cv_func_setresgid" = xyes +then : + printf "%s\n" "#define HAVE_SETRESGID 1" >>confdefs.h +fi +ac_fn_check_decl "$LINENO" "strtold" "ac_cv_have_decl_strtold" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_strtold" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_STRTOLD $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoull" >&5 -$as_echo_n "checking for declaration of strtoull... " >&6; } -if ${bash_cv_decl_strtoull+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken strtold" >&5 +printf %s "checking for broken strtold... " >&6; } + if test ${bash_cv_strtold_broken+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - -#if STDC_HEADERS -# include -#endif -#if HAVE_INTTYPES_H -# include -#endif - +#include int -main () +main (void) { -return !strtoull; +long double r; char *foo, bar; r = strtold(foo, &bar); + ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - bash_cv_decl_strtoull=yes -else - bash_cv_decl_strtoull=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +if ac_fn_c_try_compile "$LINENO" +then : + bash_cv_strtold_broken=no +else $as_nop + bash_cv_strtold_broken=yes fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoull" >&5 -$as_echo "$bash_cv_decl_strtoull" >&6; } -bash_tr_func=HAVE_DECL_`echo strtoull | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -if test $bash_cv_decl_strtoull = yes; then - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 1 -_ACEOF +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -else - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 0 -_ACEOF fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_strtold_broken" >&5 +printf "%s\n" "$bash_cv_strtold_broken" >&6; } + if test "$bash_cv_strtold_broken" = "yes" ; then + printf "%s\n" "#define STRTOLD_BROKEN 1" >>confdefs.h + fi +fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoumax" >&5 -$as_echo_n "checking for declaration of strtoumax... " >&6; } -if ${bash_cv_decl_strtoumax+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#if STDC_HEADERS -# include -#endif -#if HAVE_INTTYPES_H -# include -#endif -int -main () -{ -return !strtoumax; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - bash_cv_decl_strtoumax=yes -else - bash_cv_decl_strtoumax=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +ac_fn_check_decl "$LINENO" "strtol" "ac_cv_have_decl_strtol" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_strtol" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoumax" >&5 -$as_echo "$bash_cv_decl_strtoumax" >&6; } -bash_tr_func=HAVE_DECL_`echo strtoumax | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -if test $bash_cv_decl_strtoumax = yes; then - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 1 -_ACEOF +printf "%s\n" "#define HAVE_DECL_STRTOL $ac_have_decl" >>confdefs.h -else - cat >>confdefs.h <<_ACEOF -#define $bash_tr_func 0 -_ACEOF +ac_fn_check_decl "$LINENO" "strtoll" "ac_cv_have_decl_strtoll" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_strtoll" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_STRTOLL $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "strtoul" "ac_cv_have_decl_strtoul" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_strtoul" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 fi +printf "%s\n" "#define HAVE_DECL_STRTOUL $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "strtoull" "ac_cv_have_decl_strtoull" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_strtoull" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_STRTOULL $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "strtoumax" "ac_cv_have_decl_strtoumax" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_strtoumax" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_STRTOUMAX $ac_have_decl" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 -$as_echo_n "checking for working mktime... " >&6; } -if ${ac_cv_func_working_mktime+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 +printf %s "checking for working mktime... " >&6; } +if test ${ac_cv_func_working_mktime+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : ac_cv_func_working_mktime=no -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Test program from Paul Eggert and Tony Leneis. */ -#ifdef TIME_WITH_SYS_TIME +#include +#ifdef HAVE_SYS_TIME_H # include -# include -#else -# ifdef HAVE_SYS_TIME_H -# include -# else -# include -# endif #endif #include @@ -14851,7 +15907,7 @@ year_2050_test () } int -main () +main (void) { time_t t, delta; int i, j; @@ -14895,9 +15951,10 @@ main () return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_func_working_mktime=yes -else +else $as_nop ac_cv_func_working_mktime=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -14905,8 +15962,8 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 -$as_echo "$ac_cv_func_working_mktime" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 +printf "%s\n" "$ac_cv_func_working_mktime" >&6; } if test $ac_cv_func_working_mktime = no; then case " $LIBOBJS " in *" mktime.$ac_objext "* ) ;; @@ -14918,40 +15975,55 @@ fi -for ac_header in argz.h errno.h fcntl.h malloc.h stdio_ext.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "argz.h" "ac_cv_header_argz_h" "$ac_includes_default" +if test "x$ac_cv_header_argz_h" = xyes +then : + printf "%s\n" "#define HAVE_ARGZ_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "errno.h" "ac_cv_header_errno_h" "$ac_includes_default" +if test "x$ac_cv_header_errno_h" = xyes +then : + printf "%s\n" "#define HAVE_ERRNO_H 1" >>confdefs.h -done - +fi +ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes +then : + printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h +fi +ac_fn_c_check_header_compile "$LINENO" "malloc.h" "ac_cv_header_malloc_h" "$ac_includes_default" +if test "x$ac_cv_header_malloc_h" = xyes +then : + printf "%s\n" "#define HAVE_MALLOC_H 1" >>confdefs.h -for ac_func in getpagesize -do : - ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" -if test "x$ac_cv_func_getpagesize" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETPAGESIZE 1 -_ACEOF +fi +ac_fn_c_check_header_compile "$LINENO" "stdio_ext.h" "ac_cv_header_stdio_ext_h" "$ac_includes_default" +if test "x$ac_cv_header_stdio_ext_h" = xyes +then : + printf "%s\n" "#define HAVE_STDIO_EXT_H 1" >>confdefs.h fi -done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 -$as_echo_n "checking for working mmap... " >&6; } -if ${ac_cv_func_mmap_fixed_mapped+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_mmap_fixed_mapped=no -else + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +printf %s "checking for working mmap... " >&6; } +if test ${ac_cv_func_mmap_fixed_mapped+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on platforms where we know the result. + linux*) ac_cv_func_mmap_fixed_mapped=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_mmap_fixed_mapped=no ;; + esac +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default @@ -14983,10 +16055,6 @@ $ac_includes_default #include #include -#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H -char *malloc (); -#endif - /* This mess was copied from the GNU getpagesize.h. */ #ifndef HAVE_GETPAGESIZE # ifdef _SC_PAGESIZE @@ -15020,7 +16088,7 @@ char *malloc (); #endif /* no HAVE_GETPAGESIZE */ int -main () +main (void) { char *data, *data2, *data3; const char *cdata2; @@ -15088,12 +16156,15 @@ main () if (*(data + i) != *(data3 + i)) return 14; close (fd); + free (data); + free (data3); return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_func_mmap_fixed_mapped=yes -else +else $as_nop ac_cv_func_mmap_fixed_mapped=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -15101,27 +16172,69 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 -$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 +printf "%s\n" "$ac_cv_func_mmap_fixed_mapped" >&6; } if test $ac_cv_func_mmap_fixed_mapped = yes; then -$as_echo "#define HAVE_MMAP 1" >>confdefs.h +printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h fi rm -f conftest.mmap conftest.txt -for ac_func in __argz_count __argz_next __argz_stringify dcgettext mempcpy \ - munmap mremap stpcpy strcspn -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "__argz_count" "ac_cv_func___argz_count" +if test "x$ac_cv_func___argz_count" = xyes +then : + printf "%s\n" "#define HAVE___ARGZ_COUNT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "__argz_next" "ac_cv_func___argz_next" +if test "x$ac_cv_func___argz_next" = xyes +then : + printf "%s\n" "#define HAVE___ARGZ_NEXT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "__argz_stringify" "ac_cv_func___argz_stringify" +if test "x$ac_cv_func___argz_stringify" = xyes +then : + printf "%s\n" "#define HAVE___ARGZ_STRINGIFY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext" +if test "x$ac_cv_func_dcgettext" = xyes +then : + printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" +if test "x$ac_cv_func_mempcpy" = xyes +then : + printf "%s\n" "#define HAVE_MEMPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "munmap" "ac_cv_func_munmap" +if test "x$ac_cv_func_munmap" = xyes +then : + printf "%s\n" "#define HAVE_MUNMAP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mremap" "ac_cv_func_mremap" +if test "x$ac_cv_func_mremap" = xyes +then : + printf "%s\n" "#define HAVE_MREMAP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" +if test "x$ac_cv_func_stpcpy" = xyes +then : + printf "%s\n" "#define HAVE_STPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcspn" "ac_cv_func_strcspn" +if test "x$ac_cv_func_strcspn" = xyes +then : + printf "%s\n" "#define HAVE_STRCSPN 1" >>confdefs.h fi -done INTL_DEP= INTL_INC= LIBINTL_H= @@ -15136,92 +16249,78 @@ fi -for ac_header in wctype.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default" -if test "x$ac_cv_header_wctype_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_WCTYPE_H 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default" +if test "x$ac_cv_header_wctype_h" = xyes +then : + printf "%s\n" "#define HAVE_WCTYPE_H 1" >>confdefs.h fi -done - -for ac_header in wchar.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default" -if test "x$ac_cv_header_wchar_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_WCHAR_H 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default" +if test "x$ac_cv_header_wchar_h" = xyes +then : + printf "%s\n" "#define HAVE_WCHAR_H 1" >>confdefs.h fi -done - -for ac_header in langinfo.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default" -if test "x$ac_cv_header_langinfo_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LANGINFO_H 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default" +if test "x$ac_cv_header_langinfo_h" = xyes +then : + printf "%s\n" "#define HAVE_LANGINFO_H 1" >>confdefs.h fi -done - -for ac_header in mbstr.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "mbstr.h" "ac_cv_header_mbstr_h" "$ac_includes_default" -if test "x$ac_cv_header_mbstr_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MBSTR_H 1 -_ACEOF +ac_fn_c_check_header_compile "$LINENO" "mbstr.h" "ac_cv_header_mbstr_h" "$ac_includes_default" +if test "x$ac_cv_header_mbstr_h" = xyes +then : + printf "%s\n" "#define HAVE_MBSTR_H 1" >>confdefs.h fi -done - ac_fn_c_check_func "$LINENO" "mbrlen" "ac_cv_func_mbrlen" -if test "x$ac_cv_func_mbrlen" = xyes; then : - $as_echo "#define HAVE_MBRLEN 1" >>confdefs.h +if test "x$ac_cv_func_mbrlen" = xyes +then : + printf "%s\n" "#define HAVE_MBRLEN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbscasecmp" "ac_cv_func_mbscasecmp" -if test "x$ac_cv_func_mbscasecmp" = xyes; then : - $as_echo "#define HAVE_MBSCMP 1" >>confdefs.h +if test "x$ac_cv_func_mbscasecmp" = xyes +then : + printf "%s\n" "#define HAVE_MBSCMP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbscmp" "ac_cv_func_mbscmp" -if test "x$ac_cv_func_mbscmp" = xyes; then : - $as_echo "#define HAVE_MBSCMP 1" >>confdefs.h +if test "x$ac_cv_func_mbscmp" = xyes +then : + printf "%s\n" "#define HAVE_MBSCMP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbsnrtowcs" "ac_cv_func_mbsnrtowcs" -if test "x$ac_cv_func_mbsnrtowcs" = xyes; then : - $as_echo "#define HAVE_MBSNRTOWCS 1" >>confdefs.h +if test "x$ac_cv_func_mbsnrtowcs" = xyes +then : + printf "%s\n" "#define HAVE_MBSNRTOWCS 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbsrtowcs" "ac_cv_func_mbsrtowcs" -if test "x$ac_cv_func_mbsrtowcs" = xyes; then : - $as_echo "#define HAVE_MBSRTOWCS 1" >>confdefs.h +if test "x$ac_cv_func_mbsrtowcs" = xyes +then : + printf "%s\n" "#define HAVE_MBSRTOWCS 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbschr" "ac_cv_func_mbschr" -if test "x$ac_cv_func_mbschr" = xyes; then : - $as_echo "#define HAVE_MBSCHR 1" >>confdefs.h +if test "x$ac_cv_func_mbschr" = xyes +then : + printf "%s\n" "#define HAVE_MBSCHR 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" mbschr.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS mbschr.$ac_objext" @@ -15231,43 +16330,48 @@ esac fi - ac_fn_c_check_func "$LINENO" "wcrtomb" "ac_cv_func_wcrtomb" -if test "x$ac_cv_func_wcrtomb" = xyes; then : - $as_echo "#define HAVE_WCRTOMB 1" >>confdefs.h +if test "x$ac_cv_func_wcrtomb" = xyes +then : + printf "%s\n" "#define HAVE_WCRTOMB 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wcscoll" "ac_cv_func_wcscoll" -if test "x$ac_cv_func_wcscoll" = xyes; then : - $as_echo "#define HAVE_WCSCOLL 1" >>confdefs.h +if test "x$ac_cv_func_wcscoll" = xyes +then : + printf "%s\n" "#define HAVE_WCSCOLL 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wcsdup" "ac_cv_func_wcsdup" -if test "x$ac_cv_func_wcsdup" = xyes; then : - $as_echo "#define HAVE_WCSDUP 1" >>confdefs.h +if test "x$ac_cv_func_wcsdup" = xyes +then : + printf "%s\n" "#define HAVE_WCSDUP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wcwidth" "ac_cv_func_wcwidth" -if test "x$ac_cv_func_wcwidth" = xyes; then : - $as_echo "#define HAVE_WCWIDTH 1" >>confdefs.h +if test "x$ac_cv_func_wcwidth" = xyes +then : + printf "%s\n" "#define HAVE_WCWIDTH 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wctype" "ac_cv_func_wctype" -if test "x$ac_cv_func_wctype" = xyes; then : - $as_echo "#define HAVE_WCTYPE 1" >>confdefs.h +if test "x$ac_cv_func_wctype" = xyes +then : + printf "%s\n" "#define HAVE_WCTYPE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wcswidth" "ac_cv_func_wcswidth" -if test "x$ac_cv_func_wcswidth" = xyes; then : - $as_echo "#define HAVE_WCSWIDTH 1" >>confdefs.h +if test "x$ac_cv_func_wcswidth" = xyes +then : + printf "%s\n" "#define HAVE_WCSWIDTH 1" >>confdefs.h -else +else $as_nop case " $LIBOBJS " in *" wcswidth.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS wcswidth.$ac_objext" @@ -15278,17 +16382,17 @@ fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc and mbstate_t are properly declared" >&5 -$as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; } -if ${ac_cv_func_mbrtowc+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc and mbstate_t are properly declared" >&5 +printf %s "checking whether mbrtowc and mbstate_t are properly declared... " >&6; } +if test ${ac_cv_func_mbrtowc+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { wchar_t wc; char const s[] = ""; @@ -15299,82 +16403,74 @@ wchar_t wc; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_func_mbrtowc=yes -else +else $as_nop ac_cv_func_mbrtowc=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5 -$as_echo "$ac_cv_func_mbrtowc" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5 +printf "%s\n" "$ac_cv_func_mbrtowc" >&6; } if test $ac_cv_func_mbrtowc = yes; then -$as_echo "#define HAVE_MBRTOWC 1" >>confdefs.h +printf "%s\n" "#define HAVE_MBRTOWC 1" >>confdefs.h fi if test $ac_cv_func_mbrtowc = yes; then - $as_echo "#define HAVE_MBSTATE_T 1" >>confdefs.h + printf "%s\n" "#define HAVE_MBSTATE_T 1" >>confdefs.h fi -for ac_func in iswlower iswupper towlower towupper iswctype -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "iswlower" "ac_cv_func_iswlower" +if test "x$ac_cv_func_iswlower" = xyes +then : + printf "%s\n" "#define HAVE_ISWLOWER 1" >>confdefs.h fi -done +ac_fn_c_check_func "$LINENO" "iswupper" "ac_cv_func_iswupper" +if test "x$ac_cv_func_iswupper" = xyes +then : + printf "%s\n" "#define HAVE_ISWUPPER 1" >>confdefs.h +fi +ac_fn_c_check_func "$LINENO" "towlower" "ac_cv_func_towlower" +if test "x$ac_cv_func_towlower" = xyes +then : + printf "%s\n" "#define HAVE_TOWLOWER 1" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 -$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } -if ${bash_cv_langinfo_codeset+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -char* cs = nl_langinfo(CODESET); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - bash_cv_langinfo_codeset=yes -else - bash_cv_langinfo_codeset=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +ac_fn_c_check_func "$LINENO" "towupper" "ac_cv_func_towupper" +if test "x$ac_cv_func_towupper" = xyes +then : + printf "%s\n" "#define HAVE_TOWUPPER 1" >>confdefs.h + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_langinfo_codeset" >&5 -$as_echo "$bash_cv_langinfo_codeset" >&6; } -if test $bash_cv_langinfo_codeset = yes; then - $as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h +ac_fn_c_check_func "$LINENO" "iswctype" "ac_cv_func_iswctype" +if test "x$ac_cv_func_iswctype" = xyes +then : + printf "%s\n" "#define HAVE_ISWCTYPE 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t in wchar.h" >&5 -$as_echo_n "checking for wchar_t in wchar.h... " >&6; } -if ${bash_cv_type_wchar_t+:} false; then : - $as_echo_n "(cached) " >&6 -else + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wchar_t in wchar.h" >&5 +printf %s "checking for wchar_t in wchar.h... " >&6; } +if test ${bash_cv_type_wchar_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#include int -main () +main (void) { wchar_t foo; @@ -15384,31 +16480,35 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_type_wchar_t=yes -else +else $as_nop bash_cv_type_wchar_t=no + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wchar_t" >&5 -$as_echo "$bash_cv_type_wchar_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wchar_t" >&5 +printf "%s\n" "$bash_cv_type_wchar_t" >&6; } if test $bash_cv_type_wchar_t = yes; then -$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_WCHAR_T 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctype_t in wctype.h" >&5 -$as_echo_n "checking for wctype_t in wctype.h... " >&6; } -if ${bash_cv_type_wctype_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wctype_t in wctype.h" >&5 +printf %s "checking for wctype_t in wctype.h... " >&6; } +if test ${bash_cv_type_wctype_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include int -main () +main (void) { wctype_t foo; @@ -15418,31 +16518,35 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_type_wctype_t=yes -else +else $as_nop bash_cv_type_wctype_t=no + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wctype_t" >&5 -$as_echo "$bash_cv_type_wctype_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wctype_t" >&5 +printf "%s\n" "$bash_cv_type_wctype_t" >&6; } if test $bash_cv_type_wctype_t = yes; then -$as_echo "#define HAVE_WCTYPE_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_WCTYPE_T 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t in wctype.h" >&5 -$as_echo_n "checking for wint_t in wctype.h... " >&6; } -if ${bash_cv_type_wint_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wint_t in wctype.h" >&5 +printf %s "checking for wint_t in wctype.h... " >&6; } +if test ${bash_cv_type_wint_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include int -main () +main (void) { wint_t foo; @@ -15452,29 +16556,34 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_type_wint_t=yes -else +else $as_nop bash_cv_type_wint_t=no + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wint_t" >&5 -$as_echo "$bash_cv_type_wint_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wint_t" >&5 +printf "%s\n" "$bash_cv_type_wint_t" >&6; } if test $bash_cv_type_wint_t = yes; then -$as_echo "#define HAVE_WINT_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_WINT_T 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wcwidth broken with unicode combining characters" >&5 -$as_echo_n "checking for wcwidth broken with unicode combining characters... " >&6; } -if ${bash_cv_wcwidth_broken+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wcwidth broken with unicode combining characters" >&5 +printf %s "checking for wcwidth broken with unicode combining characters... " >&6; } +if test ${bash_cv_wcwidth_broken+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : bash_cv_wcwidth_broken=no -else + +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -15498,9 +16607,10 @@ char **v; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_wcwidth_broken=yes -else +else $as_nop bash_cv_wcwidth_broken=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -15508,27 +16618,23 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcwidth_broken" >&5 -$as_echo "$bash_cv_wcwidth_broken" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcwidth_broken" >&5 +printf "%s\n" "$bash_cv_wcwidth_broken" >&6; } if test "$bash_cv_wcwidth_broken" = yes; then -$as_echo "#define WCWIDTH_BROKEN 1" >>confdefs.h +printf "%s\n" "#define WCWIDTH_BROKEN 1" >>confdefs.h fi if test "$am_cv_func_iconv" = yes; then OLDLIBS="$LIBS" LIBS="$LIBS $LIBINTL $LIBICONV" - for ac_func in locale_charset -do : - ac_fn_c_check_func "$LINENO" "locale_charset" "ac_cv_func_locale_charset" -if test "x$ac_cv_func_locale_charset" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LOCALE_CHARSET 1 -_ACEOF + ac_fn_c_check_func "$LINENO" "locale_charset" "ac_cv_func_locale_charset" +if test "x$ac_cv_func_locale_charset" = xyes +then : + printf "%s\n" "#define HAVE_LOCALE_CHARSET 1" >>confdefs.h fi -done LIBS="$OLDLIBS" fi @@ -15537,17 +16643,19 @@ fi # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5 -$as_echo_n "checking size of wchar_t... " >&6; } -if ${ac_cv_sizeof_wchar_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "$ac_includes_default"; then : - -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5 +printf %s "checking size of wchar_t... " >&6; } +if test ${ac_cv_sizeof_wchar_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "$ac_includes_default" +then : + +else $as_nop if test "$ac_cv_type_wchar_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (wchar_t) See \`config.log' for more details" "$LINENO" 5; } else @@ -15556,25 +16664,24 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5 -$as_echo "$ac_cv_sizeof_wchar_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5 +printf "%s\n" "$ac_cv_sizeof_wchar_t" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t -_ACEOF +printf "%s\n" "#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t" >>confdefs.h if test "$opt_static_link" != yes; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -15583,78 +16690,64 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dl_dlopen=yes -else +else $as_nop ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBDL 1 -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : + printf "%s\n" "#define HAVE_LIBDL 1" >>confdefs.h LIBS="-ldl $LIBS" fi -for ac_func in dlopen dlclose dlsym -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes +then : + printf "%s\n" "#define HAVE_DLOPEN 1" >>confdefs.h fi -done +ac_fn_c_check_func "$LINENO" "dlclose" "ac_cv_func_dlclose" +if test "x$ac_cv_func_dlclose" = xyes +then : + printf "%s\n" "#define HAVE_DLCLOSE 1" >>confdefs.h fi +ac_fn_c_check_func "$LINENO" "dlsym" "ac_cv_func_dlsym" +if test "x$ac_cv_func_dlsym" = xyes +then : + printf "%s\n" "#define HAVE_DLSYM 1" >>confdefs.h -ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "#include -/* NetBSD declares sys_siglist in unistd.h. */ -#ifdef HAVE_UNISTD_H -# include -#endif - -" -if test "x$ac_cv_have_decl_sys_siglist" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 fi -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_SYS_SIGLIST $ac_have_decl -_ACEOF - - +fi if test "$ac_cv_func_inet_aton" != 'yes'; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_aton" >&5 -$as_echo_n "checking for inet_aton... " >&6; } -if ${bash_cv_func_inet_aton+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_aton" >&5 +printf %s "checking for inet_aton... " >&6; } +if test ${bash_cv_func_inet_aton+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -15663,25 +16756,26 @@ else #include struct in_addr ap; int -main () +main (void) { inet_aton("127.0.0.1", &ap); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : bash_cv_func_inet_aton=yes -else +else $as_nop bash_cv_func_inet_aton=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_inet_aton" >&5 -$as_echo "$bash_cv_func_inet_aton" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_inet_aton" >&5 +printf "%s\n" "$bash_cv_func_inet_aton" >&6; } if test $bash_cv_func_inet_aton = yes; then - $as_echo "#define HAVE_INET_ATON 1" >>confdefs.h + printf "%s\n" "#define HAVE_INET_ATON 1" >>confdefs.h else case " $LIBOBJS " in @@ -15695,11 +16789,12 @@ fi fi case "$host_os" in -irix4*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpwent in -lsun" >&5 -$as_echo_n "checking for getpwent in -lsun... " >&6; } -if ${ac_cv_lib_sun_getpwent+:} false; then : - $as_echo_n "(cached) " >&6 -else +irix4*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getpwent in -lsun" >&5 +printf %s "checking for getpwent in -lsun... " >&6; } +if test ${ac_cv_lib_sun_getpwent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsun $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -15708,33 +16803,30 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char getpwent (); int -main () +main (void) { return getpwent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_sun_getpwent=yes -else +else $as_nop ac_cv_lib_sun_getpwent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sun_getpwent" >&5 -$as_echo "$ac_cv_lib_sun_getpwent" >&6; } -if test "x$ac_cv_lib_sun_getpwent" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBSUN 1 -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sun_getpwent" >&5 +printf "%s\n" "$ac_cv_lib_sun_getpwent" >&6; } +if test "x$ac_cv_lib_sun_getpwent" = xyes +then : + printf "%s\n" "#define HAVE_LIBSUN 1" >>confdefs.h LIBS="-lsun $LIBS" @@ -15747,18 +16839,20 @@ if test "$ac_cv_func_getpeername" = no; then if test "X$bash_cv_have_socklib" = "X"; then _bash_needmsg= else -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket library" >&5 -$as_echo_n "checking for socket library... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket library" >&5 +printf %s "checking for socket library... " >&6; } _bash_needmsg=yes fi -if ${bash_cv_have_socklib+:} false; then : - $as_echo_n "(cached) " >&6 -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpeername in -lsocket" >&5 -$as_echo_n "checking for getpeername in -lsocket... " >&6; } -if ${ac_cv_lib_socket_getpeername+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${bash_cv_have_socklib+y} +then : + printf %s "(cached) " >&6 +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getpeername in -lsocket" >&5 +printf %s "checking for getpeername in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_getpeername+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket -lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -15767,40 +16861,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char getpeername (); int -main () +main (void) { return getpeername (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_socket_getpeername=yes -else +else $as_nop ac_cv_lib_socket_getpeername=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_getpeername" >&5 -$as_echo "$ac_cv_lib_socket_getpeername" >&6; } -if test "x$ac_cv_lib_socket_getpeername" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_getpeername" >&5 +printf "%s\n" "$ac_cv_lib_socket_getpeername" >&6; } +if test "x$ac_cv_lib_socket_getpeername" = xyes +then : bash_cv_have_socklib=yes -else +else $as_nop bash_cv_have_socklib=no fi fi if test "X$_bash_needmsg" = Xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_socklib" >&5 -$as_echo "$bash_cv_have_socklib" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_socklib" >&5 +printf "%s\n" "$bash_cv_have_socklib" >&6; } _bash_needmsg= fi if test $bash_cv_have_socklib = yes; then @@ -15808,18 +16901,20 @@ if test $bash_cv_have_socklib = yes; then if test "X$bash_cv_have_libnsl" = "X"; then _bash_needmsg= else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libnsl" >&5 -$as_echo_n "checking for libnsl... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libnsl" >&5 +printf %s "checking for libnsl... " >&6; } _bash_needmsg=yes fi - if ${bash_cv_have_libnsl+:} false; then : - $as_echo_n "(cached) " >&6 -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for t_open in -lnsl" >&5 -$as_echo_n "checking for t_open in -lnsl... " >&6; } -if ${ac_cv_lib_nsl_t_open+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${bash_cv_have_libnsl+y} +then : + printf %s "(cached) " >&6 +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for t_open in -lnsl" >&5 +printf %s "checking for t_open in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_t_open+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -15828,40 +16923,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char t_open (); int -main () +main (void) { return t_open (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_nsl_t_open=yes -else +else $as_nop ac_cv_lib_nsl_t_open=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_t_open" >&5 -$as_echo "$ac_cv_lib_nsl_t_open" >&6; } -if test "x$ac_cv_lib_nsl_t_open" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_t_open" >&5 +printf "%s\n" "$ac_cv_lib_nsl_t_open" >&6; } +if test "x$ac_cv_lib_nsl_t_open" = xyes +then : bash_cv_have_libnsl=yes -else +else $as_nop bash_cv_have_libnsl=no fi fi if test "X$_bash_needmsg" = Xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_libnsl" >&5 -$as_echo "$bash_cv_have_libnsl" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_libnsl" >&5 +printf "%s\n" "$bash_cv_have_libnsl" >&6; } _bash_needmsg= fi if test $bash_cv_have_libnsl = yes; then @@ -15869,9 +16963,9 @@ $as_echo "$bash_cv_have_libnsl" >&6; } else LIBS="-lsocket $LIBS" fi - $as_echo "#define HAVE_LIBSOCKET 1" >>confdefs.h + printf "%s\n" "#define HAVE_LIBSOCKET 1" >>confdefs.h - $as_echo "#define HAVE_GETPEERNAME 1" >>confdefs.h + printf "%s\n" "#define HAVE_GETPEERNAME 1" >>confdefs.h fi @@ -15880,57 +16974,64 @@ if test "$ac_cv_func_gethostbyname" = no; then if test "X$bash_cv_have_gethostbyname" = "X"; then _bash_needmsg=yes else -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in socket library" >&5 -$as_echo_n "checking for gethostbyname in socket library... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in socket library" >&5 +printf %s "checking for gethostbyname in socket library... " >&6; } _bash_needmsg= fi -if ${bash_cv_have_gethostbyname+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${bash_cv_have_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include + int -main () +main (void) { - struct hostent *hp; - hp = gethostbyname("localhost"); + +struct hostent *hp; +hp = gethostbyname("localhost"); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : bash_cv_have_gethostbyname=yes -else +else $as_nop bash_cv_have_gethostbyname=no + fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - fi if test "X$_bash_needmsg" = Xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in socket library" >&5 -$as_echo_n "checking for gethostbyname in socket library... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in socket library" >&5 +printf %s "checking for gethostbyname in socket library... " >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_gethostbyname" >&5 -$as_echo "$bash_cv_have_gethostbyname" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_gethostbyname" >&5 +printf "%s\n" "$bash_cv_have_gethostbyname" >&6; } if test "$bash_cv_have_gethostbyname" = yes; then -$as_echo "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h +printf "%s\n" "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking type of array argument to getgroups" >&5 -$as_echo_n "checking type of array argument to getgroups... " >&6; } -if ${ac_cv_type_getgroups+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking type of array argument to getgroups" >&5 +printf %s "checking type of array argument to getgroups... " >&6; } +if test ${ac_cv_type_getgroups+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : ac_cv_type_getgroups=cross -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Thanks to Mike Rendell for this test. */ @@ -15940,7 +17041,7 @@ $ac_includes_default #define MAX(x, y) ((x) > (y) ? (x) : (y)) int -main () +main (void) { gid_t gidset[NGID]; int i, n; @@ -15957,9 +17058,10 @@ main () return n > 0 && gidset[n] != val.gval; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_type_getgroups=gid_t -else +else $as_nop ac_cv_type_getgroups=int fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -15973,111 +17075,136 @@ if test $ac_cv_type_getgroups = cross; then _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1; then : + $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1 +then : ac_cv_type_getgroups=gid_t -else +else $as_nop ac_cv_type_getgroups=int fi -rm -f conftest* +rm -rf conftest* fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5 -$as_echo "$ac_cv_type_getgroups" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5 +printf "%s\n" "$ac_cv_type_getgroups" >&6; } -cat >>confdefs.h <<_ACEOF -#define GETGROUPS_T $ac_cv_type_getgroups -_ACEOF +printf "%s\n" "#define GETGROUPS_T $ac_cv_type_getgroups" >>confdefs.h ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" -if test "x$ac_cv_type_off_t" = xyes; then : +if test "x$ac_cv_type_off_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define off_t long int -_ACEOF +printf "%s\n" "#define off_t long int" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" -if test "x$ac_cv_type_mode_t" = xyes; then : +if test "x$ac_cv_type_mode_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define mode_t int -_ACEOF +printf "%s\n" "#define mode_t int" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 -$as_echo_n "checking for uid_t in sys/types.h... " >&6; } -if ${ac_cv_type_uid_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 +printf %s "checking for uid_t in sys/types.h... " >&6; } +if test ${ac_cv_type_uid_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "uid_t" >/dev/null 2>&1; then : + $EGREP "uid_t" >/dev/null 2>&1 +then : ac_cv_type_uid_t=yes -else +else $as_nop ac_cv_type_uid_t=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 -$as_echo "$ac_cv_type_uid_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 +printf "%s\n" "$ac_cv_type_uid_t" >&6; } if test $ac_cv_type_uid_t = no; then -$as_echo "#define uid_t int" >>confdefs.h +printf "%s\n" "#define uid_t int" >>confdefs.h -$as_echo "#define gid_t int" >>confdefs.h +printf "%s\n" "#define gid_t int" >>confdefs.h fi -ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" -if test "x$ac_cv_type_pid_t" = xyes; then : -else + ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default +" +if test "x$ac_cv_type_pid_t" = xyes +then : + +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} -cat >>confdefs.h <<_ACEOF -#define pid_t int _ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else $as_nop + ac_pid_type='__int64' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +printf "%s\n" "#define pid_t $ac_pid_type" >>confdefs.h + fi + ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : +if test "x$ac_cv_type_size_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF +printf "%s\n" "#define size_t unsigned int" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "$ac_includes_default" -if test "x$ac_cv_type_uintptr_t" = xyes; then : +if test "x$ac_cv_type_uintptr_t" = xyes +then : -$as_echo "#define HAVE_UINTPTR_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_UINTPTR_T 1" >>confdefs.h -else +else $as_nop for ac_type in 'unsigned int' 'unsigned long int' \ 'unsigned long long int'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))]; test_array [0] = 0; @@ -16087,15 +17214,14 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -cat >>confdefs.h <<_ACEOF -#define uintptr_t $ac_type -_ACEOF +printf "%s\n" "#define uintptr_t $ac_type" >>confdefs.h ac_type= fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test -z "$ac_type" && break done fi @@ -16103,172 +17229,225 @@ fi ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" -if test "x$ac_cv_type_ssize_t" = xyes; then : +if test "x$ac_cv_type_ssize_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define ssize_t int -_ACEOF +printf "%s\n" "#define ssize_t int" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "time_t" "ac_cv_type_time_t" "$ac_includes_default" -if test "x$ac_cv_type_time_t" = xyes; then : +if test "x$ac_cv_type_time_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define time_t long -_ACEOF +printf "%s\n" "#define time_t long" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long" >&5 -$as_echo_n "checking for long long... " >&6; } -if ${bash_cv_type_long_long+:} false; then : - $as_echo_n "(cached) " >&6 -else + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_type_long_long_int=yes + case $ac_prog_cc_stdc in + no | c89) ;; + *) + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + if test "$cross_compiling" = yes +then : + : +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - -long long ll = 1; int i = 63; +#include + #ifndef LLONG_MAX + # define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + # define LLONG_MAX (HALF - 1 + HALF) + #endif int -main () +main (void) { - -long long llm = (long long) -1; -return ll << i | ll >> i | llm / ll | llm % ll; - +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - bash_cv_type_long_long='long long' -else - bash_cv_type_long_long='long' +if ac_fn_c_try_run "$LINENO" +then : + +else $as_nop + ac_cv_type_long_long_int=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_long_long" >&5 -$as_echo "$bash_cv_type_long_long" >&6; } -if test "$bash_cv_type_long_long" = 'long long'; then - $as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h + fi;; + esac fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +printf "%s\n" "$ac_cv_type_long_long_int" >&6; } + if test $ac_cv_type_long_long_int = yes; then +printf "%s\n" "#define HAVE_LONG_LONG_INT 1" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long" >&5 -$as_echo_n "checking for unsigned long long... " >&6; } -if ${bash_cv_type_unsigned_long_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -unsigned long long ull = 1; int i = 63; -int -main () -{ - -unsigned long long ullmax = (unsigned long long) -1; -return ull << i | ull >> i | ullmax / ull | ullmax % ull; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - bash_cv_type_unsigned_long_long='unsigned long long' -else - bash_cv_type_unsigned_long_long='unsigned long' -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_unsigned_long_long" >&5 -$as_echo "$bash_cv_type_unsigned_long_long" >&6; } -if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then - $as_echo "#define HAVE_UNSIGNED_LONG_LONG 1" >>confdefs.h - -fi + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 -$as_echo_n "checking return type of signal handlers... " >&6; } -if ${ac_cv_type_signal+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_type_unsigned_long_long_int=yes + case $ac_prog_cc_stdc in + no | c89) ;; + *) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; int -main () +main (void) { -return *(signal (0, 0)) (0) == 1; +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); ; return 0; } + _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_type_signal=int -else - ac_cv_type_signal=void +if ac_fn_c_try_link "$LINENO" +then : + +else $as_nop + ac_cv_type_unsigned_long_long_int=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext;; + esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 -$as_echo "$ac_cv_type_signal" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf "%s\n" "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE $ac_cv_type_signal -_ACEOF +printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t in signal.h" >&5 -$as_echo_n "checking for sig_atomic_t in signal.h... " >&6; } -if ${ac_cv_have_sig_atomic_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t in signal.h" >&5 +printf %s "checking for sig_atomic_t in signal.h... " >&6; } +if test ${ac_cv_have_sig_atomic_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - -#include - + #include int -main () +main (void) { sig_atomic_t x; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_have_sig_atomic_t=yes -else +else $as_nop ac_cv_have_sig_atomic_t=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sig_atomic_t" >&5 -$as_echo "$ac_cv_have_sig_atomic_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sig_atomic_t" >&5 +printf "%s\n" "$ac_cv_have_sig_atomic_t" >&6; } if test "$ac_cv_have_sig_atomic_t" = "no" then - ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "$ac_includes_default" -if test "x$ac_cv_type_sig_atomic_t" = xyes; then : -else -cat >>confdefs.h <<_ACEOF -#define sig_atomic_t int +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t" >&5 +printf %s "checking for sig_atomic_t... " >&6; } +if test ${bash_cv_type_sig_atomic_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if HAVE_STDLIB_H +#include +#endif +#if HAVE_STDDEF_H +#include +#endif +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif +#include + _ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "sig_atomic_t" >/dev/null 2>&1 +then : + bash_cv_type_sig_atomic_t=yes +else $as_nop + bash_cv_type_sig_atomic_t=no +fi +rm -rf conftest* + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_sig_atomic_t" >&5 +printf "%s\n" "$bash_cv_type_sig_atomic_t" >&6; } + +if test $bash_cv_type_sig_atomic_t = no; then + printf "%s\n" "#define sig_atomic_t int" >>confdefs.h fi @@ -16279,17 +17458,19 @@ fi # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5 -$as_echo_n "checking size of char... " >&6; } -if ${ac_cv_sizeof_char+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default"; then : - -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of char" >&5 +printf %s "checking size of char... " >&6; } +if test ${ac_cv_sizeof_char+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default" +then : + +else $as_nop if test "$ac_cv_type_char" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (char) See \`config.log' for more details" "$LINENO" 5; } else @@ -16298,31 +17479,31 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5 -$as_echo "$ac_cv_sizeof_char" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5 +printf "%s\n" "$ac_cv_sizeof_char" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_CHAR $ac_cv_sizeof_char -_ACEOF +printf "%s\n" "#define SIZEOF_CHAR $ac_cv_sizeof_char" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 -$as_echo_n "checking size of short... " >&6; } -if ${ac_cv_sizeof_short+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : - -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 +printf %s "checking size of short... " >&6; } +if test ${ac_cv_sizeof_short+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default" +then : + +else $as_nop if test "$ac_cv_type_short" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (short) See \`config.log' for more details" "$LINENO" 5; } else @@ -16331,31 +17512,31 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 -$as_echo "$ac_cv_sizeof_short" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 +printf "%s\n" "$ac_cv_sizeof_short" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SHORT $ac_cv_sizeof_short -_ACEOF +printf "%s\n" "#define SIZEOF_SHORT $ac_cv_sizeof_short" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 -$as_echo_n "checking size of int... " >&6; } -if ${ac_cv_sizeof_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : - -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 +printf %s "checking size of int... " >&6; } +if test ${ac_cv_sizeof_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default" +then : + +else $as_nop if test "$ac_cv_type_int" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (int) See \`config.log' for more details" "$LINENO" 5; } else @@ -16364,31 +17545,31 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 -$as_echo "$ac_cv_sizeof_int" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 +printf "%s\n" "$ac_cv_sizeof_int" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INT $ac_cv_sizeof_int -_ACEOF +printf "%s\n" "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 -$as_echo_n "checking size of long... " >&6; } -if ${ac_cv_sizeof_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : - -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +printf %s "checking size of long... " >&6; } +if test ${ac_cv_sizeof_long+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default" +then : + +else $as_nop if test "$ac_cv_type_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long) See \`config.log' for more details" "$LINENO" 5; } else @@ -16397,31 +17578,31 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 -$as_echo "$ac_cv_sizeof_long" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +printf "%s\n" "$ac_cv_sizeof_long" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG $ac_cv_sizeof_long -_ACEOF +printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char *" >&5 -$as_echo_n "checking size of char *... " >&6; } -if ${ac_cv_sizeof_char_p+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char *))" "ac_cv_sizeof_char_p" "$ac_includes_default"; then : - -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of char *" >&5 +printf %s "checking size of char *... " >&6; } +if test ${ac_cv_sizeof_char_p+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char *))" "ac_cv_sizeof_char_p" "$ac_includes_default" +then : + +else $as_nop if test "$ac_cv_type_char_p" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (char *) See \`config.log' for more details" "$LINENO" 5; } else @@ -16430,31 +17611,64 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char_p" >&5 -$as_echo "$ac_cv_sizeof_char_p" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char_p" >&5 +printf "%s\n" "$ac_cv_sizeof_char_p" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_CHAR_P $ac_cv_sizeof_char_p -_ACEOF +printf "%s\n" "#define SIZEOF_CHAR_P $ac_cv_sizeof_char_p" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 -$as_echo_n "checking size of double... " >&6; } -if ${ac_cv_sizeof_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 +printf %s "checking size of size_t... " >&6; } +if test ${ac_cv_sizeof_size_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default" +then : + +else $as_nop + if test "$ac_cv_type_size_t" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (size_t) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_size_t=0 + fi +fi -else +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 +printf "%s\n" "$ac_cv_sizeof_size_t" >&6; } + + + +printf "%s\n" "#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t" >>confdefs.h + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 +printf %s "checking size of double... " >&6; } +if test ${ac_cv_sizeof_double+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default" +then : + +else $as_nop if test "$ac_cv_type_double" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (double) See \`config.log' for more details" "$LINENO" 5; } else @@ -16463,31 +17677,31 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 -$as_echo "$ac_cv_sizeof_double" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 +printf "%s\n" "$ac_cv_sizeof_double" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_DOUBLE $ac_cv_sizeof_double -_ACEOF +printf "%s\n" "#define SIZEOF_DOUBLE $ac_cv_sizeof_double" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 -$as_echo_n "checking size of long long... " >&6; } -if ${ac_cv_sizeof_long_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : - -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 +printf %s "checking size of long long... " >&6; } +if test ${ac_cv_sizeof_long_long+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default" +then : + +else $as_nop if test "$ac_cv_type_long_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long long) See \`config.log' for more details" "$LINENO" 5; } else @@ -16496,36 +17710,32 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 -$as_echo "$ac_cv_sizeof_long_long" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 +printf "%s\n" "$ac_cv_sizeof_long_long" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long -_ACEOF +printf "%s\n" "#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long" >>confdefs.h ac_fn_c_check_type "$LINENO" "u_int" "ac_cv_type_u_int" "$ac_includes_default" -if test "x$ac_cv_type_u_int" = xyes; then : +if test "x$ac_cv_type_u_int" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define u_int unsigned int -_ACEOF +printf "%s\n" "#define u_int unsigned int" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "u_long" "ac_cv_type_u_long" "$ac_includes_default" -if test "x$ac_cv_type_u_long" = xyes; then : +if test "x$ac_cv_type_u_long" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define u_long unsigned long -_ACEOF +printf "%s\n" "#define u_long unsigned long" >>confdefs.h fi @@ -16533,37 +17743,34 @@ fi if test "$ac_cv_sizeof_short" = 2; then ac_fn_c_check_type "$LINENO" "bits16_t" "ac_cv_type_bits16_t" "$ac_includes_default" -if test "x$ac_cv_type_bits16_t" = xyes; then : +if test "x$ac_cv_type_bits16_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define bits16_t short -_ACEOF +printf "%s\n" "#define bits16_t short" >>confdefs.h fi elif test "$ac_cv_sizeof_char" = 2; then ac_fn_c_check_type "$LINENO" "bits16_t" "ac_cv_type_bits16_t" "$ac_includes_default" -if test "x$ac_cv_type_bits16_t" = xyes; then : +if test "x$ac_cv_type_bits16_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define bits16_t char -_ACEOF +printf "%s\n" "#define bits16_t char" >>confdefs.h fi else ac_fn_c_check_type "$LINENO" "bits16_t" "ac_cv_type_bits16_t" "$ac_includes_default" -if test "x$ac_cv_type_bits16_t" = xyes; then : +if test "x$ac_cv_type_bits16_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define bits16_t short -_ACEOF +printf "%s\n" "#define bits16_t short" >>confdefs.h fi @@ -16572,37 +17779,34 @@ fi if test "$ac_cv_sizeof_short" = 2; then ac_fn_c_check_type "$LINENO" "u_bits16_t" "ac_cv_type_u_bits16_t" "$ac_includes_default" -if test "x$ac_cv_type_u_bits16_t" = xyes; then : +if test "x$ac_cv_type_u_bits16_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define u_bits16_t unsigned short -_ACEOF +printf "%s\n" "#define u_bits16_t unsigned short" >>confdefs.h fi elif test "$ac_cv_sizeof_char" = 2; then ac_fn_c_check_type "$LINENO" "u_bits16_t" "ac_cv_type_u_bits16_t" "$ac_includes_default" -if test "x$ac_cv_type_u_bits16_t" = xyes; then : +if test "x$ac_cv_type_u_bits16_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define u_bits16_t unsigned char -_ACEOF +printf "%s\n" "#define u_bits16_t unsigned char" >>confdefs.h fi else ac_fn_c_check_type "$LINENO" "u_bits16_t" "ac_cv_type_u_bits16_t" "$ac_includes_default" -if test "x$ac_cv_type_u_bits16_t" = xyes; then : +if test "x$ac_cv_type_u_bits16_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define u_bits16_t unsigned short -_ACEOF +printf "%s\n" "#define u_bits16_t unsigned short" >>confdefs.h fi @@ -16611,37 +17815,34 @@ fi if test "$ac_cv_sizeof_int" = 4; then ac_fn_c_check_type "$LINENO" "bits32_t" "ac_cv_type_bits32_t" "$ac_includes_default" -if test "x$ac_cv_type_bits32_t" = xyes; then : +if test "x$ac_cv_type_bits32_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define bits32_t int -_ACEOF +printf "%s\n" "#define bits32_t int" >>confdefs.h fi elif test "$ac_cv_sizeof_long" = 4; then ac_fn_c_check_type "$LINENO" "bits32_t" "ac_cv_type_bits32_t" "$ac_includes_default" -if test "x$ac_cv_type_bits32_t" = xyes; then : +if test "x$ac_cv_type_bits32_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define bits32_t long -_ACEOF +printf "%s\n" "#define bits32_t long" >>confdefs.h fi else ac_fn_c_check_type "$LINENO" "bits32_t" "ac_cv_type_bits32_t" "$ac_includes_default" -if test "x$ac_cv_type_bits32_t" = xyes; then : +if test "x$ac_cv_type_bits32_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define bits32_t int -_ACEOF +printf "%s\n" "#define bits32_t int" >>confdefs.h fi @@ -16650,37 +17851,34 @@ fi if test "$ac_cv_sizeof_int" = 4; then ac_fn_c_check_type "$LINENO" "u_bits32_t" "ac_cv_type_u_bits32_t" "$ac_includes_default" -if test "x$ac_cv_type_u_bits32_t" = xyes; then : +if test "x$ac_cv_type_u_bits32_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define u_bits32_t unsigned int -_ACEOF +printf "%s\n" "#define u_bits32_t unsigned int" >>confdefs.h fi elif test "$ac_cv_sizeof_long" = 4; then ac_fn_c_check_type "$LINENO" "u_bits32_t" "ac_cv_type_u_bits32_t" "$ac_includes_default" -if test "x$ac_cv_type_u_bits32_t" = xyes; then : +if test "x$ac_cv_type_u_bits32_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define u_bits32_t unsigned long -_ACEOF +printf "%s\n" "#define u_bits32_t unsigned long" >>confdefs.h fi else ac_fn_c_check_type "$LINENO" "u_bits32_t" "ac_cv_type_u_bits32_t" "$ac_includes_default" -if test "x$ac_cv_type_u_bits32_t" = xyes; then : +if test "x$ac_cv_type_u_bits32_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define u_bits32_t unsigned int -_ACEOF +printf "%s\n" "#define u_bits32_t unsigned int" >>confdefs.h fi @@ -16689,61 +17887,56 @@ fi if test "$ac_cv_sizeof_char_p" = 8; then ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default" -if test "x$ac_cv_type_bits64_t" = xyes; then : +if test "x$ac_cv_type_bits64_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define bits64_t char * -_ACEOF +printf "%s\n" "#define bits64_t char *" >>confdefs.h fi elif test "$ac_cv_sizeof_double" = 8; then ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default" -if test "x$ac_cv_type_bits64_t" = xyes; then : +if test "x$ac_cv_type_bits64_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define bits64_t double -_ACEOF +printf "%s\n" "#define bits64_t double" >>confdefs.h fi elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default" -if test "x$ac_cv_type_bits64_t" = xyes; then : +if test "x$ac_cv_type_bits64_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define bits64_t long long -_ACEOF +printf "%s\n" "#define bits64_t long long" >>confdefs.h fi elif test "$ac_cv_sizeof_long" = 8; then ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default" -if test "x$ac_cv_type_bits64_t" = xyes; then : +if test "x$ac_cv_type_bits64_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define bits64_t long -_ACEOF +printf "%s\n" "#define bits64_t long" >>confdefs.h fi else ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default" -if test "x$ac_cv_type_bits64_t" = xyes; then : +if test "x$ac_cv_type_bits64_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define bits64_t double -_ACEOF +printf "%s\n" "#define bits64_t double" >>confdefs.h fi @@ -16753,60 +17946,57 @@ fi if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" -if test "x$ac_cv_type_ptrdiff_t" = xyes; then : +if test "x$ac_cv_type_ptrdiff_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define ptrdiff_t int -_ACEOF +printf "%s\n" "#define ptrdiff_t int" >>confdefs.h fi elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" -if test "x$ac_cv_type_ptrdiff_t" = xyes; then : +if test "x$ac_cv_type_ptrdiff_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define ptrdiff_t long -_ACEOF +printf "%s\n" "#define ptrdiff_t long" >>confdefs.h fi elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" -if test "x$ac_cv_type_ptrdiff_t" = xyes; then : +if test "x$ac_cv_type_ptrdiff_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define ptrdiff_t long long -_ACEOF +printf "%s\n" "#define ptrdiff_t long long" >>confdefs.h fi else ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" -if test "x$ac_cv_type_ptrdiff_t" = xyes; then : +if test "x$ac_cv_type_ptrdiff_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define ptrdiff_t int -_ACEOF +printf "%s\n" "#define ptrdiff_t int" >>confdefs.h fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 -$as_echo_n "checking whether stat file-mode macros are broken... " >&6; } -if ${ac_cv_header_stat_broken+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +printf %s "checking whether stat file-mode macros are broken... " >&6; } +if test ${ac_cv_header_stat_broken+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -16829,27 +18019,29 @@ extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_header_stat_broken=no -else +else $as_nop ac_cv_header_stat_broken=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 -$as_echo "$ac_cv_header_stat_broken" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +printf "%s\n" "$ac_cv_header_stat_broken" >&6; } if test $ac_cv_header_stat_broken = yes; then -$as_echo "#define STAT_MACROS_BROKEN 1" >>confdefs.h +printf "%s\n" "#define STAT_MACROS_BROKEN 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether #! works in shell scripts" >&5 -$as_echo_n "checking whether #! works in shell scripts... " >&6; } -if ${ac_cv_sys_interpreter+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether #! works in shell scripts" >&5 +printf %s "checking whether #! works in shell scripts... " >&6; } +if test ${ac_cv_sys_interpreter+y} +then : + printf %s "(cached) " >&6 +else $as_nop echo '#! /bin/cat exit 69 ' >conftest @@ -16862,128 +18054,67 @@ else fi rm -f conftest fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_interpreter" >&5 -$as_echo "$ac_cv_sys_interpreter" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_interpreter" >&5 +printf "%s\n" "$ac_cv_sys_interpreter" >&6; } interpval=$ac_cv_sys_interpreter if test $ac_cv_sys_interpreter = yes; then -$as_echo "#define HAVE_HASH_BANG_EXEC 1" >>confdefs.h - -fi - -if test "$ac_cv_func_lstat" = "no"; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for lstat" >&5 -$as_echo_n "checking for lstat... " >&6; } -if ${bash_cv_func_lstat+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -int -main () -{ - lstat(".",(struct stat *)0); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - bash_cv_func_lstat=yes -else - bash_cv_func_lstat=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_lstat" >&5 -$as_echo "$bash_cv_func_lstat" >&6; } -if test $bash_cv_func_lstat = yes; then - $as_echo "#define HAVE_LSTAT 1" >>confdefs.h - -fi - -fi - +printf "%s\n" "#define HAVE_HASH_BANG_EXEC 1" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the ctype macros accept non-ascii characters" >&5 -$as_echo_n "checking whether the ctype macros accept non-ascii characters... " >&6; } -if ${bash_cv_func_ctype_nonascii+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&2;} - bash_cv_func_ctype_nonascii=no +fi -else +if test "$ac_cv_func_lstat" = "no"; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lstat" >&5 +printf %s "checking for lstat... " >&6; } +if test ${bash_cv_func_lstat+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef HAVE_LOCALE_H -#include -#endif -#include -#include -#include + #include + #include int -main(c, v) -int c; -char *v[]; +main (void) { - char *deflocale; - unsigned char x; - int r1, r2; - -#ifdef HAVE_SETLOCALE - /* We take a shot here. If that locale is not known, try the - system default. We try this one because '\342' (226) is - known to be a printable character in that locale. */ - deflocale = setlocale(LC_ALL, "en_US.ISO8859-1"); - if (deflocale == 0) - deflocale = setlocale(LC_ALL, ""); -#endif - - x = '\342'; - r1 = isprint(x); - x -= 128; - r2 = isprint(x); - exit (r1 == 0 || r2 == 0); + lstat(".",(struct stat *)0); + ; + return 0; } - _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - bash_cv_func_ctype_nonascii=yes -else - bash_cv_func_ctype_nonascii=no +if ac_fn_c_try_link "$LINENO" +then : + bash_cv_func_lstat=yes +else $as_nop + bash_cv_func_lstat=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_lstat" >&5 +printf "%s\n" "$bash_cv_func_lstat" >&6; } +if test $bash_cv_func_lstat = yes; then + printf "%s\n" "#define HAVE_LSTAT 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_ctype_nonascii" >&5 -$as_echo "$bash_cv_func_ctype_nonascii" >&6; } -if test $bash_cv_func_ctype_nonascii = yes; then -$as_echo "#define CTYPE_NON_ASCII 1" >>confdefs.h - fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if dup2 fails to clear the close-on-exec flag" >&5 -$as_echo_n "checking if dup2 fails to clear the close-on-exec flag... " >&6; } -if ${bash_cv_dup2_broken+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if dup2 fails to clear the close-on-exec flag" >&5 +printf %s "checking if dup2 fails to clear the close-on-exec flag... " >&6; } +if test ${bash_cv_dup2_broken+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&5 +printf "%s\n" "$as_me: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&2;} bash_cv_dup2_broken=no -else + +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -17006,36 +18137,39 @@ main() } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_dup2_broken=yes -else +else $as_nop bash_cv_dup2_broken=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dup2_broken" >&5 -$as_echo "$bash_cv_dup2_broken" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dup2_broken" >&5 +printf "%s\n" "$bash_cv_dup2_broken" >&6; } if test $bash_cv_dup2_broken = yes; then -$as_echo "#define DUP2_BROKEN 1" >>confdefs.h +printf "%s\n" "#define DUP2_BROKEN 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pgrps need synchronization" >&5 -$as_echo_n "checking whether pgrps need synchronization... " >&6; } -if ${bash_cv_pgrp_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pgrps need synchronization" >&5 +printf %s "checking whether pgrps need synchronization... " >&6; } +if test ${bash_cv_pgrp_pipe+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5 +printf "%s\n" "$as_me: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&2;} bash_cv_pgrp_pipe=no -else + +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -17093,37 +18227,43 @@ main() } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_pgrp_pipe=no -else +else $as_nop bash_cv_pgrp_pipe=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_pgrp_pipe" >&5 -$as_echo "$bash_cv_pgrp_pipe" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_pgrp_pipe" >&5 +printf "%s\n" "$bash_cv_pgrp_pipe" >&6; } if test $bash_cv_pgrp_pipe = yes; then -$as_echo "#define PGRP_PIPE 1" >>confdefs.h +printf "%s\n" "#define PGRP_PIPE 1" >>confdefs.h fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for type of signal functions" >&5 +printf %s "checking for type of signal functions... " >&6; } +if test ${bash_cv_signal_vintage+y} +then : + printf %s "(cached) " >&6 +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for type of signal functions" >&5 -$as_echo_n "checking for type of signal functions... " >&6; } -if ${bash_cv_signal_vintage+:} false; then : - $as_echo_n "(cached) " >&6 -else - +if test ${bash_cv_posix_signals+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include + int -main () +main (void) { sigset_t ss; @@ -17136,122 +18276,185 @@ main () return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : + bash_cv_posix_signals=yes +else $as_nop + bash_cv_posix_signals=no + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + + +if test $bash_cv_posix_signals = yes; then bash_cv_signal_vintage=posix else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + if test ${bash_cv_bsd_signals+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include + int -main () +main (void) { - int mask = sigmask(SIGINT); - sigsetmask(mask); sigblock(mask); sigpause(mask); +int mask = sigmask(SIGINT); +sigsetmask(mask); sigblock(mask); sigpause(mask); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - bash_cv_signal_vintage=4.2bsd -else +if ac_fn_c_try_link "$LINENO" +then : + bash_cv_bsd_signals=yes +else $as_nop + bash_cv_bsd_signals=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + + + if test $bash_cv_bsd_signals = yes; then + bash_cv_signal_vintage=4.2bsd + else + if test ${bash_cv_sysv_signals+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include - RETSIGTYPE foo() { } +#include +void foo() { } + int -main () +main (void) { - int mask = sigmask(SIGINT); - sigset(SIGINT, foo); sigrelse(SIGINT); - sighold(SIGINT); sigpause(SIGINT); +int mask = sigmask(SIGINT); +sigset(SIGINT, foo); sigrelse(SIGINT); +sighold(SIGINT); sigpause(SIGINT); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - bash_cv_signal_vintage=svr3 -else - bash_cv_signal_vintage=v7 +if ac_fn_c_try_link "$LINENO" +then : + bash_cv_sysv_signals=yes +else $as_nop + bash_cv_sysv_signals=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + + if test $bash_cv_sysv_signals = yes; then + bash_cv_signal_vintage=svr3 + else + bash_cv_signal_vintage=v7 + fi + fi fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_signal_vintage" >&5 -$as_echo "$bash_cv_signal_vintage" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_signal_vintage" >&5 +printf "%s\n" "$bash_cv_signal_vintage" >&6; } if test "$bash_cv_signal_vintage" = posix; then -$as_echo "#define HAVE_POSIX_SIGNALS 1" >>confdefs.h +printf "%s\n" "#define HAVE_POSIX_SIGNALS 1" >>confdefs.h elif test "$bash_cv_signal_vintage" = "4.2bsd"; then -$as_echo "#define HAVE_BSD_SIGNALS 1" >>confdefs.h +printf "%s\n" "#define HAVE_BSD_SIGNALS 1" >>confdefs.h elif test "$bash_cv_signal_vintage" = svr3; then -$as_echo "#define HAVE_USG_SIGHOLD 1" >>confdefs.h +printf "%s\n" "#define HAVE_USG_SIGHOLD 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys_errlist and sys_nerr" >&5 -$as_echo_n "checking for sys_errlist and sys_nerr... " >&6; } -if ${bash_cv_sys_errlist+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sys_errlist and sys_nerr" >&5 +printf %s "checking for sys_errlist and sys_nerr... " >&6; } +if test ${bash_cv_sys_errlist+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include + int -main () +main (void) { + extern char *sys_errlist[]; - extern int sys_nerr; - char *msg = sys_errlist[sys_nerr - 1]; +extern int sys_nerr; +char *msg = sys_errlist[sys_nerr - 1]; + ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : bash_cv_sys_errlist=yes -else +else $as_nop bash_cv_sys_errlist=no + fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_errlist" >&5 -$as_echo "$bash_cv_sys_errlist" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_errlist" >&5 +printf "%s\n" "$bash_cv_sys_errlist" >&6; } if test $bash_cv_sys_errlist = yes; then -$as_echo "#define HAVE_SYS_ERRLIST 1" >>confdefs.h +printf "%s\n" "#define HAVE_SYS_ERRLIST 1" >>confdefs.h fi +ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "#include +/* NetBSD declares sys_siglist in unistd.h. */ +#ifdef HAVE_UNISTD_H +# include +#endif -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys_siglist in system C library" >&5 -$as_echo_n "checking for sys_siglist in system C library... " >&6; } -if ${bash_cv_sys_siglist+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&2;} +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sys_siglist" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sys_siglist in system C library" >&5 +printf %s "checking for sys_siglist in system C library... " >&6; } +if test ${bash_cv_sys_siglist+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&5 +printf "%s\n" "$as_me: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&2;} bash_cv_sys_siglist=no -else + +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -17270,10 +18473,12 @@ main() char *msg = sys_siglist[2]; exit(msg == 0); } + _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_sys_siglist=yes -else +else $as_nop bash_cv_sys_siglist=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -17282,59 +18487,19 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_siglist" >&5 -$as_echo "$bash_cv_sys_siglist" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_siglist" >&5 +printf "%s\n" "$bash_cv_sys_siglist" >&6; } if test $bash_cv_sys_siglist = yes; then -$as_echo "#define HAVE_SYS_SIGLIST 1" >>confdefs.h +printf "%s\n" "#define HAVE_SYS_SIGLIST 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sys_siglist in signal.h or unistd.h" >&5 -$as_echo_n "checking for _sys_siglist in signal.h or unistd.h... " >&6; } -if ${bash_cv_decl_under_sys_siglist+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#ifdef HAVE_UNISTD_H -#include -#endif -int -main () -{ - char *msg = _sys_siglist[2]; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - bash_cv_decl_under_sys_siglist=yes -else - bash_cv_decl_under_sys_siglist=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_under_sys_siglist" >&5 -$as_echo "$bash_cv_decl_under_sys_siglist" >&6; } -if test $bash_cv_decl_under_sys_siglist = yes; then -$as_echo "#define UNDER_SYS_SIGLIST_DECLARED 1" >>confdefs.h - -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sys_siglist in system C library" >&5 -$as_echo_n "checking for _sys_siglist in system C library... " >&6; } -if ${bash_cv_under_sys_siglist+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&2;} - bash_cv_under_sys_siglist=no -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _sys_siglist in signal.h or unistd.h" >&5 +printf %s "checking for _sys_siglist in signal.h or unistd.h... " >&6; } +if test ${bash_cv_decl_under_sys_siglist+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -17343,261 +18508,98 @@ else #ifdef HAVE_UNISTD_H #include #endif -#include -#ifndef UNDER_SYS_SIGLIST_DECLARED -extern char *_sys_siglist[]; -#endif -int -main() -{ -char *msg = (char *)_sys_siglist[2]; -exit(msg == 0); -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - bash_cv_under_sys_siglist=yes -else - bash_cv_under_sys_siglist=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_under_sys_siglist" >&5 -$as_echo "$bash_cv_under_sys_siglist" >&6; } -if test $bash_cv_under_sys_siglist = yes; then -$as_echo "#define HAVE_UNDER_SYS_SIGLIST 1" >>confdefs.h - -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether signal handlers are of type void" >&5 -$as_echo_n "checking whether signal handlers are of type void... " >&6; } -if ${bash_cv_void_sighandler+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#ifdef signal -#undef signal -#endif -#ifdef __cplusplus -extern "C" -#endif -void (*signal ()) (); int -main () -{ -int i; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - bash_cv_void_sighandler=yes -else - bash_cv_void_sighandler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_void_sighandler" >&5 -$as_echo "$bash_cv_void_sighandler" >&6; } -if test $bash_cv_void_sighandler = yes; then -$as_echo "#define VOID_SIGHANDLER 1" >>confdefs.h - -fi - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_t" >&5 -$as_echo_n "checking for clock_t... " >&6; } -if ${bash_cv_type_clock_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#if STDC_HEADERS -#include -#include -#endif -#if HAVE_INTTYPES_H -#include -#endif -#if HAVE_STDINT_H -#include -#endif -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "clock_t" >/dev/null 2>&1; then : - bash_cv_type_clock_t=yes -else - bash_cv_type_clock_t=no -fi -rm -f conftest* - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_clock_t" >&5 -$as_echo "$bash_cv_type_clock_t" >&6; } - -if test $bash_cv_type_clock_t = no; then - cat >>confdefs.h <<_ACEOF -#define clock_t long -_ACEOF - -fi - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigset_t" >&5 -$as_echo_n "checking for sigset_t... " >&6; } -if ${bash_cv_type_sigset_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#if STDC_HEADERS -#include -#include -#endif -#if HAVE_INTTYPES_H -#include -#endif -#if HAVE_STDINT_H -#include -#endif -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "sigset_t" >/dev/null 2>&1; then : - bash_cv_type_sigset_t=yes -else - bash_cv_type_sigset_t=no -fi -rm -f conftest* - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_sigset_t" >&5 -$as_echo "$bash_cv_type_sigset_t" >&6; } - -if test $bash_cv_type_sigset_t = no; then - cat >>confdefs.h <<_ACEOF -#define sigset_t int -_ACEOF - -fi - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t" >&5 -$as_echo_n "checking for sig_atomic_t... " >&6; } -if ${bash_cv_type_sig_atomic_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#if STDC_HEADERS -#include -#include -#endif -#if HAVE_INTTYPES_H -#include -#endif -#if HAVE_STDINT_H -#include -#endif -#include - +main (void) +{ + char *msg = _sys_siglist[2]; + ; + return 0; +} _ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "sig_atomic_t" >/dev/null 2>&1; then : - bash_cv_type_sig_atomic_t=yes -else - bash_cv_type_sig_atomic_t=no +if ac_fn_c_try_compile "$LINENO" +then : + bash_cv_decl_under_sys_siglist=yes +else $as_nop + bash_cv_decl_under_sys_siglist=no fi -rm -f conftest* - +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_sig_atomic_t" >&5 -$as_echo "$bash_cv_type_sig_atomic_t" >&6; } - -if test $bash_cv_type_sig_atomic_t = no; then - cat >>confdefs.h <<_ACEOF -#define sig_atomic_t int -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_under_sys_siglist" >&5 +printf "%s\n" "$bash_cv_decl_under_sys_siglist" >&6; } +if test $bash_cv_decl_under_sys_siglist = yes; then +printf "%s\n" "#define UNDER_SYS_SIGLIST_DECLARED 1" >>confdefs.h fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _sys_siglist in system C library" >&5 +printf %s "checking for _sys_siglist in system C library... " >&6; } +if test ${bash_cv_under_sys_siglist+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&5 +printf "%s\n" "$as_me: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&2;} + bash_cv_under_sys_siglist=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for quad_t" >&5 -$as_echo_n "checking for quad_t... " >&6; } -if ${bash_cv_type_quad_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include -#if STDC_HEADERS -#include -#include -#endif -#if HAVE_INTTYPES_H -#include +#include +#ifdef HAVE_UNISTD_H +#include #endif -#if HAVE_STDINT_H -#include +#include +#ifndef UNDER_SYS_SIGLIST_DECLARED +extern char *_sys_siglist[]; #endif - +int +main() +{ +char *msg = (char *)_sys_siglist[2]; +exit(msg == 0); +} _ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "quad_t" >/dev/null 2>&1; then : - bash_cv_type_quad_t=yes -else - bash_cv_type_quad_t=no +if ac_fn_c_try_run "$LINENO" +then : + bash_cv_under_sys_siglist=yes +else $as_nop + bash_cv_under_sys_siglist=no fi -rm -f conftest* - +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_quad_t" >&5 -$as_echo "$bash_cv_type_quad_t" >&6; } -if test $bash_cv_type_quad_t = yes; then - $as_echo "#define HAVE_QUAD_T 1" >>confdefs.h +fi - fi -if test $bash_cv_type_quad_t = no; then - cat >>confdefs.h <<_ACEOF -#define quad_t long -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_under_sys_siglist" >&5 +printf "%s\n" "$bash_cv_under_sys_siglist" >&6; } +if test $bash_cv_under_sys_siglist = yes; then +printf "%s\n" "#define HAVE_UNDER_SYS_SIGLIST 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5 -$as_echo_n "checking for intmax_t... " >&6; } -if ${bash_cv_type_intmax_t+:} false; then : - $as_echo_n "(cached) " >&6 -else + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_t" >&5 +printf %s "checking for clock_t... " >&6; } +if test ${bash_cv_type_clock_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include -#if STDC_HEADERS +#if HAVE_STDLIB_H #include +#endif +#if HAVE_STDDEF_H #include #endif #if HAVE_INTTYPES_H @@ -17606,41 +18608,43 @@ else #if HAVE_STDINT_H #include #endif - +#include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "intmax_t" >/dev/null 2>&1; then : - bash_cv_type_intmax_t=yes -else - bash_cv_type_intmax_t=no + $EGREP "clock_t" >/dev/null 2>&1 +then : + bash_cv_type_clock_t=yes +else $as_nop + bash_cv_type_clock_t=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_intmax_t" >&5 -$as_echo "$bash_cv_type_intmax_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_clock_t" >&5 +printf "%s\n" "$bash_cv_type_clock_t" >&6; } -if test $bash_cv_type_intmax_t = no; then - cat >>confdefs.h <<_ACEOF -#define intmax_t $bash_cv_type_long_long -_ACEOF +if test $bash_cv_type_clock_t = no; then + printf "%s\n" "#define clock_t long" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uintmax_t" >&5 -$as_echo_n "checking for uintmax_t... " >&6; } -if ${bash_cv_type_uintmax_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sigset_t" >&5 +printf %s "checking for sigset_t... " >&6; } +if test ${bash_cv_type_sigset_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include -#if STDC_HEADERS +#if HAVE_STDLIB_H #include +#endif +#if HAVE_STDDEF_H #include #endif #if HAVE_INTTYPES_H @@ -17649,42 +18653,44 @@ else #if HAVE_STDINT_H #include #endif - +#include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "uintmax_t" >/dev/null 2>&1; then : - bash_cv_type_uintmax_t=yes -else - bash_cv_type_uintmax_t=no + $EGREP "sigset_t" >/dev/null 2>&1 +then : + bash_cv_type_sigset_t=yes +else $as_nop + bash_cv_type_sigset_t=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_uintmax_t" >&5 -$as_echo "$bash_cv_type_uintmax_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_sigset_t" >&5 +printf "%s\n" "$bash_cv_type_sigset_t" >&6; } -if test $bash_cv_type_uintmax_t = no; then - cat >>confdefs.h <<_ACEOF -#define uintmax_t $bash_cv_type_unsigned_long_long -_ACEOF +if test $bash_cv_type_sigset_t = no; then + printf "%s\n" "#define sigset_t int" >>confdefs.h fi if test "$ac_cv_header_sys_socket_h" = "yes"; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5 -$as_echo_n "checking for socklen_t... " >&6; } -if ${bash_cv_type_socklen_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5 +printf %s "checking for socklen_t... " >&6; } +if test ${bash_cv_type_socklen_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include -#if STDC_HEADERS +#if HAVE_STDLIB_H #include +#endif +#if HAVE_STDDEF_H #include #endif #if HAVE_INTTYPES_H @@ -17697,113 +18703,232 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "socklen_t" >/dev/null 2>&1; then : + $EGREP "socklen_t" >/dev/null 2>&1 +then : bash_cv_type_socklen_t=yes -else +else $as_nop bash_cv_type_socklen_t=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_socklen_t" >&5 -$as_echo "$bash_cv_type_socklen_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_socklen_t" >&5 +printf "%s\n" "$bash_cv_type_socklen_t" >&6; } if test $bash_cv_type_socklen_t = yes; then - $as_echo "#define HAVE_SOCKLEN_T 1" >>confdefs.h + printf "%s\n" "#define HAVE_SOCKLEN_T 1" >>confdefs.h fi if test $bash_cv_type_socklen_t = no; then - cat >>confdefs.h <<_ACEOF -#define socklen_t unsigned int -_ACEOF + printf "%s\n" "#define socklen_t unsigned int" >>confdefs.h fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for size and type of struct rlimit fields" >&5 -$as_echo_n "checking for size and type of struct rlimit fields... " >&6; } -if ${bash_cv_type_rlimit+:} false; then : - $as_echo_n "(cached) " >&6 -else + +ac_fn_c_check_type "$LINENO" "quad_t" "ac_cv_type_quad_t" "$ac_includes_default" +if test "x$ac_cv_type_quad_t" = xyes +then : + printf "%s\n" "#define HAVE_QUAD_T 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for type of struct rlimit fields" >&5 +printf %s "checking for type of struct rlimit fields... " >&6; } +if test ${bash_cv_type_rlimit+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include #include int -main () +main (void) { rlim_t xxx; + ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_type_rlimit=rlim_t -else - -if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&5 -$as_echo "$as_me: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&2;} - bash_cv_type_rlimit=long -else +else $as_nop + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for size of struct rlimit fields" >&5 +printf %s "checking for size of struct rlimit fields... " >&6; } +if test ${bash_cv_sizeof_rlim_cur+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check size of rlimit fields if cross compiling -- defaulting to long" >&5 +printf "%s\n" "$as_me: WARNING: cannot check size of rlimit fields if cross compiling -- defaulting to long" >&2;} + bash_cv_sizeof_rlim_cur=$ac_cv_sizeof_long + +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#ifdef HAVE_SYS_TIME_H #include +#endif +#include #include +main() +{ +struct rlimit r; +exit(sizeof (r.rlim_cur)); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + bash_cv_sizeof_rlim_cur=$? +else $as_nop + bash_cv_sizeof_rlim_cur=$? +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sizeof_rlim_cur" >&5 +printf "%s\n" "$bash_cv_sizeof_rlim_cur" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for size of quad_t" >&5 +printf %s "checking for size of quad_t... " >&6; } +if test ${bash_cv_sizeof_quad_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check size of quad_t if cross compiling -- defaulting to 0" >&5 +printf "%s\n" "$as_me: WARNING: cannot check size of quad_t if cross compiling -- defaulting to 0" >&2;} + bash_cv_sizeof_quad_t=0 + +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include #include -int +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif + main() { -#ifdef HAVE_QUAD_T - struct rlimit rl; - if (sizeof(rl.rlim_cur) == sizeof(quad_t)) - exit(0); +#if HAVE_QUAD_T +quad_t x; +exit(sizeof (x)); +#else +exit (0); #endif - exit(1); } + _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - bash_cv_type_rlimit=quad_t -else - bash_cv_type_rlimit=long +if ac_fn_c_try_run "$LINENO" +then : + bash_cv_sizeof_quad_t=$? +else $as_nop + bash_cv_sizeof_quad_t=$? fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sizeof_quad_t" >&5 +printf "%s\n" "$bash_cv_sizeof_quad_t" >&6; } + +if test $bash_cv_sizeof_rlim_cur = $ac_cv_sizeof_long; then + bash_cv_type_rlimit='unsigned long' +elif test $bash_cv_sizeof_rlim_cur = $ac_cv_sizeof_long_long; then + bash_cv_type_rlimit='unsigned long long' +elif test $bash_cv_sizeof_rlim_cur = $ac_cv_sizeof_int; then + bash_cv_type_rlimit='unsigned int' +elif test $bash_cv_sizeof_rlim_cur = $bash_cv_sizeof_quad_t; then + bash_cv_type_rlimit='quad_t' +else + bash_cv_type_rlimit='unsigned long' +fi + + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_rlimit" >&5 +printf "%s\n" "$bash_cv_type_rlimit" >&6; } +printf "%s\n" "#define RLIMTYPE $bash_cv_type_rlimit" >>confdefs.h + + + + + + ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default" +if test "x$ac_cv_type_intmax_t" = xyes +then : + +printf "%s\n" "#define HAVE_INTMAX_T 1" >>confdefs.h + +else $as_nop + test $ac_cv_type_long_long_int = yes \ + && ac_type='long long int' \ + || ac_type='long int' + +printf "%s\n" "#define intmax_t $ac_type" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_rlimit" >&5 -$as_echo "$bash_cv_type_rlimit" >&6; } -if test $bash_cv_type_rlimit = quad_t; then -$as_echo "#define RLIMTYPE quad_t" >>confdefs.h -elif test $bash_cv_type_rlimit = rlim_t; then -$as_echo "#define RLIMTYPE rlim_t" >>confdefs.h + + + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" +if test "x$ac_cv_type_uintmax_t" = xyes +then : + +printf "%s\n" "#define HAVE_UINTMAX_T 1" >>confdefs.h + +else $as_nop + test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long int' \ + || ac_type='unsigned long int' + +printf "%s\n" "#define uintmax_t $ac_type" >>confdefs.h fi + # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of intmax_t" >&5 -$as_echo_n "checking size of intmax_t... " >&6; } -if ${ac_cv_sizeof_intmax_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (intmax_t))" "ac_cv_sizeof_intmax_t" "$ac_includes_default"; then : - -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of intmax_t" >&5 +printf %s "checking size of intmax_t... " >&6; } +if test ${ac_cv_sizeof_intmax_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (intmax_t))" "ac_cv_sizeof_intmax_t" "$ac_includes_default" +then : + +else $as_nop if test "$ac_cv_type_intmax_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (intmax_t) See \`config.log' for more details" "$LINENO" 5; } else @@ -17812,14 +18937,12 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_intmax_t" >&5 -$as_echo "$ac_cv_sizeof_intmax_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_intmax_t" >&5 +printf "%s\n" "$ac_cv_sizeof_intmax_t" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INTMAX_T $ac_cv_sizeof_intmax_t -_ACEOF +printf "%s\n" "#define SIZEOF_INTMAX_T $ac_cv_sizeof_intmax_t" >>confdefs.h @@ -17829,8 +18952,9 @@ ac_fn_c_check_member "$LINENO" "struct termios" "c_line" "ac_cv_member_struct_te #include " -if test "x$ac_cv_member_struct_termios_c_line" = xyes; then : - $as_echo "#define TERMIOS_LDISC 1" >>confdefs.h +if test "x$ac_cv_member_struct_termios_c_line" = xyes +then : + printf "%s\n" "#define TERMIOS_LDISC 1" >>confdefs.h fi @@ -17841,21 +18965,23 @@ ac_fn_c_check_member "$LINENO" "struct termio" "c_line" "ac_cv_member_struct_ter #include " -if test "x$ac_cv_member_struct_termio_c_line" = xyes; then : - $as_echo "#define TERMIO_LDISC 1" >>confdefs.h +if test "x$ac_cv_member_struct_termio_c_line" = xyes +then : + printf "%s\n" "#define TERMIO_LDISC 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_ino" >&5 -$as_echo_n "checking for struct dirent.d_ino... " >&6; } -if ${bash_cv_dirent_has_dino+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_ino" >&5 +printf %s "checking for struct dirent.d_ino... " >&6; } +if test ${bash_cv_dirent_has_d_ino+y} +then : + printf %s "(cached) " >&6 +else $as_nop + +ac_fn_c_check_member "$LINENO" "struct dirent" "d_ino" "ac_cv_member_struct_dirent_d_ino" " #include #include #ifdef HAVE_UNISTD_H @@ -17876,40 +19002,37 @@ else # endif #endif /* HAVE_DIRENT_H */ -int -main () -{ +" +if test "x$ac_cv_member_struct_dirent_d_ino" = xyes +then : -struct dirent d; int z; z = d.d_ino; +printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_INO 1" >>confdefs.h - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - bash_cv_dirent_has_dino=yes -else - bash_cv_dirent_has_dino=no +bash_cv_dirent_has_d_ino=yes +else $as_nop + bash_cv_dirent_has_d_ino=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_dino" >&5 -$as_echo "$bash_cv_dirent_has_dino" >&6; } -if test $bash_cv_dirent_has_dino = yes; then -$as_echo "#define HAVE_STRUCT_DIRENT_D_INO 1" >>confdefs.h +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_ino" >&5 +printf "%s\n" "$bash_cv_dirent_has_d_ino" >&6; } +if test $bash_cv_dirent_has_d_ino = yes; then +printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_INO 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_fileno" >&5 -$as_echo_n "checking for struct dirent.d_fileno... " >&6; } -if ${bash_cv_dirent_has_d_fileno+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_fileno" >&5 +printf %s "checking for struct dirent.d_fileno... " >&6; } +if test ${bash_cv_dirent_has_d_fileno+y} +then : + printf %s "(cached) " >&6 +else $as_nop + +ac_fn_c_check_member "$LINENO" "struct dirent" "d_fileno" "ac_cv_member_struct_dirent_d_fileno" " #include #include #ifdef HAVE_UNISTD_H @@ -17930,40 +19053,37 @@ else # endif #endif /* HAVE_DIRENT_H */ -int -main () -{ +" +if test "x$ac_cv_member_struct_dirent_d_fileno" = xyes +then : -struct dirent d; int z; z = d.d_fileno; +printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_FILENO 1" >>confdefs.h - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - bash_cv_dirent_has_d_fileno=yes -else +bash_cv_dirent_has_d_fileno=yes +else $as_nop bash_cv_dirent_has_d_fileno=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_fileno" >&5 -$as_echo "$bash_cv_dirent_has_d_fileno" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_fileno" >&5 +printf "%s\n" "$bash_cv_dirent_has_d_fileno" >&6; } if test $bash_cv_dirent_has_d_fileno = yes; then -$as_echo "#define HAVE_STRUCT_DIRENT_D_FILENO 1" >>confdefs.h +printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_FILENO 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_namlen" >&5 -$as_echo_n "checking for struct dirent.d_namlen... " >&6; } -if ${bash_cv_dirent_has_d_namlen+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_namlen" >&5 +printf %s "checking for struct dirent.d_namlen... " >&6; } +if test ${bash_cv_dirent_has_d_namlen+y} +then : + printf %s "(cached) " >&6 +else $as_nop + +ac_fn_c_check_member "$LINENO" "struct dirent" "d_namlen" "ac_cv_member_struct_dirent_d_namlen" " #include #include #ifdef HAVE_UNISTD_H @@ -17984,94 +19104,130 @@ else # endif #endif /* HAVE_DIRENT_H */ -int -main () -{ +" +if test "x$ac_cv_member_struct_dirent_d_namlen" = xyes +then : -struct dirent d; int z; z = d.d_namlen; +printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_NAMLEN 1" >>confdefs.h - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - bash_cv_dirent_has_d_namlen=yes -else +bash_cv_dirent_has_d_namlen=yes +else $as_nop bash_cv_dirent_has_d_namlen=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_namlen" >&5 -$as_echo "$bash_cv_dirent_has_d_namlen" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_namlen" >&5 +printf "%s\n" "$bash_cv_dirent_has_d_namlen" >&6; } if test $bash_cv_dirent_has_d_namlen = yes; then -$as_echo "#define HAVE_STRUCT_DIRENT_D_NAMLEN 1" >>confdefs.h +printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_NAMLEN 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct winsize in sys/ioctl.h and termios.h" >&5 -$as_echo_n "checking for struct winsize in sys/ioctl.h and termios.h... " >&6; } -if ${bash_cv_struct_winsize_header+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct winsize in sys/ioctl.h and termios.h" >&5 +printf %s "checking for struct winsize in sys/ioctl.h and termios.h... " >&6; } +if test ${bash_cv_struct_winsize_header+y} +then : + printf %s "(cached) " >&6 +else $as_nop + +if test ${bash_cv_struct_winsize_ioctl+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include #include + int -main () +main (void) { + struct winsize x; +if (sizeof (x) > 0) return (0); + ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - bash_cv_struct_winsize_header=ioctl_h -else +if ac_fn_c_try_compile "$LINENO" +then : + bash_cv_struct_winsize_ioctl=yes +else $as_nop + bash_cv_struct_winsize_ioctl=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi + + +if test ${bash_cv_struct_winsize_termios+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include -#include +#include + int -main () +main (void) { + struct winsize x; +if (sizeof (x) > 0) return (0); + ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : + bash_cv_struct_winsize_termios=yes +else $as_nop + bash_cv_struct_winsize_termios=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi + + + +if test $bash_cv_struct_winsize_ioctl = yes; then + bash_cv_struct_winsize_header=ioctl_h +elif test $bash_cv_struct_winsize_termios = yes; then bash_cv_struct_winsize_header=termios_h else bash_cv_struct_winsize_header=other fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $bash_cv_struct_winsize_header = ioctl_h; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: sys/ioctl.h" >&5 -$as_echo "sys/ioctl.h" >&6; } - $as_echo "#define STRUCT_WINSIZE_IN_SYS_IOCTL 1" >>confdefs.h + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: sys/ioctl.h" >&5 +printf "%s\n" "sys/ioctl.h" >&6; } + printf "%s\n" "#define STRUCT_WINSIZE_IN_SYS_IOCTL 1" >>confdefs.h elif test $bash_cv_struct_winsize_header = termios_h; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: termios.h" >&5 -$as_echo "termios.h" >&6; } - $as_echo "#define STRUCT_WINSIZE_IN_TERMIOS 1" >>confdefs.h + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: termios.h" >&5 +printf "%s\n" "termios.h" >&6; } + printf "%s\n" "#define STRUCT_WINSIZE_IN_TERMIOS 1" >>confdefs.h else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -$as_echo "not found" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf "%s\n" "not found" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timeval in sys/time.h and time.h" >&5 -$as_echo_n "checking for struct timeval in sys/time.h and time.h... " >&6; } -if ${bash_cv_struct_timeval+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timeval in sys/time.h and time.h" >&5 +printf %s "checking for struct timeval in sys/time.h and time.h... " >&6; } +if test ${bash_cv_struct_timeval+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if HAVE_SYS_TIME_H @@ -18080,7 +19236,7 @@ else #include int -main () +main (void) { static struct timeval x; x.tv_sec = x.tv_usec; @@ -18088,44 +19244,45 @@ static struct timeval x; x.tv_sec = x.tv_usec; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_struct_timeval=yes -else +else $as_nop bash_cv_struct_timeval=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_struct_timeval" >&5 -$as_echo "$bash_cv_struct_timeval" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_struct_timeval" >&5 +printf "%s\n" "$bash_cv_struct_timeval" >&6; } if test $bash_cv_struct_timeval = yes; then - $as_echo "#define HAVE_TIMEVAL 1" >>confdefs.h + printf "%s\n" "#define HAVE_TIMEVAL 1" >>confdefs.h fi ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then : +if test "x$ac_cv_member_struct_stat_st_blocks" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_BLOCKS 1 -_ACEOF +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BLOCKS 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 -$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } -if ${ac_cv_struct_tm+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 +printf %s "checking whether struct tm is in sys/time.h or time.h... " >&6; } +if test ${ac_cv_struct_tm+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int -main () +main (void) { struct tm tm; int *p = &tm.tm_sec; @@ -18134,18 +19291,19 @@ struct tm tm; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_struct_tm=time.h -else +else $as_nop ac_cv_struct_tm=sys/time.h fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 -$as_echo "$ac_cv_struct_tm" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 +printf "%s\n" "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then -$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h +printf "%s\n" "#define TM_IN_SYS_TIME 1" >>confdefs.h fi @@ -18153,37 +19311,35 @@ ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_ #include <$ac_cv_struct_tm> " -if test "x$ac_cv_member_struct_tm_tm_zone" = xyes; then : +if test "x$ac_cv_member_struct_tm_tm_zone" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_TM_TM_ZONE 1 -_ACEOF +printf "%s\n" "#define HAVE_STRUCT_TM_TM_ZONE 1" >>confdefs.h fi if test "$ac_cv_member_struct_tm_tm_zone" = yes; then -$as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h +printf "%s\n" "#define HAVE_TM_ZONE 1" >>confdefs.h else - ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include -" -if test "x$ac_cv_have_decl_tzname" = xyes; then : + ac_fn_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_tzname" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi +printf "%s\n" "#define HAVE_DECL_TZNAME $ac_have_decl" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_TZNAME $ac_have_decl -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 -$as_echo_n "checking for tzname... " >&6; } -if ${ac_cv_var_tzname+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 +printf %s "checking for tzname... " >&6; } +if test ${ac_cv_var_tzname+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -18192,35 +19348,37 @@ extern char *tzname[]; #endif int -main () +main (void) { return tzname[0][0]; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_var_tzname=yes -else +else $as_nop ac_cv_var_tzname=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 -$as_echo "$ac_cv_var_tzname" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 +printf "%s\n" "$ac_cv_var_tzname" >&6; } if test $ac_cv_var_tzname = yes; then -$as_echo "#define HAVE_TZNAME 1" >>confdefs.h +printf "%s\n" "#define HAVE_TZNAME 1" >>confdefs.h fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timezone in sys/time.h and time.h" >&5 -$as_echo_n "checking for struct timezone in sys/time.h and time.h... " >&6; } -if ${bash_cv_struct_timezone+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timezone in sys/time.h and time.h" >&5 +printf %s "checking for struct timezone in sys/time.h and time.h... " >&6; } +if test ${bash_cv_struct_timezone+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -18228,47 +19386,51 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "struct timezone" >/dev/null 2>&1; then : + $EGREP "struct timezone" >/dev/null 2>&1 +then : bash_cv_struct_timezone=yes -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "struct timezone" >/dev/null 2>&1; then : + $EGREP "struct timezone" >/dev/null 2>&1 +then : bash_cv_struct_timezone=yes -else +else $as_nop bash_cv_struct_timezone=no fi -rm -f conftest* +rm -rf conftest* fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_struct_timezone" >&5 -$as_echo "$bash_cv_struct_timezone" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_struct_timezone" >&5 +printf "%s\n" "$bash_cv_struct_timezone" >&6; } if test $bash_cv_struct_timezone = yes; then - $as_echo "#define HAVE_STRUCT_TIMEZONE 1" >>confdefs.h + printf "%s\n" "#define HAVE_STRUCT_TIMEZONE 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for offset of exit status in return status from wait" >&5 -$as_echo_n "checking for offset of exit status in return status from wait... " >&6; } -if ${bash_cv_wexitstatus_offset+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&5 -$as_echo "$as_me: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for offset of exit status in return status from wait" >&5 +printf %s "checking for offset of exit status in return status from wait... " >&6; } +if test ${bash_cv_wexitstatus_offset+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&5 +printf "%s\n" "$as_me: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&2;} bash_cv_wexitstatus_offset=0 -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -18307,9 +19469,10 @@ main(c, v) } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_wexitstatus_offset=0 -else +else $as_nop bash_cv_wexitstatus_offset=$? fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -18319,123 +19482,127 @@ fi fi if test "$bash_cv_wexitstatus_offset" -gt 32 ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: bad exit status from test program -- defaulting to 0" >&5 -$as_echo "$as_me: WARNING: bad exit status from test program -- defaulting to 0" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: bad exit status from test program -- defaulting to 0" >&5 +printf "%s\n" "$as_me: WARNING: bad exit status from test program -- defaulting to 0" >&2;} bash_cv_wexitstatus_offset=0 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wexitstatus_offset" >&5 -$as_echo "$bash_cv_wexitstatus_offset" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wexitstatus_offset" >&5 +printf "%s\n" "$bash_cv_wexitstatus_offset" >&6; } -cat >>confdefs.h <<_ACEOF -#define WEXITSTATUS_OFFSET $bash_cv_wexitstatus_offset -_ACEOF +printf "%s\n" "#define WEXITSTATUS_OFFSET $bash_cv_wexitstatus_offset" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 -$as_echo_n "checking for struct timespec in ... " >&6; } -if ${bash_cv_sys_struct_timespec_in_time_h+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 +printf %s "checking for struct timespec in ... " >&6; } +if test ${bash_cv_sys_struct_timespec_in_time_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { static struct timespec x; x.tv_sec = x.tv_nsec; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_sys_struct_timespec_in_time_h=yes -else +else $as_nop bash_cv_sys_struct_timespec_in_time_h=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_time_h" >&5 -$as_echo "$bash_cv_sys_struct_timespec_in_time_h" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_time_h" >&5 +printf "%s\n" "$bash_cv_sys_struct_timespec_in_time_h" >&6; } HAVE_STRUCT_TIMESPEC=0 TIME_H_DEFINES_STRUCT_TIMESPEC=0 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 if test $bash_cv_sys_struct_timespec_in_time_h = yes; then - $as_echo "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h + printf "%s\n" "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h - $as_echo "#define TIME_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h + printf "%s\n" "#define TIME_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h TIME_H_DEFINES_STRUCT_TIMESPEC=1 else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 -$as_echo_n "checking for struct timespec in ... " >&6; } -if ${bash_cv_sys_struct_timespec_in_sys_time_h+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 +printf %s "checking for struct timespec in ... " >&6; } +if test ${bash_cv_sys_struct_timespec_in_sys_time_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { static struct timespec x; x.tv_sec = x.tv_nsec; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_sys_struct_timespec_in_sys_time_h=yes -else +else $as_nop bash_cv_sys_struct_timespec_in_sys_time_h=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_sys_time_h" >&5 -$as_echo "$bash_cv_sys_struct_timespec_in_sys_time_h" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_sys_time_h" >&5 +printf "%s\n" "$bash_cv_sys_struct_timespec_in_sys_time_h" >&6; } if test $bash_cv_sys_struct_timespec_in_sys_time_h = yes; then SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1 - $as_echo "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h + printf "%s\n" "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h - $as_echo "#define SYS_TIME_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h + printf "%s\n" "#define SYS_TIME_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 -$as_echo_n "checking for struct timespec in ... " >&6; } -if ${bash_cv_sys_struct_timespec_in_pthread_h+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 +printf %s "checking for struct timespec in ... " >&6; } +if test ${bash_cv_sys_struct_timespec_in_pthread_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { static struct timespec x; x.tv_sec = x.tv_nsec; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_sys_struct_timespec_in_pthread_h=yes -else +else $as_nop bash_cv_sys_struct_timespec_in_pthread_h=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_pthread_h" >&5 -$as_echo "$bash_cv_sys_struct_timespec_in_pthread_h" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_pthread_h" >&5 +printf "%s\n" "$bash_cv_sys_struct_timespec_in_pthread_h" >&6; } if test $bash_cv_sys_struct_timespec_in_pthread_h = yes; then PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 - $as_echo "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h + printf "%s\n" "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h - $as_echo "#define PTHREAD_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h + printf "%s\n" "#define PTHREAD_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h fi fi @@ -18452,17 +19619,17 @@ $as_echo "$bash_cv_sys_struct_timespec_in_pthread_h" >&6; } ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.tv_nsec" "ac_cv_member_struct_stat_st_atim_tv_nsec" "#include #include " -if test "x$ac_cv_member_struct_stat_st_atim_tv_nsec" = xyes; then : +if test "x$ac_cv_member_struct_stat_st_atim_tv_nsec" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1 -_ACEOF +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct stat.st_atim is of type struct timespec" >&5 -$as_echo_n "checking whether struct stat.st_atim is of type struct timespec... " >&6; } -if ${ac_cv_typeof_struct_stat_st_atim_is_struct_timespec+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct stat.st_atim is of type struct timespec" >&5 +printf %s "checking whether struct stat.st_atim is of type struct timespec... " >&6; } +if test ${ac_cv_typeof_struct_stat_st_atim_is_struct_timespec+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -18476,7 +19643,7 @@ else struct stat st; int -main () +main (void) { st.st_atim = ts; @@ -18485,51 +19652,49 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes -else +else $as_nop ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&5 -$as_echo "$ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&5 +printf "%s\n" "$ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&6; } if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then -$as_echo "#define TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC 1" >>confdefs.h +printf "%s\n" "#define TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC 1" >>confdefs.h fi -else +else $as_nop ac_fn_c_check_member "$LINENO" "struct stat" "st_atimespec.tv_nsec" "ac_cv_member_struct_stat_st_atimespec_tv_nsec" "#include #include " -if test "x$ac_cv_member_struct_stat_st_atimespec_tv_nsec" = xyes; then : +if test "x$ac_cv_member_struct_stat_st_atimespec_tv_nsec" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC 1 -_ACEOF +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC 1" >>confdefs.h -else +else $as_nop ac_fn_c_check_member "$LINENO" "struct stat" "st_atimensec" "ac_cv_member_struct_stat_st_atimensec" "#include #include " -if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes; then : +if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_ATIMENSEC 1 -_ACEOF +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIMENSEC 1" >>confdefs.h -else +else $as_nop ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.st__tim.tv_nsec" "ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" "#include #include " -if test "x$ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" = xyes; then : +if test "x$ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC 1 -_ACEOF +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC 1" >>confdefs.h fi @@ -18543,45 +19708,49 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sbrk" >&5 -$as_echo_n "checking for sbrk... " >&6; } - if ${ac_cv_func_sbrk+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sbrk" >&5 +printf %s "checking for sbrk... " >&6; } + if test ${ac_cv_func_sbrk+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { void *x = sbrk (4096); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_func_sbrk=yes -else +else $as_nop ac_cv_func_sbrk=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_sbrk" >&5 -$as_echo "$ac_cv_func_sbrk" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_sbrk" >&5 +printf "%s\n" "$ac_cv_func_sbrk" >&6; } if test X$ac_cv_func_sbrk = Xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working sbrk" >&5 -$as_echo_n "checking for working sbrk... " >&6; } -if ${bash_cv_func_sbrk+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check working sbrk if cross-compiling" >&5 -$as_echo "$as_me: WARNING: cannot check working sbrk if cross-compiling" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working sbrk" >&5 +printf %s "checking for working sbrk... " >&6; } +if test ${bash_cv_func_sbrk+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check working sbrk if cross-compiling" >&5 +printf "%s\n" "$as_me: WARNING: cannot check working sbrk if cross-compiling" >&2;} bash_cv_func_sbrk=yes -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -18598,74 +19767,79 @@ main(int c, char **v) } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_func_sbrk=yes -else - bash_cv_func_snprintf=sbrk +else $as_nop + bash_cv_func_sbrk=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sbrk" >&5 -$as_echo "$bash_cv_func_sbrk" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sbrk" >&5 +printf "%s\n" "$bash_cv_func_sbrk" >&6; } if test $bash_cv_func_sbrk = no; then ac_cv_func_sbrk=no fi fi if test $ac_cv_func_sbrk = yes; then -$as_echo "#define HAVE_SBRK 1" >>confdefs.h +printf "%s\n" "#define HAVE_SBRK 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the existence of strsignal" >&5 -$as_echo_n "checking for the existence of strsignal... " >&6; } -if ${bash_cv_have_strsignal+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the existence of strsignal" >&5 +printf %s "checking for the existence of strsignal... " >&6; } +if test ${bash_cv_have_strsignal+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int -main () +main (void) { char *s = (char *)strsignal(2); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : bash_cv_have_strsignal=yes -else +else $as_nop bash_cv_have_strsignal=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_strsignal" >&5 -$as_echo "$bash_cv_have_strsignal" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_strsignal" >&5 +printf "%s\n" "$bash_cv_have_strsignal" >&6; } if test $bash_cv_have_strsignal = yes; then -$as_echo "#define HAVE_STRSIGNAL 1" >>confdefs.h +printf "%s\n" "#define HAVE_STRSIGNAL 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if opendir() opens non-directories" >&5 -$as_echo_n "checking if opendir() opens non-directories... " >&6; } -if ${bash_cv_opendir_not_robust+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if opendir() opens non-directories" >&5 +printf %s "checking if opendir() opens non-directories... " >&6; } +if test ${bash_cv_opendir_not_robust+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&5 +printf "%s\n" "$as_me: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&2;} bash_cv_opendir_not_robust=no -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -18712,10 +19886,12 @@ unlink("bash-aclocal/not_a_directory"); rmdir("bash-aclocal"); exit (dir == 0); } + _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_opendir_not_robust=yes -else +else $as_nop bash_cv_opendir_not_robust=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -18724,24 +19900,26 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_opendir_not_robust" >&5 -$as_echo "$bash_cv_opendir_not_robust" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_opendir_not_robust" >&5 +printf "%s\n" "$bash_cv_opendir_not_robust" >&6; } if test $bash_cv_opendir_not_robust = yes; then -$as_echo "#define OPENDIR_NOT_ROBUST 1" >>confdefs.h +printf "%s\n" "#define OPENDIR_NOT_ROBUST 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ulimit can substitute for getdtablesize" >&5 -$as_echo_n "checking whether ulimit can substitute for getdtablesize... " >&6; } -if ${bash_cv_ulimit_maxfds+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ulimit can substitute for getdtablesize" >&5 +printf %s "checking whether ulimit can substitute for getdtablesize... " >&6; } +if test ${bash_cv_ulimit_maxfds+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&5 +printf "%s\n" "$as_me: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&2;} bash_cv_ulimit_maxfds=no -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -18757,9 +19935,10 @@ exit (maxfds == -1L); } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_ulimit_maxfds=yes -else +else $as_nop bash_cv_ulimit_maxfds=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -18768,10 +19947,10 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_ulimit_maxfds" >&5 -$as_echo "$bash_cv_ulimit_maxfds" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_ulimit_maxfds" >&5 +printf "%s\n" "$bash_cv_ulimit_maxfds" >&6; } if test $bash_cv_ulimit_maxfds = yes; then -$as_echo "#define ULIMIT_MAXFDS 1" >>confdefs.h +printf "%s\n" "#define ULIMIT_MAXFDS 1" >>confdefs.h fi @@ -18780,32 +19959,30 @@ fi - - - ac_fn_c_check_decl "$LINENO" "fpurge" "ac_cv_have_decl_fpurge" "#include -" -if test "x$ac_cv_have_decl_fpurge" = xyes; then : + ac_fn_check_decl "$LINENO" "fpurge" "ac_cv_have_decl_fpurge" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_fpurge" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FPURGE $ac_have_decl -_ACEOF +printf "%s\n" "#define HAVE_DECL_FPURGE $ac_have_decl" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if getenv can be redefined" >&5 -$as_echo_n "checking to see if getenv can be redefined... " >&6; } -if ${bash_cv_getenv_redef+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&5 -$as_echo "$as_me: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking to see if getenv can be redefined" >&5 +printf %s "checking to see if getenv can be redefined... " >&6; } +if test ${bash_cv_getenv_redef+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&5 +printf "%s\n" "$as_me: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&2;} bash_cv_getenv_redef=yes -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -18843,9 +20020,10 @@ exit(s == 0); /* force optimizer to leave getenv in */ } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_getenv_redef=yes -else +else $as_nop bash_cv_getenv_redef=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -18854,25 +20032,27 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getenv_redef" >&5 -$as_echo "$bash_cv_getenv_redef" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getenv_redef" >&5 +printf "%s\n" "$bash_cv_getenv_redef" >&6; } if test $bash_cv_getenv_redef = yes; then -$as_echo "#define CAN_REDEFINE_GETENV 1" >>confdefs.h +printf "%s\n" "#define CAN_REDEFINE_GETENV 1" >>confdefs.h fi if test "$ac_cv_func_getcwd" = "yes"; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if getcwd() will dynamically allocate memory with 0 size" >&5 -$as_echo_n "checking if getcwd() will dynamically allocate memory with 0 size... " >&6; } -if ${bash_cv_getcwd_malloc+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getcwd() will dynamically allocate memory with 0 size" >&5 +printf %s "checking if getcwd() will dynamically allocate memory with 0 size... " >&6; } +if test ${bash_cv_getcwd_malloc+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&5 +printf "%s\n" "$as_me: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&2;} bash_cv_getcwd_malloc=no -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -18891,9 +20071,10 @@ main() } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_getcwd_malloc=yes -else +else $as_nop bash_cv_getcwd_malloc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -18902,10 +20083,10 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getcwd_malloc" >&5 -$as_echo "$bash_cv_getcwd_malloc" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getcwd_malloc" >&5 +printf "%s\n" "$bash_cv_getcwd_malloc" >&6; } if test $bash_cv_getcwd_malloc = no; then -$as_echo "#define GETCWD_BROKEN 1" >>confdefs.h +printf "%s\n" "#define GETCWD_BROKEN 1" >>confdefs.h case " $LIBOBJS " in *" getcwd.$ac_objext "* ) ;; @@ -18917,17 +20098,23 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 -$as_echo_n "checking for presence of POSIX-style sigsetjmp/siglongjmp... " >&6; } -if ${bash_cv_func_sigsetjmp+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5 -$as_echo "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&2;} - bash_cv_func_sigsetjmp=missing +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 +printf %s "checking for presence of POSIX-style sigsetjmp/siglongjmp... " >&6; } +if test ${bash_cv_func_sigsetjmp+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to $bash_cv_posix_signals" >&5 +printf "%s\n" "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to $bash_cv_posix_signals" >&2;} + if test "$bash_cv_posix_signals" = "yes" ; then + bash_cv_func_sigsetjmp=present + else + bash_cv_func_sigsetjmp=missing + fi -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -18947,21 +20134,30 @@ exit (1); #else int code; -sigset_t set, oset; +sigset_t set, oset, nset; sigjmp_buf xx; /* get the mask */ sigemptyset(&set); sigemptyset(&oset); -sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); + sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); +/* paranoia -- make sure SIGINT is not blocked */ +sigdelset (&oset, SIGINT); +sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); /* save it */ code = sigsetjmp(xx, 1); if (code) - exit(0); /* could get sigmask and compare to oset here. */ +{ + sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &nset); + /* could compare nset to oset here, but we just look for SIGINT */ + if (sigismember (&nset, SIGINT)) + exit(1); + exit(0); +} -/* change it */ +/* change it so that SIGINT is blocked */ sigaddset(&set, SIGINT); sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); @@ -18970,10 +20166,12 @@ siglongjmp(xx, 10); exit(1); #endif } + _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_func_sigsetjmp=present -else +else $as_nop bash_cv_func_sigsetjmp=missing fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -18982,25 +20180,26 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sigsetjmp" >&5 -$as_echo "$bash_cv_func_sigsetjmp" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sigsetjmp" >&5 +printf "%s\n" "$bash_cv_func_sigsetjmp" >&6; } if test $bash_cv_func_sigsetjmp = present; then -$as_echo "#define HAVE_POSIX_SIGSETJMP 1" >>confdefs.h +printf "%s\n" "#define HAVE_POSIX_SIGSETJMP 1" >>confdefs.h fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether or not strcoll and strcmp differ" >&5 -$as_echo_n "checking whether or not strcoll and strcmp differ... " >&6; } -if ${bash_cv_func_strcoll_broken+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether or not strcoll and strcmp differ" >&5 +printf %s "checking whether or not strcoll and strcmp differ... " >&6; } +if test ${bash_cv_func_strcoll_broken+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5 +printf "%s\n" "$as_me: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&2;} bash_cv_func_strcoll_broken=no -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19043,9 +20242,10 @@ char *v[]; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_func_strcoll_broken=yes -else +else $as_nop bash_cv_func_strcoll_broken=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -19054,29 +20254,30 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strcoll_broken" >&5 -$as_echo "$bash_cv_func_strcoll_broken" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strcoll_broken" >&5 +printf "%s\n" "$bash_cv_func_strcoll_broken" >&6; } if test $bash_cv_func_strcoll_broken = yes; then -$as_echo "#define STRCOLL_BROKEN 1" >>confdefs.h +printf "%s\n" "#define STRCOLL_BROKEN 1" >>confdefs.h fi - if test X$ac_cv_func_snprintf = Xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant snprintf" >&5 -$as_echo_n "checking for standard-conformant snprintf... " >&6; } -if ${bash_cv_func_snprintf+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check standard snprintf if cross-compiling" >&5 -$as_echo "$as_me: WARNING: cannot check standard snprintf if cross-compiling" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for standard-conformant snprintf" >&5 +printf %s "checking for standard-conformant snprintf... " >&6; } +if test ${bash_cv_func_snprintf+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check standard snprintf if cross-compiling" >&5 +printf "%s\n" "$as_me: WARNING: cannot check standard snprintf if cross-compiling" >&2;} bash_cv_func_snprintf=yes -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19092,9 +20293,10 @@ main() } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_func_snprintf=yes -else +else $as_nop bash_cv_func_snprintf=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -19102,34 +20304,35 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_snprintf" >&5 -$as_echo "$bash_cv_func_snprintf" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_snprintf" >&5 +printf "%s\n" "$bash_cv_func_snprintf" >&6; } if test $bash_cv_func_snprintf = no; then ac_cv_func_snprintf=no fi fi if test $ac_cv_func_snprintf = no; then -$as_echo "#define HAVE_SNPRINTF 0" >>confdefs.h +printf "%s\n" "#define HAVE_SNPRINTF 0" >>confdefs.h fi - if test X$ac_cv_func_vsnprintf = Xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant vsnprintf" >&5 -$as_echo_n "checking for standard-conformant vsnprintf... " >&6; } -if ${bash_cv_func_vsnprintf+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check standard vsnprintf if cross-compiling" >&5 -$as_echo "$as_me: WARNING: cannot check standard vsnprintf if cross-compiling" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for standard-conformant vsnprintf" >&5 +printf %s "checking for standard-conformant vsnprintf... " >&6; } +if test ${bash_cv_func_vsnprintf+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check standard vsnprintf if cross-compiling" >&5 +printf "%s\n" "$as_me: WARNING: cannot check standard vsnprintf if cross-compiling" >&2;} bash_cv_func_vsnprintf=yes -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19172,9 +20375,10 @@ main() } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_func_vsnprintf=yes -else +else $as_nop bash_cv_func_vsnprintf=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -19182,34 +20386,90 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_vsnprintf" >&5 -$as_echo "$bash_cv_func_vsnprintf" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_vsnprintf" >&5 +printf "%s\n" "$bash_cv_func_vsnprintf" >&6; } if test $bash_cv_func_vsnprintf = no; then ac_cv_func_vsnprintf=no fi fi if test $ac_cv_func_vsnprintf = no; then -$as_echo "#define HAVE_VSNPRINTF 0" >>confdefs.h +printf "%s\n" "#define HAVE_VSNPRINTF 0" >>confdefs.h fi -if test "$ac_cv_func_putenv" = "yes"; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for usable strtoimax" >&5 +printf %s "checking for usable strtoimax... " >&6; } +if test ${bash_cv_func_strtoimax+y} +then : + printf %s "(cached) " >&6 +else $as_nop + HAVE_STRTOIMAX=0 HAVE_DECL_STRTOIMAX=0 + ac_fn_c_check_func "$LINENO" "strtoimax" "ac_cv_func_strtoimax" +if test "x$ac_cv_func_strtoimax" = xyes +then : + printf "%s\n" "#define HAVE_STRTOIMAX 1" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant putenv declaration" >&5 -$as_echo_n "checking for standard-conformant putenv declaration... " >&6; } -if ${bash_cv_std_putenv+:} false; then : - $as_echo_n "(cached) " >&6 -else +fi + + ac_fn_check_decl "$LINENO" "strtoimax" "ac_cv_have_decl_strtoimax" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_strtoimax" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_STRTOIMAX $ac_have_decl" >>confdefs.h + + + if test "$ac_cv_func_strtoimax" = "yes" ; then + HAVE_STRTOIMAX=1 + fi + if test "$ac_cv_have_decl_strtoimax" = "yes" ; then + HAVE_DECL_STRTOIMAX=1 + fi + + if test "$HAVE_STRTOIMAX" = 0 || test "$HAVE_DECL_STRTOIMAX" = 0 ; then + bash_cv_func_strtoimax=no REPLACE_STRTOIMAX=1 + else + bash_cv_func_strtoimax=yes + fi + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strtoimax" >&5 +printf "%s\n" "$bash_cv_func_strtoimax" >&6; } +if test $bash_cv_func_strtoimax = yes; then +case " $LIBOBJS " in + *" strtoimax.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtoimax.$ac_objext" + ;; +esac + +fi + + + +if test "$ac_cv_func_putenv" = "yes"; then + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for standard-conformant putenv declaration" >&5 +printf %s "checking for standard-conformant putenv declaration... " >&6; } +if test ${bash_cv_std_putenv+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#if STDC_HEADERS +#if HAVE_STDLIB_H #include +#endif +#if HAVE_STDDEF_H #include #endif #ifndef __STDC__ @@ -19224,47 +20484,50 @@ extern int putenv (); #endif int -main () +main (void) { return (putenv == 0); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : bash_cv_std_putenv=yes -else +else $as_nop bash_cv_std_putenv=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_std_putenv" >&5 -$as_echo "$bash_cv_std_putenv" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_std_putenv" >&5 +printf "%s\n" "$bash_cv_std_putenv" >&6; } if test $bash_cv_std_putenv = yes; then -$as_echo "#define HAVE_STD_PUTENV 1" >>confdefs.h +printf "%s\n" "#define HAVE_STD_PUTENV 1" >>confdefs.h fi else -$as_echo "#define HAVE_STD_PUTENV 1" >>confdefs.h +printf "%s\n" "#define HAVE_STD_PUTENV 1" >>confdefs.h fi if test "$ac_cv_func_unsetenv" = "yes"; then - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant unsetenv declaration" >&5 -$as_echo_n "checking for standard-conformant unsetenv declaration... " >&6; } -if ${bash_cv_std_unsetenv+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for standard-conformant unsetenv declaration" >&5 +printf %s "checking for standard-conformant unsetenv declaration... " >&6; } +if test ${bash_cv_std_unsetenv+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#if STDC_HEADERS +#if HAVE_STDLIB_H #include +#endif +#if HAVE_STDDEF_H #include #endif #ifndef __STDC__ @@ -19279,45 +20542,48 @@ extern int unsetenv (); #endif int -main () +main (void) { return (unsetenv == 0); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : bash_cv_std_unsetenv=yes -else +else $as_nop bash_cv_std_unsetenv=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_std_unsetenv" >&5 -$as_echo "$bash_cv_std_unsetenv" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_std_unsetenv" >&5 +printf "%s\n" "$bash_cv_std_unsetenv" >&6; } if test $bash_cv_std_unsetenv = yes; then -$as_echo "#define HAVE_STD_UNSETENV 1" >>confdefs.h +printf "%s\n" "#define HAVE_STD_UNSETENV 1" >>confdefs.h fi else -$as_echo "#define HAVE_STD_UNSETENV 1" >>confdefs.h +printf "%s\n" "#define HAVE_STD_UNSETENV 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for printf floating point output in hex notation" >&5 -$as_echo_n "checking for printf floating point output in hex notation... " >&6; } -if ${bash_cv_printf_a_format+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check printf if cross compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check printf if cross compiling -- defaulting to no" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for printf floating point output in hex notation" >&5 +printf %s "checking for printf floating point output in hex notation... " >&6; } +if test ${bash_cv_printf_a_format+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check printf if cross compiling -- defaulting to no" >&5 +printf "%s\n" "$as_me: WARNING: cannot check printf if cross compiling -- defaulting to no" >&2;} bash_cv_printf_a_format=no -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19336,9 +20602,10 @@ main() } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_printf_a_format=yes -else +else $as_nop bash_cv_printf_a_format=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -19347,25 +20614,27 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_printf_a_format" >&5 -$as_echo "$bash_cv_printf_a_format" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_printf_a_format" >&5 +printf "%s\n" "$bash_cv_printf_a_format" >&6; } if test $bash_cv_printf_a_format = yes; then -$as_echo "#define HAVE_PRINTF_A_FORMAT 1" >>confdefs.h +printf "%s\n" "#define HAVE_PRINTF_A_FORMAT 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fnmatch can be used to check bracket equivalence classes" >&5 -$as_echo_n "checking whether fnmatch can be used to check bracket equivalence classes... " >&6; } -if ${bash_cv_fnmatch_equiv_fallback+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check fnmatch if cross compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check fnmatch if cross compiling -- defaulting to no" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether fnmatch can be used to check bracket equivalence classes" >&5 +printf %s "checking whether fnmatch can be used to check bracket equivalence classes... " >&6; } +if test ${bash_cv_fnmatch_equiv_fallback+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check fnmatch if cross compiling -- defaulting to no" >&5 +printf "%s\n" "$as_me: WARNING: cannot check fnmatch if cross compiling -- defaulting to no" >&2;} bash_cv_fnmatch_equiv_fallback=no -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19389,11 +20658,11 @@ main (int c, char **v) exit (1); } - _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_fnmatch_equiv_fallback=yes -else +else $as_nop bash_cv_fnmatch_equiv_fallback=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -19402,33 +20671,32 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fnmatch_equiv_fallback" >&5 -$as_echo "$bash_cv_fnmatch_equiv_fallback" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fnmatch_equiv_fallback" >&5 +printf "%s\n" "$bash_cv_fnmatch_equiv_fallback" >&6; } if test "$bash_cv_fnmatch_equiv_fallback" = "yes" ; then bash_cv_fnmatch_equiv_value=1 else bash_cv_fnmatch_equiv_value=0 fi -cat >>confdefs.h <<_ACEOF -#define FNMATCH_EQUIV_FALLBACK $bash_cv_fnmatch_equiv_value -_ACEOF - +printf "%s\n" "#define FNMATCH_EQUIV_FALLBACK $bash_cv_fnmatch_equiv_value" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if signal handlers must be reinstalled when invoked" >&5 -$as_echo_n "checking if signal handlers must be reinstalled when invoked... " >&6; } -if ${bash_cv_must_reinstall_sighandlers+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if signal handlers must be reinstalled when invoked" >&5 +printf %s "checking if signal handlers must be reinstalled when invoked... " >&6; } +if test ${bash_cv_must_reinstall_sighandlers+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5 +printf "%s\n" "$as_me: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&2;} bash_cv_must_reinstall_sighandlers=no -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19438,7 +20706,7 @@ else #endif #include -typedef RETSIGTYPE sigfunc(); +typedef void sigfunc(); volatile int nsigint; @@ -19460,7 +20728,7 @@ set_signal_handler(sig, handler) #define set_signal_handler(s, h) signal(s, h) #endif -RETSIGTYPE +void sigint(s) int s; { @@ -19478,9 +20746,10 @@ main() } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_must_reinstall_sighandlers=no -else +else $as_nop bash_cv_must_reinstall_sighandlers=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -19489,19 +20758,20 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_must_reinstall_sighandlers" >&5 -$as_echo "$bash_cv_must_reinstall_sighandlers" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_must_reinstall_sighandlers" >&5 +printf "%s\n" "$bash_cv_must_reinstall_sighandlers" >&6; } if test $bash_cv_must_reinstall_sighandlers = yes; then -$as_echo "#define MUST_REINSTALL_SIGHANDLERS 1" >>confdefs.h +printf "%s\n" "#define MUST_REINSTALL_SIGHANDLERS 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of necessary job control definitions" >&5 -$as_echo_n "checking for presence of necessary job control definitions... " >&6; } -if ${bash_cv_job_control_missing+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for presence of necessary job control definitions" >&5 +printf %s "checking for presence of necessary job control definitions... " >&6; } +if test ${bash_cv_job_control_missing+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19547,40 +20817,43 @@ else int -main () +main (void) { - + int x; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_job_control_missing=present -else +else $as_nop bash_cv_job_control_missing=missing fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_job_control_missing" >&5 -$as_echo "$bash_cv_job_control_missing" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_job_control_missing" >&5 +printf "%s\n" "$bash_cv_job_control_missing" >&6; } if test $bash_cv_job_control_missing = missing; then -$as_echo "#define JOB_CONTROL_MISSING 1" >>confdefs.h +printf "%s\n" "#define JOB_CONTROL_MISSING 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of named pipes" >&5 -$as_echo_n "checking for presence of named pipes... " >&6; } -if ${bash_cv_sys_named_pipes+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&5 -$as_echo "$as_me: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for presence of named pipes" >&5 +printf %s "checking for presence of named pipes... " >&6; } +if test ${bash_cv_sys_named_pipes+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&5 +printf "%s\n" "$as_me: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&2;} bash_cv_sys_named_pipes=missing -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19624,10 +20897,12 @@ unlink ("bash-aclocal/sh-np-autoconf"); rmdir ("bash-aclocal"); exit(0); } + _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_sys_named_pipes=present -else +else $as_nop bash_cv_sys_named_pipes=missing fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -19636,19 +20911,20 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_named_pipes" >&5 -$as_echo "$bash_cv_sys_named_pipes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_named_pipes" >&5 +printf "%s\n" "$bash_cv_sys_named_pipes" >&6; } if test $bash_cv_sys_named_pipes = missing; then -$as_echo "#define NAMED_PIPES_MISSING 1" >>confdefs.h +printf "%s\n" "#define NAMED_PIPES_MISSING 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether termios.h defines TIOCGWINSZ" >&5 -$as_echo_n "checking whether termios.h defines TIOCGWINSZ... " >&6; } -if ${ac_cv_sys_tiocgwinsz_in_termios_h+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether termios.h defines TIOCGWINSZ" >&5 +printf %s "checking whether termios.h defines TIOCGWINSZ... " >&6; } +if test ${ac_cv_sys_tiocgwinsz_in_termios_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -19659,23 +20935,25 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : + $EGREP "yes" >/dev/null 2>&1 +then : ac_cv_sys_tiocgwinsz_in_termios_h=yes -else +else $as_nop ac_cv_sys_tiocgwinsz_in_termios_h=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 -$as_echo "$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 +printf "%s\n" "$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; } if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 -$as_echo_n "checking whether sys/ioctl.h defines TIOCGWINSZ... " >&6; } -if ${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 +printf %s "checking whether sys/ioctl.h defines TIOCGWINSZ... " >&6; } +if test ${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -19686,101 +20964,112 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : + $EGREP "yes" >/dev/null 2>&1 +then : ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=yes -else +else $as_nop ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 -$as_echo "$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 +printf "%s\n" "$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; } if test $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h = yes; then -$as_echo "#define GWINSZ_IN_SYS_IOCTL 1" >>confdefs.h +printf "%s\n" "#define GWINSZ_IN_SYS_IOCTL 1" >>confdefs.h fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIOCSTAT in sys/ioctl.h" >&5 -$as_echo_n "checking for TIOCSTAT in sys/ioctl.h... " >&6; } -if ${bash_cv_tiocstat_in_ioctl+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for TIOCSTAT in sys/ioctl.h" >&5 +printf %s "checking for TIOCSTAT in sys/ioctl.h... " >&6; } +if test ${bash_cv_tiocstat_in_ioctl+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include #include int -main () +main (void) { int x = TIOCSTAT; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_tiocstat_in_ioctl=yes -else +else $as_nop bash_cv_tiocstat_in_ioctl=no + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_tiocstat_in_ioctl" >&5 -$as_echo "$bash_cv_tiocstat_in_ioctl" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_tiocstat_in_ioctl" >&5 +printf "%s\n" "$bash_cv_tiocstat_in_ioctl" >&6; } if test $bash_cv_tiocstat_in_ioctl = yes; then -$as_echo "#define TIOCSTAT_IN_SYS_IOCTL 1" >>confdefs.h +printf "%s\n" "#define TIOCSTAT_IN_SYS_IOCTL 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FIONREAD in sys/ioctl.h" >&5 -$as_echo_n "checking for FIONREAD in sys/ioctl.h... " >&6; } -if ${bash_cv_fionread_in_ioctl+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FIONREAD in sys/ioctl.h" >&5 +printf %s "checking for FIONREAD in sys/ioctl.h... " >&6; } +if test ${bash_cv_fionread_in_ioctl+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #include #include int -main () +main (void) { int x = FIONREAD; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_fionread_in_ioctl=yes -else +else $as_nop bash_cv_fionread_in_ioctl=no + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fionread_in_ioctl" >&5 -$as_echo "$bash_cv_fionread_in_ioctl" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fionread_in_ioctl" >&5 +printf "%s\n" "$bash_cv_fionread_in_ioctl" >&6; } if test $bash_cv_fionread_in_ioctl = yes; then -$as_echo "#define FIONREAD_IN_SYS_IOCTL 1" >>confdefs.h +printf "%s\n" "#define FIONREAD_IN_SYS_IOCTL 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5 -$as_echo_n "checking whether WCONTINUED flag to waitpid is unavailable or available but broken... " >&6; } -if ${bash_cv_wcontinued_broken+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&5 -$as_echo "$as_me: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5 +printf %s "checking whether WCONTINUED flag to waitpid is unavailable or available but broken... " >&6; } +if test ${bash_cv_wcontinued_broken+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&5 +printf "%s\n" "$as_me: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&2;} bash_cv_wcontinued_broken=no -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19806,9 +21095,10 @@ main() } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_wcontinued_broken=no -else +else $as_nop bash_cv_wcontinued_broken=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -19817,50 +21107,53 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcontinued_broken" >&5 -$as_echo "$bash_cv_wcontinued_broken" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcontinued_broken" >&5 +printf "%s\n" "$bash_cv_wcontinued_broken" >&6; } if test $bash_cv_wcontinued_broken = yes; then -$as_echo "#define WCONTINUED_BROKEN 1" >>confdefs.h +printf "%s\n" "#define WCONTINUED_BROKEN 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for speed_t in sys/types.h" >&5 -$as_echo_n "checking for speed_t in sys/types.h... " >&6; } -if ${bash_cv_speed_t_in_sys_types+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for speed_t in sys/types.h" >&5 +printf %s "checking for speed_t in sys/types.h... " >&6; } +if test ${bash_cv_speed_t_in_sys_types+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { speed_t x; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_speed_t_in_sys_types=yes -else +else $as_nop bash_cv_speed_t_in_sys_types=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_speed_t_in_sys_types" >&5 -$as_echo "$bash_cv_speed_t_in_sys_types" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_speed_t_in_sys_types" >&5 +printf "%s\n" "$bash_cv_speed_t_in_sys_types" >&6; } if test $bash_cv_speed_t_in_sys_types = yes; then -$as_echo "#define SPEED_T_IN_SYS_TYPES 1" >>confdefs.h +printf "%s\n" "#define SPEED_T_IN_SYS_TYPES 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpw functions are declared in pwd.h" >&5 -$as_echo_n "checking whether getpw functions are declared in pwd.h... " >&6; } -if ${bash_cv_getpw_declared+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether getpw functions are declared in pwd.h" >&5 +printf %s "checking whether getpw functions are declared in pwd.h... " >&6; } +if test ${bash_cv_getpw_declared+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19872,33 +21165,36 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "getpwuid" >/dev/null 2>&1; then : + $EGREP "getpwuid" >/dev/null 2>&1 +then : bash_cv_getpw_declared=yes -else +else $as_nop bash_cv_getpw_declared=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getpw_declared" >&5 -$as_echo "$bash_cv_getpw_declared" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getpw_declared" >&5 +printf "%s\n" "$bash_cv_getpw_declared" >&6; } if test $bash_cv_getpw_declared = yes; then -$as_echo "#define HAVE_GETPW_DECLS 1" >>confdefs.h +printf "%s\n" "#define HAVE_GETPW_DECLS 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unusable real-time signals due to large values" >&5 -$as_echo_n "checking for unusable real-time signals due to large values... " >&6; } -if ${bash_cv_unusable_rtsigs+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&5 -$as_echo "$as_me: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unusable real-time signals due to large values" >&5 +printf %s "checking for unusable real-time signals due to large values... " >&6; } +if test ${bash_cv_unusable_rtsigs+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&5 +printf "%s\n" "$as_me: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&2;} bash_cv_unusable_rtsigs=yes -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19922,10 +21218,12 @@ main () exit(rtmin < n_sigs); } + _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : bash_cv_unusable_rtsigs=yes -else +else $as_nop bash_cv_unusable_rtsigs=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -19934,10 +21232,10 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_unusable_rtsigs" >&5 -$as_echo "$bash_cv_unusable_rtsigs" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_unusable_rtsigs" >&5 +printf "%s\n" "$bash_cv_unusable_rtsigs" >&6; } if test $bash_cv_unusable_rtsigs = yes; then -$as_echo "#define UNUSABLE_RT_SIGNALS 1" >>confdefs.h +printf "%s\n" "#define UNUSABLE_RT_SIGNALS 1" >>confdefs.h fi @@ -19954,11 +21252,16 @@ fi case "$host_os" in -hpux*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5 -$as_echo_n "checking whether $host_os needs _KERNEL for RLIMIT defines... " >&6; } -if ${bash_cv_kernel_rlimit+:} false; then : - $as_echo_n "(cached) " >&6 -else +hpux*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5 +printf %s "checking whether $host_os needs _KERNEL for RLIMIT defines... " >&6; } +if test ${bash_cv_kernel_rlimit+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test ${bash_cv_rlimit+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -19966,7 +21269,7 @@ else #include int -main () +main (void) { int f; @@ -19976,10 +21279,19 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - bash_cv_kernel_rlimit=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +if ac_fn_c_try_compile "$LINENO" +then : + bash_cv_rlimit=yes +else $as_nop + bash_cv_rlimit=no + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +if test $bash_cv_rlimit = no; then +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -19988,31 +21300,31 @@ else #undef _KERNEL int -main () +main (void) { - int f; - f = RLIMIT_DATA; + int f; + f = RLIMIT_DATA; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : bash_cv_kernel_rlimit=yes -else +else $as_nop bash_cv_kernel_rlimit=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_kernel_rlimit" >&5 -$as_echo "$bash_cv_kernel_rlimit" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_kernel_rlimit" >&5 +printf "%s\n" "$bash_cv_kernel_rlimit" >&6; } if test $bash_cv_kernel_rlimit = yes; then -$as_echo "#define RLIMIT_NEEDS_KERNEL 1" >>confdefs.h +printf "%s\n" "#define RLIMIT_NEEDS_KERNEL 1" >>confdefs.h fi ;; @@ -20026,22 +21338,25 @@ esac if test "X$bash_cv_termcap_lib" = "X"; then _bash_needmsg=yes else -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 -$as_echo_n "checking which library has the termcap functions... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 +printf %s "checking which library has the termcap functions... " >&6; } _bash_needmsg= fi -if ${bash_cv_termcap_lib+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${bash_cv_termcap_lib+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_fn_c_check_func "$LINENO" "tgetent" "ac_cv_func_tgetent" -if test "x$ac_cv_func_tgetent" = xyes; then : +if test "x$ac_cv_func_tgetent" = xyes +then : bash_cv_termcap_lib=libc -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 -$as_echo_n "checking for tgetent in -ltermcap... " >&6; } -if ${ac_cv_lib_termcap_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 +printf %s "checking for tgetent in -ltermcap... " >&6; } +if test ${ac_cv_lib_termcap_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ltermcap $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -20050,37 +21365,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_termcap_tgetent=yes -else +else $as_nop ac_cv_lib_termcap_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 -$as_echo "$ac_cv_lib_termcap_tgetent" >&6; } -if test "x$ac_cv_lib_termcap_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_termcap_tgetent" >&6; } +if test "x$ac_cv_lib_termcap_tgetent" = xyes +then : bash_cv_termcap_lib=libtermcap -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5 -$as_echo_n "checking for tgetent in -ltinfo... " >&6; } -if ${ac_cv_lib_tinfo_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5 +printf %s "checking for tgetent in -ltinfo... " >&6; } +if test ${ac_cv_lib_tinfo_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ltinfo $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -20089,37 +21404,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_tinfo_tgetent=yes -else +else $as_nop ac_cv_lib_tinfo_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5 -$as_echo "$ac_cv_lib_tinfo_tgetent" >&6; } -if test "x$ac_cv_lib_tinfo_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_tinfo_tgetent" >&6; } +if test "x$ac_cv_lib_tinfo_tgetent" = xyes +then : bash_cv_termcap_lib=libtinfo -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5 -$as_echo_n "checking for tgetent in -lcurses... " >&6; } -if ${ac_cv_lib_curses_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5 +printf %s "checking for tgetent in -lcurses... " >&6; } +if test ${ac_cv_lib_curses_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lcurses $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -20128,37 +21443,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_curses_tgetent=yes -else +else $as_nop ac_cv_lib_curses_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5 -$as_echo "$ac_cv_lib_curses_tgetent" >&6; } -if test "x$ac_cv_lib_curses_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_curses_tgetent" >&6; } +if test "x$ac_cv_lib_curses_tgetent" = xyes +then : bash_cv_termcap_lib=libcurses -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 -$as_echo_n "checking for tgetent in -lncurses... " >&6; } -if ${ac_cv_lib_ncurses_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 +printf %s "checking for tgetent in -lncurses... " >&6; } +if test ${ac_cv_lib_ncurses_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lncurses $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -20167,37 +21482,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_ncurses_tgetent=yes -else +else $as_nop ac_cv_lib_ncurses_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 -$as_echo "$ac_cv_lib_ncurses_tgetent" >&6; } -if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_ncurses_tgetent" >&6; } +if test "x$ac_cv_lib_ncurses_tgetent" = xyes +then : bash_cv_termcap_lib=libncurses -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5 -$as_echo_n "checking for tgetent in -lncursesw... " >&6; } -if ${ac_cv_lib_ncursesw_tgetent+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5 +printf %s "checking for tgetent in -lncursesw... " >&6; } +if test ${ac_cv_lib_ncursesw_tgetent+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lncursesw $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -20206,32 +21521,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tgetent (); int -main () +main (void) { return tgetent (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_ncursesw_tgetent=yes -else +else $as_nop ac_cv_lib_ncursesw_tgetent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5 -$as_echo "$ac_cv_lib_ncursesw_tgetent" >&6; } -if test "x$ac_cv_lib_ncursesw_tgetent" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5 +printf "%s\n" "$ac_cv_lib_ncursesw_tgetent" >&6; } +if test "x$ac_cv_lib_ncursesw_tgetent" = xyes +then : bash_cv_termcap_lib=libncursesw -else +else $as_nop bash_cv_termcap_lib=gnutermcap fi @@ -20248,11 +21562,11 @@ fi fi if test "X$_bash_needmsg" = "Xyes"; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 -$as_echo_n "checking which library has the termcap functions... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 +printf %s "checking which library has the termcap functions... " >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5 -$as_echo "using $bash_cv_termcap_lib" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5 +printf "%s\n" "using $bash_cv_termcap_lib" >&6; } if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then LDFLAGS="$LDFLAGS -L./lib/termcap" TERMCAP_LIB="./lib/termcap/libtermcap.a" @@ -20270,7 +21584,8 @@ elif test $bash_cv_termcap_lib = libc; then TERMCAP_LIB= TERMCAP_DEP= else -TERMCAP_LIB=-lcurses +# we assume ncurses is installed somewhere the linker can find it +TERMCAP_LIB=-lncurses TERMCAP_DEP= fi @@ -20278,11 +21593,12 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether /dev/fd is available" >&5 -$as_echo_n "checking whether /dev/fd is available... " >&6; } -if ${bash_cv_dev_fd+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether /dev/fd is available" >&5 +printf %s "checking whether /dev/fd is available... " >&6; } +if test ${bash_cv_dev_fd+y} +then : + printf %s "(cached) " >&6 +else $as_nop bash_cv_dev_fd="" if test -d /dev/fd && (exec test -r /dev/fd/0 < /dev/null) ; then # check for systems like FreeBSD 5 that only provide /dev/fd/[012] @@ -20302,25 +21618,26 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dev_fd" >&5 -$as_echo "$bash_cv_dev_fd" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dev_fd" >&5 +printf "%s\n" "$bash_cv_dev_fd" >&6; } if test $bash_cv_dev_fd = "standard"; then - $as_echo "#define HAVE_DEV_FD 1" >>confdefs.h + printf "%s\n" "#define HAVE_DEV_FD 1" >>confdefs.h - $as_echo "#define DEV_FD_PREFIX \"/dev/fd/\"" >>confdefs.h + printf "%s\n" "#define DEV_FD_PREFIX \"/dev/fd/\"" >>confdefs.h elif test $bash_cv_dev_fd = "whacky"; then - $as_echo "#define HAVE_DEV_FD 1" >>confdefs.h + printf "%s\n" "#define HAVE_DEV_FD 1" >>confdefs.h - $as_echo "#define DEV_FD_PREFIX \"/proc/self/fd/\"" >>confdefs.h + printf "%s\n" "#define DEV_FD_PREFIX \"/proc/self/fd/\"" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether /dev/stdin stdout stderr are available" >&5 -$as_echo_n "checking whether /dev/stdin stdout stderr are available... " >&6; } -if ${bash_cv_dev_stdin+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether /dev/stdin stdout stderr are available" >&5 +printf %s "checking whether /dev/stdin stdout stderr are available... " >&6; } +if test ${bash_cv_dev_stdin+y} +then : + printf %s "(cached) " >&6 +else $as_nop if (exec test -r /dev/stdin < /dev/null) ; then bash_cv_dev_stdin=present else @@ -20329,18 +21646,19 @@ else fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dev_stdin" >&5 -$as_echo "$bash_cv_dev_stdin" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dev_stdin" >&5 +printf "%s\n" "$bash_cv_dev_stdin" >&6; } if test $bash_cv_dev_stdin = "present"; then - $as_echo "#define HAVE_DEV_STDIN 1" >>confdefs.h + printf "%s\n" "#define HAVE_DEV_STDIN 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for default mail directory" >&5 -$as_echo_n "checking for default mail directory... " >&6; } -if ${bash_cv_mail_dir+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for default mail directory" >&5 +printf %s "checking for default mail directory... " >&6; } +if test ${bash_cv_mail_dir+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -d /var/mail; then bash_cv_mail_dir=/var/mail elif test -d /var/spool/mail; then @@ -20355,11 +21673,9 @@ else fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_mail_dir" >&5 -$as_echo "$bash_cv_mail_dir" >&6; } -cat >>confdefs.h <<_ACEOF -#define DEFAULT_MAIL_DIRECTORY "$bash_cv_mail_dir" -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_mail_dir" >&5 +printf "%s\n" "$bash_cv_mail_dir" >&6; } +printf "%s\n" "#define DEFAULT_MAIL_DIRECTORY \"$bash_cv_mail_dir\"" >>confdefs.h @@ -20368,7 +21684,7 @@ if test "$bash_cv_job_control_missing" = missing; then fi if test "$opt_job_control" = yes; then -$as_echo "#define JOB_CONTROL 1" >>confdefs.h +printf "%s\n" "#define JOB_CONTROL 1" >>confdefs.h JOBS_O=jobs.o else @@ -20382,13 +21698,13 @@ LOCAL_DEFS=-DSHELL case "${host_os}" in -sysv4.2*) $as_echo "#define SVR4_2 1" >>confdefs.h +sysv4.2*) printf "%s\n" "#define SVR4_2 1" >>confdefs.h - $as_echo "#define SVR4 1" >>confdefs.h + printf "%s\n" "#define SVR4 1" >>confdefs.h ;; -sysv4*) $as_echo "#define SVR4 1" >>confdefs.h +sysv4*) printf "%s\n" "#define SVR4 1" >>confdefs.h ;; -sysv5*) $as_echo "#define SVR5 1" >>confdefs.h +sysv5*) printf "%s\n" "#define SVR5 1" >>confdefs.h ;; hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX -DTGETENT_BROKEN -DTGETFLAG_BROKEN" ;; hpux*) LOCAL_CFLAGS="-DHPUX -DTGETENT_BROKEN -DTGETFLAG_BROKEN" ;; @@ -20409,11 +21725,11 @@ lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading case "`uname -r`" in 1.*|2.[0123]*) : ;; - *) $as_echo "#define PGRP_PIPE 1" >>confdefs.h + *) printf "%s\n" "#define PGRP_PIPE 1" >>confdefs.h ;; esac ;; netbsd*|openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;; -freebsd*) LOCAL_CFLAGS='-DHEREDOC_PIPESIZE=4096' ;; +freebsd*|midnightbsd*) LOCAL_CFLAGS='-DHEREDOC_PIPESIZE=4096' ;; *qnx[67]*) LOCAL_LIBS="-lncurses" ;; *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; powerux*) LOCAL_LIBS="-lgen" ;; @@ -20437,6 +21753,7 @@ freebsd[3-9]*) fi ;; freebsdelf*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading dragonfly*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading +midnightbsd*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading esac case "$host_cpu" in @@ -20453,7 +21770,7 @@ mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;; esac # turn off paren warnings in gcc -CFLAGS="$CFLAGS ${STYLE_CFLAGS}" +#CFLAGS="$CFLAGS ${STYLE_CFLAGS}" # # Shared object configuration section. These values are generated by @@ -20461,8 +21778,8 @@ CFLAGS="$CFLAGS ${STYLE_CFLAGS}" # if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking shared object configuration for loadable builtins" >&5 -$as_echo_n "checking shared object configuration for loadable builtins... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking shared object configuration for loadable builtins" >&5 +printf %s "checking shared object configuration for loadable builtins... " >&6; } eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"` @@ -20471,8 +21788,8 @@ $as_echo_n "checking shared object configuration for loadable builtins... " >&6; - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHOBJ_STATUS" >&5 -$as_echo "$SHOBJ_STATUS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SHOBJ_STATUS" >&5 +printf "%s\n" "$SHOBJ_STATUS" >&6; } else SHOBJ_STATUS=unsupported @@ -20546,9 +21863,11 @@ fi #AC_SUBST(ALLOCA_SOURCE) #AC_SUBST(ALLOCA_OBJECT) -ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/Makefile.inc examples/loadables/perl/Makefile support/bash.pc support/bashbug.sh" +ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/Makefile.inc examples/loadables/Makefile.sample examples/loadables/perl/Makefile support/bash.pc support/bashbug.sh" + + +ac_config_commands="$ac_config_commands stamp-h" -ac_config_commands="$ac_config_commands default" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -20577,8 +21896,8 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -20608,15 +21927,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else @@ -20630,8 +21949,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;} fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -20648,7 +21967,7 @@ U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -20665,8 +21984,8 @@ LTLIBOBJS=$ac_ltlibobjs ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL @@ -20689,14 +22008,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -20706,46 +22027,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -20754,13 +22075,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -20769,8 +22083,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -20782,30 +22100,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] @@ -20818,13 +22116,14 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -20851,18 +22150,20 @@ as_fn_unset () { eval $1=; unset $1;} } as_unset=as_fn_unset + # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -20874,12 +22175,13 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` @@ -20910,7 +22212,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -20932,6 +22234,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -20945,6 +22251,12 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -20986,7 +22298,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -20995,7 +22307,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -21057,8 +22369,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by bash $as_me 5.1-release, which was -generated by GNU Autoconf 2.69. Invocation command line was +This file was extended by bash $as_me 5.2-release, which was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -21120,14 +22432,16 @@ $config_commands Report bugs to ." _ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -bash config.status 5.1-release -configured by $0, generated by GNU Autoconf 2.69, +bash config.status 5.2-release +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -21166,15 +22480,15 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; + printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; + printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" @@ -21182,7 +22496,7 @@ do --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; @@ -21191,7 +22505,7 @@ do as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; + printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; @@ -21219,7 +22533,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" @@ -21233,7 +22547,7 @@ exec 5>>config.log sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - $as_echo "$ac_log" + printf "%s\n" "$ac_log" } >&5 _ACEOF @@ -21272,10 +22586,11 @@ do "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "examples/loadables/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile" ;; "examples/loadables/Makefile.inc") CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile.inc" ;; + "examples/loadables/Makefile.sample") CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile.sample" ;; "examples/loadables/perl/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; "support/bash.pc") CONFIG_FILES="$CONFIG_FILES support/bash.pc" ;; "support/bashbug.sh") CONFIG_FILES="$CONFIG_FILES support/bashbug.sh" ;; - "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "stamp-h") CONFIG_COMMANDS="$CONFIG_COMMANDS stamp-h" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac @@ -21287,9 +22602,9 @@ done # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree @@ -21625,7 +22940,7 @@ do esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done @@ -21633,17 +22948,17 @@ do # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | + ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -21660,7 +22975,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | +printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -21684,9 +22999,9 @@ $as_echo X"$ac_file" | case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -21748,8 +23063,8 @@ ac_sed_dataroot=' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' @@ -21793,9 +23108,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" @@ -21811,27 +23126,27 @@ which seems to be undefined. Please make sure it is defined" >&2;} # if test x"$ac_file" != x-; then { - $as_echo "/* $configure_input */" \ + printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else - $as_echo "/* $configure_input */" \ + printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac @@ -21948,10 +23263,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac done ;; - "default":C) -# Makefile uses this timestamp file to record whether config.h is up to date. -echo timestamp > stamp-h - ;; + "stamp-h":C) echo timestamp > stamp-h ;; esac done # for ac_tag @@ -21986,7 +23298,8 @@ if test "$no_create" != yes; then $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi + diff --git a/configure.ac b/configure.ac index 2fe3e7d9a..50a6e2016 100644 --- a/configure.ac +++ b/configure.ac @@ -1,11 +1,11 @@ dnl -dnl Configure script for bash-5.1 +dnl Configure script for bash-5.2 dnl dnl report bugs to chet@po.cwru.edu dnl dnl Process this file with autoconf to produce a configure script. -# Copyright (C) 1987-2020 Free Software Foundation, Inc. +# Copyright (C) 1987-2022 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify @@ -21,15 +21,15 @@ dnl Process this file with autoconf to produce a configure script. # You should have received a copy of the GNU General Public License # along with this program. If not, see . -AC_REVISION([for Bash 5.1, version 5.022])dnl +AC_REVISION([for Bash 5.2, version 5.046])dnl -define(bashvers, 5.1) +define(bashvers, 5.2) define(relstatus, release) AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org]) dnl make sure we are using a recent autoconf version -AC_PREREQ(2.61) +AC_PREREQ(2.69) AC_CONFIG_SRCDIR(shell.h) dnl where to find install.sh, config.sub, and config.guess @@ -108,11 +108,11 @@ AC_ARG_VAR(DEBUGGER_START_FILE, [location of bash debugger initialization file]) dnl arguments to configure dnl packages -AC_ARG_WITH(afs, AC_HELP_STRING([--with-afs], [if you are running AFS]), opt_afs=$withval) -AC_ARG_WITH(bash-malloc, AC_HELP_STRING([--with-bash-malloc], [use the Bash version of malloc]), opt_bash_malloc=$withval) -AC_ARG_WITH(curses, AC_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval) -AC_ARG_WITH(gnu-malloc, AC_HELP_STRING([--with-gnu-malloc], [synonym for --with-bash-malloc]), opt_bash_malloc=$withval) -AC_ARG_WITH(installed-readline, AC_HELP_STRING([--with-installed-readline], [use a version of the readline library that is already installed]), opt_with_installed_readline=$withval) +AC_ARG_WITH(afs, AS_HELP_STRING([--with-afs], [if you are running AFS]), opt_afs=$withval) +AC_ARG_WITH(bash-malloc, AS_HELP_STRING([--with-bash-malloc], [use the Bash version of malloc]), opt_bash_malloc=$withval) +AC_ARG_WITH(curses, AS_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval) +AC_ARG_WITH(gnu-malloc, AS_HELP_STRING([--with-gnu-malloc], [synonym for --with-bash-malloc]), opt_bash_malloc=$withval) +AC_ARG_WITH(installed-readline, AS_HELP_STRING([--with-installed-readline], [use a version of the readline library that is already installed]), opt_with_installed_readline=$withval) if test "$opt_bash_malloc" = yes; then MALLOC_TARGET=malloc @@ -182,13 +182,18 @@ opt_dircomplete_expand_default=no opt_globascii_default=yes opt_function_import=yes opt_dev_fd_stat_broken=no +opt_alt_array_impl=no +opt_translatable_strings=yes + +dnl modified by alternate array implementation option +ARRAY_O=array.o dnl options that affect how bash is compiled and linked opt_static_link=no opt_profiling=no dnl argument parsing for optional features -AC_ARG_ENABLE(minimal-config, AC_HELP_STRING([--enable-minimal-config], [a minimal sh-like configuration]), opt_minimal_config=$enableval) +AC_ARG_ENABLE(minimal-config, AS_HELP_STRING([--enable-minimal-config], [a minimal sh-like configuration]), opt_minimal_config=$enableval) dnl a minimal configuration turns everything off, but features can be dnl added individually @@ -202,51 +207,54 @@ if test $opt_minimal_config = yes; then opt_net_redirs=no opt_progcomp=no opt_separate_help=no opt_multibyte=yes opt_cond_regexp=no opt_coproc=no opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no + opt_translatable_strings=no opt_globascii_default=yes fi -AC_ARG_ENABLE(alias, AC_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval) -AC_ARG_ENABLE(arith-for-command, AC_HELP_STRING([--enable-arith-for-command], [enable arithmetic for command]), opt_arith_for_command=$enableval) -AC_ARG_ENABLE(array-variables, AC_HELP_STRING([--enable-array-variables], [include shell array variables]), opt_array_variables=$enableval) -AC_ARG_ENABLE(bang-history, AC_HELP_STRING([--enable-bang-history], [turn on csh-style history substitution]), opt_bang_history=$enableval) -AC_ARG_ENABLE(brace-expansion, AC_HELP_STRING([--enable-brace-expansion], [include brace expansion]), opt_brace_expansion=$enableval) -AC_ARG_ENABLE(casemod-attributes, AC_HELP_STRING([--enable-casemod-attributes], [include case-modifying variable attributes]), opt_casemod_attrs=$enableval) -AC_ARG_ENABLE(casemod-expansions, AC_HELP_STRING([--enable-casemod-expansions], [include case-modifying word expansions]), opt_casemod_expansions=$enableval) -AC_ARG_ENABLE(command-timing, AC_HELP_STRING([--enable-command-timing], [enable the time reserved word and command timing]), opt_command_timing=$enableval) -AC_ARG_ENABLE(cond-command, AC_HELP_STRING([--enable-cond-command], [enable the conditional command]), opt_cond_command=$enableval) -AC_ARG_ENABLE(cond-regexp, AC_HELP_STRING([--enable-cond-regexp], [enable extended regular expression matching in conditional commands]), opt_cond_regexp=$enableval) -AC_ARG_ENABLE(coprocesses, AC_HELP_STRING([--enable-coprocesses], [enable coprocess support and the coproc reserved word]), opt_coproc=$enableval) -AC_ARG_ENABLE(debugger, AC_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$enableval) -AC_ARG_ENABLE(dev-fd-stat-broken, AC_HELP_STRING([--enable-dev-fd-stat-broken], [enable this option if stat on /dev/fd/N and fstat on file descriptor N don't return the same results]), opt_dev_fd_stat_broken=$enableval) -AC_ARG_ENABLE(direxpand-default, AC_HELP_STRING([--enable-direxpand-default], [enable the direxpand shell option by default]), opt_dircomplete_expand_default=$enableval) -AC_ARG_ENABLE(directory-stack, AC_HELP_STRING([--enable-directory-stack], [enable builtins pushd/popd/dirs]), opt_dirstack=$enableval) -AC_ARG_ENABLE(disabled-builtins, AC_HELP_STRING([--enable-disabled-builtins], [allow disabled builtins to still be invoked]), opt_disabled_builtins=$enableval) -AC_ARG_ENABLE(dparen-arithmetic, AC_HELP_STRING([--enable-dparen-arithmetic], [include ((...)) command]), opt_dparen_arith=$enableval) -AC_ARG_ENABLE(extended-glob, AC_HELP_STRING([--enable-extended-glob], [include ksh-style extended pattern matching]), opt_extended_glob=$enableval) -AC_ARG_ENABLE(extended-glob-default, AC_HELP_STRING([--enable-extended-glob-default], [force extended pattern matching to be enabled by default]), opt_extglob_default=$enableval) -AC_ARG_ENABLE(function-import, AC_HELP_STRING([--enable-function-import], [allow bash to import exported function definitions by default]), opt_function_import=$enableval) -AC_ARG_ENABLE(glob-asciiranges-default, AC_HELP_STRING([--enable-glob-asciiranges-default], [force bracket range expressions in pattern matching to use the C locale by default]), opt_globascii_default=$enableval) -AC_ARG_ENABLE(help-builtin, AC_HELP_STRING([--enable-help-builtin], [include the help builtin]), opt_help=$enableval) -AC_ARG_ENABLE(history, AC_HELP_STRING([--enable-history], [turn on command history]), opt_history=$enableval) -AC_ARG_ENABLE(job-control, AC_HELP_STRING([--enable-job-control], [enable job control features]), opt_job_control=$enableval) -AC_ARG_ENABLE(multibyte, AC_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval) -AC_ARG_ENABLE(net-redirections, AC_HELP_STRING([--enable-net-redirections], [enable /dev/tcp/host/port redirection]), opt_net_redirs=$enableval) -AC_ARG_ENABLE(process-substitution, AC_HELP_STRING([--enable-process-substitution], [enable process substitution]), opt_process_subst=$enableval) -AC_ARG_ENABLE(progcomp, AC_HELP_STRING([--enable-progcomp], [enable programmable completion and the complete builtin]), opt_progcomp=$enableval) -AC_ARG_ENABLE(prompt-string-decoding, AC_HELP_STRING([--enable-prompt-string-decoding], [turn on escape character decoding in prompts]), opt_prompt_decoding=$enableval) -AC_ARG_ENABLE(readline, AC_HELP_STRING([--enable-readline], [turn on command line editing]), opt_readline=$enableval) -AC_ARG_ENABLE(restricted, AC_HELP_STRING([--enable-restricted], [enable a restricted shell]), opt_restricted=$enableval) -AC_ARG_ENABLE(select, AC_HELP_STRING([--enable-select], [include select command]), opt_select=$enableval) -AC_ARG_ENABLE(separate-helpfiles, AC_HELP_STRING([--enable-separate-helpfiles], [use external files for help builtin documentation]), opt_separate_help=$enableval) -AC_ARG_ENABLE(single-help-strings, AC_HELP_STRING([--enable-single-help-strings], [store help documentation as a single string to ease translation]), opt_single_longdoc_strings=$enableval) -AC_ARG_ENABLE(strict-posix-default, AC_HELP_STRING([--enable-strict-posix-default], [configure bash to be posix-conformant by default]), opt_strict_posix=$enableval) -AC_ARG_ENABLE(usg-echo-default, AC_HELP_STRING([--enable-usg-echo-default], [a synonym for --enable-xpg-echo-default]), opt_xpg_echo=$enableval) -AC_ARG_ENABLE(xpg-echo-default, AC_HELP_STRING([--enable-xpg-echo-default], [make the echo builtin expand escape sequences by default]), opt_xpg_echo=$enableval) +AC_ARG_ENABLE(alias, AS_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval) +AC_ARG_ENABLE(alt-array-implementation, AS_HELP_STRING([--enable-alt-array-implementation], [enable an alternate array implementation that optimizes speed at the cost of space]), opt_alt_array_impl=$enableval) +AC_ARG_ENABLE(arith-for-command, AS_HELP_STRING([--enable-arith-for-command], [enable arithmetic for command]), opt_arith_for_command=$enableval) +AC_ARG_ENABLE(array-variables, AS_HELP_STRING([--enable-array-variables], [include shell array variables]), opt_array_variables=$enableval) +AC_ARG_ENABLE(bang-history, AS_HELP_STRING([--enable-bang-history], [turn on csh-style history substitution]), opt_bang_history=$enableval) +AC_ARG_ENABLE(brace-expansion, AS_HELP_STRING([--enable-brace-expansion], [include brace expansion]), opt_brace_expansion=$enableval) +AC_ARG_ENABLE(casemod-attributes, AS_HELP_STRING([--enable-casemod-attributes], [include case-modifying variable attributes]), opt_casemod_attrs=$enableval) +AC_ARG_ENABLE(casemod-expansions, AS_HELP_STRING([--enable-casemod-expansions], [include case-modifying word expansions]), opt_casemod_expansions=$enableval) +AC_ARG_ENABLE(command-timing, AS_HELP_STRING([--enable-command-timing], [enable the time reserved word and command timing]), opt_command_timing=$enableval) +AC_ARG_ENABLE(cond-command, AS_HELP_STRING([--enable-cond-command], [enable the conditional command]), opt_cond_command=$enableval) +AC_ARG_ENABLE(cond-regexp, AS_HELP_STRING([--enable-cond-regexp], [enable extended regular expression matching in conditional commands]), opt_cond_regexp=$enableval) +AC_ARG_ENABLE(coprocesses, AS_HELP_STRING([--enable-coprocesses], [enable coprocess support and the coproc reserved word]), opt_coproc=$enableval) +AC_ARG_ENABLE(debugger, AS_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$enableval) +AC_ARG_ENABLE(dev-fd-stat-broken, AS_HELP_STRING([--enable-dev-fd-stat-broken], [enable this option if stat on /dev/fd/N and fstat on file descriptor N don't return the same results]), opt_dev_fd_stat_broken=$enableval) +AC_ARG_ENABLE(direxpand-default, AS_HELP_STRING([--enable-direxpand-default], [enable the direxpand shell option by default]), opt_dircomplete_expand_default=$enableval) +AC_ARG_ENABLE(directory-stack, AS_HELP_STRING([--enable-directory-stack], [enable builtins pushd/popd/dirs]), opt_dirstack=$enableval) +AC_ARG_ENABLE(disabled-builtins, AS_HELP_STRING([--enable-disabled-builtins], [allow disabled builtins to still be invoked]), opt_disabled_builtins=$enableval) +AC_ARG_ENABLE(dparen-arithmetic, AS_HELP_STRING([--enable-dparen-arithmetic], [include ((...)) command]), opt_dparen_arith=$enableval) +AC_ARG_ENABLE(extended-glob, AS_HELP_STRING([--enable-extended-glob], [include ksh-style extended pattern matching]), opt_extended_glob=$enableval) +AC_ARG_ENABLE(extended-glob-default, AS_HELP_STRING([--enable-extended-glob-default], [force extended pattern matching to be enabled by default]), opt_extglob_default=$enableval) +AC_ARG_ENABLE(function-import, AS_HELP_STRING([--enable-function-import], [allow bash to import exported function definitions by default]), opt_function_import=$enableval) +AC_ARG_ENABLE(glob-asciiranges-default, AS_HELP_STRING([--enable-glob-asciiranges-default], [force bracket range expressions in pattern matching to use the C locale by default]), opt_globascii_default=$enableval) +AC_ARG_ENABLE(help-builtin, AS_HELP_STRING([--enable-help-builtin], [include the help builtin]), opt_help=$enableval) +AC_ARG_ENABLE(history, AS_HELP_STRING([--enable-history], [turn on command history]), opt_history=$enableval) +AC_ARG_ENABLE(job-control, AS_HELP_STRING([--enable-job-control], [enable job control features]), opt_job_control=$enableval) +AC_ARG_ENABLE(multibyte, AS_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval) +AC_ARG_ENABLE(net-redirections, AS_HELP_STRING([--enable-net-redirections], [enable /dev/tcp/host/port redirection]), opt_net_redirs=$enableval) +AC_ARG_ENABLE(process-substitution, AS_HELP_STRING([--enable-process-substitution], [enable process substitution]), opt_process_subst=$enableval) +AC_ARG_ENABLE(progcomp, AS_HELP_STRING([--enable-progcomp], [enable programmable completion and the complete builtin]), opt_progcomp=$enableval) +AC_ARG_ENABLE(prompt-string-decoding, AS_HELP_STRING([--enable-prompt-string-decoding], [turn on escape character decoding in prompts]), opt_prompt_decoding=$enableval) +AC_ARG_ENABLE(readline, AS_HELP_STRING([--enable-readline], [turn on command line editing]), opt_readline=$enableval) +AC_ARG_ENABLE(restricted, AS_HELP_STRING([--enable-restricted], [enable a restricted shell]), opt_restricted=$enableval) +AC_ARG_ENABLE(select, AS_HELP_STRING([--enable-select], [include select command]), opt_select=$enableval) +AC_ARG_ENABLE(separate-helpfiles, AS_HELP_STRING([--enable-separate-helpfiles], [use external files for help builtin documentation]), opt_separate_help=$enableval) +AC_ARG_ENABLE(single-help-strings, AS_HELP_STRING([--enable-single-help-strings], [store help documentation as a single string to ease translation]), opt_single_longdoc_strings=$enableval) +AC_ARG_ENABLE(strict-posix-default, AS_HELP_STRING([--enable-strict-posix-default], [configure bash to be posix-conformant by default]), opt_strict_posix=$enableval) +AC_ARG_ENABLE(translatable-strings, AS_HELP_STRING([--enable-translatable-strings], [include support for $"..." translatable strings]), opt_translatable_strings=$enableval) +AC_ARG_ENABLE(usg-echo-default, AS_HELP_STRING([--enable-usg-echo-default], [a synonym for --enable-xpg-echo-default]), opt_xpg_echo=$enableval) +AC_ARG_ENABLE(xpg-echo-default, AS_HELP_STRING([--enable-xpg-echo-default], [make the echo builtin expand escape sequences by default]), opt_xpg_echo=$enableval) dnl options that alter how bash is compiled and linked -AC_ARG_ENABLE(mem-scramble, AC_HELP_STRING([--enable-mem-scramble], [scramble memory on calls to malloc and free]), opt_memscramble=$enableval) -AC_ARG_ENABLE(profiling, AC_HELP_STRING([--enable-profiling], [allow profiling with gprof]), opt_profiling=$enableval) -AC_ARG_ENABLE(static-link, AC_HELP_STRING([--enable-static-link], [link bash statically, for use as a root shell]), opt_static_link=$enableval) +AC_ARG_ENABLE(mem-scramble, AS_HELP_STRING([--enable-mem-scramble], [scramble memory on calls to malloc and free]), opt_memscramble=$enableval) +AC_ARG_ENABLE(profiling, AS_HELP_STRING([--enable-profiling], [allow profiling with gprof]), opt_profiling=$enableval) +AC_ARG_ENABLE(static-link, AS_HELP_STRING([--enable-static-link], [link bash statically, for use as a root shell]), opt_static_link=$enableval) dnl So-called `precious' variables AC_ARG_VAR([CC_FOR_BUILD], [C compiler used when compiling binaries used only at build time]) @@ -354,6 +362,13 @@ fi if test $opt_dev_fd_stat_broken = yes; then AC_DEFINE(DEV_FD_STAT_BROKEN) fi +if test $opt_alt_array_impl = yes; then +AC_DEFINE(ALT_ARRAY_IMPLEMENTATION) +ARRAY_O=array2.o +fi +if test $opt_translatable_strings = yes; then +AC_DEFINE(TRANSLATABLE_STRINGS) +fi if test $opt_memscramble = yes; then AC_DEFINE(MEMSCRAMBLE) @@ -368,7 +383,7 @@ fi HELPDIR= HELPDIRDEFINE= HELPINSTALL= HELPFILES_TARGET= if test "$opt_separate_help" != no; then if test "$opt_separate_help" = "yes" ; then - HELPDIR='${datadir}/bash' + HELPDIR='${datadir}/bash/helpfiles' else HELPDIR=$opt_separate_help fi @@ -391,6 +406,8 @@ AC_SUBST(MALLOC_LIBRARY) AC_SUBST(MALLOC_LDFLAGS) AC_SUBST(MALLOC_DEP) +AC_SUBST(ARRAY_O) + AC_SUBST(htmldir) AC_SUBST(HELPDIR) @@ -414,17 +431,16 @@ dnl different environment AC_PROG_CC if test -n "$want_auto_cflags"; then - AUTO_CFLAGS="-g ${GCC+-O2}" - AUTO_LDFLAGS="-g ${GCC+-O2}" - STYLE_CFLAGS="${GCC+-Wno-parentheses} ${GCC+-Wno-format-security}" + AUTO_CFLAGS="-g ${GCC:+-O2}" + AUTO_LDFLAGS="-g ${GCC:+-O2}" +# STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security} ${GCC:+-Wno-tautological-constant-out-of-range-compare}" + STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security}" else AUTO_CFLAGS= AUTO_LDFLAGS= STYLE_CFLAGS= fi dnl test for Unix variants -AC_ISC_POSIX -AC_MINIX - +AC_USE_SYSTEM_EXTENSIONS AC_SYS_LARGEFILE dnl BEGIN changes for cross-building (currently cygwin, minGW, and @@ -481,7 +497,7 @@ dnl these must come after the test for cc/gcc if test "$opt_profiling" = "yes"; then PROFILE_FLAGS=-pg case "$host_os" in - solaris2*|linux*) ;; + solaris2*|linux*|darwin*) ;; *) opt_static_link=yes ;; esac DEBUG= MALLOC_DEBUG= @@ -494,7 +510,7 @@ if test "$opt_static_link" = yes; then prefer_static=yes prefer_shared=no # if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2 - if test -n "$GCC" || test "$ac_cv_prog_gcc" = "yes"; then + if test "$GCC" = "yes"; then STATIC_LD="-static" case "$host_os" in solaris2*|linux*) ;; @@ -516,9 +532,12 @@ if test "X$cross_compiling" = "Xno"; then fi # CFLAGS set above to default value if not passed in environment if test -n "$want_auto_cflags" ; then - CFLAGS_FOR_BUILD="${CFLAGS} ${STYLE_CFLAGS}" + CFLAGS_FOR_BUILD="${CFLAGS}" + BASE_CFLAGS_FOR_BUILD="${CFLAGS}" else + # passed in environment CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'} + BASE_CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'} fi LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'} else @@ -526,6 +545,7 @@ else CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""} LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""} CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD="-g"} + BASE_CFLAGS_FOR_BUILD=${BASE_CFLAGS_FOR_BUILD="-g"} LIBS_FOR_BUILD=${LIBS_FOR_BUILD-""} fi @@ -536,6 +556,8 @@ AC_SUBST(STATIC_LD) AC_SUBST(CC_FOR_BUILD) AC_SUBST(CFLAGS_FOR_BUILD) +AC_SUBST(BASE_CFLAGS_FOR_BUILD) +AC_SUBST(STYLE_CFLAGS) AC_SUBST(CPPFLAGS_FOR_BUILD) AC_SUBST(LDFLAGS_FOR_BUILD) AC_SUBST(LIBS_FOR_BUILD) @@ -691,6 +713,8 @@ AC_SUBST(SIZE) m4_include([m4/stat-time.m4]) m4_include([m4/timespec.m4]) +m4_include([m4/strtoimax.m4]) + dnl include files for gettext m4_include([m4/codeset.m4]) @@ -729,26 +753,22 @@ m4_include([m4/wchar_t.m4]) m4_include([m4/wint_t.m4]) m4_include([m4/xsize.m4]) -dnl Turn on any extensions available in the GNU C library. -AC_DEFINE(_GNU_SOURCE, 1) - dnl C compiler characteristics AC_C_CONST AC_C_INLINE AC_C_BIGENDIAN AC_C_STRINGIZE -AC_C_LONG_DOUBLE +AC_TYPE_LONG_DOUBLE AC_C_PROTOTYPES AC_C_CHAR_UNSIGNED AC_C_VOLATILE AC_C_RESTRICT dnl initialize GNU gettext -AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl]) +BASH_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl]) dnl header files AC_HEADER_DIRENT -AC_HEADER_TIME AC_HEADER_MAJOR BASH_HEADER_INTTYPES @@ -782,7 +802,6 @@ dnl special checks for libc functions AC_FUNC_ALLOCA AC_FUNC_CHOWN AC_FUNC_GETPGRP -AC_FUNC_SETVBUF_REVERSED AC_FUNC_VPRINTF AC_FUNC_STRCOLL @@ -813,15 +832,12 @@ if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then AC_LIBOBJ(vprint) fi -dnl signal stuff -AC_TYPE_SIGNAL - dnl checks for certain version-specific system calls and libc functions AC_CHECK_FUNC(__setostype, AC_DEFINE(HAVE_SETOSTYPE)) AC_CHECK_FUNC(wait3, AC_DEFINE(HAVE_WAIT3)) dnl checks for missing libc functions -AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING)) +AC_CHECK_FUNC(mkfifo, AC_DEFINE(HAVE_MKFIFO), AC_DEFINE(MKFIFO_MISSING)) dnl checks for system calls AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getentropy getgroups \ @@ -845,7 +861,7 @@ AC_CHECK_FUNCS(arc4random) AC_REPLACE_FUNCS(getcwd memset) AC_REPLACE_FUNCS(strcasecmp strcasestr strerror strftime strnlen strpbrk strstr) -AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax) +AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoumax) AC_REPLACE_FUNCS(dprintf) AC_REPLACE_FUNCS(strchrnul) AC_REPLACE_FUNCS(strdup) @@ -857,8 +873,6 @@ AC_CHECK_DECLS([confstr]) AC_CHECK_DECLS([printf]) AC_CHECK_DECLS([sbrk]) AC_CHECK_DECLS([setregid]) -dnl AC_CHECK_DECLS[(setresuid]) -dnl AC_CHECK_DECLS[(setresgid]) AC_CHECK_DECLS([strcpy]) AC_CHECK_DECLS([strsignal]) @@ -868,12 +882,13 @@ dnl Extra test to detect the horribly broken HP/UX 11.00 strtold(3) AC_CHECK_DECLS([strtold], [ AC_MSG_CHECKING([for broken strtold]) AC_CACHE_VAL(bash_cv_strtold_broken, - [AC_TRY_COMPILE( - [#include ], - [long double r; char *foo, bar; r = strtold(foo, &bar);], - bash_cv_strtold_broken=no, bash_cv_strtold_broken=yes, - [AC_MSG_WARN(cannot check for broken strtold if cross-compiling, defaulting to no)]) - ] + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[long double r; char *foo, bar; r = strtold(foo, &bar);]] + )], + [bash_cv_strtold_broken=no],[bash_cv_strtold_broken=yes]) + ] ) AC_MSG_RESULT($bash_cv_strtold_broken) if test "$bash_cv_strtold_broken" = "yes" ; then @@ -881,18 +896,17 @@ AC_CHECK_DECLS([strtold], [ fi ]) -BASH_CHECK_DECL(strtoimax) -BASH_CHECK_DECL(strtol) -BASH_CHECK_DECL(strtoll) -BASH_CHECK_DECL(strtoul) -BASH_CHECK_DECL(strtoull) -BASH_CHECK_DECL(strtoumax) +AC_CHECK_DECLS(strtol) +AC_CHECK_DECLS(strtoll) +AC_CHECK_DECLS(strtoul) +AC_CHECK_DECLS(strtoull) +AC_CHECK_DECLS(strtoumax) AC_FUNC_MKTIME dnl dnl Checks for lib/intl and related code (uses some of the output from -dnl AM_GNU_GETTEXT) +dnl BASH_GNU_GETTEXT) dnl AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h]) @@ -924,9 +938,6 @@ AC_CHECK_LIB(dl, dlopen) AC_CHECK_FUNCS(dlopen dlclose dlsym) fi -dnl this defines HAVE_DECL_SYS_SIGLIST -AC_DECL_SYS_SIGLIST - dnl network functions -- check for inet_aton again if test "$ac_cv_func_inet_aton" != 'yes'; then BASH_FUNC_INET_ATON @@ -959,10 +970,9 @@ AC_TYPE_UINTPTR_T AC_CHECK_TYPE(ssize_t, int) AC_CHECK_TYPE(time_t, long) -BASH_TYPE_LONG_LONG -BASH_TYPE_UNSIGNED_LONG_LONG +AC_TYPE_LONG_LONG_INT +AC_TYPE_UNSIGNED_LONG_LONG_INT -AC_TYPE_SIGNAL BASH_TYPE_SIG_ATOMIC_T AC_CHECK_SIZEOF(char, 1) @@ -970,6 +980,7 @@ AC_CHECK_SIZEOF(short, 2) AC_CHECK_SIZEOF(int, 4) AC_CHECK_SIZEOF(long, 4) AC_CHECK_SIZEOF(char *, 4) +AC_CHECK_SIZEOF(size_t, 4) AC_CHECK_SIZEOF(double, 8) AC_CHECK_SIZEOF([long long], 8) @@ -999,7 +1010,6 @@ BASH_FUNC_LSTAT fi dnl behavior of system calls and library functions -BASH_FUNC_CTYPE_NONASCII BASH_FUNC_DUP2_CLOEXEC_CHECK BASH_SYS_PGRP_SYNC BASH_SYS_SIGNAL_VINTAGE @@ -1010,18 +1020,18 @@ BASH_SYS_SIGLIST BASH_UNDER_SYS_SIGLIST dnl various system types -BASH_TYPE_SIGHANDLER BASH_CHECK_TYPE(clock_t, [#include ], long) BASH_CHECK_TYPE(sigset_t, [#include ], int) -BASH_CHECK_TYPE(sig_atomic_t, [#include ], int) -BASH_CHECK_TYPE(quad_t, , long, HAVE_QUAD_T) -BASH_CHECK_TYPE(intmax_t, , $bash_cv_type_long_long) -BASH_CHECK_TYPE(uintmax_t, , $bash_cv_type_unsigned_long_long) if test "$ac_cv_header_sys_socket_h" = "yes"; then BASH_CHECK_TYPE(socklen_t, [#include ], [unsigned int], HAVE_SOCKLEN_T) fi + +AC_CHECK_TYPE(quad_t, AC_DEFINE([HAVE_QUAD_T], [1]), [], ) BASH_TYPE_RLIMIT +AC_TYPE_INTMAX_T +AC_TYPE_UINTMAX_T + AC_CHECK_SIZEOF(intmax_t, 8) dnl presence and contents of structures used by system calls @@ -1059,6 +1069,8 @@ BASH_FUNC_STRCOLL BASH_FUNC_SNPRINTF BASH_FUNC_VSNPRINTF +BASH_FUNC_STRTOIMAX + dnl If putenv or unsetenv is not present, set the right define so the dnl prototype and declaration in lib/sh/getenv.c will be standard-conformant @@ -1164,7 +1176,7 @@ linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading *) AC_DEFINE(PGRP_PIPE) ;; esac ;; netbsd*|openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;; -freebsd*) LOCAL_CFLAGS='-DHEREDOC_PIPESIZE=4096' ;; +freebsd*|midnightbsd*) LOCAL_CFLAGS='-DHEREDOC_PIPESIZE=4096' ;; *qnx[[67]]*) LOCAL_LIBS="-lncurses" ;; *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; powerux*) LOCAL_LIBS="-lgen" ;; @@ -1190,6 +1202,7 @@ freebsd[[3-9]]*) fi ;; freebsdelf*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading dragonfly*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading +midnightbsd*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading esac case "$host_cpu" in @@ -1206,7 +1219,7 @@ mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;; esac # turn off paren warnings in gcc -CFLAGS="$CFLAGS ${STYLE_CFLAGS}" +#CFLAGS="$CFLAGS ${STYLE_CFLAGS}" # # Shared object configuration section. These values are generated by @@ -1297,14 +1310,17 @@ AC_SUBST(LOCAL_DEFS) #AC_SUBST(ALLOCA_SOURCE) #AC_SUBST(ALLOCA_OBJECT) -AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \ - lib/intl/Makefile \ - lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \ - lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \ - examples/loadables/Makefile examples/loadables/Makefile.inc \ - examples/loadables/perl/Makefile \ - support/bash.pc support/bashbug.sh], -[ -# Makefile uses this timestamp file to record whether config.h is up to date. -echo timestamp > stamp-h -]) +AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile \ + lib/glob/Makefile lib/intl/Makefile \ + lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \ + lib/tilde/Makefile doc/Makefile support/Makefile \ + po/Makefile.in examples/loadables/Makefile \ + examples/loadables/Makefile.inc \ + examples/loadables/Makefile.sample \ + examples/loadables/perl/Makefile \ + support/bash.pc support/bashbug.sh]) + +dnl Makefile uses this timestamp file to record whether config.h is up to date. +AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > stamp-h]) + +AC_OUTPUT diff --git a/doc/FAQ b/doc/FAQ index 104d0bc1c..44be0a6d9 100644 --- a/doc/FAQ +++ b/doc/FAQ @@ -1,4 +1,6 @@ -This is the Bash FAQ, version 4.15, for Bash version 5.0. +This is the Bash FAQ, version 4.15, for Bash version 5.1. + +[This document is no longer maintained.] This document contains a set of frequently-asked questions concerning Bash, the GNU Bourne-Again Shell. Bash is a freely-available command @@ -631,7 +633,7 @@ o There is a new configuration option (in config-top.h) that forces bash to 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 +o There is a new configure 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 diff --git a/doc/Makefile.in b/doc/Makefile.in index 12068fb58..8bf775e14 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -74,7 +74,6 @@ TEXI2DVI = ${SUPPORT_SRCDIR}/texi2dvi TEXI2HTML = ${SUPPORT_SRCDIR}/texi2html MAN2HTML = ${BUILD_DIR}/support/man2html HTMLPOST = ${srcdir}/htmlpost.sh -INFOPOST = ${srcdir}/infopost.sh QUIETPS = #set this to -q to shut up dvips PAPERSIZE = letter # change to a4 for A4-size paper PSDPI = 600 # could be 300 if you like @@ -108,11 +107,11 @@ BASHREF_FILES = $(srcdir)/bashref.texi $(srcdir)/fdl.texi $(srcdir)/version.texi .1.ps: $(RM) $@ - -${GROFF} -man $< > $@ + -${GROFF} -I${srcdir} -man $< > $@ .1.0: $(RM) $@ - -${NROFF} -man $< > $@ + -${NROFF} -I${srcdir} -man $< > $@ .1.html: $(RM) $@ @@ -128,11 +127,11 @@ BASHREF_FILES = $(srcdir)/bashref.texi $(srcdir)/fdl.texi $(srcdir)/version.texi .3.ps: $(RM) $@ - -${GROFF} -man $< > $@ + -${GROFF} -I${srcdir} -man $< > $@ .3.0: $(RM) $@ - -${NROFF} -man $< > $@ + -${NROFF} -I${srcdir} -man $< > $@ .3.html: $(RM) $@ @@ -173,23 +172,26 @@ html: ${HTMLFILES} pdf: ${PDFFILES} bashref.dvi: $(BASHREF_FILES) $(HSUSER) $(RLUSER) + $(RM) $@ ${SET_TEXINPUTS} $(TEXI2DVI) $(srcdir)/bashref.texi || { ${RM} $@ ; exit 1; } bashref.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER) + $(RM) $@ $(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi # experimental bashref.pdf: $(BASHREF_FILES) $(HSUSER) $(RLUSER) + $(RM) $@ ${SET_TEXINPUTS} $(TEXI2PDF) $(srcdir)/bashref.texi || { ${RM} $@ ; exit 1; } - # can also use: # $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER) $(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi -bash.info: bashref.info - ${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \ +bash.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER) + $(RM) $@ + $(MAKEINFO) -o $@ --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi bash.txt: bash.1 bash.ps: bash.1 @@ -324,18 +326,18 @@ faq.mail: FAQ faq.headers.mail faq.version cat faq.headers.mail faq.version FAQ > $@ inst: bashref.texi - $(SHELL) ./mkinstall - cmp -s INSTALL ../INSTALL || mv INSTALL ../INSTALL + $(SHELL) ${srcdir}/mkinstall -t ${topdir} -s ${srcdir} + cmp -s INSTALL ${topdir}/INSTALL || mv INSTALL ${topdir}/INSTALL $(RM) INSTALL posix: bashref.texi - $(SHELL) ./mkposix - cmp -s POSIX ../POSIX || mv POSIX ../POSIX + $(SHELL) ${srcdir}/mkposix -t ${topdir} -s ${srcdir} + cmp -s POSIX ${topdir}/POSIX || mv POSIX ${topdir}/POSIX $(RM) POSIX rbash: bashref.texi - $(SHELL) ./mkrbash - cmp -s RBASH ../RBASH || mv RBASH ../RBASH + $(SHELL) ${srcdir}/mkrbash -t ${topdir} -s ${srcdir} + cmp -s RBASH ${topdir}/RBASH || mv RBASH ${topdir}/RBASH $(RM) RBASH xdist: everything inst posix rbash diff --git a/doc/article.txt b/doc/article.txt index c19ff9248..e43ca9f39 100644 --- a/doc/article.txt +++ b/doc/article.txt @@ -531,7 +531,7 @@ _c_o_m_m_a_n_d _h_i_s_t_o_r_y) is provided jointly by Bash readline library. Bash provides variables ($HISTFILE, $HISTSIZE, and $HISTCONTROL) and the _h_i_s_t_o_r_y and _f_c builtins to manipulate the history list. The value of $_H_I_S_T_F_I_L_E -specifes the file where Bash writes the command history on +specifies the file where Bash writes the command history on exit and reads it on startup. $_H_I_S_T_S_I_Z_E is used to limit the number of commands saved in the history. $_H_I_S_T_C_O_N_T_R_O_L provides a crude form of control over which commands are @@ -1107,5 +1107,3 @@ Inc. October 28, 1994 - - diff --git a/doc/bash.0 b/doc/bash.0 index 9160b097b..1580b77aa 100644 --- a/doc/bash.0 +++ b/doc/bash.0 @@ -9,7 +9,7 @@ SSYYNNOOPPSSIISS bbaasshh [options] [command_string | file] CCOOPPYYRRIIGGHHTT - Bash is Copyright (C) 1989-2020 by the Free Software Foundation, Inc. + Bash is Copyright (C) 1989-2022 by the Free Software Foundation, Inc. DDEESSCCRRIIPPTTIIOONN BBaasshh is an sshh-compatible command language interpreter that executes @@ -131,7 +131,7 @@ IINNVVOOCCAATTIIOONN one started with the ----llooggiinn option. An _i_n_t_e_r_a_c_t_i_v_e shell is one started without non-option arguments (un- - less --ss is specified) and without the --cc option whose standard input + less --ss is specified) and without the --cc option, whose standard input and error are both connected to terminals (as determined by _i_s_a_t_t_y(3)), or one started with the --ii option. PPSS11 is set and $$-- includes ii if bbaasshh is interactive, allowing a shell script or a startup file to test @@ -191,14 +191,14 @@ IINNVVOOCCAATTIIOONN startup files are read. BBaasshh attempts to determine when it is being run with its standard input - connected to a network connection, as when executed by the remote shell - daemon, usually _r_s_h_d, or the secure shell daemon _s_s_h_d. If bbaasshh deter- - mines it is being run in this fashion, it reads and executes commands - from _~_/_._b_a_s_h_r_c, if that file exists and is readable. It will not do - this if invoked as sshh. The ----nnoorrcc option may be used to inhibit this - behavior, and the ----rrccffiillee option may be used to force another file to - be read, but neither _r_s_h_d nor _s_s_h_d generally invoke the shell with - those options or allow them to be specified. + connected to a network connection, as when executed by the historical + remote shell daemon, usually _r_s_h_d, or the secure shell daemon _s_s_h_d. If + bbaasshh determines it is being run non-interactively in this fashion, it + reads and executes commands from _~_/_._b_a_s_h_r_c, if that file exists and is + readable. It will not do this if invoked as sshh. The ----nnoorrcc option may + be used to inhibit this behavior, and the ----rrccffiillee option may be used + to force another file to be read, but neither _r_s_h_d nor _s_s_h_d generally + invoke the shell with those options or allow them to be specified. If the shell is started with the effective user (group) id not equal to the real user (group) id, and the --pp option is not supplied, no startup @@ -237,59 +237,63 @@ RREESSEERRVVEEDD WWOORRDDSS tthheenn uunnttiill wwhhiillee {{ }} ttiimmee [[[[ ]]]] SSHHEELLLL GGRRAAMMMMAARR + This section describes the syntax of the various forms of shell com- + mands. + SSiimmppllee CCoommmmaannddss - A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable assignments fol- - lowed by bbllaannkk-separated words and redirections, and terminated by a + A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable assignments fol- + lowed by bbllaannkk-separated words and redirections, and terminated by a _c_o_n_t_r_o_l _o_p_e_r_a_t_o_r. The first word specifies the command to be executed, - and is passed as argument zero. The remaining words are passed as ar- + and is passed as argument zero. The remaining words are passed as ar- guments to the invoked command. - The return value of a _s_i_m_p_l_e _c_o_m_m_a_n_d is its exit status, or 128+_n if + The return value of a _s_i_m_p_l_e _c_o_m_m_a_n_d is its exit status, or 128+_n if the command is terminated by signal _n. PPiippeelliinneess - A _p_i_p_e_l_i_n_e is a sequence of one or more commands separated by one of + A _p_i_p_e_l_i_n_e is a sequence of one or more commands separated by one of the control operators || or ||&&. The format for a pipeline is: - [ttiimmee [--pp]] [ ! ] _c_o_m_m_a_n_d [ [|||||&&] _c_o_m_m_a_n_d_2 ... ] + [ttiimmee [--pp]] [ ! ] _c_o_m_m_a_n_d_1 [ [|||||&&] _c_o_m_m_a_n_d_2 ... ] - The standard output of _c_o_m_m_a_n_d is connected via a pipe to the standard - input of _c_o_m_m_a_n_d_2. This connection is performed before any redirec- - tions specified by the command (see RREEDDIIRREECCTTIIOONN below). If ||&& is used, - _c_o_m_m_a_n_d's standard error, in addition to its standard output, is con- - nected to _c_o_m_m_a_n_d_2's standard input through the pipe; it is shorthand - for 22>>&&11 ||. This implicit redirection of the standard error to the - standard output is performed after any redirections specified by the - command. + The standard output of _c_o_m_m_a_n_d_1 is connected via a pipe to the standard + input of _c_o_m_m_a_n_d_2. This connection is performed before any redirec- + tions specified by the _c_o_m_m_a_n_d_1(see RREEDDIIRREECCTTIIOONN below). If ||&& is used, + _c_o_m_m_a_n_d_1's standard error, in addition to its standard output, is con- + nected to _c_o_m_m_a_n_d_2's standard input through the pipe; it is shorthand + for 22>>&&11 ||. This implicit redirection of the standard error to the + standard output is performed after any redirections specified by _c_o_m_- + _m_a_n_d_1. The return status of a pipeline is the exit status of the last command, - unless the ppiippeeffaaiill option is enabled. If ppiippeeffaaiill is enabled, the - pipeline's return status is the value of the last (rightmost) command - to exit with a non-zero status, or zero if all commands exit success- + unless the ppiippeeffaaiill option is enabled. If ppiippeeffaaiill is enabled, the + pipeline's return status is the value of the last (rightmost) command + to exit with a non-zero status, or zero if all commands exit success- fully. If the reserved word !! precedes a pipeline, the exit status of - that pipeline is the logical negation of the exit status as described - above. The shell waits for all commands in the pipeline to terminate + that pipeline is the logical negation of the exit status as described + above. The shell waits for all commands in the pipeline to terminate before returning a value. - If the ttiimmee reserved word precedes a pipeline, the elapsed as well as - user and system time consumed by its execution are reported when the - pipeline terminates. The --pp option changes the output format to that - specified by POSIX. When the shell is in _p_o_s_i_x _m_o_d_e, it does not rec- - ognize ttiimmee as a reserved word if the next token begins with a `-'. - The TTIIMMEEFFOORRMMAATT variable may be set to a format string that specifies - how the timing information should be displayed; see the description of + If the ttiimmee reserved word precedes a pipeline, the elapsed as well as + user and system time consumed by its execution are reported when the + pipeline terminates. The --pp option changes the output format to that + specified by POSIX. When the shell is in _p_o_s_i_x _m_o_d_e, it does not rec- + ognize ttiimmee as a reserved word if the next token begins with a `-'. + The TTIIMMEEFFOORRMMAATT variable may be set to a format string that specifies + how the timing information should be displayed; see the description of TTIIMMEEFFOORRMMAATT under SShheellll VVaarriiaabblleess below. When the shell is in _p_o_s_i_x _m_o_d_e, ttiimmee may be followed by a newline. In - this case, the shell displays the total user and system time consumed - by the shell and its children. The TTIIMMEEFFOORRMMAATT variable may be used to + this case, the shell displays the total user and system time consumed + by the shell and its children. The TTIIMMEEFFOORRMMAATT variable may be used to specify the format of the time information. - Each command in a pipeline is executed as a separate process (i.e., in - a subshell). See CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT for a description of a - subshell environment. If the llaassttppiippee option is enabled using the - sshhoopptt builtin (see the description of sshhoopptt below), the last element of - a pipeline may be run by the shell process. + Each command in a multi-command pipeline, where pipes are created, is + executed in a _s_u_b_s_h_e_l_l, which is a separate process. See CCOOMMMMAANNDD EEXXEE-- + CCUUTTIIOONN EENNVVIIRROONNMMEENNTT for a description of subshells and a subshell envi- + ronment. If the llaassttppiippee option is enabled using the sshhoopptt builtin + (see the description of sshhoopptt below), the last element of a pipeline + may be run by the shell process when job control is not active. LLiissttss A _l_i_s_t is a sequence of one or more pipelines separated by one of the @@ -333,11 +337,11 @@ SSHHEELLLL GGRRAAMMMMAARR one or more newlines, and may be followed by a newline in place of a semicolon. - (_l_i_s_t) _l_i_s_t is executed in a subshell environment (see CCOOMMMMAANNDD EEXXEECCUU-- - TTIIOONN EENNVVIIRROONNMMEENNTT below). Variable assignments and builtin com- - mands that affect the shell's environment do not remain in ef- - fect after the command completes. The return status is the exit - status of _l_i_s_t. + (_l_i_s_t) _l_i_s_t is executed in a subshell (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONN-- + MMEENNTT below for a description of a subshell environment). Vari- + able assignments and builtin commands that affect the shell's + environment do not remain in effect after the command completes. + The return status is the exit status of _l_i_s_t. { _l_i_s_t; } _l_i_s_t is simply executed in the current shell environment. _l_i_s_t @@ -353,66 +357,73 @@ SSHHEELLLL GGRRAAMMMMAARR The _e_x_p_r_e_s_s_i_o_n is evaluated according to the rules described be- low under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If the value of the expression is non-zero, the return status is 0; otherwise the return status - is 1. This is exactly equivalent to lleett ""_e_x_p_r_e_s_s_i_o_n"". + is 1. The _e_x_p_r_e_s_s_i_o_n undergoes the same expansions as if it + were within double quotes, but double quote characters in _e_x_- + _p_r_e_s_s_i_o_n are not treated specially and are removed. [[[[ _e_x_p_r_e_s_s_i_o_n ]]]] Return a status of 0 or 1 depending on the evaluation of the conditional expression _e_x_p_r_e_s_s_i_o_n. Expressions are composed of the primaries described below under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. - Word splitting and pathname expansion are not performed on the - words between the [[[[ and ]]]]; tilde expansion, parameter and - variable expansion, arithmetic expansion, command substitution, - process substitution, and quote removal are performed. Condi- - tional operators such as --ff must be unquoted to be recognized as - primaries. - - When used with [[[[, the << and >> operators sort lexicographically + The words between the [[[[ and ]]]] do not undergo word splitting + and pathname expansion. The shell performs tilde expansion, pa- + rameter and variable expansion, arithmetic expansion, command + substitution, process substitution, and quote removal on those + words (the expansions that would occur if the words were en- + closed in double quotes). Conditional operators such as --ff must + be unquoted to be recognized as primaries. + + When used with [[[[, the << and >> operators sort lexicographically using the current locale. - When the ==== and !!== operators are used, the string to the right + When the ==== and !!== operators are used, the string to the right of the operator is considered a pattern and matched according to the rules described below under PPaatttteerrnn MMaattcchhiinngg, as if the eexxtt-- gglloobb shell option were enabled. The == operator is equivalent to - ====. If the nnooccaasseemmaattcchh shell option is enabled, the match is - performed without regard to the case of alphabetic characters. - The return value is 0 if the string matches (====) or does not - match (!!==) the pattern, and 1 otherwise. Any part of the pat- - tern may be quoted to force the quoted portion to be matched as + ====. If the nnooccaasseemmaattcchh shell option is enabled, the match is + performed without regard to the case of alphabetic characters. + The return value is 0 if the string matches (====) or does not + match (!!==) the pattern, and 1 otherwise. Any part of the pat- + tern may be quoted to force the quoted portion to be matched as a string. - An additional binary operator, ==~~, is available, with the same - precedence as ==== and !!==. When it is used, the string to the + An additional binary operator, ==~~, is available, with the same + precedence as ==== and !!==. When it is used, the string to the right of the operator is considered a POSIX extended regular ex- - pression and matched accordingly (using the POSIX _r_e_g_c_o_m_p and - _r_e_g_e_x_e_c interfaces usually described in _r_e_g_e_x(3)). The return - value is 0 if the string matches the pattern, and 1 otherwise. + pression and matched accordingly (using the POSIX _r_e_g_c_o_m_p and + _r_e_g_e_x_e_c interfaces usually described in _r_e_g_e_x(3)). The return + value is 0 if the string matches the pattern, and 1 otherwise. If the regular expression is syntactically incorrect, the condi- tional expression's return value is 2. If the nnooccaasseemmaattcchh shell - option is enabled, the match is performed without regard to the - case of alphabetic characters. Any part of the pattern may be - quoted to force the quoted portion to be matched as a string. - Bracket expressions in regular expressions must be treated care- - fully, since normal quoting characters lose their meanings be- - tween brackets. If the pattern is stored in a shell variable, - quoting the variable expansion forces the entire pattern to be - matched as a string. - - The pattern will match if it matches any part of the string. - Anchor the pattern using the ^^ and $$ regular expression opera- + option is enabled, the match is performed without regard to the + case of alphabetic characters. If any part of the pattern is + quoted, the quoted portion is matched literally. This means ev- + ery character in the quoted portion matches itself, instead of + having any special pattern matching meaning. If the pattern is + stored in a shell variable, quoting the variable expansion + forces the entire pattern to be matched literally. Treat + bracket expressions in regular expressions carefully, since nor- + mal quoting and pattern characters lose their meanings between + brackets. + + The pattern will match if it matches any part of the string. + Anchor the pattern using the ^^ and $$ regular expression opera- tors to force it to match the entire string. The array variable - BBAASSHH__RREEMMAATTCCHH records which parts of the string matched the pat- - tern. The element of BBAASSHH__RREEMMAATTCCHH with index 0 contains the - portion of the string matching the entire regular expression. - Substrings matched by parenthesized subexpressions within the - regular expression are saved in the remaining BBAASSHH__RREEMMAATTCCHH in- - dices. The element of BBAASSHH__RREEMMAATTCCHH with index _n is the portion - of the string matching the _nth parenthesized subexpression. - - Expressions may be combined using the following operators, + BBAASSHH__RREEMMAATTCCHH records which parts of the string matched the pat- + tern. The element of BBAASSHH__RREEMMAATTCCHH with index 0 contains the + portion of the string matching the entire regular expression. + Substrings matched by parenthesized subexpressions within the + regular expression are saved in the remaining BBAASSHH__RREEMMAATTCCHH in- + dices. The element of BBAASSHH__RREEMMAATTCCHH with index _n is the portion + of the string matching the _nth parenthesized subexpression. + Bash sets BBAASSHH__RREEMMAATTCCHH in the global scope; declaring it as a + local variable will lead to unexpected results. + + Expressions may be combined using the following operators, listed in decreasing order of precedence: (( _e_x_p_r_e_s_s_i_o_n )) - Returns the value of _e_x_p_r_e_s_s_i_o_n. This may be used to + Returns the value of _e_x_p_r_e_s_s_i_o_n. This may be used to override the normal precedence of operators. !! _e_x_p_r_e_s_s_i_o_n True if _e_x_p_r_e_s_s_i_o_n is false. @@ -422,82 +433,82 @@ SSHHEELLLL GGRRAAMMMMAARR True if either _e_x_p_r_e_s_s_i_o_n_1 or _e_x_p_r_e_s_s_i_o_n_2 is true. The &&&& and |||| operators do not evaluate _e_x_p_r_e_s_s_i_o_n_2 if the value - of _e_x_p_r_e_s_s_i_o_n_1 is sufficient to determine the return value of + of _e_x_p_r_e_s_s_i_o_n_1 is sufficient to determine the return value of the entire conditional expression. ffoorr _n_a_m_e [ [ iinn [ _w_o_r_d _._._. ] ] ; ] ddoo _l_i_s_t ; ddoonnee The list of words following iinn is expanded, generating a list of items. The variable _n_a_m_e is set to each element of this list in - turn, and _l_i_s_t is executed each time. If the iinn _w_o_r_d is omit- - ted, the ffoorr command executes _l_i_s_t once for each positional pa- - rameter that is set (see PPAARRAAMMEETTEERRSS below). The return status - is the exit status of the last command that executes. If the + turn, and _l_i_s_t is executed each time. If the iinn _w_o_r_d is omit- + ted, the ffoorr command executes _l_i_s_t once for each positional pa- + rameter that is set (see PPAARRAAMMEETTEERRSS below). The return status + is the exit status of the last command that executes. If the expansion of the items following iinn results in an empty list, no commands are executed, and the return status is 0. ffoorr (( _e_x_p_r_1 ; _e_x_p_r_2 ; _e_x_p_r_3 )) ; ddoo _l_i_s_t ; ddoonnee First, the arithmetic expression _e_x_p_r_1 is evaluated according to - the rules described below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. The - arithmetic expression _e_x_p_r_2 is then evaluated repeatedly until - it evaluates to zero. Each time _e_x_p_r_2 evaluates to a non-zero - value, _l_i_s_t is executed and the arithmetic expression _e_x_p_r_3 is - evaluated. If any expression is omitted, it behaves as if it + the rules described below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. The + arithmetic expression _e_x_p_r_2 is then evaluated repeatedly until + it evaluates to zero. Each time _e_x_p_r_2 evaluates to a non-zero + value, _l_i_s_t is executed and the arithmetic expression _e_x_p_r_3 is + evaluated. If any expression is omitted, it behaves as if it evaluates to 1. The return value is the exit status of the last command in _l_i_s_t that is executed, or false if any of the expres- sions is invalid. sseelleecctt _n_a_m_e [ iinn _w_o_r_d ] ; ddoo _l_i_s_t ; ddoonnee The list of words following iinn is expanded, generating a list of - items. The set of expanded words is printed on the standard er- - ror, each preceded by a number. If the iinn _w_o_r_d is omitted, the - positional parameters are printed (see PPAARRAAMMEETTEERRSS below). The - PPSS33 prompt is then displayed and a line read from the standard - input. If the line consists of a number corresponding to one of - the displayed words, then the value of _n_a_m_e is set to that word. - If the line is empty, the words and prompt are displayed again. - If EOF is read, the command completes. Any other value read - causes _n_a_m_e to be set to null. The line read is saved in the - variable RREEPPLLYY. The _l_i_s_t is executed after each selection until - a bbrreeaakk command is executed. The exit status of sseelleecctt is the - exit status of the last command executed in _l_i_s_t, or zero if no - commands were executed. + items, and the set of expanded words is printed on the standard + error, each preceded by a number. If the iinn _w_o_r_d is omitted, + the positional parameters are printed (see PPAARRAAMMEETTEERRSS below). + sseelleecctt then displays the PPSS33 prompt and reads a line from the + standard input. If the line consists of a number corresponding + to one of the displayed words, then the value of _n_a_m_e is set to + that word. If the line is empty, the words and prompt are dis- + played again. If EOF is read, the sseelleecctt command completes and + returns 1. Any other value read causes _n_a_m_e to be set to null. + The line read is saved in the variable RREEPPLLYY. The _l_i_s_t is exe- + cuted after each selection until a bbrreeaakk command is executed. + The exit status of sseelleecctt is the exit status of the last command + executed in _l_i_s_t, or zero if no commands were executed. ccaassee _w_o_r_d iinn [ [(] _p_a_t_t_e_r_n [ || _p_a_t_t_e_r_n ] ... ) _l_i_s_t ;; ] ... eessaacc A ccaassee command first expands _w_o_r_d, and tries to match it against - each _p_a_t_t_e_r_n in turn, using the matching rules described under + each _p_a_t_t_e_r_n in turn, using the matching rules described under PPaatttteerrnn MMaattcchhiinngg below. The _w_o_r_d is expanded using tilde expan- - sion, parameter and variable expansion, arithmetic expansion, - command substitution, process substitution and quote removal. + sion, parameter and variable expansion, arithmetic expansion, + command substitution, process substitution and quote removal. Each _p_a_t_t_e_r_n examined is expanded using tilde expansion, parame- - ter and variable expansion, arithmetic expansion, command sub- - stitution, and process substitution. If the nnooccaasseemmaattcchh shell - option is enabled, the match is performed without regard to the - case of alphabetic characters. When a match is found, the cor- - responding _l_i_s_t is executed. If the ;;;; operator is used, no - subsequent matches are attempted after the first pattern match. - Using ;;&& in place of ;;;; causes execution to continue with the - _l_i_s_t associated with the next set of patterns. Using ;;;;&& in - place of ;;;; causes the shell to test the next pattern list in - the statement, if any, and execute any associated _l_i_s_t on a suc- - cessful match, continuing the case statement execution as if the - pattern list had not matched. The exit status is zero if no - pattern matches. Otherwise, it is the exit status of the last - command executed in _l_i_s_t. + ter and variable expansion, arithmetic expansion, command sub- + stitution, process substitution, and quote removal. If the nnoo-- + ccaasseemmaattcchh shell option is enabled, the match is performed with- + out regard to the case of alphabetic characters. When a match + is found, the corresponding _l_i_s_t is executed. If the ;;;; opera- + tor is used, no subsequent matches are attempted after the first + pattern match. Using ;;&& in place of ;;;; causes execution to con- + tinue with the _l_i_s_t associated with the next set of patterns. + Using ;;;;&& in place of ;;;; causes the shell to test the next pat- + tern list in the statement, if any, and execute any associated + _l_i_s_t on a successful match, continuing the case statement execu- + tion as if the pattern list had not matched. The exit status is + zero if no pattern matches. Otherwise, it is the exit status of + the last command executed in _l_i_s_t. iiff _l_i_s_t; tthheenn _l_i_s_t; [ eelliiff _l_i_s_t; tthheenn _l_i_s_t; ] ... [ eellssee _l_i_s_t; ] ffii - The iiff _l_i_s_t is executed. If its exit status is zero, the tthheenn - _l_i_s_t is executed. Otherwise, each eelliiff _l_i_s_t is executed in - turn, and if its exit status is zero, the corresponding tthheenn + The iiff _l_i_s_t is executed. If its exit status is zero, the tthheenn + _l_i_s_t is executed. Otherwise, each eelliiff _l_i_s_t is executed in + turn, and if its exit status is zero, the corresponding tthheenn _l_i_s_t is executed and the command completes. Otherwise, the eellssee - _l_i_s_t is executed, if present. The exit status is the exit sta- + _l_i_s_t is executed, if present. The exit status is the exit sta- tus of the last command executed, or zero if no condition tested true. wwhhiillee _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee uunnttiill _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee - The wwhhiillee command continuously executes the list _l_i_s_t_-_2 as long + The wwhhiillee command continuously executes the list _l_i_s_t_-_2 as long as the last command in the list _l_i_s_t_-_1 returns an exit status of - zero. The uunnttiill command is identical to the wwhhiillee command, ex- + zero. The uunnttiill command is identical to the wwhhiillee command, ex- cept that the test is negated: _l_i_s_t_-_2 is executed as long as the last command in _l_i_s_t_-_1 returns a non-zero exit status. The exit status of the wwhhiillee and uunnttiill commands is the exit status of the @@ -505,32 +516,49 @@ SSHHEELLLL GGRRAAMMMMAARR CCoopprroocceesssseess A _c_o_p_r_o_c_e_s_s is a shell command preceded by the ccoopprroocc reserved word. A - coprocess is executed asynchronously in a subshell, as if the command - had been terminated with the && control operator, with a two-way pipe + coprocess is executed asynchronously in a subshell, as if the command + had been terminated with the && control operator, with a two-way pipe established between the executing shell and the coprocess. - The format for a coprocess is: + The syntax for a coprocess is: ccoopprroocc [_N_A_M_E] _c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n_s] - This creates a coprocess named _N_A_M_E. If _N_A_M_E is not supplied, the de- - fault name is CCOOPPRROOCC. _N_A_M_E must not be supplied if _c_o_m_m_a_n_d is a _s_i_m_p_l_e - _c_o_m_m_a_n_d (see above); otherwise, it is interpreted as the first word of - the simple command. When the coprocess is executed, the shell creates - an array variable (see AArrrraayyss below) named _N_A_M_E in the context of the - executing shell. The standard output of _c_o_m_m_a_n_d is connected via a - pipe to a file descriptor in the executing shell, and that file de- - scriptor is assigned to _N_A_M_E[0]. The standard input of _c_o_m_m_a_n_d is con- - nected via a pipe to a file descriptor in the executing shell, and that - file descriptor is assigned to _N_A_M_E[1]. This pipe is established be- - fore any redirections specified by the command (see RREEDDIIRREECCTTIIOONN below). - The file descriptors can be utilized as arguments to shell commands and - redirections using standard word expansions. Other than those created - to execute command and process substitutions, the file descriptors are - not available in subshells. The process ID of the shell spawned to ex- - ecute 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 ter- - minate. + This creates a coprocess named _N_A_M_E. _c_o_m_m_a_n_d may be either a simple + command or a compound command (see above). _N_A_M_E is a shell variable + name. If _N_A_M_E is not supplied, the default name is CCOOPPRROOCC. + + The recommended form to use for a coprocess is + + ccoopprroocc _N_A_M_E { _c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n_s]; } + + This form is recommended because simple commands result in the copro- + cess always being named CCOOPPRROOCC, and it is simpler to use and more com- + plete than the other compound commands. + + If _c_o_m_m_a_n_d is a compound command, _N_A_M_E is optional. The word following + ccoopprroocc determines whether that word is interpreted as a variable name: + it is interpreted as _N_A_M_E if it is not a reserved word that introduces + a compound command. If _c_o_m_m_a_n_d is a simple command, _N_A_M_E is not al- + lowed; this is to avoid confusion between _N_A_M_E and the first word of + the simple command. + + When the coprocess is executed, the shell creates an array variable + (see AArrrraayyss below) named _N_A_M_E in the context of the executing shell. + The standard output of _c_o_m_m_a_n_d is connected via a pipe to a file de- + scriptor in the executing shell, and that file descriptor is assigned + to _N_A_M_E[0]. The standard input of _c_o_m_m_a_n_d is connected via a pipe to a + file descriptor in the executing shell, and that file descriptor is as- + signed to _N_A_M_E[1]. This pipe is established before any redirections + specified by the command (see RREEDDIIRREECCTTIIOONN below). The file descriptors + can be utilized as arguments to shell commands and redirections using + standard word expansions. Other than those created to execute command + and process substitutions, the file descriptors are not available in + subshells. + + The process ID of the shell spawned to execute the coprocess is avail- + able 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. Since the coprocess is created as an asynchronous command, the ccoopprroocc command always returns success. The return status of a coprocess is @@ -548,20 +576,20 @@ SSHHEELLLL GGRRAAMMMMAARR parentheses are optional. The _b_o_d_y of the function is the com- pound command _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d (see CCoommppoouunndd CCoommmmaannddss above). That command is usually a _l_i_s_t of commands between { and }, but - may be any command listed under CCoommppoouunndd CCoommmmaannddss above, with - one exception: If the ffuunnccttiioonn reserved word is used, but the - parentheses are not supplied, the braces are required. _c_o_m_- - _p_o_u_n_d_-_c_o_m_m_a_n_d is executed whenever _f_n_a_m_e is specified as the - name of a simple command. When in _p_o_s_i_x _m_o_d_e, _f_n_a_m_e must be a - valid shell _n_a_m_e and may not be the name of one of the POSIX - _s_p_e_c_i_a_l _b_u_i_l_t_i_n_s. In default mode, a function name can be any - unquoted shell word that does not contain $$. Any redirections - (see RREEDDIIRREECCTTIIOONN below) specified when a function is defined are - performed when the function is executed. The exit status of a - function definition is zero unless a syntax error occurs or a - readonly function with the same name already exists. When exe- - cuted, the exit status of a function is the exit status of the - last command executed in the body. (See FFUUNNCCTTIIOONNSS below.) + may be any command listed under CCoommppoouunndd CCoommmmaannddss above. If the + ffuunnccttiioonn reserved word is used, but the parentheses are not sup- + plied, the braces are recommended. _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d is executed + whenever _f_n_a_m_e is specified as the name of a simple command. + When in _p_o_s_i_x _m_o_d_e, _f_n_a_m_e must be a valid shell _n_a_m_e and may not + be the name of one of the POSIX _s_p_e_c_i_a_l _b_u_i_l_t_i_n_s. In default + mode, a function name can be any unquoted shell word that does + not contain $$. Any redirections (see RREEDDIIRREECCTTIIOONN below) speci- + fied when a function is defined are performed when the function + is executed. The exit status of a function definition is zero + unless a syntax error occurs or a readonly function with the + same name already exists. When executed, the exit status of a + function is the exit status of the last command executed in the + body. (See FFUUNNCCTTIIOONNSS below.) CCOOMMMMEENNTTSS In a non-interactive shell, or an interactive shell in which the iinntteerr-- @@ -613,10 +641,11 @@ QQUUOOTTIINNGG The special parameters ** and @@ have special meaning when in double quotes (see PPAARRAAMMEETTEERRSS below). - Words of the form $$'_s_t_r_i_n_g' are treated specially. The word expands to - _s_t_r_i_n_g, with backslash-escaped characters replaced as specified by the - ANSI C standard. Backslash escape sequences, if present, are decoded - as follows: + Character sequences of the form $$'_s_t_r_i_n_g' are treated as a special + variant of single quotes. The sequence expands to _s_t_r_i_n_g, with back- + slash-escaped characters in _s_t_r_i_n_g replaced as specified by the ANSI C + standard. Backslash escape sequences, if present, are decoded as fol- + lows: \\aa alert (bell) \\bb backspace \\ee @@ -630,146 +659,147 @@ QQUUOOTTIINNGG \\'' single quote \\"" double quote \\?? question mark - \\_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 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) \\cc_x a control-_x character - The expanded result is single-quoted, as if the dollar sign had not + The expanded result is single-quoted, as if the dollar sign had not been present. A double-quoted string preceded by a dollar sign ($$"_s_t_r_i_n_g") will cause - the string to be translated according to the current locale. The _g_e_t_- - _t_e_x_t infrastructure performs the message catalog lookup and transla- - tion, using the LLCC__MMEESSSSAAGGEESS and TTEEXXTTDDOOMMAAIINN shell variables. If the - current locale is CC or PPOOSSIIXX, or if there are no translations avail- - able, the dollar sign is ignored. If the string is translated and re- - placed, the replacement is double-quoted. + the string to be translated according to the current locale. The _g_e_t_- + _t_e_x_t infrastructure performs the lookup and translation, using the + LLCC__MMEESSSSAAGGEESS, TTEEXXTTDDOOMMAAIINNDDIIRR, and TTEEXXTTDDOOMMAAIINN shell variables. If the + current locale is CC or PPOOSSIIXX, if there are no translations available, + or if the string is not translated, the dollar sign is ignored. This + is a form of double quoting, so the string remains double-quoted by de- + fault, whether or not it is translated and replaced. If the nnooeexx-- + ppaanndd__ttrraannssllaattiioonn option is enabled using the sshhoopptt builtin, translated + strings are single-quoted instead of double-quoted. See the descrip- + tion of sshhoopptt below under SSHHEELLLLBUILTINCCOOMMMMAANNDDSS. PPAARRAAMMEETTEERRSS - A _p_a_r_a_m_e_t_e_r is an entity that stores values. It can be a _n_a_m_e, a num- + A _p_a_r_a_m_e_t_e_r is an entity that stores values. It can be a _n_a_m_e, a num- ber, or one of the special characters listed below under SSppeecciiaall PPaarraamm-- - eetteerrss. A _v_a_r_i_a_b_l_e is a parameter denoted by a _n_a_m_e. A variable has a - _v_a_l_u_e and zero or more _a_t_t_r_i_b_u_t_e_s. Attributes are assigned using the + eetteerrss. A _v_a_r_i_a_b_l_e is a parameter denoted by a _n_a_m_e. A variable has a + _v_a_l_u_e and zero or more _a_t_t_r_i_b_u_t_e_s. Attributes are assigned using the ddeeccllaarree builtin command (see ddeeccllaarree below in SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS). A parameter is set if it has been assigned a value. The null string is - a valid value. Once a variable is set, it may be unset only by using + a valid value. Once a variable is set, it may be unset only by using the uunnsseett builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A _v_a_r_i_a_b_l_e may be assigned to by a statement of the form _n_a_m_e=[_v_a_l_u_e] - If _v_a_l_u_e is not given, the variable is assigned the null string. All - _v_a_l_u_e_s undergo tilde expansion, parameter and variable expansion, com- - mand substitution, arithmetic expansion, and quote removal (see EEXXPPAANN-- + If _v_a_l_u_e is not given, the variable is assigned the null string. All + _v_a_l_u_e_s undergo tilde expansion, parameter and variable expansion, com- + mand substitution, arithmetic expansion, and quote removal (see EEXXPPAANN-- SSIIOONN below). If the variable has its iinntteeggeerr attribute set, then _v_a_l_u_e is evaluated as an arithmetic expression even if the $((...)) expansion - is not used (see AArriitthhmmeettiicc EExxppaannssiioonn below). Word splitting is not - performed, with the exception of ""$$@@"" as explained below under SSppeecciiaall - PPaarraammeetteerrss. Pathname expansion is not performed. Assignment state- - ments may also appear as arguments to the aalliiaass, ddeeccllaarree, ttyyppeesseett, eexx-- - ppoorrtt, rreeaaddoonnllyy, and llooccaall builtin commands (_d_e_c_l_a_r_a_t_i_o_n commands). - When in _p_o_s_i_x _m_o_d_e, these builtins may appear in a command after one or - more instances of the ccoommmmaanndd builtin and retain these assignment - statement properties. - - In the context where an assignment statement is assigning a value to a + is not used (see AArriitthhmmeettiicc EExxppaannssiioonn below). Word splitting and path- + name expansion are not performed. Assignment statements may also ap- + pear as arguments to the aalliiaass, ddeeccllaarree, ttyyppeesseett, eexxppoorrtt, rreeaaddoonnllyy, and + llooccaall builtin commands (_d_e_c_l_a_r_a_t_i_o_n commands). When in _p_o_s_i_x _m_o_d_e, + these builtins may appear in a command after one or more instances of + the ccoommmmaanndd builtin and retain these assignment statement properties. + + 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. This includes arguments to - builtin commands such as ddeeccllaarree that accept assignment statements + or add to the variable's previous value. This includes arguments to + builtin commands such as ddeeccllaarree that accept assignment statements (_d_e_c_l_a_r_a_t_i_o_n commands). When += is applied to a variable for which the - _i_n_t_e_g_e_r attribute has been set, _v_a_l_u_e is evaluated as an arithmetic ex- + iinntteeggeerr attribute has been set, _v_a_l_u_e is evaluated as an arithmetic ex- pression and added to the variable's current value, which is also eval- - uated. When += is applied to an array variable using compound assign- - ment (see AArrrraayyss below), the variable's value is not unset (as it is - when using =), and new values are appended to the array beginning at - one greater than the array's maximum index (for indexed arrays) or - added as additional key-value pairs in an associative array. When ap- - plied to a string-valued variable, _v_a_l_u_e is expanded and appended to + uated. When += is applied to an array variable using compound assign- + ment (see AArrrraayyss below), the variable's value is not unset (as it is + when using =), and new values are appended to the array beginning at + one greater than the array's maximum index (for indexed arrays) or + added as additional key-value pairs in an associative array. When ap- + plied to a string-valued variable, _v_a_l_u_e is expanded and appended to the variable's value. A variable can be assigned the _n_a_m_e_r_e_f attribute using the --nn option to - the ddeeccllaarree or llooccaall builtin commands (see the descriptions of ddeeccllaarree - and llooccaall below) to create a _n_a_m_e_r_e_f, or a reference to another vari- - able. This allows variables to be manipulated indirectly. Whenever - the nameref variable is referenced, assigned to, unset, or has its at- - tributes modified (other than using or changing the _n_a_m_e_r_e_f attribute - itself), the operation is actually performed on the variable specified - by the nameref variable's value. A nameref is commonly used within + the ddeeccllaarree or llooccaall builtin commands (see the descriptions of ddeeccllaarree + and llooccaall below) to create a _n_a_m_e_r_e_f, or a reference to another vari- + able. This allows variables to be manipulated indirectly. Whenever + the nameref variable is referenced, assigned to, unset, or has its at- + tributes modified (other than using or changing the _n_a_m_e_r_e_f attribute + itself), the operation is actually performed on the variable specified + by the nameref variable's value. A nameref is commonly used within shell functions to refer to a variable whose name is passed as an argu- - ment to the function. For instance, if a variable name is passed to a + ment to the function. For instance, if a variable name is passed to a shell function as its first argument, running declare -n ref=$1 - inside the function creates a nameref variable rreeff whose value is the + inside the function creates a nameref variable rreeff whose value is the variable name passed as the first argument. References and assignments - to rreeff, and changes to its attributes, are treated as references, as- - signments, and attribute modifications to the variable whose name was - passed as $$11. If the control variable in a ffoorr loop has the nameref - attribute, the list of words can be a list of shell variables, and a - name reference will be established for each word in the list, in turn, + to rreeff, and changes to its attributes, are treated as references, as- + signments, and attribute modifications to the variable whose name was + passed as $$11. If the control variable in a ffoorr loop has the nameref + attribute, the list of words can be a list of shell variables, and a + name reference will be established for each word in the list, in turn, when the loop is executed. Array variables cannot be given the nnaammeerreeff - attribute. However, nameref variables can reference array variables - and subscripted array variables. Namerefs can be unset using the --nn - option to the uunnsseett builtin. Otherwise, if uunnsseett is executed with the - name of a nameref variable as an argument, the variable referenced by + attribute. However, nameref variables can reference array variables + and subscripted array variables. Namerefs can be unset using the --nn + option to the uunnsseett builtin. Otherwise, if uunnsseett is executed with the + name of a nameref variable as an argument, the variable referenced by the nameref variable will be unset. PPoossiittiioonnaall PPaarraammeetteerrss - A _p_o_s_i_t_i_o_n_a_l _p_a_r_a_m_e_t_e_r is a parameter denoted by one or more digits, + A _p_o_s_i_t_i_o_n_a_l _p_a_r_a_m_e_t_e_r is a parameter denoted by one or more digits, other than the single digit 0. Positional parameters are assigned from - the shell's arguments when it is invoked, and may be reassigned using - the sseett builtin command. Positional parameters may not be assigned to - with assignment statements. The positional parameters are temporarily + the shell's arguments when it is invoked, and may be reassigned using + the sseett builtin command. Positional parameters may not be assigned to + with assignment statements. The positional parameters are temporarily replaced when a shell function is executed (see FFUUNNCCTTIIOONNSS below). - When a positional parameter consisting of more than a single digit is + When a positional parameter consisting of more than a single digit is expanded, it must be enclosed in braces (see EEXXPPAANNSSIIOONN below). SSppeecciiaall PPaarraammeetteerrss - The shell treats several parameters specially. These parameters may + The shell treats several parameters specially. These parameters may only be referenced; assignment to them is not allowed. - ** Expands to the positional parameters, starting from one. When - the expansion is not within double quotes, each positional pa- - rameter expands to a separate word. In contexts where it is + ** Expands to the positional parameters, starting from one. When + the expansion is not within double quotes, each positional pa- + rameter expands to a separate word. In contexts where it is performed, those words are subject to further word splitting and - pathname expansion. When the expansion occurs within double - quotes, it expands to a single word with the value of each pa- - rameter separated by the first character of the IIFFSS special - variable. That is, "$$**" is equivalent to "$$11_c$$22_c......", where _c + pathname expansion. When the expansion occurs within double + quotes, it expands to a single word with the value of each pa- + rameter separated by the first character of the IIFFSS special + variable. That is, "$$**" is equivalent to "$$11_c$$22_c......", where _c is the first character of the value of the IIFFSS variable. If IIFFSS - is unset, the parameters are separated by spaces. If IIFFSS is + is unset, the parameters are separated by spaces. If IIFFSS is null, the parameters are joined without intervening separators. - @@ Expands to the positional parameters, starting from one. In - contexts where word splitting is performed, this expands each - positional parameter to a separate word; if not within double - quotes, these words are subject to word splitting. In contexts - where word splitting is not performed, this expands to a single - word with each positional parameter separated by a space. When - the expansion occurs within double quotes, each parameter ex- - pands to a separate word. That is, "$$@@" is equivalent to "$$11" - "$$22" ... If the double-quoted expansion occurs within a word, - the expansion of the first parameter is joined with the begin- - ning part of the original word, and the expansion of the last - parameter is joined with the last part of the original word. - When there are no positional parameters, "$$@@" and $$@@ expand to + @@ Expands to the positional parameters, starting from one. In + contexts where word splitting is performed, this expands each + positional parameter to a separate word; if not within double + quotes, these words are subject to word splitting. In contexts + where word splitting is not performed, this expands to a single + word with each positional parameter separated by a space. When + the expansion occurs within double quotes, each parameter ex- + pands to a separate word. That is, "$$@@" is equivalent to "$$11" + "$$22" ... If the double-quoted expansion occurs within a word, + the expansion of the first parameter is joined with the begin- + ning part of the original word, and the expansion of the last + parameter is joined with the last part of the original word. + When there are no positional parameters, "$$@@" and $$@@ expand to nothing (i.e., they are removed). ## Expands to the number of positional parameters in decimal. - ?? Expands to the exit status of the most recently executed fore- + ?? Expands to the exit status of the most recently executed fore- ground pipeline. - -- Expands to the current option flags as specified upon invoca- - tion, by the sseett builtin command, or those set by the shell it- + -- Expands to the current option flags as specified upon invoca- + tion, by the sseett builtin command, or those set by the shell it- self (such as the --ii option). - $$ Expands to the process ID of the shell. In a () subshell, it - expands to the process ID of the current shell, not the sub- - shell. + $$ Expands to the process ID of the shell. In a subshell, it ex- + pands to the process ID of the current shell, not the subshell. !! Expands to the process ID of the job most recently placed into the background, whether executed as an asynchronous command or using the bbgg builtin (see JJOOBB CCOONNTTRROOLL below). @@ -1032,6 +1062,10 @@ PPAARRAAMMEETTEERRSS tializes (seeds) the sequence of random numbers. If RRAANNDDOOMM is unset, it loses its special properties, even if it is subse- quently reset. + RREEAADDLLIINNEE__AARRGGUUMMEENNTT + Any numeric argument given to a readline command that was de- + fined using "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) when it + was invoked. RREEAADDLLIINNEE__LLIINNEE The contents of the rreeaaddlliinnee line buffer, for use with "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). @@ -1046,12 +1080,12 @@ PPAARRAAMMEETTEERRSS RREEPPLLYY Set to the line of input read by the rreeaadd builtin command when no arguments are supplied. SSEECCOONNDDSS - Each time this parameter is referenced, the number of seconds - since shell invocation is returned. If a value is assigned to + Each time this parameter is referenced, it expands to the number + of seconds since shell invocation. If a value is assigned to SSEECCOONNDDSS, the value returned upon subsequent references is the number of seconds since the assignment plus the value assigned. The number of seconds at shell invocation and the current time - is always determined by querying the system clock. If SSEECCOONNDDSS + are always determined by querying the system clock. If SSEECCOONNDDSS is unset, it loses its special properties, even if it is subse- quently reset. SSHHEELLLLOOPPTTSS @@ -1088,8 +1122,8 @@ PPAARRAAMMEETTEERRSS value that is not one of the valid compatibility levels, the shell prints an error message and sets the compatibility level to the default for the current version. The valid values corre- - spond to the compatibility levels described below under BBSSHHEELLLL-- - COMPATIBILITYMMOODDEE. For example, 4.2 and 42 are valid values + spond to the compatibility levels described below under SSHHEELLLL + CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE. For example, 4.2 and 42 are valid values that correspond to the ccoommppaatt4422 sshhoopptt option and set the compat- ibility level to 42. The current version is also a valid value. BBAASSHH__EENNVV @@ -1462,47 +1496,53 @@ PPAARRAAMMEETTEERRSS count back from the end of the array, and an index of -1 references the last element. - Any element of an array may be referenced using ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. + The += operator will append to an array variable when assigning using + the compound assignment syntax; see PPAARRAAMMEETTEERRSS above. + + 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 ex- + 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 ex- pansion of the first parameter is joined with the beginning part of the - original word, and the expansion of the last parameter is joined with + 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 + 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 elements in the ar- ray. If the _s_u_b_s_c_r_i_p_t used to reference an element of an indexed array - evaluates to a number less than zero, it is interpreted as relative to - one greater than the maximum index of the array, so negative indices + evaluates to a number less than zero, it is interpreted as relative to + one greater than the maximum index of the array, so negative indices count back from the end of the array, and an index of -1 references the last element. Referencing an array variable without a subscript is equivalent to ref- - erencing the array with a subscript of 0. Any reference to a variable + erencing the array with a subscript of 0. Any reference to a variable using a valid subscript is legal, and bbaasshh will create an array if nec- essary. - An array variable is considered set if a subscript has been assigned a + An array variable is considered set if a subscript has been assigned a value. The null string is a valid value. - It is possible to obtain the keys (indices) of an array as well as the - values. ${!!_n_a_m_e[_@]} and ${!!_n_a_m_e[_*]} expand to the indices assigned in + It is possible to obtain the keys (indices) of an array as well as the + values. ${!!_n_a_m_e[_@]} and ${!!_n_a_m_e[_*]} expand to the indices assigned in array variable _n_a_m_e. The treatment when in double quotes is similar to the expansion of the special parameters _@ and _* within double quotes. The uunnsseett builtin is used to destroy arrays. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] de- stroys the array element at index _s_u_b_s_c_r_i_p_t, for both indexed and asso- - ciative arrays. Negative subscripts to indexed arrays are interpreted - as described above. Unsetting the last element of an array variable - does not unset the variable. uunnsseett _n_a_m_e, where _n_a_m_e is an array, or - uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t], where _s_u_b_s_c_r_i_p_t is ** or @@, removes the entire - array. + ciative arrays. Negative subscripts to indexed arrays are interpreted + as described above. Unsetting the last element of an array variable + does not unset the variable. uunnsseett _n_a_m_e, where _n_a_m_e is an array, re- + moves the entire array. 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 + @@, behaves differently depending on whether _n_a_m_e is an indexed or asso- + ciative array. If _n_a_m_e is an associative array, this unsets the ele- + ment with subscript ** or @@. If _n_a_m_e is an indexed array, unset removes + all of the elements but does not remove the array itself. When using a variable name with a subscript as an argument to a com- mand, such as with uunnsseett, without using the word expansion syntax de- @@ -1557,17 +1597,17 @@ EEXXPPAANNSSIIOONN a{{d,c,b}}e expands into `ade ace abe'. A sequence expression takes the form {{_x...._y[[...._i_n_c_r]]}}, where _x and _y are - either integers or single characters, and _i_n_c_r, an optional increment, - is an integer. When integers are supplied, the expression expands to - each number between _x and _y, inclusive. Supplied integers may be pre- - fixed with _0 to force each term to have the same width. When either _x - or _y begins with a zero, the shell attempts to force all generated - terms to contain the same number of digits, zero-padding where neces- - sary. When characters are supplied, the expression expands to each - character lexicographically between _x and _y, inclusive, using the de- - fault C locale. Note that both _x and _y must be of the same type. When - the increment is supplied, it is used as the difference between each - term. The default increment is 1 or -1 as appropriate. + either integers or single letters, 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 prefixed + 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 necessary. When + letters are supplied, the expression expands to each character lexico- + graphically between _x and _y, inclusive, using the default C locale. + Note that both _x and _y must be of the same type (integer or letter). + 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 @@ -1699,12 +1739,12 @@ EEXXPPAANNSSIIOONN ${_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 the value of _p_a_r_a_m_e_t_e_r starting at the character specified by _o_f_f_- - _s_e_t. If _p_a_r_a_m_e_t_e_r is @@, an indexed array subscripted by @@ or **, - or an associative array name, the results differ as described - below. If _l_e_n_g_t_h is omitted, expands to the substring of the - value of _p_a_r_a_m_e_t_e_r starting at the character specified by _o_f_f_s_e_t - and extending to the end of the value. _l_e_n_g_t_h and _o_f_f_s_e_t are - arithmetic expressions (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN below). + _s_e_t. If _p_a_r_a_m_e_t_e_r is @@ or **, an indexed array subscripted by @@ + or **, or an associative array name, the results differ as de- + scribed below. If _l_e_n_g_t_h is omitted, expands to the substring + of the value of _p_a_r_a_m_e_t_e_r starting at the character specified by + _o_f_f_s_e_t and extending to the end of the value. _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 in characters from the end of the value of _p_a_- @@ -1715,51 +1755,52 @@ EEXXPPAANNSSIIOONN that a negative offset must be separated from the colon by at least one space to avoid being confused with the ::-- expansion. - If _p_a_r_a_m_e_t_e_r is @@, the result is _l_e_n_g_t_h positional parameters - beginning at _o_f_f_s_e_t. A negative _o_f_f_s_e_t is taken relative to one - greater than the greatest positional parameter, so an offset of - -1 evaluates to the last positional parameter. It is an expan- - sion error if _l_e_n_g_t_h evaluates to a number less than zero. + If _p_a_r_a_m_e_t_e_r is @@ or **, the result is _l_e_n_g_t_h positional parame- + ters beginning at _o_f_f_s_e_t. A negative _o_f_f_s_e_t is taken relative + to one greater than the greatest positional parameter, so an + offset of -1 evaluates to the last positional parameter. It is + an expansion error if _l_e_n_g_t_h evaluates to a number less than + zero. 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 + 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 maximum index of the specified array. It is an expansion error if _l_e_n_g_t_h evaluates to a number less than zero. Substring expansion applied to an associative array produces un- defined results. - Substring indexing is zero-based unless the positional parame- - ters are used, in which case the indexing starts at 1 by de- - fault. If _o_f_f_s_e_t is 0, and the positional parameters are used, + Substring indexing is zero-based unless the positional parame- + ters are used, in which case the indexing starts at 1 by de- + fault. If _o_f_f_s_e_t is 0, and the positional parameters are used, $$00 is prefixed 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 sub- - stituted is the number of positional parameters. If _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 sub- + stituted 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 substituted is the number of elements in the array. If _p_a_r_a_m_e_t_e_r is an indexed - array name subscripted by a negative number, that number is in- - terpreted as relative to one greater than the maximum index of - _p_a_r_a_m_e_t_e_r, so negative indices count back from the end of the + array name subscripted by a negative number, that number is in- + terpreted as relative to one greater than the maximum index of + _p_a_r_a_m_e_t_e_r, so negative indices count back from the end of the array, and an index of -1 references the last element. ${_p_a_r_a_m_e_t_e_r##_w_o_r_d} @@ -1767,15 +1808,15 @@ EEXXPPAANNSSIIOONN RReemmoovvee mmaattcchhiinngg pprreeffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce a pattern just as in pathname expansion, and matched against the expanded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatt-- - tteerrnn MMaattcchhiinngg below. If the pattern matches the beginning of - the value of _p_a_r_a_m_e_t_e_r, then the result of the expansion is the - expanded value of _p_a_r_a_m_e_t_e_r with the shortest matching pattern - (the ``##'' case) or the longest matching pattern (the ``####'' - case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the pattern removal op- + tteerrnn MMaattcchhiinngg below. If the pattern matches the beginning of + the value of _p_a_r_a_m_e_t_e_r, then the result of the expansion is the + expanded value of _p_a_r_a_m_e_t_e_r with the shortest matching pattern + (the ``##'' case) or the longest matching pattern (the ``####'' + case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the pattern removal op- eration 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 vari- - able subscripted with @@ or **, the pattern removal operation is - applied to each member of the array in turn, and the expansion + able 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} @@ -1783,100 +1824,132 @@ EEXXPPAANNSSIIOONN RReemmoovvee mmaattcchhiinngg ssuuffffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce a pattern just as in pathname expansion, and matched against the expanded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatt-- - tteerrnn MMaattcchhiinngg below. If the pattern matches a trailing portion - of the expanded value of _p_a_r_a_m_e_t_e_r, then the result of the ex- - pansion 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- + tteerrnn MMaattcchhiinngg below. If the pattern matches a trailing portion + of the expanded value of _p_a_r_a_m_e_t_e_r, then the result of the ex- + pansion 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//_p_a_t_t_e_r_n//_s_t_r_i_n_g} + ${_p_a_r_a_m_e_t_e_r////_p_a_t_t_e_r_n//_s_t_r_i_n_g} + ${_p_a_r_a_m_e_t_e_r//##_p_a_t_t_e_r_n//_s_t_r_i_n_g} + ${_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. The match is performed using the rules described under - PPaatttteerrnn MMaattcchhiinngg below. If _p_a_t_t_e_r_n begins with //, all matches - of _p_a_t_t_e_r_n are replaced with _s_t_r_i_n_g. Normally only the first - match is replaced. If _p_a_t_t_e_r_n begins with ##, it must match at - the beginning of the expanded value of _p_a_r_a_m_e_t_e_r. If _p_a_t_t_e_r_n - begins with %%, it must match at the end of the expanded value of - _p_a_r_a_m_e_t_e_r. If _s_t_r_i_n_g is null, matches of _p_a_t_t_e_r_n are deleted - and the // following _p_a_t_t_e_r_n may be omitted. If the nnooccaasseemmaattcchh - shell option is enabled, the match is performed without regard - to the case of alphabetic characters. If _p_a_r_a_m_e_t_e_r is @@ or **, - the substitution operation is applied to each positional parame- - ter in turn, and the expansion is the resultant list. If _p_a_r_a_m_- - _e_t_e_r is an array variable subscripted with @@ or **, the substitu- - tion operation is applied to each member of the array in turn, - and the expansion is the resultant list. + 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. _s_t_r_i_n_g undergoes tilde expansion, parameter and vari- + able expansion, arithmetic expansion, command and process sub- + stitution, and quote removal. The match is performed using the + rules described under PPaatttteerrnn MMaattcchhiinngg below. In the first form + above, only the first match is replaced. If there are two + slashes separating _p_a_r_a_m_e_t_e_r and _p_a_t_t_e_r_n (the second form + above), all matches of _p_a_t_t_e_r_n are replaced with _s_t_r_i_n_g. If + _p_a_t_t_e_r_n is preceded by ## (the third form above), it must match + at the beginning of the expanded value of _p_a_r_a_m_e_t_e_r. If _p_a_t_t_e_r_n + is preceded by %% (the fourth form above), it must match at the + end of the expanded value of _p_a_r_a_m_e_t_e_r. If the expansion of + _s_t_r_i_n_g is null, matches of _p_a_t_t_e_r_n are deleted. If _s_t_r_i_n_g is + null, matches of _p_a_t_t_e_r_n are deleted and the // following _p_a_t_t_e_r_n + may be omitted. + + If the ppaattssuubb__rreeppllaacceemmeenntt shell option is enabled using sshhoopptt, + any unquoted instances of && in _s_t_r_i_n_g are replaced with the + matching portion of _p_a_t_t_e_r_n. + + Quoting any part of _s_t_r_i_n_g inhibits replacement in the expansion + of the quoted portion, including replacement strings stored in + shell variables. Backslash will escape && in _s_t_r_i_n_g; the back- + slash is removed in order to permit a literal && in the replace- + ment string. Backslash can also be used to escape a backslash; + \\\\ results in a literal backslash in the replacement. Users + should take care if _s_t_r_i_n_g is double-quoted to avoid unwanted + interactions between the backslash and double-quoting, since + backslash has special meaning within double quotes. Pattern + substitution performs the check for unquoted && after expanding + _s_t_r_i_n_g; shell programmers should quote any occurrences of && they + want to be taken literally in the replacement and ensure any in- + stances of && they want to be replaced are unquoted. + + If the nnooccaasseemmaattcchh shell option is enabled, the match is per- + formed without regard to the case of alphabetic characters. If + _p_a_r_a_m_e_t_e_r is @@ or **, the substitution operation is applied to + each positional parameter in turn, and the expansion is the re- + sultant 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 mem- + ber of the array in turn, and the expansion is the resultant + list. ${_p_a_r_a_m_e_t_e_r^^_p_a_t_t_e_r_n} ${_p_a_r_a_m_e_t_e_r^^^^_p_a_t_t_e_r_n} ${_p_a_r_a_m_e_t_e_r,,_p_a_t_t_e_r_n} ${_p_a_r_a_m_e_t_e_r,,,,_p_a_t_t_e_r_n} - CCaassee mmooddiiffiiccaattiioonn. This expansion modifies the case of alpha- - betic characters in _p_a_r_a_m_e_t_e_r. The _p_a_t_t_e_r_n is expanded to pro- + CCaassee mmooddiiffiiccaattiioonn. This expansion modifies the case of alpha- + betic characters in _p_a_r_a_m_e_t_e_r. The _p_a_t_t_e_r_n is expanded to pro- duce a pattern just as in pathname expansion. Each character in - the expanded value of _p_a_r_a_m_e_t_e_r is tested against _p_a_t_t_e_r_n, and, - if it matches the pattern, its case is converted. The pattern - should not attempt to match more than one character. The ^^ op- + the expanded value of _p_a_r_a_m_e_t_e_r is tested against _p_a_t_t_e_r_n, and, + if it matches the pattern, its case is converted. The pattern + should not attempt to match more than one character. The ^^ op- erator 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 + 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. ${_p_a_r_a_m_e_t_e_r@@_o_p_e_r_a_t_o_r} PPaarraammeetteerr ttrraannssffoorrmmaattiioonn. The expansion is either a transforma- - tion of the value of _p_a_r_a_m_e_t_e_r or information about _p_a_r_a_m_e_t_e_r - itself, depending on the value of _o_p_e_r_a_t_o_r. Each _o_p_e_r_a_t_o_r is a + tion of the value of _p_a_r_a_m_e_t_e_r or information about _p_a_r_a_m_e_t_e_r + itself, depending on the value of _o_p_e_r_a_t_o_r. Each _o_p_e_r_a_t_o_r is a single letter: - UU The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r - with lowercase alphabetic characters converted to upper- + UU The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r + with lowercase alphabetic characters converted to upper- case. - uu The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r + uu The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r with the first character converted to uppercase, if it is alphabetic. - LL The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r - with uppercase alphabetic characters converted to lower- + LL The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r + with uppercase alphabetic characters converted to lower- case. - QQ The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r + QQ The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r quoted in a format that can be reused as input. - EE The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r - with backslash escape sequences expanded as with the + EE The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r + with backslash escape sequences expanded as with the $$''......'' quoting mechanism. PP The expansion is a string that is the result of expanding the value of _p_a_r_a_m_e_t_e_r as if it were a prompt string (see PPRROOMMPPTTIINNGG below). - AA The expansion is a string in the form of an assignment - statement or ddeeccllaarree command that, if evaluated, will + AA The expansion is a string in the form of an assignment + statement or ddeeccllaarree command that, if evaluated, will recreate _p_a_r_a_m_e_t_e_r with its attributes and value. KK Produces a possibly-quoted version of the value of _p_a_r_a_m_- _e_t_e_r, except that it prints the values of indexed and as- - sociative arrays as a sequence of quoted key-value pairs + sociative arrays as a sequence of quoted key-value pairs (see AArrrraayyss above). - aa The expansion is a string consisting of flag values rep- + aa The expansion is a string consisting of flag values rep- resenting _p_a_r_a_m_e_t_e_r's attributes. + kk Like the K transformation, but expands the keys and val- + ues of indexed and associative arrays to separate words + after word splitting. - If _p_a_r_a_m_e_t_e_r is @@ or **, the operation is applied to each posi- - tional parameter in turn, and the expansion is the resultant - list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or + If _p_a_r_a_m_e_t_e_r is @@ or **, the operation is applied to each posi- + tional parameter in turn, and the expansion is the resultant + list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or **, the operation is applied to each member of the array in turn, and the expansion is the resultant list. - The result of the expansion is subject to word splitting and + The result of the expansion is subject to word splitting and pathname expansion as described below. CCoommmmaanndd SSuubbssttiittuuttiioonn @@ -1890,108 +1963,111 @@ EEXXPPAANNSSIIOONN BBaasshh performs the expansion by executing _c_o_m_m_a_n_d in a subshell environ- ment and replacing the command substitution with the standard output of the command, with any trailing newlines deleted. Embedded newlines are - not deleted, but they may be removed during word splitting. The com- - mand substitution $$((ccaatt _f_i_l_e)) can be replaced by the equivalent but + not deleted, but they may be removed during word splitting. The com- + mand substitution $$((ccaatt _f_i_l_e)) can be replaced by the equivalent but faster $$((<< _f_i_l_e)). - When the old-style backquote form of substitution is used, backslash - retains its literal meaning except when followed by $$, ``, or \\. The + When the old-style backquote form of substitution is used, backslash + retains its literal meaning except when followed by $$, ``, or \\. The first backquote not preceded by a backslash terminates the command sub- - stitution. When using the $(_c_o_m_m_a_n_d) form, all characters between the + stitution. When using the $(_c_o_m_m_a_n_d) form, all characters between the parentheses make up the command; none are treated specially. Command substitutions may be nested. To nest when using the backquoted form, escape the inner backquotes with backslashes. - If the substitution appears within double quotes, word splitting and + If the substitution appears within double quotes, word splitting and pathname expansion are not performed on the results. AArriitthhmmeettiicc EExxppaannssiioonn - Arithmetic expansion allows the evaluation of an arithmetic expression - and the substitution of the result. The format for arithmetic expan- + Arithmetic expansion allows the evaluation of an arithmetic expression + and the substitution of the result. The format for arithmetic expan- sion is: $$((((_e_x_p_r_e_s_s_i_o_n)))) - The _e_x_p_r_e_s_s_i_o_n is treated as if it were within double quotes, but a - double quote inside the parentheses is not treated specially. All to- - kens in the expression undergo parameter and variable expansion, com- - mand substitution, and quote removal. The result is treated as the - arithmetic expression to be evaluated. Arithmetic expansions may be - nested. + The _e_x_p_r_e_s_s_i_o_n undergoes the same expansions as if it were within dou- + ble quotes, but double quote characters in _e_x_p_r_e_s_s_i_o_n are not treated + specially and are removed. All tokens in the expression undergo param- + eter and variable expansion, command substitution, and quote removal. + The result is treated as the arithmetic expression to be evaluated. + Arithmetic expansions may be nested. - The evaluation is performed according to the rules listed below under + The evaluation is performed according to the rules listed below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If _e_x_p_r_e_s_s_i_o_n is invalid, bbaasshh prints a message indicating failure and no substitution occurs. PPrroocceessss SSuubbssttiittuuttiioonn - _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n allows a process's input or output to be referred - to using a filename. It takes the form of <<((_l_i_s_t)) or >>((_l_i_s_t)). The - process _l_i_s_t is run asynchronously, and its input or output appears as + _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n allows a process's input or output to be referred + to using a filename. It takes the form of <<((_l_i_s_t)) or >>((_l_i_s_t)). The + process _l_i_s_t is run asynchronously, and its input or output appears as a filename. This filename is passed as an argument to the current com- - mand as the result of the expansion. If the >>((_l_i_s_t)) form is used, - writing to the file will provide input for _l_i_s_t. If the <<((_l_i_s_t)) form - is used, the file passed as an argument should be read to obtain the + mand as the result of the expansion. If the >>((_l_i_s_t)) form is used, + writing to the file will provide input for _l_i_s_t. If the <<((_l_i_s_t)) form + is used, the file passed as an argument should be read to obtain the output of _l_i_s_t. Process substitution is supported on systems that sup- port named pipes (_F_I_F_O_s) or the //ddeevv//ffdd method of naming open files. - When available, process substitution is performed simultaneously with - parameter and variable expansion, command substitution, and arithmetic + When available, process substitution is performed simultaneously with + parameter and variable expansion, command substitution, and arithmetic expansion. WWoorrdd SSpplliittttiinngg - The shell scans the results of parameter expansion, command substitu- - tion, and arithmetic expansion that did not occur within double quotes + The shell scans the results of parameter expansion, command substitu- + tion, and arithmetic expansion that did not occur within double quotes for _w_o_r_d _s_p_l_i_t_t_i_n_g. - The shell treats each character of IIFFSS as a delimiter, and splits the - results of the other expansions into words using these characters as - field terminators. If IIFFSS is unset, or its value is exactly - <><><>, the default, then sequences of <>, <>, - and <> at the beginning and end of the results of the previous - expansions are ignored, and any sequence of IIFFSS characters not at the - beginning or end serves to delimit words. If IIFFSS has a value other - than the default, then sequences of the whitespace characters ssppaaccee, - ttaabb, and nneewwlliinnee are ignored at the beginning and end of the word, as - long as the whitespace character is in the value of IIFFSS (an IIFFSS white- - space character). Any character in IIFFSS that is not IIFFSS whitespace, + The shell treats each character of IIFFSS as a delimiter, and splits the + results of the other expansions into words using these characters as + field terminators. If IIFFSS is unset, or its value is exactly + <><><>, the default, then sequences of <>, <>, + and <> at the beginning and end of the results of the previous + expansions are ignored, and any sequence of IIFFSS characters not at the + beginning or end serves to delimit words. If IIFFSS has a value other + than the default, then sequences of the whitespace characters ssppaaccee, + ttaabb, and nneewwlliinnee are ignored at the beginning and end of the word, as + long as the whitespace character is in the value of IIFFSS (an IIFFSS white- + space character). Any character in IIFFSS that is not IIFFSS whitespace, along with any adjacent IIFFSS whitespace characters, delimits a field. A - sequence of IIFFSS whitespace characters is also treated as a delimiter. + sequence of IIFFSS whitespace characters is also treated as a delimiter. If the value of IIFFSS is null, no word splitting occurs. - Explicit null arguments ("""" or '''') are retained and passed to commands + Explicit null arguments ("""" or '''') are retained and passed to commands as empty strings. Unquoted implicit null arguments, resulting from the expansion of parameters that have no values, are removed. If a parame- ter with no value is expanded within double quotes, a null argument re- sults and is retained and passed to a command as an empty string. When - a quoted null argument appears as part of a word whose expansion is + a quoted null argument appears as part of a word whose expansion is non-null, the null argument is removed. That is, the word -d'' becomes -d after word splitting and null argument removal. Note that if no expansion occurs, no splitting is performed. PPaatthhnnaammee EExxppaannssiioonn - After word splitting, unless the --ff option has been set, bbaasshh scans - each word for the characters **, ??, and [[. If one of these characters + After word splitting, unless the --ff option has been set, bbaasshh scans + each word for the characters **, ??, and [[. If one of these characters appears, and is not quoted, then the word is regarded as a _p_a_t_t_e_r_n, and - replaced with an alphabetically sorted list of filenames matching the - pattern (see PPaatttteerrnn MMaattcchhiinngg below). If no matching filenames are - found, and the shell option nnuullllgglloobb is not enabled, the word is left - unchanged. If the nnuullllgglloobb option is set, and no matches are found, - the word is removed. If the ffaaiillgglloobb shell option is set, and no - matches are found, an error message is printed and the command is not + replaced with an alphabetically sorted list of filenames matching the + pattern (see PPaatttteerrnn MMaattcchhiinngg below). If no matching filenames are + found, and the shell option nnuullllgglloobb is not enabled, the word is left + unchanged. If the nnuullllgglloobb option is set, and no matches are found, + the word is removed. If the ffaaiillgglloobb shell option is set, and no + matches are found, an error message is printed and the command is not executed. If the shell option nnooccaasseegglloobb is enabled, the match is per- - formed without regard to the case of alphabetic characters. When a - pattern is used for pathname expansion, the character ````..'''' at the - start of a name or immediately following a slash must be matched ex- - plicitly, unless the shell option ddoottgglloobb is set. The filenames ````..'''' - and ````....'''' must always be matched explicitly, even if ddoottgglloobb is set. - In other cases, the ````..'''' character is not treated specially. When - matching a pathname, the slash character must always be matched explic- - itly by a slash in the pattern, but in other matching contexts it can - be matched by a special pattern character as described below under PPaatt-- - tteerrnn MMaattcchhiinngg. See the description of sshhoopptt below under SSHHEELLLL BBUUIILLTTIINN - CCOOMMMMAANNDDSS for a description of the nnooccaasseegglloobb, nnuullllgglloobb, ffaaiillgglloobb, and + formed without regard to the case of alphabetic characters. When a + pattern is used for pathname expansion, the character ````..'''' at the + start of a name or immediately following a slash must be matched ex- + plicitly, unless the shell option ddoottgglloobb is set. In order to match + the filenames ````..'''' and ````....'''', the pattern must begin with ``.'' (for + example, ``.?''), even if ddoottgglloobb is set. If the gglloobbsskkiippddoottss shell + option is enabled, the filenames ````..'''' and ````....'''' are never matched, + even if the pattern begins with a ````..''''. When not matching pathnames, + the ````..'''' character is not treated specially. When matching a path- + name, the slash character must always be matched explicitly by a slash + in the pattern, but in other matching contexts it can be matched by a + special pattern character as described below under PPaatttteerrnn MMaattcchhiinngg. + See the description of sshhoopptt below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS for a + description of the nnooccaasseegglloobb, nnuullllgglloobb, gglloobbsskkiippddoottss, ffaaiillgglloobb, and ddoottgglloobb shell options. The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the set of file @@ -2033,38 +2109,39 @@ EEXXPPAANNSSIIOONN quence and character set, is matched. If the first char- acter 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 values of the LLCC__CCOOLLLLAATTEE or LLCC__AALLLL shell vari- - ables, if set. To obtain the traditional interpretation - of range expressions, where [[aa--dd]] is equivalent to - [[aabbccdd]], set value of the LLCC__AALLLL shell variable to CC, or - enable the gglloobbaasscciiiirraannggeess shell option. A -- may be - matched by including it as the first or last character in - the set. A ]] may be matched by including it as the first - character in the set. - - Within [[ and ]], _c_h_a_r_a_c_t_e_r _c_l_a_s_s_e_s can be specified using + in range expressions, and the characters included in the + range, are determined by the current locale and the val- + ues of the LLCC__CCOOLLLLAATTEE or LLCC__AALLLL shell variables, if set. + To obtain the traditional interpretation of range expres- + sions, where [[aa--dd]] is equivalent to [[aabbccdd]], set value of + the LLCC__AALLLL shell variable to CC, or enable the gglloobbaassccii-- + iirraannggeess shell option. A -- may be matched by including it + as the first or last character in the set. A ]] may be + matched by including it as the first character in the + set. + + Within [[ and ]], _c_h_a_r_a_c_t_e_r _c_l_a_s_s_e_s can be specified using the syntax [[::_c_l_a_s_s::]], where _c_l_a_s_s is one of the following classes defined in the POSIX standard: - aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt + aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt ppuunncctt ssppaaccee uuppppeerr wwoorrdd xxddiiggiitt A character class matches any character belonging to that class. The wwoorrdd character class matches letters, digits, and the character _. Within [[ and ]], an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be specified us- - ing the syntax [[==_c==]], which matches all characters with - the same collation weight (as defined by the current lo- + ing the syntax [[==_c==]], which matches all characters with + the same collation weight (as defined by the current lo- cale) as the character _c. Within [[ and ]], the syntax [[.._s_y_m_b_o_l..]] matches the collat- ing symbol _s_y_m_b_o_l. - If the eexxttgglloobb shell option is enabled using the sshhoopptt builtin, several - extended pattern matching operators are recognized. In the following - 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: + If the eexxttgglloobb shell option is enabled using the sshhoopptt builtin, the + shell recognizes several extended pattern matching operators. 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 following sub-patterns: ??((_p_a_t_t_e_r_n_-_l_i_s_t)) Matches zero or one occurrence of the given patterns @@ -2077,35 +2154,50 @@ EEXXPPAANNSSIIOONN !!((_p_a_t_t_e_r_n_-_l_i_s_t)) Matches anything except one of the given patterns + Theeexxttgglloobb option changes the behavior of the parser, since the paren- + theses are normally treated as operators with syntactic meaning. To + ensure that extended matching patterns are parsed correctly, make sure + that eexxttgglloobb is enabled before parsing constructs containing the pat- + terns, including shell functions and command substitutions. + + When matching filenames, the ddoottgglloobb shell option determines the set of + filenames that are tested: when ddoottgglloobb is enabled, the set of file- + names includes all files beginning with ``.'', but ``.'' and ``..'' + must be matched by a pattern or sub-pattern that begins with a dot; + when it is disabled, the set does not include any filenames beginning + with ``.'' unless the pattern or sub-pattern begins with a ``.''. As + above, ``.'' only has a special meaning when matching filenames. + Complicated extended pattern matching against long strings is slow, es- pecially when the patterns contain alternations and the strings contain - multiple matches. Using separate matches against shorter strings, or + multiple matches. Using separate matches against shorter strings, or using arrays of strings instead of a single long string, may be faster. QQuuoottee RReemmoovvaall After the preceding expansions, all unquoted occurrences of the charac- - ters \\, '', and "" that did not result from one of the above expansions + ters \\, '', and "" that did not result from one of the above expansions are removed. RREEDDIIRREECCTTIIOONN - Before a command is executed, its input and output may be _r_e_d_i_r_e_c_t_e_d - using a special notation interpreted by the shell. Redirection allows - commands' file handles to be duplicated, opened, closed, made to refer + Before a command is executed, its input and output may be _r_e_d_i_r_e_c_t_e_d + using a special notation interpreted by the shell. _R_e_d_i_r_e_c_t_i_o_n allows + commands' file handles to be duplicated, opened, closed, made to refer to different files, and can change the files the command reads from and - writes to. Redirection may also be used to modify file handles in the - current shell execution environment. The following redirection opera- + writes to. Redirection may also be used to modify file handles in the + current shell execution environment. The following redirection opera- tors may precede or appear anywhere within a _s_i_m_p_l_e _c_o_m_m_a_n_d or may fol- - low a _c_o_m_m_a_n_d. Redirections are processed in the order they appear, + low a _c_o_m_m_a_n_d. Redirections are processed in the order they appear, from left to right. - Each redirection that may be preceded by a file descriptor number may + Each redirection that may be preceded by a file descriptor number may instead be preceded by a word of the form {_v_a_r_n_a_m_e}. In this case, for each redirection operator except >&- and <&-, the shell will allocate a - file descriptor greater than or equal to 10 and assign it to _v_a_r_n_a_m_e. - If >&- or <&- is preceded by {_v_a_r_n_a_m_e}, the value of _v_a_r_n_a_m_e defines - the file descriptor to close. If {_v_a_r_n_a_m_e} is supplied, the redirect- - ion persists beyond the scope of the command, allowing the shell pro- - grammer to manage the file descriptor himself. + file descriptor greater than or equal to 10 and assign it to _v_a_r_n_a_m_e. + If >&- or <&- is preceded by {_v_a_r_n_a_m_e}, the value of _v_a_r_n_a_m_e defines + the file descriptor to close. If {_v_a_r_n_a_m_e} is supplied, the redirect- + ion persists beyond the scope of the command, allowing the shell pro- + grammer to manage the file descriptor's lifetime manually. The + vvaarrrreeddiirr__cclloossee shell option manages this behavior. In the following descriptions, if the file descriptor number is omit- ted, and the first character of the redirection operator is <<, the re- @@ -2344,87 +2436,95 @@ AALLIIAASSEESS 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 - below). + arguments are needed, use a shell function (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, and - all lines that make up a compound command, before executing any of the - commands on that line or the compound command. Aliases are expanded - when a command is read, not when it is executed. Therefore, an alias - definition appearing on the same line as another command does not take - effect until the next line of input is read. The commands following - the alias definition on that line are not affected by the new alias. - This behavior is also an issue when functions are executed. Aliases - are expanded when a function definition is read, not when the function - is executed, because a function definition is itself a command. As a - consequence, aliases defined in a function are not available until af- - ter that function is executed. To be safe, always put alias defini- + The rules concerning the definition and use of aliases are somewhat + confusing. BBaasshh always reads at least one complete line of input, and + all lines that make up a compound command, before executing any of the + commands on that line or the compound command. Aliases are expanded + when a command is read, not when it is executed. Therefore, an alias + definition appearing on the same line as another command does not take + effect until the next line of input is read. The commands following + the alias definition on that line are not affected by the new alias. + This behavior is also an issue when functions are executed. Aliases + are expanded when a function definition is read, not when the function + is executed, because a function definition is itself a command. As a + consequence, aliases defined in a function are not available until af- + ter that function is executed. To be safe, always put alias defini- tions on a separate line, and do not use aalliiaass in compound commands. For almost every purpose, aliases are superseded by shell functions. 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 in- - terpret 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 in- + terpret 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 00 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 be- - tween 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 + All other aspects of the shell execution environment are identical be- + tween 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 option has been enabled. - 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. If a variable is declared llooccaall, the vari- - able's visible scope is restricted to that function and its children - (including the functions it calls). Local variables "shadow" variables - with the same name declared at previous scopes. For instance, a local - variable declared in a function hides a global variable of the same - name: references and assignments refer to the local variable, leaving - the global variable unmodified. When the function returns, the global - variable is once again visible. - - The shell uses _d_y_n_a_m_i_c _s_c_o_p_i_n_g to control a variable's visibility - within functions. With dynamic scoping, visible variables and their - values are a result of the sequence of function calls that caused exe- - cution to reach the current function. The value of a variable that a - function sees depends on its value within its caller, if any, whether - that caller is the "global" scope or another shell function. This is - also the value that a local variable declaration "shadows", and the + Variables local to the function may be declared with the llooccaall builtin + command (_l_o_c_a_l _v_a_r_i_a_b_l_e_s). Ordinarily, variables and their values are + shared between the function and its caller. If a variable is declared + llooccaall, the variable's visible scope is restricted to that function and + its children (including the functions it calls). + + In the following description, the _c_u_r_r_e_n_t _s_c_o_p_e is a currently- execut- + ing function. Previous scopes consist of that function's caller and so + on, back to the "global" scope, where the shell is not executing any + shell function. Consequently, a local variable at the current scope is + a variable declared using the llooccaall or ddeeccllaarree builtins in the function + that is currently executing. + + Local variables "shadow" variables with the same name declared at pre- + vious scopes. For instance, a local variable declared in a function + hides a global variable of the same name: references and assignments + refer to the local variable, leaving the global variable unmodified. + When the function returns, the global variable is once again visible. + + The shell uses _d_y_n_a_m_i_c _s_c_o_p_i_n_g to control a variable's visibility + within functions. With dynamic scoping, visible variables and their + values are a result of the sequence of function calls that caused exe- + cution to reach the current function. The value of a variable that a + function sees depends on its value within its caller, if any, whether + that caller is the "global" scope or another shell function. This is + also the value that a local variable declaration "shadows", and the value that is restored when the function returns. - For example, if a variable _v_a_r is declared as local in function _f_u_n_c_1, - and _f_u_n_c_1 calls another function _f_u_n_c_2, references to _v_a_r made from + For example, if a variable _v_a_r is declared as local in function _f_u_n_c_1, + and _f_u_n_c_1 calls another function _f_u_n_c_2, references to _v_a_r made from within _f_u_n_c_2 will resolve to the local variable _v_a_r from _f_u_n_c_1, shadow- ing any global variable named _v_a_r. The uunnsseett builtin also acts using the same dynamic scope: if a variable is local to the current scope, uunnsseett will unset it; otherwise the unset - will refer to the variable found in any calling scope as described - above. If a variable at the current local scope is unset, it will re- - main so until it is reset in that scope or until the function returns. - Once the function returns, any instance of the variable at a previous - scope will become visible. If the unset acts on a variable at a previ- - ous scope, any instance of a variable with that name that had been - shadowed will become visible. + will refer to the variable found in any calling scope as described + above. If a variable at the current local scope is unset, it will re- + main so (appearing as unset) until it is reset in that scope or until + the function returns. Once the function returns, any instance of the + variable at a previous scope will become visible. If the unset acts on + a variable at a previous scope, any instance of a variable with that + name that had been shadowed will become visible (see below how the lloo-- + ccaallvvaarr__uunnsseett shell option changes this behavior). The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, de- fines a maximum function nesting level. Function invocations that ex- @@ -2441,22 +2541,23 @@ FFUUNNCCTTIIOONNSS 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 + may be exported so that child shell processes (those created when exe- + cuting a separate shell invocation) automatically have them defined + with the --ff option to the eexxppoorrtt builtin. A function definition may be deleted using the --ff option to the uunnsseett builtin. Functions may be recursive. The FFUUNNCCNNEESSTT variable may be used to limit - the depth of the function call stack and restrict the number of func- + 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 re- cursive calls. AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN - The shell allows arithmetic expressions to be evaluated, under certain - circumstances (see the lleett and ddeeccllaarree builtin commands, the (((( com- + The shell allows arithmetic expressions to be evaluated, under certain + circumstances (see the lleett and ddeeccllaarree builtin commands, the (((( com- pound command, 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 fol- + 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 fol- lowing list of operators is grouped into levels of equal-precedence op- erators. The levels are listed in order of decreasing precedence. @@ -2485,55 +2586,55 @@ 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 _i_n_t_e_g_e_r 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. Integer constants follow the C language definition, without suffixes or character constants. Constants with a leading 0 are interpreted as oc- - tal numbers. A leading 0x or 0X denotes hexadecimal. Otherwise, num- - bers take the form [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal num- - ber between 2 and 64 representing the arithmetic base, and _n is a num- - ber in that base. If _b_a_s_e_# is omitted, then base 10 is used. When + tal numbers. A leading 0x or 0X denotes hexadecimal. Otherwise, num- + bers take the form [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal num- + ber between 2 and 64 representing the arithmetic base, and _n is a num- + ber in that base. If _b_a_s_e_# is omitted, then base 10 is used. When specifying _n, if a non-digit is required, 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 up- - percase letters may be used interchangeably to represent numbers be- + 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 up- + percase letters may be used interchangeably to represent numbers be- tween 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. The tteesstt and [[ commands determine their - behavior based on the number of arguments; see the descriptions of + Conditional expressions are used by the [[[[ compound command and the + tteesstt and [[ builtin commands to test file attributes and perform string + and arithmetic comparisons. The tteesstt and [[ commands determine their + behavior based on the number of arguments; see the descriptions of those commands for any other command-specific actions. - Expressions are formed from the following unary or binary primaries. - BBaasshh handles several filenames specially when they are used in expres- + Expressions are formed from the following unary or binary primaries. + BBaasshh handles several filenames specially when they are used in expres- sions. If the operating system on which bbaasshh is running provides these - special files, bash will use them; otherwise it will emulate them in- - ternally with this behavior: If any _f_i_l_e argument to one of the pri- + special files, bash will use them; otherwise it will emulate them in- + ternally with this behavior: If any _f_i_l_e argument to one of the pri- maries is of the form _/_d_e_v_/_f_d_/_n, then file descriptor _n is checked. If - the _f_i_l_e argument to one of the primaries is one of _/_d_e_v_/_s_t_d_i_n, - _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, 1, or 2, respectively, + 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. The tteesstt command sorts using ASCII ordering. --aa _f_i_l_e @@ -2572,30 +2673,30 @@ 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). --RR _v_a_r_n_a_m_e - True if the shell variable _v_a_r_n_a_m_e is set and is a name refer- + True if the shell variable _v_a_r_n_a_m_e is set and is a name refer- ence. --zz _s_t_r_i_n_g True if the length of _s_t_r_i_n_g is zero. @@ -2605,8 +2706,8 @@ 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 - command for POSIX conformance. When used with the [[[[ command, + True if the strings are equal. == should be used with the tteesstt + command for POSIX conformance. When used with the [[[[ command, this performs pattern matching as described above (CCoommppoouunndd CCoomm-- mmaannddss). @@ -2620,90 +2721,93 @@ 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 - or negative integers. When used with the [[[[ command, _A_r_g_1 and - _A_r_g_2 are evaluated as arithmetic expressions (see AARRIITTHHMMEETTIICC + 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. When used with the [[[[ command, _A_r_g_1 and + _A_r_g_2 are evaluated as arithmetic expressions (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above). SSIIMMPPLLEE CCOOMMMMAANNDD EEXXPPAANNSSIIOONN When a simple command is executed, the shell performs the following ex- - pansions, assignments, and redirections, from left to right, in the + pansions, assignments, and redirections, from left to right, in the following order. - 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- - zero status. - - If no command name results, redirections are performed, but do not af- - fect the current shell environment. A redirection error causes the + shell environment. In the case of such a command (one that consists + only of assignment statements and redirections), assignment statements + are performed before redirections. Otherwise, the variables are added + to the environment of the executed command and do not affect the cur- + rent shell environment. 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 af- + fect 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- + 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 re- - member 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 + member 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 - in a separate execution environment with the original command and the - original command's arguments as its arguments, and the function's exit - status becomes the exit status of that subshell. If that function is + in a separate execution environment with the original command and the + original command's arguments as its arguments, and the function's exit + status becomes the exit status of that subshell. If that function is not defined, the shell prints an error message and returns an exit sta- tus of 127. - If the search is successful, or if the command name contains one or + If the search is successful, or if the command name contains one or more slashes, the shell executes the named program in a separate execu- tion environment. Argument 0 is set to the name given, and the remain- ing arguments to the command are set to the arguments given, if any. - If this execution fails because the file is not in executable format, - and the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a - file containing shell commands. A subshell is spawned to execute it. - This subshell reinitializes itself, so that the effect is as if a new - shell had been invoked to handle the script, with the exception that - the locations of commands remembered by the parent (see hhaasshh below un- - der SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS) are retained by the child. + 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, and the shell creates a new instance of + itself 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 @@ -2766,6 +2870,8 @@ CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENN A command invoked in this separate environment cannot affect the shell's execution environment. + A _s_u_b_s_h_e_l_l is a copy of the shell process. + 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 re- @@ -2838,42 +2944,70 @@ EEXXIITT SSTTAATTUUSS return an exit status of 2 to indicate incorrect usage, generally in- valid options or missing arguments. - BBaasshh itself returns the exit status of the last command executed, un- - less a syntax error occurs, in which case it exits with a non-zero + The exit status of the last command is available in the special parame- + ter $?. + + BBaasshh itself returns the exit status of the last command executed, un- + less 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 + is caught and handled (so that the wwaaiitt builtin is interruptible). In all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh ig- nores 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 ef- - fect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT in addition to - these inherited handlers. Commands run as a result of command substi- + fect, 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 us- + 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 us- ing 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. + When job control is not enabled, and bbaasshh is waiting for a foreground + command to complete, the shell receives keyboard-generated signals such + as SSIIGGIINNTT (usually generated by ^^CC) that users commonly intend to send + to that command. This happens because the shell and the command are in + the same process group as the terminal, and ^^CC sends SSIIGGIINNTT to all pro- + cesses in that process group. + + When bbaasshh is running without job control enabled and receives SSIIGGIINNTT + while waiting for a foreground command, it waits until that foreground + command terminates and then decides what to do about the SSIIGGIINNTT: + + 1. If the command terminates due to the SSIIGGIINNTT, bbaasshh concludes that + the user meant to end the entire script, and acts on the SSIIGGIINNTT + (e.g., by running a SSIIGGIINNTT trap or exiting itself); + + 2. If the command does not terminate due to SSIIGGIINNTT, the program + handled the SSIIGGIINNTT itself and did not treat it as a fatal sig- + nal. In that case, bbaasshh does not treat SSIIGGIINNTT as a fatal sig- + nal, either, instead assuming that the SSIIGGIINNTT was used as part + of the program's normal operation (e.g., emacs uses it to abort + editing commands) or deliberately discarded. However, bbaasshh will + run any trap set on SSIIGGIINNTT, as it does with any other trapped + signal it receives while it is waiting for the foreground com- + mand to complete, for compatibility. + 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 ex- ecution of processes and continue (_r_e_s_u_m_e) their execution at a later @@ -2994,80 +3128,79 @@ 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- - able) - \\WW the basename of the current working directory, with $$HHOOMMEE - abbreviated with a tilde + \\ww the value of the PPWWDD shell variable ($$PPWWDD), with $$HHOOMMEE + abbreviated with a tilde (uses the value of the + PPRROOMMPPTT__DDIIRRTTRRIIMM variable) + \\WW the basename of $$PPWWDD, with $$HHOOMMEE abbreviated with a tilde \\!! the history number of this command \\## the command number of this command \\$$ 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 be- - low), while the command number is the position in the sequence of com- - mands executed during the current shell session. After the string is - decoded, it is expanded via parameter expansion, command substitution, - arithmetic expansion, and quote removal, subject to the value of the + 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 be- + low), while the command number is the position in the sequence of com- + mands executed during the current shell session. After the string is + decoded, it is expanded via parameter expansion, command substitution, + arithmetic expansion, and quote removal, subject to the value of the pprroommppttvvaarrss shell option (see the description of the sshhoopptt command under - SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). This can have unwanted side effects if - escaped portions of the string appear within command substitution or + SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). This can have unwanted side effects if + escaped portions of the string appear within command substitution or contain characters special to word expansion. 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 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 + 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 + 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. If that file does not exist or cannot be read, the ultimate - default is _/_e_t_c_/_i_n_p_u_t_r_c. When a program which uses the readline li- - brary 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 constructs. Other lines denote key bindings and variable + _p_u_t_r_c. If that file does not exist or cannot be read, the ultimate + default is _/_e_t_c_/_i_n_p_u_t_r_c. When a program which uses the readline li- + brary 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 constructs. 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 @@ -3075,18 +3208,18 @@ 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 + 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. @@ -3098,15 +3231,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 @@ -3114,7 +3247,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 @@ -3125,7 +3258,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 @@ -3135,20 +3268,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 @@ -3159,12 +3292,35 @@ RREEAADDLLIINNEE sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e or using the bbiinndd builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - 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: + aaccttiivvee--rreeggiioonn--ssttaarrtt--ccoolloorr + A string variable that controls the text color and background + when displaying the text in the active region (see the descrip- + tion of eennaabbllee--aaccttiivvee--rreeggiioonn below). This string must not take + up any physical character positions on the display, so it should + consist only of terminal escape sequences. It is output to the + terminal before displaying the text in the active region. This + variable is reset to the default value whenever the terminal + type changes. The default value is the string that puts the + terminal in standout mode, as obtained from the terminal's ter- + minfo description. A sample value might be "\e[01;33m". + aaccttiivvee--rreeggiioonn--eenndd--ccoolloorr + A string variable that "undoes" the effects of aaccttiivvee--rree-- + ggiioonn--ssttaarrtt--ccoolloorr and restores "normal" terminal display appear- + ance after displaying text in the active region. This string + must not take up any physical character positions on the dis- + play, so it should consist only of terminal escape sequences. + It is output to the terminal after displaying the text in the + active region. This variable is reset to the default value + whenever the terminal type changes. The default value is the + string that restores the terminal from standout mode, as ob- + tained from the terminal's terminfo description. A sample value + might be "\e[0m". bbeellll--ssttyyllee ((aauuddiibbllee)) Controls what happens when readline wants to ring the terminal bell. If set to nnoonnee, readline never rings the bell. If set to @@ -3181,49 +3337,55 @@ RREEAADDLLIINNEE If set to OOnn, when listing completions, readline displays the common prefix of the set of possible completions using a differ- ent color. The color definitions are taken from the value of - the LLSS__CCOOLLOORRSS environment variable. + the LLSS__CCOOLLOORRSS environment variable. If there is a color defini- + tion in $$LLSS__CCOOLLOORRSS for the custom suffix "readline-colored-com- + pletion-prefix", readline uses this color for the common prefix + instead of its default. ccoolloorreedd--ssttaattss ((OOffff)) - If set to OOnn, readline displays possible completions using dif- - ferent colors to indicate their file type. The color defini- - tions are taken from the value of the LLSS__CCOOLLOORRSS environment + If set to OOnn, readline displays possible completions using dif- + ferent colors to indicate their file type. The color defini- + tions are taken from the value of the LLSS__CCOOLLOORRSS environment variable. 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--ddiissppllaayy--wwiiddtthh ((--11)) - The number of screen columns used to display possible matches - when performing completion. The value is ignored if it is less - than 0 or greater than the terminal screen width. A value of 0 - will cause matches to be displayed one per line. The default + The number of screen columns used to display possible matches + when performing completion. The value is ignored if it is less + than 0 or greater than the terminal screen width. A value of 0 + will cause matches to be displayed one per line. The default value is -1. ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff)) If set to OOnn, readline performs filename matching and completion in a case-insensitive fashion. ccoommpplleettiioonn--mmaapp--ccaassee ((OOffff)) - If set to OOnn, and ccoommpplleettiioonn--iiggnnoorree--ccaassee is enabled, readline - treats hyphens (_-) and underscores (__) as equivalent when per- + If set to OOnn, and ccoommpplleettiioonn--iiggnnoorree--ccaassee is enabled, readline + treats hyphens (_-) and underscores (__) as equivalent when per- forming case-insensitive filename matching and completion. 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 - greater than or equal to the value of this variable, readline - will ask whether or not the user wishes to view them; otherwise - they are simply listed on the terminal. + 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, readline + will ask whether or not the user wishes to view them; otherwise + they are simply listed on the terminal. A zero value means + readline should never ask; negative values are treated as zero. ccoonnvveerrtt--mmeettaa ((OOnn)) 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 _m_e_t_a _p_r_e_f_i_x). The default is _O_n, but readline will set it to - _O_f_f if the locale contains eight-bit characters. + _O_f_f if the locale contains eight-bit characters. This variable + is dependent on the LLCC__CCTTYYPPEE locale category, and may change if + the locale is changed. 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 @@ -3245,13 +3407,23 @@ RREEAADDLLIINNEE escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. + eennaabbllee--aaccttiivvee--rreeggiioonn ((OOnn)) + The _p_o_i_n_t is the current cursor position, and _m_a_r_k refers to a + saved cursor position. The text between the point and mark is + referred to as the _r_e_g_i_o_n. When this variable is set to _O_n, + readline allows certain commands to designate the region as _a_c_- + _t_i_v_e. When the region is active, readline highlights the text + in the region using the value of the aaccttiivvee--rreeggiioonn--ssttaarrtt--ccoolloorr, + which defaults to the string that enables the terminal's stand- + out mode. The active region shows the text inserted by brack- + eted-paste and any matching text found by incremental and non- + incremental history searches. eennaabbllee--bbrraacckkeetteedd--ppaassttee ((OOnn)) - When set to OOnn, readline will configure the terminal in a way - that will enable it to insert each paste into the editing buffer - as a single string of characters, instead of treating each char- - acter as if it had been read from the keyboard. This can pre- - vent pasted characters from being interpreted as editing com- - mands. + When set to OOnn, readline configures the terminal to insert each + paste into the editing buffer as a single string of characters, + instead of treating each character as if it had been read from + the keyboard. This prevents readline from executing any editing + commands bound to key sequences appearing in the pasted text. 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 ar- @@ -3288,158 +3460,161 @@ RREEAADDLLIINNEE gardless of what the terminal claims it can support. The name mmeettaa--ffllaagg is a synonym for this variable. The default is _O_f_f, but readline will set it to _O_n if the locale contains eight-bit - characters. + characters. This variable is dependent on the LLCC__CCTTYYPPEE locale + category, and may change if the locale is changed. 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. kkeeyysseeqq--ttiimmeeoouutt ((550000)) - Specifies the duration _r_e_a_d_l_i_n_e will wait for a character when - reading an ambiguous key sequence (one that can form a complete + Specifies the duration _r_e_a_d_l_i_n_e will wait for a character when + reading an ambiguous key sequence (one that can form a complete key sequence using the input read so far, or can take additional - input to complete a longer key sequence). If no input is re- - ceived within the timeout, _r_e_a_d_l_i_n_e will use the shorter but - complete key sequence. The value is specified in milliseconds, - so a value of 1000 means that _r_e_a_d_l_i_n_e will wait one second for - additional input. If this variable is set to a value less than - or equal to zero, or to a non-numeric value, _r_e_a_d_l_i_n_e will wait - until another key is pressed to decide which key sequence to + input to complete a longer key sequence). If no input is re- + ceived within the timeout, _r_e_a_d_l_i_n_e will use the shorter but + complete key sequence. The value is specified in milliseconds, + so a value of 1000 means that _r_e_a_d_l_i_n_e will wait one second for + additional input. If this variable is set to a value less than + or equal to zero, or to a non-numeric value, _r_e_a_d_l_i_n_e will wait + until another key is pressed to decide which key sequence to complete. mmaarrkk--ddiirreeccttoorriieess ((OOnn)) If set to OOnn, completed directory names have a slash appended. mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff)) - If set to OOnn, history lines that have been modified are dis- + If set to OOnn, history lines that have been modified are dis- played with a preceding asterisk (**). mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess ((OOffff)) If set to OOnn, completed names which are symbolic links to direc- - tories have a slash appended (subject to the value of mmaarrkk--ddii-- + tories have a slash appended (subject to the value of mmaarrkk--ddii-- rreeccttoorriieess). mmaattcchh--hhiiddddeenn--ffiilleess ((OOnn)) - This variable, when set to OOnn, causes readline to match files - whose names begin with a `.' (hidden files) when performing - filename completion. If set to OOffff, the leading `.' must be + This variable, when set to OOnn, causes readline to match files + whose names begin with a `.' (hidden files) when performing + filename completion. If set to OOffff, the leading `.' must be supplied by the user in the filename to be completed. mmeennuu--ccoommpplleettee--ddiissppllaayy--pprreeffiixx ((OOffff)) - If set to OOnn, menu completion displays the common prefix of the + If set to OOnn, menu completion displays the common prefix of the list of possible completions (which may be empty) before cycling through the list. oouuttppuutt--mmeettaa ((OOffff)) - If set to OOnn, readline will display characters with the eighth + If set to OOnn, readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape sequence. The default is _O_f_f, but readline will set it to _O_n if the locale - contains eight-bit characters. + contains eight-bit characters. This variable is dependent on + the LLCC__CCTTYYPPEE locale category, and may change if the locale is + changed. ppaaggee--ccoommpplleettiioonnss ((OOnn)) - If set to OOnn, readline uses an internal _m_o_r_e-like pager to dis- + If set to OOnn, readline uses an internal _m_o_r_e-like pager to dis- play a screenful of possible completions at a time. pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff)) - If set to OOnn, readline will display completions with matches - sorted horizontally in alphabetical order, rather than down the + If set to OOnn, readline will display completions with matches + sorted horizontally in alphabetical order, rather than down the screen. rreevveerrtt--aallll--aatt--nneewwlliinnee ((OOffff)) - If set to OOnn, readline will undo all changes to history lines + If set to OOnn, readline will undo all changes to history lines before returning when aacccceepptt--lliinnee is executed. By default, his- - tory lines may be modified and retain individual undo lists + tory lines may be modified and retain individual undo lists across calls to rreeaaddlliinnee. sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff)) - This alters the default behavior of the completion functions. + This alters the default behavior of the completion functions. If set to OOnn, words which have more than one possible completion - cause the matches to be listed immediately instead of ringing + cause the matches to be listed immediately instead of ringing the bell. sshhooww--aallll--iiff--uunnmmooddiiffiieedd ((OOffff)) - This alters the default behavior of the completion functions in + This alters the default behavior of the completion functions in a fashion similar to sshhooww--aallll--iiff--aammbbiigguuoouuss. If set to OOnn, words - which have more than one possible completion without any possi- - ble partial completion (the possible completions don't share a - common prefix) cause the matches to be listed immediately in- + 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 in- stead of ringing the bell. sshhooww--mmooddee--iinn--pprroommpptt ((OOffff)) - If set to OOnn, add a string to the beginning of the prompt indi- - cating the editing mode: emacs, vi command, or vi insertion. + If set to OOnn, add a string to the beginning of the prompt indi- + cating the editing mode: emacs, vi command, or vi insertion. The mode strings are user-settable (e.g., _e_m_a_c_s_-_m_o_d_e_-_s_t_r_i_n_g). sskkiipp--ccoommpplleetteedd--tteexxtt ((OOffff)) - If set to OOnn, this alters the default completion behavior when - inserting a single match into the line. It's only active when - performing completion in the middle of a word. If enabled, - readline does not insert characters from the completion that - match characters after point in the word being completed, so + If set to OOnn, this alters the default completion behavior when + inserting a single match into the line. It's only active when + performing completion in the middle of a word. If enabled, + readline does not insert characters from the completion that + match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. vvii--ccmmdd--mmooddee--ssttrriinngg ((((ccmmdd)))) - If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is + If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is displayed immediately before the last line of the primary prompt - when vi editing mode is active and in command mode. The value + when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and - control prefixes and backslash escape sequences is available. - Use the \1 and \2 escapes to begin and end sequences of non- - printing characters, which can be used to embed a terminal con- + control prefixes and backslash escape sequences is available. + Use the \1 and \2 escapes to begin and end sequences of non- + printing characters, which can be used to embed a terminal con- trol sequence into the mode string. vvii--iinnss--mmooddee--ssttrriinngg ((((iinnss)))) - If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is + If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and - control prefixes and backslash escape sequences is available. - Use the \1 and \2 escapes to begin and end sequences of non- - printing characters, which can be used to embed a terminal con- + control prefixes and backslash escape sequences is available. + Use the \1 and \2 escapes to begin and end sequences of non- + printing characters, which can be used to embed a terminal con- trol sequence into the mode string. vviissiibbllee--ssttaattss ((OOffff)) - If set to OOnn, a character denoting a file's type as reported by - _s_t_a_t(2) is appended to the filename when listing possible com- + If set to OOnn, a character denoting a file's type as reported by + _s_t_a_t(2) is appended to the filename when listing possible com- pletions. RReeaaddlliinnee CCoonnddiittiioonnaall CCoonnssttrruuccttss - Readline implements a facility similar in spirit to the conditional - compilation features of the C preprocessor which allows key bindings - and variable settings to be performed as the result of tests. There + Readline implements a facility similar in spirit to the conditional + compilation features of the C preprocessor which allows key bindings + and variable settings to be performed as the result of tests. There are four parser directives used. - $$iiff The $$iiff construct allows bindings to be made based on the edit- - ing mode, the terminal being used, or the application using + $$iiff The $$iiff construct allows bindings to be made based on the edit- + ing mode, the terminal being used, or the application using readline. The text of the test, after any comparison operator, - extends to the end of the line; unless otherwise noted, no + extends to the end of the line; unless otherwise noted, no characters are required to isolate it. - mmooddee The mmooddee== form of the $$iiff directive is used to test - whether readline is in emacs or vi mode. This may be - used in conjunction with the sseett kkeeyymmaapp command, for in- - stance, 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 in- + stance, to set bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and + _e_m_a_c_s_-_c_t_l_x keymaps only if readline is starting out in emacs mode. - tteerrmm The tteerrmm== form may be used to include terminal-specific + tteerrmm The tteerrmm== form may be used to include terminal-specific key bindings, perhaps to bind the key sequences output by the terminal's function keys. The word on the right side of the == is tested against both the full name of the ter- - minal and the portion of the terminal name before the - first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d, + minal and the portion of the terminal name before the + first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d, for instance. vveerrssiioonn - The vveerrssiioonn test may be used to perform comparisons - against specific readline versions. The vveerrssiioonn expands - to the current readline version. The set of comparison - operators includes ==, (and ====), !!==, <<==, >>==, <<, and >>. - The version number supplied on the right side of the op- - erator consists of a major version number, an optional + The vveerrssiioonn test may be used to perform comparisons + against specific readline versions. The vveerrssiioonn expands + to the current readline version. The set of comparison + operators includes ==, (and ====), !!==, <<==, >>==, <<, and >>. + The version number supplied on the right side of the op- + erator consists of a major version number, an optional decimal point, and an optional minor version (e.g., 77..11). - If the minor version is omitted, it is assumed to be 00. + If the minor version is omitted, it is assumed to be 00. The operator may be separated from the string vveerrssiioonn and from the version number argument by whitespace. aapppplliiccaattiioonn The aapppplliiccaattiioonn construct is used to include application- - specific settings. Each program using the readline li- - brary sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization + specific settings. Each program using the readline li- + brary 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 + 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 @@ -3449,12 +3624,12 @@ RREEAADDLLIINNEE _v_a_r_i_a_b_l_e The _v_a_r_i_a_b_l_e construct provides simple equality tests for - readline variables and values. The permitted comparison - operators are _=, _=_=, and _!_=. The variable name must be + readline variables and values. The permitted comparison + operators are _=, _=_=, and _!_=. The variable name must be separated from the comparison operator by whitespace; the - operator may be separated from the value on the right - hand side by whitespace. Both string and boolean vari- - ables may be tested. Boolean variables must be tested + operator may be separated from the value on the right + hand side by whitespace. Both string and boolean vari- + ables may be tested. Boolean variables must be tested against the values _o_n and _o_f_f. $$eennddiiff This command, as seen in the previous example, terminates an $$iiff @@ -3464,51 +3639,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 @@ -3524,33 +3699,33 @@ RREEAADDLLIINNEE Move forward to the end of the next word. Words are composed of alphanumeric characters (letters and digits). bbaacckkwwaarrdd--wwoorrdd ((MM--bb)) - Move back to the start of the current or previous word. Words + Move back to the start of the current or previous word. Words are composed of alphanumeric characters (letters and digits). sshheellll--ffoorrwwaarrdd--wwoorrdd - Move forward to the end of the next word. Words are delimited + Move forward to the end of the next word. Words are delimited by non-quoted shell metacharacters. sshheellll--bbaacckkwwaarrdd--wwoorrdd - Move back to the start of the current or previous word. Words + Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. pprreevviioouuss--ssccrreeeenn--lliinnee - Attempt to move point to the same physical screen column on the - previous physical screen line. This will not have the desired - effect if the current Readline line does not take up more than - one physical line or if point is not greater than the length of + Attempt to move point to the same physical screen column on the + previous physical screen line. This will not have the desired + effect if the current readline line does not take up more than + one physical line or if point is not greater than the length of the prompt plus the screen width. nneexxtt--ssccrreeeenn--lliinnee - Attempt to move point to the same physical screen column on the + Attempt to move point to the same physical screen column on the next physical screen line. This will not have the desired effect - if the current Readline line does not take up more than one - physical line or if the length of the current Readline line is + if the current readline line does not take up more than one + physical line or if the length of the current readline line is not greater than the length of the prompt plus the screen width. cclleeaarr--ddiissppllaayy ((MM--CC--ll)) - Clear the screen and, if possible, the terminal's scrollback - buffer, then redraw the current line, leaving the current line + Clear the screen and, if possible, the terminal's scrollback + buffer, then redraw the current line, leaving the current line at the top of the screen. cclleeaarr--ssccrreeeenn ((CC--ll)) Clear the screen, then redraw the current line, leaving the cur- - rent line at the top of the screen. With an argument, refresh + rent 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. @@ -3558,20 +3733,29 @@ 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. + 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. A + numeric argument, if supplied, specifies the history entry to + use instead of the current line. + ffeettcchh--hhiissttoorryy + With a numeric argument, fetch that entry from the history list + and make it the current line. Without an argument, move back to + the first entry in the history list. rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr)) Search backward starting at the current line and moving `up' through the history as necessary. This is an incremental @@ -3643,67 +3827,62 @@ RREEAADDLLIINNEE 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. A - numeric argument, if supplied, specifies the history entry to - use instead of the current line. eeddiitt--aanndd--eexxeeccuuttee--ccoommmmaanndd ((CC--xx CC--ee)) - Invoke an editor on the current command line, and execute the + Invoke an editor on the current command line, and execute the result as shell commands. BBaasshh attempts to invoke $$VVIISSUUAALL, $$EEDD-- IITTOORR, and _e_m_a_c_s as the editor, in that order. CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt _e_n_d_-_o_f_-_f_i_l_e ((uussuuaallllyy CC--dd)) - The character indicating end-of-file as set, for example, by - ``stty''. If this character is read when there are no charac- - ters on the line, and point is at the beginning of the line, - Readline interprets it as the end of input and returns EEOOFF. + The character indicating end-of-file as set, for example, by + ``stty''. If this character is read when there are no charac- + ters on the line, and point is at the beginning of the line, + readline interprets it as the end of input and returns EEOOFF. ddeelleettee--cchhaarr ((CC--dd)) Delete the character at point. If this function is bound to the same character as the tty EEOOFF character, as CC--dd commonly is, see above for the effects. 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 ar- + Uppercase the current (or following) word. With a negative ar- gument, uppercase the previous word, but do not move point. ddoowwnnccaassee--wwoorrdd ((MM--ll)) - Lowercase the current (or following) word. With a negative ar- + Lowercase the current (or following) word. With a negative ar- gument, lowercase the previous word, but do not move point. ccaappiittaalliizzee--wwoorrdd ((MM--cc)) Capitalize the current (or following) word. With a negative ar- gument, 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 @@ -3712,31 +3891,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 - 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 - 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. @@ -3745,64 +3924,64 @@ 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- + 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 nu- meric argument, but is otherwise ignored. As a special case, if this command is immediately followed by a character that is nei- - ther a digit nor 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- + ther a digit nor 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 ar- gument may be used to move backward through the list. This com- mand 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 + 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--//)) @@ -3811,67 +3990,67 @@ 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. pprriinntt--llaasstt--kkbbdd--mmaaccrroo (()) - Print the last keyboard macro defined in a format suitable for + Print the last keyboard macro defined in a format suitable for the _i_n_p_u_t_r_c file. 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--lloowweerrccaassee--vveerrssiioonn ((MM--AA,, MM--BB,, MM--_x,, ......)) - If the metafied character _x is uppercase, run the command that + If the metafied character _x is uppercase, run the command that is bound to the corresponding metafied lowercase character. The behavior is undefined if _x is already lowercase. pprreeffiixx--mmeettaa ((EESSCC)) @@ -3879,46 +4058,51 @@ RREEAADDLLIINNEE uunnddoo ((CC--__,, CC--xx CC--uu)) Incremental undo, separately remembered for each line. rreevveerrtt--lliinnee ((MM--rr)) - Undo all changes made to this line. This is like executing the - uunnddoo command enough times to return the line to its initial + Undo all changes made to this line. This is like executing the + uunnddoo command enough times to return the line to its initial state. ttiillddee--eexxppaanndd ((MM--&&)) Perform tilde expansion on the current word. sseett--mmaarrkk ((CC--@@,, MM--<>)) - Set the mark to the point. If a numeric argument is supplied, + Set the mark to the point. If a numeric argument is supplied, the mark is set to that position. eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx)) - Swap the point with the mark. The current cursor position is - set to the saved position, and the old cursor position is saved + Swap the point with the mark. The current cursor position is + set to the saved position, and the old cursor position is saved as the mark. cchhaarraacctteerr--sseeaarrcchh ((CC--]])) A character is read and point is moved to the next occurrence of - that character. A negative count searches for previous occur- - rences. + that character. A negative argument searches for previous oc- + currences. 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- - quent occurrences. + A character is read and point is moved to the previous occur- + rence of that character. A negative argument searches for sub- + sequent occurrences. sskkiipp--ccssii--sseeqquueennccee - Read enough characters to consume a multi-key sequence such as - those defined for keys like Home and End. Such sequences begin + Read enough characters to consume a multi-key sequence such as + those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this - sequence is bound to "\[", keys producing such sequences will - have no effect unless explicitly bound to a readline command, - instead of inserting stray characters into the editing buffer. + sequence is bound to "\[", keys producing such sequences will + have no effect unless explicitly bound to a readline command, + instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. iinnsseerrtt--ccoommmmeenntt ((MM--##)) - Without a numeric argument, the value of the readline ccoomm-- - mmeenntt--bbeeggiinn variable is inserted at the beginning of the current + Without a numeric argument, the value of the readline ccoomm-- + mmeenntt--bbeeggiinn variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a - toggle: if the characters at the beginning of the line do not - match the value of ccoommmmeenntt--bbeeggiinn, the value is inserted, other- + toggle: if the characters at the beginning of the line do not + match the value of ccoommmmeenntt--bbeeggiinn, the value is inserted, other- wise the characters in ccoommmmeenntt--bbeeggiinn are deleted from the begin- - ning of the line. In either case, the line is accepted as if a - newline had been typed. The default value of ccoommmmeenntt--bbeeggiinn - causes this command to make the current line a shell comment. - If a numeric argument causes the comment character to be re- + 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 re- moved, the line will be executed by the shell. + ssppeellll--ccoorrrreecctt--wwoorrdd ((CC--xx ss)) + Perform spelling correction on the current word, treating it as + a directory or filename, in the same way as the ccddssppeellll shell + option. Word boundaries are the same as those used by + sshheellll--ffoorrwwaarrdd--wwoorrdd. gglloobb--ccoommpplleettee--wwoorrdd ((MM--gg)) The word before point is treated as a pattern for pathname ex- pansion, with an asterisk implicitly appended. This pattern is @@ -4295,21 +4479,21 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS vironment and return the exit status of the last command exe- cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash, filenames in PPAATTHH are used to find the directory containing - _f_i_l_e_n_a_m_e. The file searched for in PPAATTHH need not be executable. - When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is - searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option - to the sshhoopptt builtin command is turned off, the PPAATTHH is not - searched. If any _a_r_g_u_m_e_n_t_s are supplied, they become the posi- - tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the po- - sitional parameters are unchanged. If the --TT option is enabled, - ssoouurrccee inherits any trap on DDEEBBUUGG; if it is not, any DDEEBBUUGG trap - string is saved and restored around the call to ssoouurrccee, and - ssoouurrccee unsets the DDEEBBUUGG trap while it executes. If --TT is not - set, and the sourced file changes the DDEEBBUUGG trap, the new value - is retained when ssoouurrccee completes. The return status is the - status of the last command exited within the script (0 if no - commands are executed), and false if _f_i_l_e_n_a_m_e is not found or - cannot be read. + _f_i_l_e_n_a_m_e, but _f_i_l_e_n_a_m_e does not need to be executable. The file + searched for in PPAATTHH need not be executable. When bbaasshh is not + in _p_o_s_i_x _m_o_d_e, it searches the current directory 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 positional parameters when + _f_i_l_e_n_a_m_e is executed. Otherwise the positional parameters are + unchanged. If the --TT option is enabled, .. inherits any trap on + DDEEBBUUGG; if it is not, any DDEEBBUUGG trap string is saved and restored + around the call to .., and .. unsets the DDEEBBUUGG trap while it exe- + cutes. If --TT is not set, and the sourced file changes the DDEEBBUUGG + trap, the new value is retained when .. completes. The return + status is the status of the last command exited within the + script (0 if no commands are executed), and false if _f_i_l_e_n_a_m_e is + not found or cannot be read. aalliiaass [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] AAlliiaass with no arguments or with the --pp option prints the list of @@ -4336,29 +4520,31 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS bbiinndd [--mm _k_e_y_m_a_p] --xx _k_e_y_s_e_q:_s_h_e_l_l_-_c_o_m_m_a_n_d bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_f_u_n_c_t_i_o_n_-_n_a_m_e bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d + bbiinndd _r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d_-_l_i_n_e 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 ap- - pear 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'. Op- - tions, if supplied, have the following meanings: + pear in a rreeaaddlliinnee initialization file such as _._i_n_p_u_t_r_c, but + each binding or command must be passed as a separate argument; + e.g., '"\C-x\C-r": re-read-init-file'. Options, if supplied, + have the following meanings: --mm _k_e_y_m_a_p Use _k_e_y_m_a_p as the keymap to be affected by the subsequent bindings. Acceptable _k_e_y_m_a_p names are _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_- - _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, - and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d (_v_i_-_m_o_v_e - is also a synonym); _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_- + _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, + and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d (_v_i_-_m_o_v_e + is also a synonym); _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_- _d_a_r_d. --ll List the names of all rreeaaddlliinnee functions. - --pp Display rreeaaddlliinnee function names and bindings in such a + --pp Display rreeaaddlliinnee function names and bindings in such a way that they can be re-read. --PP List current rreeaaddlliinnee function names and bindings. - --ss Display rreeaaddlliinnee key sequences bound to macros and the - strings they output in such a way that they can be re- + --ss Display rreeaaddlliinnee key sequences bound to macros and the + strings they output in such a way that they can be re- read. - --SS Display rreeaaddlliinnee key sequences bound to macros and the + --SS Display rreeaaddlliinnee key sequences bound to macros and the strings they output. - --vv Display rreeaaddlliinnee variable names and values in such a way + --vv Display rreeaaddlliinnee variable names and values in such a way that they can be re-read. --VV List current rreeaaddlliinnee variable names and values. --ff _f_i_l_e_n_a_m_e @@ -4371,14 +4557,17 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 en- - tered. 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-- + tered. 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 and RREEAADDLLIINNEE__MMAARRKK - variables to the current location of the insertion point - and the saved insertion point (the mark), respectively. - If the executed command changes the value of any of RREEAADD-- - LLIINNEE__LLIINNEE, RREEAADDLLIINNEE__PPOOIINNTT, or RREEAADDLLIINNEE__MMAARRKK, those new - values will be reflected in the editing state. + variables to the current location of the insertion point + and the saved insertion point (the mark), respectively. + The shell assigns any numeric argument the user supplied + to the RREEAADDLLIINNEE__AARRGGUUMMEENNTT variable. If there was no argu- + ment, that variable is not set. If the executed command + changes the value of any of RREEAADDLLIINNEE__LLIINNEE, RREEAADD-- + LLIINNEE__PPOOIINNTT, or RREEAADDLLIINNEE__MMAARRKK, those new values will be + reflected in the editing state. --XX List all key sequences bound to shell commands and the associated commands in a format that can be reused as in- put. @@ -4416,137 +4605,140 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS ccdd [--LL|[--PP [--ee]] [-@]] [_d_i_r] Change the current directory to _d_i_r. if _d_i_r is not supplied, - the value of the HHOOMMEE shell variable is the default. Any addi- - tional arguments following _d_i_r are ignored. The variable CCDDPPAATTHH - defines the search path for the directory containing _d_i_r: each - directory name in CCDDPPAATTHH is searched for _d_i_r. Alternative di- - rectory names in CCDDPPAATTHH are separated by a colon (:). A null - directory name in CCDDPPAATTHH is the same as the current directory, - i.e., ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH is not - used. The --PP option causes ccdd to use the physical directory - structure by resolving symbolic links while traversing _d_i_r and - before processing instances of _._. in _d_i_r (see also the --PP option - to the sseett builtin command); the --LL option forces symbolic links - to be followed by resolving the link after processing instances - of _._. in _d_i_r. If _._. appears in _d_i_r, it is processed by removing - the immediately previous pathname component from _d_i_r, back to a - slash or the beginning of _d_i_r. If the --ee option is supplied - with --PP, and the current working directory cannot be success- - fully determined after a successful directory change, ccdd will - return an unsuccessful status. On systems that support it, the - --@@ option presents the extended attributes associated with a - file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD - before the directory change is attempted. If a non-empty direc- - tory name from CCDDPPAATTHH is used, or if -- is the first argument, - and the directory change is successful, the absolute pathname of - the new working directory is written to the standard output. - The return value is true if the directory was successfully - changed; false otherwise. + the value of the HHOOMMEE shell variable is the default. The vari- + able CCDDPPAATTHH defines the search path for the directory containing + _d_i_r: each directory name in CCDDPPAATTHH is searched for _d_i_r. Alter- + native directory names in CCDDPPAATTHH are separated by a colon (:). + A null directory name in CCDDPPAATTHH is the same as the current di- + rectory, i.e., ``..''. If _d_i_r begins with a slash (/), then CCDD-- + PPAATTHH is not used. The --PP option causes ccdd to use the physical + directory structure by resolving symbolic links while traversing + _d_i_r and before processing instances of _._. in _d_i_r (see also the + --PP option to the sseett builtin command); the --LL option forces sym- + bolic links to be followed by resolving the link after process- + ing instances of _._. in _d_i_r. If _._. appears in _d_i_r, it is pro- + cessed by removing the immediately previous pathname component + from _d_i_r, back to a slash or the beginning of _d_i_r. If the --ee + option is supplied with --PP, and the current working directory + cannot be successfully determined after a successful directory + change, ccdd will return an unsuccessful status. On systems that + support it, the --@@ option presents the extended attributes asso- + ciated with a file as a directory. An argument of -- is con- + verted to $$OOLLDDPPWWDD before the directory change is attempted. If + a non-empty directory name from CCDDPPAATTHH is used, or if -- is the + first argument, and the directory change is successful, the ab- + solute pathname of the new working directory is written to the + standard output. If the directory change is successful, ccdd sets + the value of the PPWWDD environment variable to the new directory + name, and sets the OOLLDDPPWWDD environment variable to the value of + the current working directory before the change. The return + value is true if the directory was successfully changed; false + otherwise. ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...] - Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function + Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function lookup. Only builtin commands or commands found in the PPAATTHH are - executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is - performed using a default value for PPAATTHH that is guaranteed to - find all of the standard utilities. If either the --VV or --vv op- - tion is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv - option causes a single word indicating the command or filename + 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 op- + tion is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv + option causes a single word indicating the command or filename 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 fa- + 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 fa- cilities, while available, will not have useful values. The matches will be generated in the same way as if the program- mable completion code had generated them directly from a comple- - tion specification with the same flags. If _w_o_r_d is specified, + tion specification with the same flags. If _w_o_r_d is specified, only those completions matching _w_o_r_d will be displayed. - The return value is true unless an invalid option is supplied, + The return value is true unless an invalid option is supplied, or no matches were generated. - ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- + ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- _p_a_t] [--WW _w_o_r_d_l_i_s_t] - [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_- + [--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 [--DDEEII] [_n_a_m_e ...] - Specify how arguments to each _n_a_m_e should be completed. If the - --pp option is supplied, or if no options are supplied, existing - completion specifications are printed in a way that allows them + 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 other sup- - plied options and actions should apply to the ``default'' com- - mand completion; that is, completion attempted on a command for - which no completion has previously been defined. The --EE option - indicates that other supplied options and actions should apply - to ``empty'' command completion; that is, completion attempted - on a blank line. The --II option indicates that other supplied - options and actions should apply to completion on the initial - non-assignment word on the line, or after a command delimiter - such as ;; or ||, which is usually command name completion. If - multiple options are supplied, the --DD option takes precedence + plied options and actions should apply to the ``default'' com- + mand completion; that is, completion attempted on a command for + which no completion has previously been defined. The --EE option + indicates that other supplied options and actions should apply + to ``empty'' command completion; that is, completion attempted + on a blank line. The --II option indicates that other supplied + options and actions should apply to completion on the initial + non-assignment word on the line, or after a command delimiter + such as ;; or ||, which is usually command name completion. If + multiple options are supplied, the --DD option takes precedence over --EE, and both take precedence over --II. If any of --DD, --EE, or - --II are supplied, any other _n_a_m_e arguments are ignored; these + --II are supplied, any other _n_a_m_e arguments are ignored; these completions only apply to the case specified by the option. - The process of applying these completion specifications when - word completion is attempted is described above under PPrrooggrraamm-- + The process of applying these completion specifications when + word completion is attempted is described above under PPrrooggrraamm-- mmaabbllee CCoommpplleettiioonn. - Other options, if specified, have the following meanings. The - arguments to the --GG, --WW, and --XX options (and, if necessary, the - --PP and --SS options) should be quoted to protect them from expan- + Other options, if specified, have the following meanings. The + arguments to the --GG, --WW, and --XX options (and, if necessary, the + --PP and --SS options) should be quoted to protect them from expan- sion before the ccoommpplleettee builtin is invoked. --oo _c_o_m_p_-_o_p_t_i_o_n - The _c_o_m_p_-_o_p_t_i_o_n controls several aspects of the comp- - spec's behavior beyond the simple generation of comple- + The _c_o_m_p_-_o_p_t_i_o_n controls several aspects of the comp- + spec's behavior beyond the simple generation of comple- tions. _c_o_m_p_-_o_p_t_i_o_n may be one of: bbaasshhddeeffaauulltt Perform the rest of the default bbaasshh completions if the compspec generates no matches. - ddeeffaauulltt Use readline's default filename completion if + ddeeffaauulltt Use readline's default filename completion if the compspec generates no matches. ddiirrnnaammeess - Perform directory name completion if the comp- + Perform directory name completion if the comp- spec generates no matches. ffiilleennaammeess - Tell readline that the compspec generates file- - names, so it can perform any filename-specific - processing (like adding a slash to directory - names, quoting special characters, or suppress- - ing trailing spaces). Intended to be used with + Tell readline that the compspec generates file- + names, so it can perform any filename-specific + processing (like adding a slash to directory + names, quoting special characters, or suppress- + ing trailing spaces). Intended to be used with shell functions. - nnooqquuoottee Tell readline not to quote the completed words - if they are filenames (quoting filenames is the + nnooqquuoottee Tell readline not to quote the completed words + if they are filenames (quoting filenames is the default). - nnoossoorrtt Tell readline not to sort the list of possible + nnoossoorrtt Tell readline not to sort the list of possible completions alphabetically. - nnoossppaaccee Tell readline not to append a space (the de- - fault) to words completed at the end of the + nnoossppaaccee Tell readline not to append a space (the de- + fault) to words completed at the end of the line. pplluussddiirrss - After any matches defined by the compspec are + After any matches defined by the compspec are generated, directory name completion is at- tempted 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 @@ -4554,7 +4746,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 @@ -4563,17 +4755,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. @@ -4582,8 +4774,9 @@ 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 - output is used as the possible completions. + _c_o_m_m_a_n_d is executed in a subshell environment, and its + output is used as the possible completions. Arguments + are passed as with the --FF option. --FF _f_u_n_c_t_i_o_n The shell function _f_u_n_c_t_i_o_n is executed in the current shell environment. When the function is executed, the @@ -4805,16 +4998,22 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. - 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 - error loading a new builtin from a shared object. + Bash will use the value of the BBAASSHH__LLOOAADDAABBLLEESS__PPAATTHH variable as a + colon-separated list of directories in which to search for _f_i_l_e_- + _n_a_m_e. The default is system-dependent. The --dd option will + delete a builtin previously loaded with --ff. If no _n_a_m_e argu- + ments are given, or if the --pp option is supplied, a list of + shell builtins is printed. With no other option arguments, the + list consists of all enabled shell builtins. If --nn is supplied, + only disabled builtins are printed. If --aa is supplied, the list + printed includes all builtins, with an indication of whether or + not each is enabled. If --ss is supplied, the output is re- + stricted to the POSIX _s_p_e_c_i_a_l builtins. If no options are sup- + plied and a _n_a_m_e is not a shell builtin, eennaabbllee will attempt to + load _n_a_m_e from a shared object named _n_a_m_e, as if the command + were ``enable -f _n_a_m_e _n_a_m_e . 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- @@ -5006,9 +5205,9 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS back from the end of the history, and an index of -1 refers to the current hhiissttoorryy --dd command. --dd _s_t_a_r_t-_e_n_d - Delete the history entries between positions _s_t_a_r_t and - _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t - and _e_n_d are interpreted as described above. + Delete the range of history entries between positions + _s_t_a_r_t and _e_n_d, inclusive. Positive and negative values + for _s_t_a_r_t and _e_n_d are interpreted as described above. --aa Append the ``new'' history lines to the history file. These are history lines entered since the beginning of the current bbaasshh session, but not already appended to the @@ -5036,9 +5235,9 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS character followed immediately by a digit are interpreted as timestamps for the following history entry. The return value is 0 unless an invalid option is encountered, an error occurs while - reading or writing the history file, an invalid _o_f_f_s_e_t is sup- - plied as an argument to --dd, or the history expansion supplied as - an argument to --pp fails. + reading or writing the history file, an invalid _o_f_f_s_e_t or range + is supplied as an argument to --dd, or the history expansion sup- + plied as an argument to --pp fails. jjoobbss [--llnnpprrss] [ _j_o_b_s_p_e_c ... ] jjoobbss --xx _c_o_m_m_a_n_d [ _a_r_g_s ... ] @@ -5140,44 +5339,55 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS _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 - the new top directory. Arguments, if supplied, have the follow- - ing meanings: - --nn Suppresses the normal change of directory when removing + Removes entries from the directory stack. The elements are num- + bered from 0 starting at the first directory listed by ddiirrss. + With no arguments, ppooppdd removes the top directory from the + stack, and changes to the new top directory. Arguments, if sup- + plied, have the following meanings: + --nn Suppresses the normal change of directory when removing directories from the stack, so that only the stack is ma- nipulated. - ++_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 left of the list + shown by ddiirrss, starting with zero, from the stack. 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 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 - option is encountered, the directory stack is empty, a non-exis- - tent directory stack entry is specified, or the directory change - fails. + If the top element of the directory stack is modified, and the + _-_n option was not supplied, ppooppdd uses the ccdd builtin to change + to the directory at the top of the stack. If the ccdd fails, ppooppdd + returns a non-zero value. + + Otherwise, ppooppdd returns false if an invalid option is encoun- + tered, the directory stack is empty, or a non-existent directory + stack entry is specified. + + If the ppooppdd command is successful, bash runs ddiirrss to show the + final contents of the directory stack, and the return status is + 0. pprriinnttff [--vv _v_a_r] _f_o_r_m_a_t [_a_r_g_u_m_e_n_t_s] - Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the - control of the _f_o_r_m_a_t. The --vv option causes the output to be - assigned to the variable _v_a_r rather than being printed to the + Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the + control of the _f_o_r_m_a_t. The --vv option causes the output to be + assigned to the variable _v_a_r rather than being printed to the standard output. - The _f_o_r_m_a_t is a character string which contains three types of - objects: plain characters, which are simply copied to standard - output, character escape sequences, which are converted and - copied to the standard output, and format specifications, each - of which causes printing of the next successive _a_r_g_u_m_e_n_t. In + The _f_o_r_m_a_t is a character string which contains three types of + objects: plain characters, which are simply copied to standard + output, character escape sequences, which are converted and + copied to the standard output, and format specifications, each + of which causes printing of the next successive _a_r_g_u_m_e_n_t. In addition to the standard _p_r_i_n_t_f(1) format specifications, pprriinnttff interprets the following extensions: %%bb causes pprriinnttff to expand backslash escape sequences in the corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee. - %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a + %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a format that can be reused as shell input. + %%QQ like %%qq, but applies any supplied precision to the _a_r_g_u_- + _m_e_n_t before quoting it. %%((_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). @@ -5209,9 +5419,9 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS ppuusshhdd [--nn] [_d_i_r] Adds a directory to the top of the directory stack, or rotates the stack, making the new top of the stack the current working - directory. With no arguments, ppuusshhdd exchanges the top two di- - rectories and returns 0, unless the directory stack is empty. - Arguments, if supplied, have the following meanings: + directory. With no arguments, ppuusshhdd exchanges the top two ele- + ments of the directory stack. Arguments, if supplied, have the + following meanings: --nn Suppresses the normal change of directory when rotating or adding directories to the stack, so that only the stack is manipulated. @@ -5221,16 +5431,20 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --_n Rotates the stack so that the _nth directory (counting from the right of the list shown by ddiirrss, starting with zero) is at the top. - _d_i_r Adds _d_i_r to the directory stack at the top, making it the - new current working directory as if it had been supplied - as the argument to the ccdd builtin. + _d_i_r Adds _d_i_r to the directory stack at the top + + After the stack has been modified, if the --nn option was not sup- + plied, ppuusshhdd uses the ccdd builtin to change to the directory at + the top of the stack. If the ccdd fails, ppuusshhdd returns a non-zero + value. + + Otherwise, if no arguments are supplied, ppuusshhdd returns 0 unless + the directory stack is empty. When rotating the directory + stack, ppuusshhdd returns 0 unless the directory stack is empty or a + non-existent directory stack element is specified. - 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 - directory fails. + If the ppuusshhdd command is successful, bash runs ddiirrss to show the + final contents of the directory stack. ppwwdd [--LLPP] Print the absolute pathname of the current working directory. @@ -5270,7 +5484,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --ee If the standard input is coming from a terminal, rreeaaddlliinnee (see RREEAADDLLIINNEE above) is used to obtain the line. Read- line uses the current (or default, if line editing was - not previously active) editing settings, but uses Read- + not previously active) editing settings, but uses read- line's default filename completion. --ii _t_e_x_t If rreeaaddlliinnee is being used to read the line, _t_e_x_t is @@ -5312,115 +5526,116 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd re- turns immediately, without trying to read any data. The exit status is 0 if input is available on the specified - file descriptor, non-zero otherwise. The exit status is - greater than 128 if the timeout is exceeded. + file descriptor, or the read will return EOF, non-zero + 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, without the ending de- - limiter but otherwise unmodified, is assigned to the variable - RREEPPLLYY. The exit status is zero, unless end-of-file is encoun- - tered, rreeaadd times out (in which case the status is greater than - 128), a variable assignment error (such as assigning to a read- + If no _n_a_m_e_s are supplied, the line read, without the ending de- + limiter but otherwise unmodified, is assigned to the variable + RREEPPLLYY. The exit status is zero, unless end-of-file is encoun- + tered, rreeaadd times out (in which case the status is greater than + 128), a variable assignment error (such as assigning to a read- only variable) occurs, or an invalid file descriptor is supplied as the argument to --uu. rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...] - The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s - may not be changed by subsequent assignment. If the --ff option - is supplied, the functions corresponding to the _n_a_m_e_s are so - marked. The --aa option restricts the variables to indexed ar- - rays; the --AA option restricts the variables to associative ar- + 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 ar- + rays; the --AA option restricts the variables to associative ar- rays. If both options are supplied, --AA takes precedence. If no - _n_a_m_e arguments are given, or if the --pp option is supplied, a + _n_a_m_e arguments are given, or if the --pp option is supplied, a list of all readonly names is printed. The other options may be - used to restrict the output to a subset of the set of readonly - names. The --pp option causes output to be displayed in a format - that may be reused as input. If a variable name is followed by - =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return - status is 0 unless an invalid option is encountered, one of the + used to restrict the output to a subset of the set of readonly + names. The --pp option causes output to be displayed in a format + that may be reused as input. If a variable name is followed by + =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return + status is 0 unless an invalid option is encountered, one of the _n_a_m_e_s is not a valid shell variable name, or --ff is supplied with a _n_a_m_e that is not a function. rreettuurrnn [_n] - Causes a function to stop executing and return the value speci- - fied by _n to its caller. If _n is omitted, the return status is - that of the last command executed in the function body. If rree-- + Causes a function to stop executing and return the value speci- + fied by _n to its caller. If _n is omitted, the return status is + that of the last command executed in the function body. If rree-- ttuurrnn is executed by a trap handler, the last command used to de- - termine the status is the last command executed before the trap - handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the last - command used to determine the status is the last command exe- - cuted by the trap handler before rreettuurrnn was invoked. If rreettuurrnn - is used outside a function, but during execution of a script by - the .. (ssoouurrccee) command, it causes the shell to stop executing - that script and return either _n or the exit status of the last - command executed within the script as the exit status of the + termine the status is the last command executed before the trap + handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the last + command used to determine the status is the last command exe- + cuted by the trap handler before rreettuurrnn was invoked. If rreettuurrnn + is used outside a function, but during execution of a script by + the .. (ssoouurrccee) command, it causes the shell to stop executing + that script and return either _n or the exit status of the last + command executed within the script as the exit status of the script. If _n is supplied, the return value is its least signif- - icant 8 bits. The return status is non-zero if rreettuurrnn is sup- - plied a non-numeric argument, or is used outside a function and - not during execution of a script by .. or ssoouurrccee. Any command + icant 8 bits. The return status is non-zero if rreettuurrnn is sup- + plied a non-numeric argument, or is used outside a function and + not during execution of a script by .. or ssoouurrccee. Any command associated with the RREETTUURRNN trap is executed before execution re- sumes after the function or script. - sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] - sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] - Without options, the name and value of each shell variable are - 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 op- - tions 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 - meanings: + 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, display the name and value of each shell vari- + able in a format that can be reused as input for setting or re- + setting the currently-set variables. Read-only variables cannot + 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 argu- + ments remaining after option processing are treated as values + for the positional parameters and are assigned, in order, to $$11, + $$22, ...... $$_n. Options, if specified, have the following mean- + ings: --aa Each variable or function that is created or modified is - given the export attribute and marked for export to the + given the export attribute and marked for export to the environment of subsequent commands. - --bb Report the status of terminated background jobs immedi- + --bb Report the status of terminated background jobs immedi- ately, rather than before the next primary prompt. This is effective only when job control is enabled. - --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a - single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d + --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a + single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d (see SSHHEELLLL GGRRAAMMMMAARR above), exits with a non-zero status. - The shell does not exit if the command that fails is - part of the command list immediately following a wwhhiillee - or uunnttiill keyword, part of the test following the iiff or - eelliiff reserved words, part of any command executed in a - &&&& or |||| list except the command following the final &&&& + The shell does not exit if the command that fails is + part of the command list immediately following a wwhhiillee + or uunnttiill keyword, part of the test following the iiff or + eelliiff reserved words, part of any command executed in a + &&&& or |||| list except the command following the final &&&& or ||||, any command in a pipeline but the last, or if the - command's return value is being inverted with !!. If a - compound command other than a subshell returns a non- - zero status because a command failed while --ee was being - ignored, the shell does not exit. A trap on EERRRR, if - set, is executed before the shell exits. This option + command's return value is being inverted with !!. If a + compound command other than a subshell returns a non- + zero status because a command failed while --ee was being + ignored, the shell does not exit. A trap on EERRRR, if + set, is executed before the shell exits. This option applies to the shell environment and each subshell envi- - ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT + ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT above), and may cause subshells to exit before executing all the commands in the subshell. - If a compound command or shell function executes in a - context where --ee is being ignored, none of the commands - executed within the compound command or function body - will be affected by the --ee setting, even if --ee is set - and a command returns a failure status. If a compound - command or shell function sets --ee while executing in a - context where --ee is ignored, that setting will not have - any effect until the compound command or the command + If a compound command or shell function executes in a + context where --ee is being ignored, none of the commands + executed within the compound command or function body + will be affected by the --ee setting, even if --ee is set + and a command returns a failure status. If a compound + command or shell function sets --ee while executing in a + context where --ee is ignored, that setting will not have + any effect until the compound command or the command containing the function call completes. --ff Disable pathname expansion. - --hh Remember the location of commands as they are looked up + --hh Remember the location of commands as they are looked up for execution. This is enabled by default. - --kk All arguments in the form of assignment statements are - placed in the environment for a command, not just those + --kk All arguments in the form of assignment statements are + placed in the environment for a command, not just those that precede the command name. - --mm Monitor mode. Job control is enabled. This option is - on by default for interactive shells on systems that - support it (see JJOOBB CCOONNTTRROOLL above). All processes run + --mm Monitor mode. Job control is enabled. This option is + on by default for interactive shells on systems that + support it (see JJOOBB CCOONNTTRROOLL above). All processes run in a separate process group. When a background job com- pletes, the shell prints a line containing its exit sta- tus. --nn Read commands but do not execute them. This may be used - to check a shell script for syntax errors. This is ig- + to check a shell script for syntax errors. This is ig- nored 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: @@ -5428,10 +5643,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 @@ -5445,8 +5660,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS HHIISSTTOORRYY. This option is on by default in inter- active shells. iiggnnoorreeeeooff - The effect is as if the shell command ``IG- - NOREEOF=10'' had been executed (see SShheellll VVaarrii-- + The effect is as if the shell command ``IG- + NOREEOF=10'' had been executed (see SShheellll VVaarrii-- aabblleess above). kkeeyywwoorrdd Same as --kk. mmoonniittoorr Same as --mm. @@ -5461,172 +5676,175 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS pphhyyssiiccaall Same as --PP. ppiippeeffaaiill - If set, the return value of a pipeline is the - value of the last (rightmost) command to exit - with a non-zero status, or zero if all commands - in the pipeline exit successfully. This option + If set, the return value of a pipeline is the + value of the last (rightmost) command to exit + with a non-zero status, or zero if all commands + in the pipeline exit successfully. This option is disabled by default. - ppoossiixx Change the behavior of bbaasshh where the default - operation differs from the POSIX standard to - match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO + ppoossiixx Change the behavior of bbaasshh where the default + operation differs from the POSIX standard to + match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO below for a reference to a document that details how posix mode affects bash's behavior. pprriivviilleeggeedd Same as --pp. vveerrbboossee Same as --vv. - vvii Use a vi-style command line editing interface. + vvii Use a vi-style command line editing interface. This also affects the editing interface used for rreeaadd --ee. xxttrraaccee Same as --xx. If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, the values of the - current options are printed. If ++oo is supplied with no - _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the - current option settings is displayed on the standard + current options are printed. If ++oo is supplied with no + _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the + current option settings is displayed on the standard output. - --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and - $$BBAASSHH__EENNVV files are not processed, shell functions are - not inherited from the environment, and the SSHHEELLLLOOPPTTSS, - BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they ap- - pear 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- + --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 ap- + pear 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- 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. + --rr Enable restricted shell mode. This option cannot be un- + set once it has been set. --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 "*", or array variables sub- + scripted with "@" or "*", as an error when performing + parameter expansion. If expansion is attempted on an + unset variable or parameter, the shell prints an error + message, and, if not interactive, exits with a non-zero status. --vv Print shell input lines as they are read. - --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee + --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee command, sseelleecctt command, or arithmetic ffoorr command, dis- - play the expanded value of PPSS44, followed by the command + play the expanded value of PPSS44, followed by the command and its expanded arguments or associated word list. - --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn + --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn above). This is on by default. - --CC If set, bbaasshh does not overwrite an existing file with - the >>, >>&&, and <<>> redirection operators. This may be + --CC If set, bbaasshh does not overwrite an existing file with + the >>, >>&&, and <<>> redirection operators. This may be overridden when creating output files by using the redi- rection operator >>|| instead of >>. --EE If set, any trap on EERRRR is inherited by shell functions, - command substitutions, and commands executed in a sub- - shell environment. The EERRRR trap is normally not inher- + command substitutions, and commands executed in a sub- + shell environment. The EERRRR trap is normally not inher- ited in such cases. --HH Enable !! style history substitution. This option is on by default when the shell is interactive. - --PP If set, the shell does not resolve symbolic links when - executing commands such as ccdd that change the current + --PP If set, the shell does not resolve symbolic links when + executing commands such as ccdd that change the current working directory. It uses the physical directory structure instead. By default, bbaasshh follows the logical - chain of directories when performing commands which + chain of directories when performing commands which change the current directory. - --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by + --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by shell functions, command substitutions, and commands ex- - ecuted in a subshell environment. The DDEEBBUUGG and RREETTUURRNN + ecuted 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 op- + The options are off by default unless otherwise noted. Using + + rather than - causes these options to be turned off. The op- tions can also be specified as arguments to an invocation of the - shell. The current set of options may be found in $$--. The re- - turn status is always true unless an invalid option is encoun- + shell. The current set of options may be found in $$--. The re- + turn 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 un- - set. _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 + The positional parameters from _n+1 ... are renamed to $$11 ........ + Parameters represented by the numbers $$## down to $$##-_n+1 are un- + set. _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 param- - eters are not changed. The return status is greater than zero + eters are not changed. The return status is greater than zero if _n is greater than $$## or less than zero; otherwise 0. sshhoopptt [--ppqqssuu] [--oo] [_o_p_t_n_a_m_e ...] - Toggle the values of settings controlling optional shell behav- - ior. The settings can be either those listed below, or, if the + Toggle the values of settings controlling optional shell behav- + ior. The settings can be either those listed below, or, if the --oo option is used, those available with the --oo option to the sseett builtin command. With no options, or with the --pp option, a list - of all settable options is displayed, with an indication of + of all settable options is displayed, with an indication of whether or not each is set; if _o_p_t_n_a_m_e_s are supplied, the output - is restricted to those options. The --pp option causes output to - be displayed in a form that may be reused as input. Other op- + is restricted to those options. The --pp option causes output to + be displayed in a form that may be reused as input. Other op- tions have the following meanings: --ss Enable (set) each _o_p_t_n_a_m_e. --uu Disable (unset) each _o_p_t_n_a_m_e. - --qq Suppresses normal output (quiet mode); the return status + --qq Suppresses normal output (quiet mode); the return status indicates whether the _o_p_t_n_a_m_e is set or unset. If multi- - ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta- - tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other- + ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta- + tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other- wise. - --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for + --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for the --oo option to the sseett builtin. - If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt - shows only those options which are set or unset, respectively. - Unless otherwise noted, the sshhoopptt options are disabled (unset) + If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt + shows only those options which are set or unset, respectively. + Unless otherwise noted, the sshhoopptt options are disabled (unset) by default. - The return status when listing options is zero if all _o_p_t_n_a_m_e_s - are enabled, non-zero otherwise. When setting or unsetting op- - tions, 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 op- + tions, the return status is zero unless an _o_p_t_n_a_m_e is not a valid shell option. The list of sshhoopptt options is: aassssoocc__eexxppaanndd__oonnccee - If set, the shell suppresses multiple evaluation of as- - sociative array subscripts during arithmetic expression - evaluation, while executing builtins that can perform - variable assignments, and while executing builtins that + If set, the shell suppresses multiple evaluation of as- + sociative array subscripts during arithmetic expression + evaluation, while executing builtins that can perform + variable assignments, and while executing builtins that perform array dereferencing. - aauuttooccdd If set, a command name that is the name of a directory - is executed as if it were the argument to the ccdd com- + aauuttooccdd If set, a command name that is the name of a directory + is executed as if it were the argument to the ccdd com- mand. This option is only used by interactive shells. ccddaabbllee__vvaarrss - If set, an argument to the ccdd builtin command that is - not a directory is assumed to be the name of a variable + If set, an argument to the ccdd builtin command that is + not a directory is assumed to be the name of a variable whose value is the directory to change to. ccddssppeellll If set, minor errors in the spelling of a directory com- - ponent in a ccdd command will be corrected. The errors + ponent in a ccdd command will be corrected. The errors checked for are transposed characters, a missing charac- - ter, and one character too many. If a correction is - found, the corrected filename is printed, and the com- - mand proceeds. This option is only used by interactive + ter, and one character too many. If a correction is + found, the corrected filename is printed, and the com- + mand proceeds. This option is only used by interactive shells. cchheecckkhhaasshh If set, bbaasshh checks that a command found in the hash ta- - ble exists before trying to execute it. If a hashed - command no longer exists, a normal path search is per- + ble exists before trying to execute it. If a hashed + command no longer exists, a normal path search is per- formed. cchheecckkjjoobbss If set, bbaasshh lists the status of any stopped and running - jobs before exiting an interactive shell. If any jobs + jobs before exiting an interactive shell. If any jobs are running, this causes the exit to be deferred until a - second exit is attempted without an intervening command + second exit is attempted without an intervening command (see JJOOBB CCOONNTTRROOLL above). The shell always postpones ex- iting if any jobs are stopped. cchheecckkwwiinnssiizzee - If set, bbaasshh checks the window size after each external - (non-builtin) command and, if necessary, updates the - values of LLIINNEESS and CCOOLLUUMMNNSS. This option is enabled by + If set, bbaasshh checks the window size after each external + (non-builtin) command and, if necessary, updates the + values of LLIINNEESS and CCOOLLUUMMNNSS. This option is enabled by default. - ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple- - line command in the same history entry. This allows - easy re-editing of multi-line commands. This option is - enabled by default, but only has an effect if command + ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple- + line command in the same history entry. This allows + easy re-editing of multi-line commands. This option is + enabled by default, but only has an effect if command history is enabled, as described above under HHIISSTTOORRYY. ccoommppaatt3311 ccoommppaatt3322 @@ -5635,117 +5853,123 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS ccoommppaatt4422 ccoommppaatt4433 ccoommppaatt4444 - These control aspects of the shell's compatibility mode + ccoommppaatt5500 + These control aspects of the shell's compatibility mode (see SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE below). ccoommpplleettee__ffuullllqquuoottee - If set, bbaasshh quotes all shell metacharacters in file- - names and directory names when performing completion. + If set, bbaasshh quotes all shell metacharacters in file- + names and directory names when performing completion. If not set, bbaasshh removes metacharacters such as the dol- - lar sign from the set of characters that will be quoted - in completed filenames when these metacharacters appear - in shell variable references in words to be completed. - This means that dollar signs in variable names that ex- - pand to directories will not be quoted; however, any - dollar signs appearing in filenames will not be quoted, - either. This is active only when bash is using back- - slashes to quote completed filenames. This variable is - set by default, which is the default bash behavior in + lar sign from the set of characters that will be quoted + in completed filenames when these metacharacters appear + in shell variable references in words to be completed. + This means that dollar signs in variable names that ex- + pand to directories will not be quoted; however, any + dollar signs appearing in filenames will not be quoted, + either. This is active only when bash is using back- + slashes to quote completed filenames. This variable is + set by default, which is the default bash behavior in versions through 4.2. ddiirreexxppaanndd - If set, bbaasshh replaces directory names with the results - of word expansion when performing filename completion. - This changes the contents of the readline editing buf- - fer. If not set, bbaasshh attempts to preserve what the + If set, bbaasshh replaces directory names with the results + of word expansion when performing filename completion. + This changes the contents of the readline editing buf- + fer. If not set, bbaasshh attempts to preserve what the user typed. ddiirrssppeellll - If set, bbaasshh attempts spelling correction on directory - names during word completion if the directory name ini- + If set, bbaasshh attempts spelling correction on directory + names during word completion if the directory name ini- tially supplied does not exist. - ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in - the results of pathname expansion. The filenames ````..'''' - and ````....'''' must always be matched explicitly, even if + ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in + the results of pathname expansion. The filenames ````..'''' + and ````....'''' must always be matched explicitly, even if ddoottgglloobb is set. eexxeeccffaaiill If set, a non-interactive shell will not exit if it can- - not execute the file specified as an argument to the - eexxeecc builtin command. An interactive shell does not + not execute the file specified as an argument to the + eexxeecc builtin command. An interactive shell does not exit if eexxeecc fails. eexxppaanndd__aalliiaasseess - If set, aliases are expanded as described above under + If set, aliases are expanded as described above under AALLIIAASSEESS. This option is enabled by default for interac- tive shells. eexxttddeebbuugg - If set at shell invocation, or in a shell startup file, + If set at shell invocation, or in a shell startup file, arrange to execute the debugger profile before the shell - starts, identical to the ----ddeebbuuggggeerr option. If set af- - ter invocation, behavior intended for use by debuggers + starts, identical to the ----ddeebbuuggggeerr option. If set af- + ter invocation, 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), the shell + 33.. If the command run by the DDEEBBUUGG trap returns a + value of 2, and the shell is executing in a sub- + routine (a shell function or a shell script exe- + cuted by the .. or ssoouurrccee builtins), the shell simulates a call to rreettuurrnn. - 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described - in their descriptions above. + 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 de- - scription of FFIIGGNNOORREE. This option is enabled by de- + ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a de- + scription of FFIIGGNNOORREE. This option is enabled by de- fault. gglloobbaasscciiiirraannggeess - If set, range expressions used in pattern matching - bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave - as if in the traditional C locale when performing com- - parisons. That is, the current locale's collating se- - quence is not taken into account, so bb will not collate - between AA and BB, and upper-case and lower-case ASCII + If set, range expressions used in pattern matching + bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave + as if in the traditional C locale when performing com- + parisons. That is, the current locale's collating se- + quence is not taken into account, so bb will not collate + between AA and BB, and upper-case and lower-case ASCII characters will collate together. + gglloobbsskkiippddoottss + If set, pathname expansion will never match the file- + names ````..'''' and ````....'''', even if the pattern begins with + a ````..''''. This option is enabled by default. + gglloobbssttaarr If set, the pattern **** used in a pathname expansion con- - text will match all files and zero or more directories - and subdirectories. If the pattern is followed by a //, + text will match all files and zero or more directories + and subdirectories. If the pattern is followed by a //, only directories and subdirectories match. ggnnuu__eerrrrffmmtt @@ -5753,25 +5977,25 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS GNU error message format. hhiissttaappppeenndd - If set, the history list is appended to the file named + If set, the history list is appended to the file named by the value of the HHIISSTTFFIILLEE variable when the shell ex- its, 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 @@ -5779,23 +6003,23 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS active login shell exits. iinnhheerriitt__eerrrreexxiitt - If set, command substitution inherits the value of the - eerrrreexxiitt option, instead of unsetting it in the subshell - environment. This option is enabled when _p_o_s_i_x _m_o_d_e is + If set, command substitution inherits the value of the + eerrrreexxiitt option, instead of unsetting it in the subshell + environment. This option is enabled when _p_o_s_i_x _m_o_d_e is enabled. iinntteerraaccttiivvee__ccoommmmeennttss If set, allow a word beginning with ## to cause that word - and all remaining characters on that line to be ignored - in an interactive shell (see CCOOMMMMEENNTTSS above). This op- + and all remaining characters on that line to be ignored + in an interactive shell (see CCOOMMMMEENNTTSS above). This op- tion 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. @@ -5806,45 +6030,56 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS tribute is not inherited. llooccaallvvaarr__uunnsseett - If set, calling uunnsseett on local variables in previous - function scopes marks them so subsequent lookups find - them unset until that function returns. This is identi- - cal to the behavior of unsetting local variables at the + If set, calling uunnsseett on local variables in previous + function scopes marks them so subsequent lookups find + them unset until that function returns. This is identi- + cal to the behavior of unsetting local variables at the current function scope. llooggiinn__sshheellll - The shell sets this option if it is started as a login - shell (see IINNVVOOCCAATTIIOONN above). The value may not be + The shell sets this option if it is started as a login + shell (see IINNVVOOCCAATTIIOONN above). The value may not be changed. mmaaiillwwaarrnn - If set, and a file that bbaasshh is checking for mail has - been accessed since the last time it was checked, the - message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis- + If set, and a file that bbaasshh is checking for mail has + been accessed since the last time it was checked, the + message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis- played. nnoo__eemmppttyy__ccmmdd__ccoommpplleettiioonn - If set, and rreeaaddlliinnee is being used, bbaasshh will not at- - tempt to search the PPAATTHH for possible completions when + If set, and rreeaaddlliinnee is being used, bbaasshh will not at- + tempt to search the PPAATTHH for possible completions when completion is attempted on an empty line. nnooccaasseegglloobb - If set, bbaasshh matches filenames in a case-insensitive + If set, bbaasshh matches filenames in a case-insensitive fashion when performing pathname expansion (see PPaatthhnnaammee EExxppaannssiioonn above). nnooccaasseemmaattcchh - If set, bbaasshh matches patterns in a case-insensitive + If set, bbaasshh matches patterns in a case-insensitive fashion when performing matching while executing ccaassee or [[[[ conditional commands, when performing pattern substi- - tution word expansions, or when filtering possible com- + tution word expansions, or when filtering possible com- pletions as part of programmable completion. + nnooeexxppaanndd__ttrraannssllaattiioonn + If set, bbaasshh encloses the translated results of $"..." + quoting in single quotes instead of double quotes. If + the string is not translated, this has no effect. + 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. + ppaattssuubb__rreeppllaacceemmeenntt + If set, bbaasshh expands occurrences of && in the replacement + string of pattern substitution to the text matched by + the pattern, as described under PPaarraammeetteerr EExxppaannssiioonn + above. This option is enabled by default. + pprrooggccoommpp If set, the programmable completion facilities (see PPrroo-- ggrraammmmaabbllee CCoommpplleettiioonn above) are enabled. This option is @@ -5876,20 +6111,27 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS ters. ssoouurrcceeppaatthh - If set, the ssoouurrccee (..) builtin uses the value of PPAATTHH to + If set, the .. (ssoouurrccee) builtin uses the value of PPAATTHH to find the directory containing the file supplied as an argument. This option is enabled by default. + vvaarrrreeddiirr__cclloossee + If set, the shell automatically closes file descriptors + assigned using the _{_v_a_r_n_a_m_e_} redirection syntax (see RREE-- + DDIIRREECCTTIIOONN above) instead of leaving them open when the + command completes. + xxppgg__eecchhoo - If set, the eecchhoo builtin expands backslash-escape se- + If set, the eecchhoo builtin expands backslash-escape se- quences by default. ssuussppeenndd [--ff] - 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- - plied, or if job control is not enabled. + Suspend the execution of this shell until it receives a SSIIGGCCOONNTT + signal. A login shell, or a shell without job control enabled, + cannot be suspended; the --ff option can be used to override this + and force the suspension. The return status is 0 unless the + shell is a login shell or job control is not enabled and --ff is + not supplied. tteesstt _e_x_p_r [[ _e_x_p_r ]] @@ -5943,11 +6185,15 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS is the one-argument test of the second argument. Other- wise, the expression is false. 4 arguments + The following conditions are applied in the order listed. If the first argument is !!, the result is the negation of - the three-argument expression composed of the remaining - arguments. Otherwise, the expression is parsed and eval- - uated according to precedence using the rules listed - above. + the three-argument expression composed of the remaining + arguments. the two-argument test using the second and + third arguments. If the first argument is exactly (( and + the fourth argument is exactly )), the result is the two- + argument test of the second and third arguments. Other- + wise, the expression is parsed and evaluated according to + precedence using the rules listed above. 5 or more arguments The expression is parsed and evaluated according to precedence using the rules listed above. @@ -6115,7 +6361,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS NNAAMMEE, GGRROOUUPPSS, HHIISSTTCCMMDD, LLIINNEENNOO, RRAANNDDOOMM, SSEECCOONNDDSS, or SSRRAANNDDOOMM are unset, they lose their special properties, even if they are sub- sequently reset. The exit status is true unless a _n_a_m_e is read- - only. + only or may not be unset. wwaaiitt [--ffnn] [--pp _v_a_r_n_a_m_e] [_i_d _._._.] Wait for each specified child process and return its termination @@ -6137,23 +6383,25 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS when job control is enabled, forces wwaaiitt to wait for _i_d to ter- minate before returning its status, instead of returning when it changes status. If _i_d specifies a non-existent process or job, - the return status is 127. Otherwise, the return status is the - exit status of the last process or job waited for. + the return status is 127. If wwaaiitt is interrupted by a signal, + the return status will be greater than 128, as described under + SSIIGGNNAALLSS above. Otherwise, the return status is the exit status + of the last process or job waited for. SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE - Bash-4.0 introduced the concept of a `shell compatibility level', spec- - ified as a set of options to the shopt builtin ccoommppaatt3311, ccoommppaatt3322, ccoomm-- - ppaatt4400, ccoommppaatt4411, and so on). There is only one current compatibility - level -- each option is mutually exclusive. The compatibility level is - intended to allow users to select behavior from previous versions that - is incompatible with newer versions while they migrate scripts to use - current features and behavior. It's intended to be a temporary solu- - tion. + Bash-4.0 introduced the concept of a _s_h_e_l_l _c_o_m_p_a_t_i_b_i_l_i_t_y _l_e_v_e_l, speci- + fied as a set of options to the shopt builtin ( ccoommppaatt3311, ccoommppaatt3322, + ccoommppaatt4400, ccoommppaatt4411, and so on). There is only one current compatibil- + ity level -- each option is mutually exclusive. The compatibility + level is intended to allow users to select behavior from previous ver- + sions that is incompatible with newer versions while they migrate + scripts to use current features and behavior. It's intended to be a + temporary solution. This section does not mention behavior that is standard for a particu- lar version (e.g., setting ccoommppaatt3322 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). + which is default behavior in bash-3.2 and subsequent versions). If a user enables, say, ccoommppaatt3322, it may affect the behavior of other compatibility levels up to and including the current compatibility @@ -6230,8 +6478,8 @@ SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE ccoommppaatt4433 +o the shell does not print a warning message if an attempt is made to use a quoted compound assignment as an argu- - ment to declare (declare -a foo='(1 2)'). Later versions - warn that this usage is deprecated + ment to declare (e.g., declare -a foo='(1 2)'). Later + versions warn that this usage is deprecated +o word expansion errors are considered non-fatal errors that cause the current command to fail, even in posix mode (the default behavior is to make them fatal errors @@ -6268,33 +6516,39 @@ SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE input. Bash-5.1 suppresses that message when the --ll op- tion is supplied. + ccoommppaatt5511 + +o The uunnsseett builtin treats attempts to unset array sub- + scripts @@ and ** differently depending on whether the ar- + ray is indexed or associative, and differently than in + previous versions. + 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 - +o setting or unsetting the values of SSHHEELLLL, PPAATTHH, HHIISSTTFFIILLEE, EENNVV, + +o setting or unsetting the values of SSHHEELLLL, PPAATTHH, HHIISSTTFFIILLEE, EENNVV, or BBAASSHH__EENNVV +o specifying command names containing // - +o specifying a filename containing a // as an argument to the .. + +o specifying a filename containing a // as an argument to the .. builtin command - +o specifying a filename containing a slash as an argument to the + +o specifying a filename containing a slash as an argument to the hhiissttoorryy 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- @@ -6303,15 +6557,16 @@ 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 - +o turning off restricted mode with sseett ++rr or sseett ++oo rreessttrriicctteedd. + +o turning off restricted mode with sseett ++rr or sshhoopptt --uu rree-- + ssttrriicctteedd__sshheellll. These restrictions are enforced after any startup files are read. @@ -6343,6 +6598,9 @@ FFIILLEESS _~_/_._b_a_s_h___l_o_g_o_u_t The individual login shell cleanup file, executed when a login shell exits + _~_/_._b_a_s_h___h_i_s_t_o_r_y + The default value of HHIISSTTFFIILLEE, the file in which bash saves the + command history _~_/_._i_n_p_u_t_r_c Individual _r_e_a_d_l_i_n_e initialization file @@ -6355,9 +6613,10 @@ 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 - _f_t_p_:_/_/_f_t_p_._g_n_u_._o_r_g_/_p_u_b_/_g_n_u_/_b_a_s_h_/. + 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_/ and _h_t_t_p_:_/_/_g_i_t_._s_a_v_a_n_- + _n_a_h_._g_n_u_._o_r_g_/_c_g_i_t_/_b_a_s_h_._g_i_t_/_s_n_a_p_s_h_o_t_/_b_a_s_h_-_m_a_s_t_e_r_._t_a_r_._g_z. 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 @@ -6402,4 +6661,4 @@ BBUUGGSS -GNU Bash 5.1 2020 October 29 BASH(1) +GNU Bash 5.2 2022 September 19 BASH(1) diff --git a/doc/bash.1 b/doc/bash.1 index 5af7d4280..55c562208 100644 --- a/doc/bash.1 +++ b/doc/bash.1 @@ -5,12 +5,12 @@ .\" Case Western Reserve University .\" chet.ramey@case.edu .\" -.\" Last Change: Wed Sep 23 09:28:31 EDT 2020 +.\" Last Change: Mon Sep 19 11:13:21 EDT 2022 .\" .\" bash_builtins, strip all but Built-Ins section .if \n(zZ=1 .ig zZ .if \n(zY=1 .ig zY -.TH BASH 1 "2020 October 29" "GNU Bash 5.1" +.TH BASH 1 "2022 September 19" "GNU Bash 5.2" .\" .\" There's some problem with having a `@' .\" in a tagged paragraph with the BSD man macros. @@ -50,8 +50,8 @@ bash \- GNU Bourne-Again SHell [options] [command_string | file] .SH COPYRIGHT -.if n Bash is Copyright (C) 1989-2020 by the Free Software Foundation, Inc. -.if t Bash is Copyright \(co 1989-2020 by the Free Software Foundation, Inc. +.if n Bash is Copyright (C) 1989-2022 by the Free Software Foundation, Inc. +.if t Bash is Copyright \(co 1989-2022 by the Free Software Foundation, Inc. .SH DESCRIPTION .B Bash is an \fBsh\fR-compatible command language interpreter that @@ -281,7 +281,7 @@ An \fIinteractive\fP shell is one started without non-option arguments (unless \fB\-s\fP is specified) and without the .B \-c -option +option, whose standard input and error are both connected to terminals (as determined by .IR isatty (3)), @@ -420,12 +420,14 @@ No other startup files are read. .PP .B Bash attempts to determine when it is being run with its standard input -connected to a network connection, as when executed by the remote shell -daemon, usually \fIrshd\fP, or the secure shell daemon \fIsshd\fP. +connected to a network connection, as when executed by +the historical remote shell daemon, usually \fIrshd\fP, +or the secure shell daemon \fIsshd\fP. If .B bash -determines it is being run in this fashion, it reads and executes -commands from \fI~/.bashrc\fP, if that file exists and is readable. +determines it is being run non-interactively in this fashion, +it reads and executes commands from \fI~/.bashrc\fP, +if that file exists and is readable. It will not do this if invoked as \fBsh\fP. The .B \-\-norc @@ -511,6 +513,7 @@ command (only \fBin\fP and \fBdo\fP are valid): .if t ! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]] .if t .RE .SH "SHELL GRAMMAR" +This section describes the syntax of the various forms of shell commands. .SS Simple Commands A \fIsimple command\fP is a sequence of optional variable assignments followed by \fBblank\fP-separated words and redirections, and @@ -529,24 +532,24 @@ or \fB|&\fP. The format for a pipeline is: .RS .PP -[\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcommand\fP [ [\fB|\fP\(bv\fB|&\fP] \fIcommand2\fP ... ] +[\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcommand1\fP [ [\fB|\fP\(bv\fB|&\fP] \fIcommand2\fP ... ] .RE .PP The standard output of -.I command +.I command1 is connected via a pipe to the standard input of .IR command2 . This connection is performed before any redirections specified by the -command (see +.IR command1 (see .SM .B REDIRECTION below). -If \fB|&\fP is used, \fIcommand\fP's standard error, in addition to its +If \fB|&\fP is used, \fIcommand1\fP's standard error, in addition to its standard output, is connected to \fIcommand2\fP's standard input through the pipe; it is shorthand for \fB2>&1 |\fP. This implicit redirection of the standard error to the standard output is -performed after any redirections specified by the command. +performed after any redirections specified by \fIcommand1\fP. .PP The return status of a pipeline is the exit status of the last command, unless the \fBpipefail\fP option is enabled. @@ -588,15 +591,18 @@ The variable may be used to specify the format of the time information. .PP -Each command in a pipeline is executed as a separate process (i.e., in a -subshell). +Each command in a multi-command pipeline, +where pipes are created, +is executed in a \fIsubshell\fP, which is a +separate process. See .SM \fBCOMMAND EXECUTION ENVIRONMENT\fP -for a description of a subshell environment. +for a description of subshells and a subshell environment. If the \fBlastpipe\fP option is enabled using the \fBshopt\fP builtin (see the description of \fBshopt\fP below), -the last element of a pipeline may be run by the shell process. +the last element of a pipeline may be run by the shell process +when job control is not active. .SS Lists A \fIlist\fP is a sequence of one or more pipelines separated by one of the operators @@ -671,10 +677,10 @@ the rest of the command by one or more newlines, and may be followed by a newline in place of a semicolon. .TP (\fIlist\fP) -\fIlist\fP is executed in a subshell environment (see +\fIlist\fP is executed in a subshell (see .SM \fBCOMMAND EXECUTION ENVIRONMENT\fP -below). +below for a description of a subshell environment). Variable assignments and builtin commands that affect the shell's environment do not remain in effect after the command completes. The return status is the exit status of @@ -698,8 +704,12 @@ below under .SM .BR "ARITHMETIC EVALUATION" . If the value of the expression is non-zero, the return status is 0; -otherwise the return status is 1. This is exactly equivalent to -\fBlet "\fIexpression\fP"\fR. +otherwise the return status is 1. +The \fIexpression\fP +undergoes the same expansions +as if it were within double quotes, +but double quote characters in \fIexpression\fP are not treated specially +and are removed. .TP \fB[[\fP \fIexpression\fP \fB]]\fP Return a status of 0 or 1 depending on the evaluation of @@ -707,11 +717,12 @@ the conditional expression \fIexpression\fP. Expressions are composed of the primaries described below under .SM .BR "CONDITIONAL EXPRESSIONS" . -Word splitting and pathname expansion are not performed on the words -between the \fB[[\fP and \fB]]\fP; tilde expansion, -parameter and variable expansion, -arithmetic expansion, command substitution, process -substitution, and quote removal are performed. +The words between the \fB[[\fP and \fB]]\fP do not undergo word splitting +and pathname expansion. +The shell performs tilde expansion, parameter and +variable expansion, arithmetic expansion, command substitution, process +substitution, and quote removal on those words +(the expansions that would occur if the words were enclosed in double quotes). Conditional operators such as \fB\-f\fP must be unquoted to be recognized as primaries. .if t .sp 0.5 @@ -749,12 +760,14 @@ If the .B nocasematch shell option is enabled, the match is performed without regard to the case of alphabetic characters. -Any part of the pattern may be quoted to force the quoted portion -to be matched as a string. -Bracket expressions in regular expressions must be treated carefully, -since normal quoting characters lose their meanings between brackets. +If any part of the pattern is quoted, the quoted portion is matched literally. +This means every character in the quoted portion matches itself, +instead of having any special pattern matching meaning. If the pattern is stored in a shell variable, quoting the variable -expansion forces the entire pattern to be matched as a string. +expansion forces the entire pattern to be matched literally. +Treat bracket expressions in regular expressions carefully, +since normal quoting and pattern characters lose their meanings +between brackets. .if t .sp 0.5 .if n .sp 1 The pattern will match if it matches any part of the string. @@ -778,6 +791,11 @@ indices. The element of .B BASH_REMATCH with index \fIn\fP is the portion of the string matching the \fIn\fPth parenthesized subexpression. +Bash sets +.SM +.B BASH_REMATCH +in the global scope; declaring it as a local variable will lead to +unexpected results. .if t .sp 0.5 .if n .sp 1 Expressions may be combined using the following operators, listed @@ -846,21 +864,24 @@ that is executed, or false if any of the expressions is invalid. .TP \fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP The list of words following \fBin\fP is expanded, generating a list -of items. The set of expanded words is printed on the standard +of items, and the set of expanded words is printed on the standard error, each preceded by a number. If the \fBin\fP \fIword\fP is omitted, the positional parameters are printed (see .SM .B PARAMETERS -below). The +below). +.B select +then displays the .SM .B PS3 -prompt is then displayed and a line read from the standard input. +prompt and reads a line from the standard input. If the line consists of a number corresponding to one of the displayed words, then the value of .I name -is set to that word. If the line is empty, the words and prompt -are displayed again. If EOF is read, the command completes. Any -other value read causes +is set to that word. +If the line is empty, the words and prompt are displayed again. +If EOF is read, the \fBselect\fP command completes and returns 1. +Any other value read causes .I name to be set to null. The line read is saved in the variable .SM @@ -888,7 +909,7 @@ expansion, parameter and variable expansion, arithmetic expansion, command substitution, process substitution and quote removal. Each \fIpattern\fP examined is expanded using tilde expansion, parameter and variable expansion, arithmetic expansion, -command substitution, and process substitution. +command substitution, process substitution, and quote removal. If the .B nocasematch shell option is enabled, the match is performed without regard to the case @@ -944,17 +965,36 @@ A coprocess is executed asynchronously in a subshell, as if the command had been terminated with the \fB&\fP control operator, with a two-way pipe established between the executing shell and the coprocess. .PP -The format for a coprocess is: +The syntax for a coprocess is: .RS .PP \fBcoproc\fP [\fINAME\fP] \fIcommand\fP [\fIredirections\fP] .RE .PP This creates a coprocess named \fINAME\fP. +\fIcommand\fP may be either a simple command or a compound +command (see above). +\fINAME\fP is a shell variable name. If \fINAME\fP is not supplied, the default name is \fBCOPROC\fP. -\fINAME\fP must not be supplied if \fIcommand\fP is a \fIsimple -command\fP (see above); otherwise, it is interpreted as the first word -of the simple command. +.PP +The recommended form to use for a coprocess is +.RS +.PP +\fBcoproc\fP \fINAME\fP { \fIcommand\fP [\fIredirections\fP]; } +.RE +.PP +This form is recommended because simple commands result in the coprocess +always being named \fBCOPROC\fP, and it is simpler to use and more complete +than the other compound commands. +.PP +If \fIcommand\fP is a compound command, \fINAME\fP is optional. The +word following \fBcoproc\fP determines whether that word is interpreted +as a variable name: it is interpreted as \fINAME\fP if it is not a +reserved word that introduces a compound command. +If \fIcommand\fP is a simple command, \fINAME\fP is not allowed; this +is to avoid confusion between \fINAME\fP and the first word of the simple +command. +.PP When the coprocess is executed, the shell creates an array variable (see .B Arrays below) named \fINAME\fP in the context of the executing shell. @@ -975,6 +1015,7 @@ The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. Other than those created to execute command and process substitutions, the file descriptors are not available in subshells. +.PP The process ID of the shell spawned to execute the coprocess is available as the value of the variable \fINAME\fP_PID. The \fBwait\fP @@ -1000,9 +1041,9 @@ The \fIbody\fP of the function is the compound command .I compound\-command (see \fBCompound Commands\fP above). That command is usually a \fIlist\fP of commands between { and }, but -may be any command listed under \fBCompound Commands\fP above, -with one exception: If the \fBfunction\fP reserved word is used, but the -parentheses are not supplied, the braces are required. +may be any command listed under \fBCompound Commands\fP above. +If the \fBfunction\fP reserved word is used, but the +parentheses are not supplied, the braces are recommended. \fIcompound\-command\fP is executed whenever \fIfname\fP is specified as the name of a simple command. When in \fIposix mode\fP, \fIfname\fP must be a valid shell \fIname\fP @@ -1116,10 +1157,11 @@ quotes (see .B PARAMETERS below). .PP -Words of the form \fB$\fP\(aq\fIstring\fP\(aq are treated specially. The -word expands to \fIstring\fP, with backslash-escaped characters replaced -as specified by the ANSI C standard. Backslash escape sequences, if -present, are decoded as follows: +Character sequences of the form \fB$\fP\(aq\fIstring\fP\(aq are treated +as a special variant of single quotes. +The sequence expands to \fIstring\fP, with backslash-escaped characters +in \fIstring\fP replaced as specified by the ANSI C standard. +Backslash escape sequences, if present, are decoded as follows: .RS .PD 0 .TP @@ -1187,14 +1229,23 @@ not been present. .PP A double-quoted string preceded by a dollar sign (\fB$\fP\(dq\fIstring\fP\(dq) will cause the string to be translated according to the current locale. -The \fIgettext\fP infrastructure performs the message catalog lookup and -translation, using the \fBLC_MESSAGES\fP and \fBTEXTDOMAIN\fP shell -variables. +The \fIgettext\fP infrastructure performs the lookup and +translation, using the \fBLC_MESSAGES\fP, \fBTEXTDOMAINDIR\fP, +and \fBTEXTDOMAIN\fP shell variables. If the current locale is \fBC\fP or \fBPOSIX\fP, -or if there are no translations available, +if there are no translations available, +or if the string is not translated, the dollar sign is ignored. -If the string is translated and replaced, the replacement is -double-quoted. +This is a form of double quoting, so the string remains double-quoted +by default, whether or not it is translated and replaced. +If the \fBnoexpand_translation\fP option is enabled +using the \fBshopt\fP builtin, +translated strings are single-quoted instead of double-quoted. +See the description of +.B shopt +below under +.SM +.BR SHELL BUILTIN COMMANDS . .SH PARAMETERS A .I parameter @@ -1250,10 +1301,7 @@ is evaluated as an arithmetic expression even if the $((...)) expansion is not used (see .B "Arithmetic Expansion" below). -Word splitting is not performed, with the exception -of \fB"$@"\fP as explained below under -.BR "Special Parameters" . -Pathname expansion is not performed. +Word splitting and pathname expansion are not performed. Assignment statements may also appear as arguments to the .BR alias , .BR declare , @@ -1272,7 +1320,7 @@ to a shell variable or array index, the += operator can be used to append to or add to the variable's previous value. This includes arguments to builtin commands such as \fBdeclare\fP that accept assignment statements (\fIdeclaration\fP commands). -When += is applied to a variable for which the \fIinteger\fP attribute has been +When += is applied to a variable for which the \fBinteger\fP attribute has been set, \fIvalue\fP 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 @@ -1407,7 +1455,7 @@ builtin command, or those set by the shell itself option). .TP .B $ -Expands to the process ID of the shell. In a () subshell, it +Expands to the process ID of the shell. In a subshell, it expands to the process ID of the current shell, not the subshell. .TP @@ -1926,6 +1974,16 @@ If is unset, it loses its special properties, even if it is subsequently reset. .TP +.B READLINE_ARGUMENT +Any numeric argument given to a readline command that was defined using +.if t \f(CWbind -x\fP +.if n "bind -x" +(see +.SM +.B "SHELL BUILTIN COMMANDS" +below) +when it was invoked. +.TP .B READLINE_LINE The contents of the .B readline @@ -1968,14 +2026,14 @@ builtin command when no arguments are supplied. .TP .B SECONDS Each time this parameter is -referenced, the number of seconds since shell invocation is returned. If a -value is assigned to +referenced, it expands to the number of seconds since shell invocation. +If a value is assigned to .SM .BR SECONDS , the value returned upon subsequent references is the number of seconds since the assignment plus the value assigned. -The number of seconds at shell invocation and the current time is always +The number of seconds at shell invocation and the current time are always determined by querying the system clock. If .SM @@ -2038,7 +2096,7 @@ below. The value is used to set the shell's compatibility level. See .SM -.B SHELL COMPATIBILITY MODE +.B "SHELL COMPATIBILITY MODE" below for a description of the various compatibility levels and their effects. The value may be a decimal number (e.g., 4.2) or an integer (e.g., 42) @@ -2051,7 +2109,7 @@ compatibility level to the default for the current version. The valid values correspond to the compatibility levels described below under .SM -.BR BSHELL COMPATIBILITY MODE . +.BR "SHELL COMPATIBILITY MODE" . For example, 4.2 and 42 are valid values that correspond to the \fBcompat42\fP \fBshopt\fP option and set the compatibility level to 42. @@ -2728,6 +2786,12 @@ interpreted as relative to one greater than the maximum index of \fIname\fP, so negative indices count back from the end of the array, and an index of \-1 references the last element. .PP +The += operator will append to an array variable when assigning +using the compound assignment syntax; see +.SM +.B PARAMETERS +above. +.PP Any element of an array may be referenced using ${\fIname\fP[\fIsubscript\fP]}. The braces are required to avoid conflicts with pathname expansion. If @@ -2782,9 +2846,15 @@ destroys the array element at index \fIsubscript\fP, for both indexed and associative arrays. Negative subscripts to indexed arrays are interpreted as described above. Unsetting the last element of an array variable does not unset the variable. -\fBunset\fP \fIname\fP, where \fIname\fP is an array, or +\fBunset\fP \fIname\fP, where \fIname\fP is an array, +removes the entire array. \fBunset\fP \fIname\fP[\fIsubscript\fP], where -\fIsubscript\fP is \fB*\fP or \fB@\fP, removes the entire array. +\fIsubscript\fP is \fB*\fP or \fB@\fP, behaves differently depending on +whether \fIname\fP is an indexed or associative array. +If \fIname\fP is an associative array, this unsets the element with +subscript \fB*\fP or \fB@\fP. +If \fIname\fP is an indexed array, unset removes all of the elements but +does not remove the array itself. .PP When using a variable name with a subscript as an argument to a command, such as with \fBunset\fP, without using the word expansion syntax @@ -2875,7 +2945,7 @@ For example, a\fB{\fPd,c,b\fB}\fPe expands into `ade ace abe'. .PP A sequence expression takes the form \fB{\fP\fIx\fP\fB..\fP\fIy\fP\fB[..\fP\fIincr\fP\fB]}\fP, -where \fIx\fP and \fIy\fP are either integers or single characters, +where \fIx\fP and \fIy\fP are either integers or single letters, and \fIincr\fP, an optional increment, is an integer. When integers are supplied, the expression expands to each number between \fIx\fP and \fIy\fP, inclusive. @@ -2884,10 +2954,11 @@ same width. When either \fIx\fP or \fPy\fP begins with a zero, the shell attempts to force all generated terms to contain the same number of digits, zero-padding where necessary. -When characters are supplied, the expression expands to each character +When letters are supplied, the expression expands to each character lexicographically between \fIx\fP and \fIy\fP, inclusive, using the default C locale. -Note that both \fIx\fP and \fIy\fP must be of the same type. +Note that both \fIx\fP and \fIy\fP must be of the same type +(integer or letter). When the increment is supplied, it is used as the difference between each term. The default increment is 1 or \-1 as appropriate. .PP @@ -3117,7 +3188,7 @@ ${\fIparameter\fP\fB:\fP\fIoffset\fP\fB:\fP\fIlength\fP} \fBSubstring Expansion\fP. Expands to up to \fIlength\fP characters of the value of \fIparameter\fP starting at the character specified by \fIoffset\fP. -If \fIparameter\fP is \fB@\fP, an indexed array subscripted by +If \fIparameter\fP is \fB@\fP or \fB*\fP, an indexed array subscripted by \fB@\fP or \fB*\fP, or an associative array name, the results differ as described below. If \fIlength\fP is omitted, expands to the substring of the value of @@ -3140,8 +3211,8 @@ a number of characters, and the expansion is the characters between Note that a negative offset must be separated from the colon by at least one space to avoid being confused with the \fB:-\fP expansion. .sp 1 -If \fIparameter\fP is \fB@\fP, the result is \fIlength\fP positional -parameters beginning at \fIoffset\fP. +If \fIparameter\fP is \fB@\fP or \fB*\fP, the result is \fIlength\fP +positional parameters beginning at \fIoffset\fP. A negative \fIoffset\fP is taken relative to one greater than the greatest positional parameter, so an offset of \-1 evaluates to the last positional parameter. @@ -3289,22 +3360,58 @@ the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list. .TP ${\fIparameter\fP\fB/\fP\fIpattern\fP\fB/\fP\fIstring\fP} +.PD 0 +.TP +${\fIparameter\fP\fB//\fP\fIpattern\fP\fB/\fP\fIstring\fP} +.TP +${\fIparameter\fP\fB/#\fP\fIpattern\fP\fB/\fP\fIstring\fP} +.TP +${\fIparameter\fP\fB/%\fP\fIpattern\fP\fB/\fP\fIstring\fP} +.PD \fBPattern substitution\fP. The \fIpattern\fP is expanded to produce a pattern just as in -pathname expansion, +pathname expansion. \fIParameter\fP is expanded and the longest match of \fIpattern\fP against its value is replaced with \fIstring\fP. +\fIstring\fP undergoes tilde expansion, parameter and variable expansion, +arithmetic expansion, command and process substitution, and quote removal. The match is performed using the rules described under .B Pattern Matching below. -If \fIpattern\fP begins with \fB/\fP, all matches of \fIpattern\fP are -replaced with \fIstring\fP. Normally only the first match is replaced. -If \fIpattern\fP begins with \fB#\fP, it must match at the beginning -of the expanded value of \fIparameter\fP. -If \fIpattern\fP begins with \fB%\fP, it must match at the end -of the expanded value of \fIparameter\fP. -If \fIstring\fP is null, matches of \fIpattern\fP are deleted +In the first form above, only the first match is replaced. +If there are two slashes separating \fIparameter\fP and \fIpattern\fP +(the second form above), all matches of \fIpattern\fP are +replaced with \fIstring\fP. +If \fIpattern\fP is preceded by \fB#\fP (the third form above), +it must match at the beginning of the expanded value of \fIparameter\fP. +If \fIpattern\fP is preceded by \fB%\fP (the fourth form above), +it must match at the end of the expanded value of \fIparameter\fP. +If the expansion of \fIstring\fP is null, +matches of \fIpattern\fP are deleted. +If \fIstring\fP is null, +matches of \fIpattern\fP are deleted and the \fB/\fP following \fIpattern\fP may be omitted. +.sp 1 +If the \fBpatsub_replacement\fP shell option is enabled using \fBshopt\fP, +any unquoted instances of \fB&\fP in \fIstring\fP are replaced with the +matching portion of \fIpattern\fP. +.sp 1 +Quoting any part of \fIstring\fP inhibits replacement in the +expansion of the quoted portion, including replacement strings stored +in shell variables. +Backslash will escape \fB&\fP in \fIstring\fP; the backslash is removed +in order to permit a literal \fB&\fP in the replacement string. +Backslash can also be used to escape a backslash; \fB\e\e\fP results in +a literal backslash in the replacement. +Users should take care if \fIstring\fP is double-quoted to avoid +unwanted interactions between the backslash and double-quoting, since +backslash has special meaning within double quotes. +Pattern substitution performs the check for unquoted \fB&\fP after +expanding \fIstring\fP; +shell programmers should quote any occurrences of \fB&\fP +they want to be taken literally in the replacement +and ensure any instances of \fB&\fP they want to be replaced are unquoted. +.sp 1 If the .B nocasematch shell option is enabled, the match is performed without regard to the case @@ -3394,7 +3501,7 @@ format that can be reused as input. .TP .B E The expansion is a string that is the value of \fIparameter\fP with backslash -escape sequences expanded as with the \fB$'...'\fP quoting mechanism. +escape sequences expanded as with the \fB$\(aq...\(aq\fP quoting mechanism. .TP .B P The expansion is a string that is the result of expanding the value of @@ -3414,6 +3521,10 @@ indexed and associative arrays as a sequence of quoted key-value pairs .B a The expansion is a string consisting of flag values representing \fIparameter\fP's attributes. +.TP +.B k +Like the K transformation, but expands the keys and values of +indexed and associative arrays to separate words after word splitting. .PD .PP If @@ -3483,8 +3594,10 @@ and the substitution of the result. The format for arithmetic expansion is: .PP The .I expression -is treated as if it were within double quotes, but a double quote -inside the parentheses is not treated specially. +undergoes the same expansions +as if it were within double quotes, +but double quote characters in \fIexpression\fP are not treated specially +and are removed. All tokens in the expression undergo parameter and variable expansion, command substitution, and quote removal. The result is treated as the arithmetic expression to be evaluated. @@ -3648,14 +3761,23 @@ at the start of a name or immediately following a slash must be matched explicitly, unless the shell option .B dotglob is set. -The filenames +In order to match the filenames .B ``.'' and -.B ``..'' -must always be matched explicitly, even if +.BR ``..'' , +the pattern must begin with ``.'' (for example, ``.?''), +even if .B dotglob is set. -In other cases, the +If the +.B globskipdots +shell option is enabled, the filenames +.B ``.'' +and +.BR ``..'' +are never matched, even if the pattern begins with a +.BR ``.'' . +When not matching pathnames, the .B ``.'' character is not treated specially. When matching a pathname, the slash character must always be @@ -3672,6 +3794,7 @@ below under for a description of the .BR nocaseglob , .BR nullglob , +.BR globskipdots , .BR failglob , and .B dotglob @@ -3763,7 +3886,9 @@ is a or a .B ^ then any character not enclosed is matched. -The sorting order of characters in range expressions is determined by +The sorting order of characters in range expressions, +and the characters included in the range, +are determined by the current locale and the values of the .SM .B LC_COLLATE @@ -3833,7 +3958,7 @@ the syntax \fB[.\fP\fIsymbol\fP\fB.]\fP matches the collating symbol .PD .PP If the \fBextglob\fP shell option is enabled using the \fBshopt\fP -builtin, several extended pattern matching operators are recognized. +builtin, the shell recognizes several extended pattern matching operators. In the following description, a \fIpattern-list\fP is a list of one or more patterns separated by a \fB|\fP. Composite patterns may be formed using one or more of the following @@ -3859,6 +3984,22 @@ Matches anything except one of the given patterns .RE .PD .PP +The\fBextglob\fP option changes the behavior of the parser, since the +parentheses are normally treated as operators with syntactic meaning. +To ensure that extended matching patterns are parsed correctly, make sure +that \fBextglob\fP is enabled before parsing constructs containing the +patterns, including shell functions and command substitutions. +.PP +When matching filenames, the \fBdotglob\fP shell option determines +the set of filenames that are tested: +when \fBdotglob\fP is enabled, the set of filenames includes all files +beginning with ``.'', but ``.'' and ``..'' must be matched by a +pattern or sub-pattern that begins with a dot; +when it is disabled, the set does not +include any filenames beginning with ``.'' unless the pattern +or sub-pattern begins with a ``.''. +As above, ``.'' only has a special meaning when matching filenames. +.PP Complicated extended pattern matching against long strings is slow, especially when the patterns contain alternations and the strings contain multiple matches. @@ -3876,7 +4017,7 @@ Before a command is executed, its input and output may be .I redirected using a special notation interpreted by the shell. -Redirection allows commands' file handles to be +\fIRedirection\fP allows commands' file handles to be duplicated, opened, closed, made to refer to different files, and can change the files the command reads from and writes to. @@ -3900,7 +4041,8 @@ by {\fIvarname\fP}, the value of \fIvarname\fP defines the file descriptor to close. If {\fIvarname\fP} is supplied, the redirection persists beyond the scope of the command, allowing the shell programmer to manage -the file descriptor himself. +the file descriptor's lifetime manually. +The \fBvarredir_close\fP shell option manages this behavior. .PP In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is @@ -4287,7 +4429,7 @@ command, and removed with the command. .PP There is no mechanism for using arguments in the replacement text. -If arguments are needed, a shell function should be used (see +If arguments are needed, use a shell function (see .SM .B FUNCTIONS below). @@ -4379,11 +4521,22 @@ been enabled. .PP Variables local to the function may be declared with the .B local -builtin command. Ordinarily, variables and their values +builtin command (\fIlocal variables\fP). +Ordinarily, variables and their values are shared between the function and its caller. If a variable is declared \fBlocal\fP, the variable's visible scope is restricted to that function and its children (including the functions it calls). +.PP +In the following description, the \fIcurrent scope\fP is a currently- +executing function. +Previous scopes consist of that function's caller and so on, +back to the "global" scope, where the shell is not executing +any shell function. +Consequently, a local variable at the current scope is a variable +declared using the \fBlocal\fP or \fBdeclare\fP builtins in the +function that is currently executing. +.PP Local variables "shadow" variables with the same name declared at previous scopes. For instance, a local variable declared in a function @@ -4414,11 +4567,13 @@ variable is local to the current scope, \fBunset\fP will unset it; otherwise the unset will refer to the variable found in any calling scope as described above. If a variable at the current local scope is unset, it will remain so +(appearing as unset) until it is reset in that scope or until the function returns. Once the function returns, any instance of the variable at a previous scope will become visible. If the unset acts on a variable at a previous scope, any instance of a -variable with that name that had been shadowed will become visible. +variable with that name that had been shadowed will become visible +(see below how the \fBlocalvar_unset\fP shell option changes this behavior). .PP The \fBFUNCNEST\fP variable, if set to a numeric value greater than 0, defines a maximum function nesting level. Function @@ -4453,7 +4608,8 @@ or will list the function names only (and optionally the source file and line number, if the \fBextdebug\fP shell option is enabled). -Functions may be exported so that subshells +Functions may be exported so that child shell processes +(those created when executing a separate shell invocation) automatically have them defined with the .B \-f option to the @@ -4777,7 +4933,11 @@ expansion, parameter expansion, command substitution, arithmetic expansion, and quote removal before being assigned to the variable. .PP If no command name results, the variable assignments affect the current -shell environment. Otherwise, the variables are added to the environment +shell environment. +In the case of such a command (one that consists only of assignment +statements and redirections), assignment statements are performed before +redirections. +Otherwise, the variables are added to the environment of the executed command and do not affect the current shell environment. 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. @@ -4842,8 +5002,10 @@ 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 \fIshell script\fP, a file -containing shell commands. A subshell is spawned to execute -it. This subshell reinitializes itself, so +containing shell commands, and the shell creates a +new instance of itself +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 @@ -4899,8 +5061,8 @@ of \fB$$\fP, and the value of When a simple command other than a builtin or shell function is to be executed, it is invoked in a separate execution environment that consists of -the following. Unless otherwise noted, the values are inherited -from the shell. +the following. +Unless otherwise noted, the values are inherited from the shell. .if n .sp 1 .IP \(bu the shell's open files, plus any modifications and additions specified @@ -4919,6 +5081,8 @@ shell's parent, and traps ignored by the shell are ignored A command invoked in this separate environment cannot affect the shell's execution environment. .PP +A \fIsubshell\fP is a copy of the shell process. +.PP Command substitution, commands grouped with parentheses, and asynchronous commands are invoked in a subshell environment that is a duplicate of the shell environment, @@ -5020,6 +5184,9 @@ while they execute. All builtins return an exit status of 2 to indicate incorrect usage, generally invalid options or missing arguments. .PP +The exit status of the last command is available in the special +parameter $?. +.PP \fBBash\fP 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 \fBexit\fP builtin @@ -5111,6 +5278,63 @@ When \fBbash\fP is waiting for an asynchronous command via the \fBwait\fP builtin, the reception of a signal for which a trap has been set will cause the \fBwait\fP builtin to return immediately with an exit status greater than 128, immediately after which the trap is executed. +.PP +When job control is not enabled, and \fBbash\fP is waiting for a foreground +command to complete, the shell receives keyboard-generated signals +such as +.SM +.B SIGINT +(usually generated by \fB^C\fP) that users commonly intend to send +to that command. +This happens because the shell and the command are in the +same process group as the terminal, and \fB^C\fP sends +.SM +.B SIGINT +to all processes in that process group. +.PP +When \fBbash\fP is running without job control enabled and receives +.SM +.B SIGINT +while waiting for a foreground command, it waits until that foreground +command terminates and then decides what to do about the +.SM +.BR SIGINT : +.IP 1. +If the command terminates due to the +.SM +.BR SIGINT , +\fBbash\fP concludes +that the user meant to end the entire script, and acts on the +.SM +.B SIGINT +(e.g., by running a +.SM +.B SIGINT +trap or exiting itself); +.IP 2. +If the command does not terminate due to +.SM +.BR SIGINT , +the program handled the +.SM +.B SIGINT +itself and did not treat it as a fatal signal. +In that case, \fBbash\fP does not treat +.SM +.B SIGINT +as a fatal signal, either, instead assuming that the +.SM +.B SIGINT +was used as part of the program's normal operation +(e.g., emacs uses it to abort editing +commands) or deliberately discarded. +However, \fBbash\fP will run any +trap set on +.SM +.BR SIGINT , +as it does with any other trapped signal it +receives while it is waiting for the foreground command to +complete, for compatibility. .SH "JOB CONTROL" .I Job control refers to the ability to selectively stop (\fIsuspend\fP) @@ -5375,7 +5599,8 @@ the version of \fBbash\fP (e.g., 2.00) the release of \fBbash\fP, version + patch level (e.g., 2.00.0) .TP .B \ew -the current working directory, with +the value of the \fBPWD\fP shell variable (\fB$PWD\fP), +with .SM .B $HOME abbreviated with a tilde @@ -5385,7 +5610,8 @@ abbreviated with a tilde variable) .TP .B \eW -the basename of the current working directory, with +the basename of \fB$PWD\fP, +with .SM .B $HOME abbreviated with a tilde @@ -5731,6 +5957,30 @@ The variables and their default values are: .PP .PD 0 .TP +.B active\-region\-start\-color +A string variable that controls the text color and background when displaying +the text in the active region (see the description of +\fBenable\-active\-region\fP below). +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal before displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that puts the terminal in standout mode, +as obtained from the terminal's terminfo description. +A sample value might be \f(CW"\ee[01;33m"\fP. +.TP +.B active\-region\-end\-color +A string variable that "undoes" the effects of \fBactive\-region\-start\-color\fP +and restores "normal" terminal display appearance after displaying text +in the active region. +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal after displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that restores the terminal from standout mode, +as obtained from the terminal's terminfo description. +A sample value might be \f(CW"\ee[0m"\fP. +.TP .B bell\-style (audible) Controls what happens when readline wants to ring the terminal bell. If set to \fBnone\fP, readline never rings the bell. If set to @@ -5751,6 +6001,9 @@ If set to \fBOn\fP, when listing completions, readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the value of the \fBLS_COLORS\fP environment variable. +If there is a color definition in \fB$LS_COLORS\fP for the custom suffix +"readline-colored-completion-prefix", readline uses this color for +the common prefix instead of its default. .TP .B colored\-stats (Off) If set to \fBOn\fP, readline displays possible completions using different @@ -5800,6 +6053,8 @@ If the number of possible completions is greater than or equal to the value of this variable, readline will ask whether or not the user wishes to view them; otherwise they are simply listed on the terminal. +A zero value means readline should never ask; negative values are +treated as zero. .TP .B convert\-meta (On) If set to \fBOn\fP, readline will convert characters with the @@ -5808,6 +6063,8 @@ by stripping the eighth bit and prefixing an escape character (in effect, using escape as the \fImeta prefix\fP). The default is \fIOn\fP, but readline will set it to \fIOff\fP if the locale contains eight-bit characters. +This variable is dependent on the \fBLC_CTYPE\fP locale category, and +may change if the locale is changed. .TP .B disable\-completion (Off) If set to \fBOn\fP, readline will inhibit word completion. Completion @@ -5838,12 +6095,25 @@ Use the \e1 and \e2 escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. .TP +.B enable\-active\-region (On) +The \fIpoint\fP is the current cursor position, and \fImark\fP refers +to a saved cursor position. +The text between the point and mark is referred to as the \fIregion\fP. +When this variable is set to \fIOn\fP, readline allows certain commands +to designate the region as \fIactive\fP. +When the region is active, readline highlights the text in the region using +the value of the \fBactive\-region\-start\-color\fP, which defaults to the +string that enables +the terminal's standout mode. +The active region shows the text inserted by bracketed-paste and any +matching text found by incremental and non-incremental history searches. +.TP .B enable\-bracketed\-paste (On) -When set to \fBOn\fP, readline will configure the terminal in a way -that will enable it to insert each paste into the editing buffer as a -single string of characters, instead of treating each character as if -it had been read from the keyboard. This can prevent pasted characters -from being interpreted as editing commands. +When set to \fBOn\fP, readline configures the terminal to insert each +paste into the editing buffer as a single string of characters, instead +of treating each character as if it had been read from the keyboard. +This prevents readline from executing any editing commands bound to key +sequences appearing in the pasted text. .TP .B enable\-keypad (Off) When set to \fBOn\fP, readline will try to enable the application @@ -5889,6 +6159,8 @@ regardless of what the terminal claims it can support. The name is a synonym for this variable. The default is \fIOff\fP, but readline will set it to \fIOn\fP if the locale contains eight-bit characters. +This variable is dependent on the \fBLC_CTYPE\fP locale category, and +may change if the locale is changed. .TP .B isearch\-terminators (``C\-[C\-J'') The string of characters that should terminate an incremental @@ -5952,6 +6224,8 @@ eighth bit set directly rather than as a meta-prefixed escape sequence. The default is \fIOff\fP, but readline will set it to \fIOn\fP if the locale contains eight-bit characters. +This variable is dependent on the \fBLC_CTYPE\fP locale category, and +may change if the locale is changed. .TP .B page\-completions (On) If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager @@ -6205,14 +6479,14 @@ Words are delimited by non-quoted shell metacharacters. .B previous\-screen\-line Attempt to move point to the same physical screen column on the previous physical screen line. This will not have the desired effect if the current -Readline line does not take up more than one physical line or if point is not +readline line does not take up more than one physical line or if point is not greater than the length of the prompt plus the screen width. .TP .B next\-screen\-line Attempt to move point to the same physical screen column on the next physical screen line. This will not have the desired effect if the current -Readline line does not take up more than one physical line or if the length -of the current Readline line is not greater than the length of the prompt +readline line does not take up more than one physical line or if the length +of the current readline line is not greater than the length of the prompt plus the screen width. .TP .B clear\-display (M\-C\-l) @@ -6256,6 +6530,18 @@ Move to the first line in the history. Move to the end of the input history, i.e., the line currently being entered. .TP +.B operate\-and\-get\-next (C\-o) +Accept the current line for execution and fetch the next line +relative to the current line from the history for editing. +A numeric argument, if supplied, specifies the history entry to use instead +of the current line. +.TP +.B +fetch\-history +With a numeric argument, fetch that entry from the history list +and make it the current line. +Without an argument, move back to the first entry in the history list. +.TP .B reverse\-search\-history (C\-r) Search backward starting at the current line and moving `up' through the history as necessary. This is an incremental search. @@ -6355,12 +6641,6 @@ Perform history and alias expansion on the current line. .B insert\-last\-argument (M\-.\^, M\-_\^) A synonym for \fByank\-last\-arg\fP. .TP -.B operate\-and\-get\-next (C\-o) -Accept the current line for execution and fetch the next line -relative to the current line from the history for editing. -A numeric argument, if supplied, specifies the history entry to use instead -of the current line. -.TP .B edit\-and\-execute\-command (C\-x C\-e) Invoke an editor on the current command line, and execute the result as shell commands. @@ -6379,7 +6659,7 @@ The character indicating end-of-file as set, for example, by .if t \f(CWstty\fP. .if n ``stty''. If this character is read when there are no characters -on the line, and point is at the beginning of the line, Readline +on the line, and point is at the beginning of the line, readline interprets it as the end of input and returns .SM .BR EOF . @@ -6704,11 +6984,11 @@ the saved position, and the old cursor position is saved as the mark. .TP .B character\-search (C\-]) A character is read and point is moved to the next occurrence of that -character. A negative count searches for previous occurrences. +character. A negative argument searches for previous occurrences. .TP .B character\-search\-backward (M\-C\-]) A character is read and point is moved to the previous occurrence of that -character. A negative count searches for subsequent occurrences. +character. A negative argument searches for subsequent occurrences. .TP .B skip\-csi\-sequence Read enough characters to consume a multi-key sequence such as those @@ -6735,6 +7015,11 @@ a shell comment. If a numeric argument causes the comment character to be removed, the line will be executed by the shell. .TP +.B spell\-correct\-word (C\-x s) +Perform spelling correction on the current word, treating it as a directory +or filename, in the same way as the \fBcdspell\fP shell option. +Word boundaries are the same as those used by \fBshell\-forward\-word\fP. +.TP .B glob\-complete\-word (M\-g) The word before point is treated as a pattern for pathname expansion, with an asterisk implicitly appended. This pattern is used to @@ -7426,13 +7711,14 @@ does not contain a slash, filenames in .SM .B PATH are used to find the directory containing -.IR filename . +.IR filename , +but \fIfilename\fP does not need to be executable. The file searched for in .SM .B PATH need not be executable. -When \fBbash\fP is not in \fIposix mode\fP, the current directory is -searched if no file is found in +When \fBbash\fP is not in \fIposix mode\fP, it searches +the current directory if no file is found in .SM .BR PATH . If the @@ -7446,12 +7732,12 @@ is not searched. If any \fIarguments\fP are supplied, they become the positional parameters when \fIfilename\fP is executed. Otherwise the positional parameters are unchanged. -If the \fB\-T\fP option is enabled, \fBsource\fP inherits any trap on +If the \fB\-T\fP option is enabled, \fB.\fP inherits any trap on \fBDEBUG\fP; if it is not, any \fBDEBUG\fP trap string is saved and -restored around the call to \fBsource\fP, and \fBsource\fP unsets the +restored around the call to \fB.\fP, and \fB.\fP unsets the \fBDEBUG\fP trap while it executes. If \fB\-T\fP is not set, and the sourced file changes -the \fBDEBUG\fP trap, the new value is retained when \fBsource\fP completes. +the \fBDEBUG\fP trap, the new value is retained when \fB.\fP completes. The return status is the status of the last command exited within the script (0 if no commands are executed), and false if .I filename @@ -7496,6 +7782,8 @@ or was started without job control. \fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIfunction\-name\fP .TP \fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIreadline\-command\fP +.TP +\fBbind\fP \fIreadline-command-line\fP .PD Display current .B readline @@ -7504,7 +7792,9 @@ key and function bindings, bind a key sequence to a function or macro, or set a .B readline variable. -Each non-option argument is a command as it would appear in +Each non-option argument is a command as it would appear in a +.B readline +initialization file such as .IR .inputrc , but each binding or command must be passed as a separate argument; e.g., '"\eC\-x\eC\-r": re\-read\-init\-file'. @@ -7577,6 +7867,11 @@ and .B READLINE_MARK variables to the current location of the insertion point and the saved insertion point (the mark), respectively. +The shell assigns any numeric argument the user supplied to the +.SM +.B READLINE_ARGUMENT +variable. +If there was no argument, that variable is not set. If the executed command changes the value of any of .SM .BR READLINE_LINE , @@ -7643,7 +7938,6 @@ if \fIdir\fP is not supplied, the value of the .SM .B HOME shell variable is the default. -Any additional arguments following \fIdir\fP are ignored. The variable .SM .B CDPATH @@ -7702,6 +7996,10 @@ is used, or if \fB\-\fP is the first argument, and the directory change is successful, the absolute pathname of the new working directory is written to the standard output. +If the directory change is successful, \fBcd\fP sets the value of the +\fBPWD\fP environment variable to the new directory name, and sets the +\fBOLDPWD\fP environment variable to the value of the current working +directory before the change. The return value is true if the directory was successfully changed; false otherwise. .TP @@ -7800,7 +8098,9 @@ If any of \fB\-D\fP, \fB\-E\fP, or \fB\-I\fP are supplied, any other specified by the option. .sp 1 The process of applying these completion specifications when word completion -is attempted is described above under \fBProgrammable Completion\fP. +is attempted is described +.ie \n(zZ=1 in \fIbash(1)\fP. +.el above under \fBProgrammable Completion\fP. .sp 1 Other options, if specified, have the following meanings. The arguments to the \fB\-G\fP, \fB\-W\fP, and \fB\-X\fP options @@ -7935,6 +8235,7 @@ Names of all shell variables. May also be specified as \fB\-v\fP. \fB\-C\fP \fIcommand\fP \fIcommand\fP is executed in a subshell environment, and its output is used as the possible completions. +Arguments are passed as with the \fB\-F\fP option. .TP 8 \fB\-F\fP \fIfunction\fP The shell function \fIfunction\fP is executed in the current shell @@ -8088,12 +8389,14 @@ to give variables attributes: .B \-a Each \fIname\fP is an indexed array variable (see .B Arrays -above). +.ie \n(zZ=1 in \fIbash(1)\fP). +.el above). .TP .B \-A Each \fIname\fP is an associative array variable (see .B Arrays -above). +.ie \n(zZ=1 in \fIbash(1)\fP). +.el above). .TP .B \-f Use function names only. @@ -8102,7 +8405,9 @@ Use function names only. The variable is treated as an integer; arithmetic evaluation (see .SM .B "ARITHMETIC EVALUATION" -above) is performed when the variable is assigned a value. +.ie \n(zZ=1 in \fIbash(1)\fP) +.el above) +is performed when the variable is assigned a value. .TP .B \-l When the variable is assigned a value, all upper-case characters are @@ -8165,7 +8470,9 @@ an attempt is made to assign a value to a readonly variable, an attempt is made to assign a value to an array variable without using the compound assignment syntax (see .B Arrays -above), one of the \fInames\fP is not a valid shell variable name, +.ie \n(zZ=1 in \fIbash(1)\fP), +.el above), +one of the \fInames\fP 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 attempt is made to display a non-existent function with \fB\-f\fP. @@ -8335,7 +8642,11 @@ option means to load the new builtin command .I name from shared object .IR filename , -on systems that support dynamic loading. The +on systems that support dynamic loading. +Bash will use the value of the \fBBASH_LOADABLES_PATH\fP variable as a +colon-separated list of directories in which to search for \fIfilename\fP. +The default is system-dependent. +The .B \-d option will delete a builtin previously loaded with .BR \-f . @@ -8349,6 +8660,11 @@ If \fB\-a\fP is supplied, the list printed includes all builtins, with an indication of whether or not each is enabled. If \fB\-s\fP is supplied, the output is restricted to the POSIX \fIspecial\fP builtins. +If no options are supplied and a \fIname\fP is not a shell builtin, +\fBenable\fP will attempt to load \fIname\fP from a shared object named +\fIname\fP, as if the command were +.if t \f(CWenable \-f\fP \fIname name\fP . +.if n ``enable -f \fIname name\fP . The return value is 0 unless a .I name is not a shell builtin or there is an error loading a new builtin @@ -8780,8 +9096,9 @@ end of the history, and an index of \-1 refers to the current \fBhistory -d\fP command. .TP \fB\-d\fP \fIstart\fP\-\fIend\fP -Delete the history entries between positions \fIstart\fP and \fIend\fP, -inclusive. Positive and negative values for \fIstart\fP and \fIend\fP +Delete the range of history entries between positions \fIstart\fP and +\fIend\fP, inclusive. +Positive and negative values for \fIstart\fP and \fIend\fP are interpreted as described above. .TP .B \-a @@ -8829,7 +9146,7 @@ comment character followed immediately by a digit are interpreted as timestamps for the following history entry. The return value is 0 unless an invalid option is encountered, an error occurs while reading or writing the history file, an invalid -\fIoffset\fP is supplied as an argument to \fB\-d\fP, or the +\fIoffset\fP or range is supplied as an argument to \fB\-d\fP, or the history expansion supplied as an argument to \fB\-p\fP fails. .RE .TP @@ -8940,7 +9257,8 @@ Each is an arithmetic expression to be evaluated (see .SM .B "ARITHMETIC EVALUATION" -above). +.ie \n(zZ=1 in \fIbash(1)\fP). +.el above). If the last .I arg evaluates to 0, @@ -9057,10 +9375,12 @@ argument is supplied, \fIarray\fP is invalid or unassignable, or if .RE .TP \fBpopd\fP [\-\fBn\fP] [+\fIn\fP] [\-\fIn\fP] -Removes entries from the directory stack. With no arguments, -removes the top directory from the stack, and performs a -.B cd -to the new top directory. +Removes entries from the directory stack. +The elements are numbered from 0 starting at the first directory +listed by \fBdirs\fP. +With no arguments, \fBpopd\fP +removes the top directory from the stack, and +changes to the new top directory. Arguments, if supplied, have the following meanings: .RS .PD 0 @@ -9073,7 +9393,8 @@ from the stack, so that only the stack is manipulated. Removes the \fIn\fPth entry counting from the left of the list shown by .BR dirs , -starting with zero. For example: +starting with zero, from the stack. +For example: .if n ``popd +0'' .if t \f(CWpopd +0\fP removes the first directory, @@ -9094,15 +9415,23 @@ removes the last directory, the next to last. .PD .PP +If the top element of the directory stack is modified, and +the \fI-n\fP option was not supplied, \fBpopd\fP uses the \fBcd\fP +builtin to change to the directory at the top of the stack. +If the \fBcd\fP fails, \fBpopd\fP returns a non-zero value. +.PP +Otherwise, +.B popd +returns false if an invalid option is encountered, the directory stack +is empty, or a non-existent directory stack entry is specified. +.PP If the .B popd -command is successful, a +command is successful, +bash runs .B dirs -is performed as well, and the return status is 0. -.B popd -returns false if an invalid option is encountered, the directory stack -is empty, a non-existent directory stack entry is specified, or the -directory change fails. +to show the final contents of the directory stack, +and the return status is 0. .RE .TP \fBprintf\fP [\fB\-v\fP \fIvar\fP] \fIformat\fP [\fIarguments\fP] @@ -9131,6 +9460,10 @@ in the same way as \fBecho \-e\fP. causes \fBprintf\fP to output the corresponding \fIargument\fP in a format that can be reused as shell input. .TP +.B %Q +like \fB%q\fP, but applies any supplied precision to the \fIargument\fP +before quoting it. +.TP .B %(\fIdatefmt\fP)T causes \fBprintf\fP to output the date-time string resulting from using \fIdatefmt\fP as a format string for \fIstrftime\fP(3). @@ -9166,8 +9499,9 @@ The return value is zero on success, non-zero on failure. .PD 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, \fBpushd\fP exchanges the top two directories -and returns 0, unless the directory stack is empty. +directory. +With no arguments, \fBpushd\fP exchanges the top two elements of +the directory stack. Arguments, if supplied, have the following meanings: .RS .PD 0 @@ -9192,26 +9526,28 @@ starting with zero) is at the top. .I dir Adds .I dir -to the directory stack at the top, making it the -new current working directory as if it had been supplied as the argument -to the \fBcd\fP builtin. +to the directory stack at the top .PD .PP -If the +After the stack has been modified, if the \fB\-n\fP option was not +supplied, \fBpushd\fP uses the \fBcd\fP builtin to change to the +directory at the top of the stack. +If the \fBcd\fP fails, \fBpushd\fP returns a non-zero value. +.PP +Otherwise, if no arguments are supplied, .B pushd -command is successful, a -.B dirs -is performed as well. -If the first form is used, +returns 0 unless the directory stack is empty. +When rotating the directory stack, .B pushd -returns 0 unless the cd to -.I dir -fails. With the second form, +returns 0 unless the directory stack is empty or +a non-existent directory stack element is specified. +.PP +If the .B pushd -returns 0 unless the directory stack is empty, -a non-existent directory stack element is specified, -or the directory change to the specified new current directory -fails. +command is successful, +bash runs +.B dirs +to show the final contents of the directory stack. .RE .TP \fBpwd\fP [\fB\-LP\fP] @@ -9233,7 +9569,10 @@ invalid option is supplied. \fBread\fP [\fB\-ers\fP] [\fB\-a\fP \fIaname\fP] [\fB\-d\fP \fIdelim\fP] [\fB\-i\fP \fItext\fP] [\fB\-n\fP \fInchars\fP] [\fB\-N\fP \fInchars\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-t\fP \fItimeout\fP] [\fB\-u\fP \fIfd\fP] [\fIname\fP ...] One line is read from the standard input, or from the file descriptor \fIfd\fP supplied as an argument to the \fB\-u\fP option, -split into words as described above under \fBWord Splitting\fP, +split into words as described +.ie \n(zZ=1 in \fIbash(1)\fP +.el above +under \fBWord Splitting\fP, and the first word is assigned to the first .IR name , @@ -9249,7 +9588,10 @@ The characters in .SM .B IFS are used to split the line into words using the same rules the shell -uses for expansion (described above under \fBWord Splitting\fP). +uses for expansion (described +.ie \n(zZ=1 in \fIbash(1)\fP +.el above +under \fBWord Splitting\fP). The backslash character (\fB\e\fP) may be used to remove any special meaning for the next character read and for line continuation. Options, if supplied, have the following meanings: @@ -9278,9 +9620,11 @@ is coming from a terminal, (see .SM .B READLINE -above) is used to obtain the line. +.ie \n(zZ=1 in \fIbash(1)\fP) +.el above) +is used to obtain the line. Readline uses the current (or default, if line editing was not previously -active) editing settings, but uses Readline's default filename completion. +active) editing settings, but uses readline's default filename completion. .TP .B \-i \fItext\fP If @@ -9331,8 +9675,10 @@ from regular files. If \fBread\fP times out, \fBread\fP saves any partial input read into the specified variable \fIname\fP. If \fItimeout\fP is 0, \fBread\fP returns immediately, without trying to -read any data. The exit status is 0 if input is available on -the specified file descriptor, non-zero otherwise. +read any data. +The exit status is 0 if input is available on the specified file descriptor, +or the read will return EOF, +non-zero otherwise. The exit status is greater than 128 if the timeout is exceeded. .TP .B \-u \fIfd\fP @@ -9426,12 +9772,12 @@ function and not during execution of a script by \fB.\fP\^ or \fBsource\fP. Any command associated with the \fBRETURN\fP trap is executed before execution resumes after the function or script. .TP -\fBset\fP [\fB\-\-abefhkmnptuvxBCEHPT\fP] [\fB\-o\fP \fIoption\-name\fP] [\fIarg\fP ...] +\fBset\fP [\fB\-abefhkmnptuvxBCEHPT\fP] [\fB\-o\fP \fIoption\-name\fP] [\fB\-\-\fP] [\fB\-\fP] [\fIarg\fP ...] .PD 0 .TP -\fBset\fP [\fB+abefhkmnptuvxBCEHPT\fP] [\fB+o\fP \fIoption\-name\fP] [\fIarg\fP ...] +\fBset\fP [\fB+abefhkmnptuvxBCEHPT\fP] [\fB+o\fP \fIoption\-name\fP] [\fB\-\-\fP] [\fB\-\fP] [\fIarg\fP ...] .PD -Without options, the name and value of each shell variable are displayed +Without options, display the name and value of each shell variable in a format that can be reused as input for setting or resetting the currently-set variables. Read-only variables cannot be reset. @@ -9466,7 +9812,9 @@ or a \fIcompound command\fP (see .SM .B SHELL GRAMMAR -above), exits with a non-zero status. +.ie \n(zZ=1 in \fIbash(1)\fP), +.el 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 .B while @@ -9494,7 +9842,9 @@ This option applies to the shell environment and each subshell environment separately (see .SM .B "COMMAND EXECUTION ENVIRONMENT" -above), and may cause +.ie \n(zZ=1 in \fIbash(1)\fP), +.el above), +and may cause subshells to exit before executing all the commands in the subshell. .if t .sp 0.5 .if n .sp 1 @@ -9526,7 +9876,8 @@ by default for interactive shells on systems that support it (see .SM .B JOB CONTROL -above). +.ie \n(zZ=1 in \fIbash(1)\fP). +.el above). All processes run in a separate process group. When a background job completes, the shell prints a line containing its exit status. @@ -9577,7 +9928,10 @@ Same as .BR \-H . .TP 8 .B history -Enable command history, as described above under +Enable command history, as described +.ie \n(zZ=1 in \fIbash(1)\fP +.el above +under .SM .BR HISTORY . This option is on by default in interactive shells. @@ -9589,7 +9943,8 @@ The effect is as if the shell command had been executed (see .B Shell Variables -above). +.ie \n(zZ=1 in \fIbash(1)\fP). +.el above). .TP 8 .B keyword Same as @@ -9644,7 +9999,9 @@ from the POSIX standard to match the standard (\fIposix mode\fP). See .SM .B "SEE ALSO" -below for a reference to a document that details how posix mode affects +.ie \n(zZ=1 in \fIbash(1)\fP +.el below +for a reference to a document that details how posix mode affects bash's behavior. .TP 8 .B privileged @@ -9705,12 +10062,18 @@ not reset. Turning this option off causes the effective user and group ids to be set to the real user and group ids. .TP 8 +.B \-r +Enable restricted shell mode. +This option cannot be unset once it has been set. +.TP 8 .B \-t Exit after reading and executing one command. .TP 8 .B \-u Treat unset variables and parameters other than the special -parameters "@" and "*" as an error when performing +parameters "@" and "*", +or array variables subscripted with "@" or "*", +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. @@ -9730,7 +10093,9 @@ or associated word list. .B \-B The shell performs brace expansion (see .B Brace Expansion -above). This is on by default. +.ie \n(zZ=1 in \fIbash(1)\fP). +.el above). +This is on by default. .TP 8 .B \-C If set, @@ -9923,8 +10288,9 @@ the exit to be deferred until a second exit is attempted without an intervening command (see .SM .B "JOB CONTROL" -above). The shell always -postpones exiting if any jobs are stopped. +.ie \n(zZ=1 in \fIbash(1)\fP). +.el above). +The shell always postpones exiting if any jobs are stopped. .TP 8 .B checkwinsize If set, \fBbash\fP checks the window size after each external (non-builtin) @@ -9943,7 +10309,10 @@ attempts to save all lines of a multiple-line command in the same history entry. This allows easy re-editing of multi-line commands. This option is enabled by default, but only has an effect if command -history is enabled, as described above under +history is enabled, as described +.ie \n(zZ=1 in \fIbash(1)\fP +.el above +under .SM .BR HISTORY . .PD 0 @@ -9961,12 +10330,15 @@ history is enabled, as described above under .B compat43 .TP 8 .B compat44 +.TP 8 +.B compat50 .PD These control aspects of the shell's compatibility mode (see .SM .B "SHELL COMPATIBILITY MODE" -below). +.ie \n(zZ=1 in \fIbash(1)\fP). +.el below). .TP 8 .B complete_fullquote If set, @@ -10025,7 +10397,10 @@ builtin command. An interactive shell does not exit if fails. .TP 8 .B expand_aliases -If set, aliases are expanded as described above under +If set, aliases are expanded as described +.ie \n(zZ=1 in \fIbash(1)\fP +.el above +under .SM .BR ALIASES . This option is enabled by default for interactive shells. @@ -10059,7 +10434,9 @@ a call to \fBreturn\fP. and .SM .B BASH_ARGV -are updated as described in their descriptions above. +are updated as described in their descriptions +.ie \n(zZ=1 in \fIbash(1)\fP). +.el above). .TP .B 5. Function tracing is enabled: command substitution, shell functions, and @@ -10073,7 +10450,10 @@ subshells invoked with \fB(\fP \fIcommand\fP \fB)\fP inherit the .RE .TP 8 .B extglob -If set, the extended pattern matching features described above under +If set, the extended pattern matching features described +.ie \n(zZ=1 in \fIbash(1)\fP +.el above +under \fBPathname Expansion\fP are enabled. .TP 8 .B extquote @@ -10095,7 +10475,9 @@ the ignored words are the only possible completions. See .SM \fBSHELL VARIABLES\fP -above for a description of +.ie \n(zZ=1 in \fIbash(1)\fP +.el above +for a description of .SM .BR FIGNORE . This option is enabled by default. @@ -10104,7 +10486,9 @@ This option is enabled by default. If set, range expressions used in pattern matching bracket expressions (see .SM .B Pattern Matching -above) behave as if in the traditional C locale when performing +.ie \n(zZ=1 in \fIbash(1)\fP) +.el above) +behave as if in the traditional C locale when performing comparisons. That is, the current locale's collating sequence is not taken into account, so .B b @@ -10114,6 +10498,15 @@ and .BR B , and upper-case and lower-case ASCII characters will collate together. .TP 8 +.B globskipdots +If set, pathname expansion will never match the filenames +.B ``.'' +and +.BR ``..'' , +even if the pattern begins with a +.BR ``.'' . +This option is enabled by default. +.TP 8 .B globstar If set, the pattern \fB**\fP used in a pathname expansion context will match all files and zero or more directories and subdirectories. @@ -10153,7 +10546,8 @@ word containing a \fB@\fP is being completed (see under .SM .B READLINE -above). +.ie \n(zZ=1 in \fIbash(1)\fP). +.el above). This is enabled by default. .TP 8 .B huponexit @@ -10174,7 +10568,9 @@ to cause that word and all remaining characters on that line to be ignored in an interactive shell (see .SM .B COMMENTS -above). This option is enabled by default. +.ie \n(zZ=1 in \fIbash(1)\fP). +.el above). +This option is enabled by default. .TP 8 .B lastpipe If set, and job control is not active, the shell runs the last command of @@ -10201,7 +10597,8 @@ at the current function scope. The shell sets this option if it is started as a login shell (see .SM .B "INVOCATION" -above). +.ie \n(zZ=1 in \fIbash(1)\fP). +.el above). The value may not be changed. .TP 8 .B mailwarn @@ -10226,7 +10623,8 @@ If set, matches filenames in a case\-insensitive fashion when performing pathname expansion (see .B Pathname Expansion -above). +.ie \n(zZ=1 in \fIbash(1)\fP). +.el above). .TP 8 .B nocasematch If set, @@ -10236,18 +10634,38 @@ while executing \fBcase\fP or \fB[[\fP conditional commands, when performing pattern substitution word expansions, or when filtering possible completions as part of programmable completion. .TP 8 +.B noexpand_translation +If set, +.B bash +encloses the translated results of $"..." quoting in single quotes +instead of double quotes. +If the string is not translated, this has no effect. +.TP 8 .B nullglob If set, .B bash allows patterns which match no files (see .B Pathname Expansion -above) +.ie \n(zZ=1 in \fIbash(1)\fP) +.el above) to expand to a null string, rather than themselves. .TP 8 +.B patsub_replacement +If set, \fBbash\fP +expands occurrences of \fB&\fP in the replacement string of pattern +substitution to the text matched by the pattern, as described +under \fBParameter Expansion\fP +.ie \n(zZ=1 in \fIbash(1)\fP. +.el above. +This option is enabled by default. +.TP 8 .B progcomp If set, the programmable completion facilities (see -\fBProgrammable Completion\fP above) are enabled. +\fBProgrammable Completion\fP +.ie \n(zZ=1 in \fIbash(1)\fP) +.el above) +are enabled. This option is enabled by default. .TP 8 .B progcomp_alias @@ -10262,13 +10680,17 @@ parameter expansion, command substitution, arithmetic expansion, and quote removal after being expanded as described in .SM .B PROMPTING -above. This option is enabled by default. +.ie \n(zZ=1 in \fIbash(1)\fP. +.el above. +This option is enabled by default. .TP 8 .B restricted_shell -The shell sets this option if it is started in restricted mode (see +The shell sets this option if it is started in restricted mode +(see .SM .B "RESTRICTED SHELL" -below). +.ie \n(zZ=1 in \fIbash(1)\fP). +.el below). The value may not be changed. This is not reset when the startup files are executed, allowing the startup files to discover whether or not a shell is restricted. @@ -10281,12 +10703,21 @@ number of positional parameters. .TP 8 .B sourcepath If set, the -\fBsource\fP (\fB.\fP) builtin uses the value of +\fB.\fP (\fBsource\fP) builtin uses the value of .SM .B PATH to find the directory containing the file supplied as an argument. This option is enabled by default. .TP 8 +.B varredir_close +If set, the shell automatically closes file descriptors assigned using the +\fI{varname}\fP redirection syntax (see +.SM +.B REDIRECTION +.ie \n(zZ=1 in \fIbash(1)\fP) +.el above) +instead of leaving them open when the command completes. +.TP 8 .B xpg_echo If set, the \fBecho\fP builtin expands backslash-escape sequences by default. @@ -10297,12 +10728,16 @@ by default. Suspend the execution of this shell until it receives a .SM .B SIGCONT -signal. A login shell cannot be suspended; the +signal. A login shell, +or a shell without job control enabled, +cannot be suspended; the .B \-f option can be used to override this and force the suspension. -The return status is 0 unless the shell is a login shell and +The return status is 0 unless the shell is a login shell +or job control is not enabled +and .B \-f -is not supplied, or if job control is not enabled. +is not supplied. .TP \fBtest\fP \fIexpr\fP .PD 0 @@ -10312,8 +10747,10 @@ Return a status of 0 (true) or 1 (false) depending on the evaluation of the conditional expression .IR expr . Each operator and operand must be a separate argument. -.if \n(zZ=0 Expressions are composed of the primaries described above under -.if \n(zZ=1 Expressions are composed of the primaries described in the \fBbash\fP manual page under +Expressions are composed of the primaries described +.ie \n(zZ=1 in \fIbash(1)\fP +.el above +under .SM .BR "CONDITIONAL EXPRESSIONS" . \fBtest\fP does not accept any options, nor does it accept and ignore @@ -10366,7 +10803,9 @@ The expression is true if and only if the argument is not null. 2 arguments If the first argument is \fB!\fP, the expression is true if and only if the second argument is null. -If the first argument is one of the unary conditional operators listed above +If the first argument is one of the unary conditional operators listed +.ie \n(zZ=1 in \fIbash(1)\fP +.el above under .SM .BR "CONDITIONAL EXPRESSIONS" , @@ -10376,7 +10815,9 @@ is false. .TP 3 arguments The following conditions are applied in the order listed. -If the second argument is one of the binary conditional operators listed above +If the second argument is one of the binary conditional operators listed +.ie \n(zZ=1 in \fIbash(1)\fP +.el above under .SM .BR "CONDITIONAL EXPRESSIONS" , @@ -10392,8 +10833,13 @@ argument. Otherwise, the expression is false. .TP 4 arguments +The following conditions are applied in the order listed. If the first argument is \fB!\fP, the result is the negation of the three-argument expression composed of the remaining arguments. +the two-argument test using the second and third arguments. +If the first argument is exactly \fB(\fP and the fourth argument is +exactly \fB)\fP, the result is the two-argument test of the second +and third arguments. Otherwise, the expression is parsed and evaluated according to precedence using the rules listed above. .TP @@ -10476,7 +10922,8 @@ is executed before every \fIsimple command\fP, \fIfor\fP command, command, and before the first command executes in a shell function (see .SM .B SHELL GRAMMAR -above). +.ie \n(zZ=1 in \fIbash(1)\fP). +.el above). Refer to the description of the \fBextdebug\fP option to the \fBshopt\fP builtin for details of its effect on the \fBDEBUG\fP trap. If a @@ -10843,7 +11290,7 @@ or are unset, they lose their special properties, even if they are subsequently reset. The exit status is true unless a .I name -is readonly. +is readonly or may not be unset. .TP \fBwait\fP [\fB\-fn\fP] [\fP\-p\fP \fIvarname\fP] [\fIid ...\fP] Wait for each specified child process and return its termination status. @@ -10875,12 +11322,17 @@ forces \fBwait\fP to wait for \fIid\fP to terminate before returning its status, instead of returning when it changes status. If .I id -specifies a non-existent process or job, the return status is -127. Otherwise, the return status is the exit status of the last +specifies a non-existent process or job, the return status is 127. +If \fBwait\fP is interrupted by a signal, the return status will be greater +than 128, as described under +.B SIGNALS +.ie \n(zZ=1 in \fIbash(1)\fP. +.el above. +Otherwise, the return status is the exit status of the last process or job waited for. .SH "SHELL COMPATIBILITY MODE" -Bash-4.0 introduced the concept of a `shell compatibility level', specified -as a set of options to the shopt builtin +Bash-4.0 introduced the concept of a \fIshell compatibility level\fP, +specified as a set of options to the shopt builtin ( .BR compat31 , .BR compat32 , .BR compat40 , @@ -10896,7 +11348,7 @@ behavior. It's intended to be a temporary solution. This section does not mention behavior that is standard for a particular version (e.g., setting \fBcompat32\fP 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). +default behavior in bash-3.2 and subsequent versions). .PP If a user enables, say, \fBcompat32\fP, it may affect the behavior of other compatibility levels up to and including the current compatibility level. @@ -11016,7 +11468,7 @@ are not special within double-quoted word expansions .IP \(bu the shell does not print a warning message if an attempt is made to use a quoted compound assignment as an argument to declare -(declare -a foo='(1 2)'). Later versions warn that this usage is +(e.g., declare -a foo=\(aq(1 2)\(aq). Later versions warn that this usage is deprecated .IP \(bu word expansion errors are considered non-fatal errors that cause the @@ -11076,6 +11528,16 @@ output that can be reused as input. Bash-5.1 suppresses that message when the \fB\-l\fP option is supplied. .RE .PD +.TP +\fBcompat51\fP +.PD 0 +.RS +.IP \(bu +The \fBunset\fP builtin treats attempts to unset array subscripts \fB@\fP +and \fB*\fP differently depending on whether the array is indexed or +associative, and differently than in previous versions. +.RE +.PD .\" bash_builtins .if \n(zZ=1 .ig zZ .SH "RESTRICTED SHELL" @@ -11160,7 +11622,7 @@ option to the builtin command .IP \(bu turning off restricted mode with -\fBset +r\fP or \fBset +o restricted\fP. +\fBset +r\fP or \fBshopt -u restricted_shell\fP. .PP These restrictions are enforced after any startup files are read. .PP @@ -11214,6 +11676,10 @@ The individual per-interactive-shell startup file .FN ~/.bash_logout The individual login shell cleanup file, executed when a login shell exits .TP +.FN ~/.bash_history +The default value of \fBHISTFILE\fP, the file in which bash saves the +command history +.TP .FN ~/.inputrc Individual \fIreadline\fP initialization file .PD @@ -11233,7 +11699,8 @@ make sure that it really is a bug, and that it appears in the latest version of .BR bash . The latest version is always available from -\fIftp://ftp.gnu.org/pub/gnu/bash/\fP. +\fIftp://ftp.gnu.org/pub/gnu/bash/\fP and +\fIhttp://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz\fP. .PP Once you have determined that a bug actually exists, use the .I bashbug diff --git a/doc/bash.html b/doc/bash.html index adb9e7607..d80936900 100644 --- a/doc/bash.html +++ b/doc/bash.html @@ -3,7 +3,7 @@ -
BASH(1)2020 October 29BASH(1) +BASH(1)2022 September 19BASH(1)

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

COPYRIGHT

-Bash is Copyright © 1989-2020 by the Free Software Foundation, Inc. +Bash is Copyright © 1989-2022 by the Free Software Foundation, Inc.  

DESCRIPTION

@@ -368,7 +368,7 @@ An interactive shell is one started without non-option arguments and without the -c -option +option, whose standard input and error are both connected to terminals (as determined by isatty(3)), @@ -556,13 +556,15 @@ No other startup files are read. Bash attempts to determine when it is being run with its standard input -connected to a network connection, as when executed by the remote shell -daemon, usually rshd, or the secure shell daemon sshd. +connected to a network connection, as when executed by +the historical 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. +determines it is being run non-interactively 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 @@ -685,6 +687,7 @@ command (only in and do are valid):  

SHELL GRAMMAR

+This section describes the syntax of the various forms of shell commands.  

Simple Commands

@@ -711,29 +714,30 @@ The format for a pipeline is:

-[time [-p]] [ ! ] command [ [|||&] command2 ... ] +[time [-p]] [ ! ] command1 [ [|||&] command2 ... ]

The standard output of -command +command1 is connected via a pipe to the standard input of command2. This connection is performed before any redirections specified by the -command (see +command1(see + REDIRECTION below). -If |& is used, command's standard error, in addition to its +If |& is used, command1's standard error, in addition to its standard output, is connected to command2's standard input through the pipe; it is shorthand for 2>&1 |. This implicit redirection of the standard error to the standard output is -performed after any redirections specified by the command. +performed after any redirections specified by command1.

The return status of a pipeline is the exit status of the last @@ -785,14 +789,17 @@ variable may be used to specify the format of the time information.

-Each command in a pipeline is executed as a separate process (i.e., in a -subshell). +Each command in a multi-command pipeline, +where pipes are created, +is executed in a subshell, which is a +separate process. See COMMAND EXECUTION ENVIRONMENT -for a description of a subshell environment. +for a description of subshells and a subshell environment. If the lastpipe option is enabled using the shopt builtin (see the description of shopt below), -the last element of a pipeline may be run by the shell process. +the last element of a pipeline may be run by the shell process +when job control is not active.  

Lists

@@ -899,9 +906,9 @@ the rest of the command by one or more newlines, and may be followed by a newline in place of a semicolon.
(list)
-list is executed in a subshell environment (see +list is executed in a subshell (see COMMAND EXECUTION ENVIRONMENT -below). +below for a description of a subshell environment). Variable assignments and builtin commands that affect the shell's environment do not remain in effect after the command completes. The return status is the exit status of @@ -924,8 +931,12 @@ below under If the value of the expression is non-zero, the return status is 0; -otherwise the return status is 1. This is exactly equivalent to -let "expression". +otherwise the return status is 1. +The expression +undergoes the same expansions +as if it were within double quotes, +but double quote characters in expression are not treated specially +and are removed.
[[ expression ]]
Return a status of 0 or 1 depending on the evaluation of the conditional expression expression. @@ -933,11 +944,12 @@ Expressions are composed of the primaries described below under CONDITIONAL EXPRESSIONS. -Word splitting and pathname expansion are not performed on the words -between the [[ and ]]; tilde expansion, -parameter and variable expansion, -arithmetic expansion, command substitution, process -substitution, and quote removal are performed. +The words between the [[ and ]] do not undergo word splitting +and pathname expansion. +The shell performs tilde expansion, parameter and +variable expansion, arithmetic expansion, command substitution, process +substitution, and quote removal on those words +(the expansions that would occur if the words were enclosed in double quotes). Conditional operators such as -f must be unquoted to be recognized as primaries.

@@ -980,12 +992,14 @@ If the shell option is enabled, the match is performed without regard to the case of alphabetic characters. -Any part of the pattern may be quoted to force the quoted portion -to be matched as a string. -Bracket expressions in regular expressions must be treated carefully, -since normal quoting characters lose their meanings between brackets. +If any part of the pattern is quoted, the quoted portion is matched literally. +This means every character in the quoted portion matches itself, +instead of having any special pattern matching meaning. If the pattern is stored in a shell variable, quoting the variable -expansion forces the entire pattern to be matched as a string. +expansion forces the entire pattern to be matched literally. +Treat bracket expressions in regular expressions carefully, +since normal quoting and pattern characters lose their meanings +between brackets.

@@ -1014,6 +1028,12 @@ indices. The element of with index n is the portion of the string matching the nth parenthesized subexpression. +Bash sets +BASH_REMATCH + + +in the global scope; declaring it as a local variable will lead to +unexpected results.

@@ -1092,24 +1112,28 @@ The return value is the exit status of the last command in list that is executed, or false if any of the expressions is invalid.

select name [ in word ] ; do list ; done
The list of words following in is expanded, generating a list -of items. The set of expanded words is printed on the standard +of items, and the set of expanded words is printed on the standard error, each preceded by a number. If the in word is omitted, the positional parameters are printed (see PARAMETERS -below). The +below). +select + +then displays the PS3 -prompt is then displayed and a line read from the standard input. +prompt and reads a line from the standard input. If the line consists of a number corresponding to one of the displayed words, then the value of name -is set to that word. If the line is empty, the words and prompt -are displayed again. If EOF is read, the command completes. Any -other value read causes +is set to that word. +If the line is empty, the words and prompt are displayed again. +If EOF is read, the select command completes and returns 1. +Any other value read causes name to be set to null. The line read is saved in the variable @@ -1143,7 +1167,7 @@ expansion, parameter and variable expansion, arithmetic expansion, command substitution, process substitution and quote removal. Each pattern examined is expanded using tilde expansion, parameter and variable expansion, arithmetic expansion, -command substitution, and process substitution. +command substitution, process substitution, and quote removal. If the nocasematch @@ -1203,7 +1227,7 @@ had been terminated with the & control operator, with a two-way pipe established between the executing shell and the coprocess.

-The format for a coprocess is: +The syntax for a coprocess is:

@@ -1213,10 +1237,35 @@ The format for a coprocess is:

This creates a coprocess named NAME. +command may be either a simple command or a compound +command (see above). +NAME is a shell variable name. If NAME is not supplied, the default name is COPROC. -NAME must not be supplied if command is a simple -command (see above); otherwise, it is interpreted as the first word -of the simple command. +

+ +The recommended form to use for a coprocess is +

+

+ +coproc NAME { command [redirections]; } +

+ +

+ +This form is recommended because simple commands result in the coprocess +always being named COPROC, and it is simpler to use and more complete +than the other compound commands. +

+ +If command is a compound command, NAME is optional. The +word following coproc determines whether that word is interpreted +as a variable name: it is interpreted as NAME if it is not a +reserved word that introduces a compound command. +If command is a simple command, NAME is not allowed; this +is to avoid confusion between NAME and the first word of the simple +command. +

+ When the coprocess is executed, the shell creates an array variable (see Arrays @@ -1241,6 +1290,8 @@ The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. Other than those created to execute command and process substitutions, the file descriptors are not available in subshells. +

+ The process ID of the shell spawned to execute the coprocess is available as the value of the variable NAME_PID. The wait @@ -1269,9 +1320,9 @@ The body of the function is the compound command (see Compound Commands above). That command is usually a list of commands between { and }, but -may be any command listed under Compound Commands above, -with one exception: If the function reserved word is used, but the -parentheses are not supplied, the braces are required. +may be any command listed under Compound Commands above. +If the function reserved word is used, but the +parentheses are not supplied, the braces are recommended. compound-command is executed whenever fname is specified as the name of a simple command. When in posix mode, fname must be a valid shell name @@ -1425,10 +1476,11 @@ quotes (see below).

-Words of the form $aqstringaq are treated specially. The -word expands to string, with backslash-escaped characters replaced -as specified by the ANSI C standard. Backslash escape sequences, if -present, are decoded as follows: +Character sequences of the form $aqstringaq are treated +as a special variant of single quotes. +The sequence expands to string, with backslash-escaped characters +in string replaced as specified by the ANSI C standard. +Backslash escape sequences, if present, are decoded as follows:

@@ -1518,14 +1570,25 @@ not been present. A double-quoted string preceded by a dollar sign ($dqstringdq) will cause the string to be translated according to the current locale. -The gettext infrastructure performs the message catalog lookup and -translation, using the LC_MESSAGES and TEXTDOMAIN shell -variables. +The gettext infrastructure performs the lookup and +translation, using the LC_MESSAGES, TEXTDOMAINDIR, +and TEXTDOMAIN shell variables. If the current locale is C or POSIX, -or if there are no translations available, +if there are no translations available, +or if the string is not translated, the dollar sign is ignored. -If the string is translated and replaced, the replacement is -double-quoted. +This is a form of double quoting, so the string remains double-quoted +by default, whether or not it is translated and replaced. +If the noexpand_translation option is enabled +using the shopt builtin, +translated strings are single-quoted instead of double-quoted. +See the description of +shopt + +below under +SHELLBUILTINCOMMANDS. + +  

PARAMETERS

@@ -1605,11 +1668,7 @@ not used (see Arithmetic Expansion below). -Word splitting is not performed, with the exception -of "$@" as explained below under -Special Parameters. - -Pathname expansion is not performed. +Word splitting and pathname expansion are not performed. Assignment statements may also appear as arguments to the alias, @@ -1635,7 +1694,7 @@ to a shell variable or array index, the += operator can be used to append to or add to the variable's previous value. This includes arguments to builtin commands such as declare that accept assignment statements (declaration commands). -When += is applied to a variable for which the integer attribute has been +When += 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 (see @@ -1797,7 +1856,7 @@ option).
$
-Expands to the process ID of the shell. In a () subshell, it +Expands to the process ID of the shell. In a subshell, it expands to the process ID of the current shell, not the subshell.
! @@ -2445,6 +2504,18 @@ If is unset, it loses its special properties, even if it is subsequently reset. +
READLINE_ARGUMENT + +
+Any numeric argument given to a readline command that was defined using +bind -x + +(see +SHELL BUILTIN COMMANDS + + +below) +when it was invoked.
READLINE_LINE
@@ -2500,15 +2571,15 @@ builtin command when no arguments are supplied.
Each time this parameter is -referenced, the number of seconds since shell invocation is returned. If a -value is assigned to +referenced, it expands to the number of seconds since shell invocation. +If a value is assigned to SECONDS, the value returned upon subsequent references is the number of seconds since the assignment plus the value assigned. -The number of seconds at shell invocation and the current time is always +The number of seconds at shell invocation and the current time are always determined by querying the system clock. If SECONDS @@ -2603,7 +2674,7 @@ compatibility levels, the shell prints an error message and sets the compatibility level to the default for the current version. The valid values correspond to the compatibility levels described below under -BSHELLCOMPATIBILITYMODE. +SHELL COMPATIBILITY MODE. For example, 4.2 and 42 are valid values that correspond @@ -3446,6 +3517,14 @@ interpreted as relative to one greater than the maximum index of array, and an index of -1 references the last element.

+The += operator will append to an array variable when assigning +using the compound assignment syntax; see +PARAMETERS + + +above. +

+ Any element of an array may be referenced using ${name[subscript]}. The braces are required to avoid conflicts with pathname expansion. If @@ -3509,9 +3588,15 @@ destroys the array element at index subscript, for both indexed and associative arrays. Negative subscripts to indexed arrays are interpreted as described above. Unsetting the last element of an array variable does not unset the variable. -unset name, where name is an array, or +unset name, where name is an array, +removes the entire array. unset name[subscript], where -subscript is * or @, removes the entire array. +subscript is * or @, behaves differently depending on +whether name is an indexed or associative array. +If name is an associative array, this unsets the element with +subscript * or @. +If name is an indexed array, unset removes all of the elements but +does not remove the array itself.

When using a variable name with a subscript as an argument to a command, @@ -3635,7 +3720,7 @@ For example, a{d,c,b}e expands into `ade ace abe'. A sequence expression takes the form {x..y[..incr]}, -where x and y are either integers or single characters, +where x and y are either integers or single letters, and incr, an optional increment, is an integer. When integers are supplied, the expression expands to each number between x and y, inclusive. @@ -3644,10 +3729,11 @@ 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 necessary. -When characters are supplied, the expression expands to each character +When letters are supplied, the expression expands to each character lexicographically between x and y, inclusive, using the default C locale. -Note that both x and y must be of the same type. +Note that both x and y must be of the same type +(integer or letter). When the increment is supplied, it is used as the difference between each term. The default increment is 1 or -1 as appropriate.

@@ -3931,7 +4017,7 @@ is substituted. Substring Expansion. Expands to up to length characters of the value of parameter starting at the character specified by offset. -If parameter is @, an indexed array subscripted by +If parameter is @ or *, an indexed array subscripted by @ or *, or an associative array name, the results differ as described below. If length is omitted, expands to the substring of the value of @@ -3954,8 +4040,8 @@ a number of characters, and the expansion is the characters between Note that a negative offset must be separated from the colon by at least one space to avoid being confused with the :- expansion.

-If parameter is @, the result is length positional -parameters beginning at offset. +If parameter is @ or *, the result is length +positional parameters beginning at offset. A negative offset is taken relative to one greater than the greatest positional parameter, so an offset of -1 evaluates to the last positional parameter. @@ -4122,23 +4208,56 @@ or the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list.

${parameter/pattern/string}
+ +
${parameter//pattern/string}
+
${parameter/#pattern/string}
+
${parameter/%pattern/string}
+ Pattern substitution. The pattern is expanded to produce a pattern just as in -pathname expansion, +pathname expansion. Parameter is expanded and the longest match of pattern against its value is replaced with string. +string undergoes tilde expansion, parameter and variable expansion, +arithmetic expansion, command and process substitution, and quote removal. The match is performed using the rules described under Pattern Matching below. -If pattern begins with /, all matches of pattern are -replaced with string. Normally only the first match is replaced. -If pattern begins with #, it must match at the beginning -of the expanded value of parameter. -If pattern begins with %, it must match at the end -of the expanded value of parameter. -If string is null, matches of pattern are deleted +In the first form above, only the first match is replaced. +If there are two slashes separating parameter and pattern +(the second form above), all matches of pattern are +replaced with string. +If pattern is preceded by # (the third form above), +it must match at the beginning of the expanded value of parameter. +If pattern is preceded by % (the fourth form above), +it must match at the end of the expanded value of parameter. +If the expansion of string is null, +matches of pattern are deleted. +If string is null, +matches of pattern are deleted and the / following pattern may be omitted. +

+If the patsub_replacement shell option is enabled using shopt, +any unquoted instances of & in string are replaced with the +matching portion of pattern. +

+Quoting any part of string inhibits replacement in the +expansion of the quoted portion, including replacement strings stored +in shell variables. +Backslash will escape & in string; the backslash is removed +in order to permit a literal & in the replacement string. +Backslash can also be used to escape a backslash; \\ results in +a literal backslash in the replacement. +Users should take care if string is double-quoted to avoid +unwanted interactions between the backslash and double-quoting, since +backslash has special meaning within double quotes. +Pattern substitution performs the check for unquoted & after +expanding string; +shell programmers should quote any occurrences of & +they want to be taken literally in the replacement +and ensure any instances of & they want to be replaced are unquoted. +

If the nocasematch @@ -4242,7 +4361,7 @@ format that can be reused as input.

The expansion is a string that is the value of parameter with backslash -escape sequences expanded as with the $'...' quoting mechanism. +escape sequences expanded as with the $aq...aq quoting mechanism.
P
@@ -4266,6 +4385,11 @@ indexed and associative arrays as a sequence of quoted key-value pairs
The expansion is a string consisting of flag values representing parameter's attributes. +
k + +
+Like the K transformation, but expands the keys and values of +indexed and associative arrays to separate words after word splitting.

@@ -4364,8 +4488,10 @@ and the substitution of the result. The format for arithmetic expansion is: The expression -is treated as if it were within double quotes, but a double quote -inside the parentheses is not treated specially. +undergoes the same expansions +as if it were within double quotes, +but double quote characters in expression are not treated specially +and are removed. All tokens in the expression undergo parameter and variable expansion, command substitution, and quote removal. The result is treated as the arithmetic expression to be evaluated. @@ -4575,17 +4701,30 @@ must be matched explicitly, unless the shell option dotglob is set. -The filenames +In order to match the filenames ``.'' and -``..'' +``..'', -must always be matched explicitly, even if +the pattern must begin with ``.'' (for example, ``.?''), +even if dotglob is set. -In other cases, the +If the +globskipdots + +shell option is enabled, the filenames +``.'' + +and +``..'' + +are never matched, even if the pattern begins with a +``.''. + +When not matching pathnames, the ``.'' character is not treated specially. @@ -4608,6 +4747,8 @@ for a description of the nullglob, +globskipdots, + failglob, and @@ -4729,7 +4870,9 @@ or a ^ then any character not enclosed is matched. -The sorting order of characters in range expressions is determined by +The sorting order of characters in range expressions, +and the characters included in the range, +are determined by the current locale and the values of the LC_COLLATE @@ -4827,7 +4970,7 @@ the syntax [.symbol.] matches the collating symbol

If the extglob shell option is enabled using the shopt -builtin, several extended pattern matching operators are recognized. +builtin, the shell recognizes several extended pattern matching operators. In the following description, a pattern-list is a list of one or more patterns separated by a |. Composite patterns may be formed using one or more of the following @@ -4851,6 +4994,24 @@ Matches anything except one of the given patterns

+Theextglob option changes the behavior of the parser, since the +parentheses are normally treated as operators with syntactic meaning. +To ensure that extended matching patterns are parsed correctly, make sure +that extglob is enabled before parsing constructs containing the +patterns, including shell functions and command substitutions. +

+ +When matching filenames, the dotglob shell option determines +the set of filenames that are tested: +when dotglob is enabled, the set of filenames includes all files +beginning with ``.'', but ``.'' and ``..'' must be matched by a +pattern or sub-pattern that begins with a dot; +when it is disabled, the set does not +include any filenames beginning with ``.'' unless the pattern +or sub-pattern begins with a ``.''. +As above, ``.'' only has a special meaning when matching filenames. +

+ Complicated extended pattern matching against long strings is slow, especially when the patterns contain alternations and the strings contain multiple matches. @@ -4875,7 +5036,7 @@ may be redirected using a special notation interpreted by the shell. -Redirection allows commands' file handles to be +Redirection allows commands' file handles to be duplicated, opened, closed, made to refer to different files, and can change the files the command reads from and writes to. @@ -4902,7 +5063,8 @@ by {varname}, the value of varname defines the file descriptor to close. If {varname} is supplied, the redirection persists beyond the scope of the command, allowing the shell programmer to manage -the file descriptor himself. +the file descriptor's lifetime manually. +The varredir_close shell option manages this behavior.

In the following descriptions, if the file descriptor number is @@ -5448,7 +5610,7 @@ command.

There is no mechanism for using arguments in the replacement text. -If arguments are needed, a shell function should be used (see +If arguments are needed, use a shell function (see FUNCTIONS @@ -5562,11 +5724,24 @@ been enabled. Variables local to the function may be declared with the local -builtin command. Ordinarily, variables and their values +builtin command (local variables). +Ordinarily, variables and their values are shared between the function and its caller. If a variable is declared local, the variable's visible scope is restricted to that function and its children (including the functions it calls). +

+ +In the following description, the current scope is a currently- +executing function. +Previous scopes consist of that function's caller and so on, +back to the "global" scope, where the shell is not executing +any shell function. +Consequently, a local variable at the current scope is a variable +declared using the local or declare builtins in the +function that is currently executing. +

+ Local variables "shadow" variables with the same name declared at previous scopes. For instance, a local variable declared in a function @@ -5600,11 +5775,13 @@ variable is local to the current scope, unset will unset it; otherwise the unset will refer to the variable found in any calling scope as described above. If a variable at the current local scope is unset, it will remain so +(appearing as unset) until it is reset in that scope or until the function returns. Once the function returns, any instance of the variable at a previous scope will become visible. If the unset acts on a variable at a previous scope, any instance of a -variable with that name that had been shadowed will become visible. +variable with that name that had been shadowed will become visible +(see below how the localvar_unset shell option changes this behavior).

The FUNCNEST variable, if set to a numeric value greater @@ -5650,7 +5827,8 @@ or will list the function names only (and optionally the source file and line number, if the extdebug shell option is enabled). -Functions may be exported so that subshells +Functions may be exported so that child shell processes +(those created when executing a separate shell invocation) automatically have them defined with the -f @@ -6054,7 +6232,11 @@ and quote removal before being assigned to the variable.

If no command name results, the variable assignments affect the current -shell environment. Otherwise, the variables are added to the environment +shell environment. +In the case of such a command (one that consists only of assignment +statements and redirections), assignment statements are performed before +redirections. +Otherwise, the variables are added to the environment of the executed command and do not affect the current shell environment. 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. @@ -6134,8 +6316,10 @@ 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 shell script, a file -containing shell commands. A subshell is spawned to execute -it. This subshell reinitializes itself, so +containing shell commands, and the shell creates a +new instance of itself +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 @@ -6199,8 +6383,8 @@ of $$, and the value of When a simple command other than a builtin or shell function is to be executed, it is invoked in a separate execution environment that consists of -the following. Unless otherwise noted, the values are inherited -from the shell. +the following. +Unless otherwise noted, the values are inherited from the shell.

*
@@ -6223,6 +6407,9 @@ A command invoked in this separate environment cannot affect the shell's execution environment.

+A subshell is a copy of the shell process. +

+ Command substitution, commands grouped with parentheses, and asynchronous commands are invoked in a subshell environment that is a duplicate of the shell environment, @@ -6354,6 +6541,10 @@ All builtins return an exit status of 2 to indicate incorrect usage, generally invalid options or missing arguments.

+The exit status of the last command is available in the special +parameter $?. +

+ Bash 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 exit builtin @@ -6475,6 +6666,79 @@ When bash is waiting for an asynchronous command via the wait builtin, the reception of a signal for which a trap has been set will cause the wait builtin to return immediately with an exit status greater than 128, immediately after which the trap is executed. +

+ +When job control is not enabled, and bash is waiting for a foreground +command to complete, the shell receives keyboard-generated signals +such as +SIGINT + + +(usually generated by ^C) that users commonly intend to send +to that command. +This happens because the shell and the command are in the +same process group as the terminal, and ^C sends +SIGINT + + +to all processes in that process group. +

+ +When bash is running without job control enabled and receives +SIGINT + + +while waiting for a foreground command, it waits until that foreground +command terminates and then decides what to do about the +SIGINT: + + +

+
1.
+If the command terminates due to the +SIGINT, + + +bash concludes +that the user meant to end the entire script, and acts on the +SIGINT + + +(e.g., by running a +SIGINT + + +trap or exiting itself); +
2.
+If the command does not terminate due to +SIGINT, + + +the program handled the +SIGINT + + +itself and did not treat it as a fatal signal. +In that case, bash does not treat +SIGINT + + +as a fatal signal, either, instead assuming that the +SIGINT + + +was used as part of the program's normal operation +(e.g., emacs uses it to abort editing +commands) or deliberately discarded. +However, bash will run any +trap set on +SIGINT, + + +as it does with any other trapped signal it +receives while it is waiting for the foreground command to +complete, for compatibility. +
 

JOB CONTROL

@@ -6832,7 +7096,8 @@ the release of bash, version + patch level (e.g., 2.00.0)
\w
-the current working directory, with +the value of the PWD shell variable ($PWD), +with $HOME @@ -6845,7 +7110,8 @@ variable)
\W
-the basename of the current working directory, with +the basename of $PWD, +with $HOME @@ -7316,6 +7582,32 @@ The variables and their default values are:
+
active-region-start-color + +
+A string variable that controls the text color and background when displaying +the text in the active region (see the description of +enable-active-region below). +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal before displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that puts the terminal in standout mode, +as obtained from the terminal's terminfo description. +A sample value might be "\e[01;33m". +
active-region-end-color + +
+A string variable that "undoes" the effects of active-region-start-color +and restores "normal" terminal display appearance after displaying text +in the active region. +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal after displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that restores the terminal from standout mode, +as obtained from the terminal's terminfo description. +A sample value might be "\e[0m".
bell-style (audible)
@@ -7341,6 +7633,9 @@ If set to On, when listing completions, readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the value of the LS_COLORS environment variable. +If there is a color definition in $LS_COLORS for the custom suffix +"readline-colored-completion-prefix", readline uses this color for +the common prefix instead of its default.
colored-stats (Off)
@@ -7400,6 +7695,8 @@ If the number of possible completions is greater than or equal to the value of this variable, readline will ask whether or not the user wishes to view them; otherwise they are simply listed on the terminal. +A zero value means readline should never ask; negative values are +treated as zero.
convert-meta (On)
@@ -7409,6 +7706,8 @@ by stripping the eighth bit and prefixing an escape character (in effect, using escape as the meta prefix). The default is On, but readline will set it to Off if the locale contains eight-bit characters. +This variable is dependent on the LC_CTYPE locale category, and +may change if the locale is changed.
disable-completion (Off)
@@ -7445,14 +7744,28 @@ backslash escape sequences is available. Use the \1 and \2 escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. +
enable-active-region (On) + +
+The point is the current cursor position, and mark refers +to a saved cursor position. +The text between the point and mark is referred to as the region. +When this variable is set to On, readline allows certain commands +to designate the region as active. +When the region is active, readline highlights the text in the region using +the value of the active-region-start-color, which defaults to the +string that enables +the terminal's standout mode. +The active region shows the text inserted by bracketed-paste and any +matching text found by incremental and non-incremental history searches.
enable-bracketed-paste (On)
-When set to On, readline will configure the terminal in a way -that will enable it to insert each paste into the editing buffer as a -single string of characters, instead of treating each character as if -it had been read from the keyboard. This can prevent pasted characters -from being interpreted as editing commands. +When set to On, readline configures the terminal to insert each +paste into the editing buffer as a single string of characters, instead +of treating each character as if it had been read from the keyboard. +This prevents readline from executing any editing commands bound to key +sequences appearing in the pasted text.
enable-keypad (Off)
@@ -7506,6 +7819,8 @@ regardless of what the terminal claims it can support. The name is a synonym for this variable. The default is Off, but readline will set it to On if the locale contains eight-bit characters. +This variable is dependent on the LC_CTYPE locale category, and +may change if the locale is changed.
isearch-terminators (``C-[C-J'')
@@ -7581,6 +7896,8 @@ eighth bit set directly rather than as a meta-prefixed escape sequence. The default is Off, but readline will set it to On if the locale contains eight-bit characters. +This variable is dependent on the LC_CTYPE locale category, and +may change if the locale is changed.
page-completions (On)
@@ -7892,15 +8209,15 @@ Words are delimited by non-quoted shell metacharacters.
Attempt to move point to the same physical screen column on the previous physical screen line. This will not have the desired effect if the current -Readline line does not take up more than one physical line or if point is not +readline line does not take up more than one physical line or if point is not greater than the length of the prompt plus the screen width.
next-screen-line
Attempt to move point to the same physical screen column on the next physical screen line. This will not have the desired effect if the current -Readline line does not take up more than one physical line or if the length -of the current Readline line is not greater than the length of the prompt +readline line does not take up more than one physical line or if the length +of the current readline line is not greater than the length of the prompt plus the screen width.
clear-display (M-C-l) @@ -7956,6 +8273,19 @@ Move to the first line in the history.
Move to the end of the input history, i.e., the line currently being entered. +
operate-and-get-next (C-o) + +
+Accept the current line for execution and fetch the next line +relative to the current line from the history for editing. +A numeric argument, if supplied, specifies the history entry to use instead +of the current line. +
fetch-history + +
+With a numeric argument, fetch that entry from the history list +and make it the current line. +Without an argument, move back to the first entry in the history list.
reverse-search-history (C-r)
@@ -8075,13 +8405,6 @@ Perform history and alias expansion on the current line.
A synonym for yank-last-arg. -
operate-and-get-next (C-o) - -
-Accept the current line for execution and fetch the next line -relative to the current line from the history for editing. -A numeric argument, if supplied, specifies the history entry to use instead -of the current line.
edit-and-execute-command (C-x C-e)
@@ -8109,7 +8432,7 @@ The character indicating end-of-file as set, for example, by stty. If this character is read when there are no characters -on the line, and point is at the beginning of the line, Readline +on the line, and point is at the beginning of the line, readline interprets it as the end of input and returns EOF. @@ -8529,12 +8852,12 @@ the saved position, and the old cursor position is saved as the mark.
A character is read and point is moved to the next occurrence of that -character. A negative count searches for previous occurrences. +character. A negative argument searches for previous occurrences.
character-search-backward (M-C-])
A character is read and point is moved to the previous occurrence of that -character. A negative count searches for subsequent occurrences. +character. A negative argument searches for subsequent occurrences.
skip-csi-sequence
@@ -8563,6 +8886,12 @@ The default value of a shell comment. If a numeric argument causes the comment character to be removed, the line will be executed by the shell. +
spell-correct-word (C-x s) + +
+Perform spelling correction on the current word, treating it as a directory +or filename, in the same way as the cdspell shell option. +Word boundaries are the same as those used by shell-forward-word.
glob-complete-word (M-g)
@@ -9445,15 +9774,16 @@ does not contain a slash, filenames in are used to find the directory containing -filename. +filename, +but filename does not need to be executable. The file searched for in PATH need not be executable. -When bash is not in posix mode, the current directory is -searched if no file is found in +When bash is not in posix mode, it searches +the current directory if no file is found in PATH. @@ -9471,12 +9801,12 @@ is not searched. If any arguments are supplied, they become the positional parameters when filename is executed. Otherwise the positional parameters are unchanged. -If the -T option is enabled, source inherits any trap on +If the -T option is enabled, . inherits any trap on DEBUG; if it is not, any DEBUG trap string is saved and -restored around the call to source, and source unsets the +restored around the call to ., and . unsets the DEBUG trap while it executes. If -T is not set, and the sourced file changes -the DEBUG trap, the new value is retained when source completes. +the DEBUG trap, the new value is retained when . completes. The return status is the status of the last command exited within the script (0 if no commands are executed), and false if filename @@ -9519,6 +9849,7 @@ or was started without job control.
bind [-m keymap] -x keyseq:shell-command
bind [-m keymap] keyseq:function-name
bind [-m keymap] keyseq:readline-command
+
bind readline-command-line
Display current readline @@ -9530,7 +9861,10 @@ function or macro, or set a readline variable. -Each non-option argument is a command as it would appear in +Each non-option argument is a command as it would appear in a +readline + +initialization file such as .inputrc, but each binding or command must be passed as a separate argument; @@ -9624,6 +9958,12 @@ and variables to the current location of the insertion point and the saved insertion point (the mark), respectively. +The shell assigns any numeric argument the user supplied to the +READLINE_ARGUMENT + + +variable. +If there was no argument, that variable is not set. If the executed command changes the value of any of READLINE_LINE, @@ -9702,7 +10042,6 @@ if dir is not supplied, the value of the shell variable is the default. -Any additional arguments following dir are ignored. The variable CDPATH @@ -9777,6 +10116,10 @@ is used, or if - is the first argument, and the directory change is successful, the absolute pathname of the new working directory is written to the standard output. +If the directory change is successful, cd sets the value of the +PWD environment variable to the new directory name, and sets the +OLDPWD environment variable to the value of the current working +directory before the change. The return value is true if the directory was successfully changed; false otherwise.
command [-pVv] command [arg ...]
@@ -9891,7 +10234,9 @@ If any of -D, -E, or -I are supplied, any other specified by the option.

The process of applying these completion specifications when word completion -is attempted is described above under Programmable Completion. +is attempted is described + +above under Programmable Completion.

Other options, if specified, have the following meanings. The arguments to the -G, -W, and -X options @@ -10062,6 +10407,7 @@ Names of all shell variables. May also be specified as -v.

-C command
command is executed in a subshell environment, and its output is used as the possible completions. +Arguments are passed as with the -F option.
-F function
The shell function function is executed in the current shell environment. @@ -10230,6 +10576,7 @@ to give variables attributes: Each name is an indexed array variable (see Arrays + above).
-A @@ -10237,6 +10584,7 @@ above). Each name is an associative array variable (see Arrays + above).
-f @@ -10249,7 +10597,9 @@ The variable is treated as an integer; arithmetic evaluation (see ARITHMETIC EVALUATION -above) is performed when the variable is assigned a value. + +above) +is performed when the variable is assigned a value.
-l
@@ -10324,7 +10674,9 @@ an attempt is made to assign a value to an array variable without using the compound assignment syntax (see Arrays -above), one of the names is not a valid shell variable name, + +above), +one of the names 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 attempt is made to display a non-existent function with -f. @@ -10538,7 +10890,11 @@ option means to load the new builtin command from shared object filename, -on systems that support dynamic loading. The +on systems that support dynamic loading. +Bash will use the value of the BASH_LOADABLES_PATH variable as a +colon-separated list of directories in which to search for filename. +The default is system-dependent. +The -d option will delete a builtin previously loaded with @@ -10555,6 +10911,11 @@ If -a is supplied, the list printed includes all builtins, with an indication of whether or not each is enabled. If -s is supplied, the output is restricted to the POSIX special builtins. +If no options are supplied and a name is not a shell builtin, +enable will attempt to load name from a shared object named +name, as if the command were +enable -f name name . + The return value is 0 unless a name @@ -11080,8 +11441,9 @@ than the last history position, so negative indices count back from the end of the history, and an index of -1 refers to the current history -d command.
-d start-end
-Delete the history entries between positions start and end, -inclusive. Positive and negative values for start and end +Delete the range of history entries between positions start and +end, inclusive. +Positive and negative values for start and end are interpreted as described above.
-a @@ -11140,7 +11502,7 @@ comment character followed immediately by a digit are interpreted as timestamps for the following history entry. The return value is 0 unless an invalid option is encountered, an error occurs while reading or writing the history file, an invalid -offset is supplied as an argument to -d, or the +offset or range is supplied as an argument to -d, or the history expansion supplied as an argument to -p fails.
@@ -11283,6 +11645,7 @@ is an arithmetic expression to be evaluated (see ARITHMETIC EVALUATION + above). If the last arg @@ -11433,11 +11796,12 @@ argument is supplied, array is invalid or unassignable, or if
popd [-n] [+n] [-n]
-Removes entries from the directory stack. With no arguments, -removes the top directory from the stack, and performs a -cd - -to the new top directory. +Removes entries from the directory stack. +The elements are numbered from 0 starting at the first directory +listed by dirs. +With no arguments, popd +removes the top directory from the stack, and +changes to the new top directory. Arguments, if supplied, have the following meanings:
@@ -11452,7 +11816,8 @@ Removes the nth entry counting from the left of the list shown by dirs, -starting with zero. For example: +starting with zero, from the stack. +For example: popd +0 removes the first directory, @@ -11475,18 +11840,28 @@ the next to last.

-If the +If the top element of the directory stack is modified, and +the -n option was not supplied, popd uses the cd +builtin to change to the directory at the top of the stack. +If the cd fails, popd returns a non-zero value. +

+ +Otherwise, popd -command is successful, a -dirs +returns false if an invalid option is encountered, the directory stack +is empty, or a non-existent directory stack entry is specified. +

-is performed as well, and the return status is 0. +If the popd -returns false if an invalid option is encountered, the directory stack -is empty, a non-existent directory stack entry is specified, or the -directory change fails. +command is successful, +bash runs +dirs + +to show the final contents of the directory stack, +and the return status is 0.

printf [-v var] format [arguments]
@@ -11517,6 +11892,11 @@ in the same way as echo -e.
causes printf to output the corresponding argument in a format that can be reused as shell input. +
%Q + +
+like %q, but applies any supplied precision to the argument +before quoting it.
%(datefmt)T
@@ -11557,8 +11937,9 @@ The return value is zero on success, non-zero on failure. 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, pushd exchanges the top two directories -and returns 0, unless the directory stack is empty. +directory. +With no arguments, pushd exchanges the top two elements of +the directory stack. Arguments, if supplied, have the following meanings:
@@ -11587,33 +11968,36 @@ starting with zero) is at the top. Adds dir -to the directory stack at the top, making it the -new current working directory as if it had been supplied as the argument -to the cd builtin. +to the directory stack at the top

-If the -pushd +After the stack has been modified, if the -n option was not +supplied, pushd uses the cd builtin to change to the +directory at the top of the stack. +If the cd fails, pushd returns a non-zero value. +

-command is successful, a -dirs +Otherwise, if no arguments are supplied, +pushd -is performed as well. -If the first form is used, +returns 0 unless the directory stack is empty. +When rotating the directory stack, pushd -returns 0 unless the cd to -dir +returns 0 unless the directory stack is empty or +a non-existent directory stack element is specified. +

-fails. With the second form, +If the pushd -returns 0 unless the directory stack is empty, -a non-existent directory stack element is specified, -or the directory change to the specified new current directory -fails. +command is successful, +bash runs +dirs + +to show the final contents of the directory stack.

pwd [-LP]
@@ -11638,7 +12022,10 @@ invalid option is supplied.
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
One line is read from the standard input, or from the file descriptor fd supplied as an argument to the -u option, -split into words as described above under Word Splitting, +split into words as described + +above +under Word Splitting, and the first word is assigned to the first name, @@ -11658,7 +12045,10 @@ The characters in are used to split the line into words using the same rules the shell -uses for expansion (described above under Word Splitting). +uses for expansion (described + +above +under Word Splitting). 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 following meanings: @@ -11695,9 +12085,11 @@ is coming from a terminal, READLINE -above) is used to obtain the line. + +above) +is used to obtain the line. Readline uses the current (or default, if line editing was not previously -active) editing settings, but uses Readline's default filename completion. +active) editing settings, but uses readline's default filename completion.
-i text
@@ -11756,8 +12148,10 @@ from regular files. If read times out, read saves any partial input read into the specified variable name. If timeout is 0, read returns immediately, without trying to -read any data. The exit status is 0 if input is available on -the specified file descriptor, non-zero otherwise. +read any data. +The exit status is 0 if input is available on the specified file descriptor, +or the read will return EOF, +non-zero otherwise. The exit status is greater than 128 if the timeout is exceeded.
-u fd @@ -11871,11 +12265,11 @@ is used outside a function and not during execution of a script by . or source. Any command associated with the RETURN trap is executed before execution resumes after the function or script. -
set [--abefhkmnptuvxBCEHPT] [-o option-name] [arg ...]
+
set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]
-
set [+abefhkmnptuvxBCEHPT] [+o option-name] [arg ...]
+
set [+abefhkmnptuvxBCEHPT] [+o option-name] [--] [-] [arg ...]
-Without options, the name and value of each shell variable are displayed +Without options, display the name and value of each shell variable in a format that can be reused as input for setting or resetting the currently-set variables. Read-only variables cannot be reset. @@ -11919,7 +12313,9 @@ or a compound command SHELL GRAMMAR -above), exits with a non-zero status. + +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 while @@ -11955,7 +12351,9 @@ separately (see COMMAND EXECUTION ENVIRONMENT -above), and may cause + +above), +and may cause subshells to exit before executing all the commands in the subshell.

@@ -11993,6 +12391,7 @@ it (see JOB CONTROL + above). All processes run in a separate process group. When a background job completes, the shell prints a line @@ -12064,7 +12463,10 @@ Same as

history
-Enable command history, as described above under +Enable command history, as described + +above +under HISTORY. @@ -12079,6 +12481,7 @@ had been executed (see Shell Variables + above).
keyword @@ -12157,7 +12560,9 @@ See SEE ALSO -below for a reference to a document that details how posix mode affects + +below +for a reference to a document that details how posix mode affects bash's behavior.
privileged @@ -12238,6 +12643,11 @@ If the -p option is supplied 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. +
-r + +
+Enable restricted shell mode. +This option cannot be unset once it has been set.
-t
@@ -12246,7 +12656,9 @@ Exit after reading and executing one command.
Treat unset variables and parameters other than the special -parameters "@" and "*" as an error when performing +parameters "@" and "*", +or array variables subscripted with "@" or "*", +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. @@ -12271,7 +12683,9 @@ or associated word list. The shell performs brace expansion (see Brace Expansion -above). This is on by default. + +above). +This is on by default.
-C
@@ -12522,8 +12936,9 @@ intervening command (see JOB CONTROL -above). The shell always -postpones exiting if any jobs are stopped. + +above). +The shell always postpones exiting if any jobs are stopped.
checkwinsize
@@ -12547,7 +12962,10 @@ attempts to save all lines of a multiple-line command in the same history entry. This allows easy re-editing of multi-line commands. This option is enabled by default, but only has an effect if command -history is enabled, as described above under +history is enabled, as described + +above +under HISTORY. @@ -12572,6 +12990,9 @@ history is enabled, as described above under
compat44 +
+
compat50 +
These control aspects of the shell's compatibility mode @@ -12579,6 +13000,7 @@ These control aspects of the shell's compatibility mode SHELL COMPATIBILITY MODE + below).
complete_fullquote @@ -12655,7 +13077,10 @@ fails.
expand_aliases
-If set, aliases are expanded as described above under +If set, aliases are expanded as described + +above +under ALIASES. @@ -12698,7 +13123,9 @@ and BASH_ARGV -are updated as described in their descriptions above. +are updated as described in their descriptions + +above).
5.
@@ -12716,7 +13143,10 @@ subshells invoked with ( command ) inherit the
extglob
-If set, the extended pattern matching features described above under +If set, the extended pattern matching features described + +above +under Pathname Expansion are enabled.
extquote @@ -12741,7 +13171,9 @@ cause words to be ignored when performing word completion even if the ignored words are the only possible completions. See SHELL VARIABLES -above for a description of + +above +for a description of FIGNORE. @@ -12753,7 +13185,9 @@ If set, range expressions used in pattern matching bracket expressions (see Pattern Matching -above) behave as if in the traditional C locale when performing + +above) +behave as if in the traditional C locale when performing comparisons. That is, the current locale's collating sequence is not taken into account, so b @@ -12765,6 +13199,19 @@ and B, and upper-case and lower-case ASCII characters will collate together. +
globskipdots + +
+If set, pathname expansion will never match the filenames +``.'' + +and +``..'', + +even if the pattern begins with a +``.''. + +This option is enabled by default.
globstar
@@ -12817,6 +13264,7 @@ under READLINE + above). This is enabled by default.
huponexit @@ -12844,7 +13292,9 @@ line to be ignored in an interactive shell (see COMMENTS -above). This option is enabled by default. + +above). +This option is enabled by default.
lastpipe
@@ -12878,6 +13328,7 @@ The shell sets this option if it is started as a login shell (see INVOCATION + above). The value may not be changed.
mailwarn @@ -12911,6 +13362,7 @@ matches filenames in a case-insensitive fashion when performing pathname expansion (see Pathname Expansion + above).
nocasematch @@ -12922,6 +13374,15 @@ matches patterns in a case-insensitive fashion when performing matching while executing case or [[ conditional commands, when performing pattern substitution word expansions, or when filtering possible completions as part of programmable completion. +
noexpand_translation + +
+If set, +bash + +encloses the translated results of $"..." quoting in single quotes +instead of double quotes. +If the string is not translated, this has no effect.
nullglob
@@ -12932,13 +13393,27 @@ allows patterns which match no files (see Pathname Expansion + above) to expand to a null string, rather than themselves. +
patsub_replacement + +
+If set, bash +expands occurrences of & in the replacement string of pattern +substitution to the text matched by the pattern, as described +under Parameter Expansion + +above. +This option is enabled by default.
progcomp
If set, the programmable completion facilities (see -Programmable Completion above) are enabled. +Programmable Completion + +above) +are enabled. This option is enabled by default.
progcomp_alias @@ -12956,14 +13431,18 @@ expansion, and quote removal after being expanded as described in PROMPTING -above. This option is enabled by default. + +above. +This option is enabled by default.
restricted_shell
-The shell sets this option if it is started in restricted mode (see +The shell sets this option if it is started in restricted mode +(see RESTRICTED SHELL + below). The value may not be changed. This is not reset when the startup files are executed, allowing @@ -12980,12 +13459,23 @@ number of positional parameters.
If set, the -source (.) builtin uses the value of +. (source) builtin uses the value of PATH to find the directory containing the file supplied as an argument. This option is enabled by default. +
varredir_close + +
+If set, the shell automatically closes file descriptors assigned using the +{varname} redirection syntax (see +REDIRECTION + + + +above) +instead of leaving them open when the command completes.
xpg_echo
@@ -12999,14 +13489,18 @@ Suspend the execution of this shell until it receives a SIGCONT -signal. A login shell cannot be suspended; the +signal. A login shell, +or a shell without job control enabled, +cannot be suspended; the -f option can be used to override this and force the suspension. -The return status is 0 unless the shell is a login shell and +The return status is 0 unless the shell is a login shell +or job control is not enabled +and -f -is not supplied, or if job control is not enabled. +is not supplied.
test expr
[ expr ]
@@ -13015,8 +13509,10 @@ the evaluation of the conditional expression expr. Each operator and operand must be a separate argument. -Expressions are composed of the primaries described above under +Expressions are composed of the primaries described +above +under CONDITIONAL EXPRESSIONS. @@ -13078,7 +13574,9 @@ The expression is true if and only if the argument is not null.
2 arguments
If the first argument is !, the expression is true if and only if the second argument is null. -If the first argument is one of the unary conditional operators listed above +If the first argument is one of the unary conditional operators listed + +above under CONDITIONAL EXPRESSIONS, @@ -13088,7 +13586,9 @@ If the first argument is not a valid unary conditional operator, the expression is false.
3 arguments
The following conditions are applied in the order listed. -If the second argument is one of the binary conditional operators listed above +If the second argument is one of the binary conditional operators listed + +above under CONDITIONAL EXPRESSIONS, @@ -13104,8 +13604,13 @@ exactly ), the result is the one-argument test of the second argument. Otherwise, the expression is false.
4 arguments
+The following conditions are applied in the order listed. If the first argument is !, the result is the negation of the three-argument expression composed of the remaining arguments. +the two-argument test using the second and third arguments. +If the first argument is exactly ( and the fourth argument is +exactly ), the result is the two-argument test of the second +and third arguments. Otherwise, the expression is parsed and evaluated according to precedence using the rules listed above.
5 or more arguments
@@ -13213,6 +13718,7 @@ command, and before the first command executes in a shell function (see SHELL GRAMMAR + above). Refer to the description of the extdebug option to the shopt builtin for details of its effect on the DEBUG trap. @@ -13696,7 +14202,7 @@ are unset, they lose their special properties, even if they are subsequently reset. The exit status is true unless a name -is readonly. +is readonly or may not be unset.
wait [-fn] [-p varname] [id ...]
Wait for each specified child process and return its termination status. Each @@ -13730,15 +14236,21 @@ its status, instead of returning when it changes status. If id -specifies a non-existent process or job, the return status is -127. Otherwise, the return status is the exit status of the last +specifies a non-existent process or job, the return status is 127. +If wait is interrupted by a signal, the return status will be greater +than 128, as described under +SIGNALS + + +above. +Otherwise, the return status is the exit status of the last process or job waited for.
 

SHELL COMPATIBILITY MODE

-Bash-4.0 introduced the concept of a `shell compatibility level', specified -as a set of options to the shopt builtin +Bash-4.0 introduced the concept of a shell compatibility level, +specified as a set of options to the shopt builtin ( compat31, compat32, @@ -13759,7 +14271,7 @@ behavior. It's intended to be a temporary solution. This section 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). +default behavior in bash-3.2 and subsequent versions).

If a user enables, say, compat32, it may affect the behavior of other @@ -13896,7 +14408,7 @@ are not special within double-quoted word expansions

*
the shell does not print a warning message if an attempt is made to use a quoted compound assignment as an argument to declare -(declare -a foo='(1 2)'). Later versions warn that this usage is +(e.g., declare -a foo=aq(1 2)aq). Later versions warn that this usage is deprecated
*
word expansion errors are considered non-fatal errors that cause the @@ -13963,6 +14475,17 @@ when the -l option is supplied. +
compat51
+ +
+
+
*
+The unset builtin treats attempts to unset array subscripts @ +and * differently depending on whether the array is indexed or +associative, and differently than in previous versions. +
+ + @@ -14074,7 +14597,7 @@ option to the builtin command
*
turning off restricted mode with -set +r or set +o restricted. +set +r or shopt -u restricted_shell.

@@ -14143,6 +14666,12 @@ The individual per-interactive-shell startup file

The individual login shell cleanup file, executed when a login shell exits
+~/.bash_history + +
+The default value of HISTFILE, the file in which bash saves the +command history +
~/.inputrc
@@ -14174,7 +14703,8 @@ version of bash. The latest version is always available from -ftp://ftp.gnu.org/pub/gnu/bash/. +ftp://ftp.gnu.org/pub/gnu/bash/ and +http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz.

Once you have determined that a bug actually exists, use the @@ -14257,7 +14787,7 @@ There may be only one active coprocess at a time.


-
GNU Bash 5.12020 October 29BASH(1) +GNU Bash 5.22022 September 19BASH(1)

@@ -14363,7 +14893,7 @@ There may be only one active coprocess at a time.
BUGS

-This document was created by man2html from bash.1.
-Time: 18 November 2020 15:13:09 EST +This document was created by man2html from /usr/local/src/bash/bash-20220907/doc/bash.1.
+Time: 19 September 2022 12:02:51 EDT diff --git a/doc/bash.info b/doc/bash.info index 2fd137a92..6d31de621 100644 --- a/doc/bash.info +++ b/doc/bash.info @@ -1,13 +1,12 @@ -This is bash.info, produced by makeinfo version 6.7 from -bashref.texi. +This is bash.info, produced by makeinfo version 6.8 from bashref.texi. This text is a brief description of the features that are present in the -Bash shell (version 5.1, 29 October 2020). +Bash shell (version 5.2, 19 September 2022). - This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash -Reference Manual', for 'Bash', Version 5.1. + This is Edition 5.2, last updated 19 September 2022, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.2. - Copyright (C) 1988-2020 Free Software Foundation, Inc. + Copyright (C) 1988-2022 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -27,11 +26,11 @@ Bash Features ************* This text is a brief description of the features that are present in the -Bash shell (version 5.1, 29 October 2020). The Bash home page is +Bash shell (version 5.2, 19 September 2022). The Bash home page is . - This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash -Reference Manual', for 'Bash', Version 5.1. + This is Edition 5.2, last updated 19 September 2022, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.2. Bash contains features that appear in other popular shells, and some features that only appear in Bash. Some of the shells that Bash has @@ -359,11 +358,11 @@ as such, and to prevent parameter expansion. Each of the shell metacharacters (*note Definitions::) has special meaning to the shell and must be quoted if it is to represent itself. When the command history expansion facilities are being used (*note -History Interaction::), the HISTORY EXPANSION character, usually '!', +History Interaction::), the "history expansion" character, usually '!', must be quoted to prevent history expansion. *Note Bash History Facilities::, for more details concerning history expansion. - There are three quoting mechanisms: the ESCAPE CHARACTER, single + There are three quoting mechanisms: the "escape character", single quotes, and double quotes.  @@ -419,10 +418,11 @@ File: bash.info, Node: ANSI-C Quoting, Next: Locale Translation, Prev: Double 3.1.2.4 ANSI-C Quoting ...................... -Words of the form '$'STRING'' are treated specially. The word expands -to STRING, with backslash-escaped characters replaced as specified by -the ANSI C standard. Backslash escape sequences, if present, are -decoded as follows: +Character sequences of the form $'STRING' are treated as a special kind +of single quotes. The sequence expands to STRING, with +backslash-escaped characters in STRING replaced as specified by the ANSI +C standard. Backslash escape sequences, if present, are decoded as +follows: '\a' alert (bell) @@ -473,22 +473,114 @@ File: bash.info, Node: Locale Translation, Prev: ANSI-C Quoting, Up: Quoting 3.1.2.5 Locale-Specific Translation ................................... -A double-quoted string preceded by a dollar sign ('$') will cause the -string to be translated according to the current locale. The GETTEXT -infrastructure performs the message catalog lookup and translation, -using the 'LC_MESSAGES' and 'TEXTDOMAIN' shell variables, as explained -below. See the gettext documentation for additional details. If the -current locale is 'C' or 'POSIX', or if there are no translations -available, the dollar sign is ignored. If the string is translated and -replaced, the replacement is double-quoted. +* Menu: - Some systems use the message catalog selected by the 'LC_MESSAGES' -shell variable. Others create the name of the message catalog from the -value of the 'TEXTDOMAIN' shell variable, possibly adding a suffix of -'.mo'. If you use the 'TEXTDOMAIN' variable, you may need to set the -'TEXTDOMAINDIR' variable to the location of the message catalog files. -Still others use both variables in this fashion: -'TEXTDOMAINDIR'/'LC_MESSAGES'/LC_MESSAGES/'TEXTDOMAIN'.mo. +* Creating Internationalized Scripts:: How to use translations and different + languages in your scripts. + +Prefixing a double-quoted string with a dollar sign ('$'), such as +$"hello, world", will cause the string to be translated according to the +current locale. The 'gettext' infrastructure performs the lookup and +translation, using the 'LC_MESSAGES', 'TEXTDOMAINDIR', and 'TEXTDOMAIN' +shell variables, as explained below. See the gettext documentation for +additional details not covered here. If the current locale is 'C' or +'POSIX', if there are no translations available, of if the string is not +translated, the dollar sign is ignored. Since this is a form of double +quoting, the string remains double-quoted by default, whether or not it +is translated and replaced. If the 'noexpand_translation' option is +enabled using the 'shopt' builtin (*note The Shopt Builtin::), +translated strings are single-quoted instead of double-quoted. + + The rest of this section is a brief overview of how you use gettext +to create translations for strings in a shell script named SCRIPTNAME. +There are more details in the gettext documentation. + + +File: bash.info, Node: Creating Internationalized Scripts, Up: Locale Translation + +Once you've marked the strings in your script that you want to translate +using $"...", you create a gettext "template" file using the command + + bash --dump-po-strings SCRIPTNAME > DOMAIN.pot + +The DOMAIN is your "message domain". It's just an arbitrary string +that's used to identify the files gettext needs, like a package or +script name. It needs to be unique among all the message domains on +systems where you install the translations, so gettext knows which +translations correspond to your script. You'll use the template file to +create translations for each target language. The template file +conventionally has the suffix '.pot'. + + You copy this template file to a separate file for each target +language you want to support (called "PO" files, which use the suffix +'.po'). PO files use various naming conventions, but when you are +working to translate a template file into a particular language, you +first copy the template file to a file whose name is the language you +want to target, with the '.po' suffix. For instance, the Spanish +translations of your strings would be in a file named 'es.po', and to +get started using a message domain named "example," you would run + + cp example.pot es.po + +Ultimately, PO files are often named DOMAIN.po and installed in +directories that contain multiple translation files for a particular +language. + + Whichever naming convention you choose, you will need to translate +the strings in the PO files into the appropriate languages. This has to +be done manually. + + When you have the translations and PO files complete, you'll use the +gettext tools to produce what are called "MO" files, which are compiled +versions of the PO files the gettext tools use to look up translations +efficiently. MO files are also called "message catalog" files. You use +the 'msgfmt' program to do this. For instance, if you had a file with +Spanish translations, you could run + + msgfmt -o es.mo es.po + +to produce the corresponding MO file. + + Once you have the MO files, you decide where to install them and use +the 'TEXTDOMAINDIR' shell variable to tell the gettext tools where they +are. Make sure to use the same message domain to name the MO files as +you did for the PO files when you install them. + + Your users will use the 'LANG' or 'LC_MESSAGES' shell variables to +select the desired language. + + You set the 'TEXTDOMAIN' variable to the script's message domain. As +above, you use the message domain to name your translation files. + + You, or possibly your users, set the 'TEXTDOMAINDIR' variable to the +name of a directory where the message catalog files are stored. If you +install the message files into the system's standard message catalog +directory, you don't need to worry about this variable. + + The directory where the message catalog files are stored varies +between systems. Some use the message catalog selected by the +'LC_MESSAGES' shell variable. Others create the name of the message +catalog from the value of the 'TEXTDOMAIN' shell variable, possibly +adding the '.mo' suffix. If you use the 'TEXTDOMAIN' variable, you may +need to set the 'TEXTDOMAINDIR' variable to the location of the message +catalog files, as above. It's common to use both variables in this +fashion: '$TEXTDOMAINDIR'/'$LC_MESSAGES'/LC_MESSAGES/'$TEXTDOMAIN'.mo. + + If you used that last convention, and you wanted to store the message +catalog files with Spanish (es) and Esperanto (eo) translations into a +local directory you use for custom translation files, you could run + + TEXTDOMAIN=example + TEXTDOMAINDIR=/usr/local/share/locale + + cp es.mo ${TEXTDOMAINDIR}/es/LC_MESSAGES/${TEXTDOMAIN}.mo + cp eo.mo ${TEXTDOMAINDIR}/eo/LC_MESSAGES/${TEXTDOMAIN}.mo + + When all of this is done, and the message catalog files containing +the compiled translations are installed in the correct location, your +users will be able to see translated strings in any of the supported +languages by setting the 'LANG' or 'LC_MESSAGES' environment variables +before running your script.  File: bash.info, Node: Comments, Prev: Quoting, Up: Shell Syntax @@ -582,13 +674,13 @@ the control operators '|' or '|&'. The output of each command in the pipeline is connected via a pipe to the input of the next command. That is, each command reads the previous command's output. This connection is performed before any redirections -specified by the command. +specified by COMMAND1. If '|&' is used, COMMAND1's standard error, in addition to its standard output, is connected to COMMAND2's standard input through the pipe; it is shorthand for '2>&1 |'. This implicit redirection of the standard error to the standard output is performed after any -redirections specified by the command. +redirections specified by COMMAND1. The reserved word 'time' causes timing statistics to be printed for the pipeline once it finishes. The statistics currently consist of @@ -612,11 +704,12 @@ information. If the pipeline is not executed asynchronously (*note Lists::), the shell waits for all commands in the pipeline to complete. - Each command in a pipeline is executed in its own subshell, which is -a separate process (*note Command Execution Environment::). If the -'lastpipe' option is enabled using the 'shopt' builtin (*note The Shopt -Builtin::), the last element of a pipeline may be run by the shell -process. + Each command in a multi-command pipeline, where pipes are created, is +executed in its own "subshell", which is a separate process (*note +Command Execution Environment::). If the 'lastpipe' option is enabled +using the 'shopt' builtin (*note The Shopt Builtin::), the last element +of a pipeline may be run by the shell process when job control is not +active. The exit status of a pipeline is the exit status of the last command in the pipeline, unless the 'pipefail' option is enabled (*note The Set @@ -645,8 +738,8 @@ commands, equivalent to a semicolon. If a command is terminated by the control operator '&', the shell executes the command asynchronously in a subshell. This is known as -executing the command in the BACKGROUND, and these are referred to as -ASYNCHRONOUS commands. The shell does not wait for the command to +executing the command in the "background", and these are referred to as +"asynchronous" commands. The shell does not wait for the command to finish, and the return status is 0 (true). When job control is not active (*note Job Control::), the standard input for asynchronous commands, in the absence of any explicit redirections, is redirected @@ -814,7 +907,8 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: substitution, arithmetic expansion, and quote removal (*note Shell Parameter Expansion::) before matching is attempted. Each PATTERN undergoes tilde expansion, parameter expansion, command - substitution, and arithmetic expansion. + substitution, arithmetic expansion, process substitution, and quote + removal. There may be an arbitrary number of 'case' clauses, each terminated by a ';;', ';&', or ';;&'. The first pattern that matches @@ -855,16 +949,16 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: select NAME [in WORDS ...]; do COMMANDS; done The list of words following 'in' is expanded, generating a list of - items. The set of expanded words is printed on the standard error - output stream, each preceded by a number. If the 'in WORDS' is - omitted, the positional parameters are printed, as if 'in "$@"' had - been specified. The 'PS3' prompt is then displayed and a line is - read from the standard input. If the line consists of a number - corresponding to one of the displayed words, then the value of NAME - is set to that word. If the line is empty, the words and prompt - are displayed again. If 'EOF' is read, the 'select' command - completes. Any other value read causes NAME to be set to null. - The line read is saved in the variable 'REPLY'. + items, and the set of expanded words is printed on the standard + error output stream, each preceded by a number. If the 'in WORDS' + is omitted, the positional parameters are printed, as if 'in "$@"' + had been specified. 'select' then displays the 'PS3' prompt and + reads a line from the standard input. If the line consists of a + number corresponding to one of the displayed words, then the value + of NAME is set to that word. If the line is empty, the words and + prompt are displayed again. If 'EOF' is read, the 'select' command + completes and returns 1. Any other value read causes NAME to be + set to null. The line read is saved in the variable 'REPLY'. The COMMANDS are executed after each selection until a 'break' command is executed, at which point the 'select' command completes. @@ -883,11 +977,11 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: (( EXPRESSION )) The arithmetic EXPRESSION is evaluated according to the rules - described below (*note Shell Arithmetic::). If the value of the - expression is non-zero, the return status is 0; otherwise the - return status is 1. This is exactly equivalent to - let "EXPRESSION" - *Note Bash Builtins::, for a full description of the 'let' builtin. + described below (*note Shell Arithmetic::). The EXPRESSION + undergoes the same expansions as if it were within double quotes, + but double quote characters in EXPRESSION are not treated specially + are removed. If the value of the expression is non-zero, the + return status is 0; otherwise the return status is 1. '[[...]]' [[ EXPRESSION ]] @@ -895,12 +989,13 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: Return a status of 0 or 1 depending on the evaluation of the conditional expression EXPRESSION. Expressions are composed of the primaries described below in *note Bash Conditional Expressions::. - Word splitting and filename expansion are not performed on the - words between the '[[' and ']]'; tilde expansion, parameter and - variable expansion, arithmetic expansion, command substitution, - process substitution, and quote removal are performed. Conditional - operators such as '-f' must be unquoted to be recognized as - primaries. + The words between the '[[' and ']]' do not undergo word splitting + and filename expansion. The shell performs tilde expansion, + parameter and variable expansion, arithmetic expansion, command + substitution, process substitution, and quote removal on those + words (the expansions that would occur if the words were enclosed + in double quotes). Conditional operators such as '-f' must be + unquoted to be recognized as primaries. When used with '[[', the '<' and '>' operators sort lexicographically using the current locale. @@ -913,67 +1008,92 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: 'shopt' in *note The Shopt Builtin::) is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches ('==') or does not match - ('!=') the pattern, and 1 otherwise. Any part of the pattern may - be quoted to force the quoted portion to be matched as a string. + ('!=') the pattern, and 1 otherwise. + + If you quote any part of the pattern, using any of the shell's + quoting mechanisms, the quoted portion is matched literally. This + means every character in the quoted portion matches itself, instead + of having any special pattern matching meaning. An additional binary operator, '=~', is available, with the same - precedence as '==' and '!='. When it is used, the string to the + precedence as '==' and '!='. When you use '=~', the string to the right of the operator is considered a POSIX extended regular - expression and matched accordingly (using the POSIX 'regcomp' and - 'regexec' interfaces usually described in regex(3)). The return - value is 0 if the string matches the pattern, and 1 otherwise. If - the regular expression is syntactically incorrect, the conditional - expression's return value is 2. If the 'nocasematch' shell option - (see the description of 'shopt' in *note The Shopt Builtin::) is - enabled, the match is performed without regard to the case of - alphabetic characters. Any part of the pattern may be quoted to - force the quoted portion to be matched as a string. Bracket - expressions in regular expressions must be treated carefully, since - normal quoting characters lose their meanings between brackets. If - the pattern is stored in a shell variable, quoting the variable - expansion forces the entire pattern to be matched as a string. - - The pattern will match if it matches any part of the string. - Anchor the pattern using the '^' and '$' regular expression - operators to force it to match the entire string. The array - variable 'BASH_REMATCH' records which parts of the string matched - the pattern. The element of 'BASH_REMATCH' with index 0 contains - the portion of the string matching the entire regular expression. - Substrings matched by parenthesized subexpressions within the - regular expression are saved in the remaining 'BASH_REMATCH' - indices. The element of 'BASH_REMATCH' with index N is the portion - of the string matching the Nth parenthesized subexpression. + expression pattern and matched accordingly (using the POSIX + 'regcomp' and 'regexec' interfaces usually described in regex(3)). + The return value is 0 if the string matches the pattern, and 1 if + it does not. If the regular expression is syntactically incorrect, + the conditional expression returns 2. If the 'nocasematch' shell + option (see the description of 'shopt' in *note The Shopt + Builtin::) is enabled, the match is performed without regard to the + case of alphabetic characters. + + You can quote any part of the pattern to force the quoted portion + to be matched literally instead of as a regular expression (see + above). If the pattern is stored in a shell variable, quoting the + variable expansion forces the entire pattern to be matched + literally. + + The pattern will match if it matches any part of the string. If + you want to force the pattern to match the entire string, anchor + the pattern using the '^' and '$' regular expression operators. For example, the following will match a line (stored in the shell - variable LINE) if there is a sequence of characters anywhere in the - value consisting of any number, including zero, of characters in - the 'space' character class, zero or one instances of 'a', then a - 'b': + variable 'line') if there is a sequence of characters anywhere in + the value consisting of any number, including zero, of characters + in the 'space' character class, immediately followed by zero or one + instances of 'a', then a 'b': + [[ $line =~ [[:space:]]*(a)?b ]] - That means values like 'aab' and ' aaaaaab' will match, as will a - line containing a 'b' anywhere in its value. - - Storing the regular expression in a shell variable is often a - useful way to avoid problems with quoting characters that are - special to the shell. It is sometimes difficult to specify a - regular expression literally without using quotes, or to keep track - of the quoting used by regular expressions while paying attention - to the shell's quote removal. Using a shell variable to store the - pattern decreases these problems. For example, the following is - equivalent to the above: + That means values for 'line' like 'aab', ' aaaaaab', 'xaby', and ' + ab' will all match, as will a line containing a 'b' anywhere in its + value. + + If you want to match a character that's special to the regular + expression grammar ('^$|[]()\.*+?'), it has to be quoted to remove + its special meaning. This means that in the pattern 'xxx.txt', the + '.' matches any character in the string (its usual regular + expression meaning), but in the pattern '"xxx.txt"', it can only + match a literal '.'. + + Likewise, if you want to include a character in your pattern that + has a special meaning to the regular expression grammar, you must + make sure it's not quoted. If you want to anchor a pattern at the + beginning or end of the string, for instance, you cannot quote the + '^' or '$' characters using any form of shell quoting. + + If you want to match 'initial string' at the start of a line, the + following will work: + [[ $line =~ ^"initial string" ]] + but this will not: + [[ $line =~ "^initial string" ]] + because in the second example the '^' is quoted and doesn't have + its usual special meaning. + + It is sometimes difficult to specify a regular expression properly + without using quotes, or to keep track of the quoting used by + regular expressions while paying attention to shell quoting and the + shell's quote removal. Storing the regular expression in a shell + variable is often a useful way to avoid problems with quoting + characters that are special to the shell. For example, the + following is equivalent to the pattern used above: + pattern='[[:space:]]*(a)?b' [[ $line =~ $pattern ]] - If you want to match a character that's special to the regular - expression grammar, it has to be quoted to remove its special - meaning. This means that in the pattern 'xxx.txt', the '.' matches - any character in the string (its usual regular expression meaning), - but in the pattern '"xxx.txt"' it can only match a literal '.'. Shell programmers should take special care with backslashes, since - backslashes are used both by the shell and regular expressions to - remove the special meaning from the following character. The - following two sets of commands are _not_ equivalent: + backslashes are used by both the shell and regular expressions to + remove the special meaning from the following character. This + means that after the shell's word expansions complete (*note Shell + Expansions::), any backslashes remaining in parts of the pattern + that were originally not quoted can remove the special meaning of + pattern characters. If any part of the pattern is quoted, the + shell does its best to ensure that the regular expression treats + those remaining backslashes as literal, if they appeared in a + quoted portion. + + The following two sets of commands are _not_ equivalent: + pattern='\.' [[ . =~ $pattern ]] @@ -984,12 +1104,49 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: The first two matches will succeed, but the second two will not, because in the second two the backslash will be part of the pattern - to be matched. In the first two examples, the backslash removes - the special meaning from '.', so the literal '.' matches. If the + to be matched. In the first two examples, the pattern passed to + the regular expression parser is '\.'. The backslash removes the + special meaning from '.', so the literal '.' matches. In the + second two examples, the pattern passed to the regular expression + parser has the backslash quoted (e.g., '\\\.'), which will not + match the string, since it does not contain a backslash. If the string in the first examples were anything other than '.', say 'a', the pattern would not match, because the quoted '.' in the pattern loses its special meaning of matching any single character. + Bracket expressions in regular expressions can be sources of errors + as well, since characters that are normally special in regular + expressions lose their special meanings between brackets. However, + you can use bracket expressions to match special pattern characters + without quoting them, so they are sometimes useful for this + purpose. + + Though it might seem like a strange way to write it, the following + pattern will match a '.' in the string: + + [[ . =~ [.] ]] + + The shell performs any word expansions before passing the pattern + to the regular expression functions, so you can assume that the + shell's quoting takes precedence. As noted above, the regular + expression parser will interpret any unquoted backslashes remaining + in the pattern after shell expansion according to its own rules. + The intention is to avoid making shell programmers quote things + twice as much as possible, so shell quoting should be sufficient to + quote special pattern characters where that's necessary. + + The array variable 'BASH_REMATCH' records which parts of the string + matched the pattern. The element of 'BASH_REMATCH' with index 0 + contains the portion of the string matching the entire regular + expression. Substrings matched by parenthesized subexpressions + within the regular expression are saved in the remaining + 'BASH_REMATCH' indices. The element of 'BASH_REMATCH' with index N + is the portion of the string matching the Nth parenthesized + subexpression. + + Bash sets 'BASH_REMATCH' in the global scope; declaring it as a + local variable will lead to unexpected results. + Expressions may be combined using the following operators, listed in decreasing order of precedence: @@ -1024,9 +1181,9 @@ list may be redirected to a single stream. '()' ( LIST ) - Placing a list of commands between parentheses causes a subshell - environment to be created (*note Command Execution Environment::), - and each of the commands in LIST to be executed in that subshell. + Placing a list of commands between parentheses forces the shell to + create a subshell (*note Command Execution Environment::), and each + of the commands in LIST is executed in that subshell environment. Since the LIST is executed in a subshell, variable assignments do not remain in effect after the subshell completes. @@ -1039,10 +1196,10 @@ list may be redirected to a single stream. In addition to the creation of a subshell, there is a subtle difference between these two constructs due to historical reasons. The -braces are 'reserved words', so they must be separated from the LIST by -'blank's or other shell metacharacters. The parentheses are -'operators', and are recognized as separate tokens by the shell even if -they are not separated from the LIST by whitespace. +braces are reserved words, so they must be separated from the LIST by +'blank's or other shell metacharacters. The parentheses are operators, +and are recognized as separate tokens by the shell even if they are not +separated from the LIST by whitespace. The exit status of both of these constructs is the exit status of LIST. @@ -1058,29 +1215,51 @@ A coprocess is executed asynchronously in a subshell, as if the command had been terminated with the '&' control operator, with a two-way pipe established between the executing shell and the coprocess. - The format for a coprocess is: + The syntax for a coprocess is: + coproc [NAME] COMMAND [REDIRECTIONS] -This creates a coprocess named NAME. If NAME is not supplied, the -default name is COPROC. NAME must not be supplied if COMMAND is a -simple command (*note Simple Commands::); otherwise, it is interpreted -as the first word of the simple command. +This creates a coprocess named NAME. COMMAND may be either a simple +command (*note Simple Commands::) or a compound command (*note Compound +Commands::). NAME is a shell variable name. If NAME is not supplied, +the default name is 'COPROC'. + + The recommended form to use for a coprocess is + + coproc NAME { COMMAND; } + +This form is recommended because simple commands result in the coprocess +always being named 'COPROC', and it is simpler to use and more complete +than the other compound commands. + + There are other forms of coprocesses: + + coproc NAME COMPOUND-COMMAND + coproc COMPOUND-COMMAND + coproc SIMPLE-COMMAND + +If COMMAND is a compound command, NAME is optional. The word following +'coproc' determines whether that word is interpreted as a variable name: +it is interpreted as NAME if it is not a reserved word that introduces a +compound command. If COMMAND is a simple command, NAME is not allowed; +this is to avoid confusion between NAME and the first word of the simple +command. When the coprocess is executed, the shell creates an array variable -(*note Arrays::) named 'NAME' in the context of the executing shell. -The standard output of COMMAND is connected via a pipe to a file +(*note Arrays::) named NAME in the context of the executing shell. The +standard output of COMMAND is connected via a pipe to a file descriptor +in the executing shell, and that file descriptor is assigned to NAME[0]. +The standard input of COMMAND is connected via a pipe to a file descriptor in the executing shell, and that file descriptor is assigned -to 'NAME'[0]. The standard input of COMMAND is connected via a pipe to -a file descriptor in the executing shell, and that file descriptor is -assigned to 'NAME'[1]. This pipe is established before any redirections -specified by the command (*note Redirections::). The file descriptors -can be utilized as arguments to shell commands and redirections using -standard word expansions. Other than those created to execute command -and process substitutions, the file descriptors are not available in +to NAME[1]. This pipe is established before any redirections specified +by the command (*note Redirections::). The file descriptors can be +utilized as arguments to shell commands and redirections using standard +word expansions. Other than those created to execute command and +process substitutions, the file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is -available as the value of the variable 'NAME'_PID. The 'wait' builtin +available as the value of the variable 'NAME_PID'. The 'wait' builtin command may be used to wait for the coprocess to terminate. Since the coprocess is created as an asynchronous command, the @@ -1105,88 +1284,9 @@ line, different ways to specify the input source, and so on). Parallel can replace 'xargs' or feed commands from its input sources to several different instances of Bash. - For a complete description, refer to the GNU Parallel documentation. -A few examples should provide a brief introduction to its use. - - For example, it is easy to replace 'xargs' to gzip all html files in -the current directory and its subdirectories: - find . -type f -name '*.html' -print | parallel gzip -If you need to protect special characters such as newlines in file -names, use find's '-print0' option and parallel's '-0' option. - - You can use Parallel to move files from the current directory when -the number of files is too large to process with one 'mv' invocation: - printf '%s\n' * | parallel mv {} destdir - - As you can see, the {} is replaced with each line read from standard -input. While using 'ls' will work in most instances, it is not -sufficient to deal with all filenames. 'printf' is a shell builtin, and -therefore is not subject to the kernel's limit on the number of -arguments to a program, so you can use '*' (but see below about the -'dotglob' shell option). If you need to accommodate special characters -in filenames, you can use - - printf '%s\0' * | parallel -0 mv {} destdir - -as alluded to above. - - This will run as many 'mv' commands as there are files in the current -directory. You can emulate a parallel 'xargs' by adding the '-X' -option: - printf '%s\0' * | parallel -0 -X mv {} destdir - - (You may have to modify the pattern if you have the 'dotglob' option -enabled.) - - GNU Parallel can replace certain common idioms that operate on lines -read from a file (in this case, filenames listed one per line): - while IFS= read -r x; do - do-something1 "$x" "config-$x" - do-something2 < "$x" - done < file | process-output - -with a more compact syntax reminiscent of lambdas: - cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | - process-output - - Parallel provides a built-in mechanism to remove filename extensions, -which lends itself to batch file transformations or renaming: - ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}" -This will recompress all files in the current directory with names -ending in .gz using bzip2, running one job per CPU (-j+0) in parallel. -(We use 'ls' for brevity here; using 'find' as above is more robust in -the face of filenames containing unexpected characters.) Parallel can -take arguments from the command line; the above can also be written as - - parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz - - If a command generates output, you may want to preserve the input -order in the output. For instance, the following command - { - echo foss.org.my ; - echo debian.org ; - echo freenetproject.org ; - } | parallel traceroute -will display as output the traceroute invocation that finishes first. -Adding the '-k' option - { - echo foss.org.my ; - echo debian.org ; - echo freenetproject.org ; - } | parallel -k traceroute -will ensure that the output of 'traceroute foss.org.my' is displayed -first. - - Finally, Parallel can be used to run a sequence of shell commands in -parallel, similar to 'cat file | bash'. It is not uncommon to take a -list of filenames, create a series of shell commands to operate on them, -and feed that list of commands to a shell. Parallel can speed this up. -Assuming that 'file' contains a list of shell commands, one per line, - - parallel -j 10 < file - -will evaluate the commands using the shell (since no explicit command is -supplied as an argument), in blocks of ten shell jobs at a time. + For a complete description, refer to the GNU Parallel documentation, +which is available at +.  File: bash.info, Node: Shell Functions, Next: Shell Parameters, Prev: Shell Commands, Up: Basic Shell Features @@ -1210,15 +1310,15 @@ new process is created to interpret them. This defines a shell function named FNAME. The reserved word 'function' is optional. If the 'function' reserved word is supplied, -the parentheses are optional. The BODY of the function is the compound -command COMPOUND-COMMAND (*note Compound Commands::). That command is -usually a LIST enclosed between { and }, but may be any compound command -listed above, with one exception: If the 'function' reserved word is -used, but the parentheses are not supplied, the braces are required. +the parentheses are optional. The "body" of the function is the +compound command COMPOUND-COMMAND (*note Compound Commands::). That +command is usually a LIST enclosed between { and }, but may be any +compound command listed above. If the 'function' reserved word is used, +but the parentheses are not supplied, the braces are recommended. COMPOUND-COMMAND is executed whenever FNAME is specified as the name of -a command. When the shell is in POSIX mode (*note Bash POSIX Mode::), -FNAME must be a valid shell NAME and may not be the same as one of the -special builtins (*note Special Builtins::). In default mode, a +a simple command. When the shell is in POSIX mode (*note Bash POSIX +Mode::), FNAME must be a valid shell name and may not be the same as one +of the special builtins (*note Special Builtins::). In default mode, a function name can be any unquoted shell word that does not contain '$'. Any redirections (*note Redirections::) associated with the shell function are performed when the function is executed. A function @@ -1271,9 +1371,17 @@ status; otherwise the function's return status is the exit status of the last command executed before the 'return'. Variables local to the function may be declared with the 'local' -builtin. These variables are visible only to the function and the -commands it invokes. This is particularly important when a shell -function calls other functions. +builtin ("local variables"). Ordinarily, variables and their values are +shared between a function and its caller. These variables are visible +only to the function and the commands it invokes. This is particularly +important when a shell function calls other functions. + + In the following description, the "current scope" is a currently- +executing function. Previous scopes consist of that function's caller +and so on, back to the "global" scope, where the shell is not executing +any shell function. Consequently, a local variable at the current local +scope is a variable declared using the 'local' or 'declare' builtins in +the function that is currently executing. Local variables "shadow" variables with the same name declared at previous scopes. For instance, a local variable declared in a function @@ -1281,7 +1389,7 @@ hides a global variable of the same name: references and assignments refer to the local variable, leaving the global variable unmodified. When the function returns, the global variable is once again visible. - The shell uses DYNAMIC SCOPING to control a variable's visibility + The shell uses "dynamic scoping" to control a variable's visibility within functions. With dynamic scoping, visible variables and their values are a result of the sequence of function calls that caused execution to reach the current function. The value of a variable that a @@ -1290,10 +1398,10 @@ that caller is the "global" scope or another shell function. This is also the value that a local variable declaration "shadows", and the value that is restored when the function returns. - For example, if a variable VAR is declared as local in function -FUNC1, and FUNC1 calls another function FUNC2, references to VAR made -from within FUNC2 will resolve to the local variable VAR from FUNC1, -shadowing any global variable named VAR. + For example, if a variable 'var' is declared as local in function +'func1', and 'func1' calls another function 'func2', references to 'var' +made from within 'func2' will resolve to the local variable 'var' from +'func1', shadowing any global variable named 'var'. The following script demonstrates this behavior. When executed, the script displays @@ -1318,17 +1426,19 @@ script displays variable is local to the current scope, 'unset' will unset it; otherwise the unset will refer to the variable found in any calling scope as described above. If a variable at the current local scope is unset, it -will remain so until it is reset in that scope or until the function -returns. Once the function returns, any instance of the variable at a -previous scope will become visible. If the unset acts on a variable at -a previous scope, any instance of a variable with that name that had -been shadowed will become visible. +will remain so (appearing as unset) until it is reset in that scope or +until the function returns. Once the function returns, any instance of +the variable at a previous scope will become visible. If the unset acts +on a variable at a previous scope, any instance of a variable with that +name that had been shadowed will become visible (see below how +'localvar_unset'shell option changes this behavior). Function names and definitions may be listed with the '-f' option to the 'declare' ('typeset') builtin command (*note Bash Builtins::). The '-F' option to 'declare' or 'typeset' will list the function names only (and optionally the source file and line number, if the 'extdebug' shell -option is enabled). Functions may be exported so that subshells +option is enabled). Functions may be exported so that child shell +processes (those created when executing a separate shell invocation) automatically have them defined with the '-f' option to the 'export' builtin (*note Bourne Shell Builtins::). @@ -1348,11 +1458,12 @@ File: bash.info, Node: Shell Parameters, Next: Shell Expansions, Prev: Shell * Positional Parameters:: The shell's command-line arguments. * Special Parameters:: Parameters denoted by special characters. -A PARAMETER is an entity that stores values. It can be a 'name', a -number, or one of the special characters listed below. A VARIABLE is a -parameter denoted by a 'name'. A variable has a VALUE and zero or more -ATTRIBUTES. Attributes are assigned using the 'declare' builtin command -(see the description of the 'declare' builtin in *note Bash Builtins::). +A "parameter" is an entity that stores values. It can be a 'name', a +number, or one of the special characters listed below. A "variable" is +a parameter denoted by a 'name'. A variable has a 'value' and zero or +more 'attributes'. Attributes are assigned using the 'declare' builtin +command (see the description of the 'declare' builtin in *note Bash +Builtins::). A parameter is set if it has been assigned a value. The null string is a valid value. Once a variable is set, it may be unset only by using @@ -1362,24 +1473,23 @@ the 'unset' builtin command. NAME=[VALUE] If VALUE is not given, the variable is assigned the null string. All VALUEs undergo tilde expansion, parameter and variable expansion, -command substitution, arithmetic expansion, and quote removal (detailed -below). If the variable has its 'integer' attribute set, then VALUE is -evaluated as an arithmetic expression even if the '$((...))' expansion -is not used (*note Arithmetic Expansion::). Word splitting is not -performed, with the exception of '"$@"' as explained below. Filename -expansion is not performed. Assignment statements may also appear as -arguments to the 'alias', 'declare', 'typeset', 'export', 'readonly', -and 'local' builtin commands (DECLARATION commands). When in POSIX mode -(*note Bash POSIX Mode::), these builtins may appear in a command after -one or more instances of the 'command' builtin and retain these -assignment statement properties. +command substitution, arithmetic expansion, and quote removal (*note +Shell Parameter Expansion::). If the variable has its 'integer' +attribute set, then VALUE is evaluated as an arithmetic expression even +if the '$((...))' expansion is not used (*note Arithmetic Expansion::). +Word splitting and filename expansion are not performed. Assignment +statements may also appear as arguments to the 'alias', 'declare', +'typeset', 'export', 'readonly', and 'local' builtin commands +("declaration" commands). When in POSIX mode (*note Bash POSIX Mode::), +these builtins may appear in a command after one or more instances of +the 'command' builtin and retain these assignment statement properties. 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. This includes arguments to builtin commands such as 'declare' that accept -assignment statements (DECLARATION commands). When '+=' is applied to a -variable for which the INTEGER attribute has been set, VALUE is +assignment statements (declaration commands). When '+=' 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 Arrays::), the @@ -1389,9 +1499,9 @@ maximum index (for indexed arrays), or added as additional key-value pairs in an associative array. When applied to a string-valued variable, VALUE is expanded and appended to the variable's value. - A variable can be assigned the NAMEREF attribute using the '-n' + A variable can be assigned the 'nameref' attribute using the '-n' option to the 'declare' or 'local' builtin commands (*note Bash -Builtins::) to create a NAMEREF, or a reference to another variable. +Builtins::) to create a "nameref", or a reference to another variable. This allows variables to be manipulated indirectly. Whenever the nameref variable is referenced, assigned to, unset, or has its attributes modified (other than using or changing the nameref attribute @@ -1401,9 +1511,9 @@ shell functions to refer to a variable whose name is passed as an argument to the function. For instance, if a variable name is passed to a shell function as its first argument, running declare -n ref=$1 -inside the function creates a nameref variable REF whose value is the +inside the function creates a nameref variable 'ref' whose value is the variable name passed as the first argument. References and assignments -to REF, and changes to its attributes, are treated as references, +to 'ref', and changes to its attributes, are treated as references, assignments, and attribute modifications to the variable whose name was passed as '$1'. @@ -1423,7 +1533,7 @@ File: bash.info, Node: Positional Parameters, Next: Special Parameters, Up: S 3.4.1 Positional Parameters --------------------------- -A POSITIONAL PARAMETER is a parameter denoted by one or more digits, +A "positional parameter" is a parameter denoted by one or more digits, other than the single digit '0'. Positional parameters are assigned from the shell's arguments when it is invoked, and may be reassigned using the 'set' builtin command. Positional parameter 'N' may be @@ -1488,9 +1598,8 @@ only be referenced; assignment to them is not allowed. shell itself (such as the '-i' option). '$' - ($$) Expands to the process ID of the shell. In a '()' subshell, - it expands to the process ID of the invoking shell, not the - subshell. + ($$) Expands to the process ID of the shell. In a subshell, it + expands to the process ID of the invoking shell, not the subshell. '!' ($!) Expands to the process ID of the job most recently placed @@ -1544,13 +1653,13 @@ substitution (done in a left-to-right fashion); word splitting; and filename expansion. On systems that can support it, there is an additional expansion -available: PROCESS SUBSTITUTION. This is performed at the same time as -tilde, parameter, variable, and arithmetic expansion and command +available: "process substitution". This is performed at the same time +as tilde, parameter, variable, and arithmetic expansion and command substitution. After these expansions are performed, quote characters present in the -original word are removed unless they have been quoted themselves (QUOTE -REMOVAL). +original word are removed unless they have been quoted themselves +("quote removal"). Only brace expansion, word splitting, and filename expansion can increase the number of words of the expansion; other expansions expand a @@ -1568,7 +1677,7 @@ File: bash.info, Node: Brace Expansion, Next: Tilde Expansion, Up: Shell Expa --------------------- Brace expansion is a mechanism by which arbitrary strings may be -generated. This mechanism is similar to FILENAME EXPANSION (*note +generated. This mechanism is similar to "filename expansion" (*note Filename Expansion::), but the filenames generated need not exist. Patterns to be brace expanded take the form of an optional PREAMBLE, followed by either a series of comma-separated strings or a sequence @@ -1583,17 +1692,17 @@ are not sorted; left to right order is preserved. For example, ade ace abe A sequence expression takes the form '{X..Y[..INCR]}', where X and Y -are either integers or single characters, and INCR, 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 prefixed 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 -necessary. When characters are supplied, the expression expands to each -character lexicographically between X and Y, inclusive, using the -default C locale. Note that both X and Y must be of the same type. -When the increment is supplied, it is used as the difference between -each term. The default increment is 1 or -1 as appropriate. +are either integers or letters, and INCR, 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 prefixed +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 necessary. When +letters are supplied, the expression expands to each character +lexicographically between X and Y, inclusive, using the default C +locale. Note that both X and Y must be of the same type (integer or +letter). 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 characters special to other expansions are preserved in the result. It @@ -1623,9 +1732,9 @@ File: bash.info, Node: Tilde Expansion, Next: Shell Parameter Expansion, Prev If a word begins with an unquoted tilde character ('~'), all of the characters up to the first unquoted slash (or all characters, if there -is no unquoted slash) are considered a TILDE-PREFIX. If none of the +is no unquoted slash) are considered a "tilde-prefix". 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 LOGIN NAME. +tilde-prefix following the tilde are treated as a possible "login name". If this login name is the null string, the tilde is replaced with the value of the 'HOME' shell variable. If 'HOME' is unset, the home directory of the user executing the shell is substituted instead. @@ -1681,7 +1790,7 @@ assigns the expanded value. Bash also performs tilde expansion on words satisfying the conditions of variable assignments (*note Shell Parameters::) when they appear as arguments to simple commands. Bash does not do this, except for the -DECLARATION commands listed above, when in POSIX mode. +declaration commands listed above, when in POSIX mode.  File: bash.info, Node: Shell Parameter Expansion, Next: Command Substitution, Prev: Tilde Expansion, Up: Shell Expansions @@ -1708,7 +1817,7 @@ parameter with more than one digit, or when PARAMETER is followed by a character that is not to be interpreted as part of its name. If the first character of PARAMETER is an exclamation point (!), and -PARAMETER is not a NAMEREF, it introduces a level of indirection. Bash +PARAMETER is not a nameref, it introduces a level of indirection. Bash uses the value formed by expanding the rest of PARAMETER as the new PARAMETER; this is then expanded and that value is used in the rest of the expansion, rather than the expansion of the original PARAMETER. @@ -1734,31 +1843,48 @@ omitted, the operator tests only for existence. If PARAMETER is unset or null, the expansion of WORD is substituted. Otherwise, the value of PARAMETER is substituted. + $ v=123 + $ echo ${v-unset} + 123 + '${PARAMETER:=WORD}' If PARAMETER is unset or null, the expansion of WORD is assigned to PARAMETER. The value of PARAMETER is then substituted. Positional parameters and special parameters may not be assigned to in this way. + $ var= + $ : ${var:=DEFAULT} + $ echo $var + DEFAULT + '${PARAMETER:?WORD}' If PARAMETER is null or unset, the expansion of WORD (or a message to that effect if WORD is not present) is written to the standard error and the shell, if it is not interactive, exits. Otherwise, the value of PARAMETER is substituted. + $ var= + $ : ${var:?var is unset or null} + bash: var: var is unset or null + '${PARAMETER:+WORD}' If PARAMETER is null or unset, nothing is substituted, otherwise the expansion of WORD is substituted. + $ var=123 + $ echo ${var:+var is set and not null} + var is set and not null + '${PARAMETER:OFFSET}' '${PARAMETER:OFFSET:LENGTH}' This is referred to as Substring Expansion. It expands to up to LENGTH characters of the value of PARAMETER starting at the - character specified by OFFSET. If PARAMETER is '@', an indexed - array subscripted by '@' or '*', or an associative array name, the - results differ as described below. If LENGTH is omitted, it - expands to the substring of the value of PARAMETER starting at the - character specified by OFFSET and extending to the end of the + character specified by OFFSET. If PARAMETER is '@' or '*', an + indexed array subscripted by '@' or '*', or an associative array + name, the results differ as described below. If LENGTH is omitted, + it expands to the substring of the value of PARAMETER starting at + the character specified by OFFSET and extending to the end of the value. LENGTH and OFFSET are arithmetic expressions (*note Shell Arithmetic::). @@ -1826,11 +1952,11 @@ omitted, the operator tests only for existence. $ echo ${array[0]: -7:-2} bcdef - If PARAMETER is '@', the result is LENGTH positional parameters - beginning at OFFSET. A negative OFFSET is taken relative to one - greater than the greatest positional parameter, so an offset of -1 - evaluates to the last positional parameter. It is an expansion - error if LENGTH evaluates to a number less than zero. + If PARAMETER is '@' or '*', the result is LENGTH positional + parameters beginning at OFFSET. A negative OFFSET is taken + relative to one greater than the greatest positional parameter, so + an offset of -1 evaluates to the last positional parameter. It is + an expansion error if LENGTH evaluates to a number less than zero. The following examples illustrate substring expansion using positional parameters: @@ -1940,26 +2066,92 @@ omitted, the operator tests only for existence. array in turn, and the expansion is the resultant list. '${PARAMETER/PATTERN/STRING}' - +'${PARAMETER//PATTERN/STRING}' +'${PARAMETER/#PATTERN/STRING}' +'${PARAMETER/%PATTERN/STRING}' The PATTERN is expanded to produce a pattern just as in filename expansion. PARAMETER is expanded and the longest match of PATTERN - against its value is replaced with STRING. The match is performed - according to the rules described below (*note Pattern Matching::). - If PATTERN begins with '/', all matches of PATTERN are replaced - with STRING. Normally only the first match is replaced. If - PATTERN begins with '#', it must match at the beginning of the - expanded value of PARAMETER. If PATTERN begins with '%', it must - match at the end of the expanded value of PARAMETER. If STRING is - null, matches of PATTERN are deleted and the '/' following PATTERN - may be omitted. If the 'nocasematch' shell option (see the - description of 'shopt' in *note The Shopt Builtin::) is enabled, - the match is performed without regard to the case of alphabetic - characters. If PARAMETER is '@' or '*', the substitution operation - is applied to each positional parameter in turn, and the expansion - is the resultant list. If PARAMETER is an array variable - subscripted with '@' or '*', the substitution operation is applied - to each member of the array in turn, and the expansion is the - resultant list. + against its value is replaced with STRING. STRING undergoes tilde + expansion, parameter and variable expansion, arithmetic expansion, + command and process substitution, and quote removal. The match is + performed according to the rules described below (*note Pattern + Matching::). + + In the first form above, only the first match is replaced. If + there are two slashes separating PARAMETER and PATTERN (the second + form above), all matches of PATTERN are replaced with STRING. If + PATTERN is preceded by '#' (the third form above), it must match at + the beginning of the expanded value of PARAMETER. If PATTERN is + preceded by '%' (the fourth form above), it must match at the end + of the expanded value of PARAMETER. If the expansion of STRING is + null, matches of PATTERN are deleted. If STRING is null, matches + of PATTERN are deleted and the '/' following PATTERN may be + omitted. + + If the 'patsub_replacement' shell option is enabled using 'shopt', + any unquoted instances of '&' in STRING are replaced with the + matching portion of PATTERN. This is intended to duplicate a + common 'sed' idiom. + + Quoting any part of STRING inhibits replacement in the expansion of + the quoted portion, including replacement strings stored in shell + variables. Backslash will escape '&' in STRING; the backslash is + removed in order to permit a literal '&' in the replacement string. + Users should take care if STRING is double-quoted to avoid unwanted + interactions between the backslash and double-quoting, since + backslash has special meaning within double quotes. Pattern + substitution performs the check for unquoted '&' after expanding + STRING, so users should ensure to properly quote any occurrences of + '&' they want to be taken literally in the replacement and ensure + any instances of '&' they want to be replaced are unquoted. + + For instance, + + var=abcdef + rep='& ' + echo ${var/abc/& } + echo "${var/abc/& }" + echo ${var/abc/$rep} + echo "${var/abc/$rep}" + + will display four lines of "abc def", while + + var=abcdef + rep='& ' + echo ${var/abc/\& } + echo "${var/abc/\& }" + echo ${var/abc/"& "} + echo ${var/abc/"$rep"} + + will display four lines of "& def". Like the pattern removal + operators, double quotes surrounding the replacement string quote + the expanded characters, while double quotes enclosing the entire + parameter substitution do not, since the expansion is performed in + a context that doesn't take any enclosing double quotes into + account. + + Since backslash can escape '&', it can also escape a backslash in + the replacement string. This means that '\\' will insert a literal + backslash into the replacement, so these two 'echo' commands + + var=abcdef + rep='\\&xyz' + echo ${var/abc/\\&xyz} + echo ${var/abc/$rep} + + will both output '\abcxyzdef'. + + It should rarely be necessary to enclose only STRING in double + quotes. + + If the 'nocasematch' shell option (see the description of 'shopt' + in *note The Shopt Builtin::) is enabled, the match is performed + without regard to the case of alphabetic characters. If PARAMETER + is '@' or '*', the substitution operation is applied to each + positional parameter in turn, and the expansion is the resultant + list. If PARAMETER is an array variable subscripted with '@' or + '*', the substitution operation is applied to each member of the + array in turn, and the expansion is the resultant list. '${PARAMETER^PATTERN}' '${PARAMETER^^PATTERN}' @@ -1970,18 +2162,22 @@ omitted, the operator tests only for existence. filename expansion. Each character in the expanded value of PARAMETER is tested against PATTERN, and, if it matches the pattern, its case is converted. The pattern should not attempt to - match more than one character. The '^' operator converts lowercase - letters matching PATTERN 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 PATTERN is omitted, it is - treated like a '?', which matches every character. If PARAMETER is - '@' or '*', the case modification operation is applied to each - positional parameter in turn, and the expansion is the resultant - list. If PARAMETER is an array variable subscripted with '@' or - '*', the case modification operation is applied to each member of - the array in turn, and the expansion is the resultant list. + match more than one character. + + The '^' operator converts lowercase letters matching PATTERN 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 + PATTERN is omitted, it is treated like a '?', which matches every + character. + + If PARAMETER is '@' or '*', the case modification operation is + applied to each positional parameter in turn, and the expansion is + the resultant list. If PARAMETER is an array variable subscripted + with '@' or '*', the case modification operation is applied to each + member of the array in turn, and the expansion is the resultant + list. '${PARAMETER@OPERATOR}' The expansion is either a transformation of the value of PARAMETER @@ -2021,6 +2217,10 @@ omitted, the operator tests only for existence. 'a' The expansion is a string consisting of flag values representing PARAMETER's attributes. + 'k' + Like the 'K' transformation, but expands the keys and values + of indexed and associative arrays to separate words after word + splitting. If PARAMETER is '@' or '*', the operation is applied to each positional parameter in turn, and the expansion is the resultant @@ -2075,12 +2275,12 @@ is: $(( EXPRESSION )) - The expression is treated as if it were within double quotes, but a -double quote inside the parentheses is not treated specially. All -tokens in the expression undergo parameter and variable expansion, -command substitution, and quote removal. The result is treated as the -arithmetic expression to be evaluated. Arithmetic expansions may be -nested. + The EXPRESSION undergoes the same expansions as if it were within +double quotes, but double quote characters in EXPRESSION are not treated +specially and are removed. All tokens in the expression undergo +parameter and variable expansion, command substitution, and quote +removal. The result is treated as the arithmetic expression to be +evaluated. Arithmetic expansions may be nested. The evaluation is performed according to the rules listed below (*note Shell Arithmetic::). If the expression is invalid, Bash prints a @@ -2175,9 +2375,12 @@ characters. When a pattern is used for filename expansion, the character '.' at the start of a filename or immediately following a slash must be matched -explicitly, unless the shell option 'dotglob' is set. The filenames '.' -and '..' must always be matched explicitly, even if 'dotglob' is set. -In other cases, the '.' character is not treated specially. +explicitly, unless the shell option 'dotglob' is set. In order to match +the filenames '.' and '..', the pattern must begin with '.' (for +example, '.?'), even if 'dotglob' is set. If the 'globskipdots' shell +option is enabled, the filenames '.' and '..' are never matched, even if +the pattern begins with a '.'. When not matching filenames, the '.' +character is not treated specially. When matching a filename, the slash character must always be matched explicitly by a slash in the pattern, but in other matching contexts it @@ -2185,8 +2388,8 @@ can be matched by a special pattern character as described below (*note Pattern Matching::). See the description of 'shopt' in *note The Shopt Builtin::, for a -description of the 'nocaseglob', 'nullglob', 'failglob', and 'dotglob' -options. +description of the 'nocaseglob', 'nullglob', 'globskipdots', 'failglob', +and 'dotglob' options. The 'GLOBIGNORE' shell variable may be used to restrict the set of file names matching a pattern. If 'GLOBIGNORE' is set, each matching @@ -2232,20 +2435,21 @@ characters must be quoted if they are to be matched literally. character not enclosed is matched. A '-' may be matched by including it as the first or last character in the set. A ']' may be matched by including it as the first character in the set. The - sorting order of characters in range expressions is determined by - the current locale and the values of the 'LC_COLLATE' and 'LC_ALL' - shell variables, if set. + sorting order of characters in range expressions, and the + characters included in the range, are determined by the current + locale and the values of the 'LC_COLLATE' and 'LC_ALL' shell + variables, if set. For example, in the default C locale, '[a-dx-z]' is equivalent to '[abcdxyz]'. Many locales sort characters in dictionary order, and in these locales '[a-dx-z]' is typically not equivalent to - '[abcdxyz]'; it might be equivalent to '[aBbCcDdxXyYz]', for + '[abcdxyz]'; it might be equivalent to '[aBbCcDdxYyZz]', for example. To obtain the traditional interpretation of ranges in bracket expressions, you can force the use of the C locale by setting the 'LC_COLLATE' or 'LC_ALL' environment variable to the value 'C', or enable the 'globasciiranges' shell option. - Within '[' and ']', CHARACTER CLASSES can be specified using the + Within '[' and ']', "character classes" can be specified using the syntax '[:'CLASS':]', where CLASS is one of the following classes defined in the POSIX standard: alnum alpha ascii blank cntrl digit graph lower @@ -2254,8 +2458,8 @@ characters must be quoted if they are to be matched literally. The 'word' character class matches letters, digits, and the character '_'. - Within '[' and ']', an EQUIVALENCE CLASS can be specified using the - syntax '[='C'=]', which matches all characters with the same + Within '[' and ']', an "equivalence class" can be specified using + the syntax '[='C'=]', which matches all characters with the same collation weight (as defined by the current locale) as the character C. @@ -2263,10 +2467,12 @@ characters must be quoted if they are to be matched literally. symbol SYMBOL. If the 'extglob' shell option is enabled using the 'shopt' builtin, -several extended pattern matching operators are recognized. In the -following description, a PATTERN-LIST is a list of one or more patterns -separated by a '|'. Composite patterns may be formed using one or more -of the following sub-patterns: +the shell recognizes several extended pattern matching operators. In +the following description, a PATTERN-LIST is a list of one or more +patterns separated by a '|'. When matching filenames, the 'dotglob' +shell option determines the set of filenames that are tested, as +described above. Composite patterns may be formed using one or more of +the following sub-patterns: '?(PATTERN-LIST)' Matches zero or one occurrence of the given patterns. @@ -2283,6 +2489,20 @@ of the following sub-patterns: '!(PATTERN-LIST)' Matches anything except one of the given patterns. + The 'extglob' option changes the behavior of the parser, since the +parentheses are normally treated as operators with syntactic meaning. +To ensure that extended matching patterns are parsed correctly, make +sure that 'extglob' is enabled before parsing constructs containing the +patterns, including shell functions and command substitutions. + + When matching filenames, the 'dotglob' shell option determines the +set of filenames that are tested: when 'dotglob' is enabled, the set of +filenames includes all files beginning with '.', but the filenames '.' +and '..' must be matched by a pattern or sub-pattern that begins with a +dot; when it is disabled, the set does not include any filenames +beginning with "." unless the pattern or sub-pattern begins with a '.'. +As above, '.' only has a special meaning when matching filenames. + Complicated extended pattern matching against long strings is slow, especially when the patterns contain alternations and the strings contain multiple matches. Using separate matches against shorter @@ -2305,8 +2525,8 @@ File: bash.info, Node: Redirections, Next: Executing Commands, Prev: Shell Ex 3.6 Redirections ================ -Before a command is executed, its input and output may be REDIRECTED -using a special notation interpreted by the shell. Redirection allows +Before a command is executed, its input and output may be "redirected" +using a special notation interpreted by the shell. "Redirection" allows commands' file handles to be duplicated, opened, closed, made to refer to different files, and can change the files the command reads from and writes to. Redirection may also be used to modify file handles in the @@ -2322,7 +2542,8 @@ file descriptor greater than 10 and assign it to {VARNAME}. If >&- or <&- is preceded by {VARNAME}, the value of VARNAME defines the file descriptor to close. If {VARNAME} is supplied, the redirection persists beyond the scope of the command, allowing the shell programmer to manage -the file descriptor's lifetime manually. +the file descriptor's lifetime manually. The 'varredir_close' shell +option manages this behavior (*note The Shopt Builtin::). In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is '<', the @@ -2584,11 +2805,13 @@ following order. expansion, and quote removal before being assigned to the variable. If no command name results, the variable assignments affect the -current shell environment. Otherwise, the variables are added to the -environment of the executed command and do not affect the current shell -environment. 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. +current shell environment. In the case of such a command (one that +consists only of assignment statements and redirections), assignment +statements are performed before redirections. Otherwise, the variables +are added to the environment of the executed command and do not affect +the current shell environment. 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 @@ -2642,8 +2865,8 @@ taken. 5. 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 - SHELL SCRIPT and the shell executes it as described in *note Shell - Scripts::. + "shell script" and the shell executes it as described in *note + Shell Scripts::. 6. If the command was not begun asynchronously, the shell waits for the command to complete and collects its exit status. @@ -2654,7 +2877,8 @@ File: bash.info, Node: Command Execution Environment, Next: Environment, Prev 3.7.3 Command Execution Environment ----------------------------------- -The shell has an EXECUTION ENVIRONMENT, which consists of the following: +The shell has an "execution environment", which consists of the +following: * open files inherited by the shell at invocation, as modified by redirections supplied to the 'exec' builtin @@ -2705,6 +2929,8 @@ inherited from the shell. A command invoked in this separate environment cannot affect the shell's execution environment. + A "subshell" is a copy of the shell process. + Command substitution, commands grouped with parentheses, and asynchronous commands are invoked in a subshell environment that is a duplicate of the shell environment, except that traps caught by the @@ -2729,12 +2955,12 @@ File: bash.info, Node: Environment, Next: Exit Status, Prev: Command Executio ----------------- When a program is invoked it is given an array of strings called the -ENVIRONMENT. This is a list of name-value pairs, of the form +"environment". This is a list of name-value pairs, of the form 'name=value'. Bash 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 EXPORT to child +for each name found, automatically marking it for 'export' to child processes. Executed commands inherit the environment. The 'export' and 'declare -x' commands allow parameters and functions to be added to and deleted from the environment. If the value of a parameter in the @@ -2765,11 +2991,11 @@ File: bash.info, Node: Exit Status, Next: Signals, Prev: Environment, Up: Ex ----------------- The exit status of an executed command is the value returned by the -WAITPID system call or equivalent function. Exit statuses fall between -0 and 255, though, as explained below, the shell may use values above -125 specially. Exit statuses from shell builtins and compound commands -are also limited to this range. Under certain circumstances, the shell -will use special values to indicate specific failure modes. +'waitpid' system call or equivalent function. Exit statuses fall +between 0 and 255, though, as explained below, the shell may use values +above 125 specially. Exit statuses from shell builtins and compound +commands are also limited to this range. Under certain circumstances, +the shell will use special values to indicate specific failure modes. For the shell's purposes, a command which exits with a zero exit status has succeeded. A non-zero exit status indicates failure. This @@ -2795,6 +3021,9 @@ conditional and list constructs. All builtins return an exit status of 2 to indicate incorrect usage, generally invalid options or missing arguments. + The exit status of the last command is available in the special +parameter $? (*note Special Parameters::). +  File: bash.info, Node: Signals, Prev: Exit Status, Up: Executing Commands @@ -2835,6 +3064,33 @@ the 'wait' builtin, the reception of a signal for which a trap has been set will cause the 'wait' builtin to return immediately with an exit status greater than 128, immediately after which the trap is executed. + When job control is not enabled, and Bash is waiting for a foreground +command to complete, the shell receives keyboard-generated signals such +as 'SIGINT' (usually generated by '^C') that users commonly intend to +send to that command. This happens because the shell and the command +are in the same process group as the terminal, and '^C' sends 'SIGINT' +to all processes in that process group. See *note Job Control::, for a +more in-depth discussion of process groups. + + When Bash is running without job control enabled and receives +'SIGINT' while waiting for a foreground command, it waits until that +foreground command terminates and then decides what to do about the +'SIGINT': + + 1. If the command terminates due to the 'SIGINT', Bash concludes that + the user meant to end the entire script, and acts on the 'SIGINT' + (e.g., by running a 'SIGINT' trap or exiting itself); + + 2. If the pipeline does not terminate due to 'SIGINT', the program + handled the 'SIGINT' itself and did not treat it as a fatal signal. + In that case, Bash does not treat 'SIGINT' as a fatal signal, + either, instead assuming that the 'SIGINT' was used as part of the + program's normal operation (e.g., 'emacs' uses it to abort editing + commands) or deliberately discarded. However, Bash will run any + trap set on 'SIGINT', as it does with any other trapped signal it + receives while it is waiting for the foreground command to + complete, for compatibility. +  File: bash.info, Node: Shell Scripts, Prev: Executing Commands, Up: Basic Shell Features @@ -2857,8 +3113,8 @@ parameters are unset. A shell script may be made executable by using the 'chmod' command to turn on the execute bit. When Bash finds such a file while searching -the '$PATH' for a command, it spawns a subshell to execute it. In other -words, executing +the '$PATH' for a command, it creates a new instance of itself to +execute it. In other words, executing filename ARGUMENTS is equivalent to executing bash filename ARGUMENTS @@ -2962,19 +3218,20 @@ standard. Read and execute commands from the FILENAME argument in the current shell context. If FILENAME does not contain a slash, the 'PATH' - variable is used to find FILENAME. When Bash is not in POSIX mode, - the current directory is searched if FILENAME is not found in - '$PATH'. If any ARGUMENTS are supplied, they become the positional - parameters when FILENAME is executed. Otherwise the positional - parameters are unchanged. If the '-T' option is enabled, 'source' - inherits any trap on 'DEBUG'; if it is not, any 'DEBUG' trap string - is saved and restored around the call to 'source', and 'source' - unsets the 'DEBUG' trap while it executes. If '-T' is not set, and - the sourced file changes the 'DEBUG' trap, the new value is - retained when 'source' completes. The return status is the exit - status of the last command executed, or zero if no commands are - executed. If FILENAME is not found, or cannot be read, the return - status is non-zero. This builtin is equivalent to 'source'. + variable is used to find FILENAME, but FILENAME does not need to be + executable. When Bash is not in POSIX mode, it searches the + current directory if FILENAME is not found in '$PATH'. If any + ARGUMENTS are supplied, they become the positional parameters when + FILENAME is executed. Otherwise the positional parameters are + unchanged. If the '-T' option is enabled, '.' inherits any trap on + 'DEBUG'; if it is not, any 'DEBUG' trap string is saved and + restored around the call to '.', and '.' unsets the 'DEBUG' trap + while it executes. If '-T' is not set, and the sourced file + changes the 'DEBUG' trap, the new value is retained when '.' + completes. The return status is the exit status of the last + command executed, or zero if no commands are executed. If FILENAME + is not found, or cannot be read, the return status is non-zero. + This builtin is equivalent to 'source'. 'break' break [N] @@ -2988,10 +3245,9 @@ standard. cd [-L|[-P [-e]] [-@] [DIRECTORY] Change the current working directory to DIRECTORY. If DIRECTORY is - not supplied, the value of the 'HOME' shell variable is used. Any - additional arguments following DIRECTORY are ignored. If the shell - variable 'CDPATH' exists, it is used as a search path: each - directory name in 'CDPATH' is searched for DIRECTORY, with + not supplied, the value of the 'HOME' shell variable is used. If + the shell variable 'CDPATH' exists, it is used as a search path: + each directory name in 'CDPATH' is searched for DIRECTORY, with alternative directory names in 'CDPATH' separated by a colon (':'). If DIRECTORY begins with a slash, 'CDPATH' is not used. @@ -3022,6 +3278,11 @@ standard. absolute pathname of the new working directory is written to the standard output. + If the directory change is successful, 'cd' sets the value of the + 'PWD' environment variable to the new directory name, and sets the + 'OLDPWD' environment variable to the value of the current working + directory before the change. + The return status is zero if the directory is successfully changed, non-zero otherwise. @@ -3073,7 +3334,7 @@ standard. Mark each NAME to be passed to child processes in the environment. If the '-f' option is supplied, the NAMEs refer to shell functions; otherwise the names refer to shell variables. The '-n' option - means to no longer mark each NAME for export. If no NAMES are + means to no longer mark each NAME for export. If no NAMEs are supplied, or if the '-p' option is given, a list of names of all exported variables is displayed. The '-p' option displays output in a form that may be reused as input. If a variable name is @@ -3277,10 +3538,16 @@ standard. 4. Otherwise, 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 - arguments. Otherwise, the expression is parsed and evaluated - according to precedence using the rules listed above. + The following conditions are applied in the order listed. + + 1. If the first argument is '!', the result is the negation + of the three-argument expression composed of the + remaining arguments. + 2. If the first argument is exactly '(' and the fourth + argument is exactly ')', the result is the two-argument + test of the second and third arguments. + 3. Otherwise, the expression is parsed and evaluated + according to precedence using the rules listed above. 5 or more arguments The expression is parsed and evaluated according to precedence @@ -3369,7 +3636,7 @@ standard. given, each NAME refers to a shell variable and that variable is removed. If the '-f' option is given, the NAMEs refer to shell functions, and the function definition is removed. If the '-n' - option is supplied, and NAME is a variable with the NAMEREF + option is supplied, and NAME is a variable with the 'nameref' attribute, NAME will be unset rather than the variable it references. '-n' has no effect if the '-f' option is supplied. If no options are supplied, each NAME refers to a variable; if there @@ -3377,7 +3644,8 @@ standard. unset. Readonly variables and functions may not be unset. Some shell variables lose their special behavior if they are unset; such behavior is noted in the description of the individual variables. - The return status is zero unless a NAME is readonly. + The return status is zero unless a NAME is readonly or may not be + unset.  File: bash.info, Node: Bash Builtins, Next: Modifying Shell Behavior, Prev: Bourne Shell Builtins, Up: Shell Builtin Commands @@ -3406,6 +3674,7 @@ standard. bind [-m KEYMAP] -x KEYSEQ:SHELL-COMMAND bind [-m KEYMAP] KEYSEQ:FUNCTION-NAME bind [-m KEYMAP] KEYSEQ:READLINE-COMMAND + bind READLINE-COMMAND-LINE Display current Readline (*note Command Line Editing::) key and function bindings, bind a key sequence to a Readline function or @@ -3470,10 +3739,13 @@ standard. 'READLINE_LINE' variable to the contents of the Readline line buffer and the 'READLINE_POINT' and 'READLINE_MARK' variables to the current location of the insertion point and the saved - insertion point (the MARK), respectively. If the executed - command changes the value of any of 'READLINE_LINE', - 'READLINE_POINT', or 'READLINE_MARK', those new values will be - reflected in the editing state. + insertion point (the MARK), respectively. The shell assigns + any numeric argument the user supplied to the + 'READLINE_ARGUMENT' variable. If there was no argument, that + variable is not set. If the executed command changes the + value of any of 'READLINE_LINE', 'READLINE_POINT', or + 'READLINE_MARK', those new values will be reflected in the + editing state. '-X' List all key sequences bound to shell commands and the @@ -3556,7 +3828,7 @@ standard. It is ignored in all other cases. The '-I' option causes local variables to inherit the attributes - (except the NAMEREF attribute) and value of any existing variable + (except the 'nameref' attribute) and value of any existing variable with the same NAME at a surrounding scope. If there is no existing variable, the local variable is initially unset. @@ -3583,7 +3855,7 @@ standard. attribute is disabled. '-n' - Give each NAME the NAMEREF attribute, making it a name + Give each NAME the 'nameref' attribute, making it a name reference to another variable. That other variable is defined by the value of NAME. All references, assignments, and attribute modifications to NAME, except for those using or @@ -3626,7 +3898,7 @@ standard. attempt is made to assign a value to a readonly variable, an attempt is made to assign a value to an array variable without using the compound assignment syntax (*note Arrays::), one of the - NAMES is not a valid shell variable name, an attempt is made to + NAMEs 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 attempt is made to display a non-existent function with '-f'. @@ -3699,13 +3971,20 @@ standard. The '-f' option means to load the new builtin command NAME from shared object FILENAME, on systems that support dynamic loading. - The '-d' option will delete a builtin loaded with '-f'. + Bash will use the value of the 'BASH_LOADABLES_PATH' variable as a + colon-separated list of directories in which to search for + FILENAME. The default is system-dependent. The '-d' option will + delete a builtin loaded with '-f'. If there are no options, a list of the shell builtins is displayed. The '-s' option restricts 'enable' to the POSIX special builtins. If '-s' is used with '-f', the new builtin becomes a special builtin (*note Special Builtins::). + If no options are supplied and a NAME is not a shell builtin, + 'enable' will attempt to load NAME from a shared object named NAME, + as if the command were 'enable -f NAME NAME'. + The return status is zero unless a NAME is not a shell builtin or there is an error loading a new builtin from a shared object. @@ -3826,6 +4105,9 @@ standard. '%q' Causes 'printf' to output the corresponding ARGUMENT in a format that can be reused as shell input. + '%Q' + like '%q', but applies any supplied precision to the ARGUMENT + before quoting it. '%(DATEFMT)T' Causes 'printf' to output the date-time string resulting from using DATEFMT as a format string for 'strftime'(3). The @@ -3934,8 +4216,9 @@ standard. partial input read into the specified variable NAME. If TIMEOUT is 0, 'read' returns immediately, without trying to read any data. The exit status is 0 if input is available on - the specified file descriptor, non-zero otherwise. The exit - status is greater than 128 if the timeout is exceeded. + the specified file descriptor, or the read will return EOF, + non-zero otherwise. The exit status is greater than 128 if + the timeout is exceeded. '-u FD' Read input from file descriptor FD. @@ -3991,7 +4274,7 @@ standard. If the '-f' option is used, 'type' does not attempt to find shell functions, as with the 'command' builtin. - The return status is zero if all of the NAMES are found, non-zero + The return status is zero if all of the NAMEs are found, non-zero if any are not found. 'typeset' @@ -4135,8 +4418,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-NAME] [ARGUMENT ...] - set [+abefhkmnptuvxBCEHPT] [+o OPTION-NAME] [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 @@ -4317,14 +4600,19 @@ parameters, or to display the names and values of shell variables. causes the effective user and group ids to be set to the real user and group ids. + '-r' + Enable restricted shell mode. This option cannot be unset + once it has been set. + '-t' Exit after reading and executing one command. '-u' Treat unset variables and parameters other than the special - parameters '@' or '*' as an error when performing parameter - expansion. An error message will be written to the standard - error, and a non-interactive shell will exit. + parameters '@' or '*', or array variables subscripted with '@' + or '*', as an error when performing parameter expansion. An + error message will be written to the standard error, and a + non-interactive shell will exit. '-v' Print shell input lines as they are read. @@ -4421,7 +4709,7 @@ This builtin allows you to change additional shell optional behavior. option is used, those available with the '-o' option to the 'set' builtin command (*note The Set Builtin::). With no options, or with the '-p' option, a list of all settable options is displayed, - with an indication of whether or not each is set; if OPTNAMES are + with an indication of whether or not each is set; if OPTNAMEs are supplied, the output is restricted to those options. The '-p' option causes output to be displayed in a form that may be reused as input. Other options have the following meanings: @@ -4435,7 +4723,7 @@ This builtin allows you to change additional shell optional behavior. '-q' Suppresses normal output; the return status indicates whether the OPTNAME is set or unset. If multiple OPTNAME arguments - are given with '-q', the return status is zero if all OPTNAMES + are given with '-q', the return status is zero if all OPTNAMEs are enabled; non-zero otherwise. '-o' @@ -4448,7 +4736,7 @@ This builtin allows you to change additional shell optional behavior. Unless otherwise noted, the 'shopt' options are disabled (off) by default. - The return status when listing options is zero if all OPTNAMES are + The return status when listing options is zero if all OPTNAMEs are enabled, non-zero otherwise. When setting or unsetting options, the return status is zero unless an OPTNAME is not a valid shell option. @@ -4532,7 +4820,7 @@ This builtin allows you to change additional shell optional behavior. 'direxpand' If set, Bash replaces directory names with the results of word expansion when performing filename completion. This changes - the contents of the readline editing buffer. If not set, Bash + the contents of the Readline editing buffer. If not set, Bash attempts to preserve what the user typed. 'dirspell' @@ -4616,6 +4904,11 @@ This builtin allows you to change additional shell optional behavior. upper-case and lower-case ASCII characters will collate together. + 'globskipdots' + If set, filename expansion will never match the filenames '.' + and '..', even if the pattern begins with a '.'. This option + is enabled by default. + 'globstar' If set, the pattern '**' used in a filename expansion context will match all files and zero or more directories and @@ -4675,7 +4968,7 @@ This builtin allows you to change additional shell optional behavior. 'localvar_inherit' If set, local variables inherit the value and attributes of a variable of the same name that exists at a previous scope - before any new value is assigned. The NAMEREF attribute is + before any new value is assigned. The 'nameref' attribute is not inherited. 'localvar_unset' @@ -4706,14 +4999,26 @@ This builtin allows you to change additional shell optional behavior. 'nocasematch' If set, Bash matches patterns in a case-insensitive fashion when performing matching while executing 'case' or '[[' - conditional commands, when performing pattern substitution - word expansions, or when filtering possible completions as - part of programmable completion. + conditional commands (*note Conditional Constructs::, when + performing pattern substitution word expansions, or when + filtering possible completions as part of programmable + completion. + + 'noexpand_translation' + If set, Bash encloses the translated results of $"..." + quoting in single quotes instead of double quotes. If the + string is not translated, this has no effect. 'nullglob' If set, Bash allows filename patterns which match no files to expand to a null string, rather than themselves. + 'patsub_replacement' + If set, Bash expands occurrences of '&' in the replacement + string of pattern substitution to the text matched by the + pattern, as described above (*note Shell Parameter + Expansion::). This option is enabled by default. + 'progcomp' If set, the programmable completion facilities (*note Programmable Completion::) are enabled. This option is @@ -4745,9 +5050,15 @@ This builtin allows you to change additional shell optional behavior. parameters. 'sourcepath' - If set, the 'source' builtin uses the value of 'PATH' to find - the directory containing the file supplied as an argument. - This option is enabled by default. + If set, the '.' ('source') builtin uses the value of 'PATH' to + find the directory containing the file supplied as an + argument. This option is enabled by default. + + 'varredir_close' + If set, the shell automatically closes file descriptors + assigned using the '{varname}' redirection syntax (*note + Redirections::) instead of leaving them open when the command + completes. 'xpg_echo' If set, the 'echo' builtin expands backslash-escape sequences @@ -4980,7 +5291,7 @@ Variables::). 'BASH_LINENO' An array variable whose members are the line numbers in source - files where each corresponding member of FUNCNAME was invoked. + files where each corresponding member of 'FUNCNAME' was invoked. '${BASH_LINENO[$i]}' is the line number in the source file ('${BASH_SOURCE[$i+1]}') where '${FUNCNAME[$i]}' was called (or '${BASH_LINENO[$i-1]}' if referenced within another shell @@ -5017,10 +5328,10 @@ Variables::). to the array members are as follows: 'BASH_VERSINFO[0]' - The major version number (the RELEASE). + The major version number (the "release"). 'BASH_VERSINFO[1]' - The minor version number (the VERSION). + The minor version number (the "version"). 'BASH_VERSINFO[2]' The patch level. @@ -5029,7 +5340,7 @@ Variables::). The build version. 'BASH_VERSINFO[4]' - The release status (e.g., BETA1). + The release status (e.g., 'beta1'). 'BASH_VERSINFO[5]' The value of 'MACHTYPE'. @@ -5082,12 +5393,12 @@ Variables::). 'COMP_TYPE' Set to an integer value corresponding to the type of completion - attempted that caused a completion function to be called: TAB, for - normal completion, '?', for listing completions after successive - tabs, '!', for listing alternatives on partial word completion, - '@', to list completions if the word is not unmodified, or '%', for - menu completion. This variable is available only in shell - functions and external commands invoked by the programmable + attempted that caused a completion function to be called: , + for normal completion, '?', for listing completions after + successive tabs, '!', for listing alternatives on partial word + completion, '@', to list completions if the word is not unmodified, + or '%', for menu completion. This variable is available only in + shell functions and external commands invoked by the programmable completion facilities (*note Programmable Completion::). 'COMP_KEY' @@ -5133,7 +5444,7 @@ Variables::). Emacs shell buffer and disables line editing. 'ENV' - Expanded and executed similarlty to 'BASH_ENV' (*note Bash Startup + Expanded and executed similarly to 'BASH_ENV' (*note Bash Startup Files::) when an interactive shell is invoked in POSIX Mode (*note Bash POSIX Mode::). @@ -5141,16 +5452,16 @@ Variables::). Each time this parameter is referenced, it expands to the number of seconds since the Unix Epoch as a floating point value with micro-second granularity (see the documentation for the C library - function TIME for the definition of Epoch). Assignments to + function 'time' for the definition of Epoch). Assignments to 'EPOCHREALTIME' are ignored. If 'EPOCHREALTIME' is unset, it loses its special properties, even if it is subsequently reset. 'EPOCHSECONDS' Each time this parameter is referenced, it expands to the number of seconds since the Unix Epoch (see the documentation for the C - library function TIME for the definition of Epoch). Assignments to - 'EPOCHSECONDS' are ignored. If 'EPOCHSECONDS' is unset, it loses - its special properties, even if it is subsequently reset. + library function 'time' for the definition of Epoch). Assignments + to 'EPOCHSECONDS' are ignored. If 'EPOCHSECONDS' is unset, it + loses its special properties, even if it is subsequently reset. 'EUID' The numeric effective user id of the current user. This variable @@ -5217,7 +5528,7 @@ Variables::). 'histchars' Up to three characters which control history expansion, quick substitution, and tokenization (*note History Interaction::). The - first character is the HISTORY EXPANSION character, that is, the + first character is the "history expansion" character, that is, the character which signifies the start of a history expansion, normally '!'. The second character is the character which signifies 'quick substitution' when seen as the first character on @@ -5295,7 +5606,7 @@ Variables::). 'HISTTIMEFORMAT' If this variable is set and not null, its value is used as a format - string for STRFTIME to print the time stamp associated with each + string for 'strftime' to print the time stamp associated with each history entry displayed by the 'history' builtin. If this variable is set, time stamps are written to the history file so they may be preserved across shell sessions. This uses the history comment @@ -5449,7 +5760,7 @@ Variables::). with '#? ' 'PS4' - The value of this parameter is expanded like PS1 and the expanded + The value of this parameter is expanded like 'PS1' and the expanded value is the prompt printed before the command line is echoed when the '-x' option is set (*note The Set Builtin::). The first character of the expanded value is replicated multiple times, as @@ -5465,15 +5776,19 @@ Variables::). seeds the random number generator. If 'RANDOM' is unset, it loses its special properties, even if it is subsequently reset. +'READLINE_ARGUMENT' + Any numeric argument given to a Readline command that was defined + using 'bind -x' (*note Bash Builtins:: when it was invoked. + 'READLINE_LINE' The contents of the Readline line buffer, for use with 'bind -x' (*note Bash Builtins::). 'READLINE_MARK' - The position of the MARK (saved insertion point) in the Readline + The position of the "mark" (saved insertion point) in the Readline line buffer, for use with 'bind -x' (*note Bash Builtins::). The characters between the insertion point and the mark are often - called the REGION. + called the "region". 'READLINE_POINT' The position of the insertion point in the Readline line buffer, @@ -5487,7 +5802,7 @@ Variables::). started. Assignment to this variable resets the count to the value assigned, and the expanded value becomes the value assigned plus the number of seconds since the assignment. The number of seconds - at shell invocation and the current time is always determined by + at shell invocation and the current time are always determined by querying the system clock. If 'SECONDS' is unset, it loses its special properties, even if it is subsequently reset. @@ -5843,14 +6158,15 @@ Invoked by remote shell daemon .............................. Bash attempts to determine when it is being run with its standard input -connected to a network connection, as when executed by the remote shell -daemon, usually '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 neither 'rshd' nor 'sshd' generally invoke -the shell with those options or allow them to be specified. +connected to a network connection, as when executed by the historical +remote shell daemon, usually 'rshd', or the secure shell daemon 'sshd'. +If Bash determines it is being run non-interactively 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 neither 'rshd' nor 'sshd' +generally invoke the shell with those options or allow them to be +specified. Invoked with unequal effective and real UID/GIDs ................................................ @@ -5874,7 +6190,7 @@ File: bash.info, Node: Interactive Shells, Next: Bash Conditional Expressions, * What is an Interactive Shell?:: What determines whether a shell is Interactive. * Is this Shell Interactive?:: How to tell if a shell is interactive. -* Interactive Shell Behavior:: What changes in a interactive shell? +* Interactive Shell Behavior:: What changes in an interactive shell?  File: bash.info, Node: What is an Interactive Shell?, Next: Is this Shell Interactive?, Up: Interactive Shells @@ -5882,8 +6198,8 @@ File: bash.info, Node: What is an Interactive Shell?, Next: Is this Shell Inte 6.3.1 What is an Interactive Shell? ----------------------------------- -An interactive shell is one started without non-option arguments, unless -'-s' is specified, without specifying the '-c' option, and whose input +An interactive shell is one started without non-option arguments (unless +'-s' is specified) and without specifying the '-c' option, whose input and error output are both connected to terminals (as determined by 'isatty(3)'), or one started with the '-i' option. @@ -5941,7 +6257,7 @@ several ways. string escape sequences. 4. Bash executes the values of the set elements of the - 'PROMPT_COMMANDS' array variable as commands before printing the + 'PROMPT_COMMAND' array variable as commands before printing the primary prompt, '$PS1' (*note Bash Variables::). 5. Readline (*note Command Line Editing::) is used to read commands @@ -5993,9 +6309,11 @@ several ways. 19. Parser syntax errors will not cause the shell to exit. - 20. Simple spelling correction for directory arguments to the 'cd' - builtin is enabled by default (see the description of the 'cdspell' - option to the 'shopt' builtin in *note The Shopt Builtin::). + 20. If the 'cdspell' shell option is enabled, the shell will attempt + simple spelling correction for directory arguments to the 'cd' + builtin (see the description of the 'cdspell' option to the 'shopt' + builtin in *note The Shopt Builtin::). The 'cdspell' option is + only effective in interactive shells. 21. The shell will check the value of the 'TMOUT' variable and exit if a command is not read within the specified number of seconds after @@ -6007,10 +6325,11 @@ File: bash.info, Node: Bash Conditional Expressions, Next: Shell Arithmetic, 6.4 Bash Conditional Expressions ================================ -Conditional expressions are used by the '[[' compound command and the -'test' and '[' builtin commands. The 'test' and '[' commands determine -their behavior based on the number of arguments; see the descriptions of -those commands for any other command-specific actions. +Conditional expressions are used by the '[[' compound command (*note +Conditional Constructs::) and the 'test' and '[' builtin commands (*note +Bourne Shell Builtins::). The 'test' and '[' commands determine their +behavior based on the number of arguments; see the descriptions of those +commands for any other command-specific actions. Expressions may be unary or binary, and are formed from the following primaries. Unary expressions are often used to examine the status of a @@ -6228,8 +6547,8 @@ 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 INTEGER attribute using 'declare -i' is assigned a value. A -null value evaluates to 0. A shell variable need not have its INTEGER +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. Integer constants follow the C language definition, without suffixes @@ -6254,7 +6573,7 @@ File: bash.info, Node: Aliases, Next: Arrays, Prev: Shell Arithmetic, Up: Ba 6.6 Aliases =========== -ALIASES allow a string to be substituted for a word when it is used as +"Aliases" 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 'alias' and 'unalias' builtin commands. @@ -6269,15 +6588,15 @@ 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 'ls' to '"ls -F"', for instance, and Bash does not try to recursively expand the replacement text. If the last character of the alias value -is a BLANK, then the next command word following the alias is also +is a 'blank', then the next command word following the alias is also checked for alias expansion. Aliases are created and listed with the 'alias' command, and removed with the 'unalias' command. There is no mechanism for using arguments in the replacement text, as -in 'csh'. If arguments are needed, a shell function should be used -(*note Shell Functions::). +in 'csh'. If arguments are needed, use a shell function (*note Shell +Functions::). Aliases are not expanded when the shell is not interactive, unless the 'expand_aliases' shell option is set using 'shopt' (*note The Shopt @@ -6363,6 +6682,10 @@ negative number, that number is interpreted as relative to one greater than the maximum index of NAME, so negative indices count back from the end of the array, and an index of -1 references the last element. + The '+=' operator will append to an array variable when assigning +using the compound assignment syntax; see *note Shell Parameters:: +above. + Any element of an array may be referenced using '${NAME[SUBSCRIPT]}'. The braces are required to avoid conflicts with the shell's filename expansion operators. If the SUBSCRIPT is '@' or '*', the word expands @@ -6402,7 +6725,11 @@ NAME[SUBSCRIPT]' destroys the array element at index SUBSCRIPT. Negative subscripts to indexed arrays are interpreted as described above. Unsetting the last element of an array variable does not unset the variable. 'unset NAME', where NAME is an array, removes the entire -array. A subscript of '*' or '@' also removes the entire array. +array. 'unset NAME[SUBSCRIPT]' behaves differently depending on the +array type when given a subscript of '*' or '@'. When NAME is an +associative array, it removes the element with key '*' or '@'. If NAME +is an indexed array, 'unset' removes all of the elements, but does not +remove the array itself. When using a variable name with a subscript as an argument to a command, such as with 'unset', without using the word expansion syntax @@ -6477,10 +6804,14 @@ File: bash.info, Node: Directory Stack Builtins, Up: The Directory Stack 'popd' popd [-n] [+N | -N] + Removes elements from the directory stack. The elements are + numbered from 0 starting at the first directory listed by 'dirs'; + that is, 'popd' is equivalent to 'popd +0'. + When no arguments are given, 'popd' removes the top directory from - the stack and performs a 'cd' to the new top directory. The - elements are numbered from 0 starting at the first directory listed - with 'dirs'; that is, 'popd' is equivalent to 'popd +0'. + the stack and changes to the new top directory. + + Arguments, if supplied, have the following meanings: '-n' Suppresses the normal change of directory when removing @@ -6488,17 +6819,32 @@ File: bash.info, Node: Directory Stack Builtins, Up: The Directory Stack manipulated. '+N' Removes the Nth directory (counting from the left of the list - printed by 'dirs'), starting with zero. + printed by 'dirs'), starting with zero, from the stack. '-N' Removes the Nth directory (counting from the right of the list - printed by 'dirs'), starting with zero. + printed by 'dirs'), starting with zero, from the stack. + + If the top element of the directory stack is modified, and the '-n' + option was not supplied, 'popd' uses the 'cd' builtin to change to + the directory at the top of the stack. If the 'cd' fails, 'popd' + returns a non-zero value. + + Otherwise, 'popd' returns an unsuccessful status if an invalid + option is encountered, the directory stack is empty, or a + non-existent directory stack entry is specified. + + If the 'popd' command is successful, Bash runs 'dirs' to show the + final contents of the directory stack, and the return status is 0. 'pushd' pushd [-n] [+N | -N | DIR] - Save the current directory on the top of the directory stack and - then 'cd' to DIR. With no arguments, 'pushd' exchanges the top two - directories and makes the new top the current directory. + 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, 'pushd' exchanges the top two + elements of the directory stack. + + Arguments, if supplied, have the following meanings: '-n' Suppresses the normal change of directory when rotating or @@ -6513,9 +6859,20 @@ File: bash.info, Node: Directory Stack Builtins, Up: The Directory Stack printed by 'dirs', starting with zero) to the top of the list by rotating the stack. 'DIR' - Makes DIR be the top of the stack, making it the new current - directory as if it had been supplied as an argument to the - 'cd' builtin. + Makes DIR be the top of the stack. + + After the stack has been modified, if the '-n' option was not + supplied, 'pushd' uses the 'cd' builtin to change to the directory + at the top of the stack. If the 'cd' fails, 'pushd' returns a + non-zero value. + + Otherwise, if no arguments are supplied, 'pushd' returns 0 unless + the directory stack is empty. When rotating the directory stack, + 'pushd' returns 0 unless the directory stack is empty or a + non-existent directory stack element is specified. + + If the 'pushd' command is successful, Bash runs 'dirs' to show the + final contents of the directory stack.  File: bash.info, Node: Controlling the Prompt, Next: The Restricted Shell, Prev: The Directory Stack, Up: Bash Features @@ -6523,9 +6880,9 @@ File: bash.info, Node: Controlling the Prompt, Next: The Restricted Shell, Pr 6.9 Controlling the Prompt ========================== -Bash examines the value of the array variable 'PROMPT_COMMANDS' just +Bash examines the value of the array variable 'PROMPT_COMMAND' just before printing each primary prompt. If any elements in -'PROMPT_COMMANDS' are set and non-null, Bash executes each value, in +'PROMPT_COMMAND' are set and non-null, Bash executes each value, in numeric order, just as if it had been typed on the command line. In addition, the following table describes the special characters @@ -6571,8 +6928,8 @@ which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4': '\V' The release of Bash, version + patchlevel (e.g., 2.00.0) '\w' - The current working directory, with '$HOME' abbreviated with a - tilde (uses the '$PROMPT_DIRTRIM' variable). + The value of the 'PWD' shell variable ('$PWD'), with '$HOME' + abbreviated with a tilde (uses the '$PROMPT_DIRTRIM' variable). '\W' The basename of '$PWD', with '$HOME' abbreviated with a tilde. '\!' @@ -6638,7 +6995,8 @@ with the exception that the following are disallowed or not performed: * Using the 'enable' builtin command to enable disabled shell builtins. * Specifying the '-p' option to the 'command' builtin. - * Turning off restricted mode with 'set +r' or 'set +o restricted'. + * Turning off restricted mode with 'set +r' or 'shopt -u + restricted_shell'. These restrictions are enforced after any startup files are read. @@ -6649,11 +7007,11 @@ spawned to execute the script. The restricted shell mode is only one component of a useful restricted environment. It should be accompanied by setting 'PATH' to a value that allows execution of only a few verified commands (commands -that allow shell escapes are particularly vulnerable), leaving the user -in a non-writable directory other than his home directory after login, -not allowing the restricted shell to execute shell scripts, and cleaning -the environment of variables that cause some commands to modify their -behavior (e.g., 'VISUAL' or 'PAGER'). +that allow shell escapes are particularly vulnerable), changing the +current directory to a non-writable directory other than '$HOME' after +login, not allowing the restricted shell to execute shell scripts, and +cleaning the environment of variables that cause some commands to modify +their behavior (e.g., 'VISUAL' or 'PAGER'). Modern systems provide more secure ways to implement a restricted environment, such as 'jails', 'zones', or 'containers'. @@ -6696,203 +7054,219 @@ startup files. 7. Reserved words appearing in a context where reserved words are recognized do not undergo alias expansion. - 8. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number + 8. Alias expansion is performed when initially parsing a command + substitution. The default mode generally defers it, when enabled, + until the command substitution is executed. This means that + command substitution will not expand aliases that are defined after + the command substitution is initially parsed (e.g., as part of a + function definition). + + 9. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number and '!!' to '!' are enabled, and parameter expansion is performed on the values of 'PS1' and 'PS2' regardless of the setting of the 'promptvars' option. - 9. The POSIX startup files are executed ('$ENV') rather than the + 10. The POSIX startup files are executed ('$ENV') rather than the normal Bash files. - 10. Tilde expansion is only performed on assignments preceding a + 11. Tilde expansion is only performed on assignments preceding a command name, rather than on all assignment statements on the line. - 11. The default history file is '~/.sh_history' (this is the default + 12. The default history file is '~/.sh_history' (this is the default value of '$HISTFILE'). - 12. Redirection operators do not perform filename expansion on the + 13. Redirection operators do not perform filename expansion on the word in the redirection unless the shell is interactive. - 13. Redirection operators do not perform word splitting on the word in + 14. Redirection operators do not perform word splitting on the word in the redirection. - 14. Function names must be valid shell 'name's. That is, they may not + 15. Function names must be valid shell 'name's. That is, they may not contain characters other than letters, digits, and underscores, and may not start with a digit. Declaring a function with an invalid name causes a fatal syntax error in non-interactive shells. - 15. Function names may not be the same as one of the POSIX special + 16. Function names may not be the same as one of the POSIX special builtins. - 16. POSIX special builtins are found before shell functions during + 17. POSIX special builtins are found before shell functions during command lookup. - 17. When printing shell function definitions (e.g., by 'type'), Bash + 18. When printing shell function definitions (e.g., by 'type'), Bash does not print the 'function' keyword. - 18. Literal tildes that appear as the first character in elements of + 19. Literal tildes that appear as the first character in elements of the 'PATH' variable are not expanded as described above under *note Tilde Expansion::. - 19. The 'time' reserved word may be used by itself as a command. When + 20. The 'time' reserved word may be used by itself as a command. When used in this way, it displays timing statistics for the shell and its completed children. The 'TIMEFORMAT' variable controls the format of the timing information. - 20. When parsing and expanding a ${...} expansion that appears within + 21. When parsing and expanding a ${...} expansion that appears within double quotes, single quotes are no longer special and cannot be used to quote a closing brace or other special character, unless the operator is one of those defined to perform pattern removal. In this case, they do not have to appear as matched pairs. - 21. The parser does not recognize 'time' as a reserved word if the + 22. The parser does not recognize 'time' as a reserved word if the next token begins with a '-'. - 22. The '!' character does not introduce history expansion within a + 23. The '!' character does not introduce history expansion within a double-quoted string, even if the 'histexpand' option is enabled. - 23. If a POSIX special builtin returns an error status, a + 24. If a POSIX special builtin returns an error status, a non-interactive shell exits. The fatal errors are those listed in the POSIX standard, and include things like passing incorrect options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. - 24. A non-interactive shell exits with an error status if a variable + 25. 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. - 25. A non-interactive shell exits with an error status if a variable + 26. A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a - special builtin, but not with any other simple command. + special builtin, but not with any other simple command. For any + other simple command, the shell aborts execution of that command, + and execution continues at the top level ("the shell shall not + perform any further processing of the command in which the error + occurred"). - 26. A non-interactive shell exits with an error status if the + 27. 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. - 27. Non-interactive shells exit if FILENAME in '.' FILENAME is not + 28. Non-interactive shells exit if FILENAME in '.' FILENAME is not found. - 28. Non-interactive shells exit if a syntax error in an arithmetic + 29. Non-interactive shells exit if a syntax error in an arithmetic expansion results in an invalid expression. - 29. Non-interactive shells exit if a parameter expansion error occurs. + 30. Non-interactive shells exit if a parameter expansion error occurs. - 30. Non-interactive shells exit if there is a syntax error in a script + 31. Non-interactive shells exit if there is a syntax error in a script read with the '.' or 'source' builtins, or in a string processed by the 'eval' builtin. - 31. While variable indirection is available, it may not be applied to + 32. While variable indirection is available, it may not be applied to the '#' and '?' special parameters. - 32. When expanding the '*' special parameter in a pattern context - where the expansion is double-quoted does not treat the '$*' as if - it were double-quoted. + 33. Expanding the '*' special parameter in a pattern context where the + expansion is double-quoted does not treat the '$*' as if it were + double-quoted. - 33. Assignment statements preceding POSIX special builtins persist in + 34. Assignment statements preceding POSIX special builtins persist in the shell environment after the builtin completes. - 34. The 'command' builtin does not prevent builtins that take + 35. The 'command' builtin does not prevent builtins that take assignment statements as arguments from expanding them as assignment statements; when not in POSIX mode, assignment builtins lose their assignment statement expansion properties when preceded by 'command'. - 35. The 'bg' builtin uses the required format to describe each job + 36. The 'bg' builtin uses the required format to describe each job placed in the background, which does not include an indication of whether the job is the current or previous job. - 36. The output of 'kill -l' prints all the signal names on a single + 37. The output of 'kill -l' prints all the signal names on a single line, separated by spaces, without the 'SIG' prefix. - 37. The 'kill' builtin does not accept signal names with a 'SIG' + 38. The 'kill' builtin does not accept signal names with a 'SIG' prefix. - 38. The 'export' and 'readonly' builtin commands display their output + 39. The 'export' and 'readonly' builtin commands display their output in the format required by POSIX. - 39. The 'trap' builtin displays signal names without the leading + 40. The 'trap' builtin displays signal names without the leading 'SIG'. - 40. The 'trap' builtin doesn't check the first argument for a possible + 41. The 'trap' builtin doesn't check the first argument for a possible signal specification and revert the signal handling to the original disposition if it is, unless that argument consists solely of digits and is a valid signal number. If users want to reset the handler for a given signal to the original disposition, they should use '-' as the first argument. - 41. 'trap -p' displays signals whose dispositions are set to SIG_DFL + 42. 'trap -p' displays signals whose dispositions are set to SIG_DFL and those that were ignored when the shell started. - 42. The '.' and 'source' builtins do not search the current directory + 43. The '.' and 'source' builtins do not search the current directory for the filename argument if it is not found by searching 'PATH'. - 43. Enabling POSIX mode has the effect of setting the + 44. Enabling POSIX mode has the effect of setting the 'inherit_errexit' option, so subshells spawned to execute command substitutions inherit the value of the '-e' option from the parent shell. When the 'inherit_errexit' option is not enabled, Bash clears the '-e' option in such subshells. - 44. Enabling POSIX mode has the effect of setting the 'shift_verbose' + 45. Enabling POSIX mode has the effect of setting the 'shift_verbose' option, so numeric arguments to 'shift' that exceed the number of positional parameters will result in an error message. - 45. When the 'alias' builtin displays alias definitions, it does not + 46. When the 'alias' builtin displays alias definitions, it does not display them with a leading 'alias ' unless the '-p' option is supplied. - 46. When the 'set' builtin is invoked without options, it does not + 47. When the 'set' builtin is invoked without options, it does not display shell function names and definitions. - 47. When the 'set' builtin is invoked without options, it displays + 48. When the 'set' builtin is invoked without options, it displays variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. - 48. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname + 49. When the 'cd' builtin is invoked in logical mode, and the pathname constructed from '$PWD' and the directory name supplied as an argument does not refer to an existing directory, 'cd' will fail - instead of falling back to PHYSICAL mode. + instead of falling back to physical mode. - 49. When the 'cd' builtin cannot change a directory because the length + 50. When the 'cd' builtin cannot change a directory because the length of the pathname constructed from '$PWD' and the directory name - supplied as an argument exceeds PATH_MAX when all symbolic links + supplied as an argument exceeds 'PATH_MAX' when all symbolic links are expanded, 'cd' will fail instead of attempting to use only the supplied directory name. - 50. The 'pwd' builtin verifies that the value it prints is the same as + 51. 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. - 51. When listing the history, the 'fc' builtin does not include an + 52. When listing the history, the 'fc' builtin does not include an indication of whether or not a history entry has been modified. - 52. The default editor used by 'fc' is 'ed'. + 53. The default editor used by 'fc' is 'ed'. - 53. The 'type' and 'command' builtins will not report a non-executable + 54. 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'. - 54. The 'vi' editing mode will invoke the 'vi' editor directly when + 55. The 'vi' editing mode will invoke the 'vi' editor directly when the 'v' command is run, instead of checking '$VISUAL' and '$EDITOR'. - 55. When the 'xpg_echo' option is enabled, Bash does not attempt to + 56. 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. - 56. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' + 57. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' and '-f' options. - 57. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + 58. 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. - 58. The 'read' builtin may be interrupted by a signal for which a trap + 59. The 'read' builtin may be interrupted by a signal for which a trap has been set. If Bash receives a trapped signal while executing 'read', the trap handler executes and 'read' returns an exit status greater than 128. - 59. Bash removes an exited background process's status from the list + 60. The 'printf' builtin uses 'double' (via 'strtod') to convert + arguments corresponding to floating point conversion specifiers, + instead of 'long double' if it's available. The 'L' length + modifier forces 'printf' to use 'long double' if it's available. + + 61. Bash removes an exited background process's status from the list of such statuses after the 'wait' builtin is used to obtain it. There is other POSIX behavior that Bash does not implement by default @@ -6915,7 +7289,7 @@ File: bash.info, Node: Shell Compatibility Mode, Prev: Bash POSIX Mode, Up: B 6.12 Shell Compatibility Mode ============================= -Bash-4.0 introduced the concept of a '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', 'compat41', and so on). There is only one current compatibility level - each option is mutually exclusive. The @@ -6927,7 +7301,7 @@ be a temporary solution. This section 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). +word, which is default behavior in bash-3.2 and subsequent versions). If a user enables, say, 'compat32', it may affect the behavior of other compatibility levels up to and including the current compatibility @@ -7004,8 +7378,8 @@ required for bash-5.1 and later versions. 'compat43' * the shell does not print a warning message if an attempt is made to use a quoted compound assignment as an argument to - declare (declare -a foo='(1 2)'). Later versions warn that - this usage is deprecated + declare (e.g., declare -a foo='(1 2)'). Later versions warn + that this usage is deprecated * word expansion errors are considered non-fatal errors that cause the current command to fail, even in posix mode (the default behavior is to make them fatal errors that cause the @@ -7040,6 +7414,38 @@ required for bash-5.1 and later versions. when producing output that can be reused as input. Bash-5.1 suppresses that message when the '-l' option is supplied. +'compat51 (set using BASH_COMPAT)' + * The 'unset' builtin will unset the array 'a' given an argument + like 'a[@]'. Bash-5.2 will unset an element with key '@' + (associative arrays) or remove all the elements without + unsetting the array (indexed arrays) + * arithmetic commands ( ((...)) ) and the expressions in an + arithmetic for statement can be expanded more than once + * expressions used as arguments to arithmetic operators in the + '[[' conditional command can be expanded more than once + * the expressions in substring parameter brace expansion can be + expanded more than once + * the expressions in the $(( ... )) word expansion can be + expanded more than once + * arithmetic expressions used as indexed array subscripts can be + expanded more than once + * 'test -v', when given an argument of 'A[@]', where A is an + existing associative array, will return true if the array has + any set elements. Bash-5.2 will look for and report on a key + named '@' + * the ${PARAMETER[:]=VALUE} word expansion will return VALUE, + before any variable-specific transformations have been + performed (e.g., converting to lowercase). Bash-5.2 will + return the final value assigned to the variable. + * Parsing command substitutions will behave as if extended glob + (*note The Shopt Builtin::) is enabled, so that parsing a + command substitution containing an extglob pattern (say, as + part of a shell function) will not fail. This assumes the + intent is to enable extglob before the command is executed and + word expansions are performed. It will fail at word expansion + time if extglob hasn't been enabled by the time the command is + executed. +  File: bash.info, Node: Job Control, Next: Command Line Editing, Prev: Bash Features, Up: Top @@ -7093,19 +7499,19 @@ when 'stty tostop' is in effect) the terminal are sent a 'SIGTTIN' caught, suspends the process. If the operating system on which Bash is running supports job -control, Bash contains facilities to use it. Typing the SUSPEND +control, Bash contains facilities to use it. Typing the "suspend" character (typically '^Z', Control-Z) while a process is running causes that process to be stopped and returns control to Bash. Typing the -DELAYED SUSPEND character (typically '^Y', Control-Y) causes the process -to be stopped when it attempts to read input from the terminal, and -control to be returned to Bash. The user then manipulates the state of -this job, using the 'bg' command to continue it in the background, the -'fg' command to continue it in the foreground, or the 'kill' command to -kill it. A '^Z' takes effect immediately, and has the additional side -effect of causing pending output and typeahead to be discarded. +"delayed suspend" character (typically '^Y', Control-Y) causes the +process to be stopped when it attempts to read input from the terminal, +and control to be returned to Bash. The user then manipulates the state +of this job, using the 'bg' command to continue it in the background, +the 'fg' command to continue it in the foreground, or the 'kill' command +to kill it. A '^Z' 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 -character '%' introduces a job specification (JOBSPEC). +character '%' introduces a job specification ("jobspec"). Job number 'n' may be referred to as '%n'. The symbols '%%' and '%+' refer to the shell's notion of the current job, which is the last job @@ -7234,7 +7640,7 @@ File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Pre for all running background jobs and the last-executed process substitution, if its process id is the same as $!, and the return status is zero. If the '-n' option is supplied, 'wait' waits for a - single job from the list of PIDS or JOBSPECS or, if no arguments + single job from the list of PIDs or JOBSPECs or, if no arguments are supplied, any job, to complete and returns its exit status. If none of the supplied arguments is a child of the shell, or if no arguments are supplied and the shell has no unwaited-for children, @@ -7245,9 +7651,12 @@ File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Pre assignment. This is useful only when the '-n' option is supplied. Supplying the '-f' option, when job control is enabled, forces 'wait' to wait for each PID or JOBSPEC to terminate before - returning its status, intead of returning when it changes status. + returning its status, instead of returning when it changes status. If neither JOBSPEC nor PID specifies an active child process of the - shell, the return status is 127. + shell, the return status is 127. If 'wait' is interrupted by a + signal, the return status will be greater than 128, as described + above (*note Signals::). Otherwise, the return status is the exit + status of the last process or job waited for. 'disown' disown [-ar] [-h] [JOBSPEC ... | PID ... ] @@ -7265,8 +7674,11 @@ File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Pre suspend [-f] Suspend the execution of this shell until it receives a 'SIGCONT' - signal. A login shell cannot be suspended; the '-f' option can be - used to override this and force the suspension. + signal. A login shell, or a shell without job control enabled, + cannot be suspended; the '-f' option can be used to override this + and force the suspension. The return status is 0 unless the shell + is a login shell or job control is not enabled and '-f' is not + supplied. When job control is not active, the 'kill' and 'wait' builtins do not accept JOBSPEC arguments. They must be supplied process IDs. @@ -7427,9 +7839,9 @@ Printing characters Undo the last editing command. You can undo all the way back to an empty line. -(Depending on your configuration, the key be set to delete -the character to the left of the cursor and the key set to delete -the character underneath the cursor, like 'C-d', rather than the +(Depending on your configuration, the key might be set to +delete the character to the left of the cursor and the key set to +delete the character underneath the cursor, like 'C-d', rather than the character to the left of the cursor.)  @@ -7491,9 +7903,9 @@ available to be yanked back later, when you are typing another line. as those used by 'M-f'. 'M-' - Kill from the cursor the start of the current word, or, if between - words, to the start of the previous word. Word boundaries are the - same as those used by 'M-b'. + Kill from the cursor to the start of the current word, or, if + between words, to the start of the previous word. Word boundaries + are the same as those used by 'M-b'. 'C-w' Kill from the cursor to the previous whitespace. This is different @@ -7582,7 +7994,7 @@ File: bash.info, Node: Readline Init File, Next: Bindable Readline Commands, Although the Readline library comes with a set of Emacs-like keybindings installed by default, it is possible to use a different set of keybindings. Any user can customize programs that use Readline by -putting commands in an "inputrc" file, conventionally in his home +putting commands in an "inputrc" file, conventionally in their home directory. The name of this file is taken from the value of the shell variable 'INPUTRC'. If that variable is unset, the default is '~/.inputrc'. If that file does not exist or cannot be read, the @@ -7641,6 +8053,32 @@ Variable Settings A great deal of run-time behavior is changeable with the following variables. + 'active-region-start-color' + A string variable that controls the text color and background + when displaying the text in the active region (see the + description of 'enable-active-region' below). This string + must not take up any physical character positions on the + display, so it should consist only of terminal escape + sequences. It is output to the terminal before displaying the + text in the active region. This variable is reset to the + default value whenever the terminal type changes. The default + value is the string that puts the terminal in standout mode, + as obtained from the terminal's terminfo description. A + sample value might be '\e[01;33m'. + + 'active-region-end-color' + A string variable that "undoes" the effects of + 'active-region-start-color' and restores "normal" terminal + display appearance after displaying text in the active region. + This string must not take up any physical character positions + on the display, so it should consist only of terminal escape + sequences. It is output to the terminal after displaying the + text in the active region. This variable is reset to the + default value whenever the terminal type changes. The default + value is the string that restores the terminal from standout + mode, as obtained from the terminal's terminfo description. A + sample value might be '\e[0m'. + 'bell-style' Controls what happens when Readline wants to ring the terminal bell. If set to 'none', Readline never rings the bell. If @@ -7662,7 +8100,10 @@ Variable Settings If set to 'on', when listing completions, Readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the - value of the 'LS_COLORS' environment variable. The default is + value of the 'LS_COLORS' environment variable. If there is a + color definition in 'LS_COLORS' for the custom suffix + 'readline-colored-completion-prefix', Readline uses this color + for the common prefix instead of its default. The default is 'off'. 'colored-stats' @@ -7708,8 +8149,9 @@ Variable Settings than or equal to this value, Readline will ask whether or not the user wishes to view them; otherwise, they are simply listed. This variable must be set to an integer value greater - than or equal to 0. A negative value means Readline should - never ask. The default limit is '100'. + than or equal to zero. A zero value means Readline should + never ask; negative values are treated as zero. The default + limit is '100'. 'convert-meta' If set to 'on', Readline will convert characters with the @@ -7717,7 +8159,9 @@ Variable Settings eighth bit and prefixing an character, converting them to a meta-prefixed key sequence. The default value is 'on', but will be set to 'off' if the locale is one that contains - eight-bit characters. + eight-bit characters. This variable is dependent on the + 'LC_CTYPE' locale category, and may change if the locale is + changed. 'disable-completion' If set to 'On', Readline will inhibit word completion. @@ -7726,7 +8170,7 @@ Variable Settings 'echo-control-characters' When set to 'on', on operating systems that indicate they - support it, readline echoes a character corresponding to a + support it, Readline echoes a character corresponding to a signal generated from the keyboard. The default is 'on'. 'editing-mode' @@ -7745,13 +8189,27 @@ Variable Settings non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is '@'. + 'enable-active-region' + The "point" is the current cursor position, and "mark" refers + to a saved cursor position (*note Commands For Moving::). The + text between the point and mark is referred to as the + "region". When this variable is set to 'On', Readline allows + certain commands to designate the region as "active". When + the region is active, Readline highlights the text in the + region using the value of the 'active-region-start-color', + which defaults to the string that enables the terminal's + standout mode. The active region shows the text inserted by + bracketed-paste and any matching text found by incremental and + non-incremental history searches. The default is 'On'. + 'enable-bracketed-paste' - When set to 'On', Readline will configure the terminal in a - way that will enable it to insert each paste into the editing - buffer as a single string of characters, instead of treating - each character as if it had been read from the keyboard. This - can prevent pasted characters from being interpreted as - editing commands. The default is 'On'. + When set to 'On', Readline configures the terminal to insert + each paste into the editing buffer as a single string of + characters, instead of treating each character as if it had + been read from the keyboard. This is called putting the + terminal into "bracketed paste mode"; it prevents Readline + from executing any editing commands bound to key sequences + appearing in the pasted text. The default is 'On'. 'enable-keypad' When set to 'on', Readline will try to enable the application @@ -7798,7 +8256,9 @@ Variable Settings regardless of what the terminal claims it can support. The default value is 'off', but Readline will set it to 'on' if the locale contains eight-bit characters. The name - 'meta-flag' is a synonym for this variable. + 'meta-flag' is a synonym for this variable. This variable is + dependent on the 'LC_CTYPE' locale category, and may change if + the locale is changed. 'isearch-terminators' The string of characters that should terminate an incremental @@ -7863,7 +8323,9 @@ Variable Settings If set to 'on', Readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape sequence. The default is 'off', but Readline will set it to - 'on' if the locale contains eight-bit characters. + 'on' if the locale contains eight-bit characters. This + variable is dependent on the 'LC_CTYPE' locale category, and + may change if the locale is changed. 'page-completions' If set to 'on', Readline uses an internal 'more'-like pager to @@ -7879,7 +8341,8 @@ Variable Settings If set to 'on', Readline will undo all changes to history lines before returning when 'accept-line' is executed. By default, history lines may be modified and retain individual - undo lists across calls to 'readline'. The default is 'off'. + undo lists across calls to 'readline()'. The default is + 'off'. 'show-all-if-ambiguous' This alters the default behavior of the completion functions. @@ -7906,7 +8369,7 @@ Variable Settings If set to 'on', 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 + 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. For instance, if this is enabled, attempting @@ -7956,11 +8419,11 @@ Key Bindings part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable. - 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 MACRO). The 'bind -p' command displays Readline function names and bindings - in a format that can put directly into an initialization file. + in a format that can be put directly into an initialization file. *Note Bash Builtins::. KEYNAME: FUNCTION-NAME or MACRO @@ -8438,6 +8901,11 @@ File: bash.info, Node: Commands For History, Next: Commands For Text, Prev: C supplied, specifies the history entry to use instead of the current line. +'fetch-history ()' + With a numeric argument, fetch that entry from the history list and + make it the current line. Without an argument, move back to the + first entry in the history list. +  File: bash.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands @@ -8754,7 +9222,7 @@ File: bash.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: C characters in the macro appear as if typed at the keyboard. 'print-last-kbd-macro ()' - Print the last keboard macro defined in a format suitable for the + Print the last keyboard macro defined in a format suitable for the INPUTRC file.  @@ -8801,12 +9269,12 @@ File: bash.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bin 'character-search (C-])' A character is read and point is moved to the next occurrence of - that character. A negative count searches for previous + that character. A negative argument searches for previous occurrences. 'character-search-backward (M-C-])' A character is read and point is moved to the previous occurrence - of that character. A negative count searches for subsequent + of that character. A negative argument searches for subsequent occurrences. 'skip-csi-sequence ()' @@ -8814,7 +9282,7 @@ File: bash.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bin 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 "\e[", keys producing such sequences will have - no effect unless explicitly bound to a readline command, instead of + 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-[. @@ -8849,6 +9317,12 @@ File: bash.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bin is formatted in such a way that it can be made part of an INPUTRC file. This command is unbound by default. +'spell-correct-word (C-x s)' + Perform spelling correction on the current word, treating it as a + directory or filename, in the same way as the 'cdspell' shell + option. Word boundaries are the same as those used by + 'shell-forward-word'. + 'glob-complete-word (M-g)' The word before point is treated as a pattern for pathname expansion, with an asterisk implicitly appended. This pattern is @@ -9249,7 +9723,8 @@ happening. '-C COMMAND' COMMAND is executed in a subshell environment, and its output - is used as the possible completions. + is used as the possible completions. Arguments are passed as + with the '-F' option. '-F FUNCTION' The shell function FUNCTION is executed in the current shell @@ -9411,7 +9886,7 @@ CDPATH: Readline can't tell those completions are directories). The '-o nospace' option tells Readline to not append a space character to the directory name, in case we want to append to it. The '-o bashdefault' option brings in the rest of the "Bash default" completions - possible -completion that Bash adds to the default Readline set. These include +completions that Bash adds to the default Readline set. These include things like command name completion, variable completion for words beginning with '$' or '${', completions containing pathname expansion patterns (*note Filename Expansion::), and so on. @@ -9578,9 +10053,9 @@ history file. -d' command. '-d START-END' - Delete the history entries between positions START and END, - inclusive. Positive and negative values for START and END are - interpreted as described above. + Delete the range of history entries between positions START + and END, inclusive. Positive and negative values for START + and END are interpreted as described above. '-a' Append the new history lines to the history file. These are @@ -9609,9 +10084,14 @@ history file. The ARGs are added to the end of the history list as a single entry. - When any of the '-w', '-r', '-a', or '-n' options is used, if - FILENAME is given, then it is used as the history file. If not, - then the value of the 'HISTFILE' variable is used. + If a FILENAME argument is supplied when any of the '-w', '-r', + '-a', or '-n' options is used, Bash uses FILENAME as the history + file. If not, then the value of the 'HISTFILE' variable is used. + + The return value is 0 unless an invalid option is encountered, an + error occurs while reading or writing the history file, an invalid + OFFSET or range is supplied as an argument to '-d', or the history + expansion supplied as an argument to '-p' fails.  File: bash.info, Node: History Interaction, Prev: Bash History Builtins, Up: Using History Interactively @@ -9828,7 +10308,7 @@ or edit, the word or words selected from the history event. '&' appears in NEW, it is replaced by OLD. A single backslash will quote the '&'. If OLD is null, it is set to the last OLD substituted, or, if no previous history substitutions took place, - the last STRING in a !?STRING'[?]' search. If NEW is is null, each + the last STRING in a !?STRING'[?]' search. If NEW is null, each matching OLD is deleted. The final delimiter is optional if it is the last character on the input line. @@ -9897,20 +10377,28 @@ These are installation instructions for Bash. 3. Optionally, type 'make tests' to run the Bash test suite. 4. Type 'make install' to install 'bash' and 'bashbug'. This will - also install the manual pages and Info file. + also install the manual pages and Info file, message translation + files, some supplemental documentation, a number of example + loadable builtin commands, and a set of header files for developing + loadable builtins. You may need additional privileges to install + 'bash' to your desired destination, so 'sudo make install' might be + required. More information about controlling the locations where + 'bash' and other files are installed is below (*note Installation + Names::). The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a 'Makefile' in each directory of the package -(the top directory, the 'builtins', 'doc', and 'support' directories, -each directory under 'lib', and several others). It also creates a -'config.h' file containing system-dependent definitions. Finally, it -creates a shell script named 'config.status' that you can run in the -future to recreate the current configuration, a file 'config.cache' that -saves the results of its tests to speed up reconfiguring, and a file -'config.log' containing compiler output (useful mainly for debugging -'configure'). If at some point 'config.cache' contains results you -don't want to keep, you may remove or edit it. +(the top directory, the 'builtins', 'doc', 'po', and 'support' +directories, each directory under 'lib', and several others). It also +creates a 'config.h' file containing system-dependent definitions. +Finally, it creates a shell script named 'config.status' that you can +run in the future to recreate the current configuration, a file +'config.cache' that saves the results of its tests to speed up +reconfiguring, and a file 'config.log' containing compiler output +(useful mainly for debugging 'configure'). If at some point +'config.cache' contains results you don't want to keep, you may remove +or edit it. To find out more about the options and arguments that the 'configure' script understands, type @@ -9941,7 +10429,7 @@ considered for the next release. The file 'configure.ac' is used to create 'configure' by a program called Autoconf. You only need 'configure.ac' if you want to change it or regenerate 'configure' using a newer version of Autoconf. If you do -this, make sure you are using Autoconf version 2.50 or newer. +this, make sure you are using Autoconf version 2.69 or newer. You can remove the program binaries and object files from the source code directory by typing 'make clean'. To also remove the files that @@ -9984,7 +10472,7 @@ need to supply the '--srcdir=PATH' argument to tell 'configure' where the source files are. 'configure' automatically checks for the source code in the directory that 'configure' is in and in '..'. - If you have to use a 'make' that does not supports the 'VPATH' + If you have to use a 'make' that does not support the 'VPATH' variable, you can compile Bash for one architecture at a time in the source code directory. After you have installed Bash for one architecture, use 'make distclean' before reconfiguring for another @@ -10009,10 +10497,13 @@ File: bash.info, Node: Installation Names, Next: Specifying the System Type, ======================= By default, 'make install' will install into '/usr/local/bin', -'/usr/local/man', etc. You can specify an installation prefix other -than '/usr/local' by giving 'configure' the option '--prefix=PATH', or -by specifying a value for the 'DESTDIR' 'make' variable when running -'make install'. +'/usr/local/man', etc.; that is, the "installation prefix" defaults to +'/usr/local'. You can specify an installation prefix other than +'/usr/local' by giving 'configure' the option '--prefix=PATH', or by +specifying a value for the 'prefix' 'make' variable when running 'make +install' (e.g., 'make install prefix=PATH'). The 'prefix' variable +provides a default for 'exec_prefix' and other variables used when +installing bash. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you @@ -10020,6 +10511,30 @@ give 'configure' the option '--exec-prefix=PATH', 'make install' will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. + If you would like to change the installation locations for a single +run, you can specify these variables as arguments to 'make': 'make +install exec_prefix=/' will install 'bash' and 'bashbug' into '/bin' +instead of the default '/usr/local/bin'. + + If you want to see the files bash will install and where it will +install them without changing anything on your system, specify the +variable 'DESTDIR' as an argument to 'make'. Its value should be the +absolute directory path you'd like to use as the root of your sample +installation tree. For example, + + mkdir /fs1/bash-install + make install DESTDIR=/fs1/bash-install + +will install 'bash' into '/fs1/bash-install/usr/local/bin/bash', the +documentation into directories within +'/fs1/bash-install/usr/local/share', the example loadable builtins into +'/fs1/bash-install/usr/local/lib/bash', and so on. You can use the +usual 'exec_prefix' and 'prefix' variables to alter the directory paths +beneath the value of 'DESTDIR'. + + The GNU Makefile standards provide a more complete description of +these variables and their effects. +  File: bash.info, Node: Specifying the System Type, Next: Sharing Defaults, Prev: Installation Names, Up: Installing Bash @@ -10027,7 +10542,7 @@ File: bash.info, Node: Specifying the System Type, Next: Sharing Defaults, Pr =============================== There may be some features 'configure' can not figure out automatically, -but need to determine by the type of host Bash will run on. Usually +but needs to determine by the type of host Bash will run on. Usually 'configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the '--host=TYPE' option. 'TYPE' can either be a short name for the system type, such as 'sun4', or a @@ -10135,16 +10650,20 @@ the Bash 'configure' recognizes. subdirectories of that directory (include files in PREFIX/'include' and the library in PREFIX/'lib'). -'--with-purify' - Define this to use the Purify memory allocation checker from - Rational Software. +'--with-libintl-prefix[=PREFIX]' + Define this to make Bash link with a locally-installed version of + the libintl library instead of the version in 'lib/intl'. + +'--with-libiconv-prefix[=PREFIX]' + Define this to make Bash look for libiconv in PREFIX instead of the + standard system locations. There is no version included with Bash. '--enable-minimal-config' This produces a shell with minimal features, close to the historical Bourne shell. - There are several '--enable-' options that alter how Bash is compiled -and linked, rather than changing run-time features. + There are several '--enable-' options that alter how Bash is +compiled, linked, and installed, rather than changing run-time features. '--enable-largefile' Enable support for large files @@ -10157,6 +10676,10 @@ and linked, rather than changing run-time features. This builds a Bash binary that produces profiling information to be processed by 'gprof' each time it is executed. +'--enable-separate-helpfiles' + Use external files for the documentation displayed by the 'help' + builtin instead of storing the text internally. + '--enable-static-link' This causes Bash to be linked statically, if 'gcc' is being used. This could be used to build a version to use as root's shell. @@ -10165,14 +10688,21 @@ and linked, rather than changing run-time features. following options, but it is processed first, so individual options may be enabled using 'enable-FEATURE'. - All of the following options except for 'disabled-builtins', -'direxpand-default', and 'xpg-echo-default' are enabled by default, -unless the operating system does not provide the necessary support. + All of the following options except for 'alt-array-implementation', +'disabled-builtins', 'direxpand-default', 'strict-posix-default', and +'xpg-echo-default' are enabled by default, unless the operating system +does not provide the necessary support. '--enable-alias' Allow alias expansion and include the 'alias' and 'unalias' builtins (*note Aliases::). +'--enable-alt-array-implementation' + This builds bash using an alternate implementation of arrays (*note + Arrays::) that provides faster access at the expense of using more + memory (sometimes many times more, depending on how sparse an array + is). + '--enable-arith-for-command' Include support for the alternate form of the 'for' command that behaves like the C language 'for' statement (*note Looping @@ -10192,7 +10722,7 @@ unless the operating system does not provide the necessary support. '--enable-casemod-attributes' Include support for case-modifying attributes in the 'declare' - builtin and assignment statements. Variables with the UPPERCASE + builtin and assignment statements. Variables with the 'uppercase' attribute, for example, will have their values converted to uppercase upon assignment. @@ -10251,7 +10781,7 @@ unless the operating system does not provide the necessary support. described above under *note Pattern Matching::. '--enable-extended-glob-default' - Set the default value of the EXTGLOB shell option described above + Set the default value of the 'extglob' shell option described above under *note The Shopt Builtin:: to be enabled. '--enable-function-import' @@ -10260,10 +10790,10 @@ unless the operating system does not provide the necessary support. enabled by default. '--enable-glob-asciirange-default' - Set the default value of the GLOBASCIIRANGES shell option described - above under *note The Shopt Builtin:: to be enabled. This controls - the behavior of character ranges when used in pattern matching - bracket expressions. + Set the default value of the 'globasciiranges' shell option + described above under *note The Shopt Builtin:: to be enabled. + This controls the behavior of character ranges when used in pattern + matching bracket expressions. '--enable-help-builtin' Include the 'help' builtin, which displays help on shell builtins @@ -10314,10 +10844,6 @@ unless the operating system does not provide the necessary support. Include the 'select' compound command, which allows the generation of simple menus (*note Conditional Constructs::). -'--enable-separate-helpfiles' - Use external files for the documentation displayed by the 'help' - builtin instead of storing the text internally. - '--enable-single-help-strings' Store the text displayed by the 'help' builtin as a single string for each help topic. This aids in translating the text to @@ -10327,6 +10853,10 @@ unless the operating system does not provide the necessary support. '--enable-strict-posix-default' Make Bash POSIX-conformant by default (*note Bash POSIX Mode::). +'--enable-translatable-strings' + Enable support for '$"STRING"' translatable strings (*note Locale + Translation::). + '--enable-usg-echo-default' A synonym for '--enable-xpg-echo-default'. @@ -10353,7 +10883,8 @@ Appendix A Reporting Bugs Please report all bugs you find in Bash. But first, you should make sure that it really is a bug, and that it appears in the latest version of Bash. The latest version of Bash is always available for FTP from -. + and from +. Once you have determined that a bug actually exists, use the 'bashbug' command to submit a bug report. If you have a fix, you are @@ -10479,15 +11010,15 @@ the baseline reference. substring of 'var''s value of length LENGTH, beginning at OFFSET, is present (*note Shell Parameter Expansion::). - * The expansion '${var/[/]'PATTERN'[/'REPLACEMENT']}', which matches - PATTERN and replaces it with REPLACEMENT in the value of 'var', is + * The expansion '${VAR/[/]'PATTERN'[/'REPLACEMENT']}', which matches + PATTERN and replaces it with REPLACEMENT in the value of VAR, is available (*note Shell Parameter Expansion::). * The expansion '${!PREFIX*}' expansion, which expands to the names of all shell variables whose names begin with PREFIX, is available (*note Shell Parameter Expansion::). - * Bash has INDIRECT variable expansion using '${!word}' (*note Shell + * Bash has indirect variable expansion using '${!word}' (*note Shell Parameter Expansion::). * Bash can expand positional parameters beyond '$9' using '${NUM}'. @@ -10513,8 +11044,8 @@ the baseline reference. shell uses only '!'. * Bash implements the full set of POSIX filename expansion operators, - including CHARACTER CLASSES, EQUIVALENCE CLASSES, and COLLATING - SYMBOLS (*note Filename Expansion::). + including character classes, equivalence classes, and collating + symbols (*note Filename Expansion::). * Bash implements extended pattern matching features when the 'extglob' shell option is enabled (*note Pattern Matching::). @@ -10631,7 +11162,7 @@ the baseline reference. * Bash includes the 'caller' builtin, which displays the context of any active subroutine call (a shell function or a script executed - with the '.' or 'source' builtins). This supports the bash + with the '.' or 'source' builtins). This supports the Bash debugger. * The 'trap' builtin (*note Bourne Shell Builtins::) allows a 'DEBUG' @@ -10653,7 +11184,7 @@ the baseline reference. The 'trap' builtin (*note Bourne Shell Builtins::) allows a 'RETURN' pseudo-signal specification, similar to 'EXIT' and - 'DEBUG'. Commands specified with an 'RETURN' trap are executed + 'DEBUG'. Commands specified with a 'RETURN' trap are executed before execution resumes after a shell function or a shell script executed with '.' or 'source' returns. The 'RETURN' trap is not inherited by shell functions unless the function has been given the @@ -11252,94 +11783,94 @@ D.1 Index of Shell Builtin Commands * :: Bourne Shell Builtins. (line 11) * [: Bourne Shell Builtins. - (line 270) + (line 275) * alias: Bash Builtins. (line 11) * bg: Job Control Builtins. (line 7) * bind: Bash Builtins. (line 21) * break: Bourne Shell Builtins. - (line 36) -* builtin: Bash Builtins. (line 104) -* caller: Bash Builtins. (line 113) + (line 37) +* builtin: Bash Builtins. (line 108) +* caller: Bash Builtins. (line 117) * cd: Bourne Shell Builtins. - (line 44) -* command: Bash Builtins. (line 130) + (line 45) +* command: Bash Builtins. (line 134) * compgen: Programmable Completion Builtins. (line 12) * complete: Programmable Completion Builtins. (line 30) * compopt: Programmable Completion Builtins. - (line 237) + (line 238) * continue: Bourne Shell Builtins. - (line 85) -* declare: Bash Builtins. (line 150) + (line 90) +* declare: Bash Builtins. (line 154) * dirs: Directory Stack Builtins. (line 7) * disown: Job Control Builtins. - (line 101) -* echo: Bash Builtins. (line 253) -* enable: Bash Builtins. (line 302) + (line 104) +* echo: Bash Builtins. (line 257) +* enable: Bash Builtins. (line 306) * eval: Bourne Shell Builtins. - (line 94) + (line 99) * exec: Bourne Shell Builtins. - (line 102) + (line 107) * exit: Bourne Shell Builtins. - (line 120) + (line 125) * export: Bourne Shell Builtins. - (line 127) + (line 132) * fc: Bash History Builtins. (line 10) * fg: Job Control Builtins. (line 17) * getopts: Bourne Shell Builtins. - (line 143) + (line 148) * hash: Bourne Shell Builtins. - (line 187) -* help: Bash Builtins. (line 331) + (line 192) +* help: Bash Builtins. (line 342) * history: Bash History Builtins. (line 46) * jobs: Job Control Builtins. (line 27) * kill: Job Control Builtins. (line 58) -* let: Bash Builtins. (line 350) -* local: Bash Builtins. (line 358) -* logout: Bash Builtins. (line 374) -* mapfile: Bash Builtins. (line 379) +* let: Bash Builtins. (line 361) +* local: Bash Builtins. (line 369) +* logout: Bash Builtins. (line 385) +* mapfile: Bash Builtins. (line 390) * popd: Directory Stack Builtins. (line 35) -* printf: Bash Builtins. (line 425) +* printf: Bash Builtins. (line 436) * pushd: Directory Stack Builtins. - (line 53) + (line 69) * pwd: Bourne Shell Builtins. - (line 207) -* read: Bash Builtins. (line 474) -* readarray: Bash Builtins. (line 570) + (line 212) +* read: Bash Builtins. (line 488) +* readarray: Bash Builtins. (line 585) * readonly: Bourne Shell Builtins. - (line 217) + (line 222) * return: Bourne Shell Builtins. - (line 236) + (line 241) * set: The Set Builtin. (line 11) * shift: Bourne Shell Builtins. - (line 257) + (line 262) * shopt: The Shopt Builtin. (line 9) -* source: Bash Builtins. (line 579) +* source: Bash Builtins. (line 594) * suspend: Job Control Builtins. - (line 113) + (line 116) * test: Bourne Shell Builtins. - (line 270) + (line 275) * times: Bourne Shell Builtins. - (line 349) + (line 360) * trap: Bourne Shell Builtins. - (line 355) -* type: Bash Builtins. (line 584) -* typeset: Bash Builtins. (line 616) -* ulimit: Bash Builtins. (line 622) + (line 366) +* type: Bash Builtins. (line 599) +* typeset: Bash Builtins. (line 631) +* ulimit: Bash Builtins. (line 637) * umask: Bourne Shell Builtins. - (line 404) -* unalias: Bash Builtins. (line 728) + (line 415) +* unalias: Bash Builtins. (line 743) * unset: Bourne Shell Builtins. - (line 422) + (line 433) * wait: Job Control Builtins. (line 76) @@ -11354,9 +11885,9 @@ D.2 Index of Shell Reserved Words * !: Pipelines. (line 9) * [[: Conditional Constructs. - (line 125) + (line 126) * ]]: Conditional Constructs. - (line 125) + (line 126) * {: Command Grouping. (line 21) * }: Command Grouping. (line 21) * case: Conditional Constructs. @@ -11378,7 +11909,7 @@ D.2 Index of Shell Reserved Words * in: Conditional Constructs. (line 28) * select: Conditional Constructs. - (line 83) + (line 84) * then: Conditional Constructs. (line 7) * time: Pipelines. (line 9) @@ -11394,24 +11925,28 @@ D.3 Parameter and Variable Index [index] * Menu: -* !: Special Parameters. (line 56) +* !: Special Parameters. (line 55) * #: Special Parameters. (line 39) * $: Special Parameters. (line 51) -* $!: Special Parameters. (line 57) +* $!: Special Parameters. (line 56) * $#: Special Parameters. (line 40) * $$: Special Parameters. (line 52) * $*: Special Parameters. (line 10) * $-: Special Parameters. (line 47) -* $0: Special Parameters. (line 62) +* $0: Special Parameters. (line 61) * $?: Special Parameters. (line 43) * $@: Special Parameters. (line 23) * $_: Bash Variables. (line 14) * *: Special Parameters. (line 9) * -: Special Parameters. (line 46) -* 0: Special Parameters. (line 61) +* 0: Special Parameters. (line 60) * ?: Special Parameters. (line 42) * @: Special Parameters. (line 22) * _: Bash Variables. (line 13) +* active-region-end-color: Readline Init File Syntax. + (line 51) +* active-region-start-color: Readline Init File Syntax. + (line 38) * auto_resume: Job Control Variables. (line 6) * BASH: Bash Variables. (line 23) @@ -11435,31 +11970,31 @@ D.3 Parameter and Variable Index * BASH_VERSION: Bash Variables. (line 181) * BASH_XTRACEFD: Bash Variables. (line 184) * bell-style: Readline Init File Syntax. - (line 38) + (line 64) * bind-tty-special-chars: Readline Init File Syntax. - (line 45) + (line 71) * blink-matching-paren: Readline Init File Syntax. - (line 50) + (line 76) * CDPATH: Bourne Shell Variables. (line 9) * CHILD_MAX: Bash Variables. (line 195) * colored-completion-prefix: Readline Init File Syntax. - (line 55) + (line 81) * colored-stats: Readline Init File Syntax. - (line 62) + (line 91) * COLUMNS: Bash Variables. (line 202) * comment-begin: Readline Init File Syntax. - (line 68) + (line 97) * completion-display-width: Readline Init File Syntax. - (line 73) + (line 102) * completion-ignore-case: Readline Init File Syntax. - (line 80) + (line 109) * completion-map-case: Readline Init File Syntax. - (line 85) + (line 114) * completion-prefix-display-length: Readline Init File Syntax. - (line 91) + (line 120) * completion-query-items: Readline Init File Syntax. - (line 98) + (line 127) * COMPREPLY: Bash Variables. (line 254) * COMP_CWORD: Bash Variables. (line 208) * COMP_KEY: Bash Variables. (line 237) @@ -11469,29 +12004,31 @@ D.3 Parameter and Variable Index * COMP_WORDBREAKS: Bash Variables. (line 241) * COMP_WORDS: Bash Variables. (line 247) * convert-meta: Readline Init File Syntax. - (line 108) + (line 138) * COPROC: Bash Variables. (line 260) * DIRSTACK: Bash Variables. (line 264) * disable-completion: Readline Init File Syntax. - (line 116) + (line 148) * echo-control-characters: Readline Init File Syntax. - (line 121) + (line 153) * editing-mode: Readline Init File Syntax. - (line 126) + (line 158) * EMACS: Bash Variables. (line 274) * emacs-mode-string: Readline Init File Syntax. - (line 132) + (line 164) +* enable-active-region: Readline Init File Syntax. + (line 174) * enable-bracketed-paste: Readline Init File Syntax. - (line 142) + (line 187) * enable-keypad: Readline Init File Syntax. - (line 150) + (line 196) * ENV: Bash Variables. (line 279) * EPOCHREALTIME: Bash Variables. (line 284) * EPOCHSECONDS: Bash Variables. (line 292) * EUID: Bash Variables. (line 299) * EXECIGNORE: Bash Variables. (line 303) * expand-tilde: Readline Init File Syntax. - (line 161) + (line 207) * FCEDIT: Bash Variables. (line 316) * FIGNORE: Bash Variables. (line 320) * FUNCNAME: Bash Variables. (line 326) @@ -11505,15 +12042,15 @@ D.3 Parameter and Variable Index * HISTFILESIZE: Bash Variables. (line 402) * HISTIGNORE: Bash Variables. (line 413) * history-preserve-point: Readline Init File Syntax. - (line 165) + (line 211) * history-size: Readline Init File Syntax. - (line 171) + (line 217) * HISTSIZE: Bash Variables. (line 433) * HISTTIMEFORMAT: Bash Variables. (line 440) * HOME: Bourne Shell Variables. (line 13) * horizontal-scroll-mode: Readline Init File Syntax. - (line 180) + (line 226) * HOSTFILE: Bash Variables. (line 448) * HOSTNAME: Bash Variables. (line 459) * HOSTTYPE: Bash Variables. (line 462) @@ -11521,18 +12058,21 @@ D.3 Parameter and Variable Index (line 18) * IGNOREEOF: Bash Variables. (line 465) * input-meta: Readline Init File Syntax. - (line 189) + (line 235) * INPUTRC: Bash Variables. (line 475) * INSIDE_EMACS: Bash Variables. (line 479) * isearch-terminators: Readline Init File Syntax. - (line 197) + (line 245) * keymap: Readline Init File Syntax. - (line 204) -* LANG: Bash Variables. (line 485) + (line 252) +* LANG: Creating Internationalized Scripts. + (line 51) +* LANG <1>: Bash Variables. (line 485) * LC_ALL: Bash Variables. (line 489) * LC_COLLATE: Bash Variables. (line 493) * LC_CTYPE: Bash Variables. (line 500) -* LC_MESSAGES: Locale Translation. (line 15) +* LC_MESSAGES: Creating Internationalized Scripts. + (line 51) * LC_MESSAGES <1>: Bash Variables. (line 505) * LC_NUMERIC: Bash Variables. (line 509) * LC_TIME: Bash Variables. (line 513) @@ -11546,15 +12086,15 @@ D.3 Parameter and Variable Index (line 27) * MAPFILE: Bash Variables. (line 540) * mark-modified-lines: Readline Init File Syntax. - (line 234) + (line 282) * mark-symlinked-directories: Readline Init File Syntax. - (line 239) + (line 287) * match-hidden-files: Readline Init File Syntax. - (line 244) + (line 292) * menu-complete-display-prefix: Readline Init File Syntax. - (line 251) + (line 299) * meta-flag: Readline Init File Syntax. - (line 189) + (line 235) * OLDPWD: Bash Variables. (line 544) * OPTARG: Bourne Shell Variables. (line 34) @@ -11563,9 +12103,9 @@ D.3 Parameter and Variable Index (line 38) * OSTYPE: Bash Variables. (line 551) * output-meta: Readline Init File Syntax. - (line 256) + (line 304) * page-completions: Readline Init File Syntax. - (line 262) + (line 312) * PATH: Bourne Shell Variables. (line 42) * PIPESTATUS: Bash Variables. (line 554) @@ -11582,37 +12122,40 @@ D.3 Parameter and Variable Index * PS4: Bash Variables. (line 595) * PWD: Bash Variables. (line 603) * RANDOM: Bash Variables. (line 606) -* READLINE_LINE: Bash Variables. (line 612) -* READLINE_MARK: Bash Variables. (line 616) -* READLINE_POINT: Bash Variables. (line 622) -* REPLY: Bash Variables. (line 626) +* READLINE_ARGUMENT: Bash Variables. (line 612) +* READLINE_LINE: Bash Variables. (line 616) +* READLINE_MARK: Bash Variables. (line 620) +* READLINE_POINT: Bash Variables. (line 626) +* REPLY: Bash Variables. (line 630) * revert-all-at-newline: Readline Init File Syntax. - (line 272) -* SECONDS: Bash Variables. (line 629) -* SHELL: Bash Variables. (line 638) -* SHELLOPTS: Bash Variables. (line 643) -* SHLVL: Bash Variables. (line 652) + (line 322) +* SECONDS: Bash Variables. (line 633) +* SHELL: Bash Variables. (line 642) +* SHELLOPTS: Bash Variables. (line 647) +* SHLVL: Bash Variables. (line 656) * show-all-if-ambiguous: Readline Init File Syntax. - (line 278) + (line 329) * show-all-if-unmodified: Readline Init File Syntax. - (line 284) + (line 335) * show-mode-in-prompt: Readline Init File Syntax. - (line 293) + (line 344) * skip-completed-text: Readline Init File Syntax. - (line 299) -* SRANDOM: Bash Variables. (line 657) -* TEXTDOMAIN: Locale Translation. (line 15) -* TEXTDOMAINDIR: Locale Translation. (line 15) -* TIMEFORMAT: Bash Variables. (line 666) -* TMOUT: Bash Variables. (line 704) -* TMPDIR: Bash Variables. (line 716) -* UID: Bash Variables. (line 720) + (line 350) +* SRANDOM: Bash Variables. (line 661) +* TEXTDOMAIN: Creating Internationalized Scripts. + (line 51) +* TEXTDOMAINDIR: Creating Internationalized Scripts. + (line 51) +* TIMEFORMAT: Bash Variables. (line 670) +* TMOUT: Bash Variables. (line 708) +* TMPDIR: Bash Variables. (line 720) +* UID: Bash Variables. (line 724) * vi-cmd-mode-string: Readline Init File Syntax. - (line 312) + (line 363) * vi-ins-mode-string: Readline Init File Syntax. - (line 323) + (line 374) * visible-stats: Readline Init File Syntax. - (line 334) + (line 385)  File: bash.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes @@ -11628,7 +12171,7 @@ D.4 Function Index * accept-line (Newline or Return): Commands For History. (line 6) * alias-expand-line (): Miscellaneous Commands. - (line 125) + (line 131) * backward-char (C-b): Commands For Moving. (line 15) * backward-delete-char (Rubout): Commands For Text. (line 17) * backward-kill-line (C-x Rubout): Commands For Killing. @@ -11677,7 +12220,7 @@ D.4 Function Index (line 57) * digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) * display-shell-version (C-x C-v): Miscellaneous Commands. - (line 110) + (line 116) * do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands. (line 14) * downcase-word (M-l): Commands For Text. (line 62) @@ -11690,7 +12233,7 @@ D.4 Function Index * dynamic-complete-history (M-): Commands For Completion. (line 90) * edit-and-execute-command (C-x C-e): Miscellaneous Commands. - (line 134) + (line 140) * end-kbd-macro (C-x )): Keyboard Macros. (line 9) * end-of-file (usually C-d): Commands For Text. (line 6) * end-of-history (M->): Commands For History. @@ -11698,21 +12241,23 @@ D.4 Function Index * end-of-line (C-e): Commands For Moving. (line 9) * exchange-point-and-mark (C-x C-x): Miscellaneous Commands. (line 37) +* fetch-history (): Commands For History. + (line 103) * forward-backward-delete-char (): Commands For Text. (line 21) * forward-char (C-f): Commands For Moving. (line 12) * forward-search-history (C-s): Commands For History. (line 33) * forward-word (M-f): Commands For Moving. (line 18) * glob-complete-word (M-g): Miscellaneous Commands. - (line 92) -* glob-expand-word (C-x *): Miscellaneous Commands. (line 98) -* glob-list-expansions (C-x g): Miscellaneous Commands. +* glob-expand-word (C-x *): Miscellaneous Commands. (line 104) +* glob-list-expansions (C-x g): Miscellaneous Commands. + (line 110) * history-and-alias-expand-line (): Miscellaneous Commands. - (line 128) + (line 134) * history-expand-line (M-^): Miscellaneous Commands. - (line 118) + (line 124) * history-search-backward (): Commands For History. (line 57) * history-search-forward (): Commands For History. @@ -11726,7 +12271,7 @@ D.4 Function Index * insert-completions (M-*): Commands For Completion. (line 22) * insert-last-argument (M-. or M-_): Miscellaneous Commands. - (line 131) + (line 137) * kill-line (C-k): Commands For Killing. (line 6) * kill-region (): Commands For Killing. @@ -11736,7 +12281,7 @@ D.4 Function Index * kill-word (M-d): Commands For Killing. (line 23) * magic-space (): Miscellaneous Commands. - (line 121) + (line 127) * menu-complete (): Commands For Completion. (line 26) * menu-complete-backward (): Commands For Completion. @@ -11784,7 +12329,7 @@ D.4 Function Index (line 37) * shell-backward-word (M-C-b): Commands For Moving. (line 30) * shell-expand-line (M-C-e): Miscellaneous Commands. - (line 113) + (line 119) * shell-forward-word (M-C-f): Commands For Moving. (line 26) * shell-kill-word (M-C-d): Commands For Killing. (line 32) @@ -11792,6 +12337,8 @@ D.4 Function Index (line 41) * skip-csi-sequence (): Miscellaneous Commands. (line 52) +* spell-correct-word (C-x s): Miscellaneous Commands. + (line 92) * start-kbd-macro (C-x (): Keyboard Macros. (line 6) * tilde-expand (M-&): Miscellaneous Commands. (line 30) @@ -11913,6 +12460,8 @@ D.5 Concept Index * interactive shell: Invoking Bash. (line 131) * interactive shell <1>: Interactive Shells. (line 6) * internationalization: Locale Translation. (line 6) +* internationalized scripts: Creating Internationalized Scripts. + (line 3) * job: Definitions. (line 38) * job control: Definitions. (line 42) * job control <1>: Job Control Basics. (line 6) @@ -11968,6 +12517,8 @@ D.5 Concept Index * special builtin: Definitions. (line 82) * special builtin <1>: Special Builtins. (line 6) * startup files: Bash Startup Files. (line 6) +* string translations: Creating Internationalized Scripts. + (line 3) * suspending jobs: Job Control Basics. (line 6) * tilde expansion: Tilde Expansion. (line 6) * token: Definitions. (line 86) @@ -11983,137 +12534,138 @@ D.5 Concept Index  Tag Table: -Node: Top895 -Node: Introduction2813 -Node: What is Bash?3029 -Node: What is a shell?4143 -Node: Definitions6681 -Node: Basic Shell Features9632 -Node: Shell Syntax10851 -Node: Shell Operation11877 -Node: Quoting13170 -Node: Escape Character14470 -Node: Single Quotes14955 -Node: Double Quotes15303 -Node: ANSI-C Quoting16581 -Node: Locale Translation17840 -Node: Comments18993 -Node: Shell Commands19611 -Node: Reserved Words20549 -Node: Simple Commands21305 -Node: Pipelines21959 -Node: Lists24891 -Node: Compound Commands26682 -Node: Looping Constructs27694 -Node: Conditional Constructs30189 -Node: Command Grouping41760 -Node: Coprocesses43239 -Node: GNU Parallel45142 -Node: Shell Functions49443 -Node: Shell Parameters56650 -Node: Positional Parameters61063 -Node: Special Parameters61963 -Node: Shell Expansions65187 -Node: Brace Expansion67310 -Node: Tilde Expansion70033 -Node: Shell Parameter Expansion72650 -Node: Command Substitution87779 -Node: Arithmetic Expansion89134 -Node: Process Substitution90066 -Node: Word Splitting91186 -Node: Filename Expansion93130 -Node: Pattern Matching95679 -Node: Quote Removal99665 -Node: Redirections99960 -Node: Executing Commands109530 -Node: Simple Command Expansion110200 -Node: Command Search and Execution112154 -Node: Command Execution Environment114530 -Node: Environment117514 -Node: Exit Status119173 -Node: Signals120843 -Node: Shell Scripts122810 -Node: Shell Builtin Commands125822 -Node: Bourne Shell Builtins127860 -Node: Bash Builtins148789 -Node: Modifying Shell Behavior178898 -Node: The Set Builtin179243 -Node: The Shopt Builtin189656 -Node: Special Builtins204566 -Node: Shell Variables205545 -Node: Bourne Shell Variables205982 -Node: Bash Variables208086 -Node: Bash Features240720 -Node: Invoking Bash241733 -Node: Bash Startup Files247746 -Node: Interactive Shells252849 -Node: What is an Interactive Shell?253259 -Node: Is this Shell Interactive?253908 -Node: Interactive Shell Behavior254723 -Node: Bash Conditional Expressions258237 -Node: Shell Arithmetic262814 -Node: Aliases265754 -Node: Arrays268374 -Node: The Directory Stack274383 -Node: Directory Stack Builtins275167 -Node: Controlling the Prompt278135 -Node: The Restricted Shell281085 -Node: Bash POSIX Mode283679 -Node: Shell Compatibility Mode294715 -Node: Job Control301371 -Node: Job Control Basics301831 -Node: Job Control Builtins306827 -Node: Job Control Variables312227 -Node: Command Line Editing313383 -Node: Introduction and Notation315054 -Node: Readline Interaction316677 -Node: Readline Bare Essentials317868 -Node: Readline Movement Commands319651 -Node: Readline Killing Commands320611 -Node: Readline Arguments322529 -Node: Searching323573 -Node: Readline Init File325759 -Node: Readline Init File Syntax327018 -Node: Conditional Init Constructs347556 -Node: Sample Init File351752 -Node: Bindable Readline Commands354876 -Node: Commands For Moving356080 -Node: Commands For History358131 -Node: Commands For Text362924 -Node: Commands For Killing366573 -Node: Numeric Arguments369606 -Node: Commands For Completion370745 -Node: Keyboard Macros374936 -Node: Miscellaneous Commands375623 -Node: Readline vi Mode381307 -Node: Programmable Completion382214 -Node: Programmable Completion Builtins389994 -Node: A Programmable Completion Example400689 -Node: Using History Interactively405936 -Node: Bash History Facilities406620 -Node: Bash History Builtins409625 -Node: History Interaction414354 -Node: Event Designators417974 -Node: Word Designators419328 -Node: Modifiers421088 -Node: Installing Bash422899 -Node: Basic Installation424036 -Node: Compilers and Options427294 -Node: Compiling For Multiple Architectures428035 -Node: Installation Names429728 -Node: Specifying the System Type430546 -Node: Sharing Defaults431262 -Node: Operation Controls431935 -Node: Optional Features432893 -Node: Reporting Bugs443411 -Node: Major Differences From The Bourne Shell444605 -Node: GNU Free Documentation License461457 -Node: Indexes486634 -Node: Builtin Index487088 -Node: Reserved Word Index493915 -Node: Variable Index496363 -Node: Function Index512260 -Node: Concept Index525770 +Node: Top896 +Node: Introduction2815 +Node: What is Bash?3028 +Node: What is a shell?4139 +Node: Definitions6674 +Node: Basic Shell Features9622 +Node: Shell Syntax10838 +Node: Shell Operation11861 +Node: Quoting13151 +Node: Escape Character14452 +Node: Single Quotes14934 +Node: Double Quotes15279 +Node: ANSI-C Quoting16554 +Node: Locale Translation17861 +Node: Creating Internationalized Scripts19169 +Node: Comments23283 +Node: Shell Commands23898 +Node: Reserved Words24833 +Node: Simple Commands25586 +Node: Pipelines26237 +Node: Lists29233 +Node: Compound Commands31025 +Node: Looping Constructs32034 +Node: Conditional Constructs34526 +Node: Command Grouping49011 +Node: Coprocesses50486 +Node: GNU Parallel53146 +Node: Shell Functions54060 +Node: Shell Parameters61942 +Node: Positional Parameters66327 +Node: Special Parameters67226 +Node: Shell Expansions70437 +Node: Brace Expansion72561 +Node: Tilde Expansion75292 +Node: Shell Parameter Expansion77910 +Node: Command Substitution96258 +Node: Arithmetic Expansion97610 +Node: Process Substitution98575 +Node: Word Splitting99692 +Node: Filename Expansion101633 +Node: Pattern Matching104379 +Node: Quote Removal109378 +Node: Redirections109670 +Node: Executing Commands119327 +Node: Simple Command Expansion119994 +Node: Command Search and Execution122101 +Node: Command Execution Environment124476 +Node: Environment127508 +Node: Exit Status129168 +Node: Signals130949 +Node: Shell Scripts134395 +Node: Shell Builtin Commands137419 +Node: Bourne Shell Builtins139454 +Node: Bash Builtins160917 +Node: Modifying Shell Behavior191770 +Node: The Set Builtin192112 +Node: The Shopt Builtin202710 +Node: Special Builtins218619 +Node: Shell Variables219595 +Node: Bourne Shell Variables220029 +Node: Bash Variables222130 +Node: Bash Features254942 +Node: Invoking Bash255952 +Node: Bash Startup Files261962 +Node: Interactive Shells267090 +Node: What is an Interactive Shell?267498 +Node: Is this Shell Interactive?268144 +Node: Interactive Shell Behavior268956 +Node: Bash Conditional Expressions272582 +Node: Shell Arithmetic277221 +Node: Aliases280162 +Node: Arrays282772 +Node: The Directory Stack289160 +Node: Directory Stack Builtins289941 +Node: Controlling the Prompt294198 +Node: The Restricted Shell297160 +Node: Bash POSIX Mode299767 +Node: Shell Compatibility Mode311682 +Node: Job Control320246 +Node: Job Control Basics320703 +Node: Job Control Builtins325702 +Node: Job Control Variables331494 +Node: Command Line Editing332647 +Node: Introduction and Notation334315 +Node: Readline Interaction335935 +Node: Readline Bare Essentials337123 +Node: Readline Movement Commands338909 +Node: Readline Killing Commands339866 +Node: Readline Arguments341784 +Node: Searching342825 +Node: Readline Init File345008 +Node: Readline Init File Syntax346266 +Node: Conditional Init Constructs369849 +Node: Sample Init File374042 +Node: Bindable Readline Commands377163 +Node: Commands For Moving378364 +Node: Commands For History380412 +Node: Commands For Text385403 +Node: Commands For Killing389049 +Node: Numeric Arguments392079 +Node: Commands For Completion393215 +Node: Keyboard Macros397403 +Node: Miscellaneous Commands398088 +Node: Readline vi Mode404030 +Node: Programmable Completion404934 +Node: Programmable Completion Builtins412711 +Node: A Programmable Completion Example423460 +Node: Using History Interactively428705 +Node: Bash History Facilities429386 +Node: Bash History Builtins432388 +Node: History Interaction437409 +Node: Event Designators441026 +Node: Word Designators442377 +Node: Modifiers444134 +Node: Installing Bash445939 +Node: Basic Installation447073 +Node: Compilers and Options450792 +Node: Compiling For Multiple Architectures451530 +Node: Installation Names453219 +Node: Specifying the System Type455325 +Node: Sharing Defaults456039 +Node: Operation Controls456709 +Node: Optional Features457664 +Node: Reporting Bugs468880 +Node: Major Differences From The Bourne Shell470152 +Node: GNU Free Documentation License486998 +Node: Indexes512172 +Node: Builtin Index512623 +Node: Reserved Word Index519447 +Node: Variable Index521892 +Node: Function Index538663 +Node: Concept Index552444  End Tag Table diff --git a/doc/bash.pdf b/doc/bash.pdf index d8d784ee7..b8f7dd695 100644 Binary files a/doc/bash.pdf and b/doc/bash.pdf differ diff --git a/doc/bash.ps b/doc/bash.ps index bd38ef3be..b6a4bbe85 100644 --- a/doc/bash.ps +++ b/doc/bash.ps @@ -1,13 +1,13 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.4 -%%CreationDate: Wed Nov 18 15:13:06 2020 +%%CreationDate: Mon Sep 19 12:02:42 2022 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Courier %%+ font Symbol %%DocumentSuppliedResources: procset grops 1.22 4 -%%Pages: 83 +%%Pages: 87 %%PageOrder: Ascend %%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait @@ -245,7 +245,7 @@ BP 108 96 Q(ain SHell)-.05 E F1(SYNOPSIS)72 112.8 Q/F2 10/Times-Bold@0 SF (bash)108 124.8 Q F0([options] [command_string | \214le])2.5 E F1 (COPYRIGHT)72 141.6 Q F0(Bash is Cop)108 153.6 Q -(yright \251 1989-2020 by the Free Softw)-.1 E(are F)-.1 E +(yright \251 1989-2022 by the Free Softw)-.1 E(are F)-.1 E (oundation, Inc.)-.15 E F1(DESCRIPTION)72 170.4 Q F2(Bash)108 182.4 Q F0 .973(is an)3.474 F F2(sh)3.473 E F0 .973 (-compatible command language interpreter that e)B -.15(xe)-.15 G .973 @@ -339,8 +339,8 @@ F .475(xtended deb)-.15 F(ug-)-.2 E 1.598(instead of the standard personal initialization \214le)4.279 F F3 (~/.bashr)3.598 E(c)-.37 E F0 1.598(if the)4.408 F(shell is interacti) 144 710.4 Q .3 -.15(ve \()-.25 H(see).15 E F4(INV)2.5 E(OCA)-.405 E -(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(1)195.395 E 0 Cg EP +(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(1)190.115 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP @@ -409,9 +409,9 @@ F4(INV)72 463.2 Q(OCA)-.493 E(TION)-1.04 E F0(A)108 475.2 Q F2(lo)2.5 E 108 492 Q F2(inter)2.734 E(active)-.15 E F0 .234 (shell is one started without non-option ar)2.734 F .234 (guments \(unless)-.18 F F12.734 E F0 .233 -(is speci\214ed\) and without the)2.734 F F12.733 E F0 .509(optio\ -n whose standard input and error are both connected to terminals \(as d\ -etermined by)108 504 R F2(isatty)3.019 E F0 .509(\(3\)\), or one).32 F +(is speci\214ed\) and without the)2.734 F F12.733 E F0 .352(optio\ +n, whose standard input and error are both connected to terminals \(as \ +determined by)108 504 R F2(isatty)2.863 E F0 .353(\(3\)\), or one).32 F .946(started with the)108 516 R F13.445 E F0(option.)3.445 E F3 (PS1)5.945 E F0 .945(is set and)3.195 F F1<24ad>3.445 E F0(includes) 3.445 E F1(i)3.445 E F0(if)3.445 E F1(bash)3.445 E F0 .945(is interacti) @@ -463,8 +463,8 @@ F2(~/.bashr)108 691.2 Q(c)-.37 E F0 2.535(,i)C 2.535(ft)-2.535 G .035 Q F1(bash)5.306 E F0 2.806(is started non-interacti)5.306 F -.15(ve)-.25 G(ly).15 E 5.306(,t)-.65 G 5.306(or)-5.306 G 2.806 (un a shell script, for e)-5.306 F 2.805(xample, it looks for the v)-.15 -F(ariable)-.25 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(2) -195.395 E 0 Cg EP +F(ariable)-.25 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(2) +190.115 E 0 Cg EP %%Page: 3 3 %%BeginPageSetup BP @@ -527,24 +527,25 @@ F .341(xpand the)-.15 F F1(ENV)2.841 E F0 -.25(va)2.591 G .342 (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 F2(Bash)108 302.4 Q F0 .224(attempts to determine when it is being run with its standard \ -input connected to a netw)2.724 F .223(ork connection,)-.1 F .025 -(as when e)108 314.4 R -.15(xe)-.15 G .025 -(cuted by the remote shell daemon, usually).15 F F4 -.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 -F4(sshd)2.525 E F0 5.025(.I)C(f)-5.025 E F2(bash)2.525 E F0(deter)2.525 -E(-)-.2 E .134(mines it is being run in this f)108 326.4 R .134 -(ashion, it reads and e)-.1 F -.15(xe)-.15 G .133(cutes commands from) -.15 F F4(~/.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 -338.4 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 F2(sh)2.869 E F0 5.369(.T)C(he)-5.369 E F2 -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 350.4 Q F22.919 E(c\214le)-.18 E F0 .419 -(option may be used to force another \214le to be read, b)2.919 F .419 -(ut neither)-.2 F F4 -.1(rs)2.919 G(hd).1 E F0(nor)2.919 E F4(sshd)2.919 -E F0 .418(generally in)2.919 F -.2(vo)-.4 G -.1(ke).2 G -(the shell with those options or allo)108 362.4 Q 2.5(wt)-.25 G +input connected to a netw)2.724 F .223(ork connection,)-.1 F .521 +(as when e)108 314.4 R -.15(xe)-.15 G .521 +(cuted by the historical remote shell daemon, usually).15 F F4 -.1(rs) +3.021 G(hd).1 E F0 3.021(,o)C 3.021(rt)-3.021 G .521 +(he secure shell daemon)-3.021 F F4(sshd)3.022 E F0 5.522(.I)C(f)-5.522 +E F2(bash)108 326.4 Q F0 1.523(determines it is being run non-interacti) +4.023 F -.15(ve)-.25 G 1.523(ly in this f).15 F 1.522 +(ashion, it reads and e)-.1 F -.15(xe)-.15 G 1.522(cutes commands from) +.15 F F4(~/.bashr)108 338.4 Q(c)-.37 E F0 2.847(,i)C 2.847(ft)-2.847 G +.347(hat \214le e)-2.847 F .347(xists and is readable.)-.15 F .348 +(It will not do this if in)5.347 F -.2(vo)-.4 G -.1(ke).2 G 2.848(da).1 +G(s)-2.848 E F2(sh)2.848 E F0 5.348(.T)C(he)-5.348 E F22.848 +E(c)-.18 E F0 .348(option may be)2.848 F .61(used to inhibit this beha) +108 350.4 R(vior)-.2 E 3.11(,a)-.4 G .61(nd the)-3.11 F F23.11 E +(c\214le)-.18 E F0 .609 +(option may be used to force another \214le to be read, b)3.11 F .609 +(ut nei-)-.2 F(ther)108 362.4 Q F4 -.1(rs)2.5 G(hd).1 E F0(nor)2.5 E F4 +(sshd)2.5 E F0(generally in)2.5 E -.2(vo)-.4 G .2 -.1(ke t).2 H +(he shell with those options or allo).1 E 2.5(wt)-.25 G (hem to be speci\214ed.)-2.5 E .433(If the shell is started with the ef) 108 379.2 R(fecti)-.25 E .733 -.15(ve u)-.25 H .433 (ser \(group\) id not equal to the real user \(group\) id, and the).15 F @@ -591,9469 +592,9878 @@ F2(case)3.144 E F0(or)3.144 E F2(select)3.143 E F0 .643(command \(only) (are v)108 640.8 Q(alid\):)-.25 E F2 11.295(!c)144 657.6 S 8.795 (ase copr)-11.295 F 8.795(oc do done elif else esac \214 f)-.18 F 8.795 (or function if in select then)-.25 F 7.5(until while { } time [[ ]])144 -669.6 R F6(SHELL GRAMMAR)72 686.4 Q F2(Simple Commands)87 698.4 Q F0(A) -108 710.4 Q F4 .389(simple command)2.889 F F0 .389 -(is a sequence of optional v)2.889 F .388(ariable assignments follo)-.25 -F .388(wed by)-.25 F F2(blank)2.888 E F0 .388(-separated w)B .388 -(ords and)-.1 F .815(redirections, and terminated by a)108 722.4 R F4 -(contr)3.315 E .815(ol oper)-.45 F(ator)-.15 E F0 5.815(.T)C .815 -(he \214rst w)-5.815 F .816(ord speci\214es the command to be e)-.1 F --.15(xe)-.15 G(cuted,).15 E(GNU Bash 5.1)72 768 Q(2020 October 29) -141.235 E(3)195.395 E 0 Cg EP +669.6 R F6(SHELL GRAMMAR)72 686.4 Q F0 +(This section describes the syntax of the v)108 698.4 Q +(arious forms of shell commands.)-.25 E(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(3)190.115 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(and is passed as ar)108 84 Q(gument zero.)-.18 E(The remaining w)5 E +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(Simple Commands)87 84 Q F0(A)108 96 Q/F2 10/Times-Italic@0 SF .389 +(simple command)2.889 F F0 .389(is a sequence of optional v)2.889 F .388 +(ariable assignments follo)-.25 F .388(wed by)-.25 F F1(blank)2.888 E F0 +.388(-separated w)B .388(ords and)-.1 F .815 +(redirections, and terminated by a)108 108 R F2(contr)3.315 E .815 +(ol oper)-.45 F(ator)-.15 E F0 5.815(.T)C .815(he \214rst w)-5.815 F +.816(ord speci\214es the command to be e)-.1 F -.15(xe)-.15 G(cuted,).15 +E(and is passed as ar)108 120 Q(gument zero.)-.18 E(The remaining w)5 E (ords are passed as ar)-.1 E(guments to the in)-.18 E -.2(vo)-.4 G -.1 -(ke).2 G 2.5(dc).1 G(ommand.)-2.5 E(The return v)108 100.8 Q(alue of a) --.25 E/F1 10/Times-Italic@0 SF(simple command)2.5 E F0(is its e)2.5 E -(xit status, or 128+)-.15 E F1(n)A F0 -(if the command is terminated by signal)3.333 E F1(n)2.86 E F0(.).24 E -/F2 10/Times-Bold@0 SF(Pipelines)87 117.6 Q F0(A)108 129.6 Q F1 -(pipeline)2.996 E F0 .496(is a sequence of one or more commands separat\ -ed by one of the control operators)2.996 F F2(|)2.996 E F0(or)2.996 E F2 -(|&)2.996 E F0 5.496(.T)C(he)-5.496 E(format for a pipeline is:)108 -141.6 Q([)144 158.4 Q F2(time)A F0([)2.5 E F2A F0(]] [ ! ])A F1 -(command)2.5 E F0 2.5([[)2.5 G F2(|)-2.5 E/F3 10/Symbol SFA F2(|&)A -F0(])A F1(command2)2.5 E F0(... ])2.5 E .231(The standard output of)108 -175.2 R F1(command)2.931 E F0 .232 -(is connected via a pipe to the standard input of)3.502 F F1(command2) -2.932 E F0 5.232(.T).02 G .232(his connec-)-5.232 F .643 -(tion is performed before an)108 187.2 R 3.143(yr)-.15 G .642 -(edirections speci\214ed by the command \(see)-3.143 F/F4 9/Times-Bold@0 -SF(REDIRECTION)3.142 E F0(belo)2.892 E 3.142(w\). If)-.25 F F2(|&)3.142 -E F0(is)3.142 E(used,)108 199.2 Q F1(command)2.663 E F0 1.263 -.55('s s) -D .163(tandard error).55 F 2.663(,i)-.4 G 2.663(na)-2.663 G .163 -(ddition to its standard output, is connected to)-2.663 F F1(command2) -2.664 E F0 1.264 -.55('s s)D .164(tandard in-).55 F .438 -(put through the pipe; it is shorthand for)108 211.2 R F2 .437(2>&1 |) -2.937 F F0 5.437(.T)C .437 -(his implicit redirection of the standard error to the stan-)-5.437 F -(dard output is performed after an)108 223.2 Q 2.5(yr)-.15 G -(edirections speci\214ed by the command.)-2.5 E .48 -(The return status of a pipeline is the e)108 240 R .48 -(xit status of the last command, unless the)-.15 F F2(pipefail)2.98 E F0 -.48(option is enabled.)2.98 F(If)108 252 Q F2(pipefail)2.687 E F0 .187 +(ke).2 G 2.5(dc).1 G(ommand.)-2.5 E(The return v)108 136.8 Q(alue of a) +-.25 E F2(simple command)2.5 E F0(is its e)2.5 E(xit status, or 128+) +-.15 E F2(n)A F0(if the command is terminated by signal)3.333 E F2(n) +2.86 E F0(.).24 E F1(Pipelines)87 153.6 Q F0(A)108 165.6 Q F2(pipeline) +2.996 E F0 .496(is a sequence of one or more commands separated by one \ +of the control operators)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 177.6 Q([)144 +194.4 Q F1(time)A F0([)2.5 E F1A F0(]] [ ! ])A F2(command1)2.5 E +F0 2.5([[)2.5 G F1(|)-2.5 E/F3 10/Symbol SFA F1(|&)A F0(])A F2 +(command2)2.5 E F0(... ])2.5 E .799(The standard output of)108 211.2 R +F2(command1)3.499 E F0 .799 +(is connected via a pipe to the standard input of)3.299 F F2(command2) +3.5 E F0 5.8(.T).02 G .8(his con-)-5.8 F .215 +(nection is performed before an)108 223.2 R 2.715(yr)-.15 G .214 +(edirections speci\214ed by the)-2.715 F F2(command1)2.914 E F0(\(see)A +/F4 9/Times-Bold@0 SF(REDIRECTION)2.714 E F0(belo)2.464 E 2.714(w\). If) +-.25 F F1(|&)2.714 E F0 .126(is used,)108 235.2 R F2(command1)2.626 E F0 +1.226 -.55('s s)D .126(tandard error).55 F 2.626(,i)-.4 G 2.626(na) +-2.626 G .126(ddition to its standard output, is connected to)-2.626 F +F2(command2)2.626 E F0 1.226 -.55('s s)D(tandard).55 E .028 +(input through the pipe; it is shorthand for)108 247.2 R F1 .028(2>&1 |) +2.528 F F0 5.028(.T)C .028 +(his implicit redirection of the standard error to the stan-)-5.028 F +(dard output is performed after an)108 259.2 Q 2.5(yr)-.15 G +(edirections speci\214ed by)-2.5 E F2(command1)2.5 E F0(.)A .48 +(The return status of a pipeline is the e)108 276 R .48 +(xit status of the last command, unless the)-.15 F F1(pipefail)2.98 E F0 +.48(option is enabled.)2.98 F(If)108 288 Q F1(pipefail)2.687 E F0 .187 (is enabled, the pipeline')2.687 F 2.687(sr)-.55 G .186 (eturn status is the v)-2.687 F .186 (alue of the last \(rightmost\) command to e)-.25 F .186(xit with a)-.15 -F .61(non-zero status, or zero if all commands e)108 264 R .611 +F .61(non-zero status, or zero if all commands e)108 300 R .611 (xit successfully)-.15 F 5.611(.I)-.65 G 3.111(ft)-5.611 G .611 -(he reserv)-3.111 F .611(ed w)-.15 F(ord)-.1 E F2(!)3.111 E F0 .611 -(precedes a pipeline, the)5.611 F -.15(ex)108 276 S .55 +(he reserv)-3.111 F .611(ed w)-.15 F(ord)-.1 E F1(!)3.111 E F0 .611 +(precedes a pipeline, the)5.611 F -.15(ex)108 312 S .55 (it status of that pipeline is the logical ne).15 F -.05(ga)-.15 G .55 (tion of the e).05 F .55(xit status as described abo)-.15 F -.15(ve)-.15 G 5.55(.T).15 G .55(he shell w)-5.55 F .55(aits for)-.1 F -(all commands in the pipeline to terminate before returning a v)108 288 -Q(alue.)-.25 E .298(If the)108 304.8 R F2(time)2.799 E F0(reserv)2.799 E +(all commands in the pipeline to terminate before returning a v)108 324 +Q(alue.)-.25 E .298(If the)108 340.8 R F1(time)2.799 E F0(reserv)2.799 E .299(ed w)-.15 F .299(ord precedes a pipeline, the elapsed as well as u\ -ser and system time consumed by its)-.1 F -.15(exe)108 316.8 S .14 -(cution are reported when the pipeline terminates.).15 F(The)5.139 E F2 +ser and system time consumed by its)-.1 F -.15(exe)108 352.8 S .14 +(cution are reported when the pipeline terminates.).15 F(The)5.139 E F1 2.639 E F0 .139(option changes the output format to that spec-) -2.639 F .302(i\214ed by POSIX.)108 328.8 R .303(When the shell is in) -5.302 F F1 .303(posix mode)2.803 F F0 2.803(,i)C 2.803(td)-2.803 G .303 -(oes not recognize)-2.803 F F2(time)2.803 E F0 .303(as a reserv)2.803 F -.303(ed w)-.15 F .303(ord if the ne)-.1 F(xt)-.15 E(tok)108 340.8 Q .736 +2.639 F .302(i\214ed by POSIX.)108 364.8 R .303(When the shell is in) +5.302 F F2 .303(posix mode)2.803 F F0 2.803(,i)C 2.803(td)-2.803 G .303 +(oes not recognize)-2.803 F F1(time)2.803 E F0 .303(as a reserv)2.803 F +.303(ed w)-.15 F .303(ord if the ne)-.1 F(xt)-.15 E(tok)108 376.8 Q .736 (en be)-.1 F .736(gins with a `-'.)-.15 F(The)5.736 E F4(TIMEFORMA)3.236 E(T)-.855 E F0 -.25(va)2.986 G .736 (riable may be set to a format string that speci\214es ho).25 F 3.235 (wt)-.25 G(he)-3.235 E .879 (timing information should be displayed; see the description of)108 -352.8 R F4(TIMEFORMA)3.38 E(T)-.855 E F0(under)3.13 E F2 .88(Shell V) -3.38 F(ariables)-.92 E F0(be-)3.38 E(lo)108 364.8 Q -.65(w.)-.25 G .162 -(When the shell is in)108 381.6 R F1 .162(posix mode)2.662 F F0(,)A F2 +388.8 R F4(TIMEFORMA)3.38 E(T)-.855 E F0(under)3.13 E F1 .88(Shell V) +3.38 F(ariables)-.92 E F0(be-)3.38 E(lo)108 400.8 Q -.65(w.)-.25 G .162 +(When the shell is in)108 417.6 R F2 .162(posix mode)2.662 F F0(,)A F1 (time)2.662 E F0 .162(may be follo)2.662 F .161(wed by a ne)-.25 F 2.661 (wline. In)-.25 F .161(this case, the shell displays the to-)2.661 F .243(tal user and system time consumed by the shell and its children.) -108 393.6 R(The)5.243 E F4(TIMEFORMA)2.743 E(T)-.855 E F0 -.25(va)2.493 +108 429.6 R(The)5.243 E F4(TIMEFORMA)2.743 E(T)-.855 E F0 -.25(va)2.493 G .243(riable may be used).25 F -(to specify the format of the time information.)108 405.6 Q .656 -(Each command in a pipeline is e)108 422.4 R -.15(xe)-.15 G .655 -(cuted as a separate process \(i.e., in a subshell\).).15 F(See)5.655 E -F4 .655(COMMAND EXE-)3.155 F .05(CUTION ENVIR)108 434.4 R(ONMENT)-.27 E -F0 .051(for a description of a subshell en)2.3 F 2.551(vironment. If)-.4 -F(the)2.551 E F2(lastpipe)2.551 E F0 .051(option is enabled us-)2.551 F -.416(ing the)108 446.4 R F2(shopt)2.916 E F0 -.2(bu)2.916 G .416 -(iltin \(see the description of).2 F F2(shopt)2.916 E F0(belo)2.916 E -.416(w\), the last element of a pipeline may be run by the)-.25 F -(shell process.)108 458.4 Q F2(Lists)87 475.2 Q F0(A)108 487.2 Q F1 -(list)2.849 E F0 .349(is a sequence of one or more pipelines separated \ -by one of the operators)2.849 F F2(;)2.85 E F0(,)A F2(&)2.85 E F0(,)A F2 -(&&)2.85 E F0 2.85(,o)C(r)-2.85 E F2(||)2.85 E F0 2.85(,a)C .35 -(nd option-)-2.85 F(ally terminated by one of)108 499.2 Q F2(;)2.5 E F0 -(,)A F2(&)2.5 E F0 2.5(,o)C(r)-2.5 E F2()2.5 E F0(.)A .961 -(Of these list operators,)108 516 R F2(&&)3.461 E F0(and)3.461 E F2(||) +(to specify the format of the time information.)108 441.6 Q .304(Each c\ +ommand in a multi-command pipeline, where pipes are created, is e)108 +458.4 R -.15(xe)-.15 G .303(cuted in a).15 F F2(subshell)2.803 E F0 +2.803(,w)C .303(hich is a)-2.803 F .207(separate process.)108 470.4 R +(See)5.207 E F4 .208(COMMAND EXECUTION ENVIR)2.708 F(ONMENT)-.27 E F0 +.208(for a description of subshells and a sub-)2.458 F .927(shell en)108 +482.4 R 3.427(vironment. If)-.4 F(the)3.427 E F1(lastpipe)3.427 E F0 +.927(option is enabled using the)3.427 F F1(shopt)3.427 E F0 -.2(bu) +3.427 G .927(iltin \(see the description of).2 F F1(shopt)3.426 E F0 +(belo)108 494.4 Q(w\), the last element of a pipeline may be run by the\ + shell process when job control is not acti)-.25 E -.15(ve)-.25 G(.).15 +E F1(Lists)87 511.2 Q F0(A)108 523.2 Q F2(list)2.849 E F0 .349(is a seq\ +uence of one or more pipelines separated by one of the operators)2.849 F +F1(;)2.85 E F0(,)A F1(&)2.85 E F0(,)A F1(&&)2.85 E F0 2.85(,o)C(r)-2.85 +E F1(||)2.85 E F0 2.85(,a)C .35(nd option-)-2.85 F +(ally terminated by one of)108 535.2 Q F1(;)2.5 E F0(,)A F1(&)2.5 E F0 +2.5(,o)C(r)-2.5 E F1()2.5 E F0(.)A .961 +(Of these list operators,)108 552 R F1(&&)3.461 E F0(and)3.461 E F1(||) 3.461 E F0(ha)3.461 E 1.261 -.15(ve e)-.2 H .961(qual precedence, follo) -.15 F .96(wed by)-.25 F F2(;)3.46 E F0(and)3.46 E F2(&)3.46 E F0 3.46 +.15 F .96(wed by)-.25 F F1(;)3.46 E F0(and)3.46 E F1(&)3.46 E F0 3.46 (,w)C .96(hich ha)-3.46 F 1.26 -.15(ve e)-.2 H .96(qual prece-).15 F -(dence.)108 528 Q 2.5(As)108 544.8 S(equence of one or more ne)-2.5 E -(wlines may appear in a)-.25 E F1(list)2.5 E F0 +(dence.)108 564 Q 2.5(As)108 580.8 S(equence of one or more ne)-2.5 E +(wlines may appear in a)-.25 E F2(list)2.5 E F0 (instead of a semicolon to delimit commands.)2.5 E .029 -(If a command is terminated by the control operator)108 561.6 R F2(&) +(If a command is terminated by the control operator)108 597.6 R F1(&) 2.529 E F0 2.529(,t)C .029(he shell e)-2.529 F -.15(xe)-.15 G .029 -(cutes the command in the).15 F F1(bac)2.529 E(kgr)-.2 E(ound)-.45 E F0 -(in)2.529 E 2.678(as)108 573.6 S 2.678(ubshell. The)-2.678 F .178 +(cutes the command in the).15 F F2(bac)2.529 E(kgr)-.2 E(ound)-.45 E F0 +(in)2.529 E 2.678(as)108 609.6 S 2.678(ubshell. The)-2.678 F .178 (shell does not w)2.678 F .178 (ait for the command to \214nish, and the return status is 0.)-.1 F .178 -(These are referred)5.178 F .778(to as)108 585.6 R F1(async)3.278 E(hr) +(These are referred)5.178 F .778(to as)108 621.6 R F2(async)3.278 E(hr) -.15 E(onous)-.45 E F0 3.278(commands. Commands)3.278 F .779 -(separated by a)3.278 F F2(;)3.279 E F0 .779(are e)3.279 F -.15(xe)-.15 +(separated by a)3.278 F F1(;)3.279 E F0 .779(are e)3.279 F -.15(xe)-.15 G .779(cuted sequentially; the shell w).15 F .779(aits for)-.1 F -(each command to terminate in turn.)108 597.6 Q +(each command to terminate in turn.)108 633.6 Q (The return status is the e)5 E(xit status of the last command e)-.15 E -.15(xe)-.15 G(cuted.).15 E .172(AND and OR lists are sequences of one \ -or more pipelines separated by the)108 614.4 R F2(&&)2.671 E F0(and) -2.671 E F2(||)2.671 E F0 .171(control operators, re-)2.671 F(specti)108 -626.4 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5 E +or more pipelines separated by the)108 650.4 R F1(&&)2.671 E F0(and) +2.671 E F1(||)2.671 E F0 .171(control operators, re-)2.671 F(specti)108 +662.4 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5 E -.15(xe)-.15 G(cuted with left associati).15 E(vity)-.25 E 5(.A)-.65 G -2.5(nA)-5 G(ND list has the form)-2.5 E F1(command1)144 643.2 Q F2(&&) -2.5 E F1(command2)2.5 E(command2)108.2 660 Q F0(is e)2.52 E -.15(xe)-.15 -G(cuted if, and only if,).15 E F1(command1)2.7 E F0(returns an e)2.5 E +2.5(nA)-5 G(ND list has the form)-2.5 E F2(command1)144 679.2 Q F1(&&) +2.5 E F2(command2)2.5 E(command2)108.2 696 Q F0(is e)2.52 E -.15(xe)-.15 +G(cuted if, and only if,).15 E F2(command1)2.7 E F0(returns an e)2.5 E (xit status of zero \(success\).)-.15 E(An OR list has the form)108 -676.8 Q F1(command1)144 693.6 Q F2(||)2.5 E F1(command2)2.5 E(command2) -108.2 710.4 Q F0 .434(is e)2.954 F -.15(xe)-.15 G .434 -(cuted if, and only if,).15 F F1(command1)3.135 E F0 .435 -(returns a non-zero e)2.935 F .435(xit status.)-.15 F .435 -(The return status of AND)5.435 F(and OR lists is the e)108 722.4 Q -(xit status of the last command e)-.15 E -.15(xe)-.15 G -(cuted in the list.).15 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 -E(4)195.395 E 0 Cg EP +712.8 Q F2(command1)144 729.6 Q F1(||)2.5 E F2(command2)2.5 E F0 +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(4)190.115 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(Compound Commands)87 84 Q F0(A)108 96 Q/F2 10/Times-Italic@0 SF 1.054 -(compound command)3.554 F F0 1.054(is one of the follo)3.554 F 3.553 -(wing. In)-.25 F 1.053(most cases a)3.553 F F2(list)3.553 E F0 1.053 -(in a command')3.553 F 3.553(sd)-.55 G 1.053(escription may be)-3.553 F -1.026(separated from the rest of the command by one or more ne)108 108 R +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF(command2)108.2 84 Q F0 .434(is e)2.954 F -.15(xe)-.15 +G .434(cuted if, and only if,).15 F F1(command1)3.135 E F0 .435 +(returns a non-zero e)2.935 F .435(xit status.)-.15 F .435 +(The return status of AND)5.435 F(and OR lists is the e)108 96 Q +(xit status of the last command e)-.15 E -.15(xe)-.15 G +(cuted in the list.).15 E/F2 10/Times-Bold@0 SF(Compound Commands)87 +112.8 Q F0(A)108 124.8 Q F1 1.054(compound command)3.554 F F0 1.054 +(is one of the follo)3.554 F 3.553(wing. In)-.25 F 1.053(most cases a) +3.553 F F1(list)3.553 E F0 1.053(in a command')3.553 F 3.553(sd)-.55 G +1.053(escription may be)-3.553 F 1.026 +(separated from the rest of the command by one or more ne)108 136.8 R 1.026(wlines, and may be follo)-.25 F 1.027(wed by a ne)-.25 F 1.027 -(wline in)-.25 F(place of a semicolon.)108 120 Q(\()108 136.8 Q F2(list) -A F0(\))A F2(list)144 136.8 Q F0 .011(is e)2.512 F -.15(xe)-.15 G .011 -(cuted in a subshell en).15 F .011(vironment \(see)-.4 F/F3 9 -/Times-Bold@0 SF .011(COMMAND EXECUTION ENVIR)2.511 F(ONMENT)-.27 E F0 -(belo)2.261 E(w\).)-.25 E -1.11(Va)144 148.8 S .016 -(riable assignments and b)1.11 F .016(uiltin commands that af)-.2 F .016 -(fect the shell')-.25 F 2.517(se)-.55 G -.4(nv)-2.517 G .017 -(ironment do not remain in ef-).4 F(fect after the command completes.) -144 160.8 Q(The return status is the e)5 E(xit status of)-.15 E F2(list) -2.5 E F0(.)A({)108 177.6 Q F2(list)2.5 E F0 2.5(;})C F2(list)144 177.6 Q -F0 .402(is simply e)2.902 F -.15(xe)-.15 G .401 -(cuted in the current shell en).15 F(vironment.)-.4 E F2(list)5.401 E F0 -.401(must be terminated with a ne)2.901 F .401(wline or)-.25 F 3.214 -(semicolon. This)144 189.6 R .714(is kno)3.214 F .714(wn as a)-.25 F F2 +(wline in)-.25 F(place of a semicolon.)108 148.8 Q(\()108 165.6 Q F1 +(list)A F0(\))A F1(list)144 165.6 Q F0 .215(is e)2.715 F -.15(xe)-.15 G +.215(cuted in a subshell \(see).15 F/F3 9/Times-Bold@0 SF .215 +(COMMAND EXECUTION ENVIR)2.715 F(ONMENT)-.27 E F0(belo)2.465 E 2.714(wf) +-.25 G .214(or a descrip-)-2.714 F .209(tion of a subshell en)144 177.6 +R 2.709(vironment\). V)-.4 F .209(ariable assignments and b)-1.11 F .209 +(uiltin commands that af)-.2 F .21(fect the shell')-.25 F(s)-.55 E(en) +144 189.6 Q 1.069(vironment do not remain in ef)-.4 F 1.069 +(fect after the command completes.)-.25 F 1.068 +(The return status is the e)6.069 F(xit)-.15 E(status of)144 201.6 Q F1 +(list)2.5 E F0(.)A({)108 218.4 Q F1(list)2.5 E F0 2.5(;})C F1(list)144 +218.4 Q F0 .401(is simply e)2.901 F -.15(xe)-.15 G .401 +(cuted in the current shell en).15 F(vironment.)-.4 E F1(list)5.401 E F0 +.402(must be terminated with a ne)2.901 F .402(wline or)-.25 F 3.215 +(semicolon. This)144 230.4 R .715(is kno)3.215 F .715(wn as a)-.25 F F1 (gr)3.215 E .715(oup command)-.45 F F0 5.715(.T)C .715 -(he return status is the e)-5.715 F .715(xit status of)-.15 F F2(list) -3.215 E F0 5.715(.N)C(ote)-5.715 E .22(that unlik)144 201.6 R 2.72(et) --.1 G .22(he metacharacters)-2.72 F F1(\()2.72 E F0(and)2.72 E F1(\)) -2.72 E F0(,)A F1({)2.72 E F0(and)2.72 E F1(})2.719 E F0(are)2.719 E F2 --.37(re)2.719 G .219(served wor).37 F(ds)-.37 E F0 .219 -(and must occur where a reserv)2.719 F(ed)-.15 E -.1(wo)144 213.6 S .256 -(rd is permitted to be recognized.).1 F .256(Since the)5.256 F 2.756(yd) --.15 G 2.756(on)-2.756 G .257(ot cause a w)-2.756 F .257(ord break, the) --.1 F 2.757(ym)-.15 G .257(ust be separated)-2.757 F(from)144 225.6 Q F2 +(he return status is the e)-5.715 F .714(xit status of)-.15 F F1(list) +3.214 E F0 5.714(.N)C(ote)-5.714 E .219(that unlik)144 242.4 R 2.719(et) +-.1 G .219(he metacharacters)-2.719 F F2(\()2.719 E F0(and)2.719 E F2 +(\))2.719 E F0(,)A F2({)2.719 E F0(and)2.719 E F2(})2.719 E F0(are)2.719 +E F1 -.37(re)2.72 G .22(served wor).37 F(ds)-.37 E F0 .22 +(and must occur where a reserv)2.72 F(ed)-.15 E -.1(wo)144 254.4 S .257 +(rd is permitted to be recognized.).1 F .257(Since the)5.257 F 2.757(yd) +-.15 G 2.756(on)-2.757 G .256(ot cause a w)-2.756 F .256(ord break, the) +-.1 F 2.756(ym)-.15 G .256(ust be separated)-2.756 F(from)144 266.4 Q F1 (list)2.5 E F0(by whitespace or another shell metacharacter)2.5 E(.)-.55 -E(\(\()108 242.4 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F0(\)\))A(The)144 -254.4 Q F2 -.2(ex)2.552 G(pr).2 E(ession)-.37 E F0 .052(is e)2.552 F +E(\(\()108 283.2 Q F1 -.2(ex)C(pr).2 E(ession)-.37 E F0(\)\))A(The)144 +295.2 Q F1 -.2(ex)2.551 G(pr).2 E(ession)-.37 E F0 .051(is e)2.551 F -.25(va)-.25 G .051(luated according to the rules described belo).25 F -2.551(wu)-.25 G(nder)-2.551 E F3 .051(ARITHMETIC EV)2.551 F(ALU)-1.215 E -(A-)-.54 E(TION)144 266.4 Q/F4 9/Times-Roman@0 SF(.)A F0 .411(If the v) -4.91 F .411(alue of the e)-.25 F .411(xpression is non-zero, the return\ - status is 0; otherwise the return status)-.15 F(is 1.)144 278.4 Q -(This is e)5 E(xactly equi)-.15 E -.25(va)-.25 G(lent to).25 E F1(let ") -2.5 E F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(")A F0(.)A F1([[)108 295.2 Q -F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F1(]])2.5 E F0 .003 -(Return a status of 0 or 1 depending on the e)144 307.2 R -.25(va)-.25 G -.003(luation of the conditional e).25 F(xpression)-.15 E F2 -.2(ex)2.503 -G(pr).2 E(ession)-.37 E F0 5.003(.E)C(x-)-5.003 E .758 -(pressions are composed of the primaries described belo)144 319.2 R -3.259(wu)-.25 G(nder)-3.259 E F3(CONDITION)3.259 E .759(AL EXPRESSIONS) --.18 F F4(.)A F0 -.8(Wo)144 331.2 S .029(rd splitting and pathname e).8 -F .029(xpansion are not performed on the w)-.15 F .029(ords between the) --.1 F F1([[)2.528 E F0(and)2.528 E F1(]])2.528 E F0 2.528(;t)C(ilde) --2.528 E -.15(ex)144 343.2 S 3.968(pansion, parameter and v).15 F 3.969 -(ariable e)-.25 F 3.969(xpansion, arithmetic e)-.15 F 3.969 -(xpansion, command substitution,)-.15 F .571 -(process substitution, and quote remo)144 355.2 R -.25(va)-.15 G 3.071 -(la).25 G .571(re performed.)-3.071 F .571 -(Conditional operators such as)5.571 F F13.07 E F0 .57(must be) -3.07 F(unquoted to be recognized as primaries.)144 367.2 Q -(When used with)144 385.2 Q F1([[)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E -F0(and)2.5 E F1(>)2.5 E F0(operators sort le)2.5 E -(xicographically using the current locale.)-.15 E .502(When the)144 -403.2 R F1(==)3.002 E F0(and)3.002 E F1(!=)3.002 E F0 .502(operators ar\ -e used, the string to the right of the operator is considered a pat-) -3.002 F .81(tern and matched according to the rules described belo)144 -415.2 R 3.31(wu)-.25 G(nder)-3.31 E F1 -.1(Pa)3.31 G(tter).1 E 3.31(nM) --.15 G(atching)-3.31 E F0 3.31(,a)C 3.31(si)-3.31 G 3.31(ft)-3.31 G(he) --3.31 E F1(ext-)3.31 E(glob)144 427.2 Q F0 .313 -(shell option were enabled.)2.813 F(The)5.313 E F1(=)2.813 E F0 .313 -(operator is equi)2.813 F -.25(va)-.25 G .313(lent to).25 F F1(==)2.813 -E F0 5.313(.I)C 2.813(ft)-5.313 G(he)-2.813 E F1(nocasematch)2.813 E F0 -.314(shell op-)2.814 F .03 -(tion is enabled, the match is performed without re)144 439.2 R -.05(ga) --.15 G .029(rd to the case of alphabetic characters.).05 F .029(The re-) -5.029 F .258(turn v)144 451.2 R .259(alue is 0 if the string matches \() --.25 F F1(==)A F0 2.759(\)o)C 2.759(rd)-2.759 G .259(oes not match \() --2.759 F F1(!=)A F0 2.759(\)t)C .259(he pattern, and 1 otherwise.)-2.759 -F(An)5.259 E(y)-.15 E(part of the pattern may be quoted to force the qu\ -oted portion to be matched as a string.)144 463.2 Q .243 -(An additional binary operator)144 481.2 R(,)-.4 E F1(=~)2.743 E F0 -2.743(,i)C 2.743(sa)-2.743 G -.25(va)-2.943 G .243 -(ilable, with the same precedence as).25 F F1(==)2.743 E F0(and)2.743 E -F1(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F .182 +2.552(wu)-.25 G(nder)-2.552 E F3 .052(ARITHMETIC EV)2.552 F(ALU)-1.215 E +(A-)-.54 E(TION)144 307.2 Q/F4 9/Times-Roman@0 SF(.)A F0 .411(If the v) +4.911 F .411(alue of the e)-.25 F .411(xpression is non-zero, the retur\ +n status is 0; otherwise the return status)-.15 F .186(is 1.)144 319.2 R +(The)5.186 E F1 -.2(ex)2.686 G(pr).2 E(ession)-.37 E F0(under)2.686 E +.186(goes the same e)-.18 F .186 +(xpansions as if it were within double quotes, b)-.15 F .187(ut double) +-.2 F(quote characters in)144 331.2 Q F1 -.2(ex)2.5 G(pr).2 E(ession) +-.37 E F0(are not treated specially and are remo)2.5 E -.15(ve)-.15 G +(d.).15 E F2([[)108 348 Q F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F2(]]) +2.5 E F0 .003(Return a status of 0 or 1 depending on the e)144 360 R +-.25(va)-.25 G .003(luation of the conditional e).25 F(xpression)-.15 E +F1 -.2(ex)2.503 G(pr).2 E(ession)-.37 E F0 5.003(.E)C(x-)-5.003 E .758 +(pressions are composed of the primaries described belo)144 372 R 3.259 +(wu)-.25 G(nder)-3.259 E F3(CONDITION)3.259 E .759(AL EXPRESSIONS)-.18 F +F4(.)A F0 .065(The w)144 384 R .065(ords between the)-.1 F F2([[)2.565 E +F0(and)2.565 E F2(]])2.565 E F0 .065(do not under)2.565 F .065(go w)-.18 +F .065(ord splitting and pathname e)-.1 F 2.565(xpansion. The)-.15 F +(shell)2.565 E .483(performs tilde e)144 396 R .483 +(xpansion, parameter and v)-.15 F .483(ariable e)-.25 F .483 +(xpansion, arithmetic e)-.15 F .483(xpansion, command sub-)-.15 F .201 +(stitution, process substitution, and quote remo)144 408 R -.25(va)-.15 +G 2.701(lo).25 G 2.701(nt)-2.701 G .201(hose w)-2.701 F .201 +(ords \(the e)-.1 F .2(xpansions that w)-.15 F .2(ould occur)-.1 F .382 +(if the w)144 420 R .382(ords were enclosed in double quotes\).)-.1 F +.382(Conditional operators such as)5.382 F F22.882 E F0 .382 +(must be unquoted)2.882 F(to be recognized as primaries.)144 432 Q +(When used with)144 450 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 .503(When the)144 468 +R F2(==)3.003 E F0(and)3.002 E F2(!=)3.002 E F0 .502(operators are used\ +, the string to the right of the operator is considered a pat-)3.002 F +.81(tern and matched according to the rules described belo)144 480 R +3.31(wu)-.25 G(nder)-3.31 E F2 -.1(Pa)3.31 G(tter).1 E 3.31(nM)-.15 G +(atching)-3.31 E F0 3.31(,a)C 3.31(si)-3.31 G 3.31(ft)-3.31 G(he)-3.31 E +F2(ext-)3.31 E(glob)144 492 Q F0 .313(shell option were enabled.)2.814 F +(The)5.313 E F2(=)2.813 E F0 .313(operator is equi)2.813 F -.25(va)-.25 +G .313(lent to).25 F F2(==)2.813 E F0 5.313(.I)C 2.813(ft)-5.313 G(he) +-2.813 E F2(nocasematch)2.813 E F0 .313(shell op-)2.813 F .029 +(tion is enabled, the match is performed without re)144 504 R -.05(ga) +-.15 G .03(rd to the case of alphabetic characters.).05 F .03(The re-) +5.03 F .259(turn v)144 516 R .259(alue is 0 if the string matches \() +-.25 F F2(==)A F0 2.759(\)o)C 2.759(rd)-2.759 G .259(oes not match \() +-2.759 F F2(!=)A F0 2.759(\)t)C .259(he pattern, and 1 otherwise.)-2.759 +F(An)5.258 E(y)-.15 E(part of the pattern may be quoted to force the qu\ +oted portion to be matched as a string.)144 528 Q .243 +(An additional binary operator)144 546 R(,)-.4 E F2(=~)2.743 E F0 2.743 +(,i)C 2.743(sa)-2.743 G -.25(va)-2.943 G .243 +(ilable, with the same precedence as).25 F F2(==)2.743 E F0(and)2.743 E +F2(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F .182 (used, the string to the right of the operator is considered a POSIX e) -144 493.2 R .182(xtended re)-.15 F .182(gular e)-.15 F .182 -(xpression and)-.15 F 2.624(matched accordingly \(using the POSIX)144 -505.2 R F2 -.37(re)5.124 G(gcomp)-.03 E F0(and)5.124 E F2 -.37(re)5.124 -G -.1(ge)-.03 G(xec)-.1 E F0(interf)5.123 E 2.623 -(aces usually described in)-.1 F F2 -.37(re)144 517.2 S -.1(ge)-.03 G(x) --.1 E F0 3.271(\(3\)\). The)B .771(return v)3.271 F .772 +144 558 R .182(xtended re)-.15 F .181(gular e)-.15 F .181(xpression and) +-.15 F 2.623(matched accordingly \(using the POSIX)144 570 R F1 -.37(re) +5.124 G(gcomp)-.03 E F0(and)5.124 E F1 -.37(re)5.124 G -.1(ge)-.03 G +(xec)-.1 E F0(interf)5.124 E 2.624(aces usually described in)-.1 F F1 +-.37(re)144 582 S -.1(ge)-.03 G(x)-.1 E F0 3.272(\(3\)\). The)B .772 +(return v)3.272 F .772 (alue is 0 if the string matches the pattern, and 1 otherwise.)-.25 F -.772(If the re)5.772 F(gular)-.15 E -.15(ex)144 529.2 S .509 +.771(If the re)5.771 F(gular)-.15 E -.15(ex)144 594 S .508 (pression is syntactically incorrect, the conditional e).15 F -(xpression')-.15 E 3.008(sr)-.55 G .508(eturn v)-3.008 F .508 -(alue is 2.)-.25 F .508(If the)5.508 F F1(nocase-)3.008 E(match)144 -541.2 Q F0 1.307 -(shell option is enabled, the match is performed without re)3.806 F -.05 -(ga)-.15 G 1.307(rd to the case of alphabetic).05 F 3.063 -(characters. An)144 553.2 R 3.063(yp)-.15 G .563(art of the pattern may\ - be quoted to force the quoted portion to be matched as a)-3.063 F 2.943 -(string. Brack)144 565.2 R .443(et e)-.1 F .443(xpressions in re)-.15 F -.443(gular e)-.15 F .443(xpressions must be treated carefully)-.15 F -2.944(,s)-.65 G .444(ince normal quoting)-2.944 F .615 -(characters lose their meanings between brack)144 577.2 R 3.115(ets. If) --.1 F .614(the pattern is stored in a shell v)3.115 F .614 -(ariable, quot-)-.25 F(ing the v)144 589.2 Q(ariable e)-.25 E -(xpansion forces the entire pattern to be matched as a string.)-.15 E -.838(The pattern will match if it matches an)144 607.2 R 3.338(yp)-.15 G -.838(art of the string.)-3.338 F .839(Anchor the pattern using the)5.839 -F F1(^)3.339 E F0(and)3.339 E F1($)3.339 E F0(re)144 619.2 Q .847 -(gular e)-.15 F .846 +(xpression')-.15 E 3.008(sr)-.55 G .509(eturn v)-3.008 F .509 +(alue is 2.)-.25 F .509(If the)5.509 F F2(nocase-)3.009 E(match)144 606 +Q F0 1.307(shell option is enabled, the match is performed without re) +3.807 F -.05(ga)-.15 G 1.306(rd to the case of alphabetic).05 F 2.599 +(characters. If)144 618 R(an)2.599 E 2.599(yp)-.15 G .099 +(art of the pattern is quoted, the quoted portion is matched literally) +-2.599 F 5.1(.T)-.65 G .1(his means)-5.1 F -2.15 -.25(ev e)144 630 T +.032(ry character in the quoted portion matches itself, instead of ha) +.25 F .031(ving an)-.2 F 2.531(ys)-.15 G .031(pecial pattern matching) +-2.531 F 3.041(meaning. If)144 642 R .542 +(the pattern is stored in a shell v)3.041 F .542(ariable, quoting the v) +-.25 F .542(ariable e)-.25 F .542(xpansion forces the en-)-.15 F 1.825 +(tire pattern to be matched literally)144 654 R 6.825(.T)-.65 G 1.825 +(reat brack)-7.175 F 1.825(et e)-.1 F 1.825(xpressions in re)-.15 F +1.825(gular e)-.15 F 1.825(xpressions carefully)-.15 F(,)-.65 E(since n\ +ormal quoting and pattern characters lose their meanings between brack) +144 666 Q(ets.)-.1 E .838(The pattern will match if it matches an)144 +684 R 3.338(yp)-.15 G .838(art of the string.)-3.338 F .839 +(Anchor the pattern using the)5.839 F F2(^)3.339 E F0(and)3.339 E F2($) +3.339 E F0(re)144 696 Q .847(gular e)-.15 F .846 (xpression operators to force it to match the entire string.)-.15 F .846 (The array v)5.846 F(ariable)-.25 E F3 -.27(BA)3.346 G(SH_RE-).27 E(MA) -144 631.2 Q(TCH)-.855 E F0 .321 +144 708 Q(TCH)-.855 E F0 .321 (records which parts of the string matched the pattern.)2.571 F .322 (The element of)5.322 F F3 -.27(BA)2.822 G(SH_REMA).27 E(TCH)-.855 E F0 -.583(with inde)144 643.2 R 3.083(x0)-.15 G .582 +.583(with inde)144 720 R 3.083(x0)-.15 G .582 (contains the portion of the string matching the entire re)-.001 F .582 -(gular e)-.15 F 3.082(xpression. Substrings)-.15 F .249 -(matched by parenthesized sube)144 655.2 R .249 -(xpressions within the re)-.15 F .249(gular e)-.15 F .249 -(xpression are sa)-.15 F -.15(ve)-.2 G 2.749(di).15 G 2.75(nt)-2.749 G -.25(he remaining)-2.75 F F3 -.27(BA)144 667.2 S(SH_REMA).27 E(TCH)-.855 -E F0 1.13(indices. The element of)3.38 F F3 -.27(BA)3.63 G(SH_REMA).27 E -(TCH)-.855 E F0 1.13(with inde)3.38 F(x)-.15 E F2(n)3.63 E F0 1.13 -(is the portion of the)3.63 F(string matching the)144 679.2 Q F2(n)2.5 E -F0(th parenthesized sube)A(xpression.)-.15 E .785 -(Expressions may be combined using the follo)144 697.2 R .786 -(wing operators, listed in decreasing order of prece-)-.25 F(dence:)144 -709.2 Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(5)195.395 E 0 Cg -EP +(gular e)-.15 F 3.082(xpression. Substrings)-.15 F(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(5)190.115 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(\()144 84 Q/F2 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E(ession)-.37 -E F1(\))2.5 E F0 .523(Returns the v)180 96 R .522(alue of)-.25 F F2 -.2 -(ex)3.022 G(pr).2 E(ession)-.37 E F0 5.522(.T)C .522 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .249 +(matched by parenthesized sube)144 84 R .249(xpressions within the re) +-.15 F .249(gular e)-.15 F .249(xpression are sa)-.15 F -.15(ve)-.2 G +2.749(di).15 G 2.75(nt)-2.749 G .25(he remaining)-2.75 F/F1 9 +/Times-Bold@0 SF -.27(BA)144 96 S(SH_REMA).27 E(TCH)-.855 E F0 1.13 +(indices. The element of)3.38 F F1 -.27(BA)3.63 G(SH_REMA).27 E(TCH) +-.855 E F0 1.13(with inde)3.38 F(x)-.15 E/F2 10/Times-Italic@0 SF(n)3.63 +E F0 1.13(is the portion of the)3.63 F 1.125(string matching the)144 108 +R F2(n)3.625 E F0 1.125(th parenthesized sube)B 3.625(xpression. Bash) +-.15 F(sets)3.626 E F1 -.27(BA)3.626 G(SH_REMA).27 E(TCH)-.855 E F0 +1.126(in the global)3.376 F(scope; declaring it as a local v)144 120 Q +(ariable will lead to une)-.25 E(xpected results.)-.15 E .786 +(Expressions may be combined using the follo)144 138 R .785 +(wing operators, listed in decreasing order of prece-)-.25 F(dence:)144 +150 Q/F3 10/Times-Bold@0 SF(\()144 168 Q F2 -.2(ex)2.5 G(pr).2 E(ession) +-.37 E F3(\))2.5 E F0 .522(Returns the v)180 180 R .522(alue of)-.25 F +F2 -.2(ex)3.022 G(pr).2 E(ession)-.37 E F0 5.522(.T)C .522 (his may be used to o)-5.522 F -.15(ve)-.15 G .522 -(rride the normal precedence of).15 F(operators.)180 108 Q F1(!)144 120 -Q F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0 -.35(Tr)180 132 S(ue if).35 E +(rride the normal precedence of).15 F(operators.)180 192 Q F3(!)144 204 +Q F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0 -.35(Tr)180 216 S(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0(is f)2.74 E(alse.)-.1 E F2 -.2 -(ex)144 144 S(pr).2 E(ession1)-.37 E F1(&&)2.5 E F2 -.2(ex)2.5 G(pr).2 E -(ession2)-.37 E F0 -.35(Tr)180 156 S(ue if both).35 E F2 -.2(ex)2.5 G +(ex)144 228 S(pr).2 E(ession1)-.37 E F3(&&)2.5 E F2 -.2(ex)2.5 G(pr).2 E +(ession2)-.37 E F0 -.35(Tr)180 240 S(ue if both).35 E F2 -.2(ex)2.5 G (pr).2 E(ession1)-.37 E F0(and)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2) --.37 E F0(are true.)2.52 E F2 -.2(ex)144 168 S(pr).2 E(ession1)-.37 E F1 -(||)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 180 S +-.37 E F0(are true.)2.52 E F2 -.2(ex)144 252 S(pr).2 E(ession1)-.37 E F3 +(||)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 264 S (ue if either).35 E F2 -.2(ex)2.5 G(pr).2 E(ession1)-.37 E F0(or)2.5 E -F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0(is true.)2.52 E(The)144 196.8 -Q F1(&&)2.675 E F0(and)2.675 E F1(||)2.675 E F0 .175(operators do not e) -2.675 F -.25(va)-.25 G(luate).25 E F2 -.2(ex)2.675 G(pr).2 E(ession2) --.37 E F0 .175(if the v)2.675 F .175(alue of)-.25 F F2 -.2(ex)2.676 G -(pr).2 E(ession1)-.37 E F0 .176(is suf)2.676 F .176(\214cient to de-) --.25 F(termine the return v)144 208.8 Q -(alue of the entire conditional e)-.25 E(xpression.)-.15 E F1 -.25(fo) -108 225.6 S(r).25 E F2(name)2.5 E F0 2.5([[)2.5 G F1(in)A F0([)2.5 E F2 -(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 2.5(]];])2.5 G F1(do)A F2(list)2.5 -E F0(;)2.5 E F1(done)2.5 E F0 .424(The list of w)144 237.6 R .424 -(ords follo)-.1 F(wing)-.25 E F1(in)2.924 E F0 .423(is e)2.924 F .423 -(xpanded, generating a list of items.)-.15 F .423(The v)5.423 F(ariable) --.25 E F2(name)2.923 E F0 .423(is set to)2.923 F .653 -(each element of this list in turn, and)144 249.6 R F2(list)3.153 E F0 +F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0(is true.)2.52 E(The)144 280.8 +Q F3(&&)2.676 E F0(and)2.676 E F3(||)2.676 E F0 .175(operators do not e) +2.676 F -.25(va)-.25 G(luate).25 E F2 -.2(ex)2.675 G(pr).2 E(ession2) +-.37 E F0 .175(if the v)2.675 F .175(alue of)-.25 F F2 -.2(ex)2.675 G +(pr).2 E(ession1)-.37 E F0 .175(is suf)2.675 F .175(\214cient to de-) +-.25 F(termine the return v)144 292.8 Q +(alue of the entire conditional e)-.25 E(xpression.)-.15 E F3 -.25(fo) +108 309.6 S(r).25 E F2(name)2.5 E F0 2.5([[)2.5 G F3(in)A F0([)2.5 E F2 +(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 2.5(]];])2.5 G F3(do)A F2(list)2.5 +E F0(;)2.5 E F3(done)2.5 E F0 .423(The list of w)144 321.6 R .423 +(ords follo)-.1 F(wing)-.25 E F3(in)2.923 E F0 .423(is e)2.923 F .423 +(xpanded, generating a list of items.)-.15 F .424(The v)5.424 F(ariable) +-.25 E F2(name)2.924 E F0 .424(is set to)2.924 F .653 +(each element of this list in turn, and)144 333.6 R F2(list)3.153 E F0 .653(is e)3.153 F -.15(xe)-.15 G .653(cuted each time.).15 F .653 -(If the)5.653 F F1(in)3.153 E F2(wor)3.153 E(d)-.37 E F0 .653 -(is omitted, the)3.153 F F1 -.25(fo)3.153 G(r).25 E F0 .649(command e) -144 261.6 R -.15(xe)-.15 G(cutes).15 E F2(list)3.149 E F0 .648 -(once for each positional parameter that is set \(see)3.148 F/F3 9 -/Times-Bold@0 SF -.666(PA)3.148 G(RAMETERS).666 E F0(belo)2.898 E(w\).) --.25 E .153(The return status is the e)144 273.6 R .153 -(xit status of the last command that e)-.15 F -.15(xe)-.15 G 2.654 -(cutes. If).15 F .154(the e)2.654 F .154(xpansion of the items)-.15 F -(follo)144 285.6 Q(wing)-.25 E F1(in)2.5 E F0 +(If the)5.653 F F3(in)3.153 E F2(wor)3.153 E(d)-.37 E F0 .653 +(is omitted, the)3.153 F F3 -.25(fo)3.153 G(r).25 E F0 .648(command e) +144 345.6 R -.15(xe)-.15 G(cutes).15 E F2(list)3.148 E F0 .648 +(once for each positional parameter that is set \(see)3.148 F F1 -.666 +(PA)3.149 G(RAMETERS).666 E F0(belo)2.899 E(w\).)-.25 E .154 +(The return status is the e)144 357.6 R .153 +(xit status of the last command that e)-.15 F -.15(xe)-.15 G 2.653 +(cutes. If).15 F .153(the e)2.653 F .153(xpansion of the items)-.15 F +(follo)144 369.6 Q(wing)-.25 E F3(in)2.5 E F0 (results in an empty list, no commands are e)2.5 E -.15(xe)-.15 G -(cuted, and the return status is 0.).15 E F1 -.25(fo)108 302.4 S(r).25 E +(cuted, and the return status is 0.).15 E F3 -.25(fo)108 386.4 S(r).25 E F0(\(\()2.5 E F2 -.2(ex)2.5 G(pr1).2 E F0(;)2.5 E F2 -.2(ex)2.5 G(pr2).2 -E F0(;)2.5 E F2 -.2(ex)2.5 G(pr3).2 E F0(\)\) ;)2.5 E F1(do)2.5 E F2 -(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 1.236(First, the arithmetic e) -144 314.4 R(xpression)-.15 E F2 -.2(ex)3.736 G(pr1).2 E F0 1.235(is e) -3.736 F -.25(va)-.25 G 1.235 -(luated according to the rules described belo).25 F 3.735(wu)-.25 G -(nder)-3.735 E F3 .561(ARITHMETIC EV)144 326.4 R(ALU)-1.215 E -.855(AT) --.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 .561(The arithmetic e) -5.061 F(xpression)-.15 E F2 -.2(ex)3.061 G(pr2).2 E F0 .562(is then e) -3.062 F -.25(va)-.25 G .562(luated repeatedly until).25 F .592(it e)144 -338.4 R -.25(va)-.25 G .592(luates to zero.).25 F .592(Each time)5.592 F +E F0(;)2.5 E F2 -.2(ex)2.5 G(pr3).2 E F0(\)\) ;)2.5 E F3(do)2.5 E F2 +(list)2.5 E F0(;)2.5 E F3(done)2.5 E F0 1.235(First, the arithmetic e) +144 398.4 R(xpression)-.15 E F2 -.2(ex)3.735 G(pr1).2 E F0 1.235(is e) +3.735 F -.25(va)-.25 G 1.236 +(luated according to the rules described belo).25 F 3.736(wu)-.25 G +(nder)-3.736 E F1 .562(ARITHMETIC EV)144 410.4 R(ALU)-1.215 E -.855(AT) +-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 .562(The arithmetic e) +5.062 F(xpression)-.15 E F2 -.2(ex)3.062 G(pr2).2 E F0 .561(is then e) +3.061 F -.25(va)-.25 G .561(luated repeatedly until).25 F .591(it e)144 +422.4 R -.25(va)-.25 G .591(luates to zero.).25 F .592(Each time)5.591 F F2 -.2(ex)3.092 G(pr2).2 E F0 -.25(eva)3.092 G .592 -(luates to a non-zero v).25 F(alue,)-.25 E F2(list)3.092 E F0 .591(is e) -3.092 F -.15(xe)-.15 G .591(cuted and the arith-).15 F .228(metic e)144 -350.4 R(xpression)-.15 E F2 -.2(ex)2.728 G(pr3).2 E F0 .229(is e)2.728 F +(luates to a non-zero v).25 F(alue,)-.25 E F2(list)3.092 E F0 .592(is e) +3.092 F -.15(xe)-.15 G .592(cuted and the arith-).15 F .229(metic e)144 +434.4 R(xpression)-.15 E F2 -.2(ex)2.729 G(pr3).2 E F0 .229(is e)2.729 F -.25(va)-.25 G 2.729(luated. If).25 F(an)2.729 E 2.729(ye)-.15 G .229 (xpression is omitted, it beha)-2.879 F -.15(ve)-.2 G 2.729(sa).15 G -2.729(si)-2.729 G 2.729(fi)-2.729 G 2.729(te)-2.729 G -.25(va)-2.979 G -.229(luates to 1.).25 F .228(The return v)144 362.4 R .228 -(alue is the e)-.25 F .228(xit status of the last command in)-.15 F F2 -(list)2.728 E F0 .227(that is e)2.728 F -.15(xe)-.15 G .227(cuted, or f) -.15 F .227(alse if an)-.1 F 2.727(yo)-.15 G 2.727(ft)-2.727 G(he)-2.727 -E -.15(ex)144 374.4 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F1 -(select)108 391.2 Q F2(name)2.5 E F0([)2.5 E F1(in)2.5 E F2(wor)2.5 E(d) --.37 E F0 2.5(];)2.5 G F1(do)A F2(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 -.432(The list of w)144 403.2 R .432(ords follo)-.1 F(wing)-.25 E F1(in) -2.932 E F0 .432(is e)2.932 F .432(xpanded, generating a list of items.) --.15 F .433(The set of e)5.433 F .433(xpanded w)-.15 F(ords)-.1 E .843 -(is printed on the standard error)144 415.2 R 3.342(,e)-.4 G .842 -(ach preceded by a number)-3.342 F 5.842(.I)-.55 G 3.342(ft)-5.842 G(he) --3.342 E F1(in)3.342 E F2(wor)3.342 E(d)-.37 E F0 .842 -(is omitted, the posi-)3.342 F .201(tional parameters are printed \(see) -144 427.2 R F3 -.666(PA)2.701 G(RAMETERS).666 E F0(belo)2.451 E 2.701 -(w\). The)-.25 F F3(PS3)2.701 E F0 .201(prompt is then displayed and a) -2.451 F .214(line read from the standard input.)144 439.2 R .213 -(If the line consists of a number corresponding to one of the dis-)5.214 -F 1.537(played w)144 451.2 R 1.537(ords, then the v)-.1 F 1.537(alue of) --.25 F F2(name)4.397 E F0 1.537(is set to that w)4.217 F 4.037(ord. If) --.1 F 1.538(the line is empty)4.038 F 4.038(,t)-.65 G 1.538(he w)-4.038 -F 1.538(ords and)-.1 F .066(prompt are displayed ag)144 463.2 R 2.566 -(ain. If)-.05 F .065(EOF is read, the command completes.)2.566 F(An) -5.065 E 2.565(yo)-.15 G .065(ther v)-2.565 F .065(alue read causes)-.25 -F F2(name)144.36 475.2 Q F0 .953(to be set to null.)3.633 F .953 -(The line read is sa)5.953 F -.15(ve)-.2 G 3.454(di).15 G 3.454(nt) --3.454 G .954(he v)-3.454 F(ariable)-.25 E F3(REPL)3.454 E(Y)-.828 E F4 -(.)A F0(The)5.454 E F2(list)3.544 E F0 .954(is e)4.134 F -.15(xe)-.15 G -.954(cuted after).15 F .072(each selection until a)144 487.2 R F1(br) -2.571 E(eak)-.18 E F0 .071(command is e)2.571 F -.15(xe)-.15 G 2.571 -(cuted. The).15 F -.15(ex)2.571 G .071(it status of).15 F F1(select) -2.571 E F0 .071(is the e)2.571 F .071(xit status of the)-.15 F -(last command e)144 499.2 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.59 E -F0 2.5(,o).68 G 2.5(rz)-2.5 G(ero if no commands were e)-2.5 E -.15(xe) --.15 G(cuted.).15 E F1(case)108 516 Q F2(wor)2.5 E(d)-.37 E F1(in)2.5 E -F0 2.5([[)2.5 G(\(])-2.5 E F2(pattern)2.5 E F0([)2.5 E F1(|)2.5 E F2 -(pattern)2.5 E F0 2.5(].)2.5 G(.. \))-2.5 E F2(list)2.5 E F0(;; ] ...) -2.5 E F1(esac)2.5 E F0(A)144 528 Q F1(case)3.264 E F0 .764 -(command \214rst e)3.264 F(xpands)-.15 E F2(wor)3.264 E(d)-.37 E F0 +2.729(si)-2.729 G 2.729(fi)-2.729 G 2.728(te)-2.729 G -.25(va)-2.978 G +.228(luates to 1.).25 F .227(The return v)144 446.4 R .227 +(alue is the e)-.25 F .227(xit status of the last command in)-.15 F F2 +(list)2.728 E F0 .228(that is e)2.728 F -.15(xe)-.15 G .228(cuted, or f) +.15 F .228(alse if an)-.1 F 2.728(yo)-.15 G 2.728(ft)-2.728 G(he)-2.728 +E -.15(ex)144 458.4 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F3 +(select)108 475.2 Q F2(name)2.5 E F0([)2.5 E F3(in)2.5 E F2(wor)2.5 E(d) +-.37 E F0 2.5(];)2.5 G F3(do)A F2(list)2.5 E F0(;)2.5 E F3(done)2.5 E F0 +1.358(The list of w)144 487.2 R 1.358(ords follo)-.1 F(wing)-.25 E F3 +(in)3.858 E F0 1.358(is e)3.858 F 1.357 +(xpanded, generating a list of items, and the set of e)-.15 F(xpanded) +-.15 E -.1(wo)144 499.2 S .601(rds is printed on the standard error).1 F +3.101(,e)-.4 G .601(ach preceded by a number)-3.101 F 5.601(.I)-.55 G +3.101(ft)-5.601 G(he)-3.101 E F3(in)3.101 E F2(wor)3.101 E(d)-.37 E F0 +.602(is omitted, the)3.101 F .188 +(positional parameters are printed \(see)144 511.2 R F1 -.666(PA)2.688 G +(RAMETERS).666 E F0(belo)2.438 E(w\).)-.25 E F3(select)5.188 E F0 .188 +(then displays the)2.688 F F1(PS3)2.687 E F0(prompt)2.437 E .46 +(and reads a line from the standard input.)144 523.2 R .461 +(If the line consists of a number corresponding to one of)5.46 F .141 +(the displayed w)144 535.2 R .141(ords, then the v)-.1 F .141(alue of) +-.25 F F2(name)3.001 E F0 .141(is set to that w)2.821 F 2.641(ord. If) +-.1 F .141(the line is empty)2.641 F 2.641(,t)-.65 G .141(he w)-2.641 F +.141(ords and)-.1 F 1.048(prompt are displayed ag)144 547.2 R 3.548 +(ain. If)-.05 F 1.048(EOF is read, the)3.548 F F3(select)3.548 E F0 +1.048(command completes and returns 1.)3.548 F(An)6.048 E(y)-.15 E .32 +(other v)144 559.2 R .32(alue read causes)-.25 F F2(name)3.18 E F0 .32 +(to be set to null.)3 F .32(The line read is sa)5.32 F -.15(ve)-.2 G +2.82(di).15 G 2.82(nt)-2.82 G .319(he v)-2.82 F(ariable)-.25 E F1(REPL) +2.819 E(Y)-.828 E F4(.)A F0(The)4.819 E F2(list)144.09 571.2 Q F0 .055 +(is e)3.235 F -.15(xe)-.15 G .056(cuted after each selection until a).15 +F F3(br)2.556 E(eak)-.18 E F0 .056(command is e)2.556 F -.15(xe)-.15 G +2.556(cuted. The).15 F -.15(ex)2.556 G .056(it status of).15 F F3 +(select)2.556 E F0(is)2.556 E(the e)144 583.2 Q +(xit status of the last command e)-.15 E -.15(xe)-.15 G(cuted in).15 E +F2(list)2.59 E F0 2.5(,o).68 G 2.5(rz)-2.5 G(ero if no commands were e) +-2.5 E -.15(xe)-.15 G(cuted.).15 E F3(case)108 600 Q F2(wor)2.5 E(d)-.37 +E F3(in)2.5 E F0 2.5([[)2.5 G(\(])-2.5 E F2(pattern)2.5 E F0([)2.5 E F3 +(|)2.5 E F2(pattern)2.5 E F0 2.5(].)2.5 G(.. \))-2.5 E F2(list)2.5 E F0 +(;; ] ...)2.5 E F3(esac)2.5 E F0(A)144 612 Q F3(case)3.265 E F0 .764 +(command \214rst e)3.265 F(xpands)-.15 E F2(wor)3.264 E(d)-.37 E F0 3.264(,a)C .764(nd tries to match it ag)-3.264 F .764(ainst each)-.05 F -F2(pattern)3.264 E F0 .765(in turn, using the)3.264 F .884 -(matching rules described under)144 540 R F1 -.1(Pa)3.384 G(tter).1 E +F2(pattern)3.264 E F0 .764(in turn, using the)3.264 F .883 +(matching rules described under)144 624 R F3 -.1(Pa)3.384 G(tter).1 E 3.384(nM)-.15 G(atching)-3.384 E F0(belo)3.384 E 4.684 -.65(w. T)-.25 H -(he).65 E F2(wor)3.384 E(d)-.37 E F0 .884(is e)3.384 F .883 +(he).65 E F2(wor)3.384 E(d)-.37 E F0 .884(is e)3.384 F .884 (xpanded using tilde e)-.15 F(x-)-.15 E .95(pansion, parameter and v)144 -552 R .95(ariable e)-.25 F .95(xpansion, arithmetic e)-.15 F .95 -(xpansion, command substitution, process)-.15 F .181 -(substitution and quote remo)144 564 R -.25(va)-.15 G 2.681(l. Each).25 +636 R .95(ariable e)-.25 F .95(xpansion, arithmetic e)-.15 F .95 +(xpansion, command substitution, process)-.15 F .18 +(substitution and quote remo)144 648 R -.25(va)-.15 G 2.681(l. Each).25 F F2(pattern)2.681 E F0 -.15(ex)2.681 G .181(amined is e).15 F .181 -(xpanded using tilde e)-.15 F .18(xpansion, param-)-.15 F .103 -(eter and v)144 576 R .103(ariable e)-.25 F .103(xpansion, arithmetic e) --.15 F .103(xpansion, command substitution, and process substitution.) --.15 F .687(If the)144 588 R F1(nocasematch)3.187 E F0 .687 -(shell option is enabled, the match is performed without re)3.187 F -.05 -(ga)-.15 G .687(rd to the case of).05 F .464(alphabetic characters.)144 -600 R .464(When a match is found, the corresponding)5.464 F F2(list) -2.964 E F0 .464(is e)2.964 F -.15(xe)-.15 G 2.964(cuted. If).15 F(the) -2.964 E F1(;;)2.964 E F0(opera-)2.964 E .675(tor is used, no subsequent\ - matches are attempted after the \214rst pattern match.)144 612 R(Using) -5.674 E F1(;&)3.174 E F0 .674(in place)3.174 F(of)144 624 Q F1(;;)2.866 -E F0 .366(causes e)2.866 F -.15(xe)-.15 G .366 -(cution to continue with the).15 F F2(list)2.866 E F0 .367 -(associated with the ne)2.866 F .367(xt set of patterns.)-.15 F(Using) -5.367 E F1(;;&)2.867 E F0 .596(in place of)144 636 R F1(;;)3.096 E F0 -.596(causes the shell to test the ne)3.096 F .595 -(xt pattern list in the statement, if an)-.15 F 1.895 -.65(y, a)-.15 H -.595(nd e).65 F -.15(xe)-.15 G .595(cute an).15 F(y)-.15 E(associated) -144 648 Q F2(list)2.96 E F0 .461 -(on a successful match, continuing the case statement e)2.96 F -.15(xe) --.15 G .461(cution as if the pattern list).15 F .677(had not matched.) -144 660 R .677(The e)5.677 F .677 -(xit status is zero if no pattern matches.)-.15 F .676 -(Otherwise, it is the e)5.677 F .676(xit status of)-.15 F -(the last command e)144 672 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.5 -E F0(.)A F1(if)108 688.8 Q F2(list)2.5 E F0(;)A F1(then)2.5 E F2(list) -2.5 E F0 2.5(;[)C F1(elif)A F2(list)2.5 E F0(;)A F1(then)2.5 E F2(list) -2.5 E F0 2.5(;].)C(.. [)-2.5 E F1(else)2.5 E F2(list)2.5 E F0 2.5(;])C -F1<8c>A F0(The)144 700.8 Q F1(if)2.977 E F2(list)3.067 E F0 .478(is e) -3.658 F -.15(xe)-.15 G 2.978(cuted. If).15 F .478(its e)2.978 F .478 -(xit status is zero, the)-.15 F F1(then)2.978 E F2(list)2.978 E F0 .478 -(is e)2.978 F -.15(xe)-.15 G 2.978(cuted. Otherwise,).15 F(each)2.978 E -F1(elif)2.978 E F2(list)2.978 E F0 1.088(is e)144 712.8 R -.15(xe)-.15 G -1.088(cuted in turn, and if its e).15 F 1.087 -(xit status is zero, the corresponding)-.15 F F1(then)3.587 E F2(list) -3.587 E F0 1.087(is e)3.587 F -.15(xe)-.15 G 1.087(cuted and the).15 F -1.239(command completes.)144 724.8 R 1.239(Otherwise, the)6.239 F F1 -(else)3.739 E F2(list)3.739 E F0 1.239(is e)3.739 F -.15(xe)-.15 G 1.239 -(cuted, if present.).15 F 1.24(The e)6.239 F 1.24(xit status is the e) --.15 F(xit)-.15 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(6) -195.395 E 0 Cg EP +(xpanded using tilde e)-.15 F .181(xpansion, param-)-.15 F .103 +(eter and v)144 660 R .103(ariable e)-.25 F .103(xpansion, arithmetic e) +-.15 F .103(xpansion, command substitution, process substitution, and) +-.15 F .138(quote remo)144 672 R -.25(va)-.15 G 2.638(l. If).25 F(the) +2.638 E F3(nocasematch)2.638 E F0 .139 +(shell option is enabled, the match is performed without re)2.638 F -.05 +(ga)-.15 G(rd).05 E .209(to the case of alphabetic characters.)144 684 R +.209(When a match is found, the corresponding)5.209 F F2(list)2.708 E F0 +.208(is e)2.708 F -.15(xe)-.15 G 2.708(cuted. If).15 F(the)144 696 Q F3 +(;;)3.349 E F0 .849(operator is used, no subsequent matches are attempt\ +ed after the \214rst pattern match.)3.349 F(Using)5.85 E F3(;&)144 708 Q +F0 .254(in place of)2.754 F F3(;;)2.754 E F0 .254(causes e)2.754 F -.15 +(xe)-.15 G .254(cution to continue with the).15 F F2(list)2.754 E F0 +.254(associated with the ne)2.754 F .253(xt set of patterns.)-.15 F +(Using)144 720 Q F3(;;&)3.378 E F0 .878(in place of)3.378 F F3(;;)3.378 +E F0 .878(causes the shell to test the ne)3.378 F .878 +(xt pattern list in the statement, if an)-.15 F 2.178 -.65(y, a)-.15 H +(nd).65 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(6)190.115 E +0 Cg EP %%Page: 7 7 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(status of the last command e)144 84 Q -.15(xe)-.15 G -(cuted, or zero if no condition tested true.).15 E/F1 10/Times-Bold@0 SF -(while)108 100.8 Q/F2 10/Times-Italic@0 SF(list-1)2.5 E F0(;)A F1(do)2.5 -E F2(list-2)2.5 E F0(;)A F1(done)2.5 E(until)108 112.8 Q F2(list-1)2.5 E -F0(;)A F1(do)2.5 E F2(list-2)2.5 E F0(;)A F1(done)2.5 E F0(The)144 124.8 -Q F1(while)3.45 E F0 .95(command continuously e)3.45 F -.15(xe)-.15 G -.95(cutes the list).15 F F2(list-2)3.45 E F0 .95 -(as long as the last command in the list)3.45 F F2(list-1)144 136.8 Q F0 -.205(returns an e)2.705 F .205(xit status of zero.)-.15 F(The)5.205 E F1 -(until)2.705 E F0 .205(command is identical to the)2.705 F F1(while) -2.705 E F0 .205(command, e)2.705 F(xcept)-.15 E .6(that the test is ne) -144 148.8 R -.05(ga)-.15 G(ted:).05 E F2(list-2)3.19 E F0 .6(is e)3.12 F --.15(xe)-.15 G .599(cuted as long as the last command in).15 F F2 -(list-1)3.189 E F0 .599(returns a non-zero)3.099 F -.15(ex)144 160.8 S -.204(it status.).15 F .204(The e)5.204 F .204(xit status of the)-.15 F -F1(while)2.704 E F0(and)2.704 E F1(until)2.704 E F0 .205 -(commands is the e)2.704 F .205(xit status of the last command)-.15 F --.15(exe)144 172.8 S(cuted in).15 E F2(list-2)2.5 E F0 2.5(,o)C 2.5(rz) --2.5 G(ero if none w)-2.5 E(as e)-.1 E -.15(xe)-.15 G(cuted.).15 E F1 -(Copr)87 189.6 Q(ocesses)-.18 E F0(A)108 201.6 Q F2(copr)3.713 E(ocess) --.45 E F0 1.213(is a shell command preceded by the)3.713 F F1(copr)3.712 -E(oc)-.18 E F0(reserv)3.712 E 1.212(ed w)-.15 F 3.712(ord. A)-.1 F 1.212 -(coprocess is e)3.712 F -.15(xe)-.15 G 1.212(cuted asyn-).15 F .574(chr\ +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.15(exe)144 84 S +.159(cute an).15 F 2.659(ya)-.15 G(ssociated)-2.659 E/F1 10 +/Times-Italic@0 SF(list)2.659 E F0 .159 +(on a successful match, continuing the case statement e)2.659 F -.15(xe) +-.15 G .158(cution as if the).15 F .182(pattern list had not matched.) +144 96 R .183(The e)5.183 F .183 +(xit status is zero if no pattern matches.)-.15 F .183 +(Otherwise, it is the e)5.183 F(xit)-.15 E(status of the last command e) +144 108 Q -.15(xe)-.15 G(cuted in).15 E F1(list)2.5 E F0(.)A/F2 10 +/Times-Bold@0 SF(if)108 124.8 Q F1(list)2.5 E F0(;)A F2(then)2.5 E F1 +(list)2.5 E F0 2.5(;[)C F2(elif)A F1(list)2.5 E F0(;)A F2(then)2.5 E F1 +(list)2.5 E F0 2.5(;].)C(.. [)-2.5 E F2(else)2.5 E F1(list)2.5 E F0 2.5 +(;])C F2<8c>A F0(The)144 136.8 Q F2(if)2.978 E F1(list)3.068 E F0 .478 +(is e)3.658 F -.15(xe)-.15 G 2.978(cuted. If).15 F .478(its e)2.978 F +.478(xit status is zero, the)-.15 F F2(then)2.978 E F1(list)2.978 E F0 +.478(is e)2.978 F -.15(xe)-.15 G 2.978(cuted. Otherwise,).15 F(each) +2.978 E F2(elif)2.977 E F1(list)2.977 E F0 1.087(is e)144 148.8 R -.15 +(xe)-.15 G 1.087(cuted in turn, and if its e).15 F 1.087 +(xit status is zero, the corresponding)-.15 F F2(then)3.587 E F1(list) +3.587 E F0 1.088(is e)3.588 F -.15(xe)-.15 G 1.088(cuted and the).15 F +.104(command completes.)144 160.8 R .103(Otherwise, the)5.104 F F2(else) +2.603 E F1(list)2.603 E F0 .103(is e)2.603 F -.15(xe)-.15 G .103 +(cuted, if present.).15 F .103(The e)5.103 F .103(xit status is the e) +-.15 F .103(xit sta-)-.15 F(tus of the last command e)144 172.8 Q -.15 +(xe)-.15 G(cuted, or zero if no condition tested true.).15 E F2(while) +108 189.6 Q F1(list-1)2.5 E F0(;)A F2(do)2.5 E F1(list-2)2.5 E F0(;)A F2 +(done)2.5 E(until)108 201.6 Q F1(list-1)2.5 E F0(;)A F2(do)2.5 E F1 +(list-2)2.5 E F0(;)A F2(done)2.5 E F0(The)144 213.6 Q F2(while)3.45 E F0 +.95(command continuously e)3.45 F -.15(xe)-.15 G .95(cutes the list).15 +F F1(list-2)3.45 E F0 .95(as long as the last command in the list)3.45 F +F1(list-1)144 225.6 Q F0 .205(returns an e)2.705 F .205 +(xit status of zero.)-.15 F(The)5.205 E F2(until)2.705 E F0 .205 +(command is identical to the)2.705 F F2(while)2.705 E F0 .205 +(command, e)2.705 F(xcept)-.15 E .599(that the test is ne)144 237.6 R +-.05(ga)-.15 G(ted:).05 E F1(list-2)3.189 E F0 .599(is e)3.119 F -.15 +(xe)-.15 G .6(cuted as long as the last command in).15 F F1(list-1)3.19 +E F0 .6(returns a non-zero)3.1 F -.15(ex)144 249.6 S .205(it status.).15 +F .205(The e)5.205 F .205(xit status of the)-.15 F F2(while)2.705 E F0 +(and)2.705 E F2(until)2.704 E F0 .204(commands is the e)2.704 F .204 +(xit status of the last command)-.15 F -.15(exe)144 261.6 S(cuted in).15 +E F1(list-2)2.5 E F0 2.5(,o)C 2.5(rz)-2.5 G(ero if none w)-2.5 E(as e) +-.1 E -.15(xe)-.15 G(cuted.).15 E F2(Copr)87 278.4 Q(ocesses)-.18 E F0 +(A)108 290.4 Q F1(copr)3.712 E(ocess)-.45 E F0 1.212 +(is a shell command preceded by the)3.712 F F2(copr)3.713 E(oc)-.18 E F0 +(reserv)3.713 E 1.213(ed w)-.15 F 3.713(ord. A)-.1 F 1.213 +(coprocess is e)3.713 F -.15(xe)-.15 G 1.213(cuted asyn-).15 F .575(chr\ onously in a subshell, as if the command had been terminated with the) -108 213.6 R F1(&)3.075 E F0 .575(control operator)3.075 F 3.075(,w)-.4 G -.575(ith a tw)-3.075 F(o-)-.1 E -.1(wa)108 225.6 S 2.5(yp).1 G +108 302.4 R F2(&)3.074 E F0 .574(control operator)3.074 F 3.074(,w)-.4 G +.574(ith a tw)-3.074 F(o-)-.1 E -.1(wa)108 314.4 S 2.5(yp).1 G (ipe established between the e)-2.5 E -.15(xe)-.15 G -(cuting shell and the coprocess.).15 E(The format for a coprocess is:) -108 242.4 Q F1(copr)144 259.2 Q(oc)-.18 E F0([)2.5 E F2 -.27(NA)C(ME).27 -E F0(])A F2(command)2.5 E F0([)2.5 E F2 -.37(re)C(dir).37 E(ections)-.37 -E F0(])A .709(This creates a coprocess named)108 276 R F2 -.27(NA)3.208 -G(ME).27 E F0 5.708(.I)C(f)-5.708 E F2 -.27(NA)3.208 G(ME).27 E F0 .708 -(is not supplied, the def)3.208 F .708(ault name is)-.1 F F1(COPR)3.208 -E(OC)-.3 E F0(.)A F2 -.27(NA)5.708 G(ME).27 E F0 .64 -(must not be supplied if)108 288 R F2(command)3.14 E F0 .64(is a)3.14 F -F2 .64(simple command)3.14 F F0 .64(\(see abo)3.14 F -.15(ve)-.15 G .64 -(\); otherwise, it is interpreted as the \214rst).15 F -.1(wo)108 300 S -.349(rd of the simple command.).1 F .348(When the coprocess is e)5.348 F --.15(xe)-.15 G .348(cuted, the shell creates an array v).15 F .348 -(ariable \(see)-.25 F F1(Ar)2.848 E(-)-.37 E(rays)108 312 Q F0(belo) -3.095 E .595(w\) named)-.25 F F2 -.27(NA)3.095 G(ME).27 E F0 .595 -(in the conte)3.095 F .595(xt of the e)-.15 F -.15(xe)-.15 G .595 -(cuting shell.).15 F .596(The standard output of)5.595 F F2(command) -3.296 E F0 .596(is con-)3.866 F .387 -(nected via a pipe to a \214le descriptor in the e)108 324 R -.15(xe) --.15 G .387(cuting shell, and that \214le descriptor is assigned to).15 -F F2 -.27(NA)2.886 G(ME).27 E F0([0].)A .57(The standard input of)108 -336 R F2(command)3.27 E F0 .571 -(is connected via a pipe to a \214le descriptor in the e)3.84 F -.15(xe) --.15 G .571(cuting shell, and that).15 F 1.221 -(\214le descriptor is assigned to)108 348 R F2 -.27(NA)3.721 G(ME).27 E -F0 3.721([1]. This)B 1.221(pipe is established before an)3.721 F 3.72 -(yr)-.15 G 1.22(edirections speci\214ed by the)-3.72 F 1.58 -(command \(see)108 360 R/F3 9/Times-Bold@0 SF(REDIRECTION)4.08 E F0 -(belo)3.83 E 4.08(w\). The)-.25 F 1.581 -(\214le descriptors can be utilized as ar)4.08 F 1.581 -(guments to shell com-)-.18 F .149 -(mands and redirections using standard w)108 372 R .149(ord e)-.1 F -2.649(xpansions. Other)-.15 F .148(than those created to e)2.649 F -.15 -(xe)-.15 G .148(cute command and).15 F 2.462 -(process substitutions, the \214le descriptors are not a)108 384 R -.25 -(va)-.2 G 2.463(ilable in subshells.).25 F 2.463 -(The process ID of the shell)7.463 F(spa)108 396 Q 1.115(wned to e)-.15 -F -.15(xe)-.15 G 1.115(cute the coprocess is a).15 F -.25(va)-.2 G 1.115 -(ilable as the v).25 F 1.115(alue of the v)-.25 F(ariable)-.25 E F2 -.27 -(NA)3.615 G(ME).27 E F0 3.615(_PID. The)B F1(wait)3.615 E F0 -.2(bu) -3.615 G(iltin).2 E(command may be used to w)108 408 Q +(cuting shell and the coprocess.).15 E(The syntax for a coprocess is:) +108 331.2 Q F2(copr)144 348 Q(oc)-.18 E F0([)2.5 E F1 -.27(NA)C(ME).27 E +F0(])A F1(command)2.5 E F0([)2.5 E F1 -.37(re)C(dir).37 E(ections)-.37 E +F0(])A .598(This creates a coprocess named)108 364.8 R F1 -.27(NA)3.099 +G(ME).27 E F0(.)A F1(command)5.599 E F0 .599 +(may be either a simple command or a compound com-)3.099 F 1.4 +(mand \(see abo)108 376.8 R -.15(ve)-.15 G(\).).15 E F1 -.27(NA)6.4 G +(ME).27 E F0 1.4(is a shell v)3.9 F 1.4(ariable name.)-.25 F(If)6.4 E F1 +-.27(NA)3.9 G(ME).27 E F0 1.4(is not supplied, the def)3.9 F 1.4 +(ault name is)-.1 F F2(CO-)3.9 E(PR)108 388.8 Q(OC)-.3 E F0(.)A +(The recommended form to use for a coprocess is)108 405.6 Q F2(copr)144 +422.4 Q(oc)-.18 E F1 -.27(NA)2.5 G(ME).27 E F0({)2.5 E F1(command)2.5 E +F0([)2.5 E F1 -.37(re)C(dir).37 E(ections)-.37 E F0(]; })A 1.313(This f\ +orm is recommended because simple commands result in the coprocess al) +108 439.2 R -.1(wa)-.1 G 1.313(ys being named).1 F F2(CO-)3.813 E(PR)108 +451.2 Q(OC)-.3 E F0 2.5(,a)C(nd it is simpler to use and more complete \ +than the other compound commands.)-2.5 E(If)108 468 Q F1(command)3.062 E +F0 .562(is a compound command,)3.062 F F1 -.27(NA)3.062 G(ME).27 E F0 +.561(is optional. The w)3.061 F .561(ord follo)-.1 F(wing)-.25 E F2 +(copr)3.061 E(oc)-.18 E F0 .561(determines whether)3.061 F .338(that w) +108 480 R .338(ord is interpreted as a v)-.1 F .338 +(ariable name: it is interpreted as)-.25 F F1 -.27(NA)2.839 G(ME).27 E +F0 .339(if it is not a reserv)2.839 F .339(ed w)-.15 F .339 +(ord that intro-)-.1 F 1.122(duces a compound command.)108 492 R(If) +6.121 E F1(command)3.621 E F0 1.121(is a simple command,)3.621 F F1 -.27 +(NA)3.621 G(ME).27 E F0 1.121(is not allo)3.621 F 1.121 +(wed; this is to a)-.25 F -.2(vo)-.2 G(id).2 E(confusion between)108 504 +Q F1 -.27(NA)2.5 G(ME).27 E F0(and the \214rst w)2.5 E +(ord of the simple command.)-.1 E .09(When the coprocess is e)108 520.8 +R -.15(xe)-.15 G .09(cuted, the shell creates an array v).15 F .09 +(ariable \(see)-.25 F F2(Arrays)2.59 E F0(belo)2.59 E .09(w\) named)-.25 +F F1 -.27(NA)2.59 G(ME).27 E F0 .09(in the)2.59 F(conte)108 532.8 Q .303 +(xt of the e)-.15 F -.15(xe)-.15 G .303(cuting shell.).15 F .302 +(The standard output of)5.302 F F1(command)3.002 E F0 .302 +(is connected via a pipe to a \214le descriptor)3.572 F .587(in the e) +108 544.8 R -.15(xe)-.15 G .587 +(cuting shell, and that \214le descriptor is assigned to).15 F F1 -.27 +(NA)3.087 G(ME).27 E F0 3.087([0]. The)B .587(standard input of)3.087 F +F1(command)3.287 E F0(is)3.858 E 2.029 +(connected via a pipe to a \214le descriptor in the e)108 556.8 R -.15 +(xe)-.15 G 2.029 +(cuting shell, and that \214le descriptor is assigned to).15 F F1 -.27 +(NA)108 568.8 S(ME).27 E F0 2.879([1]. This)B .379 +(pipe is established before an)2.879 F 2.879(yr)-.15 G .379 +(edirections speci\214ed by the command \(see)-2.879 F/F3 9/Times-Bold@0 +SF(REDIRECTION)2.879 E F0(belo)108 580.8 Q 3.426(w\). The)-.25 F .926 +(\214le descriptors can be utilized as ar)3.426 F .925 +(guments to shell commands and redirections using stan-)-.18 F .286 +(dard w)108 592.8 R .286(ord e)-.1 F 2.786(xpansions. Other)-.15 F .286 +(than those created to e)2.786 F -.15(xe)-.15 G .286 +(cute command and process substitutions, the \214le de-).15 F +(scriptors are not a)108 604.8 Q -.25(va)-.2 G(ilable in subshells.).25 +E 1.676(The process ID of the shell spa)108 621.6 R 1.676(wned to e)-.15 +F -.15(xe)-.15 G 1.676(cute the coprocess is a).15 F -.25(va)-.2 G 1.676 +(ilable as the v).25 F 1.676(alue of the v)-.25 F(ariable)-.25 E F1 -.27 +(NA)108 633.6 S(ME).27 E F0 2.5(_PID. The)B F2(wait)2.5 E F0 -.2(bu)2.5 +G(iltin command may be used to w).2 E (ait for the coprocess to terminate.)-.1 E .336 (Since the coprocess is created as an asynchronous command, the)108 -424.8 R F1(copr)2.836 E(oc)-.18 E F0 .336(command al)2.836 F -.1(wa)-.1 +650.4 R F2(copr)2.836 E(oc)-.18 E F0 .336(command al)2.836 F -.1(wa)-.1 G .336(ys returns success.).1 F -(The return status of a coprocess is the e)108 436.8 Q(xit status of) --.15 E F2(command)2.5 E F0(.)A F1(Shell Function De\214nitions)87 453.6 -Q F0 2.698(As)108 465.6 S .198 +(The return status of a coprocess is the e)108 662.4 Q(xit status of) +-.15 E F1(command)2.5 E F0(.)A F2(Shell Function De\214nitions)87 679.2 +Q F0 2.698(As)108 691.2 S .198 (hell function is an object that is called lik)-2.698 F 2.698(eas)-.1 G .198(imple command and e)-2.698 F -.15(xe)-.15 G .197 -(cutes a compound command with).15 F 2.5(an)108 477.6 S .5 -.25(ew s) +(cutes a compound command with).15 F 2.5(an)108 703.2 S .5 -.25(ew s) -2.5 H(et of positional parameters.).25 E -(Shell functions are declared as follo)5 E(ws:)-.25 E F2(fname)108 494.4 -Q F0(\(\))2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C -(dir).37 E(ection)-.37 E F0(])A F1(function)108 506.4 Q F2(fname)2.5 E -F0([\(\)])2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C -(dir).37 E(ection)-.37 E F0(])A .216(This de\214nes a function named)144 -518.4 R F2(fname)2.716 E F0 5.217(.T)C .217(he reserv)-5.217 F .217 -(ed w)-.15 F(ord)-.1 E F1(function)2.717 E F0 .217(is optional.)2.717 F -.217(If the)5.217 F F1(function)2.717 E F0(re-)2.717 E(serv)144 530.4 Q -.68(ed w)-.15 F .68(ord is supplied, the parentheses are optional.)-.1 F -(The)5.68 E F2(body)3.18 E F0 .68(of the function is the compound)3.18 F -(command)144 542.4 Q F2(compound\255command)2.784 E F0(\(see)3.354 E F1 -.084(Compound Commands)2.584 F F0(abo)2.584 E -.15(ve)-.15 G 2.584 -(\). That).15 F .084(command is usually a)2.584 F F2(list)144 554.4 Q F0 -.044(of commands between { and }, b)2.544 F .044(ut may be an)-.2 F -2.544(yc)-.15 G .044(ommand listed under)-2.544 F F1 .044 -(Compound Commands)2.544 F F0(abo)144 566.4 Q -.15(ve)-.15 G 2.901(,w) -.15 G .401(ith one e)-2.901 F .401(xception: If the)-.15 F F1(function) -2.901 E F0(reserv)2.901 E .401(ed w)-.15 F .401(ord is used, b)-.1 F -.402(ut the parentheses are not sup-)-.2 F 1.046 -(plied, the braces are required.)144 578.4 R F2(compound\255command) -6.046 E F0 1.046(is e)3.546 F -.15(xe)-.15 G 1.046(cuted whene).15 F --.15(ve)-.25 G(r).15 E F2(fname)3.546 E F0 1.045(is speci\214ed as)3.546 -F .365(the name of a simple command.)144 590.4 R .365(When in)5.365 F F2 -.366(posix mode)2.865 F F0(,)A F2(fname)2.866 E F0 .366(must be a v) -2.866 F .366(alid shell)-.25 F F2(name)2.866 E F0 .366(and may)2.866 F -.894(not be the name of one of the POSIX)144 602.4 R F2 .893(special b) -3.393 F(uiltins)-.2 E F0 5.893(.I)C 3.393(nd)-5.893 G(ef)-3.393 E .893 -(ault mode, a function name can be)-.1 F(an)144 614.4 Q 3.649(yu)-.15 G -1.149(nquoted shell w)-3.649 F 1.15(ord that does not contain)-.1 F F1 -($)3.65 E F0 6.15(.A)C 1.45 -.15(ny r)-6.15 H 1.15(edirections \(see).15 -F F3(REDIRECTION)3.65 E F0(belo)3.4 E(w\))-.25 E .417(speci\214ed when \ -a function is de\214ned are performed when the function is e)144 626.4 R --.15(xe)-.15 G 2.916(cuted. The).15 F -.15(ex)2.916 G .416(it status).15 -F .733(of a function de\214nition is zero unless a syntax error occurs \ -or a readonly function with the same)144 638.4 R .178(name already e)144 -650.4 R 2.678(xists. When)-.15 F -.15(exe)2.678 G .178(cuted, the e).15 -F .178(xit status of a function is the e)-.15 F .177 -(xit status of the last com-)-.15 F(mand e)144 662.4 Q -.15(xe)-.15 G -(cuted in the body).15 E 5(.\()-.65 G(See)-5 E F3(FUNCTIONS)2.5 E F0 +(Shell functions are declared as follo)5 E(ws:)-.25 E(GNU Bash 5.2)72 +768 Q(2022 September 19)135.955 E(7)190.115 E 0 Cg EP +%%Page: 8 8 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF(fname)108 84 Q F0(\(\))2.5 E F1(compound\255command) +2.5 E F0([)2.5 E F1 -.37(re)C(dir).37 E(ection)-.37 E F0(])A/F2 10 +/Times-Bold@0 SF(function)108 96 Q F1(fname)2.5 E F0([\(\)])2.5 E F1 +(compound\255command)2.5 E F0([)2.5 E F1 -.37(re)C(dir).37 E(ection)-.37 +E F0(])A .216(This de\214nes a function named)144 108 R F1(fname)2.716 E +F0 5.217(.T)C .217(he reserv)-5.217 F .217(ed w)-.15 F(ord)-.1 E F2 +(function)2.717 E F0 .217(is optional.)2.717 F .217(If the)5.217 F F2 +(function)2.717 E F0(re-)2.717 E(serv)144 120 Q .68(ed w)-.15 F .68 +(ord is supplied, the parentheses are optional.)-.1 F(The)5.68 E F1 +(body)3.18 E F0 .68(of the function is the compound)3.18 F(command)144 +132 Q F1(compound\255command)2.784 E F0(\(see)3.354 E F2 .084 +(Compound Commands)2.584 F F0(abo)2.584 E -.15(ve)-.15 G 2.584(\). That) +.15 F .084(command is usually a)2.584 F F1(list)144 144 Q F0 .044 +(of commands between { and }, b)2.544 F .044(ut may be an)-.2 F 2.544 +(yc)-.15 G .044(ommand listed under)-2.544 F F2 .044(Compound Commands) +2.544 F F0(abo)144 156 Q -.15(ve)-.15 G 5.531(.I).15 G 3.031(ft)-5.531 G +(he)-3.031 E F2(function)3.032 E F0(reserv)3.032 E .532(ed w)-.15 F .532 +(ord is used, b)-.1 F .532 +(ut the parentheses are not supplied, the braces are)-.2 F(recommended.) +144 168 Q F1(compound\255command)6.254 E F0 1.254(is e)3.754 F -.15(xe) +-.15 G 1.254(cuted whene).15 F -.15(ve)-.25 G(r).15 E F1(fname)3.753 E +F0 1.253(is speci\214ed as the name of a)3.753 F 1.252(simple command.) +144 180 R 1.252(When in)6.252 F F1 1.252(posix mode)3.752 F F0(,)A F1 +(fname)3.752 E F0 1.252(must be a v)3.752 F 1.252(alid shell)-.25 F F1 +(name)3.753 E F0 1.253(and may not be the)3.753 F .089 +(name of one of the POSIX)144 192 R F1 .089(special b)2.589 F(uiltins) +-.2 E F0 5.089(.I)C 2.589(nd)-5.089 G(ef)-2.589 E .089 +(ault mode, a function name can be an)-.1 F 2.588(yu)-.15 G(nquoted) +-2.588 E .164(shell w)144 204 R .164(ord that does not contain)-.1 F F2 +($)2.665 E F0 5.165(.A)C .465 -.15(ny r)-5.165 H .165(edirections \(see) +.15 F/F3 9/Times-Bold@0 SF(REDIRECTION)2.665 E F0(belo)2.415 E .165 +(w\) speci\214ed when a)-.25 F .061 +(function is de\214ned are performed when the function is e)144 216 R +-.15(xe)-.15 G 2.561(cuted. The).15 F -.15(ex)2.56 G .06 +(it status of a function de\214-).15 F .579(nition is zero unless a syn\ +tax error occurs or a readonly function with the same name already e)144 +228 R(x-)-.15 E 2.593(ists. When)144 240 R -.15(exe)2.593 G .093 +(cuted, the e).15 F .093(xit status of a function is the e)-.15 F .093 +(xit status of the last command e)-.15 F -.15(xe)-.15 G .092(cuted in) +.15 F(the body)144 252 Q 5(.\()-.65 G(See)-5 E F3(FUNCTIONS)2.5 E F0 (belo)2.25 E -.65(w.)-.25 G(\)).65 E/F4 10.95/Times-Bold@0 SF(COMMENTS) -72 679.2 Q F0 .982(In a non-interacti)108 691.2 R 1.282 -.15(ve s)-.25 H +72 268.8 Q F0 .982(In a non-interacti)108 280.8 R 1.282 -.15(ve s)-.25 H .982(hell, or an interacti).15 F 1.282 -.15(ve s)-.25 H .982 -(hell in which the).15 F F1(interacti)3.482 E -.1(ve)-.1 G(_comments).1 -E F0 .982(option to the)3.482 F F1(shopt)3.482 E F0 -.2(bu)108 703.2 S +(hell in which the).15 F F2(interacti)3.482 E -.1(ve)-.1 G(_comments).1 +E F0 .982(option to the)3.482 F F2(shopt)3.482 E F0 -.2(bu)108 292.8 S .952(iltin is enabled \(see).2 F F3 .952(SHELL B)3.452 F(UIL)-.09 E .952 (TIN COMMANDS)-.828 F F0(belo)3.202 E .952(w\), a w)-.25 F .952(ord be) --.1 F .952(ginning with)-.15 F F1(#)3.451 E F0 .951(causes that w)3.451 +-.1 F .952(ginning with)-.15 F F2(#)3.451 E F0 .951(causes that w)3.451 F(ord)-.1 E .604 -(and all remaining characters on that line to be ignored.)108 715.2 R +(and all remaining characters on that line to be ignored.)108 304.8 R .605(An interacti)5.605 F .905 -.15(ve s)-.25 H .605(hell without the) -.15 F F1(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 727.2 Q F0 -1.337(option enabled does not allo)3.837 F 3.837(wc)-.25 G 3.836 -(omments. The)-3.837 F F1(interacti)3.836 E -.1(ve)-.1 G(_comments).1 E -F0 1.336(option is on by def)3.836 F 1.336(ault in)-.1 F(GNU Bash 5.1)72 -768 Q(2020 October 29)141.235 E(7)195.395 E 0 Cg EP -%%Page: 8 8 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(interacti)108 84 Q -.3 -.15(ve s)-.25 H(hells.).15 E/F1 10.95/Times-Bold@0 SF -.11(QU)72 -100.8 S -.438(OT).11 G(ING).438 E/F2 10/Times-Italic@0 SF(Quoting)108 -112.8 Q F0 .477(is used to remo)2.977 F .777 -.15(ve t)-.15 H .477 -(he special meaning of certain characters or w).15 F .477 -(ords to the shell.)-.1 F .478(Quoting can be)5.478 F .185 +.15 F F2(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 316.8 Q F0 +.34(option enabled does not allo)2.84 F 2.84(wc)-.25 G 2.84 +(omments. The)-2.84 F F2(interacti)2.84 E -.1(ve)-.1 G(_comments).1 E F0 +.34(option is on by def)2.84 F .34(ault in in-)-.1 F(teracti)108 328.8 Q +.3 -.15(ve s)-.25 H(hells.).15 E F4 -.11(QU)72 345.6 S -.438(OT).11 G +(ING).438 E F1(Quoting)108 357.6 Q F0 .477(is used to remo)2.977 F .777 +-.15(ve t)-.15 H .477(he special meaning of certain characters or w).15 +F .477(ords to the shell.)-.1 F .478(Quoting can be)5.478 F .185 (used to disable special treatment for special characters, to pre)108 -124.8 R -.15(ve)-.25 G .185(nt reserv).15 F .184(ed w)-.15 F .184 -(ords from being recognized as)-.1 F(such, and to pre)108 136.8 Q -.15 +369.6 R -.15(ve)-.25 G .185(nt reserv).15 F .184(ed w)-.15 F .184 +(ords from being recognized as)-.1 F(such, and to pre)108 381.6 Q -.15 (ve)-.25 G(nt parameter e).15 E(xpansion.)-.15 E .288(Each of the)108 -153.6 R F2(metac)2.788 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288 -(listed abo)2.788 F .588 -.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 -SF(DEFINITIONS)2.788 E F0 .288 -(has special meaning to the shell and must be)2.538 F -(quoted if it is to represent itself.)108 165.6 Q 1.345 -(When the command history e)108 182.4 R 1.344(xpansion f)-.15 F 1.344 +398.4 R F1(metac)2.788 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288 +(listed abo)2.788 F .588 -.15(ve u)-.15 H(nder).15 E F3(DEFINITIONS) +2.788 E F0 .288(has special meaning to the shell and must be)2.538 F +(quoted if it is to represent itself.)108 410.4 Q 1.345 +(When the command history e)108 427.2 R 1.344(xpansion f)-.15 F 1.344 (acilities are being used \(see)-.1 F F3(HIST)3.844 E(OR)-.162 E 3.594 (YE)-.315 G(XP)-3.594 E(ANSION)-.666 E F0(belo)3.594 E 1.344(w\), the) --.25 F F2(history e)108 194.4 Q(xpansion)-.2 E F0(character)2.5 E 2.5 -(,u)-.4 G(sually)-2.5 E/F4 10/Times-Bold@0 SF(!)2.5 E F0 2.5(,m)C -(ust be quoted to pre)-2.5 E -.15(ve)-.25 G(nt history e).15 E -(xpansion.)-.15 E(There are three quoting mechanisms: the)108 211.2 Q F2 -(escape c)2.69 E(har)-.15 E(acter)-.15 E F0 2.5(,s).73 G -(ingle quotes, and double quotes.)-2.5 E 2.962(An)108 228 S .463 -(on-quoted backslash \()-2.962 F F4(\\)A F0 2.963(\)i)C 2.963(st)-2.963 -G(he)-2.963 E F2 .463(escape c)3.153 F(har)-.15 E(acter)-.15 E F0 5.463 +-.25 F F1(history e)108 439.2 Q(xpansion)-.2 E F0(character)2.5 E 2.5 +(,u)-.4 G(sually)-2.5 E F2(!)2.5 E F0 2.5(,m)C(ust be quoted to pre)-2.5 +E -.15(ve)-.25 G(nt history e).15 E(xpansion.)-.15 E +(There are three quoting mechanisms: the)108 456 Q F1(escape c)2.69 E +(har)-.15 E(acter)-.15 E F0 2.5(,s).73 G +(ingle quotes, and double quotes.)-2.5 E 2.962(An)108 472.8 S .463 +(on-quoted backslash \()-2.962 F F2(\\)A F0 2.963(\)i)C 2.963(st)-2.963 +G(he)-2.963 E F1 .463(escape c)3.153 F(har)-.15 E(acter)-.15 E F0 5.463 (.I).73 G 2.963(tp)-5.463 G(reserv)-2.963 E .463(es the literal v)-.15 F -.463(alue of the ne)-.25 F .463(xt character that)-.15 F(follo)108 240 Q -1.554(ws, with the e)-.25 F 1.553(xception of . If)-.25 F(a)4.053 E F4(\\)4.053 E F0(. If)-.25 F(a)4.053 E F2(\\)4.053 E F0( pair appears, and the backslash is not itself)-.25 F .347 -(quoted, the)108 252 R F4(\\)2.847 E F0( is treated as a line continuation \(that is, it is remo)-.25 F -.15(ve)-.15 G 2.848(df).15 G .348(rom the input stream and ef-)-2.848 F -(fecti)108 264 Q -.15(ve)-.25 G(ly ignored\).).15 E .295 -(Enclosing characters in single quotes preserv)108 280.8 R .295 +(fecti)108 508.8 Q -.15(ve)-.25 G(ly ignored\).).15 E .295 +(Enclosing characters in single quotes preserv)108 525.6 R .295 (es the literal v)-.15 F .295(alue of each character within the quotes.) -.25 F 2.795(As)5.295 G(in-)-2.795 E -(gle quote may not occur between single quotes, e)108 292.8 Q -.15(ve) +(gle quote may not occur between single quotes, e)108 537.6 Q -.15(ve) -.25 G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .033 -(Enclosing characters in double quotes preserv)108 309.6 R .034 +(Enclosing characters in double quotes preserv)108 554.4 R .034 (es the literal v)-.15 F .034 (alue of all characters within the quotes, with the)-.25 F -.15(ex)108 -321.6 S .108(ception of).15 F F4($)2.608 E F0(,)A F4<92>2.608 E F0(,)A -F4(\\)2.608 E F0 2.608(,a)C .107(nd, when history e)-2.608 F .107 -(xpansion is enabled,)-.15 F F4(!)2.607 E F0 5.107(.W)C .107 -(hen the shell is in)-5.107 F F2 .107(posix mode)2.607 F F0 2.607(,t)C -(he)-2.607 E F4(!)2.607 E F0 .107(has no)2.607 F .46 -(special meaning within double quotes, e)108 333.6 R -.15(ve)-.25 G 2.96 +566.4 S .108(ception of).15 F F2($)2.608 E F0(,)A F2<92>2.608 E F0(,)A +F2(\\)2.608 E F0 2.608(,a)C .107(nd, when history e)-2.608 F .107 +(xpansion is enabled,)-.15 F F2(!)2.607 E F0 5.107(.W)C .107 +(hen the shell is in)-5.107 F F1 .107(posix mode)2.607 F F0 2.607(,t)C +(he)-2.607 E F2(!)2.607 E F0 .107(has no)2.607 F .46 +(special meaning within double quotes, e)108 578.4 R -.15(ve)-.25 G 2.96 (nw).15 G .46(hen history e)-2.96 F .46(xpansion is enabled.)-.15 F .46 -(The characters)5.46 F F4($)2.96 E F0(and)2.96 E F4<92>2.96 E F0(re-) -2.96 E .563(tain their special meaning within double quotes.)108 345.6 R +(The characters)5.46 F F2($)2.96 E F0(and)2.96 E F2<92>2.96 E F0(re-) +2.96 E .563(tain their special meaning within double quotes.)108 590.4 R .562(The backslash retains its special meaning only when fol-)5.563 F -(lo)108 357.6 Q .601(wed by one of the follo)-.25 F .602 -(wing characters:)-.25 F F4($)3.102 E F0(,)A F4<92>3.102 E F0(,)A F4(") -3.935 E F0(,).833 E F4(\\)3.102 E F0 3.102(,o)C(r)-3.102 E F4() +(lo)108 602.4 Q .601(wed by one of the follo)-.25 F .602 +(wing characters:)-.25 F F2($)3.102 E F0(,)A F2<92>3.102 E F0(,)A F2(") +3.935 E F0(,).833 E F2(\\)3.102 E F0 3.102(,o)C(r)-3.102 E F2() 3.102 E F0 5.602(.A)C .602(double quote may be quoted within)-2.5 F .131 -(double quotes by preceding it with a backslash.)108 369.6 R .131 +(double quotes by preceding it with a backslash.)108 614.4 R .131 (If enabled, history e)5.131 F .13(xpansion will be performed unless an) --.15 F F4(!)2.63 E F0 -(appearing in double quotes is escaped using a backslash.)108 381.6 Q -(The backslash preceding the)5 E F4(!)2.5 E F0(is not remo)5 E -.15(ve) --.15 G(d.).15 E(The special parameters)108 398.4 Q F4(*)2.5 E F0(and)2.5 -E F4(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H +-.15 F F2(!)2.63 E F0 +(appearing in double quotes is escaped using a backslash.)108 626.4 Q +(The backslash preceding the)5 E F2(!)2.5 E F0(is not remo)5 E -.15(ve) +-.15 G(d.).15 E(The special parameters)108 643.2 Q F2(*)2.5 E F0(and)2.5 +E F2(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H (pecial meaning when in double quotes \(see).15 E F3 -.666(PA)2.5 G -(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 415.2 S .211 -(rds of the form).8 F F4($)2.711 E F0<08>A F2(string)A F0 2.711<0861>C -.211(re treated specially)-2.711 F 5.211(.T)-.65 G .211(he w)-5.211 F -.211(ord e)-.1 F .212(xpands to)-.15 F F2(string)2.712 E F0 2.712(,w)C -.212(ith backslash-escaped char)-2.712 F(-)-.2 E .605 -(acters replaced as speci\214ed by the ANSI C standard.)108 427.2 R .604 -(Backslash escape sequences, if present, are decoded)5.605 F(as follo) -108 439.2 Q(ws:)-.25 E F4(\\a)144 451.2 Q F0(alert \(bell\))180 451.2 Q -F4(\\b)144 463.2 Q F0(backspace)180 463.2 Q F4(\\e)144 475.2 Q(\\E)144 -487.2 Q F0(an escape character)180 487.2 Q F4(\\f)144 499.2 Q F0 -(form feed)180 499.2 Q F4(\\n)144 511.2 Q F0(ne)180 511.2 Q 2.5(wl)-.25 -G(ine)-2.5 E F4(\\r)144 523.2 Q F0(carriage return)180 523.2 Q F4(\\t) -144 535.2 Q F0(horizontal tab)180 535.2 Q F4(\\v)144 547.2 Q F0 -.15(ve) -180 547.2 S(rtical tab).15 E F4(\\\\)144 559.2 Q F0(backslash)180 559.2 -Q F4<5c08>144 571.2 Q F0(single quote)180 571.2 Q F4(\\")144 583.2 Q F0 -(double quote)180 583.2 Q F4(\\?)144 595.2 Q F0(question mark)180 595.2 -Q F4(\\)144 607.2 Q F2(nnn)A F0(the eight-bit character whose v)180 -607.2 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0 -(\(one to three octal digits\))2.5 E F4(\\x)144 619.2 Q F2(HH)A F0 -(the eight-bit character whose v)180 619.2 Q(alue is the he)-.25 E -(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) --.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F4(\\u)144 631.2 Q F2(HHHH)A F0 -1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 643.2 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 655.2 Q 2.5(xd)-.15 G(igits\))-2.5 E F4 -(\\U)144 667.2 Q F2(HHHHHHHH)A F0 .548 -(the Unicode \(ISO/IEC 10646\) character whose v)180 679.2 R .547 -(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) -3.047 E(HHH)180 691.2 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G -(igits\))-2.5 E F4(\\c)144 703.2 Q F2(x)A F0 2.5(ac)180 703.2 S(ontrol-) --2.5 E F2(x)A F0(character)2.5 E(The e)108 720 Q(xpanded result is sing\ -le-quoted, as if the dollar sign had not been present.)-.15 E -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(8)195.395 E 0 Cg EP +(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E .148 +(Character sequences of the form)108 660 R F2($)2.649 E F0<08>A F1 +(string)A F0 2.649<0861>C .149(re treated as a special v)-2.649 F .149 +(ariant of single quotes.)-.25 F .149(The sequence e)5.149 F(x-)-.15 E +.528(pands to)108 672 R F1(string)3.028 E F0 3.028(,w)C .528 +(ith backslash-escaped characters in)-3.028 F F1(string)3.027 E F0 .527 +(replaced as speci\214ed by the ANSI C standard.)3.027 F +(Backslash escape sequences, if present, are decoded as follo)108 684 Q +(ws:)-.25 E F2(\\a)144 696 Q F0(alert \(bell\))180 696 Q F2(\\b)144 708 +Q F0(backspace)180 708 Q(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 +E(8)190.115 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.64(Ad)108 84 S -.14(ouble-quoted string preceded by a dollar sign \()-2.64 F/F1 10 -/Times-Bold@0 SF($)A F0(")A/F2 10/Times-Italic@0 SF(string)A F0 .14 -("\) will cause the string to be translated according)B .31 -(to the current locale.)108 96 R(The)5.31 E F2 -.1(ge)2.809 G(tte).1 E -(xt)-.2 E F0 .309(infrastructure performs the message catalog lookup an\ -d translation, using)2.809 F(the)108 108 Q F1(LC_MESSA)2.625 E(GES)-.55 -E F0(and)2.625 E F1(TEXTDOMAIN)2.625 E F0 .125(shell v)2.625 F 2.625 -(ariables. If)-.25 F .126(the current locale is)2.626 F F1(C)2.626 E F0 -(or)2.626 E F1(POSIX)2.626 E F0 2.626(,o)C 2.626(ri)-2.626 G 2.626(ft) --2.626 G(here)-2.626 E .362(are no translations a)108 120 R -.25(va)-.2 -G .362(ilable, the dollar sign is ignored.).25 F .362 -(If the string is translated and replaced, the replace-)5.362 F -(ment is double-quoted.)108 132 Q/F3 10.95/Times-Bold@0 SF -.81(PA)72 -148.8 S(RAMETERS).81 E F0(A)108 160.8 Q F2(par)4.574 E(ameter)-.15 E F0 -.824(is an entity that stores v)4.054 F 3.324(alues. It)-.25 F .824 -(can be a)3.324 F F2(name)3.685 E F0 3.325(,an).18 G(umber)-3.325 E -3.325(,o)-.4 G 3.325(ro)-3.325 G .825(ne of the special characters) --3.325 F .802(listed belo)108 172.8 R 3.302(wu)-.25 G(nder)-3.302 E F1 -.802(Special P)3.302 F(arameters)-.1 E F0 5.802(.A)C F2(variable)-2.21 E -F0 .802(is a parameter denoted by a)3.482 F F2(name)3.662 E F0 5.801(.A) -.18 G -.25(va)-2.5 G .801(riable has a).25 F F2(value)108 184.8 Q F0 -.368(and zero or more)2.868 F F2(attrib)2.868 E(utes)-.2 E F0 5.369(.A)C -(ttrib)-5.369 E .369(utes are assigned using the)-.2 F F1(declar)2.869 E -(e)-.18 E F0 -.2(bu)2.869 G .369(iltin command \(see).2 F F1(declar) -2.869 E(e)-.18 E F0(belo)108 196.8 Q 2.5(wi)-.25 G(n)-2.5 E/F4 9 -/Times-Bold@0 SF(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E/F5 9 -/Times-Roman@0 SF(\).)A F0 2.755(Ap)108 213.6 S .255 -(arameter is set if it has been assigned a v)-2.755 F 2.754(alue. The) --.25 F .254(null string is a v)2.754 F .254(alid v)-.25 F 2.754 -(alue. Once)-.25 F 2.754(av)2.754 G .254(ariable is set, it)-3.004 F -(may be unset only by using the)108 225.6 Q F1(unset)2.5 E F0 -.2(bu)2.5 -G(iltin command \(see).2 E F4(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) --.828 E F0(belo)2.25 E(w\).)-.25 E(A)108 242.4 Q F2(variable)2.79 E F0 -(may be assigned to by a statement of the form)2.68 E F2(name)144 259.2 -Q F0(=[)A F2(value)A F0(])A(If)108 276 Q F2(value)3.022 E F0 .232 -(is not gi)2.912 F -.15(ve)-.25 G .232(n, the v).15 F .232 -(ariable is assigned the null string.)-.25 F(All)5.233 E F2(values)3.023 -E F0(under)3.003 E .233(go tilde e)-.18 F .233(xpansion, parameter)-.15 -F .515(and v)108 288 R .515(ariable e)-.25 F .515 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(\\e)144 84 Q(\\E)144 96 Q F0(an escape character)180 96 Q F1(\\f)144 +108 Q F0(form feed)180 108 Q F1(\\n)144 120 Q F0(ne)180 120 Q 2.5(wl) +-.25 G(ine)-2.5 E F1(\\r)144 132 Q F0(carriage return)180 132 Q F1(\\t) +144 144 Q F0(horizontal tab)180 144 Q F1(\\v)144 156 Q F0 -.15(ve)180 +156 S(rtical tab).15 E F1(\\\\)144 168 Q F0(backslash)180 168 Q F1<5c08> +144 180 Q F0(single quote)180 180 Q F1(\\")144 192 Q F0(double quote)180 +192 Q F1(\\?)144 204 Q F0(question mark)180 204 Q F1(\\)144 216 Q/F2 10 +/Times-Italic@0 SF(nnn)A F0(the eight-bit character whose v)180 216 Q +(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0 +(\(one to three octal digits\))2.5 E F1(\\x)144 228 Q F2(HH)A F0 +(the eight-bit character whose v)180 228 Q(alue is the he)-.25 E +(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) +-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1(\\u)144 240 Q F2(HHHH)A F0 +1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 252 R 1.507 +(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) +4.007 E F0(\(one to four he)180 264 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 276 Q F2(HHHHHHHH)A F0 .548 +(the Unicode \(ISO/IEC 10646\) character whose v)180 288 R .547 +(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) +3.047 E(HHH)180 300 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\)) +-2.5 E F1(\\c)144 312 Q F2(x)A F0 2.5(ac)180 312 S(ontrol-)-2.5 E F2(x)A +F0(character)2.5 E(The e)108 328.8 Q(xpanded result is single-quoted, a\ +s if the dollar sign had not been present.)-.15 E 2.64(Ad)108 345.6 S +.14(ouble-quoted string preceded by a dollar sign \()-2.64 F F1($)A F0 +(")A F2(string)A F0 .14 +("\) will cause the string to be translated according)B .785 +(to the current locale.)108 357.6 R(The)5.785 E F2 -.1(ge)3.284 G(tte).1 +E(xt)-.2 E F0 .784 +(infrastructure performs the lookup and translation, using the)3.284 F +F1(LC_MES-)3.284 E(SA)108 369.6 Q(GES)-.55 E F0(,)A F1(TEXTDOMAINDIR) +2.76 E F0 2.76(,a)C(nd)-2.76 E F1(TEXTDOMAIN)2.76 E F0 .261(shell v) +2.761 F 2.761(ariables. If)-.25 F .261(the current locale is)2.761 F F1 +(C)2.761 E F0(or)2.761 E F1(POSIX)2.761 E F0(,)A .792 +(if there are no translations a)108 381.6 R -.25(va)-.2 G .791(ilable, \ +or if the string is not translated, the dollar sign is ignored.).25 F +.791(This is a)5.791 F .534 +(form of double quoting, so the string remains double-quoted by def)108 +393.6 R .535(ault, whether or not it is translated and)-.1 F 2.798 +(replaced. If)108 405.6 R(the)2.798 E F1(noexpand_translation)2.797 E F0 +.297(option is enabled using the)2.797 F F1(shopt)2.797 E F0 -.2(bu) +2.797 G .297(iltin, translated strings are sin-).2 F 2.044 +(gle-quoted instead of double-quoted.)108 417.6 R 2.044 +(See the description of)7.044 F F1(shopt)4.545 E F0(belo)4.545 E 4.545 +(wu)-.25 G(nder)-4.545 E/F3 9/Times-Bold@0 SF(SHELL)4.545 E/F4 9 +/Times-Roman@0 SF -.09(BU)C(IL).09 E(TIN)-.828 E F3(COM-)A(MANDS)108 +429.6 Q F4(.)A/F5 10.95/Times-Bold@0 SF -.81(PA)72 446.4 S(RAMETERS).81 +E F0(A)108 458.4 Q F2(par)4.575 E(ameter)-.15 E F0 .825 +(is an entity that stores v)4.055 F 3.325(alues. It)-.25 F .825 +(can be a)3.325 F F2(name)3.684 E F0 3.324(,an).18 G(umber)-3.324 E +3.324(,o)-.4 G 3.324(ro)-3.324 G .824(ne of the special characters) +-3.324 F .801(listed belo)108 470.4 R 3.301(wu)-.25 G(nder)-3.301 E F1 +.801(Special P)3.301 F(arameters)-.1 E F0 5.802(.A)C F2(variable)-2.21 E +F0 .802(is a parameter denoted by a)3.482 F F2(name)3.662 E F0 5.802(.A) +.18 G -.25(va)-2.5 G .802(riable has a).25 F F2(value)108 482.4 Q F0 +.369(and zero or more)2.869 F F2(attrib)2.869 E(utes)-.2 E F0 5.369(.A)C +(ttrib)-5.369 E .369(utes are assigned using the)-.2 F F1(declar)2.868 E +(e)-.18 E F0 -.2(bu)2.868 G .368(iltin command \(see).2 F F1(declar) +2.868 E(e)-.18 E F0(belo)108 494.4 Q 2.5(wi)-.25 G(n)-2.5 E F3(SHELL B) +2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F4(\).)A F0 2.754(Ap)108 511.2 S +.254(arameter is set if it has been assigned a v)-2.754 F 2.754 +(alue. The)-.25 F .254(null string is a v)2.754 F .255(alid v)-.25 F +2.755(alue. Once)-.25 F 2.755(av)2.755 G .255(ariable is set, it)-3.005 +F(may be unset only by using the)108 523.2 Q F1(unset)2.5 E F0 -.2(bu) +2.5 G(iltin command \(see).2 E F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) +-.828 E F0(belo)2.25 E(w\).)-.25 E(A)108 540 Q F2(variable)2.79 E F0 +(may be assigned to by a statement of the form)2.68 E F2(name)144 556.8 +Q F0(=[)A F2(value)A F0(])A(If)108 573.6 Q F2(value)3.023 E F0 .233 +(is not gi)2.913 F -.15(ve)-.25 G .233(n, the v).15 F .232 +(ariable is assigned the null string.)-.25 F(All)5.232 E F2(values)3.022 +E F0(under)3.002 E .232(go tilde e)-.18 F .232(xpansion, parameter)-.15 +F .515(and v)108 585.6 R .515(ariable e)-.25 F .515 (xpansion, command substitution, arithmetic e)-.15 F .515 (xpansion, and quote remo)-.15 F -.25(va)-.15 G 3.015(l\().25 G(see) --3.015 E F4(EXP)3.015 E(ANSION)-.666 E F0(belo)108 300 Q 2.698(w\). If) --.25 F .198(the v)2.698 F .198(ariable has its)-.25 F F1(integer)2.698 E -F0(attrib)2.698 E .198(ute set, then)-.2 F F2(value)2.988 E F0 .198 -(is e)2.878 F -.25(va)-.25 G .199(luated as an arithmetic e).25 F .199 -(xpression e)-.15 F -.15(ve)-.25 G(n).15 E .902(if the $\(\(...\)\) e) -108 312 R .902(xpansion is not used \(see)-.15 F F1 .901 -(Arithmetic Expansion)3.401 F F0(belo)3.401 E 3.401(w\). W)-.25 F .901 -(ord splitting is not performed,)-.8 F 1.178(with the e)108 324 R 1.178 -(xception of)-.15 F F1("$@")3.678 E F0 1.178(as e)3.678 F 1.179 -(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F1 1.179(Special P) -3.679 F(arameters)-.1 E F0 6.179(.P)C 1.179(athname e)-6.329 F 1.179 -(xpansion is not)-.15 F 3.649(performed. Assignment)108 336 R 1.149 -(statements may also appear as ar)3.649 F 1.148(guments to the)-.18 F F1 -(alias)3.648 E F0(,)A F1(declar)3.648 E(e)-.18 E F0(,)A F1(typeset)3.648 -E F0(,)A F1(export)3.648 E F0(,)A F1 -.18(re)108 348 S(adonly).18 E F0 -3.288(,a)C(nd)-3.288 E F1(local)3.288 E F0 -.2(bu)3.288 G .788 -(iltin commands \().2 F F2(declar)A(ation)-.15 E F0 3.288 -(commands\). When)3.288 F(in)3.289 E F2 .789(posix mode)3.289 F F0 3.289 -(,t)C .789(hese b)-3.289 F .789(uiltins may)-.2 F 1.496 -(appear in a command after one or more instances of the)108 360 R F1 -(command)3.996 E F0 -.2(bu)3.996 G 1.496 -(iltin and retain these assignment).2 F(statement properties.)108 372 Q -.376(In the conte)108 388.8 R .376 -(xt where an assignment statement is assigning a v)-.15 F .376 -(alue to a shell v)-.25 F .377(ariable or array inde)-.25 F .377 +-3.015 E F3(EXP)3.015 E(ANSION)-.666 E F0(belo)108 597.6 Q 2.699 +(w\). If)-.25 F .199(the v)2.699 F .199(ariable has its)-.25 F F1 +(integer)2.698 E F0(attrib)2.698 E .198(ute set, then)-.2 F F2(value) +2.988 E F0 .198(is e)2.878 F -.25(va)-.25 G .198 +(luated as an arithmetic e).25 F .198(xpression e)-.15 F -.15(ve)-.25 G +(n).15 E .745(if the $\(\(...\)\) e)108 609.6 R .745 +(xpansion is not used \(see)-.15 F F1 .745(Arithmetic Expansion)3.245 F +F0(belo)3.245 E 3.246(w\). W)-.25 F .746(ord splitting and pathname e) +-.8 F(x-)-.15 E 1.364(pansion are not performed.)108 621.6 R 1.364 +(Assignment statements may also appear as ar)6.364 F 1.363 +(guments to the)-.18 F F1(alias)3.863 E F0(,)A F1(declar)3.863 E(e)-.18 +E F0(,)A F1(typeset)108 633.6 Q F0(,)A F1(export)3.964 E F0(,)A F1 -.18 +(re)3.964 G(adonly).18 E F0 3.964(,a)C(nd)-3.964 E F1(local)3.964 E F0 +-.2(bu)3.964 G 1.464(iltin commands \().2 F F2(declar)A(ation)-.15 E F0 +3.964(commands\). When)3.964 F(in)3.964 E F2 1.465(posix mode)3.965 F F0 +(,)A 1.142(these b)108 645.6 R 1.142 +(uiltins may appear in a command after one or more instances of the)-.2 +F F1(command)3.641 E F0 -.2(bu)3.641 G 1.141(iltin and retain).2 F +(these assignment statement properties.)108 657.6 Q .376(In the conte) +108 674.4 R .376(xt where an assignment statement is assigning a v)-.15 +F .376(alue to a shell v)-.25 F .377(ariable or array inde)-.25 F .377 (x, the +=)-.15 F 1.631 -(operator can be used to append to or add to the v)108 400.8 R(ariable') +(operator can be used to append to or add to the v)108 686.4 R(ariable') -.25 E 4.13(sp)-.55 G(re)-4.13 E 1.63(vious v)-.25 F 4.13(alue. This) --.25 F 1.63(includes ar)4.13 F 1.63(guments to)-.18 F -.2(bu)108 412.8 S +-.25 F 1.63(includes ar)4.13 F 1.63(guments to)-.18 F -.2(bu)108 698.4 S .163(iltin commands such as).2 F F1(declar)2.664 E(e)-.18 E F0 .164 (that accept assignment statements \()2.664 F F2(declar)A(ation)-.15 E -F0 2.664(commands\). When)2.664 F .164(+= is)2.664 F .252 -(applied to a v)108 424.8 R .252(ariable for which the)-.25 F F2(inte) -2.752 E -.1(ge)-.4 G(r).1 E F0(attrib)2.752 E .252(ute has been set,)-.2 -F F2(value)2.752 E F0 .251(is e)2.751 F -.25(va)-.25 G .251 -(luated as an arithmetic e).25 F(xpres-)-.15 E .05 -(sion and added to the v)108 436.8 R(ariable')-.25 E 2.55(sc)-.55 G .05 -(urrent v)-2.55 F .05(alue, which is also e)-.25 F -.25(va)-.25 G 2.55 -(luated. When).25 F .05(+= is applied to an array v)2.55 F(ari-)-.25 E -.459(able using compound assignment \(see)108 448.8 R F1(Arrays)2.959 E -F0(belo)2.959 E .459(w\), the v)-.25 F(ariable')-.25 E 2.959(sv)-.55 G -.459(alue is not unset \(as it is when using)-3.209 F .265(=\), and ne) -108 460.8 R 2.765(wv)-.25 G .265(alues are appended to the array be) --3.015 F .265(ginning at one greater than the array')-.15 F 2.765(sm) --.55 G .265(aximum inde)-2.765 F 2.765(x\()-.15 G(for)-2.765 E(inde)108 -472.8 Q -.15(xe)-.15 G 3.402(da).15 G .902 -(rrays\) or added as additional k)-3.402 F -.15(ey)-.1 G.15 E .901 -(alue pairs in an associati)-.25 F 1.201 -.15(ve a)-.25 H(rray).15 E -5.901(.W)-.65 G .901(hen applied to a string-)-5.901 F -.25(va)108 484.8 -S(lued v).25 E(ariable,)-.25 E F2(value)2.5 E F0(is e)2.5 E -(xpanded and appended to the v)-.15 E(ariable')-.25 E 2.5(sv)-.55 G -(alue.)-2.75 E 3.382(Av)108 501.6 S .882(ariable can be assigned the) --3.632 F F2(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882 -(ute using the)-.2 F F13.382 E F0 .882(option to the)3.382 F F1 -(declar)3.382 E(e)-.18 E F0(or)3.383 E F1(local)3.383 E F0 -.2(bu)3.383 -G .883(iltin com-).2 F .316(mands \(see the descriptions of)108 513.6 R -F1(declar)2.816 E(e)-.18 E F0(and)2.816 E F1(local)2.816 E F0(belo)2.816 -E .316(w\) to create a)-.25 F F2(namer)2.815 E(ef)-.37 E F0 2.815(,o)C -2.815(rar)-2.815 G .315(eference to another v)-2.815 F(ari-)-.25 E 2.918 -(able. This)108 525.6 R(allo)2.918 E .418(ws v)-.25 F .418 +F0 2.664(commands\). When)2.664 F .164(+= is)2.664 F .132 +(applied to a v)108 710.4 R .132(ariable for which the)-.25 F F1 +(integer)2.632 E F0(attrib)2.632 E .132(ute has been set,)-.2 F F2 +(value)2.632 E F0 .131(is e)2.631 F -.25(va)-.25 G .131 +(luated as an arithmetic e).25 F(xpres-)-.15 E 1.226 +(sion and added to the v)108 722.4 R(ariable')-.25 E 3.726(sc)-.55 G +1.227(urrent v)-3.726 F 1.227(alue, which is also e)-.25 F -.25(va)-.25 +G 3.727(luated. When).25 F 1.227(+= is applied to an array)3.727 F +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(9)190.115 E 0 Cg EP +%%Page: 10 10 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)108 84 S +.115(riable using compound assignment \(see).25 F/F1 10/Times-Bold@0 SF +(Arrays)2.615 E F0(belo)2.615 E .115(w\), the v)-.25 F(ariable')-.25 E +2.615(sv)-.55 G .114(alue is not unset \(as it is when us-)-2.865 F .387 +(ing =\), and ne)108 96 R 2.887(wv)-.25 G .388 +(alues are appended to the array be)-3.137 F .388 +(ginning at one greater than the array')-.15 F 2.888(sm)-.55 G .388 +(aximum inde)-2.888 F(x)-.15 E 1.597(\(for inde)108 108 R -.15(xe)-.15 G +4.097(da).15 G 1.596(rrays\) or added as additional k)-4.097 F -.15(ey) +-.1 G.15 E 1.596(alue pairs in an associati)-.25 F 1.896 -.15 +(ve a)-.25 H(rray).15 E 6.596(.W)-.65 G 1.596(hen applied to a)-6.596 F +(string-v)108 120 Q(alued v)-.25 E(ariable,)-.25 E/F2 10/Times-Italic@0 +SF(value)2.5 E F0(is e)2.5 E(xpanded and appended to the v)-.15 E +(ariable')-.25 E 2.5(sv)-.55 G(alue.)-2.75 E 3.382(Av)108 136.8 S .882 +(ariable can be assigned the)-3.632 F F2(namer)3.382 E(ef)-.37 E F0 +(attrib)3.382 E .882(ute using the)-.2 F F13.382 E F0 .882 +(option to the)3.382 F F1(declar)3.382 E(e)-.18 E F0(or)3.383 E F1 +(local)3.383 E F0 -.2(bu)3.383 G .883(iltin com-).2 F .316 +(mands \(see the descriptions of)108 148.8 R F1(declar)2.816 E(e)-.18 E +F0(and)2.816 E F1(local)2.816 E F0(belo)2.816 E .316(w\) to create a) +-.25 F F2(namer)2.815 E(ef)-.37 E F0 2.815(,o)C 2.815(rar)-2.815 G .315 +(eference to another v)-2.815 F(ari-)-.25 E 2.918(able. This)108 160.8 R +(allo)2.918 E .418(ws v)-.25 F .418 (ariables to be manipulated indirectly)-.25 F 5.419(.W)-.65 G(hene) -5.419 E -.15(ve)-.25 G 2.919(rt).15 G .419(he nameref v)-2.919 F .419 (ariable is referenced, as-)-.25 F .133 -(signed to, unset, or has its attrib)108 537.6 R .132 +(signed to, unset, or has its attrib)108 172.8 R .132 (utes modi\214ed \(other than using or changing the)-.2 F F2(namer)2.632 E(ef)-.37 E F0(attrib)2.632 E .132(ute itself\), the)-.2 F 1.356 -(operation is actually performed on the v)108 549.6 R 1.357 +(operation is actually performed on the v)108 184.8 R 1.357 (ariable speci\214ed by the nameref v)-.25 F(ariable')-.25 E 3.857(sv) -.55 G 3.857(alue. A)-4.107 F 1.357(nameref is)3.857 F .972 -(commonly used within shell functions to refer to a v)108 561.6 R .971 +(commonly used within shell functions to refer to a v)108 196.8 R .971 (ariable whose name is passed as an ar)-.25 F .971(gument to the)-.18 F -2.5(function. F)108 573.6 R(or instance, if a v)-.15 E +2.5(function. F)108 208.8 R(or instance, if a v)-.15 E (ariable name is passed to a shell function as its \214rst ar)-.25 E -(gument, running)-.18 E/F6 10/Courier@0 SF(declare -n ref=$1)144 591.6 Q -F0 .302(inside the function creates a nameref v)108 609.6 R(ariable)-.25 +(gument, running)-.18 E/F3 10/Courier@0 SF(declare -n ref=$1)144 226.8 Q +F0 .302(inside the function creates a nameref v)108 244.8 R(ariable)-.25 E F1 -.18(re)2.803 G(f).18 E F0 .303(whose v)2.803 F .303(alue is the v) -.25 F .303(ariable name passed as the \214rst ar)-.25 F(gu-)-.18 E -3.592(ment. References)108 621.6 R 1.092(and assignments to)3.592 F F1 +3.592(ment. References)108 256.8 R 1.092(and assignments to)3.592 F F1 -.18(re)3.592 G(f).18 E F0 3.592(,a)C 1.092(nd changes to its attrib) -3.592 F 1.092(utes, are treated as references, assign-)-.2 F .143 -(ments, and attrib)108 633.6 R .144(ute modi\214cations to the v)-.2 F +(ments, and attrib)108 268.8 R .144(ute modi\214cations to the v)-.2 F .144(ariable whose name w)-.25 F .144(as passed as)-.1 F F1($1)2.644 E F0 5.144(.I)C 2.644(ft)-5.144 G .144(he control v)-2.644 F .144 -(ariable in a)-.25 F F1 -.25(fo)108 645.6 S(r).25 E F0 .868 +(ariable in a)-.25 F F1 -.25(fo)108 280.8 S(r).25 E F0 .868 (loop has the nameref attrib)3.368 F .868(ute, the list of w)-.2 F .867 (ords can be a list of shell v)-.1 F .867 (ariables, and a name reference)-.25 F .509 -(will be established for each w)108 657.6 R .509 +(will be established for each w)108 292.8 R .509 (ord in the list, in turn, when the loop is e)-.1 F -.15(xe)-.15 G 3.009 (cuted. Array).15 F -.25(va)3.009 G .509(riables cannot be).25 F(gi)108 -669.6 Q -.15(ve)-.25 G 3.032(nt).15 G(he)-3.032 E F1(namer)3.032 E(ef) +304.8 Q -.15(ve)-.25 G 3.032(nt).15 G(he)-3.032 E F1(namer)3.032 E(ef) -.18 E F0(attrib)3.032 E 3.032(ute. Ho)-.2 F(we)-.25 E -.15(ve)-.25 G 1.332 -.4(r, n).15 H .532(ameref v).4 F .531 (ariables can reference array v)-.25 F .531(ariables and subscripted ar) --.25 F(-)-.2 E .533(ray v)108 681.6 R 3.033(ariables. Namerefs)-.25 F +-.25 F(-)-.2 E .533(ray v)108 316.8 R 3.033(ariables. Namerefs)-.25 F .533(can be unset using the)3.033 F F13.033 E F0 .533 (option to the)3.033 F F1(unset)3.033 E F0 -.2(bu)3.034 G 3.034 (iltin. Otherwise,).2 F(if)3.034 E F1(unset)3.034 E F0 .534(is e)3.034 F --.15(xe)-.15 G(-).15 E .443(cuted with the name of a nameref v)108 693.6 +-.15(xe)-.15 G(-).15 E .443(cuted with the name of a nameref v)108 328.8 R .442(ariable as an ar)-.25 F .442(gument, the v)-.18 F .442 (ariable referenced by the nameref v)-.25 F(ariable)-.25 E -(will be unset.)108 705.6 Q(GNU Bash 5.1)72 768 Q(2020 October 29) -141.235 E(9)195.395 E 0 Cg EP -%%Page: 10 10 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF -.2(Po)87 84 S(sitional P).2 E(arameters)-.1 E F0(A)108 96 Q/F2 10 -/Times-Italic@0 SF .705(positional par)4.455 F(ameter)-.15 E F0 .706(is\ - a parameter denoted by one or more digits, other than the single digit\ - 0.)3.935 F(Posi-)5.706 E .445 -(tional parameters are assigned from the shell')108 108 R 2.944(sa)-.55 -G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)-.4 G -.1(ke) -.2 G .444(d, and may be reassigned using).1 F(the)108 120 Q F1(set)3.333 -E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional parameters\ - may not be assigned to with assignment statements.)5.833 F(The)5.834 E -(positional parameters are temporarily replaced when a shell function i\ -s e)108 132 Q -.15(xe)-.15 G(cuted \(see).15 E/F3 9/Times-Bold@0 SF -(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E 1.404(When a positional par\ -ameter consisting of more than a single digit is e)108 148.8 R 1.403 -(xpanded, it must be enclosed in)-.15 F(braces \(see)108 160.8 Q F3(EXP) -2.5 E(ANSION)-.666 E F0(belo)2.25 E(w\).)-.25 E F1(Special P)87 177.6 Q -(arameters)-.1 E F0 1.674(The shell treats se)108 189.6 R -.15(ve)-.25 G -1.674(ral parameters specially).15 F 6.675(.T)-.65 G 1.675 -(hese parameters may only be referenced; assignment to)-6.675 F -(them is not allo)108 201.6 Q(wed.)-.25 E F1(*)108 213.6 Q F0 .224 -(Expands to the positional parameters, starting from one.)144 213.6 R -.223(When the e)5.224 F .223(xpansion is not within double)-.15 F .662 -(quotes, each positional parameter e)144 225.6 R .662 +(will be unset.)108 340.8 Q F1 -.2(Po)87 357.6 S(sitional P).2 E +(arameters)-.1 E F0(A)108 369.6 Q F2 .705(positional par)4.455 F(ameter) +-.15 E F0 .706(is a parameter denoted by one or more digits, other than\ + the single digit 0.)3.935 F(Posi-)5.706 E .445 +(tional parameters are assigned from the shell')108 381.6 R 2.944(sa) +-.55 G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)-.4 G -.1 +(ke).2 G .444(d, and may be reassigned using).1 F(the)108 393.6 Q F1 +(set)3.333 E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional\ + parameters may not be assigned to with assignment statements.)5.833 F +(The)5.834 E(positional parameters are temporarily replaced when a shel\ +l function is e)108 405.6 Q -.15(xe)-.15 G(cuted \(see).15 E/F4 9 +/Times-Bold@0 SF(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E 1.404(When \ +a positional parameter consisting of more than a single digit is e)108 +422.4 R 1.403(xpanded, it must be enclosed in)-.15 F(braces \(see)108 +434.4 Q F4(EXP)2.5 E(ANSION)-.666 E F0(belo)2.25 E(w\).)-.25 E F1 +(Special P)87 451.2 Q(arameters)-.1 E F0 1.674(The shell treats se)108 +463.2 R -.15(ve)-.25 G 1.674(ral parameters specially).15 F 6.675(.T) +-.65 G 1.675(hese parameters may only be referenced; assignment to) +-6.675 F(them is not allo)108 475.2 Q(wed.)-.25 E F1(*)108 487.2 Q F0 +.224(Expands to the positional parameters, starting from one.)144 487.2 +R .223(When the e)5.224 F .223(xpansion is not within double)-.15 F .662 +(quotes, each positional parameter e)144 499.2 R .662 (xpands to a separate w)-.15 F 3.162(ord. In)-.1 F(conte)3.162 E .662 -(xts where it is performed,)-.15 F 1.082(those w)144 237.6 R 1.082 +(xts where it is performed,)-.15 F 1.082(those w)144 511.2 R 1.082 (ords are subject to further w)-.1 F 1.081(ord splitting and pathname e) -.1 F 3.581(xpansion. When)-.15 F 1.081(the e)3.581 F(xpansion)-.15 E -.914(occurs within double quotes, it e)144 249.6 R .914 +.914(occurs within double quotes, it e)144 523.2 R .914 (xpands to a single w)-.15 F .915(ord with the v)-.1 F .915 (alue of each parameter sepa-)-.25 F .891 -(rated by the \214rst character of the)144 261.6 R F3(IFS)3.39 E F0 .89 +(rated by the \214rst character of the)144 535.2 R F4(IFS)3.39 E F0 .89 (special v)3.14 F 3.39(ariable. That)-.25 F .89(is, ")3.39 F F1($*)A F0 3.39("i)C 3.39(se)-3.39 G(qui)-3.39 E -.25(va)-.25 G .89(lent to ").25 F -F1($1)A F2(c)A F1($2)A F2(c)A F1(...)A F0(",)A(where)144 273.6 Q F2(c) +F1($1)A F2(c)A F1($2)A F2(c)A F1(...)A F0(",)A(where)144 547.2 Q F2(c) 3.532 E F0 .832(is the \214rst character of the v)3.642 F .832 -(alue of the)-.25 F F3(IFS)3.332 E F0 -.25(va)3.082 G 3.332(riable. If) -.25 F F3(IFS)3.332 E F0 .833(is unset, the parameters are)3.082 F -(separated by spaces.)144 285.6 Q(If)5 E F3(IFS)2.5 E F0 +(alue of the)-.25 F F4(IFS)3.332 E F0 -.25(va)3.082 G 3.332(riable. If) +.25 F F4(IFS)3.332 E F0 .833(is unset, the parameters are)3.082 F +(separated by spaces.)144 559.2 Q(If)5 E F4(IFS)2.5 E F0 (is null, the parameters are joined without interv)2.25 E -(ening separators.)-.15 E F1(@)108 297.6 Q F0 .722 -(Expands to the positional parameters, starting from one.)144 297.6 R +(ening separators.)-.15 E F1(@)108 571.2 Q F0 .722 +(Expands to the positional parameters, starting from one.)144 571.2 R .722(In conte)5.722 F .722(xts where w)-.15 F .722(ord splitting is per) --.1 F(-)-.2 E 1.165(formed, this e)144 309.6 R 1.165 +-.1 F(-)-.2 E 1.165(formed, this e)144 583.2 R 1.165 (xpands each positional parameter to a separate w)-.15 F 1.165 -(ord; if not within double quotes,)-.1 F .655(these w)144 321.6 R .655 +(ord; if not within double quotes,)-.1 F .655(these w)144 595.2 R .655 (ords are subject to w)-.1 F .655(ord splitting.)-.1 F .655(In conte) 5.655 F .655(xts where w)-.15 F .654 -(ord splitting is not performed, this)-.1 F -.15(ex)144 333.6 S .748 +(ord splitting is not performed, this)-.1 F -.15(ex)144 607.2 S .748 (pands to a single w).15 F .748 (ord with each positional parameter separated by a space.)-.1 F .748 (When the e)5.748 F(xpan-)-.15 E 1.091 -(sion occurs within double quotes, each parameter e)144 345.6 R 1.091 +(sion occurs within double quotes, each parameter e)144 619.2 R 1.091 (xpands to a separate w)-.15 F 3.59(ord. That)-.1 F 1.09(is, ")3.59 F F1 -($@)A F0 3.59("i)C(s)-3.59 E(equi)144 357.6 Q -.25(va)-.25 G .412 +($@)A F0 3.59("i)C(s)-3.59 E(equi)144 631.2 Q -.25(va)-.25 G .412 (lent to ").25 F F1($1)A F0 2.912("")C F1($2)-2.912 E F0 2.912(".)C 2.912(.. If)-2.912 F .413(the double-quoted e)2.913 F .413 (xpansion occurs within a w)-.15 F .413(ord, the e)-.1 F .413 (xpansion of)-.15 F .38(the \214rst parameter is joined with the be)144 -369.6 R .379(ginning part of the original w)-.15 F .379(ord, and the e) +643.2 R .379(ginning part of the original w)-.15 F .379(ord, and the e) -.1 F .379(xpansion of the)-.15 F .771 -(last parameter is joined with the last part of the original w)144 381.6 +(last parameter is joined with the last part of the original w)144 655.2 R 3.271(ord. When)-.1 F .772(there are no positional pa-)3.271 F -(rameters, ")144 393.6 Q F1($@)A F0 2.5("a)C(nd)-2.5 E F1($@)2.5 E F0 +(rameters, ")144 667.2 Q F1($@)A F0 2.5("a)C(nd)-2.5 E F1($@)2.5 E F0 -.15(ex)2.5 G(pand to nothing \(i.e., the).15 E 2.5(ya)-.15 G(re remo) --2.5 E -.15(ve)-.15 G(d\).).15 E F1(#)108 405.6 Q F0 -(Expands to the number of positional parameters in decimal.)144 405.6 Q -F1(?)108 417.6 Q F0(Expands to the e)144 417.6 Q +-2.5 E -.15(ve)-.15 G(d\).).15 E F1(#)108 679.2 Q F0 +(Expands to the number of positional parameters in decimal.)144 679.2 Q +F1(?)108 691.2 Q F0(Expands to the e)144 691.2 Q (xit status of the most recently e)-.15 E -.15(xe)-.15 G(cuted fore).15 -E(ground pipeline.)-.15 E F1108 429.6 Q F0 .882 -(Expands to the current option \215ags as speci\214ed upon in)144 429.6 +E(ground pipeline.)-.15 E F1108 703.2 Q F0 .882 +(Expands to the current option \215ags as speci\214ed upon in)144 703.2 R -.2(vo)-.4 G .881(cation, by the).2 F F1(set)3.381 E F0 -.2(bu)3.381 G .881(iltin command, or).2 F(those set by the shell itself \(such as the) -144 441.6 Q F12.5 E F0(option\).)2.5 E F1($)108 453.6 Q F0 .214 -(Expands to the process ID of the shell.)144 453.6 R .214 -(In a \(\) subshell, it e)5.214 F .214 -(xpands to the process ID of the current)-.15 F -(shell, not the subshell.)144 465.6 Q F1(!)108 477.6 Q F0 .499(Expands \ -to the process ID of the job most recently placed into the background, \ -whether e)144 477.6 R -.15(xe)-.15 G(cuted).15 E -(as an asynchronous command or using the)144 489.6 Q F1(bg)2.5 E F0 -.2 -(bu)2.5 G(iltin \(see).2 E F3(JOB CONTR)2.5 E(OL)-.27 E F0(belo)2.25 E -(w\).)-.25 E F1(0)108 501.6 Q F0 .886 -(Expands to the name of the shell or shell script.)144 501.6 R .886 +144 715.2 Q F12.5 E F0(option\).)2.5 E(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(10)185.115 E 0 Cg EP +%%Page: 11 11 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF($)108 84 Q F0 .839 +(Expands to the process ID of the shell. In a subshell, it e)144 84 R +.839(xpands to the process ID of the current)-.15 F +(shell, not the subshell.)144 96 Q F1(!)108 108 Q F0 .499(Expands to th\ +e process ID of the job most recently placed into the background, wheth\ +er e)144 108 R -.15(xe)-.15 G(cuted).15 E +(as an asynchronous command or using the)144 120 Q F1(bg)2.5 E F0 -.2 +(bu)2.5 G(iltin \(see).2 E/F2 9/Times-Bold@0 SF(JOB CONTR)2.5 E(OL)-.27 +E F0(belo)2.25 E(w\).)-.25 E F1(0)108 132 Q F0 .886 +(Expands to the name of the shell or shell script.)144 132 R .886 (This is set at shell initialization.)5.886 F(If)5.887 E F1(bash)3.387 E -F0 .887(is in-)3.387 F -.2(vo)144 513.6 S -.1(ke).2 G 2.668(dw).1 G .168 +F0 .887(is in-)3.387 F -.2(vo)144 144 S -.1(ke).2 G 2.668(dw).1 G .168 (ith a \214le of commands,)-2.668 F F1($0)2.668 E F0 .167 (is set to the name of that \214le.)2.667 F(If)5.167 E F1(bash)2.667 E F0 .167(is started with the)2.667 F F12.667 E F0(op-)2.667 E .895 -(tion, then)144 525.6 R F1($0)3.395 E F0 .895(is set to the \214rst ar) +(tion, then)144 156 R F1($0)3.395 E F0 .895(is set to the \214rst ar) 3.395 F .895(gument after the string to be e)-.18 F -.15(xe)-.15 G .896 (cuted, if one is present.).15 F(Other)5.896 E(-)-.2 E -(wise, it is set to the \214lename used to in)144 537.6 Q -.2(vo)-.4 G --.1(ke).2 G F1(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25(iv e)-2.5 -H 2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E F1 -(Shell V)87 554.4 Q(ariables)-.92 E F0(The follo)108 566.4 Q(wing v)-.25 -E(ariables are set by the shell:)-.25 E F1(_)108 583.2 Q F0 1.526 -(At shell startup, set to the pathname used to in)144 583.2 R -.2(vo)-.4 +(wise, it is set to the \214lename used to in)144 168 Q -.2(vo)-.4 G -.1 +(ke).2 G F1(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25(iv e)-2.5 H +2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E F1(Shell V) +87 184.8 Q(ariables)-.92 E F0(The follo)108 196.8 Q(wing v)-.25 E +(ariables are set by the shell:)-.25 E F1(_)108 213.6 Q F0 1.526 +(At shell startup, set to the pathname used to in)144 213.6 R -.2(vo)-.4 G 1.725 -.1(ke t).2 H 1.525(he shell or shell script being e).1 F -.15 -(xe)-.15 G 1.525(cuted as).15 F .173(passed in the en)144 595.2 R .173 +(xe)-.15 G 1.525(cuted as).15 F .173(passed in the en)144 225.6 R .173 (vironment or ar)-.4 F .173(gument list.)-.18 F(Subsequently)5.173 E 2.673(,e)-.65 G .173(xpands to the last ar)-2.823 F .174 -(gument to the pre-)-.18 F .337(vious simple command e)144 607.2 R -.15 +(gument to the pre-)-.18 F .337(vious simple command e)144 237.6 R -.15 (xe)-.15 G .337(cuted in the fore).15 F .336(ground, after e)-.15 F 2.836(xpansion. Also)-.15 F .336(set to the full pathname)2.836 F .365 -(used to in)144 619.2 R -.2(vo)-.4 G .565 -.1(ke e).2 H .365 +(used to in)144 249.6 R -.2(vo)-.4 G .565 -.1(ke e).2 H .365 (ach command e).1 F -.15(xe)-.15 G .366(cuted and placed in the en).15 F .366(vironment e)-.4 F .366(xported to that command.)-.15 F(When checki\ ng mail, this parameter holds the name of the mail \214le currently bei\ -ng check)144 631.2 Q(ed.)-.1 E F1 -.3(BA)108 643.2 S(SH).3 E F0 -(Expands to the full \214lename used to in)144 643.2 Q -.2(vo)-.4 G .2 +ng check)144 261.6 Q(ed.)-.1 E F1 -.3(BA)108 273.6 S(SH).3 E F0 +(Expands to the full \214lename used to in)144 273.6 Q -.2(vo)-.4 G .2 -.1(ke t).2 H(his instance of).1 E F1(bash)2.5 E F0(.)A F1 -.3(BA)108 -655.2 S(SHOPTS).3 E F0 2.549(Ac)144 667.2 S .049 +285.6 S(SHOPTS).3 E F0 2.549(Ac)144 297.6 S .049 (olon-separated list of enabled shell options.)-2.549 F .049(Each w) 5.049 F .049(ord in the list is a v)-.1 F .049(alid ar)-.25 F .049 -(gument for the)-.18 F F12.548 E F0 .115(option to the)144 679.2 R -F1(shopt)2.616 E F0 -.2(bu)2.616 G .116(iltin command \(see).2 F F3 .116 +(gument for the)-.18 F F12.548 E F0 .115(option to the)144 309.6 R +F1(shopt)2.616 E F0 -.2(bu)2.616 G .116(iltin command \(see).2 F F2 .116 (SHELL B)2.616 F(UIL)-.09 E .116(TIN COMMANDS)-.828 F F0(belo)2.366 E 2.616(w\). The)-.25 F .116(options ap-)2.616 F 1.067(pearing in)144 -691.2 R F3 -.27(BA)3.567 G(SHOPTS).27 E F0 1.067(are those reported as) -3.317 F F2(on)3.797 E F0(by)3.807 E F1(shopt)3.567 E F0 6.066(.I)C 3.566 -(ft)-6.066 G 1.066(his v)-3.566 F 1.066(ariable is in the en)-.25 F -(vironment)-.4 E(when)144 703.2 Q F1(bash)3.141 E F0 .642(starts up, ea\ -ch shell option in the list will be enabled before reading an)3.141 F -3.142(ys)-.15 G .642(tartup \214les.)-3.142 F(This v)144 715.2 Q -(ariable is read-only)-.25 E(.)-.65 E(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(10)190.395 E 0 Cg EP -%%Page: 11 11 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF -.3(BA)108 84 S(SHPID).3 E F0 .188 -(Expands to the process ID of the current)144 96 R F1(bash)2.688 E F0 -2.687(process. This)2.687 F(dif)2.687 E .187(fers from)-.25 F F1($$) -2.687 E F0 .187(under certain circum-)2.687 F .548 -(stances, such as subshells that do not require)144 108 R F1(bash)3.048 -E F0 .548(to be re-initialized.)3.048 F .549(Assignments to)5.549 F/F2 9 -/Times-Bold@0 SF -.27(BA)3.049 G(SHPID).27 E F0(ha)144 120 Q .3 -.15 -(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G 2.5(ect. If).25 F F1 -.3(BA)2.5 -G(SHPID).3 E F0(is unset, it loses its special properties, e)2.5 E -.15 -(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G -(ubsequently reset.)-2.5 E F1 -.3(BA)108 132 S(SH_ALIASES).3 E F0 1.195 -(An associati)144 144 R 1.495 -.15(ve a)-.25 H 1.195(rray v).15 F 1.195 -(ariable whose members correspond to the internal list of aliases as ma\ -in-)-.25 F .16(tained by the)144 156 R F1(alias)2.66 E F0 -.2(bu)2.66 G -2.66(iltin. Elements).2 F .16 +321.6 R F2 -.27(BA)3.567 G(SHOPTS).27 E F0 1.067(are those reported as) +3.317 F/F3 10/Times-Italic@0 SF(on)3.797 E F0(by)3.807 E F1(shopt)3.567 +E F0 6.066(.I)C 3.566(ft)-6.066 G 1.066(his v)-3.566 F 1.066 +(ariable is in the en)-.25 F(vironment)-.4 E(when)144 333.6 Q F1(bash) +3.141 E F0 .642(starts up, each shell option in the list will be enable\ +d before reading an)3.141 F 3.142(ys)-.15 G .642(tartup \214les.)-3.142 +F(This v)144 345.6 Q(ariable is read-only)-.25 E(.)-.65 E F1 -.3(BA)108 +357.6 S(SHPID).3 E F0 .188(Expands to the process ID of the current)144 +369.6 R F1(bash)2.688 E F0 2.687(process. This)2.687 F(dif)2.687 E .187 +(fers from)-.25 F F1($$)2.687 E F0 .187(under certain circum-)2.687 F +.548(stances, such as subshells that do not require)144 381.6 R F1(bash) +3.048 E F0 .548(to be re-initialized.)3.048 F .549(Assignments to)5.549 +F F2 -.27(BA)3.049 G(SHPID).27 E F0(ha)144 393.6 Q .3 -.15(ve n)-.2 H +2.5(oe).15 G -.25(ff)-2.5 G 2.5(ect. If).25 F F1 -.3(BA)2.5 G(SHPID).3 E +F0(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5 +(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) +-2.5 E F1 -.3(BA)108 405.6 S(SH_ALIASES).3 E F0 1.195(An associati)144 +417.6 R 1.495 -.15(ve a)-.25 H 1.195(rray v).15 F 1.195(ariable whose m\ +embers correspond to the internal list of aliases as main-)-.25 F .16 +(tained by the)144 429.6 R F1(alias)2.66 E F0 -.2(bu)2.66 G 2.66 +(iltin. Elements).2 F .16 (added to this array appear in the alias list; ho)2.66 F(we)-.25 E -.15 (ve)-.25 G .96 -.4(r, u).15 H(nsetting).4 E 4.503 -(array elements currently does not cause aliases to be remo)144 168 R +(array elements currently does not cause aliases to be remo)144 441.6 R -.15(ve)-.15 G 7.003(df).15 G 4.503(rom the alias list.)-7.003 F(If) -9.502 E F1 -.3(BA)144 180 S(SH_ALIASES).3 E F0 +9.502 E F1 -.3(BA)144 453.6 S(SH_ALIASES).3 E F0 (is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5 (ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) --2.5 E F1 -.3(BA)108 192 S(SH_ARGC).3 E F0 .934(An array v)144 204 R +-2.5 E F1 -.3(BA)108 465.6 S(SH_ARGC).3 E F0 .934(An array v)144 477.6 R .934(ariable whose v)-.25 F .934 (alues are the number of parameters in each frame of the current)-.25 F -F1(bash)3.435 E F0 -.15(exe)144 216 S .535(cution call stack.).15 F .535 -(The number of parameters to the current subroutine \(shell function or\ - script)5.535 F -.15(exe)144 228 S .141(cuted with).15 F F1(.)2.641 E F0 -(or)2.641 E F1(sour)2.641 E(ce)-.18 E F0 2.641(\)i)C 2.641(sa)-2.641 G -2.641(tt)-2.641 G .142(he top of the stack.)-2.641 F .142 +F1(bash)3.435 E F0 -.15(exe)144 489.6 S .535(cution call stack.).15 F +.535(The number of parameters to the current subroutine \(shell functio\ +n or script)5.535 F -.15(exe)144 501.6 S .141(cuted with).15 F F1(.) +2.641 E F0(or)2.641 E F1(sour)2.641 E(ce)-.18 E F0 2.641(\)i)C 2.641(sa) +-2.641 G 2.641(tt)-2.641 G .142(he top of the stack.)-2.641 F .142 (When a subroutine is e)5.142 F -.15(xe)-.15 G .142 (cuted, the number of).15 F 1.265(parameters passed is pushed onto)144 -240 R F2 -.27(BA)3.765 G(SH_ARGC).27 E/F3 9/Times-Roman@0 SF(.)A F0 +513.6 R F2 -.27(BA)3.765 G(SH_ARGC).27 E/F4 9/Times-Roman@0 SF(.)A F0 1.265(The shell sets)5.765 F F2 -.27(BA)3.765 G(SH_ARGC).27 E F0 1.265 -(only when in e)3.515 F(x-)-.15 E .947(tended deb)144 252 R .947 +(only when in e)3.515 F(x-)-.15 E .947(tended deb)144 525.6 R .947 (ugging mode \(see the description of the)-.2 F F1(extdeb)3.447 E(ug)-.2 E F0 .947(option to the)3.447 F F1(shopt)3.447 E F0 -.2(bu)3.448 G .948 -(iltin belo).2 F(w\).)-.25 E(Setting)144 264 Q F1(extdeb)3.363 E(ug)-.2 -E F0 .863(after the shell has started to e)3.363 F -.15(xe)-.15 G .862 -(cute a script, or referencing this v).15 F .862(ariable when)-.25 F F1 -(extdeb)144 276 Q(ug)-.2 E F0(is not set, may result in inconsistent v) -2.5 E(alues.)-.25 E F1 -.3(BA)108 288 S(SH_ARGV).3 E F0 .206(An array v) -144 300 R .206(ariable containing all of the parameters in the current) --.25 F F1(bash)2.706 E F0 -.15(exe)2.706 G .207(cution call stack.).15 F -.207(The \214-)5.207 F .567(nal parameter of the last subroutine call i\ -s at the top of the stack; the \214rst parameter of the initial)144 312 -R 1.424(call is at the bottom.)144 324 R 1.424(When a subroutine is e) +(iltin belo).2 F(w\).)-.25 E(Setting)144 537.6 Q F1(extdeb)3.363 E(ug) +-.2 E F0 .863(after the shell has started to e)3.363 F -.15(xe)-.15 G +.862(cute a script, or referencing this v).15 F .862(ariable when)-.25 F +F1(extdeb)144 549.6 Q(ug)-.2 E F0 +(is not set, may result in inconsistent v)2.5 E(alues.)-.25 E F1 -.3(BA) +108 561.6 S(SH_ARGV).3 E F0 .206(An array v)144 573.6 R .206 +(ariable containing all of the parameters in the current)-.25 F F1(bash) +2.706 E F0 -.15(exe)2.706 G .207(cution call stack.).15 F .207 +(The \214-)5.207 F .567(nal parameter of the last subroutine call is at\ + the top of the stack; the \214rst parameter of the initial)144 585.6 R +1.424(call is at the bottom.)144 597.6 R 1.424(When a subroutine is e) 6.424 F -.15(xe)-.15 G 1.424 -(cuted, the parameters supplied are pushed onto).15 F F2 -.27(BA)144 336 -S(SH_ARGV).27 E F3(.)A F0 .854(The shell sets)5.354 F F2 -.27(BA)3.354 G -(SH_ARGV).27 E F0 .853(only when in e)3.104 F .853(xtended deb)-.15 F -.853(ugging mode \(see the de-)-.2 F .475(scription of the)144 348 R F1 -(extdeb)2.975 E(ug)-.2 E F0 .475(option to the)2.975 F F1(shopt)2.975 E -F0 -.2(bu)2.975 G .475(iltin belo).2 F 2.975(w\). Setting)-.25 F F1 -(extdeb)2.976 E(ug)-.2 E F0 .476(after the shell has)2.976 F .45 -(started to e)144 360 R -.15(xe)-.15 G .45 -(cute a script, or referencing this v).15 F .45(ariable when)-.25 F F1 -(extdeb)2.95 E(ug)-.2 E F0 .45(is not set, may result in in-)2.95 F -(consistent v)144 372 Q(alues.)-.25 E F1 -.3(BA)108 384 S(SH_ARGV0).3 E -F0 .25(When referenced, this v)144 396 R .25(ariable e)-.25 F .251 -(xpands to the name of the shell or shell script \(identical to)-.15 F -F1($0)2.751 E F0 2.751(;s)C(ee)-2.751 E .041 -(the description of special parameter 0 abo)144 408 R -.15(ve)-.15 G +(cuted, the parameters supplied are pushed onto).15 F F2 -.27(BA)144 +609.6 S(SH_ARGV).27 E F4(.)A F0 .854(The shell sets)5.354 F F2 -.27(BA) +3.354 G(SH_ARGV).27 E F0 .853(only when in e)3.104 F .853(xtended deb) +-.15 F .853(ugging mode \(see the de-)-.2 F .475(scription of the)144 +621.6 R F1(extdeb)2.975 E(ug)-.2 E F0 .475(option to the)2.975 F F1 +(shopt)2.975 E F0 -.2(bu)2.975 G .475(iltin belo).2 F 2.975 +(w\). Setting)-.25 F F1(extdeb)2.976 E(ug)-.2 E F0 .476 +(after the shell has)2.976 F .45(started to e)144 633.6 R -.15(xe)-.15 G +.45(cute a script, or referencing this v).15 F .45(ariable when)-.25 F +F1(extdeb)2.95 E(ug)-.2 E F0 .45(is not set, may result in in-)2.95 F +(consistent v)144 645.6 Q(alues.)-.25 E F1 -.3(BA)108 657.6 S(SH_ARGV0) +.3 E F0 .25(When referenced, this v)144 669.6 R .25(ariable e)-.25 F +.251(xpands to the name of the shell or shell script \(identical to)-.15 +F F1($0)2.751 E F0 2.751(;s)C(ee)-2.751 E .041 +(the description of special parameter 0 abo)144 681.6 R -.15(ve)-.15 G 2.541(\). Assignment).15 F(to)2.541 E F1 -.3(BA)2.541 G(SH_ARGV0).3 E F0 .04(causes the v)2.541 F .04(alue as-)-.25 F .216 -(signed to also be assigned to)144 420 R F1($0)2.716 E F0 5.216(.I)C(f) --5.216 E F1 -.3(BA)2.716 G(SH_ARGV0).3 E F0 .216 +(signed to also be assigned to)144 693.6 R F1($0)2.716 E F0 5.216(.I)C +(f)-5.216 E F1 -.3(BA)2.716 G(SH_ARGV0).3 E F0 .216 (is unset, it loses its special properties, e)2.716 F -.15(ve)-.25 G -2.716(ni).15 G(f)-2.716 E(it is subsequently reset.)144 432 Q F1 -.3(BA) -108 444 S(SH_CMDS).3 E F0 .668(An associati)144 456 R .968 -.15(ve a) --.25 H .668(rray v).15 F .668(ariable whose members correspond to the i\ -nternal hash table of commands)-.25 F .195(as maintained by the)144 468 -R F1(hash)2.695 E F0 -.2(bu)2.695 G 2.695(iltin. Elements).2 F .196 -(added to this array appear in the hash table; ho)2.696 F(we)-.25 E -.15 -(ve)-.25 G -.4(r,).15 G .852(unsetting array elements currently does no\ -t cause command names to be remo)144 480 R -.15(ve)-.15 G 3.352(df).15 G -.852(rom the hash)-3.352 F 2.5(table. If)144 492 R F1 -.3(BA)2.5 G +2.716(ni).15 G(f)-2.716 E(it is subsequently reset.)144 705.6 Q +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(11)185.115 E 0 Cg EP +%%Page: 12 12 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF -.3(BA)108 84 S(SH_CMDS).3 E F0 .668(An associati)144 96 R .968 -.15 +(ve a)-.25 H .668(rray v).15 F .668(ariable whose members correspond to\ + the internal hash table of commands)-.25 F .195(as maintained by the) +144 108 R F1(hash)2.695 E F0 -.2(bu)2.695 G 2.695(iltin. Elements).2 F +.196(added to this array appear in the hash table; ho)2.696 F(we)-.25 E +-.15(ve)-.25 G -.4(r,).15 G .852(unsetting array elements currently doe\ +s not cause command names to be remo)144 120 R -.15(ve)-.15 G 3.352(df) +.15 G .852(rom the hash)-3.352 F 2.5(table. If)144 132 R F1 -.3(BA)2.5 G (SH_CMDS).3 E F0(is unset, it loses its special properties, e)2.5 E -.15 (ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G -(ubsequently reset.)-2.5 E F1 -.3(BA)108 504 S(SH_COMMAND).3 E F0 1.242 -(The command currently being e)144 516 R -.15(xe)-.15 G 1.243 +(ubsequently reset.)-2.5 E F1 -.3(BA)108 144 S(SH_COMMAND).3 E F0 1.242 +(The command currently being e)144 156 R -.15(xe)-.15 G 1.243 (cuted or about to be e).15 F -.15(xe)-.15 G 1.243 (cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.243(cuting a).15 F .263(command as the result of a trap, in which case it is the command e) -144 528 R -.15(xe)-.15 G .262(cuting at the time of the trap.).15 F(If) -144 540 Q F1 -.3(BA)2.5 G(SH_COMMAND).3 E F0 +144 168 R -.15(xe)-.15 G .262(cuting at the time of the trap.).15 F(If) +144 180 Q F1 -.3(BA)2.5 G(SH_COMMAND).3 E F0 (is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5 (ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) --2.5 E F1 -.3(BA)108 552 S(SH_EXECUTION_STRING).3 E F0(The command ar) -144 564 Q(gument to the)-.18 E F12.5 E F0(in)2.5 E -.2(vo)-.4 G -(cation option.).2 E F1 -.3(BA)108 576 S(SH_LINENO).3 E F0 .692 -(An array v)144 588 R .692(ariable whose members are the line numbers i\ -n source \214les where each corresponding)-.25 F .97(member of)144 600 R -F2(FUNCN)3.47 E(AME)-.18 E F0 -.1(wa)3.22 G 3.47(si).1 G -1.9 -.4(nv o) --3.47 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E(ASH_LINENO[)-.3 E/F4 10 -/Times-Italic@0 SF($i)A F1(]})A F0 .969 -(is the line number in the source)3.469 F 14.671(\214le \()144 612 R F1 -(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F1(]})A F0 17.171(\)w)C(here)-17.171 -E F1(${FUNCN)17.172 E(AME[)-.2 E F4($i)A F1(]})A F0 -.1(wa)17.172 G -17.172(sc).1 G 14.672(alled \(or)-17.172 F F1(${B)144 624 Q(ASH_LINENO[) --.3 E F4($i-1)A F1(]})A F0 .115 +-2.5 E F1 -.3(BA)108 192 S(SH_EXECUTION_STRING).3 E F0(The command ar) +144 204 Q(gument to the)-.18 E F12.5 E F0(in)2.5 E -.2(vo)-.4 G +(cation option.).2 E F1 -.3(BA)108 216 S(SH_LINENO).3 E F0 .692 +(An array v)144 228 R .692(ariable whose members are the line numbers i\ +n source \214les where each corresponding)-.25 F .97(member of)144 240 R +/F2 9/Times-Bold@0 SF(FUNCN)3.47 E(AME)-.18 E F0 -.1(wa)3.22 G 3.47(si) +.1 G -1.9 -.4(nv o)-3.47 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E +(ASH_LINENO[)-.3 E/F3 10/Times-Italic@0 SF($i)A F1(]})A F0 .969 +(is the line number in the source)3.469 F 14.671(\214le \()144 252 R F1 +(${B)A(ASH_SOURCE[)-.3 E F3($i+1)A F1(]})A F0 17.171(\)w)C(here)-17.171 +E F1(${FUNCN)17.172 E(AME[)-.2 E F3($i)A F1(]})A F0 -.1(wa)17.172 G +17.172(sc).1 G 14.672(alled \(or)-17.172 F F1(${B)144 264 Q(ASH_LINENO[) +-.3 E F3($i-1)A F1(]})A F0 .115 (if referenced within another shell function\).)2.615 F(Use)5.115 E F2 (LINENO)2.615 E F0 .115(to obtain the)2.365 F(current line number)144 -636 Q(.)-.55 E F1 -.3(BA)108 648 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E --.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 660 S 1.57(olon-separated list of\ +276 Q(.)-.55 E F1 -.3(BA)108 288 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E +-.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 300 S 1.57(olon-separated list of\ directories in which the shell looks for dynamically loadable b)-4.07 F -(uiltins)-.2 E(speci\214ed by the)144 672 Q F1(enable)2.5 E F0(command.) -2.5 E F1 -.3(BA)108 684 S(SH_REMA).3 E(TCH)-.95 E F0 .006(An array v)144 -696 R .006(ariable whose members are assigned by the)-.25 F F1(=~)2.506 +(uiltins)-.2 E(speci\214ed by the)144 312 Q F1(enable)2.5 E F0(command.) +2.5 E F1 -.3(BA)108 324 S(SH_REMA).3 E(TCH)-.95 E F0 .006(An array v)144 +336 R .006(ariable whose members are assigned by the)-.25 F F1(=~)2.506 E F0 .005(binary operator to the)2.506 F F1([[)2.505 E F0 .005 -(conditional com-)2.505 F 2.506(mand. The)144 708 R .007 +(conditional com-)2.505 F 2.506(mand. The)144 348 R .007 (element with inde)2.506 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007 (he portion of the string matching the entire re)-2.507 F .007(gular e) --.15 F(xpression.)-.15 E 4.331(The element with inde)144 720 R(x)-.15 E -F4(n)6.831 E F0 4.331(is the portion of the string matching the)6.831 F -F4(n)6.83 E F0 4.33(th parenthesized)B(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(11)190.395 E 0 Cg EP -%%Page: 12 12 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(sube)144 84 Q -(xpression.)-.15 E/F1 10/Times-Bold@0 SF -.3(BA)108 96 S(SH_SOURCE).3 E -F0 .125(An array v)144 108 R .125(ariable whose members are the source \ -\214lenames where the corresponding shell function)-.25 F .781 -(names in the)144 120 R/F2 9/Times-Bold@0 SF(FUNCN)3.28 E(AME)-.18 E F0 -.78(array v)3.03 F .78(ariable are de\214ned.)-.25 F .78 -(The shell function)5.78 F F1(${FUNCN)3.28 E(AME[)-.2 E/F3 10 -/Times-Italic@0 SF($i)A F1(]})A F0(is)3.28 E(de\214ned in the \214le)144 -132 Q F1(${B)2.5 E(ASH_SOURCE[)-.3 E F3($i)A F1(]})A F0(and called from) -2.5 E F1(${B)2.5 E(ASH_SOURCE[)-.3 E F3($i+1)A F1(]})A F0(.)A F1 -.3(BA) -108 144 S(SH_SUBSHELL).3 E F0 .296 -(Incremented by one within each subshell or subshell en)144 156 R .296 -(vironment when the shell be)-.4 F .297(gins e)-.15 F -.15(xe)-.15 G -(cuting).15 E 1.277(in that en)144 168 R 3.777(vironment. The)-.4 F +-.15 F(xpression.)-.15 E .998(The element with inde)144 360 R(x)-.15 E +F3(n)3.498 E F0 .997(is the portion of the string matching the)3.498 F +F3(n)3.497 E F0 .997(th parenthesized sube)B(xpres-)-.15 E(sion.)144 372 +Q F1 -.3(BA)108 384 S(SH_SOURCE).3 E F0 .125(An array v)144 396 R .125(\ +ariable whose members are the source \214lenames where the correspondin\ +g shell function)-.25 F .781(names in the)144 408 R F2(FUNCN)3.28 E(AME) +-.18 E F0 .78(array v)3.03 F .78(ariable are de\214ned.)-.25 F .78 +(The shell function)5.78 F F1(${FUNCN)3.28 E(AME[)-.2 E F3($i)A F1(]})A +F0(is)3.28 E(de\214ned in the \214le)144 420 Q F1(${B)2.5 E(ASH_SOURCE[) +-.3 E F3($i)A F1(]})A F0(and called from)2.5 E F1(${B)2.5 E(ASH_SOURCE[) +-.3 E F3($i+1)A F1(]})A F0(.)A F1 -.3(BA)108 432 S(SH_SUBSHELL).3 E F0 +.296(Incremented by one within each subshell or subshell en)144 444 R +.296(vironment when the shell be)-.4 F .297(gins e)-.15 F -.15(xe)-.15 G +(cuting).15 E 1.277(in that en)144 456 R 3.777(vironment. The)-.4 F 1.277(initial v)3.777 F 1.277(alue is 0.)-.25 F(If)6.277 E F1 -.3(BA) 3.777 G(SH_SUBSHELL).3 E F0 1.276(is unset, it loses its special)3.777 F -(properties, e)144 180 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5 -(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1 -.3(BA)108 192 S -(SH_VERSINFO).3 E F0 2.644(Ar)144 204 S .144(eadonly array v)-2.644 F +(properties, e)144 468 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5 +(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1 -.3(BA)108 480 S +(SH_VERSINFO).3 E F0 2.644(Ar)144 492 S .144(eadonly array v)-2.644 F .144(ariable whose members hold v)-.25 F .144 (ersion information for this instance of)-.15 F F1(bash)2.645 E F0 5.145 -(.T)C(he)-5.145 E -.25(va)144 216 S +(.T)C(he)-5.145 E -.25(va)144 504 S (lues assigned to the array members are as follo).25 E(ws:)-.25 E F1 -.3 -(BA)144 234 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)264 234 Q +(BA)144 522 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)264 522 Q (ersion number \(the)-.15 E F3 -.37(re)2.5 G(lease).37 E F0(\).)A F1 -.3 -(BA)144 246 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0(The minor v)264 246 Q +(BA)144 534 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0(The minor v)264 534 Q (ersion number \(the)-.15 E F3(ver)2.5 E(sion)-.1 E F0(\).)A F1 -.3(BA) -144 258 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0(The patch le)264 258 Q -.15 -(ve)-.25 G(l.).15 E F1 -.3(BA)144 270 S(SH_VERSINFO[).3 E F0(3)A F1(])A -F0(The b)264 270 Q(uild v)-.2 E(ersion.)-.15 E F1 -.3(BA)144 282 S -(SH_VERSINFO[).3 E F0(4)A F1(])A F0(The release status \(e.g.,)264 282 Q -F3(beta1)2.5 E F0(\).)A F1 -.3(BA)144 294 S(SH_VERSINFO[).3 E F0(5)A F1 -(])A F0(The v)264 294 Q(alue of)-.25 E F2(MA)2.5 E(CHTYPE)-.495 E/F4 9 -/Times-Roman@0 SF(.)A F1 -.3(BA)108 306 S(SH_VERSION).3 E F0 -(Expands to a string describing the v)144 318 Q +144 546 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0(The patch le)264 546 Q -.15 +(ve)-.25 G(l.).15 E F1 -.3(BA)144 558 S(SH_VERSINFO[).3 E F0(3)A F1(])A +F0(The b)264 558 Q(uild v)-.2 E(ersion.)-.15 E F1 -.3(BA)144 570 S +(SH_VERSINFO[).3 E F0(4)A F1(])A F0(The release status \(e.g.,)264 570 Q +F3(beta1)2.5 E F0(\).)A F1 -.3(BA)144 582 S(SH_VERSINFO[).3 E F0(5)A F1 +(])A F0(The v)264 582 Q(alue of)-.25 E F2(MA)2.5 E(CHTYPE)-.495 E/F4 9 +/Times-Roman@0 SF(.)A F1 -.3(BA)108 594 S(SH_VERSION).3 E F0 +(Expands to a string describing the v)144 606 Q (ersion of this instance of)-.15 E F1(bash)2.5 E F0(.)A F1(COMP_CW)108 -330 Q(ORD)-.1 E F0 .397(An inde)144 342 R 2.897(xi)-.15 G(nto)-2.897 E +618 Q(ORD)-.1 E F0 .397(An inde)144 630 R 2.897(xi)-.15 G(nto)-2.897 E F1(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396 (ord containing the current cursor position.)-.1 F .396(This v)5.396 F -(ari-)-.25 E 1.18(able is a)144 354 R -.25(va)-.2 G 1.181 +(ari-)-.25 E 1.18(able is a)144 642 R -.25(va)-.2 G 1.181 (ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.681 (db).1 G 3.681(yt)-3.681 G 1.181(he programmable completion f)-3.681 F -1.181(acilities \(see)-.1 F F1(Pr)144 366 Q(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 378 Q F0(The k)144 390 Q .3 +1.181(acilities \(see)-.1 F F1(Pr)144 654 Q(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 666 Q F0(The k)144 678 Q .3 -.15(ey \()-.1 H(or \214nal k).15 E .3 -.15(ey o)-.1 H 2.5(fak).15 G .3 -.15(ey s)-2.6 H(equence\) used to in).15 E -.2(vo)-.4 G .2 -.1(ke t).2 -H(he current completion function.).1 E F1(COMP_LINE)108 402 Q F0 1.208 -(The current command line.)144 414 R 1.208(This v)6.208 F 1.208 +H(he current completion function.).1 E F1(COMP_LINE)108 690 Q F0 1.208 +(The current command line.)144 702 R 1.208(This v)6.208 F 1.208 (ariable is a)-.25 F -.25(va)-.2 G 1.208 (ilable only in shell functions and e).25 F 1.207(xternal com-)-.15 F -1.037(mands in)144 426 R -.2(vo)-.4 G -.1(ke).2 G 3.537(db).1 G 3.537 +1.037(mands in)144 714 R -.2(vo)-.4 G -.1(ke).2 G 3.537(db).1 G 3.537 (yt)-3.537 G 1.037(he programmable completion f)-3.537 F 1.037 (acilities \(see)-.1 F F1(Pr)3.537 E 1.037(ogrammable Completion)-.18 F -F0(be-)3.537 E(lo)144 438 Q(w\).)-.25 E F1(COMP_POINT)108 450 Q F0 .667 -(The inde)144 462 R 3.167(xo)-.15 G 3.167(ft)-3.167 G .666 -(he current cursor position relati)-3.167 F .966 -.15(ve t)-.25 H 3.166 -(ot).15 G .666(he be)-3.166 F .666(ginning of the current command.)-.15 -F .666(If the)5.666 F .534 +F0(be-)3.537 E(lo)144 726 Q(w\).)-.25 E(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(12)185.115 E 0 Cg EP +%%Page: 13 13 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(COMP_POINT)108 84 Q F0 .667(The inde)144 96 R 3.167(xo)-.15 G 3.167 +(ft)-3.167 G .666(he current cursor position relati)-3.167 F .966 -.15 +(ve t)-.25 H 3.166(ot).15 G .666(he be)-3.166 F .666 +(ginning of the current command.)-.15 F .666(If the)5.666 F .534 (current cursor position is at the end of the current command, the v)144 -474 R .535(alue of this v)-.25 F .535(ariable is equal to)-.25 F F1 -(${#COMP_LINE})144 486 Q F0 5.705(.T)C .705(his v)-5.705 F .704 +108 R .535(alue of this v)-.25 F .535(ariable is equal to)-.25 F F1 +(${#COMP_LINE})144 120 Q F0 5.705(.T)C .705(his v)-5.705 F .704 (ariable is a)-.25 F -.25(va)-.2 G .704 (ilable only in shell functions and e).25 F .704(xternal commands in-) --.15 F -.2(vo)144 498 S -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G +-.15 F -.2(vo)144 132 S -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G (he programmable completion f)-2.5 E(acilities \(see)-.1 E F1(Pr)2.5 E (ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E F1(COMP_TYPE)108 -510 Q F0 .041(Set to an inte)144 522 R .041(ger v)-.15 F .041(alue corr\ +144 Q F0 .041(Set to an inte)144 156 R .041(ger v)-.15 F .041(alue corr\ esponding to the type of completion attempted that caused a completion) --.25 F .338(function to be called:)144 534 R F3 -.5(TA)2.837 G(B).5 E F0 -2.837(,f)C .337(or normal completion,)-2.837 F F3(?)2.837 E F0 2.837(,f) -C .337(or listing completions after successi)-2.837 F .637 -.15(ve t) --.25 H(abs,).15 E F3(!)144 546 Q F0 3.067(,f)C .567 -(or listing alternati)-3.067 F -.15(ve)-.25 G 3.067(so).15 G 3.067(np) --3.067 G .567(artial w)-3.067 F .567(ord completion,)-.1 F F3(@)3.067 E -F0 3.067(,t)C 3.067(ol)-3.067 G .567(ist completions if the w)-3.067 F -.567(ord is not un-)-.1 F .418(modi\214ed, or)144 558 R F3(%)2.918 E F0 -2.918(,f)C .418(or menu completion.)-2.918 F .417(This v)5.417 F .417 -(ariable is a)-.25 F -.25(va)-.2 G .417 +-.25 F .338(function to be called:)144 168 R/F2 10/Times-Italic@0 SF -.5 +(TA)2.837 G(B).5 E F0 2.837(,f)C .337(or normal completion,)-2.837 F F2 +(?)2.837 E F0 2.837(,f)C .337(or listing completions after successi) +-2.837 F .637 -.15(ve t)-.25 H(abs,).15 E F2(!)144 180 Q F0 3.067(,f)C +.567(or listing alternati)-3.067 F -.15(ve)-.25 G 3.067(so).15 G 3.067 +(np)-3.067 G .567(artial w)-3.067 F .567(ord completion,)-.1 F F2(@) +3.067 E F0 3.067(,t)C 3.067(ol)-3.067 G .567(ist completions if the w) +-3.067 F .567(ord is not un-)-.1 F .418(modi\214ed, or)144 192 R F2(%) +2.918 E F0 2.918(,f)C .418(or menu completion.)-2.918 F .417(This v) +5.417 F .417(ariable is a)-.25 F -.25(va)-.2 G .417 (ilable only in shell functions and e).25 F(xter)-.15 E(-)-.2 E .704 -(nal commands in)144 570 R -.2(vo)-.4 G -.1(ke).2 G 3.204(db).1 G 3.204 +(nal commands in)144 204 R -.2(vo)-.4 G -.1(ke).2 G 3.204(db).1 G 3.204 (yt)-3.204 G .704(he programmable completion f)-3.204 F .704 (acilities \(see)-.1 F F1(Pr)3.204 E .704(ogrammable Comple-)-.18 F -(tion)144 582 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 594 Q(ORDBREAKS) --.1 E F0 1.336(The set of characters that the)144 606 R F1 -.18(re)3.836 +(tion)144 216 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 228 Q(ORDBREAKS) +-.1 E F0 1.336(The set of characters that the)144 240 R F1 -.18(re)3.836 G(adline).18 E F0 1.336(library treats as w)3.836 F 1.335 (ord separators when performing w)-.1 F(ord)-.1 E 3.125(completion. If) -144 618 R F2(COMP_W)3.125 E(ORDBREAKS)-.09 E F0 .626 +144 252 R/F3 9/Times-Bold@0 SF(COMP_W)3.125 E(ORDBREAKS)-.09 E F0 .626 (is unset, it loses its special properties, e)2.875 F -.15(ve)-.25 G 3.126(ni).15 G 3.126(fi)-3.126 G 3.126(ti)-3.126 G 3.126(ss)-3.126 G -(ubse-)-3.126 E(quently reset.)144 630 Q F1(COMP_W)108 642 Q(ORDS)-.1 E -F0 .654(An array v)144 654 R .654(ariable \(see)-.25 F F1(Arrays)3.154 E +(ubse-)-3.126 E(quently reset.)144 264 Q F1(COMP_W)108 276 Q(ORDS)-.1 E +F0 .654(An array v)144 288 R .654(ariable \(see)-.25 F F1(Arrays)3.154 E F0(belo)3.154 E .654(w\) consisting of the indi)-.25 F .653(vidual w) --.25 F .653(ords in the current command)-.1 F 3.191(line. The)144 666 R +-.25 F .653(ords in the current command)-.1 F 3.191(line. The)144 300 R .692(line is split into w)3.192 F .692(ords as)-.1 F F1 -.18(re)3.192 G -(adline).18 E F0 -.1(wo)3.192 G .692(uld split it, using).1 F F2(COMP_W) +(adline).18 E F0 -.1(wo)3.192 G .692(uld split it, using).1 F F3(COMP_W) 3.192 E(ORDBREAKS)-.09 E F0 .692(as de-)2.942 F 1.558(scribed abo)144 -678 R -.15(ve)-.15 G 6.558(.T).15 G 1.558(his v)-6.558 F 1.558 +312 R -.15(ve)-.15 G 6.558(.T).15 G 1.558(his v)-6.558 F 1.558 (ariable is a)-.25 F -.25(va)-.2 G 1.558 (ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 4.057 (db).1 G 4.057(yt)-4.057 G 1.557(he programmable)-4.057 F(completion f) -144 690 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 702 Q(OC)-.3 E F0 .168(An array v) -144 714 R .168(ariable \(see)-.25 F F1(Arrays)2.668 E F0(belo)2.669 E +144 324 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 336 Q(OC)-.3 E F0 .168(An array v) +144 348 R .168(ariable \(see)-.25 F F1(Arrays)2.668 E F0(belo)2.669 E .169 (w\) created to hold the \214le descriptors for output from and input) --.25 F(to an unnamed coprocess \(see)144 726 Q F1(Copr)2.5 E(ocesses) --.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(12)190.395 E 0 Cg EP -%%Page: 13 13 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(DIRST)108 84 Q -.55(AC)-.9 G(K).55 E F0 .79(An array v)144 96 R .79 -(ariable \(see)-.25 F F1(Arrays)3.29 E F0(belo)3.289 E .789 +-.25 F(to an unnamed coprocess \(see)144 360 Q F1(Copr)2.5 E(ocesses) +-.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 372 Q -.55(AC) +-.9 G(K).55 E F0 .79(An array v)144 384 R .79(ariable \(see)-.25 F F1 +(Arrays)3.29 E F0(belo)3.289 E .789 (w\) containing the current contents of the directory stack.)-.25 F(Di-) -5.789 E .099(rectories appear in the stack in the order the)144 108 R +5.789 E .099(rectories appear in the stack in the order the)144 396 R 2.599(ya)-.15 G .099(re displayed by the)-2.599 F F1(dirs)2.599 E F0 -.2 (bu)2.599 G 2.599(iltin. Assigning).2 F .099(to mem-)2.599 F .84 -(bers of this array v)144 120 R .84 +(bers of this array v)144 408 R .84 (ariable may be used to modify directories already in the stack, b)-.25 -F .84(ut the)-.2 F F1(pushd)3.34 E F0(and)144 132 Q F1(popd)3.45 E F0 +F .84(ut the)-.2 F F1(pushd)3.34 E F0(and)144 420 Q F1(popd)3.45 E F0 -.2(bu)3.45 G .951(iltins must be used to add and remo).2 F 1.251 -.15 (ve d)-.15 H 3.451(irectories. Assignment).15 F .951(to this v)3.451 F -.951(ariable will)-.25 F .379(not change the current directory)144 144 R -5.379(.I)-.65 G(f)-5.379 E/F2 9/Times-Bold@0 SF(DIRST)2.879 E -.495(AC) --.81 G(K).495 E F0 .378(is unset, it loses its special properties, e) -2.629 F -.15(ve)-.25 G 2.878(ni).15 G 2.878(fi)-2.878 G 2.878(ti)-2.878 -G(s)-2.878 E(subsequently reset.)144 156 Q F1(EPOCHREAL)108 168 Q(TIME) --.92 E F0 .337(Each time this parameter is referenced, it e)144 180 R -.338(xpands to the number of seconds since the Unix Epoch)-.15 F(\(see) -144 192 Q/F3 10/Times-Italic@0 SF(time)2.917 E F0 .417 -(\(3\)\) as a \215oating point v)B .416 +.951(ariable will)-.25 F .379(not change the current directory)144 432 R +5.379(.I)-.65 G(f)-5.379 E F3(DIRST)2.879 E -.495(AC)-.81 G(K).495 E F0 +.378(is unset, it loses its special properties, e)2.629 F -.15(ve)-.25 G +2.878(ni).15 G 2.878(fi)-2.878 G 2.878(ti)-2.878 G(s)-2.878 E +(subsequently reset.)144 444 Q F1(EPOCHREAL)108 456 Q(TIME)-.92 E F0 +.337(Each time this parameter is referenced, it e)144 468 R .338 +(xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)144 +480 Q F2(time)2.917 E F0 .417(\(3\)\) as a \215oating point v)B .416 (alue with micro-second granularity)-.25 F 5.416(.A)-.65 G .416 -(ssignments to)-5.416 F F2(EPOCHRE-)2.916 E(AL)144 204 Q(TIME)-.828 E F0 -1.09(are ignored.)3.34 F(If)6.09 E F2(EPOCHREAL)3.59 E(TIME)-.828 E F0 +(ssignments to)-5.416 F F3(EPOCHRE-)2.916 E(AL)144 492 Q(TIME)-.828 E F0 +1.09(are ignored.)3.34 F(If)6.09 E F3(EPOCHREAL)3.59 E(TIME)-.828 E F0 1.09(is unset, it loses its special properties, e)3.34 F -.15(ve)-.25 G 3.591(ni).15 G 3.591(fi)-3.591 G 3.591(ti)-3.591 G(s)-3.591 E -(subsequently reset.)144 216 Q F1(EPOCHSECONDS)108 228 Q F0 .338 -(Each time this parameter is referenced, it e)144 240 R .337 +(subsequently reset.)144 504 Q F1(EPOCHSECONDS)108 516 Q F0 .338 +(Each time this parameter is referenced, it e)144 528 R .337 (xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)144 -252 Q F3(time)4.041 E F0 4.041(\(3\)\). Assignments)B(to)4.041 E F2 -(EPOCHSECONDS)4.041 E F0 1.542(are ignored.)3.792 F(If)6.542 E F2 +540 Q F2(time)4.041 E F0 4.041(\(3\)\). Assignments)B(to)4.041 E F3 +(EPOCHSECONDS)4.041 E F0 1.542(are ignored.)3.792 F(If)6.542 E F3 (EPOCHSECONDS)4.042 E F0 1.542(is unset, it)3.792 F -(loses its special properties, e)144 264 Q -.15(ve)-.25 G 2.5(ni).15 G +(loses its special properties, e)144 552 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1 -(EUID)108 276 Q F0 1.104(Expands to the ef)144 276 R(fecti)-.25 E 1.403 +(EUID)108 564 Q F0 1.104(Expands to the ef)144 564 R(fecti)-.25 E 1.403 -.15(ve u)-.25 H 1.103(ser ID of the current user).15 F 3.603(,i)-.4 G 1.103(nitialized at shell startup.)-3.603 F 1.103(This v)6.103 F 1.103 -(ariable is)-.25 F(readonly)144 288 Q(.)-.65 E F1(FUNCN)108 300 Q(AME) --.2 E F0 .478(An array v)144 312 R .479 +(ariable is)-.25 F(readonly)144 576 Q(.)-.65 E F1(FUNCN)108 588 Q(AME) +-.2 E F0 .478(An array v)144 600 R .479 (ariable containing the names of all shell functions currently in the e) -.25 F -.15(xe)-.15 G .479(cution call stack.).15 F .277 -(The element with inde)144 324 R 2.777(x0i)-.15 G 2.777(st)-2.777 G .276 +(The element with inde)144 612 R 2.777(x0i)-.15 G 2.777(st)-2.777 G .276 (he name of an)-2.777 F 2.776(yc)-.15 G(urrently-e)-2.776 E -.15(xe)-.15 G .276(cuting shell function.).15 F .276(The bottom-most)5.276 F .384 -(element \(the one with the highest inde)144 336 R .384(x\) is)-.15 F/F4 +(element \(the one with the highest inde)144 624 R .384(x\) is)-.15 F/F4 10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .385 (ariable e)-.25 F .385(xists only when a shell func-)-.15 F .076 -(tion is e)144 348 R -.15(xe)-.15 G 2.576(cuting. Assignments).15 F(to) -2.576 E F2(FUNCN)2.576 E(AME)-.18 E F0(ha)2.326 E .376 -.15(ve n)-.2 H -2.576(oe).15 G -.25(ff)-2.576 G 2.576(ect. If).25 F F2(FUNCN)2.575 E +(tion is e)144 636 R -.15(xe)-.15 G 2.576(cuting. Assignments).15 F(to) +2.576 E F3(FUNCN)2.576 E(AME)-.18 E F0(ha)2.326 E .376 -.15(ve n)-.2 H +2.576(oe).15 G -.25(ff)-2.576 G 2.576(ect. If).25 F F3(FUNCN)2.575 E (AME)-.18 E F0 .075(is unset, it loses its)2.325 F -(special properties, e)144 360 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 +(special properties, e)144 648 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E .11(This v)144 -378 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO) +666 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO) .3 E F0(and)2.611 E F1 -.3(BA)2.611 G(SH_SOURCE).3 E F0 5.111(.E)C .111 -(ach element of)-5.111 F F1(FUNC-)2.611 E -.2(NA)144 390 S(ME).2 E F0 +(ach element of)-5.111 F F1(FUNC-)2.611 E -.2(NA)144 678 S(ME).2 E F0 1.404(has corresponding elements in)3.904 F F1 -.3(BA)3.904 G(SH_LINENO) .3 E F0(and)3.904 E F1 -.3(BA)3.904 G(SH_SOURCE).3 E F0 1.404 -(to describe the)3.904 F .012(call stack.)144 402 R -.15(Fo)5.012 G -2.512(ri).15 G(nstance,)-2.512 E F1(${FUNCN)2.512 E(AME[)-.2 E F3($i)A +(to describe the)3.904 F .012(call stack.)144 690 R -.15(Fo)5.012 G +2.512(ri).15 G(nstance,)-2.512 E F1(${FUNCN)2.512 E(AME[)-.2 E F2($i)A F1(]})A F0 -.1(wa)2.512 G 2.512(sc).1 G .012(alled from the \214le) --2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F3($i+1)A F1(]})A F0 1.184 -(at line number)144 414 R F1(${B)3.684 E(ASH_LINENO[)-.3 E F3($i)A F1 +-2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F2($i+1)A F1(]})A F0 1.184 +(at line number)144 702 R F1(${B)3.684 E(ASH_LINENO[)-.3 E F2($i)A F1 (]})A F0 6.184(.T)C(he)-6.184 E F1(caller)3.683 E F0 -.2(bu)3.683 G 1.183(iltin displays the current call stack using).2 F -(this information.)144 426 Q F1(GR)108 438 Q(OUPS)-.3 E F0 1.228 -(An array v)144 450 R 1.228(ariable containing the list of groups of wh\ -ich the current user is a member)-.25 F 6.229(.A)-.55 G(ssign-)-6.229 E -.572(ments to)144 462 R F2(GR)3.072 E(OUPS)-.27 E F0(ha)2.822 E .872 --.15(ve n)-.2 H 3.072(oe).15 G -.25(ff)-3.072 G 3.072(ect. If).25 F F2 -(GR)3.072 E(OUPS)-.27 E F0 .572 -(is unset, it loses its special properties, e)2.822 F -.15(ve)-.25 G -3.072(ni).15 G 3.071(fi)-3.072 G 3.071(ti)-3.071 G(s)-3.071 E -(subsequently reset.)144 474 Q F1(HISTCMD)108 486 Q F0 2.81 -(The history number)144 498 R 5.31(,o)-.4 G 5.31(ri)-5.31 G(nde)-5.31 E +(this information.)144 714 Q(GNU Bash 5.2)72 768 Q(2022 September 19) +135.955 E(13)185.115 E 0 Cg EP +%%Page: 14 14 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(GR)108 84 Q(OUPS)-.3 E F0 1.228(An array v)144 96 R 1.228(ariable co\ +ntaining the list of groups of which the current user is a member)-.25 F +6.229(.A)-.55 G(ssign-)-6.229 E .572(ments to)144 108 R/F2 9 +/Times-Bold@0 SF(GR)3.072 E(OUPS)-.27 E F0(ha)2.822 E .872 -.15(ve n)-.2 +H 3.072(oe).15 G -.25(ff)-3.072 G 3.072(ect. If).25 F F2(GR)3.072 E +(OUPS)-.27 E F0 .572(is unset, it loses its special properties, e)2.822 +F -.15(ve)-.25 G 3.072(ni).15 G 3.071(fi)-3.072 G 3.071(ti)-3.071 G(s) +-3.071 E(subsequently reset.)144 120 Q F1(HISTCMD)108 132 Q F0 2.81 +(The history number)144 144 R 5.31(,o)-.4 G 5.31(ri)-5.31 G(nde)-5.31 E 5.311(xi)-.15 G 5.311(nt)-5.311 G 2.811 (he history list, of the current command.)-5.311 F 2.811(Assignments to) -7.811 F F2(HISTCMD)144 510 Q F0 1.135(are ignored.)3.385 F(If)6.135 E F2 +7.811 F F2(HISTCMD)144 156 Q F0 1.135(are ignored.)3.385 F(If)6.135 E F2 (HISTCMD)3.635 E F0 1.135(is unset, it loses its special properties, e) 3.385 F -.15(ve)-.25 G 3.634(ni).15 G 3.634(fi)-3.634 G 3.634(ti)-3.634 -G 3.634(ss)-3.634 G(ubse-)-3.634 E(quently reset.)144 522 Q F1(HOSTN)108 -534 Q(AME)-.2 E F0(Automatically set to the name of the current host.) -144 546 Q F1(HOSTTYPE)108 558 Q F0 .222(Automatically set to a string t\ -hat uniquely describes the type of machine on which)144 570 R F1(bash) +G 3.634(ss)-3.634 G(ubse-)-3.634 E(quently reset.)144 168 Q F1(HOSTN)108 +180 Q(AME)-.2 E F0(Automatically set to the name of the current host.) +144 192 Q F1(HOSTTYPE)108 204 Q F0 .222(Automatically set to a string t\ +hat uniquely describes the type of machine on which)144 216 R F1(bash) 2.723 E F0 .223(is e)2.723 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 -582 R(def)2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 594 Q F0 +228 R(def)2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 240 Q F0 1.408(Each time this parameter is referenced, the shell substitutes a d\ -ecimal number representing the)144 606 R .078(current sequential line n\ -umber \(starting with 1\) within a script or function.)144 618 R .079 -(When not in a script or)5.078 F .307(function, the v)144 630 R .307 +ecimal number representing the)144 252 R .078(current sequential line n\ +umber \(starting with 1\) within a script or function.)144 264 R .079 +(When not in a script or)5.078 F .307(function, the v)144 276 R .307 (alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.306 E F2(LINENO)2.806 E F0 .306(is unset, it loses its)2.556 F -(special properties, e)144 642 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 -G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA)108 654 Q +(special properties, e)144 288 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 +G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA)108 300 Q (CHTYPE)-.55 E F0 .898(Automatically set to a string that fully describ\ -es the system type on which)144 666 R F1(bash)3.398 E F0 .899(is e)3.398 -F -.15(xe)-.15 G .899(cuting, in).15 F(the standard GNU)144 678 Q F3 -(cpu-company-system)2.5 E F0 2.5(format. The)2.5 F(def)2.5 E -(ault is system-dependent.)-.1 E F1(MAPFILE)108 690 Q F0 .294 -(An array v)144 702 R .294(ariable \(see)-.25 F F1(Arrays)2.794 E F0 +es the system type on which)144 312 R F1(bash)3.398 E F0 .899(is e)3.398 +F -.15(xe)-.15 G .899(cuting, in).15 F(the standard GNU)144 324 Q/F3 10 +/Times-Italic@0 SF(cpu-company-system)2.5 E F0 2.5(format. The)2.5 F +(def)2.5 E(ault is system-dependent.)-.1 E F1(MAPFILE)108 336 Q F0 .294 +(An array v)144 348 R .294(ariable \(see)-.25 F F1(Arrays)2.794 E F0 (belo)2.794 E .294(w\) created to hold the te)-.25 F .293 (xt read by the)-.15 F F1(map\214le)2.793 E F0 -.2(bu)2.793 G .293 -(iltin when no).2 F -.25(va)144 714 S(riable name is supplied.).25 E -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(13)190.395 E 0 Cg EP -%%Page: 14 14 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(OLDPWD)108 84 Q F0(The pre)144 96 Q(vious w)-.25 E +(iltin when no).2 F -.25(va)144 360 S(riable name is supplied.).25 E F1 +(OLDPWD)108 372 Q F0(The pre)144 384 Q(vious w)-.25 E (orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1 -(OPT)108 108 Q(ARG)-.9 E F0 1.626(The v)144 120 R 1.627 +(OPT)108 396 Q(ARG)-.9 E F0 1.626(The v)144 408 R 1.627 (alue of the last option ar)-.25 F 1.627(gument processed by the)-.18 F -F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F/F2 9 -/Times-Bold@0 SF(SHELL)4.127 E -.09(BU)144 132 S(IL).09 E(TIN COMMANDS) --.828 E F0(belo)2.25 E(w\).)-.25 E F1(OPTIND)108 144 Q F0 1.652 -(The inde)144 156 R 4.152(xo)-.15 G 4.152(ft)-4.152 G 1.652(he ne)-4.152 -F 1.652(xt ar)-.15 F 1.652(gument to be processed by the)-.18 F F1 -(getopts)4.151 E F0 -.2(bu)4.151 G 1.651(iltin command \(see).2 F F2 -(SHELL)4.151 E -.09(BU)144 168 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) -2.25 E(w\).)-.25 E F1(OSTYPE)108 180 Q F0 .329(Automatically set to a s\ -tring that describes the operating system on which)144 192 R F1(bash) -2.83 E F0 .33(is e)2.83 F -.15(xe)-.15 G 2.83(cuting. The).15 F(def)144 -204 Q(ault is system-dependent.)-.1 E F1(PIPEST)108 216 Q -.95(AT)-.9 G -(US).95 E F0 .61(An array v)144 228 R .61(ariable \(see)-.25 F F1 -(Arrays)3.11 E F0(belo)3.11 E .61(w\) containing a list of e)-.25 F .61 -(xit status v)-.15 F .61(alues from the processes in)-.25 F -(the most-recently-e)144 240 Q -.15(xe)-.15 G(cuted fore).15 E +F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F F2 +(SHELL)4.127 E -.09(BU)144 420 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) +2.25 E(w\).)-.25 E F1(OPTIND)108 432 Q F0 1.652(The inde)144 444 R 4.152 +(xo)-.15 G 4.152(ft)-4.152 G 1.652(he ne)-4.152 F 1.652(xt ar)-.15 F +1.652(gument to be processed by the)-.18 F F1(getopts)4.151 E F0 -.2(bu) +4.151 G 1.651(iltin command \(see).2 F F2(SHELL)4.151 E -.09(BU)144 456 +S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OSTYPE)108 +468 Q F0 .329(Automatically set to a string that describes the operatin\ +g system on which)144 480 R F1(bash)2.83 E F0 .33(is e)2.83 F -.15(xe) +-.15 G 2.83(cuting. The).15 F(def)144 492 Q(ault is system-dependent.) +-.1 E F1(PIPEST)108 504 Q -.95(AT)-.9 G(US).95 E F0 .61(An array v)144 +516 R .61(ariable \(see)-.25 F F1(Arrays)3.11 E F0(belo)3.11 E .61 +(w\) containing a list of e)-.25 F .61(xit status v)-.15 F .61 +(alues from the processes in)-.25 F(the most-recently-e)144 528 Q -.15 +(xe)-.15 G(cuted fore).15 E (ground pipeline \(which may contain only a single command\).)-.15 E F1 -(PPID)108 252 Q F0(The process ID of the shell')144 252 Q 2.5(sp)-.55 G +(PPID)108 540 Q F0(The process ID of the shell')144 540 Q 2.5(sp)-.55 G 2.5(arent. This)-2.5 F -.25(va)2.5 G(riable is readonly).25 E(.)-.65 E -F1(PWD)108 264 Q F0(The current w)144 264 Q +F1(PWD)108 552 Q F0(The current w)144 552 Q (orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1 -(RANDOM)108 276 Q F0 .417(Each time this parameter is referenced, it e) -144 288 R .417(xpands to a random inte)-.15 F .417 -(ger between 0 and 32767.)-.15 F(As-)5.417 E .551(signing a v)144 300 R +(RANDOM)108 564 Q F0 .417(Each time this parameter is referenced, it e) +144 576 R .417(xpands to a random inte)-.15 F .417 +(ger between 0 and 32767.)-.15 F(As-)5.417 E .551(signing a v)144 588 R .551(alue to)-.25 F F2(RANDOM)3.051 E F0 .551 (initializes \(seeds\) the sequence of random numbers.)2.801 F(If)5.55 E F2(RANDOM)3.05 E F0(is)2.8 E(unset, it loses its special properties, e) -144 312 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5 -(ss)-2.5 G(ubsequently reset.)-2.5 E F1(READLINE_LINE)108 324 Q F0 1.546 -(The contents of the)144 336 R F1 -.18(re)4.047 G(adline).18 E F0 1.547 -(line b)4.047 F(uf)-.2 E(fer)-.25 E 4.047(,f)-.4 G 1.547(or use with) --4.047 F/F3 10/Courier@0 SF 1.547(bind -x)4.047 F F0(\(see)4.047 E F2 -1.547(SHELL B)4.047 F(UIL)-.09 E 1.547(TIN COM-)-.828 F(MANDS)144 348 Q -F0(belo)2.25 E(w\).)-.25 E F1(READLINE_MARK)108 360 Q F0 .107 -(The position of the mark \(sa)144 372 R -.15(ve)-.2 G 2.607(di).15 G -.107(nsertion point\) in the)-2.607 F F1 -.18(re)2.606 G(adline).18 E F0 -.106(line b)2.606 F(uf)-.2 E(fer)-.25 E 2.606(,f)-.4 G .106(or use with) --2.606 F F3 .106(bind -x)2.606 F F0(\(see)144 384 Q F2 1.016(SHELL B) -3.516 F(UIL)-.09 E 1.016(TIN COMMANDS)-.828 F F0(belo)3.266 E 3.516 -(w\). The)-.25 F 1.017(characters between the insertion point and the) -3.516 F(mark are often called the)144 396 Q/F4 10/Times-Italic@0 SF -.37 -(re)2.5 G(gion)-.03 E F0(.)A F1(READLINE_POINT)108 408 Q F0 .314 -(The position of the insertion point in the)144 420 R F1 -.18(re)2.813 G +144 600 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5 +(ss)-2.5 G(ubsequently reset.)-2.5 E F1(READLINE_ARGUMENT)108 612 Q F0 +(An)144 624 Q 4.694(yn)-.15 G 2.194(umeric ar)-4.694 F 2.194(gument gi) +-.18 F -.15(ve)-.25 G 4.694(nt).15 G 4.694(oar)-4.694 G 2.194 +(eadline command that w)-4.694 F 2.194(as de\214ned using)-.1 F/F4 10 +/Courier@0 SF 2.195(bind -x)4.695 F F0(\(see)4.695 E F2(SHELL B)144 636 +Q(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\) when it w)-.25 E +(as in)-.1 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1(READLINE_LINE)108 648 Q +F0 1.547(The contents of the)144 660 R F1 -.18(re)4.047 G(adline).18 E +F0 1.547(line b)4.047 F(uf)-.2 E(fer)-.25 E 4.047(,f)-.4 G 1.547 +(or use with)-4.047 F F4 1.547(bind -x)4.047 F F0(\(see)4.047 E F2 1.546 +(SHELL B)4.047 F(UIL)-.09 E 1.546(TIN COM-)-.828 F(MANDS)144 672 Q F0 +(belo)2.25 E(w\).)-.25 E F1(READLINE_MARK)108 684 Q F0 .106 +(The position of the mark \(sa)144 696 R -.15(ve)-.2 G 2.606(di).15 G +.106(nsertion point\) in the)-2.606 F F1 -.18(re)2.607 G(adline).18 E F0 +.107(line b)2.607 F(uf)-.2 E(fer)-.25 E 2.607(,f)-.4 G .107(or use with) +-2.607 F F4 .107(bind -x)2.607 F F0(\(see)144 708 Q F2 1.017(SHELL B) +3.517 F(UIL)-.09 E 1.017(TIN COMMANDS)-.828 F F0(belo)3.267 E 3.516 +(w\). The)-.25 F 1.016(characters between the insertion point and the) +3.516 F(mark are often called the)144 720 Q F3 -.37(re)2.5 G(gion)-.03 E +F0(.)A(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(14)185.115 E 0 +Cg EP +%%Page: 15 15 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(READLINE_POINT)108 84 Q F0 .313 +(The position of the insertion point in the)144 96 R F1 -.18(re)2.813 G (adline).18 E F0 .313(line b)2.813 F(uf)-.2 E(fer)-.25 E 2.813(,f)-.4 G -.313(or use with)-2.813 F F3 .313(bind -x)2.813 F F0(\(see)2.813 E F2 -(SHELL)2.813 E -.09(BU)144 432 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) -2.25 E(w\).)-.25 E F1(REPL)108 444 Q(Y)-.92 E F0 -(Set to the line of input read by the)144 456 Q F1 -.18(re)2.5 G(ad).18 -E F0 -.2(bu)2.5 G(iltin command when no ar).2 E(guments are supplied.) --.18 E F1(SECONDS)108 468 Q F0 .795(Each time this parameter is referen\ -ced, the number of seconds since shell in)144 480 R -.2(vo)-.4 G .795 -(cation is returned.).2 F .713(If a v)144 492 R .712 -(alue is assigned to)-.25 F F2(SECONDS)3.212 E/F5 9/Times-Roman@0 SF(,)A -F0 .712(the v)2.962 F .712 -(alue returned upon subsequent references is the number)-.25 F .627 -(of seconds since the assignment plus the v)144 504 R .627 -(alue assigned.)-.25 F .628(The number of seconds at shell in)5.627 F --.2(vo)-.4 G(ca-).2 E .458(tion and the current time is al)144 516 R -.1 -(wa)-.1 G .458(ys determined by querying the system clock.).1 F(If)5.457 -E F2(SECONDS)2.957 E F0 .457(is un-)2.707 F -(set, it loses its special properties, e)144 528 Q -.15(ve)-.25 G 2.5 +.313(or use with)-2.813 F/F2 10/Courier@0 SF .314(bind -x)2.814 F F0 +(\(see)2.814 E/F3 9/Times-Bold@0 SF(SHELL)2.814 E -.09(BU)144 108 S(IL) +.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(REPL)108 120 Q +(Y)-.92 E F0(Set to the line of input read by the)144 132 Q F1 -.18(re) +2.5 G(ad).18 E F0 -.2(bu)2.5 G(iltin command when no ar).2 E +(guments are supplied.)-.18 E F1(SECONDS)108 144 Q F0 .178 +(Each time this parameter is referenced, it e)144 156 R .177 +(xpands to the number of seconds since shell in)-.15 F -.2(vo)-.4 G +(cation.).2 E .712(If a v)144 168 R .712(alue is assigned to)-.25 F F3 +(SECONDS)3.212 E/F4 9/Times-Roman@0 SF(,)A F0 .712(the v)2.962 F .712 +(alue returned upon subsequent references is the number)-.25 F .628 +(of seconds since the assignment plus the v)144 180 R .627 +(alue assigned.)-.25 F .627(The number of seconds at shell in)5.627 F +-.2(vo)-.4 G(ca-).2 E .111(tion and the current time are al)144 192 R +-.1(wa)-.1 G .111(ys determined by querying the system clock.).1 F(If) +5.112 E F3(SECONDS)2.612 E F0 .112(is un-)2.362 F +(set, it loses its special properties, e)144 204 Q -.15(ve)-.25 G 2.5 (ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) --2.5 E F1(SHELLOPTS)108 540 Q F0 3.262(Ac)144 552 S .763 -(olon-separated list of enabled shell options.)-3.262 F .763(Each w) +-2.5 E F1(SHELLOPTS)108 216 Q F0 3.263(Ac)144 228 S .763 +(olon-separated list of enabled shell options.)-3.263 F .763(Each w) 5.763 F .763(ord in the list is a v)-.1 F .763(alid ar)-.25 F .763 -(gument for the)-.18 F F1144 564 Q F0 1.174(option to the)3.674 F -F1(set)3.674 E F0 -.2(bu)3.674 G 1.174(iltin command \(see).2 F F2 1.173 -(SHELL B)3.673 F(UIL)-.09 E 1.173(TIN COMMANDS)-.828 F F0(belo)3.423 E -3.673(w\). The)-.25 F(options)3.673 E .019(appearing in)144 576 R F2 -(SHELLOPTS)2.519 E F0 .019(are those reported as)2.269 F F4(on)2.749 E -F0(by)2.759 E F1 .019(set \255o)2.519 F F0 5.019(.I)C 2.519(ft)-5.019 G -.019(his v)-2.519 F .02(ariable is in the en)-.25 F(vironment)-.4 E -(when)144 588 Q F1(bash)3.142 E F0 .642(starts up, each shell option in\ - the list will be enabled before reading an)3.142 F 3.141(ys)-.15 G .641 -(tartup \214les.)-3.141 F(This v)144 600 Q(ariable is read-only)-.25 E -(.)-.65 E F1(SHL)108 612 Q(VL)-.92 E F0 -(Incremented by one each time an instance of)144 624 Q F1(bash)2.5 E F0 -(is started.)2.5 E F1(SRANDOM)108 636 Q F0 .76(This v)144 648 R .76 -(ariable e)-.25 F .761(xpands to a 32-bit pseudo-random number each tim\ -e it is referenced. The random)-.15 F .565 -(number generator is not linear on systems that support)144 660 R F3 -(/dev/urandom)3.064 E F0(or)3.064 E F4(ar)3.064 E(c4r)-.37 E(andom)-.15 -E F0 3.064(,s)C 3.064(oe)-3.064 G(ach)-3.064 E .788 +(gument for the)-.18 F F1144 240 Q F0 1.173(option to the)3.673 F +F1(set)3.673 E F0 -.2(bu)3.673 G 1.173(iltin command \(see).2 F F3 1.174 +(SHELL B)3.674 F(UIL)-.09 E 1.174(TIN COMMANDS)-.828 F F0(belo)3.424 E +3.674(w\). The)-.25 F(options)3.674 E .02(appearing in)144 252 R F3 +(SHELLOPTS)2.52 E F0 .019(are those reported as)2.27 F/F5 10 +/Times-Italic@0 SF(on)2.749 E F0(by)2.759 E F1 .019(set \255o)2.519 F F0 +5.019(.I)C 2.519(ft)-5.019 G .019(his v)-2.519 F .019 +(ariable is in the en)-.25 F(vironment)-.4 E(when)144 264 Q F1(bash) +3.141 E F0 .642(starts up, each shell option in the list will be enable\ +d before reading an)3.141 F 3.142(ys)-.15 G .642(tartup \214les.)-3.142 +F(This v)144 276 Q(ariable is read-only)-.25 E(.)-.65 E F1(SHL)108 288 Q +(VL)-.92 E F0(Incremented by one each time an instance of)144 300 Q F1 +(bash)2.5 E F0(is started.)2.5 E F1(SRANDOM)108 312 Q F0 .761(This v)144 +324 R .761(ariable e)-.25 F .761(xpands to a 32-bit pseudo-random numbe\ +r each time it is referenced. The random)-.15 F .564 +(number generator is not linear on systems that support)144 336 R F2 +(/dev/urandom)3.065 E F0(or)3.065 E F5(ar)3.065 E(c4r)-.37 E(andom)-.15 +E F0 3.065(,s)C 3.065(oe)-3.065 G(ach)-3.065 E .788 (returned number has no relationship to the numbers preceding it.)144 -672 R .788(The random number generator)5.788 F .088 -(cannot be seeded, so assignments to this v)144 684 R .087(ariable ha) --.25 F .387 -.15(ve n)-.2 H 2.587(oe).15 G -.25(ff)-2.587 G 2.587 -(ect. If).25 F F2(SRANDOM)2.587 E F0 .087(is unset, it loses its)2.337 F -(special properties, e)144 696 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 -G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(UID)108 708 Q -F0(Expands to the user ID of the current user)144 708 Q 2.5(,i)-.4 G +348 R .787(The random number generator)5.787 F .087 +(cannot be seeded, so assignments to this v)144 360 R .087(ariable ha) +-.25 F .387 -.15(ve n)-.2 H 2.587(oe).15 G -.25(ff)-2.587 G 2.588 +(ect. If).25 F F3(SRANDOM)2.588 E F0 .088(is unset, it loses its)2.338 F +(special properties, e)144 372 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 +G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(UID)108 384 Q +F0(Expands to the user ID of the current user)144 384 Q 2.5(,i)-.4 G (nitialized at shell startup.)-2.5 E(This v)5 E(ariable is readonly)-.25 -E(.)-.65 E .993(The follo)108 724.8 R .993(wing v)-.25 F .994 +E(.)-.65 E .994(The follo)108 400.8 R .994(wing v)-.25 F .994 (ariables are used by the shell.)-.25 F .994(In some cases,)5.994 F F1 -(bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .994 -(alue to a v)-.25 F(ariable;)-.25 E(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(14)190.395 E 0 Cg EP -%%Page: 15 15 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(these cases are noted belo)108 84 Q -.65(w.)-.25 G/F1 10/Times-Bold@0 -SF -.3(BA)108 100.8 S(SH_COMP).3 E -.95(AT)-.74 G F0 .503(The v)144 -112.8 R .502(alue is used to set the shell')-.25 F 3.002(sc)-.55 G .502 -(ompatibility le)-3.002 F -.15(ve)-.25 G 3.002(l. See).15 F/F2 9 -/Times-Bold@0 SF .502(SHELL COMP)3.002 F -.855(AT)-.666 G .502 -(IBILITY MODE).855 F F0(be-)2.752 E(lo)144 124.8 Q 2.662(wf)-.25 G .162 -(or a description of the v)-2.662 F .162(arious compatibility le)-.25 F --.15(ve)-.25 G .162(ls and their ef).15 F 2.663(fects. The)-.25 F -.25 -(va)2.663 G .163(lue may be a dec-).25 F .33 -(imal number \(e.g., 4.2\) or an inte)144 136.8 R .33 +(bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .993 +(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 412.8 +Q -.65(w.)-.25 G F1 -.3(BA)108 429.6 S(SH_COMP).3 E -.95(AT)-.74 G F0 +.502(The v)144 441.6 R .502(alue is used to set the shell')-.25 F 3.002 +(sc)-.55 G .502(ompatibility le)-3.002 F -.15(ve)-.25 G 3.002(l. See).15 +F F3 .503(SHELL COMP)3.002 F -.855(AT)-.666 G .503(IBILITY MODE).855 F +F0(be-)2.753 E(lo)144 453.6 Q 2.663(wf)-.25 G .163 +(or a description of the v)-2.663 F .162(arious compatibility le)-.25 F +-.15(ve)-.25 G .162(ls and their ef).15 F 2.662(fects. The)-.25 F -.25 +(va)2.662 G .162(lue may be a dec-).25 F .33 +(imal number \(e.g., 4.2\) or an inte)144 465.6 R .33 (ger \(e.g., 42\) corresponding to the desired compatibility le)-.15 F --.15(ve)-.25 G 2.83(l. If).15 F F1 -.3(BA)144 148.8 S(SH_COMP).3 E -.95 -(AT)-.74 G F0 .86 -(is unset or set to the empty string, the compatibility le)4.31 F -.15 -(ve)-.25 G 3.361(li).15 G 3.361(ss)-3.361 G .861(et to the def)-3.361 F -(ault)-.1 E .39(for the current v)144 160.8 R 2.89(ersion. If)-.15 F F1 --.3(BA)2.89 G(SH_COMP).3 E -.95(AT)-.74 G F0 .39(is set to a v)3.84 F -.39(alue that is not one of the v)-.25 F .39(alid compati-)-.25 F .277 -(bility le)144 172.8 R -.15(ve)-.25 G .278 +-.15(ve)-.25 G 2.83(l. If).15 F F1 -.3(BA)144 477.6 S(SH_COMP).3 E -.95 +(AT)-.74 G F0 .861 +(is unset or set to the empty string, the compatibility le)4.311 F -.15 +(ve)-.25 G 3.36(li).15 G 3.36(ss)-3.36 G .86(et to the def)-3.36 F(ault) +-.1 E .39(for the current v)144 489.6 R 2.89(ersion. If)-.15 F F1 -.3 +(BA)2.89 G(SH_COMP).3 E -.95(AT)-.74 G F0 .39(is set to a v)3.84 F .39 +(alue that is not one of the v)-.25 F .39(alid compati-)-.25 F .278 +(bility le)144 501.6 R -.15(ve)-.25 G .278 (ls, the shell prints an error message and sets the compatibility le).15 -F -.15(ve)-.25 G 2.778(lt).15 G 2.778(ot)-2.778 G .278(he def)-2.778 F -.278(ault for the)-.1 F 1.401(current v)144 184.8 R 3.901(ersion. The) --.15 F -.25(va)3.901 G 1.401(lid v).25 F 1.401 +F -.15(ve)-.25 G 2.777(lt).15 G 2.777(ot)-2.777 G .277(he def)-2.777 F +.277(ault for the)-.1 F 1.4(current v)144 513.6 R 3.9(ersion. The)-.15 F +-.25(va)3.901 G 1.401(lid v).25 F 1.401 (alues correspond to the compatibility le)-.25 F -.15(ve)-.25 G 1.401 -(ls described belo).15 F 3.9(wu)-.25 G(nder)-3.9 E F2(BSHELL)144 196.8 Q -/F3 9/Times-Roman@0 SF(COMP)A -.999(AT)-.828 G(IBILITY).999 E F2(MODE)A -F3(.)A F0 -.15(Fo)4.997 G 2.997(re).15 G .497(xample, 4.2 and 42 are v) --3.147 F .497(alid v)-.25 F .498(alues that correspond to the)-.25 F F1 -.774(compat42 shopt)144 208.8 R F0 .774 -(option and set the compatibility le)3.274 F -.15(ve)-.25 G 3.274(lt).15 -G 3.274(o4)-3.274 G 3.274(2. The)-3.274 F .774(current v)3.274 F .773 -(ersion is also a v)-.15 F(alid)-.25 E -.25(va)144 220.8 S(lue.).25 E F1 --.3(BA)108 232.8 S(SH_ENV).3 E F0 .505(If this parameter is set when)144 -244.8 R F1(bash)3.005 E F0 .505(is e)3.005 F -.15(xe)-.15 G .506 -(cuting a shell script, its v).15 F .506 -(alue is interpreted as a \214lename)-.25 F .391 -(containing commands to initialize the shell, as in)144 256.8 R/F4 10 -/Times-Italic@0 SF(~/.bashr)2.39 E(c)-.37 E F0 5.39(.T).31 G .39(he v) --5.39 F .39(alue of)-.25 F F2 -.27(BA)2.89 G(SH_ENV).27 E F0 .39 -(is subjected)2.64 F .525(to parameter e)144 268.8 R .525 +(ls described belo).15 F 3.901(wu)-.25 G(nder)-3.901 E F3 .154 +(SHELL COMP)144 525.6 R -.855(AT)-.666 G .154(IBILITY MODE).855 F F4(.)A +F0 -.15(Fo)4.654 G 2.654(re).15 G .154(xample, 4.2 and 42 are v)-2.804 F +.153(alid v)-.25 F .153(alues that correspond to the)-.25 F F1 .773 +(compat42 shopt)144 537.6 R F0 .774(option and set the compatibility le) +3.273 F -.15(ve)-.25 G 3.274(lt).15 G 3.274(o4)-3.274 G 3.274(2. The) +-3.274 F .774(current v)3.274 F .774(ersion is also a v)-.15 F(alid)-.25 +E -.25(va)144 549.6 S(lue.).25 E F1 -.3(BA)108 561.6 S(SH_ENV).3 E F0 +.506(If this parameter is set when)144 573.6 R F1(bash)3.006 E F0 .506 +(is e)3.006 F -.15(xe)-.15 G .505(cuting a shell script, its v).15 F +.505(alue is interpreted as a \214lename)-.25 F .39 +(containing commands to initialize the shell, as in)144 585.6 R F5 +(~/.bashr)2.39 E(c)-.37 E F0 5.39(.T).31 G .39(he v)-5.39 F .391 +(alue of)-.25 F F3 -.27(BA)2.891 G(SH_ENV).27 E F0 .391(is subjected) +2.641 F .525(to parameter e)144 597.6 R .525 (xpansion, command substitution, and arithmetic e)-.15 F .525 -(xpansion before being interpreted)-.15 F(as a \214lename.)144 280.8 Q -F2 -.666(PA)5 G(TH)-.189 E F0 +(xpansion before being interpreted)-.15 F(as a \214lename.)144 609.6 Q +F3 -.666(PA)5 G(TH)-.189 E F0 (is not used to search for the resultant \214lename.)2.25 E F1 -.3(BA) -108 292.8 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 304.8 -R .481(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25 -F(,)-.4 E F1(bash)2.98 E F0 .48(will write the trace output gener)2.98 F -(-)-.2 E 3.114(ated when)144 316.8 R/F5 10/Courier@0 SF 3.114(set -x) -5.614 F F0 3.114(is enabled to that \214le descriptor)5.614 F 8.114(.T) --.55 G 3.114(he \214le descriptor is closed when)-8.114 F F2 -.27(BA)144 -328.8 S(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne) -2.388 F 2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F2 -.27(BA)2.638 -G(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the \ -empty string causes the trace output to be sent to the standard error) -144 340.8 R 7.531(.N)-.55 G 2.531(ote that setting)-7.531 F F2 -.27(BA) -144 352.8 S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error\ - \214le descriptor\) and then unsetting it will result in the)2.991 F -(standard error being closed.)144 364.8 Q F1(CDP)108 376.8 Q -.95(AT) --.74 G(H).95 E F0 1.247(The search path for the)144 388.8 R F1(cd)3.747 -E F0 3.747(command. This)3.747 F 1.248 -(is a colon-separated list of directories in which the)3.747 F 3.796 -(shell looks for destination directories speci\214ed by the)144 400.8 R -F1(cd)6.295 E F0 6.295(command. A)6.295 F 3.795(sample v)6.295 F 3.795 -(alue is)-.25 F F5(".:~:/usr")144 412.8 Q F0(.)A F1(CHILD_MAX)108 424.8 -Q F0 .997(Set the number of e)144 436.8 R .997(xited child status v)-.15 -F .997(alues for the shell to remember)-.25 F 5.997(.B)-.55 G .997 -(ash will not allo)-5.997 F 3.498(wt)-.25 G(his)-3.498 E -.25(va)144 -448.8 S 1.078(lue to be decreased belo).25 F 3.577(waP)-.25 G 1.077 -(OSIX-mandated minimum, and there is a maximum v)-3.577 F 1.077 -(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 460.8 Q +108 621.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .48(If set to an inte)144 633.6 +R .48(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25 F +(,)-.4 E F1(bash)2.981 E F0 .481(will write the trace output gener)2.981 +F(-)-.2 E 3.114(ated when)144 645.6 R F2 3.114(set -x)5.614 F F0 3.114 +(is enabled to that \214le descriptor)5.614 F 8.114(.T)-.55 G 3.114 +(he \214le descriptor is closed when)-8.114 F F3 -.27(BA)144 657.6 S +(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne)2.388 F +2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F3 -.27(BA)2.638 G +(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the e\ +mpty string causes the trace output to be sent to the standard error)144 +669.6 R 7.53(.N)-.55 G 2.53(ote that setting)-7.53 F F3 -.27(BA)144 +681.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error \ +\214le descriptor\) and then unsetting it will result in the)2.99 F +(standard error being closed.)144 693.6 Q F1(CDP)108 705.6 Q -.95(AT) +-.74 G(H).95 E F0 1.248(The search path for the)144 717.6 R F1(cd)3.748 +E F0 3.748(command. This)3.748 F 1.247 +(is a colon-separated list of directories in which the)3.748 F 3.795 +(shell looks for destination directories speci\214ed by the)144 729.6 R +F1(cd)6.295 E F0 6.296(command. A)6.296 F 3.796(sample v)6.296 F 3.796 +(alue is)-.25 F(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(15) +185.115 E 0 Cg EP +%%Page: 16 16 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Courier@0 SF +(".:~:/usr")144 84 Q F0(.)A/F2 10/Times-Bold@0 SF(CHILD_MAX)108 96 Q F0 +.997(Set the number of e)144 108 R .997(xited child status v)-.15 F .997 +(alues for the shell to remember)-.25 F 5.997(.B)-.55 G .997 +(ash will not allo)-5.997 F 3.497(wt)-.25 G(his)-3.497 E -.25(va)144 120 +S 1.077(lue to be decreased belo).25 F 3.577(waP)-.25 G 1.077 +(OSIX-mandated minimum, and there is a maximum v)-3.577 F 1.078 +(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 132 Q 2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.)-.25 E -F1(COLUMNS)108 472.8 Q F0 .828(Used by the)144 484.8 R F1(select)3.328 E -F0 .829(compound command to determine the terminal width when printing \ -selection)3.328 F 3.466(lists. Automatically)144 496.8 R .966 -(set if the)3.466 F F1(checkwinsize)3.466 E F0 .966 +F2(COLUMNS)108 144 Q F0 .829(Used by the)144 156 R F2(select)3.329 E F0 +.828(compound command to determine the terminal width when printing sel\ +ection)3.329 F 3.466(lists. Automatically)144 168 R .966(set if the) +3.466 F F2(checkwinsize)3.466 E F0 .966 (option is enabled or in an interacti)3.466 F 1.266 -.15(ve s)-.25 H -.966(hell upon re-).15 F(ceipt of a)144 508.8 Q F2(SIGWINCH)2.5 E F3(.)A -F1(COMPREPL)108 520.8 Q(Y)-.92 E F0 .847(An array v)144 532.8 R .848 -(ariable from which)-.25 F F1(bash)3.348 E F0 .848 +.966(hell upon re-).15 F(ceipt of a)144 180 Q/F3 9/Times-Bold@0 SF +(SIGWINCH)2.5 E/F4 9/Times-Roman@0 SF(.)A F2(COMPREPL)108 192 Q(Y)-.92 E +F0 .848(An array v)144 204 R .848(ariable from which)-.25 F F2(bash) +3.348 E F0 .848 (reads the possible completions generated by a shell function)3.348 F -(in)144 544.8 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt)-2.785 G -.285(he programmable completion f)-2.785 F .285(acility \(see)-.1 F F1 +(in)144 216 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt)-2.785 G +.285(he programmable completion f)-2.785 F .285(acility \(see)-.1 F F2 (Pr)2.785 E .285(ogrammable Completion)-.18 F F0(belo)2.785 E 2.785 (w\). Each)-.25 F(array element contains one possible completion.)144 -556.8 Q F1(EMA)108 568.8 Q(CS)-.55 E F0(If)144 580.8 Q F1(bash)2.535 E -F0 .035(\214nds this v)2.535 F .035(ariable in the en)-.25 F .036 -(vironment when the shell starts with v)-.4 F(alue)-.25 E F5(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 592.8 Q(uf)-.2 E -(fer and disables line editing.)-.25 E F1(ENV)108 604.8 Q F0 .671 -(Expanded and e)144 604.8 R -.15(xe)-.15 G .671(cuted similarly to).15 F -F2 -.27(BA)3.17 G(SH_ENV).27 E F0(\(see)2.92 E F1(INV)3.17 E(OCA)-.45 E -(TION)-.95 E F0(abo)3.17 E -.15(ve)-.15 G 3.17(\)w).15 G .67 -(hen an interacti)-3.17 F -.15(ve)-.25 G(shell is in)144 616.8 Q -.2(vo) --.4 G -.1(ke).2 G 2.5(di).1 G(n)-2.5 E F4(posix mode)2.5 E F0(.)A F1 -(EXECIGNORE)108 628.8 Q F0 2.716(Ac)144 640.8 S .216 -(olon-separated list of shell patterns \(see)-2.716 F F1 -.1(Pa)2.717 G -(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C .217 -(e\214ning the list of \214lenames to be)-2.717 F .117 -(ignored by command search using)144 652.8 R F1 -.74(PA)2.617 G(TH)-.21 -E F0 5.117(.F)C .116 -(iles whose full pathnames match one of these patterns)-5.117 F 1.432 -(are not considered e)144 664.8 R -.15(xe)-.15 G 1.432 +228 Q F2(EMA)108 240 Q(CS)-.55 E F0(If)144 252 Q F2(bash)2.536 E F0 .036 +(\214nds this v)2.536 F .036(ariable in the en)-.25 F .036 +(vironment when the shell starts with v)-.4 F(alue)-.25 E F1(t)2.535 E +F0 2.535(,i)C 2.535(ta)-2.535 G .035(ssumes that the)-2.535 F +(shell is running in an Emacs shell b)144 264 Q(uf)-.2 E +(fer and disables line editing.)-.25 E F2(ENV)108 276 Q F0 .67 +(Expanded and e)144 276 R -.15(xe)-.15 G .67(cuted similarly to).15 F F3 +-.27(BA)3.17 G(SH_ENV).27 E F0(\(see)2.92 E F2(INV)3.17 E(OCA)-.45 E +(TION)-.95 E F0(abo)3.171 E -.15(ve)-.15 G 3.171(\)w).15 G .671 +(hen an interacti)-3.171 F -.15(ve)-.25 G(shell is in)144 288 Q -.2(vo) +-.4 G -.1(ke).2 G 2.5(di).1 G(n)-2.5 E/F5 10/Times-Italic@0 SF +(posix mode)2.5 E F0(.)A F2(EXECIGNORE)108 300 Q F0 2.717(Ac)144 312 S +.217(olon-separated list of shell patterns \(see)-2.717 F F2 -.1(Pa) +2.717 G(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C .216 +(e\214ning the list of \214lenames to be)-2.717 F .116 +(ignored by command search using)144 324 R F2 -.74(PA)2.616 G(TH)-.21 E +F0 5.116(.F)C .117 +(iles whose full pathnames match one of these patterns)-5.116 F 1.433 +(are not considered e)144 336 R -.15(xe)-.15 G 1.432 (cutable \214les for the purposes of completion and command e).15 F -.15 -(xe)-.15 G 1.433(cution via).15 F F1 -.74(PA)144 676.8 S(TH)-.21 E F0 -2.909(lookup. This)2.909 F .408(does not af)2.908 F .408(fect the beha) --.25 F .408(vior of the)-.2 F F1([)2.908 E F0(,)A F1(test)2.908 E F0 -2.908(,a)C(nd)-2.908 E F1([[)2.908 E F0 2.908(commands. Full)2.908 F -(pathnames)2.908 E .364(in the command hash table are not subject to)144 -688.8 R F1(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364 -(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 700.8 -R 1.67 -.15(ve t)-.2 H 1.37(he e).15 F -.15(xe)-.15 G 1.37 +(xe)-.15 G 1.432(cution via).15 F F2 -.74(PA)144 348 S(TH)-.21 E F0 +2.908(lookup. This)2.908 F .408(does not af)2.908 F .408(fect the beha) +-.25 F .408(vior of the)-.2 F F2([)2.908 E F0(,)A F2(test)2.908 E F0 +2.908(,a)C(nd)-2.908 E F2([[)2.908 E F0 2.909(commands. Full)2.908 F +(pathnames)2.909 E .364(in the command hash table are not subject to)144 +360 R F2(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364 +(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 372 R +1.67 -.15(ve t)-.2 H 1.37(he e).15 F -.15(xe)-.15 G 1.37 (cutable bit set, b).15 F 1.37(ut are not e)-.2 F -.15(xe)-.15 G 1.37 (cutable \214les.).15 F 1.37(The pattern matching)6.37 F -(honors the setting of the)144 712.8 Q F1(extglob)2.5 E F0 -(shell option.)2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(15) -190.395 E 0 Cg EP -%%Page: 16 16 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(FCEDIT)108 84 Q F0(The def)144 96 Q(ault editor for the)-.1 E F1(fc) -2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E F1(FIGNORE)108 108 Q F0 2.598 -(Ac)144 120 S .098(olon-separated list of suf)-2.598 F<8c78>-.25 E .098 -(es to ignore when performing \214lename completion \(see)-.15 F/F2 9 -/Times-Bold@0 SF(READLINE)2.599 E F0(belo)144 132 Q 2.705(w\). A)-.25 F -.205(\214lename whose suf)2.705 F .205 -(\214x matches one of the entries in)-.25 F F2(FIGNORE)2.705 E F0 .205 -(is e)2.455 F .204(xcluded from the list)-.15 F(of matched \214lenames.) -144 144 Q 2.5(As)5 G(ample v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF -(".o:~")2.5 E F0(.)A F1(FUNCNEST)108 156 Q F0 .23(If set to a numeric v) -144 168 R .231 +(honors the setting of the)144 384 Q F2(extglob)2.5 E F0(shell option.) +2.5 E F2(FCEDIT)108 396 Q F0(The def)144 408 Q(ault editor for the)-.1 E +F2(fc)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E F2(FIGNORE)108 420 Q F0 +2.599(Ac)144 432 S .098(olon-separated list of suf)-2.599 F<8c78>-.25 E +.098(es to ignore when performing \214lename completion \(see)-.15 F F3 +(READLINE)2.598 E F0(belo)144 444 Q 2.704(w\). A)-.25 F .204 +(\214lename whose suf)2.704 F .205(\214x matches one of the entries in) +-.25 F F3(FIGNORE)2.705 E F0 .205(is e)2.455 F .205 +(xcluded from the list)-.15 F(of matched \214lenames.)144 456 Q 2.5(As)5 +G(ample v)-2.5 E(alue is)-.25 E F1(".o:~")2.5 E F0(.)A F2(FUNCNEST)108 +468 Q F0 .231(If set to a numeric v)144 480 R .231 (alue greater than 0, de\214nes a maximum function nesting le)-.25 F --.15(ve)-.25 G 2.731(l. Function).15 F(in)2.731 E -.2(vo)-.4 G(-).2 E -(cations that e)144 180 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G -2.5(lw).15 G(ill cause the current command to abort.)-2.5 E F1 -(GLOBIGNORE)108 192 Q F0 2.924(Ac)144 204 S .423(olon-separated list of\ +-.15(ve)-.25 G 2.73(l. Function).15 F(in)2.73 E -.2(vo)-.4 G(-).2 E +(cations that e)144 492 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G +2.5(lw).15 G(ill cause the current command to abort.)-2.5 E F2 +(GLOBIGNORE)108 504 Q F0 2.923(Ac)144 516 S .423(olon-separated list of\ patterns de\214ning the set of \214le names to be ignored by pathname \ -e)-2.924 F(xpan-)-.15 E 2.947(sion. If)144 216 R 2.947<618c>2.947 G .447 -(le name matched by a pathname e)-2.947 F .448 -(xpansion pattern also matches one of the patterns in)-.15 F F2 -(GLOBIGNORE)144 228 Q/F4 9/Times-Roman@0 SF(,)A F0(it is remo)2.25 E --.15(ve)-.15 G 2.5(df).15 G(rom the list of matches.)-2.5 E F1 -(HISTCONTR)108 240 Q(OL)-.3 E F0 2.654(Ac)144 252 S .153 -(olon-separated list of v)-2.654 F .153(alues controlling ho)-.25 F -2.653(wc)-.25 G .153(ommands are sa)-2.653 F -.15(ve)-.2 G 2.653(do).15 -G 2.653(nt)-2.653 G .153(he history list.)-2.653 F .153(If the list) -5.153 F .49(of v)144 264 R .49(alues includes)-.25 F/F5 10 -/Times-Italic@0 SF(ignor)3 E(espace)-.37 E F0 2.99(,l).18 G .49 -(ines which be)-2.99 F .49(gin with a)-.15 F F1(space)2.99 E F0 .49 +e)-2.923 F(xpan-)-.15 E 2.948(sion. If)144 528 R 2.948<618c>2.948 G .448 +(le name matched by a pathname e)-2.948 F .447 +(xpansion pattern also matches one of the patterns in)-.15 F F3 +(GLOBIGNORE)144 540 Q F4(,)A F0(it is remo)2.25 E -.15(ve)-.15 G 2.5(df) +.15 G(rom the list of matches.)-2.5 E F2(HISTCONTR)108 552 Q(OL)-.3 E F0 +2.653(Ac)144 564 S .153(olon-separated list of v)-2.653 F .153 +(alues controlling ho)-.25 F 2.653(wc)-.25 G .153(ommands are sa)-2.653 +F -.15(ve)-.2 G 2.653(do).15 G 2.653(nt)-2.653 G .153(he history list.) +-2.653 F .154(If the list)5.153 F .49(of v)144 576 R .49(alues includes) +-.25 F F5(ignor)3 E(espace)-.37 E F0 2.99(,l).18 G .49(ines which be) +-2.99 F .49(gin with a)-.15 F F2(space)2.99 E F0 .49 (character are not sa)2.99 F -.15(ve)-.2 G 2.99(di).15 G 2.99(nt)-2.99 G -.49(he his-)-2.99 F .558(tory list.)144 276 R 3.058(Av)5.558 G .558 -(alue of)-3.308 F F5(ignor)3.068 E(edups)-.37 E F0 .558 -(causes lines matching the pre)3.328 F .557 -(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.925 -(Av)144 288 S .425(alue of)-3.175 F F5(ignor)2.935 E(eboth)-.37 E F0 -.426(is shorthand for)3.205 F F5(ignor)2.926 E(espace)-.37 E F0(and) -2.926 E F5(ignor)2.926 E(edups)-.37 E F0 5.426(.A)C -.25(va)-2.5 G .426 -(lue of).25 F F5(er)3.116 E(asedups)-.15 E F0(causes)3.196 E .699 -(all pre)144 300 R .698 +.49(he his-)-2.99 F .557(tory list.)144 588 R 3.057(Av)5.557 G .557 +(alue of)-3.307 F F5(ignor)3.067 E(edups)-.37 E F0 .557 +(causes lines matching the pre)3.327 F .558 +(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.926 +(Av)144 600 S .426(alue of)-3.176 F F5(ignor)2.936 E(eboth)-.37 E F0 +.426(is shorthand for)3.206 F F5(ignor)2.926 E(espace)-.37 E F0(and) +2.926 E F5(ignor)2.926 E(edups)-.37 E F0 5.426(.A)C -.25(va)-2.501 G +.425(lue of).25 F F5(er)3.115 E(asedups)-.15 E F0(causes)3.195 E .698 +(all pre)144 612 R .698 (vious lines matching the current line to be remo)-.25 F -.15(ve)-.15 G -3.198(df).15 G .698(rom the history list before that line is)-3.198 F -(sa)144 312 Q -.15(ve)-.2 G 2.763(d. An).15 F 2.763(yv)-.15 G .263 -(alue not in the abo)-3.013 F .563 -.15(ve l)-.15 H .263 -(ist is ignored.).15 F(If)5.263 E F2(HISTCONTR)2.763 E(OL)-.27 E F0 .264 -(is unset, or does not include)2.513 F 2.942(av)144 324 S .442(alid v) --3.192 F .442(alue, all lines read by the shell parser are sa)-.25 F --.15(ve)-.2 G 2.941(do).15 G 2.941(nt)-2.941 G .441 -(he history list, subject to the v)-2.941 F .441(alue of)-.25 F F2 -(HISTIGNORE)144 336 Q F4(.)A F0 1.981(The second and subsequent lines o\ -f a multi-line compound command are not)6.481 F -(tested, and are added to the history re)144 348 Q -.05(ga)-.15 G -(rdless of the v).05 E(alue of)-.25 E F2(HISTCONTR)2.5 E(OL)-.27 E F4(.) -A F1(HISTFILE)108 360 Q F0 .181 -(The name of the \214le in which command history is sa)144 372 R -.15 -(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F2(HIST)2.681 E(OR)-.162 E(Y) --.315 E F0(belo)2.431 E 2.681(w\). The)-.25 F(def)2.681 E .181(ault v) --.1 F(alue)-.25 E(is)144 384 Q F5(~/.bash_history)2.5 E F0 5(.I)C 2.5 +3.198(df).15 G .699(rom the history list before that line is)-3.198 F +(sa)144 624 Q -.15(ve)-.2 G 2.764(d. An).15 F 2.764(yv)-.15 G .264 +(alue not in the abo)-3.014 F .563 -.15(ve l)-.15 H .263 +(ist is ignored.).15 F(If)5.263 E F3(HISTCONTR)2.763 E(OL)-.27 E F0 .263 +(is unset, or does not include)2.513 F 2.941(av)144 636 S .441(alid v) +-3.191 F .441(alue, all lines read by the shell parser are sa)-.25 F +-.15(ve)-.2 G 2.942(do).15 G 2.942(nt)-2.942 G .442 +(he history list, subject to the v)-2.942 F .442(alue of)-.25 F F3 +(HISTIGNORE)144 648 Q F4(.)A F0 1.981(The second and subsequent lines o\ +f a multi-line compound command are not)6.482 F +(tested, and are added to the history re)144 660 Q -.05(ga)-.15 G +(rdless of the v).05 E(alue of)-.25 E F3(HISTCONTR)2.5 E(OL)-.27 E F4(.) +A F2(HISTFILE)108 672 Q F0 .181 +(The name of the \214le in which command history is sa)144 684 R -.15 +(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F3(HIST)2.681 E(OR)-.162 E(Y) +-.315 E F0(belo)2.431 E 2.682(w\). The)-.25 F(def)2.682 E .182(ault v) +-.1 F(alue)-.25 E(is)144 696 Q F5(~/.bash_history)2.5 E F0 5(.I)C 2.5 (fu)-5 G(nset, the command history is not sa)-2.5 E -.15(ve)-.2 G 2.5 -(dw).15 G(hen a shell e)-2.5 E(xits.)-.15 E F1(HISTFILESIZE)108 396 Q F0 -1.622(The maximum number of lines contained in the history \214le.)144 -408 R 1.623(When this v)6.623 F 1.623(ariable is assigned a)-.25 F -.25 -(va)144 420 S .125(lue, the history \214le is truncated, if necessary) -.25 F 2.625(,t)-.65 G 2.624(oc)-2.625 G .124 -(ontain no more than that number of lines by re-)-2.624 F(mo)144 432 Q -.065(ving the oldest entries.)-.15 F .066(The history \214le is also tr\ -uncated to this size after writing it when a shell)5.065 F -.15(ex)144 -444 S 2.928(its. If).15 F .428(the v)2.928 F .428 -(alue is 0, the history \214le is truncated to zero size.)-.25 F .427 -(Non-numeric v)5.427 F .427(alues and numeric)-.25 F -.25(va)144 456 S +(dw).15 G(hen a shell e)-2.5 E(xits.)-.15 E(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(16)185.115 E 0 Cg EP +%%Page: 17 17 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(HISTFILESIZE)108 84 Q F0 1.623 +(The maximum number of lines contained in the history \214le.)144 96 R +1.622(When this v)6.623 F 1.622(ariable is assigned a)-.25 F -.25(va)144 +108 S .124(lue, the history \214le is truncated, if necessary).25 F +2.624(,t)-.65 G 2.624(oc)-2.624 G .125 +(ontain no more than that number of lines by re-)-2.624 F(mo)144 120 Q +.066(ving the oldest entries.)-.15 F .065(The history \214le is also tr\ +uncated to this size after writing it when a shell)5.066 F -.15(ex)144 +132 S 2.927(its. If).15 F .427(the v)2.927 F .428 +(alue is 0, the history \214le is truncated to zero size.)-.25 F .428 +(Non-numeric v)5.428 F .428(alues and numeric)-.25 F -.25(va)144 144 S .152(lues less than zero inhibit truncation.).25 F .152 (The shell sets the def)5.152 F .152(ault v)-.1 F .152(alue to the v) --.25 F .152(alue of)-.25 F F1(HISTSIZE)2.652 E F0(after reading an)144 -468 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1(HISTIGNORE)108 480 Q F0 -2.658(Ac)144 492 S .158(olon-separated list of patterns used to decide \ -which command lines should be sa)-2.658 F -.15(ve)-.2 G 2.657(do).15 G -2.657(nt)-2.657 G .157(he his-)-2.657 F .707(tory list.)144 504 R .707 -(Each pattern is anchored at the be)5.707 F .708 -(ginning of the line and must match the complete line)-.15 F .626 -(\(no implicit `)144 516 R F1(*)A F0 3.126('i)C 3.126(sa)-3.126 G 3.126 -(ppended\). Each)-3.126 F .626(pattern is tested ag)3.126 F .625 -(ainst the line after the checks speci\214ed by)-.05 F F2(HISTCONTR)144 -528 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793 +-.25 F .151(alue of)-.25 F F1(HISTSIZE)2.651 E F0(after reading an)144 +156 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1(HISTIGNORE)108 168 Q F0 +2.657(Ac)144 180 S .157(olon-separated list of patterns used to decide \ +which command lines should be sa)-2.657 F -.15(ve)-.2 G 2.658(do).15 G +2.658(nt)-2.658 G .158(he his-)-2.658 F .708(tory list.)144 192 R .708 +(Each pattern is anchored at the be)5.708 F .707 +(ginning of the line and must match the complete line)-.15 F .625 +(\(no implicit `)144 204 R F1(*)A F0 3.125('i)C 3.125(sa)-3.125 G 3.125 +(ppended\). Each)-3.125 F .626(pattern is tested ag)3.125 F .626 +(ainst the line after the checks speci\214ed by)-.05 F/F2 9/Times-Bold@0 +SF(HISTCONTR)144 216 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793 (In addition to the normal shell pattern matching characters, `)6.793 F -F1(&)A F0(')A 1.44(matches the pre)144 540 R 1.44(vious history line.) +F1(&)A F0(')A 1.44(matches the pre)144 228 R 1.44(vious history line.) -.25 F(`)6.44 E F1(&)A F0 3.94('m)C 1.44 (ay be escaped using a backslash; the backslash is re-)-3.94 F(mo)144 -552 Q -.15(ve)-.15 G 3.95(db).15 G 1.45(efore attempting a match.)-3.95 +240 Q -.15(ve)-.15 G 3.95(db).15 G 1.45(efore attempting a match.)-3.95 F 1.45(The second and subsequent lines of a multi-line compound)6.45 F -1.269(command are not tested, and are added to the history re)144 564 R +1.269(command are not tested, and are added to the history re)144 252 R -.05(ga)-.15 G 1.269(rdless of the v).05 F 1.269(alue of)-.25 F F2 -(HISTIGNORE)3.769 E F4(.)A F0 -(The pattern matching honors the setting of the)144 576 Q F1(extglob)2.5 -E F0(shell option.)2.5 E F1(HISTSIZE)108 588 Q F0 1.387 -(The number of commands to remember in the command history \(see)144 600 +(HISTIGNORE)3.77 E/F3 9/Times-Roman@0 SF(.)A F0 +(The pattern matching honors the setting of the)144 264 Q F1(extglob)2.5 +E F0(shell option.)2.5 E F1(HISTSIZE)108 276 Q F0 1.387 +(The number of commands to remember in the command history \(see)144 288 R F2(HIST)3.887 E(OR)-.162 E(Y)-.315 E F0(belo)3.637 E 3.887(w\). If) --.25 F(the)3.888 E -.25(va)144 612 S .413(lue is 0, commands are not sa) +-.25 F(the)3.887 E -.25(va)144 300 S .412(lue is 0, commands are not sa) .25 F -.15(ve)-.2 G 2.913(di).15 G 2.913(nt)-2.913 G .413 -(he history list.)-2.913 F .413(Numeric v)5.413 F .412 -(alues less than zero result in e)-.25 F(v-)-.25 E .343 -(ery command being sa)144 624 R -.15(ve)-.2 G 2.843(do).15 G 2.843(nt) --2.843 G .343(he history list \(there is no limit\).)-2.843 F .344 -(The shell sets the def)5.343 F .344(ault v)-.1 F .344(alue to)-.25 F -(500 after reading an)144 636 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1 -(HISTTIMEFORMA)108 648 Q(T)-.95 E F0 .952(If this v)144 660 R .952 -(ariable is set and not null, its v)-.25 F .951 -(alue is used as a format string for)-.25 F F5(strftime)3.451 E F0 .951 -(\(3\) to print the)B .672 -(time stamp associated with each history entry displayed by the)144 672 -R F1(history)3.173 E F0 -.2(bu)3.173 G 3.173(iltin. If).2 F .673(this v) -3.173 F .673(ariable is)-.25 F .144 -(set, time stamps are written to the history \214le so the)144 684 R +(he history list.)-2.913 F .413(Numeric v)5.413 F .413 +(alues less than zero result in e)-.25 F(v-)-.25 E .344 +(ery command being sa)144 312 R -.15(ve)-.2 G 2.844(do).15 G 2.844(nt) +-2.844 G .343(he history list \(there is no limit\).)-2.844 F .343 +(The shell sets the def)5.343 F .343(ault v)-.1 F .343(alue to)-.25 F +(500 after reading an)144 324 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1 +(HISTTIMEFORMA)108 336 Q(T)-.95 E F0 .951(If this v)144 348 R .951 +(ariable is set and not null, its v)-.25 F .952 +(alue is used as a format string for)-.25 F/F4 10/Times-Italic@0 SF +(strftime)3.452 E F0 .952(\(3\) to print the)B .673 +(time stamp associated with each history entry displayed by the)144 360 +R F1(history)3.173 E F0 -.2(bu)3.172 G 3.172(iltin. If).2 F .672(this v) +3.172 F .672(ariable is)-.25 F .144 +(set, time stamps are written to the history \214le so the)144 372 R 2.644(ym)-.15 G .144(ay be preserv)-2.644 F .144 -(ed across shell sessions.)-.15 F(This)5.144 E(uses the history comment\ - character to distinguish timestamps from other history lines.)144 696 Q -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(16)190.395 E 0 Cg EP -%%Page: 17 17 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(HOME)108 84 Q F0 1.27 -(The home directory of the current user; the def)144 96 R 1.27(ault ar) +(ed across shell sessions.)-.15 F(This)5.145 E(uses the history comment\ + character to distinguish timestamps from other history lines.)144 384 Q +F1(HOME)108 396 Q F0 1.27 +(The home directory of the current user; the def)144 408 R 1.27(ault ar) -.1 F 1.27(gument for the)-.18 F F1(cd)3.77 E F0 -.2(bu)3.77 G 1.27 -(iltin command.).2 F(The)6.27 E -.25(va)144 108 S(lue of this v).25 E +(iltin command.).2 F(The)6.27 E -.25(va)144 420 S(lue of this v).25 E (ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F1 -(HOSTFILE)108 120 Q F0 1.015 -(Contains the name of a \214le in the same format as)144 132 R/F2 10 -/Times-Italic@0 SF(/etc/hosts)5.181 E F0 1.015 -(that should be read when the shell)5.181 F .55 -(needs to complete a hostname.)144 144 R .551 +(HOSTFILE)108 432 Q F0 1.015 +(Contains the name of a \214le in the same format as)144 444 R F4 +(/etc/hosts)5.181 E F0 1.015(that should be read when the shell)5.181 F +.551(needs to complete a hostname.)144 456 R .551 (The list of possible hostname completions may be changed while)5.551 F -1.059(the shell is running; the ne)144 156 R 1.059 -(xt time hostname completion is attempted after the v)-.15 F 1.058 -(alue is changed,)-.25 F F1(bash)144 168 Q F0 .138 -(adds the contents of the ne)2.638 F 2.638<778c>-.25 G .138(le to the e) --2.638 F .138(xisting list.)-.15 F(If)5.138 E/F3 9/Times-Bold@0 SF -(HOSTFILE)2.638 E F0 .138(is set, b)2.388 F .139(ut has no v)-.2 F .139 -(alue, or)-.25 F .518(does not name a readable \214le,)144 180 R F1 -(bash)3.018 E F0 .518(attempts to read)3.018 F F2(/etc/hosts)4.683 E F0 -.517(to obtain the list of possible host-)4.683 F(name completions.)144 -192 Q(When)5 E F3(HOSTFILE)2.5 E F0 -(is unset, the hostname list is cleared.)2.25 E F1(IFS)108 204 Q F0(The) -144 204 Q F2 .555(Internal F)3.635 F .555(ield Separ)-.45 F(ator)-.15 E -F0 .555(that is used for w)3.785 F .556(ord splitting after e)-.1 F .556 -(xpansion and to split lines into)-.15 F -.1(wo)144 216 S(rds with the) -.1 E F1 -.18(re)2.5 G(ad).18 E F0 -.2(bu)2.5 G(iltin command.).2 E -(The def)5 E(ault v)-.1 E(alue is `)-.25 E(`')-.25 E('.)-.74 E F1(IGNOREEOF)108 228 Q F0 .503 -(Controls the action of an interacti)144 240 R .803 -.15(ve s)-.25 H -.503(hell on receipt of an).15 F F3(EOF)3.003 E F0 .503 -(character as the sole input.)2.753 F .503(If set,)5.503 F .426(the v) -144 252 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F3 +1.058(the shell is running; the ne)144 468 R 1.059 +(xt time hostname completion is attempted after the v)-.15 F 1.059 +(alue is changed,)-.25 F F1(bash)144 480 Q F0 .138 +(adds the contents of the ne)2.639 F 2.638<778c>-.25 G .138(le to the e) +-2.638 F .138(xisting list.)-.15 F(If)5.138 E F2(HOSTFILE)2.638 E F0 +.138(is set, b)2.388 F .138(ut has no v)-.2 F .138(alue, or)-.25 F .517 +(does not name a readable \214le,)144 492 R F1(bash)3.017 E F0 .517 +(attempts to read)3.017 F F4(/etc/hosts)4.684 E F0 .518 +(to obtain the list of possible host-)4.684 F(name completions.)144 504 +Q(When)5 E F2(HOSTFILE)2.5 E F0(is unset, the hostname list is cleared.) +2.25 E F1(IFS)108 516 Q F0(The)144 516 Q F4 .556(Internal F)3.636 F .556 +(ield Separ)-.45 F(ator)-.15 E F0 .556(that is used for w)3.786 F .556 +(ord splitting after e)-.1 F .555(xpansion and to split lines into)-.15 +F -.1(wo)144 528 S(rds with the).1 E F1 -.18(re)2.5 G(ad).18 E F0 -.2 +(bu)2.5 G(iltin command.).2 E(The def)5 E(ault v)-.1 E(alue is `)-.25 E +(`')-.25 E('.)-.74 E F1(IGNOREEOF)108 540 Q +F0 .503(Controls the action of an interacti)144 552 R .803 -.15(ve s) +-.25 H .503(hell on receipt of an).15 F F2(EOF)3.003 E F0 .503 +(character as the sole input.)2.753 F .504(If set,)5.504 F .426(the v) +144 564 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F2 (EOF)3.076 E F0 .426 -(characters which must be typed as the \214rst characters)2.676 F .303 -(on an input line before)144 264 R F1(bash)2.802 E F0 -.15(ex)2.802 G +(characters which must be typed as the \214rst characters)2.676 F .302 +(on an input line before)144 576 R F1(bash)2.802 E F0 -.15(ex)2.802 G 2.802(its. If).15 F .302(the v)2.802 F .302(ariable e)-.25 F .302 (xists b)-.15 F .302(ut does not ha)-.2 F .602 -.15(ve a n)-.2 H .302 -(umeric v).15 F .302(alue, or has)-.25 F(no v)144 276 Q(alue, the def) +(umeric v).15 F .303(alue, or has)-.25 F(no v)144 588 Q(alue, the def) -.25 E(ault v)-.1 E(alue is 10.)-.25 E(If it does not e)5 E(xist,)-.15 E -F3(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1 -(INPUTRC)108 288 Q F0 .26(The \214lename for the)144 300 R F1 -.18(re) -2.76 G(adline).18 E F0 .26(startup \214le, o)2.76 F -.15(ve)-.15 G .26 -(rriding the def).15 F .261(ault of)-.1 F F2(~/.inputr)4.427 E(c)-.37 E -F0(\(see)4.427 E F3(READLINE)2.761 E F0(be-)2.511 E(lo)144 312 Q(w\).) --.25 E F1(INSIDE_EMA)108 324 Q(CS)-.55 E F0 .034(If this v)144 336 R -.034(ariable appears in the en)-.25 F .034 -(vironment when the shell starts,)-.4 F F1(bash)2.533 E F0 .033 -(assumes that it is running in-)2.533 F(side an Emacs shell b)144 348 Q +F2(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1 +(INPUTRC)108 600 Q F0 .261(The \214lename for the)144 612 R F1 -.18(re) +2.761 G(adline).18 E F0 .261(startup \214le, o)2.761 F -.15(ve)-.15 G +.26(rriding the def).15 F .26(ault of)-.1 F F4(~/.inputr)4.426 E(c)-.37 +E F0(\(see)4.426 E F2(READLINE)2.76 E F0(be-)2.51 E(lo)144 624 Q(w\).) +-.25 E F1(INSIDE_EMA)108 636 Q(CS)-.55 E F0 .033(If this v)144 648 R +.033(ariable appears in the en)-.25 F .033 +(vironment when the shell starts,)-.4 F F1(bash)2.534 E F0 .034 +(assumes that it is running in-)2.534 F(side an Emacs shell b)144 660 Q (uf)-.2 E(fer and may disable line editing, depending on the v)-.25 E -(alue of)-.25 E F1(TERM)2.5 E F0(.)A F1(LANG)108 360 Q F0 1.239 -(Used to determine the locale cate)144 360 R 1.239(gory for an)-.15 F -3.739(yc)-.15 G(ate)-3.739 E 1.24 +(alue of)-.25 E F1(TERM)2.5 E F0(.)A F1(LANG)108 672 Q F0 1.24 +(Used to determine the locale cate)144 672 R 1.239(gory for an)-.15 F +3.739(yc)-.15 G(ate)-3.739 E 1.239 (gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E -(starting with)144 372 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 384 Q F0 .974 -(This v)144 396 R .974(ariable o)-.25 F -.15(ve)-.15 G .974 -(rrides the v).15 F .973(alue of)-.25 F F3(LANG)3.473 E F0 .973(and an) +(starting with)144 684 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 696 Q F0 .973 +(This v)144 708 R .973(ariable o)-.25 F -.15(ve)-.15 G .973 +(rrides the v).15 F .973(alue of)-.25 F F2(LANG)3.473 E F0 .973(and an) 3.223 F 3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0 -.25(va)3.473 G -.973(riable specifying a locale cate-).25 F(gory)144 408 Q(.)-.65 E F1 -(LC_COLLA)108 420 Q(TE)-.95 E F0 .411(This v)144 432 R .412(ariable det\ +.974(riable specifying a locale cate-).25 F(gory)144 720 Q(.)-.65 E +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(17)185.115 E 0 Cg EP +%%Page: 18 18 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(LC_COLLA)108 84 Q(TE)-.95 E F0 .412(This v)144 96 R .412(ariable det\ ermines the collation order used when sorting the results of pathname e) --.25 F(xpansion,)-.15 E 1.465(and determines the beha)144 444 R 1.465 -(vior of range e)-.2 F 1.464(xpressions, equi)-.15 F -.25(va)-.25 G -1.464(lence classes, and collating sequences).25 F(within pathname e)144 -456 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 468 Q F0 -1.935(This v)144 480 R 1.936 +-.25 F(xpansion,)-.15 E 1.464(and determines the beha)144 108 R 1.464 +(vior of range e)-.2 F 1.465(xpressions, equi)-.15 F -.25(va)-.25 G +1.465(lence classes, and collating sequences).25 F(within pathname e)144 +120 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 132 Q F0 +1.936(This v)144 144 R 1.936 (ariable determines the interpretation of characters and the beha)-.25 F -1.936(vior of character classes)-.2 F(within pathname e)144 492 Q -(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 504 Q(GES)-.55 E -F0(This v)144 516 Q(ariable determines the locale used to translate dou\ +1.935(vior of character classes)-.2 F(within pathname e)144 156 Q +(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 168 Q(GES)-.55 E +F0(This v)144 180 Q(ariable determines the locale used to translate dou\ ble-quoted strings preceded by a)-.25 E F1($)2.5 E F0(.)A F1(LC_NUMERIC) -108 528 Q F0(This v)144 540 Q(ariable determines the locale cate)-.25 E -(gory used for number formatting.)-.15 E F1(LC_TIME)108 552 Q F0(This v) -144 564 Q(ariable determines the locale cate)-.25 E -(gory used for data and time formatting.)-.15 E F1(LINES)108 576 Q F0 -.055(Used by the)144 576 R F1(select)2.555 E F0 .054(compound command t\ -o determine the column length for printing selection lists.)2.555 F .264 -(Automatically set if the)144 588 R F1(checkwinsize)2.764 E F0 .264 -(option is enabled or in an interacti)2.764 F .565 -.15(ve s)-.25 H .265 -(hell upon receipt of a).15 F F3(SIGWINCH)144 600 Q/F4 9/Times-Roman@0 -SF(.)A F1(MAIL)108 612 Q F0 .422 -(If this parameter is set to a \214le or directory name and the)144 612 -R F3(MAILP)2.921 E -.855(AT)-.666 G(H).855 E F0 -.25(va)2.671 G .421 -(riable is not set,).25 F F1(bash)2.921 E F0(in-)2.921 E -(forms the user of the arri)144 624 Q -.25(va)-.25 G 2.5(lo).25 G 2.5 +108 192 Q F0(This v)144 204 Q(ariable determines the locale cate)-.25 E +(gory used for number formatting.)-.15 E F1(LC_TIME)108 216 Q F0(This v) +144 228 Q(ariable determines the locale cate)-.25 E +(gory used for data and time formatting.)-.15 E F1(LINES)108 240 Q F0 +.054(Used by the)144 240 R F1(select)2.554 E F0 .054(compound command t\ +o determine the column length for printing selection lists.)2.554 F .265 +(Automatically set if the)144 252 R F1(checkwinsize)2.765 E F0 .264 +(option is enabled or in an interacti)2.765 F .564 -.15(ve s)-.25 H .264 +(hell upon receipt of a).15 F/F2 9/Times-Bold@0 SF(SIGWINCH)144 264 Q/F3 +9/Times-Roman@0 SF(.)A F1(MAIL)108 276 Q F0 .421 +(If this parameter is set to a \214le or directory name and the)144 276 +R F2(MAILP)2.922 E -.855(AT)-.666 G(H).855 E F0 -.25(va)2.672 G .422 +(riable is not set,).25 F F1(bash)2.922 E F0(in-)2.922 E +(forms the user of the arri)144 288 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 636 Q F0 .098 -(Speci\214es ho)144 648 R 2.598(wo)-.25 G .098(ften \(in seconds\)) --2.598 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def) -5.098 F .098(ault is 60 seconds.)-.1 F .099(When it is time)5.099 F .224 +(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 300 Q F0 .099 +(Speci\214es ho)144 312 R 2.599(wo)-.25 G .099(ften \(in seconds\)) +-2.599 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def) +5.098 F .098(ault is 60 seconds.)-.1 F .098(When it is time)5.098 F .223 (to check for mail, the shell does so before displaying the primary pro\ -mpt.)144 660 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F -(or set to a v)144 672 Q(alue that is not a number greater than or equa\ -l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 684 Q --.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 696 S .49 +mpt.)144 324 R .224(If this v)5.224 F .224(ariable is unset,)-.25 F +(or set to a v)144 336 Q(alue that is not a number greater than or equa\ +l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 348 Q +-.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 360 S .49 (olon-separated list of \214lenames to be check)-2.99 F .49 (ed for mail.)-.1 F .49(The message to be printed when mail)5.49 F(arri) -144 708 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \ +144 372 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \ \214le may be speci\214ed by separating the \214lename from the message\ - with a `?'.)-2.62 F(When used in the te)144 720 Q(xt of the message,) + with a `?'.)-2.62 F(When used in the te)144 384 Q(xt of the message,) -.15 E F1($_)2.5 E F0 -.15(ex)2.5 G -(pands to the name of the current mail\214le.).15 E(Example:)5 E -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(17)190.395 E 0 Cg EP -%%Page: 18 18 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(MAILP)144 84 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y) +(pands to the name of the current mail\214le.).15 E(Example:)5 E F1 +(MAILP)144 396 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y) -.25 E(ou ha)-1.1 E .3 -.15(ve m)-.2 H -(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 96 Q F0 .015 +(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 408 Q F0 .015 (can be con\214gured to supply a def)2.515 F .015(ault v)-.1 F .015 (alue for this v)-.25 F .015(ariable \(there is no v)-.25 F .015 (alue by def)-.25 F .015(ault\), b)-.1 F(ut)-.2 E(the location of the u\ -ser mail \214les that it uses is system dependent \(e.g., /v)144 108 Q -(ar/mail/)-.25 E F1($USER)A F0(\).)A F1(OPTERR)108 120 Q F0 .39 -(If set to the v)144 132 R .39(alue 1,)-.25 F F1(bash)2.89 E F0 .389 -(displays error messages generated by the)2.889 F F1(getopts)2.889 E F0 --.2(bu)2.889 G .389(iltin command \(see).2 F/F2 9/Times-Bold@0 SF .359 -(SHELL B)144 144 R(UIL)-.09 E .359(TIN COMMANDS)-.828 F F0(belo)2.609 E -(w\).)-.25 E F2(OPTERR)5.359 E F0 .36 -(is initialized to 1 each time the shell is in)2.609 F -.2(vo)-.4 G -.1 -(ke).2 G(d).1 E(or a shell script is e)144 156 Q -.15(xe)-.15 G(cuted.) -.15 E F1 -.74(PA)108 168 S(TH)-.21 E F0 .588 -(The search path for commands.)144 168 R .587 +ser mail \214les that it uses is system dependent \(e.g., /v)144 420 Q +(ar/mail/)-.25 E F1($USER)A F0(\).)A F1(OPTERR)108 432 Q F0 .389 +(If set to the v)144 444 R .389(alue 1,)-.25 F F1(bash)2.889 E F0 .389 +(displays error messages generated by the)2.889 F F1(getopts)2.89 E F0 +-.2(bu)2.89 G .39(iltin command \(see).2 F F2 .36(SHELL B)144 456 R(UIL) +-.09 E .36(TIN COMMANDS)-.828 F F0(belo)2.61 E(w\).)-.25 E F2(OPTERR) +5.36 E F0 .359(is initialized to 1 each time the shell is in)2.61 F -.2 +(vo)-.4 G -.1(ke).2 G(d).1 E(or a shell script is e)144 468 Q -.15(xe) +-.15 G(cuted.).15 E F1 -.74(PA)108 480 S(TH)-.21 E F0 .587 +(The search path for commands.)144 480 R .588 (It is a colon-separated list of directories in which the shell looks) -5.588 F .471(for commands \(see)144 180 R F2 .471(COMMAND EXECUTION) -2.971 F F0(belo)2.722 E 2.972(w\). A)-.25 F .472 -(zero-length \(null\) directory name in the)2.972 F -.25(va)144 192 S -.536(lue of).25 F F2 -.666(PA)3.036 G(TH)-.189 E F0 .535 -(indicates the current directory)2.786 F 5.535(.A)-.65 G .535 -(null directory name may appear as tw)-2.5 F 3.035(oa)-.1 G(djacent) --3.035 E .867(colons, or as an initial or trailing colon.)144 204 R .868 -(The def)5.868 F .868(ault path is system-dependent, and is set by the) --.1 F(administrator who installs)144 216 Q F1(bash)2.5 E F0 5(.A)C -(common v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF +5.587 F .472(for commands \(see)144 492 R F2 .472(COMMAND EXECUTION) +2.972 F F0(belo)2.722 E 2.972(w\). A)-.25 F .471 +(zero-length \(null\) directory name in the)2.972 F -.25(va)144 504 S +.535(lue of).25 F F2 -.666(PA)3.035 G(TH)-.189 E F0 .535 +(indicates the current directory)2.785 F 5.535(.A)-.65 G .535 +(null directory name may appear as tw)-2.5 F 3.036(oa)-.1 G(djacent) +-3.036 E .868(colons, or as an initial or trailing colon.)144 516 R .868 +(The def)5.868 F .867(ault path is system-dependent, and is set by the) +-.1 F(administrator who installs)144 528 Q F1(bash)2.5 E F0 5(.A)C +(common v)-2.5 E(alue is)-.25 E/F4 10/Courier@0 SF (/usr/local/bin:/usr/lo-)2.5 E(cal/sbin:/usr/bin:/usr/sbin:/bin:/sbin) -144 228 Q F0(.)A F1(POSIXL)108 240 Q(Y_CORRECT)-.92 E F0 .471(If this v) -144 252 R .471(ariable is in the en)-.25 F .471(vironment when)-.4 F F1 -(bash)2.971 E F0 .471(starts, the shell enters)2.971 F/F4 10 -/Times-Italic@0 SF .472(posix mode)2.972 F F0 .472(before reading)2.972 -F .011(the startup \214les, as if the)144 264 R F1(\255\255posix)2.511 E +144 540 Q F0(.)A F1(POSIXL)108 552 Q(Y_CORRECT)-.92 E F0 .472(If this v) +144 564 R .472(ariable is in the en)-.25 F .471(vironment when)-.4 F F1 +(bash)2.971 E F0 .471(starts, the shell enters)2.971 F/F5 10 +/Times-Italic@0 SF .471(posix mode)2.971 F F0 .471(before reading)2.971 +F .011(the startup \214les, as if the)144 576 R F1(\255\255posix)2.511 E F0(in)2.511 E -.2(vo)-.4 G .011(cation option had been supplied.).2 F -.011(If it is set while the shell is)5.011 F(running,)144 276 Q F1(bash) -4.497 E F0(enables)4.497 E F4 1.997(posix mode)4.497 F F0 4.497(,a)C -4.497(si)-4.497 G 4.497(ft)-4.497 G 1.997(he command)-4.497 F F3 1.997 -(set -o posix)4.497 F F0 1.998(had been e)4.497 F -.15(xe)-.15 G(cuted.) -.15 E(When the shell enters)144 288 Q F4(posix mode)2.5 E F0 2.5(,i)C +.011(If it is set while the shell is)5.011 F(running,)144 588 Q F1(bash) +4.498 E F0(enables)4.498 E F5 1.997(posix mode)4.497 F F0 4.497(,a)C +4.497(si)-4.497 G 4.497(ft)-4.497 G 1.997(he command)-4.497 F F4 1.997 +(set -o posix)4.497 F F0 1.997(had been e)4.497 F -.15(xe)-.15 G(cuted.) +.15 E(When the shell enters)144 600 Q F5(posix mode)2.5 E F0 2.5(,i)C 2.5(ts)-2.5 G(ets this v)-2.5 E(ariable if it w)-.25 E -(as not already set.)-.1 E F1(PR)108 300 Q(OMPT_COMMAND)-.3 E F0 .155 -(If this v)144 312 R .155(ariable is set, and is an array)-.25 F 2.655 +(as not already set.)-.1 E F1(PR)108 612 Q(OMPT_COMMAND)-.3 E F0 .155 +(If this v)144 624 R .155(ariable is set, and is an array)-.25 F 2.655 (,t)-.65 G .155(he v)-2.655 F .155(alue of each set element is e)-.25 F -.15(xe)-.15 G .155(cuted as a command prior).15 F .407 -(to issuing each primary prompt.)144 324 R .407(If this is set b)5.407 F +(to issuing each primary prompt.)144 636 R .407(If this is set b)5.407 F .407(ut not an array v)-.2 F .407(ariable, its v)-.25 F .407 -(alue is used as a com-)-.25 F(mand to e)144 336 Q -.15(xe)-.15 G -(cute instead.).15 E F1(PR)108 348 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 -(If set to a number greater than zero, the v)144 360 R .676 +(alue is used as a com-)-.25 F(mand to e)144 648 Q -.15(xe)-.15 G +(cute instead.).15 E F1(PR)108 660 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 +(If set to a number greater than zero, the v)144 672 R .676 (alue is used as the number of trailing directory compo-)-.25 F .923 -(nents to retain when e)144 372 R .923(xpanding the)-.15 F F1(\\w)3.423 +(nents to retain when e)144 684 R .923(xpanding the)-.15 F F1(\\w)3.423 E F0(and)3.423 E F1(\\W)3.423 E F0 .923(prompt string escapes \(see) 3.423 F F2(PR)3.423 E(OMPTING)-.27 E F0(belo)3.173 E(w\).)-.25 E -(Characters remo)144 384 Q -.15(ve)-.15 G 2.5(da).15 G -(re replaced with an ellipsis.)-2.5 E F1(PS0)108 396 Q F0 1.174(The v) -144 396 R 1.174(alue of this parameter is e)-.25 F 1.174(xpanded \(see) +(Characters remo)144 696 Q -.15(ve)-.15 G 2.5(da).15 G +(re replaced with an ellipsis.)-2.5 E F1(PS0)108 708 Q F0 1.174(The v) +144 708 R 1.174(alue of this parameter is e)-.25 F 1.174(xpanded \(see) -.15 F F2(PR)3.674 E(OMPTING)-.27 E F0(belo)3.424 E 1.174 (w\) and displayed by interacti)-.25 F -.15(ve)-.25 G -(shells after reading a command and before the command is e)144 408 Q --.15(xe)-.15 G(cuted.).15 E F1(PS1)108 420 Q F0 .064(The v)144 420 R -.065(alue of this parameter is e)-.25 F .065(xpanded \(see)-.15 F F2(PR) -2.565 E(OMPTING)-.27 E F0(belo)2.315 E .065 -(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 432 R -(def)2.5 E(ault v)-.1 E(alue is `)-.25 E(`)-.74 E F1(\\s\255\\v\\$)A F0 --.74('')2.5 G(.).74 E F1(PS2)108 444 Q F0 .118(The v)144 444 R .118 -(alue of this parameter is e)-.25 F .118(xpanded as with)-.15 F F2(PS1) -2.617 E F0 .117(and used as the secondary prompt string.)2.367 F(The) -5.117 E(def)144 456 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G -(.).74 E F1(PS3)108 468 Q F0 1.115(The v)144 468 R 1.115 -(alue of this parameter is used as the prompt for the)-.25 F F1(select) -3.615 E F0 1.116(command \(see)3.616 F F2 1.116(SHELL GRAM-)3.616 F(MAR) -144 480 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 492 Q F0 -.101(The v)144 492 R .101(alue of this parameter is e)-.25 F .101 -(xpanded as with)-.15 F F2(PS1)2.6 E F0 .1(and the v)2.35 F .1 -(alue is printed before each command)-.25 F F1(bash)144 504 Q F0 .334 -(displays during an e)2.834 F -.15(xe)-.15 G .335(cution trace.).15 F -.335(The \214rst character of the e)5.335 F .335(xpanded v)-.15 F .335 -(alue of)-.25 F F2(PS4)2.835 E F0 .335(is repli-)2.585 F -(cated multiple times, as necessary)144 516 Q 2.5(,t)-.65 G 2.5(oi)-2.5 -G(ndicate multiple le)-2.5 E -.15(ve)-.25 G(ls of indirection.).15 E -(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0 -.74('')2.5 G(.).74 E F1 -(SHELL)108 528 Q F0 .543(This v)144 540 R .543(ariable e)-.25 F .543 -(xpands to the full pathname to the shell.)-.15 F .542 -(If it is not set when the shell starts,)5.543 F F1(bash)3.042 E F0 -(assigns to it the full pathname of the current user')144 552 Q 2.5(sl) --.55 G(ogin shell.)-2.5 E F1(TIMEFORMA)108 564 Q(T)-.95 E F0 .826(The v) -144 576 R .826 -(alue of this parameter is used as a format string specifying ho)-.25 F -3.327(wt)-.25 G .827(he timing information for)-3.327 F .649 -(pipelines pre\214x)144 588 R .649(ed with the)-.15 F F1(time)3.149 E F0 -(reserv)3.149 E .649(ed w)-.15 F .648(ord should be displayed.)-.1 F -(The)5.648 E F1(%)3.148 E F0 .648(character introduces)3.148 F .711 -(an escape sequence that is e)144 600 R .711(xpanded to a time v)-.15 F -.712(alue or other information.)-.25 F .712(The escape sequences)5.712 F -(and their meanings are as follo)144 612 Q -(ws; the braces denote optional portions.)-.25 E F1(%%)144 630 Q F0 2.5 -(Al)194 630 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 642 Q F4(p)A F1 -(][l]R)A F0(The elapsed time in seconds.)194 642 Q F1(%[)144 654 Q F4(p) -A F1(][l]U)A F0(The number of CPU seconds spent in user mode.)194 654 Q -F1(%[)144 666 Q F4(p)A F1(][l]S)A F0 -(The number of CPU seconds spent in system mode.)194 666 Q F1(%P)144 678 -Q F0(The CPU percentage, computed as \(%U + %S\) / %R.)194 678 Q .87 -(The optional)144 694.8 R F4(p)3.37 E F0 .87(is a digit specifying the) -3.37 F F4(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87 -(he number of fractional digits after a decimal)-3.37 F 2.525(point. A) -144 706.8 R -.25(va)2.525 G .025 -(lue of 0 causes no decimal point or fraction to be output.).25 F .026 -(At most three places after the)5.025 F .538 -(decimal point may be speci\214ed; v)144 718.8 R .538(alues of)-.25 F F4 -(p)3.038 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.537 E -F4(p)3.037 E F0 .537(is not speci\214ed,)3.037 F(the v)144 730.8 Q -(alue 3 is used.)-.25 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E -(18)190.395 E 0 Cg EP +(shells after reading a command and before the command is e)144 720 Q +-.15(xe)-.15 G(cuted.).15 E(GNU Bash 5.2)72 768 Q(2022 September 19) +135.955 E(18)185.115 E 0 Cg EP %%Page: 19 19 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .667(The optional) -144 84 R/F1 10/Times-Bold@0 SF(l)3.167 E F0 .668 -(speci\214es a longer format, including minutes, of the form)3.168 F/F2 -10/Times-Italic@0 SF(MM)3.168 E F0(m)A F2(SS)A F0(.)A F2(FF)A F0 3.168 -(s. The)B -.25(va)3.168 G(lue).25 E(of)144 96 Q F2(p)2.5 E F0 -(determines whether or not the fraction is included.)2.5 E 13.365 -(If this v)144 112.8 R 13.365(ariable is not set,)-.25 F F1(bash)15.865 -E F0 13.364(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr) -144 124.8 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(PS1)108 84 Q F0 .065(The v)144 84 R .065(alue of this parameter is e) +-.25 F .065(xpanded \(see)-.15 F/F2 9/Times-Bold@0 SF(PR)2.565 E +(OMPTING)-.27 E F0(belo)2.315 E .065(w\) and used as the primary prompt) +-.25 F 2.5(string. The)144 96 R(def)2.5 E(ault v)-.1 E(alue is `)-.25 E +(`)-.74 E F1(\\s\255\\v\\$)A F0 -.74('')2.5 G(.).74 E F1(PS2)108 108 Q +F0 .117(The v)144 108 R .117(alue of this parameter is e)-.25 F .117 +(xpanded as with)-.15 F F2(PS1)2.617 E F0 .118 +(and used as the secondary prompt string.)2.368 F(The)5.118 E(def)144 +120 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G(.).74 E F1(PS3) +108 132 Q F0 1.116(The v)144 132 R 1.115 +(alue of this parameter is used as the prompt for the)-.25 F F1(select) +3.615 E F0 1.115(command \(see)3.615 F F2 1.115(SHELL GRAM-)3.615 F(MAR) +144 144 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 156 Q F0 .1 +(The v)144 156 R .1(alue of this parameter is e)-.25 F .1 +(xpanded as with)-.15 F F2(PS1)2.6 E F0 .101(and the v)2.35 F .101 +(alue is printed before each command)-.25 F F1(bash)144 168 Q F0 .335 +(displays during an e)2.835 F -.15(xe)-.15 G .335(cution trace.).15 F +.335(The \214rst character of the e)5.335 F .335(xpanded v)-.15 F .335 +(alue of)-.25 F F2(PS4)2.834 E F0 .334(is repli-)2.584 F +(cated multiple times, as necessary)144 180 Q 2.5(,t)-.65 G 2.5(oi)-2.5 +G(ndicate multiple le)-2.5 E -.15(ve)-.25 G(ls of indirection.).15 E +(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0 -.74('')2.5 G(.).74 E F1 +(SHELL)108 192 Q F0 .542(This v)144 204 R .542(ariable e)-.25 F .542 +(xpands to the full pathname to the shell.)-.15 F .543 +(If it is not set when the shell starts,)5.543 F F1(bash)3.043 E F0 +(assigns to it the full pathname of the current user')144 216 Q 2.5(sl) +-.55 G(ogin shell.)-2.5 E F1(TIMEFORMA)108 228 Q(T)-.95 E F0 .827(The v) +144 240 R .826 +(alue of this parameter is used as a format string specifying ho)-.25 F +3.326(wt)-.25 G .826(he timing information for)-3.326 F .648 +(pipelines pre\214x)144 252 R .648(ed with the)-.15 F F1(time)3.148 E F0 +(reserv)3.148 E .648(ed w)-.15 F .649(ord should be displayed.)-.1 F +(The)5.649 E F1(%)3.149 E F0 .649(character introduces)3.149 F .712 +(an escape sequence that is e)144 264 R .711(xpanded to a time v)-.15 F +.711(alue or other information.)-.25 F .711(The escape sequences)5.711 F +(and their meanings are as follo)144 276 Q +(ws; the braces denote optional portions.)-.25 E F1(%%)144 294 Q F0 2.5 +(Al)194 294 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 306 Q/F3 10 +/Times-Italic@0 SF(p)A F1(][l]R)A F0(The elapsed time in seconds.)194 +306 Q F1(%[)144 318 Q F3(p)A F1(][l]U)A F0 +(The number of CPU seconds spent in user mode.)194 318 Q F1(%[)144 330 Q +F3(p)A F1(][l]S)A F0(The number of CPU seconds spent in system mode.)194 +330 Q F1(%P)144 342 Q F0 +(The CPU percentage, computed as \(%U + %S\) / %R.)194 342 Q .87 +(The optional)144 358.8 R F3(p)3.37 E F0 .87(is a digit specifying the) +3.37 F F3(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87 +(he number of fractional digits after a decimal)-3.37 F 2.526(point. A) +144 370.8 R -.25(va)2.526 G .025 +(lue of 0 causes no decimal point or fraction to be output.).25 F .025 +(At most three places after the)5.025 F .537 +(decimal point may be speci\214ed; v)144 382.8 R .537(alues of)-.25 F F3 +(p)3.037 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.538 E +F3(p)3.038 E F0 .538(is not speci\214ed,)3.038 F(the v)144 394.8 Q +(alue 3 is used.)-.25 E .668(The optional)144 411.6 R F1(l)3.168 E F0 +.668(speci\214es a longer format, including minutes, of the form)3.168 F +F3(MM)3.168 E F0(m)A F3(SS)A F0(.)A F3(FF)A F0 3.167(s. The)B -.25(va) +3.167 G(lue).25 E(of)144 423.6 Q F3(p)2.5 E F0 +(determines whether or not the fraction is included.)2.5 E 13.364 +(If this v)144 440.4 R 13.364(ariable is not set,)-.25 F F1(bash)15.865 +E F0 13.365(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr) +144 452.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113 (.I)C 4.613(ft)-7.113 G 2.113(he v)-4.613 F 2.113 (alue is null, no timing information is dis-)-.25 F 2.5(played. A)144 -136.8 R(trailing ne)2.5 E +464.4 R(trailing ne)2.5 E (wline is added when the format string is displayed.)-.25 E F1(TMOUT)108 -148.8 Q F0 .941(If set to a v)144 160.8 R .941(alue greater than zero,) --.25 F/F3 9/Times-Bold@0 SF(TMOUT)3.441 E F0 .941(is treated as the def) -3.191 F .941(ault timeout for the)-.1 F F1 -.18(re)3.441 G(ad).18 E F0 --.2(bu)3.441 G(iltin.).2 E(The)144 172.8 Q F1(select)2.81 E F0 .31 -(command terminates if input does not arri)2.81 F .611 -.15(ve a)-.25 H -(fter).15 E F3(TMOUT)2.811 E F0 .311(seconds when input is com-)2.561 F -.886(ing from a terminal.)144 184.8 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 196.8 +476.4 Q F0 .941(If set to a v)144 488.4 R .941(alue greater than zero,) +-.25 F F2(TMOUT)3.441 E F0 .941(is treated as the def)3.191 F .941 +(ault timeout for the)-.1 F F1 -.18(re)3.441 G(ad).18 E F0 -.2(bu)3.441 +G(iltin.).2 E(The)144 500.4 Q F1(select)2.811 E F0 .311 +(command terminates if input does not arri)2.811 F .61 -.15(ve a)-.25 H +(fter).15 E F2(TMOUT)2.81 E F0 .31(seconds when input is com-)2.56 F +.885(ing from a terminal.)144 512.4 R .885(In an interacti)5.885 F 1.185 +-.15(ve s)-.25 H .885(hell, the v).15 F .886 +(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 524.4 S 1.05(it for a line of input after issuing the primary prompt.).1 F F1 (Bash)6.05 E F0 1.05(terminates after w)3.55 F 1.05(aiting for that)-.1 -F(number of seconds if a complete line of input does not arri)144 208.8 -Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 220.8 Q F0 .391(If set,)144 232.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 244.8 Q 2.5(su)-.55 -G(se.)-2.5 E F1(auto_r)108 256.8 Q(esume)-.18 E F0 .53(This v)144 268.8 -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 280.8 R +F(number of seconds if a complete line of input does not arri)144 536.4 +Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 548.4 Q F0 .39(If set,)144 560.4 +R F1(bash)2.89 E F0 .39(uses its v)2.89 F .39 +(alue as the name of a directory in which)-.25 F F1(bash)2.891 E F0 .391 +(creates temporary \214les for the)2.891 F(shell')144 572.4 Q 2.5(su) +-.55 G(se.)-2.5 E F1(auto_r)108 584.4 Q(esume)-.18 E F0 .531(This v)144 +596.4 R .531(ariable controls ho)-.25 F 3.031(wt)-.25 G .531 +(he shell interacts with the user and job control.)-3.031 F .53 +(If this v)5.53 F .53(ariable is set,)-.25 F .538(single w)144 608.4 R .538(ord simple commands without redirections are treated as candidates\ - for resumption of an)-.1 F -.15(ex)144 292.8 S .366(isting stopped job) -.15 F 5.366(.T)-.4 G .366(here is no ambiguity allo)-5.366 F .366 -(wed; if there is more than one job be)-.25 F .367(ginning with)-.15 F -1.125(the string typed, the job most recently accessed is selected.)144 -304.8 R(The)6.125 E F2(name)3.985 E F0 1.124(of a stopped job, in this) -3.805 F(conte)144 316.8 Q 1.132 + for resumption of an)-.1 F -.15(ex)144 620.4 S .367(isting stopped job) +.15 F 5.367(.T)-.4 G .366(here is no ambiguity allo)-5.367 F .366 +(wed; if there is more than one job be)-.25 F .366(ginning with)-.15 F +1.124(the string typed, the job most recently accessed is selected.)144 +632.4 R(The)6.125 E F3(name)3.985 E F0 1.125(of a stopped job, in this) +3.805 F(conte)144 644.4 Q 1.133 (xt, is the command line used to start it.)-.15 F 1.133(If set to the v) -6.133 F(alue)-.25 E F2 -.2(ex)3.633 G(act).2 E F0 3.633(,t).68 G 1.133 -(he string supplied must)-3.633 F .606 -(match the name of a stopped job e)144 328.8 R .606(xactly; if set to) --.15 F F2(substring)3.445 E F0 3.105(,t).22 G .605 -(he string supplied needs to match a)-3.105 F .884 -(substring of the name of a stopped job)144 340.8 R 5.884(.T)-.4 G(he) --5.884 E F2(substring)3.724 E F0 -.25(va)3.604 G .885(lue pro).25 F .885 -(vides functionality analogous to)-.15 F(the)144 352.8 Q F1(%?)3.334 E -F0 .834(job identi\214er \(see)5.834 F F3 .834(JOB CONTR)3.334 F(OL)-.27 +6.133 F(alue)-.25 E F3 -.2(ex)3.633 G(act).2 E F0 3.632(,t).68 G 1.132 +(he string supplied must)-3.632 F .605 +(match the name of a stopped job e)144 656.4 R .606(xactly; if set to) +-.15 F F3(substring)3.446 E F0 3.106(,t).22 G .606 +(he string supplied needs to match a)-3.106 F .885 +(substring of the name of a stopped job)144 668.4 R 5.884(.T)-.4 G(he) +-5.884 E F3(substring)3.724 E F0 -.25(va)3.604 G .884(lue pro).25 F .884 +(vides functionality analogous to)-.15 F(the)144 680.4 Q F1(%?)3.333 E +F0 .833(job identi\214er \(see)5.833 F F2 .834(JOB CONTR)3.334 F(OL)-.27 E F0(belo)3.084 E 3.334(w\). If)-.25 F .834(set to an)3.334 F 3.334(yo) --.15 G .834(ther v)-3.334 F .833(alue, the supplied string)-.25 F .315 -(must be a pre\214x of a stopped job')144 364.8 R 2.816(sn)-.55 G .316 -(ame; this pro)-2.816 F .316(vides functionality analogous to the)-.15 F -F1(%)2.816 E F2(string)A F0(job)2.816 E(identi\214er)144 376.8 Q(.)-.55 -E F1(histchars)108 388.8 Q F0 .546(The tw)144 400.8 R 3.046(oo)-.1 G -3.046(rt)-3.046 G .546(hree characters which control history e)-3.046 F -.545(xpansion and tok)-.15 F .545(enization \(see)-.1 F F3(HIST)3.045 E -(OR)-.162 E 2.795(YE)-.315 G(X-)-2.795 E -.666(PA)144 412.8 S(NSION).666 -E F0(belo)2.987 E 3.237(w\). The)-.25 F .737(\214rst character is the) -3.237 F F2 .737(history e)3.237 F(xpansion)-.2 E F0(character)3.238 E -3.238(,t)-.4 G .738(he character which sig-)-3.238 F .761 -(nals the start of a history e)144 424.8 R .761(xpansion, normally `) --.15 F F1(!)A F0 3.261('. The)B .76(second character is the)3.261 F F2 -(quic)3.26 E 3.26(ks)-.2 G(ubstitution)-3.26 E F0(character)144 436.8 Q -3.476(,w)-.4 G .977(hich is used as shorthand for re-running the pre) --3.476 F .977(vious command entered, substituting)-.25 F .131 -(one string for another in the command.)144 448.8 R .131(The def)5.131 F -.131(ault is `)-.1 F F1(^)A F0 2.63('. The)B .13 -(optional third character is the char)2.63 F(-)-.2 E .276(acter which i\ -ndicates that the remainder of the line is a comment when found as the \ -\214rst character)144 460.8 R .46(of a w)144 472.8 R .46 -(ord, normally `)-.1 F F1(#)A F0 2.959('. The)B .459 +-.15 G .834(ther v)-3.334 F .834(alue, the supplied string)-.25 F .316 +(must be a pre\214x of a stopped job')144 692.4 R 2.816(sn)-.55 G .316 +(ame; this pro)-2.816 F .315(vides functionality analogous to the)-.15 F +F1(%)2.815 E F3(string)A F0(job)2.815 E(identi\214er)144 704.4 Q(.)-.55 +E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(19)185.115 E 0 Cg EP +%%Page: 20 20 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(histchars)108 84 Q F0 .545(The tw)144 96 R 3.045(oo)-.1 G 3.045(rt) +-3.045 G .545(hree characters which control history e)-3.045 F .546 +(xpansion and tok)-.15 F .546(enization \(see)-.1 F/F2 9/Times-Bold@0 SF +(HIST)3.046 E(OR)-.162 E 2.796(YE)-.315 G(X-)-2.796 E -.666(PA)144 108 S +(NSION).666 E F0(belo)2.988 E 3.238(w\). The)-.25 F .738 +(\214rst character is the)3.238 F/F3 10/Times-Italic@0 SF .737 +(history e)3.237 F(xpansion)-.2 E F0(character)3.237 E 3.237(,t)-.4 G +.737(he character which sig-)-3.237 F .76(nals the start of a history e) +144 120 R .761(xpansion, normally `)-.15 F F1(!)A F0 3.261('. The)B .761 +(second character is the)3.261 F F3(quic)3.261 E 3.261(ks)-.2 G +(ubstitution)-3.261 E F0(character)144 132 Q 3.477(,w)-.4 G .977 +(hich is used as shorthand for re-running the pre)-3.477 F .976 +(vious command entered, substituting)-.25 F .13 +(one string for another in the command.)144 144 R .131(The def)5.13 F +.131(ault is `)-.1 F F1(^)A F0 2.631('. The)B .131 +(optional third character is the char)2.631 F(-)-.2 E .276(acter which \ +indicates that the remainder of the line is a comment when found as the\ + \214rst character)144 156 R .459(of a w)144 168 R .459(ord, normally `) +-.1 F F1(#)A F0 2.959('. The)B .459 (history comment character causes history substitution to be skipped) -2.959 F .466(for the remaining w)144 484.8 R .466(ords on the line.)-.1 -F .467(It does not necessarily cause the shell parser to treat the rest) -5.467 F(of the line as a comment.)144 496.8 Q F1(Arrays)87 513.6 Q(Bash) -108 525.6 Q F0(pro)3.391 E .891(vides one-dimensional inde)-.15 F -.15 -(xe)-.15 G 3.391(da).15 G .891(nd associati)-3.391 F 1.191 -.15(ve a) --.25 H .891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G .89 -(ariable may be used as an)-3.641 F(inde)108 537.6 Q -.15(xe)-.15 G -2.573(da).15 G .073(rray; the)-2.573 F F1(declar)2.573 E(e)-.18 E F0 -.2 -(bu)2.573 G .073(iltin will e).2 F .073(xplicitly declare an array)-.15 -F 5.073(.T)-.65 G .074(here is no maximum limit on the size of)-5.073 F -.329(an array)108 549.6 R 2.829(,n)-.65 G .329(or an)-2.829 F 2.829(yr) --.15 G .329(equirement that members be inde)-2.829 F -.15(xe)-.15 G -2.829(do).15 G 2.829(ra)-2.829 G .328(ssigned contiguously)-2.829 F -5.328(.I)-.65 G(nde)-5.328 E -.15(xe)-.15 G 2.828(da).15 G .328 -(rrays are refer)-2.828 F(-)-.2 E 1.595(enced using inte)108 561.6 R +2.959 F .467(for the remaining w)144 180 R .467(ords on the line.)-.1 F +.466(It does not necessarily cause the shell parser to treat the rest) +5.467 F(of the line as a comment.)144 192 Q F1(Arrays)87 208.8 Q(Bash) +108 220.8 Q F0(pro)3.39 E .89(vides one-dimensional inde)-.15 F -.15(xe) +-.15 G 3.39(da).15 G .891(nd associati)-3.39 F 1.191 -.15(ve a)-.25 H +.891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G .891 +(ariable may be used as an)-3.641 F(inde)108 232.8 Q -.15(xe)-.15 G +2.574(da).15 G .074(rray; the)-2.574 F F1(declar)2.574 E(e)-.18 E F0 -.2 +(bu)2.574 G .074(iltin will e).2 F .073(xplicitly declare an array)-.15 +F 5.073(.T)-.65 G .073(here is no maximum limit on the size of)-5.073 F +.328(an array)108 244.8 R 2.828(,n)-.65 G .328(or an)-2.828 F 2.828(yr) +-.15 G .329(equirement that members be inde)-2.828 F -.15(xe)-.15 G +2.829(do).15 G 2.829(ra)-2.829 G .329(ssigned contiguously)-2.829 F +5.329(.I)-.65 G(nde)-5.329 E -.15(xe)-.15 G 2.829(da).15 G .329 +(rrays are refer)-2.829 F(-)-.2 E 1.595(enced using inte)108 256.8 R 1.595(gers \(including arithmetic e)-.15 F 1.595 (xpressions\) and are zero-based; associati)-.15 F 1.895 -.15(ve a)-.25 H 1.595(rrays are refer).15 F(-)-.2 E(enced using arbitrary strings.)108 -573.6 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G +268.8 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G (rray indices must be non-ne)-2.5 E -.05(ga)-.15 G(ti).05 E .3 -.15 -(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.463(An inde)108 590.4 R -.15(xe) --.15 G 4.963(da).15 G 2.463(rray is created automatically if an)-4.963 F -4.963(yv)-.15 G 2.462(ariable is assigned to using the syntax)-5.213 F -F2(name)4.962 E F0([)A F2(sub-)A(script)108 602.4 Q F0(]=)A F2(value)A -F0 5.506(.T)C(he)-5.506 E F2(subscript)3.346 E F0 .507 +(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.462(An inde)108 285.6 R -.15(xe) +-.15 G 4.962(da).15 G 2.462(rray is created automatically if an)-4.962 F +4.963(yv)-.15 G 2.463(ariable is assigned to using the syntax)-5.213 F +F3(name)4.963 E F0([)A F3(sub-)A(script)108 297.6 Q F0(]=)A F3(value)A +F0 5.507(.T)C(he)-5.507 E F3(subscript)3.347 E F0 .507 (is treated as an arithmetic e)3.687 F .507(xpression that must e)-.15 F --.25(va)-.25 G .507(luate to a number).25 F 5.507(.T)-.55 G 3.007(oe) --6.307 G(x-)-3.157 E 1.193(plicitly declare an inde)108 614.4 R -.15(xe) --.15 G 3.693(da).15 G(rray)-3.693 E 3.693(,u)-.65 G(se)-3.693 E F1 -(declar)3.693 E 3.693<65ad>-.18 G(a)-3.693 E F2(name)3.693 E F0(\(see) -3.692 E F3 1.192(SHELL B)3.692 F(UIL)-.09 E 1.192(TIN COMMANDS)-.828 F -F0(belo)3.442 E(w\).)-.25 E F1(de-)6.192 E(clar)108 626.4 Q 2.5<65ad> --.18 G(a)-2.5 E F2(name)2.5 E F1([)A F2(subscript)A F1(])A F0 -(is also accepted; the)2.5 E F2(subscript)2.5 E F0(is ignored.)2.5 E -(Associati)108 643.2 Q .3 -.15(ve a)-.25 H(rrays are created using).15 E -F1(declar)2.5 E 2.5<65ad>-.18 G(A)-2.5 E F2(name)2.5 E F0(.)A(Attrib)108 -660 Q .94(utes may be speci\214ed for an array v)-.2 F .941 -(ariable using the)-.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.441 E F1 --.18(re)3.441 G(adonly).18 E F0 -.2(bu)3.441 G 3.441(iltins. Each).2 F -(attrib)3.441 E(ute)-.2 E(applies to all members of an array)108 672 Q +-.25(va)-.25 G .507(luate to a number).25 F 5.506(.T)-.55 G 3.006(oe) +-6.306 G(x-)-3.156 E 1.192(plicitly declare an inde)108 309.6 R -.15(xe) +-.15 G 3.692(da).15 G(rray)-3.692 E 3.692(,u)-.65 G(se)-3.692 E F1 +(declar)3.692 E 3.693<65ad>-.18 G(a)-3.693 E F3(name)3.693 E F0(\(see) +3.693 E F2 1.193(SHELL B)3.693 F(UIL)-.09 E 1.193(TIN COMMANDS)-.828 F +F0(belo)3.443 E(w\).)-.25 E F1(de-)6.193 E(clar)108 321.6 Q 2.5<65ad> +-.18 G(a)-2.5 E F3(name)2.5 E F1([)A F3(subscript)A F1(])A F0 +(is also accepted; the)2.5 E F3(subscript)2.5 E F0(is ignored.)2.5 E +(Associati)108 338.4 Q .3 -.15(ve a)-.25 H(rrays are created using).15 E +F1(declar)2.5 E 2.5<65ad>-.18 G(A)-2.5 E F3(name)2.5 E F0(.)A(Attrib)108 +355.2 Q .941(utes may be speci\214ed for an array v)-.2 F .941 +(ariable using the)-.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.44 E F1 +-.18(re)3.44 G(adonly).18 E F0 -.2(bu)3.44 G 3.44(iltins. Each).2 F +(attrib)3.44 E(ute)-.2 E(applies to all members of an array)108 367.2 Q (.)-.65 E 1.647 -(Arrays are assigned to using compound assignments of the form)108 688.8 -R F2(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F2(1)A F0 1.647 -(... v)4.147 F(alue)-.25 E F2(n)A F1(\))A F0 4.147(,w)C 1.647(here each) --4.147 F F2(value)108 700.8 Q F0 .211(may be of the form [)2.711 F F2 -(subscript)A F0(]=)A F2(string)A F0 5.211(.I)C(nde)-5.211 E -.15(xe)-.15 -G 2.711(da).15 G .212(rray assignments do not require an)-2.711 F .212 -(ything b)-.15 F(ut)-.2 E F2(string)2.712 E F0(.)A(Each)108 712.8 Q F2 -(value)2.53 E F0 .029(in the list is e)2.529 F .029 +(Arrays are assigned to using compound assignments of the form)108 384 R +F3(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F3(1)A F0 1.647 +(... v)4.147 F(alue)-.25 E F3(n)A F1(\))A F0 4.148(,w)C 1.648(here each) +-4.148 F F3(value)108 396 Q F0 .212(may be of the form [)2.712 F F3 +(subscript)A F0(]=)A F3(string)A F0 5.211(.I)C(nde)-5.211 E -.15(xe)-.15 +G 2.711(da).15 G .211(rray assignments do not require an)-2.711 F .211 +(ything b)-.15 F(ut)-.2 E F3(string)2.711 E F0(.)A(Each)108 408 Q F3 +(value)2.529 E F0 .029(in the list is e)2.529 F .029 (xpanded using all the shell e)-.15 F .029(xpansions described belo)-.15 -F 2.529(wu)-.25 G(nder)-2.529 E F3(EXP)2.529 E(ANSION)-.666 E/F4 9 -/Times-Roman@0 SF(.)A F0(When)4.529 E .995(assigning to inde)108 724.8 R --.15(xe)-.15 G 3.495(da).15 G .995(rrays, if the optional brack)-3.495 F -.996(ets and subscript are supplied, that inde)-.1 F 3.496(xi)-.15 G -3.496(sa)-3.496 G .996(ssigned to;)-3.496 F(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(19)190.395 E 0 Cg EP -%%Page: 20 20 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .417 -(otherwise the inde)108 84 R 2.917(xo)-.15 G 2.917(ft)-2.917 G .417 -(he element assigned is the last inde)-2.917 F 2.917(xa)-.15 G .416 -(ssigned to by the statement plus one.)-2.917 F(Inde)5.416 E(x-)-.15 E -(ing starts at zero.)108 96 Q 1.288(When assigning to an associati)108 -112.8 R 1.588 -.15(ve a)-.25 H(rray).15 E 3.788(,t)-.65 G 1.288(he w) +F 2.529(wu)-.25 G(nder)-2.529 E F2(EXP)2.529 E(ANSION)-.666 E/F4 9 +/Times-Roman@0 SF(.)A F0(When)4.53 E .996(assigning to inde)108 420 R +-.15(xe)-.15 G 3.496(da).15 G .996(rrays, if the optional brack)-3.496 F +.996(ets and subscript are supplied, that inde)-.1 F 3.495(xi)-.15 G +3.495(sa)-3.495 G .995(ssigned to;)-3.495 F .416(otherwise the inde)108 +432 R 2.916(xo)-.15 G 2.916(ft)-2.916 G .417 +(he element assigned is the last inde)-2.916 F 2.917(xa)-.15 G .417 +(ssigned to by the statement plus one.)-2.917 F(Inde)5.417 E(x-)-.15 E +(ing starts at zero.)108 444 Q 1.288(When assigning to an associati)108 +460.8 R 1.588 -.15(ve a)-.25 H(rray).15 E 3.788(,t)-.65 G 1.288(he w) -3.788 F 1.288(ords in a compound assignment may be either assignment) -.1 F .608 (statements, for which the subscript is required, or a list of w)108 -124.8 R .608(ords that is interpreted as a sequence of alter)-.1 F(-)-.2 -E 1.956(nating k)108 136.8 R -.15(ey)-.1 G 4.456(sa).15 G 1.956(nd v) --4.456 F(alues:)-.25 E/F1 10/Times-Italic@0 SF(name)4.456 E F0(=)A/F2 10 -/Times-Bold@0 SF(\()A F1 -.1(ke)4.456 G 1.957(y1 value1 k)-.2 F -.3(ey) --.1 G 4.457(2v).3 G(alue2)-4.457 E F0(...)4.457 E F2(\))A F0 6.957(.T)C -1.957(hese are treated identically to)-6.957 F F1(name)4.457 E F0(=)A F2 -(\()A F0([)108 148.8 Q F1 -.1(ke)C(y1)-.2 E F0(]=)A F1(value1)A F0([) -3.133 E F1 -.1(ke)C(y2)-.2 E F0(]=)A F1(value2)A F0(...)3.133 E F2(\))A -F0 5.633(.T)C .633(he \214rst w)-5.633 F .633 -(ord in the list determines ho)-.1 F 3.132(wt)-.25 G .632 -(he remaining w)-3.132 F .632(ords are inter)-.1 F(-)-.2 E .153 -(preted; all assignments in a list must be of the same type.)108 160.8 R -.154(When using k)5.154 F -.15(ey)-.1 G(/v).15 E .154(alue pairs, the k) --.25 F -.15(ey)-.1 G 2.654(sm).15 G .154(ay not be)-2.654 F -(missing or empty; a \214nal missing v)108 172.8 Q(alue is treated lik) --.25 E 2.5(et)-.1 G(he empty string.)-2.5 E .24 -(This syntax is also accepted by the)108 189.6 R F2(declar)2.74 E(e)-.18 -E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .239 -(vidual array elements may be assigned to using the)-.25 F F1(name)108 -201.6 Q F0([)A F1(subscript)A F0(]=)A F1(value)A F0 1.917 -(syntax introduced abo)4.416 F -.15(ve)-.15 G 6.917(.W).15 G 1.917 +472.8 R .608(ords that is interpreted as a sequence of alter)-.1 F(-)-.2 +E 1.957(nating k)108 484.8 R -.15(ey)-.1 G 4.457(sa).15 G 1.957(nd v) +-4.457 F(alues:)-.25 E F3(name)4.457 E F0(=)A F1(\()A F3 -.1(ke)4.457 G +1.957(y1 value1 k)-.2 F -.3(ey)-.1 G 4.457(2v).3 G(alue2)-4.457 E F0 +(...)4.457 E F1(\))A F0 6.957(.T)C 1.956 +(hese are treated identically to)-6.957 F F3(name)4.456 E F0(=)A F1(\()A +F0([)108 496.8 Q F3 -.1(ke)C(y1)-.2 E F0(]=)A F3(value1)A F0([)3.132 E +F3 -.1(ke)C(y2)-.2 E F0(]=)A F3(value2)A F0(...)3.132 E F1(\))A F0 5.632 +(.T)C .632(he \214rst w)-5.632 F .633(ord in the list determines ho)-.1 +F 3.133(wt)-.25 G .633(he remaining w)-3.133 F .633(ords are inter)-.1 F +(-)-.2 E .154 +(preted; all assignments in a list must be of the same type.)108 508.8 R +.153(When using k)5.153 F -.15(ey)-.1 G(/v).15 E .153(alue pairs, the k) +-.25 F -.15(ey)-.1 G 2.653(sm).15 G .153(ay not be)-2.653 F +(missing or empty; a \214nal missing v)108 520.8 Q(alue is treated lik) +-.25 E 2.5(et)-.1 G(he empty string.)-2.5 E .239 +(This syntax is also accepted by the)108 537.6 R F1(declar)2.739 E(e) +-.18 E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .24 +(vidual array elements may be assigned to using the)-.25 F F3(name)108 +549.6 Q F0([)A F3(subscript)A F0(]=)A F3(value)A F0 1.917 +(syntax introduced abo)4.417 F -.15(ve)-.15 G 6.917(.W).15 G 1.917 (hen assigning to an inde)-6.917 F -.15(xe)-.15 G 4.417(da).15 G(rray) --4.417 E 4.417(,i)-.65 G(f)-4.417 E F1(name)4.777 E F0 1.917(is sub-) -4.597 F .116(scripted by a ne)108 213.6 R -.05(ga)-.15 G(ti).05 E .416 --.15(ve n)-.25 H(umber).15 E 2.616(,t)-.4 G .115 -(hat number is interpreted as relati)-2.616 F .415 -.15(ve t)-.25 H -2.615(oo).15 G .115(ne greater than the maximum inde)-2.615 F(x)-.15 E -(of)108 225.6 Q F1(name)2.676 E F0 2.676(,s)C 2.676(on)-2.676 G -2.25 --.15(eg a)-2.676 H(ti).15 E .476 -.15(ve i)-.25 H .177 +-4.417 E 4.417(,i)-.65 G(f)-4.417 E F3(name)4.777 E F0 1.916(is sub-) +4.597 F .115(scripted by a ne)108 561.6 R -.05(ga)-.15 G(ti).05 E .415 +-.15(ve n)-.25 H(umber).15 E 2.615(,t)-.4 G .115 +(hat number is interpreted as relati)-2.615 F .415 -.15(ve t)-.25 H +2.615(oo).15 G .116(ne greater than the maximum inde)-2.615 F(x)-.15 E +(of)108 573.6 Q F3(name)2.677 E F0 2.677(,s)C 2.677(on)-2.677 G -2.25 +-.15(eg a)-2.677 H(ti).15 E .477 -.15(ve i)-.25 H .177 (ndices count back from the end of the array).15 F 2.677(,a)-.65 G .177 -(nd an inde)-2.677 F 2.677(xo)-.15 G 2.677<66ad>-2.677 G 2.677(1r)-2.677 -G .177(eferences the last el-)-2.677 F(ement.)108 237.6 Q(An)108 254.4 Q -3.576(ye)-.15 G 1.076(lement of an array may be referenced using ${) --3.576 F F1(name)A F0([)A F1(subscript)A F0 3.575(]}. The)B 1.075 -(braces are required to a)3.575 F -.2(vo)-.2 G(id).2 E 1.541 -(con\215icts with pathname e)108 266.4 R 4.041(xpansion. If)-.15 F F1 -(subscript)4.041 E F0(is)4.041 E F2(@)4.041 E F0(or)4.041 E F2(*)4.041 E -F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F 1.541 -(xpands to all members of)-.15 F F1(name)4.042 E F0(.)A 1.057 -(These subscripts dif)108 278.4 R 1.057(fer only when the w)-.25 F 1.057 +(nd an inde)-2.677 F 2.676(xo)-.15 G 2.676<66ad>-2.676 G 2.676(1r)-2.676 +G .176(eferences the last el-)-2.676 F(ement.)108 585.6 Q .716 +(The += operator will append to an array v)108 602.4 R .717 +(ariable when assigning using the compound assignment syntax;)-.25 F +(see)108 614.4 Q F2 -.666(PA)2.5 G(RAMETERS).666 E F0(abo)2.25 E -.15 +(ve)-.15 G(.).15 E(An)108 631.2 Q 3.576(ye)-.15 G 1.076 +(lement of an array may be referenced using ${)-3.576 F F3(name)A F0([)A +F3(subscript)A F0 3.575(]}. The)B 1.075(braces are required to a)3.575 F +-.2(vo)-.2 G(id).2 E 1.541(con\215icts with pathname e)108 643.2 R 4.041 +(xpansion. If)-.15 F F3(subscript)4.041 E F0(is)4.041 E F1(@)4.041 E F0 +(or)4.041 E F1(*)4.041 E F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e) +-.1 F 1.541(xpands to all members of)-.15 F F3(name)4.042 E F0(.)A 1.057 +(These subscripts dif)108 655.2 R 1.057(fer only when the w)-.25 F 1.057 (ord appears within double quotes.)-.1 F 1.056(If the w)6.056 F 1.056 -(ord is double-quoted,)-.1 F(${)108 290.4 Q F1(name)A F0 .52([*]} e)B +(ord is double-quoted,)-.1 F(${)108 667.2 Q F3(name)A F0 .52([*]} e)B .52(xpands to a single w)-.15 F .52(ord with the v)-.1 F .521 (alue of each array member separated by the \214rst character)-.25 F -1.375(of the)108 302.4 R/F3 9/Times-Bold@0 SF(IFS)3.875 E F0 1.375 -(special v)3.625 F 1.375(ariable, and ${)-.25 F F1(name)A F0 1.375 -([@]} e)B 1.375(xpands each element of)-.15 F F1(name)3.875 E F0 1.374 -(to a separate w)3.875 F 3.874(ord. When)-.1 F 2.027 -(there are no array members, ${)108 314.4 R F1(name)A F0 2.028([@]} e)B -2.028(xpands to nothing.)-.15 F 2.028(If the double-quoted e)7.028 F -2.028(xpansion occurs)-.15 F .759(within a w)108 326.4 R .759 -(ord, the e)-.1 F .759 +1.375(of the)108 679.2 R F2(IFS)3.875 E F0 1.375(special v)3.625 F 1.375 +(ariable, and ${)-.25 F F3(name)A F0 1.375([@]} e)B 1.375 +(xpands each element of)-.15 F F3(name)3.875 E F0 1.374(to a separate w) +3.875 F 3.874(ord. When)-.1 F 2.027(there are no array members, ${)108 +691.2 R F3(name)A F0 2.028([@]} e)B 2.028(xpands to nothing.)-.15 F +2.028(If the double-quoted e)7.028 F 2.028(xpansion occurs)-.15 F .759 +(within a w)108 703.2 R .759(ord, the e)-.1 F .759 (xpansion of the \214rst parameter is joined with the be)-.15 F .759 (ginning part of the original w)-.15 F(ord,)-.1 E .515(and the e)108 -338.4 R .516(xpansion of the last parameter is joined with the last par\ +715.2 R .516(xpansion of the last parameter is joined with the last par\ t of the original w)-.15 F 3.016(ord. This)-.1 F .516(is analogous)3.016 -F .228(to the e)108 350.4 R .228(xpansion of the special parameters)-.15 -F F2(*)2.728 E F0(and)2.728 E F2(@)2.728 E F0(\(see)2.728 E F2 .228 +F .228(to the e)108 727.2 R .228(xpansion of the special parameters)-.15 +F F1(*)2.728 E F0(and)2.728 E F1(@)2.728 E F0(\(see)2.728 E F1 .228 (Special P)2.728 F(arameters)-.1 E F0(abo)2.727 E -.15(ve)-.15 G 2.727 -(\). ${#).15 F F1(name)A F0([)A F1(subscript)A F0(]})A -.15(ex)108 362.4 -S .886(pands to the length of ${).15 F F1(name)A F0([)A F1(subscript)A -F0 3.386(]}. If)B F1(subscript)3.386 E F0(is)3.386 E F2(*)3.386 E F0(or) -3.386 E F2(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886 -(xpansion is the number of ele-)-.15 F .295(ments in the array)108 374.4 -R 5.295(.I)-.65 G 2.795(ft)-5.295 G(he)-2.795 E F1(subscript)3.135 E F0 -.295(used to reference an element of an inde)3.475 F -.15(xe)-.15 G -2.794(da).15 G .294(rray e)-2.794 F -.25(va)-.25 G .294 -(luates to a number).25 F .628 -(less than zero, it is interpreted as relati)108 386.4 R .928 -.15(ve t) +(\). ${#).15 F F3(name)A F0([)A F3(subscript)A F0(]})A(GNU Bash 5.2)72 +768 Q(2022 September 19)135.955 E(20)185.115 E 0 Cg EP +%%Page: 21 21 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.15(ex)108 84 S +.886(pands to the length of ${).15 F/F1 10/Times-Italic@0 SF(name)A F0 +([)A F1(subscript)A F0 3.386(]}. If)B F1(subscript)3.386 E F0(is)3.386 E +/F2 10/Times-Bold@0 SF(*)3.386 E F0(or)3.386 E F2(@)3.386 E F0 3.386(,t) +C .886(he e)-3.386 F .886(xpansion is the number of ele-)-.15 F .295 +(ments in the array)108 96 R 5.295(.I)-.65 G 2.795(ft)-5.295 G(he)-2.795 +E F1(subscript)3.135 E F0 .295(used to reference an element of an inde) +3.475 F -.15(xe)-.15 G 2.794(da).15 G .294(rray e)-2.794 F -.25(va)-.25 +G .294(luates to a number).25 F .628 +(less than zero, it is interpreted as relati)108 108 R .928 -.15(ve t) -.25 H 3.128(oo).15 G .629(ne greater than the maximum inde)-3.128 F 3.129(xo)-.15 G 3.129(ft)-3.129 G .629(he array)-3.129 F 3.129(,s)-.65 G 3.129(on)-3.129 G -2.25 -.15(eg a)-3.129 H(ti).15 E -.15(ve)-.25 G -(indices count back from the end of the array)108 398.4 Q 2.5(,a)-.65 G +(indices count back from the end of the array)108 120 Q 2.5(,a)-.65 G (nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G (eferences the last element.)-2.5 E .595(Referencing an array v)108 -415.2 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G +136.8 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G .595(lent to referencing the array with a subscript of).25 F 2.5(0. An) -108 427.2 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25 +108 148.8 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25 E(alid subscript is le)-.25 E -.05(ga)-.15 G(l, and).05 E F2(bash)2.5 E -F0(will create an array if necessary)2.5 E(.)-.65 E(An array v)108 444 Q -(ariable is considered set if a subscript has been assigned a v)-.25 E +F0(will create an array if necessary)2.5 E(.)-.65 E(An array v)108 165.6 +Q(ariable is considered set if a subscript has been assigned a v)-.25 E 2.5(alue. The)-.25 F(null string is a v)2.5 E(alid v)-.25 E(alue.)-.25 E -.417(It is possible to obtain the k)108 460.8 R -.15(ey)-.1 G 2.918(s\() +.417(It is possible to obtain the k)108 182.4 R -.15(ey)-.1 G 2.918(s\() .15 G .418(indices\) of an array as well as the v)-2.918 F 2.918 (alues. ${)-.25 F F2(!)A F1(name)A F0([)A F1(@)A F0 .418(]} and ${)B F2 -(!)A F1(name)A F0([)A F1(*)A F0(]})A -.15(ex)108 472.8 S .75 +(!)A F1(name)A F0([)A F1(*)A F0(]})A -.15(ex)108 194.4 S .75 (pand to the indices assigned in array v).15 F(ariable)-.25 E F1(name) 3.249 E F0 5.749(.T)C .749 (he treatment when in double quotes is similar to)-5.749 F(the e)108 -484.8 Q(xpansion of the special parameters)-.15 E F1(@)2.5 E F0(and)2.5 -E F1(*)2.5 E F0(within double quotes.)2.5 E(The)108 501.6 Q F2(unset) +206.4 Q(xpansion of the special parameters)-.15 E F1(@)2.5 E F0(and)2.5 +E F1(*)2.5 E F0(within double quotes.)2.5 E(The)108 223.2 Q F2(unset) 2.766 E F0 -.2(bu)2.766 G .267(iltin is used to destro).2 F 2.767(ya)-.1 G(rrays.)-2.767 E F2(unset)5.267 E F1(name)2.767 E F0([)A F1(subscript)A F0 2.767(]d)C(estro)-2.767 E .267(ys the array element at inde)-.1 F(x) --.15 E F1(sub-)2.767 E(script)108 513.6 Q F0 2.858(,f)C .358 +-.15 E F1(sub-)2.767 E(script)108 235.2 Q F0 2.858(,f)C .358 (or both inde)-2.858 F -.15(xe)-.15 G 2.858(da).15 G .358(nd associati) -2.858 F .658 -.15(ve a)-.25 H 2.858(rrays. Ne).15 F -.05(ga)-.15 G(ti) .05 E .658 -.15(ve s)-.25 H .358(ubscripts to inde).15 F -.15(xe)-.15 G 2.858(da).15 G .358(rrays are interpreted as de-)-2.858 F 1.204 -(scribed abo)108 525.6 R -.15(ve)-.15 G 6.204(.U).15 G 1.204 +(scribed abo)108 247.2 R -.15(ve)-.15 G 6.204(.U).15 G 1.204 (nsetting the last element of an array v)-6.204 F 1.205 (ariable does not unset the v)-.25 F(ariable.)-.25 E F2(unset)6.205 E F1 -(name)3.705 E F0(,)A(where)108 537.6 Q F1(name)2.5 E F0(is an array)2.5 -E 2.5(,o)-.65 G(r)-2.5 E F2(unset)2.5 E F1(name)2.5 E F0([)A F1 -(subscript)A F0(], where)A F1(subscript)2.5 E F0(is)2.5 E F2(*)2.5 E F0 -(or)2.5 E F2(@)2.5 E F0 2.5(,r)C(emo)-2.5 E -.15(ve)-.15 G 2.5(st).15 G -(he entire array)-2.5 E(.)-.65 E .029(When using a v)108 554.4 R .029 -(ariable name with a subscript as an ar)-.25 F .028 -(gument to a command, such as with)-.18 F F2(unset)2.528 E F0 2.528(,w)C -.028(ithout us-)-2.528 F .937(ing the w)108 566.4 R .937(ord e)-.1 F -.937(xpansion syntax described abo)-.15 F -.15(ve)-.15 G 3.437(,t).15 G -.937(he ar)-3.437 F .938(gument is subject to pathname e)-.18 F 3.438 -(xpansion. If)-.15 F(path-)3.438 E(name e)108 578.4 Q +(name)3.705 E F0(,)A(where)108 259.2 Q F1(name)3.413 E F0 .913 +(is an array)3.413 F 3.413(,r)-.65 G(emo)-3.413 E -.15(ve)-.15 G 3.413 +(st).15 G .912(he entire array)-3.413 F(.)-.65 E F2(unset)5.912 E F1 +(name)3.412 E F0([)A F1(subscript)A F0 .912(], where)B F1(subscript) +3.412 E F0(is)3.412 E F2(*)3.412 E F0(or)3.412 E F2(@)3.412 E F0 3.412 +(,b)C(e-)-3.412 E(ha)108 271.2 Q -.15(ve)-.2 G 3.125(sd).15 G(if)-3.125 +E .625(ferently depending on whether)-.25 F F1(name)3.125 E F0 .626 +(is an inde)3.125 F -.15(xe)-.15 G 3.126(do).15 G 3.126(ra)-3.126 G +(ssociati)-3.126 E .926 -.15(ve a)-.25 H(rray).15 E 5.626(.I)-.65 G(f) +-5.626 E F1(name)3.126 E F0 .626(is an associati)3.126 F -.15(ve)-.25 G +(array)108 283.2 Q 3.067(,t)-.65 G .567 +(his unsets the element with subscript)-3.067 F F2(*)3.067 E F0(or)3.067 +E F2(@)3.067 E F0 5.567(.I)C(f)-5.567 E F1(name)3.067 E F0 .567 +(is an inde)3.067 F -.15(xe)-.15 G 3.067(da).15 G(rray)-3.067 E 3.067 +(,u)-.65 G .567(nset remo)-3.067 F -.15(ve)-.15 G 3.067(sa).15 G .567 +(ll of the)-3.067 F(elements b)108 295.2 Q(ut does not remo)-.2 E .3 +-.15(ve t)-.15 H(he array itself.).15 E .028(When using a v)108 312 R +.028(ariable name with a subscript as an ar)-.25 F .029 +(gument to a command, such as with)-.18 F F2(unset)2.529 E F0 2.529(,w)C +.029(ithout us-)-2.529 F .938(ing the w)108 324 R .938(ord e)-.1 F .938 +(xpansion syntax described abo)-.15 F -.15(ve)-.15 G 3.437(,t).15 G .937 +(he ar)-3.437 F .937(gument is subject to pathname e)-.18 F 3.437 +(xpansion. If)-.15 F(path-)3.437 E(name e)108 336 Q (xpansion is not desired, the ar)-.15 E(gument should be quoted.)-.18 E -(The)108 595.2 Q F2(declar)2.684 E(e)-.18 E F0(,)A F2(local)2.684 E F0 -2.684(,a)C(nd)-2.684 E F2 -.18(re)2.684 G(adonly).18 E F0 -.2(bu)2.684 G +(The)108 352.8 Q F2(declar)2.683 E(e)-.18 E F0(,)A F2(local)2.683 E F0 +2.683(,a)C(nd)-2.683 E F2 -.18(re)2.683 G(adonly).18 E F0 -.2(bu)2.683 G .184(iltins each accept a).2 F F22.684 E F0 .184 -(option to specify an inde)2.684 F -.15(xe)-.15 G 2.683(da).15 G .183 -(rray and a)-2.683 F F22.683 E F0(op-)2.683 E .041 -(tion to specify an associati)108 607.2 R .341 -.15(ve a)-.25 H(rray).15 +(option to specify an inde)2.684 F -.15(xe)-.15 G 2.684(da).15 G .184 +(rray and a)-2.684 F F22.684 E F0(op-)2.684 E .042 +(tion to specify an associati)108 364.8 R .341 -.15(ve a)-.25 H(rray).15 E 5.041(.I)-.65 G 2.541(fb)-5.041 G .041(oth options are supplied,) -2.541 F F22.541 E F0(tak)2.541 E .041(es precedence.)-.1 F(The) -5.041 E F2 -.18(re)2.542 G(ad).18 E F0 -.2(bu)2.542 G .042(iltin ac-).2 -F .864(cepts a)108 619.2 R F23.364 E F0 .864 -(option to assign a list of w)3.364 F .864 -(ords read from the standard input to an array)-.1 F 5.863(.T)-.65 G(he) --5.863 E F2(set)3.363 E F0(and)3.363 E F2(declar)3.363 E(e)-.18 E F0 -.2 -(bu)108 631.2 S(iltins display array v).2 E(alues in a w)-.25 E -(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F4 10.95 -/Times-Bold@0 SF(EXP)72 648 Q(ANSION)-.81 E F0 .76(Expansion is perform\ -ed on the command line after it has been split into w)108 660 R 3.26 +5.041 E F2 -.18(re)2.541 G(ad).18 E F0 -.2(bu)2.541 G .041(iltin ac-).2 +F .863(cepts a)108 376.8 R F23.363 E F0 .864 +(option to assign a list of w)3.363 F .864 +(ords read from the standard input to an array)-.1 F 5.864(.T)-.65 G(he) +-5.864 E F2(set)3.364 E F0(and)3.364 E F2(declar)3.364 E(e)-.18 E F0 -.2 +(bu)108 388.8 S(iltins display array v).2 E(alues in a w)-.25 E +(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F3 10.95 +/Times-Bold@0 SF(EXP)72 405.6 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ +rmed on the command line after it has been split into w)108 417.6 R 3.26 (ords. There)-.1 F .76(are se)3.26 F -.15(ve)-.25 G 3.26(nk).15 G .76 -(inds of)-3.26 F -.15(ex)108 672 S .201(pansion performed:).15 F F1(br) +(inds of)-3.26 F -.15(ex)108 429.6 S .2(pansion performed:).15 F F1(br) 2.971 E .201(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .201(tilde e) 2.831 F(xpansion)-.2 E F0(,).24 E F1(par)3.951 E .201 -(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .2 -(command sub-)2.901 F(stitution)108 684 Q F0(,).24 E F1(arithmetic e) +(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .201 +(command sub-)2.901 F(stitution)108 441.6 Q F0(,).24 E F1(arithmetic e) 2.83 E(xpansion)-.2 E F0(,).24 E F1(wor)2.84 E 2.5(ds)-.37 G(plitting) -2.5 E F0 2.5(,a).22 G(nd)-2.5 E F1(pathname e)3.75 E(xpansion)-.2 E F0 -(.).24 E .418(The order of e)108 700.8 R .418(xpansions is: brace e)-.15 -F .418(xpansion; tilde e)-.15 F .419(xpansion, parameter and v)-.15 F -.419(ariable e)-.25 F .419(xpansion, arithmetic)-.15 F -.15(ex)108 712.8 -S .196(pansion, and command substitution \(done in a left-to-right f).15 -F .195(ashion\); w)-.1 F .195(ord splitting; and pathname e)-.1 F(xpan-) --.15 E(sion.)108 724.8 Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E -(20)190.395 E 0 Cg EP -%%Page: 21 21 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .257 -(On systems that can support it, there is an additional e)108 84 R .257 -(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E/F1 10/Times-Italic@0 SF -(pr)2.757 E .257(ocess substitution)-.45 F F0 5.257(.T)C .257 -(his is per)-5.257 F(-)-.2 E -(formed at the same time as tilde, parameter)108 96 Q 2.5(,v)-.4 G +(.).24 E .419(The order of e)108 458.4 R .419(xpansions is: brace e)-.15 +F .418(xpansion; tilde e)-.15 F .418(xpansion, parameter and v)-.15 F +.418(ariable e)-.25 F .418(xpansion, arithmetic)-.15 F -.15(ex)108 470.4 +S .195(pansion, and command substitution \(done in a left-to-right f).15 +F .196(ashion\); w)-.1 F .196(ord splitting; and pathname e)-.1 F(xpan-) +-.15 E(sion.)108 482.4 Q .257 +(On systems that can support it, there is an additional e)108 499.2 R +.257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F1(pr)2.757 E .257 +(ocess substitution)-.45 F F0 5.257(.T)C .256(his is per)-5.257 F(-)-.2 +E(formed at the same time as tilde, parameter)108 511.2 Q 2.5(,v)-.4 G (ariable, and arithmetic e)-2.75 E(xpansion and command substitution.) --.15 E .003(After these e)108 112.8 R .003 +-.15 E .002(After these e)108 528 R .003 (xpansions are performed, quote characters present in the original w) --.15 F .002(ord are remo)-.1 F -.15(ve)-.15 G 2.502(du).15 G .002 -(nless the)-2.502 F(y)-.15 E(ha)108 124.8 Q .3 -.15(ve b)-.2 H +-.15 F .003(ord are remo)-.1 F -.15(ve)-.15 G 2.503(du).15 G .003 +(nless the)-2.503 F(y)-.15 E(ha)108 540 Q .3 -.15(ve b)-.2 H (een quoted themselv).15 E(es \()-.15 E F1(quote r)A(emo)-.37 E(val)-.1 -E F0(\).)A .171(Only brace e)108 141.6 R .171(xpansion, w)-.15 F .171 +E F0(\).)A .172(Only brace e)108 556.8 R .172(xpansion, w)-.15 F .171 (ord splitting, and pathname e)-.1 F .171 -(xpansion can increase the number of w)-.15 F .172(ords of the e)-.1 F -(x-)-.15 E .777(pansion; other e)108 153.6 R .776(xpansions e)-.15 F +(xpansion can increase the number of w)-.15 F .171(ords of the e)-.1 F +(x-)-.15 E .776(pansion; other e)108 568.8 R .776(xpansions e)-.15 F .776(xpand a single w)-.15 F .776(ord to a single w)-.1 F 3.276 (ord. The)-.1 F .776(only e)3.276 F .776(xceptions to this are the e) --.15 F(x-)-.15 E .695(pansions of ")108 165.6 R/F2 10/Times-Bold@0 SF -($@)A F0 3.195("a)C .695(nd ")-3.195 F F2(${)A F1(name)A F2([@]})A F0 -.696(", and, in most cases,)B F2($*)3.196 E F0(and)3.196 E F2(${)3.196 E -F1(name)A F2([*]})A F0 .696(as e)3.196 F .696(xplained abo)-.15 F .996 --.15(ve \()-.15 H(see).15 E/F3 9/Times-Bold@0 SF -.666(PA)3.196 G(-).666 -E(RAMETERS)108 177.6 Q/F4 9/Times-Roman@0 SF(\).)A F2(Brace Expansion)87 -194.4 Q F1(Br)108.58 206.4 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606 +-.15 F(x-)-.15 E .696(pansions of ")108 580.8 R F2($@)A F0 3.196("a)C +.696(nd ")-3.196 F F2(${)A F1(name)A F2([@]})A F0 .696 +(", and, in most cases,)B F2($*)3.196 E F0(and)3.196 E F2(${)3.196 E F1 +(name)A F2([*]})A F0 .695(as e)3.196 F .695(xplained abo)-.15 F .995 +-.15(ve \()-.15 H(see).15 E/F4 9/Times-Bold@0 SF -.666(PA)3.195 G(-).666 +E(RAMETERS)108 592.8 Q/F5 9/Times-Roman@0 SF(\).)A F2(Brace Expansion)87 +609.6 Q F1(Br)108.58 621.6 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606 (is a mechanism by which arbitrary strings may be generated.)3.346 F -.606(This mechanism is similar)5.606 F(to)108 218.4 Q F1 .415 +.606(This mechanism is similar)5.606 F(to)108 633.6 Q F1 .415 (pathname e)2.915 F(xpansion)-.2 E F0 2.915(,b)C .415 (ut the \214lenames generated need not e)-3.115 F 2.915(xist. P)-.15 F .415(atterns to be brace e)-.15 F .415(xpanded tak)-.15 F 2.915(et)-.1 G -(he)-2.915 E .074(form of an optional)108 230.4 R F1(pr)3.823 E(eamble) +(he)-2.915 E .073(form of an optional)108 645.6 R F1(pr)3.823 E(eamble) -.37 E F0 2.573(,f).18 G(ollo)-2.573 E .073 (wed by either a series of comma-separated strings or a sequence e)-.25 -F(xpres-)-.15 E .489(sion between a pair of braces, follo)108 242.4 R -.489(wed by an optional)-.25 F F1(postscript)4.239 E F0 5.49(.T).68 G -.49(he preamble is pre\214x)-5.49 F .49(ed to each string)-.15 F .659(c\ -ontained within the braces, and the postscript is then appended to each\ - resulting string, e)108 254.4 R .658(xpanding left to)-.15 F(right.)108 -266.4 Q .718(Brace e)108 283.2 R .719(xpansions may be nested.)-.15 F -.719(The results of each e)5.719 F .719 +F(xpres-)-.15 E .49(sion between a pair of braces, follo)108 657.6 R +.489(wed by an optional)-.25 F F1(postscript)4.239 E F0 5.489(.T).68 G +.489(he preamble is pre\214x)-5.489 F .489(ed to each string)-.15 F .659 +(contained within the braces, and the postscript is then appended to ea\ +ch resulting string, e)108 669.6 R .659(xpanding left to)-.15 F(right.) +108 681.6 Q .719(Brace e)108 698.4 R .719(xpansions may be nested.)-.15 +F .719(The results of each e)5.719 F .719 (xpanded string are not sorted; left to right order is)-.15 F(preserv) -108 295.2 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F2({)A F0 -(d,c,b)A F2(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E 3.243(As) -108 312 S .743(equence e)-3.243 F .743(xpression tak)-.15 F .743 -(es the form)-.1 F F2({)3.243 E F1(x)A F2(..)A F1(y)A F2([..)A F1(incr)A -F2(]})A F0 3.243(,w)C(here)-3.243 E F1(x)3.243 E F0(and)3.242 E F1(y) -3.242 E F0 .742(are either inte)3.242 F .742(gers or single characters,) --.15 F(and)108 324 Q F1(incr)3.031 E F0 3.031(,a)C 3.032(no)-3.031 G -.532(ptional increment, is an inte)-3.032 F(ger)-.15 E 5.532(.W)-.55 G -.532(hen inte)-5.532 F .532(gers are supplied, the e)-.15 F .532 -(xpression e)-.15 F .532(xpands to each)-.15 F .078(number between)108 -336 R F1(x)2.578 E F0(and)2.578 E F1(y)2.578 E F0 2.578(,i)C(nclusi) --2.578 E -.15(ve)-.25 G 5.078(.S).15 G .078(upplied inte)-5.078 F .077 -(gers may be pre\214x)-.15 F .077(ed with)-.15 F F1(0)2.577 E F0 .077 -(to force each term to ha)2.577 F .377 -.15(ve t)-.2 H(he).15 E .014 -(same width.)108 348 R .014(When either)5.014 F F1(x)2.514 E F0(or)2.514 -E F1(y)2.514 E F0(be)2.514 E .015(gins with a zero, the shell attempts \ -to force all generated terms to contain)-.15 F 1.143 -(the same number of digits, zero-padding where necessary)108 360 R 6.143 -(.W)-.65 G 1.143(hen characters are supplied, the e)-6.143 F(xpression) --.15 E -.15(ex)108 372 S 1.064(pands to each character le).15 F 1.064 -(xicographically between)-.15 F F1(x)3.564 E F0(and)3.564 E F1(y)3.564 E -F0 3.564(,i)C(nclusi)-3.564 E -.15(ve)-.25 G 3.564(,u).15 G 1.064 -(sing the def)-3.564 F 1.064(ault C locale.)-.1 F(Note)6.064 E .245 -(that both)108 384 R F1(x)2.745 E F0(and)2.745 E F1(y)2.745 E F0 .245 -(must be of the same type.)2.745 F .244 -(When the increment is supplied, it is used as the dif)5.245 F .244 -(ference be-)-.25 F(tween each term.)108 396 Q(The def)5 E -(ault increment is 1 or \2551 as appropriate.)-.1 E .581(Brace e)108 -412.8 R .581(xpansion is performed before an)-.15 F 3.081(yo)-.15 G .581 -(ther e)-3.081 F .581(xpansions, and an)-.15 F 3.082(yc)-.15 G .582 -(haracters special to other e)-3.082 F(xpansions)-.15 E .016 -(are preserv)108 424.8 R .016(ed in the result.)-.15 F .016 -(It is strictly te)5.016 F(xtual.)-.15 E F2(Bash)5.016 E F0 .015 -(does not apply an)2.516 F 2.515(ys)-.15 G .015 -(yntactic interpretation to the con-)-2.515 F(te)108 436.8 Q +108 710.4 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F2({)A F0 +(d,c,b)A F2(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E 3.148(As) +108 727.2 S .648(equence e)-3.148 F .648(xpression tak)-.15 F .649 +(es the form)-.1 F F2({)3.149 E F1(x)A F2(..)A F1(y)A F2([..)A F1(incr)A +F2(]})A F0 3.149(,w)C(here)-3.149 E F1(x)3.149 E F0(and)3.149 E F1(y) +3.149 E F0 .649(are either inte)3.149 F .649 +(gers or single letters, and)-.15 F(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(21)185.115 E 0 Cg EP +%%Page: 22 22 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF(incr)108 84 Q F0 2.615(,a)C 2.615(no)-2.615 G .115 +(ptional increment, is an inte)-2.615 F(ger)-.15 E 5.115(.W)-.55 G .115 +(hen inte)-5.115 F .115(gers are supplied, the e)-.15 F .115 +(xpression e)-.15 F .115(xpands to each num-)-.15 F 1.013(ber between) +108 96 R F1(x)3.513 E F0(and)3.513 E F1(y)3.513 E F0 3.513(,i)C(nclusi) +-3.513 E -.15(ve)-.25 G 6.013(.S).15 G 1.013(upplied inte)-6.013 F 1.013 +(gers may be pre\214x)-.15 F 1.013(ed with)-.15 F F1(0)3.513 E F0 1.013 +(to force each term to ha)3.513 F 1.314 -.15(ve t)-.2 H(he).15 E .015 +(same width.)108 108 R .015(When either)5.015 F F1(x)2.515 E F0(or)2.515 +E F1(y)2.515 E F0(be)2.515 E .014(gins with a zero, the shell attempts \ +to force all generated terms to contain)-.15 F 1.13 +(the same number of digits, zero-padding where necessary)108 120 R 6.131 +(.W)-.65 G 1.131(hen letters are supplied, the e)-6.131 F 1.131 +(xpression e)-.15 F(x-)-.15 E .485(pands to each character le)108 132 R +.485(xicographically between)-.15 F F1(x)2.985 E F0(and)2.984 E F1(y) +2.984 E F0 2.984(,i)C(nclusi)-2.984 E -.15(ve)-.25 G 2.984(,u).15 G .484 +(sing the def)-2.984 F .484(ault C locale.)-.1 F .484(Note that)5.484 F +(both)108 144 Q F1(x)2.966 E F0(and)2.966 E F1(y)2.966 E F0 .467 +(must be of the same type \(inte)2.966 F .467(ger or letter\).)-.15 F +.467(When the increment is supplied, it is used as the)5.467 F(dif)108 +156 Q(ference between each term.)-.25 E(The def)5 E +(ault increment is 1 or \2551 as appropriate.)-.1 E .582(Brace e)108 +172.8 R .582(xpansion is performed before an)-.15 F 3.082(yo)-.15 G .581 +(ther e)-3.082 F .581(xpansions, and an)-.15 F 3.081(yc)-.15 G .581 +(haracters special to other e)-3.081 F(xpansions)-.15 E .015 +(are preserv)108 184.8 R .015(ed in the result.)-.15 F .015 +(It is strictly te)5.015 F(xtual.)-.15 E/F2 10/Times-Bold@0 SF(Bash) +5.016 E F0 .016(does not apply an)2.516 F 2.516(ys)-.15 G .016 +(yntactic interpretation to the con-)-2.516 F(te)108 196.8 Q (xt of the e)-.15 E(xpansion or the te)-.15 E(xt between the braces.) --.15 E 2.501(Ac)108 453.6 S .001(orrectly-formed brace e)-2.501 F .001(\ +-.15 E 2.502(Ac)108 213.6 S .002(orrectly-formed brace e)-2.502 F .001(\ xpansion must contain unquoted opening and closing braces, and at least\ - one un-)-.15 F .458(quoted comma or a v)108 465.6 R .458 + one un-)-.15 F .457(quoted comma or a v)108 225.6 R .458 (alid sequence e)-.25 F 2.958(xpression. An)-.15 F 2.958(yi)-.15 G .458 -(ncorrectly formed brace e)-2.958 F .457(xpansion is left unchanged.) --.15 F(A)108 477.6 Q F2({)2.521 E F0(or)2.521 E F2(,)2.521 E F0 .021 -(may be quoted with a backslash to pre)2.521 F -.15(ve)-.25 G .022 -(nt its being considered part of a brace e).15 F 2.522(xpression. T)-.15 -F 2.522(oa)-.8 G -.2(vo)-2.722 G(id).2 E .172 -(con\215icts with parameter e)108 489.6 R .172(xpansion, the string)-.15 +(ncorrectly formed brace e)-2.958 F .458(xpansion is left unchanged.) +-.15 F(A)108 237.6 Q F2({)2.522 E F0(or)2.522 E F2(,)2.522 E F0 .022 +(may be quoted with a backslash to pre)2.522 F -.15(ve)-.25 G .021 +(nt its being considered part of a brace e).15 F 2.521(xpression. T)-.15 +F 2.521(oa)-.8 G -.2(vo)-2.721 G(id).2 E .172 +(con\215icts with parameter e)108 249.6 R .172(xpansion, the string)-.15 F F2(${)2.672 E F0 .172(is not considered eligible for brace e)2.672 F -.172(xpansion, and inhibits)-.15 F(brace e)108 501.6 Q +.172(xpansion, and inhibits)-.15 F(brace e)108 261.6 Q (xpansion until the closing)-.15 E F2(})2.5 E F0(.)A 1.476(This constru\ ct is typically used as shorthand when the common pre\214x of the strin\ -gs to be generated is)108 518.4 R(longer than in the abo)108 530.4 Q .3 +gs to be generated is)108 278.4 R(longer than in the abo)108 290.4 Q .3 -.15(ve ex)-.15 H(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144 -547.2 Q -.65(w,)-.25 G(dist,b).65 E(ugs})-.2 E(or)108 559.2 Q(cho)144 -571.2 Q(wn root /usr/{ucb/{e)-.25 E(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15 -E(w_e)-.25 E(x}})-.15 E .618(Brace e)108 588 R .618 +307.2 Q -.65(w,)-.25 G(dist,b).65 E(ugs})-.2 E(or)108 319.2 Q(cho)144 +331.2 Q(wn root /usr/{ucb/{e)-.25 E(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15 +E(w_e)-.25 E(x}})-.15 E .618(Brace e)108 348 R .618 (xpansion introduces a slight incompatibility with historical v)-.15 F .618(ersions of)-.15 F F2(sh)3.118 E F0(.)A F2(sh)5.618 E F0 .618 -(does not treat open-)3.118 F .247 -(ing or closing braces specially when the)108 600 R 2.747(ya)-.15 G .247 -(ppear as part of a w)-2.747 F .248(ord, and preserv)-.1 F .248 -(es them in the output.)-.15 F F2(Bash)5.248 E F0(remo)108 612 Q -.15 +(does not treat open-)3.118 F .248 +(ing or closing braces specially when the)108 360 R 2.748(ya)-.15 G .247 +(ppear as part of a w)-2.748 F .247(ord, and preserv)-.1 F .247 +(es them in the output.)-.15 F F2(Bash)5.247 E F0(remo)108 372 Q -.15 (ve)-.15 G 3.53(sb).15 G 1.03(races from w)-3.53 F 1.03 (ords as a consequence of brace e)-.1 F 3.53(xpansion. F)-.15 F 1.03 (or e)-.15 F 1.03(xample, a w)-.15 F 1.03(ord entered to)-.1 F F2(sh) -3.53 E F0(as)3.53 E F1(\214le{1,2})108 624 Q F0 .514 -(appears identically in the output.)3.014 F .515(The same w)5.515 F .515 -(ord is output as)-.1 F F1 .515(\214le1 \214le2)4.925 F F0 .515(after e) -3.035 F .515(xpansion by)-.15 F F2(bash)3.015 E F0(.)A .437 -(If strict compatibility with)108 636 R F2(sh)2.936 E F0 .436 +3.53 E F0(as)3.53 E F1(\214le{1,2})108 384 Q F0 .515 +(appears identically in the output.)3.015 F .515(The same w)5.515 F .515 +(ord is output as)-.1 F F1 .514(\214le1 \214le2)4.925 F F0 .514(after e) +3.034 F .514(xpansion by)-.15 F F2(bash)3.014 E F0(.)A .436 +(If strict compatibility with)108 396 R F2(sh)2.936 E F0 .436 (is desired, start)2.936 F F2(bash)2.936 E F0 .436(with the)2.936 F F2 -(+B)2.936 E F0 .436(option or disable brace e)2.936 F .436 -(xpansion with the)-.15 F F2(+B)108 648 Q F0(option to the)2.5 E F2(set) -2.5 E F0(command \(see)2.5 E F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) --.828 E F0(belo)2.25 E(w\).)-.25 E F2 -.18(Ti)87 664.8 S(lde Expansion) -.18 E F0 1.086(If a w)108 676.8 R 1.086(ord be)-.1 F 1.086 -(gins with an unquoted tilde character \(`)-.15 F F2(~)A F0 1.087 +(+B)2.936 E F0 .436(option or disable brace e)2.936 F .437 +(xpansion with the)-.15 F F2(+B)108 408 Q F0(option to the)2.5 E F2(set) +2.5 E F0(command \(see)2.5 E/F3 9/Times-Bold@0 SF(SHELL B)2.5 E(UIL)-.09 +E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F2 -.18(Ti)87 424.8 S +(lde Expansion).18 E F0 1.087(If a w)108 436.8 R 1.087(ord be)-.1 F +1.087(gins with an unquoted tilde character \(`)-.15 F F2(~)A F0 1.086 ('\), all of the characters preceding the \214rst unquoted)B .185(slash\ \(or all characters, if there is no unquoted slash\) are considered a) -108 688.8 R F1(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685(fn) --5.185 G .185(one of the characters)-2.685 F .725(in the tilde-pre\214x\ - are quoted, the characters in the tilde-pre\214x follo)108 700.8 R .726 -(wing the tilde are treated as a possible)-.25 F F1(lo)108 712.8 Q .523 -(gin name)-.1 F F0 5.523(.I)C 3.023(ft)-5.523 G .523 +108 448.8 R F1(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685(fn) +-5.185 G .185(one of the characters)-2.685 F .726(in the tilde-pre\214x\ + are quoted, the characters in the tilde-pre\214x follo)108 460.8 R .725 +(wing the tilde are treated as a possible)-.25 F F1(lo)108 472.8 Q .522 +(gin name)-.1 F F0 5.522(.I)C 3.022(ft)-5.522 G .522 (his login name is the null string, the tilde is replaced with the v) --3.023 F .522(alue of the shell parameter)-.25 F F3(HOME)108 724.8 Q F4 -(.)A F0(If)6.735 E F3(HOME)4.735 E F0 2.236 -(is unset, the home directory of the user e)4.486 F -.15(xe)-.15 G 2.236 -(cuting the shell is substituted instead.).15 F(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(21)190.395 E 0 Cg EP -%%Page: 22 22 +-3.022 F .523(alue of the shell parameter)-.25 F F3(HOME)108 484.8 Q/F4 +9/Times-Roman@0 SF(.)A F0(If)4.787 E F3(HOME)2.787 E F0 .287 +(is unset, the home directory of the user e)2.537 F -.15(xe)-.15 G .286 +(cuting the shell is substituted instead.).15 F(Other)5.286 E(-)-.2 E(w\ +ise, the tilde-pre\214x is replaced with the home directory associated \ +with the speci\214ed login name.)108 496.8 Q .092 +(If the tilde-pre\214x is a `~+', the v)108 513.6 R .092 +(alue of the shell v)-.25 F(ariable)-.25 E F3(PWD)2.592 E F0 .092 +(replaces the tilde-pre\214x.)2.342 F .093(If the tilde-pre\214x is) +5.093 F 3.404(a`)108 525.6 S .904(~\255', the v)-3.404 F .904 +(alue of the shell v)-.25 F(ariable)-.25 E F3(OLDPWD)3.404 E F4(,)A F0 +.904(if it is set, is substituted.)3.154 F .903(If the characters follo) +5.903 F .903(wing the)-.25 F .879 +(tilde in the tilde-pre\214x consist of a number)108 537.6 R F1(N)3.379 +E F0 3.379(,o)C .879(ptionally pre\214x)-3.379 F .88 +(ed by a `+' or a `\255', the tilde-pre\214x is re-)-.15 F .138(placed \ +with the corresponding element from the directory stack, as it w)108 +549.6 R .138(ould be displayed by the)-.1 F F2(dirs)2.638 E F0 -.2(bu) +2.638 G(iltin).2 E(in)108 561.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.838(dw).1 G +.338(ith the tilde-pre\214x as an ar)-2.838 F 2.838(gument. If)-.18 F +.338(the characters follo)2.838 F .338 +(wing the tilde in the tilde-pre\214x consist)-.25 F +(of a number without a leading `+' or `\255', `+' is assumed.)108 573.6 +Q(If the login name is in)108 590.4 Q -.25(va)-.4 G(lid, or the tilde e) +.25 E(xpansion f)-.15 E(ails, the w)-.1 E(ord is unchanged.)-.1 E .167 +(Each v)108 607.2 R .167(ariable assignment is check)-.25 F .167 +(ed for unquoted tilde-pre\214x)-.1 F .167(es immediately follo)-.15 F +.167(wing a)-.25 F F2(:)2.667 E F0 .167(or the \214rst)2.667 F F2(=) +2.666 E F0 5.166(.I)C(n)-5.166 E .467(these cases, tilde e)108 619.2 R +.467(xpansion is also performed.)-.15 F(Consequently)5.467 E 2.967(,o) +-.65 G .468(ne may use \214lenames with tildes in assign-)-2.967 F +(ments to)108 631.2 Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 +E -.855(AT)-.666 G(H).855 E F4(,)A F0(and)2.25 E F3(CDP)2.5 E -.855(AT) +-.666 G(H).855 E F4(,)A F0(and the shell assigns the e)2.25 E(xpanded v) +-.15 E(alue.)-.25 E .024(Bash also performs tilde e)108 648 R .024 +(xpansion on w)-.15 F .023(ords satisfying the conditions of v)-.1 F +.023(ariable assignments \(as described)-.25 F(abo)108 660 Q .769 -.15 +(ve u)-.15 H(nder).15 E F3 -.666(PA)2.969 G(RAMETERS).666 E F4(\))A F0 +.469(when the)2.719 F 2.969(ya)-.15 G .469(ppear as ar)-2.969 F .469 +(guments to simple commands.)-.18 F .47(Bash does not do this,)5.469 F +-.15(ex)108 672 S(cept for the).15 E F1(declar)2.5 E(ation)-.15 E F0 +(commands listed abo)2.5 E -.15(ve)-.15 G 2.5(,w).15 G(hen in)-2.5 E F1 +(posix mode)2.5 E F0(.)A F2 -.1(Pa)87 688.8 S(rameter Expansion).1 E F0 +.2(The `)108 700.8 R F2($)A F0 2.7('c)C .199 +(haracter introduces parameter e)-2.7 F .199 +(xpansion, command substitution, or arithmetic e)-.15 F 2.699 +(xpansion. The)-.15 F(pa-)2.699 E .314(rameter name or symbol to be e) +108 712.8 R .314 +(xpanded may be enclosed in braces, which are optional b)-.15 F .314 +(ut serv)-.2 F 2.814(et)-.15 G 2.814(op)-2.814 G(rotect)-2.814 E .415 +(the v)108 724.8 R .415(ariable to be e)-.25 F .415 +(xpanded from characters immediately follo)-.15 F .414 +(wing it which could be interpreted as part of)-.25 F(GNU Bash 5.2)72 +768 Q(2022 September 19)135.955 E(22)185.115 E 0 Cg EP +%%Page: 23 23 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(Otherwise, the ti\ -lde-pre\214x is replaced with the home directory associated with the sp\ -eci\214ed login name.)108 84 Q .093 -(If the tilde-pre\214x is a `~+', the v)108 100.8 R .092 -(alue of the shell v)-.25 F(ariable)-.25 E/F1 9/Times-Bold@0 SF(PWD) -2.592 E F0 .092(replaces the tilde-pre\214x.)2.342 F .092 -(If the tilde-pre\214x is)5.092 F 3.403(a`)108 112.8 S .903 -(~\255', the v)-3.403 F .903(alue of the shell v)-.25 F(ariable)-.25 E -F1(OLDPWD)3.404 E/F2 9/Times-Roman@0 SF(,)A F0 .904 -(if it is set, is substituted.)3.154 F .904(If the characters follo) -5.904 F .904(wing the)-.25 F .88 -(tilde in the tilde-pre\214x consist of a number)108 124.8 R/F3 10 -/Times-Italic@0 SF(N)3.38 E F0 3.38(,o)C .88(ptionally pre\214x)-3.38 F -.879(ed by a `+' or a `\255', the tilde-pre\214x is re-)-.15 F .138(pla\ -ced with the corresponding element from the directory stack, as it w)108 -136.8 R .138(ould be displayed by the)-.1 F/F4 10/Times-Bold@0 SF(dirs) -2.639 E F0 -.2(bu)2.639 G(iltin).2 E(in)108 148.8 Q -.2(vo)-.4 G -.1(ke) -.2 G 2.839(dw).1 G .338(ith the tilde-pre\214x as an ar)-2.839 F 2.838 -(gument. If)-.18 F .338(the characters follo)2.838 F .338 -(wing the tilde in the tilde-pre\214x consist)-.25 F -(of a number without a leading `+' or `\255', `+' is assumed.)108 160.8 -Q(If the login name is in)108 177.6 Q -.25(va)-.4 G(lid, or the tilde e) -.25 E(xpansion f)-.15 E(ails, the w)-.1 E(ord is unchanged.)-.1 E .166 -(Each v)108 194.4 R .167(ariable assignment is check)-.25 F .167 -(ed for unquoted tilde-pre\214x)-.1 F .167(es immediately follo)-.15 F -.167(wing a)-.25 F F4(:)2.667 E F0 .167(or the \214rst)2.667 F F4(=) -2.667 E F0 5.167(.I)C(n)-5.167 E .468(these cases, tilde e)108 206.4 R -.468(xpansion is also performed.)-.15 F(Consequently)5.467 E 2.967(,o) --.65 G .467(ne may use \214lenames with tildes in assign-)-2.967 F -(ments to)108 218.4 Q F1 -.666(PA)2.5 G(TH)-.189 E F2(,)A F1(MAILP)2.25 -E -.855(AT)-.666 G(H).855 E F2(,)A F0(and)2.25 E F1(CDP)2.5 E -.855(AT) --.666 G(H).855 E F2(,)A F0(and the shell assigns the e)2.25 E(xpanded v) --.15 E(alue.)-.25 E .023(Bash also performs tilde e)108 235.2 R .023 -(xpansion on w)-.15 F .024(ords satisfying the conditions of v)-.1 F -.024(ariable assignments \(as described)-.25 F(abo)108 247.2 Q .77 -.15 -(ve u)-.15 H(nder).15 E F1 -.666(PA)2.97 G(RAMETERS).666 E F2(\))A F0 -.47(when the)2.72 F 2.969(ya)-.15 G .469(ppear as ar)-2.969 F .469 -(guments to simple commands.)-.18 F .469(Bash does not do this,)5.469 F --.15(ex)108 259.2 S(cept for the).15 E F3(declar)2.5 E(ation)-.15 E F0 -(commands listed abo)2.5 E -.15(ve)-.15 G 2.5(,w).15 G(hen in)-2.5 E F3 -(posix mode)2.5 E F0(.)A F4 -.1(Pa)87 276 S(rameter Expansion).1 E F0 -.199(The `)108 288 R F4($)A F0 2.699('c)C .199 -(haracter introduces parameter e)-2.699 F .199 -(xpansion, command substitution, or arithmetic e)-.15 F 2.7 -(xpansion. The)-.15 F(pa-)2.7 E .314(rameter name or symbol to be e)108 -300 R .314(xpanded may be enclosed in braces, which are optional b)-.15 -F .314(ut serv)-.2 F 2.813(et)-.15 G 2.813(op)-2.813 G(rotect)-2.813 E -.414(the v)108 312 R .414(ariable to be e)-.25 F .414 -(xpanded from characters immediately follo)-.15 F .415 -(wing it which could be interpreted as part of)-.25 F(the name.)108 324 -Q 1.19(When braces are used, the matching ending brace is the \214rst `) -108 340.8 R F4(})A F0 3.689('n)C 1.189 -(ot escaped by a backslash or within a)-3.689 F .821 -(quoted string, and not within an embedded arithmetic e)108 352.8 R .822 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(the name.)108 84 Q +1.189(When braces are used, the matching ending brace is the \214rst `) +108 100.8 R/F1 10/Times-Bold@0 SF(})A F0 3.69('n)C 1.19 +(ot escaped by a backslash or within a)-3.69 F .822 +(quoted string, and not within an embedded arithmetic e)108 112.8 R .821 (xpansion, command substitution, or parameter e)-.15 F(x-)-.15 E -(pansion.)108 364.8 Q(${)108 381.6 Q F3(par)A(ameter)-.15 E F0(})A .106 -(The v)144 393.6 R .106(alue of)-.25 F F3(par)2.606 E(ameter)-.15 E F0 -.106(is substituted.)2.606 F .106(The braces are required when)5.106 F -F3(par)3.856 E(ameter)-.15 E F0 .106(is a positional pa-)3.336 F .11 -(rameter with more than one digit, or when)144 405.6 R F3(par)3.86 E -(ameter)-.15 E F0 .111(is follo)3.341 F .111 +(pansion.)108 124.8 Q(${)108 141.6 Q/F2 10/Times-Italic@0 SF(par)A +(ameter)-.15 E F0(})A .106(The v)144 153.6 R .106(alue of)-.25 F F2(par) +2.606 E(ameter)-.15 E F0 .106(is substituted.)2.606 F .106 +(The braces are required when)5.106 F F2(par)3.856 E(ameter)-.15 E F0 +.106(is a positional pa-)3.336 F .111 +(rameter with more than one digit, or when)144 165.6 R F2(par)3.861 E +(ameter)-.15 E F0 .111(is follo)3.341 F .11 (wed by a character which is not to be)-.25 F .208 -(interpreted as part of its name.)144 417.6 R(The)5.208 E F3(par)2.708 E +(interpreted as part of its name.)144 177.6 R(The)5.208 E F2(par)2.708 E (ameter)-.15 E F0 .208(is a shell parameter as described abo)2.708 F --.15(ve)-.15 G F4 -.74(PA)2.858 G(RAME-).74 E(TERS)144 429.6 Q F0 2.5 -(\)o)C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F4(Arrays)A -F0(\).)A .346(If the \214rst character of)108 446.4 R F3(par)2.846 E +-.15(ve)-.15 G F1 -.74(PA)2.858 G(RAME-).74 E(TERS)144 189.6 Q F0 2.5 +(\)o)C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F1(Arrays)A +F0(\).)A .347(If the \214rst character of)108 206.4 R F2(par)2.846 E (ameter)-.15 E F0 .346(is an e)2.846 F .346(xclamation point \()-.15 F -F4(!)A F0 .346(\), and)B F3(par)2.846 E(ameter)-.15 E F0 .346(is not a) -2.846 F F3(namer)2.846 E(ef)-.37 E F0 2.847(,i)C 2.847(ti)-2.847 G -(ntroduces)-2.847 E 2.907(al)108 458.4 S -2.15 -.25(ev e)-2.907 H 2.907 -(lo).25 G 2.906(fi)-2.907 G(ndirection.)-2.906 E F4(Bash)5.406 E F0 .406 +F1(!)A F0 .346(\), and)B F2(par)2.846 E(ameter)-.15 E F0 .346(is not a) +2.846 F F2(namer)2.846 E(ef)-.37 E F0 2.846(,i)C 2.846(ti)-2.846 G +(ntroduces)-2.846 E 2.906(al)108 218.4 S -2.15 -.25(ev e)-2.906 H 2.906 +(lo).25 G 2.906(fi)-2.906 G(ndirection.)-2.906 E F1(Bash)5.406 E F0 .406 (uses the v)2.906 F .406(alue formed by e)-.25 F .406 -(xpanding the rest of)-.15 F F3(par)2.906 E(ameter)-.15 E F0 .406 -(as the ne)2.906 F(w)-.25 E F3(par)2.906 E(ame-)-.15 E(ter)108 470.4 Q -F0 2.578(;t)C .078(his is then e)-2.578 F .078(xpanded and that v)-.15 F -.079(alue is used in the rest of the e)-.25 F .079 -(xpansion, rather than the e)-.15 F .079(xpansion of the)-.15 F -(original)108 482.4 Q F3(par)2.543 E(ameter)-.15 E F0 5.043(.T)C .043 -(his is kno)-5.043 F .043(wn as)-.25 F F3(indir)2.543 E .043(ect e)-.37 -F(xpansion)-.2 E F0 5.043(.T)C .043(he v)-5.043 F .042 -(alue is subject to tilde e)-.25 F .042(xpansion, parameter)-.15 F -.15 -(ex)108 494.4 S .248(pansion, command substitution, and arithmetic e).15 -F 2.748(xpansion. If)-.15 F F3(par)2.749 E(ameter)-.15 E F0 .249 -(is a nameref, this e)2.749 F .249(xpands to the)-.15 F 1.51 -(name of the parameter referenced by)108 506.4 R F3(par)4.01 E(ameter) +(xpanding the rest of)-.15 F F2(par)2.906 E(ameter)-.15 E F0 .406 +(as the ne)2.906 F(w)-.25 E F2(par)2.907 E(ame-)-.15 E(ter)108 230.4 Q +F0 2.579(;t)C .079(his is then e)-2.579 F .079(xpanded and that v)-.15 F +.079(alue is used in the rest of the e)-.25 F .078 +(xpansion, rather than the e)-.15 F .078(xpansion of the)-.15 F +(original)108 242.4 Q F2(par)2.542 E(ameter)-.15 E F0 5.042(.T)C .042 +(his is kno)-5.042 F .042(wn as)-.25 F F2(indir)2.543 E .043(ect e)-.37 +F(xpansion)-.2 E F0 5.043(.T)C .043(he v)-5.043 F .043 +(alue is subject to tilde e)-.25 F .043(xpansion, parameter)-.15 F -.15 +(ex)108 254.4 S .249(pansion, command substitution, and arithmetic e).15 +F 2.749(xpansion. If)-.15 F F2(par)2.749 E(ameter)-.15 E F0 .248 +(is a nameref, this e)2.749 F .248(xpands to the)-.15 F 1.51 +(name of the parameter referenced by)108 266.4 R F2(par)4.01 E(ameter) -.15 E F0 1.51(instead of performing the complete indirect e)4.01 F -(xpansion.)-.15 E .387(The e)108 518.4 R .387 -(xceptions to this are the e)-.15 F .387(xpansions of ${)-.15 F F4(!)A -F3(pr)A(e\214x)-.37 E F4(*)A F0 2.887(}a)C .387(nd ${)-2.887 F F4(!)A F3 -(name)A F0([)A F3(@)A F0 .387(]} described belo)B 4.188 -.65(w. T)-.25 H -.388(he e).65 F(xclama-)-.15 E(tion point must immediately follo)108 -530.4 Q 2.5(wt)-.25 G(he left brace in order to introduce indirection.) --2.5 E .334(In each of the cases belo)108 547.2 R -.65(w,)-.25 G F3(wor) +(xpansion.)-.15 E .388(The e)108 278.4 R .387 +(xceptions to this are the e)-.15 F .387(xpansions of ${)-.15 F F1(!)A +F2(pr)A(e\214x)-.37 E F1(*)A F0 2.887(}a)C .387(nd ${)-2.887 F F1(!)A F2 +(name)A F0([)A F2(@)A F0 .387(]} described belo)B 4.187 -.65(w. T)-.25 H +.387(he e).65 F(xclama-)-.15 E(tion point must immediately follo)108 +290.4 Q 2.5(wt)-.25 G(he left brace in order to introduce indirection.) +-2.5 E .334(In each of the cases belo)108 307.2 R -.65(w,)-.25 G F2(wor) 3.484 E(d)-.37 E F0 .334(is subject to tilde e)2.834 F .334 (xpansion, parameter e)-.15 F .334(xpansion, command substitution,)-.15 -F(and arithmetic e)108 559.2 Q(xpansion.)-.15 E .066 -(When not performing substring e)108 576 R .067 +F(and arithmetic e)108 319.2 Q(xpansion.)-.15 E .067 +(When not performing substring e)108 336 R .067 (xpansion, using the forms documented belo)-.15 F 2.567(w\()-.25 G -(e.g.,)-2.567 E F4(:-)2.567 E F0(\),)A F4(bash)2.567 E F0 .067 -(tests for a pa-)2.567 F(rameter that is unset or null.)108 588 Q(Omitt\ +(e.g.,)-2.567 E F1(:-)2.567 E F0(\),)A F1(bash)2.567 E F0 .066 +(tests for a pa-)2.567 F(rameter that is unset or null.)108 348 Q(Omitt\ ing the colon results in a test only for a parameter that is unset.)5 E -(${)108 604.8 Q F3(par)A(ameter)-.15 E F4<3aad>A F3(wor)A(d)-.37 E F0(}) -A F4 .723(Use Default V)144 616.8 R(alues)-.92 E F0 5.723(.I)C(f)-5.723 -E F3(par)4.473 E(ameter)-.15 E F0 .723(is unset or null, the e)3.953 F -.722(xpansion of)-.15 F F3(wor)3.562 E(d)-.37 E F0 .722(is substituted.) -3.992 F(Other)5.722 E(-)-.2 E(wise, the v)144 628.8 Q(alue of)-.25 E F3 -(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 640.8 Q F3 -(par)A(ameter)-.15 E F4(:=)A F3(wor)A(d)-.37 E F0(})A F4 .811 -(Assign Default V)144 652.8 R(alues)-.92 E F0 5.812(.I)C(f)-5.812 E F3 +(${)108 364.8 Q F2(par)A(ameter)-.15 E F1<3aad>A F2(wor)A(d)-.37 E F0(}) +A F1 .722(Use Default V)144 376.8 R(alues)-.92 E F0 5.722(.I)C(f)-5.722 +E F2(par)4.472 E(ameter)-.15 E F0 .723(is unset or null, the e)3.952 F +.723(xpansion of)-.15 F F2(wor)3.563 E(d)-.37 E F0 .723(is substituted.) +3.993 F(Other)5.723 E(-)-.2 E(wise, the v)144 388.8 Q(alue of)-.25 E F2 +(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 400.8 Q F2 +(par)A(ameter)-.15 E F1(:=)A F2(wor)A(d)-.37 E F0(})A F1 .812 +(Assign Default V)144 412.8 R(alues)-.92 E F0 5.812(.I)C(f)-5.812 E F2 (par)4.562 E(ameter)-.15 E F0 .812(is unset or null, the e)4.042 F .812 -(xpansion of)-.15 F F3(wor)3.652 E(d)-.37 E F0 .812(is assigned to)4.082 -F F3(pa-)4.562 E -.15(ra)144 664.8 S(meter).15 E F0 5.742(.T).73 G .742 -(he v)-5.742 F .742(alue of)-.25 F F3(par)4.492 E(ameter)-.15 E F0 .742 -(is then substituted.)3.972 F .741 +(xpansion of)-.15 F F2(wor)3.652 E(d)-.37 E F0 .812(is assigned to)4.082 +F F2(pa-)4.561 E -.15(ra)144 424.8 S(meter).15 E F0 5.741(.T).73 G .741 +(he v)-5.741 F .741(alue of)-.25 F F2(par)4.491 E(ameter)-.15 E F0 .742 +(is then substituted.)3.972 F .742 (Positional parameters and special parame-)5.742 F -(ters may not be assigned to in this w)144 676.8 Q(ay)-.1 E(.)-.65 E(${) -108 688.8 Q F3(par)A(ameter)-.15 E F4(:?)A F3(wor)A(d)-.37 E F0(})A F4 -.535(Display Err)144 700.8 R .535(or if Null or Unset)-.18 F F0 5.535 -(.I)C(f)-5.535 E F3(par)4.285 E(ameter)-.15 E F0 .535 -(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F3(wor)3.035 E -(d)-.37 E F0 .535(\(or a mes-)3.035 F .013(sage to that ef)144 712.8 R -.013(fect if)-.25 F F3(wor)2.853 E(d)-.37 E F0 .013(is not present\) is\ - written to the standard error and the shell, if it is not in-)3.283 F -(teracti)144 724.8 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,) --2.65 F(the v)2.5 E(alue of)-.25 E F3(par)2.5 E(ameter)-.15 E F0 -(is substituted.)2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E -(22)190.395 E 0 Cg EP -%%Page: 23 23 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(${)108 84 Q/F1 10 -/Times-Italic@0 SF(par)A(ameter)-.15 E/F2 10/Times-Bold@0 SF(:+)A F1 -(wor)A(d)-.37 E F0(})A F2 .745(Use Alter)144 96 R .745(nate V)-.15 F -(alue)-.92 E F0 5.745(.I)C(f)-5.745 E F1(par)4.495 E(ameter)-.15 E F0 +(ters may not be assigned to in this w)144 436.8 Q(ay)-.1 E(.)-.65 E(${) +108 448.8 Q F2(par)A(ameter)-.15 E F1(:?)A F2(wor)A(d)-.37 E F0(})A F1 +.535(Display Err)144 460.8 R .535(or if Null or Unset)-.18 F F0 5.535 +(.I)C(f)-5.535 E F2(par)4.285 E(ameter)-.15 E F0 .535 +(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F2(wor)3.035 E +(d)-.37 E F0 .535(\(or a mes-)3.035 F .012(sage to that ef)144 472.8 R +.012(fect if)-.25 F F2(wor)2.852 E(d)-.37 E F0 .013(is not present\) is\ + written to the standard error and the shell, if it is not in-)3.282 F +(teracti)144 484.8 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,) +-2.65 F(the v)2.5 E(alue of)-.25 E F2(par)2.5 E(ameter)-.15 E F0 +(is substituted.)2.5 E(${)108 496.8 Q F2(par)A(ameter)-.15 E F1(:+)A F2 +(wor)A(d)-.37 E F0(})A F1 .745(Use Alter)144 508.8 R .745(nate V)-.15 F +(alue)-.92 E F0 5.745(.I)C(f)-5.745 E F2(par)4.495 E(ameter)-.15 E F0 .745(is null or unset, nothing is substituted, otherwise the e)3.975 F -(xpan-)-.15 E(sion of)144 108 Q F1(wor)2.84 E(d)-.37 E F0 -(is substituted.)3.27 E(${)108 120 Q F1(par)A(ameter)-.15 E F2(:)A F1 -(of)A(fset)-.18 E F0(})A(${)108 132 Q F1(par)A(ameter)-.15 E F2(:)A F1 -(of)A(fset)-.18 E F2(:)A F1(length)A F0(})A F2 .002(Substring Expansion) -144 144 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F1(length)2.502 E -F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F1(par)2.502 E -(ameter)-.15 E F0 .002(starting at the)2.502 F .235 -(character speci\214ed by)144 156 R F1(of)2.735 E(fset)-.18 E F0 5.235 -(.I)C(f)-5.235 E F1(par)2.735 E(ameter)-.15 E F0(is)2.735 E F2(@)2.735 E -F0 2.735(,a)C 2.735(ni)-2.735 G(nde)-2.735 E -.15(xe)-.15 G 2.735(da).15 -G .235(rray subscripted by)-2.735 F F2(@)2.735 E F0(or)2.735 E F2(*) -2.735 E F0 2.735(,o)C 2.735(ra)-2.735 G 2.735(na)-2.735 G(s-)-2.735 E -(sociati)144 168 Q 1.578 -.15(ve a)-.25 H 1.278 -(rray name, the results dif).15 F 1.277(fer as described belo)-.25 F -5.077 -.65(w. I)-.25 H(f).65 E F1(length)3.777 E F0 1.277(is omitted, e) -3.777 F 1.277(xpands to the)-.15 F .042(substring of the v)144 180 R -.042(alue of)-.25 F F1(par)2.542 E(ameter)-.15 E F0 .043 -(starting at the character speci\214ed by)2.542 F F1(of)2.543 E(fset) --.18 E F0 .043(and e)2.543 F .043(xtending to the)-.15 F .847 -(end of the v)144 192 R(alue.)-.25 E F1(length)5.846 E F0(and)3.346 E F1 -(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F .846 -(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .846(ARITHMETIC EV)3.346 F -(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 204 Q(w\).)-.25 E -(If)144 228 Q F1(of)3.028 E(fset)-.18 E F0 -.25(eva)3.029 G .529 +(xpan-)-.15 E(sion of)144 520.8 Q F2(wor)2.84 E(d)-.37 E F0 +(is substituted.)3.27 E(${)108 532.8 Q F2(par)A(ameter)-.15 E F1(:)A F2 +(of)A(fset)-.18 E F0(})A(${)108 544.8 Q F2(par)A(ameter)-.15 E F1(:)A F2 +(of)A(fset)-.18 E F1(:)A F2(length)A F0(})A F1 .002(Substring Expansion) +144 556.8 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F2(length)2.502 +E F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F2(par)2.502 E +(ameter)-.15 E F0 .002(starting at the)2.502 F .004 +(character speci\214ed by)144 568.8 R F2(of)2.504 E(fset)-.18 E F0 5.003 +(.I)C(f)-5.003 E F2(par)2.503 E(ameter)-.15 E F0(is)2.503 E F1(@)2.503 E +F0(or)2.503 E F1(*)2.503 E F0 2.503(,a)C 2.503(ni)-2.503 G(nde)-2.503 E +-.15(xe)-.15 G 2.503(da).15 G .003(rray subscripted by)-2.503 F F1(@) +2.503 E F0(or)2.503 E F1(*)2.503 E F0 2.503(,o)C 2.503(ra)-2.503 G(n) +-2.503 E(associati)144 580.8 Q 1.022 -.15(ve a)-.25 H .722 +(rray name, the results dif).15 F .722(fer as described belo)-.25 F +4.522 -.65(w. I)-.25 H(f).65 E F2(length)3.222 E F0 .722(is omitted, e) +3.222 F .722(xpands to the)-.15 F .043(substring of the v)144 592.8 R +.043(alue of)-.25 F F2(par)2.543 E(ameter)-.15 E F0 .042 +(starting at the character speci\214ed by)2.543 F F2(of)2.542 E(fset) +-.18 E F0 .042(and e)2.542 F .042(xtending to the)-.15 F .846 +(end of the v)144 604.8 R(alue.)-.25 E F2(length)5.846 E F0(and)3.346 E +F2(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F .847 +(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .847(ARITHMETIC EV)3.347 F +(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 616.8 Q(w\).)-.25 E +(If)144 640.8 Q F2(of)3.029 E(fset)-.18 E F0 -.25(eva)3.029 G .529 (luates to a number less than zero, the v).25 F .529 (alue is used as an of)-.25 F .529(fset in characters from the)-.25 F -.046(end of the v)144 240 R .046(alue of)-.25 F F1(par)2.546 E(ameter) --.15 E F0 5.046(.I)C(f)-5.046 E F1(length)2.546 E F0 -.25(eva)2.546 G +.045(end of the v)144 652.8 R .045(alue of)-.25 F F2(par)2.546 E(ameter) +-.15 E F0 5.046(.I)C(f)-5.046 E F2(length)2.546 E F0 -.25(eva)2.546 G .046(luates to a number less than zero, it is interpreted as an).25 F -(of)144 252 Q .202(fset in characters from the end of the v)-.25 F .202 -(alue of)-.25 F F1(par)2.702 E(ameter)-.15 E F0 .203 -(rather than a number of characters, and)2.702 F .558(the e)144 264 R -.558(xpansion is the characters between)-.15 F F1(of)3.058 E(fset)-.18 E -F0 .558(and that result.)3.058 F .557(Note that a ne)5.557 F -.05(ga) --.15 G(ti).05 E .857 -.15(ve o)-.25 H -.25(ff).15 G .557(set must be).25 -F(separated from the colon by at least one space to a)144 276 Q -.2(vo) --.2 G(id being confused with the).2 E F2(:-)2.5 E F0 -.15(ex)2.5 G -(pansion.).15 E(If)144 300 Q F1(par)2.958 E(ameter)-.15 E F0(is)2.958 E -F2(@)2.958 E F0 2.958(,t)C .458(he result is)-2.958 F F1(length)2.959 E -F0 .459(positional parameters be)2.959 F .459(ginning at)-.15 F F1(of) -2.959 E(fset)-.18 E F0 5.459(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15 -(ve)-.25 G F1(of)3.109 E(fset)-.18 E F0 .6(is tak)144 312 R .6 -(en relati)-.1 F .9 -.15(ve t)-.25 H 3.1(oo).15 G .6 -(ne greater than the greatest positional parameter)-3.1 F 3.1(,s)-.4 G -3.1(oa)-3.1 G 3.1(no)-3.1 G -.25(ff)-3.1 G .6(set of \2551 e).25 F -.25 -(va)-.25 G(luates).25 E .639(to the last positional parameter)144 324 R -5.639(.I)-.55 G 3.139(ti)-5.639 G 3.139(sa)-3.139 G 3.139(ne)-3.139 G -.639(xpansion error if)-3.289 F F1(length)3.14 E F0 -.25(eva)3.14 G .64 -(luates to a number less than).25 F(zero.)144 336 Q(If)144 360 Q F1(par) -3.014 E(ameter)-.15 E F0 .514(is an inde)3.014 F -.15(xe)-.15 G 3.014 +(of)144 664.8 Q .203(fset in characters from the end of the v)-.25 F +.202(alue of)-.25 F F2(par)2.702 E(ameter)-.15 E F0 .202 +(rather than a number of characters, and)2.702 F .557(the e)144 676.8 R +.557(xpansion is the characters between)-.15 F F2(of)3.057 E(fset)-.18 E +F0 .557(and that result.)3.057 F .558(Note that a ne)5.558 F -.05(ga) +-.15 G(ti).05 E .858 -.15(ve o)-.25 H -.25(ff).15 G .558(set must be).25 +F(separated from the colon by at least one space to a)144 688.8 Q -.2 +(vo)-.2 G(id being confused with the).2 E F1(:-)2.5 E F0 -.15(ex)2.5 G +(pansion.).15 E(If)144 712.8 Q F2(par)3.284 E(ameter)-.15 E F0(is)3.284 +E F1(@)3.284 E F0(or)3.284 E F1(*)3.284 E F0 3.284(,t)C .784 +(he result is)-3.284 F F2(length)3.284 E F0 .784 +(positional parameters be)3.284 F .783(ginning at)-.15 F F2(of)3.283 E +(fset)-.18 E F0 5.783(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15(ve) +-.25 G F2(of)144 724.8 Q(fset)-.18 E F0 1.551(is tak)4.051 F 1.551 +(en relati)-.1 F 1.851 -.15(ve t)-.25 H 4.051(oo).15 G 1.551 +(ne greater than the greatest positional parameter)-4.051 F 4.051(,s)-.4 +G 4.052(oa)-4.051 G 4.052(no)-4.052 G -.25(ff)-4.052 G 1.552 +(set of \2551).25 F(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E +(23)185.115 E 0 Cg EP +%%Page: 24 24 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(eva)144 84 S +.555(luates to the last positional parameter).25 F 5.555(.I)-.55 G 3.055 +(ti)-5.555 G 3.055(sa)-3.055 G 3.055(ne)-3.055 G .555(xpansion error if) +-3.205 F/F1 10/Times-Italic@0 SF(length)3.055 E F0 -.25(eva)3.055 G .555 +(luates to a number).25 F(less than zero.)144 96 Q(If)144 120 Q F1(par) +3.013 E(ameter)-.15 E F0 .514(is an inde)3.013 F -.15(xe)-.15 G 3.014 (da).15 G .514(rray name subscripted by @ or *, the result is the)-3.014 -F F1(length)3.014 E F0 .513(members of)3.013 F 1.081(the array be)144 -372 R 1.081(ginning with ${)-.15 F F1(par)A(ameter)-.15 E F0([)A F1(of)A -(fset)-.18 E F0 3.581(]}. A)B(ne)3.581 E -.05(ga)-.15 G(ti).05 E -.15 -(ve)-.25 G F1(of)3.732 E(fset)-.18 E F0 1.082(is tak)3.582 F 1.082 -(en relati)-.1 F 1.382 -.15(ve t)-.25 H 3.582(oo).15 G 1.082(ne greater) --3.582 F 1.08(than the maximum inde)144 384 R 3.58(xo)-.15 G 3.58(ft) --3.58 G 1.08(he speci\214ed array)-3.58 F 6.079(.I)-.65 G 3.579(ti) --6.079 G 3.579(sa)-3.579 G 3.579(ne)-3.579 G 1.079(xpansion error if) --3.729 F F1(length)3.579 E F0 -.25(eva)3.579 G 1.079(luates to a).25 F -(number less than zero.)144 396 Q(Substring e)144 420 Q +F F1(length)3.014 E F0 .514(members of)3.014 F 1.082(the array be)144 +132 R 1.082(ginning with ${)-.15 F F1(par)A(ameter)-.15 E F0([)A F1(of)A +(fset)-.18 E F0 3.582(]}. A)B(ne)3.582 E -.05(ga)-.15 G(ti).05 E -.15 +(ve)-.25 G F1(of)3.732 E(fset)-.18 E F0 1.081(is tak)3.581 F 1.081 +(en relati)-.1 F 1.381 -.15(ve t)-.25 H 3.581(oo).15 G 1.081(ne greater) +-3.581 F 1.079(than the maximum inde)144 144 R 3.579(xo)-.15 G 3.579(ft) +-3.579 G 1.079(he speci\214ed array)-3.579 F 6.079(.I)-.65 G 3.579(ti) +-6.079 G 3.579(sa)-3.579 G 3.58(ne)-3.579 G 1.08(xpansion error if)-3.73 +F F1(length)3.58 E F0 -.25(eva)3.58 G 1.08(luates to a).25 F +(number less than zero.)144 156 Q(Substring e)144 180 Q (xpansion applied to an associati)-.15 E .3 -.15(ve a)-.25 H -(rray produces unde\214ned results.).15 E .82(Substring inde)144 444 R +(rray produces unde\214ned results.).15 E .821(Substring inde)144 204 R .821(xing is zero-based unless the positional parameters are used, in w\ -hich case the in-)-.15 F(de)144 456 Q .159(xing starts at 1 by def)-.15 +hich case the in-)-.15 F(de)144 216 Q .159(xing starts at 1 by def)-.15 F 2.659(ault. If)-.1 F F1(of)2.659 E(fset)-.18 E F0 .159 -(is 0, and the positional parameters are used,)2.659 F F2($0)2.659 E F0 -.159(is pre\214x)2.659 F .158(ed to)-.15 F(the list.)144 468 Q(${)108 -484.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(*)A F0(})A(${)108 496.8 Q F2(!)A -F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2 .084(Names matching pr)144 508.8 -R(e\214x)-.18 E F0 5.084(.E)C .084(xpands to the names of v)-5.084 F -.084(ariables whose names be)-.25 F .085(gin with)-.15 F F1(pr)2.585 E -(e\214x)-.37 E F0 2.585(,s)C(epa-)-2.585 E .258 -(rated by the \214rst character of the)144 520.8 R F3(IFS)2.758 E F0 -.257(special v)2.507 F 2.757(ariable. When)-.25 F F1(@)2.757 E F0 .257 -(is used and the e)2.757 F .257(xpansion appears)-.15 F -(within double quotes, each v)144 532.8 Q(ariable name e)-.25 E -(xpands to a separate w)-.15 E(ord.)-.1 E(${)108 549.6 Q F2(!)A F1(name) -A F0([)A F1(@)A F0(]})A(${)108 561.6 Q F2(!)A F1(name)A F0([)A F1(*)A F0 -(]})A F2 1.136(List of array k)144 573.6 R(eys)-.1 E F0 6.136(.I)C(f) --6.136 E F1(name)3.636 E F0 1.136(is an array v)3.636 F 1.136 -(ariable, e)-.25 F 1.136(xpands to the list of array indices \(k)-.15 F --.15(ey)-.1 G 1.137(s\) as-).15 F .397(signed in)144 585.6 R F1(name) -2.897 E F0 5.397(.I)C(f)-5.397 E F1(name)2.897 E F0 .397 -(is not an array)2.897 F 2.897(,e)-.65 G .397(xpands to 0 if)-3.047 F F1 -(name)2.897 E F0 .397(is set and null otherwise.)2.897 F(When)5.397 E F1 -(@)2.897 E F0(is used and the e)144 597.6 Q +(is 0, and the positional parameters are used,)2.659 F/F2 10 +/Times-Bold@0 SF($0)2.659 E F0 .159(is pre\214x)2.659 F .159(ed to)-.15 +F(the list.)144 228 Q(${)108 244.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(*)A +F0(})A(${)108 256.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2 .085 +(Names matching pr)144 268.8 R(e\214x)-.18 E F0 5.085(.E)C .084 +(xpands to the names of v)-5.085 F .084(ariables whose names be)-.25 F +.084(gin with)-.15 F F1(pr)2.584 E(e\214x)-.37 E F0 2.584(,s)C(epa-) +-2.584 E .257(rated by the \214rst character of the)144 280.8 R/F3 9 +/Times-Bold@0 SF(IFS)2.757 E F0 .257(special v)2.507 F 2.757 +(ariable. When)-.25 F F1(@)2.758 E F0 .258(is used and the e)2.758 F +.258(xpansion appears)-.15 F(within double quotes, each v)144 292.8 Q +(ariable name e)-.25 E(xpands to a separate w)-.15 E(ord.)-.1 E(${)108 +309.6 Q F2(!)A F1(name)A F0([)A F1(@)A F0(]})A(${)108 321.6 Q F2(!)A F1 +(name)A F0([)A F1(*)A F0(]})A F2 1.137(List of array k)144 333.6 R(eys) +-.1 E F0 6.136(.I)C(f)-6.136 E F1(name)3.636 E F0 1.136(is an array v) +3.636 F 1.136(ariable, e)-.25 F 1.136 +(xpands to the list of array indices \(k)-.15 F -.15(ey)-.1 G 1.136 +(s\) as-).15 F .397(signed in)144 345.6 R F1(name)2.897 E F0 5.397(.I)C +(f)-5.397 E F1(name)2.897 E F0 .397(is not an array)2.897 F 2.897(,e) +-.65 G .397(xpands to 0 if)-3.047 F F1(name)2.897 E F0 .397 +(is set and null otherwise.)2.897 F(When)5.397 E F1(@)2.897 E F0 +(is used and the e)144 357.6 Q (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 614.4 Q F2(#)A F1(par)A -(ameter)-.15 E F0(})A F2 -.1(Pa)144 626.4 S .47(rameter length).1 F F0 -5.47(.T)C .471(he length in characters of the v)-5.47 F .471(alue of) --.25 F F1(par)2.971 E(ameter)-.15 E F0 .471(is substituted.)2.971 F(If) -5.471 E F1(par)4.221 E(ame-)-.15 E(ter)144 638.4 Q F0(is)3.627 E F2(*) -2.897 E F0(or)2.897 E F2(@)2.897 E F0 2.897(,t)C .397(he v)-2.897 F .397 +H(pands to a separate w).15 E(ord.)-.1 E(${)108 374.4 Q F2(#)A F1(par)A +(ameter)-.15 E F0(})A F2 -.1(Pa)144 386.4 S .471(rameter length).1 F F0 +5.471(.T)C .471(he length in characters of the v)-5.471 F .471(alue of) +-.25 F F1(par)2.971 E(ameter)-.15 E F0 .47(is substituted.)2.97 F(If) +5.47 E F1(par)4.22 E(ame-)-.15 E(ter)144 398.4 Q F0(is)3.626 E F2(*) +2.896 E F0(or)2.896 E F2(@)2.896 E F0 2.896(,t)C .396(he v)-2.896 F .397 (alue substituted is the number of positional parameters.)-.25 F(If) -5.396 E F1(par)4.146 E(ameter)-.15 E F0 .396(is an ar)3.626 F(-)-.2 E -.78(ray name subscripted by)144 650.4 R F2(*)3.28 E F0(or)3.28 E F2(@) -3.28 E F0 3.28(,t)C .78(he v)-3.28 F .781 -(alue substituted is the number of elements in the array)-.25 F 5.781 -(.I)-.65 G(f)-5.781 E F1(par)145.25 662.4 Q(ameter)-.15 E F0 .456 -(is an inde)3.686 F -.15(xe)-.15 G 2.956(da).15 G .456 -(rray name subscripted by a ne)-2.956 F -.05(ga)-.15 G(ti).05 E .756 --.15(ve n)-.25 H(umber).15 E 2.955(,t)-.4 G .455 -(hat number is interpreted)-2.955 F .972(as relati)144 674.4 R 1.272 --.15(ve t)-.25 H 3.472(oo).15 G .973(ne greater than the maximum inde) --3.472 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0 -3.473(,s)C 3.473(on)-3.473 G -2.25 -.15(eg a)-3.473 H(ti).15 E 1.273 --.15(ve i)-.25 H .973(ndices count back).15 F(from the end of the array) -144 686.4 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 -G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 703.2 Q F1 -(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(GNU Bash 5.1)72 768 -Q(2020 October 29)141.235 E(23)190.395 E 0 Cg EP -%%Page: 24 24 +5.397 E F1(par)4.147 E(ameter)-.15 E F0 .397(is an ar)3.627 F(-)-.2 E +.781(ray name subscripted by)144 410.4 R F2(*)3.281 E F0(or)3.281 E F2 +(@)3.281 E F0 3.281(,t)C .781(he v)-3.281 F .78 +(alue substituted is the number of elements in the array)-.25 F 5.78(.I) +-.65 G(f)-5.78 E F1(par)145.25 422.4 Q(ameter)-.15 E F0 .455(is an inde) +3.685 F -.15(xe)-.15 G 2.955(da).15 G .456 +(rray name subscripted by a ne)-2.955 F -.05(ga)-.15 G(ti).05 E .756 +-.15(ve n)-.25 H(umber).15 E 2.956(,t)-.4 G .456 +(hat number is interpreted)-2.956 F .973(as relati)144 434.4 R 1.273 +-.15(ve t)-.25 H 3.473(oo).15 G .973(ne greater than the maximum inde) +-3.473 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0 +3.472(,s)C 3.472(on)-3.472 G -2.25 -.15(eg a)-3.472 H(ti).15 E 1.272 +-.15(ve i)-.25 H .972(ndices count back).15 F(from the end of the array) +144 446.4 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 +G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 463.2 Q F1 +(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(${)108 475.2 Q F1 +(par)A(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 487.2 +Q 1.396 -.1(ve m)-.1 H 1.196(atching pr).1 F 1.196(e\214x patter)-.18 F +(n)-.15 E F0 6.196(.T)C(he)-6.196 E F1(wor)4.036 E(d)-.37 E F0 1.196 +(is e)4.466 F 1.196(xpanded to produce a pattern just as in path-)-.15 F +.544(name e)144 499.2 R .544(xpansion, and matched ag)-.15 F .544 +(ainst the e)-.05 F .544(xpanded v)-.15 F .544(alue of)-.25 F F1(par) +4.294 E(ameter)-.15 E F0 .543(using the rules described)3.774 F(under) +144 511.2 Q F2 -.1(Pa)3.132 G(tter).1 E 3.132(nM)-.15 G(atching)-3.132 E +F0(belo)3.132 E 4.432 -.65(w. I)-.25 H 3.132(ft).65 G .632 +(he pattern matches the be)-3.132 F .632(ginning of the v)-.15 F .633 +(alue of)-.25 F F1(par)4.383 E(ameter)-.15 E F0(,).73 E 1.152 +(then the result of the e)144 523.2 R 1.151(xpansion is the e)-.15 F +1.151(xpanded v)-.15 F 1.151(alue of)-.25 F F1(par)4.901 E(ameter)-.15 E +F0 1.151(with the shortest matching)4.381 F .183(pattern \(the `)144 +535.2 R(`)-.74 E F2(#)A F0 1.663 -.74('' c)D .184 +(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(##)A F0 +1.664 -.74('' c)D .184(ase\) deleted.).74 F(If)5.184 E F1(par)3.934 E +(ameter)-.15 E F0(is)3.414 E F2(@)2.684 E F0(or)144 547.2 Q F2(*)3.019 E +F0 3.019(,t)C .518(he pattern remo)-3.019 F -.25(va)-.15 G 3.018(lo).25 +G .518 +(peration is applied to each positional parameter in turn, and the e) +-3.018 F(xpan-)-.15 E .303(sion is the resultant list.)144 559.2 R(If) +5.303 E F1(par)4.053 E(ameter)-.15 E F0 .303(is an array v)3.533 F .303 +(ariable subscripted with)-.25 F F2(@)2.804 E F0(or)2.804 E F2(*)2.804 E +F0 2.804(,t)C .304(he pattern re-)-2.804 F(mo)144 571.2 Q -.25(va)-.15 G +2.988(lo).25 G .487 +(peration is applied to each member of the array in turn, and the e) +-2.988 F .487(xpansion is the resultant)-.15 F(list.)144 583.2 Q(${)108 +600 Q F1(par)A(ameter)-.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 612 +Q F1(par)A(ameter)-.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 +624 Q .346 -.1(ve m)-.1 H .146(atching suf\214x patter).1 F(n)-.15 E F0 +5.146(.T)C(he)-5.146 E F1(wor)2.646 E(d)-.37 E F0 .147(is e)2.647 F .147 +(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 636 +S .459(pansion, and matched ag).15 F .459(ainst the e)-.05 F .459 +(xpanded v)-.15 F .458(alue of)-.25 F F1(par)4.208 E(ameter)-.15 E F0 +.458(using the rules described under)3.688 F F2 -.1(Pa)144 648 S(tter).1 +E 3.314(nM)-.15 G(atching)-3.314 E F0(belo)3.314 E 4.614 -.65(w. I)-.25 +H 3.314(ft).65 G .814(he pattern matches a trailing portion of the e) +-3.314 F .814(xpanded v)-.15 F .814(alue of)-.25 F F1(pa-)4.564 E -.15 +(ra)144 660 S(meter).15 E F0 3.817(,t).73 G 1.317 +(hen the result of the e)-3.817 F 1.317(xpansion is the e)-.15 F 1.317 +(xpanded v)-.15 F 1.316(alue of)-.25 F F1(par)5.066 E(ameter)-.15 E F0 +1.316(with the shortest)4.546 F 1.084(matching pattern \(the `)144 672 R +(`)-.74 E F2(%)A F0 2.564 -.74('' c)D 1.084 +(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(%%)A F0 +2.565 -.74('' c)D 1.085(ase\) deleted.).74 F(If)6.085 E F1(par)145.25 +684 Q(ameter)-.15 E F0(is)3.39 E F2(@)2.66 E F0(or)2.66 E F2(*)2.66 E F0 +2.66(,t)C .16(he pattern remo)-2.66 F -.25(va)-.15 G 2.659(lo).25 G .159 +(peration is applied to each positional parameter in turn,)-2.659 F .509 +(and the e)144 696 R .509(xpansion is the resultant list.)-.15 F(If) +5.509 E F1(par)4.259 E(ameter)-.15 E F0 .51(is an array v)3.739 F .51 +(ariable subscripted with)-.25 F F2(@)3.01 E F0(or)3.01 E F2(*)3.01 E F0 +(,)A .423(the pattern remo)144 708 R -.25(va)-.15 G 2.923(lo).25 G .422 +(peration is applied to each member of the array in turn, and the e) +-2.923 F .422(xpansion is)-.15 F(the resultant list.)144 720 Q +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(24)185.115 E 0 Cg EP +%%Page: 25 25 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(${)108 84 Q/F1 10 -/Times-Italic@0 SF(par)A(ameter)-.15 E/F2 10/Times-Bold@0 SF(##)A F1 -(wor)A(d)-.37 E F0(})A F2(Remo)144 96 Q 1.396 -.1(ve m)-.1 H 1.196 -(atching pr).1 F 1.196(e\214x patter)-.18 F(n)-.15 E F0 6.196(.T)C(he) --6.196 E F1(wor)4.036 E(d)-.37 E F0 1.196(is e)4.466 F 1.196 -(xpanded to produce a pattern just as in path-)-.15 F .543(name e)144 -108 R .544(xpansion, and matched ag)-.15 F .544(ainst the e)-.05 F .544 -(xpanded v)-.15 F .544(alue of)-.25 F F1(par)4.294 E(ameter)-.15 E F0 -.544(using the rules described)3.774 F(under)144 120 Q F2 -.1(Pa)3.133 G -(tter).1 E 3.133(nM)-.15 G(atching)-3.133 E F0(belo)3.132 E 4.432 -.65 -(w. I)-.25 H 3.132(ft).65 G .632(he pattern matches the be)-3.132 F .632 -(ginning of the v)-.15 F .632(alue of)-.25 F F1(par)4.382 E(ameter)-.15 -E F0(,).73 E 1.151(then the result of the e)144 132 R 1.151 -(xpansion is the e)-.15 F 1.151(xpanded v)-.15 F 1.151(alue of)-.25 F F1 -(par)4.902 E(ameter)-.15 E F0 1.152(with the shortest matching)4.382 F -.184(pattern \(the `)144 144 R(`)-.74 E F2(#)A F0 1.664 -.74('' c)D .184 -(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(##)A F0 -1.664 -.74('' c)D .184(ase\) deleted.).74 F(If)5.183 E F1(par)3.933 E -(ameter)-.15 E F0(is)3.413 E F2(@)2.683 E F0(or)144 156 Q F2(*)3.018 E -F0 3.018(,t)C .518(he pattern remo)-3.018 F -.25(va)-.15 G 3.018(lo).25 -G .518 -(peration is applied to each positional parameter in turn, and the e) --3.018 F(xpan-)-.15 E .304(sion is the resultant list.)144 168 R(If) -5.304 E F1(par)4.054 E(ameter)-.15 E F0 .303(is an array v)3.533 F .303 -(ariable subscripted with)-.25 F F2(@)2.803 E F0(or)2.803 E F2(*)2.803 E -F0 2.803(,t)C .303(he pattern re-)-2.803 F(mo)144 180 Q -.25(va)-.15 G -2.987(lo).25 G .487 -(peration is applied to each member of the array in turn, and the e) --2.987 F .487(xpansion is the resultant)-.15 F(list.)144 192 Q(${)108 -208.8 Q F1(par)A(ameter)-.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 -220.8 Q F1(par)A(ameter)-.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo) -144 232.8 Q .347 -.1(ve m)-.1 H .147(atching suf\214x patter).1 F(n)-.15 -E F0 5.147(.T)C(he)-5.147 E F1(wor)2.647 E(d)-.37 E F0 .147(is e)2.647 F -.146(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 -244.8 S .458(pansion, and matched ag).15 F .458(ainst the e)-.05 F .458 -(xpanded v)-.15 F .458(alue of)-.25 F F1(par)4.209 E(ameter)-.15 E F0 -.459(using the rules described under)3.689 F F2 -.1(Pa)144 256.8 S(tter) -.1 E 3.314(nM)-.15 G(atching)-3.314 E F0(belo)3.314 E 4.614 -.65(w. I) --.25 H 3.314(ft).65 G .814 -(he pattern matches a trailing portion of the e)-3.314 F .814(xpanded v) --.15 F .814(alue of)-.25 F F1(pa-)4.564 E -.15(ra)144 268.8 S(meter).15 -E F0 3.816(,t).73 G 1.316(hen the result of the e)-3.816 F 1.317 -(xpansion is the e)-.15 F 1.317(xpanded v)-.15 F 1.317(alue of)-.25 F F1 -(par)5.067 E(ameter)-.15 E F0 1.317(with the shortest)4.547 F 1.085 -(matching pattern \(the `)144 280.8 R(`)-.74 E F2(%)A F0 2.565 -.74 -('' c)D 1.084(ase\) or the longest matching pattern \(the `).74 F(`)-.74 -E F2(%%)A F0 2.564 -.74('' c)D 1.084(ase\) deleted.).74 F(If)6.084 E F1 -(par)145.25 292.8 Q(ameter)-.15 E F0(is)3.389 E F2(@)2.659 E F0(or)2.659 -E F2(*)2.659 E F0 2.659(,t)C .159(he pattern remo)-2.659 F -.25(va)-.15 -G 2.659(lo).25 G .16 -(peration is applied to each positional parameter in turn,)-2.659 F .51 -(and the e)144 304.8 R .51(xpansion is the resultant list.)-.15 F(If) -5.51 E F1(par)4.259 E(ameter)-.15 E F0 .509(is an array v)3.739 F .509 -(ariable subscripted with)-.25 F F2(@)3.009 E F0(or)3.009 E F2(*)3.009 E -F0(,)A .422(the pattern remo)144 316.8 R -.25(va)-.15 G 2.922(lo).25 G -.422(peration is applied to each member of the array in turn, and the e) --2.922 F .423(xpansion is)-.15 F(the resultant list.)144 328.8 Q(${)108 -345.6 Q F1(par)A(ameter)-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0 -(})A F2 -.1(Pa)144 357.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 369.6 Q F1 -.8(Pa)3.7 G -.15(ra).8 G(meter).15 E F0 1.2 -(is e)3.7 F 1.2(xpanded and the longest match of)-.15 F F1(pattern)3.7 E -F0(ag)3.7 E 1.2(ainst its v)-.05 F 1.2(alue is replaced with)-.25 F F1 -(string)144 381.6 Q F0 5.397(.T)C .397 -(he match is performed using the rules described under)-5.397 F F2 -.1 -(Pa)2.896 G(tter).1 E 2.896(nM)-.15 G(atching)-2.896 E F0(belo)2.896 E -4.196 -.65(w. I)-.25 H(f).65 E F1(pat-)2.896 E(tern)144 393.6 Q F0(be) -2.569 E .069(gins with)-.15 F F2(/)2.569 E F0 2.569(,a)C .069 -(ll matches of)-2.569 F F1(pattern)2.569 E F0 .069(are replaced with) -2.569 F F1(string)2.57 E F0 5.07(.N)C .07 -(ormally only the \214rst match is)-5.07 F 2.58(replaced. If)144 405.6 R -F1(pattern)2.58 E F0(be)2.58 E .08(gins with)-.15 F F2(#)2.58 E F0 2.58 -(,i)C 2.58(tm)-2.58 G .079(ust match at the be)-2.58 F .079 -(ginning of the e)-.15 F .079(xpanded v)-.15 F .079(alue of)-.25 F F1 -(par)2.579 E(am-)-.15 E(eter)144 417.6 Q F0 5.761(.I)C(f)-5.761 E F1 -(pattern)3.261 E F0(be)3.261 E .761(gins with)-.15 F F2(%)3.261 E F0 -3.261(,i)C 3.261(tm)-3.261 G .761(ust match at the end of the e)-3.261 F -.761(xpanded v)-.15 F .761(alue of)-.25 F F1(par)3.262 E(ameter)-.15 E -F0 5.762(.I)C(f)-5.762 E F1(string)144 429.6 Q F0 .958 -(is null, matches of)3.458 F F1(pattern)3.458 E F0 .958 -(are deleted and the)3.458 F F2(/)3.458 E F0(follo)3.458 E(wing)-.25 E -F1(pattern)3.457 E F0 .957(may be omitted.)3.457 F .957(If the)5.957 F -F2(nocasematch)144 441.6 Q F0 .492 -(shell option is enabled, the match is performed without re)2.992 F -.05 -(ga)-.15 G .492(rd to the case of alpha-).05 F .884(betic characters.) -144 453.6 R(If)5.884 E F1(par)4.634 E(ameter)-.15 E F0(is)4.114 E F2(@) -3.384 E F0(or)3.383 E F2(*)3.383 E F0 3.383(,t)C .883 -(he substitution operation is applied to each positional)-3.383 F 1.002 -(parameter in turn, and the e)144 465.6 R 1.002 -(xpansion is the resultant list.)-.15 F(If)6.002 E F1(par)4.752 E -(ameter)-.15 E F0 1.002(is an array v)4.232 F 1.002(ariable sub-)-.25 F -.159(scripted with)144 477.6 R F2(@)2.659 E F0(or)2.659 E F2(*)2.659 E -F0 2.659(,t)C .159(he substitution operation is applied to each member \ -of the array in turn, and)-2.659 F(the e)144 489.6 Q -(xpansion is the resultant list.)-.15 E(${)108 506.4 Q F1(par)A(ameter) --.15 E F2(^)A F1(pattern)A F0(})A(${)108 518.4 Q F1(par)A(ameter)-.15 E -F2(^^)A F1(pattern)A F0(})A(${)108 530.4 Q F1(par)A(ameter)-.15 E F2(,)A -F1(pattern)A F0(})A(${)108 542.4 Q F1(par)A(ameter)-.15 E F2(,,)A F1 -(pattern)A F0(})A F2 .437(Case modi\214cation)144 554.4 R F0 5.437(.T)C -.437(his e)-5.437 F .438 +/Times-Italic@0 SF(par)A(ameter)-.15 E/F2 10/Times-Bold@0 SF(/)A F1 +(pattern)A F2(/)A F1(string)A F0(})A(${)108 96 Q F1(par)A(ameter)-.15 E +F2(//)A F1(pattern)A F2(/)A F1(string)A F0(})A(${)108 108 Q F1(par)A +(ameter)-.15 E F2(/#)A F1(pattern)A F2(/)A F1(string)A F0(})A(${)108 120 +Q F1(par)A(ameter)-.15 E F2(/%)A F1(pattern)A F2(/)A F1(string)A F0(})A +F2 -.1(Pa)144 132 S(tter).1 E 3.606(ns)-.15 G(ubstitution)-3.606 E F0 +6.106(.T)C(he)-6.106 E F1(pattern)3.606 E F0 1.106(is e)3.606 F 1.107 +(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-)-.15 E +(sion.)144 144 Q F1 -.8(Pa)6.034 G -.15(ra).8 G(meter).15 E F0 1.034 +(is e)3.534 F 1.033(xpanded and the longest match of)-.15 F F1(pattern) +3.533 E F0(ag)3.533 E 1.033(ainst its v)-.05 F 1.033 +(alue is replaced with)-.25 F F1(string)144 156 Q F0(.)A F1(string)5.499 +E F0(under)2.999 E .499(goes tilde e)-.18 F .499 +(xpansion, parameter and v)-.15 F .499(ariable e)-.25 F .499 +(xpansion, arithmetic e)-.15 F(xpansion,)-.15 E 1.137 +(command and process substitution, and quote remo)144 168 R -.25(va)-.15 +G 3.637(l. The).25 F 1.137(match is performed using the rules)3.637 F +.075(described under)144 180 R F2 -.1(Pa)2.575 G(tter).1 E 2.575(nM)-.15 +G(atching)-2.575 E F0(belo)2.575 E 3.875 -.65(w. I)-.25 H 2.575(nt).65 G +.075(he \214rst form abo)-2.575 F -.15(ve)-.15 G 2.575(,o).15 G .076 +(nly the \214rst match is replaced.)-2.575 F .48(If there are tw)144 192 +R 2.98(os)-.1 G .48(lashes separating)-2.98 F F1(par)2.98 E(ameter)-.15 +E F0(and)2.98 E F1(pattern)2.98 E F0 .48(\(the second form abo)2.98 F +-.15(ve)-.15 G .48(\), all matches of).15 F F1(pattern)144 204 Q F0 .374 +(are replaced with)2.874 F F1(string)2.874 E F0 5.374(.I)C(f)-5.374 E F1 +(pattern)2.874 E F0 .374(is preceded by)2.874 F F2(#)2.874 E F0 .374 +(\(the third form abo)2.874 F -.15(ve)-.15 G .375(\), it must match).15 +F .089(at the be)144 216 R .089(ginning of the e)-.15 F .088(xpanded v) +-.15 F .088(alue of)-.25 F F1(par)2.588 E(ameter)-.15 E F0 5.088(.I)C(f) +-5.088 E F1(pattern)2.588 E F0 .088(is preceded by)2.588 F F2(%)2.588 E +F0 .088(\(the fourth form)2.588 F(abo)144 228 Q -.15(ve)-.15 G .315 +(\), it must match at the end of the e).15 F .315(xpanded v)-.15 F .315 +(alue of)-.25 F F1(par)2.815 E(ameter)-.15 E F0 5.315(.I)C 2.815(ft) +-5.315 G .315(he e)-2.815 F .315(xpansion of)-.15 F F1(string)2.815 E F0 +(is)2.815 E .399(null, matches of)144 240 R F1(pattern)2.899 E F0 .399 +(are deleted.)2.899 F(If)5.399 E F1(string)2.898 E F0 .398 +(is null, matches of)2.898 F F1(pattern)2.898 E F0 .398 +(are deleted and the)2.898 F F2(/)2.898 E F0(fol-)2.898 E(lo)144 252 Q +(wing)-.25 E F1(pattern)2.5 E F0(may be omitted.)2.5 E .95(If the)144 +276 R F2(patsub_r)3.45 E(eplacement)-.18 E F0 .95 +(shell option is enabled using)3.45 F F2(shopt)3.45 E F0 3.45(,a)C 1.25 +-.15(ny u)-3.45 H .95(nquoted instances of).15 F F2(&)3.45 E F0(in)3.45 +E F1(string)144 288 Q F0(are replaced with the matching portion of)2.5 E +F1(pattern)2.5 E F0(.)A .75(Quoting an)144 312 R 3.25(yp)-.15 G .75 +(art of)-3.25 F F1(string)3.25 E F0 .749(inhibits replacement in the e) +3.249 F .749(xpansion of the quoted portion, including)-.15 F .767 +(replacement strings stored in shell v)144 324 R 3.267 +(ariables. Backslash)-.25 F .767(will escape)3.267 F F2(&)3.267 E F0(in) +3.267 E F1(string)3.267 E F0 3.267(;t)C .768(he backslash is)-3.267 F +(remo)144 336 Q -.15(ve)-.15 G 2.669(di).15 G 2.669(no)-2.669 G .169 +(rder to permit a literal)-2.669 F F2(&)2.669 E F0 .169 +(in the replacement string.)2.669 F .169 +(Backslash can also be used to es-)5.169 F 1.428(cape a backslash;)144 +348 R F2(\\\\)3.928 E F0 1.428 +(results in a literal backslash in the replacement.)3.928 F 1.428 +(Users should tak)6.428 F 3.929(ec)-.1 G 1.429(are if)-3.929 F F1 +(string)144 360 Q F0 .292(is double-quoted to a)2.792 F -.2(vo)-.2 G +.292(id unw).2 F .292 +(anted interactions between the backslash and double-quoting,)-.1 F .053 +(since backslash has special meaning within double quotes.)144 372 R +-.15(Pa)5.053 G .054(ttern substitution performs the check).15 F .07 +(for unquoted)144 384 R F2(&)2.57 E F0 .07(after e)2.57 F(xpanding)-.15 +E F1(string)2.569 E F0 2.569(;s)C .069(hell programmers should quote an) +-2.569 F 2.569(yo)-.15 G .069(ccurrences of)-2.569 F F2(&)2.569 E F0 +(the)2.569 E(y)-.15 E -.1(wa)144 396 S 1.112(nt to be tak).1 F 1.112 +(en literally in the replacement and ensure an)-.1 F 3.612(yi)-.15 G +1.112(nstances of)-3.612 F F2(&)3.612 E F0(the)3.612 E 3.613(yw)-.15 G +1.113(ant to be re-)-3.713 F(placed are unquoted.)144 408 Q .687(If the) +144 432 R F2(nocasematch)3.187 E F0 .687 +(shell option is enabled, the match is performed without re)3.187 F -.05 +(ga)-.15 G .687(rd to the case of).05 F .736(alphabetic characters.)144 +444 R(If)5.736 E F1(par)4.486 E(ameter)-.15 E F0(is)3.966 E F2(@)3.236 E +F0(or)3.236 E F2(*)3.236 E F0 3.236(,t)C .736 +(he substitution operation is applied to each posi-)-3.236 F .655 +(tional parameter in turn, and the e)144 456 R .654 +(xpansion is the resultant list.)-.15 F(If)5.654 E F1(par)4.404 E +(ameter)-.15 E F0 .654(is an array v)3.884 F(ariable)-.25 E .347 +(subscripted with)144 468 R F2(@)2.847 E F0(or)2.847 E F2(*)2.847 E F0 +2.847(,t)C .348(he substitution operation is applied to each member of \ +the array in turn,)-2.847 F(and the e)144 480 Q +(xpansion is the resultant list.)-.15 E(${)108 496.8 Q F1(par)A(ameter) +-.15 E F2(^)A F1(pattern)A F0(})A(${)108 508.8 Q F1(par)A(ameter)-.15 E +F2(^^)A F1(pattern)A F0(})A(${)108 520.8 Q F1(par)A(ameter)-.15 E F2(,)A +F1(pattern)A F0(})A(${)108 532.8 Q F1(par)A(ameter)-.15 E F2(,,)A F1 +(pattern)A F0(})A F2 .438(Case modi\214cation)144 544.8 R F0 5.438(.T)C +.438(his e)-5.438 F .437 (xpansion modi\214es the case of alphabetic characters in)-.15 F F1(par) -2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F1(pattern)144 566.4 Q -F0 .374(is e)2.874 F .374 +2.937 E(ameter)-.15 E F0 5.437(.T)C(he)-5.437 E F1(pattern)144 556.8 Q +F0 .373(is e)2.873 F .374 (xpanded to produce a pattern just as in pathname e)-.15 F 2.874 -(xpansion. Each)-.15 F .373(character in the e)2.873 F(x-)-.15 E .513 -(panded v)144 578.4 R .513(alue of)-.25 F F1(par)3.013 E(ameter)-.15 E -F0 .513(is tested ag)3.013 F(ainst)-.05 E F1(pattern)3.013 E F0 3.013 -(,a)C .514(nd, if it matches the pattern, its case is con-)-3.013 F -.15 -(ve)144 590.4 S 2.823(rted. The).15 F .323 -(pattern should not attempt to match more than one character)2.823 F -5.322(.T)-.55 G(he)-5.322 E F2(^)2.822 E F0 .322(operator con)2.822 F --.15(ve)-.4 G(rts).15 E(lo)144 602.4 Q .18(wercase letters matching)-.25 -F F1(pattern)2.681 E F0 .181(to uppercase; the)2.681 F F2(,)2.681 E F0 -.181(operator con)2.681 F -.15(ve)-.4 G .181 -(rts matching uppercase letters).15 F .085(to lo)144 614.4 R 2.585 +(xpansion. Each)-.15 F .374(character in the e)2.874 F(x-)-.15 E .514 +(panded v)144 568.8 R .514(alue of)-.25 F F1(par)3.014 E(ameter)-.15 E +F0 .514(is tested ag)3.014 F(ainst)-.05 E F1(pattern)3.014 E F0 3.014 +(,a)C .513(nd, if it matches the pattern, its case is con-)-3.014 F -.15 +(ve)144 580.8 S 2.822(rted. The).15 F .323 +(pattern should not attempt to match more than one character)2.822 F +5.323(.T)-.55 G(he)-5.323 E F2(^)2.823 E F0 .323(operator con)2.823 F +-.15(ve)-.4 G(rts).15 E(lo)144 592.8 Q .181(wercase letters matching) +-.25 F F1(pattern)2.681 E F0 .181(to uppercase; the)2.681 F F2(,)2.681 E +F0 .181(operator con)2.681 F -.15(ve)-.4 G .18 +(rts matching uppercase letters).15 F .085(to lo)144 604.8 R 2.585 (wercase. The)-.25 F F2(^^)2.585 E F0(and)2.585 E F2(,,)2.585 E F0 -.15 (ex)2.585 G .085(pansions con).15 F -.15(ve)-.4 G .085 (rt each matched character in the e).15 F .085(xpanded v)-.15 F .085 -(alue; the)-.25 F F2(^)2.585 E F0(and)144 626.4 Q F2(,)3.59 E F0 -.15 -(ex)3.59 G 1.09(pansions match and con).15 F -.15(ve)-.4 G 1.091 -(rt only the \214rst character in the e).15 F 1.091(xpanded v)-.15 F -3.591(alue. If)-.25 F F1(pattern)3.591 E F0(is)3.591 E 1.121 -(omitted, it is treated lik)144 638.4 R 3.621(ea)-.1 G F2(?)A F0 3.621 -(,w)C 1.121(hich matches e)-3.621 F -.15(ve)-.25 G 1.121(ry character) -.15 F 6.12(.I)-.55 G(f)-6.12 E F1(par)4.87 E(ameter)-.15 E F0(is)4.35 E -F2(@)3.62 E F0(or)3.62 E F2(*)3.62 E F0 3.62(,t)C 1.12(he case)-3.62 F -.339(modi\214cation operation is applied to each positional parameter i\ -n turn, and the e)144 650.4 R .34(xpansion is the re-)-.15 F .25 -(sultant list.)144 662.4 R(If)5.25 E F1(par)4 E(ameter)-.15 E F0 .25 -(is an array v)3.48 F .249(ariable subscripted with)-.25 F F2(@)2.749 E -F0(or)2.749 E F2(*)2.749 E F0 2.749(,t)C .249 -(he case modi\214cation oper)-2.749 F(-)-.2 E +(alue; the)-.25 F F2(^)2.585 E F0(and)144 616.8 Q F2(,)3.591 E F0 -.15 +(ex)3.591 G 1.091(pansions match and con).15 F -.15(ve)-.4 G 1.091 +(rt only the \214rst character in the e).15 F 1.09(xpanded v)-.15 F 3.59 +(alue. If)-.25 F F1(pattern)3.59 E F0(is)3.59 E 1.12 +(omitted, it is treated lik)144 628.8 R 3.62(ea)-.1 G F2(?)A F0 3.62(,w) +C 1.12(hich matches e)-3.62 F -.15(ve)-.25 G 1.121(ry character).15 F +6.121(.I)-.55 G(f)-6.121 E F1(par)4.871 E(ameter)-.15 E F0(is)4.351 E F2 +(@)3.621 E F0(or)3.621 E F2(*)3.621 E F0 3.621(,t)C 1.121(he case)-3.621 +F .339(modi\214cation operation is applied to each positional parameter\ + in turn, and the e)144 640.8 R .339(xpansion is the re-)-.15 F .249 +(sultant list.)144 652.8 R(If)5.249 E F1(par)3.999 E(ameter)-.15 E F0 +.249(is an array v)3.479 F .249(ariable subscripted with)-.25 F F2(@) +2.749 E F0(or)2.75 E F2(*)2.75 E F0 2.75(,t)C .25 +(he case modi\214cation oper)-2.75 F(-)-.2 E (ation is applied to each member of the array in turn, and the e)144 -674.4 Q(xpansion is the resultant list.)-.15 E(${)108 691.2 Q F1(par)A -(ameter)-.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 703.2 S +664.8 Q(xpansion is the resultant list.)-.15 E(${)108 681.6 Q F1(par)A +(ameter)-.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 693.6 S .86(rameter transf).1 F(ormation)-.25 E F0 5.86(.T)C .86(he e)-5.86 F .86(xpansion is either a transformation of the v)-.15 F .86(alue of)-.25 -F F1(par)3.36 E(ameter)-.15 E F0 .154(or information about)144 715.2 R -F1(par)2.654 E(ameter)-.15 E F0 .153(itself, depending on the v)2.654 F -.153(alue of)-.25 F F1(oper)2.653 E(ator)-.15 E F0 5.153(.E)C(ach)-5.153 -E F1(oper)2.653 E(ator)-.15 E F0 .153(is a sin-)2.653 F(gle letter:)144 -727.2 Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(24)190.395 E 0 +F F1(par)3.36 E(ameter)-.15 E F0 .153(or information about)144 705.6 R +F1(par)2.653 E(ameter)-.15 E F0 .153(itself, depending on the v)2.653 F +.153(alue of)-.25 F F1(oper)2.653 E(ator)-.15 E F0 5.154(.E)C(ach)-5.154 +E F1(oper)2.654 E(ator)-.15 E F0 .154(is a sin-)2.654 F(gle letter:)144 +717.6 Q(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(25)185.115 E 0 Cg EP -%%Page: 25 25 +%%Page: 26 26 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(U)144 84 Q F0 .142(The e)180 84 R .142 +SF(U)144 84 Q F0 .143(The e)180 84 R .142 (xpansion is a string that is the v)-.15 F .142(alue of)-.25 F/F2 10 /Times-Italic@0 SF(par)2.642 E(ameter)-.15 E F0 .142(with lo)2.642 F -.143(wercase alphabetic charac-)-.25 F(ters con)180 96 Q -.15(ve)-.4 G -(rted to uppercase.).15 E F1(u)144 108 Q F0 .43(The e)180 108 R .43 +.142(wercase alphabetic charac-)-.25 F(ters con)180 96 Q -.15(ve)-.4 G +(rted to uppercase.).15 E F1(u)144 108 Q F0 .429(The e)180 108 R .429 (xpansion is a string that is the v)-.15 F .429(alue of)-.25 F F2(par) -2.929 E(ameter)-.15 E F0 .429(with the \214rst character con)2.929 F --.15(ve)-.4 G(rted).15 E(to uppercase, if it is alphabetic.)180 120 Q F1 -(L)144 132 Q F0 .124(The e)180 132 R .124 +2.929 E(ameter)-.15 E F0 .43(with the \214rst character con)2.93 F -.15 +(ve)-.4 G(rted).15 E(to uppercase, if it is alphabetic.)180 120 Q F1(L) +144 132 Q F0 .125(The e)180 132 R .124 (xpansion is a string that is the v)-.15 F .124(alue of)-.25 F F2(par) -2.624 E(ameter)-.15 E F0 .125(with uppercase alphabetic charac-)2.625 F +2.624 E(ameter)-.15 E F0 .124(with uppercase alphabetic charac-)2.624 F (ters con)180 144 Q -.15(ve)-.4 G(rted to lo).15 E(wercase.)-.25 E F1(Q) -144 156 Q F0 1.065(The e)180 156 R 1.065 +144 156 Q F0 1.064(The e)180 156 R 1.064 (xpansion is a string that is the v)-.15 F 1.065(alue of)-.25 F F2(par) -3.565 E(ameter)-.15 E F0 1.064(quoted in a format that can be)3.565 F -(reused as input.)180 168 Q F1(E)144 180 Q F0 .44(The e)180 180 R .441 +3.565 E(ameter)-.15 E F0 1.065(quoted in a format that can be)3.565 F +(reused as input.)180 168 Q F1(E)144 180 Q F0 .441(The e)180 180 R .441 (xpansion is a string that is the v)-.15 F .441(alue of)-.25 F F2(par) -2.941 E(ameter)-.15 E F0 .441(with backslash escape sequences)2.941 F --.15(ex)180 192 S(panded as with the).15 E F1($'...)2.5 E(')-.55 E F0 -(quoting mechanism.)2.5 E F1(P)144 204 Q F0 1.073(The e)180 204 R 1.073 +2.941 E(ameter)-.15 E F0 .44(with backslash escape sequences)2.94 F -.15 +(ex)180 192 S(panded as with the).15 E F1($\010...\010)2.5 E F0 +(quoting mechanism.)2.5 E F1(P)144 204 Q F0 1.072(The e)180 204 R 1.073 (xpansion is a string that is the result of e)-.15 F 1.073 (xpanding the v)-.15 F 1.073(alue of)-.25 F F2(par)3.573 E(ameter)-.15 E F0 1.073(as if it)3.573 F(were a prompt string \(see)180 216 Q F1(PR)2.5 -E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F1(A)144 228 Q F0 1.137(The e) +E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F1(A)144 228 Q F0 1.138(The e) 180 228 R 1.138 (xpansion is a string in the form of an assignment statement or)-.15 F -F1(declar)3.638 E(e)-.18 E F0(command)3.638 E(that, if e)180 240 Q -.25 +F1(declar)3.637 E(e)-.18 E F0(command)3.637 E(that, if e)180 240 Q -.25 (va)-.25 G(luated, will recreate).25 E F2(par)2.5 E(ameter)-.15 E F0 (with its attrib)2.5 E(utes and v)-.2 E(alue.)-.25 E F1(K)144 252 Q F0 -1.34(Produces a possibly-quoted v)180 252 R 1.339(ersion of the v)-.15 F -1.339(alue of)-.25 F F2(par)3.839 E(ameter)-.15 E F0 3.839(,e)C 1.339 -(xcept that it prints the)-3.989 F -.25(va)180 264 S .257(lues of inde) +1.339(Produces a possibly-quoted v)180 252 R 1.339(ersion of the v)-.15 +F 1.339(alue of)-.25 F F2(par)3.839 E(ameter)-.15 E F0 3.839(,e)C 1.34 +(xcept that it prints the)-3.989 F -.25(va)180 264 S .258(lues of inde) .25 F -.15(xe)-.15 G 2.757(da).15 G .257(nd associati)-2.757 F .557 -.15 (ve a)-.25 H .257(rrays as a sequence of quoted k).15 F -.15(ey)-.1 G -(-v).15 E .257(alue pairs \(see)-.25 F F1(Ar)2.758 E(-)-.37 E(rays)180 +(-v).15 E .257(alue pairs \(see)-.25 F F1(Ar)2.757 E(-)-.37 E(rays)180 276 Q F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(a)144 288 Q F0(The e)180 288 Q(xpansion is a string consisting of \215ag v)-.15 E (alues representing)-.25 E F2(par)2.5 E(ameter)-.15 E F0 1.1 -.55('s a)D -(ttrib).55 E(utes.)-.2 E(If)144 304.8 Q F2(par)4.403 E(ameter)-.15 E F0 -(is)3.883 E F1(@)3.153 E F0(or)3.153 E F1(*)3.153 E F0 3.153(,t)C .653(\ -he operation is applied to each positional parameter in turn, and the e) --3.153 F(x-)-.15 E .403(pansion is the resultant list.)144 316.8 R(If) -5.403 E F2(par)4.153 E(ameter)-.15 E F0 .403(is an array v)3.633 F .403 -(ariable subscripted with)-.25 F F1(@)2.903 E F0(or)2.903 E F1(*)2.903 E -F0 2.903(,t)C .403(he opera-)-2.903 F +(ttrib).55 E(utes.)-.2 E F1(k)144 300 Q F0(Lik)180 300 Q 2.657(et)-.1 G +.157(he K transformation, b)-2.657 F .157(ut e)-.2 F .157(xpands the k) +-.15 F -.15(ey)-.1 G 2.657(sa).15 G .157(nd v)-2.657 F .157 +(alues of inde)-.25 F -.15(xe)-.15 G 2.657(da).15 G .158(nd associati) +-2.657 F .458 -.15(ve a)-.25 H -.2(r-).15 G(rays to separate w)180 312 Q +(ords after w)-.1 E(ord splitting.)-.1 E(If)144 328.8 Q F2(par)4.403 E +(ameter)-.15 E F0(is)3.883 E F1(@)3.153 E F0(or)3.153 E F1(*)3.153 E F0 +3.153(,t)C .653(he operation is applied to each positional parameter in\ + turn, and the e)-3.153 F(x-)-.15 E .403(pansion is the resultant list.) +144 340.8 R(If)5.403 E F2(par)4.153 E(ameter)-.15 E F0 .403 +(is an array v)3.633 F .403(ariable subscripted with)-.25 F F1(@)2.903 E +F0(or)2.903 E F1(*)2.903 E F0 2.903(,t)C .403(he opera-)-2.903 F (tion is applied to each member of the array in turn, and the e)144 -328.8 Q(xpansion is the resultant list.)-.15 E .708(The result of the e) -144 352.8 R .708(xpansion is subject to w)-.15 F .708 +352.8 Q(xpansion is the resultant list.)-.15 E .708(The result of the e) +144 376.8 R .708(xpansion is subject to w)-.15 F .708 (ord splitting and pathname e)-.1 F .708(xpansion as described be-)-.15 -F(lo)144 364.8 Q -.65(w.)-.25 G F1(Command Substitution)87 381.6 Q F2 -1.697(Command substitution)108 393.6 R F0(allo)4.197 E 1.697 +F(lo)144 388.8 Q -.65(w.)-.25 G F1(Command Substitution)87 405.6 Q F2 +1.697(Command substitution)108 417.6 R F0(allo)4.197 E 1.697 (ws the output of a command to replace the command name.)-.25 F 1.698 -(There are tw)6.698 F(o)-.1 E(forms:)108 405.6 Q F1($\()144 422.4 Q F2 -(command)A F1(\))1.666 E F0(or)108 434.4 Q F1<92>144 446.4 Q F2(command) -A F1<92>A(Bash)108 463.2 Q F0 .089(performs the e)2.589 F .089 +(There are tw)6.698 F(o)-.1 E(forms:)108 429.6 Q F1($\()144 446.4 Q F2 +(command)A F1(\))1.666 E F0(or)108 458.4 Q F1<92>144 470.4 Q F2(command) +A F1<92>A(Bash)108 487.2 Q F0 .089(performs the e)2.589 F .089 (xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F2(command)2.589 E F0 .088(in a subshell en)2.589 F .088(vironment and replacing the command) -.4 F .41(substitution with the standard output of the command, with an) -108 475.2 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.) +108 499.2 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.) -.25 F .41(Embedded ne)5.41 F(w-)-.25 E .192(lines are not deleted, b) -108 487.2 R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F +108 511.2 R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F -.15(ve)-.15 G 2.692(dd).15 G .192(uring w)-2.692 F .192(ord splitting.) -.1 F .192(The command substitution)5.192 F F1($\(cat)2.691 E F2(\214le) -2.691 E F1(\))A F0(can be replaced by the equi)108 499.2 Q -.25(va)-.25 +2.691 E F1(\))A F0(can be replaced by the equi)108 523.2 Q -.25(va)-.25 G(lent b).25 E(ut f)-.2 E(aster)-.1 E F1($\(<)2.5 E F2(\214le)2.5 E F1 (\))A F0(.)A 1.724(When the old-style backquote form of substitution is\ - used, backslash retains its literal meaning e)108 516 R(xcept)-.15 E -.315(when follo)108 528 R .315(wed by)-.25 F F1($)2.815 E F0(,)A F1<92> + used, backslash retains its literal meaning e)108 540 R(xcept)-.15 E +.315(when follo)108 552 R .315(wed by)-.25 F F1($)2.815 E F0(,)A F1<92> 2.815 E F0 2.815(,o)C(r)-2.815 E F1(\\)2.815 E F0 5.315(.T)C .314(he \ \214rst backquote not preceded by a backslash terminates the command su\ -b-)-5.315 F 3.886(stitution. When)108 540 R 1.386(using the $\()3.886 F +b-)-5.315 F 3.886(stitution. When)108 564 R 1.386(using the $\()3.886 F F2(command).833 E F0 3.886(\)f)1.666 G 1.387 (orm, all characters between the parentheses mak)-3.886 F 3.887(eu)-.1 G 3.887(pt)-3.887 G 1.387(he com-)-3.887 F -(mand; none are treated specially)108 552 Q(.)-.65 E .894 -(Command substitutions may be nested.)108 568.8 R 2.494 -.8(To n)5.894 H +(mand; none are treated specially)108 576 Q(.)-.65 E .894 +(Command substitutions may be nested.)108 592.8 R 2.494 -.8(To n)5.894 H .894(est when using the backquoted form, escape the inner back-).8 F -(quotes with backslashes.)108 580.8 Q .422 -(If the substitution appears within double quotes, w)108 597.6 R .422 +(quotes with backslashes.)108 604.8 Q .422 +(If the substitution appears within double quotes, w)108 621.6 R .422 (ord splitting and pathname e)-.1 F .423(xpansion are not performed)-.15 -F(on the results.)108 609.6 Q F1(Arithmetic Expansion)87 626.4 Q F0 -1.035(Arithmetic e)108 638.4 R 1.035(xpansion allo)-.15 F 1.035 +F(on the results.)108 633.6 Q F1(Arithmetic Expansion)87 650.4 Q F0 +1.035(Arithmetic e)108 662.4 R 1.035(xpansion allo)-.15 F 1.035 (ws the e)-.25 F -.25(va)-.25 G 1.034(luation of an arithmetic e).25 F 1.034(xpression and the substitution of the result.)-.15 F -(The format for arithmetic e)108 650.4 Q(xpansion is:)-.15 E F1($\(\() -144 667.2 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A F0(The)108 684 Q -F2 -.2(ex)2.665 G(pr).2 E(ession)-.37 E F0 .165 -(is treated as if it were within double quotes, b)2.905 F .166 -(ut a double quote inside the parentheses is not)-.2 F .231 -(treated specially)108 696 R 5.231(.A)-.65 G .231(ll tok)-5.231 F .231 -(ens in the e)-.1 F .231(xpression under)-.15 F .231(go parameter and v) --.18 F .23(ariable e)-.25 F .23(xpansion, command substi-)-.15 F .048 -(tution, and quote remo)108 708 R -.25(va)-.15 G 2.548(l. The).25 F .048 -(result is treated as the arithmetic e)2.548 F .048(xpression to be e) --.15 F -.25(va)-.25 G 2.549(luated. Arithmetic).25 F -.15(ex)2.549 G(-) -.15 E(pansions may be nested.)108 720 Q(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(25)190.395 E 0 Cg EP -%%Page: 26 26 +(The format for arithmetic e)108 674.4 Q(xpansion is:)-.15 E F1($\(\() +144 691.2 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A F0(The)108 708 Q +F2 -.2(ex)2.735 G(pr).2 E(ession)-.37 E F0(under)2.975 E .235 +(goes the same e)-.18 F .236 +(xpansions as if it were within double quotes, b)-.15 F .236 +(ut double quote charac-)-.2 F 2.8(ters in)108 720 R F2 -.2(ex)5.3 G(pr) +.2 E(ession)-.37 E F0 2.799(are not treated specially and are remo)5.3 F +-.15(ve)-.15 G 5.299(d. All).15 F(tok)5.299 E 2.799(ens in the e)-.1 F +2.799(xpression under)-.15 F(go)-.18 E(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(26)185.115 E 0 Cg EP +%%Page: 27 27 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.379(The e)108 84 -R -.25(va)-.25 G 1.378 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .919 +(parameter and v)108 84 R .919(ariable e)-.25 F .919 +(xpansion, command substitution, and quote remo)-.15 F -.25(va)-.15 G +3.419(l. The).25 F .92(result is treated as the)3.419 F(arithmetic e)108 +96 Q(xpression to be e)-.15 E -.25(va)-.25 G 2.5(luated. Arithmetic).25 +F -.15(ex)2.5 G(pansions may be nested.).15 E 1.379(The e)108 112.8 R +-.25(va)-.25 G 1.378 (luation is performed according to the rules listed belo).25 F 3.878(wu) -.25 G(nder)-3.878 E/F1 9/Times-Bold@0 SF 1.378(ARITHMETIC EV)3.878 F (ALU)-1.215 E -.855(AT)-.54 G(ION).855 E/F2 9/Times-Roman@0 SF(.)A F0 -(If)5.878 E/F3 10/Times-Italic@0 SF -.2(ex)108 96 S(pr).2 E(ession)-.37 -E F0(is in)2.74 E -.25(va)-.4 G(lid,).25 E/F4 10/Times-Bold@0 SF(bash) -2.5 E F0(prints a message indicating f)2.5 E -(ailure and no substitution occurs.)-.1 E F4(Pr)87 112.8 Q -(ocess Substitution)-.18 E F3(Pr)108 124.8 Q .405(ocess substitution) +(If)5.878 E/F3 10/Times-Italic@0 SF -.2(ex)108 124.8 S(pr).2 E(ession) +-.37 E F0(is in)2.74 E -.25(va)-.4 G(lid,).25 E/F4 10/Times-Bold@0 SF +(bash)2.5 E F0(prints a message indicating f)2.5 E +(ailure and no substitution occurs.)-.1 E F4(Pr)87 141.6 Q +(ocess Substitution)-.18 E F3(Pr)108 153.6 Q .405(ocess substitution) -.45 F F0(allo)2.905 E .405(ws a process')-.25 F 2.905(si)-.55 G .405 (nput or output to be referred to using a \214lename.)-2.905 F .405 -(It tak)5.405 F .405(es the form)-.1 F(of)108 136.8 Q F4(<\()3.251 E F3 +(It tak)5.405 F .405(es the form)-.1 F(of)108 165.6 Q F4(<\()3.251 E F3 (list)A F4(\)).833 E F0(or)3.251 E F4(>\()3.251 E F3(list)A F4(\)).833 E F0 5.751(.T)C .751(he process)-5.751 F F3(list)3.251 E F0 .751 (is run asynchronously)3.251 F 3.251(,a)-.65 G .751 (nd its input or output appears as a \214lename.)-3.251 F .147 -(This \214lename is passed as an ar)108 148.8 R .148 +(This \214lename is passed as an ar)108 177.6 R .148 (gument to the current command as the result of the e)-.18 F 2.648 (xpansion. If)-.15 F(the)2.648 E F4(>\()2.648 E F3(list)A F4(\)).833 E -F0 .56(form is used, writing to the \214le will pro)108 160.8 R .56 +F0 .56(form is used, writing to the \214le will pro)108 189.6 R .56 (vide input for)-.15 F F3(list)3.059 E F0 5.559(.I)C 3.059(ft)-5.559 G (he)-3.059 E F4(<\()3.059 E F3(list)A F4(\)).833 E F0 .559 -(form is used, the \214le passed as an)3.059 F(ar)108 172.8 Q .308 +(form is used, the \214le passed as an)3.059 F(ar)108 201.6 Q .308 (gument should be read to obtain the output of)-.18 F F3(list)2.808 E F0 5.308(.P)C .309(rocess substitution is supported on systems that sup-) --5.308 F(port named pipes \()108 184.8 Q F3(FIFOs)A F0 2.5(\)o)C 2.5(rt) +-5.308 F(port named pipes \()108 213.6 Q F3(FIFOs)A F0 2.5(\)o)C 2.5(rt) -2.5 G(he)-2.5 E F4(/de)2.5 E(v/fd)-.15 E F0 -(method of naming open \214les.)2.5 E .897(When a)108 201.6 R -.25(va) +(method of naming open \214les.)2.5 E .897(When a)108 230.4 R -.25(va) -.2 G .896(ilable, process substitution is performed simultaneously wit\ h parameter and v).25 F .896(ariable e)-.25 F(xpansion,)-.15 E -(command substitution, and arithmetic e)108 213.6 Q(xpansion.)-.15 E F4 --.75(Wo)87 230.4 S(rd Splitting).75 E F0 1.142 -(The shell scans the results of parameter e)108 242.4 R 1.143 +(command substitution, and arithmetic e)108 242.4 Q(xpansion.)-.15 E F4 +-.75(Wo)87 259.2 S(rd Splitting).75 E F0 1.142 +(The shell scans the results of parameter e)108 271.2 R 1.143 (xpansion, command substitution, and arithmetic e)-.15 F 1.143 -(xpansion that)-.15 F(did not occur within double quotes for)108 254.4 Q +(xpansion that)-.15 F(did not occur within double quotes for)108 283.2 Q F3(wor)2.84 E 2.5(ds)-.37 G(plitting)-2.5 E F0(.).22 E .063 -(The shell treats each character of)108 271.2 R F1(IFS)2.563 E F0 .063 +(The shell treats each character of)108 300 R F1(IFS)2.563 E F0 .063 (as a delimiter)2.313 F 2.563(,a)-.4 G .063 (nd splits the results of the other e)-2.563 F .063(xpansions into w) -.15 F(ords)-.1 E .207(using these characters as \214eld terminators.) -108 283.2 R(If)5.207 E F1(IFS)2.707 E F0 .207(is unset, or its v)2.457 F +108 312 R(If)5.207 E F1(IFS)2.707 E F0 .207(is unset, or its v)2.457 F .207(alue is e)-.25 F(xactly)-.15 E F4()2.708 E F0 -(,)A .837(the def)108 295.2 R .837(ault, then sequences of)-.1 F F4 +(,)A .837(the def)108 324 R .837(ault, then sequences of)-.1 F F4 ()3.337 E F0(,)A F4()3.337 E F0 3.337(,a)C(nd)-3.337 E F4 ()3.337 E F0 .836(at the be)3.336 F .836 -(ginning and end of the results of)-.15 F .345(the pre)108 307.2 R .345 +(ginning and end of the results of)-.15 F .345(the pre)108 336 R .345 (vious e)-.25 F .345(xpansions are ignored, and an)-.15 F 2.845(ys)-.15 G .345(equence of)-2.845 F F1(IFS)2.845 E F0 .345 (characters not at the be)2.595 F .345(ginning or end serv)-.15 F(es) --.15 E 1.237(to delimit w)108 319.2 R 3.737(ords. If)-.1 F F1(IFS)3.737 -E F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.236 +-.15 E 1.237(to delimit w)108 348 R 3.737(ords. If)-.1 F F1(IFS)3.737 E +F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.236 (ault, then sequences of the whitespace characters)-.1 F F4(space)108 -331.2 Q F0(,)A F4(tab)2.506 E F0 2.506(,a)C(nd)-2.506 E F4(newline)2.506 -E F0 .006(are ignored at the be)2.506 F .006(ginning and end of the w) --.15 F .007(ord, as long as the whitespace charac-)-.1 F .921 -(ter is in the v)108 343.2 R .92(alue of)-.25 F F1(IFS)3.42 E F0(\(an) -3.17 E F1(IFS)3.42 E F0 .92(whitespace character\).)3.17 F(An)5.92 E -3.42(yc)-.15 G .92(haracter in)-3.42 F F1(IFS)3.42 E F0 .92(that is not) -3.17 F F1(IFS)3.42 E F0(whitespace,)3.17 E .428(along with an)108 355.2 -R 2.928(ya)-.15 G(djacent)-2.928 E F1(IFS)2.928 E F0 .428 +360 Q F0(,)A F4(tab)2.506 E F0 2.506(,a)C(nd)-2.506 E F4(newline)2.506 E +F0 .006(are ignored at the be)2.506 F .006(ginning and end of the w)-.15 +F .007(ord, as long as the whitespace charac-)-.1 F .921 +(ter is in the v)108 372 R .92(alue of)-.25 F F1(IFS)3.42 E F0(\(an)3.17 +E F1(IFS)3.42 E F0 .92(whitespace character\).)3.17 F(An)5.92 E 3.42(yc) +-.15 G .92(haracter in)-3.42 F F1(IFS)3.42 E F0 .92(that is not)3.17 F +F1(IFS)3.42 E F0(whitespace,)3.17 E .428(along with an)108 384 R 2.928 +(ya)-.15 G(djacent)-2.928 E F1(IFS)2.928 E F0 .428 (whitespace characters, delimits a \214eld.)2.678 F 2.928(As)5.428 G .428(equence of)-2.928 F F1(IFS)2.928 E F0 .429(whitespace charac-)2.679 -F(ters is also treated as a delimiter)108 367.2 Q 5(.I)-.55 G 2.5(ft)-5 -G(he v)-2.5 E(alue of)-.25 E F1(IFS)2.5 E F0(is null, no w)2.25 E -(ord splitting occurs.)-.1 E .783(Explicit null ar)108 384 R .783 +F(ters is also treated as a delimiter)108 396 Q 5(.I)-.55 G 2.5(ft)-5 G +(he v)-2.5 E(alue of)-.25 E F1(IFS)2.5 E F0(is null, no w)2.25 E +(ord splitting occurs.)-.1 E .783(Explicit null ar)108 412.8 R .783 (guments \()-.18 F F4 .833("").833 G F0(or)2.449 E F4 .833<0808>4.115 G F0 3.282(\)a)C .782 (re retained and passed to commands as empty strings.)-3.282 F .782 -(Unquoted im-)5.782 F .178(plicit null ar)108 396 R .179 +(Unquoted im-)5.782 F .178(plicit null ar)108 424.8 R .179 (guments, resulting from the e)-.18 F .179 (xpansion of parameters that ha)-.15 F .479 -.15(ve n)-.2 H 2.679(ov).15 G .179(alues, are remo)-2.929 F -.15(ve)-.15 G 2.679(d. If).15 F 2.679 -(ap)2.679 G(a-)-2.679 E .319(rameter with no v)108 408 R .319(alue is e) --.25 F .319(xpanded within double quotes, a null ar)-.15 F .319 -(gument results and is retained and passed)-.18 F -(to a command as an empty string.)108 420 Q(When a quoted null ar)5 E +(ap)2.679 G(a-)-2.679 E .319(rameter with no v)108 436.8 R .319 +(alue is e)-.25 F .319(xpanded within double quotes, a null ar)-.15 F +.319(gument results and is retained and passed)-.18 F +(to a command as an empty string.)108 448.8 Q(When a quoted null ar)5 E .001(gument appears as part of a w)-.18 F .001(ord whose e)-.1 F -(xpansion)-.15 E .984(is non-null, the null ar)108 432 R .984 +(xpansion)-.15 E .984(is non-null, the null ar)108 460.8 R .984 (gument is remo)-.18 F -.15(ve)-.15 G 3.483(d. That).15 F .983 (is, the w)3.483 F(ord)-.1 E/F5 10/Courier@0 SF -5.1673.483 F F0(becomes)3.483 E F53.483 E F0 .983(after w)3.483 F .983 -(ord splitting and)-.1 F(null ar)108 444 Q(gument remo)-.18 E -.25(va) --.15 G(l.).25 E(Note that if no e)108 460.8 Q -(xpansion occurs, no splitting is performed.)-.15 E F4 -.1(Pa)87 477.6 S -(thname Expansion).1 E F0 .37(After w)108 489.6 R .37 +(ord splitting and)-.1 F(null ar)108 472.8 Q(gument remo)-.18 E -.25(va) +-.15 G(l.).25 E(Note that if no e)108 489.6 Q +(xpansion occurs, no splitting is performed.)-.15 E F4 -.1(Pa)87 506.4 S +(thname Expansion).1 E F0 .37(After w)108 518.4 R .37 (ord splitting, unless the)-.1 F F42.87 E F0 .37 (option has been set,)2.87 F F4(bash)2.87 E F0 .371(scans each w)2.871 F .371(ord for the characters)-.1 F F4(*)2.871 E F0(,)A F4(?)2.871 E F0 2.871(,a)C(nd)-2.871 E F4([)2.871 E F0(.)A .634 (If one of these characters appears, and is not quoted, then the w)108 -501.6 R .634(ord is re)-.1 F -.05(ga)-.15 G .633(rded as a).05 F F3 +530.4 R .634(ord is re)-.1 F -.05(ga)-.15 G .633(rded as a).05 F F3 (pattern)4.383 E F0 3.133(,a).24 G .633(nd replaced)-3.133 F 1.34(with \ an alphabetically sorted list of \214lenames matching the pattern \(see) -108 513.6 R F1 -.09(Pa)3.84 G(tter).09 E 3.59(nM)-.135 G(atching)-3.59 E +108 542.4 R F1 -.09(Pa)3.84 G(tter).09 E 3.59(nM)-.135 G(atching)-3.59 E F0(belo)3.59 E 3.84(w\). If)-.25 F(no)3.84 E .534 -(matching \214lenames are found, and the shell option)108 525.6 R F4 +(matching \214lenames are found, and the shell option)108 554.4 R F4 (nullglob)3.034 E F0 .534(is not enabled, the w)3.034 F .534 -(ord is left unchanged.)-.1 F(If)5.534 E(the)108 537.6 Q F4(nullglob) +(ord is left unchanged.)-.1 F(If)5.534 E(the)108 566.4 Q F4(nullglob) 3.284 E F0 .785(option is set, and no matches are found, the w)3.284 F .785(ord is remo)-.1 F -.15(ve)-.15 G 3.285(d. If).15 F(the)3.285 E F4 (failglob)3.285 E F0 .785(shell option is)3.285 F .754(set, and no matc\ hes are found, an error message is printed and the command is not e)108 -549.6 R -.15(xe)-.15 G 3.254(cuted. If).15 F .754(the shell)3.254 F -(option)108 561.6 Q F4(nocaseglob)3.263 E F0 .763 +578.4 R -.15(xe)-.15 G 3.254(cuted. If).15 F .754(the shell)3.254 F +(option)108 590.4 Q F4(nocaseglob)3.263 E F0 .763 (is enabled, the match is performed without re)3.263 F -.05(ga)-.15 G .764(rd to the case of alphabetic characters.).05 F .039 -(When a pattern is used for pathname e)108 573.6 R .039 +(When a pattern is used for pathname e)108 602.4 R .039 (xpansion, the character)-.15 F F4 -.63(``)2.539 G -.55(.').63 G(')-.08 E F0 .039(at the start of a name or immediately fol-)5.039 F(lo)108 -585.6 Q .81(wing a slash must be matched e)-.25 F(xplicitly)-.15 E 3.31 -(,u)-.65 G .81(nless the shell option)-3.31 F F4(dotglob)3.31 E F0 .81 -(is set.)3.31 F .81(The \214lenames)5.81 F F4 -.63(``)3.31 G -.55(.').63 -G(')-.08 E F0(and)5.81 E F4 -.63(``)108 597.6 S(..).63 E -.63('')-.55 G -F0 1.182(must al)6.812 F -.1(wa)-.1 G 1.182(ys be matched e).1 F -(xplicitly)-.15 E 3.682(,e)-.65 G -.15(ve)-3.932 G 3.682(ni).15 G(f) --3.682 E F4(dotglob)3.682 E F0 1.182(is set.)3.682 F 1.181 -(In other cases, the)6.182 F F4 -.63(``)3.681 G -.55(.').63 G(')-.08 E -F0 1.181(character is not)6.181 F .613(treated specially)108 609.6 R -5.613(.W)-.65 G .613 -(hen matching a pathname, the slash character must al)-5.613 F -.1(wa) --.1 G .614(ys be matched e).1 F .614(xplicitly by a)-.15 F .655 -(slash in the pattern, b)108 621.6 R .655(ut in other matching conte)-.2 -F .655(xts it can be matched by a special pattern character as de-)-.15 -F .719(scribed belo)108 633.6 R 3.219(wu)-.25 G(nder)-3.219 E F1 -.09 -(Pa)3.219 G(tter).09 E 2.969(nM)-.135 G(atching)-2.969 E F2(.)A F0 .719 -(See the description of)5.219 F F4(shopt)3.219 E F0(belo)3.219 E 3.22 -(wu)-.25 G(nder)-3.22 E F1 .72(SHELL B)3.22 F(UIL)-.09 E .72(TIN COM-) --.828 F(MANDS)108 645.6 Q F0(for a description of the)2.25 E F4 -(nocaseglob)2.5 E F0(,)A F4(nullglob)2.5 E F0(,)A F4(failglob)2.5 E F0 -2.5(,a)C(nd)-2.5 E F4(dotglob)2.5 E F0(shell options.)2.5 E(The)108 -662.4 Q F1(GLOBIGNORE)2.562 E F0 .062(shell v)2.312 F .061 +614.4 Q .19(wing a slash must be matched e)-.25 F(xplicitly)-.15 E 2.69 +(,u)-.65 G .19(nless the shell option)-2.69 F F4(dotglob)2.691 E F0 .191 +(is set.)2.691 F .191(In order to match the \214le-)5.191 F(names)108 +626.4 Q F4 -.63(``)3.645 G -.55(.').63 G(')-.08 E F0(and)6.145 E F4 -.63 +(``)3.645 G(..).63 E -.63('')-.55 G F0 3.645(,t).63 G 1.145 +(he pattern must be)-3.645 F 1.145(gin with `)-.15 F(`.)-.74 E 2.625 +-.74('' \()-.7 H 1.145(for e).74 F 1.145(xample, `)-.15 F(`.?')-.74 E +1.145('\), e)-.74 F -.15(ve)-.25 G 3.645(ni).15 G(f)-3.645 E F4(dotglob) +3.644 E F0 1.144(is set.)3.644 F 1.144(If the)6.144 F F4(globskipdots) +108 638.4 Q F0 .153(shell option is enabled, the \214lenames)2.653 F F4 +-.63(``)2.653 G -.55(.').63 G(')-.08 E F0(and)5.153 E F4 -.63(``)2.654 G +(..).63 E -.63('')-.55 G F0 .154(are ne)5.784 F -.15(ve)-.25 G 2.654(rm) +.15 G .154(atched, e)-2.654 F -.15(ve)-.25 G 2.654(ni).15 G 2.654(ft) +-2.654 G .154(he pattern be-)-2.654 F .12(gins with a)108 650.4 R F4 +-.63(``)2.62 G -.55(.').63 G(')-.08 E F0 5.12(.W)C .12 +(hen not matching pathnames, the)-5.12 F F4 -.63(``)2.62 G -.55(.').63 G +(')-.08 E F0 .12(character is not treated specially)5.12 F 5.12(.W)-.65 +G .12(hen matching)-5.12 F 3.54(ap)108 662.4 S 1.04 +(athname, the slash character must al)-3.54 F -.1(wa)-.1 G 1.04 +(ys be matched e).1 F 1.041(xplicitly by a slash in the pattern, b)-.15 +F 1.041(ut in other)-.2 F .132(matching conte)108 674.4 R .132 +(xts it can be matched by a special pattern character as described belo) +-.15 F 2.631(wu)-.25 G(nder)-2.631 E F1 -.09(Pa)2.631 G(tter).09 E 2.381 +(nM)-.135 G(atch-)-2.381 E(ing)108 686.4 Q F2(.)A F0 .605 +(See the description of)5.105 F F4(shopt)3.105 E F0(belo)3.105 E 3.106 +(wu)-.25 G(nder)-3.106 E F1 .606(SHELL B)3.106 F(UIL)-.09 E .606 +(TIN COMMANDS)-.828 F F0 .606(for a description of the)2.856 F F4(no-) +3.106 E(caseglob)108 698.4 Q F0(,)A F4(nullglob)2.5 E F0(,)A F4 +(globskipdots)2.5 E F0(,)A F4(failglob)2.5 E F0 2.5(,a)C(nd)-2.5 E F4 +(dotglob)2.5 E F0(shell options.)2.5 E(The)108 715.2 Q F1(GLOBIGNORE) +2.562 E F0 .062(shell v)2.312 F .061 (ariable may be used to restrict the set of \214le names matching a)-.25 F F3(pattern)3.811 E F0 5.061(.I).24 G(f)-5.061 E F1(GLO-)2.561 E -(BIGNORE)108 674.4 Q F0 1.096(is set, each matching \214le name that al\ -so matches one of the patterns in)3.346 F F1(GLOBIGNORE)3.597 E F0 1.097 -(is re-)3.347 F(mo)108 686.4 Q -.15(ve)-.15 G 2.851(df).15 G .351 -(rom the list of matches.)-2.851 F .351(If the)5.351 F F4(nocaseglob) -2.851 E F0 .351(option is set, the matching ag)2.851 F .351 -(ainst the patterns in)-.05 F F1(GLO-)2.85 E(BIGNORE)108 698.4 Q F0 1.48 -(is performed without re)3.73 F -.05(ga)-.15 G 1.48(rd to case.).05 F -1.48(The \214lenames)6.48 F F4 -.63(``)3.98 G -.55(.').63 G(')-.08 E F0 -(and)6.48 E F4 -.63(``)3.98 G(..).63 E -.63('')-.55 G F0 1.481(are al) -7.11 F -.1(wa)-.1 G 1.481(ys ignored when).1 F F1(GLOBIGNORE)108 710.4 Q -F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15(ve)-.25 G -1.627 -.4(r, s).15 H(etting).4 E F1(GLOBIGNORE)3.327 E F0 .827 -(to a non-null v)3.077 F .827(alue has the ef)-.25 F .827(fect of)-.25 F -.682(enabling the)108 722.4 R F4(dotglob)3.182 E F0 .682 -(shell option, so all other \214lenames be)3.182 F .682(ginning with a) --.15 F F4 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.) -5.682 F 2.283 -.8(To g)5.683 H .683(et the old).8 F(GNU Bash 5.1)72 768 -Q(2020 October 29)141.235 E(26)190.395 E 0 Cg EP -%%Page: 27 27 +(BIGNORE)108 727.2 Q F0 2.015(is set, each matching \214le name that al\ +so matches one of the patterns in)4.264 F F1(GLOBIGNORE)4.515 E F0(is) +4.265 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(27)185.115 E 0 +Cg EP +%%Page: 28 28 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(beha)108 84 Q -1.185(vior of ignoring \214lenames be)-.2 F 1.185(ginning with a)-.15 F -/F1 10/Times-Bold@0 SF -.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684 -(,m)C(ak)-3.684 E(e)-.1 E F1 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.184 -(one of the patterns in)6.184 F/F2 9/Times-Bold@0 SF(GLOBIGNORE)3.684 E -/F3 9/Times-Roman@0 SF(.)A F0(The)108 96 Q F1(dotglob)3.131 E F0 .631 -(option is disabled when)3.131 F F2(GLOBIGNORE)3.132 E F0 .632 -(is unset.)2.882 F .632(The pattern matching honors the setting of)5.632 -F(the)108 108 Q F1(extglob)2.5 E F0(shell option.)2.5 E F1 -.1(Pa)108 -124.8 S(tter).1 E 2.5(nM)-.15 G(atching)-2.5 E F0(An)108 141.6 Q 3.138 -(yc)-.15 G .638(haracter that appears in a pattern, other than the spec\ -ial pattern characters described belo)-3.138 F 1.938 -.65(w, m)-.25 H -(atches).65 E 2.721(itself. The)108 153.6 R .221 -(NUL character may not occur in a pattern.)2.721 F 2.721(Ab)5.221 G .221 -(ackslash escapes the follo)-2.721 F .222(wing character; the es-)-.25 F -.418(caping backslash is discarded when matching.)108 165.6 R .418 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(remo)108 84 Q -.15 +(ve)-.15 G 3.915(df).15 G 1.415(rom the list of matches.)-3.915 F 1.415 +(If the)6.415 F/F1 10/Times-Bold@0 SF(nocaseglob)3.915 E F0 1.415 +(option is set, the matching ag)3.915 F 1.414(ainst the patterns in)-.05 +F/F2 9/Times-Bold@0 SF(GLOBIGNORE)108 96 Q F0 .146 +(is performed without re)2.396 F -.05(ga)-.15 G .146(rd to case.).05 F +.146(The \214lenames)5.146 F F1 -.63(``)2.646 G -.55(.').63 G(')-.08 E +F0(and)5.147 E F1 -.63(``)2.647 G(..).63 E -.63('')-.55 G F0 .147 +(are al)5.777 F -.1(wa)-.1 G .147(ys ignored when).1 F F2(GLOBIGNORE)108 +108 Q F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15(ve) +-.25 G 1.627 -.4(r, s).15 H(etting).4 E F2(GLOBIGNORE)3.327 E F0 .827 +(to a non-null v)3.077 F .827(alue has the ef)-.25 F .827(fect of)-.25 F +.682(enabling the)108 120 R F1(dotglob)3.182 E F0 .682 +(shell option, so all other \214lenames be)3.182 F .682(ginning with a) +-.15 F F1 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.) +5.682 F 2.283 -.8(To g)5.683 H .683(et the old).8 F(beha)108 132 Q 1.185 +(vior of ignoring \214lenames be)-.2 F 1.185(ginning with a)-.15 F F1 +-.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684(,m)C(ak)-3.684 E(e)-.1 E +F1 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.184(one of the patterns in) +6.184 F F2(GLOBIGNORE)3.684 E/F3 9/Times-Roman@0 SF(.)A F0(The)108 144 Q +F1(dotglob)3.131 E F0 .631(option is disabled when)3.131 F F2 +(GLOBIGNORE)3.132 E F0 .632(is unset.)2.882 F .632 +(The pattern matching honors the setting of)5.632 F(the)108 156 Q F1 +(extglob)2.5 E F0(shell option.)2.5 E F1 -.1(Pa)108 172.8 S(tter).1 E +2.5(nM)-.15 G(atching)-2.5 E F0(An)108 189.6 Q 3.138(yc)-.15 G .638(har\ +acter that appears in a pattern, other than the special pattern charact\ +ers described belo)-3.138 F 1.938 -.65(w, m)-.25 H(atches).65 E 2.721 +(itself. The)108 201.6 R .221(NUL character may not occur in a pattern.) +2.721 F 2.721(Ab)5.221 G .221(ackslash escapes the follo)-2.721 F .222 +(wing character; the es-)-.25 F .418 +(caping backslash is discarded when matching.)108 213.6 R .418 (The special pattern characters must be quoted if the)5.418 F 2.918(ya) --.15 G .418(re to)-2.918 F(be matched literally)108 177.6 Q(.)-.65 E -(The special pattern characters ha)108 194.4 Q .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E F1(*)144 211.2 Q F0 .376 -(Matches an)180 211.2 R 2.876(ys)-.15 G .376 +-.15 G .418(re to)-2.918 F(be matched literally)108 225.6 Q(.)-.65 E +(The special pattern characters ha)108 242.4 Q .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F1(*)144 259.2 Q F0 .376 +(Matches an)180 259.2 R 2.876(ys)-.15 G .376 (tring, including the null string.)-2.876 F .376(When the)5.376 F F1 -(globstar)2.876 E F0 .377(shell option is enabled,)2.876 F(and)180 223.2 +(globstar)2.876 E F0 .377(shell option is enabled,)2.876 F(and)180 271.2 Q F1(*)3.275 E F0 .775(is used in a pathname e)3.275 F .775 (xpansion conte)-.15 F .775(xt, tw)-.15 F 3.275(oa)-.1 G(djacent)-3.275 E F1(*)3.275 E F0 3.275(su)C .775(sed as a single pattern)-3.275 F 1.058 (will match all \214les and zero or more directories and subdirectories\ -.)180 235.2 R 1.058(If follo)6.058 F 1.058(wed by a)-.25 F F1(/)3.558 E -F0(,)A(tw)180 247.2 Q 2.5(oa)-.1 G(djacent)-2.5 E F1(*)2.5 E F0 2.5(sw)C -(ill match only directories and subdirectories.)-2.5 E F1(?)144 259.2 Q -F0(Matches an)180 259.2 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E -F1([...])144 271.2 Q F0 .579(Matches an)180 271.2 R 3.079(yo)-.15 G .579 +.)180 283.2 R 1.058(If follo)6.058 F 1.058(wed by a)-.25 F F1(/)3.558 E +F0(,)A(tw)180 295.2 Q 2.5(oa)-.1 G(djacent)-2.5 E F1(*)2.5 E F0 2.5(sw)C +(ill match only directories and subdirectories.)-2.5 E F1(?)144 307.2 Q +F0(Matches an)180 307.2 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E +F1([...])144 319.2 Q F0 .579(Matches an)180 319.2 R 3.079(yo)-.15 G .579 (ne of the enclosed characters.)-3.079 F 3.079(Ap)5.579 G .578 (air of characters separated by a h)-3.079 F(yphen)-.05 E .684 -(denotes a)180 283.2 R/F4 10/Times-Italic@0 SF -.15(ra)3.184 G(ng).15 E +(denotes a)180 331.2 R/F4 10/Times-Italic@0 SF -.15(ra)3.184 G(ng).15 E 3.184(ee)-.1 G(xpr)-3.384 E(ession)-.37 E F0 3.184(;a)C .984 -.15(ny c) -3.184 H .684(haracter that f).15 F .684(alls between those tw)-.1 F -3.185(oc)-.1 G .685(haracters, inclu-)-3.185 F(si)180 295.2 Q -.15(ve) +3.185(oc)-.1 G .685(haracters, inclu-)-3.185 F(si)180 343.2 Q -.15(ve) -.25 G 3.713(,u).15 G 1.213(sing the current locale')-3.713 F 3.712(sc) -.55 G 1.212(ollating sequence and character set, is matched.)-3.712 F -1.212(If the)6.212 F 1.123(\214rst character follo)180 307.2 R 1.123 +1.212(If the)6.212 F 1.123(\214rst character follo)180 355.2 R 1.123 (wing the)-.25 F F1([)3.623 E F0 1.123(is a)3.623 F F1(!)3.623 E F0 1.124(or a)6.123 F F1(^)3.624 E F0 1.124(then an)3.624 F 3.624(yc)-.15 G -1.124(haracter not enclosed is matched.)-3.624 F .895 -(The sorting order of characters in range e)180 319.2 R .894 -(xpressions is determined by the current locale)-.15 F .375(and the v) -180 331.2 R .375(alues of the)-.25 F F2(LC_COLLA)2.875 E(TE)-.855 E F0 -(or)2.625 E F2(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375 -(ariables, if set.)-.25 F 1.976 -.8(To o)5.376 H .376(btain the tra-).8 -F .068(ditional interpretation of range e)180 343.2 R .068 -(xpressions, where)-.15 F F1([a\255d])2.568 E F0 .067(is equi)2.567 F --.25(va)-.25 G .067(lent to).25 F F1([abcd])2.567 E F0 2.567(,s)C .067 -(et v)-2.567 F(alue)-.25 E .156(of the)180 355.2 R F1(LC_ALL)2.656 E F0 -.156(shell v)2.656 F .156(ariable to)-.25 F F1(C)2.657 E F0 2.657(,o)C -2.657(re)-2.657 G .157(nable the)-2.657 F F1(globasciiranges)2.657 E F0 -.157(shell option.)2.657 F(A)5.157 E F12.657 E F0(may)2.657 E .193(\ -be matched by including it as the \214rst or last character in the set.) -180 367.2 R(A)5.193 E F1(])2.693 E F0 .193(may be matched by)2.693 F -(including it as the \214rst character in the set.)180 379.2 Q -.4(Wi) -180 397.2 S(thin).4 E F1([)3.07 E F0(and)3.07 E F1(])3.07 E F0(,)A F4 --.15(ch)3.07 G(ar).15 E .571(acter classes)-.15 F F0 .571 -(can be speci\214ed using the syntax)3.071 F F1([:)3.071 E F4(class)A F1 -(:])A F0 3.071(,w)C(here)-3.071 E F4(class)3.071 E F0 -(is one of the follo)180 409.2 Q +1.124(haracter not enclosed is matched.)-3.624 F 1.045 +(The sorting order of characters in range e)180 367.2 R 1.044 +(xpressions, and the characters included in the)-.15 F 2.34 +(range, are determined by the current locale and the v)180 379.2 R 2.341 +(alues of the)-.25 F F2(LC_COLLA)4.841 E(TE)-.855 E F0(or)4.591 E F2 +(LC_ALL)180 391.2 Q F0 1.079(shell v)3.329 F 1.079(ariables, if set.) +-.25 F 2.679 -.8(To o)6.079 H 1.079 +(btain the traditional interpretation of range e).8 F(xpres-)-.15 E .392 +(sions, where)180 403.2 R F1([a\255d])2.892 E F0 .392(is equi)2.892 F +-.25(va)-.25 G .392(lent to).25 F F1([abcd])2.893 E F0 2.893(,s)C .393 +(et v)-2.893 F .393(alue of the)-.25 F F1(LC_ALL)2.893 E F0 .393 +(shell v)2.893 F .393(ariable to)-.25 F F1(C)2.893 E F0(,)A .9 +(or enable the)180 415.2 R F1(globasciiranges)3.4 E F0 .9(shell option.) +3.4 F(A)5.899 E F13.399 E F0 .899 +(may be matched by including it as the)3.399 F .405 +(\214rst or last character in the set.)180 427.2 R(A)5.405 E F1(])2.905 +E F0 .405(may be matched by including it as the \214rst character)2.905 +F(in the set.)180 439.2 Q -.4(Wi)180 457.2 S(thin).4 E F1([)3.071 E F0 +(and)3.071 E F1(])3.071 E F0(,)A F4 -.15(ch)3.071 G(ar).15 E .571 +(acter classes)-.15 F F0 .571(can be speci\214ed using the syntax)3.071 +F F1([:)3.07 E F4(class)A F1(:])A F0 3.07(,w)C(here)-3.07 E F4(class) +3.07 E F0(is one of the follo)180 469.2 Q (wing classes de\214ned in the POSIX standard:)-.25 E F1 5.889 -(alnum alpha ascii blank cntrl digit graph lo)180 421.2 R 5.889 -(wer print punct space up-)-.1 F 5(per w)180 433.2 R 5(ord xdigit)-.1 F -F0 4.289(Ac)180 445.2 S 1.789(haracter class matches an)-4.289 F 4.289 -(yc)-.15 G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E -F1 -.1(wo)4.29 G(rd).1 E F0(character)4.29 E -(class matches letters, digits, and the character _.)180 457.2 Q -.4(Wi) -180 475.2 S(thin).4 E F1([)4.537 E F0(and)4.537 E F1(])4.537 E F0 4.537 -(,a)C(n)-4.537 E F4 2.037(equivalence class)4.537 F F0 2.036 -(can be speci\214ed using the syntax)4.536 F F1([=)4.536 E F4(c)A F1(=]) -A F0 4.536(,w)C(hich)-4.536 E .125(matches all characters with the same\ - collation weight \(as de\214ned by the current locale\) as)180 487.2 R -(the character)180 499.2 Q F4(c)2.5 E F0(.)A -.4(Wi)180 517.2 S(thin).4 +(alnum alpha ascii blank cntrl digit graph lo)180 481.2 R 5.889 +(wer print punct space up-)-.1 F 5(per w)180 493.2 R 5(ord xdigit)-.1 F +F0 4.29(Ac)180 505.2 S 1.789(haracter class matches an)-4.29 F 4.289(yc) +-.15 G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E F1 +-.1(wo)4.289 G(rd).1 E F0(character)4.289 E +(class matches letters, digits, and the character _.)180 517.2 Q -.4(Wi) +180 535.2 S(thin).4 E F1([)4.536 E F0(and)4.536 E F1(])4.536 E F0 4.536 +(,a)C(n)-4.536 E F4 2.036(equivalence class)4.536 F F0 2.037 +(can be speci\214ed using the syntax)4.536 F F1([=)4.537 E F4(c)A F1(=]) +A F0 4.537(,w)C(hich)-4.537 E .125(matches all characters with the same\ + collation weight \(as de\214ned by the current locale\) as)180 547.2 R +(the character)180 559.2 Q F4(c)2.5 E F0(.)A -.4(Wi)180 577.2 S(thin).4 E F1([)2.5 E F0(and)2.5 E F1(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F1([.) 2.5 E F4(symbol)A F1(.])A F0(matches the collating symbol)2.5 E F4 -(symbol)2.5 E F0(.)A .705(If the)108 534 R F1(extglob)3.205 E F0 .705 -(shell option is enabled using the)3.205 F F1(shopt)3.205 E F0 -.2(bu) -3.205 G .704(iltin, se).2 F -.15(ve)-.25 G .704(ral e).15 F .704 -(xtended pattern matching operators)-.15 F .255(are recognized.)108 546 -R .255(In the follo)5.255 F .255(wing description, a)-.25 F F4 -(pattern-list)2.755 E F0 .255 -(is a list of one or more patterns separated by a)2.755 F F1(|)2.756 E -F0(.)A(Composite patterns may be formed using one or more of the follo) -108 558 Q(wing sub-patterns:)-.25 E F1(?\()144 582 Q F4(pattern-list) -.833 E F1(\)).833 E F0(Matches zero or one occurrence of the gi)180 594 -Q -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(*\()144 606 Q F4 +(symbol)2.5 E F0(.)A .539(If the)108 594 R F1(extglob)3.039 E F0 .539 +(shell option is enabled using the)3.039 F F1(shopt)3.039 E F0 -.2(bu) +3.039 G .54(iltin, the shell recognizes se).2 F -.15(ve)-.25 G .54 +(ral e).15 F .54(xtended pattern)-.15 F .038(matching operators.)108 606 +R .038(In the follo)5.038 F .038(wing description, a)-.25 F F4 +(pattern-list)2.538 E F0 .037 +(is a list of one or more patterns separated by)2.538 F(a)108 618 Q F1 +(|)2.5 E F0 5(.C)C +(omposite patterns may be formed using one or more of the follo)-5 E +(wing sub-patterns:)-.25 E F1(?\()144 642 Q F4(pattern-list).833 E F1 +(\)).833 E F0(Matches zero or one occurrence of the gi)180 654 Q -.15 +(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(*\()144 666 Q F4(pattern-list) +.833 E F1(\)).833 E F0(Matches zero or more occurrences of the gi)180 +678 Q -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(+\()144 690 Q F4 (pattern-list).833 E F1(\)).833 E F0 -(Matches zero or more occurrences of the gi)180 618 Q -.15(ve)-.25 G 2.5 -(np).15 G(atterns)-2.5 E F1(+\()144 630 Q F4(pattern-list).833 E F1(\)) -.833 E F0(Matches one or more occurrences of the gi)180 642 Q -.15(ve) --.25 G 2.5(np).15 G(atterns)-2.5 E F1(@\()144 654 Q F4(pattern-list).833 -E F1(\)).833 E F0(Matches one of the gi)180 666 Q -.15(ve)-.25 G 2.5(np) -.15 G(atterns)-2.5 E F1(!\()144 678 Q F4(pattern-list).833 E F1(\)).833 -E F0(Matches an)180 690 Q(ything e)-.15 E(xcept one of the gi)-.15 E --.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E .969(Complicated e)108 706.8 -R .969(xtended pattern matching ag)-.15 F .969 -(ainst long strings is slo)-.05 F 2.268 -.65(w, e)-.25 H .968 -(specially when the patterns contain).65 F .09 -(alternations and the strings contain multiple matches.)108 718.8 R .091 -(Using separate matches ag)5.091 F .091(ainst shorter strings, or us-) --.05 F(ing arrays of strings instead of a single long string, may be f) -108 730.8 Q(aster)-.1 E(.)-.55 E(GNU Bash 5.1)72 768 Q(2020 October 29) -141.235 E(27)190.395 E 0 Cg EP -%%Page: 28 28 +(Matches one or more occurrences of the gi)180 702 Q -.15(ve)-.25 G 2.5 +(np).15 G(atterns)-2.5 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 +E(28)185.115 E 0 Cg EP +%%Page: 29 29 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(Quote Remo)87 84 Q -.1(va)-.1 G(l).1 E F0 1.113 -(After the preceding e)108 96 R 1.113 +SF(@\()144 84 Q/F2 10/Times-Italic@0 SF(pattern-list).833 E F1(\)).833 E +F0(Matches one of the gi)180 96 Q -.15(ve)-.25 G 2.5(np).15 G(atterns) +-2.5 E F1(!\()144 108 Q F2(pattern-list).833 E F1(\)).833 E F0 +(Matches an)180 120 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(The)108 136.8 Q F1(extglob)A F0 +.477(option changes the beha)2.977 F .477(vior of the parser)-.2 F 2.977 +(,s)-.4 G .478(ince the parentheses are normally treated as opera-) +-2.977 F .105(tors with syntactic meaning.)108 148.8 R 1.705 -.8(To e) +5.105 H .105(nsure that e).8 F .105 +(xtended matching patterns are parsed correctly)-.15 F 2.604(,m)-.65 G +(ak)-2.604 E 2.604(es)-.1 G .104(ure that)-2.604 F F1(extglob)108 160.8 +Q F0 1.355(is enabled before parsing constructs containing the patterns\ +, including shell functions and com-)3.854 F(mand substitutions.)108 +172.8 Q .988(When matching \214lenames, the)108 189.6 R F1(dotglob)3.488 +E F0 .988 +(shell option determines the set of \214lenames that are tested: when) +3.488 F F1(dotglob)108 201.6 Q F0 1.391 +(is enabled, the set of \214lenames includes all \214les be)3.891 F +1.392(ginning with `)-.15 F(`.)-.74 E -.74('')-.7 G 3.892(,b).74 G 1.392 +(ut `)-4.092 F(`.)-.74 E 2.872 -.74('' a)-.7 H 1.392(nd `).74 F(`..)-.74 +E 2.872 -.74('' m)-.7 H 1.392(ust be).74 F .298 +(matched by a pattern or sub-pattern that be)108 213.6 R .298 +(gins with a dot; when it is disabled, the set does not include an)-.15 +F(y)-.15 E .327(\214lenames be)108 225.6 R .327(ginning with `)-.15 F +(`.)-.74 E 1.807 -.74('' u)-.7 H .327 +(nless the pattern or sub-pattern be).74 F .327(gins with a `)-.15 F(`.) +-.74 E -.74('')-.7 G 5.327(.A).74 G 2.827(sa)-5.327 G(bo)-2.827 E -.15 +(ve)-.15 G 2.828(,`).15 G(`.)-3.568 E 1.808 -.74('' o)-.7 H .328 +(nly has a).74 F(special meaning when matching \214lenames.)108 237.6 Q +.969(Complicated e)108 254.4 R .969(xtended pattern matching ag)-.15 F +.969(ainst long strings is slo)-.05 F 2.268 -.65(w, e)-.25 H .968 +(specially when the patterns contain).65 F .09 +(alternations and the strings contain multiple matches.)108 266.4 R .091 +(Using separate matches ag)5.091 F .091(ainst shorter strings, or us-) +-.05 F(ing arrays of strings instead of a single long string, may be f) +108 278.4 Q(aster)-.1 E(.)-.55 E F1(Quote Remo)87 295.2 Q -.1(va)-.1 G +(l).1 E F0 1.113(After the preceding e)108 307.2 R 1.113 (xpansions, all unquoted occurrences of the characters)-.15 F F1(\\) 3.613 E F0(,)A F1<08>3.612 E F0 3.612(,a)C(nd)-3.612 E F1(")4.445 E F0 -1.112(that did not result)4.445 F(from one of the abo)108 108 Q .3 -.15 -(ve ex)-.15 H(pansions are remo).15 E -.15(ve)-.15 G(d.).15 E/F2 10.95 -/Times-Bold@0 SF(REDIRECTION)72 124.8 Q F0 .545(Before a command is e) -108 136.8 R -.15(xe)-.15 G .545(cuted, its input and output may be).15 F -/F3 10/Times-Italic@0 SF -.37(re)3.045 G(dir).37 E(ected)-.37 E F0 .545 -(using a special notation interpreted)3.815 F .405(by the shell.)108 -148.8 R .405(Redirection allo)5.405 F .405(ws commands' \214le handles \ -to be duplicated, opened, closed, made to refer to)-.25 F(dif)108 160.8 -Q 1.019(ferent \214les, and can change the \214les the command reads fr\ -om and writes to.)-.25 F 1.02(Redirection may also be)6.02 F .215 -(used to modify \214le handles in the current shell e)108 172.8 R -.15 -(xe)-.15 G .215(cution en).15 F 2.715(vironment. The)-.4 F(follo)2.715 E +1.112(that did not result)4.445 F(from one of the abo)108 319.2 Q .3 +-.15(ve ex)-.15 H(pansions are remo).15 E -.15(ve)-.15 G(d.).15 E/F3 +10.95/Times-Bold@0 SF(REDIRECTION)72 336 Q F0 .545 +(Before a command is e)108 348 R -.15(xe)-.15 G .545 +(cuted, its input and output may be).15 F F2 -.37(re)3.045 G(dir).37 E +(ected)-.37 E F0 .545(using a special notation interpreted)3.815 F .429 +(by the shell.)108 360 R F2(Redir)5.428 E(ection)-.37 E F0(allo)2.928 E +.428(ws commands' \214le handles to be duplicated, opened, closed, made\ + to refer to)-.25 F(dif)108 372 Q 1.019(ferent \214les, and can change \ +the \214les the command reads from and writes to.)-.25 F 1.02 +(Redirection may also be)6.02 F .215 +(used to modify \214le handles in the current shell e)108 384 R -.15(xe) +-.15 G .215(cution en).15 F 2.715(vironment. The)-.4 F(follo)2.715 E .215(wing redirection operators)-.25 F .862(may precede or appear an)108 -184.8 R .862(ywhere within a)-.15 F F3 .862(simple command)3.702 F F0 -.862(or may follo)4.132 F 3.362(wa)-.25 G F3(command).2 E F0 5.862(.R) -.77 G .862(edirections are)-5.862 F(processed in the order the)108 196.8 -Q 2.5(ya)-.15 G(ppear)-2.5 E 2.5(,f)-.4 G(rom left to right.)-2.5 E .771 -(Each redirection that may be preceded by a \214le descriptor number ma\ -y instead be preceded by a w)108 213.6 R .771(ord of)-.1 F .292 -(the form {)108 225.6 R F3(varname)A F0 2.793(}. In)B .293 +396 R .862(ywhere within a)-.15 F F2 .862(simple command)3.702 F F0 .862 +(or may follo)4.132 F 3.362(wa)-.25 G F2(command).2 E F0 5.862(.R).77 G +.862(edirections are)-5.862 F(processed in the order the)108 408 Q 2.5 +(ya)-.15 G(ppear)-2.5 E 2.5(,f)-.4 G(rom left to right.)-2.5 E .771(Eac\ +h redirection that may be preceded by a \214le descriptor number may in\ +stead be preceded by a w)108 424.8 R .771(ord of)-.1 F .292(the form {) +108 436.8 R F2(varname)A F0 2.793(}. In)B .293 (this case, for each redirection operator e)2.793 F .293 -(xcept >&- and <&-, the shell will allocate)-.15 F 3.18<618c>108 237.6 S +(xcept >&- and <&-, the shell will allocate)-.15 F 3.18<618c>108 448.8 S .679(le descriptor greater than or equal to 10 and assign it to)-3.18 F -F3(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679 -(&- or <&- is preceded by {)-3.179 F F3(var)A(-)-.2 E(name)108 249.6 Q -F0 .599(}, the v)B .599(alue of)-.25 F F3(varname)3.099 E F0 .599 -(de\214nes the \214le descriptor to close.)3.099 F .6(If {)5.6 F F3 +F2(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679 +(&- or <&- is preceded by {)-3.179 F F2(var)A(-)-.2 E(name)108 460.8 Q +F0 .599(}, the v)B .599(alue of)-.25 F F2(varname)3.099 E F0 .599 +(de\214nes the \214le descriptor to close.)3.099 F .6(If {)5.6 F F2 (varname)A F0 3.1(}i)C 3.1(ss)-3.1 G .6(upplied, the redirection)-3.1 F -1.238(persists be)108 261.6 R 1.238(yond the scope of the command, allo) --.15 F 1.238(wing the shell programmer to manage the \214le descriptor) --.25 F(himself.)108 273.6 Q .283(In the follo)108 290.4 R .284(wing des\ -criptions, if the \214le descriptor number is omitted, and the \214rst \ -character of the redirect-)-.25 F .513(ion operator is)108 302.4 R F1(<) +.794(persists be)108 472.8 R .794(yond the scope of the command, allo) +-.15 F .793(wing the shell programmer to manage the \214le descriptor') +-.25 F(s)-.55 E(lifetime manually)108 484.8 Q 5(.T)-.65 G(he)-5 E F1 -.1 +(va)2.5 G(rr).1 E(edir_close)-.18 E F0(shell option manages this beha) +2.5 E(vior)-.2 E(.)-.55 E .283(In the follo)108 501.6 R .284(wing descr\ +iptions, if the \214le descriptor number is omitted, and the \214rst ch\ +aracter of the redirect-)-.25 F .513(ion operator is)108 513.6 R F1(<) 3.012 E F0 3.012(,t)C .512 (he redirection refers to the standard input \(\214le descriptor 0\).) -3.012 F .512(If the \214rst character of the)5.512 F -(redirection operator is)108 314.4 Q F1(>)2.5 E F0 2.5(,t)C +(redirection operator is)108 525.6 Q F1(>)2.5 E F0 2.5(,t)C (he redirection refers to the standard output \(\214le descriptor 1\).) --2.5 E .824(The w)108 331.2 R .824(ord follo)-.1 F .824 +-2.5 E .824(The w)108 542.4 R .824(ord follo)-.1 F .824 (wing the redirection operator in the follo)-.25 F .825 (wing descriptions, unless otherwise noted, is sub-)-.25 F .463 -(jected to brace e)108 343.2 R .463(xpansion, tilde e)-.15 F .462 +(jected to brace e)108 554.4 R .463(xpansion, tilde e)-.15 F .462 (xpansion, parameter and v)-.15 F .462(ariable e)-.25 F .462 -(xpansion, command substitution, arith-)-.15 F .866(metic e)108 355.2 R +(xpansion, command substitution, arith-)-.15 F .866(metic e)108 566.4 R .866(xpansion, quote remo)-.15 F -.25(va)-.15 G .866(l, pathname e).25 F .867(xpansion, and w)-.15 F .867(ord splitting.)-.1 F .867(If it e)5.867 -F .867(xpands to more than one)-.15 F -.1(wo)108 367.2 S(rd,).1 E F1 +F .867(xpands to more than one)-.15 F -.1(wo)108 578.4 S(rd,).1 E F1 (bash)2.5 E F0(reports an error)2.5 E(.)-.55 E -(Note that the order of redirections is signi\214cant.)108 384 Q -.15 -(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 400.8 Q F1(>)2.5 -E F0(dirlist 2)2.5 E F1(>&)A F0(1)A -(directs both standard output and standard error to the \214le)108 417.6 -Q F3(dirlist)2.85 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 -434.4 Q F1(>&)A F0(1)A F1(>)2.5 E F0(dirlist)2.5 E .505 -(directs only the standard output to \214le)108 451.2 R F3(dirlist)3.355 +(Note that the order of redirections is signi\214cant.)108 595.2 Q -.15 +(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 612 Q F1(>)2.5 E +F0(dirlist 2)2.5 E F1(>&)A F0(1)A +(directs both standard output and standard error to the \214le)108 628.8 +Q F2(dirlist)2.85 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 +645.6 Q F1(>&)A F0(1)A F1(>)2.5 E F0(dirlist)2.5 E .505 +(directs only the standard output to \214le)108 662.4 R F2(dirlist)3.355 E F0 3.005(,b).68 G .505(ecause the standard error w)-3.005 F .505 (as duplicated from the standard)-.1 F -(output before the standard output w)108 463.2 Q(as redirected to)-.1 E -F3(dirlist)2.85 E F0(.).68 E F1(Bash)108 480 Q F0 .598(handles se)3.098 -F -.15(ve)-.25 G .598(ral \214lenames specially when the).15 F 3.099(ya) --.15 G .599(re used in redirections, as described in the follo)-3.099 F -(wing)-.25 E 3.478(table. If)108 492 R .978 +(output before the standard output w)108 674.4 Q(as redirected to)-.1 E +F2(dirlist)2.85 E F0(.).68 E F1(Bash)108 691.2 Q F0 .598(handles se) +3.098 F -.15(ve)-.25 G .598(ral \214lenames specially when the).15 F +3.099(ya)-.15 G .599(re used in redirections, as described in the follo) +-3.099 F(wing)-.25 E 3.478(table. If)108 703.2 R .978 (the operating system on which)3.478 F F1(bash)3.478 E F0 .978 (is running pro)3.478 F .977 (vides these special \214les, bash will use them;)-.15 F -(otherwise it will emulate them internally with the beha)108 504 Q -(vior described belo)-.2 E -.65(w.)-.25 G F1(/de)144 520.8 Q(v/fd/)-.15 -E F3(fd)A F0(If)180 532.8 Q F3(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E -(ger)-.15 E 2.5<2c8c>-.4 G(le descriptor)-2.5 E F3(fd)2.5 E F0 -(is duplicated.)2.5 E F1(/de)144 544.8 Q(v/stdin)-.15 E F0 -(File descriptor 0 is duplicated.)180 556.8 Q F1(/de)144 568.8 Q -(v/stdout)-.15 E F0(File descriptor 1 is duplicated.)180 580.8 Q F1(/de) -144 592.8 Q(v/stderr)-.15 E F0(File descriptor 2 is duplicated.)180 -604.8 Q F1(/de)144 616.8 Q(v/tcp/)-.15 E F3(host)A F1(/)A F3(port)A F0 -(If)180 628.8 Q F3(host)2.996 E F0 .496(is a v)2.996 F .496 -(alid hostname or Internet address, and)-.25 F F3(port)2.997 E F0 .497 +(otherwise it will emulate them internally with the beha)108 715.2 Q +(vior described belo)-.2 E -.65(w.)-.25 G(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(29)185.115 E 0 Cg EP +%%Page: 30 30 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(/de)144 84 Q(v/fd/)-.15 E/F2 10/Times-Italic@0 SF(fd)A F0(If)180 96 Q +F2(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E(ger)-.15 E 2.5<2c8c>-.4 G +(le descriptor)-2.5 E F2(fd)2.5 E F0(is duplicated.)2.5 E F1(/de)144 108 +Q(v/stdin)-.15 E F0(File descriptor 0 is duplicated.)180 120 Q F1(/de) +144 132 Q(v/stdout)-.15 E F0(File descriptor 1 is duplicated.)180 144 Q +F1(/de)144 156 Q(v/stderr)-.15 E F0(File descriptor 2 is duplicated.)180 +168 Q F1(/de)144 180 Q(v/tcp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If) +180 192 Q F2(host)2.996 E F0 .496(is a v)2.996 F .496 +(alid hostname or Internet address, and)-.25 F F2(port)2.997 E F0 .497 (is an inte)2.997 F .497(ger port number or ser)-.15 F(-)-.2 E -(vice name,)180 640.8 Q F1(bash)2.5 E F0 +(vice name,)180 204 Q F1(bash)2.5 E F0 (attempts to open the corresponding TCP sock)2.5 E(et.)-.1 E F1(/de)144 -652.8 Q(v/udp/)-.15 E F3(host)A F1(/)A F3(port)A F0(If)180 664.8 Q F3 -(host)2.997 E F0 .497(is a v)2.997 F .497 -(alid hostname or Internet address, and)-.25 F F3(port)2.996 E F0 .496 +216 Q(v/udp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)180 228 Q F2(host) +2.997 E F0 .497(is a v)2.997 F .497 +(alid hostname or Internet address, and)-.25 F F2(port)2.996 E F0 .496 (is an inte)2.996 F .496(ger port number or ser)-.15 F(-)-.2 E -(vice name,)180 676.8 Q F1(bash)2.5 E F0 +(vice name,)180 240 Q F1(bash)2.5 E F0 (attempts to open the corresponding UDP sock)2.5 E(et.)-.1 E 2.5(Af)108 -693.6 S(ailure to open or create a \214le causes the redirection to f) +256.8 S(ailure to open or create a \214le causes the redirection to f) -2.6 E(ail.)-.1 E .045(Redirections using \214le descriptors greater th\ -an 9 should be used with care, as the)108 710.4 R 2.546(ym)-.15 G .046 +an 9 should be used with care, as the)108 273.6 R 2.546(ym)-.15 G .046 (ay con\215ict with \214le de-)-2.546 F -(scriptors the shell uses internally)108 722.4 Q(.)-.65 E(GNU Bash 5.1) -72 768 Q(2020 October 29)141.235 E(28)190.395 E 0 Cg EP -%%Page: 29 29 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(Redir)87 84 Q(ecting Input)-.18 E F0 .391 +(scriptors the shell uses internally)108 285.6 Q(.)-.65 E F1(Redir)87 +302.4 Q(ecting Input)-.18 E F0 .391 (Redirection of input causes the \214le whose name results from the e) -108 96 R .391(xpansion of)-.15 F/F2 10/Times-Italic@0 SF(wor)3.231 E(d) --.37 E F0 .391(to be opened for read-)3.661 F(ing on \214le descriptor) -108 108 Q F2(n)2.86 E F0 2.5(,o).24 G 2.5(rt)-2.5 G +108 314.4 R .391(xpansion of)-.15 F F2(wor)3.231 E(d)-.37 E F0 .391 +(to be opened for read-)3.661 F(ing on \214le descriptor)108 326.4 Q F2 +(n)2.86 E F0 2.5(,o).24 G 2.5(rt)-2.5 G (he standard input \(\214le descriptor 0\) if)-2.5 E F2(n)2.86 E F0 (is not speci\214ed.)2.74 E -(The general format for redirecting input is:)108 124.8 Q([)144 141.6 Q -F2(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 158.4 Q -(ecting Output)-.18 E F0 .174 +(The general format for redirecting input is:)108 343.2 Q([)144 360 Q F2 +(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 376.8 Q(ecting Output) +-.18 E F0 .174 (Redirection of output causes the \214le whose name results from the e) -108 170.4 R .175(xpansion of)-.15 F F2(wor)3.015 E(d)-.37 E F0 .175 -(to be opened for writ-)3.445 F .084(ing on \214le descriptor)108 182.4 +108 388.8 R .175(xpansion of)-.15 F F2(wor)3.015 E(d)-.37 E F0 .175 +(to be opened for writ-)3.445 F .084(ing on \214le descriptor)108 400.8 R F2(n)2.944 E F0 2.583(,o).24 G 2.583(rt)-2.583 G .083 (he standard output \(\214le descriptor 1\) if)-2.583 F F2(n)2.943 E F0 .083(is not speci\214ed.)2.823 F .083(If the \214le does not e)5.083 F -(x-)-.15 E(ist it is created; if it does e)108 194.4 Q +(x-)-.15 E(ist it is created; if it does e)108 412.8 Q (xist it is truncated to zero size.)-.15 E -(The general format for redirecting output is:)108 211.2 Q([)144 228 Q +(The general format for redirecting output is:)108 429.6 Q([)144 446.4 Q F2(n)A F0(])A F1(>)A F2(wor)A(d)-.37 E F0 .154 -(If the redirection operator is)108 244.8 R F1(>)2.654 E F0 2.654(,a)C +(If the redirection operator is)108 463.2 R F1(>)2.654 E F0 2.654(,a)C .154(nd the)-2.654 F F1(noclob)2.654 E(ber)-.1 E F0 .154(option to the) 2.654 F F1(set)2.655 E F0 -.2(bu)2.655 G .155 -(iltin has been enabled, the redirection).2 F .658(will f)108 256.8 R +(iltin has been enabled, the redirection).2 F .658(will f)108 475.2 R .658(ail if the \214le whose name results from the e)-.1 F .658 (xpansion of)-.15 F F2(wor)3.158 E(d)-.37 E F0 -.15(ex)3.158 G .657 (ists and is a re).15 F .657(gular \214le.)-.15 F .657(If the redi-) -5.657 F .408(rection operator is)108 268.8 R F1(>|)2.909 E F0 2.909(,o)C +5.657 F .408(rection operator is)108 487.2 R F1(>|)2.909 E F0 2.909(,o)C 2.909(rt)-2.909 G .409(he redirection operator is)-2.909 F F1(>)2.909 E F0 .409(and the)2.909 F F1(noclob)2.909 E(ber)-.1 E F0 .409 (option to the)2.909 F F1(set)2.909 E F0 -.2(bu)2.909 G .409 (iltin command).2 F(is not enabled, the redirection is attempted e)108 -280.8 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214le named by) +499.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214le named by) -2.5 E F2(wor)2.5 E(d)-.37 E F0 -.15(ex)2.5 G(ists.).15 E F1 -.25(Ap)87 -297.6 S(pending Redir).25 E(ected Output)-.18 E F0 .642 -(Redirection of output in this f)108 309.6 R .642 +516 S(pending Redir).25 E(ected Output)-.18 E F0 .642 +(Redirection of output in this f)108 528 R .642 (ashion causes the \214le whose name results from the e)-.1 F .641 (xpansion of)-.15 F F2(wor)3.481 E(d)-.37 E F0 .641(to be)3.911 F .454 -(opened for appending on \214le descriptor)108 321.6 R F2(n)3.315 E F0 +(opened for appending on \214le descriptor)108 540 R F2(n)3.315 E F0 2.955(,o).24 G 2.955(rt)-2.955 G .455 (he standard output \(\214le descriptor 1\) if)-2.955 F F2(n)3.315 E F0 .455(is not speci\214ed.)3.195 F(If)5.455 E(the \214le does not e)108 -333.6 Q(xist it is created.)-.15 E -(The general format for appending output is:)108 350.4 Q([)144 367.2 Q -F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 384 Q +552 Q(xist it is created.)-.15 E +(The general format for appending output is:)108 568.8 Q([)144 585.6 Q +F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 602.4 Q (ecting Standard Output and Standard Err)-.18 E(or)-.18 E F0 .249 -(This construct allo)108 396 R .249(ws both the standard output \(\214l\ -e descriptor 1\) and the standard error output \(\214le descrip-)-.25 F -(tor 2\) to be redirected to the \214le whose name is the e)108 408 Q -(xpansion of)-.15 E F2(wor)2.84 E(d)-.37 E F0(.).77 E(There are tw)108 -424.8 Q 2.5(of)-.1 G +(This construct allo)108 614.4 R .249(ws both the standard output \(\ +\214le descriptor 1\) and the standard error output \(\214le descrip-) +-.25 F(tor 2\) to be redirected to the \214le whose name is the e)108 +626.4 Q(xpansion of)-.15 E F2(wor)2.84 E(d)-.37 E F0(.).77 E +(There are tw)108 643.2 Q 2.5(of)-.1 G (ormats for redirecting standard output and standard error:)-2.5 E F1 -(&>)144 441.6 Q F2(wor)A(d)-.37 E F0(and)108 453.6 Q F1(>&)144 465.6 Q -F2(wor)A(d)-.37 E F0(Of the tw)108 482.4 Q 2.5(of)-.1 G +(&>)144 660 Q F2(wor)A(d)-.37 E F0(and)108 672 Q F1(>&)144 684 Q F2(wor) +A(d)-.37 E F0(Of the tw)108 700.8 Q 2.5(of)-.1 G (orms, the \214rst is preferred.)-2.5 E(This is semantically equi)5 E --.25(va)-.25 G(lent to).25 E F1(>)144 499.2 Q F2(wor)A(d)-.37 E F0(2)2.5 -E F1(>&)A F0(1)A .114(When using the second form,)108 516 R F2(wor)2.614 -E(d)-.37 E F0 .114(may not e)2.614 F .114(xpand to a number or)-.15 F F1 -2.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.615(td)-2.614 G .115 -(oes, other redirection operators)-2.615 F(apply \(see)108 528 Q F1 -(Duplicating File Descriptors)2.5 E F0(belo)2.5 E -(w\) for compatibility reasons.)-.25 E F1 -.25(Ap)87 544.8 S +-.25(va)-.25 G(lent to).25 E F1(>)144 717.6 Q F2(wor)A(d)-.37 E F0(2)2.5 +E F1(>&)A F0(1)A(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(30) +185.115 E 0 Cg EP +%%Page: 31 31 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .114 +(When using the second form,)108 84 R/F1 10/Times-Italic@0 SF(wor)2.614 +E(d)-.37 E F0 .114(may not e)2.614 F .114(xpand to a number or)-.15 F/F2 +10/Times-Bold@0 SF2.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.615(td) +-2.614 G .115(oes, other redirection operators)-2.615 F(apply \(see)108 +96 Q F2(Duplicating File Descriptors)2.5 E F0(belo)2.5 E +(w\) for compatibility reasons.)-.25 E F2 -.25(Ap)87 112.8 S (pending Standard Output and Standard Err).25 E(or)-.18 E F0 .249 -(This construct allo)108 556.8 R .249(ws both the standard output \(\ +(This construct allo)108 124.8 R .249(ws both the standard output \(\ \214le descriptor 1\) and the standard error output \(\214le descrip-) -.25 F(tor 2\) to be appended to the \214le whose name is the e)108 -568.8 Q(xpansion of)-.15 E F2(wor)2.84 E(d)-.37 E F0(.).77 E +136.8 Q(xpansion of)-.15 E F1(wor)2.84 E(d)-.37 E F0(.).77 E (The format for appending standard output and standard error is:)108 -585.6 Q F1(&>>)144 602.4 Q F2(wor)A(d)-.37 E F0 -(This is semantically equi)108 619.2 Q -.25(va)-.25 G(lent to).25 E F1 -(>>)144 636 Q F2(wor)A(d)-.37 E F0(2)2.5 E F1(>&)A F0(1)A(\(see)108 -652.8 Q F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E(w\).)-.25 E -F1(Her)87 669.6 Q 2.5(eD)-.18 G(ocuments)-2.5 E F0 .33(This type of red\ +153.6 Q F2(&>>)144 170.4 Q F1(wor)A(d)-.37 E F0 +(This is semantically equi)108 187.2 Q -.25(va)-.25 G(lent to).25 E F2 +(>>)144 204 Q F1(wor)A(d)-.37 E F0(2)2.5 E F2(>&)A F0(1)A(\(see)108 +220.8 Q F2(Duplicating File Descriptors)2.5 E F0(belo)2.5 E(w\).)-.25 E +F2(Her)87 237.6 Q 2.5(eD)-.18 G(ocuments)-2.5 E F0 .33(This type of red\ irection instructs the shell to read input from the current source unti\ -l a line containing only)108 681.6 R F2(delimiter)108.35 693.6 Q F0 .615 +l a line containing only)108 249.6 R F1(delimiter)108.35 261.6 Q F0 .615 (\(with no trailing blanks\) is seen.)3.845 F .615 (All of the lines read up to that point are then used as the stan-)5.615 -F(dard input \(or \214le descriptor)108 705.6 Q F2(n)2.5 E F0(if)2.5 E -F2(n)2.5 E F0(is speci\214ed\) for a command.)2.5 E -(The format of here-documents is:)108 722.4 Q(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(29)190.395 E 0 Cg EP -%%Page: 30 30 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E([)144 84 Q/F1 10 -/Times-Italic@0 SF(n)A F0(])A/F2 10/Times-Bold@0 SF(<<)A F0([)A F2A -F0(])A F1(wor)A(d)-.37 E(her)164 96 Q(e-document)-.37 E(delimiter)144 -108 Q F0 .301(No parameter and v)108 124.8 R .302(ariable e)-.25 F .302 +F(dard input \(or \214le descriptor)108 273.6 Q F1(n)2.5 E F0(if)2.5 E +F1(n)2.5 E F0(is speci\214ed\) for a command.)2.5 E +(The format of here-documents is:)108 290.4 Q([)144 307.2 Q F1(n)A F0(]) +A F2(<<)A F0([)A F2A F0(])A F1(wor)A(d)-.37 E(her)164 319.2 Q +(e-document)-.37 E(delimiter)144 331.2 Q F0 .301(No parameter and v)108 +348 R .302(ariable e)-.25 F .302 (xpansion, command substitution, arithmetic e)-.15 F .302 (xpansion, or pathname e)-.15 F(xpansion)-.15 E .381(is performed on)108 -136.8 R F1(wor)3.221 E(d)-.37 E F0 5.381(.I).77 G 2.881(fa)-5.381 G .681 +360 R F1(wor)3.221 E(d)-.37 E F0 5.381(.I).77 G 2.881(fa)-5.381 G .681 -.15(ny p)-2.881 H .381(art of).15 F F1(wor)3.221 E(d)-.37 E F0 .381 (is quoted, the)3.651 F F1(delimiter)3.231 E F0 .381 (is the result of quote remo)3.611 F -.25(va)-.15 G 2.881(lo).25 G(n) -2.881 E F1(wor)3.221 E(d)-.37 E F0(,).77 E .773 -(and the lines in the here-document are not e)108 148.8 R 3.274 +(and the lines in the here-document are not e)108 372 R 3.274 (xpanded. If)-.15 F F1(wor)3.274 E(d)-.37 E F0 .774 (is unquoted, all lines of the here-document)3.274 F 1.195 -(are subjected to parameter e)108 160.8 R 1.194 +(are subjected to parameter e)108 384 R 1.194 (xpansion, command substitution, and arithmetic e)-.15 F 1.194 -(xpansion, the character se-)-.15 F(quence)108 172.8 Q F2(\\) -2.5 E F0(is ignored, and)2.5 E F2(\\)2.5 E F0 +(xpansion, the character se-)-.15 F(quence)108 396 Q F2(\\)2.5 +E F0(is ignored, and)2.5 E F2(\\)2.5 E F0 (must be used to quote the characters)2.5 E F2(\\)2.5 E F0(,)A F2($)2.5 E F0 2.5(,a)C(nd)-2.5 E F2<92>2.5 E F0(.)A .601 -(If the redirection operator is)108 189.6 R F2(<<\255)3.101 E F0 3.101 +(If the redirection operator is)108 412.8 R F2(<<\255)3.101 E F0 3.101 (,t)C .601(hen all leading tab characters are stripped from input lines\ - and the line)-3.101 F(containing)108 201.6 Q F1(delimiter)2.85 E F0 5 + and the line)-3.101 F(containing)108 424.8 Q F1(delimiter)2.85 E F0 5 (.T).73 G(his allo)-5 E (ws here-documents within shell scripts to be indented in a natural f) --.25 E(ashion.)-.1 E F2(Her)87 218.4 Q 2.5(eS)-.18 G(trings)-2.5 E F0 -2.5(Av)108 230.4 S(ariant of here documents, the format is:)-2.75 E([) -144 247.2 Q F1(n)A F0(])A F2(<<<)A F1(wor)A(d)-.37 E F0(The)108 264 Q F1 -(wor)3.292 E(d)-.37 E F0(under)3.292 E .792(goes tilde e)-.18 F .792 +-.25 E(ashion.)-.1 E F2(Her)87 441.6 Q 2.5(eS)-.18 G(trings)-2.5 E F0 +2.5(Av)108 453.6 S(ariant of here documents, the format is:)-2.75 E([) +144 470.4 Q F1(n)A F0(])A F2(<<<)A F1(wor)A(d)-.37 E F0(The)108 487.2 Q +F1(wor)3.292 E(d)-.37 E F0(under)3.292 E .792(goes tilde e)-.18 F .792 (xpansion, parameter and v)-.15 F .792(ariable e)-.25 F .791 -(xpansion, command substitution, arithmetic)-.15 F -.15(ex)108 276 S +(xpansion, command substitution, arithmetic)-.15 F -.15(ex)108 499.2 S 1.187(pansion, and quote remo).15 F -.25(va)-.15 G 3.687(l. P).25 F 1.187(athname e)-.15 F 1.187(xpansion and w)-.15 F 1.187 (ord splitting are not performed.)-.1 F 1.188(The result is)6.187 F .375 -(supplied as a single string, with a ne)108 288 R .374(wline appended, \ -to the command on its standard input \(or \214le descrip-)-.25 F(tor)108 -300 Q F1(n)2.5 E F0(if)2.5 E F1(n)2.5 E F0(is speci\214ed\).)2.5 E F2 -(Duplicating File Descriptors)87 316.8 Q F0(The redirection operator)108 -328.8 Q([)144 345.6 Q F1(n)A F0(])A F2(<&)A F1(wor)A(d)-.37 E F0 .126 -(is used to duplicate input \214le descriptors.)108 362.4 R(If)5.127 E +(supplied as a single string, with a ne)108 511.2 R .374(wline appended\ +, to the command on its standard input \(or \214le descrip-)-.25 F(tor) +108 523.2 Q F1(n)2.5 E F0(if)2.5 E F1(n)2.5 E F0(is speci\214ed\).)2.5 E +F2(Duplicating File Descriptors)87 540 Q F0(The redirection operator)108 +552 Q([)144 568.8 Q F1(n)A F0(])A F2(<&)A F1(wor)A(d)-.37 E F0 .126 +(is used to duplicate input \214le descriptors.)108 585.6 R(If)5.127 E F1(wor)2.967 E(d)-.37 E F0 -.15(ex)3.397 G .127 (pands to one or more digits, the \214le descriptor denoted).15 F(by)108 -374.4 Q F1(n)3.318 E F0 .458(is made to be a cop)3.198 F 2.958(yo)-.1 G +597.6 Q F1(n)3.318 E F0 .458(is made to be a cop)3.198 F 2.958(yo)-.1 G 2.958(ft)-2.958 G .457(hat \214le descriptor)-2.958 F 5.457(.I)-.55 G 2.957(ft)-5.457 G .457(he digits in)-2.957 F F1(wor)3.297 E(d)-.37 E F0 .457(do not specify a \214le descriptor open)3.727 F .149 -(for input, a redirection error occurs.)108 386.4 R(If)5.149 E F1(wor) +(for input, a redirection error occurs.)108 609.6 R(If)5.149 E F1(wor) 2.989 E(d)-.37 E F0 -.25(eva)3.419 G .149(luates to).25 F F22.649 E F0 2.65<2c8c>C .15(le descriptor)-2.65 F F1(n)3.01 E F0 .15(is closed.) 2.89 F(If)5.15 E F1(n)3.01 E F0 .15(is not speci\214ed,)2.89 F -(the standard input \(\214le descriptor 0\) is used.)108 398.4 Q -(The operator)108 415.2 Q([)144 432 Q F1(n)A F0(])A F2(>&)A F1(wor)A(d) --.37 E F0 .444 -(is used similarly to duplicate output \214le descriptors.)108 448.8 R -(If)5.444 E F1(n)3.304 E F0 .443 +(the standard input \(\214le descriptor 0\) is used.)108 621.6 Q +(The operator)108 638.4 Q([)144 655.2 Q F1(n)A F0(])A F2(>&)A F1(wor)A +(d)-.37 E F0 .444 +(is used similarly to duplicate output \214le descriptors.)108 672 R(If) +5.444 E F1(n)3.304 E F0 .443 (is not speci\214ed, the standard output \(\214le descrip-)3.183 F .565 -(tor 1\) is used.)108 460.8 R .565(If the digits in)5.565 F F1(wor)3.406 -E(d)-.37 E F0 .566(do not specify a \214le descriptor open for output, \ -a redirection error oc-)3.836 F 3.204(curs. If)108 472.8 R F1(wor)3.544 -E(d)-.37 E F0 -.25(eva)3.974 G .704(luates to).25 F F23.204 E F0 +(tor 1\) is used.)108 684 R .565(If the digits in)5.565 F F1(wor)3.406 E +(d)-.37 E F0 .566(do not specify a \214le descriptor open for output, a\ + redirection error oc-)3.836 F 3.204(curs. If)108 696 R F1(wor)3.544 E +(d)-.37 E F0 -.25(eva)3.974 G .704(luates to).25 F F23.204 E F0 3.204<2c8c>C .704(le descriptor)-3.204 F F1(n)3.563 E F0 .703 (is closed.)3.443 F .703(As a special case, if)5.703 F F1(n)3.203 E F0 .703(is omitted, and)3.203 F F1(wor)3.203 E(d)-.37 E F0(does)3.203 E -.965(not e)108 484.8 R .965(xpand to one or more digits or)-.15 F F2 +.965(not e)108 708 R .965(xpand to one or more digits or)-.15 F F2 3.465 E F0 3.466(,t)C .966 (he standard output and standard error are redirected as described) --3.466 F(pre)108 496.8 Q(viously)-.25 E(.)-.65 E F2(Mo)87 513.6 Q -(ving File Descriptors)-.1 E F0(The redirection operator)108 525.6 Q([) -144 542.4 Q F1(n)A F0(])A F2(<&)A F1(digit)A F2A F0(mo)108 559.2 Q --.15(ve)-.15 G 3.018(st).15 G .518(he \214le descriptor)-3.018 F F1 -(digit)3.018 E F0 .518(to \214le descriptor)3.018 F F1(n)3.378 E F0 -3.018(,o).24 G 3.018(rt)-3.018 G .517 -(he standard input \(\214le descriptor 0\) if)-3.018 F F1(n)3.017 E F0 -.517(is not speci-)3.017 F(\214ed.)108 571.2 Q F1(digit)5 E F0 -(is closed after being duplicated to)2.5 E F1(n)2.5 E F0(.)A(Similarly) -108 588 Q 2.5(,t)-.65 G(he redirection operator)-2.5 E([)144 604.8 Q F1 -(n)A F0(])A F2(>&)A F1(digit)A F2A F0(mo)108 621.6 Q -.15(ve)-.15 G -2.767(st).15 G .267(he \214le descriptor)-2.767 F F1(digit)2.767 E F0 -.267(to \214le descriptor)2.767 F F1(n)3.127 E F0 2.767(,o).24 G 2.767 -(rt)-2.767 G .268(he standard output \(\214le descriptor 1\) if)-2.767 F -F1(n)2.768 E F0 .268(is not speci-)2.768 F(\214ed.)108 633.6 Q F2 -(Opening File Descriptors f)87 650.4 Q(or Reading and Writing)-.25 E F0 -(The redirection operator)108 662.4 Q([)144 679.2 Q F1(n)A F0(])A F2(<>) -A F1(wor)A(d)-.37 E F0 .518(causes the \214le whose name is the e)108 -696 R .518(xpansion of)-.15 F F1(wor)3.358 E(d)-.37 E F0 .518 -(to be opened for both reading and writing on \214le de-)3.788 F -(scriptor)108 708 Q F1(n)2.86 E F0 2.5(,o).24 G 2.5(ro)-2.5 G 2.5<6e8c> --2.5 G(le descriptor 0 if)-2.5 E F1(n)2.86 E F0(is not speci\214ed.)2.74 -E(If the \214le does not e)5 E(xist, it is created.)-.15 E(GNU Bash 5.1) -72 768 Q(2020 October 29)141.235 E(30)190.395 E 0 Cg EP -%%Page: 31 31 +-3.466 F(pre)108 720 Q(viously)-.25 E(.)-.65 E(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(31)185.115 E 0 Cg EP +%%Page: 32 32 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95 -/Times-Bold@0 SF(ALIASES)72 84 Q/F2 10/Times-Italic@0 SF(Aliases)108 96 -Q F0(allo)3.173 E 3.173(was)-.25 G .674(tring to be substituted for a w) --3.173 F .674(ord when it is used as the \214rst w)-.1 F .674 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(Mo)87 84 Q(ving File Descriptors)-.1 E F0(The redirection operator) +108 96 Q([)144 112.8 Q/F2 10/Times-Italic@0 SF(n)A F0(])A F1(<&)A F2 +(digit)A F1A F0(mo)108 129.6 Q -.15(ve)-.15 G 3.018(st).15 G .518 +(he \214le descriptor)-3.018 F F2(digit)3.018 E F0 .518 +(to \214le descriptor)3.018 F F2(n)3.378 E F0 3.018(,o).24 G 3.018(rt) +-3.018 G .517(he standard input \(\214le descriptor 0\) if)-3.018 F F2 +(n)3.017 E F0 .517(is not speci-)3.017 F(\214ed.)108 141.6 Q F2(digit)5 +E F0(is closed after being duplicated to)2.5 E F2(n)2.5 E F0(.)A +(Similarly)108 158.4 Q 2.5(,t)-.65 G(he redirection operator)-2.5 E([) +144 175.2 Q F2(n)A F0(])A F1(>&)A F2(digit)A F1A F0(mo)108 192 Q +-.15(ve)-.15 G 2.767(st).15 G .267(he \214le descriptor)-2.767 F F2 +(digit)2.767 E F0 .267(to \214le descriptor)2.767 F F2(n)3.127 E F0 +2.767(,o).24 G 2.767(rt)-2.767 G .268 +(he standard output \(\214le descriptor 1\) if)-2.767 F F2(n)2.768 E F0 +.268(is not speci-)2.768 F(\214ed.)108 204 Q F1 +(Opening File Descriptors f)87 220.8 Q(or Reading and Writing)-.25 E F0 +(The redirection operator)108 232.8 Q([)144 249.6 Q F2(n)A F0(])A F1(<>) +A F2(wor)A(d)-.37 E F0 .518(causes the \214le whose name is the e)108 +266.4 R .518(xpansion of)-.15 F F2(wor)3.358 E(d)-.37 E F0 .518 +(to be opened for both reading and writing on \214le de-)3.788 F +(scriptor)108 278.4 Q F2(n)2.86 E F0 2.5(,o).24 G 2.5(ro)-2.5 G 2.5 +<6e8c>-2.5 G(le descriptor 0 if)-2.5 E F2(n)2.86 E F0 +(is not speci\214ed.)2.74 E(If the \214le does not e)5 E +(xist, it is created.)-.15 E/F3 10.95/Times-Bold@0 SF(ALIASES)72 295.2 Q +F2(Aliases)108 307.2 Q F0(allo)3.173 E 3.173(was)-.25 G .674 +(tring to be substituted for a w)-3.173 F .674 +(ord when it is used as the \214rst w)-.1 F .674 (ord of a simple command.)-.1 F .394(The shell maintains a list of alia\ -ses that may be set and unset with the)108 108 R/F3 10/Times-Bold@0 SF -(alias)2.893 E F0(and)2.893 E F3(unalias)2.893 E F0 -.2(bu)2.893 G .393 -(iltin commands).2 F(\(see)108 120 Q/F4 9/Times-Bold@0 SF 1.979(SHELL B) -4.479 F(UIL)-.09 E 1.979(TIN COMMANDS)-.828 F F0(belo)4.229 E 4.48 -(w\). The)-.25 F 1.98(\214rst w)4.48 F 1.98 -(ord of each simple command, if unquoted, is)-.1 F(check)108 132 Q .473 -(ed to see if it has an alias.)-.1 F .473(If so, that w)5.473 F .472 -(ord is replaced by the te)-.1 F .472(xt of the alias.)-.15 F .472 -(The characters)5.472 F F3(/)2.972 E F0(,)A F3($)2.972 E F0(,)A F3<92> -2.972 E F0(,)A(and)108 144 Q F3(=)3.611 E F0 1.111(and an)3.611 F 3.611 -(yo)-.15 G 3.611(ft)-3.611 G 1.111(he shell)-3.611 F F2(metac)3.612 E -(har)-.15 E(acter)-.15 E(s)-.1 E F0 1.112 +ses that may be set and unset with the)108 319.2 R F1(alias)2.893 E F0 +(and)2.893 E F1(unalias)2.893 E F0 -.2(bu)2.893 G .393(iltin commands).2 +F(\(see)108 331.2 Q/F4 9/Times-Bold@0 SF 1.979(SHELL B)4.479 F(UIL)-.09 +E 1.979(TIN COMMANDS)-.828 F F0(belo)4.229 E 4.48(w\). The)-.25 F 1.98 +(\214rst w)4.48 F 1.98(ord of each simple command, if unquoted, is)-.1 F +(check)108 343.2 Q .473(ed to see if it has an alias.)-.1 F .473 +(If so, that w)5.473 F .472(ord is replaced by the te)-.1 F .472 +(xt of the alias.)-.15 F .472(The characters)5.472 F F1(/)2.972 E F0(,)A +F1($)2.972 E F0(,)A F1<92>2.972 E F0(,)A(and)108 355.2 Q F1(=)3.611 E F0 +1.111(and an)3.611 F 3.611(yo)-.15 G 3.611(ft)-3.611 G 1.111(he shell) +-3.611 F F2(metac)3.612 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 1.112 (or quoting characters listed abo)3.612 F 1.412 -.15(ve m)-.15 H 1.112 -(ay not appear in an alias).15 F 3.62(name. The)108 156 R 1.12 +(ay not appear in an alias).15 F 3.62(name. The)108 367.2 R 1.12 (replacement te)3.62 F 1.119(xt may contain an)-.15 F 3.619(yv)-.15 G 1.119(alid shell input, including shell metacharacters.)-3.869 F 1.119 -(The \214rst)6.119 F -.1(wo)108 168 S .513(rd of the replacement te).1 F -.513(xt is tested for aliases, b)-.15 F .513(ut a w)-.2 F .514 +(The \214rst)6.119 F -.1(wo)108 379.2 S .513(rd of the replacement te).1 +F .513(xt is tested for aliases, b)-.15 F .513(ut a w)-.2 F .514 (ord that is identical to an alias being e)-.1 F .514(xpanded is)-.15 F -.296(not e)108 180 R .296(xpanded a second time.)-.15 F .296 -(This means that one may alias)5.296 F F3(ls)2.796 E F0(to)2.796 E F3 -.296(ls \255F)2.796 F F0 2.796(,f)C .295(or instance, and)-2.796 F F3 -(bash)2.795 E F0 .295(does not try)2.795 F .528(to recursi)108 192 R +.296(not e)108 391.2 R .296(xpanded a second time.)-.15 F .296 +(This means that one may alias)5.296 F F1(ls)2.796 E F0(to)2.796 E F1 +.296(ls \255F)2.796 F F0 2.796(,f)C .295(or instance, and)-2.796 F F1 +(bash)2.795 E F0 .295(does not try)2.795 F .528(to recursi)108 403.2 R -.15(ve)-.25 G .528(ly e).15 F .528(xpand the replacement te)-.15 F 3.028(xt. If)-.15 F .528(the last character of the alias v)3.028 F .529 (alue is a)-.25 F F2(blank)3.299 E F0 3.029(,t).67 G .529(hen the ne) --3.029 F(xt)-.15 E(command w)108 204 Q(ord follo)-.1 E +-3.029 F(xt)-.15 E(command w)108 415.2 Q(ord follo)-.1 E (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 220.8 Q F3(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 F3 -(unalias)2.5 E F0(command.)2.5 E .284 -(There is no mechanism for using ar)108 237.6 R .284 -(guments in the replacement te)-.18 F 2.784(xt. If)-.15 F(ar)2.784 E -.284(guments are needed, a shell func-)-.18 F(tion should be used \(see) -108 249.6 Q F4(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E .282 -(Aliases are not e)108 266.4 R .282 -(xpanded when the shell is not interacti)-.15 F -.15(ve)-.25 G 2.782(,u) -.15 G .282(nless the)-2.782 F F3(expand_aliases)2.783 E F0 .283 -(shell option is set us-)2.783 F(ing)108 278.4 Q F3(shopt)2.5 E F0 -(\(see the description of)2.5 E F3(shopt)2.5 E F0(under)2.5 E F4 +E(Aliases are created and listed with the)108 432 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 .742 +(There is no mechanism for using ar)108 448.8 R .741 +(guments in the replacement te)-.18 F 3.241(xt. If)-.15 F(ar)3.241 E +.741(guments are needed, use a shell)-.18 F(function \(see)108 460.8 Q +F4(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E .282(Aliases are not e)108 +477.6 R .282(xpanded when the shell is not interacti)-.15 F -.15(ve)-.25 +G 2.782(,u).15 G .282(nless the)-2.782 F F1(expand_aliases)2.783 E F0 +.283(shell option is set us-)2.783 F(ing)108 489.6 Q F1(shopt)2.5 E F0 +(\(see the description of)2.5 E F1(shopt)2.5 E F0(under)2.5 E F4 (SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E .436 (The rules concerning the de\214nition and use of aliases are some)108 -295.2 R .435(what confusing.)-.25 F F3(Bash)5.435 E F0(al)2.935 E -.1 +506.4 R .435(what confusing.)-.25 F F1(Bash)5.435 E F0(al)2.935 E -.1 (wa)-.1 G .435(ys reads at least).1 F .67 -(one complete line of input, and all lines that mak)108 307.2 R 3.17(eu) +(one complete line of input, and all lines that mak)108 518.4 R 3.17(eu) -.1 G 3.17(pac)-3.17 G .67(ompound command, before e)-3.17 F -.15(xe) -.15 G .67(cuting an).15 F 3.17(yo)-.15 G 3.17(ft)-3.17 G(he)-3.17 E -1.059(commands on that line or the compound command.)108 319.2 R 1.059 +1.059(commands on that line or the compound command.)108 530.4 R 1.059 (Aliases are e)6.059 F 1.058(xpanded when a command is read, not)-.15 F -.074(when it is e)108 331.2 R -.15(xe)-.15 G 2.574(cuted. Therefore,).15 +.074(when it is e)108 542.4 R -.15(xe)-.15 G 2.574(cuted. Therefore,).15 F .075(an alias de\214nition appearing on the same line as another comm\ -and does not)2.574 F(tak)108 343.2 Q 2.838(ee)-.1 G -.25(ff)-2.838 G +and does not)2.574 F(tak)108 554.4 Q 2.838(ee)-.1 G -.25(ff)-2.838 G .338(ect until the ne).25 F .338(xt line of input is read.)-.15 F .337 (The commands follo)5.337 F .337 (wing the alias de\214nition on that line are)-.25 F .551(not af)108 -355.2 R .551(fected by the ne)-.25 F 3.051(wa)-.25 G 3.051(lias. This) +566.4 R .551(fected by the ne)-.25 F 3.051(wa)-.25 G 3.051(lias. This) -3.051 F(beha)3.051 E .551(vior is also an issue when functions are e) -.2 F -.15(xe)-.15 G 3.051(cuted. Aliases).15 F .552(are e)3.052 F(x-) -.15 E .426(panded when a function de\214nition is read, not when the f\ -unction is e)108 367.2 R -.15(xe)-.15 G .425 +unction is e)108 578.4 R -.15(xe)-.15 G .425 (cuted, because a function de\214nition).15 F .403(is itself a command.) -108 379.2 R .403 +108 590.4 R .403 (As a consequence, aliases de\214ned in a function are not a)5.403 F -.25(va)-.2 G .404(ilable until after that func-).25 F .862(tion is e) -108 391.2 R -.15(xe)-.15 G 3.362(cuted. T).15 F 3.362(ob)-.8 G 3.362(es) +108 602.4 R -.15(xe)-.15 G 3.362(cuted. T).15 F 3.362(ob)-.8 G 3.362(es) -3.362 G .862(afe, al)-3.362 F -.1(wa)-.1 G .862 -(ys put alias de\214nitions on a separate line, and do not use).1 F F3 -(alias)3.362 E F0 .862(in com-)3.362 F(pound commands.)108 403.2 Q -.15 -(Fo)108 420 S 2.5(ra).15 G(lmost e)-2.5 E -.15(ve)-.25 G -(ry purpose, aliases are superseded by shell functions.).15 E F1 -(FUNCTIONS)72 436.8 Q F0 3.467(As)108 448.8 S .967 +(ys put alias de\214nitions on a separate line, and do not use).1 F F1 +(alias)3.362 E F0 .862(in com-)3.362 F(pound commands.)108 614.4 Q -.15 +(Fo)108 631.2 S 2.5(ra).15 G(lmost e)-2.5 E -.15(ve)-.25 G +(ry purpose, aliases are superseded by shell functions.).15 E F3 +(FUNCTIONS)72 648 Q F0 3.467(As)108 660 S .967 (hell function, de\214ned as described abo)-3.467 F 1.267 -.15(ve u)-.15 H(nder).15 E F4 .967(SHELL GRAMMAR)3.467 F/F5 9/Times-Roman@0 SF(,)A F0 -.968(stores a series of commands for)3.217 F 1.002(later e)108 460.8 R +.968(stores a series of commands for)3.217 F 1.002(later e)108 672 R -.15(xe)-.15 G 3.502(cution. When).15 F 1.002(the name of a shell funct\ ion is used as a simple command name, the list of com-)3.502 F .315 -(mands associated with that function name is e)108 472.8 R -.15(xe)-.15 -G 2.816(cuted. Functions).15 F .316(are e)2.816 F -.15(xe)-.15 G .316 +(mands associated with that function name is e)108 684 R -.15(xe)-.15 G +2.816(cuted. Functions).15 F .316(are e)2.816 F -.15(xe)-.15 G .316 (cuted in the conte).15 F .316(xt of the current)-.15 F .036 -(shell; no ne)108 484.8 R 2.536(wp)-.25 G .036 +(shell; no ne)108 696 R 2.536(wp)-.25 G .036 (rocess is created to interpret them \(contrast this with the e)-2.536 F -.15(xe)-.15 G .036(cution of a shell script\).).15 F .035(When a)5.035 -F .639(function is e)108 496.8 R -.15(xe)-.15 G .639(cuted, the ar).15 F +F .639(function is e)108 708 R -.15(xe)-.15 G .639(cuted, the ar).15 F .639 (guments to the function become the positional parameters during its e) --.18 F -.15(xe)-.15 G(cution.).15 E .533(The special parameter)108 508.8 -R F3(#)3.033 E F0 .532(is updated to re\215ect the change.)3.033 F .532 -(Special parameter)5.532 F F3(0)3.032 E F0 .532(is unchanged.)3.032 F -.532(The \214rst ele-)5.532 F(ment of the)108 520.8 Q F4(FUNCN)2.5 E -(AME)-.18 E F0 -.25(va)2.25 G +-.18 F -.15(xe)-.15 G(cution.).15 E 1.659(The special parameter)108 720 +R F1(#)4.159 E F0 1.659(is updated to re\215ect the change.)4.159 F +1.659(Special parameter)6.659 F F1(0)4.159 E F0 1.658(is unchanged.) +4.158 F 1.658(The \214rst)6.658 F(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(32)185.115 E 0 Cg EP +%%Page: 33 33 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(element of the)108 +84 Q/F1 9/Times-Bold@0 SF(FUNCN)2.5 E(AME)-.18 E F0 -.25(va)2.25 G (riable is set to the name of the function while the function is e).25 E -.15(xe)-.15 G(cuting.).15 E 1.25(All other aspects of the shell e)108 -537.6 R -.15(xe)-.15 G 1.25(cution en).15 F 1.25 +100.8 R -.15(xe)-.15 G 1.25(cution en).15 F 1.25 (vironment are identical between a function and its caller with)-.4 F -1.215(these e)108 549.6 R 1.215(xceptions: the)-.15 F F4(DEB)3.715 E(UG) --.09 E F0(and)3.465 E F3(RETURN)3.715 E F0 1.215 -(traps \(see the description of the)3.715 F F3(trap)3.714 E F0 -.2(bu) -3.714 G 1.214(iltin under).2 F F4(SHELL)3.714 E -.09(BU)108 561.6 S(IL) +1.215(these e)108 112.8 R 1.215(xceptions: the)-.15 F F1(DEB)3.715 E(UG) +-.09 E F0(and)3.465 E/F2 10/Times-Bold@0 SF(RETURN)3.715 E F0 1.215 +(traps \(see the description of the)3.715 F F2(trap)3.714 E F0 -.2(bu) +3.714 G 1.214(iltin under).2 F F1(SHELL)3.714 E -.09(BU)108 124.8 S(IL) .09 E .478(TIN COMMANDS)-.828 F F0(belo)2.728 E .479 (w\) are not inherited unless the function has been gi)-.25 F -.15(ve) --.25 G 2.979(nt).15 G(he)-2.979 E F3(trace)2.979 E F0(attrib)2.979 E -.479(ute \(see)-.2 F .421(the description of the)108 573.6 R F4(declar) +-.25 G 2.979(nt).15 G(he)-2.979 E F2(trace)2.979 E F0(attrib)2.979 E +.479(ute \(see)-.2 F .421(the description of the)108 136.8 R F1(declar) 2.92 E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the) --.25 F F3 .42(\255o functrace)2.92 F F0 .42 -(shell option has been enabled with the)2.92 F F3(set)2.92 E F0 -.2(bu) -108 585.6 S .071(iltin \(in which case all functions inherit the).2 F F3 -(DEB)2.572 E(UG)-.1 E F0(and)2.572 E F3(RETURN)2.572 E F0 .072 -(traps\), and the)2.572 F F4(ERR)2.572 E F0 .072(trap is not inher)2.322 -F(-)-.2 E(ited unless the)108 597.6 Q F3(\255o errtrace)2.5 E F0 -(shell option has been enabled.)2.5 E -1.11(Va)108 614.4 S .656 -(riables local to the function may be declared with the)1.11 F F3(local) -3.155 E F0 -.2(bu)3.155 G .655(iltin command.).2 F(Ordinarily)5.655 E -3.155(,v)-.65 G .655(ariables and)-3.405 F .05(their v)108 626.4 R .05 -(alues are shared between the function and its caller)-.25 F 5.051(.I) --.55 G 2.551(fav)-5.051 G .051(ariable is declared)-2.801 F F3(local) -2.551 E F0 2.551(,t)C .051(he v)-2.551 F(ariable')-.25 E 2.551(sv)-.55 G -(isi-)-2.551 E 1.186(ble scope is restricted to that function and its c\ -hildren \(including the functions it calls\).)108 638.4 R 1.185(Local v) -6.185 F(ariables)-.25 E("shado)108 650.4 Q .154(w" v)-.25 F .154 -(ariables with the same name declared at pre)-.25 F .155(vious scopes.) --.25 F -.15(Fo)5.155 G 2.655(ri).15 G .155(nstance, a local v)-2.655 F -.155(ariable declared)-.25 F .67(in a function hides a global v)108 -662.4 R .669(ariable of the same name: references and assignments refer\ - to the local v)-.25 F(ari-)-.25 E .688(able, lea)108 674.4 R .688 -(ving the global v)-.2 F .688(ariable unmodi\214ed.)-.25 F .688 -(When the function returns, the global v)5.688 F .688 -(ariable is once ag)-.25 F(ain)-.05 E(visible.)108 686.4 Q .727 -(The shell uses)108 703.2 R F2 .727(dynamic scoping)3.227 F F0 .726 -(to control a v)3.227 F(ariable')-.25 E 3.226(sv)-.55 G .726 -(isibility within functions.)-3.226 F -.4(Wi)5.726 G .726 -(th dynamic scoping,).4 F .007(visible v)108 715.2 R .007 -(ariables and their v)-.25 F .007 +-.25 F F2 .42(\255o functrace)2.92 F F0 .42 +(shell option has been enabled with the)2.92 F F2(set)2.92 E F0 -.2(bu) +108 148.8 S .071(iltin \(in which case all functions inherit the).2 F F2 +(DEB)2.572 E(UG)-.1 E F0(and)2.572 E F2(RETURN)2.572 E F0 .072 +(traps\), and the)2.572 F F1(ERR)2.572 E F0 .072(trap is not inher)2.322 +F(-)-.2 E(ited unless the)108 160.8 Q F2(\255o errtrace)2.5 E F0 +(shell option has been enabled.)2.5 E -1.11(Va)108 177.6 S .368 +(riables local to the function may be declared with the)1.11 F F2(local) +2.868 E F0 -.2(bu)2.868 G .368(iltin command \().2 F/F3 10 +/Times-Italic@0 SF .368(local variables)B F0 2.868(\). Ordinar)B(-)-.2 E +(ily)108 189.6 Q 2.88(,v)-.65 G .38(ariables and their v)-3.13 F .38 +(alues are shared between the function and its caller)-.25 F 5.38(.I) +-.55 G 2.88(fav)-5.38 G .38(ariable is declared)-3.13 F F2(local)2.88 E +F0(,)A(the v)108 201.6 Q(ariable')-.25 E 2.5(sv)-.55 G(isible scope is \ +restricted to that function and its children \(including the functions \ +it calls\).)-2.5 E .727(In the follo)108 218.4 R .727 +(wing description, the)-.25 F F3(curr)3.227 E .727(ent scope)-.37 F F0 +.726(is a currently- e)3.226 F -.15(xe)-.15 G .726(cuting function.).15 +F(Pre)5.726 E .726(vious scopes consist)-.25 F 1.003(of that function') +108 230.4 R 3.503(sc)-.55 G 1.004 +(aller and so on, back to the "global" scope, where the shell is not e) +-3.503 F -.15(xe)-.15 G 1.004(cuting an).15 F 3.504(ys)-.15 G(hell) +-3.504 E 3.41(function. Consequently)108 242.4 R 3.41(,al)-.65 G .91 +(ocal v)-3.41 F .909(ariable at the current scope is a v)-.25 F .909 +(ariable declared using the)-.25 F F2(local)3.409 E F0(or)3.409 E F2 +(de-)3.409 E(clar)108 254.4 Q(e)-.18 E F0 -.2(bu)2.5 G +(iltins in the function that is currently e).2 E -.15(xe)-.15 G(cuting.) +.15 E .635(Local v)108 271.2 R .635(ariables "shado)-.25 F .635(w" v) +-.25 F .635(ariables with the same name declared at pre)-.25 F .636 +(vious scopes.)-.25 F -.15(Fo)5.636 G 3.136(ri).15 G .636 +(nstance, a local)-3.136 F -.25(va)108 283.2 S .581 +(riable declared in a function hides a global v).25 F .58 +(ariable of the same name: references and assignments refer)-.25 F .182 +(to the local v)108 295.2 R .182(ariable, lea)-.25 F .183 +(ving the global v)-.2 F .183(ariable unmodi\214ed.)-.25 F .183 +(When the function returns, the global v)5.183 F(ariable)-.25 E +(is once ag)108 307.2 Q(ain visible.)-.05 E .727(The shell uses)108 324 +R F3 .727(dynamic scoping)3.227 F F0 .726(to control a v)3.227 F +(ariable')-.25 E 3.226(sv)-.55 G .726(isibility within functions.)-3.226 +F -.4(Wi)5.726 G .726(th dynamic scoping,).4 F .007(visible v)108 336 R +.007(ariables and their v)-.25 F .007 (alues are a result of the sequence of function calls that caused e)-.25 F -.15(xe)-.15 G .008(cution to reach).15 F .814(the current function.) -108 727.2 R .813(The v)5.814 F .813(alue of a v)-.25 F .813 +108 348 R .813(The v)5.814 F .813(alue of a v)-.25 F .813 (ariable that a function sees depends on its v)-.25 F .813 -(alue within its caller)-.25 F 3.313(,i)-.4 G(f)-3.313 E(GNU Bash 5.1)72 -768 Q(2020 October 29)141.235 E(31)190.395 E 0 Cg EP -%%Page: 32 32 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(an)108 84 Q 2.116 --.65(y, w)-.15 H .816 +(alue within its caller)-.25 F 3.313(,i)-.4 G(f)-3.313 E(an)108 360 Q +2.116 -.65(y, w)-.15 H .816 (hether that caller is the "global" scope or another shell function.).65 F .817(This is also the v)5.816 F .817(alue that a local)-.25 F -.25(va) -108 96 S(riable declaration "shado).25 E(ws", and the v)-.25 E +108 372 S(riable declaration "shado).25 E(ws", and the v)-.25 E (alue that is restored when the function returns.)-.25 E -.15(Fo)108 -112.8 S 2.724(re).15 G .224(xample, if a v)-2.874 F(ariable)-.25 E/F1 10 -/Times-Italic@0 SF(var)2.724 E F0 .223(is declared as local in function) -2.724 F F1(func1)2.723 E F0 2.723(,a)C(nd)-2.723 E F1(func1)2.723 E F0 -.223(calls another function)2.723 F F1(func2)2.723 E F0(,)A .463 -(references to)108 124.8 R F1(var)2.963 E F0 .463(made from within)2.963 -F F1(func2)2.963 E F0 .463(will resolv)2.963 F 2.964(et)-.15 G 2.964(ot) --2.964 G .464(he local v)-2.964 F(ariable)-.25 E F1(var)2.964 E F0(from) -2.964 E F1(func1)2.964 E F0 2.964(,s)C(hado)-2.964 E .464(wing an)-.25 F -(y)-.15 E(global v)108 136.8 Q(ariable named)-.25 E F1(var)2.5 E F0(.)A -(The)108 153.6 Q/F2 10/Times-Bold@0 SF(unset)2.983 E F0 -.2(bu)2.983 G -.483(iltin also acts using the same dynamic scope: if a v).2 F .482 +388.8 S 2.724(re).15 G .224(xample, if a v)-2.874 F(ariable)-.25 E F3 +(var)2.724 E F0 .223(is declared as local in function)2.724 F F3(func1) +2.723 E F0 2.723(,a)C(nd)-2.723 E F3(func1)2.723 E F0 .223 +(calls another function)2.723 F F3(func2)2.723 E F0(,)A .463 +(references to)108 400.8 R F3(var)2.963 E F0 .463(made from within)2.963 +F F3(func2)2.963 E F0 .463(will resolv)2.963 F 2.964(et)-.15 G 2.964(ot) +-2.964 G .464(he local v)-2.964 F(ariable)-.25 E F3(var)2.964 E F0(from) +2.964 E F3(func1)2.964 E F0 2.964(,s)C(hado)-2.964 E .464(wing an)-.25 F +(y)-.15 E(global v)108 412.8 Q(ariable named)-.25 E F3(var)2.5 E F0(.)A +(The)108 429.6 Q F2(unset)2.983 E F0 -.2(bu)2.983 G .483 +(iltin also acts using the same dynamic scope: if a v).2 F .482 (ariable is local to the current scope,)-.25 F F2(unset)2.982 E F0 .19 -(will unset it; otherwise the unset will refer to the v)108 165.6 R .19 +(will unset it; otherwise the unset will refer to the v)108 441.6 R .19 (ariable found in an)-.25 F 2.69(yc)-.15 G .19 (alling scope as described abo)-2.69 F -.15(ve)-.15 G 5.19(.I).15 G(f) --5.19 E 2.721(av)108 177.6 S .221(ariable at the current local scope is\ - unset, it will remain so until it is reset in that scope or until the \ -func-)-2.971 F .013(tion returns.)108 189.6 R .013 -(Once the function returns, an)5.013 F 2.513(yi)-.15 G .014 -(nstance of the v)-2.513 F .014(ariable at a pre)-.25 F .014 -(vious scope will become visible.)-.25 F .567(If the unset acts on a v) -108 201.6 R .566(ariable at a pre)-.25 F .566(vious scope, an)-.25 F -3.066(yi)-.15 G .566(nstance of a v)-3.066 F .566 -(ariable with that name that had been)-.25 F(shado)108 213.6 Q -(wed will become visible.)-.25 E(The)108 230.4 Q F2(FUNCNEST)3.528 E F0 --.25(va)3.528 G 1.028(riable, if set to a numeric v).25 F 1.028 +-5.19 E 3.325(av)108 453.6 S .824(ariable at the current local scope is\ + unset, it will remain so \(appearing as unset\) until it is reset in t\ +hat)-3.575 F 1.141(scope or until the function returns.)108 465.6 R +1.141(Once the function returns, an)6.141 F 3.641(yi)-.15 G 1.141 +(nstance of the v)-3.641 F 1.142(ariable at a pre)-.25 F(vious)-.25 E +.977(scope will become visible.)108 477.6 R .976 +(If the unset acts on a v)5.977 F .976(ariable at a pre)-.25 F .976 +(vious scope, an)-.25 F 3.476(yi)-.15 G .976(nstance of a v)-3.476 F +(ariable)-.25 E .007(with that name that had been shado)108 489.6 R .008 +(wed will become visible \(see belo)-.25 F 2.508(wh)-.25 G .508 -.25 +(ow t)-2.508 H(he).25 E F2(localv)2.508 E(ar_unset)-.1 E F0 .008 +(shell option)2.508 F(changes this beha)108 501.6 Q(vior\).)-.2 E(The) +108 518.4 Q F2(FUNCNEST)3.529 E F0 -.25(va)3.529 G 1.028 +(riable, if set to a numeric v).25 F 1.028 (alue greater than 0, de\214nes a maximum function nesting)-.25 F(le)108 -242.4 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G +530.4 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G (cations that e).2 E(xceed the limit cause the entire command to abort.) --.15 E .044(If the b)108 259.2 R .043(uiltin command)-.2 F F2 -.18(re) +-.15 E .043(If the b)108 547.2 R .043(uiltin command)-.2 F F2 -.18(re) 2.543 G(tur).18 E(n)-.15 E F0 .043(is e)2.543 F -.15(xe)-.15 G .043 (cuted in a function, the function completes and e).15 F -.15(xe)-.15 G -.043(cution resumes with).15 F 1.011(the ne)108 271.2 R 1.011 +.044(cution resumes with).15 F 1.012(the ne)108 559.2 R 1.012 (xt command after the function call.)-.15 F(An)6.011 E 3.511(yc)-.15 G -1.011(ommand associated with the)-3.511 F F2(RETURN)3.512 E F0 1.012 -(trap is e)3.512 F -.15(xe)-.15 G(cuted).15 E .214(before e)108 283.2 R --.15(xe)-.15 G .214(cution resumes.).15 F .213 -(When a function completes, the v)5.214 F .213 +1.011(ommand associated with the)-3.511 F F2(RETURN)3.511 E F0 1.011 +(trap is e)3.511 F -.15(xe)-.15 G(cuted).15 E .213(before e)108 571.2 R +-.15(xe)-.15 G .213(cution resumes.).15 F .213 +(When a function completes, the v)5.213 F .214 (alues of the positional parameters and the spe-)-.25 F(cial parameter) -108 295.2 Q F2(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E +108 583.2 Q F2(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E 2.5(yh)-.15 G(ad prior to the function')-2.5 E 2.5(se)-.55 G -.15(xe) --2.65 G(cution.).15 E 1.358 -(Function names and de\214nitions may be listed with the)108 312 R F2 +-2.65 G(cution.).15 E 1.359 +(Function names and de\214nitions may be listed with the)108 600 R F2 3.858 E F0 1.358(option to the)3.858 F F2(declar)3.858 E(e)-.18 E -F0(or)3.859 E F2(typeset)3.859 E F0 -.2(bu)3.859 G 1.359(iltin com-).2 F -3.39(mands. The)108 324 R F23.39 E F0 .89(option to)3.39 F F2 +F0(or)3.858 E F2(typeset)3.858 E F0 -.2(bu)3.858 G 1.358(iltin com-).2 F +3.39(mands. The)108 612 R F23.39 E F0 .89(option to)3.39 F F2 (declar)3.39 E(e)-.18 E F0(or)3.39 E F2(typeset)3.39 E F0 .89 (will list the function names only \(and optionally the source)3.39 F -.326(\214le and line number)108 336 R 2.826(,i)-.4 G 2.826(ft)-2.826 G -(he)-2.826 E F2(extdeb)2.826 E(ug)-.2 E F0 .326 -(shell option is enabled\).)2.826 F .327(Functions may be e)5.327 F .327 -(xported so that subshells)-.15 F 1.298(automatically ha)108 348 R 1.598 --.15(ve t)-.2 H 1.298(hem de\214ned with the).15 F F23.798 E F0 -1.298(option to the)3.798 F F2(export)3.797 E F0 -.2(bu)3.797 G 3.797 -(iltin. A).2 F 1.297(function de\214nition may be)3.797 F -(deleted using the)108 360 Q F22.5 E F0(option to the)2.5 E F2 -(unset)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .371(Functions may be recursi) -108 376.8 R -.15(ve)-.25 G 5.371(.T).15 G(he)-5.371 E F2(FUNCNEST)2.871 -E F0 -.25(va)2.871 G .371 +.047(\214le and line number)108 624 R 2.546(,i)-.4 G 2.546(ft)-2.546 G +(he)-2.546 E F2(extdeb)2.546 E(ug)-.2 E F0 .046 +(shell option is enabled\).)2.546 F .046(Functions may be e)5.046 F .046 +(xported so that child shell)-.15 F .492 +(processes \(those created when e)108 636 R -.15(xe)-.15 G .492 +(cuting a separate shell in).15 F -.2(vo)-.4 G .492 +(cation\) automatically ha).2 F .793 -.15(ve t)-.2 H .493 +(hem de\214ned with).15 F(the)108 648 Q F23.201 E F0 .701 +(option to the)3.201 F F2(export)3.201 E F0 -.2(bu)3.201 G 3.201 +(iltin. A).2 F .7(function de\214nition may be deleted using the)3.201 F +F23.2 E F0 .7(option to the)3.2 F F2(unset)3.2 E F0 -.2(bu)108 660 +S(iltin.).2 E .371(Functions may be recursi)108 676.8 R -.15(ve)-.25 G +5.371(.T).15 G(he)-5.371 E F2(FUNCNEST)2.871 E F0 -.25(va)2.871 G .371 (riable may be used to limit the depth of the function call).25 F .323 -(stack and restrict the number of function in)108 388.8 R -.2(vo)-.4 G +(stack and restrict the number of function in)108 688.8 R -.2(vo)-.4 G 2.822(cations. By).2 F(def)2.822 E .322 -(ault, no limit is imposed on the number of re-)-.1 F(cursi)108 400.8 Q -.3 -.15(ve c)-.25 H(alls.).15 E/F3 10.95/Times-Bold@0 SF(ARITHMETIC EV) -72 417.6 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 1.088 -(The shell allo)108 429.6 R 1.088(ws arithmetic e)-.25 F 1.089 -(xpressions to be e)-.15 F -.25(va)-.25 G 1.089 -(luated, under certain circumstances \(see the).25 F F2(let)3.589 E F0 -(and)3.589 E F2(de-)3.589 E(clar)108 441.6 Q(e)-.18 E F0 -.2(bu)3.453 G -.953(iltin commands, the).2 F F2(\(\()3.453 E F0 .952 +(ault, no limit is imposed on the number of re-)-.1 F(cursi)108 700.8 Q +.3 -.15(ve c)-.25 H(alls.).15 E(GNU Bash 5.2)72 768 Q(2022 September 19) +135.955 E(33)185.115 E 0 Cg EP +%%Page: 34 34 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95 +/Times-Bold@0 SF(ARITHMETIC EV)72 84 Q(ALU)-1.478 E -1.04(AT)-.657 G +(ION)1.04 E F0 1.088(The shell allo)108 96 R 1.088(ws arithmetic e)-.25 +F 1.089(xpressions to be e)-.15 F -.25(va)-.25 G 1.089 +(luated, under certain circumstances \(see the).25 F/F2 10/Times-Bold@0 +SF(let)3.589 E F0(and)3.589 E F2(de-)3.589 E(clar)108 108 Q(e)-.18 E F0 +-.2(bu)3.453 G .953(iltin commands, the).2 F F2(\(\()3.453 E F0 .952 (compound command, and)3.452 F F2 .952(Arithmetic Expansion)3.452 F F0 -3.452(\). Ev)B .952(aluation is done in)-.25 F<8c78>108 453.6 Q 1.057 +3.452(\). Ev)B .952(aluation is done in)-.25 F<8c78>108 120 Q 1.057 (ed-width inte)-.15 F 1.057(gers with no check for o)-.15 F -.15(ve)-.15 G(r\215o).15 E 2.357 -.65(w, t)-.25 H 1.057(hough di).65 F 1.057 (vision by 0 is trapped and \215agged as an error)-.25 F(.)-.55 E .829 -(The operators and their precedence, associati)108 465.6 R(vity)-.25 E +(The operators and their precedence, associati)108 132 R(vity)-.25 E 3.329(,a)-.65 G .829(nd v)-3.329 F .829 (alues are the same as in the C language.)-.25 F .828(The fol-)5.828 F -(lo)108 477.6 Q .439(wing list of operators is grouped into le)-.25 F --.15(ve)-.25 G .439(ls of equal-precedence operators.).15 F .44(The le) -5.44 F -.15(ve)-.25 G .44(ls are listed in order).15 F -(of decreasing precedence.)108 489.6 Q F1(id)108 506.4 Q F2(++)A F1(id) -2.5 E F2A F0 -.25(va)144 518.4 S -(riable post-increment and post-decrement).25 E F2 2.5108 530.4 S -F0(unary minus and plus)144 530.4 Q F2(++)108 542.4 Q F1(id)A F2 -2.5 E F1(id)A F0 -.25(va)144 554.4 S -(riable pre-increment and pre-decrement).25 E F2 2.5(!~)108 566.4 S F0 -(logical and bitwise ne)144 566.4 Q -.05(ga)-.15 G(tion).05 E F2(**)108 -578.4 Q F0 -.15(ex)144 578.4 S(ponentiation).15 E F2 2.5(*/%)108 590.4 S -F0(multiplication, di)144 590.4 Q(vision, remainder)-.25 E F2 2.5<2bad> -108 602.4 S F0(addition, subtraction)144 602.4 Q F2(<< >>)108 614.4 Q F0 -(left and right bitwise shifts)144 614.4 Q F2(<= >= < >)108 626.4 Q F0 -(comparison)144 638.4 Q F2(== !=)108 650.4 Q F0(equality and inequality) -144 650.4 Q F2(&)108 662.4 Q F0(bitwise AND)144 662.4 Q F2(^)108 674.4 Q -F0(bitwise e)144 674.4 Q(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F2(|) -108 686.4 Q F0(bitwise OR)144 686.4 Q F2(&&)108 698.4 Q F0(logical AND) -144 698.4 Q F2(||)108 710.4 Q F0(logical OR)144 710.4 Q(GNU Bash 5.1)72 -768 Q(2020 October 29)141.235 E(32)190.395 E 0 Cg EP -%%Page: 33 33 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 -/Times-Italic@0 SF -.2(ex)108 84 S(pr).2 E/F2 10/Times-Bold@0 SF(?)A F1 --.2(ex)C(pr).2 E F2(:)A F1 -.2(ex)C(pr).2 E F0(conditional operator)144 -96 Q F2 2.5(=*)108 108 S 2.5(=/)-2.5 G 2.5(=%)-2.5 G 2.5(=+)-2.5 G 2.5 -<3dad>-2.5 G 2.5(=<)-2.5 G(<= >>= &= ^= |=)-2.5 E F0(assignment)144 120 -Q F1 -.2(ex)108 132 S(pr1).2 E F2(,)2.5 E F1 -.2(ex)2.5 G(pr2).2 E F0 -(comma)144 144 Q .68(Shell v)108 160.8 R .68(ariables are allo)-.25 F -.68(wed as operands; parameter e)-.25 F .68 +(lo)108 144 Q .439(wing list of operators is grouped into le)-.25 F -.15 +(ve)-.25 G .439(ls of equal-precedence operators.).15 F .44(The le)5.44 +F -.15(ve)-.25 G .44(ls are listed in order).15 F +(of decreasing precedence.)108 156 Q/F3 10/Times-Italic@0 SF(id)108 +172.8 Q F2(++)A F3(id)2.5 E F2A F0 -.25(va)144 184.8 S +(riable post-increment and post-decrement).25 E F2 2.5108 196.8 S +F0(unary minus and plus)144 196.8 Q F2(++)108 208.8 Q F3(id)A F2 +2.5 E F3(id)A F0 -.25(va)144 220.8 S +(riable pre-increment and pre-decrement).25 E F2 2.5(!~)108 232.8 S F0 +(logical and bitwise ne)144 232.8 Q -.05(ga)-.15 G(tion).05 E F2(**)108 +244.8 Q F0 -.15(ex)144 244.8 S(ponentiation).15 E F2 2.5(*/%)108 256.8 S +F0(multiplication, di)144 256.8 Q(vision, remainder)-.25 E F2 2.5<2bad> +108 268.8 S F0(addition, subtraction)144 268.8 Q F2(<< >>)108 280.8 Q F0 +(left and right bitwise shifts)144 280.8 Q F2(<= >= < >)108 292.8 Q F0 +(comparison)144 304.8 Q F2(== !=)108 316.8 Q F0(equality and inequality) +144 316.8 Q F2(&)108 328.8 Q F0(bitwise AND)144 328.8 Q F2(^)108 340.8 Q +F0(bitwise e)144 340.8 Q(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F2(|) +108 352.8 Q F0(bitwise OR)144 352.8 Q F2(&&)108 364.8 Q F0(logical AND) +144 364.8 Q F2(||)108 376.8 Q F0(logical OR)144 376.8 Q F3 -.2(ex)108 +388.8 S(pr).2 E F2(?)A F3 -.2(ex)C(pr).2 E F2(:)A F3 -.2(ex)C(pr).2 E F0 +(conditional operator)144 400.8 Q F2 2.5(=*)108 412.8 S 2.5(=/)-2.5 G +2.5(=%)-2.5 G 2.5(=+)-2.5 G 2.5<3dad>-2.5 G 2.5(=<)-2.5 G +(<= >>= &= ^= |=)-2.5 E F0(assignment)144 424.8 Q F3 -.2(ex)108 436.8 S +(pr1).2 E F2(,)2.5 E F3 -.2(ex)2.5 G(pr2).2 E F0(comma)144 448.8 Q .68 +(Shell v)108 465.6 R .68(ariables are allo)-.25 F .68 +(wed as operands; parameter e)-.25 F .68 (xpansion is performed before the e)-.15 F .68(xpression is e)-.15 F --.25(va)-.25 G(lu-).25 E 3.507(ated. W)108 172.8 R 1.007(ithin an e)-.4 +-.25(va)-.25 G(lu-).25 E 3.507(ated. W)108 477.6 R 1.007(ithin an e)-.4 F 1.007(xpression, shell v)-.15 F 1.007 (ariables may also be referenced by name without using the parameter) --.25 F -.15(ex)108 184.8 S .165(pansion syntax.).15 F 2.665(As)5.165 G +-.25 F -.15(ex)108 489.6 S .165(pansion syntax.).15 F 2.665(As)5.165 G .165(hell v)-2.665 F .165(ariable that is null or unset e)-.25 F -.25 (va)-.25 G .165(luates to 0 when referenced by name without us-).25 F -.42(ing the parameter e)108 196.8 R .42(xpansion syntax.)-.15 F .42 +.42(ing the parameter e)108 501.6 R .42(xpansion syntax.)-.15 F .42 (The v)5.42 F .421(alue of a v)-.25 F .421(ariable is e)-.25 F -.25(va) -.25 G .421(luated as an arithmetic e).25 F .421(xpression when)-.15 F -.154(it is referenced, or when a v)108 208.8 R .154 +.154(it is referenced, or when a v)108 513.6 R .154 (ariable which has been gi)-.25 F -.15(ve)-.25 G 2.654(nt).15 G(he) --2.654 E F1(inte)2.654 E -.1(ge)-.4 G(r).1 E F0(attrib)2.654 E .153 +-2.654 E F3(inte)2.654 E -.1(ge)-.4 G(r).1 E F0(attrib)2.654 E .153 (ute using)-.2 F F2(declar)2.653 E 2.653<65ad>-.18 G(i)-2.653 E F0 .153 -(is assigned a)2.653 F -.25(va)108 220.8 S 2.857(lue. A).25 F .357 +(is assigned a)2.653 F -.25(va)108 525.6 S 2.857(lue. A).25 F .357 (null v)2.857 F .357(alue e)-.25 F -.25(va)-.25 G .357(luates to 0.).25 F 2.857(As)5.357 G .357(hell v)-2.857 F .357(ariable need not ha)-.25 F -.657 -.15(ve i)-.2 H(ts).15 E F1(inte)2.857 E -.1(ge)-.4 G(r).1 E F0 -(attrib)2.857 E .357(ute turned on to be used)-.2 F(in an e)108 232.8 Q -(xpression.)-.15 E(Inte)108 249.6 Q .518(ger constants follo)-.15 F +.657 -.15(ve i)-.2 H(ts).15 E F3(inte)2.857 E -.1(ge)-.4 G(r).1 E F0 +(attrib)2.857 E .357(ute turned on to be used)-.2 F(in an e)108 537.6 Q +(xpression.)-.15 E(Inte)108 554.4 Q .518(ger constants follo)-.15 F 3.018(wt)-.25 G .518(he C language de\214nition, without suf)-3.018 F <8c78>-.25 E .517(es or character constants.)-.15 F .517(Constants with) -5.517 F 3.282(al)108 261.6 S .782 +5.517 F 3.282(al)108 566.4 S .782 (eading 0 are interpreted as octal numbers.)-3.282 F 3.283(Al)5.782 G .783(eading 0x or 0X denotes he)-3.283 F 3.283(xadecimal. Otherwise,) --.15 F(num-)3.283 E .816(bers tak)108 273.6 R 3.316(et)-.1 G .816 -(he form [)-3.316 F F1(base#)A F0 .815(]n, where the optional)B F1(base) +-.15 F(num-)3.283 E .816(bers tak)108 578.4 R 3.316(et)-.1 G .816 +(he form [)-3.316 F F3(base#)A F0 .815(]n, where the optional)B F3(base) 3.315 E F0 .815(is a decimal number between 2 and 64 representing)3.315 -F .349(the arithmetic base, and)108 285.6 R F1(n)2.849 E F0 .349 -(is a number in that base.)2.849 F(If)5.35 E F1(base#)2.85 E F0 .35 +F .349(the arithmetic base, and)108 590.4 R F3(n)2.849 E F0 .349 +(is a number in that base.)2.849 F(If)5.35 E F3(base#)2.85 E F0 .35 (is omitted, then base 10 is used.)2.85 F .35(When speci-)5.35 F(fying) -108 297.6 Q F1(n)2.975 E F0 2.975(,i)C 2.975(fan)-2.975 G .474(on-digit\ +108 602.4 Q F3(n)2.975 E F0 2.975(,i)C 2.975(fan)-2.975 G .474(on-digit\ is required, the digits greater than 9 are represented by the lo)-2.975 F .474(wercase letters, the up-)-.25 F .518 -(percase letters, @, and _, in that order)108 309.6 R 5.518(.I)-.55 G(f) --5.518 E F1(base)3.018 E F0 .518(is less than or equal to 36, lo)3.018 F +(percase letters, @, and _, in that order)108 614.4 R 5.518(.I)-.55 G(f) +-5.518 E F3(base)3.018 E F0 .518(is less than or equal to 36, lo)3.018 F .518(wercase and uppercase letters)-.25 F (may be used interchangeably to represent numbers between 10 and 35.)108 -321.6 Q .235(Operators are e)108 338.4 R -.25(va)-.25 G .235 +626.4 Q .235(Operators are e)108 643.2 R -.25(va)-.25 G .235 (luated in order of precedence.).25 F(Sub-e)5.234 E .234 (xpressions in parentheses are e)-.15 F -.25(va)-.25 G .234 -(luated \214rst and may).25 F -.15(ove)108 350.4 S -(rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E/F3 10.95 -/Times-Bold@0 SF(CONDITION)72 367.2 Q(AL EXPRESSIONS)-.219 E F0 .255 -(Conditional e)108 379.2 R .255(xpressions are used by the)-.15 F F2([[) -2.755 E F0 .255(compound command and the)2.755 F F2(test)2.755 E F0(and) -2.755 E F2([)2.756 E F0 -.2(bu)2.756 G .256(iltin commands to test).2 F -.134(\214le attrib)108 391.2 R .134 +(luated \214rst and may).25 F -.15(ove)108 655.2 S +(rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E F1 +(CONDITION)72 672 Q(AL EXPRESSIONS)-.219 E F0 .255(Conditional e)108 684 +R .255(xpressions are used by the)-.15 F F2([[)2.755 E F0 .255 +(compound command and the)2.755 F F2(test)2.755 E F0(and)2.755 E F2([) +2.756 E F0 -.2(bu)2.756 G .256(iltin commands to test).2 F .134 +(\214le attrib)108 696 R .134 (utes and perform string and arithmetic comparisons.)-.2 F(The)5.133 E F2(test)2.633 E F0(and)2.633 E F2([)2.633 E F0 .133 -(commands determine their be-)2.633 F(ha)108 403.2 Q .197 +(commands determine their be-)2.633 F(ha)108 708 Q .197 (vior based on the number of ar)-.2 F .198 (guments; see the descriptions of those commands for an)-.18 F 2.698(yo) --.15 G .198(ther command-)-2.698 F(speci\214c actions.)108 415.2 Q .235 -(Expressions are formed from the follo)108 432 R .234 -(wing unary or binary primaries.)-.25 F F2(Bash)5.234 E F0 .234 -(handles se)2.734 F -.15(ve)-.25 G .234(ral \214lenames spe-).15 F .424 -(cially when the)108 444 R 2.924(ya)-.15 G .424(re used in e)-2.924 F -2.925(xpressions. If)-.15 F .425(the operating system on which)2.925 F -F2(bash)2.925 E F0 .425(is running pro)2.925 F .425(vides these)-.15 F -.345(special \214les, bash will use them; otherwise it will emulate the\ -m internally with this beha)108 456 R .344(vior: If an)-.2 F(y)-.15 E F1 -(\214le)2.844 E F0(ar)2.844 E(-)-.2 E .805 -(gument to one of the primaries is of the form)108 468 R F1(/de)3.305 E -(v/fd/n)-.15 E F0 3.306(,t)C .806(hen \214le descriptor)-3.306 F F1(n) -3.306 E F0 .806(is check)3.306 F 3.306(ed. If)-.1 F(the)3.306 E F1 +-.15 G .198(ther command-)-2.698 F(speci\214c actions.)108 720 Q +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(34)185.115 E 0 Cg EP +%%Page: 35 35 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .235 +(Expressions are formed from the follo)108 84 R .234 +(wing unary or binary primaries.)-.25 F/F1 10/Times-Bold@0 SF(Bash)5.234 +E F0 .234(handles se)2.734 F -.15(ve)-.25 G .234(ral \214lenames spe-) +.15 F .424(cially when the)108 96 R 2.924(ya)-.15 G .424(re used in e) +-2.924 F 2.925(xpressions. If)-.15 F .425(the operating system on which) +2.925 F F1(bash)2.925 E F0 .425(is running pro)2.925 F .425(vides these) +-.15 F .345(special \214les, bash will use them; otherwise it will emul\ +ate them internally with this beha)108 108 R .344(vior: If an)-.2 F(y) +-.15 E/F2 10/Times-Italic@0 SF(\214le)2.844 E F0(ar)2.844 E(-)-.2 E .805 +(gument to one of the primaries is of the form)108 120 R F2(/de)3.305 E +(v/fd/n)-.15 E F0 3.306(,t)C .806(hen \214le descriptor)-3.306 F F2(n) +3.306 E F0 .806(is check)3.306 F 3.306(ed. If)-.1 F(the)3.306 E F2 (\214le)3.306 E F0(ar)3.306 E(gu-)-.18 E .03 -(ment to one of the primaries is one of)108 480 R F1(/de)2.53 E(v/stdin) --.15 E F0(,)A F1(/de)2.529 E(v/stdout)-.15 E F0 2.529(,o)C(r)-2.529 E F1 +(ment to one of the primaries is one of)108 132 R F2(/de)2.53 E(v/stdin) +-.15 E F0(,)A F2(/de)2.529 E(v/stdout)-.15 E F0 2.529(,o)C(r)-2.529 E F2 (/de)2.529 E(v/stderr)-.15 E F0 2.529<2c8c>C .029 -(le descriptor 0, 1, or 2, respec-)-2.529 F(ti)108 492 Q -.15(ve)-.25 G +(le descriptor 0, 1, or 2, respec-)-2.529 F(ti)108 144 Q -.15(ve)-.25 G (ly).15 E 2.5(,i)-.65 G 2.5(sc)-2.5 G(heck)-2.5 E(ed.)-.1 E .721 (Unless otherwise speci\214ed, primaries that operate on \214les follo) -108 508.8 R 3.221(ws)-.25 G .722(ymbolic links and operate on the tar) --3.221 F(get)-.18 E(of the link, rather than the link itself.)108 520.8 -Q 1.096(When used with)108 538.8 R F2([[)3.596 E F0 3.596(,t)C(he)-3.596 -E F2(<)3.596 E F0(and)3.595 E F2(>)3.595 E F0 1.095(operators sort le) +108 160.8 R 3.221(ws)-.25 G .722(ymbolic links and operate on the tar) +-3.221 F(get)-.18 E(of the link, rather than the link itself.)108 172.8 +Q 1.096(When used with)108 190.8 R F1([[)3.596 E F0 3.596(,t)C(he)-3.596 +E F1(<)3.596 E F0(and)3.595 E F1(>)3.595 E F0 1.095(operators sort le) 3.595 F 1.095(xicographically using the current locale.)-.15 F(The)6.095 -E F2(test)3.595 E F0(com-)3.595 E(mand sorts using ASCII ordering.)108 -550.8 Q F2108 574.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 574.8 S -(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F2108 -586.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 586.8 S(ue if).35 E F1(\214le)2.5 -E F0 -.15(ex)2.5 G(ists and is a block special \214le.).15 E F2108 -598.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 598.8 S(ue if).35 E F1(\214le)2.5 -E F0 -.15(ex)2.5 G(ists and is a character special \214le.).15 E F2 -108 610.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 610.8 S(ue if).35 E F1 -(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F2 -108 622.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 622.8 S(ue if).35 E F1 -(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F2108 634.8 Q F1 -(\214le)2.5 E F0 -.35(Tr)144 634.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists and is a re).15 E(gular \214le.)-.15 E F2108 646.8 -Q F1(\214le)2.5 E F0 -.35(Tr)144 646.8 S(ue if).35 E F1(\214le)2.5 E F0 --.15(ex)2.5 G(ists and is set-group-id.).15 E F2108 658.8 Q F1 -(\214le)2.5 E F0 -.35(Tr)144 658.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists and is a symbolic link.).15 E F2108 670.8 Q F1 -(\214le)2.5 E F0 -.35(Tr)144 670.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15 +E F1(test)3.595 E F0(com-)3.595 E(mand sorts using ASCII ordering.)108 +202.8 Q F1108 226.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 226.8 S +(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F1108 +238.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 238.8 S(ue if).35 E F2(\214le)2.5 +E F0 -.15(ex)2.5 G(ists and is a block special \214le.).15 E F1108 +250.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 250.8 S(ue if).35 E F2(\214le)2.5 +E F0 -.15(ex)2.5 G(ists and is a character special \214le.).15 E F1 +108 262.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 262.8 S(ue if).35 E F2 +(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F1 +108 274.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 274.8 S(ue if).35 E F2 +(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F1108 286.8 Q F2 +(\214le)2.5 E F0 -.35(Tr)144 286.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is a re).15 E(gular \214le.)-.15 E F1108 298.8 +Q F2(\214le)2.5 E F0 -.35(Tr)144 298.8 S(ue if).35 E F2(\214le)2.5 E F0 +-.15(ex)2.5 G(ists and is set-group-id.).15 E F1108 310.8 Q F2 +(\214le)2.5 E F0 -.35(Tr)144 310.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is a symbolic link.).15 E F1108 322.8 Q F2 +(\214le)2.5 E F0 -.35(Tr)144 322.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15 (ex)2.5 G(ists and its `).15 E(`stick)-.74 E(y')-.15 E 2.5('b)-.74 G -(it is set.)-2.5 E F2108 682.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 -682.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is a named pipe \(FIFO\).).15 E F2108 694.8 Q F1(\214le) -2.5 E F0 -.35(Tr)144 694.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 -G(ists and is readable.).15 E F2108 706.8 Q F1(\214le)2.5 E F0 --.35(Tr)144 706.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and has a size greater than zero.).15 E F2108 718.8 Q F1(fd) -2.5 E F0 -.35(Tr)144 718.8 S(ue if \214le descriptor).35 E F1(fd)4.47 E -F0(is open and refers to a terminal.)3.27 E(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(33)190.395 E 0 Cg EP -%%Page: 34 34 +(it is set.)-2.5 E F1108 334.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 +334.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and is a named pipe \(FIFO\).).15 E F1108 346.8 Q F2(\214le) +2.5 E F0 -.35(Tr)144 346.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 +G(ists and is readable.).15 E F1108 358.8 Q F2(\214le)2.5 E F0 +-.35(Tr)144 358.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and has a size greater than zero.).15 E F1108 370.8 Q F2(fd) +2.5 E F0 -.35(Tr)144 370.8 S(ue if \214le descriptor).35 E F2(fd)4.47 E +F0(is open and refers to a terminal.)3.27 E F1108 382.8 Q F2 +(\214le)2.5 E F0 -.35(Tr)144 382.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and its set-user).15 E(-id bit is set.)-.2 E F1108 +394.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 394.8 S(ue if).35 E F2(\214le)2.5 +E F0 -.15(ex)2.5 G(ists and is writable.).15 E F1108 406.8 Q F2 +(\214le)2.5 E F0 -.35(Tr)144 406.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is e).15 E -.15(xe)-.15 G(cutable.).15 E F1108 +418.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 418.8 S(ue if).35 E F2(\214le)2.5 +E F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E(fecti)-.25 +E .3 -.15(ve g)-.25 H(roup id.).15 E F1108 430.8 Q F2(\214le)2.5 E +F0 -.35(Tr)144 430.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and is a symbolic link.).15 E F1108 442.8 Q F2(\214le)2.5 E +F0 -.35(Tr)144 442.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and has been modi\214ed since it w).15 E(as last read.)-.1 E F1 +108 454.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 454.8 S(ue if).35 E F2 +(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E +(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id.).15 E F1108 466.8 Q F2 +(\214le)2.5 E F0 -.35(Tr)144 466.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is a sock).15 E(et.)-.1 E F2(\214le1)108 478.8 Q F1 +(\255ef)2.5 E F2(\214le2)2.5 E F0 -.35(Tr)144 490.8 S(ue if).35 E F2 +(\214le1)2.5 E F0(and)2.5 E F2(\214le2)2.5 E F0(refer to the same de)2.5 +E(vice and inode numbers.)-.25 E F2(\214le1)108 502.8 Q F02.5 E F1 +(nt)A F2(\214le2)2.5 E F0 -.35(Tr)144 514.8 S(ue if).35 E F2(\214le1)2.5 +E F0(is ne)2.5 E(wer \(according to modi\214cation date\) than)-.25 E F2 +(\214le2)2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le1)2.5 E F0 +-.15(ex)2.5 G(ists and).15 E F2(\214le2)2.5 E F0(does not.)2.5 E F2 +(\214le1)108 526.8 Q F02.5 E F1(ot)A F2(\214le2)2.5 E F0 -.35(Tr)144 +538.8 S(ue if).35 E F2(\214le1)2.5 E F0(is older than)2.5 E F2(\214le2) +2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le2)2.5 E F0 -.15(ex)2.5 +G(ists and).15 E F2(\214le1)2.5 E F0(does not.)2.5 E F1108 550.8 Q +F2(optname)2.5 E F0 -.35(Tr)144 562.8 S .262(ue if the shell option).35 +F F2(optname)2.992 E F0 .262(is enabled.)2.942 F .262 +(See the list of options under the description of the)5.262 F F1 +2.763 E F0(option to the)144 574.8 Q F1(set)2.5 E F0 -.2(bu)2.5 G +(iltin belo).2 E -.65(w.)-.25 G F1108 586.8 Q F2(varname)2.5 E F0 +-.35(Tr)144 598.8 S(ue if the shell v).35 E(ariable)-.25 E F2(varname) +2.79 E F0(is set \(has been assigned a v)2.68 E(alue\).)-.25 E F1 +108 610.8 Q F2(varname)2.5 E F0 -.35(Tr)144 622.8 S(ue if the shell v) +.35 E(ariable)-.25 E F2(varname)2.79 E F0 +(is set and is a name reference.)2.68 E F1108 634.8 Q F2(string) +2.5 E F0 -.35(Tr)144 646.8 S(ue if the length of).35 E F2(string)2.5 E +F0(is zero.)2.5 E F2(string)108 658.8 Q F1108 670.8 Q F2(string) +2.5 E F0 -.35(Tr)144 682.8 S(ue if the length of).35 E F2(string)2.84 E +F0(is non-zero.)2.72 E F2(string1)108 699.6 Q F1(==)2.5 E F2(string2)2.5 +E F0(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(35)185.115 E 0 Cg +EP +%%Page: 36 36 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF108 84 Q/F2 10/Times-Italic@0 SF(\214le)2.5 E F0 -.35(Tr)144 84 -S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and its set-user).15 -E(-id bit is set.)-.2 E F1108 96 Q F2(\214le)2.5 E F0 -.35(Tr)144 -96 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is writable.) -.15 E F1108 108 Q F2(\214le)2.5 E F0 -.35(Tr)144 108 S(ue if).35 E -F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is e).15 E -.15(xe)-.15 G -(cutable.).15 E F1108 120 Q F2(\214le)2.5 E F0 -.35(Tr)144 120 S -(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E -(wned by the ef)-.25 E(fecti)-.25 E .3 -.15(ve g)-.25 H(roup id.).15 E -F1108 132 Q F2(\214le)2.5 E F0 -.35(Tr)144 132 S(ue if).35 E F2 -(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a symbolic link.).15 E F1 -108 144 Q F2(\214le)2.5 E F0 -.35(Tr)144 144 S(ue if).35 E F2 -(\214le)2.5 E F0 -.15(ex)2.5 G(ists and has been modi\214ed since it w) -.15 E(as last read.)-.1 E F1108 156 Q F2(\214le)2.5 E F0 -.35(Tr) -144 156 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 -E(wned by the ef)-.25 E(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id.).15 E -F1108 168 Q F2(\214le)2.5 E F0 -.35(Tr)144 168 S(ue if).35 E F2 -(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a sock).15 E(et.)-.1 E F2 -(\214le1)108 180 Q F1(\255ef)2.5 E F2(\214le2)2.5 E F0 -.35(Tr)144 192 S -(ue if).35 E F2(\214le1)2.5 E F0(and)2.5 E F2(\214le2)2.5 E F0 -(refer to the same de)2.5 E(vice and inode numbers.)-.25 E F2(\214le1) -108 204 Q F02.5 E F1(nt)A F2(\214le2)2.5 E F0 -.35(Tr)144 216 S -(ue if).35 E F2(\214le1)2.5 E F0(is ne)2.5 E -(wer \(according to modi\214cation date\) than)-.25 E F2(\214le2)2.5 E -F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le1)2.5 E F0 -.15(ex)2.5 G -(ists and).15 E F2(\214le2)2.5 E F0(does not.)2.5 E F2(\214le1)108 228 Q -F02.5 E F1(ot)A F2(\214le2)2.5 E F0 -.35(Tr)144 240 S(ue if).35 E F2 -(\214le1)2.5 E F0(is older than)2.5 E F2(\214le2)2.5 E F0 2.5(,o)C 2.5 -(ri)-2.5 G(f)-2.5 E F2(\214le2)2.5 E F0 -.15(ex)2.5 G(ists and).15 E F2 -(\214le1)2.5 E F0(does not.)2.5 E F1108 252 Q F2(optname)2.5 E F0 --.35(Tr)144 264 S .262(ue if the shell option).35 F F2(optname)2.992 E -F0 .262(is enabled.)2.942 F .262 -(See the list of options under the description of the)5.262 F F1 -2.763 E F0(option to the)144 276 Q F1(set)2.5 E F0 -.2(bu)2.5 G -(iltin belo).2 E -.65(w.)-.25 G F1108 288 Q F2(varname)2.5 E F0 --.35(Tr)144 300 S(ue if the shell v).35 E(ariable)-.25 E F2(varname)2.79 -E F0(is set \(has been assigned a v)2.68 E(alue\).)-.25 E F1108 -312 Q F2(varname)2.5 E F0 -.35(Tr)144 324 S(ue if the shell v).35 E -(ariable)-.25 E F2(varname)2.79 E F0(is set and is a name reference.) -2.68 E F1108 336 Q F2(string)2.5 E F0 -.35(Tr)144 348 S -(ue if the length of).35 E F2(string)2.5 E F0(is zero.)2.5 E F2(string) -108 360 Q F1108 372 Q F2(string)2.5 E F0 -.35(Tr)144 384 S -(ue if the length of).35 E F2(string)2.84 E F0(is non-zero.)2.72 E F2 -(string1)108 400.8 Q F1(==)2.5 E F2(string2)2.5 E(string1)108 412.8 Q F1 -(=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 424.8 S .862 -(ue if the strings are equal.).35 F F1(=)5.861 E F0 .861 -(should be used with the)3.361 F F1(test)3.361 E F0 .861 -(command for POSIX conformance.)3.361 F .446(When used with the)144 -436.8 R F1([[)2.946 E F0 .446 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF(string1)108 84 Q/F2 10/Times-Bold@0 SF(=)2.5 E F1 +(string2)2.5 E F0 -.35(Tr)144 96 S .862(ue if the strings are equal.).35 +F F2(=)5.861 E F0 .861(should be used with the)3.361 F F2(test)3.361 E +F0 .861(command for POSIX conformance.)3.361 F .446(When used with the) +144 108 R F2([[)2.946 E F0 .446 (command, this performs pattern matching as described abo)2.946 F .747 --.15(ve \()-.15 H F1(Compound).15 E(Commands)144 448.8 Q F0(\).)A F2 -(string1)108 465.6 Q F1(!=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 477.6 S -(ue if the strings are not equal.).35 E F2(string1)108 494.4 Q F1(<)2.5 -E F2(string2)2.5 E F0 -.35(Tr)144 506.4 S(ue if).35 E F2(string1)2.5 E -F0(sorts before)2.5 E F2(string2)2.5 E F0(le)2.5 E(xicographically)-.15 -E(.)-.65 E F2(string1)108 523.2 Q F1(>)2.5 E F2(string2)2.5 E F0 -.35 -(Tr)144 535.2 S(ue if).35 E F2(string1)2.5 E F0(sorts after)2.5 E F2 -(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E F2(ar)108.33 -552 Q(g1)-.37 E F1(OP)2.5 E F2(ar)2.5 E(g2)-.37 E/F3 9/Times-Bold@0 SF -(OP)144 564 Q F0 .385(is one of)2.635 F F1(\255eq)2.885 E F0(,)A F1 -(\255ne)2.885 E F0(,)A F1(\255lt)2.885 E F0(,)A F1(\255le)2.885 E F0(,)A -F1(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F1(\255ge)2.885 E F0 5.385 -(.T)C .385(hese arithmetic binary operators return true if)-5.385 F F2 +-.15(ve \()-.15 H F2(Compound).15 E(Commands)144 120 Q F0(\).)A F1 +(string1)108 136.8 Q F2(!=)2.5 E F1(string2)2.5 E F0 -.35(Tr)144 148.8 S +(ue if the strings are not equal.).35 E F1(string1)108 165.6 Q F2(<)2.5 +E F1(string2)2.5 E F0 -.35(Tr)144 177.6 S(ue if).35 E F1(string1)2.5 E +F0(sorts before)2.5 E F1(string2)2.5 E F0(le)2.5 E(xicographically)-.15 +E(.)-.65 E F1(string1)108 194.4 Q F2(>)2.5 E F1(string2)2.5 E F0 -.35 +(Tr)144 206.4 S(ue if).35 E F1(string1)2.5 E F0(sorts after)2.5 E F1 +(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E F1(ar)108.33 +223.2 Q(g1)-.37 E F2(OP)2.5 E F1(ar)2.5 E(g2)-.37 E/F3 9/Times-Bold@0 SF +(OP)144 235.2 Q F0 .385(is one of)2.635 F F2(\255eq)2.885 E F0(,)A F2 +(\255ne)2.885 E F0(,)A F2(\255lt)2.885 E F0(,)A F2(\255le)2.885 E F0(,)A +F2(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F2(\255ge)2.885 E F0 5.385 +(.T)C .385(hese arithmetic binary operators return true if)-5.385 F F1 (ar)2.884 E(g1)-.37 E F0 .845(is equal to, not equal to, less than, les\ -s than or equal to, greater than, or greater than or equal to)144 576 R -F2(ar)144 588 Q(g2)-.37 E F0 3.59(,r)C(especti)-3.59 E -.15(ve)-.25 G -(ly).15 E(.)-.65 E F2(Ar)7.1 E(g1)-.37 E F0(and)3.59 E F2(ar)3.92 E(g2) +s than or equal to, greater than, or greater than or equal to)144 247.2 +R F1(ar)144 259.2 Q(g2)-.37 E F0 3.59(,r)C(especti)-3.59 E -.15(ve)-.25 +G(ly).15 E(.)-.65 E F1(Ar)7.1 E(g1)-.37 E F0(and)3.59 E F1(ar)3.92 E(g2) -.37 E F0 1.089(may be positi)3.61 F 1.389 -.15(ve o)-.25 H 3.589(rn).15 G -2.25 -.15(eg a)-3.589 H(ti).15 E 1.389 -.15(ve i)-.25 H(nte).15 E -3.589(gers. When)-.15 F 1.089(used with the)3.589 F F1([[)3.589 E F0 -(command,)144 600 Q F2(Ar)4.447 E(g1)-.37 E F0(and)3.437 E F2(Ar)4.447 E -(g2)-.37 E F0 .937(are e)3.457 F -.25(va)-.25 G .937 +3.589(gers. When)-.15 F 1.089(used with the)3.589 F F2([[)3.589 E F0 +(command,)144 271.2 Q F1(Ar)4.447 E(g1)-.37 E F0(and)3.437 E F1(Ar)4.447 +E(g2)-.37 E F0 .937(are e)3.457 F -.25(va)-.25 G .937 (luated as arithmetic e).25 F .937(xpressions \(see)-.15 F F3 .937 -(ARITHMETIC EV)3.437 F(ALU)-1.215 E(A-)-.54 E(TION)144 612 Q F0(abo)2.25 -E -.15(ve)-.15 G(\).).15 E/F4 10.95/Times-Bold@0 SF(SIMPLE COMMAND EXP) -72 628.8 Q(ANSION)-.81 E F0 .614(When a simple command is e)108 640.8 R --.15(xe)-.15 G .614(cuted, the shell performs the follo).15 F .613 -(wing e)-.25 F .613(xpansions, assignments, and redi-)-.15 F -(rections, from left to right, in the follo)108 652.8 Q(wing order)-.25 -E(.)-.55 E(1.)108 669.6 Q 1.848(The w)144 669.6 R 1.848 +(ARITHMETIC EV)3.437 F(ALU)-1.215 E(A-)-.54 E(TION)144 283.2 Q F0(abo) +2.25 E -.15(ve)-.15 G(\).).15 E/F4 10.95/Times-Bold@0 SF +(SIMPLE COMMAND EXP)72 300 Q(ANSION)-.81 E F0 .614 +(When a simple command is e)108 312 R -.15(xe)-.15 G .614 +(cuted, the shell performs the follo).15 F .613(wing e)-.25 F .613 +(xpansions, assignments, and redi-)-.15 F +(rections, from left to right, in the follo)108 324 Q(wing order)-.25 E +(.)-.55 E(1.)108 340.8 Q 1.848(The w)144 340.8 R 1.848 (ords that the parser has mark)-.1 F 1.848(ed as v)-.1 F 1.849 (ariable assignments \(those preceding the command)-.25 F -(name\) and redirections are sa)144 681.6 Q -.15(ve)-.2 G 2.5(df).15 G -(or later processing.)-2.5 E(2.)108 698.4 Q .18(The w)144 698.4 R .18 +(name\) and redirections are sa)144 352.8 Q -.15(ve)-.2 G 2.5(df).15 G +(or later processing.)-2.5 E(2.)108 369.6 Q .18(The w)144 369.6 R .18 (ords that are not v)-.1 F .179 (ariable assignments or redirections are e)-.25 F 2.679(xpanded. If)-.15 F(an)2.679 E 2.679(yw)-.15 G .179(ords remain af-)-2.779 F .346(ter e) -144 710.4 R .346(xpansion, the \214rst w)-.15 F .346(ord is tak)-.1 F +144 381.6 R .346(xpansion, the \214rst w)-.15 F .346(ord is tak)-.1 F .347(en to be the name of the command and the remaining w)-.1 F .347 -(ords are)-.1 F(the ar)144 722.4 Q(guments.)-.18 E(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(34)190.395 E 0 Cg EP -%%Page: 35 35 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(3.)108 84 Q -(Redirections are performed as described abo)144 84 Q .3 -.15(ve u)-.15 -H(nder).15 E/F1 9/Times-Bold@0 SF(REDIRECTION)2.5 E/F2 9/Times-Roman@0 -SF(.)A F0(4.)108 100.8 Q .717(The te)144 100.8 R .717(xt after the)-.15 -F/F3 10/Times-Bold@0 SF(=)3.217 E F0 .717(in each v)3.217 F .717 -(ariable assignment under)-.25 F .717(goes tilde e)-.18 F .717 -(xpansion, parameter e)-.15 F(xpansion,)-.15 E .339 -(command substitution, arithmetic e)144 112.8 R .339 +(ords are)-.1 F(the ar)144 393.6 Q(guments.)-.18 E(3.)108 410.4 Q +(Redirections are performed as described abo)144 410.4 Q .3 -.15(ve u) +-.15 H(nder).15 E F3(REDIRECTION)2.5 E/F5 9/Times-Roman@0 SF(.)A F0(4.) +108 427.2 Q .717(The te)144 427.2 R .717(xt after the)-.15 F F2(=)3.217 +E F0 .717(in each v)3.217 F .717(ariable assignment under)-.25 F .717 +(goes tilde e)-.18 F .717(xpansion, parameter e)-.15 F(xpansion,)-.15 E +.339(command substitution, arithmetic e)144 439.2 R .339 (xpansion, and quote remo)-.15 F -.25(va)-.15 G 2.839(lb).25 G .339 -(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 124.8 Q -.332(If no command name results, the v)108 141.6 R .332 -(ariable assignments af)-.25 F .332(fect the current shell en)-.25 F -2.832(vironment. Otherwise,)-.4 F(the)2.832 E -.25(va)108 153.6 S .757 -(riables are added to the en).25 F .757(vironment of the e)-.4 F -.15 -(xe)-.15 G .757(cuted command and do not af).15 F .757 -(fect the current shell en)-.25 F(vi-)-.4 E 3.177(ronment. If)108 165.6 -R(an)3.177 E 3.177(yo)-.15 G 3.177(ft)-3.177 G .677 -(he assignments attempts to assign a v)-3.177 F .677 -(alue to a readonly v)-.25 F .676(ariable, an error occurs, and)-.25 F -(the command e)108 177.6 Q(xits with a non-zero status.)-.15 E .149 -(If no command name results, redirections are performed, b)108 194.4 R -.149(ut do not af)-.2 F .15(fect the current shell en)-.25 F 2.65 -(vironment. A)-.4 F(redirection error causes the command to e)108 206.4 +(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 451.2 Q +.587(If no command name results, the v)108 468 R .586 +(ariable assignments af)-.25 F .586(fect the current shell en)-.25 F +3.086(vironment. In)-.4 F .586(the case of)3.086 F .371(such a command \ +\(one that consists only of assignment statements and redirections\), a\ +ssignment statements)108 480 R .835(are performed before redirections.) +108 492 R .835(Otherwise, the v)5.835 F .835 +(ariables are added to the en)-.25 F .835(vironment of the e)-.4 F -.15 +(xe)-.15 G(cuted).15 E .838(command and do not af)108 504 R .838 +(fect the current shell en)-.25 F 3.338(vironment. If)-.4 F(an)3.338 E +3.338(yo)-.15 G 3.338(ft)-3.338 G .839 +(he assignments attempts to assign a)-3.338 F -.25(va)108 516 S +(lue to a readonly v).25 E(ariable, an error occurs, and the command e) +-.25 E(xits with a non-zero status.)-.15 E .15 +(If no command name results, redirections are performed, b)108 532.8 R +.149(ut do not af)-.2 F .149(fect the current shell en)-.25 F 2.649 +(vironment. A)-.4 F(redirection error causes the command to e)108 544.8 Q(xit with a non-zero status.)-.15 E 1.064 -(If there is a command name left after e)108 223.2 R 1.064(xpansion, e) +(If there is a command name left after e)108 561.6 R 1.064(xpansion, e) -.15 F -.15(xe)-.15 G 1.064(cution proceeds as described belo).15 F -4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .068(command e)108 -235.2 R 2.568(xits. If)-.15 F .069(one of the e)2.568 F .069 -(xpansions contained a command substitution, the e)-.15 F .069 -(xit status of the command)-.15 F .467(is the e)108 247.2 R .466 -(xit status of the last command substitution performed.)-.15 F .466 -(If there were no command substitutions, the)5.466 F(command e)108 259.2 -Q(xits with a status of zero.)-.15 E/F4 10.95/Times-Bold@0 SF -(COMMAND EXECUTION)72 276 Q F0 .546 -(After a command has been split into w)108 288 R .547 +4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .069(command e)108 +573.6 R 2.569(xits. If)-.15 F .069(one of the e)2.569 F .069 +(xpansions contained a command substitution, the e)-.15 F .068 +(xit status of the command)-.15 F .466(is the e)108 585.6 R .466 +(xit status of the last command substitution performed.)-.15 F .467 +(If there were no command substitutions, the)5.466 F(command e)108 597.6 +Q(xits with a status of zero.)-.15 E F4(COMMAND EXECUTION)72 614.4 Q F0 +.547(After a command has been split into w)108 626.4 R .546 (ords, if it results in a simple command and an optional list of ar)-.1 -F(gu-)-.18 E(ments, the follo)108 300 Q(wing actions are tak)-.25 E(en.) --.1 E .379(If the command name contains no slashes, the shell attempts \ -to locate it.)108 316.8 R .379(If there e)5.379 F .379 +F(gu-)-.18 E(ments, the follo)108 638.4 Q(wing actions are tak)-.25 E +(en.)-.1 E .379(If the command name contains no slashes, the shell atte\ +mpts to locate it.)108 655.2 R .379(If there e)5.379 F .379 (xists a shell function by)-.15 F .246(that name, that function is in) -108 328.8 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G -.246(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E F1(FUNCTIONS) -2.746 E F2(.)A F0 .246(If the name does not match a func-)4.746 F -(tion, the shell searches for it in the list of shell b)108 340.8 Q 2.5 +108 667.2 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G +.246(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E F3(FUNCTIONS) +2.746 E F5(.)A F0 .246(If the name does not match a func-)4.746 F +(tion, the shell searches for it in the list of shell b)108 679.2 Q 2.5 (uiltins. If)-.2 F 2.5(am)2.5 G(atch is found, that b)-2.5 E -(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E .31 -(If the name is neither a shell function nor a b)108 357.6 R .309 -(uiltin, and contains no slashes,)-.2 F F3(bash)2.809 E F0 .309 -(searches each element of)2.809 F(the)108 369.6 Q F1 -.666(PA)3.162 G -(TH)-.189 E F0 .662(for a directory containing an e)2.912 F -.15(xe)-.15 -G .662(cutable \214le by that name.).15 F F3(Bash)5.662 E F0 .663 -(uses a hash table to remember)3.162 F 1.915(the full pathnames of e)108 -381.6 R -.15(xe)-.15 G 1.915(cutable \214les \(see).15 F F3(hash)4.415 E -F0(under)4.415 E F1 1.915(SHELL B)4.415 F(UIL)-.09 E 1.914(TIN COMMANDS) --.828 F F0(belo)4.164 E 4.414(w\). A)-.25 F(full)4.414 E .719 -(search of the directories in)108 393.6 R F1 -.666(PA)3.219 G(TH)-.189 E -F0 .72(is performed only if the command is not found in the hash table.) -2.969 F .72(If the)5.72 F .956(search is unsuccessful, the shell search\ -es for a de\214ned shell function named)108 405.6 R F3(command_not_f) -3.455 E(ound_han-)-.25 E(dle)108 417.6 Q F0 6.005(.I)C 3.505(ft)-6.005 G -1.005(hat function e)-3.505 F 1.005(xists, it is in)-.15 F -.2(vo)-.4 G --.1(ke).2 G 3.506(di).1 G 3.506(nas)-3.506 G 1.006(eparate e)-3.506 F --.15(xe)-.15 G 1.006(cution en).15 F 1.006 -(vironment with the original command)-.4 F .256 -(and the original command')108 429.6 R 2.756(sa)-.55 G -.18(rg)-2.756 G -.256(uments as its ar).18 F .256(guments, and the function')-.18 F 2.755 -(se)-.55 G .255(xit status becomes the e)-2.905 F .255(xit sta-)-.15 F -.263(tus of that subshell.)108 441.6 R .263(If that function is not de\ -\214ned, the shell prints an error message and returns an e)5.263 F .263 -(xit sta-)-.15 F(tus of 127.)108 453.6 Q 1.089(If the search is success\ -ful, or if the command name contains one or more slashes, the shell e) -108 470.4 R -.15(xe)-.15 G 1.089(cutes the).15 F .197 -(named program in a separate e)108 482.4 R -.15(xe)-.15 G .197 -(cution en).15 F 2.698(vironment. Ar)-.4 F .198 -(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .198 -(n, and the remain-).15 F(ing ar)108 494.4 Q -(guments to the command are set to the ar)-.18 E(guments gi)-.18 E -.15 -(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.049(If this e)108 511.2 R --.15(xe)-.15 G 1.049(cution f).15 F 1.049 -(ails because the \214le is not in e)-.1 F -.15(xe)-.15 G 1.048 -(cutable format, and the \214le is not a directory).15 F 3.548(,i)-.65 G -3.548(ti)-3.548 G 3.548(sa)-3.548 G(s-)-3.548 E .042(sumed to be a)108 -523.2 R/F5 10/Times-Italic@0 SF .042(shell script)2.542 F F0 2.542 -(,a\214)C .043(le containing shell commands.)-2.542 F 2.543(As)5.043 G -.043(ubshell is spa)-2.543 F .043(wned to e)-.15 F -.15(xe)-.15 G .043 -(cute it.).15 F .043(This sub-)5.043 F .275 -(shell reinitializes itself, so that the ef)108 535.2 R .274 -(fect is as if a ne)-.25 F 2.774(ws)-.25 G .274(hell had been in)-2.774 -F -.2(vo)-.4 G -.1(ke).2 G 2.774(dt).1 G 2.774(oh)-2.774 G .274 -(andle the script, with the)-2.774 F -.15(ex)108 547.2 S 2.357 -(ception that the locations of commands remembered by the parent \(see) -.15 F F3(hash)4.858 E F0(belo)4.858 E 4.858(wu)-.25 G(nder)-4.858 E F1 -(SHELL)4.858 E -.09(BU)108 559.2 S(IL).09 E(TIN COMMANDS)-.828 E F2(\))A -F0(are retained by the child.)2.25 E .348(If the program is a \214le be) -108 576 R .348(ginning with)-.15 F F3(#!)2.848 E F0 2.848(,t)C .347(he \ -remainder of the \214rst line speci\214es an interpreter for the pro-) --2.848 F 3.178(gram. The)108 588 R .678(shell e)3.178 F -.15(xe)-.15 G -.678(cutes the speci\214ed interpreter on operating systems that do not\ - handle this e).15 F -.15(xe)-.15 G(cutable).15 E .206(format themselv) -108 600 R 2.706(es. The)-.15 F(ar)2.706 E .206 -(guments to the interpreter consist of a single optional ar)-.18 F .206 -(gument follo)-.18 F .206(wing the in-)-.25 F .267 -(terpreter name on the \214rst line of the program, follo)108 612 R .268 -(wed by the name of the program, follo)-.25 F .268(wed by the com-)-.25 -F(mand ar)108 624 Q(guments, if an)-.18 E -.65(y.)-.15 G F4 -(COMMAND EXECUTION ENVIR)72 640.8 Q(ONMENT)-.329 E F0(The shell has an) -108 652.8 Q F5 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E(onment)-.45 E F0 -2.5(,w)C(hich consists of the follo)-2.5 E(wing:)-.25 E<83>108 669.6 Q -1.406(open \214les inherited by the shell at in)144 669.6 R -.2(vo)-.4 G -1.405(cation, as modi\214ed by redirections supplied to the).2 F F3 -(exec)3.905 E F0 -.2(bu)144 681.6 S(iltin).2 E<83>108 698.4 Q -(the current w)144 698.4 Q(orking directory as set by)-.1 E F3(cd)2.5 E -F0(,)A F3(pushd)2.5 E F0 2.5(,o)C(r)-2.5 E F3(popd)2.5 E F0 2.5(,o)C 2.5 -(ri)-2.5 G(nherited by the shell at in)-2.5 E -.2(vo)-.4 G(cation).2 E -<83>108 715.2 Q(the \214le creation mode mask as set by)144 715.2 Q F3 -(umask)2.5 E F0(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent) --2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(35)190.395 E 0 Cg -EP -%%Page: 36 36 +(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E .309 +(If the name is neither a shell function nor a b)108 696 R .31 +(uiltin, and contains no slashes,)-.2 F F2(bash)2.81 E F0 .31 +(searches each element of)2.81 F(the)108 708 Q F3 -.666(PA)3.163 G(TH) +-.189 E F0 .662(for a directory containing an e)2.913 F -.15(xe)-.15 G +.662(cutable \214le by that name.).15 F F2(Bash)5.662 E F0 .662 +(uses a hash table to remember)3.162 F 1.914(the full pathnames of e)108 +720 R -.15(xe)-.15 G 1.915(cutable \214les \(see).15 F F2(hash)4.415 E +F0(under)4.415 E F3 1.915(SHELL B)4.415 F(UIL)-.09 E 1.915(TIN COMMANDS) +-.828 F F0(belo)4.165 E 4.415(w\). A)-.25 F(full)4.415 E(GNU Bash 5.2)72 +768 Q(2022 September 19)135.955 E(36)185.115 E 0 Cg EP +%%Page: 37 37 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>108 84 Q -(current traps set by)144 84 Q/F1 10/Times-Bold@0 SF(trap)2.5 E F0<83> -108 100.8 Q .256(shell parameters that are set by v)144 100.8 R .256 -(ariable assignment or with)-.25 F F1(set)2.756 E F0 .257 -(or inherited from the shell')2.756 F 2.757(sp)-.55 G(arent)-2.757 E -(in the en)144 112.8 Q(vironment)-.4 E<83>108 129.6 Q -(shell functions de\214ned during e)144 129.6 Q -.15(xe)-.15 G +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .72 +(search of the directories in)108 84 R/F1 9/Times-Bold@0 SF -.666(PA) +3.22 G(TH)-.189 E F0 .719 +(is performed only if the command is not found in the hash table.)2.97 F +.719(If the)5.719 F .956(search is unsuccessful, the shell searches for\ + a de\214ned shell function named)108 96 R/F2 10/Times-Bold@0 SF +(command_not_f)3.456 E(ound_han-)-.25 E(dle)108 108 Q F0 6.006(.I)C +3.506(ft)-6.006 G 1.006(hat function e)-3.506 F 1.006(xists, it is in) +-.15 F -.2(vo)-.4 G -.1(ke).2 G 3.506(di).1 G 3.506(nas)-3.506 G 1.005 +(eparate e)-3.506 F -.15(xe)-.15 G 1.005(cution en).15 F 1.005 +(vironment with the original command)-.4 F .255 +(and the original command')108 120 R 2.755(sa)-.55 G -.18(rg)-2.755 G +.255(uments as its ar).18 F .256(guments, and the function')-.18 F 2.756 +(se)-.55 G .256(xit status becomes the e)-2.906 F .256(xit sta-)-.15 F +.263(tus of that subshell.)108 132 R .263(If that function is not de\ +\214ned, the shell prints an error message and returns an e)5.263 F .263 +(xit sta-)-.15 F(tus of 127.)108 144 Q 1.089(If the search is successfu\ +l, or if the command name contains one or more slashes, the shell e)108 +160.8 R -.15(xe)-.15 G 1.09(cutes the).15 F .198 +(named program in a separate e)108 172.8 R -.15(xe)-.15 G .198 +(cution en).15 F 2.698(vironment. Ar)-.4 F .198 +(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .197 +(n, and the remain-).15 F(ing ar)108 184.8 Q +(guments to the command are set to the ar)-.18 E(guments gi)-.18 E -.15 +(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.048(If this e)108 201.6 R +-.15(xe)-.15 G 1.048(cution f).15 F 1.048 +(ails because the \214le is not in e)-.1 F -.15(xe)-.15 G 1.049 +(cutable format, and the \214le is not a directory).15 F 3.549(,i)-.65 G +3.549(ti)-3.549 G 3.549(sa)-3.549 G(s-)-3.549 E .143(sumed to be a)108 +213.6 R/F3 10/Times-Italic@0 SF .143(shell script)2.643 F F0 2.643 +(,a\214)C .143(le containing shell commands, and the shell creates a ne) +-2.643 F 2.643(wi)-.25 G .143(nstance of itself to)-2.643 F -.15(exe)108 +225.6 S .136(cute it.).15 F .136 +(This subshell reinitializes itself, so that the ef)5.136 F .137 +(fect is as if a ne)-.25 F 2.637(ws)-.25 G .137(hell had been in)-2.637 +F -.2(vo)-.4 G -.1(ke).2 G 2.637(dt).1 G 2.637(oh)-2.637 G(andle)-2.637 +E .866(the script, with the e)108 237.6 R .866 +(xception that the locations of commands remembered by the parent \(see) +-.15 F F2(hash)3.365 E F0(belo)3.365 E(w)-.25 E(under)108 249.6 Q F1 +(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E/F4 9/Times-Roman@0 SF(\)) +A F0(are retained by the child.)2.25 E .347 +(If the program is a \214le be)108 266.4 R .347(ginning with)-.15 F F2 +(#!)2.847 E F0 2.847(,t)C .348(he remainder of the \214rst line speci\ +\214es an interpreter for the pro-)-2.847 F 3.178(gram. The)108 278.4 R +.678(shell e)3.178 F -.15(xe)-.15 G .678(cutes the speci\214ed interpre\ +ter on operating systems that do not handle this e).15 F -.15(xe)-.15 G +(cutable).15 E .206(format themselv)108 290.4 R 2.706(es. The)-.15 F(ar) +2.706 E .206(guments to the interpreter consist of a single optional ar) +-.18 F .206(gument follo)-.18 F .206(wing the in-)-.25 F .268 +(terpreter name on the \214rst line of the program, follo)108 302.4 R +.267(wed by the name of the program, follo)-.25 F .267(wed by the com-) +-.25 F(mand ar)108 314.4 Q(guments, if an)-.18 E -.65(y.)-.15 G/F5 10.95 +/Times-Bold@0 SF(COMMAND EXECUTION ENVIR)72 331.2 Q(ONMENT)-.329 E F0 +(The shell has an)108 343.2 Q F3 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E +(onment)-.45 E F0 2.5(,w)C(hich consists of the follo)-2.5 E(wing:)-.25 +E<83>108 360 Q 1.405(open \214les inherited by the shell at in)144 360 R +-.2(vo)-.4 G 1.406 +(cation, as modi\214ed by redirections supplied to the).2 F F2(exec) +3.906 E F0 -.2(bu)144 372 S(iltin).2 E<83>108 388.8 Q(the current w)144 +388.8 Q(orking directory as set by)-.1 E F2(cd)2.5 E F0(,)A F2(pushd)2.5 +E F0 2.5(,o)C(r)-2.5 E F2(popd)2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G +(nherited by the shell at in)-2.5 E -.2(vo)-.4 G(cation).2 E<83>108 +405.6 Q(the \214le creation mode mask as set by)144 405.6 Q F2(umask)2.5 +E F0(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent)-2.5 E<83> +108 422.4 Q(current traps set by)144 422.4 Q F2(trap)2.5 E F0<83>108 +439.2 Q .257(shell parameters that are set by v)144 439.2 R .256 +(ariable assignment or with)-.25 F F2(set)2.756 E F0 .256 +(or inherited from the shell')2.756 F 2.756(sp)-.55 G(arent)-2.756 E +(in the en)144 451.2 Q(vironment)-.4 E<83>108 468 Q +(shell functions de\214ned during e)144 468 Q -.15(xe)-.15 G (cution or inherited from the shell').15 E 2.5(sp)-.55 G -(arent in the en)-2.5 E(vironment)-.4 E<83>108 146.4 Q -(options enabled at in)144 146.4 Q -.2(vo)-.4 G(cation \(either by def) -.2 E(ault or with command-line ar)-.1 E(guments\) or by)-.18 E F1(set) -2.5 E F0<83>108 163.2 Q(options enabled by)144 163.2 Q F1(shopt)2.5 E F0 -<83>108 180 Q(shell aliases de\214ned with)144 180 Q F1(alias)2.5 E F0 -<83>108 196.8 Q -.25(va)144 196.8 S +(arent in the en)-2.5 E(vironment)-.4 E<83>108 484.8 Q +(options enabled at in)144 484.8 Q -.2(vo)-.4 G(cation \(either by def) +.2 E(ault or with command-line ar)-.1 E(guments\) or by)-.18 E F2(set) +2.5 E F0<83>108 501.6 Q(options enabled by)144 501.6 Q F2(shopt)2.5 E F0 +<83>108 518.4 Q(shell aliases de\214ned with)144 518.4 Q F2(alias)2.5 E +F0<83>108 535.2 Q -.25(va)144 535.2 S (rious process IDs, including those of background jobs, the v).25 E -(alue of)-.25 E F1($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E -/F2 9/Times-Bold@0 SF(PPID)2.5 E F0 .427 -(When a simple command other than a b)108 213.6 R .426 -(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .426 -(cuted, it is in).15 F -.2(vo)-.4 G -.1(ke).2 G 2.926(di).1 G 2.926(nas) --2.926 G(eparate)-2.926 E -.15(exe)108 225.6 S .133(cution en).15 F .133 +(alue of)-.25 E F2($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E +F1(PPID)2.5 E F0 .426(When a simple command other than a b)108 552 R +.427(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .427 +(cuted, it is in).15 F -.2(vo)-.4 G -.1(ke).2 G 2.927(di).1 G 2.927(nas) +-2.927 G(eparate)-2.927 E -.15(exe)108 564 S .134(cution en).15 F .134 (vironment that consists of the follo)-.4 F 2.634(wing. Unless)-.25 F -.134(otherwise noted, the v)2.634 F .134(alues are inherited from)-.25 F -(the shell.)108 237.6 Q<83>108 254.4 Q 1.056(the shell')144 254.4 R -3.556(so)-.55 G 1.056(pen \214les, plus an)-3.556 F 3.556(ym)-.15 G -1.056 +.133(otherwise noted, the v)2.634 F .133(alues are inherited from)-.25 F +(the shell.)108 576 Q<83>108 592.8 Q 1.055(the shell')144 592.8 R 3.555 +(so)-.55 G 1.055(pen \214les, plus an)-3.555 F 3.556(ym)-.15 G 1.056 (odi\214cations and additions speci\214ed by redirections to the com-) --3.556 F(mand)144 266.4 Q<83>108 283.2 Q(the current w)144 283.2 Q -(orking directory)-.1 E<83>108 300 Q(the \214le creation mode mask)144 -300 Q<83>108 316.8 Q .856(shell v)144 316.8 R .857 +-3.556 F(mand)144 604.8 Q<83>108 621.6 Q(the current w)144 621.6 Q +(orking directory)-.1 E<83>108 638.4 Q(the \214le creation mode mask)144 +638.4 Q<83>108 655.2 Q .857(shell v)144 655.2 R .857 (ariables and functions mark)-.25 F .857(ed for e)-.1 F .857 (xport, along with v)-.15 F .857(ariables e)-.25 F .857 -(xported for the command,)-.15 F(passed in the en)144 328.8 Q(vironment) --.4 E<83>108 345.6 Q .307(traps caught by the shell are reset to the v) -144 345.6 R .306(alues inherited from the shell')-.25 F 2.806(sp)-.55 G -.306(arent, and traps ignored)-2.806 F(by the shell are ignored)144 -357.6 Q 2.5(Ac)108 374.4 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5 -(di).1 G 2.5(nt)-2.5 G(his separate en)-2.5 E(vironment cannot af)-.4 E +(xported for the command,)-.15 F(passed in the en)144 667.2 Q(vironment) +-.4 E<83>108 684 Q .306(traps caught by the shell are reset to the v)144 +684 R .307(alues inherited from the shell')-.25 F 2.807(sp)-.55 G .307 +(arent, and traps ignored)-2.807 F(by the shell are ignored)144 696 Q +2.5(Ac)108 712.8 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5(di).1 G +2.5(nt)-2.5 G(his separate en)-2.5 E(vironment cannot af)-.4 E (fect the shell')-.25 E 2.5(se)-.55 G -.15(xe)-2.65 G(cution en).15 E -(vironment.)-.4 E .577(Command substitution, commands grouped with pare\ -ntheses, and asynchronous commands are in)108 391.2 R -.2(vo)-.4 G -.1 -(ke).2 G 3.078(di).1 G(n)-3.078 E 2.745(as)108 403.2 S .245(ubshell en) --2.745 F .245(vironment that is a duplicate of the shell en)-.4 F .244 -(vironment, e)-.4 F .244(xcept that traps caught by the shell are)-.15 F -.358(reset to the v)108 415.2 R .358 +(vironment.)-.4 E(A)108 729.6 Q F3(subshell)2.5 E F0(is a cop)2.5 E 2.5 +(yo)-.1 G 2.5(ft)-2.5 G(he shell process.)-2.5 E(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(37)185.115 E 0 Cg EP +%%Page: 38 38 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .577(Command subs\ +titution, commands grouped with parentheses, and asynchronous commands \ +are in)108 84 R -.2(vo)-.4 G -.1(ke).2 G 3.077(di).1 G(n)-3.077 E 2.744 +(as)108 96 S .244(ubshell en)-2.744 F .244 +(vironment that is a duplicate of the shell en)-.4 F .245(vironment, e) +-.4 F .245(xcept that traps caught by the shell are)-.15 F .359 +(reset to the v)108 108 R .358 (alues that the shell inherited from its parent at in)-.25 F -.2(vo)-.4 -G 2.858(cation. Builtin).2 F .359(commands that are in)2.859 F -.2(vo) --.4 G -.1(ke).2 G(d).1 E .857(as part of a pipeline are also e)108 427.2 -R -.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.356 -(vironment. Changes)-.4 F .856(made to the subshell en)3.356 F(viron-) --.4 E(ment cannot af)108 439.2 Q(fect the shell')-.25 E 2.5(se)-.55 G --.15(xe)-2.65 G(cution en).15 E(vironment.)-.4 E 1.376(Subshells spa)108 -456 R 1.376(wned to e)-.15 F -.15(xe)-.15 G 1.377 +G 2.858(cation. Builtin).2 F .358(commands that are in)2.858 F -.2(vo) +-.4 G -.1(ke).2 G(d).1 E .856(as part of a pipeline are also e)108 120 R +-.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.357 +(vironment. Changes)-.4 F .857(made to the subshell en)3.357 F(viron-) +-.4 E(ment cannot af)108 132 Q(fect the shell')-.25 E 2.5(se)-.55 G -.15 +(xe)-2.65 G(cution en).15 E(vironment.)-.4 E 1.377(Subshells spa)108 +148.8 R 1.377(wned to e)-.15 F -.15(xe)-.15 G 1.377 (cute command substitutions inherit the v).15 F 1.377(alue of the)-.25 F -F13.877 E F0 1.377(option from the parent)3.877 F 2.5(shell. When) -108 468 R(not in)2.5 E/F3 10/Times-Italic@0 SF(posix mode)2.5 E F0(,)A -F1(bash)2.5 E F0(clears the)2.5 E F12.5 E F0 -(option in such subshells.)2.5 E .405(If a command is follo)108 484.8 R -.405(wed by a)-.25 F F1(&)2.905 E F0 .404(and job control is not acti) -2.905 F -.15(ve)-.25 G 2.904(,t).15 G .404(he def)-2.904 F .404 -(ault standard input for the command)-.1 F .197(is the empty \214le)108 -496.8 R F3(/de)2.697 E(v/null)-.15 E F0 5.197(.O)C .197 -(therwise, the in)-5.197 F -.2(vo)-.4 G -.1(ke).2 G 2.697(dc).1 G .198 -(ommand inherits the \214le descriptors of the calling shell)-2.697 F -(as modi\214ed by redirections.)108 508.8 Q/F4 10.95/Times-Bold@0 SF -(ENVIR)72 525.6 Q(ONMENT)-.329 E F0 2.344(When a program is in)108 537.6 +/F1 10/Times-Bold@0 SF3.876 E F0 1.376(option from the parent) +3.876 F 2.5(shell. When)108 160.8 R(not in)2.5 E/F2 10/Times-Italic@0 SF +(posix mode)2.5 E F0(,)A F1(bash)2.5 E F0(clears the)2.5 E F12.5 E +F0(option in such subshells.)2.5 E .404(If a command is follo)108 177.6 +R .404(wed by a)-.25 F F1(&)2.904 E F0 .405(and job control is not acti) +2.904 F -.15(ve)-.25 G 2.905(,t).15 G .405(he def)-2.905 F .405 +(ault standard input for the command)-.1 F .198(is the empty \214le)108 +189.6 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 201.6 Q/F3 10.95/Times-Bold@0 SF +(ENVIR)72 218.4 Q(ONMENT)-.329 E F0 2.343(When a program is in)108 230.4 R -.2(vo)-.4 G -.1(ke).2 G 4.843(di).1 G 4.843(ti)-4.843 G 4.843(sg) -4.843 G -2.15 -.25(iv e)-4.843 H 4.843(na).25 G 4.843(na)-4.843 G 2.343 -(rray of strings called the)-4.843 F F3(en)5.033 E(vir)-.4 E(onment)-.45 -E F0 7.343(.T).68 G 2.343(his is a list of)-7.343 F F3(name)108 549.6 Q -F0A F3(value)A F0(pairs, of the form)2.5 E F3(name)2.86 E F0(=)A F3 -(value)A F0(.).18 E .438(The shell pro)108 566.4 R .438(vides se)-.15 F +(rray of strings called the)-4.843 F F2(en)5.033 E(vir)-.4 E(onment)-.45 +E F0 7.343(.T).68 G 2.344(his is a list of)-7.343 F F2(name)108 242.4 Q +F0A F2(value)A F0(pairs, of the form)2.5 E F2(name)2.86 E F0(=)A F2 +(value)A F0(.).18 E .439(The shell pro)108 259.2 R .438(vides se)-.15 F -.15(ve)-.25 G .438(ral w).15 F .438(ays to manipulate the en)-.1 F 2.938(vironment. On)-.4 F(in)2.938 E -.2(vo)-.4 G .438 -(cation, the shell scans its o).2 F .439(wn en-)-.25 F .709(vironment a\ +(cation, the shell scans its o).2 F .438(wn en-)-.25 F .709(vironment a\ nd creates a parameter for each name found, automatically marking it fo\ -r)108 578.4 R F3 -.2(ex)3.208 G(port).2 E F0 .708(to child pro-)3.888 F -2.703(cesses. Ex)108 590.4 R .203(ecuted commands inherit the en)-.15 F +r)108 271.2 R F2 -.2(ex)3.209 G(port).2 E F0 .709(to child pro-)3.889 F +2.704(cesses. Ex)108 283.2 R .203(ecuted commands inherit the en)-.15 F 2.703(vironment. The)-.4 F F1(export)2.703 E F0(and)2.703 E F1(declar) -2.703 E 2.703<65ad>-.18 G(x)-2.703 E F0 .203(commands allo)2.703 F 2.704 -(wp)-.25 G(aram-)-2.704 E .332 -(eters and functions to be added to and deleted from the en)108 602.4 R +2.703 E 2.703<65ad>-.18 G(x)-2.703 E F0 .203(commands allo)2.703 F 2.703 +(wp)-.25 G(aram-)-2.703 E .332 +(eters and functions to be added to and deleted from the en)108 295.2 R 2.832(vironment. If)-.4 F .332(the v)2.832 F .332 -(alue of a parameter in the en-)-.25 F .131 -(vironment is modi\214ed, the ne)108 614.4 R 2.631(wv)-.25 G .131 -(alue becomes part of the en)-2.881 F .132 -(vironment, replacing the old.)-.4 F .132(The en)5.132 F(vironment)-.4 E -.321(inherited by an)108 626.4 R 2.821(ye)-.15 G -.15(xe)-2.971 G .321 +(alue of a parameter in the en-)-.25 F .132 +(vironment is modi\214ed, the ne)108 307.2 R 2.632(wv)-.25 G .131 +(alue becomes part of the en)-2.882 F .131 +(vironment, replacing the old.)-.4 F .131(The en)5.131 F(vironment)-.4 E +.32(inherited by an)108 319.2 R 2.82(ye)-.15 G -.15(xe)-2.97 G .321 (cuted command consists of the shell').15 F 2.821(si)-.55 G .321 -(nitial en)-2.821 F .32(vironment, whose v)-.4 F .32(alues may be modi-) --.25 F .533(\214ed in the shell, less an)108 638.4 R 3.033(yp)-.15 G -.534(airs remo)-3.033 F -.15(ve)-.15 G 3.034(db).15 G 3.034(yt)-3.034 G -(he)-3.034 E F1(unset)3.034 E F0 .534(command, plus an)3.034 F 3.034(ya) --.15 G .534(dditions via the)-3.034 F F1(export)3.034 E F0(and)3.034 E -F1(de-)3.034 E(clar)108 650.4 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.) -2.5 E .563(The en)108 667.2 R .563(vironment for an)-.4 F(y)-.15 E F3 -.563(simple command)3.403 F F0 .562 +(nitial en)-2.821 F .321(vironment, whose v)-.4 F .321 +(alues may be modi-)-.25 F .534(\214ed in the shell, less an)108 331.2 R +3.034(yp)-.15 G .534(airs remo)-3.034 F -.15(ve)-.15 G 3.034(db).15 G +3.034(yt)-3.034 G(he)-3.034 E F1(unset)3.034 E F0 .534(command, plus an) +3.034 F 3.033(ya)-.15 G .533(dditions via the)-3.033 F F1(export)3.033 E +F0(and)3.033 E F1(de-)3.033 E(clar)108 343.2 Q 2.5<65ad>-.18 G(x)-2.5 E +F0(commands.)2.5 E .562(The en)108 360 R .562(vironment for an)-.4 F(y) +-.15 E F2 .562(simple command)3.402 F F0 .563 (or function may be augmented temporarily by pre\214xing it with)3.833 F -.202(parameter assignments, as described abo)108 679.2 R .502 -.15(ve i) --.15 H(n).15 E F2 -.666(PA)2.702 G(RAMETERS).666 E/F5 9/Times-Roman@0 SF -(.)A F0 .202(These assignment statements af)4.702 F .203(fect only the) --.25 F(en)108 691.2 Q(vironment seen by that command.)-.4 E .81(If the) -108 708 R F13.31 E F0 .81(option is set \(see the)3.31 F F1(set) -3.31 E F0 -.2(bu)3.31 G .81(iltin command belo).2 F .81(w\), then)-.25 F -F3(all)3.64 E F0 .81(parameter assignments are placed in)3.82 F(the en) -108 720 Q +.203(parameter assignments, as described abo)108 372 R .502 -.15(ve i) +-.15 H(n).15 E/F4 9/Times-Bold@0 SF -.666(PA)2.702 G(RAMETERS).666 E/F5 +9/Times-Roman@0 SF(.)A F0 .202(These assignment statements af)4.702 F +.202(fect only the)-.25 F(en)108 384 Q(vironment seen by that command.) +-.4 E .81(If the)108 400.8 R F13.31 E F0 .81 +(option is set \(see the)3.31 F F1(set)3.31 E F0 -.2(bu)3.31 G .81 +(iltin command belo).2 F .81(w\), then)-.25 F F2(all)3.64 E F0 .81 +(parameter assignments are placed in)3.82 F(the en)108 412.8 Q (vironment for a command, not just those that precede the command name.) --.4 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(36)190.395 E 0 Cg -EP -%%Page: 37 37 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(When)108 84 Q/F1 -10/Times-Bold@0 SF(bash)3.585 E F0(in)3.585 E -.2(vo)-.4 G -.1(ke).2 G -3.585(sa).1 G 3.585(ne)-3.585 G 1.085(xternal command, the v)-3.735 F -(ariable)-.25 E F1(_)3.585 E F0 1.086 +-.4 E(When)108 429.6 Q F1(bash)3.586 E F0(in)3.586 E -.2(vo)-.4 G -.1 +(ke).2 G 3.586(sa).1 G 3.586(ne)-3.586 G 1.086(xternal command, the v) +-3.736 F(ariable)-.25 E F1(_)3.586 E F0 1.085 (is set to the full \214lename of the command and)3.586 F -(passed to that command in its en)108 96 Q(vironment.)-.4 E/F2 10.95 -/Times-Bold@0 SF(EXIT ST)72 112.8 Q -1.04(AT)-.986 G(US)1.04 E F0 .151 -(The e)108 124.8 R .151(xit status of an e)-.15 F -.15(xe)-.15 G .151 -(cuted command is the v).15 F .15(alue returned by the)-.25 F/F3 10 -/Times-Italic@0 SF(waitpid)2.65 E F0 .15(system call or equi)2.65 F -.25 -(va)-.25 G .15(lent func-).25 F 2.847(tion. Exit)108 136.8 R .347 -(statuses f)2.847 F .347(all between 0 and 255, though, as e)-.1 F .347 -(xplained belo)-.15 F 1.647 -.65(w, t)-.25 H .347(he shell may use v).65 -F .348(alues abo)-.25 F .648 -.15(ve 1)-.15 H(25).15 E(specially)108 -148.8 Q 5.507(.E)-.65 G .507(xit statuses from shell b)-5.507 F .507 +(passed to that command in its en)108 441.6 Q(vironment.)-.4 E F3 +(EXIT ST)72 458.4 Q -1.04(AT)-.986 G(US)1.04 E F0 .15(The e)108 470.4 R +.15(xit status of an e)-.15 F -.15(xe)-.15 G .15(cuted command is the v) +.15 F .151(alue returned by the)-.25 F F2(waitpid)2.651 E F0 .151 +(system call or equi)2.651 F -.25(va)-.25 G .151(lent func-).25 F 2.848 +(tion. Exit)108 482.4 R .348(statuses f)2.848 F .347 +(all between 0 and 255, though, as e)-.1 F .347(xplained belo)-.15 F +1.647 -.65(w, t)-.25 H .347(he shell may use v).65 F .347(alues abo)-.25 +F .647 -.15(ve 1)-.15 H(25).15 E(specially)108 494.4 Q 5.506(.E)-.65 G +.506(xit statuses from shell b)-5.506 F .507 (uiltins and compound commands are also limited to this range.)-.2 F -(Under)5.506 E(certain circumstances, the shell will use special v)108 -160.8 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -.15 -(Fo)108 177.6 S 3.372(rt).15 G .872(he shell')-3.372 F 3.372(sp)-.55 G -.873(urposes, a command which e)-3.372 F .873(xits with a zero e)-.15 F -.873(xit status has succeeded.)-.15 F .873(An e)5.873 F .873 -(xit status of)-.15 F .049(zero indicates success.)108 189.6 R 2.549(An) -5.049 G .049(on-zero e)-2.549 F .049(xit status indicates f)-.15 F 2.549 -(ailure. When)-.1 F 2.549(ac)2.549 G .048(ommand terminates on a f) --2.549 F .048(atal sig-)-.1 F(nal)108 201.6 Q F3(N)2.5 E F0(,)A F1(bash) -2.5 E F0(uses the v)2.5 E(alue of 128+)-.25 E F3(N)A F0(as the e)2.5 E -(xit status.)-.15 E .404 -(If a command is not found, the child process created to e)108 218.4 R --.15(xe)-.15 G .404(cute it returns a status of 127.).15 F .405 -(If a command is)5.405 F(found b)108 230.4 Q(ut is not e)-.2 E -.15(xe) --.15 G(cutable, the return status is 126.).15 E(If a command f)108 247.2 +(Under)5.507 E(certain circumstances, the shell will use special v)108 +506.4 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -.15 +(Fo)108 523.2 S 3.373(rt).15 G .873(he shell')-3.373 F 3.373(sp)-.55 G +.873(urposes, a command which e)-3.373 F .873(xits with a zero e)-.15 F +.873(xit status has succeeded.)-.15 F .872(An e)5.872 F .872 +(xit status of)-.15 F .048(zero indicates success.)108 535.2 R 2.548(An) +5.048 G .049(on-zero e)-2.548 F .049(xit status indicates f)-.15 F 2.549 +(ailure. When)-.1 F 2.549(ac)2.549 G .049(ommand terminates on a f) +-2.549 F .049(atal sig-)-.1 F(nal)108 547.2 Q F2(N)2.5 E F0(,)A F1(bash) +2.5 E F0(uses the v)2.5 E(alue of 128+)-.25 E F2(N)A F0(as the e)2.5 E +(xit status.)-.15 E .405 +(If a command is not found, the child process created to e)108 564 R +-.15(xe)-.15 G .404(cute it returns a status of 127.).15 F .404 +(If a command is)5.404 F(found b)108 576 Q(ut is not e)-.2 E -.15(xe) +-.15 G(cutable, the return status is 126.).15 E(If a command f)108 592.8 Q(ails because of an error during e)-.1 E (xpansion or redirection, the e)-.15 E(xit status is greater than zero.) --.15 E .081(Shell b)108 264 R .081 -(uiltin commands return a status of 0 \()-.2 F F3(true)A F0 2.581(\)i)C -2.581(fs)-2.581 G .08(uccessful, and non-zero \()-2.581 F F3(false)A F0 -2.58(\)i)C 2.58(fa)-2.58 G 2.58(ne)-2.58 G .08(rror occurs while)-2.58 F -(the)108 276 Q 2.967(ye)-.15 G -.15(xe)-3.117 G 2.967(cute. All).15 F --.2(bu)2.967 G .467(iltins return an e).2 F .468 +-.15 E .08(Shell b)108 609.6 R .08 +(uiltin commands return a status of 0 \()-.2 F F2(true)A F0 2.581(\)i)C +2.581(fs)-2.581 G .081(uccessful, and non-zero \()-2.581 F F2(false)A F0 +2.581(\)i)C 2.581(fa)-2.581 G 2.581(ne)-2.581 G .081(rror occurs while) +-2.581 F(the)108 621.6 Q 2.968(ye)-.15 G -.15(xe)-3.118 G 2.968 +(cute. All).15 F -.2(bu)2.968 G .468(iltins return an e).2 F .468 (xit status of 2 to indicate incorrect usage, generally in)-.15 F -.25 -(va)-.4 G .468(lid options or).25 F(missing ar)108 288 Q(guments.)-.18 E -F1(Bash)108 304.8 Q F0 .202(itself returns the e)2.702 F .202 -(xit status of the last command e)-.15 F -.15(xe)-.15 G .201 -(cuted, unless a syntax error occurs, in which case).15 F(it e)108 316.8 +(va)-.4 G .467(lid options or).25 F(missing ar)108 633.6 Q(guments.)-.18 +E(The e)108 650.4 Q(xit status of the last command is a)-.15 E -.25(va) +-.2 G(ilable in the special parameter $?.).25 E F1(Bash)108 667.2 Q F0 +.201(itself returns the e)2.701 F .202(xit status of the last command e) +-.15 F -.15(xe)-.15 G .202 +(cuted, unless a syntax error occurs, in which case).15 F(it e)108 679.2 Q(xits with a non-zero v)-.15 E 2.5(alue. See)-.25 F(also the)2.5 E F1 -(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G F2 -(SIGN)72 333.6 Q(ALS)-.219 E F0(When)108 345.6 Q F1(bash)2.502 E F0 .002 +(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G F3 +(SIGN)72 696 Q(ALS)-.219 E F0(When)108 708 Q F1(bash)2.503 E F0 .002 (is interacti)2.502 F -.15(ve)-.25 G 2.502(,i).15 G 2.502(nt)-2.502 G .002(he absence of an)-2.502 F 2.502(yt)-.15 G .002(raps, it ignores) --2.502 F/F4 9/Times-Bold@0 SF(SIGTERM)2.502 E F0 .002(\(so that)2.252 F -F1 .002(kill 0)2.502 F F0 .002(does not kill an in-)2.502 F(teracti)108 -357.6 Q 1.216 -.15(ve s)-.25 H .916(hell\), and).15 F F4(SIGINT)3.416 E -F0 .915(is caught and handled \(so that the)3.166 F F1(wait)3.415 E F0 --.2(bu)3.415 G .915(iltin is interruptible\).).2 F .915(In all cases,) -5.915 F F1(bash)108 369.6 Q F0(ignores)2.5 E F4(SIGQ)2.5 E(UIT)-.09 E/F5 -9/Times-Roman@0 SF(.)A F0(If job control is in ef)4.5 E(fect,)-.25 E F1 -(bash)2.5 E F0(ignores)2.5 E F4(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU) --.162 E F5(,)A F0(and)2.25 E F4(SIGTSTP)2.5 E F5(.)A F0(Non-b)108 386.4 -Q 1.064(uiltin commands run by)-.2 F F1(bash)3.564 E F0(ha)3.564 E 1.365 --.15(ve s)-.2 H 1.065(ignal handlers set to the v).15 F 1.065 -(alues inherited by the shell from its)-.25 F 3.248(parent. When)108 -398.4 R .748(job control is not in ef)3.248 F .747 -(fect, asynchronous commands ignore)-.25 F F4(SIGINT)3.247 E F0(and) -2.997 E F4(SIGQ)3.247 E(UIT)-.09 E F0 .747(in addi-)2.997 F .652 -(tion to these inherited handlers.)108 410.4 R .653 -(Commands run as a result of command substitution ignore the k)5.652 F --.15(ey)-.1 G(board-).15 E(generated job control signals)108 422.4 Q F4 -(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 E F4 -(SIGTSTP)2.5 E F5(.)A F0 2.046(The shell e)108 439.2 R 2.046 -(xits by def)-.15 F 2.045(ault upon receipt of a)-.1 F F4(SIGHUP)4.545 E -F5(.)A F0 2.045(Before e)6.545 F 2.045(xiting, an interacti)-.15 F 2.345 --.15(ve s)-.25 H 2.045(hell resends the).15 F F4(SIGHUP)108 451.2 Q F0 -1.004(to all jobs, running or stopped.)3.254 F 1.004 -(Stopped jobs are sent)6.004 F F4(SIGCONT)3.505 E F0 1.005 -(to ensure that the)3.255 F 3.505(yr)-.15 G(ecei)-3.505 E 1.305 -.15 -(ve t)-.25 H(he).15 E F4(SIGHUP)108 463.2 Q F5(.)A F0 2.53 -.8(To p)5.43 -H(re).8 E -.15(ve)-.25 G .93(nt the shell from sending the signal to a \ -particular job, it should be remo).15 F -.15(ve)-.15 G 3.429(df).15 G -.929(rom the)-3.429 F 1.356(jobs table with the)108 475.2 R F1(diso) -3.856 E(wn)-.1 E F0 -.2(bu)3.856 G 1.356(iltin \(see).2 F F4 1.356 -(SHELL B)3.856 F(UIL)-.09 E 1.356(TIN COMMANDS)-.828 F F0(belo)3.607 E -1.357(w\) or mark)-.25 F 1.357(ed to not recei)-.1 F -.15(ve)-.25 G F4 -(SIGHUP)108 487.2 Q F0(using)2.25 E F1(diso)2.5 E(wn \255h)-.1 E F0(.)A -.166(If the)108 504 R F1(huponexit)2.666 E F0 .166 +-2.502 F F4(SIGTERM)2.502 E F0 .002(\(so that)2.252 F F1 .002(kill 0) +2.502 F F0 .002(does not kill an in-)2.502 F(teracti)108 720 Q 1.215 +-.15(ve s)-.25 H .915(hell\), and).15 F F4(SIGINT)3.415 E F0 .915 +(is caught and handled \(so that the)3.165 F F1(wait)3.415 E F0 -.2(bu) +3.416 G .916(iltin is interruptible\).).2 F .916(In all cases,)5.916 F +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(38)185.115 E 0 Cg EP +%%Page: 39 39 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(bash)108 84 Q F0(ignores)2.5 E/F2 9/Times-Bold@0 SF(SIGQ)2.5 E(UIT) +-.09 E/F3 9/Times-Roman@0 SF(.)A F0(If job control is in ef)4.5 E(fect,) +-.25 E F1(bash)2.5 E F0(ignores)2.5 E F2(SIGTTIN)2.5 E F3(,)A F2(SIGTT) +2.25 E(OU)-.162 E F3(,)A F0(and)2.25 E F2(SIGTSTP)2.5 E F3(.)A F0(Non-b) +108 100.8 Q 1.065(uiltin commands run by)-.2 F F1(bash)3.565 E F0(ha) +3.565 E 1.365 -.15(ve s)-.2 H 1.065(ignal handlers set to the v).15 F +1.064(alues inherited by the shell from its)-.25 F 3.247(parent. When) +108 112.8 R .747(job control is not in ef)3.247 F .747 +(fect, asynchronous commands ignore)-.25 F F2(SIGINT)3.248 E F0(and) +2.998 E F2(SIGQ)3.248 E(UIT)-.09 E F0 .748(in addi-)2.998 F .653 +(tion to these inherited handlers.)108 124.8 R .653 +(Commands run as a result of command substitution ignore the k)5.653 F +-.15(ey)-.1 G(board-).15 E(generated job control signals)108 136.8 Q F2 +(SIGTTIN)2.5 E F3(,)A F2(SIGTT)2.25 E(OU)-.162 E F3(,)A F0(and)2.25 E F2 +(SIGTSTP)2.5 E F3(.)A F0 2.045(The shell e)108 153.6 R 2.045 +(xits by def)-.15 F 2.045(ault upon receipt of a)-.1 F F2(SIGHUP)4.545 E +F3(.)A F0 2.045(Before e)6.545 F 2.045(xiting, an interacti)-.15 F 2.346 +-.15(ve s)-.25 H 2.046(hell resends the).15 F F2(SIGHUP)108 165.6 Q F0 +1.005(to all jobs, running or stopped.)3.255 F 1.004 +(Stopped jobs are sent)6.005 F F2(SIGCONT)3.504 E F0 1.004 +(to ensure that the)3.254 F 3.504(yr)-.15 G(ecei)-3.504 E 1.304 -.15 +(ve t)-.25 H(he).15 E F2(SIGHUP)108 177.6 Q F3(.)A F0 2.529 -.8(To p) +5.429 H(re).8 E -.15(ve)-.25 G .93(nt the shell from sending the signal\ + to a particular job, it should be remo).15 F -.15(ve)-.15 G 3.43(df).15 +G .93(rom the)-3.43 F 1.357(jobs table with the)108 189.6 R F1(diso) +3.857 E(wn)-.1 E F0 -.2(bu)3.857 G 1.357(iltin \(see).2 F F2 1.356 +(SHELL B)3.856 F(UIL)-.09 E 1.356(TIN COMMANDS)-.828 F F0(belo)3.606 E +1.356(w\) or mark)-.25 F 1.356(ed to not recei)-.1 F -.15(ve)-.25 G F2 +(SIGHUP)108 201.6 Q F0(using)2.25 E F1(diso)2.5 E(wn \255h)-.1 E F0(.)A +.166(If the)108 218.4 R F1(huponexit)2.666 E F0 .166 (shell option has been set with)2.666 F F1(shopt)2.666 E F0(,)A F1(bash) -2.666 E F0 .166(sends a)2.666 F F4(SIGHUP)2.666 E F0 .166 +2.666 E F0 .166(sends a)2.666 F F2(SIGHUP)2.666 E F0 .166 (to all jobs when an interacti)2.416 F -.15(ve)-.25 G(login shell e)108 -516 Q(xits.)-.15 E(If)108 532.8 Q F1(bash)3.046 E F0 .546(is w)3.046 F +230.4 Q(xits.)-.15 E(If)108 247.2 Q F1(bash)3.047 E F0 .547(is w)3.047 F .546(aiting for a command to complete and recei)-.1 F -.15(ve)-.25 G 3.046(sas).15 G .546(ignal for which a trap has been set, the trap) --3.046 F .663(will not be e)108 544.8 R -.15(xe)-.15 G .663 +-3.046 F .662(will not be e)108 259.2 R -.15(xe)-.15 G .662 (cuted until the command completes.).15 F(When)5.663 E F1(bash)3.163 E -F0 .662(is w)3.163 F .662(aiting for an asynchronous command)-.1 F .326 -(via the)108 556.8 R F1(wait)2.826 E F0 -.2(bu)2.826 G .327(iltin, the \ +F0 .663(is w)3.163 F .663(aiting for an asynchronous command)-.1 F .327 +(via the)108 271.2 R F1(wait)2.827 E F0 -.2(bu)2.827 G .327(iltin, the \ reception of a signal for which a trap has been set will cause the).2 F -F1(wait)2.827 E F0 -.2(bu)2.827 G .327(iltin to re-).2 F -(turn immediately with an e)108 568.8 Q +F1(wait)2.826 E F0 -.2(bu)2.826 G .326(iltin to re-).2 F +(turn immediately with an e)108 283.2 Q (xit status greater than 128, immediately after which the trap is e)-.15 -E -.15(xe)-.15 G(cuted.).15 E F2(JOB CONTR)72 585.6 Q(OL)-.329 E F3 -.25 -(Jo)108 597.6 S 3.369(bc).25 G(ontr)-3.369 E(ol)-.45 E F0 .868 -(refers to the ability to selecti)3.879 F -.15(ve)-.25 G .868 -(ly stop \().15 F F3(suspend)A F0 3.368(\)t)C .868(he e)-3.368 F -.15 -(xe)-.15 G .868(cution of processes and continue \().15 F F3 -.37(re)C -(-).37 E(sume)108 609.6 Q F0 2.664(\)t)C .164(heir e)-2.664 F -.15(xe) --.15 G .164(cution at a later point.).15 F 2.665(Au)5.165 G .165 +E -.15(xe)-.15 G(cuted.).15 E .498(When job control is not enabled, and) +108 300 R F1(bash)2.998 E F0 .498(is w)2.998 F .498(aiting for a fore) +-.1 F .499(ground command to complete, the shell re-)-.15 F(cei)108 312 +Q -.15(ve)-.25 G 2.606(sk).15 G -.15(ey)-2.706 G .105 +(board-generated signals such as).15 F F2(SIGINT)2.605 E F0 .105 +(\(usually generated by)2.355 F F1(^C)2.605 E F0 2.605(\)t)C .105 +(hat users commonly intend to)-2.605 F .423(send to that command.)108 +324 R .424(This happens because the shell and the command are in the sa\ +me process group as)5.424 F(the terminal, and)108 336 Q F1(^C)2.5 E F0 +(sends)2.5 E F2(SIGINT)2.5 E F0(to all processes in that process group.) +2.25 E(When)108 352.8 Q F1(bash)3.801 E F0 1.3 +(is running without job control enabled and recei)3.8 F -.15(ve)-.25 G +(s).15 E F2(SIGINT)3.8 E F0 1.3(while w)3.55 F 1.3(aiting for a fore)-.1 +F(ground)-.15 E .809(command, it w)108 364.8 R .809 +(aits until that fore)-.1 F .81 +(ground command terminates and then decides what to do about the)-.15 F +F2(SIG-)3.31 E(INT)108 376.8 Q F3(:)A F0(1.)108 393.6 Q .003 +(If the command terminates due to the)144 393.6 R F2(SIGINT)2.503 E F3 +(,)A F1(bash)2.252 E F0 .002 +(concludes that the user meant to end the entire)2.502 F +(script, and acts on the)144 405.6 Q F2(SIGINT)2.5 E F0 +(\(e.g., by running a)2.25 E F2(SIGINT)2.5 E F0(trap or e)2.25 E +(xiting itself\);)-.15 E(2.)108 422.4 Q .288 +(If the command does not terminate due to)144 422.4 R F2(SIGINT)2.788 E +F3(,)A F0 .288(the program handled the)2.538 F F2(SIGINT)2.789 E F0 .289 +(itself and did)2.539 F .728(not treat it as a f)144 434.4 R .728 +(atal signal.)-.1 F .728(In that case,)5.728 F F1(bash)3.228 E F0 .728 +(does not treat)3.228 F F2(SIGINT)3.228 E F0 .728(as a f)2.978 F .728 +(atal signal, either)-.1 F 3.228(,i)-.4 G(n-)-3.228 E .771 +(stead assuming that the)144 446.4 R F2(SIGINT)3.271 E F0 -.1(wa)3.021 G +3.271(su).1 G .771(sed as part of the program')-3.271 F 3.272(sn)-.55 G +.772(ormal operation \(e.g., emacs)-3.272 F .41 +(uses it to abort editing commands\) or deliberately discarded.)144 +458.4 R(Ho)5.409 E(we)-.25 E -.15(ve)-.25 G -.4(r,).15 G F1(bash)3.309 E +F0 .409(will run an)2.909 F 2.909(yt)-.15 G .409(rap set)-2.909 F(on)144 +470.4 Q F2(SIGINT)3.788 E F3(,)A F0 1.288(as it does with an)3.538 F +3.788(yo)-.15 G 1.288(ther trapped signal it recei)-3.788 F -.15(ve)-.25 +G 3.789(sw).15 G 1.289(hile it is w)-3.789 F 1.289(aiting for the fore-) +-.1 F(ground command to complete, for compatibility)144 482.4 Q(.)-.65 E +/F4 10.95/Times-Bold@0 SF(JOB CONTR)72 499.2 Q(OL)-.329 E/F5 10 +/Times-Italic@0 SF -.25(Jo)108 511.2 S 3.369(bc).25 G(ontr)-3.369 E(ol) +-.45 E F0 .868(refers to the ability to selecti)3.879 F -.15(ve)-.25 G +.868(ly stop \().15 F F5(suspend)A F0 3.368(\)t)C .868(he e)-3.368 F +-.15(xe)-.15 G .868(cution of processes and continue \().15 F F5 -.37 +(re)C(-).37 E(sume)108 523.2 Q F0 2.664(\)t)C .164(heir e)-2.664 F -.15 +(xe)-.15 G .164(cution at a later point.).15 F 2.665(Au)5.165 G .165 (ser typically emplo)-2.665 F .165(ys this f)-.1 F .165 (acility via an interacti)-.1 F .465 -.15(ve i)-.25 H(nterf).15 E .165 -(ace sup-)-.1 F(plied jointly by the operating system k)108 621.6 Q +(ace sup-)-.1 F(plied jointly by the operating system k)108 535.2 Q (ernel')-.1 E 2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15 -G(nd)-2.5 E F1(bash)2.5 E F0(.)A .785(The shell associates a)108 638.4 R -F3(job)5.025 E F0 .785(with each pipeline.)3.515 F .784(It k)5.785 F +G(nd)-2.5 E F1(bash)2.5 E F0(.)A .785(The shell associates a)108 552 R +F5(job)5.025 E F0 .785(with each pipeline.)3.515 F .784(It k)5.785 F .784(eeps a table of currently e)-.1 F -.15(xe)-.15 G .784 -(cuting jobs, which may be).15 F .324(listed with the)108 650.4 R F1 -(jobs)2.824 E F0 2.824(command. When)2.824 F F1(bash)2.825 E F0 .325 -(starts a job asynchronously \(in the)2.825 F F3(bac)3.095 E(kgr)-.2 E -(ound)-.45 E F0 .325(\), it prints a line).77 F(that looks lik)108 662.4 -Q(e:)-.1 E([1] 25647)144 679.2 Q .241(indicating that this job is job n\ -umber 1 and that the process ID of the last process in the pipeline ass\ -ociated)108 696 R .732(with this job is 25647.)108 708 R .733 +(cuting jobs, which may be).15 F .324(listed with the)108 564 R F1(jobs) +2.824 E F0 2.824(command. When)2.824 F F1(bash)2.825 E F0 .325 +(starts a job asynchronously \(in the)2.825 F F5(bac)3.095 E(kgr)-.2 E +(ound)-.45 E F0 .325(\), it prints a line).77 F(that looks lik)108 576 Q +(e:)-.1 E([1] 25647)144 592.8 Q .241(indicating that this job is job nu\ +mber 1 and that the process ID of the last process in the pipeline asso\ +ciated)108 609.6 R .732(with this job is 25647.)108 621.6 R .733 (All of the processes in a single pipeline are members of the same job) -5.732 F(.)-.4 E F1(Bash)5.733 E F0(uses)3.233 E(the)108 720 Q F3(job) -4.24 E F0(abstraction as the basis for job control.)2.73 E(GNU Bash 5.1) -72 768 Q(2020 October 29)141.235 E(37)190.395 E 0 Cg EP -%%Page: 38 38 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.982 -.8(To f)108 -84 T .382(acilitate the implementation of the user interf).7 F .382 -(ace to job control, the operating system maintains the no-)-.1 F 1.537 -(tion of a)108 96 R/F1 10/Times-Italic@0 SF(curr)4.037 E 1.537 -(ent terminal pr)-.37 F 1.537(ocess gr)-.45 F 1.537(oup ID)-.45 F F0 -6.537(.M)C 1.538(embers of this process group \(processes whose process) --6.537 F .023 +5.732 F(.)-.4 E F1(Bash)5.733 E F0(uses)3.233 E(the)108 633.6 Q F5(job) +4.24 E F0(abstraction as the basis for job control.)2.73 E 1.982 -.8 +(To f)108 650.4 T .382(acilitate the implementation of the user interf) +.7 F .382(ace to job control, the operating system maintains the no-)-.1 +F 1.537(tion of a)108 662.4 R F5(curr)4.037 E 1.537(ent terminal pr)-.37 +F 1.537(ocess gr)-.45 F 1.537(oup ID)-.45 F F0 6.537(.M)C 1.538 +(embers of this process group \(processes whose process)-6.537 F .023 (group ID is equal to the current terminal process group ID\) recei)108 -108 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 -(board-generated signals such as).15 F/F2 9/Times-Bold@0 SF(SIG-)2.522 E -(INT)108 120 Q/F3 9/Times-Roman@0 SF(.)A F0 1.215 -(These processes are said to be in the)5.715 F F1(for)5.685 E -.4(eg) --.37 G -.45(ro).4 G(und).45 E F0(.).77 E F1(Bac)6.795 E(kgr)-.2 E(ound) --.45 E F0 1.216(processes are those whose process)4.485 F .146 -(group ID dif)108 132 R .146(fers from the terminal')-.25 F .146 +674.4 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 +(board-generated signals such as).15 F F2(SIG-)2.522 E(INT)108 686.4 Q +F3(.)A F0 1.215(These processes are said to be in the)5.715 F F5(for) +5.685 E -.4(eg)-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F5(Bac)6.795 E +(kgr)-.2 E(ound)-.45 E F0 1.216(processes are those whose process)4.485 +F .146(group ID dif)108 698.4 R .146(fers from the terminal')-.25 F .146 (s; such processes are immune to k)-.55 F -.15(ey)-.1 G .145 (board-generated signals.).15 F .145(Only fore-)5.145 F .16 -(ground processes are allo)108 144 R .16(wed to read from or)-.25 F 2.66 -(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F4 10 -/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter) --2.66 F(-)-.2 E 3.052(minal. Background)108 156 R .551 -(processes which attempt to read from \(write to when)3.052 F F4 .551 +(ground processes are allo)108 710.4 R .16(wed to read from or)-.25 F +2.66(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F6 +10/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter) +-2.66 F(-)-.2 E 3.052(minal. Background)108 722.4 R .551 +(processes which attempt to read from \(write to when)3.052 F F6 .551 (stty tostop)3.051 F F0 .551(is in ef)3.051 F .551(fect\) the)-.25 F -.717(terminal are sent a)108 168 R F2 .717(SIGTTIN \(SIGTT)3.217 F(OU\)) --.162 E F0 .718(signal by the k)2.967 F(ernel')-.1 E 3.218(st)-.55 G -.718(erminal dri)-3.218 F -.15(ve)-.25 G 1.518 -.4(r, w).15 H .718 -(hich, unless caught, sus-).4 F(pends the process.)108 180 Q 1.088 -(If the operating system on which)108 196.8 R/F5 10/Times-Bold@0 SF -(bash)3.588 E F0 1.088(is running supports job control,)3.588 F F5(bash) +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(39)185.115 E 0 Cg EP +%%Page: 40 40 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .717 +(terminal are sent a)108 84 R/F1 9/Times-Bold@0 SF .717(SIGTTIN \(SIGTT) +3.217 F(OU\))-.162 E F0 .718(signal by the k)2.967 F(ernel')-.1 E 3.218 +(st)-.55 G .718(erminal dri)-3.218 F -.15(ve)-.25 G 1.518 -.4(r, w).15 H +.718(hich, unless caught, sus-).4 F(pends the process.)108 96 Q 1.088 +(If the operating system on which)108 112.8 R/F2 10/Times-Bold@0 SF +(bash)3.588 E F0 1.088(is running supports job control,)3.588 F F2(bash) 3.587 E F0 1.087(contains f)3.587 F 1.087(acilities to use it.)-.1 F -.8 -(Ty)108 208.8 S .301(ping the).8 F F1(suspend)3.141 E F0 .301 -(character \(typically)3.571 F F5(^Z)2.801 E F0 2.801(,C)C .301 +(Ty)108 124.8 S .301(ping the).8 F/F3 10/Times-Italic@0 SF(suspend)3.141 +E F0 .301(character \(typically)3.571 F F2(^Z)2.801 E F0 2.801(,C)C .301 (ontrol-Z\) while a process is running causes that process to be)-2.801 -F 2.143(stopped and returns control to)108 220.8 R F5(bash)4.642 E F0 -7.142(.T)C 2.142(yping the)-7.942 F F1 2.142(delayed suspend)4.992 F F0 -2.142(character \(typically)5.412 F F5(^Y)4.642 E F0 4.642(,C)C +F 2.143(stopped and returns control to)108 136.8 R F2(bash)4.642 E F0 +7.142(.T)C 2.142(yping the)-7.942 F F3 2.142(delayed suspend)4.992 F F0 +2.142(character \(typically)5.412 F F2(^Y)4.642 E F0 4.642(,C)C (ontrol-Y\))-4.642 E .021(causes the process to be stopped when it atte\ mpts to read input from the terminal, and control to be returned)108 -232.8 R(to)108 244.8 Q F5(bash)3.392 E F0 5.892(.T)C .892 +148.8 R(to)108 160.8 Q F2(bash)3.392 E F0 5.892(.T)C .892 (he user may then manipulate the state of this job, using the)-5.892 F -F5(bg)3.392 E F0 .892(command to continue it in the)3.392 F .17 -(background, the)108 256.8 R F5(fg)2.67 E F0 .17 -(command to continue it in the fore)2.67 F .17(ground, or the)-.15 F F5 -(kill)2.67 E F0 .17(command to kill it.)2.67 F(A)5.17 E F5(^Z)2.67 E F0 -(tak)2.67 E .17(es ef-)-.1 F 1.419(fect immediately)108 268.8 R 3.919 +F2(bg)3.392 E F0 .892(command to continue it in the)3.392 F .17 +(background, the)108 172.8 R F2(fg)2.67 E F0 .17 +(command to continue it in the fore)2.67 F .17(ground, or the)-.15 F F2 +(kill)2.67 E F0 .17(command to kill it.)2.67 F(A)5.17 E F2(^Z)2.67 E F0 +(tak)2.67 E .17(es ef-)-.1 F 1.419(fect immediately)108 184.8 R 3.919 (,a)-.65 G 1.418(nd has the additional side ef)-3.919 F 1.418 (fect of causing pending output and typeahead to be dis-)-.25 F(carded.) -108 280.8 Q .777(There are a number of w)108 297.6 R .777 -(ays to refer to a job in the shell.)-.1 F .777(The character)5.777 F F5 -(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 309.6 -Q F1(jobspec)A F0 3.458(\). Job)B(number)3.458 E F1(n)3.818 E F0 .957 -(may be referred to as)3.697 F F5(%n)3.457 E F0 5.957(.A)C .957 +108 196.8 Q .777(There are a number of w)108 213.6 R .777 +(ays to refer to a job in the shell.)-.1 F .777(The character)5.777 F F2 +(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 225.6 +Q F3(jobspec)A F0 3.458(\). Job)B(number)3.458 E F3(n)3.818 E F0 .957 +(may be referred to as)3.697 F F2(%n)3.457 E F0 5.957(.A)C .957 (job may also be referred to using a pre\214x of the)-2.5 F .59(name us\ ed to start it, or using a substring that appears in its command line.) -108 321.6 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F5(%ce)3.09 E +108 237.6 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F2(%ce)3.09 E F0 .59(refers to a)3.09 F .385(stopped job whose command name be)108 -333.6 R .385(gins with)-.15 F F5(ce)2.885 E F0 5.385(.I)C 2.885(fap) --5.385 G .385(re\214x matches more than one job,)-2.885 F F5(bash)2.885 -E F0 .385(reports an)2.885 F(error)108 345.6 Q 5.194(.U)-.55 G(sing) --5.194 E F5(%?ce)2.694 E F0 2.694(,o)C 2.694(nt)-2.694 G .194 +249.6 R .385(gins with)-.15 F F2(ce)2.885 E F0 5.385(.I)C 2.885(fap) +-5.385 G .385(re\214x matches more than one job,)-2.885 F F2(bash)2.885 +E F0 .385(reports an)2.885 F(error)108 261.6 Q 5.194(.U)-.55 G(sing) +-5.194 E F2(%?ce)2.694 E F0 2.694(,o)C 2.694(nt)-2.694 G .194 (he other hand, refers to an)-2.694 F 2.694(yj)-.15 G .194 -(ob containing the string)-2.694 F F5(ce)2.694 E F0 .194 +(ob containing the string)-2.694 F F2(ce)2.694 E F0 .194 (in its command line.)2.694 F .194(If the)5.194 F .306 -(substring matches more than one job,)108 357.6 R F5(bash)2.806 E F0 +(substring matches more than one job,)108 273.6 R F2(bash)2.806 E F0 .306(reports an error)2.806 F 5.306(.T)-.55 G .306(he symbols)-5.306 F -F5(%%)2.806 E F0(and)2.806 E F5(%+)2.806 E F0 .306(refer to the shell') -2.806 F(s)-.55 E .132(notion of the)108 369.6 R F1(curr)2.832 E .133 +F2(%%)2.806 E F0(and)2.806 E F2(%+)2.806 E F0 .306(refer to the shell') +2.806 F(s)-.55 E .132(notion of the)108 285.6 R F3(curr)2.832 E .133 (ent job)-.37 F F0 2.633(,w).23 G .133 (hich is the last job stopped while it w)-2.633 F .133(as in the fore) -.1 F .133(ground or started in the back-)-.15 F 2.576(ground. The)108 -381.6 R F1(pr)3.826 E -.15(ev)-.37 G .076(ious job).15 F F0 .076 -(may be referenced using)2.806 F F5<25ad>2.576 E F0 5.076(.I)C 2.576(ft) --5.076 G .075(here is only a single job,)-2.576 F F5(%+)2.575 E F0(and) -2.575 E F5<25ad>2.575 E F0 .075(can both)2.575 F .317 -(be used to refer to that job)108 393.6 R 5.317(.I)-.4 G 2.817(no)-5.317 -G .317(utput pertaining to jobs \(e.g., the output of the)-2.817 F F5 +297.6 R F3(pr)3.826 E -.15(ev)-.37 G .076(ious job).15 F F0 .076 +(may be referenced using)2.806 F F2<25ad>2.576 E F0 5.076(.I)C 2.576(ft) +-5.076 G .075(here is only a single job,)-2.576 F F2(%+)2.575 E F0(and) +2.575 E F2<25ad>2.575 E F0 .075(can both)2.575 F .317 +(be used to refer to that job)108 309.6 R 5.317(.I)-.4 G 2.817(no)-5.317 +G .317(utput pertaining to jobs \(e.g., the output of the)-2.817 F F2 (jobs)2.817 E F0 .317(command\), the current)2.817 F .033(job is al)108 -405.6 R -.1(wa)-.1 G .033(ys \215agged with a).1 F F5(+)2.533 E F0 2.533 -(,a)C .033(nd the pre)-2.533 F .033(vious job with a)-.25 F F52.533 +321.6 R -.1(wa)-.1 G .033(ys \215agged with a).1 F F2(+)2.533 E F0 2.533 +(,a)C .033(nd the pre)-2.533 F .033(vious job with a)-.25 F F22.533 E F0 5.033(.A)C .033(single % \(with no accompan)-2.5 F .032 (ying job speci-)-.15 F(\214cation\) also refers to the current job)108 -417.6 Q(.)-.4 E .443 -(Simply naming a job can be used to bring it into the fore)108 434.4 R -(ground:)-.15 E F5(%1)2.944 E F0 .444(is a synon)2.944 F .444(ym for) --.15 F F5 -.63(``)2.944 G .444(fg %1').63 F(')-.63 E F0 2.944(,b)C +333.6 Q(.)-.4 E .443 +(Simply naming a job can be used to bring it into the fore)108 350.4 R +(ground:)-.15 E F2(%1)2.944 E F0 .444(is a synon)2.944 F .444(ym for) +-.15 F F2 -.63(``)2.944 G .444(fg %1').63 F(')-.63 E F0 2.944(,b)C (ringing)-2.944 E 1.473(job 1 from the background into the fore)108 -446.4 R 3.973(ground. Similarly)-.15 F(,)-.65 E F5 -.63(``)3.972 G 1.472 +362.4 R 3.973(ground. Similarly)-.15 F(,)-.65 E F2 -.63(``)3.972 G 1.472 (%1 &').63 F(')-.63 E F0 1.472(resumes job 1 in the background,)3.972 F -(equi)108 458.4 Q -.25(va)-.25 G(lent to).25 E F5 -.63(``)2.5 G(bg %1') -.63 E(')-.63 E F0(.)A .13(The shell learns immediately whene)108 475.2 R +(equi)108 374.4 Q -.25(va)-.25 G(lent to).25 E F2 -.63(``)2.5 G(bg %1') +.63 E(')-.63 E F0(.)A .13(The shell learns immediately whene)108 391.2 R -.15(ve)-.25 G 2.63(raj).15 G .13(ob changes state.)-2.63 F(Normally) -5.131 E(,)-.65 E F5(bash)2.631 E F0 -.1(wa)2.631 G .131 +5.131 E(,)-.65 E F2(bash)2.631 E F0 -.1(wa)2.631 G .131 (its until it is about to print a).1 F .158 -(prompt before reporting changes in a job')108 487.2 R 2.658(ss)-.55 G +(prompt before reporting changes in a job')108 403.2 R 2.658(ss)-.55 G .158(tatus so as to not interrupt an)-2.658 F 2.657(yo)-.15 G .157 -(ther output.)-2.657 F .157(If the)5.157 F F52.657 E F0 .157 -(option to)2.657 F(the)108 499.2 Q F5(set)2.647 E F0 -.2(bu)2.647 G .147 -(iltin command is enabled,).2 F F5(bash)2.647 E F0 .148 +(ther output.)-2.657 F .157(If the)5.157 F F22.657 E F0 .157 +(option to)2.657 F(the)108 415.2 Q F2(set)2.647 E F0 -.2(bu)2.647 G .147 +(iltin command is enabled,).2 F F2(bash)2.647 E F0 .148 (reports such changes immediately)2.648 F 5.148(.A)-.65 G .448 -.15 -(ny t)-5.148 H .148(rap on).15 F F2(SIGCHLD)2.648 E F0 .148(is e)2.398 F --.15(xe)-.15 G(-).15 E(cuted for each child that e)108 511.2 Q(xits.) --.15 E .033(If an attempt to e)108 528 R(xit)-.15 E F5(bash)2.533 E F0 +(ny t)-5.148 H .148(rap on).15 F F1(SIGCHLD)2.648 E F0 .148(is e)2.398 F +-.15(xe)-.15 G(-).15 E(cuted for each child that e)108 427.2 Q(xits.) +-.15 E .033(If an attempt to e)108 444 R(xit)-.15 E F2(bash)2.533 E F0 .033(is made while jobs are stopped \(or)2.533 F 2.532(,i)-.4 G 2.532 -(ft)-2.532 G(he)-2.532 E F5(checkjobs)2.532 E F0 .032 -(shell option has been enabled)2.532 F 1.002(using the)108 540 R F5 +(ft)-2.532 G(he)-2.532 E F2(checkjobs)2.532 E F0 .032 +(shell option has been enabled)2.532 F 1.002(using the)108 456 R F2 (shopt)3.502 E F0 -.2(bu)3.502 G 1.002 (iltin, running\), the shell prints a w).2 F 1.002 -(arning message, and, if the)-.1 F F5(checkjobs)3.503 E F0 1.003 +(arning message, and, if the)-.1 F F2(checkjobs)3.503 E F0 1.003 (option is en-)3.503 F .956(abled, lists the jobs and their statuses.) -108 552 R(The)5.955 E F5(jobs)3.455 E F0 .955 +108 468 R(The)5.955 E F2(jobs)3.455 E F0 .955 (command may then be used to inspect their status.)3.455 F .955(If a) -5.955 F .603(second attempt to e)108 564 R .604 +5.955 F .603(second attempt to e)108 480 R .604 (xit is made without an interv)-.15 F .604 (ening command, the shell does not print another w)-.15 F(arning,)-.1 E -(and an)108 576 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E .645 -(When the shell is w)108 592.8 R .645 -(aiting for a job or process using the)-.1 F F5(wait)3.144 E F0 -.2(bu) -3.144 G .644(iltin, and job control is enabled,).2 F F5(wait)3.144 E F0 -(will)3.144 E .282(return when the job changes state. The)108 604.8 R F5 -2.782 E F0 .282(option causes)2.782 F F5(wait)2.782 E F0 .282 +(and an)108 492 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E .645 +(When the shell is w)108 508.8 R .645 +(aiting for a job or process using the)-.1 F F2(wait)3.144 E F0 -.2(bu) +3.144 G .644(iltin, and job control is enabled,).2 F F2(wait)3.144 E F0 +(will)3.144 E .282(return when the job changes state. The)108 520.8 R F2 +2.782 E F0 .282(option causes)2.782 F F2(wait)2.782 E F0 .282 (to w)2.782 F .282(ait until the job or process terminates be-)-.1 F -(fore returning.)108 616.8 Q/F6 10.95/Times-Bold@0 SF(PR)72 633.6 Q -(OMPTING)-.329 E F0 .645(When e)108 645.6 R -.15(xe)-.15 G .645 -(cuting interacti).15 F -.15(ve)-.25 G(ly).15 E(,)-.65 E F5(bash)3.145 E -F0 .645(displays the primary prompt)3.145 F F2(PS1)3.145 E F0 .645 +(fore returning.)108 532.8 Q/F4 10.95/Times-Bold@0 SF(PR)72 549.6 Q +(OMPTING)-.329 E F0 .645(When e)108 561.6 R -.15(xe)-.15 G .645 +(cuting interacti).15 F -.15(ve)-.25 G(ly).15 E(,)-.65 E F2(bash)3.145 E +F0 .645(displays the primary prompt)3.145 F F1(PS1)3.145 E F0 .645 (when it is ready to read a command,)2.895 F .427 -(and the secondary prompt)108 657.6 R F2(PS2)2.927 E F0 .427 -(when it needs more input to complete a command.)2.677 F F5(Bash)5.428 E -F0(displays)2.928 E F2(PS0)2.928 E F0(after)2.678 E .038 -(it reads a command b)108 669.6 R .038(ut before e)-.2 F -.15(xe)-.15 G -.038(cuting it.).15 F F5(Bash)5.038 E F0(displays)2.537 E F2(PS4)2.537 E +(and the secondary prompt)108 573.6 R F1(PS2)2.927 E F0 .427 +(when it needs more input to complete a command.)2.677 F F2(Bash)5.428 E +F0(displays)2.928 E F1(PS0)2.928 E F0(after)2.678 E .038 +(it reads a command b)108 585.6 R .038(ut before e)-.2 F -.15(xe)-.15 G +.038(cuting it.).15 F F2(Bash)5.038 E F0(displays)2.537 E F1(PS4)2.537 E F0 .037(as described abo)2.287 F .337 -.15(ve b)-.15 H .037 -(efore tracing each com-).15 F 1.121(mand when the)108 681.6 R F5 -3.621 E F0 1.122(option is enabled.)3.621 F F5(Bash)6.122 E F0(allo) +(efore tracing each com-).15 F 1.121(mand when the)108 597.6 R F2 +3.621 E F0 1.122(option is enabled.)3.621 F F2(Bash)6.122 E F0(allo) 3.622 E 1.122(ws these prompt strings to be customized by inserting a) -.25 F(number of backslash-escaped special characters that are decoded \ -as follo)108 693.6 Q(ws:)-.25 E F5(\\a)144 705.6 Q F0 -(an ASCII bell character \(07\))180 705.6 Q F5(\\d)144 717.6 Q F0 -(the date in "W)180 717.6 Q(eekday Month Date" format \(e.g., "T)-.8 E -(ue May 26"\))-.45 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(38) -190.395 E 0 Cg EP -%%Page: 39 39 +as follo)108 609.6 Q(ws:)-.25 E F2(\\a)144 621.6 Q F0 +(an ASCII bell character \(07\))180 621.6 Q F2(\\d)144 633.6 Q F0 +(the date in "W)180 633.6 Q(eekday Month Date" format \(e.g., "T)-.8 E +(ue May 26"\))-.45 E F2(\\D{)144 645.6 Q F3(format)A F2(})A F0(the)180 +657.6 Q F3(format)3.927 E F0 1.427(is passed to)3.927 F F3(strftime) +3.927 E F0 1.427 +(\(3\) and the result is inserted into the prompt string; an)B(empty)180 +669.6 Q F3(format)2.5 E F0 +(results in a locale-speci\214c time representation.)2.5 E +(The braces are required)5 E F2(\\e)144 681.6 Q F0 +(an ASCII escape character \(033\))180 681.6 Q F2(\\h)144 693.6 Q F0 +(the hostname up to the \214rst `.)180 693.6 Q(')-.7 E F2(\\H)144 705.6 +Q F0(the hostname)180 705.6 Q F2(\\j)144 717.6 Q F0 +(the number of jobs currently managed by the shell)180 717.6 Q +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(40)185.115 E 0 Cg EP +%%Page: 41 41 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(\\D{)144 84 Q/F2 10/Times-Italic@0 SF(format)A F1(})A F0(the)180 96 Q -F2(format)3.927 E F0 1.427(is passed to)3.927 F F2(strftime)3.927 E F0 -1.427(\(3\) and the result is inserted into the prompt string; an)B -(empty)180 108 Q F2(format)2.5 E F0 -(results in a locale-speci\214c time representation.)2.5 E -(The braces are required)5 E F1(\\e)144 120 Q F0 -(an ASCII escape character \(033\))180 120 Q F1(\\h)144 132 Q F0 -(the hostname up to the \214rst `.)180 132 Q(')-.7 E F1(\\H)144 144 Q F0 -(the hostname)180 144 Q F1(\\j)144 156 Q F0 -(the number of jobs currently managed by the shell)180 156 Q F1(\\l)144 -168 Q F0(the basename of the shell')180 168 Q 2.5(st)-.55 G(erminal de) --2.5 E(vice name)-.25 E F1(\\n)144 180 Q F0(ne)180 180 Q(wline)-.25 E F1 -(\\r)144 192 Q F0(carriage return)180 192 Q F1(\\s)144 204 Q F0 -(the name of the shell, the basename of)180 204 Q F1($0)2.5 E F0 +SF(\\l)144 84 Q F0(the basename of the shell')180 84 Q 2.5(st)-.55 G +(erminal de)-2.5 E(vice name)-.25 E F1(\\n)144 96 Q F0(ne)180 96 Q +(wline)-.25 E F1(\\r)144 108 Q F0(carriage return)180 108 Q F1(\\s)144 +120 Q F0(the name of the shell, the basename of)180 120 Q F1($0)2.5 E F0 (\(the portion follo)2.5 E(wing the \214nal slash\))-.25 E F1(\\t)144 -216 Q F0(the current time in 24-hour HH:MM:SS format)180 216 Q F1(\\T) -144 228 Q F0(the current time in 12-hour HH:MM:SS format)180 228 Q F1 -(\\@)144 240 Q F0(the current time in 12-hour am/pm format)180 240 Q F1 -(\\A)144 252 Q F0(the current time in 24-hour HH:MM format)180 252 Q F1 -(\\u)144 264 Q F0(the username of the current user)180 264 Q F1(\\v)144 -276 Q F0(the v)180 276 Q(ersion of)-.15 E F1(bash)2.5 E F0 -(\(e.g., 2.00\))2.5 E F1(\\V)144 288 Q F0(the release of)180 288 Q F1 +132 Q F0(the current time in 24-hour HH:MM:SS format)180 132 Q F1(\\T) +144 144 Q F0(the current time in 12-hour HH:MM:SS format)180 144 Q F1 +(\\@)144 156 Q F0(the current time in 12-hour am/pm format)180 156 Q F1 +(\\A)144 168 Q F0(the current time in 24-hour HH:MM format)180 168 Q F1 +(\\u)144 180 Q F0(the username of the current user)180 180 Q F1(\\v)144 +192 Q F0(the v)180 192 Q(ersion of)-.15 E F1(bash)2.5 E F0 +(\(e.g., 2.00\))2.5 E F1(\\V)144 204 Q F0(the release of)180 204 Q F1 (bash)2.5 E F0 2.5(,v)C(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5 -(l\().15 G(e.g., 2.00.0\))-2.5 E F1(\\w)144 300 Q F0 .115(the current w) -180 300 R .115(orking directory)-.1 F 2.615(,w)-.65 G(ith)-2.615 E/F3 9 -/Times-Bold@0 SF($HOME)2.615 E F0(abbre)2.365 E .116 -(viated with a tilde \(uses the v)-.25 F .116(alue of the)-.25 F F3(PR) -180 312 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 -.25(va)2.25 G(riable\)).25 E -F1(\\W)144 324 Q F0(the basename of the current w)180 324 Q -(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F3($HOME)2.5 E F0 -(abbre)2.25 E(viated with a tilde)-.25 E F1(\\!)144 336 Q F0 -(the history number of this command)180 336 Q F1(\\#)144 348 Q F0 -(the command number of this command)180 348 Q F1(\\$)144 360 Q F0 -(if the ef)180 360 Q(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a).15 E -F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 372 Q F2(nnn) -A F0(the character corresponding to the octal number)180 372 Q F2(nnn) -2.5 E F1(\\\\)144 384 Q F0 2.5(ab)180 384 S(ackslash)-2.5 E F1(\\[)144 -396 Q F0(be)180 396 Q 1.257(gin a sequence of non-printing characters, \ -which could be used to embed a terminal)-.15 F -(control sequence into the prompt)180 408 Q F1(\\])144 420 Q F0 -(end a sequence of non-printing characters)180 420 Q .119 -(The command number and the history number are usually dif)108 436.8 R +(l\().15 G(e.g., 2.00.0\))-2.5 E F1(\\w)144 216 Q F0 .119(the v)180 216 +R .119(alue of the)-.25 F F1(PWD)2.619 E F0 .119(shell v)2.619 F .119 +(ariable \()-.25 F F1($PWD)A F0 .119(\), with)B/F2 9/Times-Bold@0 SF +($HOME)2.619 E F0(abbre)2.369 E .119(viated with a tilde \(uses)-.25 F +(the v)180 228 Q(alue of the)-.25 E F2(PR)2.5 E(OMPT_DIR)-.27 E(TRIM) +-.36 E F0 -.25(va)2.25 G(riable\)).25 E F1(\\W)144 240 Q F0 +(the basename of)180 240 Q F1($PWD)2.5 E F0 2.5(,w)C(ith)-2.5 E F2 +($HOME)2.5 E F0(abbre)2.25 E(viated with a tilde)-.25 E F1(\\!)144 252 Q +F0(the history number of this command)180 252 Q F1(\\#)144 264 Q F0 +(the command number of this command)180 264 Q F1(\\$)144 276 Q F0 +(if the ef)180 276 Q(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a).15 E +F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 288 Q/F3 10 +/Times-Italic@0 SF(nnn)A F0 +(the character corresponding to the octal number)180 288 Q F3(nnn)2.5 E +F1(\\\\)144 300 Q F0 2.5(ab)180 300 S(ackslash)-2.5 E F1(\\[)144 312 Q +F0(be)180 312 Q 1.257(gin a sequence of non-printing characters, which \ +could be used to embed a terminal)-.15 F +(control sequence into the prompt)180 324 Q F1(\\])144 336 Q F0 +(end a sequence of non-printing characters)180 336 Q .119 +(The command number and the history number are usually dif)108 352.8 R .12(ferent: the history number of a command is its)-.25 F .547(position\ in the history list, which may include commands restored from the hist\ -ory \214le \(see)108 448.8 R F3(HIST)3.046 E(OR)-.162 E(Y)-.315 E F0 -(be-)2.796 E(lo)108 460.8 Q .354(w\), while the command number is the p\ +ory \214le \(see)108 364.8 R F2(HIST)3.046 E(OR)-.162 E(Y)-.315 E F0 +(be-)2.796 E(lo)108 376.8 Q .354(w\), while the command number is the p\ osition in the sequence of commands e)-.25 F -.15(xe)-.15 G .355 -(cuted during the current).15 F .823(shell session.)108 472.8 R .822 +(cuted during the current).15 F .823(shell session.)108 388.8 R .822 (After the string is decoded, it is e)5.823 F .822 (xpanded via parameter e)-.15 F .822(xpansion, command substitution,) --.15 F .682(arithmetic e)108 484.8 R .682(xpansion, and quote remo)-.15 +-.15 F .682(arithmetic e)108 400.8 R .682(xpansion, and quote remo)-.15 F -.25(va)-.15 G .682(l, subject to the v).25 F .683(alue of the)-.25 F F1(pr)3.183 E(omptv)-.18 E(ars)-.1 E F0 .683(shell option \(see the de-) -3.183 F 1.198(scription of the)108 496.8 R F1(shopt)3.698 E F0 1.198 -(command under)3.698 F F3 1.197(SHELL B)3.697 F(UIL)-.09 E 1.197 +3.183 F 1.198(scription of the)108 412.8 R F1(shopt)3.698 E F0 1.198 +(command under)3.698 F F2 1.197(SHELL B)3.697 F(UIL)-.09 E 1.197 (TIN COMMANDS)-.828 F F0(belo)3.447 E 3.697(w\). This)-.25 F 1.197 (can ha)3.697 F 1.497 -.15(ve u)-.2 H(nw).15 E(anted)-.1 E .322(side ef) -108 508.8 R .322(fects if escaped portions of the string appear within \ +108 424.8 R .322(fects if escaped portions of the string appear within \ command substitution or contain characters spe-)-.25 F(cial to w)108 -520.8 Q(ord e)-.1 E(xpansion.)-.15 E/F4 10.95/Times-Bold@0 SF(READLINE) -72 537.6 Q F0 .151 +436.8 Q(ord e)-.1 E(xpansion.)-.15 E/F4 10.95/Times-Bold@0 SF(READLINE) +72 453.6 Q F0 .151 (This is the library that handles reading input when using an interacti) -108 549.6 R .45 -.15(ve s)-.25 H .15(hell, unless the).15 F F1 -(\255\255noediting)2.65 E F0(option)2.65 E .384(is gi)108 561.6 R -.15 +108 465.6 R .45 -.15(ve s)-.25 H .15(hell, unless the).15 F F1 +(\255\255noediting)2.65 E F0(option)2.65 E .384(is gi)108 477.6 R -.15 (ve)-.25 G 2.884(na).15 G 2.884(ts)-2.884 G .384(hell in)-2.884 F -.2 (vo)-.4 G 2.884(cation. Line).2 F .384 (editing is also used when using the)2.884 F F12.885 E F0 .385 (option to the)2.885 F F1 -.18(re)2.885 G(ad).18 E F0 -.2(bu)2.885 G -2.885(iltin. By).2 F(de-)2.885 E -.1(fa)108 573.6 S 1.407 +2.885(iltin. By).2 F(de-)2.885 E -.1(fa)108 489.6 S 1.407 (ult, the line editing commands are similar to those of Emacs.).1 F 3.906(Av)6.406 G 1.406(i-style line editing interf)-3.906 F 1.406 -(ace is also)-.1 F -.2(av)108 585.6 S 3.35(ailable. Line)-.05 F .85 +(ace is also)-.1 F -.2(av)108 501.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 -(\(see)108 597.6 Q F3 .763(SHELL B)3.263 F(UIL)-.09 E .763(TIN COMMANDS) +(\(see)108 513.6 Q F2 .763(SHELL B)3.263 F(UIL)-.09 E .763(TIN COMMANDS) -.828 F F0(belo)3.013 E 3.263(w\). T)-.25 F 3.263(ot)-.8 G .763(urn of) -3.263 F 3.263(fl)-.25 G .763 (ine editing after the shell is running, use the)-3.263 F F1(+o)3.262 E -(emacs)108 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 +(emacs)108 525.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 542.4 Q 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.153(e.g., C\255n means Control\255N.)108 650.4 R(Similarly)6.153 E(,) --.65 E F2(meta)4.033 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.652(,s)C 3.652(oM)-3.652 G 1.152 -(\255x means Meta\255X.)-3.652 F(\(On)6.152 E -.1(ke)108 662.4 S .83 -(yboards without a)-.05 F F2(meta)3.71 E F0 -.1(ke)3.59 G 2.13 -.65 -(y, M)-.05 H.65 E F2(x)A F0 .83(means ESC)3.33 F F2(x)3.33 E F0 3.33 +108 554.4 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke) +2.963 G .463(ys are denoted by C\255)-.05 F F3 -.1(ke)C(y)-.2 E F0(,)A +1.153(e.g., C\255n means Control\255N.)108 566.4 R(Similarly)6.153 E(,) +-.65 E F3(meta)4.033 E F0 -.1(ke)3.913 G 1.153(ys are denoted by M\255) +-.05 F F3 -.1(ke)C(y)-.2 E F0 3.652(,s)C 3.652(oM)-3.652 G 1.152 +(\255x means Meta\255X.)-3.652 F(\(On)6.152 E -.1(ke)108 578.4 S .83 +(yboards without a)-.05 F F3(meta)3.71 E F0 -.1(ke)3.59 G 2.13 -.65 +(y, M)-.05 H.65 E F3(x)A F0 .83(means ESC)3.33 F F3(x)3.33 E F0 3.33 (,i)C .831(.e., press the Escape k)-3.33 F 1.131 -.15(ey t)-.1 H .831 -(hen the).15 F F2(x)4.101 E F0 -.1(ke)3.861 G 4.631 -.65(y. T)-.05 H -.831(his mak).65 F(es)-.1 E .6(ESC the)108 674.4 R F2 .6(meta pr)3.1 F -(e\214x)-.37 E F0 5.6(.T)C .6(he combination M\255C\255)-5.6 F F2(x)A F0 -.599(means ESC\255Control\255)3.099 F F2(x)A F0 3.099(,o)C 3.099(rp) +(hen the).15 F F3(x)4.101 E F0 -.1(ke)3.861 G 4.631 -.65(y. T)-.05 H +.831(his mak).65 F(es)-.1 E .6(ESC the)108 590.4 R F3 .6(meta pr)3.1 F +(e\214x)-.37 E F0 5.6(.T)C .6(he combination M\255C\255)-5.6 F F3(x)A F0 +.599(means ESC\255Control\255)3.099 F F3(x)A F0 3.099(,o)C 3.099(rp) -3.099 G .599(ress the Escape k)-3.099 F .899 -.15(ey t)-.1 H .599 -(hen hold).15 F(the Control k)108 686.4 Q .3 -.15(ey w)-.1 H -(hile pressing the).15 E F2(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\)) -.65 E .595(Readline commands may be gi)108 703.2 R -.15(ve)-.25 G 3.096 -(nn).15 G(umeric)-3.096 E F2(ar)3.426 E(guments)-.37 E F0 3.096(,w).27 G +(hen hold).15 F(the Control k)108 602.4 Q .3 -.15(ey w)-.1 H +(hile pressing the).15 E F3(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\)) +.65 E .595(Readline commands may be gi)108 619.2 R -.15(ve)-.25 G 3.096 +(nn).15 G(umeric)-3.096 E F3(ar)3.426 E(guments)-.37 E F0 3.096(,w).27 G .596(hich normally act as a repeat count.)-3.096 F(Sometimes,)5.596 E -(ho)108 715.2 Q(we)-.25 E -.15(ve)-.25 G 1.419 -.4(r, i).15 H 3.119(ti) +(ho)108 631.2 Q(we)-.25 E -.15(ve)-.25 G 1.419 -.4(r, i).15 H 3.119(ti) .4 G 3.119(st)-3.119 G .619(he sign of the ar)-3.119 F .619 (gument that is signi\214cant.)-.18 F -.15(Pa)5.619 G .619(ssing a ne) .15 F -.05(ga)-.15 G(ti).05 E .919 -.15(ve a)-.25 H -.18(rg).15 G .619 -(ument to a command that).18 F 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 5.1)72 768 Q(2020 October 29)141.235 E -(39)190.395 E 0 Cg EP -%%Page: 40 40 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(Commands whose beha)108 84 Q(vior with ar)-.2 E(guments de)-.18 E -(viates from this are noted belo)-.25 E -.65(w.)-.25 G .812 -(When a command is described as)108 100.8 R/F1 10/Times-Italic@0 SF +(ument to a command that).18 F 1.018(acts in the forw)108 643.2 R 1.018 +(ard direction \(e.g.,)-.1 F F1(kill\255line)3.518 E F0 3.518(\)c)C +1.018(auses that command to act in a backw)-3.518 F 1.019 +(ard direction.)-.1 F(Com-)6.019 E(mands whose beha)108 655.2 Q +(vior with ar)-.2 E(guments de)-.18 E(viates from this are noted belo) +-.25 E -.65(w.)-.25 G .812(When a command is described as)108 672 R F3 (killing)3.311 E F0(te)3.311 E .811(xt, the te)-.15 F .811 (xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .811 -(or possible future retrie)-3.311 F -.25(va)-.25 G 3.311(l\().25 G F1 -(yank-)-3.311 E(ing)108 112.8 Q F0 2.529(\). The)B .029(killed te)2.529 -F .029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F1 +(or possible future retrie)-3.311 F -.25(va)-.25 G 3.311(l\().25 G F3 +(yank-)-3.311 E(ing)108 684 Q F0 2.529(\). The)B .029(killed te)2.529 F +.029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F3 .029(kill ring)B F0 5.029(.C)C(onsecuti)-5.029 E .329 -.15(ve k)-.25 H .029(ills cause the te).15 F .029(xt to be accumulated into one unit,) --.15 F .567(which can be yank)108 124.8 R .567(ed all at once.)-.1 F -.567(Commands which do not kill te)5.567 F .567 +-.15 F .567(which can be yank)108 696 R .567(ed all at once.)-.1 F .567 +(Commands which do not kill te)5.567 F .567 (xt separate the chunks of te)-.15 F .567(xt on the kill)-.15 F(ring.) -108 136.8 Q/F2 10/Times-Bold@0 SF(Readline Initialization)87 153.6 Q F0 -.091(Readline is customized by putting commands in an initialization \ -\214le \(the)108 165.6 R F1(inputr)2.591 E(c)-.37 E F0 2.591 -(\214le\). The)2.591 F .092(name of this \214le)2.591 F .573(is tak)108 -177.6 R .573(en from the v)-.1 F .573(alue of the)-.25 F/F3 9 -/Times-Bold@0 SF(INPUTRC)3.073 E F0 -.25(va)2.823 G 3.073(riable. If).25 -F .573(that v)3.073 F .573(ariable is unset, the def)-.25 F .573 -(ault is)-.1 F F1(~/.inputr)2.573 E(c)-.37 E F0 5.572(.I).31 G 3.072(ft) --5.572 G(hat)-3.072 E 3.061(\214le does)108 189.6 R .561(not e)3.061 F -.562(xist or cannot be read, the ultimate def)-.15 F .562(ault is)-.1 F -F1(/etc/inputr)4.212 E(c)-.37 E F0 5.562(.W).31 G .562 +108 708 Q(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(41)185.115 E +0 Cg EP +%%Page: 42 42 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(Readline Initialization)87 84 Q F0 .091(Readline is customized by pu\ +tting commands in an initialization \214le \(the)108 96 R/F2 10 +/Times-Italic@0 SF(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591 +F .092(name of this \214le)2.591 F .573(is tak)108 108 R .573 +(en from the v)-.1 F .573(alue of the)-.25 F/F3 9/Times-Bold@0 SF +(INPUTRC)3.073 E F0 -.25(va)2.823 G 3.073(riable. If).25 F .573(that v) +3.073 F .573(ariable is unset, the def)-.25 F .573(ault is)-.1 F F2 +(~/.inputr)2.573 E(c)-.37 E F0 5.572(.I).31 G 3.072(ft)-5.572 G(hat) +-3.072 E 3.061(\214le does)108 120 R .561(not e)3.061 F .562 +(xist or cannot be read, the ultimate def)-.15 F .562(ault is)-.1 F F2 +(/etc/inputr)4.212 E(c)-.37 E F0 5.562(.W).31 G .562 (hen a program which uses the)-5.562 F .175(readline library starts up,\ - the initialization \214le is read, and the k)108 201.6 R .474 -.15 -(ey b)-.1 H .174(indings and v).15 F .174(ariables are set.)-.25 F .174 -(There are)5.174 F .238(only a fe)108 213.6 R 2.738(wb)-.25 G .238 + the initialization \214le is read, and the k)108 132 R .474 -.15(ey b) +-.1 H .174(indings and v).15 F .174(ariables are set.)-.25 F .174 +(There are)5.174 F .238(only a fe)108 144 R 2.738(wb)-.25 G .238 (asic constructs allo)-2.738 F .239 (wed in the readline initialization \214le.)-.25 F .239 (Blank lines are ignored.)5.239 F .239(Lines be)5.239 F(gin-)-.15 E .554 -(ning with a)108 225.6 R F2(#)3.054 E F0 .554(are comments.)3.054 F .554 -(Lines be)5.554 F .554(ginning with a)-.15 F F2($)3.054 E F0 .554 +(ning with a)108 156 R F1(#)3.054 E F0 .554(are comments.)3.054 F .554 +(Lines be)5.554 F .554(ginning with a)-.15 F F1($)3.054 E F0 .554 (indicate conditional constructs.)3.054 F .553(Other lines denote)5.553 -F -.1(ke)108 237.6 S 2.5(yb)-.05 G(indings and v)-2.5 E -(ariable settings.)-.25 E .986(The def)108 254.4 R .986(ault k)-.1 F --.15(ey)-.1 G .987(-bindings may be changed with an).15 F F1(inputr) -3.497 E(c)-.37 E F0 3.487(\214le. Other)3.797 F .987 -(programs that use this library may)3.487 F(add their o)108 266.4 Q -(wn commands and bindings.)-.25 E -.15(Fo)108 283.2 S 2.5(re).15 G -(xample, placing)-2.65 E(M\255Control\255u: uni)144 300 Q -.15(ve)-.25 G -(rsal\255ar).15 E(gument)-.18 E(or)108 312 Q(C\255Meta\255u: uni)144 324 -Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 336 Q F1 -(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E 2.5(eM)-.1 G -(\255C\255u e)-2.5 E -.15(xe)-.15 G(cute the readline command).15 E F1 -(univer)2.58 E(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.011(The follo) -108 352.8 R 1.011(wing symbolic character names are recognized:)-.25 F -F1 -.4(RU)3.511 G(BOUT).4 E F0(,)1.27 E F1(DEL)4.091 E F0(,).53 E F1 -(ESC)4.021 E F0(,).72 E F1(LFD)4.091 E F0(,).28 E F1(NEWLINE)4.21 E F0 -(,).73 E F1(RET)4.14 E F0(,)1.27 E F1(RETURN)108.63 364.8 Q F0(,)1.1 E -F1(SPC)2.83 E F0(,).72 E F1(SP)2.83 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 -G(nd)-2.5 E F1 -.5(TA)2.5 G(B).5 E F0(.).27 E .209 -(In addition to command names, readline allo)108 381.6 R .209(ws k)-.25 -F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209 +F -.1(ke)108 168 S 2.5(yb)-.05 G(indings and v)-2.5 E(ariable settings.) +-.25 E .986(The def)108 184.8 R .986(ault k)-.1 F -.15(ey)-.1 G .987 +(-bindings may be changed with an).15 F F2(inputr)3.497 E(c)-.37 E F0 +3.487(\214le. Other)3.797 F .987(programs that use this library may) +3.487 F(add their o)108 196.8 Q(wn commands and bindings.)-.25 E -.15 +(Fo)108 213.6 S 2.5(re).15 G(xample, placing)-2.65 E +(M\255Control\255u: uni)144 230.4 Q -.15(ve)-.25 G(rsal\255ar).15 E +(gument)-.18 E(or)108 242.4 Q(C\255Meta\255u: uni)144 254.4 Q -.15(ve) +-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 266.4 Q F2(inputr) +2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E 2.5(eM)-.1 G(\255C\255u e) +-2.5 E -.15(xe)-.15 G(cute the readline command).15 E F2(univer)2.58 E +(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.011(The follo)108 283.2 R +1.011(wing symbolic character names are recognized:)-.25 F F2 -.4(RU) +3.511 G(BOUT).4 E F0(,)1.27 E F2(DEL)4.091 E F0(,).53 E F2(ESC)4.021 E +F0(,).72 E F2(LFD)4.091 E F0(,).28 E F2(NEWLINE)4.21 E F0(,).73 E F2 +(RET)4.14 E F0(,)1.27 E F2(RETURN)108.63 295.2 Q F0(,)1.1 E F2(SPC)2.83 +E F0(,).72 E F2(SP)2.83 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G(nd)-2.5 E +F2 -.5(TA)2.5 G(B).5 E F0(.).27 E .209 +(In addition to command names, readline allo)108 312 R .209(ws k)-.25 F +-.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209 (ound to a string that is inserted when the k)-2.709 F .509 -.15(ey i) --.1 H(s).15 E(pressed \(a)108 393.6 Q F1(macr)2.5 E(o)-.45 E F0(\).)A F2 -(Readline K)87 410.4 Q(ey Bindings)-.25 E F0 .366 -(The syntax for controlling k)108 422.4 R .666 -.15(ey b)-.1 H .366 -(indings in the).15 F F1(inputr)2.876 E(c)-.37 E F0 .366 +-.1 H(s).15 E(pressed \(a)108 324 Q F2(macr)2.5 E(o)-.45 E F0(\).)A F1 +(Readline K)87 340.8 Q(ey Bindings)-.25 E F0 .366 +(The syntax for controlling k)108 352.8 R .666 -.15(ey b)-.1 H .366 +(indings in the).15 F F2(inputr)2.876 E(c)-.37 E F0 .366 (\214le is simple.)3.176 F .366(All that is required is the name of the) -5.366 F .263(command or the te)108 434.4 R .264(xt of a macro and a k) +5.366 F .263(command or the te)108 364.8 R .264(xt of a macro and a k) -.15 F .564 -.15(ey s)-.1 H .264(equence to which it should be bound.) .15 F .264(The name may be speci-)5.264 F .139(\214ed in one of tw)108 -446.4 R 2.638(ow)-.1 G .138(ays: as a symbolic k)-2.738 F .438 -.15 -(ey n)-.1 H .138(ame, possibly with).15 F F1(Meta\255)2.638 E F0(or) -2.638 E F1(Contr)2.638 E(ol\255)-.45 E F0(pre\214x)2.638 E .138 -(es, or as a k)-.15 F .438 -.15(ey s)-.1 H(e-).15 E(quence.)108 458.4 Q -.16(When using the form)108 475.2 R F2 -.1(ke)2.66 G(yname).1 E F0(:)A -F1(function\255name).833 E F0(or)2.66 E F1(macr)2.66 E(o)-.45 E F0(,)A -F1 -.1(ke)2.66 G(yname)-.2 E F0 .161(is the name of a k)2.84 F .461 -.15 -(ey s)-.1 H .161(pelled out in Eng-).15 F 2.5(lish. F)108 487.2 R(or e) --.15 E(xample:)-.15 E(Control-u: uni)144 511.2 Q -.15(ve)-.25 G -(rsal\255ar).15 E(gument)-.18 E(Meta-Rubout: backw)144 523.2 Q -(ard-kill-w)-.1 E(ord)-.1 E(Control-o: "> output")144 535.2 Q .699 -(In the abo)108 552 R .998 -.15(ve ex)-.15 H(ample,).15 E F1(C\255u) -3.038 E F0 .698(is bound to the function)3.448 F F2(uni)3.198 E -.1(ve) --.1 G(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M\255DEL)3.878 E F0 .698 -(is bound to the func-)3.728 F(tion)108 564 Q F2(backward\255kill\255w) -2.758 E(ord)-.1 E F0 2.758(,a)C(nd)-2.758 E F1(C\255o)2.598 E F0 .258 -(is bound to run the macro e)2.938 F .259 +376.8 R 2.638(ow)-.1 G .138(ays: as a symbolic k)-2.738 F .438 -.15 +(ey n)-.1 H .138(ame, possibly with).15 F F2(Meta\255)2.638 E F0(or) +2.638 E F2(Contr)2.638 E(ol\255)-.45 E F0(pre\214x)2.638 E .138 +(es, or as a k)-.15 F .438 -.15(ey s)-.1 H(e-).15 E(quence.)108 388.8 Q +.16(When using the form)108 405.6 R F1 -.1(ke)2.66 G(yname).1 E F0(:)A +F2(function\255name).833 E F0(or)2.66 E F2(macr)2.66 E(o)-.45 E F0(,)A +F2 -.1(ke)2.66 G(yname)-.2 E F0 .161(is the name of a k)2.84 F .461 -.15 +(ey s)-.1 H .161(pelled out in Eng-).15 F 2.5(lish. F)108 417.6 R(or e) +-.15 E(xample:)-.15 E(Control-u: uni)144 441.6 Q -.15(ve)-.25 G +(rsal\255ar).15 E(gument)-.18 E(Meta-Rubout: backw)144 453.6 Q +(ard-kill-w)-.1 E(ord)-.1 E(Control-o: "> output")144 465.6 Q .699 +(In the abo)108 482.4 R .998 -.15(ve ex)-.15 H(ample,).15 E F2(C\255u) +3.038 E F0 .698(is bound to the function)3.448 F F1(uni)3.198 E -.1(ve) +-.1 G(rsal\255ar).1 E(gument)-.1 E F0(,)A F2(M\255DEL)3.878 E F0 .698 +(is bound to the func-)3.728 F(tion)108 494.4 Q F1 +(backward\255kill\255w)2.758 E(ord)-.1 E F0 2.758(,a)C(nd)-2.758 E F2 +(C\255o)2.598 E F0 .258(is bound to run the macro e)2.938 F .259 (xpressed on the right hand side \(that is, to)-.15 F(insert the te)108 -576 Q(xt)-.15 E/F4 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0 -(into the line\).)2.5 E .056(In the second form,)108 592.8 R F2("k)2.556 -E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.556 E F1(macr) -2.556 E(o)-.45 E F0(,)A F2 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055 -(fers from)-.25 F F2 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15 +506.4 Q(xt)-.15 E/F4 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0 +(into the line\).)2.5 E .056(In the second form,)108 523.2 R F1("k)2.556 +E(eyseq")-.1 E F0(:)A F2(function\255name).833 E F0(or)2.556 E F2(macr) +2.556 E(o)-.45 E F0(,)A F1 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055 +(fers from)-.25 F F1 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15 (ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284 -(denoting an entire k)108 604.8 R 1.584 -.15(ey s)-.1 H 1.284(equence m\ +(denoting an entire k)108 535.2 R 1.584 -.15(ey s)-.1 H 1.284(equence m\ ay be speci\214ed by placing the sequence within double quotes.).15 F -(Some)6.284 E .386(GNU Emacs style k)108 616.8 R .686 -.15(ey e)-.1 H +(Some)6.284 E .386(GNU Emacs style k)108 547.2 R .686 -.15(ey e)-.1 H .385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .385 (xample, b)-.15 F .385(ut the symbolic character names)-.2 F -(are not recognized.)108 628.8 Q("\\C\255u": uni)144 652.8 Q -.15(ve) +(are not recognized.)108 559.2 Q("\\C\255u": uni)144 583.2 Q -.15(ve) -.25 G(rsal\255ar).15 E(gument)-.18 E -("\\C\255x\\C\255r": re\255read\255init\255\214le)144 664.8 Q -("\\e[11~": "Function K)144 676.8 Q .3 -.15(ey 1)-.25 H(").15 E .314 -(In this e)108 693.6 R(xample,)-.15 E F1(C\255u)2.654 E F0 .314(is ag) -3.064 F .315(ain bound to the function)-.05 F F2(uni)2.815 E -.1(ve)-.1 -G(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .315(C\255x C\255r)5.155 F F0 -.315(is bound to the func-)3.545 F(tion)108 705.6 Q F2 -.18(re)2.5 G -.18 E(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F1 -(ESC [ 1 1 ~)3.01 E F0(is bound to insert the te)3.94 E(xt)-.15 E F4 -(Function Key 1)2.5 E F0(.)A -(The full set of GNU Emacs style escape sequences is)108 722.4 Q -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(40)190.395 E 0 Cg EP -%%Page: 41 41 +("\\C\255x\\C\255r": re\255read\255init\255\214le)144 595.2 Q +("\\e[11~": "Function K)144 607.2 Q .3 -.15(ey 1)-.25 H(").15 E .314 +(In this e)108 624 R(xample,)-.15 E F2(C\255u)2.654 E F0 .314(is ag) +3.064 F .315(ain bound to the function)-.05 F F1(uni)2.815 E -.1(ve)-.1 +G(rsal\255ar).1 E(gument)-.1 E F0(.)A F2 .315(C\255x C\255r)5.155 F F0 +.315(is bound to the func-)3.545 F(tion)108 636 Q F1 -.18(re)2.5 G +.18 E(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F2(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 +652.8 Q F1<5c43ad>144 664.8 Q F0(control pre\214x)180 664.8 Q F1<5c4dad> +144 676.8 Q F0(meta pre\214x)180 676.8 Q F1(\\e)144 688.8 Q F0 +(an escape character)180 688.8 Q F1(\\\\)144 700.8 Q F0(backslash)180 +700.8 Q F1(\\")144 712.8 Q F0(literal ")180 712.8 Q(GNU Bash 5.2)72 768 +Q(2022 September 19)135.955 E(42)185.115 E 0 Cg EP +%%Page: 43 43 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF<5c43ad>144 84 Q F0(control pre\214x)180 84 Q F1<5c4dad>144 96 Q F0 -(meta pre\214x)180 96 Q F1(\\e)144 108 Q F0(an escape character)180 108 -Q F1(\\\\)144 120 Q F0(backslash)180 120 Q F1(\\")144 132 Q F0 -(literal ")180 132 Q F1<5c08>144 144 Q F0(literal \010)180 144 Q(In add\ -ition to the GNU Emacs style escape sequences, a second set of backslas\ -h escapes is a)108 160.8 Q -.25(va)-.2 G(ilable:).25 E F1(\\a)144 172.8 -Q F0(alert \(bell\))180 172.8 Q F1(\\b)144 184.8 Q F0(backspace)180 -184.8 Q F1(\\d)144 196.8 Q F0(delete)180 196.8 Q F1(\\f)144 208.8 Q F0 -(form feed)180 208.8 Q F1(\\n)144 220.8 Q F0(ne)180 220.8 Q(wline)-.25 E -F1(\\r)144 232.8 Q F0(carriage return)180 232.8 Q F1(\\t)144 244.8 Q F0 -(horizontal tab)180 244.8 Q F1(\\v)144 256.8 Q F0 -.15(ve)180 256.8 S -(rtical tab).15 E F1(\\)144 268.8 Q/F2 10/Times-Italic@0 SF(nnn)A F0 -(the eight-bit character whose v)180 268.8 Q(alue is the octal v)-.25 E +SF<5c08>144 84 Q F0(literal \010)180 84 Q(In addition to the GNU Emacs \ +style escape sequences, a second set of backslash escapes is a)108 100.8 +Q -.25(va)-.2 G(ilable:).25 E F1(\\a)144 112.8 Q F0(alert \(bell\))180 +112.8 Q F1(\\b)144 124.8 Q F0(backspace)180 124.8 Q F1(\\d)144 136.8 Q +F0(delete)180 136.8 Q F1(\\f)144 148.8 Q F0(form feed)180 148.8 Q F1 +(\\n)144 160.8 Q F0(ne)180 160.8 Q(wline)-.25 E F1(\\r)144 172.8 Q F0 +(carriage return)180 172.8 Q F1(\\t)144 184.8 Q F0(horizontal tab)180 +184.8 Q F1(\\v)144 196.8 Q F0 -.15(ve)180 196.8 S(rtical tab).15 E F1 +(\\)144 208.8 Q/F2 10/Times-Italic@0 SF(nnn)A F0 +(the eight-bit character whose v)180 208.8 Q(alue is the octal v)-.25 E (alue)-.25 E F2(nnn)2.5 E F0(\(one to three digits\))2.5 E F1(\\x)144 -280.8 Q F2(HH)A F0(the eight-bit character whose v)180 280.8 Q +220.8 Q F2(HH)A F0(the eight-bit character whose v)180 220.8 Q (alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 (\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.142 -(When entering the te)108 297.6 R 1.141(xt of a macro, single or double\ +(When entering the te)108 237.6 R 1.141(xt of a macro, single or double\ quotes must be used to indicate a macro de\214nition.)-.15 F .089 -(Unquoted te)108 309.6 R .089(xt is assumed to be a function name.)-.15 +(Unquoted te)108 249.6 R .089(xt is assumed to be a function name.)-.15 F .09(In the macro body)5.089 F 2.59(,t)-.65 G .09 (he backslash escapes described abo)-2.59 F -.15(ve)-.15 G(are e)108 -321.6 Q 2.5(xpanded. Backslash)-.15 F(will quote an)2.5 E 2.5(yo)-.15 G +261.6 Q 2.5(xpanded. Backslash)-.15 F(will quote an)2.5 E 2.5(yo)-.15 G (ther character in the macro te)-2.5 E(xt, including " and \010.)-.15 E -F1(Bash)108 338.4 Q F0(allo)2.93 E .43(ws the current readline k)-.25 F +F1(Bash)108 278.4 Q F0(allo)2.93 E .43(ws the current readline k)-.25 F .73 -.15(ey b)-.1 H .429(indings to be displayed or modi\214ed with the) .15 F F1(bind)2.929 E F0 -.2(bu)2.929 G .429(iltin command.).2 F .045 -(The editing mode may be switched during interacti)108 350.4 R .345 -.15 +(The editing mode may be switched during interacti)108 290.4 R .345 -.15 (ve u)-.25 H .046(se by using the).15 F F12.546 E F0 .046 (option to the)2.546 F F1(set)2.546 E F0 -.2(bu)2.546 G .046 -(iltin command).2 F(\(see)108 362.4 Q/F3 9/Times-Bold@0 SF(SHELL B)2.5 E +(iltin command).2 F(\(see)108 302.4 Q/F3 9/Times-Bold@0 SF(SHELL B)2.5 E (UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1 -(Readline V)87 379.2 Q(ariables)-.92 E F0 .044(Readline has v)108 391.2 +(Readline V)87 319.2 Q(ariables)-.92 E F0 .044(Readline has v)108 331.2 R .043(ariables that can be used to further customize its beha)-.25 F (vior)-.2 E 5.043(.A)-.55 G -.25(va)-2.5 G .043 -(riable may be set in the).25 F F2(inpu-)2.553 E(tr)108 403.2 Q(c)-.37 E -F0(\214le with a statement of the form)2.81 E F1(set)144 420 Q F2 -(variable\255name value)2.5 E F0(or using the)108 432 Q F1(bind)2.5 E F0 +(riable may be set in the).25 F F2(inpu-)2.553 E(tr)108 343.2 Q(c)-.37 E +F0(\214le with a statement of the form)2.81 E F1(set)144 360 Q F2 +(variable\255name value)2.5 E F0(or using the)108 372 Q F1(bind)2.5 E F0 -.2(bu)2.5 G(iltin command \(see).2 E F3(SHELL B)2.5 E(UIL)-.09 E (TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E .79 -(Except where noted, readline v)108 448.8 R .79(ariables can tak)-.25 F +(Except where noted, readline v)108 388.8 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F(alues)-.25 E F1(On)3.29 E F0(or)3.29 E F1 (Off)3.29 E F0 .79(\(without re)3.29 F -.05(ga)-.15 G .79(rd to case\).) -.05 F(Unrecog-)5.79 E .449(nized v)108 460.8 R .448 +.05 F(Unrecog-)5.79 E .449(nized v)108 400.8 R .448 (ariable names are ignored.)-.25 F .448(When a v)5.448 F .448(ariable v) -.25 F .448(alue is read, empty or null v)-.25 F .448 -(alues, "on" \(case-insensi-)-.25 F(ti)108 472.8 Q -.15(ve)-.25 G .467 +(alues, "on" \(case-insensi-)-.25 F(ti)108 412.8 Q -.15(ve)-.25 G .467 (\), and "1" are equi).15 F -.25(va)-.25 G .468(lent to).25 F F1(On) 2.968 E F0 5.468(.A)C .468(ll other v)-5.468 F .468(alues are equi)-.25 F -.25(va)-.25 G .468(lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .468 (he v)-5.468 F .468(ariables and their def)-.25 F(ault)-.1 E -.25(va)108 -484.8 S(lues are:).25 E F1(bell\255style \(audible\))108 501.6 Q F0 .011 -(Controls what happens when readline w)144 513.6 R .011 +424.8 S(lues are:).25 E F1(acti)108 441.6 Q -.1(ve)-.1 G.1 E +(egion\255start\255color)-.18 E F0 2.73(As)144 453.6 S .23(tring v)-2.73 +F .23(ariable that controls the te)-.25 F .229 +(xt color and background when displaying the te)-.15 F .229 +(xt in the acti)-.15 F -.15(ve)-.25 G(re)144 465.6 Q 1.526 +(gion \(see the description of)-.15 F F1(enable\255acti)4.026 E -.1(ve) +-.1 G.1 E(egion)-.18 E F0(belo)4.026 E 4.026(w\). This)-.25 F +1.526(string must not tak)4.026 F 4.027(eu)-.1 G 4.027(pa)-4.027 G -.15 +(ny)-4.027 G(ph)144 477.6 Q .284 +(ysical character positions on the display)-.05 F 2.784(,s)-.65 G 2.784 +(oi)-2.784 G 2.784(ts)-2.784 G .283 +(hould consist only of terminal escape sequences.)-2.784 F .45 +(It is output to the terminal before displaying the te)144 489.6 R .45 +(xt in the acti)-.15 F .75 -.15(ve r)-.25 H -.15(eg).15 G 2.95 +(ion. This).15 F -.25(va)2.95 G .45(riable is reset to).25 F .379 +(the def)144 501.6 R .379(ault v)-.1 F .379(alue whene)-.25 F -.15(ve) +-.25 G 2.879(rt).15 G .379(he terminal type changes.)-2.879 F .379 +(The def)5.379 F .379(ault v)-.1 F .378 +(alue is the string that puts the)-.25 F .654 +(terminal in standout mode, as obtained from the terminal')144 513.6 R +3.155(st)-.55 G .655(erminfo description.)-3.155 F 3.155(As)5.655 G .655 +(ample v)-3.155 F(alue)-.25 E(might be)144 525.6 Q/F4 10/Courier@0 SF +("\\e[01;33m")2.5 E F0(.)A F1(acti)108 537.6 Q -.1(ve)-.1 G.1 E +(egion\255end\255color)-.18 E F0 3.909(As)144 549.6 S 1.409(tring v) +-3.909 F 1.408(ariable that "undoes" the ef)-.25 F 1.408(fects of)-.25 F +F1(acti)3.908 E -.1(ve)-.1 G.1 E(egion\255start\255color)-.18 E F0 +1.408(and restores "normal")3.908 F .216 +(terminal display appearance after displaying te)144 561.6 R .216 +(xt in the acti)-.15 F .516 -.15(ve r)-.25 H -.15(eg).15 G 2.716 +(ion. This).15 F .216(string must not tak)2.716 F 2.716(eu)-.1 G(p) +-2.716 E(an)144 573.6 Q 3.738(yp)-.15 G -.05(hy)-3.738 G 1.238 +(sical character positions on the display).05 F 3.737(,s)-.65 G 3.737 +(oi)-3.737 G 3.737(ts)-3.737 G 1.237 +(hould consist only of terminal escape se-)-3.737 F 2.927(quences. It) +144 585.6 R .427(is output to the terminal after displaying the te)2.927 +F .428(xt in the acti)-.15 F .728 -.15(ve r)-.25 H -.15(eg).15 G 2.928 +(ion. This).15 F -.25(va)2.928 G .428(riable is).25 F .519 +(reset to the def)144 597.6 R .518(ault v)-.1 F .518(alue whene)-.25 F +-.15(ve)-.25 G 3.018(rt).15 G .518(he terminal type changes.)-3.018 F +.518(The def)5.518 F .518(ault v)-.1 F .518(alue is the string that)-.25 +F .251(restores the terminal from standout mode, as obtained from the t\ +erminal')144 609.6 R 2.752(st)-.55 G .252(erminfo description.)-2.752 F +(A)5.252 E(sample v)144 621.6 Q(alue might be)-.25 E F4("\\e[0m")2.5 E +F0(.)A F1(bell\255style \(audible\))108 633.6 Q F0 .011 +(Controls what happens when readline w)144 645.6 R .011 (ants to ring the terminal bell.)-.1 F .01(If set to)5.01 F F1(none)2.51 E F0 2.51(,r)C .01(eadline ne)-2.51 F -.15(ve)-.25 G(r).15 E .94 -(rings the bell.)144 525.6 R .94(If set to)5.94 F F1(visible)3.44 E F0 +(rings the bell.)144 657.6 R .94(If set to)5.94 F F1(visible)3.44 E F0 3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25(va) -.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0(,)A -(readline attempts to ring the terminal')144 537.6 Q 2.5(sb)-.55 G(ell.) --2.5 E F1(bind\255tty\255special\255chars \(On\))108 549.6 Q F0 .056 -(If set to)144 561.6 R F1(On)2.556 E F0 2.556(,r)C .056(eadline attempt\ +(readline attempts to ring the terminal')144 669.6 Q 2.5(sb)-.55 G(ell.) +-2.5 E F1(bind\255tty\255special\255chars \(On\))108 681.6 Q F0 .056 +(If set to)144 693.6 R F1(On)2.556 E F0 2.556(,r)C .056(eadline attempt\ s to bind the control characters treated specially by the k)-2.556 F -(ernel')-.1 E 2.555(st)-.55 G(ermi-)-2.555 E(nal dri)144 573.6 Q -.15 +(ernel')-.1 E 2.555(st)-.55 G(ermi-)-2.555 E(nal dri)144 705.6 Q -.15 (ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G(heir readline equi)-2.5 E -.25(va) --.25 G(lents.).25 E F1(blink\255matching\255par)108 585.6 Q(en \(Off\)) --.18 E F0 .21(If set to)144 597.6 R F1(On)2.71 E F0 2.71(,r)C .21 -(eadline attempts to brie\215y mo)-2.71 F .51 -.15(ve t)-.15 H .21 -(he cursor to an opening parenthesis when a closing).15 F -(parenthesis is inserted.)144 609.6 Q F1(color)108 621.6 Q -(ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F0 .515(If set to) -144 633.6 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, r\ -eadline displays the common pre\214x of the set of possible)-3.015 F -2.935(completions using a dif)144 645.6 R 2.935(ferent color)-.25 F -7.936(.T)-.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.936 -(en from the v)-.1 F 2.936(alue of the)-.25 F F1(LS_COLORS)144 657.6 Q -F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 669.6 Q -(ed\255stats \(Off\))-.18 E F0 1.58(If set to)144 681.6 R F1(On)4.08 E -F0 4.08(,r)C 1.579(eadline displays possible completions using dif)-4.08 -F 1.579(ferent colors to indicate their \214le)-.25 F 2.5(type. The)144 -693.6 R(color de\214nitions are tak)2.5 E(en from the v)-.1 E -(alue of the)-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E -(ariable.)-.25 E F1(comment\255begin \(`)108 705.6 Q(`#')-.63 E('\))-.63 -E F0 .884(The string that is inserted when the readline)144 717.6 R F1 -(insert\255comment)3.385 E F0 .885(command is e)3.385 F -.15(xe)-.15 G -3.385(cuted. This).15 F(com-)3.385 E(mand is bound to)144 729.6 Q F1 -(M\255#)2.5 E F0(in emacs mode and to)2.5 E F1(#)2.5 E F0 -(in vi command mode.)2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 -E(41)190.395 E 0 Cg EP -%%Page: 42 42 +-.25 G(lents.).25 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E +(43)185.115 E 0 Cg EP +%%Page: 44 44 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(completion\255display\255width \(\2551\))108 84 Q F0 1.453(The numbe\ -r of screen columns used to display possible matches when performing co\ -mpletion.)144 96 R .193(The v)144 108 R .193(alue is ignored if it is l\ -ess than 0 or greater than the terminal screen width.)-.25 F 2.694(Av) -5.194 G .194(alue of 0 will)-2.944 F -(cause matches to be displayed one per line.)144 120 Q(The def)5 E -(ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 132 Q -(e\255case \(Off\))-.18 E F0(If set to)144 144 Q F1(On)2.5 E F0 2.5(,r)C +SF(blink\255matching\255par)108 84 Q(en \(Off\))-.18 E F0 .21(If set to) +144 96 R F1(On)2.71 E F0 2.71(,r)C .21(eadline attempts to brie\215y mo) +-2.71 F .51 -.15(ve t)-.15 H .21 +(he cursor to an opening parenthesis when a closing).15 F +(parenthesis is inserted.)144 108 Q F1(color)108 120 Q +(ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F0 .515(If set to) +144 132 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, rea\ +dline displays the common pre\214x of the set of possible)-3.015 F 2.935 +(completions using a dif)144 144 R 2.935(ferent color)-.25 F 7.936(.T) +-.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.936 +(en from the v)-.1 F 2.936(alue of the)-.25 F F1(LS_COLORS)144 156 Q F0 +(en)3.077 E .577(vironment v)-.4 F 3.077(ariable. If)-.25 F .577 +(there is a color de\214nition in)3.077 F F1($LS_COLORS)3.077 E F0 .577 +(for the cus-)3.077 F .134(tom suf)144 168 R .135(\214x "readline-color\ +ed-completion-pre\214x", readline uses this color for the common pre\ +\214x in-)-.25 F(stead of its def)144 180 Q(ault.)-.1 E F1(color)108 192 +Q(ed\255stats \(Off\))-.18 E F0 1.58(If set to)144 204 R F1(On)4.08 E F0 +4.08(,r)C 1.579(eadline displays possible completions using dif)-4.08 F +1.579(ferent colors to indicate their \214le)-.25 F 2.5(type. The)144 +216 R(color de\214nitions are tak)2.5 E(en from the v)-.1 E(alue of the) +-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E +F1(comment\255begin \(`)108 228 Q(`#')-.63 E('\))-.63 E F0 .884 +(The string that is inserted when the readline)144 240 R F1 +(insert\255comment)3.385 E F0 .885(command is e)3.385 F -.15(xe)-.15 G +3.385(cuted. This).15 F(com-)3.385 E(mand is bound to)144 252 Q F1 +(M\255#)2.5 E F0(in emacs mode and to)2.5 E F1(#)2.5 E F0 +(in vi command mode.)2.5 E F1(completion\255display\255width \(\2551\)) +108 264 Q F0 1.453(The number of screen columns used to display possibl\ +e matches when performing completion.)144 276 R .193(The v)144 288 R +.193(alue is ignored if it is less than 0 or greater than the terminal \ +screen width.)-.25 F 2.694(Av)5.194 G .194(alue of 0 will)-2.944 F +(cause matches to be displayed one per line.)144 300 Q(The def)5 E +(ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 312 Q +(e\255case \(Off\))-.18 E F0(If set to)144 324 Q F1(On)2.5 E F0 2.5(,r)C (eadline performs \214lename matching and completion in a case\255insen\ siti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1 -(completion\255map\255case \(Off\))108 156 Q F0 .094(If set to)144 168 R +(completion\255map\255case \(Off\))108 336 Q F0 .094(If set to)144 348 R F1(On)2.593 E F0 2.593(,a)C(nd)-2.593 E F1(completion\255ignor)2.593 E (e\255case)-.18 E F0 .093(is enabled, readline treats h)2.593 F .093 (yphens \()-.05 F/F2 10/Times-Italic@0 SFA F0 2.593(\)a)C .093 -(nd underscores)-2.593 F(\()144 180 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G +(nd underscores)-2.593 F(\()144 360 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G (qui)-2.5 E -.25(va)-.25 G(lent when performing case\255insensiti).25 E .3 -.15(ve \214)-.25 H(lename matching and completion.).15 E F1 -(completion\255pr)108 192 Q(e\214x\255display\255length \(0\))-.18 E F0 +(completion\255pr)108 372 Q(e\214x\255display\255length \(0\))-.18 E F0 .829(The length in characters of the common pre\214x of a list of possi\ -ble completions that is displayed)144 204 R 1.275 -(without modi\214cation.)144 216 R 1.275(When set to a v)6.275 F 1.274 +ble completions that is displayed)144 384 R 1.275 +(without modi\214cation.)144 396 R 1.275(When set to a v)6.275 F 1.274 (alue greater than zero, common pre\214x)-.25 F 1.274 -(es longer than this)-.15 F -.25(va)144 228 S(lue are replaced with an \ +(es longer than this)-.15 F -.25(va)144 408 S(lue are replaced with an \ ellipsis when displaying possible completions.).25 E F1 -(completion\255query\255items \(100\))108 240 Q F0 .529 -(This determines when the user is queried about vie)144 252 R .53 +(completion\255query\255items \(100\))108 420 Q F0 .529 +(This determines when the user is queried about vie)144 432 R .53 (wing the number of possible completions gen-)-.25 F .561(erated by the) -144 264 R F1(possible\255completions)3.061 E F0 3.061(command. It)3.061 +144 444 R F1(possible\255completions)3.061 E F0 3.061(command. It)3.061 F .561(may be set to an)3.061 F 3.06(yi)-.15 G(nte)-3.06 E .56(ger v) --.15 F .56(alue greater than or)-.25 F .782(equal to zero.)144 276 R +-.15 F .56(alue greater than or)-.25 F .782(equal to zero.)144 456 R .783(If the number of possible completions is greater than or equal to \ -the v)5.782 F .783(alue of this)-.25 F -.25(va)144 288 S .368 +the v)5.782 F .783(alue of this)-.25 F -.25(va)144 468 S .368 (riable, readline will ask whether or not the user wishes to vie).25 F 2.867(wt)-.25 G .367(hem; otherwise the)-2.867 F 2.867(ya)-.15 G .367 -(re simply)-2.867 F(listed on the terminal.)144 300 Q F1(con)108 312 Q --.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612(If set to)144 324 R F1(On) -3.112 E F0 3.112(,r)C .613(eadline will con)-3.112 F -.15(ve)-.4 G .613 -(rt characters with the eighth bit set to an ASCII k).15 F .913 -.15 -(ey s)-.1 H .613(equence by).15 F .541 +(re simply)-2.867 F .672(listed on the terminal.)144 480 R 3.172(Az) +5.672 G .673(ero v)-3.172 F .673(alue means readline should ne)-.25 F +-.15(ve)-.25 G 3.173(ra).15 G .673(sk; ne)-3.173 F -.05(ga)-.15 G(ti).05 +E .973 -.15(ve v)-.25 H .673(alues are treated)-.1 F(as zero.)144 492 Q +F1(con)108 504 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .613(If set to) +144 516 R F1(On)3.113 E F0 3.113(,r)C .613(eadline will con)-3.113 F +-.15(ve)-.4 G .613(rt characters with the eighth bit set to an ASCII k) +.15 F .912 -.15(ey s)-.1 H .612(equence by).15 F .541 (stripping the eighth bit and pre\214xing an escape character \(in ef) -144 336 R .541(fect, using escape as the)-.25 F F2 .541(meta pr)3.041 F -(e-)-.37 E<8c78>144 348 Q F0 2.5(\). The)B(def)2.5 E(ault is)-.1 E F2 -(On)2.5 E F0 2.5(,b)C(ut readline will set it to)-2.7 E F2(Of)2.5 E(f) --.18 E F0(if the locale contains eight-bit characters.)2.5 E F1 -(disable\255completion \(Off\))108 360 Q F0 .038(If set to)144 372 R F1 +144 528 R .541(fect, using escape as the)-.25 F F2 .542(meta pr)3.042 F +(e-)-.37 E<8c78>144 540 Q F0 3.751(\). The)B(def)3.751 E 1.251(ault is) +-.1 F F2(On)3.751 E F0 3.751(,b)C 1.251(ut readline will set it to) +-3.951 F F2(Of)3.75 E(f)-.18 E F0 1.25 +(if the locale contains eight-bit characters.)3.75 F 1.141(This v)144 +552 R 1.141(ariable is dependent on the)-.25 F F1(LC_CTYPE)3.641 E F0 +1.141(locale cate)3.641 F(gory)-.15 E 3.641(,a)-.65 G 1.142 +(nd may change if the locale is)-3.641 F(changed.)144 564 Q F1 +(disable\255completion \(Off\))108 576 Q F0 .038(If set to)144 588 R F1 (On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)-2.538 F .038 (ord completion.)-.1 F .038 (Completion characters will be inserted into the)5.038 F(line as if the) -144 384 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0 -(.)A F1(echo\255contr)108 396 Q(ol\255characters \(On\))-.18 E F0 1.211 -(When set to)144 408 R F1(On)3.711 E F0 3.711(,o)C 3.711(no)-3.711 G -1.211(perating systems that indicate the)-3.711 F 3.711(ys)-.15 G 1.21 +144 600 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0 +(.)A F1(echo\255contr)108 612 Q(ol\255characters \(On\))-.18 E F0 1.21 +(When set to)144 624 R F1(On)3.71 E F0 3.71(,o)C 3.71(no)-3.71 G 1.211 +(perating systems that indicate the)-3.71 F 3.711(ys)-.15 G 1.211 (upport it, readline echoes a character)-3.711 F -(corresponding to a signal generated from the k)144 420 Q -.15(ey)-.1 G -(board.).15 E F1(editing\255mode \(emacs\))108 432 Q F0 .141 -(Controls whether readline be)144 444 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 456 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E -F0(.)A F1(emacs\255mode\255string \(@\))108 468 Q F0 .518(If the)144 480 -R F2(show\255mode\255in\255pr)3.018 E(ompt)-.45 E F0 -.25(va)3.018 G -.517(riable is enabled, this string is displayed immediately before the) +(corresponding to a signal generated from the k)144 636 Q -.15(ey)-.1 G +(board.).15 E F1(editing\255mode \(emacs\))108 648 Q F0 .142 +(Controls whether readline be)144 660 R .141(gins with a set of k)-.15 F +.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.641 E F0 +(or)2.641 E F2(vi)2.641 E F0(.)A F1(editing\255mode)5.141 E F0 +(can be set to either)144 672 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E +F0(.)A F1(emacs\255mode\255string \(@\))108 684 Q F0 .517(If the)144 696 +R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G +.518(riable is enabled, this string is displayed immediately before the) .25 F .622 -(last line of the primary prompt when emacs editing mode is acti)144 492 -R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .622(alue is e)-.25 F -.622(xpanded lik)-.15 F 3.122(ea)-.1 G -.1(ke)144 504 S 3.34(yb)-.05 G -.839(inding, so the standard set of meta- and control pre\214x)-3.34 F -.839(es and backslash escape sequences is)-.15 F -.2(av)144 516 S 2.798 -(ailable. Use)-.05 F .298(the \\1 and \\2 escapes to be)2.798 F .298 -(gin and end sequences of non-printing characters, which)-.15 F +(last line of the primary prompt when emacs editing mode is acti)144 708 +R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .621(alue is e)-.25 F +.621(xpanded lik)-.15 F 3.121(ea)-.1 G -.1(ke)144 720 S 3.339(yb)-.05 G +.839(inding, so the standard set of meta- and control pre\214x)-3.339 F +.84(es and backslash escape sequences is)-.15 F(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(44)185.115 E 0 Cg EP +%%Page: 45 45 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.2(av)144 84 S +2.798(ailable. Use)-.05 F .298(the \\1 and \\2 escapes to be)2.798 F +.298(gin and end sequences of non-printing characters, which)-.15 F (can be used to embed a terminal control sequence into the mode string.) -144 528 Q F1(enable\255brack)108 540 Q(eted\255paste \(On\))-.1 E F0 -1.222(When set to)144 552 R F1(On)3.721 E F0 3.721(,r)C 1.221 -(eadline will con\214gure the terminal in a w)-3.721 F 1.221 -(ay that will enable it to insert each)-.1 F .353 -(paste into the editing b)144 564 R(uf)-.2 E .353(fer as a single strin\ -g of characters, instead of treating each character as if)-.25 F .544 -(it had been read from the k)144 576 R -.15(ey)-.1 G 3.043(board. This) -.15 F .543(can pre)3.043 F -.15(ve)-.25 G .543 -(nt pasted characters from being interpreted as).15 F(editing commands.) -144 588 Q F1(enable\255k)108 600 Q(eypad \(Off\))-.1 E F0 .892 -(When set to)144 612 R F1(On)3.393 E F0 3.393(,r)C .893 +144 96 Q/F1 10/Times-Bold@0 SF(enable\255acti)108 108 Q -.1(ve)-.1 G +.1 E(egion \(On\))-.18 E F0(The)144 120 Q/F2 10/Times-Italic@0 SF +(point)3.245 E F0 .746(is the current cursor position, and)3.245 F F2 +(mark)3.246 E F0 .746(refers to a sa)3.246 F -.15(ve)-.2 G 3.246(dc).15 +G .746(ursor position.)-3.246 F .746(The te)5.746 F .746(xt be-)-.15 F +.344(tween the point and mark is referred to as the)144 132 R F2 -.37 +(re)2.844 G(gion)-.03 E F0 5.344(.W)C .344(hen this v)-5.344 F .344 +(ariable is set to)-.25 F F2(On)2.844 E F0 2.844(,r)C .344(eadline al-) +-2.844 F(lo)144 144 Q .098(ws certain commands to designate the re)-.25 +F .098(gion as)-.15 F F2(active)2.598 E F0 5.098(.W)C .098(hen the re) +-5.098 F .098(gion is acti)-.15 F -.15(ve)-.25 G 2.598(,r).15 G .098 +(eadline high-)-2.598 F .971(lights the te)144 156 R .971(xt in the re) +-.15 F .971(gion using the v)-.15 F .971(alue of the)-.25 F F1(acti)3.47 +E -.1(ve)-.1 G.1 E(egion\255start\255color)-.18 E F0 3.47(,w)C .97 +(hich def)-3.47 F .97(aults to)-.1 F .484 +(the string that enables the terminal')144 168 R 2.985(ss)-.55 G .485 +(tandout mode.)-2.985 F .485(The acti)5.485 F .785 -.15(ve r)-.25 H -.15 +(eg).15 G .485(ion sho).15 F .485(ws the te)-.25 F .485(xt inserted by) +-.15 F(brack)144 180 Q(eted-paste and an)-.1 E 2.5(ym)-.15 G(atching te) +-2.5 E(xt found by incremental and non-incremental history searches.) +-.15 E F1(enable\255brack)108 192 Q(eted\255paste \(On\))-.1 E F0 .841 +(When set to)144 204 R F1(On)3.341 E F0 3.341(,r)C .841(eadline con\214\ +gures the terminal to insert each paste into the editing b)-3.341 F(uf) +-.2 E .84(fer as a)-.25 F .799(single string of characters, instead of \ +treating each character as if it had been read from the k)144 216 R -.15 +(ey)-.1 G(-).15 E 3.159(board. This)144 228 R(pre)3.159 E -.15(ve)-.25 G +.659(nts readline from e).15 F -.15(xe)-.15 G .659(cuting an).15 F 3.158 +(ye)-.15 G .658(diting commands bound to k)-3.158 F .958 -.15(ey s)-.1 H +.658(equences ap-).15 F(pearing in the pasted te)144 240 Q(xt.)-.15 E F1 +(enable\255k)108 252 Q(eypad \(Off\))-.1 E F0 .892(When set to)144 264 R +F1(On)3.393 E F0 3.393(,r)C .893 (eadline will try to enable the application k)-3.393 F -.15(ey)-.1 G .893(pad when it is called.).15 F .893(Some sys-)5.893 F -(tems need this to enable the arro)144 624 Q 2.5(wk)-.25 G -.15(ey)-2.6 -G(s.).15 E F1(enable\255meta\255k)108 636 Q(ey \(On\))-.1 E F0 .64 -(When set to)144 648 R F1(On)3.14 E F0 3.14(,r)C .64 +(tems need this to enable the arro)144 276 Q 2.5(wk)-.25 G -.15(ey)-2.6 +G(s.).15 E F1(enable\255meta\255k)108 288 Q(ey \(On\))-.1 E F0 .64 +(When set to)144 300 R F1(On)3.14 E F0 3.14(,r)C .64 (eadline will try to enable an)-3.14 F 3.14(ym)-.15 G .64 (eta modi\214er k)-3.14 F .94 -.15(ey t)-.1 H .64 -(he terminal claims to support).15 F(when it is called.)144 660 Q +(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 672 Q F0(If set to)144 684 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 696 Q(eser)-.18 E -.1 -(ve)-.1 G(\255point \(Off\)).1 E F0 .552(If set to)144 708 R F1(On)3.052 +-.15 E(ord completion.)-.1 E F1(history\255pr)108 348 Q(eser)-.18 E -.1 +(ve)-.1 G(\255point \(Off\)).1 E F0 .552(If set to)144 360 R F1(On)3.052 E F0 3.052(,t)C .552(he history code attempts to place point at the sam\ -e location on each history line re-)-3.052 F(trie)144 720 Q -.15(ve)-.25 +e location on each history line re-)-3.052 F(trie)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(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(42)190.395 E 0 Cg EP -%%Page: 43 43 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(history\255size \(unset\))108 84 Q F0 .949 -(Set the maximum number of history entries sa)144 96 R -.15(ve)-.2 G -3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)-3.448 F .948 -(If set to zero, an)5.948 F 3.448(ye)-.15 G(xisting)-3.598 E .482 -(history entries are deleted and no ne)144 108 R 2.982(we)-.25 G .483 -(ntries are sa)-2.982 F -.15(ve)-.2 G 2.983(d. If).15 F .483(set to a v) -2.983 F .483(alue less than zero, the num-)-.25 F .278 -(ber of history entries is not limited.)144 120 R .277(By def)5.278 F +F0(or)2.5 E F1(next-history)2.5 E F0(.)A F1(history\255size \(unset\)) +108 384 Q F0 .949(Set the maximum number of history entries sa)144 396 R +-.15(ve)-.2 G 3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.) +-3.448 F .948(If set to zero, an)5.948 F 3.448(ye)-.15 G(xisting)-3.598 +E .482(history entries are deleted and no ne)144 408 R 2.982(we)-.25 G +.483(ntries are sa)-2.982 F -.15(ve)-.2 G 2.983(d. If).15 F .483 +(set to a v)2.983 F .483(alue less than zero, the num-)-.25 F .278 +(ber of history entries is not limited.)144 420 R .277(By def)5.278 F .277(ault, the number of history entries is set to the v)-.1 F .277 -(alue of)-.25 F(the)144 132 Q F1(HISTSIZE)3.41 E F0 .91(shell v)3.41 F -3.41(ariable. If)-.25 F .911(an attempt is made to set)3.41 F/F2 10 -/Times-Italic@0 SF(history\255size)3.411 E F0 .911(to a non-numeric v) -3.411 F(alue,)-.25 E -(the maximum number of history entries will be set to 500.)144 144 Q F1 -(horizontal\255scr)108 156 Q(oll\255mode \(Off\))-.18 E F0 .449 -(When set to)144 168 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448 +(alue of)-.25 F(the)144 432 Q F1(HISTSIZE)3.41 E F0 .91(shell v)3.41 F +3.41(ariable. If)-.25 F .911(an attempt is made to set)3.41 F F2 +(history\255size)3.411 E F0 .911(to a non-numeric v)3.411 F(alue,)-.25 E +(the maximum number of history entries will be set to 500.)144 444 Q F1 +(horizontal\255scr)108 456 Q(oll\255mode \(Off\))-.18 E F0 .449 +(When set to)144 468 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448 (es readline use a single line for display)-.1 F 2.948(,s)-.65 G .448 (crolling the input horizontally on a)-2.948 F 1.194(single screen line\ when it becomes longer than the screen width rather than wrapping to a\ - ne)144 180 R(w)-.25 E 2.5(line. This)144 192 R + ne)144 480 R(w)-.25 E 2.5(line. This)144 492 R (setting is automatically enabled for terminals of height 1.)2.5 E F1 -(input\255meta \(Off\))108 204 Q F0 1.062(If set to)144 216 R F1(On) +(input\255meta \(Off\))108 504 Q F0 1.062(If set to)144 516 R F1(On) 3.562 E F0 3.562(,r)C 1.061(eadline will enable eight-bit input \(that \ is, it will not strip the eighth bit from the)-3.562 F .335 -(characters it reads\), re)144 228 R -.05(ga)-.15 G .335 +(characters it reads\), re)144 528 R -.05(ga)-.15 G .335 (rdless of what the terminal claims it can support.).05 F .336(The name) -5.336 F F1(meta\255\215ag)2.836 E F0(is)2.836 E 2.865(as)144 240 S(ynon) +5.336 F F1(meta\255\215ag)2.836 E F0(is)2.836 E 2.865(as)144 540 S(ynon) -2.865 E .365(ym for this v)-.15 F 2.864(ariable. The)-.25 F(def)2.864 E .364(ault is)-.1 F F2(Of)2.864 E(f)-.18 E F0 2.864(,b)C .364 (ut readline will set it to)-3.064 F F2(On)2.864 E F0 .364 -(if the locale contains)2.864 F(eight-bit characters.)144 252 Q F1 -(isear)108 264 Q(ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\)) +(if the locale contains)2.864 F 1.866(eight-bit characters.)144 552 R +1.866(This v)6.866 F 1.867(ariable is dependent on the)-.25 F F1 +(LC_CTYPE)4.367 E F0 1.867(locale cate)4.367 F(gory)-.15 E 4.367(,a)-.65 +G 1.867(nd may)-4.367 F(change if the locale is changed.)144 564 Q F1 +(isear)108 576 Q(ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\)) -.63 E F0 .439(The string of characters that should terminate an increm\ -ental search without subsequently e)144 276 R -.15(xe)-.15 G(cut-).15 E -.935(ing the character as a command.)144 288 R .935(If this v)5.935 F -.935(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.434(nav).15 G .934 -(alue, the characters)-3.684 F F2(ESC)3.434 E F0(and)144 300 Q F2 +ental search without subsequently e)144 588 R -.15(xe)-.15 G(cut-).15 E +.934(ing the character as a command.)144 600 R .935(If this v)5.935 F +.935(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.435(nav).15 G .935 +(alue, the characters)-3.685 F F2(ESC)3.435 E F0(and)144 612 Q F2 (C\255J)2.5 E F0(will terminate an incremental search.)2.5 E F1 -.1(ke) -108 312 S(ymap \(emacs\)).1 E F0 2.02(Set the current readline k)144 324 -R -.15(ey)-.1 G 4.521(map. The).15 F 2.021(set of v)4.521 F 2.021 -(alid k)-.25 F -.15(ey)-.1 G 2.021(map names is).15 F F2 2.021 -(emacs, emacs\255standar)4.521 F(d,)-.37 E .042 -(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 336 R F0 2.542(,a)C +108 624 S(ymap \(emacs\)).1 E F0 2.021(Set the current readline k)144 +636 R -.15(ey)-.1 G 4.521(map. The).15 F 2.021(set of v)4.521 F 2.021 +(alid k)-.25 F -.15(ey)-.1 G 2.021(map names is).15 F F2 2.02 +(emacs, emacs\255standar)4.52 F(d,)-.37 E .041 +(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 648 R F0 2.542(,a)C (nd)-2.542 E F2(vi\255insert)2.832 E F0(.).68 E F2(vi)5.042 E F0 .042 (is equi)2.542 F -.25(va)-.25 G .042(lent to).25 F F2(vi\255command) -2.541 E F0(;)A F2(emacs)2.541 E F0 .448(is equi)144 348 R -.25(va)-.25 G -.448(lent to).25 F F2(emacs\255standar)2.948 E(d)-.37 E F0 5.448(.T)C -.448(he def)-5.448 F .448(ault v)-.1 F .449(alue is)-.25 F F2(emacs) -3.139 E F0 2.949(;t).27 G .449(he v)-2.949 F .449(alue of)-.25 F F1 -(editing\255mode)2.949 E F0 .449(also af-)2.949 F(fects the def)144 360 -Q(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -.1(ke)108 372 S -(yseq\255timeout \(500\)).1 E F0 .368(Speci\214es the duration)144 384 R +2.542 E F0(;)A F2(emacs)2.542 E F0 .449(is equi)144 660 R -.25(va)-.25 G +.449(lent to).25 F F2(emacs\255standar)2.949 E(d)-.37 E F0 5.449(.T)C +.449(he def)-5.449 F .449(ault v)-.1 F .449(alue is)-.25 F F2(emacs) +3.139 E F0 2.948(;t).27 G .448(he v)-2.948 F .448(alue of)-.25 F F1 +(editing\255mode)2.948 E F0 .448(also af-)2.948 F(fects the def)144 672 +Q(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -.1(ke)108 684 S +(yseq\255timeout \(500\)).1 E F0 .367(Speci\214es the duration)144 696 R F2 -.37(re)2.867 G(adline).37 E F0 .367(will w)2.867 F .367 -(ait for a character when reading an ambiguous k)-.1 F .667 -.15(ey s) --.1 H(equence).15 E .524(\(one that can form a complete k)144 396 R .824 +(ait for a character when reading an ambiguous k)-.1 F .668 -.15(ey s) +-.1 H(equence).15 E .525(\(one that can form a complete k)144 708 R .825 -.15(ey s)-.1 H .524(equence using the input read so f).15 F(ar)-.1 E -3.025(,o)-.4 G 3.025(rc)-3.025 G .525(an tak)-3.025 F 3.025(ea)-.1 G -.525(dditional in-)-3.025 F .807(put to complete a longer k)144 408 R +3.024(,o)-.4 G 3.024(rc)-3.024 G .524(an tak)-3.024 F 3.024(ea)-.1 G +.524(dditional in-)-3.024 F .806(put to complete a longer k)144 720 R 1.106 -.15(ey s)-.1 H 3.306(equence\). If).15 F .806(no input is recei) -3.306 F -.15(ve)-.25 G 3.306(dw).15 G .806(ithin the timeout,)-3.306 F -F2 -.37(re)3.306 G(adline).37 E F0(will)3.306 E .906(use the shorter b) -144 420 R .907(ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407 -(equence. The).15 F -.25(va)3.407 G .907 -(lue is speci\214ed in milliseconds, so a v).25 F .907(alue of)-.25 F -.05(1000 means that)144 432 R F2 -.37(re)2.55 G(adline).37 E F0 .05 -(will w)2.55 F .05(ait one second for additional input.)-.1 F .05 -(If this v)5.05 F .05(ariable is set to a v)-.25 F(alue)-.25 E .051 -(less than or equal to zero, or to a non-numeric v)144 444 R(alue,)-.25 -E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051 -(ait until another k)-.1 F .352 -.15(ey i)-.1 H 2.552(sp).15 G(ressed) --2.552 E(to decide which k)144 456 Q .3 -.15(ey s)-.1 H -(equence to complete.).15 E F1(mark\255dir)108 468 Q(ectories \(On\)) --.18 E F0(If set to)144 480 Q F1(On)2.5 E F0 2.5(,c)C +3.306 F -.15(ve)-.25 G 3.306(dw).15 G .807(ithin the timeout,)-3.306 F +F2 -.37(re)3.307 G(adline).37 E F0(will)3.307 E(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(45)185.115 E 0 Cg EP +%%Page: 46 46 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .907 +(use the shorter b)144 84 R .907(ut complete k)-.2 F 1.207 -.15(ey s)-.1 +H 3.407(equence. The).15 F -.25(va)3.407 G .907 +(lue is speci\214ed in milliseconds, so a v).25 F .906(alue of)-.25 F +.05(1000 means that)144 96 R/F1 10/Times-Italic@0 SF -.37(re)2.55 G +(adline).37 E F0 .05(will w)2.55 F .05 +(ait one second for additional input.)-.1 F .05(If this v)5.05 F .05 +(ariable is set to a v)-.25 F(alue)-.25 E .051 +(less than or equal to zero, or to a non-numeric v)144 108 R(alue,)-.25 +E F1 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051 +(ait until another k)-.1 F .351 -.15(ey i)-.1 H 2.551(sp).15 G(ressed) +-2.551 E(to decide which k)144 120 Q .3 -.15(ey s)-.1 H +(equence to complete.).15 E/F2 10/Times-Bold@0 SF(mark\255dir)108 132 Q +(ectories \(On\))-.18 E F0(If set to)144 144 Q F2(On)2.5 E F0 2.5(,c)C (ompleted directory names ha)-2.5 E .3 -.15(ve a s)-.2 H(lash appended.) -.15 E F1(mark\255modi\214ed\255lines \(Off\))108 492 Q F0(If set to)144 -504 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b) --.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F1 -(*)A F0(\).)A F1(mark\255symlink)108 516 Q(ed\255dir)-.1 E -(ectories \(Off\))-.18 E F0 .175(If set to)144 528 R F1(On)2.675 E F0 +.15 E F2(mark\255modi\214ed\255lines \(Off\))108 156 Q F0(If set to)144 +168 Q F2(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b) +-.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F2 +(*)A F0(\).)A F2(mark\255symlink)108 180 Q(ed\255dir)-.1 E +(ectories \(Off\))-.18 E F0 .175(If set to)144 192 R F2(On)2.675 E F0 2.675(,c)C .175 (ompleted names which are symbolic links to directories ha)-2.675 F .475 --.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 540 -Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1 -(match\255hidden\255\214les \(On\))108 552 Q F0 .192(This v)144 564 R -.192(ariable, when set to)-.25 F F1(On)2.692 E F0 2.692(,c)C .192 -(auses readline to match \214les whose names be)-2.692 F .193 -(gin with a `.)-.15 F 2.693('\()-.7 G(hidden)-2.693 E .457 -(\214les\) when performing \214lename completion.)144 576 R .456 -(If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.) --2.956 F 2.956('m)-.7 G .456(ust be supplied by the)-2.956 F -(user in the \214lename to be completed.)144 588 Q F1 -(menu\255complete\255display\255pr)108 600 Q(e\214x \(Off\))-.18 E F0 -1.585(If set to)144 612 R F1(On)4.085 E F0 4.085(,m)C 1.585(enu complet\ +-.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 204 +Q(alue of)-.25 E F2(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F2 +(match\255hidden\255\214les \(On\))108 216 Q F0 .193(This v)144 228 R +.193(ariable, when set to)-.25 F F2(On)2.693 E F0 2.693(,c)C .192 +(auses readline to match \214les whose names be)-2.693 F .192 +(gin with a `.)-.15 F 2.692('\()-.7 G(hidden)-2.692 E .456 +(\214les\) when performing \214lename completion.)144 240 R .456 +(If set to)5.456 F F2(Off)2.956 E F0 2.956(,t)C .456(he leading `.) +-2.956 F 2.956('m)-.7 G .457(ust be supplied by the)-2.956 F +(user in the \214lename to be completed.)144 252 Q F2 +(menu\255complete\255display\255pr)108 264 Q(e\214x \(Off\))-.18 E F0 +1.586(If set to)144 276 R F2(On)4.086 E F0 4.086(,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 624 Q -(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 636 Q F0 -.507(If set to)144 648 R F1(On)3.007 E F0 3.007(,r)C .507(eadline will \ +-4.086 F(\(which may be empty\) before c)144 288 Q +(ycling through the list.)-.15 E F2(output\255meta \(Off\))108 300 Q F0 +.506(If set to)144 312 R F2(On)3.006 E F0 3.006(,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 660 Q .884(ed escape sequence.)-.15 F .884 -(The def)5.884 F .884(ault is)-.1 F F2(Of)3.384 E(f)-.18 E F0 3.384(,b)C -.884(ut readline will set it to)-3.584 F F2(On)3.384 E F0 .885 -(if the locale contains)3.384 F(eight-bit characters.)144 672 Q F1 -(page\255completions \(On\))108 684 Q F0 .809(If set to)144 696 R F1(On) -3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F2(mor) +ta-)-3.006 F(pre\214x)144 324 Q .885(ed escape sequence.)-.15 F .884 +(The def)5.884 F .884(ault is)-.1 F F1(Of)3.384 E(f)-.18 E F0 3.384(,b)C +.884(ut readline will set it to)-3.584 F F1(On)3.384 E F0 .884 +(if the locale contains)3.384 F 1.866(eight-bit characters.)144 336 R +1.866(This v)6.866 F 1.867(ariable is dependent on the)-.25 F F2 +(LC_CTYPE)4.367 E F0 1.867(locale cate)4.367 F(gory)-.15 E 4.367(,a)-.65 +G 1.867(nd may)-4.367 F(change if the locale is changed.)144 348 Q F2 +(page\255completions \(On\))108 360 Q F0 .809(If set to)144 372 R F2(On) +3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F1(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 708 Q(GNU Bash 5.1)72 768 Q(2020 October 29) -141.235 E(43)190.395 E 0 Cg EP -%%Page: 44 44 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(print\255completions\255horizontally \(Off\))108 84 Q F0 .227 -(If set to)144 96 R F1(On)2.727 E F0 2.727(,r)C .227(eadline will displ\ -ay completions with matches sorted horizontally in alphabetical or) --2.727 F(-)-.2 E(der)144 108 Q 2.5(,r)-.4 G(ather than do)-2.5 E -(wn the screen.)-.25 E F1 -2.29 -.18(re v)108 120 T -(ert\255all\255at\255newline \(Off\)).08 E F0 .699(If set to)144 132 R -F1(On)3.199 E F0 3.199(,r)C .699 +(tions at a time.)144 384 Q F2 +(print\255completions\255horizontally \(Off\))108 396 Q F0 .227 +(If set to)144 408 R F2(On)2.727 E F0 2.727(,r)C .227(eadline will disp\ +lay completions with matches sorted horizontally in alphabetical or) +-2.727 F(-)-.2 E(der)144 420 Q 2.5(,r)-.4 G(ather than do)-2.5 E +(wn the screen.)-.25 E F2 -2.29 -.18(re v)108 432 T +(ert\255all\255at\255newline \(Off\)).08 E F0 .699(If set to)144 444 R +F2(On)3.199 E F0 3.199(,r)C .699 (eadline will undo all changes to history lines before returning when) --3.199 F F1(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 144 S +-3.199 F F2(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 456 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 156 S(adline) -.18 E F0(.)A F1(sho)108 168 Q(w\255all\255if\255ambiguous \(Off\))-.1 E -F0 .304(This alters the def)144 180 R .304(ault beha)-.1 F .304 -(vior of the completion functions.)-.2 F .304(If set to)5.304 F F1(On) +(vidual undo lists across calls to)-.25 F F2 -.18(re)144 468 S(adline) +.18 E F0(.)A F2(sho)108 480 Q(w\255all\255if\255ambiguous \(Off\))-.1 E +F0 .304(This alters the def)144 492 R .304(ault beha)-.1 F .304 +(vior of the completion functions.)-.2 F .304(If set to)5.304 F F2(On) 2.804 E F0 2.803(,w)C .303(ords which ha)-2.903 F .603 -.15(ve m)-.2 H (ore).15 E 1.264(than one possible completion cause the matches to be l\ -isted immediately instead of ringing the)144 192 R(bell.)144 204 Q F1 -(sho)108 216 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346 -(This alters the def)144 228 R 5.346(ault beha)-.1 F 5.345 +isted immediately instead of ringing the)144 504 R(bell.)144 516 Q F2 +(sho)108 528 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346 +(This alters the def)144 540 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 240 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C -4.19(fs)-6.69 G 1.691(et to)-4.19 F F1(On)4.191 E F0 4.191(,w)C 1.691 +-.1 F F2(sho)144 552 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C +4.19(fs)-6.69 G 1.691(et to)-4.19 F F2(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.04(without an)144 252 R 3.54 +(ore than one possible completion).15 F 1.04(without an)144 564 R 3.54 (yp)-.15 G 1.039 (ossible partial completion \(the possible completions don')-3.54 F 3.539(ts)-.18 G 1.039(hare a common pre\214x\))-3.539 F(cause the match\ -es to be listed immediately instead of ringing the bell.)144 264 Q F1 -(sho)108 276 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021 -(If set to)144 288 R F1(On)3.521 E F0 3.521(,a)C 1.022 +es to be listed immediately instead of ringing the bell.)144 576 Q F2 +(sho)108 588 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021 +(If set to)144 600 R F2(On)3.521 E F0 3.521(,a)C 1.022 (dd a string to the be)-3.521 F 1.022 (ginning of the prompt indicating the editing mode: emacs, vi)-.15 F -(command, or vi insertion.)144 300 Q(The mode strings are user)5 E -(-settable \(e.g.,)-.2 E/F2 10/Times-Italic@0 SF -(emacs\255mode\255string)2.5 E F0(\).)A F1 -(skip\255completed\255text \(Off\))108 312 Q F0 .095(If set to)144 324 R -F1(On)2.595 E F0 2.595(,t)C .095(his alters the def)-2.595 F .095 +(command, or vi insertion.)144 612 Q(The mode strings are user)5 E +(-settable \(e.g.,)-.2 E F1(emacs\255mode\255string)2.5 E F0(\).)A F2 +(skip\255completed\255text \(Off\))108 624 Q F0 .095(If set to)144 636 R +F2(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 336 Q +(vior when inserting a single match into the line.)-.2 F(It')144 648 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 348 R -1.394(ord being com-)-.1 F(pleted, so portions of the w)144 360 Q -(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1 -(vi\255cmd\255mode\255string \(\(cmd\)\))108 372 Q F0 .517(If the)144 -384 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G +the completion that match characters after point in the w)144 660 R +1.394(ord being com-)-.1 F(pleted, so portions of the w)144 672 Q +(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F2 +(vi\255cmd\255mode\255string \(\(cmd\)\))108 684 Q F0 .517(If the)144 +696 R F1(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G .518(riable is enabled, this string is displayed immediately before the) .25 F .475(last line of the primary prompt when vi editing mode is acti) -144 396 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475 -(The v)5.475 F(alue)-.25 E .33(is e)144 408 R .33(xpanded lik)-.15 F -2.83(eak)-.1 G .63 -.15(ey b)-2.93 H .33 -(inding, so the standard set of meta- and control pre\214x).15 F .33 -(es and backslash es-)-.15 F .245(cape sequences is a)144 420 R -.25(va) --.2 G 2.745(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.745 F -.244(gin and end sequences of non-printing)-.15 F(characters, which can\ - be used to embed a terminal control sequence into the mode string.)144 -432 Q F1(vi\255ins\255mode\255string \(\(ins\)\))108 444 Q F0 .517 -(If the)144 456 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 --.25(va)3.017 G .518 +144 708 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475 +(The v)5.475 F(alue)-.25 E 1.235(is e)144 720 R 1.235(xpanded lik)-.15 F +3.735(eak)-.1 G 1.535 -.15(ey b)-3.835 H 1.236 +(inding, so the standard set of meta- and control pre\214x).15 F 1.236 +(es and backslash)-.15 F(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 +E(46)185.115 E 0 Cg EP +%%Page: 47 47 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .315 +(escape sequences is a)144 84 R -.25(va)-.2 G 2.815(ilable. Use).25 F +.314(the \\1 and \\2 escapes to be)2.815 F .314 +(gin and end sequences of non-print-)-.15 F(ing characters, which can b\ +e used to embed a terminal control sequence into the mode string.)144 96 +Q/F1 10/Times-Bold@0 SF(vi\255ins\255mode\255string \(\(ins\)\))108 108 +Q F0 .517(If the)144 120 R/F2 10/Times-Italic@0 SF +(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G .518 (riable is enabled, this string is displayed immediately before the).25 F .186(last line of the primary prompt when vi editing mode is acti)144 -468 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .186(The v) -5.186 F .186(alue is)-.25 F -.15(ex)144 480 S .923(panded lik).15 F +132 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .186(The v) +5.186 F .186(alue is)-.25 F -.15(ex)144 144 S .923(panded lik).15 F 3.423(eak)-.1 G 1.223 -.15(ey b)-3.523 H .924 (inding, so the standard set of meta- and control pre\214x).15 F .924 -(es and backslash es-)-.15 F .245(cape sequences is a)144 492 R -.25(va) +(es and backslash es-)-.15 F .245(cape sequences is a)144 156 R -.25(va) -.2 G 2.745(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.745 F .244(gin and end sequences of non-printing)-.15 F(characters, which can\ be used to embed a terminal control sequence into the mode string.)144 -504 Q F1(visible\255stats \(Off\))108 516 Q F0 .846(If set to)144 528 R +168 Q F1(visible\255stats \(Off\))108 180 Q F0 .846(If set to)144 192 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 540 Q F1 -(Readline Conditional Constructs)87 556.8 Q F0 .05 -(Readline implements a f)108 568.8 R .05(acility similar in spirit to t\ +(when listing possible completions.)144 204 Q F1 +(Readline Conditional Constructs)87 220.8 Q F0 .05 +(Readline implements a f)108 232.8 R .05(acility similar in spirit to t\ he conditional compilation features of the C preprocessor)-.1 F .096 -(which allo)108 580.8 R .096(ws k)-.25 F .396 -.15(ey b)-.1 H .096 +(which allo)108 244.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 .097 -(There are four parser)5.096 F(directi)108 592.8 Q -.15(ve)-.25 G 2.5 -(su).15 G(sed.)-2.5 E F1($if)108 609.6 Q F0(The)144 609.6 Q F1($if)2.963 +(There are four parser)5.096 F(directi)108 256.8 Q -.15(ve)-.25 G 2.5 +(su).15 G(sed.)-2.5 E F1($if)108 273.6 Q F0(The)144 273.6 Q F1($if)2.963 E F0 .463(construct allo)2.963 F .462(ws bindings to be made based on t\ he editing mode, the terminal being used,)-.25 F -(or the application using readline.)144 621.6 Q(The te)5 E +(or the application using readline.)144 285.6 Q(The te)5 E (xt of the test, after an)-.15 E 2.5(yc)-.15 G(omparison operator)-2.5 E -(,)-.4 E -.15(ex)146.5 633.6 S(tends to the end of the line; unless oth\ +(,)-.4 E -.15(ex)146.5 297.6 S(tends to the end of the line; unless oth\ erwise noted, no characters are required to isolate it.).15 E F1(mode) -144 650.4 Q F0(The)180 650.4 Q F1(mode=)3.711 E F0 1.211(form of the) +144 314.4 Q F0(The)180 314.4 Q F1(mode=)3.711 E F0 1.211(form of the) 3.711 F F1($if)3.711 E F0(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711 (su).15 G 1.211(sed to test whether readline is in emacs or vi)-3.711 F -3.065(mode. This)180 662.4 R .565(may be used in conjunction with the) +3.065(mode. This)180 326.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 674.4 R +(command, for instance, to)3.065 F .735(set bindings in the)180 338.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 686.4 Q F1(term)144 703.2 Q F0(The)180 703.2 Q +(out in emacs mode.)180 350.4 Q F1(term)144 367.2 Q F0(The)180 367.2 Q F1(term=)3.197 E F0 .696 (form may be used to include terminal-speci\214c k)3.197 F .996 -.15 -(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 715.2 R +(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 379.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 727.2 Q F1(=)3.232 +(wo)3.154 G .654(rd on the right side of).1 F(the)180 391.2 Q F1(=)3.232 E F0 .732(is tested ag)3.232 F .732(ainst both the full name of the ter\ -minal and the portion of the terminal)-.05 F(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(44)190.395 E 0 Cg EP -%%Page: 45 45 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(name before the \214rst)180 84 Q/F1 10/Times-Bold@0 SF2.5 E F0 5 -(.T)C(his allo)-5 E(ws)-.25 E/F2 10/Times-Italic@0 SF(sun)2.84 E F0 +minal and the portion of the terminal)-.05 F(name before the \214rst)180 +403.2 Q F12.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0 (to match both)2.74 E F2(sun)2.84 E F0(and)2.74 E F2(sun\255cmd)2.84 E -F0 2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 100.8 S(rsion).1 E F0 -(The)180 112.8 Q F1 -.1(ve)3.108 G(rsion).1 E F0 .608 +F0 2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 420 S(rsion).1 E F0 +(The)180 432 Q F1 -.1(ve)3.108 G(rsion).1 E F0 .608 (test may be used to perform comparisons ag)3.108 F .609 -(ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 124.8 Q F1 --.1(ve)2.772 G(rsion).1 E F0 -.15(ex)2.772 G .272 +(ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 444 Q F1 -.1 +(ve)2.772 G(rsion).1 E F0 -.15(ex)2.772 G .272 (pands to the current readline v).15 F 2.771(ersion. The)-.15 F .271 -(set of comparison operators in-)2.771 F(cludes)180 136.8 Q F1(=)3.063 E +(set of comparison operators in-)2.771 F(cludes)180 456 Q F1(=)3.063 E F0 3.063(,\()C(and)-3.063 E F1(==)3.063 E F0(\),)A F1(!=)3.063 E F0(,)A F1(<=)3.063 E F0(,)A F1(>=)3.063 E F0(,)A F1(<)3.063 E F0 3.063(,a)C(nd) -3.063 E F1(>)3.064 E F0 5.564(.T)C .564(he v)-5.564 F .564 (ersion number supplied on the right side)-.15 F .318 -(of the operator consists of a major v)180 148.8 R .318(ersion number) --.15 F 2.818(,a)-.4 G 2.818(no)-2.818 G .318 -(ptional decimal point, and an op-)-2.818 F .1(tional minor v)180 160.8 -R .1(ersion \(e.g.,)-.15 F F1(7.1)2.6 E F0 .1(\). If the minor v)B .101 +(of the operator consists of a major v)180 468 R .318(ersion number)-.15 +F 2.818(,a)-.4 G 2.818(no)-2.818 G .318 +(ptional decimal point, and an op-)-2.818 F .1(tional minor v)180 480 R +.1(ersion \(e.g.,)-.15 F F1(7.1)2.6 E F0 .1(\). If the minor v)B .101 (ersion is omitted, it is assumed to be)-.15 F F1(0)2.601 E F0 5.101(.T) -C(he)-5.101 E .06(operator may be separated from the string)180 172.8 R -F1 -.1(ve)2.56 G(rsion).1 E F0 .06(and from the v)2.56 F .06 -(ersion number ar)-.15 F(gument)-.18 E(by whitespace.)180 184.8 Q F1 -(application)144 201.6 Q F0(The)180 213.6 Q F1(application)3.003 E F0 +C(he)-5.101 E .06(operator may be separated from the string)180 492 R F1 +-.1(ve)2.56 G(rsion).1 E F0 .06(and from the v)2.56 F .06 +(ersion number ar)-.15 F(gument)-.18 E(by whitespace.)180 504 Q F1 +(application)144 520.8 Q F0(The)180 532.8 Q F1(application)3.003 E F0 .503(construct is used to include application-speci\214c settings.)3.003 F .503(Each program)5.503 F .114(using the readline library sets the)180 -225.6 R F2 .114(application name)2.614 F F0 2.614(,a)C .114 +544.8 R F2 .114(application name)2.614 F F0 2.614(,a)C .114 (nd an initialization \214le can test for a)-2.614 F .5(particular v)180 -237.6 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15 +556.8 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15 (ey s)-.1 H .501(equences to functions useful for a spe-).15 F .397 -(ci\214c program.)180 249.6 R -.15(Fo)5.397 G 2.896(ri).15 G .396 +(ci\214c program.)180 568.8 R -.15(Fo)5.397 G 2.896(ri).15 G .396 (nstance, the follo)-2.896 F .396(wing command adds a k)-.25 F .696 -.15 -(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 261.6 -Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 285.6 Q F0 -(Bash)2.5 E 2.5(#Q)180 297.6 S(uote the current or pre)-2.5 E(vious w) --.25 E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 309.6 Q F1($endif)180 -321.6 Q F2(variable)144 338.4 Q F0(The)180 350.4 Q F2(variable)3.776 E +(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 580.8 +Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 604.8 Q F0 +(Bash)2.5 E 2.5(#Q)180 616.8 S(uote the current or pre)-2.5 E(vious w) +-.25 E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 628.8 Q F1($endif)180 +640.8 Q F2(variable)144 657.6 Q F0(The)180 669.6 Q F2(variable)3.776 E F0 1.276(construct pro)3.776 F 1.276 (vides simple equality tests for readline v)-.15 F 1.277(ariables and v) -.25 F(alues.)-.25 E .08(The permitted comparison operators are)180 -362.4 R F2(=)2.579 E F0(,)A F2(==)2.579 E F0 2.579(,a)C(nd)-2.579 E F2 +681.6 R F2(=)2.579 E F0(,)A F2(==)2.579 E F0 2.579(,a)C(nd)-2.579 E F2 (!=)2.579 E F0 5.079(.T)C .079(he v)-5.079 F .079 (ariable name must be sepa-)-.25 F .98(rated from the comparison operat\ -or by whitespace; the operator may be separated from)180 374.4 R .13 -(the v)180 386.4 R .13(alue on the right hand side by whitespace.)-.25 F +or by whitespace; the operator may be separated from)180 693.6 R .13 +(the v)180 705.6 R .13(alue on the right hand side by whitespace.)-.25 F .129(Both string and boolean v)5.129 F .129(ariables may be)-.25 F -(tested. Boolean v)180 398.4 Q(ariables must be tested ag)-.25 E +(tested. Boolean v)180 717.6 Q(ariables must be tested ag)-.25 E (ainst the v)-.05 E(alues)-.25 E F2(on)2.5 E F0(and)2.5 E F2(of)2.5 E(f) --.18 E F0(.)A F1($endif)108 415.2 Q F0(This command, as seen in the pre) -144 415.2 Q(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0 -(command.)2.5 E F1($else)108 432 Q F0(Commands in this branch of the)144 -432 Q F1($if)2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15 -(xe)-.15 G(cuted if the test f).15 E(ails.)-.1 E F1($include)108 448.8 Q -F0 .356(This directi)144 460.8 R .656 -.15(ve t)-.25 H(ak).15 E .356 +-.18 E F0(.)A(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(47) +185.115 E 0 Cg EP +%%Page: 48 48 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF($endif)108 84 Q F0(This command, as seen in the pre)144 84 Q(vious e) +-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0(command.)2.5 E F1 +($else)108 100.8 Q F0(Commands in this branch of the)144 100.8 Q F1($if) +2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G +(cuted if the test f).15 E(ails.)-.1 E F1($include)108 117.6 Q F0 .356 +(This directi)144 129.6 R .656 -.15(ve t)-.25 H(ak).15 E .356 (es a single \214lename as an ar)-.1 F .357 (gument and reads commands and bindings from that)-.18 F 2.5(\214le. F) -144 472.8 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 496.8 Q F2(/etc/inputr)5.833 E(c)-.37 E F1(Sear)87 513.6 Q -(ching)-.18 E F0 .835(Readline pro)108 525.6 R .835 +144 141.6 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 +-.15(ve w)-.25 H(ould read).05 E/F2 10/Times-Italic@0 SF(/etc/inputr)2.5 +E(c)-.37 E F0(:)A F1($include)144 165.6 Q F2(/etc/inputr)5.833 E(c)-.37 +E F1(Sear)87 182.4 Q(ching)-.18 E F0 .835(Readline pro)108 194.4 R .835 (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 537.6 Q +.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 206.4 Q (There are tw)5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.51 E (emental)-.37 E F0(and)3.01 E F2(non-incr)2.86 E(emental)-.37 E F0(.).51 -E .697(Incremental searches be)108 554.4 R .697 +E .697(Incremental searches be)108 223.2 R .697 (gin before the user has \214nished typing the search string.)-.15 F .698(As each character of the)5.698 F .113 -(search string is typed, readline displays the ne)108 566.4 R .112 +(search string is typed, readline displays the ne)108 235.2 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 578.4 R 3.042(yc)-.15 G +(incremental search requires only as man)108 247.2 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 590.4 R .224(alue of the)-.25 F F1(isear) +(acters present in the v)108 259.2 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 602.4 R .66(ariable has not been assigned a v)-.25 F .66 +(If that v)108 271.2 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 614.4 R .096(Control-G will abort an incremen\ +F .097(mental search.)108 283.2 R .096(Control-G will abort an incremen\ tal search and restore the original line.)5.097 F .096 (When the search is)5.096 F(terminated, the history entry containing th\ -e search string becomes the current line.)108 626.4 Q 2.938 -.8(To \214) -108 643.2 T 1.339(nd other matching entries in the history list, type C\ -ontrol-S or Control-R as appropriate.).8 F 1.339(This will)6.339 F .675 -(search backw)108 655.2 R .675(ard or forw)-.1 F .675 +e search string becomes the current line.)108 295.2 Q 2.938 -.8(To \214) +108 312 T 1.339(nd other matching entries in the history list, type Con\ +trol-S or Control-R as appropriate.).8 F 1.339(This will)6.339 F .675 +(search backw)108 324 R .675(ard or forw)-.1 F .675 (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 667.2 R .474 -.15(ey s)-.1 -H .174 +(.A)-.55 G -.15(ny)-5.674 G .174(other k)108 336 R .474 -.15(ey s)-.1 H +.174 (equence bound to a readline command will terminate the search and e).15 F -.15(xe)-.15 G .175(cute that command.).15 F -.15(Fo)5.175 G(r).15 E -.541(instance, a)108 679.2 R F2(ne)3.041 E(wline)-.15 E F0 .541 +.541(instance, a)108 348 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 691.2 -Q .653(Readline remembers the last incremental search string.)108 708 R +(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 360 Q +.653(Readline remembers the last incremental search string.)108 376.8 R .653(If tw)5.653 F 3.153(oC)-.1 G .653(ontrol-Rs are typed without an) -3.153 F 3.153(yi)-.15 G(nterv)-3.153 E(en-)-.15 E -(ing characters de\214ning a ne)108 720 Q 2.5(ws)-.25 G +(ing characters de\214ning a ne)108 388.8 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(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(45)190.395 E 0 Cg -EP -%%Page: 46 46 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .567(Non-incremen\ -tal searches read the entire search string before starting to search fo\ -r matching history lines.)108 84 R(The search string may be typed by th\ -e user or be part of the contents of the current line.)108 96 Q/F1 10 -/Times-Bold@0 SF(Readline Command Names)87 112.8 Q F0 1.391(The follo) -108 124.8 R 1.391 +-2.5 E .567(Non-incremental searches read the entire search string befo\ +re starting to search for matching history lines.)108 405.6 R(The searc\ +h string may be typed by the user or be part of the contents of the cur\ +rent line.)108 417.6 Q F1(Readline Command Names)87 434.4 Q F0 1.391 +(The follo)108 446.4 R 1.391 (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 136.8 R .122 +3.892(ya)-.15 G(re)-3.892 E 2.622(bound. Command)108 458.4 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 148.8 Q/F2 10 -/Times-Italic@0 SF(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 160.8 Q F0 2.5 +(the follo)2.621 F(wing)-.25 E(descriptions,)108 470.4 Q F2(point)3.41 E +F0 .91(refers to the current cursor position, and)3.41 F F2(mark)3.411 E +F0 .911(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.411(db) +.15 G 3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 482.4 Q F0 2.5 (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 177.6 Q(or Mo)-.25 E(ving)-.1 -E(beginning\255of\255line \(C\255a\))108 189.6 Q F0(Mo)144 201.6 Q .3 +2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 499.2 Q(or Mo)-.25 E(ving)-.1 +E(beginning\255of\255line \(C\255a\))108 511.2 Q F0(Mo)144 523.2 Q .3 -.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 213.6 Q F0(Mo)144 225.6 Q .3 -.15 +(end\255of\255line \(C\255e\))108 535.2 Q F0(Mo)144 547.2 Q .3 -.15 (ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 -237.6 S(rward\255char \(C\255f\)).25 E F0(Mo)144 249.6 Q .3 -.15(ve f) +559.2 S(rward\255char \(C\255f\)).25 E F0(Mo)144 571.2 Q .3 -.15(ve f) -.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F1 -(backward\255char \(C\255b\))108 261.6 Q F0(Mo)144 273.6 Q .3 -.15(ve b) --.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 285.6 S(rward\255w) -.25 E(ord \(M\255f\))-.1 E F0(Mo)144 297.6 Q .823 -.15(ve f)-.15 H(orw) +(backward\255char \(C\255b\))108 583.2 Q F0(Mo)144 595.2 Q .3 -.15(ve b) +-.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 607.2 S(rward\255w) +.25 E(ord \(M\255f\))-.1 E F0(Mo)144 619.2 Q .823 -.15(ve f)-.15 H(orw) .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 309.6 Q F1(backward\255w)108 321.6 Q -(ord \(M\255b\))-.1 E F0(Mo)144 333.6 Q 1.71 -.15(ve b)-.15 H 1.41 +(ters and digits\).)144 631.2 Q F1(backward\255w)108 643.2 Q +(ord \(M\255b\))-.1 E F0(Mo)144 655.2 Q 1.71 -.15(ve b)-.15 H 1.41 (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 345.6 Q F1(shell\255f)108 357.6 -Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 369.6 Q .784 -.15(ve f)-.15 H +(characters \(letters and digits\).)144 667.2 Q F1(shell\255f)108 679.2 +Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 691.2 Q .784 -.15(ve f)-.15 H (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 381.6 Q F1(shell\255backward\255w)108 393.6 Q(ord)-.1 E -F0(Mo)144 405.6 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 417.6 Q F1(pr)108 429.6 Q -.15(ev)-.18 G -(ious\255scr).15 E(een\255line)-.18 E F0 .891(Attempt to mo)144 441.6 R -1.191 -.15(ve p)-.15 H .891(oint to the same ph).15 F .891 -(ysical screen column on the pre)-.05 F .89(vious ph)-.25 F .89 -(ysical screen line.)-.05 F .87(This will not ha)144 453.6 R 1.17 -.15 -(ve t)-.2 H .87(he desired ef).15 F .87 -(fect if the current Readline line does not tak)-.25 F 3.37(eu)-.1 G -3.37(pm)-3.37 G .87(ore than one)-3.37 F(ph)144 465.6 Q(ysical line or \ -if point is not greater than the length of the prompt plus the screen w\ -idth.)-.05 E F1(next\255scr)108 477.6 Q(een\255line)-.18 E F0 .638 -(Attempt to mo)144 489.6 R .938 -.15(ve p)-.15 H .638 +-.8 F(ters.)144 703.2 Q(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 +E(48)185.115 E 0 Cg EP +%%Page: 49 49 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(shell\255backward\255w)108 84 Q(ord)-.1 E F0(Mo)144 96 Q .908 -.15 +(ve b)-.15 H .609(ack to the start of the current or pre).15 F .609 +(vious w)-.25 F 3.109(ord. W)-.1 F .609 +(ords are delimited by non-quoted shell)-.8 F(metacharacters.)144 108 Q +F1(pr)108 120 Q -.15(ev)-.18 G(ious\255scr).15 E(een\255line)-.18 E F0 +.891(Attempt to mo)144 132 R 1.191 -.15(ve p)-.15 H .891 +(oint to the same ph).15 F .891(ysical screen column on the pre)-.05 F +.89(vious ph)-.25 F .89(ysical screen line.)-.05 F 1.055 +(This will not ha)144 144 R 1.355 -.15(ve t)-.2 H 1.055(he desired ef) +.15 F 1.056(fect if the current readline line does not tak)-.25 F 3.556 +(eu)-.1 G 3.556(pm)-3.556 G 1.056(ore than one)-3.556 F(ph)144 156 Q(ys\ +ical line or if point is not greater than the length of the prompt plus\ + the screen width.)-.05 E F1(next\255scr)108 168 Q(een\255line)-.18 E F0 +.638(Attempt to mo)144 180 R .938 -.15(ve p)-.15 H .638 (oint to the same ph).15 F .637(ysical screen column on the ne)-.05 F -.637(xt ph)-.15 F .637(ysical screen line. This)-.05 F .008(will not ha) -144 501.6 R .309 -.15(ve t)-.2 H .009(he desired ef).15 F .009 -(fect if the current Readline line does not tak)-.25 F 2.509(eu)-.1 G -2.509(pm)-2.509 G .009(ore than one ph)-2.509 F(ysical)-.05 E .772(line\ - or if the length of the current Readline line is not greater than the \ -length of the prompt plus)144 513.6 R(the screen width.)144 525.6 Q F1 -(clear\255display \(M\255C\255l\))108 537.6 Q F0 1.498 -(Clear the screen and, if possible, the terminal')144 549.6 R 3.999(ss) +.637(xt ph)-.15 F .637(ysical screen line. This)-.05 F .194(will not ha) +144 192 R .494 -.15(ve t)-.2 H .194(he desired ef).15 F .194 +(fect if the current readline line does not tak)-.25 F 2.695(eu)-.1 G +2.695(pm)-2.695 G .195(ore than one ph)-2.695 F(ysical)-.05 E .164(line\ + or if the length of the current readline line is not greater than the \ +length of the prompt plus the)144 204 R(screen width.)144 216 Q F1 +(clear\255display \(M\255C\255l\))108 228 Q F0 1.498 +(Clear the screen and, if possible, the terminal')144 240 R 3.999(ss) -.55 G 1.499(crollback b)-3.999 F(uf)-.2 E(fer)-.25 E 3.999(,t)-.4 G 1.499(hen redra)-3.999 F 3.999(wt)-.15 G 1.499(he current line,)-3.999 F -(lea)144 561.6 Q(ving the current line at the top of the screen.)-.2 E -F1(clear\255scr)108 573.6 Q(een \(C\255l\))-.18 E F0 1.36 -(Clear the screen, then redra)144 585.6 R 3.86(wt)-.15 G 1.36 +(lea)144 252 Q(ving the current line at the top of the screen.)-.2 E F1 +(clear\255scr)108 264 Q(een \(C\255l\))-.18 E F0 1.36 +(Clear the screen, then redra)144 276 R 3.86(wt)-.15 G 1.36 (he current line, lea)-3.86 F 1.36 -(ving the current line at the top of the screen.)-.2 F -.4(Wi)144 597.6 -S(th an ar).4 E +(ving the current line at the top of the screen.)-.2 F -.4(Wi)144 288 S +(th an ar).4 E (gument, refresh the current line without clearing the screen.)-.18 E F1 --.18(re)108 609.6 S(draw\255curr).18 E(ent\255line)-.18 E F0 -(Refresh the current line.)144 621.6 Q F1(Commands f)87 638.4 Q +-.18(re)108 300 S(draw\255curr).18 E(ent\255line)-.18 E F0 +(Refresh the current line.)144 312 Q F1(Commands f)87 328.8 Q (or Manipulating the History)-.25 E(accept\255line \(Newline, Retur)108 -650.4 Q(n\))-.15 E F0 .158(Accept the line re)144 662.4 R -.05(ga)-.15 G +340.8 Q(n\))-.15 E F0 .158(Accept the line re)144 352.8 R -.05(ga)-.15 G .158(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 674.4 R/F3 9/Times-Bold@0 SF(HISTCONTR)3.199 E(OL)-.27 E F0 -.25(va) +144 364.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 686.4 Q F1(pr)108 -698.4 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 -(Fetch the pre)144 710.4 Q(vious command from the history list, mo)-.25 -E(ving back in the list.)-.15 E(GNU Bash 5.1)72 768 Q(2020 October 29) -141.235 E(46)190.395 E 0 Cg EP -%%Page: 47 47 +(restore the history line to its original state.)144 376.8 Q F1(pr)108 +388.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 +(Fetch the pre)144 400.8 Q(vious command from the history list, mo)-.25 +E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 412.8 +Q F0(Fetch the ne)144 424.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 436.8 Q F0(Mo)144 448.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 460.8 Q F0(Mo)144 472.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 +(operate\255and\255get\255next \(C\255o\))108 484.8 Q F0 .947 +(Accept the current line for e)144 496.8 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 .73 +(history for editing.)144 508.8 R 3.23(An)5.73 G .73(umeric ar)-3.23 F +.729 +(gument, if supplied, speci\214es the history entry to use instead of) +-.18 F(the current line.)144 520.8 Q F1(fetch\255history)108 532.8 Q F0 +-.4(Wi)144 544.8 S .256(th a numeric ar).4 F .256 +(gument, fetch that entry from the history list and mak)-.18 F 2.757(ei) +-.1 G 2.757(tt)-2.757 G .257(he current line.)-2.757 F -.4(Wi)5.257 G +(th-).4 E(out an ar)144 556.8 Q(gument, mo)-.18 E .3 -.15(ve b)-.15 H +(ack to the \214rst entry in the history list.).15 E F1 -2.29 -.18(re v) +108 568.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 1.471 +(Search backw)144 580.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 592.8 Q F1 -.25(fo)108 604.8 S +(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131 +(Search forw)144 616.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 628.8 Q F1 +(non\255incr)108 640.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 652.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 664.8 S +(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 676.8 Q +(emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18 +E F0 1.353(Search forw)144 688.8 R 1.354(ard through the history using \ +a non-incremental search for a string supplied by the)-.1 F(user)144 +700.8 Q(.)-.55 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(49) +185.115 E 0 Cg EP +%%Page: 50 50 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(next\255history \(C\255n\))108 84 Q F0(Fetch the ne)144 96 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 108 -Q F0(Mo)144 120 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 132 Q F0(Mo)144 144 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 -156 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 1.47 -(Search backw)144 168 R 1.471(ard starting at the current line and mo) --.1 F 1.471(ving `up' through the history as necessary)-.15 F(.)-.65 E -(This is an incremental search.)144 180 Q F1 -.25(fo)108 192 S -(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132 -(Search forw)144 204 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 216 Q F1(non\255incr)108 -228 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 240 R .164(ar\ -d through the history starting at the current line using a non-incremen\ -tal search for)-.1 F 2.5(as)144 252 S(tring supplied by the user)-2.5 E -(.)-.55 E F1(non\255incr)108 264 Q(emental\255f)-.18 E(orward\255sear) --.25 E(ch\255history \(M\255n\))-.18 E F0 1.354(Search forw)144 276 R -1.354(ard through the history using a non-incremental search for a stri\ -ng supplied by the)-.1 F(user)144 288 Q(.)-.55 E F1(history\255sear)108 -300 Q(ch\255f)-.18 E(orward)-.25 E F0 .248(Search forw)144 312 R .249(a\ -rd through the history for the string of characters between the start o\ -f the current line)-.1 F(and the point.)144 324 Q -(This is a non-incremental search.)5 E F1(history\255sear)108 336 Q -(ch\255backward)-.18 E F0 .951(Search backw)144 348 R .951(ard through \ -the history for the string of characters between the start of the curre\ -nt)-.1 F(line and the point.)144 360 Q -(This is a non-incremental search.)5 E F1(history\255substring\255sear) -108 372 Q(ch\255backward)-.18 E F0 .95(Search backw)144 384 R .951(ard \ -through the history for the string of characters between the start of t\ -he current)-.1 F .007(line and the current cursor position \(the)144 396 -R/F2 10/Times-Italic@0 SF(point)2.507 E F0 2.507(\). The)B .007 -(search string may match an)2.507 F .006(ywhere in a history)-.15 F 2.5 -(line. This)144 408 R(is a non-incremental search.)2.5 E F1 -(history\255substring\255sear)108 420 Q(ch\255f)-.18 E(orward)-.25 E F0 -.248(Search forw)144 432 R .249(ard through the history for the string \ -of characters between the start of the current line)-.1 F .319 -(and the point.)144 444 R .319(The search string may match an)5.319 F -.319(ywhere in a history line.)-.15 F .318(This is a non-incremental) -5.318 F(search.)144 456 Q F1(yank\255nth\255ar)108 468 Q 2.5(g\()-.1 G -<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 480 R .622 +SF(history\255sear)108 84 Q(ch\255f)-.18 E(orward)-.25 E F0 .249 +(Search forw)144 96 R .249(ard through the history for the string of ch\ +aracters between the start of the current line)-.1 F(and the point.)144 +108 Q(This is a non-incremental search.)5 E F1(history\255sear)108 120 Q +(ch\255backward)-.18 E F0 .95(Search backw)144 132 R .951(ard through t\ +he history for the string of characters between the start of the curren\ +t)-.1 F(line and the point.)144 144 Q(This is a non-incremental search.) +5 E F1(history\255substring\255sear)108 156 Q(ch\255backward)-.18 E F0 +.951(Search backw)144 168 R .951(ard through the history for the string\ + of characters between the start of the current)-.1 F .007 +(line and the current cursor position \(the)144 180 R/F2 10 +/Times-Italic@0 SF(point)2.507 E F0 2.507(\). The)B .007 +(search string may match an)2.507 F .007(ywhere in a history)-.15 F 2.5 +(line. This)144 192 R(is a non-incremental search.)2.5 E F1 +(history\255substring\255sear)108 204 Q(ch\255f)-.18 E(orward)-.25 E F0 +.249(Search forw)144 216 R .249(ard through the history for the string \ +of characters between the start of the current line)-.1 F .318 +(and the point.)144 228 R .319(The search string may match an)5.318 F +.319(ywhere in a history line.)-.15 F .319(This is a non-incremental) +5.319 F(search.)144 240 Q F1(yank\255nth\255ar)108 252 Q 2.5(g\()-.1 G +<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 264 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 .773(at point.)144 -492 R -.4(Wi)5.773 G .773(th an ar).4 F(gument)-.18 E F2(n)3.633 E F0 +F .622(ord on the pre)-.1 F .622(vious line\))-.25 F .772(at point.)144 +276 R -.4(Wi)5.773 G .773(th an ar).4 F(gument)-.18 E F2(n)3.633 E F0 3.273(,i).24 G .773(nsert the)-3.273 F F2(n)3.273 E F0 .773(th w)B .773 (ord from the pre)-.1 F .773(vious command \(the w)-.25 F .773 -(ords in the)-.1 F(pre)144 504 Q .291(vious command be)-.25 F .291 +(ords in the)-.1 F(pre)144 288 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 F2(n)2.791 E F0 .291(th w)B .292 -(ord from the end of)-.1 F .282(the pre)144 516 R .282(vious command.) --.25 F .282(Once the ar)5.282 F(gument)-.18 E F2(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 F2(n)A F0(")A(history e)144 528 Q -(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 540 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 552 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 564 S .204(th a numeric ar).4 -F .204(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F(e) --.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.203(.S)C(uccessi)-5.203 -E .503 -.15(ve c)-.25 H .203(alls to).15 F F1(yank\255last\255ar)2.703 E -(g)-.1 E F0(mo)144 576 Q .806 -.15(ve b)-.15 H .507 +(ument inserts the).18 F F2(n)2.791 E F0 .291(th w)B .291 +(ord from the end of)-.1 F .281(the pre)144 300 R .281(vious command.) +-.25 F .281(Once the ar)5.281 F(gument)-.18 E F2(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 F2(n)A F0(")A(history e)144 312 Q +(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 324 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 336 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 348 S .203(th a numeric ar).4 +F .203(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F(e) +-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.204(.S)C(uccessi)-5.204 +E .504 -.15(ve c)-.25 H .204(alls to).15 F F1(yank\255last\255ar)2.704 E +(g)-.1 E F0(mo)144 360 Q .807 -.15(ve b)-.15 H .507 (ack through the history list, inserting the last w).15 F .507 (ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E -.416(to the \214rst call\) of each line in turn.)144 588 R(An)5.416 E +.416(to the \214rst call\) of each line in turn.)144 372 R(An)5.416 E 2.916(yn)-.15 G .416(umeric ar)-2.916 F .416 -(gument supplied to these successi)-.18 F .715 -.15(ve c)-.25 H .415 -(alls de-).15 F 1.217(termines the direction to mo)144 600 R 1.518 -.15 +(gument supplied to these successi)-.18 F .716 -.15(ve c)-.25 H .416 +(alls de-).15 F 1.218(termines the direction to mo)144 384 R 1.518 -.15 (ve t)-.15 H 1.218(hrough the history).15 F 6.218(.A)-.65 G(ne)-2.5 E --.05(ga)-.15 G(ti).05 E 1.518 -.15(ve a)-.25 H -.18(rg).15 G 1.218 +-.05(ga)-.15 G(ti).05 E 1.517 -.15(ve a)-.25 H -.18(rg).15 G 1.217 (ument switches the direction).18 F .494 -(through the history \(back or forw)144 612 R 2.994(ard\). The)-.1 F +(through the history \(back or forw)144 396 R 2.994(ard\). The)-.1 F .494(history e)2.994 F .494(xpansion f)-.15 F .494 (acilities are used to e)-.1 F .494(xtract the last)-.15 F -.1(wo)144 -624 S(rd, as if the "!$" history e).1 E(xpansion had been speci\214ed.) --.15 E F1(shell\255expand\255line \(M\255C\255e\))108 636 Q F0 .622 -(Expand the line as the shell does.)144 648 R .622 -(This performs alias and history e)5.622 F .623 -(xpansion as well as all of the)-.15 F(shell w)144 660 Q(ord e)-.1 E 2.5 +408 S(rd, as if the "!$" history e).1 E(xpansion had been speci\214ed.) +-.15 E F1(shell\255expand\255line \(M\255C\255e\))108 420 Q F0 .623 +(Expand the line as the shell does.)144 432 R .622 +(This performs alias and history e)5.622 F .622 +(xpansion as well as all of the)-.15 F(shell w)144 444 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 672 Q F0 .939 -(Perform history e)144 684 R .939(xpansion on the current line.)-.15 F +(history\255expand\255line \(M\255^\))108 456 Q F0 .938 +(Perform history e)144 468 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.438(wf)-.25 G .938(or a descrip-) --3.438 F(tion of history e)144 696 Q(xpansion.)-.15 E(GNU Bash 5.1)72 -768 Q(2020 October 29)141.235 E(47)190.395 E 0 Cg EP -%%Page: 48 48 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(magic\255space)108 84 Q F0 .437(Perform history e)144 96 R .437 -(xpansion on the current line and insert a space.)-.15 F(See)5.438 E/F2 -9/Times-Bold@0 SF(HIST)2.938 E(OR)-.162 E 2.688(YE)-.315 G(XP)-2.688 E -(ANSION)-.666 E F0(be-)2.688 E(lo)144 108 Q 2.5(wf)-.25 G -(or a description of history e)-2.5 E(xpansion.)-.15 E F1 -(alias\255expand\255line)108 120 Q F0 .395(Perform alias e)144 132 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 144 Q F1 -(history\255and\255alias\255expand\255line)108 156 Q F0 -(Perform history and alias e)144 168 Q(xpansion on the current line.) --.15 E F1(insert\255last\255ar)108 180 Q(gument \(M\255.)-.1 E 2.5(,M) -.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 192 S(ynon)-2.5 E(ym for) +(ANSION)-.666 E F0(belo)3.189 E 3.439(wf)-.25 G .939(or a descrip-) +-3.439 F(tion of history e)144 480 Q(xpansion.)-.15 E F1(magic\255space) +108 492 Q F0 .438(Perform history e)144 504 R .438 +(xpansion on the current line and insert a space.)-.15 F(See)5.437 E F3 +(HIST)2.937 E(OR)-.162 E 2.687(YE)-.315 G(XP)-2.687 E(ANSION)-.666 E F0 +(be-)2.687 E(lo)144 516 Q 2.5(wf)-.25 G(or a description of history e) +-2.5 E(xpansion.)-.15 E F1(alias\255expand\255line)108 528 Q F0 .394 +(Perform alias e)144 540 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 552 Q F1 +(history\255and\255alias\255expand\255line)108 564 Q F0 +(Perform history and alias e)144 576 Q(xpansion on the current line.) +-.15 E F1(insert\255last\255ar)108 588 Q(gument \(M\255.)-.1 E 2.5(,M) +.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 600 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 204 Q F0 .947 -(Accept the current line for e)144 216 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 .73 -(history for editing.)144 228 R 3.23(An)5.73 G .73(umeric ar)-3.23 F -.729 -(gument, if supplied, speci\214es the history entry to use instead of) --.18 F(the current line.)144 240 Q F1 -(edit\255and\255execute\255command \(C\255x C\255e\))108 252 Q F0(In)144 -264 Q -.2(vo)-.4 G .346 -.1(ke a).2 H 2.646(ne).1 G .146 -(ditor on the current command line, and e)-2.646 F -.15(xe)-.15 G .146 -(cute the result as shell commands.).15 F F1(Bash)5.147 E F0(at-)2.647 E -(tempts to in)144 276 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 292.8 -Q(or Changing T)-.25 E(ext)-.92 E F4(end\255of\255\214le)108 304.8 Q F1 -(\(usually C\255d\))2.5 E F0 .799 -(The character indicating end-of-\214le as set, for e)144 316.8 R .799 -(xample, by)-.15 F/F5 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.298 -(ft)-5.799 G .798(his character is read when)-3.298 F .592 -(there are no characters on the line, and point is at the be)144 328.8 R -.593(ginning of the line, Readline interprets it)-.15 F -(as the end of input and returns)144 340.8 Q F2(EOF)2.5 E F3(.)A F1 -(delete\255char \(C\255d\))108 352.8 Q F0 .442 -(Delete the character at point.)144 364.8 R .442 -(If this function is bound to the same character as the tty)5.442 F F1 -(EOF)2.941 E F0(char)2.941 E(-)-.2 E(acter)144 376.8 Q 2.5(,a)-.4 G(s) --2.5 E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H -(or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\)) -108 388.8 Q F0 .552(Delete the character behind the cursor)144 400.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 .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 412.8 Q F1 --.25(fo)108 424.8 S(rward\255backward\255delete\255char).25 E F0 .474 -(Delete the character under the cursor)144 436.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 448.8 Q F1 -(quoted\255insert \(C\255q, C\255v\))108 460.8 Q F0 .778(Add the ne)144 -472.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.279 E F0 3.279 -(,f)C(or)-3.279 E -.15(ex)144 484.8 S(ample.).15 E F1 -(tab\255insert \(C\255v T)108 496.8 Q(AB\))-.9 E F0 -(Insert a tab character)144 508.8 Q(.)-.55 E F1 -(self\255insert \(a, b, A, 1, !, ...\))108 520.8 Q F0 -(Insert the character typed.)144 532.8 Q F1 -(transpose\255chars \(C\255t\))108 544.8 Q F0 .322 -(Drag the character before point forw)144 556.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 .372 -(If point is at the end of the line, then this transposes the tw)144 -568.8 R 2.872(oc)-.1 G .373(haracters before point.)-2.872 F(Ne)5.373 E --.05(ga)-.15 G(ti).05 E .673 -.15(ve a)-.25 H -.2(r-).15 G(guments ha) -144 580.8 Q .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1 -(transpose\255w)108 592.8 Q(ords \(M\255t\))-.1 E F0 .024(Drag the w)144 -604.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 616.8 Q 2.5 -(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 628.8 Q -(ord \(M\255u\))-.1 E F0 1.698(Uppercase the current \(or follo)144 -640.8 R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F --.05(ga)-.15 G(ti).05 E 1.999 -.15(ve a)-.25 H -.18(rg).15 G 1.699 -(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 652.8 S(rd, b).1 -E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 664.8 Q -(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 676.8 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 688.8 S(rd, b).1 E(ut do not mo)-.2 E .3 --.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 700.8 Q -(ord \(M\255c\))-.1 E F0 1.974(Capitalize the current \(or follo)144 -712.8 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.975 -(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 724.8 S(rd, b) -.1 E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E(GNU Bash 5.1)72 -768 Q(2020 October 29)141.235 E(48)190.395 E 0 Cg EP -%%Page: 49 49 +(edit\255and\255execute\255command \(C\255x C\255e\))108 612 Q F0(In)144 +624 Q -.2(vo)-.4 G .347 -.1(ke a).2 H 2.647(ne).1 G .146 +(ditor on the current command line, and e)-2.647 F -.15(xe)-.15 G .146 +(cute the result as shell commands.).15 F F1(Bash)5.146 E F0(at-)2.646 E +(tempts to in)144 636 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 F2(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 652.8 Q(or Changing T)-.25 E +(ext)-.92 E F2(end\255of\255\214le)108 664.8 Q F1(\(usually C\255d\))2.5 +E F0 .798(The character indicating end-of-\214le as set, for e)144 676.8 +R .799(xample, by)-.15 F/F5 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C +3.299(ft)-5.799 G .799(his character is read when)-3.299 F .167 +(there are no characters on the line, and point is at the be)144 688.8 R +.167(ginning of the line, readline interprets it as)-.15 F +(the end of input and returns)144 700.8 Q F3(EOF)2.5 E F4(.)A F0 +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(50)185.115 E 0 Cg EP +%%Page: 51 51 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF -.1(ove)108 84 S(rwrite\255mode).1 E F0 -.8(To)144 96 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 108 S .78(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 +SF(delete\255char \(C\255d\))108 84 Q F0 .441 +(Delete the character at point.)144 96 R .442 +(If this function is bound to the same character as the tty)5.441 F F1 +(EOF)2.942 E F0(char)2.942 E(-)-.2 E(acter)144 108 Q 2.5(,a)-.4 G(s)-2.5 +E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H +(or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\)) +108 120 Q F0 .553(Delete the character behind the cursor)144 132 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 144 Q F1 -.25 +(fo)108 156 S(rward\255backward\255delete\255char).25 E F0 .473 +(Delete the character under the cursor)144 168 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 180 Q F1 +(quoted\255insert \(C\255q, C\255v\))108 192 Q F0 .779(Add the ne)144 +204 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 216 S(ample.).15 E F1(tab\255insert \(C\255v T) +108 228 Q(AB\))-.9 E F0(Insert a tab character)144 240 Q(.)-.55 E F1 +(self\255insert \(a, b, A, 1, !, ...\))108 252 Q F0 +(Insert the character typed.)144 264 Q F1(transpose\255chars \(C\255t\)) +108 276 Q F0 .321(Drag the character before point forw)144 288 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 .372 +(If point is at the end of the line, then this transposes the tw)144 300 +R 2.872(oc)-.1 G .372(haracters before point.)-2.872 F(Ne)5.372 E -.05 +(ga)-.15 G(ti).05 E .672 -.15(ve a)-.25 H -.2(r-).15 G(guments ha)144 +312 Q .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1 +(transpose\255w)108 324 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144 +336 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 348 Q 2.5 +(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 360 Q +(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 372 +R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga) +-.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698 +(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 384 S(rd, b).1 E +(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 396 Q +(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 408 Q 1.647 +(wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147 +(ord. W)-.1 F 1.648(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.948 -.15 +(ve a)-.25 H -.18(rg).15 G 1.648(ument, lo).18 F 1.648(wercase the pre) +-.25 F(vious)-.25 E -.1(wo)144 420 S(rd, b).1 E(ut do not mo)-.2 E .3 +-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 432 Q +(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 444 +R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga) +-.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974 +(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 456 S(rd, b).1 +E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 468 +S(rwrite\255mode).1 E F0 -.8(To)144 480 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 492 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 .781(This command af)5.781 F -(fects)-.25 E(only)144 120 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 +(gument, switches to insert mode.)-.18 F .78(This command af)5.781 F +(fects)-.25 E(only)144 504 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.394 G(adline\(\)).37 E F0 1.894 -(starts in insert)4.394 F 3.968(mode. In)144 132 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 144 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 156 Q +/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 516 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 528 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 540 Q (By def)5 E(ault, this command is unbound.)-.1 E F1(Killing and Y)87 -172.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 184.8 Q F0 -(Kill the te)144 196.8 Q(xt from point to the end of the line.)-.15 E F1 -(backward\255kill\255line \(C\255x Rubout\))108 208.8 Q F0(Kill backw) -144 220.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 -(unix\255line\255discard \(C\255u\))108 232.8 Q F0(Kill backw)144 244.8 +556.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 568.8 Q F0 +(Kill the te)144 580.8 Q(xt from point to the end of the line.)-.15 E F1 +(backward\255kill\255line \(C\255x Rubout\))108 592.8 Q F0(Kill backw) +144 604.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 +(unix\255line\255discard \(C\255u\))108 616.8 Q F0(Kill backw)144 628.8 Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E (The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt) --2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 256.8 Q F0 +-2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 640.8 Q F0 (Kill all characters on the current line, no matter where point is.)144 -268.8 Q F1(kill\255w)108 280.8 Q(ord \(M\255d\))-.1 E F0 .728 -(Kill from point to the end of the current w)144 292.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 304.8 S +652.8 Q F1(kill\255w)108 664.8 Q(ord \(M\255d\))-.1 E F0 .729 +(Kill from point to the end of the current w)144 676.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 688.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 316.8 Q -(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 328.8 Q(ord behind point.) +(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 700.8 Q +(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 712.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 340.8 Q -(ord)-.1 E F0 .729(Kill from point to the end of the current w)144 352.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 364.8 S +(backward\255w)2.5 E(ord)-.1 E F0(.)A(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(51)185.115 E 0 Cg EP +%%Page: 52 52 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(shell\255kill\255w)108 84 Q(ord)-.1 E F0 .728 +(Kill from point to the end of the current w)144 96 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 108 S (rd boundaries are the same as those used by).8 E F1(shell\255f)2.5 E (orward\255w)-.25 E(ord)-.1 E F0(.)A F1(shell\255backward\255kill\255w) -108 376.8 Q(ord)-.1 E F0 3.025(Kill the w)144 388.8 R 3.025 +108 120 Q(ord)-.1 E F0 3.025(Kill the w)144 132 R 3.025 (ord behind point.)-.1 F -.8(Wo)8.025 G 3.025 (rd boundaries are the same as those used by).8 F F1(shell\255back-) -5.525 E(ward\255w)144 400.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 412.8 Q -(ord\255rubout \(C\255w\))-.1 E F0 .365(Kill the w)144 424.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 -436.8 Q F1(unix\255\214lename\255rubout)108 448.8 Q F0 .166(Kill the w) -144 460.8 R .166 +5.525 E(ward\255w)144 144 Q(ord)-.1 E F0(.)A F1(unix\255w)108 156 Q +(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 168 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 +180 Q F1(unix\255\214lename\255rubout)108 192 Q F0 .167(Kill the w)144 +204 R .166 (ord behind point, using white space and the slash character as the w) --.1 F .167(ord boundaries.)-.1 F(The)5.167 E(killed te)144 472.8 Q +-.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 216 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 484.8 Q F0 -(Delete all spaces and tabs around point.)144 496.8 Q F1(kill\255r)108 -508.8 Q(egion)-.18 E F0(Kill the te)144 520.8 Q(xt in the current re) --.15 E(gion.)-.15 E F1(copy\255r)108 532.8 Q(egion\255as\255kill)-.18 E -F0(Cop)144 544.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E +-2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 228 Q F0 +(Delete all spaces and tabs around point.)144 240 Q F1(kill\255r)108 252 +Q(egion)-.18 E F0(Kill the te)144 264 Q(xt in the current re)-.15 E +(gion.)-.15 E F1(copy\255r)108 276 Q(egion\255as\255kill)-.18 E F0(Cop) +144 288 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 556.8 Q(ord)-.1 E F0(Cop)144 568.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 580.8 -Q(ord)-.1 E F0(.)A F1(copy\255f)108 592.8 Q(orward\255w)-.25 E(ord)-.1 E -F0(Cop)144 604.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 616.8 Q(ord)-.1 E F0(.) -A F1(yank \(C\255y\))108 628.8 Q F0 -1(Ya)144 640.8 S +(copy\255backward\255w)108 300 Q(ord)-.1 E F0(Cop)144 312 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 324 +Q(ord)-.1 E F0(.)A F1(copy\255f)108 336 Q(orward\255w)-.25 E(ord)-.1 E +F0(Cop)144 348 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 360 Q(ord)-.1 E F0(.)A F1 +(yank \(C\255y\))108 372 Q F0 -1(Ya)144 384 S (nk the top of the kill ring into the b)1 E(uf)-.2 E(fer at point.)-.25 -E F1(yank\255pop \(M\255y\))108 652.8 Q F0 -(Rotate the kill ring, and yank the ne)144 664.8 Q 2.5(wt)-.25 G 2.5 +E F1(yank\255pop \(M\255y\))108 396 Q F0 +(Rotate the kill ring, and yank the ne)144 408 Q 2.5(wt)-.25 G 2.5 (op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E -F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 681.6 Q -(guments)-.1 E(digit\255ar)108 693.6 Q +F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 424.8 Q +(guments)-.1 E(digit\255ar)108 436.8 Q (gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .367 -(Add this digit to the ar)144 705.6 R .367 +(Add this digit to the ar)144 448.8 R .367 (gument already accumulating, or start a ne)-.18 F 2.867(wa)-.25 G -.18 -(rg)-2.867 G 2.867(ument. M\255\255).18 F .366(starts a ne)2.867 F -.05 -(ga)-.15 G(-).05 E(ti)144 717.6 Q .3 -.15(ve a)-.25 H -.18(rg).15 G -(ument.).18 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(49)190.395 -E 0 Cg EP -%%Page: 50 50 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(uni)108 84 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .778 -(This is another w)144 96 R .779(ay to specify an ar)-.1 F 3.279 -(gument. If)-.18 F .779(this command is follo)3.279 F .779 +(rg)-2.867 G 2.867(ument. M\255\255).18 F .367(starts a ne)2.867 F -.05 +(ga)-.15 G(-).05 E(ti)144 460.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G +(ument.).18 E F1(uni)108 472.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 +E F0 .779(This is another w)144 484.8 R .779(ay to specify an ar)-.1 F +3.279(gument. If)-.18 F .779(this command is follo)3.279 F .778 (wed by one or more digits,)-.25 F 1.376 (optionally with a leading minus sign, those digits de\214ne the ar)144 -108 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 -120 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni) +496.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 +508.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 .899(wise ignored.)144 132 R .898 -(As a special case, if this command is immediately follo)5.899 F .898 +-.2 F(-)-.2 E .898(wise ignored.)144 520.8 R .898 +(As a special case, if this command is immediately follo)5.898 F .898 (wed by a character that is)-.25 F 1.23 -(neither a digit nor minus sign, the ar)144 144 R 1.23 +(neither a digit nor minus sign, the ar)144 532.8 R 1.23 (gument count for the ne)-.18 F 1.23(xt command is multiplied by four) --.15 F(.)-.55 E .823(The ar)144 156 R .823 +-.15 F(.)-.55 E .822(The ar)144 544.8 R .822 (gument count is initially one, so e)-.18 F -.15(xe)-.15 G .823 -(cuting this function the \214rst time mak).15 F .822(es the ar)-.1 F -(gument)-.18 E(count four)144 168 Q 2.5(,as)-.4 G(econd time mak)-2.5 E -(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1(Completing) -87 184.8 Q(complete \(T)108 196.8 Q(AB\))-.9 E F0 1.137 -(Attempt to perform completion on the te)144 208.8 R 1.137 +(cuting this function the \214rst time mak).15 F .823(es the ar)-.1 F +(gument)-.18 E(count four)144 556.8 Q 2.5(,as)-.4 G(econd time mak)-2.5 +E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1(Completing) +87 573.6 Q(complete \(T)108 585.6 Q(AB\))-.9 E F0 1.137 +(Attempt to perform completion on the te)144 597.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 220.8 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 232.8 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 +(attempts completion treating the)3.637 F(te)144 609.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 621.6 Q .702(xt be)-.15 F .702(gins with)-.15 F F1(@)3.202 E F0 .701 +(\), or command \(including aliases and functions\) in turn.)B .701 (If none of these pro-)5.701 F -(duces a match, \214lename completion is attempted.)144 244.8 Q F1 -(possible\255completions \(M\255?\))108 256.8 Q F0 -(List the possible completions of the te)144 268.8 Q(xt before point.) --.15 E F1(insert\255completions \(M\255*\))108 280.8 Q F0 .783 -(Insert all completions of the te)144 292.8 R .783 +(duces a match, \214lename completion is attempted.)144 633.6 Q F1 +(possible\255completions \(M\255?\))108 645.6 Q F0 +(List the possible completions of the te)144 657.6 Q(xt before point.) +-.15 E F1(insert\255completions \(M\255*\))108 669.6 Q F0 .783 +(Insert all completions of the te)144 681.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.282 E(pletions)144 -304.8 Q F0(.)A F1(menu\255complete)108 316.8 Q F0 .928(Similar to)144 -328.8 R F1(complete)3.428 E F0 3.428(,b)C .929(ut replaces the w)-3.628 +.783(een generated by).15 F F1(possible\255com-)3.283 E(pletions)144 +693.6 Q F0(.)A F1(menu\255complete)108 705.6 Q F0 .929(Similar to)144 +717.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629 F .929(ord to be completed with a single match from the list of)-.1 F -1.194(possible completions.)144 340.8 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 352.8 R .828 +1.193(possible completions.)144 729.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(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(52)185.115 E 0 Cg EP +%%Page: 53 53 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .829 +(completions, inserting each match in turn.)144 84 R .828 (At the end of the list of completions, the bell is rung)5.828 F .727 -(\(subject to the setting of)144 364.8 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.227 E F0 1.73 -(positions forw)144 376.8 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 388.8 Q(This command is intended to be bound to) -5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E -(ault.)-.1 E F1(menu\255complete\255backward)108 400.8 Q F0 .82 -(Identical to)144 412.8 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 +(\(subject to the setting of)144 96 R/F1 10/Times-Bold@0 SF +(bell\255style)3.227 E F0 3.227(\)a)C .727(nd the original te)-3.227 F +.727(xt is restored.)-.15 F .727(An ar)5.727 F .727(gument of)-.18 F/F2 +10/Times-Italic@0 SF(n)3.227 E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2 +(n)3.228 E F0 1.73(positions forw)144 108 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 120 Q +(This command is intended to be bound to)5 E F1 -.9(TA)2.5 G(B).9 E F0 +2.5(,b)C(ut is unbound by def)-2.7 E(ault.)-.1 E F1 +(menu\255complete\255backward)108 132 Q F0 .82(Identical to)144 144 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 424.8 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5 -(nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg) -.15 G 2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E -F1(delete\255char\255or\255list)108 436.8 Q F0 .234 -(Deletes the character under the cursor if not at the be)144 448.8 R -.234(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete\255char) -2.735 E F0(\).)A .425(If at the end of the line, beha)144 460.8 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 472.8 Q(ault.)-.1 E F1 -(complete\255\214lename \(M\255/\))108 484.8 Q F0 -(Attempt \214lename completion on the te)144 496.8 Q(xt before point.) --.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 508.8 Q -F0(List the possible completions of the te)144 520.8 Q +(menu\255complete)144 156 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5(nan) +.15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg).15 G +2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E F1 +(delete\255char\255or\255list)108 168 Q F0 .234 +(Deletes the character under the cursor if not at the be)144 180 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 192 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 +204 Q(ault.)-.1 E F1(complete\255\214lename \(M\255/\))108 216 Q F0 +(Attempt \214lename completion on the te)144 228 Q(xt before point.)-.15 +E F1(possible\255\214lename\255completions \(C\255x /\))108 240 Q F0 +(List the possible completions of the te)144 252 Q (xt before point, treating it as a \214lename.)-.15 E F1 -(complete\255user)108 532.8 Q(name \(M\255~\))-.15 E F0 -(Attempt completion on the te)144 544.8 Q +(complete\255user)108 264 Q(name \(M\255~\))-.15 E F0 +(Attempt completion on the te)144 276 Q (xt before point, treating it as a username.)-.15 E F1(possible\255user) -108 556.8 Q(name\255completions \(C\255x ~\))-.15 E F0 -(List the possible completions of the te)144 568.8 Q +108 288 Q(name\255completions \(C\255x ~\))-.15 E F0 +(List the possible completions of the te)144 300 Q (xt before point, treating it as a username.)-.15 E F1(complete\255v)108 -580.8 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 -592.8 Q(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E -F1(possible\255v)108 604.8 Q(ariable\255completions \(C\255x $\))-.1 E -F0(List the possible completions of the te)144 616.8 Q +312 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 324 Q (xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 -(complete\255hostname \(M\255@\))108 628.8 Q F0 -(Attempt completion on the te)144 640.8 Q +(possible\255v)108 336 Q(ariable\255completions \(C\255x $\))-.1 E F0 +(List the possible completions of the te)144 348 Q +(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 +(complete\255hostname \(M\255@\))108 360 Q F0 +(Attempt completion on the te)144 372 Q (xt before point, treating it as a hostname.)-.15 E F1 -(possible\255hostname\255completions \(C\255x @\))108 652.8 Q F0 -(List the possible completions of the te)144 664.8 Q +(possible\255hostname\255completions \(C\255x @\))108 384 Q F0 +(List the possible completions of the te)144 396 Q (xt before point, treating it as a hostname.)-.15 E F1 -(complete\255command \(M\255!\))108 676.8 Q F0 .58 -(Attempt completion on the te)144 688.8 R .581 -(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 700.8 R +(complete\255command \(M\255!\))108 408 Q F0 .581 +(Attempt completion on the te)144 420 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 432 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 712.8 Q -.15(xe)-.15 G -(cutable \214lenames, in that order).15 E(.)-.55 E(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(50)190.395 E 0 Cg EP -%%Page: 51 51 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(possible\255command\255completions \(C\255x !\))108 84 Q F0 -(List the possible completions of the te)144 96 Q +(\214nally e)144 444 Q -.15(xe)-.15 G +(cutable \214lenames, in that order).15 E(.)-.55 E F1 +(possible\255command\255completions \(C\255x !\))108 456 Q F0 +(List the possible completions of the te)144 468 Q (xt before point, treating it as a command name.)-.15 E F1 -(dynamic\255complete\255history \(M\255T)108 108 Q(AB\))-.9 E F0 .424 -(Attempt completion on the te)144 120 R .425 -(xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .425 +(dynamic\255complete\255history \(M\255T)108 480 Q(AB\))-.9 E F0 .425 +(Attempt completion on the te)144 492 R .425 +(xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .424 (ainst lines from the history list)-.05 F -(for possible completion matches.)144 132 Q F1(dab)108 144 Q(br)-.1 E --.15(ev)-.18 G(\255expand).15 E F0 .611 -(Attempt menu completion on the te)144 156 R .611 -(xt before point, comparing the te)-.15 F .61(xt ag)-.15 F .61 +(for possible completion matches.)144 504 Q F1(dab)108 516 Q(br)-.1 E +-.15(ev)-.18 G(\255expand).15 E F0 .61 +(Attempt menu completion on the te)144 528 R .611 +(xt before point, comparing the te)-.15 F .611(xt ag)-.15 F .611 (ainst lines from the his-)-.05 F -(tory list for possible completion matches.)144 168 Q F1 -(complete\255into\255braces \(M\255{\))108 180 Q F0 .4(Perform \214lena\ +(tory list for possible completion matches.)144 540 Q F1 +(complete\255into\255braces \(M\255{\))108 552 Q F0 .4(Perform \214lena\ me completion and insert the list of possible completions enclosed with\ -in braces so)144 192 R(the list is a)144 204 Q -.25(va)-.2 G +in braces so)144 564 R(the list is a)144 576 Q -.25(va)-.2 G (ilable to the shell \(see).25 E F1(Brace Expansion)2.5 E F0(abo)2.5 E --.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 220.8 S(yboard Macr).25 E(os)-.18 -E(start\255kbd\255macr)108 232.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) -.833 E F0(Be)144 244.8 Q(gin sa)-.15 E +-.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 592.8 S(yboard Macr).25 E(os)-.18 +E(start\255kbd\255macr)108 604.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) +.833 E F0(Be)144 616.8 Q(gin sa)-.15 E (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G -(board macro.).15 E F1(end\255kbd\255macr)108 256.8 Q 2.5(o\()-.18 G -(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 268.8 Q +(board macro.).15 E F1(end\255kbd\255macr)108 628.8 Q 2.5(o\()-.18 G +(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 640.8 Q (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G (board macro and store the de\214nition.).15 E F1 -(call\255last\255kbd\255macr)108 280.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 -E F0(Re-e)144 292.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 304.8 Q -.15(ey)-.1 G(board.).15 E F1 -(print\255last\255kbd\255macr)108 316.8 Q 2.5(o\()-.18 G(\))-2.5 E F0 -(Print the last k)144 328.8 Q -.15(ey)-.1 G -(board macro de\214ned in a format suitable for the).15 E/F2 10 -/Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E F1 -(Miscellaneous)87 345.6 Q -.18(re)108 357.6 S.18 E -(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.776 -(Read in the contents of the)144 369.6 R F2(inputr)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 -381.6 Q F1(abort \(C\255g\))108 393.6 Q F0 3.249 -(Abort the current editing command and ring the terminal')144 405.6 R -5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1 -(bell\255style)144 417.6 Q F0(\).)A F1(do\255lo)108 429.6 Q(wer)-.1 E +(call\255last\255kbd\255macr)108 652.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 +E F0(Re-e)144 664.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 676.8 Q -.15(ey)-.1 G(board.).15 +E F1(print\255last\255kbd\255macr)108 688.8 Q 2.5(o\()-.18 G(\))-2.5 E +F0(Print the last k)144 700.8 Q -.15(ey)-.1 G +(board macro de\214ned in a format suitable for the).15 E F2(inputr)2.5 +E(c)-.37 E F0(\214le.)2.5 E(GNU Bash 5.2)72 768 Q(2022 September 19) +135.955 E(53)185.115 E 0 Cg EP +%%Page: 54 54 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(Miscellaneous)87 84 Q -.18(re)108 96 S.18 E +(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.777 +(Read in the contents of the)144 108 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 120 Q F1(abort \(C\255g\))108 132 Q F0 3.248 +(Abort the current editing command and ring the terminal')144 144 R +5.749(sb)-.55 G 3.249(ell \(subject to the setting of)-5.749 F F1 +(bell\255style)144 156 Q F0(\).)A F1(do\255lo)108 168 Q(wer)-.1 E (case\255v)-.18 E(ersion \(M\255A, M\255B, M\255)-.1 E F2(x)A F1 2.5(,.) -C(..\))-2.5 E F0 1.738(If the meta\214ed character)144 441.6 R F2(x) -4.238 E F0 1.739 -(is uppercase, run the command that is bound to the corresponding)4.238 -F(meta\214ed lo)144 453.6 Q(wercase character)-.25 E 5(.T)-.55 G -(he beha)-5 E(vior is unde\214ned if)-.2 E F2(x)2.5 E F0(is already lo) -2.5 E(wercase.)-.25 E F1(pr)108 465.6 Q(e\214x\255meta \(ESC\))-.18 E F0 -(Metafy the ne)144 477.6 Q(xt character typed.)-.15 E/F3 9/Times-Bold@0 -SF(ESC)5 E F1(f)2.25 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1 -(Meta\255f)2.5 E F0(.)A F1(undo \(C\255_, C\255x C\255u\))108 489.6 Q F0 -(Incremental undo, separately remembered for each line.)144 501.6 Q F1 --2.29 -.18(re v)108 513.6 T(ert\255line \(M\255r\)).08 E F0 .231 -(Undo all changes made to this line.)144 525.6 R .231(This is lik)5.231 -F 2.731(ee)-.1 G -.15(xe)-2.881 G .23(cuting the).15 F F1(undo)2.73 E F0 -.23(command enough times to re-)2.73 F -(turn the line to its initial state.)144 537.6 Q F1 -(tilde\255expand \(M\255&\))108 549.6 Q F0(Perform tilde e)144 561.6 Q +C(..\))-2.5 E F0 1.739(If the meta\214ed character)144 180 R F2(x)4.239 +E F0 1.739 +(is uppercase, run the command that is bound to the corresponding)4.239 +F(meta\214ed lo)144 192 Q(wercase character)-.25 E 5(.T)-.55 G(he beha) +-5 E(vior is unde\214ned if)-.2 E F2(x)2.5 E F0(is already lo)2.5 E +(wercase.)-.25 E F1(pr)108 204 Q(e\214x\255meta \(ESC\))-.18 E F0 +(Metafy the ne)144 216 Q(xt character typed.)-.15 E/F3 9/Times-Bold@0 SF +(ESC)5 E F1(f)2.25 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1 +(Meta\255f)2.5 E F0(.)A F1(undo \(C\255_, C\255x C\255u\))108 228 Q F0 +(Incremental undo, separately remembered for each line.)144 240 Q F1 +-2.29 -.18(re v)108 252 T(ert\255line \(M\255r\)).08 E F0 .23 +(Undo all changes made to this line.)144 264 R .231(This is lik)5.23 F +2.731(ee)-.1 G -.15(xe)-2.881 G .231(cuting the).15 F F1(undo)2.731 E F0 +.231(command enough times to re-)2.731 F +(turn the line to its initial state.)144 276 Q F1 +(tilde\255expand \(M\255&\))108 288 Q F0(Perform tilde e)144 300 Q (xpansion on the current w)-.15 E(ord.)-.1 E F1 -(set\255mark \(C\255@, M\255\))108 573.6 Q F0 -(Set the mark to the point.)144 585.6 Q(If a numeric ar)5 E +(set\255mark \(C\255@, M\255\))108 312 Q F0 +(Set the mark to the point.)144 324 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 597.6 Q F0(Sw) -144 609.6 Q .282(ap the point with the mark.)-.1 F .283 +(exchange\255point\255and\255mark \(C\255x C\255x\))108 336 Q F0(Sw)144 +348 Q .283(ap the point with the mark.)-.1 F .283 (The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G -2.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa) -144 621.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 633.6 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144 -645.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.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 657.6 Q(vious occurrences.)-.25 E F1(character\255sear)108 669.6 Q -(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 681.6 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.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 693.6 Q F1 -(skip\255csi\255sequence)108 705.6 Q F0 1.827 -(Read enough characters to consume a multi-k)144 717.6 R 2.126 -.15 -(ey s)-.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 729.6 R -.791(Such sequences be)5.79 F .791 +2.782(dp).15 G .282(osition, and the old)-2.782 F(cursor position is sa) +144 360 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 372 Q(ch \(C\255]\))-.18 E F0 3.111(Ac)144 384 S +.611(haracter is read and point is mo)-3.111 F -.15(ve)-.15 G 3.112(dt) +.15 G 3.112(ot)-3.112 G .612(he ne)-3.112 F .612 +(xt occurrence of that character)-.15 F 5.612(.A)-.55 G(ne)-2.5 E -.05 +(ga)-.15 G(ti).05 E .912 -.15(ve a)-.25 H -.18(rg).15 G(u-).18 E +(ment searches for pre)144 396 Q(vious occurrences.)-.25 E F1 +(character\255sear)108 408 Q(ch\255backward \(M\255C\255]\))-.18 E F0 +2.695(Ac)144 420 S .194(haracter is read and point is mo)-2.695 F -.15 +(ve)-.15 G 2.694(dt).15 G 2.694(ot)-2.694 G .194(he pre)-2.694 F .194 +(vious occurrence of that character)-.25 F 5.194(.A)-.55 G(ne)-2.5 E +-.05(ga)-.15 G(ti).05 E .494 -.15(ve a)-.25 H -.2(r-).15 G +(gument searches for subsequent occurrences.)144 432 Q F1 +(skip\255csi\255sequence)108 444 Q F0 1.826 +(Read enough characters to consume a multi-k)144 456 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 468 R .791 +(Such sequences be)5.791 F .791 (gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(51)190.395 E 0 Cg EP -%%Page: 52 52 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .332 -(If this sequence is bound to "\\[", k)144 84 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 stray chara\ -cters into the editing b)144 96 R(uf)-.2 E(fer)-.25 E 5.026(.T)-.55 G -(his)-5.026 E(is unbound by def)144 108 Q(ault, b)-.1 E -(ut usually bound to ESC\255[.)-.2 E/F1 10/Times-Bold@0 SF -(insert\255comment \(M\255#\))108 120 Q F0 -.4(Wi)144 132 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 144 Q .244 -(ginning of the current line.)-.15 F .245(If a numeric ar)5.244 F .245 -(gument is supplied, this command acts as a toggle: if)-.18 F .322 -(the characters at the be)144 156 R .321 +.331(If this sequence is bound to "\\[", k)144 480 R -.15(ey)-.1 G 2.831 +(sp).15 G .331(roducing such sequences will ha)-2.831 F .632 -.15(ve n) +-.2 H 2.832(oe).15 G -.25(ff)-2.832 G .332(ect unless e).25 F(xplic-) +-.15 E .026(itly bound to a readline command, instead of inserting stra\ +y characters into the editing b)144 492 R(uf)-.2 E(fer)-.25 E 5.026(.T) +-.55 G(his)-5.026 E(is unbound by def)144 504 Q(ault, b)-.1 E +(ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108 +516 Q F0 -.4(Wi)144 528 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 540 Q .245 +(ginning of the current line.)-.15 F .245(If a numeric ar)5.245 F .244 +(gument is supplied, this command acts as a toggle: if)-.18 F .321 +(the characters at the be)144 552 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.821(,t)C .321(he v)-2.821 F .321(alue is) --.25 F .831(inserted, otherwise the characters in)144 168 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 180 R 1.468 -(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 192 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 204 Q -.15 +(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 564 R F1 +(comment\255begin)3.332 E F0 .831(are deleted from the be)3.332 F .831 +(ginning of the line.)-.15 F 1.468 +(In either case, the line is accepted as if a ne)144 576 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 588 Q F0 .84 +(causes this command to mak)3.34 F 3.339(et)-.1 G .839 +(he current line a shell comment.)-3.339 F .839(If a numeric ar)5.839 F +(gu-)-.18 E(ment causes the comment character to be remo)144 600 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 216 Q -(ord \(M\255g\))-.1 E F0 .792(The w)144 228 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 240 -R(pattern is used to generate a list of matching \214lenames for possib\ -le completions.)2.5 E F1(glob\255expand\255w)108 252 Q(ord \(C\255x *\)) --.1 E F0 .175(The w)144 264 R .176 +(cuted by the shell.).15 E F1(spell\255corr)108 612 Q(ect\255w)-.18 E +(ord \(C\255x s\))-.1 E F0 .42 +(Perform spelling correction on the current w)144 624 R .421 +(ord, treating it as a directory or \214lename, in the same)-.1 F -.1 +(wa)144 636 S 4.718(ya).1 G 4.718(st)-4.718 G(he)-4.718 E F1(cdspell) +4.718 E F0 2.218(shell option.)4.718 F -.8(Wo)7.217 G 2.217 +(rd boundaries are the same as those used by).8 F F1(shell\255f)4.717 E +(or)-.25 E(-)-.37 E(ward\255w)144 648 Q(ord)-.1 E F0(.)A F1 +(glob\255complete\255w)108 660 Q(ord \(M\255g\))-.1 E F0 .791(The w)144 +672 R .791(ord before point is treated as a pattern for pathname e)-.1 F +.792(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 +684 R(pattern is used to generate a list of matching \214lenames for po\ +ssible completions.)2.5 E F1(glob\255expand\255w)108 696 Q +(ord \(C\255x *\))-.1 E F0 .176(The w)144 708 R .176 (ord before point is treated as a pattern for pathname e)-.1 F .176 (xpansion, and the list of matching \214le-)-.15 F .516 -(names is inserted, replacing the w)144 276 R 3.016(ord. If)-.1 F 3.016 +(names is inserted, replacing the w)144 720 R 3.016(ord. If)-.1 F 3.016 (an)3.016 G .516(umeric ar)-3.016 F .516 -(gument is supplied, an asterisk is appended)-.18 F(before pathname e) -144 288 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) -108 300 Q F0 .923(The list of e)144 312 R .923(xpansions that w)-.15 F -.923(ould ha)-.1 F 1.223 -.15(ve b)-.2 H .923(een generated by).15 F F1 -(glob\255expand\255w)3.423 E(ord)-.1 E F0 .923(is displayed, and)3.423 F -.872(the line is redra)144 324 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)-.18 F(GNU Bash 5.2)72 768 +Q(2022 September 19)135.955 E(54)185.115 E 0 Cg EP +%%Page: 55 55 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(before pathname e) +144 84 Q(xpansion.)-.15 E/F1 10/Times-Bold@0 SF +(glob\255list\255expansions \(C\255x g\))108 96 Q F0 .923(The list of e) +144 108 R .923(xpansions that w)-.15 F .923(ould ha)-.1 F 1.223 -.15 +(ve b)-.2 H .923(een generated by).15 F F1(glob\255expand\255w)3.423 E +(ord)-.1 E F0 .923(is displayed, and)3.423 F .872(the line is redra)144 +120 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 336 S(pansion.).15 E F1(dump\255functions)108 348 Q F0 .626 -(Print all of the functions and their k)144 360 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 372 Q +(ex)144 132 S(pansion.).15 E F1(dump\255functions)108 144 Q F0 .627 +(Print all of the functions and their k)144 156 R .927 -.15(ey b)-.1 H +.626(indings to the readline output stream.).15 F .626(If a numeric ar) +5.626 F(gu-)-.18 E +(ment is supplied, the output is formatted in such a w)144 168 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 384 Q(ariables)-.1 E F0 -.763(Print all of the settable readline v)144 396 R .762 -(ariables and their v)-.25 F .762(alues to the readline output stream.) --.25 F .762(If a nu-)5.762 F .108(meric ar)144 408 R .108 -(gument is supplied, the output is formatted in such a w)-.18 F .109 -(ay that it can be made part of an)-.1 F F2(in-)2.609 E(putr)144 420 Q -(c)-.37 E F0(\214le.)2.5 E F1(dump\255macr)108 432 Q(os)-.18 E F0 .593 -(Print all of the readline k)144 444 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 456 Q +2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 180 Q(ariables)-.1 E F0 +.762(Print all of the settable readline v)144 192 R .762 +(ariables and their v)-.25 F .763(alues to the readline output stream.) +-.25 F .763(If a nu-)5.763 F .109(meric ar)144 204 R .109 +(gument is supplied, the output is formatted in such a w)-.18 F .108 +(ay that it can be made part of an)-.1 F F2(in-)2.608 E(putr)144 216 Q +(c)-.37 E F0(\214le.)2.5 E F1(dump\255macr)108 228 Q(os)-.18 E F0 .592 +(Print all of the readline k)144 240 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 252 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.028 E(c)-.37 E F0 -(\214le.)144 468 Q F1(display\255shell\255v)108 480 Q -(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 492 Q +(ay that it can be made part of an)-.1 F F2(inputr)3.027 E(c)-.37 E F0 +(\214le.)144 264 Q F1(display\255shell\255v)108 276 Q +(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 288 Q (ersion information about the current instance of)-.15 E F1(bash)2.5 E -F0(.)A F1(Pr)87 508.8 Q(ogrammable Completion)-.18 E F0 .147(When w)108 -520.8 R .147(ord completion is attempted for an ar)-.1 F .147 +F0(.)A F1(Pr)87 304.8 Q(ogrammable Completion)-.18 E F0 .146(When w)108 +316.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 532.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) +F2(compspec)108 328.8 Q F0 3.829(\)h)C 1.329 +(as been de\214ned using the)-3.829 F F1(complete)3.829 E F0 -.2(bu) 3.829 G 1.329(iltin \(see).2 F/F3 9/Times-Bold@0 SF 1.329(SHELL B)3.829 -F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.329(w\), the) --.25 F(programmable completion f)108 544.8 Q(acilities are in)-.1 E -.2 -(vo)-.4 G -.1(ke).2 G(d.).1 E .498 -(First, the command name is identi\214ed.)108 561.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 -573.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233 +F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.328(w\), the) +-.25 F(programmable completion f)108 340.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 357.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 +369.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233 (ompspec de\214ned with the)-2.733 F F12.733 E F0 .233(option to) -2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F .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 585.6 R .822 -(for the w)108 597.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 609.6 R .366(no compspec is found fo\ +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 381.6 R .823 +(for the w)108 393.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 405.6 R .367(no compspec is found fo\ r the full pathname, an attempt is made to \214nd a compspec for the po\ -rtion)2.867 F(follo)108 621.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 F12.799 E F0 .057 -(option to)108 633.6 R F1(complete)2.557 E F0 .056(is used as the def) +rtion)2.866 F(follo)108 417.6 Q .299(wing the \214nal slash.)-.25 F .298 +(If those searches do not result in a compspec, an)5.299 F 2.798(yc)-.15 +G .298(ompspec de\214ned with the)-2.798 F F12.798 E F0 .056 +(option to)108 429.6 R F1(complete)2.556 E F0 .056(is used as the def) 2.556 F 2.556(ault. If)-.1 F .056(there is no def)2.556 F .056 (ault compspec,)-.1 F F1(bash)2.556 E F0 .056(attempts alias e)2.556 F -.056(xpansion on)-.15 F .332(the command w)108 645.6 R .332(ord as a \ +.057(xpansion on)-.15 F .333(the command w)108 441.6 R .332(ord as a \ \214nal resort, and attempts to \214nd a compspec for the command w)-.1 -F .332(ord from an)-.1 F 2.833(ys)-.15 G(uc-)-2.833 E(cessful e)108 -657.6 Q(xpansion.)-.15 E .817(Once a compspec has been found, it is use\ -d to generate the list of matching w)108 674.4 R 3.317(ords. If)-.1 F -3.317(ac)3.317 G .817(ompspec is not)-3.317 F(found, the def)108 686.4 Q +F .332(ord from an)-.1 F 2.832(ys)-.15 G(uc-)-2.832 E(cessful e)108 +453.6 Q(xpansion.)-.15 E .817(Once a compspec has been found, it is use\ +d to generate the list of matching w)108 470.4 R 3.317(ords. If)-.1 F +3.317(ac)3.317 G .817(ompspec is not)-3.317 F(found, the def)108 482.4 Q (ault)-.1 E F1(bash)2.5 E F0(completion as described abo)2.5 E .3 -.15 -(ve u)-.15 H(nder).15 E F1(Completing)2.5 E F0(is performed.)2.5 E .463 -(First, the actions speci\214ed by the compspec are used.)108 703.2 R -.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 715.2 R .596 -(When the)5.596 F F13.096 E F0(or)3.095 E F13.095 E F0 .595 +(ve u)-.15 H(nder).15 E F1(Completing)2.5 E F0(is performed.)2.5 E .464 +(First, the actions speci\214ed by the compspec are used.)108 499.2 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 511.2 R .595 +(When the)5.595 F F13.095 E F0(or)3.095 E F13.095 E F0 .596 (option is used for \214lename or directory name completion, the)3.095 F -(shell v)108 727.2 Q(ariable)-.25 E F3(FIGNORE)2.5 E F0 -(is used to \214lter the matches.)2.25 E(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(52)190.395 E 0 Cg EP -%%Page: 53 53 +(shell v)108 523.2 Q(ariable)-.25 E F3(FIGNORE)2.5 E F0 +(is used to \214lter the matches.)2.25 E(An)108 540 Q 4.084(yc)-.15 G +1.584(ompletions speci\214ed by a pathname e)-4.084 F 1.584 +(xpansion pattern to the)-.15 F F14.084 E F0 1.584 +(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 552 S +.554(rds generated by the pattern need not match the w).1 F .555 +(ord being completed.)-.1 F(The)5.555 E F3(GLOBIGNORE)3.055 E F0 .555 +(shell v)2.805 F(ari-)-.25 E +(able is not used to \214lter the matches, b)108 564 Q(ut the)-.2 E F3 +(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 580.8 Q +.321(xt, the string speci\214ed as the ar)-.15 F .321(gument to the)-.18 +F F12.821 E F0 .32(option is considered.)2.821 F .32 +(The string is \214rst split using the)5.32 F .412(characters in the)108 +592.8 R F3(IFS)2.912 E F0 .412(special v)2.662 F .412 +(ariable as delimiters.)-.25 F .412(Shell quoting is honored.)5.412 F +.413(Each w)5.412 F .413(ord is then e)-.1 F(xpanded)-.15 E .092 +(using brace e)108 604.8 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 +616.8 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H +(nder).15 E F3(EXP)3.896 E(ANSION)-.666 E/F4 9/Times-Roman@0 SF(.)A F0 +1.396(The results are split using the rules described)5.896 F(abo)108 +628.8 Q .51 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.71 G .21 +(rd Splitting).75 F F0 5.21(.T)C .209(he results of the e)-5.21 F .209 +(xpansion are pre\214x-matched ag)-.15 F .209(ainst the w)-.05 F .209 +(ord being com-)-.1 F(pleted, and the matching w)108 640.8 Q +(ords become the possible completions.)-.1 E .233 +(After these matches ha)108 657.6 R .533 -.15(ve b)-.2 H .233 +(een generated, an).15 F 2.733(ys)-.15 G .234 +(hell function or command speci\214ed with the)-2.733 F F12.734 E +F0(and)2.734 E F12.734 E F0(op-)2.734 E 4.209(tions is in)108 +669.6 R -.2(vo)-.4 G -.1(ke).2 G 6.709(d. When).1 F 4.208 +(the command or function is in)6.709 F -.2(vo)-.4 G -.1(ke).2 G 4.208 +(d, the).1 F F3(COMP_LINE)6.708 E F4(,)A F3(COMP_POINT)6.458 E F4(,)A F3 +(COMP_KEY)108 681.6 Q F4(,)A F0(and)2.407 E F3(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 +693.6 S .986(hell function is being in)-3.486 F -.2(vo)-.4 G -.1(ke).2 G +.986(d, the).1 F F3(COMP_W)3.486 E(ORDS)-.09 E F0(and)3.236 E F3 +(COMP_CW)3.486 E(ORD)-.09 E F0 -.25(va)3.236 G .986 +(riables are also set.).25 F(When)5.985 E .346 +(the function or command is in)108 705.6 R -.2(vo)-.4 G -.1(ke).2 G .346 +(d, the \214rst ar).1 F .346(gument \()-.18 F F1($1)A F0 2.847(\)i)C +2.847(st)-2.847 G .347(he name of the command whose ar)-2.847 F(guments) +-.18 E .264(are being completed, the second ar)108 717.6 R .264 +(gument \()-.18 F F1($2)A F0 2.764(\)i)C 2.764(st)-2.764 G .264(he w) +-2.764 F .263(ord being completed, and the third ar)-.1 F .263 +(gument \()-.18 F F1($3)A F0 2.763(\)i)C(s)-2.763 E .628(the w)108 729.6 +R .628(ord preceding the w)-.1 F .629 +(ord being completed on the current command line.)-.1 F .629 +(No \214ltering of the generated)5.629 F(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(55)185.115 E 0 Cg EP +%%Page: 56 56 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(An)108 84 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 10/Times-Bold@0 SF4.084 E F0 -1.584(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 96 -S .555(rds generated by the pattern need not match the w).1 F .554 -(ord being completed.)-.1 F(The)5.554 E/F2 9/Times-Bold@0 SF(GLOBIGNORE) -3.054 E F0 .554(shell v)2.804 F(ari-)-.25 E -(able is not used to \214lter the matches, b)108 108 Q(ut the)-.2 E F2 -(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 124.8 Q -.32(xt, the string speci\214ed as the ar)-.15 F .32(gument to the)-.18 F -F12.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 136.8 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 -.412(Each w)5.412 F .412(ord is then e)-.1 F(xpanded)-.15 E .091 -(using brace e)108 148.8 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 -160.8 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 -172.8 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 184.8 Q -(ords become the possible completions.)-.1 E .234 -(After these matches ha)108 201.6 R .534 -.15(ve b)-.2 H .234 -(een generated, an).15 F 2.734(ys)-.15 G .233 -(hell function or command speci\214ed with the)-2.734 F F12.733 E -F0(and)2.733 E F12.733 E F0(op-)2.733 E 4.208(tions is in)108 -213.6 R -.2(vo)-.4 G -.1(ke).2 G 6.708(d. When).1 F 4.209 -(the command or function is in)6.708 F -.2(vo)-.4 G -.1(ke).2 G 4.209 -(d, the).1 F F2(COMP_LINE)6.709 E F3(,)A F2(COMP_POINT)6.459 E F3(,)A F2 -(COMP_KEY)108 225.6 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 -237.6 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.986 E .347 -(the function or command is in)108 249.6 R -.2(vo)-.4 G -.1(ke).2 G .347 -(d, the \214rst ar).1 F .346(gument \()-.18 F F1($1)A F0 2.846(\)i)C -2.846(st)-2.846 G .346(he name of the command whose ar)-2.846 F(guments) --.18 E .263(are being completed, the second ar)108 261.6 R .263 -(gument \()-.18 F F1($2)A F0 2.763(\)i)C 2.763(st)-2.763 G .264(he w) --2.763 F .264(ord being completed, and the third ar)-.1 F .264 -(gument \()-.18 F F1($3)A F0 2.764(\)i)C(s)-2.764 E .629(the w)108 273.6 -R .629(ord preceding the w)-.1 F .629 -(ord being completed on the current command line.)-.1 F .628 -(No \214ltering of the generated)5.629 F .714(completions ag)108 285.6 R -.714(ainst the w)-.05 F .714(ord being completed is performed; the func\ -tion or command has complete free-)-.1 F(dom in generating the matches.) -108 297.6 Q(An)108 314.4 Q 2.938(yf)-.15 G .437 -(unction speci\214ed with)-2.938 F F12.937 E F0 .437(is in)2.937 F --.2(vo)-.4 G -.1(ke).2 G 2.937<648c>.1 G 2.937(rst. The)-2.937 F .437 -(function may use an)2.937 F 2.937(yo)-.15 G 2.937(ft)-2.937 G .437 -(he shell f)-2.937 F .437(acilities, including)-.1 F(the)108 326.4 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 -338.4 Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25 -E(Ne)108 355.2 Q .081(xt, an)-.15 F 2.581(yc)-.15 G .081 -(ommand speci\214ed with the)-2.581 F F12.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 367.2 R -.359(should print a list of completions, one per line, to the standard \ -output.)2.858 F .359(Backslash may be used)5.359 F(to escape a ne)108 -379.2 Q(wline, if necessary)-.25 E(.)-.65 E .377 -(After all of the possible completions are generated, an)108 396 R 2.877 -<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F12.876 E F0 -.376(option is applied to the)2.876 F 3.181(list. The)108 408 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 420 R .523(ord being completed.)-.1 F -3.023(Al)5.523 G(iteral)-3.023 E F1(&)3.023 E F0 .522 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .715 +(completions ag)108 84 R .715(ainst the w)-.05 F .714(ord being complet\ +ed is performed; the function or command has complete free-)-.1 F +(dom in generating the matches.)108 96 Q(An)108 112.8 Q 2.937(yf)-.15 G +.437(unction speci\214ed with)-2.937 F/F1 10/Times-Bold@0 SF2.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 124.8 Q F1(compgen)2.957 E F0 -.2(bu)2.957 G .457 +(iltin described belo).2 F 1.756 -.65(w, t)-.25 H 2.956(og).65 G .456 +(enerate the matches.)-2.956 F .456 +(It must put the possible completions in the)5.456 F/F2 9/Times-Bold@0 +SF(COMPREPL)108 136.8 Q(Y)-.828 E F0(array v)2.25 E +(ariable, one per array element.)-.25 E(Ne)108 153.6 Q .08(xt, an)-.15 F +2.58(yc)-.15 G .08(ommand speci\214ed with the)-2.58 F F12.58 E F0 +.081(option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G 2.581(di).1 G 2.581 +(na)-2.581 G 2.581(ne)-2.581 G -.4(nv)-2.581 G .081(ironment equi).4 F +-.25(va)-.25 G .081(lent to command sub-).25 F 2.859(stitution. It)108 +165.6 R .359(should print a list of completions, one per line, to the s\ +tandard output.)2.859 F .358(Backslash may be used)5.359 F +(to escape a ne)108 177.6 Q(wline, if necessary)-.25 E(.)-.65 E .376 +(After all of the possible completions are generated, an)108 194.4 R +2.877<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F12.877 +E F0 .377(option is applied to the)2.877 F 3.182(list. The)108 206.4 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 218.4 R .522(ord being completed.)-.1 F 3.022(Al)5.522 G +(iteral)-3.022 E F1(&)3.022 E F0 .523 (may be escaped with a backslash; the backslash is remo)3.022 F -.15(ve) --.15 G 3.022(db).15 G(efore)-3.022 E .849(attempting a match.)108 432 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 444 Q -.05(ga)-.15 G .764 +-.15 G 3.023(db).15 G(efore)-3.023 E .85(attempting a match.)108 230.4 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 242.4 Q -.05(ga)-.15 G .764 (tes the pattern; in this case an).05 F 3.264(yc)-.15 G .764 (ompletion not matching the pattern will be remo)-3.264 F -.15(ve)-.15 G -3.264(d. If).15 F(the)3.264 E F1(nocase-)3.264 E(match)108 456 Q F0 +3.264(d. If).15 F(the)3.265 E F1(nocase-)3.265 E(match)108 254.4 Q F0 (shell option is enabled, the match is performed without re)2.5 E -.05 (ga)-.15 G(rd to the case of alphabetic characters.).05 E(Finally)108 -472.8 Q 3.086(,a)-.65 G .886 -.15(ny p)-3.086 H .586(re\214x and suf).15 +271.2 Q 3.087(,a)-.65 G .887 -.15(ny p)-3.087 H .587(re\214x and suf).15 F .587(\214x speci\214ed with the)-.25 F F13.087 E F0(and)3.087 E F13.087 E F0 .587(options are added to each member of the com-) 3.087 F(pletion list, and the result is returned to the readline comple\ -tion code as the list of possible completions.)108 484.8 Q .247 -(If the pre)108 501.6 R .247(viously-applied actions do not generate an) +tion code as the list of possible completions.)108 283.2 Q .246 +(If the pre)108 300 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 513.6 Q F0(when the compspec w)2.5 E -(as de\214ned, directory name completion is attempted.)-.1 E .461 -(If the)108 530.4 R F1 .462(\255o plusdirs)2.961 F F0 .462(option w) +2.747 F(names)-.15 E F0 .247(option w)2.747 F .247(as supplied to)-.1 F +F1(complete)108 312 Q F0(when the compspec w)2.5 E +(as de\214ned, directory name completion is attempted.)-.1 E .462 +(If the)108 328.8 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 542.4 Q 2.5(ym)-.15 G -(atches are added to the results of the other actions.)-2.5 E .56 -(By def)108 559.2 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 571.2 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 583.2 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 595.2 S 3.171(sd).1 G .671 -(e\214ned, the)-3.171 F F1(bash)3.171 E F0(def)3.171 E .671 +F(pletion is attempted and an)108 340.8 Q 2.5(ym)-.15 G +(atches are added to the results of the other actions.)-2.5 E .559 +(By def)108 357.6 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 369.6 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 381.6 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 393.6 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 F13.172 E(default)108 607.2 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 F13.171 E(default)108 405.6 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 -619.2 Q(ault)-.1 E F1(bash)2.5 E F0(completions\) generate no matches.) +417.6 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 636 R .633(tions force r\ -eadline to append a slash to completed names which are symbolic links t\ -o directories, subject)108 648 R 2.761(to the v)108 660 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 672 Q -(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E -.191(There is some support for dynamically modifying completions.)108 -688.8 R .19(This is most useful when used in combina-)5.191 F 1.172 -(tion with a def)108 700.8 R 1.172(ault completion speci\214ed with)-.1 +desired, the programmable completion func-)108 434.4 R .632(tions force\ + readline to append a slash to completed names which are symbolic links\ + to directories, subject)108 446.4 R 2.762(to the v)108 458.4 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 470.4 +Q(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E +.19(There is some support for dynamically modifying completions.)108 +487.2 R .191(This is most useful when used in combina-)5.191 F 1.172 +(tion with a def)108 499.2 R 1.172(ault completion speci\214ed with)-.1 F F1 1.172(complete \255D)3.672 F F0 6.172(.I)C(t')-6.172 E 3.672(sp) -.55 G 1.172(ossible for shell functions e)-3.672 F -.15(xe)-.15 G 1.172 (cuted as).15 F .93(completion handlers to indicate that completion sho\ -uld be retried by returning an e)108 712.8 R .93(xit status of 124.)-.15 +uld be retried by returning an e)108 511.2 R .93(xit status of 124.)-.15 F .93(If a)5.93 F .1(shell function returns 124, and changes the compsp\ -ec associated with the command on which completion is)108 724.8 R -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(53)190.395 E 0 Cg EP -%%Page: 54 54 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .666 -(being attempted \(supplied as the \214rst ar)108 84 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 96 -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 -(ws a set of)-.25 F(completions to be b)108 108 Q(uilt dynamically as c\ -ompletion is attempted, rather than being loaded all at once.)-.2 E -.15 -(Fo)108 124.8 S 2.637(ri).15 G .137 -(nstance, assuming that there is a library of compspecs, each k)-2.637 F +ec associated with the command on which completion is)108 523.2 R .665 +(being attempted \(supplied as the \214rst ar)108 535.2 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 +547.2 R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc) +-.25 G .084(ompspec for that command.)-2.584 F .083(This allo)5.083 F +.083(ws a set of)-.25 F(completions to be b)108 559.2 Q(uilt dynamicall\ +y as completion is attempted, rather than being loaded all at once.)-.2 +E -.15(Fo)108 576 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 136.8 Q(wing def)-.25 E +(the command, the follo)108 588 Q(wing def)-.25 E (ault completion function w)-.1 E(ould load completions dynamically:)-.1 -E/F1 10/Courier@0 SF(_completion_loader\(\))108 153.6 Q({)108 165.6 Q 6 -(.")144 177.6 S +E/F3 10/Courier@0 SF(_completion_loader\(\))108 604.8 Q({)108 616.8 Q 6 +(.")144 628.8 S (/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6 E(})108 -189.6 Q(complete -D -F _completion_loader -o bashdefault -o default)108 -201.6 Q/F2 10.95/Times-Bold@0 SF(HIST)72 230.4 Q(OR)-.197 E(Y)-.383 E F0 -.371(When the)108 242.4 R/F3 10/Times-Bold@0 SF .371(\255o history)2.871 -F F0 .371(option to the)2.871 F F3(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 254.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 266.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 +640.8 Q(complete -D -F _completion_loader -o bashdefault -o default)108 +652.8 Q/F4 10.95/Times-Bold@0 SF(HIST)72 681.6 Q(OR)-.197 E(Y)-.383 E F0 +.372(When the)108 693.6 R F1 .372(\255o history)2.872 F F0 .372 +(option to the)2.872 F F1(set)2.872 E F0 -.2(bu)2.872 G .372 +(iltin is enabled, the shell pro).2 F .371(vides access to the)-.15 F/F5 +10/Times-Italic@0 SF .371(command history)2.871 F F0(,)A .304 +(the list of commands pre)108 705.6 R .304(viously typed.)-.25 F .304 +(The v)5.304 F .304(alue of the)-.25 F F2(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 717.6 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 F2(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 -278.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 290.4 -S 4.065(ta).2 G 1.565(fter history e)-4.065 F 1.565 +729.6 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F2(EXP)2.787 E +(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E(GNU Bash 5.2)72 +768 Q(2022 September 19)135.955 E(56)185.115 E 0 Cg EP +%%Page: 57 57 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.2(bu)108 84 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 302.4 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.) -A F0 .082 +(alues of the shell v)-.25 F(ariables)-.25 E/F1 9/Times-Bold@0 SF +(HISTIGNORE)4.065 E F0(and)3.815 E F1(HISTCONTR)108 96 Q(OL)-.27 E/F2 9 +/Times-Roman@0 SF(.)A F0 .082 (On startup, the history is initialized from the \214le named by the v) -108 319.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 -331.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 .659 -(lines speci\214ed by the v)108 343.2 R .659(alue of)-.25 F F5 -(HISTFILESIZE)3.158 E F6(.)A F0(If)5.158 E F3(HISTFILESIZE)3.158 E F0 -.658(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 355.2 S -.142(lue, or a numeric v).25 F .142 +108 112.8 R(ariable)-.25 E F1(HISTFILE)2.583 E F0(\(def)2.333 E(ault)-.1 +E/F3 10/Times-Italic@0 SF(~/.bash_history)2.583 E F0(\).)A .315 +(The \214le named by the v)108 124.8 R .315(alue of)-.25 F F1(HISTFILE) +2.815 E F0 .315(is truncated, if necessary)2.565 F 2.815(,t)-.65 G 2.815 +(oc)-2.815 G .315(ontain no more than the number of)-2.815 F .658 +(lines speci\214ed by the v)108 136.8 R .658(alue of)-.25 F F1 +(HISTFILESIZE)3.158 E F2(.)A F0(If)5.158 E/F4 10/Times-Bold@0 SF +(HISTFILESIZE)3.158 E F0 .659(is unset, or set to null, a non-numeric) +3.158 F -.25(va)108 148.8 S .142(lue, or a numeric v).25 F .142 (alue less than zero, the history \214le is not truncated.)-.25 F .142 -(When the history \214le is read, lines)5.142 F(be)108 367.2 Q 1.605 +(When the history \214le is read, lines)5.142 F(be)108 160.8 Q 1.604 (ginning with the history comment character follo)-.15 F 1.604 -(wed immediately by a digit are interpreted as time-)-.25 F .15 -(stamps for the follo)108 379.2 R .15(wing history line.)-.25 F .151 +(wed immediately by a digit are interpreted as time-)-.25 F .151 +(stamps for the follo)108 172.8 R .151(wing history line.)-.25 F .151 (These timestamps are optionally displayed depending on the v)5.151 F -.151(alue of)-.25 F(the)108 391.2 Q F5(HISTTIMEFORMA)3.559 E(T)-.855 E -F0 -.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059 -(hell with history enabled e)-3.559 F 1.059(xits, the last)-.15 F F5 -($HISTSIZE)3.559 E F0 1.058(lines are)3.309 F .158 -(copied from the history list to)108 403.2 R F5($HISTFILE)2.658 E F6(.)A -F0 .158(If the)4.658 F F3(histappend)2.658 E F0 .159 -(shell option is enabled \(see the description of)2.659 F F3(shopt)108 -415.2 Q F0(under)2.582 E F5 .082(SHELL B)2.582 F(UIL)-.09 E .082 +.15(alue of)-.25 F(the)108 184.8 Q F1(HISTTIMEFORMA)3.558 E(T)-.855 E F0 +-.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059 +(hell with history enabled e)-3.559 F 1.059(xits, the last)-.15 F F1 +($HISTSIZE)3.559 E F0 1.059(lines are)3.309 F .159 +(copied from the history list to)108 196.8 R F1($HISTFILE)2.659 E F2(.)A +F0 .159(If the)4.659 F F4(histappend)2.658 E F0 .158 +(shell option is enabled \(see the description of)2.658 F F4(shopt)108 +208.8 Q F0(under)2.581 E F1 .081(SHELL B)2.581 F(UIL)-.09 E .081 (TIN COMMANDS)-.828 F F0(belo)2.332 E .082 (w\), the lines are appended to the history \214le, otherwise the)-.25 F -.196(history \214le is o)108 427.2 R -.15(ve)-.15 G 2.696(rwritten. If) -.15 F F5(HISTFILE)2.696 E F0 .197(is unset, or if the history \214le is\ - unwritable, the history is not sa)2.446 F -.15(ve)-.2 G(d.).15 E .584 -(If the)108 439.2 R F5(HISTTIMEFORMA)3.084 E(T)-.855 E F0 -.25(va)2.834 +.197(history \214le is o)108 220.8 R -.15(ve)-.15 G 2.697(rwritten. If) +.15 F F1(HISTFILE)2.697 E F0 .196(is unset, or if the history \214le is\ + unwritable, the history is not sa)2.447 F -.15(ve)-.2 G(d.).15 E .583 +(If the)108 232.8 R F1(HISTTIMEFORMA)3.083 E(T)-.855 E F0 -.25(va)2.834 G .584 (riable is set, time stamps are written to the history \214le, mark).25 -F .583(ed with the his-)-.1 F 1.147(tory comment character)108 451.2 R -3.647(,s)-.4 G 3.647(ot)-3.647 G(he)-3.647 E 3.647(ym)-.15 G 1.147 -(ay be preserv)-3.647 F 1.147(ed across shell sessions.)-.15 F 1.148 -(This uses the history comment)6.148 F 1.377 -(character to distinguish timestamps from other history lines.)108 463.2 -R 1.377(After sa)6.377 F 1.377(ving the history)-.2 F 3.876(,t)-.65 G -1.376(he history \214le is)-3.876 F .756 -(truncated to contain no more than)108 475.2 R F5(HISTFILESIZE)3.257 E -F0 3.257(lines. If)3.007 F F5(HISTFILESIZE)3.257 E F0 .757 -(is unset, or set to null, a non-)3.007 F(numeric v)108 487.2 Q +F .584(ed with the his-)-.1 F 1.148(tory comment character)108 244.8 R +3.648(,s)-.4 G 3.648(ot)-3.648 G(he)-3.648 E 3.648(ym)-.15 G 1.147 +(ay be preserv)-3.648 F 1.147(ed across shell sessions.)-.15 F 1.147 +(This uses the history comment)6.147 F 1.376 +(character to distinguish timestamps from other history lines.)108 256.8 +R 1.377(After sa)6.377 F 1.377(ving the history)-.2 F 3.877(,t)-.65 G +1.377(he history \214le is)-3.877 F .757 +(truncated to contain no more than)108 268.8 R F1(HISTFILESIZE)3.257 E +F0 3.257(lines. If)3.007 F F1(HISTFILESIZE)3.257 E F0 .757 +(is unset, or set to null, a non-)3.007 F(numeric v)108 280.8 Q (alue, or a numeric v)-.25 E -(alue less than zero, the history \214le is not truncated.)-.25 E .299 -(The b)108 504 R .299(uiltin command)-.2 F F3(fc)2.799 E F0(\(see)2.799 -E F5 .299(SHELL B)2.799 F(UIL)-.09 E .299(TIN COMMANDS)-.828 F F0(belo) -2.549 E .298(w\) may be used to list or edit and re-e)-.25 F -.15(xe) --.15 G(-).15 E .471(cute a portion of the history list.)108 516 R(The) -5.471 E F3(history)2.971 E F0 -.2(bu)2.971 G .472 -(iltin may be used to display or modify the history list and).2 F .002 -(manipulate the history \214le.)108 528 R .001 -(When using command-line editing, search commands are a)5.002 F -.25(va) --.2 G .001(ilable in each edit-).25 F(ing mode that pro)108 540 Q -(vide access to the history list.)-.15 E 1.485(The shell allo)108 556.8 -R 1.485(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486 +(alue less than zero, the history \214le is not truncated.)-.25 E .298 +(The b)108 297.6 R .298(uiltin command)-.2 F F4(fc)2.798 E F0(\(see) +2.798 E F1 .298(SHELL B)2.798 F(UIL)-.09 E .298(TIN COMMANDS)-.828 F F0 +(belo)2.549 E .299(w\) may be used to list or edit and re-e)-.25 F -.15 +(xe)-.15 G(-).15 E .472(cute a portion of the history list.)108 309.6 R +(The)5.472 E F4(history)2.972 E F0 -.2(bu)2.972 G .471 +(iltin may be used to display or modify the history list and).2 F .001 +(manipulate the history \214le.)108 321.6 R .001 +(When using command-line editing, search commands are a)5.001 F -.25(va) +-.2 G .002(ilable in each edit-).25 F(ing mode that pro)108 333.6 Q +(vide access to the history list.)-.15 E 1.486(The shell allo)108 350.4 +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 568.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 F3 -(cmdhist)108 580.8 Q F0 .75 +-3.986 G 1.486(he history list.)-3.986 F(The)6.485 E F1(HISTCONTR)3.985 +E(OL)-.27 E F0(and)3.735 E F1(HISTIGNORE)108 362.4 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 F4 +(cmdhist)108 374.4 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 592.8 R 3.577(,a)-.65 G 1.077 +(the same history entry)108 386.4 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 F3(lithist)3.576 E F0 -.373(shell option causes the shell to sa)108 604.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 616.8 R F3(shopt)2.819 E F0 -.2(bu)2.819 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 +1.077(yntactic correctness.)-3.577 F(The)6.077 E F4(lithist)3.577 E F0 +.374(shell option causes the shell to sa)108 398.4 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 410.4 R F4(shopt)2.818 E F0 -.2(bu)2.818 G .318 +(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F1 .318(SHELL B)2.818 F +(UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .319 (for information on setting and)2.568 F(unsetting shell options.)108 -628.8 Q F2(HIST)72 645.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 657.6 R .611 -(xpansion feature that is similar to the history e)-.15 F .611 -(xpansion in)-.15 F F3(csh)3.111 E F0 5.611(.T)C .611(his section)-5.611 -F .871(describes what syntax features are a)108 669.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 -.949(can be disabled using the)108 681.6 R F3(+H)3.449 E F0 .949 -(option to the)3.449 F F3(set)3.449 E F0 -.2(bu)3.449 G .949 -(iltin command \(see).2 F F5 .949(SHELL B)3.449 F(UIL)-.09 E .95 -(TIN COMMANDS)-.828 F F0(be-)3.2 E(lo)108 693.6 Q 2.5 +422.4 Q/F5 10.95/Times-Bold@0 SF(HIST)72 439.2 Q(OR)-.197 E 2.738(YE) +-.383 G(XP)-2.738 E(ANSION)-.81 E F0 .611 +(The shell supports a history e)108 451.2 R .611 +(xpansion feature that is similar to the history e)-.15 F .61 +(xpansion in)-.15 F F4(csh)3.11 E F0 5.61(.T)C .61(his section)-5.61 F +.87(describes what syntax features are a)108 463.2 R -.25(va)-.2 G 3.371 +(ilable. This).25 F .871(feature is enabled by def)3.371 F .871 +(ault for interacti)-.1 F 1.171 -.15(ve s)-.25 H .871(hells, and).15 F +.95(can be disabled using the)108 475.2 R F4(+H)3.449 E F0 .949 +(option to the)3.449 F F4(set)3.449 E F0 -.2(bu)3.449 G .949 +(iltin command \(see).2 F F1 .949(SHELL B)3.449 F(UIL)-.09 E .949 +(TIN COMMANDS)-.828 F F0(be-)3.199 E(lo)108 487.2 Q 2.5 (w\). Non-interacti)-.25 F .3 -.15(ve s)-.25 H (hells do not perform history e).15 E(xpansion by def)-.15 E(ault.)-.1 E -1.306(History e)108 710.4 R 1.306(xpansions introduce w)-.15 F 1.306(or\ -ds from the history list into the input stream, making it easy to repea\ -t)-.1 F .209(commands, insert the ar)108 722.4 R .209(guments to a pre) --.18 F .21 -(vious command into the current input line, or \214x errors in pre)-.25 -F(vious)-.25 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(54) -190.395 E 0 Cg EP -%%Page: 55 55 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(commands quickly) -108 84 Q(.)-.65 E 1.164(History e)108 100.8 R 1.163(xpansion is perform\ -ed immediately after a complete line is read, before the shell breaks i\ -t into)-.15 F -.1(wo)108 112.8 S .251 -(rds, and is performed on each line indi).1 F .251 -(vidually without taking quoting on pre)-.25 F .252 -(vious lines into account.)-.25 F(It)5.252 E(tak)108 124.8 Q .146 -(es place in tw)-.1 F 2.646(op)-.1 G 2.646(arts. The)-2.646 F .146(\214\ +1.305(History e)108 504 R 1.305(xpansions introduce w)-.15 F 1.306(ords\ + from the history list into the input stream, making it easy to repeat) +-.1 F .21(commands, insert the ar)108 516 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 528 Q(.)-.65 E 1.163(History e) +108 544.8 R 1.163(xpansion is performed immediately after a complete li\ +ne is read, before the shell breaks it into)-.15 F -.1(wo)108 556.8 S +.252(rds, and is performed on each line indi).1 F .251 +(vidually without taking quoting on pre)-.25 F .251 +(vious lines into account.)-.25 F(It)5.251 E(tak)108 568.8 Q .145 +(es place in tw)-.1 F 2.645(op)-.1 G 2.646(arts. The)-2.645 F .146(\214\ rst is to determine which line from the history list to use during subs\ titution.)2.646 F .766(The second is to select portions of that line fo\ -r inclusion into the current one.)108 136.8 R .767 -(The line selected from the)5.767 F .254(history is the)108 148.8 R/F1 -10/Times-Italic@0 SF -.15(ev)2.754 G(ent).15 E F0 2.753(,a)C .253 -(nd the portions of that line that are acted upon are)-2.753 F F1(wor) -2.753 E(ds)-.37 E F0 5.253(.V)C(arious)-6.363 E F1(modi\214er)2.753 E(s) --.1 E F0 .253(are a)2.753 F -.25(va)-.2 G(il-).25 E .538 -(able to manipulate the selected w)108 160.8 R 3.038(ords. The)-.1 F -.538(line is brok)3.038 F .538(en into w)-.1 F .539(ords in the same f) --.1 F .539(ashion as when reading)-.1 F .573(input, so that se)108 172.8 -R -.15(ve)-.25 G(ral).15 E F1(metac)3.073 E(har)-.15 E(acter)-.15 E F0 +r inclusion into the current one.)108 580.8 R .766 +(The line selected from the)5.766 F .253(history is the)108 592.8 R F3 +-.15(ev)2.753 G(ent).15 E F0 2.753(,a)C .253 +(nd the portions of that line that are acted upon are)-2.753 F F3(wor) +2.753 E(ds)-.37 E F0 5.253(.V)C(arious)-6.363 E F3(modi\214er)2.754 E(s) +-.1 E F0 .254(are a)2.754 F -.25(va)-.2 G(il-).25 E .539 +(able to manipulate the selected w)108 604.8 R 3.039(ords. The)-.1 F +.538(line is brok)3.038 F .538(en into w)-.1 F .538(ords in the same f) +-.1 F .538(ashion as when reading)-.1 F .572(input, so that se)108 616.8 +R -.15(ve)-.25 G(ral).15 E F3(metac)3.072 E(har)-.15 E(acter)-.15 E F0 .572(-separated w)B .572(ords surrounded by quotes are considered one w) --.1 F 3.072(ord. His-)-.1 F .355(tory e)108 184.8 R .355 +-.1 F 3.073(ord. His-)-.1 F .356(tory e)108 628.8 R .355 (xpansions are introduced by the appearance of the history e)-.15 F .355 -(xpansion character)-.15 F 2.855(,w)-.4 G .356(hich is)-2.855 F/F2 10 -/Times-Bold@0 SF(!)3.689 E F0 .356(by def)3.689 F(ault.)-.1 E .791 -(Only backslash \()108 196.8 R F2(\\).833 E F0 3.291(\)a).833 G .79 -(nd single quotes can quote the history e)-3.291 F .79 -(xpansion character)-.15 F 3.29(,b)-.4 G .79(ut the history e)-3.49 F +(xpansion character)-.15 F 2.855(,w)-.4 G .355(hich is)-2.855 F F4(!) +3.688 E F0 .355(by def)3.688 F(ault.)-.1 E .79(Only backslash \()108 +640.8 R F4(\\).833 E F0 3.29(\)a).833 G .79 +(nd single quotes can quote the history e)-3.29 F .79 +(xpansion character)-.15 F 3.291(,b)-.4 G .791(ut the history e)-3.491 F (xpansion)-.15 E .789(character is also treated as quoted if it immedia\ -tely precedes the closing double quote in a double-quoted)108 208.8 R -(string.)108 220.8 Q(Se)108 237.6 Q -.15(ve)-.25 G .03 +tely precedes the closing double quote in a double-quoted)108 652.8 R +(string.)108 664.8 Q(Se)108 681.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 249.6 T -3.162(ni).25 G 3.162(fi)-3.162 G 3.162(ti)-3.162 G 3.162(su)-3.162 G +F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 693.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 .662(nquoted: space, tab, ne)-3.162 F .662(wline, carriage return, and) --.25 F F2(=)3.162 E F0 5.662(.I)C 3.162(ft)-5.662 G(he)-3.162 E F2 -(extglob)3.162 E F0 .662(shell option is enabled,)3.162 F F2(\()3.163 E -F0(will also inhibit e)108 261.6 Q(xpansion.)-.15 E(Se)108 278.4 Q -.15 -(ve)-.25 G .11(ral shell options settable with the).15 F F2(shopt)2.61 E -F0 -.2(bu)2.61 G .109(iltin may be used to tailor the beha).2 F .109 -(vior of history e)-.2 F(xpansion.)-.15 E .231(If the)108 290.4 R F2 -(histv)2.731 E(erify)-.1 E F0 .231 -(shell option is enabled \(see the description of the)2.731 F F2(shopt) -2.731 E F0 -.2(bu)2.731 G .231(iltin belo).2 F .231(w\), and)-.25 F F2 --.18(re)2.731 G(adline).18 E F0 .232(is be-)2.732 F .449(ing used, hist\ -ory substitutions are not immediately passed to the shell parser)108 -302.4 R 5.449(.I)-.55 G .448(nstead, the e)-5.449 F .448 -(xpanded line is)-.15 F 2.228(reloaded into the)108 314.4 R F2 -.18(re) -4.728 G(adline).18 E F0 2.228(editing b)4.728 F(uf)-.2 E 2.228 -(fer for further modi\214cation.)-.25 F(If)7.228 E F2 -.18(re)4.728 G -(adline).18 E F0 2.228(is being used, and the)4.728 F F2(histr)108 326.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 338.4 S -.25(ff).2 G -.303(er for correction.).25 F(The)5.303 E F22.803 E F0 .303 -(option to the)2.803 F F2(history)2.804 E F0 -.2(bu)2.804 G .304 +-.25 F F4(=)3.162 E F0 5.662(.I)C 3.162(ft)-5.662 G(he)-3.162 E F4 +(extglob)3.162 E F0 .662(shell option is enabled,)3.162 F F4(\()3.162 E +F0(will also inhibit e)108 705.6 Q(xpansion.)-.15 E(Se)108 722.4 Q -.15 +(ve)-.25 G .109(ral shell options settable with the).15 F F4(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(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(57)185.115 E 0 Cg EP +%%Page: 58 58 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .232(If the)108 84 +R/F1 10/Times-Bold@0 SF(histv)2.732 E(erify)-.1 E F0 .231 +(shell option is enabled \(see the description of the)2.731 F F1(shopt) +2.731 E F0 -.2(bu)2.731 G .231(iltin belo).2 F .231(w\), and)-.25 F F1 +-.18(re)2.731 G(adline).18 E F0 .231(is be-)2.731 F .449(ing used, hist\ +ory substitutions are not immediately passed to the shell parser)108 96 +R 5.449(.I)-.55 G .449(nstead, the e)-5.449 F .449(xpanded line is)-.15 +F 2.228(reloaded into the)108 108 R F1 -.18(re)4.728 G(adline).18 E F0 +2.228(editing b)4.728 F(uf)-.2 E 2.228(fer for further modi\214cation.) +-.25 F(If)7.228 E F1 -.18(re)4.728 G(adline).18 E F0 2.228 +(is being used, and the)4.728 F F1(histr)108 120 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 F1 -.18(re) +3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 132 S -.25(ff).2 G +.304(er for correction.).25 F(The)5.304 E F12.804 E F0 .304 +(option to the)2.804 F F1(history)2.804 E F0 -.2(bu)2.804 G .303 (iltin command may be used to see what a history e).2 F(x-)-.15 E .52 -(pansion will do before using it.)108 350.4 R(The)5.52 E F23.02 E -F0 .52(option to the)3.02 F F2(history)3.02 E F0 -.2(bu)3.02 G .52 +(pansion will do before using it.)108 144 R(The)5.52 E F13.02 E F0 +.52(option to the)3.02 F F1(history)3.02 E F0 -.2(bu)3.02 G .52 (iltin may be used to add commands to the).2 F -(end of the history list without actually e)108 362.4 Q -.15(xe)-.15 G +(end of the history list without actually e)108 156 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 1.108(The shell allo)108 379.2 R +(ilable for subsequent recall.).25 E 1.109(The shell allo)108 172.8 R 1.108(ws control of the v)-.25 F 1.108 (arious characters used by the history e)-.25 F 1.108 -(xpansion mechanism \(see the de-)-.15 F .163(scription of)108 391.2 R -F2(histchars)2.663 E F0(abo)2.663 E .463 -.15(ve u)-.15 H(nder).15 E F2 -.163(Shell V)2.663 F(ariables)-.92 E F0 2.663(\). The)B .162 +(xpansion mechanism \(see the de-)-.15 F .162(scription of)108 184.8 R +F1(histchars)2.662 E F0(abo)2.662 E .462 -.15(ve u)-.15 H(nder).15 E F1 +.163(Shell V)2.662 F(ariables)-.92 E F0 2.663(\). The)B .163 (shell uses the history comment character to mark)2.663 F -(history timestamps when writing the history \214le.)108 403.2 Q F2(Ev) -87 420 Q(ent Designators)-.1 E F0 .204(An e)108 432 R -.15(ve)-.25 G +(history timestamps when writing the history \214le.)108 196.8 Q F1(Ev) +87 213.6 Q(ent Designators)-.1 E F0 .205(An e)108 225.6 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 444 -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 460.8 Q F0 -1.608(Start a history substitution, e)144 460.8 R 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 472.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 484.8 Q F1(n)A F0(Refer to command line)144 -484.8 Q F1(n)2.86 E F0(.).24 E F2<21ad>108 496.8 Q F1(n)A F0 -(Refer to the current command minus)144 496.8 Q F1(n)2.86 E F0(.).24 E -F2(!!)108 508.8 Q F0(Refer to the pre)144 508.8 Q(vious command.)-.25 E -(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 520.8 Q F1(string) -A F0 .865(Refer to the most recent command preceding the current positi\ -on in the history list starting with)144 520.8 R F1(string)144.34 532.8 -Q F0(.).22 E F2(!?)108 544.8 Q F1(string)A F2([?])A F0 1.503(Refer to t\ -he most recent command preceding the current position in the history li\ -st containing)144 556.8 R F1(string)144.34 568.8 Q F0 5.496(.T).22 G -.496(he trailing)-5.496 F F2(?)2.996 E F0 .496(may be omitted if)2.996 F -F1(string)3.336 E F0 .497(is follo)3.216 F .497(wed immediately by a ne) --.25 F 2.997(wline. If)-.25 F F1(string)2.997 E F0(is)2.997 E .391(miss\ -ing, the string from the most recent search is used; it is an error if \ -there is no pre)144 580.8 R .39(vious search)-.25 F(string.)144 592.8 Q -/F3 12/Times-Bold@0 SF(^)108 609.8 Q F1(string1)-5 I F3(^)5 I F1 -(string2)-5 I F3(^)5 I F0 .752(Quick substitution.)144 616.8 R .752 -(Repeat the pre)5.752 F .753(vious command, replacing)-.25 F F1(string1) -3.593 E F0(with)3.253 E F1(string2)3.593 E F0 5.753(.E).02 G(qui)-5.753 -E -.25(va)-.25 G .753(lent to).25 F -.74(``)144 628.8 S(!!:s).74 E/F4 12 -/Times-Roman@0 SF(^)5 I F1(string1)-5 I F4(^)5 I F1(string2)-5 I F4(^)5 -I F0 1.48 -.74('' \()-5 L(see).74 E F2(Modi\214ers)2.5 E F0(belo)2.5 E -(w\).)-.25 E F2(!#)108 640.8 Q F0(The entire command line typed so f)144 -640.8 Q(ar)-.1 E(.)-.55 E F2 -.75(Wo)87 657.6 S(rd Designators).75 E F0 --.8(Wo)108 669.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.313(separates the e)3.813 F -.15(ve)-.25 G 1.313 -(nt speci\214cation).15 F .529(from the w)108 681.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 F23.029 E F0 3.029(,o)C(r)-3.029 E F2(%)3.029 E F0 5.53(.W)C -(ords)-6.33 E .516(are numbered from the be)108 693.6 R .516 +y list.).15 F .204(Unless the reference is abso-)5.204 F(lute, e)108 +237.6 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 F1(!)108 254.4 Q +F0 1.607(Start a history substitution, e)144 254.4 R 1.607 +(xcept when follo)-.15 F 1.607(wed by a)-.25 F F1(blank)4.107 E F0 4.107 +(,n)C -.25(ew)-4.107 G 1.608(line, carriage return, = or \().25 F +(\(when the)144 266.4 Q F1(extglob)2.5 E F0 +(shell option is enabled using the)2.5 E F1(shopt)2.5 E F0 -.2(bu)2.5 G +(iltin\).).2 E F1(!)108 278.4 Q/F2 10/Times-Italic@0 SF(n)A F0 +(Refer to command line)144 278.4 Q F2(n)2.86 E F0(.).24 E F1<21ad>108 +290.4 Q F2(n)A F0(Refer to the current command minus)144 290.4 Q F2(n) +2.86 E F0(.).24 E F1(!!)108 302.4 Q F0(Refer to the pre)144 302.4 Q +(vious command.)-.25 E(This is a synon)5 E(ym for `!\2551'.)-.15 E F1(!) +108 314.4 Q F2(string)A F0 .865(Refer to the most recent command preced\ +ing the current position in the history list starting with)144 314.4 R +F2(string)144.34 326.4 Q F0(.).22 E F1(!?)108 338.4 Q F2(string)A F1 +([?])A F0 1.503(Refer to the most recent command preceding the current \ +position in the history list containing)144 350.4 R F2(string)144.34 +362.4 Q F0 5.497(.T).22 G .497(he trailing)-5.497 F F1(?)2.997 E F0 .497 +(may be omitted if)2.997 F F2(string)3.337 E F0 .496(is follo)3.216 F +.496(wed immediately by a ne)-.25 F 2.996(wline. If)-.25 F F2(string) +2.996 E F0(is)2.996 E .39(missing, the string from the most recent sear\ +ch is used; it is an error if there is no pre)144 374.4 R .391 +(vious search)-.25 F(string.)144 386.4 Q/F3 12/Times-Bold@0 SF(^)108 +403.4 Q F2(string1)-5 I F3(^)5 I F2(string2)-5 I F3(^)5 I F0 .753 +(Quick substitution.)144 410.4 R .753(Repeat the pre)5.753 F .753 +(vious command, replacing)-.25 F F2(string1)3.593 E F0(with)3.253 E F2 +(string2)3.592 E F0 5.752(.E).02 G(qui)-5.752 E -.25(va)-.25 G .752 +(lent to).25 F -.74(``)144 422.4 S(!!:s).74 E/F4 12/Times-Roman@0 SF(^)5 +I F2(string1)-5 I F4(^)5 I F2(string2)-5 I F4(^)5 I F0 1.48 -.74('' \() +-5 L(see).74 E F1(Modi\214ers)2.5 E F0(belo)2.5 E(w\).)-.25 E F1(!#)108 +434.4 Q F0(The entire command line typed so f)144 434.4 Q(ar)-.1 E(.) +-.55 E F1 -.75(Wo)87 451.2 S(rd Designators).75 E F0 -.8(Wo)108 463.2 S +1.313(rd designators are used to select desired w).8 F 1.314 +(ords from the e)-.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F1(:)3.814 E F0 +1.314(separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation) +.15 F .53(from the w)108 475.2 R .529(ord designator)-.1 F 5.529(.I)-.55 +G 3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529 +(ord designator be)-.1 F .529(gins with a)-.15 F F1(^)3.029 E F0(,)A F1 +($)3.029 E F0(,)A F1(*)3.029 E F0(,)A F13.029 E F0 3.029(,o)C(r) +-3.029 E F1(%)3.029 E F0 5.529(.W)C(ords)-6.329 E .515 +(are numbered from the be)108 487.2 R .516 (ginning of the line, with the \214rst w)-.15 F .516 -(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)5.515 G .515(rds are in-) -.8 F(serted into the current line separated by single spaces.)108 705.6 -Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(55)190.395 E 0 Cg EP -%%Page: 56 56 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF 2.5(0\()108 84 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 96 Q 2.5 -(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E/F2 -10/Times-Italic@0 SF(n)108.36 108 Q F0(The)144 108 Q F2(n)2.5 E F0(th w) -A(ord.)-.1 E F1(^)108 120 Q F0(The \214rst ar)144 120 Q 2.5 -(gument. That)-.18 F(is, w)2.5 E(ord 1.)-.1 E F1($)108 132 Q F0 .063 -(The last w)144 132 R 2.563(ord. This)-.1 F .063(is usually the last ar) -2.563 F .064(gument, b)-.18 F .064(ut will e)-.2 F .064 -(xpand to the zeroth w)-.15 F .064(ord if there is only)-.1 F(one w)144 -144 Q(ord in the line.)-.1 E F1(%)108 156 Q F0 1.42(The \214rst w)144 -156 R 1.42(ord matched by the most recent `?)-.1 F F2(string)A F0 1.419 -(?' search, if the search string be)B 1.419(gins with a)-.15 F -(character that is part of a w)144 168 Q(ord.)-.1 E F2(x)108.77 180 Q F1 -A F2(y)A F0 2.5(Ar)144 180 S(ange of w)-2.5 E(ords; `\255)-.1 E F2 +(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)5.516 G .516(rds are in-) +.8 F(serted into the current line separated by single spaces.)108 499.2 +Q F1 2.5(0\()108 516 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 528 Q +2.5(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E +F2(n)108.36 540 Q F0(The)144 540 Q F2(n)2.5 E F0(th w)A(ord.)-.1 E F1(^) +108 552 Q F0(The \214rst ar)144 552 Q 2.5(gument. That)-.18 F(is, w)2.5 +E(ord 1.)-.1 E F1($)108 564 Q F0 .064(The last w)144 564 R 2.564 +(ord. This)-.1 F .064(is usually the last ar)2.564 F .064(gument, b)-.18 +F .064(ut will e)-.2 F .064(xpand to the zeroth w)-.15 F .063 +(ord if there is only)-.1 F(one w)144 576 Q(ord in the line.)-.1 E F1(%) +108 588 Q F0 1.419(The \214rst w)144 588 R 1.419 +(ord matched by the most recent `?)-.1 F F2(string)A F0 1.42 +(?' search, if the search string be)B 1.42(gins with a)-.15 F +(character that is part of a w)144 600 Q(ord.)-.1 E F2(x)108.77 612 Q F1 +A F2(y)A F0 2.5(Ar)144 612 S(ange of w)-2.5 E(ords; `\255)-.1 E F2 (y)A F0 2.5('a)C(bbre)-2.5 E(viates `0\255)-.25 E F2(y)A F0('.)A F1(*) -108 192 Q F0 .315(All of the w)144 192 R .315(ords b)-.1 F .315 +108 624 Q F0 .316(All of the w)144 624 R .316(ords b)-.1 F .316 (ut the zeroth.)-.2 F .315(This is a synon)5.315 F .315(ym for `)-.15 F F2(1\255$)A F0 2.815('. It)B .315(is not an error to use)2.815 F F1(*) -2.816 E F0 .316(if there is)2.816 F(just one w)144 204 Q(ord in the e) +2.815 E F0 .315(if there is)2.815 F(just one w)144 636 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 216 Q F0(Abbre)144 216 Q(viates)-.25 E F2(x\255$)2.5 E F0(.) -A F1<78ad>108 228 Q F0(Abbre)144 228 Q(viates)-.25 E F2(x\255$)2.5 E F0 +E F1(x*)108 648 Q F0(Abbre)144 648 Q(viates)-.25 E F2(x\255$)2.5 E F0(.) +A F1<78ad>108 660 Q F0(Abbre)144 660 Q(viates)-.25 E F2(x\255$)2.5 E F0 (lik)2.5 E(e)-.1 E F1(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E 2.5(ord. If)-.1 F F1(x)2.5 E F0(is missing, it def)2.5 E(aults to 0.)-.1 -E(If a w)108 244.8 Q(ord designator is supplied without an e)-.1 E -.15 +E(If a w)108 676.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 261.6 Q F0 .184(After the optional w)108 273.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 285.6 Q +(Modi\214ers)87 693.6 Q F0 .183(After the optional w)108 705.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 717.6 Q (These modify)5 E 2.5(,o)-.65 G 2.5(re)-2.5 G(dit, the w)-2.5 E (ord or w)-.1 E(ords selected from the history e)-.1 E -.15(ve)-.25 G -(nt.).15 E F1(h)108 302.4 Q F0(Remo)144 302.4 Q .3 -.15(ve a t)-.15 H +(nt.).15 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(58)185.115 +E 0 Cg EP +%%Page: 59 59 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(h)108 84 Q F0(Remo)144 84 Q .3 -.15(ve a t)-.15 H (railing \214lename component, lea).15 E(ving only the head.)-.2 E F1(t) -108 314.4 Q F0(Remo)144 314.4 Q .3 -.15(ve a)-.15 H +108 96 Q F0(Remo)144 96 Q .3 -.15(ve a)-.15 H (ll leading \214lename components, lea).15 E(ving the tail.)-.2 E F1(r) -108 326.4 Q F0(Remo)144 326.4 Q .3 -.15(ve a t)-.15 H(railing suf).15 E -(\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E -(ving the basename.)-.2 E F1(e)108 338.4 Q F0(Remo)144 338.4 Q .3 -.15 -(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 -350.4 Q F0(Print the ne)144 350.4 Q 2.5(wc)-.25 G(ommand b)-2.5 E -(ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q)108 362.4 Q F0 -(Quote the substituted w)144 362.4 Q -(ords, escaping further substitutions.)-.1 E F1(x)108 374.4 Q F0 .385 -(Quote the substituted w)144 374.4 R .385(ords as with)-.1 F F1(q)2.885 -E F0 2.885(,b)C .386(ut break into w)-3.085 F .386(ords at)-.1 F F1 -(blanks)2.886 E F0 .386(and ne)2.886 F 2.886(wlines. The)-.25 F F1(q) -2.886 E F0(and)2.886 E F1(x)2.886 E F0(modi\214ers are mutually e)144 -386.4 Q(xclusi)-.15 E -.15(ve)-.25 G 2.5(;t).15 G -(he last one supplied is used.)-2.5 E F1(s/)108 398.4 Q F2(old)A F1(/)A -F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 410.4 Q F2(ne)3.329 E(w)-.15 E -F0 .469(for the \214rst occurrence of)3.279 F F2(old)3.199 E F0 .469 +108 108 Q F0(Remo)144 108 Q .3 -.15(ve a t)-.15 H(railing suf).15 E +(\214x of the form)-.25 E/F2 10/Times-Italic@0 SF(.xxx)2.5 E F0 2.5(,l)C +(ea)-2.5 E(ving the basename.)-.2 E F1(e)108 120 Q F0(Remo)144 120 Q .3 +-.15(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1 +(p)108 132 Q F0(Print the ne)144 132 Q 2.5(wc)-.25 G(ommand b)-2.5 E +(ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q)108 144 Q F0 +(Quote the substituted w)144 144 Q +(ords, escaping further substitutions.)-.1 E F1(x)108 156 Q F0 .386 +(Quote the substituted w)144 156 R .386(ords as with)-.1 F F1(q)2.886 E +F0 2.886(,b)C .386(ut break into w)-3.086 F .385(ords at)-.1 F F1 +(blanks)2.885 E F0 .385(and ne)2.885 F 2.885(wlines. The)-.25 F F1(q) +2.885 E F0(and)2.885 E F1(x)2.885 E F0(modi\214ers are mutually e)144 +168 Q(xclusi)-.15 E -.15(ve)-.25 G 2.5(;t).15 G +(he last one supplied is used.)-2.5 E F1(s/)108 180 Q F2(old)A F1(/)A F2 +(ne)A(w)-.15 E F1(/)A F0(Substitute)144 192 Q F2(ne)3.328 E(w)-.15 E F0 +.469(for the \214rst occurrence of)3.278 F F2(old)3.199 E F0 .469 (in the e)3.739 F -.15(ve)-.25 G .469(nt line.).15 F(An)5.469 E 2.969 -(yc)-.15 G .469(haracter may be used as the)-2.969 F .953 -(delimiter in place of /.)144 422.4 R .953 +(yc)-.15 G .469(haracter may be used as the)-2.969 F .954 +(delimiter in place of /.)144 204 R .953 (The \214nal delimiter is optional if it is the last character of the e) -5.953 F -.15(ve)-.25 G .954(nt line.).15 F .131 -(The delimiter may be quoted in)144 434.4 R F2(old)2.861 E F0(and)3.401 -E F2(ne)2.991 E(w)-.15 E F0 .131(with a single backslash.)2.941 F .131 +5.953 F -.15(ve)-.25 G .953(nt line.).15 F .131 +(The delimiter may be quoted in)144 216 R F2(old)2.861 E F0(and)3.401 E +F2(ne)2.991 E(w)-.15 E F0 .131(with a single backslash.)2.941 F .131 (If & appears in)5.131 F F2(ne)2.991 E(w)-.15 E F0 2.631(,i).31 G 2.631 -(ti)-2.631 G 2.631(sr)-2.631 G(e-)-2.631 E .619(placed by)144 446.4 R F2 +(ti)-2.631 G 2.631(sr)-2.631 G(e-)-2.631 E .62(placed by)144 228 R F2 (old)3.349 E F0 5.619(.A).77 G .619(single backslash will quote the &.) -2.5 F(If)5.619 E F2(old)3.349 E F0 .619(is null, it is set to the last) -3.889 F F2(old)3.349 E F0(substi-)3.89 E .487(tuted, or)144 458.4 R -2.987(,i)-.4 G 2.987(fn)-2.987 G 2.987(op)-2.987 G(re)-2.987 E .486 +3.889 F F2(old)3.349 E F0(substi-)3.889 E .486(tuted, or)144 240 R 2.986 +(,i)-.4 G 2.986(fn)-2.986 G 2.986(op)-2.986 G(re)-2.986 E .486 (vious history substitutions took place, the last)-.25 F F2(string)3.326 -E F0 .486(in a)3.206 F F1(!?)2.986 E F2(string)A F1([?])A F0 2.986 -(search. If)5.486 F F2(ne)144.36 470.4 Q(w)-.15 E F0 +E F0 .487(in a)3.206 F F1(!?)2.987 E F2(string)A F1([?])A F0 2.987 +(search. If)5.487 F F2(ne)144.36 252 Q(w)-.15 E F0 (is null, each matching)2.81 E F2(old)2.73 E F0(is deleted.)3.27 E F1(&) -108 482.4 Q F0(Repeat the pre)144 482.4 Q(vious substitution.)-.25 E F1 -(g)108 494.4 Q F0 .397(Cause changes to be applied o)144 494.4 R -.15 -(ve)-.15 G 2.897(rt).15 G .398(he entire e)-2.897 F -.15(ve)-.25 G .398 -(nt line.).15 F .398(This is used in conjunction with `)5.398 F F1(:s)A -F0 2.898('\()C(e.g.,)-2.898 E(`)144 506.4 Q F1(:gs/)A F2(old)A F1(/)A F2 -(ne)A(w)-.15 E F1(/)A F0 .351('\) or `)B F1(:&)A F0 2.851('. If)B .351 -(used with `)2.851 F F1(:s)A F0 .351(', an)B 2.851(yd)-.15 G .35 -(elimiter can be used in place of /, and the \214nal de-)-2.851 F -(limiter is optional if it is the last character of the e)144 518.4 Q --.15(ve)-.25 G(nt line.).15 E(An)5 E F1(a)2.5 E F0 -(may be used as a synon)2.5 E(ym for)-.15 E F1(g)2.5 E F0(.)A F1(G)108 -530.4 Q F0(Apply the follo)144 530.4 Q(wing `)-.25 E F1(s)A F0 2.5('o)C -2.5(r`)-2.5 G F1(&)-2.5 E 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 547.2 Q(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .062 -(Unless otherwise noted, each b)108 559.2 R .062(uiltin command documen\ -ted in this section as accepting options preceded by)-.2 F F1108 -571.2 Q F0(accepts)3.077 E F13.077 E F0 .577 -(to signify the end of the options.)3.077 F(The)5.577 E F1(:)3.077 E F0 -(,)A F1(true)3.077 E F0(,)A F1(false)3.077 E F0 3.077(,a)C(nd)-3.077 E +108 264 Q F0(Repeat the pre)144 264 Q(vious substitution.)-.25 E F1(g) +108 276 Q F0 .398(Cause changes to be applied o)144 276 R -.15(ve)-.15 G +2.898(rt).15 G .398(he entire e)-2.898 F -.15(ve)-.25 G .398(nt line.) +.15 F .397(This is used in conjunction with `)5.398 F F1(:s)A F0 2.897 +('\()C(e.g.,)-2.897 E(`)144 288 Q F1(:gs/)A F2(old)A F1(/)A F2(ne)A(w) +-.15 E F1(/)A F0 .35('\) or `)B F1(:&)A F0 2.85('. If)B .35(used with `) +2.85 F F1(:s)A F0 .35(', an)B 2.85(yd)-.15 G .351 +(elimiter can be used in place of /, and the \214nal de-)-2.85 F +(limiter is optional if it is the last character of the e)144 300 Q -.15 +(ve)-.25 G(nt line.).15 E(An)5 E F1(a)2.5 E F0(may be used as a synon) +2.5 E(ym for)-.15 E F1(g)2.5 E F0(.)A F1(G)108 312 Q F0(Apply the follo) +144 312 Q(wing `)-.25 E F1(s)A F0 2.5('o)C 2.5(r`)-2.5 G F1(&)-2.5 E 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 328.8 Q(UIL)-.11 E +(TIN COMMANDS)-1.007 E F0 .063(Unless otherwise noted, each b)108 340.8 +R .062(uiltin command documented in this section as accepting options p\ +receded by)-.2 F F1108 352.8 Q F0(accepts)3.077 E F13.077 E F0 +.577(to signify the end of the options.)3.077 F(The)5.577 E F1(:)3.077 E +F0(,)A F1(true)3.077 E F0(,)A F1(false)3.077 E F0 3.077(,a)C(nd)-3.077 E F1(test)3.077 E F0(/)A F1([)A F0 -.2(bu)3.077 G .577 -(iltins do not accept options).2 F .461(and do not treat)108 583.2 R F1 +(iltins do not accept options).2 F .462(and do not treat)108 364.8 R F1 2.961 E F0(specially)2.961 E 5.461(.T)-.65 G(he)-5.461 E F1(exit) 2.961 E F0(,)A F1(logout)2.961 E F0(,)A F1 -.18(re)2.961 G(tur).18 E(n) -.15 E F0(,)A F1(br)2.961 E(eak)-.18 E F0(,)A F1(continue)2.961 E F0(,)A F1(let)2.961 E F0 2.961(,a)C(nd)-2.961 E F1(shift)2.961 E F0 -.2(bu) -2.962 G .462(iltins accept and).2 F .261(process ar)108 595.2 R .261 -(guments be)-.18 F .261(ginning with)-.15 F F12.761 E F0 .261 -(without requiring)2.761 F F12.761 E F0 5.261(.O)C .261(ther b) --5.261 F .26(uiltins that accept ar)-.2 F .26(guments b)-.18 F .26 +2.961 G .461(iltins accept and).2 F .26(process ar)108 376.8 R .26 +(guments be)-.18 F .26(ginning with)-.15 F F12.76 E F0 .261 +(without requiring)2.76 F F12.761 E F0 5.261(.O)C .261(ther b) +-5.261 F .261(uiltins that accept ar)-.2 F .261(guments b)-.18 F .261 (ut are not)-.2 F 1.154(speci\214ed as accepting options interpret ar) -108 607.2 R 1.154(guments be)-.18 F 1.154(ginning with)-.15 F F1 +108 388.8 R 1.154(guments be)-.18 F 1.154(ginning with)-.15 F F1 3.654 E F0 1.154(as in)3.654 F -.25(va)-.4 G 1.154 (lid options and require).25 F F13.654 E F0(to)3.654 E(pre)108 -619.2 Q -.15(ve)-.25 G(nt this interpretation.).15 E F1(:)108 637.2 Q F0 -([)2.5 E F2(ar)A(guments)-.37 E F0(])A .452(No ef)144 649.2 R .452 +400.8 Q -.15(ve)-.25 G(nt this interpretation.).15 E F1(:)108 418.8 Q F0 +([)2.5 E F2(ar)A(guments)-.37 E F0(])A .451(No ef)144 430.8 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 .451(and performing an)3.221 F -2.951(ys)-.15 G(peci\214ed)-2.951 E 2.5(redirections. The)144 661.2 R -(return status is zero.)2.5 E F1(.)110.5 678 Q F2(\214lename)6.666 E F0 -([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 690 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 702 R -.15(xe)-.15 G 1.02(cute commands from).15 F F2 +-.15 E F2(ar)3.282 E(guments)-.37 E F0 .452(and performing an)3.222 F +2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. The)144 442.8 R +(return status is zero.)2.5 E F1(.)110.5 459.6 Q F2(\214lename)6.666 E +F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 471.6 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 483.6 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.331 -(status of the last command e)144 714 R -.15(xe)-.15 G 1.331(cuted from) -.15 F F2(\214lename)5.741 E F0 6.331(.I).18 G(f)-6.331 E F2(\214lename) -5.741 E F0 1.33(does not contain a slash, \214le-)4.011 F .488(names in) -144 726 R/F4 9/Times-Bold@0 SF -.666(PA)2.988 G(TH)-.189 E F0 .488 -(are used to \214nd the directory containing)2.738 F F2(\214lename)4.899 -E F0 5.489(.T).18 G .489(he \214le searched for in)-5.489 F F4 -.666(PA) -2.989 G(TH)-.189 E F0(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E -(56)190.395 E 0 Cg EP -%%Page: 57 57 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .833 -(need not be e)144 84 R -.15(xe)-.15 G 3.333(cutable. When).15 F/F1 10 -/Times-Bold@0 SF(bash)3.333 E F0 .832(is not in)3.333 F/F2 10 -/Times-Italic@0 SF .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 96 R/F3 9/Times-Bold@0 SF -.666(PA)3.481 G(TH) --.189 E/F4 9/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F1(sour)3.481 E -(cepath)-.18 E F0 .981(option to the)3.481 F F1(shopt)3.481 E F0 -.2(bu) -3.481 G .981(iltin command is turned of).2 F .982(f, the)-.25 F F3 -.666 -(PA)144 108 S(TH)-.189 E F0 .112(is not searched.)2.363 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 120 Q F0 .485(is e)2.985 F -.15(xe)-.15 G 2.985 -(cuted. Otherwise).15 F .485(the positional parameters are unchanged.) -2.985 F .485(If the)5.485 F F12.985 E F0 .485(option is en-)2.985 -F(abled,)144 132 Q F1(sour)3.325 E(ce)-.18 E F0 .825(inherits an)3.325 F -3.325(yt)-.15 G .825(rap on)-3.325 F F1(DEB)3.325 E(UG)-.1 E F0 3.325 -(;i)C 3.325(fi)-3.325 G 3.324(ti)-3.325 G 3.324(sn)-3.324 G .824(ot, an) --3.324 F(y)-.15 E F1(DEB)3.324 E(UG)-.1 E F0 .824(trap string is sa) -3.324 F -.15(ve)-.2 G 3.324(da).15 G .824(nd re-)-3.324 F .817 -(stored around the call to)144 144 R F1(sour)3.317 E(ce)-.18 E F0 3.317 -(,a)C(nd)-3.317 E F1(sour)3.317 E(ce)-.18 E F0 .817(unsets the)3.317 F -F1(DEB)3.317 E(UG)-.1 E F0 .817(trap while it e)3.317 F -.15(xe)-.15 G -3.317(cutes. If).15 F F13.317 E F0(is)3.318 E 1.435 -(not set, and the sourced \214le changes the)144 156 R F1(DEB)3.935 E -(UG)-.1 E F0 1.435(trap, the ne)3.935 F 3.935(wv)-.25 G 1.435 -(alue is retained when)-4.185 F F1(sour)3.935 E(ce)-.18 E F0 3.762 -(completes. The)144 168 R 1.262 -(return status is the status of the last command e)3.762 F 1.263 -(xited within the script \(0 if no)-.15 F(commands are e)144 180 Q -.15 -(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F2(\214lename)4.41 E F0 -(is not found or cannot be read.)2.68 E F1(alias)108 196.8 Q F0([)2.5 E -F1A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..]) --2.5 E F1(Alias)144 208.8 Q F0 2.725(with no ar)5.225 F 2.724 +(vironment and return the e)-.4 F(xit)-.15 E 1.33 +(status of the last command e)144 495.6 R -.15(xe)-.15 G 1.331 +(cuted from).15 F F2(\214lename)5.741 E F0 6.331(.I).18 G(f)-6.331 E F2 +(\214lename)5.741 E F0 1.331(does not contain a slash, \214le-)4.011 F +.023(names in)144 507.6 R/F4 9/Times-Bold@0 SF -.666(PA)2.523 G(TH)-.189 +E F0 .022(are used to \214nd the directory containing)2.273 F F2 +(\214lename)4.432 E F0 2.522(,b).18 G(ut)-2.722 E F2(\214lename)2.522 E +F0 .022(does not need to be)2.522 F -.15(exe)144 519.6 S 3.86 +(cutable. The).15 F 1.36(\214le searched for in)3.86 F F4 -.666(PA)3.86 +G(TH)-.189 E F0 1.361(need not be e)3.61 F -.15(xe)-.15 G 3.861 +(cutable. When).15 F F1(bash)3.861 E F0 1.361(is not in)3.861 F F2 +(posix)3.861 E(mode)144 531.6 Q F0 2.772(,i)C 2.772(ts)-2.772 G .272 +(earches the current directory if no \214le is found in)-2.772 F F4 +-.666(PA)2.771 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .271(If the) +4.771 F F1(sour)2.771 E(cepath)-.18 E F0 .271(option to the)2.771 F F1 +(shopt)144 543.6 Q F0 -.2(bu)3.659 G 1.159(iltin command is turned of).2 +F 1.159(f, the)-.25 F F4 -.666(PA)3.659 G(TH)-.189 E F0 1.159 +(is not searched.)3.409 F 1.16(If an)6.159 F(y)-.15 E F2(ar)3.66 E +(guments)-.37 E F0 1.16(are supplied,)3.66 F(the)144 555.6 Q 3.692(yb) +-.15 G 1.192(ecome the positional parameters when)-3.692 F F2 +(\214lename)3.692 E F0 1.192(is e)3.692 F -.15(xe)-.15 G 3.691 +(cuted. Otherwise).15 F 1.191(the positional pa-)3.691 F .82 +(rameters are unchanged.)144 567.6 R .82(If the)5.82 F F13.32 E F0 +.82(option is enabled,)3.32 F F1(.)3.32 E F0 .82(inherits an)3.32 F 3.32 +(yt)-.15 G .82(rap on)-3.32 F F1(DEB)3.32 E(UG)-.1 E F0 3.32(;i)C 3.32 +(fi)-3.32 G 3.32(ti)-3.32 G 3.32(sn)-3.32 G(ot,)-3.32 E(an)144 579.6 Q +(y)-.15 E F1(DEB)3.323 E(UG)-.1 E F0 .823(trap string is sa)3.323 F -.15 +(ve)-.2 G 3.322(da).15 G .822(nd restored around the call to)-3.322 F F1 +(.)3.322 E F0 3.322(,a)C(nd)-3.322 E F1(.)3.322 E F0 .822(unsets the) +3.322 F F1(DEB)3.322 E(UG)-.1 E F0(trap)3.322 E .226(while it e)144 +591.6 R -.15(xe)-.15 G 2.726(cutes. If).15 F F12.727 E F0 .227 +(is not set, and the sourced \214le changes the)2.727 F F1(DEB)2.727 E +(UG)-.1 E F0 .227(trap, the ne)2.727 F 2.727(wv)-.25 G .227(alue is) +-2.977 F .891(retained when)144 603.6 R F1(.)3.391 E F0 3.391 +(completes. The)3.391 F .891 +(return status is the status of the last command e)3.391 F .89 +(xited within the)-.15 F(script \(0 if no commands are e)144 615.6 Q +-.15(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F2(\214lename)4.41 E +F0(is not found or cannot be read.)2.68 E F1(alias)108 632.4 Q F0([)2.5 +E F1A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C +(..])-2.5 E F1(Alias)144 644.4 Q F0 2.724(with no ar)5.224 F 2.724 (guments or with the)-.18 F F15.224 E F0 2.724 -(option prints the list of aliases in the form)5.224 F F1(alias)5.224 E -F2(name)144 220.8 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F +(option prints the list of aliases in the form)5.224 F F1(alias)5.225 E +F2(name)144 656.4 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F .58(When ar)5.58 F .58 (guments are supplied, an alias is de\214ned for each)-.18 F F2(name) -3.08 E F0(whose)144 232.8 Q F2(value)2.509 E F0 .009(is gi)2.509 F -.15 +3.08 E F0(whose)144 668.4 Q F2(value)2.508 E F0 .009(is gi)2.508 F -.15 (ve)-.25 G 2.509(n. A).15 F .009(trailing space in)2.509 F F2(value) 2.509 E F0 .009(causes the ne)2.509 F .009(xt w)-.15 F .009 -(ord to be check)-.1 F .008(ed for alias substi-)-.1 F .579 -(tution when the alias is e)144 244.8 R 3.079(xpanded. F)-.15 F .579 +(ord to be check)-.1 F .009(ed for alias substi-)-.1 F .579 +(tution when the alias is e)144 680.4 R 3.079(xpanded. F)-.15 F .579 (or each)-.15 F F2(name)3.079 E F0 .579(in the ar)3.079 F .579 -(gument list for which no)-.18 F F2(value)3.079 E F0 .579(is sup-)3.079 -F 1.314(plied, the name and v)144 256.8 R 1.314 +(gument list for which no)-.18 F F2(value)3.079 E F0 .578(is sup-)3.078 +F 1.313(plied, the name and v)144 692.4 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.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 268.8 Q F1(bg)108 285.6 Q F0([) -2.5 E F2(jobspec)A F0(...])2.5 E .744(Resume each suspended job)144 -297.6 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 309.6 Q F0 .672 -(is not present, the shell')3.482 F 3.172(sn)-.55 G .672(otion of the) --3.172 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F 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 321.6 R 2.919(,w)-.4 G .419 -(hen run with job control enabled, an)-2.919 F 2.919(ys)-.15 G -(peci\214ed)-2.919 E F2(jobspec)2.919 E F0 -.1(wa)2.919 G 2.919(sn).1 G -(ot)-2.919 E(found or w)144 333.6 Q(as started without job control.)-.1 -E F1(bind)108 350.4 Q F0([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0 -2.5(][)C F1(\255lpsvPSVX)-2.5 E F0(])A F1(bind)108 362.4 Q F0([)2.5 E F1 +(returns true unless a)3.814 F F2(name)3.814 E F0 1.314(is gi)3.814 F +-.15(ve)-.25 G 3.814(nf).15 G(or)-3.814 E +(which no alias has been de\214ned.)144 704.4 Q(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(59)185.115 E 0 Cg EP +%%Page: 60 60 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(bg)108 84 Q F0([)2.5 E/F2 10/Times-Italic@0 SF(jobspec)A F0(...])2.5 +E .745(Resume each suspended job)144 96 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 108 Q F0 .671 +(is not present, the shell')3.481 F 3.171(sn)-.55 G .672(otion of the) +-3.171 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F1 +(bg)5.672 E F2(jobspec)4.912 E F0 .672(returns 0 unless run)3.482 F .419 +(when job control is disabled or)144 120 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 132 Q(as started without job control.)-.1 E +F1(bind)108 148.8 Q F0([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0 +2.5(][)C F1(\255lpsvPSVX)-2.5 E F0(])A F1(bind)108 160.8 Q F0([)2.5 E F1 A F2 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F1-2.5 E F2 (function)2.5 E F0 2.5(][)C F1-2.5 E F2(function)2.5 E F0 2.5(][)C -F1-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F1(bind)108 374.4 Q F0 +F1-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F1(bind)108 172.8 Q F0 ([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0(])A F12.5 E F2 -(\214lename)2.5 E F1(bind)108 386.4 Q F0([)2.5 E F1A F2 -.1(ke)2.5 +(\214lename)2.5 E F1(bind)108 184.8 Q F0([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0(])A F12.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -(shell\255command)A F1(bind)108 398.4 Q F0([)2.5 E F1A F2 -.1(ke) +(shell\255command)A F1(bind)108 196.8 Q F0([)2.5 E F1A F2 -.1(ke) 2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -(function\255name)A F1(bind)108 410.4 Q F0([)2.5 E F1A F2 -.1(ke) +(function\255name)A F1(bind)108 208.8 Q F0([)2.5 E F1A F2 -.1(ke) 2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -.37(re)C -(adline\255command).37 E F0 .239(Display current)144 422.4 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 434.4 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.23 446.4 Q(c)-.37 E F0 2.968(,b).31 G .467 -(ut each binding or command must be passed as a separate ar)-3.168 F -.467(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 -(re\255read\255init\255\214le'. Options,)144 458.4 R(if supplied, ha)2.5 -E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 -470.4 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 482.4 Q F2 -.1(ke)5.158 G -(ymap)-.2 E F0 2.658(as the k)5.348 F -.15(ey)-.1 G 2.658(map to be af) -.15 F 2.659(fected by the subsequent bindings.)-.25 F(Acceptable)7.659 E -F2 -.1(ke)180 494.4 S(ymap)-.2 E F0 3.193(names are)5.883 F F2 3.193 +(adline\255command).37 E F1(bind)108 220.8 Q F2 -.37(re)2.5 G +(adline-command-line).37 E F0 .238(Display current)144 232.8 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 .04(macro, or set a)144 244.8 R F1 -.18(re)2.54 G(adline).18 E +F0 -.25(va)2.54 G 2.54(riable. Each).25 F .039(non-option ar)2.54 F .039 +(gument is a command as it w)-.18 F .039(ould appear in a)-.1 F F1 -.18 +(re)144 256.8 S(adline).18 E F0 .182(initialization \214le such as)2.681 +F F2(.inputr)2.912 E(c)-.37 E F0 2.682(,b).31 G .182 +(ut each binding or command must be passed as a sep-)-2.882 F 1.907 +(arate ar)144 268.8 R 1.907 +(gument; e.g., '"\\C\255x\\C\255r": re\255read\255init\255\214le'.)-.18 +F 1.907(Options, if supplied, ha)6.907 F 2.207 -.15(ve t)-.2 H 1.907 +(he follo).15 F(wing)-.25 E(meanings:)144 280.8 Q F1144 292.8 Q F2 +-.1(ke)2.5 G(ymap)-.2 E F0(Use)180 304.8 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 316.8 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 506.4 Q F0 4.089(,a)C(nd)-4.089 E F2(vi\255insert) +(vi\255command)180 328.8 Q F0 4.089(,a)C(nd)-4.089 E F2(vi\255insert) 4.379 E F0(.).68 E F2(vi)6.589 E F0 1.589(is equi)4.089 F -.25(va)-.25 G 1.589(lent to).25 F F2(vi\255command)4.089 E F0(\()4.089 E F2(vi\255mo)A -(ve)-.1 E F0 1.59(is also a syn-)4.089 F(on)180 518.4 Q(ym\);)-.15 E F2 +(ve)-.1 E F0 1.59(is also a syn-)4.089 F(on)180 340.8 Q(ym\);)-.15 E F2 (emacs)2.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F2 -(emacs\255standar)2.5 E(d)-.37 E F0(.)A F1144 530.4 Q F0 -(List the names of all)180 530.4 Q F1 -.18(re)2.5 G(adline).18 E F0 -(functions.)2.5 E F1144 542.4 Q F0(Display)180 542.4 Q F1 -.18(re) +(emacs\255standar)2.5 E(d)-.37 E F0(.)A F1144 352.8 Q F0 +(List the names of all)180 352.8 Q F1 -.18(re)2.5 G(adline).18 E F0 +(functions.)2.5 E F1144 364.8 Q F0(Display)180 364.8 Q F1 -.18(re) 2.5 G(adline).18 E F0(function names and bindings in such a w)2.5 E -(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 554.4 -Q F0(List current)180 554.4 Q F1 -.18(re)2.5 G(adline).18 E F0 -(function names and bindings.)2.5 E F1144 566.4 Q F0(Display)180 -566.4 Q F1 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05 +(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 376.8 +Q F0(List current)180 376.8 Q F1 -.18(re)2.5 G(adline).18 E F0 +(function names and bindings.)2.5 E F1144 388.8 Q F0(Display)180 +388.8 Q F1 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05 G 1.155(equences bound to macros and the strings the)-3.655 F 3.655(yo) --.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 578.4 S 2.5(yt).1 G -(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 590.4 Q -F0(Display)180 590.4 Q F1 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5 +-.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 400.8 S 2.5(yt).1 G +(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 412.8 Q +F0(Display)180 412.8 Q F1 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5 (ys)-.05 G(equences bound to macros and the strings the)-2.5 E 2.5(yo) --.15 G(utput.)-2.5 E F1144 602.4 Q F0(Display)180 602.4 Q F1 -.18 +-.15 G(utput.)-2.5 E F1144 424.8 Q F0(Display)180 424.8 Q F1 -.18 (re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E (alues in such a w)-.25 E(ay that the)-.1 E 2.5(yc)-.15 G -(an be re-read.)-2.5 E F1144 614.4 Q F0(List current)180 614.4 Q +(an be re-read.)-2.5 E F1144 436.8 Q F0(List current)180 436.8 Q F1 -.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E -(alues.)-.25 E F1144 626.4 Q F2(\214lename)2.5 E F0(Read k)180 -638.4 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A -F1144 650.4 Q F2(function)2.5 E F0(Query about which k)180 662.4 Q +(alues.)-.25 E F1144 448.8 Q F2(\214lename)2.5 E F0(Read k)180 +460.8 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A +F1144 472.8 Q F2(function)2.5 E F0(Query about which k)180 484.8 Q -.15(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o)-2.5 H .2 -.1(ke t).4 H -(he named).1 E F2(function)2.5 E F0(.)A F1144 674.4 Q F2(function) -2.5 E F0(Unbind all k)180 686.4 Q -.15(ey)-.1 G 2.5(sb).15 G -(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F1144 698.4 Q -F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 710.4 Q .3 -.15(ve a)-.15 H .3 +(he named).1 E F2(function)2.5 E F0(.)A F1144 496.8 Q F2(function) +2.5 E F0(Unbind all k)180 508.8 Q -.15(ey)-.1 G 2.5(sb).15 G +(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F1144 520.8 Q +F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 532.8 Q .3 -.15(ve a)-.15 H .3 -.15(ny c).15 H(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E F0 -(.)A(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(57)190.395 E 0 Cg -EP -%%Page: 58 58 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q/F2 10/Times-Italic@0 SF -.1(ke)2.5 G(yseq)-.2 E F1(:)A -F2(shell\255command)A F0(Cause)180 96 Q F2(shell\255command)4.325 E F0 +(.)A F1144 544.8 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2 +(shell\255command)A F0(Cause)180 556.8 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 108 Q F0 1.765(is e) +(When)6.825 E F2(shell\255com-)4.325 E(mand)180 568.8 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 120 S(adline).18 E +(riable to the contents of the).25 F F1 -.18(re)180 580.8 S(adline).18 E F0 .375(line b)2.874 F(uf)-.2 E .375(fer and the)-.25 F F3 (READLINE_POINT)2.875 E F0(and)2.625 E F3(READLINE_MARK)2.875 E F0 -.25 (va)2.625 G .375(riables to the).25 F 1.186 -(current location of the insertion point and the sa)180 132 R -.15(ve) +(current location of the insertion point and the sa)180 592.8 R -.15(ve) -.2 G 3.685(di).15 G 1.185(nsertion point \(the mark\), respec-)-3.685 F -(ti)180 144 Q -.15(ve)-.25 G(ly).15 E 5.701(.I)-.65 G 3.201(ft)-5.701 G -.701(he e)-3.201 F -.15(xe)-.15 G .701(cuted command changes the v).15 F -.702(alue of an)-.25 F 3.202(yo)-.15 G(f)-3.202 E F3(READLINE_LINE)3.202 -E/F4 9/Times-Roman@0 SF(,)A F3(READ-)2.952 E(LINE_POINT)180 156 Q F4(,)A -F0(or)3.581 E F3(READLINE_MARK)3.831 E F4(,)A F0 1.331(those ne)3.581 F -3.831(wv)-.25 G 1.33(alues will be re\215ected in the editing)-4.081 F -(state.)180 168 Q F1144 180 Q F0 .829(List all k)180 180 R 1.129 --.15(ey s)-.1 H .829 +(ti)180 604.8 Q -.15(ve)-.25 G(ly).15 E 5.377(.T)-.65 G .377 +(he shell assigns an)-5.377 F 2.877(yn)-.15 G .377(umeric ar)-2.877 F +.377(gument the user supplied to the)-.18 F F3(READLINE_AR-)2.878 E +(GUMENT)180 616.8 Q F0 -.25(va)3.605 G 3.855(riable. If).25 F 1.355 +(there w)3.855 F 1.354(as no ar)-.1 F 1.354(gument, that v)-.18 F 1.354 +(ariable is not set.)-.25 F 1.354(If the e)6.354 F -.15(xe)-.15 G(cuted) +.15 E .343(command changes the v)180 628.8 R .343(alue of an)-.25 F +2.843(yo)-.15 G(f)-2.843 E F3(READLINE_LINE)2.844 E/F4 9/Times-Roman@0 +SF(,)A F3(READLINE_POINT)2.594 E F4(,)A F0(or)2.594 E F3(READ-)2.844 E +(LINE_MARK)180 640.8 Q F4(,)A F0(those ne)2.25 E 2.5(wv)-.25 G +(alues will be re\215ected in the editing state.)-2.75 E F1144 +652.8 Q F0 .83(List all k)180 652.8 R 1.13 -.15(ey s)-.1 H .829 (equences bound to shell commands and the associated commands in a for) -.15 F(-)-.2 E(mat that can be reused as input.)180 192 Q(The return v) -144 208.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15 +.15 F(-)-.2 E(mat that can be reused as input.)180 664.8 Q(The return v) +144 681.6 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 225.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .055 -(Exit from within a)144 237.6 R F1 -.25(fo)2.555 G(r).25 E F0(,)A F1 -(while)2.555 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1 +E F1(br)108 698.4 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054 +(Exit from within a)144 710.4 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 SF2.554 -E F0(1.)2.554 E(If)144 249.6 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(is 0 unless)144 -261.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 -(bu)108 278.4 S(iltin).2 E F2(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E -F2(ar)A(guments)-.37 E F0(])A(Ex)144 290.4 Q .771 -(ecute the speci\214ed shell b)-.15 F .771(uiltin, passing it)-.2 F F2 -(ar)3.601 E(guments)-.37 E F0 3.271(,a).27 G .771(nd return its e)-3.271 -F .77(xit status.)-.15 F .77(This is useful)5.77 F .615 +(ls.).15 E F2(n)5.415 E F0 .055(must be)2.795 F/F5 10/Symbol SF2.555 +E F0(1.)2.555 E(If)144 722.4 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 5.2)72 768 +Q(2022 September 19)135.955 E(60)185.115 E 0 Cg EP +%%Page: 61 61 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(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 .77(ecute the speci\214ed shell b)-.15 F .77(uiltin, passing it)-.2 F +F1(ar)3.601 E(guments)-.37 E F0 3.271(,a).27 G .771(nd return its e) +-3.271 F .771(xit status.)-.15 F .771(This is useful)5.771 F .616 (when de\214ning a function whose name is the same as a shell b)144 -302.4 R .616(uiltin, retaining the functionality of)-.2 F .57(the b)144 -314.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0 +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 326.4 Q(alse if)-.1 -E F2(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E -(uiltin command.)-.2 E F1(caller)108 343.2 Q F0([)2.5 E F2 -.2(ex)C(pr) -.2 E F0(])A .253(Returns the conte)144 355.2 R .254(xt of an)-.15 F +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 .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 F1(.)2.754 E F0(or)2.754 E F1(sour)144 367.2 Q -(ce)-.18 E F0 -.2(bu)2.825 G 2.825(iltins\). W).2 F(ithout)-.4 E F2 -.2 -(ex)2.825 G(pr).2 E F0(,)A F1(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 379.2 R .253(If a non-ne)5.253 F -.05(ga)-.15 -G(ti).05 E .553 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15 -F F2 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .254 -(displays the line number)2.754 F 2.754(,s)-.4 G(ub-)-2.754 E 1.327(rou\ +.254(subroutine call.)144 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 391.2 R -.15(xe)-.15 G 1.327(cution call stack.).15 F(This e) -144 403.2 Q(xtra information may be used, for e)-.15 E .001 -(xample, to print a stack trace.)-.15 F .001(The current frame is frame) -5.001 F 3.02(0. The)144 415.2 R .52(return v)3.02 F .52 -(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .519 -(cuting a subroutine call or).15 F F2 -.2(ex)3.019 G(pr).2 E F0 .519 -(does not corre-)3.019 F(spond to a v)144 427.2 Q -(alid position in the call stack.)-.25 E F1(cd)108 444 Q F0([)2.5 E F1 -A F0(|[)A F1A F0([)2.5 E F1A F0(]] [\255@]] [)A F2 -(dir)A F0(])A .321(Change the current directory to)144 456 R F2(dir) -2.821 E F0 5.321(.i)C(f)-5.321 E F2(dir)2.821 E F0 .322 -(is not supplied, the v)2.821 F .322(alue of the)-.25 F F3(HOME)2.822 E -F0 .322(shell v)2.572 F .322(ariable is)-.25 F 1.036(the def)144 468 R -3.536(ault. An)-.1 F 3.536(ya)-.15 G 1.035(dditional ar)-3.536 F 1.035 -(guments follo)-.18 F(wing)-.25 E F2(dir)3.535 E F0 1.035(are ignored.) -3.535 F 1.035(The v)6.035 F(ariable)-.25 E F3(CDP)3.535 E -.855(AT)-.666 -G(H).855 E F0(de\214nes)3.285 E .826 -(the search path for the directory containing)144 480 R F2(dir)3.676 E -F0 3.326(:e).73 G .826(ach directory name in)-3.326 F F3(CDP)3.326 E --.855(AT)-.666 G(H).855 E F0 .827(is searched for)3.077 F F2(dir)144 492 -Q F0 5.665(.A)C(lternati)-5.665 E .965 -.15(ve d)-.25 H .665 -(irectory names in).15 F F3(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 -.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .664 -(ull directory name)-3.165 F(in)144 504 Q F3(CDP)3.101 E -.855(AT)-.666 -G(H).855 E F0 .601(is the same as the current directory)2.851 F 3.102 -(,i)-.65 G .602(.e., `)-3.102 F(`)-.74 E F1(.)A F0 -.74('')C 5.602(.I) -.74 G(f)-5.602 E F2(dir)3.452 E F0(be)3.832 E .602 -(gins with a slash \(/\), then)-.15 F F3(CD-)3.102 E -.666(PA)144 516 S -(TH)-.189 E F0 1.003(is not used.)3.254 F(The)6.003 E F13.503 E F0 -1.003(option causes)3.503 F F1(cd)3.503 E F0 1.003(to use the ph)3.503 F -1.003(ysical directory structure by resolving)-.05 F .123 -(symbolic links while tra)144 528 R -.15(ve)-.2 G(rsing).15 E F2(dir) -2.623 E F0 .123(and before processing instances of)2.623 F F2(..)2.623 E -F0(in)2.623 E F2(dir)2.623 E F0 .123(\(see also the)2.623 F F1 -2.623 E F0(op-)2.623 E .43(tion to the)144 540 R F1(set)2.93 E F0 -.2 -(bu)2.93 G .43(iltin command\); the).2 F F12.929 E F0 .429 -(option forces symbolic links to be follo)2.929 F .429(wed by resolving) --.25 F .472(the link after processing instances of)144 552 R F2(..)2.972 -E F0(in)2.972 E F2(dir)2.973 E F0 5.473(.I)C(f)-5.473 E F2(..)2.973 E F0 -.473(appears in)2.973 F F2(dir)2.973 E F0 2.973(,i)C 2.973(ti)-2.973 G -2.973(sp)-2.973 G .473(rocessed by remo)-2.973 F .473(ving the)-.15 F -.948(immediately pre)144 564 R .948(vious pathname component from)-.25 F -F2(dir)3.448 E F0 3.448(,b)C .948(ack to a slash or the be)-3.448 F .948 -(ginning of)-.15 F F2(dir)3.448 E F0 5.948(.I)C(f)-5.948 E(the)144 576 Q -F12.868 E F0 .368(option is supplied with)2.868 F F12.868 E -F0 2.868(,a)C .368(nd the current w)-2.868 F .368 -(orking directory cannot be successfully deter)-.1 F(-)-.2 E .612 -(mined after a successful directory change,)144 588 R F1(cd)3.112 E F0 -.612(will return an unsuccessful status.)3.112 F .612(On systems that) -5.612 F .353(support it, the)144 600 R F12.853 E F0 .354 -(option presents the e)2.853 F .354(xtended attrib)-.15 F .354 -(utes associated with a \214le as a directory)-.2 F 5.354(.A)-.65 G(n) --5.354 E(ar)144 612 Q .072(gument of)-.18 F F12.572 E F0 .072 -(is con)2.572 F -.15(ve)-.4 G .072(rted to).15 F F3($OLDPWD)2.572 E F0 -.072(before the directory change is attempted.)2.322 F .072 -(If a non-empty)5.072 F .054(directory name from)144 624 R F3(CDP)2.554 -E -.855(AT)-.666 G(H).855 E F0 .054(is used, or if)2.304 F F12.555 E -F0 .055(is the \214rst ar)2.555 F .055 -(gument, and the directory change is suc-)-.18 F .168 -(cessful, the absolute pathname of the ne)144 636 R 2.668(ww)-.25 G .168 -(orking directory is written to the standard output.)-2.768 F(The)5.168 -E(return v)144 648 Q(alue is true if the directory w)-.25 E -(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F1(command)108 -664.8 Q F0([)2.5 E F1(\255pVv)A F0(])A F2(command)2.5 E F0([)2.5 E F2 -(ar)A(g)-.37 E F0(...])2.5 E(Run)144 676.8 Q F2(command)2.764 E F0(with) -3.334 E F2(ar)2.894 E(gs)-.37 E F0 .065 -(suppressing the normal shell function lookup.)2.834 F .065(Only b)5.065 -F .065(uiltin commands or)-.2 F .502(commands found in the)144 688.8 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 F13.002 E F0 .502(option is gi) -3.002 F -.15(ve)-.25 G .501(n, the search for).15 F F2(command)3.201 E -F0(is)3.771 E .399(performed using a def)144 700.8 R .399(ault v)-.1 F -.399(alue for)-.25 F F3 -.666(PA)2.899 G(TH)-.189 E F0 .4 +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 +A F0(|[)A F2A F0([)2.5 E F2A F0(]] [\255@]] [)A F1 +(dir)A F0(])A .322(Change the current directory to)144 278.4 R F1(dir) +2.822 E F0 5.322(.i)C(f)-5.322 E F1(dir)2.822 E F0 .321 +(is not supplied, the v)2.822 F .321(alue of the)-.25 F/F3 9 +/Times-Bold@0 SF(HOME)2.821 E F0 .321(shell v)2.571 F .321(ariable is) +-.25 F .929(the def)144 290.4 R 3.429(ault. The)-.1 F -.25(va)3.429 G +(riable).25 E F3(CDP)3.429 E -.855(AT)-.666 G(H).855 E F0 .93 +(de\214nes the search path for the directory containing)3.179 F F1(dir) +3.78 E F0 3.43(:e).73 G(ach)-3.43 E .407(directory name in)144 302.4 R +F3(CDP)2.907 E -.855(AT)-.666 G(H).855 E F0 .407(is searched for)2.657 F +F1(dir)2.907 E F0 5.407(.A)C(lternati)-5.407 E .707 -.15(ve d)-.25 H +.407(irectory names in).15 F F3(CDP)2.907 E -.855(AT)-.666 G(H).855 E F0 +.406(are sepa-)2.656 F .799(rated by a colon \(:\).)144 314.4 R 3.299 +(An)5.799 G .799(ull directory name in)-3.299 F F3(CDP)3.299 E -.855(AT) +-.666 G(H).855 E F0 .799(is the same as the current directory)3.049 F +3.3(,i)-.65 G(.e.,)-3.3 E -.74(``)144 326.4 S F2(.).74 E F0 -.74('')C +5.428(.I).74 G(f)-5.428 E F1(dir)3.278 E F0(be)3.658 E .428 +(gins with a slash \(/\), then)-.15 F F3(CDP)2.928 E -.855(AT)-.666 G(H) +.855 E F0 .428(is not used.)2.678 F(The)5.428 E F22.927 E F0 .427 +(option causes)2.927 F F2(cd)2.927 E F0 .427(to use the)2.927 F(ph)144 +338.4 Q .167 +(ysical directory structure by resolving symbolic links while tra)-.05 F +-.15(ve)-.2 G(rsing).15 E F1(dir)2.668 E F0 .168(and before processing) +2.668 F 1.225(instances of)144 350.4 R F1(..)3.725 E F0(in)3.725 E F1 +(dir)3.725 E F0 1.225(\(see also the)3.725 F F23.725 E F0 1.225 +(option to the)3.725 F F2(set)3.725 E F0 -.2(bu)3.725 G 1.225 +(iltin command\); the).2 F F23.725 E F0 1.225(option forces)3.725 +F .411(symbolic links to be follo)144 362.4 R .411 +(wed by resolving the link after processing instances of)-.25 F F1(..) +2.911 E F0(in)2.911 E F1(dir)2.911 E F0 5.411(.I)C(f)-5.411 E F1(..) +2.912 E F0(ap-)2.912 E .341(pears in)144 374.4 R F1(dir)2.841 E F0 2.841 +(,i)C 2.841(ti)-2.841 G 2.841(sp)-2.841 G .341(rocessed by remo)-2.841 F +.341(ving the immediately pre)-.15 F .34(vious pathname component from) +-.25 F F1(dir)2.84 E F0(,)A .175(back to a slash or the be)144 386.4 R +.175(ginning of)-.15 F F1(dir)2.675 E F0 5.175(.I)C 2.675(ft)-5.175 G +(he)-2.675 E F22.676 E F0 .176(option is supplied with)2.676 F F2 +2.676 E F0 2.676(,a)C .176(nd the current w)-2.676 F(ork-)-.1 E +.341(ing directory cannot be successfully determined after a successful\ + directory change,)144 398.4 R F2(cd)2.84 E F0 .34(will return)2.84 F +.356(an unsuccessful status.)144 410.4 R .356 +(On systems that support it, the)5.356 F F22.857 E F0 .357 +(option presents the e)2.857 F .357(xtended attrib)-.15 F(utes)-.2 E .07 +(associated with a \214le as a directory)144 422.4 R 5.07(.A)-.65 G +2.569(na)-5.07 G -.18(rg)-2.569 G .069(ument of).18 F F22.569 E F0 +.069(is con)2.569 F -.15(ve)-.4 G .069(rted to).15 F F3($OLDPWD)2.569 E +F0 .069(before the direc-)2.319 F .306(tory change is attempted.)144 +434.4 R .306(If a non-empty directory name from)5.306 F F3(CDP)2.806 E +-.855(AT)-.666 G(H).855 E F0 .306(is used, or if)2.556 F F22.807 E +F0 .307(is the \214rst)2.807 F(ar)144 446.4 Q .116(gument, and the dire\ +ctory change is successful, the absolute pathname of the ne)-.18 F 2.615 +(ww)-.25 G .115(orking direc-)-2.715 F .15 +(tory is written to the standard output.)144 458.4 R .15 +(If the directory change is successful,)5.15 F F2(cd)2.65 E F0 .15 +(sets the v)2.65 F .15(alue of the)-.25 F F2(PWD)144 470.4 Q F0(en)2.958 +E .458(vironment v)-.4 F .458(ariable to the ne)-.25 F 2.958(wd)-.25 G +.458(irectory name, and sets the)-2.958 F F2(OLDPWD)2.957 E F0(en)2.957 +E .457(vironment v)-.4 F(ari-)-.25 E .125(able to the v)144 482.4 R .125 +(alue of the current w)-.25 F .126(orking directory before the change.) +-.1 F .126(The return v)5.126 F .126(alue is true if the)-.25 F +(directory w)144 494.4 Q(as successfully changed; f)-.1 E +(alse otherwise.)-.1 E F2(command)108 511.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 +523.2 Q F1(command)2.765 E F0(with)3.335 E F1(ar)2.895 E(gs)-.37 E F0 +.065(suppressing the normal shell function lookup.)2.835 F .064(Only b) +5.064 F .064(uiltin commands or)-.2 F .501(commands found in the)144 +535.2 R F3 -.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe) +-.15 G 3.002(cuted. If).15 F(the)3.002 E F23.002 E F0 .502 +(option is gi)3.002 F -.15(ve)-.25 G .502(n, the search for).15 F F1 +(command)3.202 E F0(is)3.772 E .4(performed using a def)144 547.2 R .4 +(ault v)-.1 F .4(alue for)-.25 F F3 -.666(PA)2.9 G(TH)-.189 E F0 .399 (that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) -5.4 E .175(either the)144 712.8 R F12.675 E F0(or)2.675 E F1 -2.675 E F0 .175(option is supplied, a description of)2.675 F F2(command) -2.875 E F0 .174(is printed.)3.445 F(The)5.174 E F12.674 E F0 .174 -(option causes)2.674 F 3.317(as)144 724.8 S .817(ingle w)-3.317 F .817 -(ord indicating the command or \214lename used to in)-.1 F -.2(vo)-.4 G --.1(ke).2 G F2(command)3.618 E F0 .818(to be displayed; the)4.088 F -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(58)190.395 E 0 Cg EP -%%Page: 59 59 +5.399 E .174(either the)144 559.2 R F22.674 E F0(or)2.674 E F2 +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 F22.675 E +F0 .175(option causes)2.675 F 3.318(as)144 571.2 S .818(ingle w)-3.318 F +.817(ord indicating the command or \214lename used to in)-.1 F -.2(vo) +-.4 G -.1(ke).2 G F1(command)3.617 E F0 .817(to be displayed; the)4.087 +F F2144 583.2 Q F0 .249(option produces a more v)2.749 F .249 +(erbose description.)-.15 F .249(If the)5.249 F F22.749 E F0(or) +2.749 E F22.75 E F0 .25(option is supplied, the e)2.75 F .25 +(xit status)-.15 F 1.005(is 0 if)144 595.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 +(If neither option is supplied and an error occurred or)6.005 F F1 +(command)144.2 607.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 619.2 S +(iltin is the e).2 E(xit status of)-.15 E F1(command)2.7 E F0(.).77 E F2 +(compgen)108 636 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 648 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 660 R F2(complete)3.481 E F0 -.2(bu)3.481 G .981 +(iltin with the e).2 F .981(xception of)-.15 F F23.481 E F0(and) +3.481 E F23.481 E F0 3.481(,a)C .982(nd write the matches to the) +-3.481 F .131(standard output.)144 672 R .131(When using the)5.131 F F2 +2.631 E F0(or)2.631 E F22.631 E F0 .131(options, the v)2.631 +F .13(arious shell v)-.25 F .13(ariables set by the program-)-.25 F +(mable completion f)144 684 Q(acilities, while a)-.1 E -.25(va)-.2 G +(ilable, will not ha).25 E .3 -.15(ve u)-.2 H(seful v).15 E(alues.)-.25 +E .352(The matches will be generated in the same w)144 708 R .352 +(ay as if the programmable completion code had gen-)-.1 F .02(erated th\ +em directly from a completion speci\214cation with the same \215ags.)144 +720 R(If)5.02 E F1(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only)2.52 +F(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(61)185.115 E 0 Cg EP +%%Page: 62 62 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q F0 .25(option produces a more v)2.75 F .25 -(erbose description.)-.15 F .249(If the)5.25 F F12.749 E F0(or) -2.749 E F12.749 E F0 .249(option is supplied, the e)2.749 F .249 -(xit status)-.15 F 1.004(is 0 if)144 96 R/F2 10/Times-Italic@0 SF -(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 F2 -(command)144.2 108 Q F0 1.599(cannot be found, the e)4.869 F 1.599 -(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.598 -(xit status of the)-.15 F F1(command)4.098 E F0 -.2(bu)144 120 S -(iltin is the e).2 E(xit status of)-.15 E F2(command)2.7 E F0(.).77 E F1 -(compgen)108 136.8 Q F0([)2.5 E F2(option)A F0 2.5(][)C F2(wor)-2.5 E(d) --.37 E F0(])A .012(Generate possible completion matches for)144 148.8 R -F2(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F2(option)2.513 -E F0 .013(s, which may be an)B 2.513(yo)-.15 G(ption)-2.513 E .982 -(accepted by the)144 160.8 R F1(complete)3.482 E F0 -.2(bu)3.481 G .981 -(iltin with the e).2 F .981(xception of)-.15 F F13.481 E F0(and) -3.481 E F13.481 E F0 3.481(,a)C .981(nd write the matches to the) --3.481 F .13(standard output.)144 172.8 R .13(When using the)5.13 F F1 -2.63 E F0(or)2.63 E F12.631 E F0 .131(options, the v)2.631 F -.131(arious shell v)-.25 F .131(ariables set by the program-)-.25 F -(mable completion f)144 184.8 Q(acilities, while a)-.1 E -.25(va)-.2 G -(ilable, will not ha).25 E .3 -.15(ve u)-.2 H(seful v).15 E(alues.)-.25 -E .352(The matches will be generated in the same w)144 208.8 R .352 -(ay as if the programmable completion code had gen-)-.1 F .02(erated th\ -em directly from a completion speci\214cation with the same \215ags.)144 -220.8 R(If)5.02 E F2(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only) -2.52 F(those completions matching)144 232.8 Q F2(wor)2.5 E(d)-.37 E F0 -(will be displayed.)2.5 E(The return v)144 256.8 Q +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(those completions matching)144 84 Q/F1 10/Times-Italic@0 SF(wor)2.5 E +(d)-.37 E F0(will be displayed.)2.5 E(The return v)144 108 Q (alue is true unless an in)-.25 E -.25(va)-.4 G -(lid option is supplied, or no matches were generated.).25 E F1 -(complete)108 273.6 Q F0([)2.5 E F1(\255abcdefgjksuv)A F0 2.5(][)C F1 --2.5 E F2(comp-option)2.5 E F0 2.5(][)C F1(\255DEI)-2.5 E F0 2.5 -(][)C F1-2.5 E F2(action)2.5 E F0 2.5(][)C F1-2.5 E F2 -(globpat)2.5 E F0 2.5(][)C F1-2.5 E F2(wor)2.5 E(dlist)-.37 E F0 -(])A([)144 285.6 Q F1A F2(function)2.5 E F0 2.5(][)C F1-2.5 -E F2(command)2.5 E F0 2.5(][)C F1-2.5 E F2(\214lterpat)2.5 E F0 -2.5(][)C F1-2.5 E F2(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C F1 --2.5 E F2(suf)2.5 E<8c78>-.18 E F0(])A F2(name)2.5 E F0([)2.5 E F2 -(name ...)A F0(])A F1(complete \255pr)108 297.6 Q F0([)2.5 E F1(\255DEI) -A F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E .634(Specify ho)144 309.6 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 F13.133 -E F0 .633(option is supplied, or if no)3.133 F .139 -(options are supplied, e)144 321.6 R .139 -(xisting completion speci\214cations are printed in a w)-.15 F .14 -(ay that allo)-.1 F .14(ws them to be)-.25 F .31(reused as input.)144 -333.6 R(The)5.31 E F12.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.207 -(are supplied, all completion speci\214cations.)144 345.6 R(The)6.207 E -F13.707 E F0 1.208(option indicates that other supplied options) -3.708 F .5(and actions should apply to the `)144 357.6 R(`def)-.74 E +(lid option is supplied, or no matches were generated.).25 E/F2 10 +/Times-Bold@0 SF(complete)108 124.8 Q F0([)2.5 E F2(\255abcdefgjksuv)A +F0 2.5(][)C F2-2.5 E F1(comp-option)2.5 E F0 2.5(][)C F2(\255DEI) +-2.5 E F0 2.5(][)C F2-2.5 E F1(action)2.5 E F0 2.5(][)C F2 +-2.5 E F1(globpat)2.5 E F0 2.5(][)C F2-2.5 E F1(wor)2.5 E(dlist) +-.37 E F0(])A([)144 136.8 Q F2A F1(function)2.5 E F0 2.5(][)C F2 +-2.5 E F1(command)2.5 E F0 2.5(][)C F2-2.5 E F1(\214lterpat) +2.5 E F0 2.5(][)C F2-2.5 E F1(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C +F2-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 F2(complete \255pr)108 148.8 Q F0([)2.5 E F2 +(\255DEI)A F0 2.5(][)C F1(name)-2.5 E F0(...])2.5 E .633(Specify ho)144 +160.8 R 3.133(wa)-.25 G -.18(rg)-3.133 G .633(uments to each).18 F F1 +(name)3.133 E F0 .633(should be completed.)3.133 F .634(If the)5.634 F +F23.134 E F0 .634(option is supplied, or if no)3.134 F .14 +(options are supplied, e)144 172.8 R .139 +(xisting completion speci\214cations are printed in a w)-.15 F .139 +(ay that allo)-.1 F .139(ws them to be)-.25 F .31(reused as input.)144 +184.8 R(The)5.31 E F22.81 E F0 .31(option remo)2.81 F -.15(ve)-.15 +G 2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F1(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 F1 +(name)2.81 E F0(s)A 1.208 +(are supplied, all completion speci\214cations.)144 196.8 R(The)6.208 E +F23.708 E F0 1.207(option indicates that other supplied options) +3.707 F .5(and actions should apply to the `)144 208.8 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 -369.6 S .955(ommand for which no completion has pre)-3.455 F .955 -(viously been de\214ned.)-.25 F(The)5.955 E F13.455 E F0 .955 +220.8 S .955(ommand for which no completion has pre)-3.455 F .955 +(viously been de\214ned.)-.25 F(The)5.955 E F23.455 E F0 .955 (option indicates that)3.455 F .876 -(other supplied options and actions should apply to `)144 381.6 R +(other supplied options and actions should apply to `)144 232.8 R (`empty')-.74 E 3.376('c)-.74 G .876(ommand completion; that is, com-) --3.376 F .447(pletion attempted on a blank line.)144 393.6 R(The)5.447 E -F12.947 E F0 .448 +-3.376 F .448(pletion attempted on a blank line.)144 244.8 R(The)5.447 E +F22.947 E F0 .447 (option indicates that other supplied options and actions)2.947 F .123 -(should apply to completion on the initial non-assignment w)144 405.6 R -.123(ord on the line, or after a command de-)-.1 F 1.02(limiter such as) -144 417.6 R F1(;)3.52 E F0(or)3.52 E F1(|)3.52 E F0 3.52(,w)C 1.021 -(hich is usually command name completion.)-3.52 F 1.021 -(If multiple options are sup-)6.021 F .708(plied, the)144 429.6 R F1 -3.208 E F0 .708(option tak)3.208 F .708(es precedence o)-.1 F -.15 -(ve)-.15 G(r).15 E F13.208 E F0 3.208(,a)C .708(nd both tak)-3.208 -F 3.208(ep)-.1 G .707(recedence o)-3.208 F -.15(ve)-.15 G(r).15 E F1 -3.207 E F0 5.707(.I)C 3.207(fa)-5.707 G 1.007 -.15(ny o)-3.207 H -(f).15 E F13.207 E F0(,)A F1144 441.6 Q F0 2.603(,o)C(r) --2.603 E F12.603 E F0 .103(are supplied, an)2.603 F 2.603(yo)-.15 -G(ther)-2.603 E F2(name)2.603 E F0(ar)2.603 E .103 +(should apply to completion on the initial non-assignment w)144 256.8 R +.123(ord on the line, or after a command de-)-.1 F 1.021 +(limiter such as)144 268.8 R F2(;)3.521 E F0(or)3.521 E F2(|)3.521 E F0 +3.521(,w)C 1.021(hich is usually command name completion.)-3.521 F 1.02 +(If multiple options are sup-)6.02 F .707(plied, the)144 280.8 R F2 +3.207 E F0 .707(option tak)3.207 F .707(es precedence o)-.1 F -.15 +(ve)-.15 G(r).15 E F23.208 E F0 3.208(,a)C .708(nd both tak)-3.208 +F 3.208(ep)-.1 G .708(recedence o)-3.208 F -.15(ve)-.15 G(r).15 E F2 +3.208 E F0 5.708(.I)C 3.208(fa)-5.708 G 1.008 -.15(ny o)-3.208 H +(f).15 E F23.208 E F0(,)A F2144 292.8 Q F0 2.604(,o)C(r) +-2.604 E F22.604 E F0 .103(are supplied, an)2.603 F 2.603(yo)-.15 +G(ther)-2.603 E F1(name)2.603 E F0(ar)2.603 E .103 (guments are ignored; these completions only apply to the)-.18 F -(case speci\214ed by the option.)144 453.6 Q .153 +(case speci\214ed by the option.)144 304.8 Q .152 (The process of applying these completion speci\214cations when w)144 -477.6 R .152(ord completion is attempted is de-)-.1 F(scribed abo)144 -489.6 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 513.6 R .855 -.15(ve t)-.2 H .555 +328.8 R .153(ord completion is attempted is de-)-.1 F(scribed abo)144 +340.8 Q .3 -.15(ve u)-.15 H(nder).15 E F2(Pr)2.5 E +(ogrammable Completion)-.18 E F0(.)A .556 +(Other options, if speci\214ed, ha)144 364.8 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 F13.056 E F0(,)A F13.056 E F0 3.056 -(,a)C(nd)-3.056 E F13.056 E F0 .723(options \(and, if necessary) -144 525.6 R 3.223(,t)-.65 G(he)-3.223 E F13.223 E F0(and)3.223 E -F13.223 E F0 .722 -(options\) should be quoted to protect them from e)3.223 F(xpan-)-.15 E -(sion before the)144 537.6 Q F1(complete)2.5 E F0 -.2(bu)2.5 G -(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1144 549.6 Q -F2(comp-option)2.5 E F0(The)184 561.6 Q F2(comp-option)2.79 E F0 .291 +(guments to the)-.18 F F23.055 E F0(,)A F23.055 E F0 3.055 +(,a)C(nd)-3.055 E F23.055 E F0 .722(options \(and, if necessary) +144 376.8 R 3.222(,t)-.65 G(he)-3.222 E F23.222 E F0(and)3.222 E +F23.222 E F0 .723 +(options\) should be quoted to protect them from e)3.222 F(xpan-)-.15 E +(sion before the)144 388.8 Q F2(complete)2.5 E F0 -.2(bu)2.5 G +(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F2144 400.8 Q +F1(comp-option)2.5 E F0(The)184 412.8 Q F1(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 573.6 Q F2 -(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 585.6 Q F0 -.281(Perform the rest of the def)224 597.6 R(ault)-.1 E F1(bash)2.781 E +(yond the simple)-.15 F(generation of completions.)184 424.8 Q F1 +(comp-option)5 E F0(may be one of:)2.5 E F2(bashdefault)184 436.8 Q F0 +.281(Perform the rest of the def)224 448.8 R(ault)-.1 E F2(bash)2.781 E F0 .281(completions if the compspec generates no)2.781 F(matches.)224 -609.6 Q F1(default)184 621.6 Q F0 2.875(Use readline')224 621.6 R 5.375 -(sd)-.55 G(ef)-5.375 E 2.876 +460.8 Q F2(default)184 472.8 Q F0 2.876(Use readline')224 472.8 R 5.376 +(sd)-.55 G(ef)-5.376 E 2.875 (ault \214lename completion if the compspec generates no)-.1 F(matches.) -224 633.6 Q F1(dir)184 645.6 Q(names)-.15 E F0(Perform directory name c\ -ompletion if the compspec generates no matches.)224 657.6 Q F1 -(\214lenames)184 669.6 Q F0 -.7(Te)224 681.6 S .137(ll readline that th\ -e compspec generates \214lenames, so it can perform an).7 F 2.636<798c> --.15 G(le-)-2.636 E .134(name\255speci\214c processing \(lik)224 693.6 R +224 484.8 Q F2(dir)184 496.8 Q(names)-.15 E F0(Perform directory name c\ +ompletion if the compspec generates no matches.)224 508.8 Q F2 +(\214lenames)184 520.8 Q F0 -.7(Te)224 532.8 S .137(ll readline that th\ +e compspec generates \214lenames, so it can perform an).7 F 2.637<798c> +-.15 G(le-)-2.637 E .134(name\255speci\214c processing \(lik)224 544.8 R 2.634(ea)-.1 G .134(dding a slash to directory names, quoting spe-) -2.634 F .45(cial characters, or suppressing trailing spaces\).)224 -705.6 R .45(Intended to be used with shell)5.45 F(functions.)224 717.6 Q -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(59)190.395 E 0 Cg EP -%%Page: 60 60 +556.8 R .45(Intended to be used with shell)5.45 F(functions.)224 568.8 Q +F2(noquote)184 580.8 Q F0 -.7(Te)224 580.8 S .814 +(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F +3.314(ya)-.15 G .814(re \214lenames \(quoting)-3.314 F +(\214lenames is the def)224 592.8 Q(ault\).)-.1 E F2(nosort)184 604.8 Q +F0 -.7(Te)224 604.8 S(ll readline not to sort the list of possible comp\ +letions alphabetically).7 E(.)-.65 E F2(nospace)184 616.8 Q F0 -.7(Te) +224 616.8 S .22(ll readline not to append a space \(the def).7 F .22 +(ault\) to w)-.1 F .22(ords completed at the end)-.1 F(of the line.)224 +628.8 Q F2(plusdirs)184 640.8 Q F0 1.985(After an)224 640.8 R 4.485(ym) +-.15 G 1.985 +(atches de\214ned by the compspec are generated, directory name)-4.485 F +.583(completion is attempted and an)224 652.8 R 3.084(ym)-.15 G .584 +(atches are added to the results of the other)-3.084 F(actions.)224 +664.8 Q F2144 676.8 Q F1(action)2.5 E F0(The)184 688.8 Q F1 +(action)2.5 E F0(may be one of the follo)2.5 E +(wing to generate a list of possible completions:)-.25 E F2(alias)184 +700.8 Q F0(Alias names.)224 700.8 Q(May also be speci\214ed as)5 E F2 +2.5 E F0(.)A(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(62) +185.115 E 0 Cg EP +%%Page: 63 63 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(noquote)184 84 Q F0 -.7(Te)224 84 S .814 -(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F -3.314(ya)-.15 G .815(re \214lenames \(quoting)-3.314 F -(\214lenames is the def)224 96 Q(ault\).)-.1 E F1(nosort)184 108 Q F0 --.7(Te)224 108 S(ll readline not to sort the list of possible completio\ -ns alphabetically).7 E(.)-.65 E F1(nospace)184 120 Q F0 -.7(Te)224 120 S -.22(ll readline not to append a space \(the def).7 F .22(ault\) to w)-.1 -F .22(ords completed at the end)-.1 F(of the line.)224 132 Q F1 -(plusdirs)184 144 Q F0 1.985(After an)224 144 R 4.485(ym)-.15 G 1.985 -(atches de\214ned by the compspec are generated, directory name)-4.485 F -.584(completion is attempted and an)224 156 R 3.084(ym)-.15 G .584 -(atches are added to the results of the other)-3.084 F(actions.)224 168 -Q F1144 180 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 192 -Q F2(action)2.5 E F0(may be one of the follo)2.5 E -(wing to generate a list of possible completions:)-.25 E F1(alias)184 -204 Q F0(Alias names.)224 204 Q(May also be speci\214ed as)5 E F1 -2.5 E F0(.)A F1(arrayv)184 216 Q(ar)-.1 E F0(Array v)224 228 Q -(ariable names.)-.25 E F1(binding)184 240 Q(Readline)224 240 Q F0 -.1 -(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 252 S(iltin) -.2 E F0(Names of shell b)224 252 Q(uiltin commands.)-.2 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 264 -Q F0(Command names.)224 276 Q(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(dir)184 288 Q(ectory)-.18 E F0(Directory names.)224 300 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 312 -Q F0(Names of disabled shell b)224 324 Q(uiltins.)-.2 E F1(enabled)184 -336 Q F0(Names of enabled shell b)224 336 Q(uiltins.)-.2 E F1(export)184 -348 Q F0(Names of e)224 348 Q(xported shell v)-.15 E 2.5(ariables. May) +SF(arrayv)184 84 Q(ar)-.1 E F0(Array v)224 96 Q(ariable names.)-.25 E F1 +(binding)184 108 Q(Readline)224 108 Q F0 -.1(ke)2.5 G 2.5(yb)-.05 G +(inding names.)-2.5 E F1 -.2(bu)184 120 S(iltin).2 E F0 +(Names of shell b)224 120 Q(uiltin commands.)-.2 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 132 +Q F0(Command names.)224 144 Q(May also be speci\214ed as)5 E F12.5 +E F0(.)A F1(dir)184 156 Q(ectory)-.18 E F0(Directory names.)224 168 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 180 +Q F0(Names of disabled shell b)224 192 Q(uiltins.)-.2 E F1(enabled)184 +204 Q F0(Names of enabled shell b)224 204 Q(uiltins.)-.2 E F1(export)184 +216 Q F0(Names of e)224 216 Q(xported shell v)-.15 E 2.5(ariables. May) -.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(\214le)184 -360 Q F0(File names.)224 360 Q(May also be speci\214ed as)5 E F1 -2.5 E F0(.)A F1(function)184 372 Q F0(Names of shell functions.)224 384 -Q F1(gr)184 396 Q(oup)-.18 E F0(Group names.)224 396 Q +228 Q F0(File names.)224 228 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(function)184 240 Q F0(Names of shell functions.)224 252 +Q F1(gr)184 264 Q(oup)-.18 E F0(Group names.)224 264 Q (May also be speci\214ed as)5 E F12.5 E F0(.)A F1(helptopic)184 -408 Q F0(Help topics as accepted by the)224 420 Q F1(help)2.5 E F0 -.2 -(bu)2.5 G(iltin.).2 E F1(hostname)184 432 Q F0(Hostnames, as tak)224 444 -Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF -(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 456 Q F0 -(Job names, if job control is acti)224 456 Q -.15(ve)-.25 G 5(.M).15 G -(ay also be speci\214ed as)-5 E F12.5 E F0(.)A F1 -.1(ke)184 468 S -(yw).1 E(ord)-.1 E F0(Shell reserv)224 480 Q(ed w)-.15 E 2.5(ords. May) +276 Q F0(Help topics as accepted by the)224 288 Q F1(help)2.5 E F0 -.2 +(bu)2.5 G(iltin.).2 E F1(hostname)184 300 Q F0(Hostnames, as tak)224 312 +Q(en from the \214le speci\214ed by the)-.1 E/F2 9/Times-Bold@0 SF +(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 324 Q F0 +(Job names, if job control is acti)224 324 Q -.15(ve)-.25 G 5(.M).15 G +(ay also be speci\214ed as)-5 E F12.5 E F0(.)A F1 -.1(ke)184 336 S +(yw).1 E(ord)-.1 E F0(Shell reserv)224 348 Q(ed w)-.15 E 2.5(ords. May) -.1 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(running)184 -492 Q F0(Names of running jobs, if job control is acti)224 492 Q -.15 -(ve)-.25 G(.).15 E F1(ser)184 504 Q(vice)-.1 E F0(Service names.)224 504 -Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 516 -Q F0 -1.11(Va)224 516 S(lid ar)1.11 E(guments for the)-.18 E F12.5 +360 Q F0(Names of running jobs, if job control is acti)224 360 Q -.15 +(ve)-.25 G(.).15 E F1(ser)184 372 Q(vice)-.1 E F0(Service names.)224 372 +Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 384 +Q F0 -1.11(Va)224 384 S(lid ar)1.11 E(guments for the)-.18 E F12.5 E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1 -(shopt)184 528 Q F0(Shell option names as accepted by the)224 528 Q F1 -(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 540 Q F0 -(Signal names.)224 540 Q F1(stopped)184 552 Q F0 -(Names of stopped jobs, if job control is acti)224 552 Q -.15(ve)-.25 G -(.).15 E F1(user)184 564 Q F0(User names.)224 564 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 576 S -(riable).1 E F0(Names of all shell v)224 576 Q 2.5(ariables. May)-.25 F -(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 588 Q F2 -(command)2.5 E(command)184 600 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 612 Q F1144 624 Q F2(function)2.5 E F0 .114 -(The shell function)184 636 R F2(function)2.614 E F0 .114(is e)2.614 F +(shopt)184 396 Q F0(Shell option names as accepted by the)224 396 Q F1 +(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 408 Q F0 +(Signal names.)224 408 Q F1(stopped)184 420 Q F0 +(Names of stopped jobs, if job control is acti)224 420 Q -.15(ve)-.25 G +(.).15 E F1(user)184 432 Q F0(User names.)224 432 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 444 S +(riable).1 E F0(Names of all shell v)224 444 Q 2.5(ariables. May)-.25 F +(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 456 Q/F3 +10/Times-Italic@0 SF(command)2.5 E(command)184 468 Q F0 1.056(is e)3.556 +F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F 1.056 +(vironment, and its output is used as the possible)-.4 F 2.5 +(completions. Ar)184 480 R(guments are passed as with the)-.18 E F1 +2.5 E F0(option.)2.5 E F1144 492 Q F3(function)2.5 E F0 .113 +(The shell function)184 504 R F3(function)2.614 E F0 .114(is e)2.614 F -.15(xe)-.15 G .114(cuted in the current shell en).15 F 2.614 -(vironment. When)-.4 F .113(the func-)2.613 F .816(tion is e)184 648 R --.15(xe)-.15 G .816(cuted, the \214rst ar).15 F .816(gument \()-.18 F F1 -($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .817 +(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 516 R +-.15(xe)-.15 G .817(cuted, the \214rst ar).15 F .817(gument \()-.18 F F1 +($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .816 (he name of the command whose ar)-3.316 F(guments)-.18 E 1.407 -(are being completed, the second ar)184 660 R 1.407(gument \()-.18 F F1 +(are being completed, the second ar)184 528 R 1.407(gument \()-.18 F F1 ($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407 -(ord being completed, and the)-.1 F .103(third ar)184 672 R .103 -(gument \()-.18 F F1($3)A F0 2.603(\)i)C 2.603(st)-2.603 G .103(he w) --2.603 F .104(ord preceding the w)-.1 F .104 -(ord being completed on the current com-)-.1 F .102(mand line.)184 684 R -.102(When it \214nishes, the possible completions are retrie)5.102 F --.15(ve)-.25 G 2.601(df).15 G .101(rom the v)-2.601 F .101(alue of the) --.25 F F3(COMPREPL)184 696 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(60)190.395 E 0 Cg EP -%%Page: 61 61 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q/F2 10/Times-Italic@0 SF(globpat)2.5 E F0 1.007 -(The pathname e)184 96 R 1.007(xpansion pattern)-.15 F F2(globpat)3.507 -E F0 1.007(is e)3.507 F 1.008(xpanded to generate the possible comple-) --.15 F(tions.)184 108 Q F1144 120 Q F2(pr)2.5 E(e\214x)-.37 E(pr) -184 132 Q(e\214x)-.37 E F0 .535(is added at the be)3.035 F .534 +(ord being completed, and the)-.1 F .104(third ar)184 540 R .104 +(gument \()-.18 F F1($3)A F0 2.604(\)i)C 2.604(st)-2.604 G .104(he w) +-2.604 F .104(ord preceding the w)-.1 F .103 +(ord being completed on the current com-)-.1 F .101(mand line.)184 552 R +.101(When it \214nishes, the possible completions are retrie)5.101 F +-.15(ve)-.25 G 2.602(df).15 G .102(rom the v)-2.602 F .102(alue of the) +-.25 F F2(COMPREPL)184 564 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E +F1144 576 Q F3(globpat)2.5 E F0 1.008(The pathname e)184 588 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 600 Q +F1144 612 Q F3(pr)2.5 E(e\214x)-.37 E(pr)184 624 Q(e\214x)-.37 E +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 144 Q F1144 156 Q F2(suf)2.5 E -<8c78>-.18 E(suf)184 156 Q<8c78>-.18 E F0 +-.15(ve)-.2 G(been applied.)184 636 Q F1144 648 Q F3(suf)2.5 E +<8c78>-.18 E(suf)184 648 Q<8c78>-.18 E F0 (is appended to each possible completion after all other options ha)2.5 -E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 168 Q F2(wor)2.5 E -(dlist)-.37 E F0(The)184 180 Q F2(wor)3.639 E(dlist)-.37 E F0 1.14 -(is split using the characters in the)3.639 F/F3 9/Times-Bold@0 SF(IFS) -3.64 E F0 1.14(special v)3.39 F 1.14(ariable as delimiters, and)-.25 F -.981(each resultant w)184 192 R .981(ord is e)-.1 F 3.481 -(xpanded. Shell)-.15 F .981(quoting is honored within)3.481 F F2(wor) -3.481 E(dlist)-.37 E F0 3.48(,i)C 3.48(no)-3.48 G .98(rder to)-3.48 F -(pro)184 204 Q .765(vide a mechanism for the w)-.15 F .766 +E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 660 Q F3(wor)2.5 E +(dlist)-.37 E F0(The)184 672 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 .98 +(each resultant w)184 684 R .98(ord is e)-.1 F 3.481(xpanded. Shell)-.15 +F .981(quoting is honored within)3.481 F F3(wor)3.481 E(dlist)-.37 E F0 +3.481(,i)C 3.481(no)-3.481 G .981(rder to)-3.481 F(pro)184 696 Q .766 +(vide a mechanism for the w)-.15 F .765 (ords to contain shell metacharacters or characters in the)-.1 F -.25 -(va)184 216 S 1.965(lue of).25 F F3(IFS)4.465 E/F4 9/Times-Roman@0 SF(.) +(va)184 708 S 1.964(lue of).25 F F2(IFS)4.464 E/F4 9/Times-Roman@0 SF(.) A F0 1.964 (The possible completions are the members of the resultant list which) -6.465 F(match the w)184 228 Q(ord being completed.)-.1 E F1144 240 -Q F2(\214lterpat)2.5 E(\214lterpat)184 252 Q F0 .455 -(is a pattern as used for pathname e)2.955 F 2.956(xpansion. It)-.15 F -.456(is applied to the list of possible)2.956 F 1.596 -(completions generated by the preceding options and ar)184 264 R 1.596 -(guments, and each completion)-.18 F(matching)184 276 Q F2(\214lterpat) -3.204 E F0 .704(is remo)3.204 F -.15(ve)-.15 G 3.204(df).15 G .704 -(rom the list.)-3.204 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 -(in)3.204 E F2(\214lterpat)3.205 E F0(ne)3.205 E -.05(ga)-.15 G .705 -(tes the pattern;).05 F(in this case, an)184 288 Q 2.5(yc)-.15 G +6.464 F(match the w)184 720 Q(ord being completed.)-.1 E(GNU Bash 5.2)72 +768 Q(2022 September 19)135.955 E(63)185.115 E 0 Cg EP +%%Page: 64 64 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q/F2 10/Times-Italic@0 SF(\214lterpat)2.5 E(\214lterpat) +184 96 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 108 R +1.596(guments, and each completion)-.18 F(matching)184 120 Q F2 +(\214lterpat)3.205 E F0 .705(is remo)3.205 F -.15(ve)-.15 G 3.205(df).15 +G .704(rom the list.)-3.205 F 3.204(Al)5.704 G(eading)-3.204 E F1(!) +3.204 E F0(in)3.204 E F2(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 +G .704(tes the pattern;).05 F(in this case, an)184 132 Q 2.5(yc)-.15 G (ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E --.15(ve)-.15 G(d.).15 E .467(The return v)144 304.8 R .467 +-.15(ve)-.15 G(d.).15 E .466(The return v)144 148.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 F12.966 E F0 -(or)2.966 E F12.966 E F0 .466(is sup-)2.966 F 1.361 -(plied without a)144 316.8 R F2(name)3.861 E F0(ar)3.861 E 1.361 -(gument, an attempt is made to remo)-.18 F 1.662 -.15(ve a c)-.15 H -1.362(ompletion speci\214cation for a).15 F F2(name)144 328.8 Q F0 +(lid option is supplied, an option other than).25 F F12.967 E F0 +(or)2.967 E F12.967 E F0 .467(is sup-)2.967 F 1.362 +(plied without a)144 160.8 R F2(name)3.862 E F0(ar)3.862 E 1.361 +(gument, an attempt is made to remo)-.18 F 1.661 -.15(ve a c)-.15 H +1.361(ompletion speci\214cation for a).15 F F2(name)144 172.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 345.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C +F1(compopt)108 189.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C F1(\255DEI)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C -F2(name)-2.5 E F0(])A .447(Modify completion options for each)144 357.6 +F2(name)-2.5 E F0(])A .447(Modify completion options for each)144 201.6 R F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0 -.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .725 -(completion if no)144 369.6 R F2(name)3.225 E F0 3.225(sa)C .725 -(re supplied.)-3.225 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) -C .725(re gi)-3.225 F -.15(ve)-.25 G .726 -(n, display the completion options for).15 F(each)144 381.6 Q F2(name) -3.224 E F0 .724(or the current completion.)3.224 F .724(The possible v) +.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .726 +(completion if no)144 213.6 R F2(name)3.226 E F0 3.226(sa)C .726 +(re supplied.)-3.226 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) +C .725(re gi)-3.225 F -.15(ve)-.25 G .725 +(n, display the completion options for).15 F(each)144 225.6 Q F2(name) +3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v) 5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224 -F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 393.6 Q F0 -.2(bu) -2.677 G .177(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he) +F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 237.6 Q F0 -.2(bu) +2.678 G .178(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he) -5.178 E F12.678 E F0 .178 (option indicates that other supplied options should apply to)2.678 F -1.228(the `)144 405.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\ +1.227(the `)144 249.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.038(completion has pre)144 417.6 R 2.038 -(viously been de\214ned.)-.25 F(The)7.038 E F14.538 E F0 2.039 -(option indicates that other supplied options)4.538 F 1.539 -(should apply to `)144 429.6 R(`empty')-.74 E 4.039('c)-.74 G 1.538 +no)-3.727 F 2.039(completion has pre)144 261.6 R 2.039 +(viously been de\214ned.)-.25 F(The)7.038 E F14.538 E F0 2.038 +(option indicates that other supplied options)4.538 F 1.538 +(should apply to `)144 273.6 R(`empty')-.74 E 4.038('c)-.74 G 1.539 (ommand completion; that is, completion attempted on a blank line.) --4.039 F(The)144 441.6 Q F13.02 E F0 .52(option indicates that ot\ +-4.038 F(The)144 285.6 Q F13.02 E F0 .52(option indicates that ot\ her supplied options should apply to completion on the initial non-)3.02 -F .868(assignment w)144 453.6 R .868 +F .867(assignment w)144 297.6 R .868 (ord on the line, or after a command delimiter such as)-.1 F F1(;)3.368 -E F0(or)3.368 E F1(|)3.368 E F0 3.367(,w)C .867(hich is usually com-) --3.367 F(mand name completion.)144 465.6 Q .431(The return v)144 489.6 R +E F0(or)3.368 E F1(|)3.368 E F0 3.368(,w)C .868(hich is usually com-) +-3.368 F(mand name completion.)144 309.6 Q .432(The return v)144 333.6 R .431(alue is true unless an in)-.25 F -.25(va)-.4 G .431 (lid option is supplied, an attempt is made to modify the op-).25 F -(tions for a)144 501.6 Q F2(name)2.5 E F0 +(tions for a)144 345.6 Q F2(name)2.5 E F0 (for which no completion speci\214cation e)2.5 E -(xists, or an output error occurs.)-.15 E F1(continue)108 518.4 Q F0([) -2.5 E F2(n)A F0(])A .851(Resume the ne)144 530.4 R .851 -(xt iteration of the enclosing)-.15 F F1 -.25(fo)3.351 G(r).25 E F0(,)A +(xists, or an output error occurs.)-.15 E F1(continue)108 362.4 Q F0([) +2.5 E F2(n)A F0(])A .85(Resume the ne)144 374.4 R .85 +(xt iteration of the enclosing)-.15 F F1 -.25(fo)3.35 G(r).25 E F0(,)A F1(while)3.351 E F0(,)A F1(until)3.351 E F0 3.351(,o)C(r)-3.351 E F1 -(select)3.35 E F0 3.35(loop. If)3.35 F F2(n)3.71 E F0 .85 -(is speci\214ed, re-)3.59 F .203(sume at the)144 542.4 R F2(n)2.703 E F0 -.203(th enclosing loop.)B F2(n)5.563 E F0 .203(must be)2.943 F/F5 10 -/Symbol SF2.703 E F0 2.704(1. If)2.703 F F2(n)3.064 E F0 .204 -(is greater than the number of enclosing loops,)2.944 F 1.184 -(the last enclosing loop \(the `)144 554.4 R(`top-le)-.74 E -.15(ve)-.25 -G(l').15 E 3.684('l)-.74 G 1.184(oop\) is resumed.)-3.684 F 1.183 -(The return v)6.184 F 1.183(alue is 0 unless)-.25 F F2(n)3.683 E F0 -1.183(is not)3.683 F(greater than or equal to 1.)144 566.4 Q F1(declar) -108 583.2 Q(e)-.18 E F0([)2.5 E F1(\255aAfFgiIlnrtux)A F0 2.5(][)C F1 +(select)3.351 E F0 3.351(loop. If)3.351 F F2(n)3.711 E F0 .851 +(is speci\214ed, re-)3.591 F .204(sume at the)144 386.4 R F2(n)2.704 E +F0 .204(th enclosing loop.)B F2(n)5.564 E F0 .204(must be)2.944 F/F3 10 +/Symbol SF2.704 E F0 2.703(1. If)2.704 F F2(n)3.063 E F0 .203 +(is greater than the number of enclosing loops,)2.943 F 1.183 +(the last enclosing loop \(the `)144 398.4 R(`top-le)-.74 E -.15(ve)-.25 +G(l').15 E 3.683('l)-.74 G 1.183(oop\) is resumed.)-3.683 F 1.184 +(The return v)6.184 F 1.184(alue is 0 unless)-.25 F F2(n)3.684 E F0 +1.184(is not)3.684 F(greater than or equal to 1.)144 410.4 Q F1(declar) +108 427.2 Q(e)-.18 E F0([)2.5 E F1(\255aAfFgiIlnrtux)A F0 2.5(][)C F1 -2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(..])-2.5 E F1(typeset)108 595.2 Q F0([)2.5 E F1(\255aAfFgiIlnrtux)A F0 +(..])-2.5 E F1(typeset)108 439.2 Q F0([)2.5 E F1(\255aAfFgiIlnrtux)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 -2.5(].)C(..])-2.5 E 1.264(Declare v)144 607.2 R 1.264 -(ariables and/or gi)-.25 F 1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F +2.5(].)C(..])-2.5 E 1.265(Declare v)144 451.2 R 1.265 +(ariables and/or gi)-.25 F 1.565 -.15(ve t)-.25 H 1.265(hem attrib).15 F 3.765(utes. If)-.2 F(no)3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265 -(re gi)-3.765 F -.15(ve)-.25 G 3.765(nt).15 G 1.265(hen display the v) --3.765 F 1.265(alues of)-.25 F -.25(va)144 619.2 S 3.46(riables. The).25 +(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 463.2 S 3.46(riables. The).25 F F13.46 E F0 .96(option will display the attrib)3.46 F .96 (utes and v)-.2 F .96(alues of each)-.25 F F2(name)3.82 E F0 5.96(.W).18 -G(hen)-5.96 E F13.46 E F0 .96(is used)3.46 F(with)144 631.2 Q F2 -(name)2.774 E F0(ar)2.774 E .274 +G(hen)-5.96 E F13.46 E F0 .96(is used)3.46 F(with)144 475.2 Q F2 +(name)2.775 E F0(ar)2.775 E .275 (guments, additional options, other than)-.18 F F12.775 E F0(and) -2.775 E F12.775 E F0 2.775(,a)C .275(re ignored.)-2.775 F(When) -5.275 E F12.775 E F0 .275(is supplied)2.775 F(without)144 643.2 Q -F2(name)3.79 E F0(ar)3.79 E 1.29(guments, it will display the attrib) --.18 F 1.289(utes and v)-.2 F 1.289(alues of all v)-.25 F 1.289 -(ariables ha)-.25 F 1.289(ving the at-)-.2 F(trib)144 655.2 Q .38 +2.775 E F12.775 E F0 2.775(,a)C .274(re ignored.)-2.775 F(When) +5.274 E F12.774 E F0 .274(is supplied)2.774 F(without)144 487.2 Q +F2(name)3.789 E F0(ar)3.789 E 1.289(guments, it will display the attrib) +-.18 F 1.289(utes and v)-.2 F 1.29(alues of all v)-.25 F 1.29 +(ariables ha)-.25 F 1.29(ving the at-)-.2 F(trib)144 499.2 Q .38 (utes speci\214ed by the additional options.)-.2 F .38 (If no other options are supplied with)5.38 F F12.88 E F0(,)A F1 -(declar)2.88 E(e)-.18 E F0(will)2.88 E 1.107(display the attrib)144 -667.2 R 1.107(utes and v)-.2 F 1.106(alues of all shell v)-.25 F 3.606 -(ariables. The)-.25 F F13.606 E F0 1.106 -(option will restrict the display to)3.606 F .299(shell functions.)144 -679.2 R(The)5.299 E F12.799 E F0 .299(option inhibits the display\ - of function de\214nitions; only the function name)2.799 F 1.54 -(and attrib)144 691.2 R 1.54(utes are printed.)-.2 F 1.54(If the)6.54 F -F1(extdeb)4.04 E(ug)-.2 E F0 1.54(shell option is enabled using)4.04 F -F1(shopt)4.04 E F0 4.04(,t)C 1.54(he source \214le)-4.04 F .648 -(name and line number where each)144 703.2 R F2(name)3.148 E F0 .648 +(declar)2.88 E(e)-.18 E F0(will)2.88 E 1.106(display the attrib)144 +511.2 R 1.106(utes and v)-.2 F 1.106(alues of all shell v)-.25 F 3.606 +(ariables. The)-.25 F F13.606 E F0 1.107 +(option will restrict the display to)3.606 F .3(shell functions.)144 +523.2 R(The)5.3 E F12.8 E F0 .299(option inhibits the display of \ +function de\214nitions; only the function name)2.8 F 1.54(and attrib)144 +535.2 R 1.54(utes are printed.)-.2 F 1.54(If the)6.54 F F1(extdeb)4.04 E +(ug)-.2 E F0 1.54(shell option is enabled using)4.04 F F1(shopt)4.04 E +F0 4.04(,t)C 1.54(he source \214le)-4.04 F .648 +(name and line number where each)144 547.2 R F2(name)3.148 E F0 .648 (is de\214ned are displayed as well.)3.148 F(The)5.648 E F13.148 E -F0 .649(option implies)3.149 F F1144 715.2 Q F0 5.837(.T)C(he) --5.837 E F13.337 E F0 .837(option forces v)3.337 F .836 +F0 .648(option implies)3.148 F F1144 559.2 Q F0 5.836(.T)C(he) +-5.836 E F13.336 E F0 .836(option forces v)3.336 F .837 (ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 -(ve)-.25 G 3.336(nw).15 G(hen)-3.336 E F1(de-)3.336 E(clar)144 727.2 Q -(e)-.18 E F0 .818(is e)3.318 F -.15(xe)-.15 G .818 +(ve)-.25 G 3.337(nw).15 G(hen)-3.337 E F1(de-)3.337 E(clar)144 571.2 Q +(e)-.18 E F0 .819(is e)3.319 F -.15(xe)-.15 G .819 (cuted in a shell function.).15 F .818 -(It is ignored in all other cases.)5.818 F(The)5.819 E F13.319 E -F0 .819(option causes local)3.319 F(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(61)190.395 E 0 Cg EP -%%Page: 62 62 +(It is ignored in all other cases.)5.818 F(The)5.818 E F13.318 E +F0 .818(option causes local)3.318 F -.25(va)144 583.2 S .693 +(riables to inherit the attrib).25 F .693(utes \(e)-.2 F .693(xcept the) +-.15 F F2(namer)3.194 E(ef)-.37 E F0(attrib)3.194 E .694(ute\) and v)-.2 +F .694(alue of an)-.25 F 3.194(ye)-.15 G .694(xisting v)-3.344 F +(ariable)-.25 E .82(with the same)144 595.2 R F2(name)3.32 E F0 .82 +(at a surrounding scope.)3.32 F .82(If there is no e)5.82 F .82 +(xisting v)-.15 F .82(ariable, the local v)-.25 F .82(ariable is)-.25 F +.379(initially unset.)144 607.2 R .379(The follo)5.379 F .379 +(wing options can be used to restrict output to v)-.25 F .38 +(ariables with the speci\214ed)-.25 F(attrib)144 619.2 Q(ute or to gi) +-.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F1144 +631.2 Q F0(Each)180 631.2 Q F2(name)2.5 E F0(is an inde)2.5 E -.15(xe) +-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F1(Arrays)2.5 E +F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1144 643.2 Q F0(Each)180 +643.2 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H +(rray v).15 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E -.15(ve) +-.15 G(\).).15 E F1144 655.2 Q F0(Use function names only)180 +655.2 Q(.)-.65 E F1144 667.2 Q F0 .558(The v)180 667.2 R .558 +(ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25 +(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .557 +(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 679.2 Q F0(abo) +2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v) +-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E F1144 691.2 Q +F0 .909(When the v)180 691.2 R .909(ariable is assigned a v)-.25 F .909 +(alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4 +G .91(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 703.2 R +(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 715.2 +Q F0(Gi)180 715.2 Q 1.62 -.15(ve e)-.25 H(ach).15 E F2(name)3.82 E F0 +(the)3.82 E F2(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319 +(ute, making it a name reference to another v)-.2 F(ariable.)-.25 E +1.518(That other v)180 727.2 R 1.518(ariable is de\214ned by the v)-.25 +F 1.519(alue of)-.25 F F2(name)4.019 E F0 6.519(.A)C 1.519 +(ll references, assignments, and)-6.519 F(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(64)185.115 E 0 Cg EP +%%Page: 65 65 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)144 84 S -.694(riables to inherit the attrib).25 F .694(utes \(e)-.2 F .694 -(xcept the)-.15 F/F1 10/Times-Italic@0 SF(namer)3.194 E(ef)-.37 E F0 -(attrib)3.194 E .693(ute\) and v)-.2 F .693(alue of an)-.25 F 3.193(ye) --.15 G .693(xisting v)-3.343 F(ariable)-.25 E .82(with the same)144 96 R -F1(name)3.32 E F0 .82(at a surrounding scope.)3.32 F .82 -(If there is no e)5.82 F .82(xisting v)-.15 F .82(ariable, the local v) --.25 F .82(ariable is)-.25 F .38(initially unset.)144 108 R .38 -(The follo)5.38 F .379(wing options can be used to restrict output to v) --.25 F .379(ariables with the speci\214ed)-.25 F(attrib)144 120 Q -(ute or to gi)-.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 -E/F2 10/Times-Bold@0 SF144 132 Q F0(Each)180 132 Q F1(name)2.5 E -F0(is an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E -(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).) -.15 E F2144 144 Q F0(Each)180 144 Q F1(name)2.5 E F0 -(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v).15 E(ariable \(see) --.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F2144 -156 Q F0(Use function names only)180 156 Q(.)-.65 E F2144 168 Q F0 -.557(The v)180 168 R .558(ariable is treated as an inte)-.25 F .558 -(ger; arithmetic e)-.15 F -.25(va)-.25 G .558(luation \(see).25 F/F3 9 -/Times-Bold@0 SF .558(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION) -180 180 Q F0(abo)2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G -(erformed when the v)-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E -F2144 192 Q F0 .91(When the v)180 192 R .909 -(ariable is assigned a v)-.25 F .909(alue, all upper)-.25 F .909 -(-case characters are con)-.2 F -.15(ve)-.4 G .909(rted to lo).15 F(wer) --.25 E(-)-.2 E 2.5(case. The)180 204 R(upper)2.5 E(-case attrib)-.2 E -(ute is disabled.)-.2 E F2144 216 Q F0(Gi)180 216 Q 1.619 -.15 -(ve e)-.25 H(ach).15 E F1(name)3.819 E F0(the)3.819 E F1(namer)3.819 E -(ef)-.37 E F0(attrib)3.819 E 1.319 -(ute, making it a name reference to another v)-.2 F(ariable.)-.25 E .478 -(That other v)180 228 R .478(ariable is de\214ned by the v)-.25 F .478 -(alue of)-.25 F F1(name)2.978 E F0 5.478(.A)C .478 -(ll references, assignments, and at-)-5.478 F(trib)180 240 Q .781 -(ute modi\214cations to)-.2 F F1(name)3.281 E F0 3.281(,e)C .782 -(xcept those using or changing the)-3.431 F F23.282 E F0(attrib) -3.282 E .782(ute itself, are)-.2 F .809(performed on the v)180 252 R -.809(ariable referenced by)-.25 F F1(name)3.308 E F0 1.908 -.55('s v)D -3.308(alue. The).3 F .808(nameref attrib)3.308 F .808(ute cannot be)-.2 -F(applied to array v)180 264 Q(ariables.)-.25 E F2144 276 Q F0 -(Mak)180 276 Q(e)-.1 E F1(name)3.654 E F0 3.654(sr)C(eadonly)-3.654 E -6.154(.T)-.65 G 1.154(hese names cannot then be assigned v)-6.154 F -1.155(alues by subsequent as-)-.25 F(signment statements or unset.)180 -288 Q F2144 300 Q F0(Gi)180 300 Q .73 -.15(ve e)-.25 H(ach).15 E -F1(name)2.93 E F0(the)2.929 E F1(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(attrib)180 84 Q +.227(ute modi\214cations to)-.2 F/F1 10/Times-Italic@0 SF(name)2.726 E +F0 2.726(,e)C .226(xcept those using or changing the)-2.876 F/F2 10 +/Times-Bold@0 SF2.726 E F0(attrib)2.726 E .226(ute itself, are)-.2 +F .808(performed on the v)180 96 R .808(ariable referenced by)-.25 F F1 +(name)3.308 E F0 1.908 -.55('s v)D 3.308(alue. The).3 F .809 +(nameref attrib)3.309 F .809(ute cannot be)-.2 F(applied to array v)180 +108 Q(ariables.)-.25 E F2144 120 Q F0(Mak)180 120 Q(e)-.1 E F1 +(name)3.655 E F0 3.655(sr)C(eadonly)-3.655 E 6.154(.T)-.65 G 1.154 +(hese names cannot then be assigned v)-6.154 F 1.154 +(alues by subsequent as-)-.25 F(signment statements or unset.)180 132 Q +F2144 144 Q F0(Gi)180 144 Q .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.929 E F2(RETURN)2.929 E F0 -(traps from the calling shell.)180 312 Q(The trace attrib)5 E -(ute has no special meaning for v)-.2 E(ariables.)-.25 E F2144 324 -Q F0 .909(When the v)180 324 R .909(ariable is assigned a v)-.25 F .909 +E(UG)-.1 E F0(and)2.93 E F2(RETURN)2.93 E F0 +(traps from the calling shell.)180 156 Q(The trace attrib)5 E +(ute has no special meaning for v)-.2 E(ariables.)-.25 E F2144 168 +Q F0 .91(When the v)180 168 R .909(ariable is assigned a v)-.25 F .909 (alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2 F -.15 -(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 336 R(lo)2.5 -E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2144 348 Q -F0(Mark)180 348 Q F1(name)2.5 E F0 2.5(sf)C(or e)-2.5 E -(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .144 -(Using `+' instead of `\255' turns of)144 364.8 R 2.643(ft)-.25 G .143 -(he attrib)-2.643 F .143(ute instead, with the e)-.2 F .143 -(xceptions that)-.15 F F2(+a)2.643 E F0(and)2.643 E F2(+A)2.643 E F0 -.143(may not)2.643 F .578(be used to destro)144 376.8 R 3.079(ya)-.1 G +(ve)-.4 G .909(rted to upper).15 F(-)-.2 E 2.5(case. The)180 180 R(lo) +2.5 E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2144 +192 Q F0(Mark)180 192 Q F1(name)2.5 E F0 2.5(sf)C(or e)-2.5 E +(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .143 +(Using `+' instead of `\255' turns of)144 208.8 R 2.643(ft)-.25 G .143 +(he attrib)-2.643 F .143(ute instead, with the e)-.2 F .144 +(xceptions that)-.15 F F2(+a)2.644 E F0(and)2.644 E F2(+A)2.644 E F0 +.144(may not)2.644 F .579(be used to destro)144 220.8 R 3.079(ya)-.1 G .579(rray v)-3.079 F .579(ariables and)-.25 F F2(+r)3.079 E F0 .579 (will not remo)3.079 F .879 -.15(ve t)-.15 H .579(he readonly attrib).15 -F 3.079(ute. When)-.2 F .579(used in a)3.079 F(function,)144 388.8 Q F2 -(declar)3.544 E(e)-.18 E F0(and)3.544 E F2(typeset)3.544 E F0(mak)3.544 -E 3.544(ee)-.1 G(ach)-3.544 E F1(name)3.543 E F0 1.043 -(local, as with the)3.543 F F2(local)3.543 E F0 1.043 -(command, unless the)3.543 F F23.543 E F0 1.205 -(option is supplied.)144 400.8 R 1.205(If a v)6.205 F 1.205 +F 3.079(ute. When)-.2 F .578(used in a)3.078 F(function,)144 232.8 Q F2 +(declar)3.543 E(e)-.18 E F0(and)3.543 E F2(typeset)3.543 E F0(mak)3.543 +E 3.543(ee)-.1 G(ach)-3.543 E F1(name)3.543 E F0 1.043 +(local, as with the)3.543 F F2(local)3.544 E F0 1.044 +(command, unless the)3.544 F F23.544 E F0 1.205 +(option is supplied.)144 244.8 R 1.205(If a v)6.205 F 1.205 (ariable name is follo)-.25 F 1.205(wed by =)-.25 F F1(value)A F0 3.705 (,t)C 1.205(he v)-3.705 F 1.205(alue of the v)-.25 F 1.205 -(ariable is set to)-.25 F F1(value)144 412.8 Q F0 5.218(.W)C .218 -(hen using)-5.218 F F22.718 E F0(or)2.718 E F22.718 E F0 -.217(and the compound assignment syntax to create array v)2.717 F .217 -(ariables, addi-)-.25 F .882(tional attrib)144 424.8 R .882 +(ariable is set to)-.25 F F1(value)144 256.8 Q F0 5.217(.W)C .217 +(hen using)-5.217 F F22.717 E F0(or)2.717 E F22.717 E F0 +.217(and the compound assignment syntax to create array v)2.717 F .218 +(ariables, addi-)-.25 F .882(tional attrib)144 268.8 R .882 (utes do not tak)-.2 F 3.382(ee)-.1 G -.25(ff)-3.382 G .882 (ect until subsequent assignments.).25 F .882(The return v)5.882 F .882 -(alue is 0 unless an)-.25 F(in)144 436.8 Q -.25(va)-.4 G .366(lid optio\ +(alue is 0 unless an)-.25 F(in)144 280.8 Q -.25(va)-.4 G .365(lid optio\ n is encountered, an attempt is made to de\214ne a function using).25 F -/F4 10/Courier@0 SF .365(\255f foo=bar)2.865 F F0 2.865(,a)C 2.865(na) --2.865 G(t-)-2.865 E .548(tempt is made to assign a v)144 448.8 R .548 -(alue to a readonly v)-.25 F .549 -(ariable, an attempt is made to assign a v)-.25 F .549(alue to an)-.25 F -1.749(array v)144 460.8 R 1.749 +/F3 10/Courier@0 SF .366(\255f foo=bar)2.866 F F0 2.866(,a)C 2.866(na) +-2.866 G(t-)-2.866 E .549(tempt is made to assign a v)144 292.8 R .549 +(alue to a readonly v)-.25 F .548 +(ariable, an attempt is made to assign a v)-.25 F .548(alue to an)-.25 F +1.748(array v)144 304.8 R 1.748 (ariable without using the compound assignment syntax \(see)-.25 F F2 -(Arrays)4.248 E F0(abo)4.248 E -.15(ve)-.15 G 1.748(\), one of the).15 F -F1(names)144 472.8 Q F0 .359(is not a v)2.858 F .359(alid shell v)-.25 F +(Arrays)4.249 E F0(abo)4.249 E -.15(ve)-.15 G 1.749(\), one of the).15 F +F1(names)144 316.8 Q F0 .359(is not a v)2.859 F .359(alid shell v)-.25 F .359(ariable name, an attempt is made to turn of)-.25 F 2.859(fr)-.25 G -.359(eadonly status for a read-)-2.859 F 1.213(only v)144 484.8 R 1.213 +.359(eadonly status for a read-)-2.859 F 1.212(only v)144 328.8 R 1.213 (ariable, an attempt is made to turn of)-.25 F 3.713(fa)-.25 G 1.213 -(rray status for an array v)-3.713 F 1.212(ariable, or an attempt is) --.25 F(made to display a non-e)144 496.8 Q(xistent function with)-.15 E -F22.5 E F0(.)A F2(dirs [\255clpv] [+)108 513.6 Q F1(n)A F2 2.5(][) -C-2.5 E F1(n)A F2(])A F0 -.4(Wi)144 525.6 S .328 +(rray status for an array v)-3.713 F 1.213(ariable, or an attempt is) +-.25 F(made to display a non-e)144 340.8 Q(xistent function with)-.15 E +F22.5 E F0(.)A F2(dirs [\255clpv] [+)108 357.6 Q F1(n)A F2 2.5(][) +C-2.5 E F1(n)A F2(])A F0 -.4(Wi)144 369.6 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 -(single line with directory names separated by spaces.)144 537.6 R 1.238 -(Directories are added to the list with the)6.238 F F2(pushd)144 549.6 Q -F0 .927(command; the)3.427 F F2(popd)3.428 E F0 .928(command remo)3.428 +.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 381.6 R 1.238 +(Directories are added to the list with the)6.238 F F2(pushd)144 393.6 Q +F0 .928(command; the)3.428 F F2(popd)3.428 E F0 .928(command remo)3.428 F -.15(ve)-.15 G 3.428(se).15 G .928(ntries from the list.)-3.428 F .928 -(The current directory is al-)5.928 F -.1(wa)144 561.6 S -(ys the \214rst directory in the stack.).1 E F2144 573.6 Q F0 -(Clears the directory stack by deleting all of the entries.)180 573.6 Q -F2144 585.6 Q F0 .882 -(Produces a listing using full pathnames; the def)180 585.6 R .881 +(The current directory is al-)5.928 F -.1(wa)144 405.6 S +(ys the \214rst directory in the stack.).1 E F2144 417.6 Q F0 +(Clears the directory stack by deleting all of the entries.)180 417.6 Q +F2144 429.6 Q F0 .881 +(Produces a listing using full pathnames; the def)180 429.6 R .882 (ault listing format uses a tilde to denote)-.1 F(the home directory)180 -597.6 Q(.)-.65 E F2144 609.6 Q F0 -(Print the directory stack with one entry per line.)180 609.6 Q F2 -144 621.6 Q F0 .272(Print the directory stack with one entry per line, \ -pre\214xing each entry with its inde)180 621.6 R 2.773(xi)-.15 G 2.773 -(nt)-2.773 G(he)-2.773 E(stack.)180 633.6 Q F2(+)144 645.6 Q F1(n)A F0 -1.565(Displays the)180 645.6 R 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 657.6 Q F2144 669.6 Q F1 -(n)A F0 1.194(Displays the)180 669.6 R F1(n)3.694 E F0 1.194 +441.6 Q(.)-.65 E F2144 453.6 Q F0 +(Print the directory stack with one entry per line.)180 453.6 Q F2 +144 465.6 Q F0 .273(Print the directory stack with one entry per line, \ +pre\214xing each entry with its inde)180 465.6 R 2.772(xi)-.15 G 2.772 +(nt)-2.772 G(he)-2.772 E(stack.)180 477.6 Q F2(+)144 489.6 Q F1(n)A F0 +1.564(Displays the)180 489.6 R 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 +(without options, starting with zero.)180 501.6 Q F2144 513.6 Q F1 +(n)A F0 1.194(Displays the)180 513.6 R 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 681.6 Q .258(The return v)144 -698.4 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 +(without options, starting with zero.)180 525.6 Q .257(The return v)144 +542.4 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 (lid option is supplied or).25 F F1(n)2.758 E F0(inde)2.758 E -.15(xe) -.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-) -.15 F(tory stack.)144 710.4 Q(GNU Bash 5.1)72 768 Q(2020 October 29) -141.235 E(62)190.395 E 0 Cg EP -%%Page: 63 63 +.15 F(tory stack.)144 554.4 Q F2(diso)108 571.2 Q(wn)-.1 E F0([)2.5 E F2 +(\255ar)A F0 2.5(][)C F2-2.5 E F0 2.5(][)C F1(jobspec)-2.5 E F0 +(... |)2.5 E F1(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 583.2 S .122 +(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F1(jobspec) +4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H +2.622(obs. If).15 F F1(jobspec)4.362 E F0 .121(is not present, and)2.932 +F .096(neither the)144 595.2 R F22.596 E F0 .096(nor the)2.596 F +F22.596 E F0 .096(option is supplied, the)2.596 F F1(curr)2.596 E +.096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F2 +2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each) +.15 F F1(jobspec)145.74 607.2 Q F0 .586(is not remo)3.396 F -.15(ve)-.15 +G 3.086(df).15 G .585(rom the table, b)-3.086 F .585(ut is mark)-.2 F +.585(ed so that)-.1 F/F4 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .585 +(is not sent to the job if the)2.835 F .962(shell recei)144 619.2 R -.15 +(ve)-.25 G 3.462(sa).15 G F4(SIGHUP)A/F5 9/Times-Roman@0 SF(.)A F0 .962 +(If no)5.462 F F1(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F2 +3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 +H 3.462(rm).15 G .962(ark all)-3.462 F 1.359(jobs; the)144 631.2 R F2 +3.859 E F0 1.359(option without a)3.859 F F1(jobspec)5.599 E F0 +(ar)4.169 E 1.358(gument restricts operation to running jobs.)-.18 F +1.358(The return)6.358 F -.25(va)144 643.2 S(lue is 0 unless a).25 E F1 +(jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E +F2(echo)108 660 Q F0([)2.5 E F2(\255neE)A F0 2.5(][)C F1(ar)-2.5 E(g) +-.37 E F0(...])2.5 E .424(Output the)144 672 R F1(ar)2.924 E(g)-.37 E F0 +.424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 +(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .308 +(error occurs.)144 684 R(If)5.308 E F22.808 E F0 .308 +(is speci\214ed, the trailing ne)2.808 F .308(wline is suppressed.)-.25 +F .307(If the)5.308 F F22.807 E F0 .307(option is gi)2.807 F -.15 +(ve)-.25 G .307(n, inter).15 F(-)-.2 E .197(pretation of the follo)144 +696 R .198(wing backslash-escaped characters is enabled.)-.25 F(The) +5.198 E F22.698 E F0 .198(option disables the in-)2.698 F .067 +(terpretation of these escape characters, e)144 708 R -.15(ve)-.25 G +2.567(no).15 G 2.567(ns)-2.567 G .067(ystems where the)-2.567 F 2.567 +(ya)-.15 G .067(re interpreted by def)-2.567 F 2.567(ault. The)-.1 F F2 +(xpg_echo)144 720 Q F0 .601 +(shell option may be used to dynamically determine whether or not)3.101 +F F2(echo)3.102 E F0 -.15(ex)3.102 G .602(pands these).15 F +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(65)185.115 E 0 Cg EP +%%Page: 66 66 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(diso)108 84 Q(wn)-.1 E F0([)2.5 E F1(\255ar)A F0 2.5(][)C F1 --2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(jobspec)-2.5 E F0(... |)2.5 E -F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 96 S .121(thout options, remo).4 -F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec)4.362 E F0 .122 -(from the table of acti)2.932 F .422 -.15(ve j)-.25 H 2.622(obs. If).15 -F F2(jobspec)4.362 E F0 .122(is not present, and)2.932 F .096 -(neither the)144 108 R F12.596 E F0 .096(nor the)2.596 F F1 -2.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E .096 -(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 -2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each).15 F -F2(jobspec)145.74 120 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 G 3.085 -(df).15 G .585(rom the table, b)-3.085 F .585(ut is mark)-.2 F .585 -(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586 -(is not sent to the job if the)2.835 F .962(shell recei)144 132 R -.15 -(ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962 -(If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1 -3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 -H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 144 R F1 -3.858 E F0 1.358(option without a)3.858 F F2(jobspec)5.598 E F0 -(ar)4.169 E 1.359(gument restricts operation to running jobs.)-.18 F -1.359(The return)6.359 F -.25(va)144 156 S(lue is 0 unless a).25 E F2 -(jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E -F1(echo)108 172.8 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) --.37 E F0(...])2.5 E .425(Output the)144 184.8 R F2(ar)2.925 E(g)-.37 E -F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 -(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .307 -(error occurs.)144 196.8 R(If)5.307 E F12.807 E F0 .307 -(is speci\214ed, the trailing ne)2.807 F .308(wline is suppressed.)-.25 -F .308(If the)5.308 F F12.808 E F0 .308(option is gi)2.808 F -.15 -(ve)-.25 G .308(n, inter).15 F(-)-.2 E .198(pretation of the follo)144 -208.8 R .198(wing backslash-escaped characters is enabled.)-.25 F(The) -5.198 E F12.698 E F0 .197(option disables the in-)2.697 F .067 -(terpretation of these escape characters, e)144 220.8 R -.15(ve)-.25 G -2.567(no).15 G 2.567(ns)-2.567 G .067(ystems where the)-2.567 F 2.567 -(ya)-.15 G .067(re interpreted by def)-2.567 F 2.568(ault. The)-.1 F F1 -(xpg_echo)144 232.8 Q F0 .602 -(shell option may be used to dynamically determine whether or not)3.102 -F F1(echo)3.101 E F0 -.15(ex)3.101 G .601(pands these).15 F .658 -(escape characters by def)144 244.8 R(ault.)-.1 E F1(echo)5.658 E F0 -.659(does not interpret)3.159 F F13.159 E F0 .659 -(to mean the end of options.)3.159 F F1(echo)5.659 E F0(inter)3.159 E(-) --.2 E(prets the follo)144 256.8 Q(wing escape sequences:)-.25 E F1(\\a) -144 268.8 Q F0(alert \(bell\))180 268.8 Q F1(\\b)144 280.8 Q F0 -(backspace)180 280.8 Q F1(\\c)144 292.8 Q F0(suppress further output)180 -292.8 Q F1(\\e)144 304.8 Q(\\E)144 316.8 Q F0(an escape character)180 -316.8 Q F1(\\f)144 328.8 Q F0(form feed)180 328.8 Q F1(\\n)144 340.8 Q -F0(ne)180 340.8 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 352.8 Q F0 -(carriage return)180 352.8 Q F1(\\t)144 364.8 Q F0(horizontal tab)180 -364.8 Q F1(\\v)144 376.8 Q F0 -.15(ve)180 376.8 S(rtical tab).15 E F1 -(\\\\)144 388.8 Q F0(backslash)180 388.8 Q F1(\\0)144 400.8 Q F2(nnn)A -F0(the eight-bit character whose v)180 400.8 Q(alue is the octal v)-.25 -E(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1 -(\\x)144 412.8 Q F2(HH)A F0(the eight-bit character whose v)180 412.8 Q -(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 -(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1 -(\\u)144 424.8 Q F2(HHHH)A F0 1.507 -(the Unicode \(ISO/IEC 10646\) character whose v)180 436.8 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 448.8 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 460.8 Q F2(HHHHHHHH)A F0 .547 -(the Unicode \(ISO/IEC 10646\) character whose v)180 472.8 R .547 -(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) -3.048 E(HHH)180 484.8 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G -(igits\))-2.5 E F1(enable)108 501.6 Q F0([)2.5 E F1A F0 2.5(][)C -F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 -(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 513.6 R +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .659 +(escape characters by def)144 84 R(ault.)-.1 E/F1 10/Times-Bold@0 SF +(echo)5.659 E F0 .659(does not interpret)3.159 F F13.159 E F0 .659 +(to mean the end of options.)3.159 F F1(echo)5.658 E F0(inter)3.158 E(-) +-.2 E(prets the follo)144 96 Q(wing escape sequences:)-.25 E F1(\\a)144 +108 Q F0(alert \(bell\))180 108 Q F1(\\b)144 120 Q F0(backspace)180 120 +Q F1(\\c)144 132 Q F0(suppress further output)180 132 Q F1(\\e)144 144 Q +(\\E)144 156 Q F0(an escape character)180 156 Q F1(\\f)144 168 Q F0 +(form feed)180 168 Q F1(\\n)144 180 Q F0(ne)180 180 Q 2.5(wl)-.25 G(ine) +-2.5 E F1(\\r)144 192 Q F0(carriage return)180 192 Q F1(\\t)144 204 Q F0 +(horizontal tab)180 204 Q F1(\\v)144 216 Q F0 -.15(ve)180 216 S +(rtical tab).15 E F1(\\\\)144 228 Q F0(backslash)180 228 Q F1(\\0)144 +240 Q/F2 10/Times-Italic@0 SF(nnn)A F0(the eight-bit character whose v) +180 240 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0 +(\(zero to three octal digits\))2.5 E F1(\\x)144 252 Q F2(HH)A F0 +(the eight-bit character whose v)180 252 Q(alue is the he)-.25 E +(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) +-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1(\\u)144 264 Q F2(HHHH)A F0 +1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 276 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 288 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 300 Q F2(HHHHHHHH)A F0 .548 +(the Unicode \(ISO/IEC 10646\) character whose v)180 312 R .547 +(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) +3.047 E(HHH)180 324 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\)) +-2.5 E F1(enable)108 340.8 Q F0([)2.5 E F1A F0 2.5(][)C F1 +(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 +(][)C F2(name)-2.5 E F0(...])2.5 E .277(Enable and disable b)144 352.8 R .278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278 -(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .833 -(the same name as a shell b)144 525.6 R .834(uiltin to be e)-.2 F -.15 +(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .834 +(the same name as a shell b)144 364.8 R .834(uiltin to be e)-.2 F -.15 (xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15 -(ve)-.25 G 3.334(nt).15 G(hough)-3.334 E .99 -(the shell normally searches for b)144 537.6 R .989 -(uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .989 -(is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F .648 -(abled; otherwise,)144 549.6 R F2(names)3.148 E F0 .648(are enabled.) +(ve)-.25 G 3.333(nt).15 G(hough)-3.333 E .989 +(the shell normally searches for b)144 376.8 R .989 +(uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .99 +(is used, each)3.49 F F2(name)3.49 E F0 .99(is dis-)3.49 F .649 +(abled; otherwise,)144 388.8 R F2(names)3.148 E F0 .648(are enabled.) 3.148 F -.15(Fo)5.648 G 3.148(re).15 G .648(xample, to use the)-3.298 F -F1(test)3.148 E F0 .648(binary found via the)3.148 F F3 -.666(PA)3.148 G -(TH)-.189 E F0(in-)2.899 E .539(stead of the shell b)144 561.6 R .538 -(uiltin v)-.2 F .538(ersion, run)-.15 F/F5 10/Courier@0 SF .538 -(enable -n test)3.038 F F0 5.538(.T)C(he)-5.538 E F13.038 E F0 -.538(option means to load the ne)3.038 F(w)-.25 E -.2(bu)144 573.6 S +F1(test)3.148 E F0 .648(binary found via the)3.148 F/F3 9/Times-Bold@0 +SF -.666(PA)3.148 G(TH)-.189 E F0(in-)2.898 E .538(stead of the shell b) +144 400.8 R .538(uiltin v)-.2 F .538(ersion, run)-.15 F/F4 10/Courier@0 +SF .538(enable -n test)3.038 F F0 5.538(.T)C(he)-5.538 E F13.038 E +F0 .539(option means to load the ne)3.038 F(w)-.25 E -.2(bu)144 412.8 S 1.365(iltin command).2 F F2(name)4.225 E F0 1.365(from shared object) 4.045 F F2(\214lename)5.775 E F0 3.865(,o).18 G 3.865(ns)-3.865 G 1.365 -(ystems that support dynamic loading.)-3.865 F(The)144 585.6 Q F1 -2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F -.367(viously loaded with)-.25 F F12.866 E F0 5.366(.I)C 2.866(fn) --5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi) --.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 597.6 R F1 -2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399 -(uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4 -F .399(guments, the)-.18 F .099(list consists of all enabled shell b)144 -609.6 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 -(is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F -(If)5.098 E F12.598 E F0 .905 -(is supplied, the list printed includes all b)144 621.6 R .905 -(uiltins, with an indication of whether or not each is en-)-.2 F 2.873 -(abled. If)144 633.6 R F12.873 E F0 .372 -(is supplied, the output is restricted to the POSIX)2.873 F F2(special) -2.872 E F0 -.2(bu)2.872 G 2.872(iltins. The).2 F .372(return v)2.872 F -.372(alue is)-.25 F 2.5(0u)144 645.6 S(nless a)-2.5 E F2(name)2.86 E F0 -(is not a shell b)2.68 E(uiltin or there is an error loading a ne)-.2 E -2.5(wb)-.25 G(uiltin from a shared object.)-2.7 E F1 -2.3 -.15(ev a)108 -662.4 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(The)144 674.4 -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 .479(and e)144 686.4 R -.15(xe)-.15 G -.479(cuted by the shell, and its e).15 F .479 -(xit status is returned as the v)-.15 F .478(alue of)-.25 F F1 -2.3 -.15 -(ev a)2.978 H(l).15 E F0 5.478(.I)C 2.978(ft)-5.478 G .478(here are no) --2.978 F F2(ar)3.308 E(gs)-.37 E F0(,).27 E(or only null ar)144 698.4 Q -(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(63)190.395 E 0 Cg EP -%%Page: 64 64 +(ystems that support dynamic loading.)-3.865 F .606(Bash will use the v) +144 424.8 R .606(alue of the)-.25 F F1 -.3(BA)3.106 G(SH_LO).3 E(AD)-.4 +E(ABLES_P)-.35 E -.95(AT)-.74 G(H).95 E F0 -.25(va)3.106 G .606 +(riable as a colon-separated list of).25 F .549 +(directories in which to search for)144 436.8 R F2(\214lename)3.049 E F0 +5.549(.T)C .549(he def)-5.549 F .548(ault is system-dependent.)-.1 F +(The)5.548 E F13.048 E F0 .548(option will)3.048 F .546 +(delete a b)144 448.8 R .546(uiltin pre)-.2 F .546(viously loaded with) +-.25 F F13.046 E F0 5.547(.I)C 3.047(fn)-5.547 G(o)-3.047 E F2 +(name)3.047 E F0(ar)3.047 E .547(guments are gi)-.18 F -.15(ve)-.25 G +.547(n, or if the).15 F F13.047 E F0 .547(option is)3.047 F .546 +(supplied, a list of shell b)144 460.8 R .545(uiltins is printed.)-.2 F +-.4(Wi)5.545 G .545(th no other option ar).4 F .545 +(guments, the list consists of all)-.18 F .695(enabled shell b)144 472.8 +R 3.195(uiltins. If)-.2 F F13.195 E F0 .695 +(is supplied, only disabled b)3.195 F .695(uiltins are printed.)-.2 F +(If)5.695 E F13.195 E F0 .695(is supplied, the)3.195 F .262 +(list printed includes all b)144 484.8 R .261 +(uiltins, with an indication of whether or not each is enabled.)-.2 F +(If)5.261 E F12.761 E F0 .261(is sup-)2.761 F .268 +(plied, the output is restricted to the POSIX)144 496.8 R F2(special) +2.768 E F0 -.2(bu)2.768 G 2.768(iltins. If).2 F .269 +(no options are supplied and a)2.768 F F2(name)2.769 E F0 .285 +(is not a shell b)144 508.8 R(uiltin,)-.2 E F1(enable)2.784 E F0 .284 +(will attempt to load)2.784 F F2(name)2.784 E F0 .284 +(from a shared object named)2.784 F F2(name)2.784 E F0 2.784(,a)C 2.784 +(si)-2.784 G 2.784(ft)-2.784 G(he)-2.784 E 1.41(command were)144 520.8 R +F4 1.41(enable \255f)3.91 F F2 1.41(name name)3.91 F F0 6.41(.T)3.91 G +1.41(he return v)-6.41 F 1.41(alue is 0 unless a)-.25 F F2(name)4.27 E +F0 1.41(is not a shell)4.09 F -.2(bu)144 532.8 S +(iltin or there is an error loading a ne).2 E 2.5(wb)-.25 G +(uiltin from a shared object.)-2.7 E F1 -2.3 -.15(ev a)108 549.6 T(l).15 +E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(The)144 561.6 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 .478(and e)144 573.6 R -.15(xe)-.15 G +.478(cuted by the shell, and its e).15 F .478 +(xit status is returned as the v)-.15 F .479(alue of)-.25 F F1 -2.3 -.15 +(ev a)2.979 H(l).15 E F0 5.479(.I)C 2.979(ft)-5.479 G .479(here are no) +-2.979 F F2(ar)3.309 E(gs)-.37 E F0(,).27 E(or only null ar)144 585.6 Q +(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1 +(exec)108 602.4 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 +(name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments) +-.37 E F0(]])A(If)144 614.4 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 626.4 R .176 +(guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G +(he)-2.676 E F12.676 E F0 .176 +(option is supplied, the shell places a dash at the be)2.676 F .177 +(ginning of)-.15 F .48(the zeroth ar)144 638.4 R .48(gument passed to) +-.18 F F2(command)3.18 E F0 5.48(.T).77 G .48(his is what)-5.48 F F2(lo) +3.07 E(gin)-.1 E F0 .48(\(1\) does.).24 F(The)5.48 E F12.98 E F0 +.48(option causes)2.98 F F2(com-)3.18 E(mand)144 650.4 Q F0 .638 +(to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 +(vironment. If)-.4 F F13.138 E F0 .638 +(is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the) +3.319 F 1.078(zeroth ar)144 662.4 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 674.4 Q .876 -.15(ve s)-.25 H .576(hell e).15 F +.576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577 +(shell option is enabled.)3.077 F .577(In that case, it returns f)5.577 +F(ail-)-.1 E 3.32(ure. An)144 686.4 R(interacti)3.32 E 1.12 -.15(ve s) +-.25 H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1 +F -.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82 +(xits uncondi-)-.15 F .287(tionally if)144 698.4 R F1(exec)2.787 E F0 +-.1(fa)2.787 G 2.787(ils. If).1 F F2(command)2.987 E F0 .287 +(is not speci\214ed, an)3.557 F 2.788(yr)-.15 G .288(edirections tak) +-2.788 F 2.788(ee)-.1 G -.25(ff)-2.788 G .288(ect in the current shell,) +.25 F(and the return status is 0.)144 710.4 Q +(If there is a redirection error)5 E 2.5(,t)-.4 G +(he return status is 1.)-2.5 E(GNU Bash 5.2)72 768 Q(2022 September 19) +135.955 E(66)185.115 E 0 Cg EP +%%Page: 67 67 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(exec)108 84 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E/F2 10 -/Times-Italic@0 SF(name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E -F2(ar)A(guments)-.37 E F0(]])A(If)144 96 Q F2(command)3.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 108 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 -2.676 E F0 .176 -(option is supplied, the shell places a dash at the be)2.676 F .176 -(ginning of)-.15 F .48(the zeroth ar)144 120 R .48(gument passed to)-.18 -F F2(command)3.18 E F0 5.48(.T).77 G .48(his is what)-5.48 F F2(lo)3.07 -E(gin)-.1 E F0 .48(\(1\) does.).24 F(The)5.48 E F12.98 E F0 .48 -(option causes)2.98 F F2(com-)3.18 E(mand)144 132 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 F13.138 E F0 .638 -(is supplied, the shell passes)3.138 F F2(name)3.498 E F0 .638(as the) -3.318 F 1.077(zeroth ar)144 144 R 1.077(gument to the e)-.18 F -.15(xe) --.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 1.077 -(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a).15 F -(non-interacti)144 156 Q .877 -.15(ve s)-.25 H .577(hell e).15 F .577 -(xits, unless the)-.15 F F1(execfail)3.077 E F0 .577 -(shell option is enabled.)3.077 F .576(In that case, it returns f)5.577 -F(ail-)-.1 E 3.32(ure. An)144 168 R(interacti)3.32 E 1.12 -.15(ve s)-.25 -H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1 F --.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82 -(xits uncondi-)-.15 F .288(tionally if)144 180 R F1(exec)2.788 E F0 -.1 -(fa)2.788 G 2.788(ils. If).1 F F2(command)2.988 E F0 .288 -(is not speci\214ed, an)3.558 F 2.787(yr)-.15 G .287(edirections tak) --2.787 F 2.787(ee)-.1 G -.25(ff)-2.787 G .287(ect in the current shell,) -.25 F(and the return status is 0.)144 192 Q -(If there is a redirection error)5 E 2.5(,t)-.4 G -(he return status is 1.)-2.5 E F1(exit)108 208.8 Q F0([)2.5 E F2(n)A F0 -(])A .095(Cause the shell to e)144 208.8 R .095(xit with a status of) --.15 F F2(n)2.595 E F0 5.095(.I)C(f)-5.095 E F2(n)2.955 E F0 .096 -(is omitted, the e)2.835 F .096(xit status is that of the last command) --.15 F -.15(exe)144 220.8 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 -/Times-Bold@0 SF(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15 G -(cuted before the shell terminates.).15 E F1(export)108 237.6 Q F0([)2.5 -E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E -F0(]] ...)A F1(export \255p)108 249.6 Q F0 .257(The supplied)144 261.6 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.626(commands. If)144 273.6 R(the)2.626 E F1 -2.626 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the) -.15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no) -5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .127 -(n, or if the).15 F F1144 285.6 Q F0 .048 -(option is supplied, a list of names of all e)2.548 F .048(xported v) --.15 F .048(ariables is printed.)-.25 F(The)5.048 E F12.547 E F0 -.047(option causes the)2.547 F -.15(ex)144 297.6 S 1.446 -(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 +SF(exit)108 84 Q F0([)2.5 E/F2 10/Times-Italic@0 SF(n)A F0(])A .096 +(Cause the shell to e)144 84 R .096(xit with a status of)-.15 F F2(n) +2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095(is omitted, the e) +2.835 F .095(xit status is that of the last command)-.15 F -.15(exe)144 +96 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 112.8 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 124.8 Q F0 +.256(The supplied)144 136.8 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 148.8 R(the)2.627 E F12.627 E F0 .127 +(option is gi)2.627 F -.15(ve)-.25 G .127(n, the).15 F F2(names)2.987 E +F0 .127(refer to functions.)2.897 F .127(If no)5.127 F F2(names)2.987 E +F0 .127(are gi)2.897 F -.15(ve)-.25 G .126(n, or if the).15 F F1 +144 160.8 Q F0 .048(option is supplied, a list of names of all e)2.547 F +.048(xported v)-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F1 +2.548 E F0 .048(option causes the)2.548 F -.15(ex)144 172.8 S +1.447(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 (rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G 1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d) --.37 E F0 3.947(,t)C(he)-3.947 E -.25(va)144 309.6 S .742(lue of the v) -.25 F .742(ariable is set to)-.25 F F2(wor)3.242 E(d)-.37 E F0(.)A F1 -(export)5.742 E F0 .742(returns an e)3.242 F .741 -(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .741(lid option is) -.25 F .031(encountered, one of the)144 321.6 R F2(names)2.531 E F0 .031 -(is not a v)2.531 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 -F F12.532 E F0 .032(is supplied with a)2.532 F F2(name)2.892 E F0 -(that)2.712 E(is not a function.)144 333.6 Q F1(fc)108 350.4 Q F0([)2.5 +-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 184.8 S .741(lue of the v) +.25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1 +(export)5.741 E F0 .742(returns an e)3.242 F .742 +(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is) +.25 F .032(encountered, one of the)144 196.8 R F2(names)2.532 E F0 .032 +(is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 +F F12.531 E F0 .031(is supplied with a)2.531 F F2(name)2.891 E F0 +(that)2.711 E(is not a function.)144 208.8 Q F1(fc)108 225.6 Q F0([)2.5 E F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 <8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108 -362.4 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 -(cmd)-2.5 E F0(])A .432 -(The \214rst form selects a range of commands from)144 374.4 R F2<8c72> -4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .431 -(from the history list and displays or)3.612 F .141(edits and re-e)144 -386.4 R -.15(xe)-.15 G .141(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) +237.6 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 +(cmd)-2.5 E F0(])A .431 +(The \214rst form selects a range of commands from)144 249.6 R F2<8c72> +4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432 +(from the history list and displays or)3.612 F .142(edits and re-e)144 +261.6 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) .45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141 (may be speci\214ed as a string \(to locate the last command)3.321 F(be) -144 398.4 Q .311(ginning with that string\) or as a number \(an inde) --.15 F 2.811(xi)-.15 G .31(nto the history list, where a ne)-2.811 F --.05(ga)-.15 G(ti).05 E .61 -.15(ve n)-.25 H(umber).15 E .071 -(is used as an of)144 410.4 R .071 +144 273.6 Q .31(ginning with that string\) or as a number \(an inde)-.15 +F 2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05 +(ga)-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .071 +(is used as an of)144 285.6 R .071 (fset from the current command number\).)-.25 F .071(When listing, a) 5.071 F F2<8c72>2.571 E(st)-.1 E F0(or)2.571 E F2(last)2.571 E F0 .071 (of 0 is equi)2.571 F -.25(va)-.25 G(-).25 E .653 -(lent to \2551 and \2550 is equi)144 422.4 R -.25(va)-.25 G .653 +(lent to \2551 and \2550 is equi)144 297.6 R -.25(va)-.25 G .653 (lent to the current command \(usually the).25 F F1(fc)3.153 E F0 .653 -(command\); otherwise 0 is)3.153 F(equi)144 434.4 Q -.25(va)-.25 G .242 +(command\); otherwise 0 is)3.153 F(equi)144 309.6 Q -.25(va)-.25 G .242 (lent to \2551 and \2550 is in).25 F -.25(va)-.4 G 2.742(lid. If).25 F F2(last)2.832 E F0 .242 (is not speci\214ed, it is set to the current command for list-)3.422 F -.093(ing \(so that)144 446.4 R/F4 10/Courier@0 SF .093(fc \255l \25510) -2.593 F F0 .093(prints the last 10 commands\) and to)2.593 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 .092(is not speci-)3.272 F(\214ed, it is set to the pre)144 458.4 Q -(vious command for editing and \25516 for listing.)-.25 E(The)144 482.4 +.092(ing \(so that)144 321.6 R/F4 10/Courier@0 SF .092(fc \255l \25510) +2.592 F F0 .093(prints the last 10 commands\) and to)2.592 F F2<8c72> +4.503 E(st)-.1 E F0 2.593(otherwise. If)3.273 F F2<8c72>4.503 E(st)-.1 E +F0 .093(is not speci-)3.273 F(\214ed, it is set to the pre)144 333.6 Q +(vious command for editing and \25516 for listing.)-.25 E(The)144 357.6 Q F12.522 E F0 .022 (option suppresses the command numbers when listing.)2.522 F(The)5.022 E F12.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022 -(rses the order of).15 F .438(the commands.)144 494.4 R .438(If the) +(rses the order of).15 F .438(the commands.)144 369.6 R .438(If the) 5.438 F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 (n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E -.334(the editor gi)144 506.4 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 +.335(the editor gi)144 381.6 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E +F2(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835 (do).1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 -F(If)5.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 518.4 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 .005(ther v)144 530.4 R .005 +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 393.6 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 .006(ther v)144 405.6 R .006 (ariable is set,)-.25 F F2(vi)4.171 E F0 .005(is used.)4.171 F .005 (When editing is complete, the edited commands are echoed and e)5.005 F -(x-)-.15 E(ecuted.)144 542.4 Q .789(In the second form,)144 566.4 R F2 +(x-)-.15 E(ecuted.)144 417.6 Q .788(In the second form,)144 441.6 R F2 (command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 (cuted after each instance of).15 F F2(pat)3.288 E F0 .788 -(is replaced by)3.288 F F2 -.37(re)3.288 G(p).37 E F0(.)A F2(Com-)5.788 -E(mand)144 578.4 Q F0 .171(is interpreted the same as)2.671 F F2<8c72> -2.671 E(st)-.1 E F0(abo)2.671 E -.15(ve)-.15 G 5.171(.A).15 G .172 -(useful alias to use with this is)-2.499 F F4 .172(r='fc \255s')2.672 F -F0 2.672(,s)C 2.672(ot)-2.672 G(hat)-2.672 E(typing)144 590.4 Q F4 7.166 -(rc)3.666 G(c)-7.166 E F0 1.166(runs the last command be)3.666 F 1.166 -(ginning with)-.15 F F4(cc)3.666 E F0 1.165(and typing)3.666 F F4(r) -3.665 E F0(re-e)3.665 E -.15(xe)-.15 G 1.165(cutes the last com-).15 F -(mand.)144 602.4 Q .142(If the \214rst form is used, the return v)144 -626.4 R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 +(is replaced by)3.288 F F2 -.37(re)3.289 G(p).37 E F0(.)A F2(Com-)5.789 +E(mand)144 453.6 Q F0 .172(is interpreted the same as)2.672 F F2<8c72> +2.672 E(st)-.1 E F0(abo)2.672 E -.15(ve)-.15 G 5.172(.A).15 G .171 +(useful alias to use with this is)-2.5 F F4 .171(r='fc \255s')2.671 F F0 +2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E(typing)144 465.6 Q F4 7.165 +(rc)3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166 +(ginning with)-.15 F F4(cc)3.666 E F0 1.166(and typing)3.666 F F4(r) +3.666 E F0(re-e)3.666 E -.15(xe)-.15 G 1.166(cutes the last com-).15 F +(mand.)144 477.6 Q .142(If the \214rst form is used, the return v)144 +501.6 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 638.4 +E F2(last)2.732 E F0 .454(specify history lines out of range.)144 513.6 R .454(If the)5.454 F F12.954 E F0 .454 -(option is supplied, the return v)2.954 F .454(alue is the v)-.25 F .454 -(alue of the)-.25 F .787(last command e)144 650.4 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 525.6 R -.15(xe)-.15 G .788 +(cuted or f).15 F .787 (ailure if an error occurs with the temporary \214le of commands.)-.1 F -.788(If the)5.788 F 1.136 +.787(If the)5.787 F 1.135 (second form is used, the return status is that of the command re-e)144 -662.4 R -.15(xe)-.15 G 1.135(cuted, unless).15 F F2(cmd)3.835 E F0 1.135 -(does not)4.405 F(specify a v)144 674.4 Q +537.6 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136 +(does not)4.406 F(specify a v)144 549.6 Q (alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E -(ailure.)-.1 E F1(fg)108 691.2 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume) -144 703.2 Q F2(jobspec)5.653 E F0 1.413(in the fore)4.223 F 1.413 +(ailure.)-.1 E F1(fg)108 566.4 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume) +144 578.4 Q F2(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413 (ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413 (he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0 -1.414(is not present, the)4.223 F(shell')144 715.2 Q 3.117(sn)-.55 G -.617(otion of the)-3.117 F F2(curr)3.117 E .617(ent job)-.37 F F0 .617 -(is used.)3.117 F .617(The return v)5.617 F .616 -(alue is that of the command placed into the)-.25 F(fore)144 727.2 Q -.362(ground, or f)-.15 F .362 -(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .363 -(hen run with job control enabled, if)-2.862 F(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(64)190.395 E 0 Cg EP -%%Page: 65 65 +1.413(is not present, the)4.223 F(shell')144 590.4 Q 3.116(sn)-.55 G +.616(otion of the)-3.116 F F2(curr)3.116 E .616(ent job)-.37 F F0 .617 +(is used.)3.116 F .617(The return v)5.617 F .617 +(alue is that of the command placed into the)-.25 F(fore)144 602.4 Q +.363(ground, or f)-.15 F .363 +(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362 +(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 614.4 Q +F0(does not specify a v)2.81 E(alid job or)-.25 E F2(jobspec)4.24 E F0 +(speci\214es a job that w)2.81 E(as started without job control.)-.1 E +F1(getopts)108 631.2 Q F2(optstring name)2.5 E F0([)2.5 E F2(ar)A 2.5 +(g.)-.37 G(..)-2.5 E F0(])A F1(getopts)144 643.2 Q F0 .793 +(is used by shell procedures to parse positional parameters.)3.293 F F2 +(optstring)6.023 E F0 .793(contains the option)3.513 F .15 +(characters to be recognized; if a character is follo)144 655.2 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 667.2 Q .578 +(gument, which should be separated from it by white space.)-.18 F .579 +(The colon and question mark char)5.579 F(-)-.2 E .636 +(acters may not be used as option characters.)144 679.2 R .636 +(Each time it is in)5.636 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F1(getopts) +3.136 E F0 .636(places the ne)3.136 F .635(xt op-)-.15 F .029 +(tion in the shell v)144 691.2 R(ariable)-.25 E F2(name)2.889 E F0 2.529 +(,i).18 G(nitializing)-2.529 E F2(name)2.889 E F0 .029(if it does not e) +2.709 F .03(xist, and the inde)-.15 F 2.53(xo)-.15 G 2.53(ft)-2.53 G .03 +(he ne)-2.53 F .03(xt ar)-.15 F(gu-)-.18 E .066 +(ment to be processed into the v)144 703.2 R(ariable)-.25 E F3(OPTIND) +2.566 E/F5 9/Times-Roman@0 SF(.)A F3(OPTIND)4.566 E F0 .065 +(is initialized to 1 each time the shell or a)2.315 F .885 +(shell script is in)144 715.2 R -.2(vo)-.4 G -.1(ke).2 G 3.385(d. When) +.1 F .885(an option requires an ar)3.385 F(gument,)-.18 E F1(getopts) +3.385 E F0 .885(places that ar)3.385 F .885(gument into)-.18 F .567 +(the v)144 727.2 R(ariable)-.25 E F3(OPT)3.067 E(ARG)-.81 E F5(.)A F0 +.566(The shell does not reset)5.067 F F3(OPTIND)3.066 E F0 .566 +(automatically; it must be manually reset)2.816 F(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(67)185.115 E 0 Cg EP +%%Page: 68 68 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 -/Times-Italic@0 SF(jobspec)145.74 84 Q F0(does not specify a v)2.81 E -(alid job or)-.25 E F1(jobspec)4.24 E F0(speci\214es a job that w)2.81 E -(as started without job control.)-.1 E/F2 10/Times-Bold@0 SF(getopts)108 -100.8 Q F1(optstring name)2.5 E F0([)2.5 E F1(ar)A 2.5(g.)-.37 G(..)-2.5 -E F0(])A F2(getopts)144 112.8 Q F0 .793 -(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 124.8 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 136.8 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 .636 -(acters may not be used as option characters.)144 148.8 R .636 -(Each time it is in)5.636 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F2(getopts) -3.136 E F0 .636(places the ne)3.136 F .636(xt op-)-.15 F .03 -(tion in the shell v)144 160.8 R(ariable)-.25 E F1(name)2.89 E F0 2.53 -(,i).18 G(nitializing)-2.53 E F1(name)2.89 E F0 .029(if it does not e) -2.71 F .029(xist, and the inde)-.15 F 2.529(xo)-.15 G 2.529(ft)-2.529 G -.029(he ne)-2.529 F .029(xt ar)-.15 F(gu-)-.18 E .065 -(ment to be processed into the v)144 172.8 R(ariable)-.25 E/F3 9 -/Times-Bold@0 SF(OPTIND)2.565 E/F4 9/Times-Roman@0 SF(.)A F3(OPTIND) -4.565 E F0 .066(is initialized to 1 each time the shell or a)2.315 F -.885(shell script is in)144 184.8 R -.2(vo)-.4 G -.1(ke).2 G 3.385 -(d. When).1 F .885(an option requires an ar)3.385 F(gument,)-.18 E F2 -(getopts)3.385 E F0 .885(places that ar)3.385 F .885(gument into)-.18 F -.566(the v)144 196.8 R(ariable)-.25 E F3(OPT)3.066 E(ARG)-.81 E F4(.)A -F0 .566(The shell does not reset)5.066 F F3(OPTIND)3.066 E F0 .567 -(automatically; it must be manually reset)2.816 F .39 -(between multiple calls to)144 208.8 R F2(getopts)2.89 E F0 .39 -(within the same shell in)2.89 F -.2(vo)-.4 G .389(cation if a ne).2 F -2.889(ws)-.25 G .389(et of parameters is to)-2.889 F(be used.)144 220.8 -Q 2.043(When the end of options is encountered,)144 244.8 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 256.8 Q F0 -(is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G -(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0 -(is set to ?.)2.5 E F2(getopts)144 280.8 Q F0 .485 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .389 +(between multiple calls to)144 84 R/F1 10/Times-Bold@0 SF(getopts)2.889 +E F0 .389(within the same shell in)2.889 F -.2(vo)-.4 G .39 +(cation if a ne).2 F 2.89(ws)-.25 G .39(et of parameters is to)-2.89 F +(be used.)144 96 Q 2.044(When the end of options is encountered,)144 120 +R F1(getopts)4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F +2.043(alue greater than zero.)-.25 F/F2 9/Times-Bold@0 SF(OPTIND)144 132 +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/F3 10/Times-Italic@0 +SF(name)2.5 E F0(is set to ?.)2.5 E F1(getopts)144 156 Q F0 .485 (normally parses the positional parameters, b)2.985 F .485 -(ut if more ar)-.2 F .485(guments are supplied as)-.18 F F1(ar)3.315 E -(g)-.37 E F0 -.25(va)3.205 G(l-).25 E(ues,)144 292.8 Q F2(getopts)2.5 E -F0(parses those instead.)2.5 E F2(getopts)144 316.8 Q F0 .345 +(ut if more ar)-.2 F .485(guments are supplied as)-.18 F F3(ar)3.315 E +(g)-.37 E F0 -.25(va)3.205 G(l-).25 E(ues,)144 168 Q F1(getopts)2.5 E F0 +(parses those instead.)2.5 E F1(getopts)144 192 Q F0 .345 (can report errors in tw)2.845 F 2.845(ow)-.1 G 2.845(ays. If)-2.945 F -.345(the \214rst character of)2.845 F F1(optstring)3.075 E F0 .345 -(is a colon,)3.065 F F1(silent)3.185 E F0 .345(error re-)3.525 F 1.669 -(porting is used.)144 328.8 R 1.668 -(In normal operation, diagnostic messages are printed when in)6.669 F --.25(va)-.4 G 1.668(lid options or).25 F .393(missing option ar)144 -340.8 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 352.8 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 .667(If an in)144 376.8 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 -388.8 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 400.8 Q 1.242(If a required ar)144 -424.8 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.36 -436.8 Q F0(,).18 E F3(OPT)2.713 E(ARG)-.81 E F0 .213 -(is unset, and a diagnostic message is printed.)2.463 F(If)5.213 E F2 -(getopts)2.713 E F0 .213(is silent, then a colon \()2.713 F F2(:).833 E -F0(\)).833 E(is placed in)144 448.8 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 472.8 Q F0 .902 +.345(the \214rst character of)2.845 F F3(optstring)3.075 E F0 .345 +(is a colon,)3.065 F F3(silent)3.185 E F0 .345(error re-)3.525 F 1.668 +(porting is used.)144 204 R 1.668 +(In normal operation, diagnostic messages are printed when in)6.668 F +-.25(va)-.4 G 1.669(lid options or).25 F .394(missing option ar)144 216 +R .394(guments are encountered.)-.18 F .394(If the v)5.394 F(ariable) +-.25 E F2(OPTERR)2.894 E F0 .394(is set to 0, no error messages)2.644 F +(will be displayed, e)144 228 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 +G(he \214rst character of)-2.5 E F3(optstring)2.73 E F0(is not a colon.) +2.72 E .666(If an in)144 252 R -.25(va)-.4 G .666(lid option is seen,) +.25 F F1(getopts)3.166 E F0 .667(places ? into)3.167 F F3(name)3.527 E +F0 .667(and, if not silent, prints an error message)3.347 F .4 +(and unsets)144 264 R F2(OPT)2.9 E(ARG)-.81 E/F4 9/Times-Roman@0 SF(.)A +F0(If)4.899 E F1(getopts)2.899 E F0 .399 +(is silent, the option character found is placed in)2.899 F F2(OPT)2.899 +E(ARG)-.81 E F0 .399(and no)2.649 F(diagnostic message is printed.)144 +276 Q 1.241(If a required ar)144 300 R 1.241(gument is not found, and) +-.18 F F1(getopts)3.741 E F0 1.241(is not silent, a question mark \() +3.741 F F1(?).833 E F0 3.742(\)i).833 G 3.742(sp)-3.742 G 1.242 +(laced in)-3.742 F F3(name)144.36 312 Q F0(,).18 E F2(OPT)2.714 E(ARG) +-.81 E F0 .213(is unset, and a diagnostic message is printed.)2.463 F +(If)5.213 E F1(getopts)2.713 E F0 .213(is silent, then a colon \()2.713 +F F1(:).833 E F0(\)).833 E(is placed in)144 324 Q F3(name)2.86 E F0(and) +2.68 E F2(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.) +2.25 E F1(getopts)144 348 Q F0 .902 (returns true if an option, speci\214ed or unspeci\214ed, is found.) -3.402 F .902(It returns f)5.902 F .901(alse if the end of)-.1 F -(options is encountered or an error occurs.)144 484.8 Q F2(hash)108 -501.6 Q F0([)2.5 E F2(\255lr)A F0 2.5(][)C F2-2.5 E F1(\214lename) -2.5 E F0 2.5(][)C F2(\255dt)-2.5 E F0 2.5(][)C F1(name)-2.5 E F0(])A -.858(Each time)144 513.6 R F2(hash)3.358 E F0 .858(is in)3.358 F -.2(vo) --.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F F1(name) +3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F +(options is encountered or an error occurs.)144 360 Q F1(hash)108 376.8 +Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E F3(\214lename)2.5 E +F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F3(name)-2.5 E F0(])A .858 +(Each time)144 388.8 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)-.4 +G -.1(ke).2 G .858(d, the full pathname of the command).1 F F3(name) 3.718 E F0 .858(is determined by searching)3.538 F .956 -(the directories in)144 525.6 R F2($P)3.456 E -.95(AT)-.74 G(H).95 E F0 +(the directories in)144 400.8 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 .956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956 -(viously-remembered pathname is discarded.)-.25 F .242(If the)144 537.6 -R F22.742 E F0 .243 -(option is supplied, no path search is performed, and)2.742 F F1 -(\214lename)4.653 E F0 .243(is used as the full \214lename)2.923 F .615 -(of the command.)144 549.6 R(The)5.615 E F23.115 E F0 .615 +(viously-remembered pathname is discarded.)-.25 F .243(If the)144 412.8 +R F12.743 E F0 .243 +(option is supplied, no path search is performed, and)2.743 F F3 +(\214lename)4.653 E F0 .242(is used as the full \214lename)2.923 F .615 +(of the command.)144 424.8 R(The)5.615 E F13.115 E F0 .615 (option causes the shell to for)3.115 F .615 -(get all remembered locations.)-.18 F(The)5.615 E F23.115 E F0 -(op-)3.115 E .293(tion causes the shell to for)144 561.6 R .293 -(get the remembered location of each)-.18 F F1(name)2.794 E F0 5.294(.I) -C 2.794(ft)-5.294 G(he)-2.794 E F22.794 E F0 .294 -(option is supplied,)2.794 F .028(the full pathname to which each)144 -573.6 R F1(name)2.528 E F0 .028(corresponds is printed.)2.528 F .028 -(If multiple)5.028 F F1(name)2.528 E F0(ar)2.528 E .028 -(guments are sup-)-.18 F .175(plied with)144 585.6 R F22.675 E F0 -2.675(,t)C(he)-2.675 E F1(name)2.675 E F0 .175 -(is printed before the hashed full pathname.)2.675 F(The)5.175 E F2 -2.676 E F0 .176(option causes output to)2.676 F .783 -(be displayed in a format that may be reused as input.)144 597.6 R .783 +(get all remembered locations.)-.18 F(The)5.615 E F13.115 E F0 +(op-)3.115 E .294(tion causes the shell to for)144 436.8 R .294 +(get the remembered location of each)-.18 F F3(name)2.793 E F0 5.293(.I) +C 2.793(ft)-5.293 G(he)-2.793 E F12.793 E F0 .293 +(option is supplied,)2.793 F .028(the full pathname to which each)144 +448.8 R F3(name)2.528 E F0 .028(corresponds is printed.)2.528 F .028 +(If multiple)5.028 F F3(name)2.528 E F0(ar)2.528 E .028 +(guments are sup-)-.18 F .176(plied with)144 460.8 R F12.676 E F0 +2.676(,t)C(he)-2.676 E F3(name)2.676 E F0 .175 +(is printed before the hashed full pathname.)2.676 F(The)5.175 E F1 +2.675 E F0 .175(option causes output to)2.675 F .783 +(be displayed in a format that may be reused as input.)144 472.8 R .783 (If no ar)5.783 F .783(guments are gi)-.18 F -.15(ve)-.25 G .783 -(n, or if only).15 F F23.283 E F0(is)3.283 E .807 -(supplied, information about remembered commands is printed.)144 609.6 R -.807(The return status is true unless a)5.807 F F1(name)144.36 621.6 Q +(n, or if only).15 F F13.283 E F0(is)3.283 E .807 +(supplied, information about remembered commands is printed.)144 484.8 R +.807(The return status is true unless a)5.807 F F3(name)144.36 496.8 Q F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.) -.25 E F2(help)108 638.4 Q F0([)2.5 E F2(\255dms)A F0 2.5(][)C F1 -(pattern)-2.5 E F0(])A .867(Display helpful information about b)144 -650.4 R .867(uiltin commands.)-.2 F(If)5.867 E F1(pattern)4.617 E F0 -.866(is speci\214ed,)3.607 F F2(help)3.366 E F0(gi)3.366 E -.15(ve)-.25 -G 3.366(sd).15 G(etailed)-3.366 E .223(help on all commands matching)144 -662.4 R F1(pattern)3.973 E F0 2.723(;o).24 G .223 -(therwise help for all the b)-2.723 F .224 -(uiltins and shell control struc-)-.2 F(tures is printed.)144 674.4 Q F2 -144 686.4 Q F0(Display a short description of each)180 686.4 Q F1 -(pattern)2.5 E F2144 698.4 Q F0(Display the description of each) -180 698.4 Q F1(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G -(ormat)-2.5 E F2144 710.4 Q F0 -(Display only a short usage synopsis for each)180 710.4 Q F1(pattern)2.5 -E F0(The return status is 0 unless no command matches)144 727.2 Q F1 -(pattern)3.75 E F0(.).24 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 -E(65)190.395 E 0 Cg EP -%%Page: 66 66 +.25 E F1(help)108 513.6 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F3 +(pattern)-2.5 E F0(])A .866(Display helpful information about b)144 +525.6 R .867(uiltin commands.)-.2 F(If)5.867 E F3(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 .224(help on all commands matching)144 +537.6 R F3(pattern)3.974 E F0 2.723(;o).24 G .223 +(therwise help for all the b)-2.723 F .223 +(uiltins and shell control struc-)-.2 F(tures is printed.)144 549.6 Q F1 +144 561.6 Q F0(Display a short description of each)180 561.6 Q F3 +(pattern)2.5 E F1144 573.6 Q F0(Display the description of each) +180 573.6 Q F3(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G +(ormat)-2.5 E F1144 585.6 Q F0 +(Display only a short usage synopsis for each)180 585.6 Q F3(pattern)2.5 +E F0(The return status is 0 unless no command matches)144 602.4 Q F3 +(pattern)3.75 E F0(.).24 E F1(history [)108 619.2 Q F3(n)A F1(])A +(history \255c)108 631.2 Q(history \255d)108 643.2 Q F3(of)2.5 E(fset) +-.18 E F1(history \255d)108 655.2 Q F3(start)2.5 E F0A F3(end)A F1 +(history \255anrw)108 667.2 Q F0([)2.5 E F3(\214lename)A F0(])A F1 +(history \255p)108 679.2 Q F3(ar)2.5 E(g)-.37 E F0([)2.5 E F3(ar)A 2.5 +(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 691.2 Q F3(ar)2.5 E(g) +-.37 E F0([)2.5 E F3(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 +703.2 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 715.2 R .38(An ar)5.38 F .38(gument of)-.18 +F F3(n)3.24 E F0 .38(lists only the last)3.12 F F3(n)3.24 E F0 2.88 +(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E F2(HISTTIMEFOR-) +2.88 E(MA)144 727.2 Q(T)-.855 E F0 1.491 +(is set and not null, it is used as a format string for)3.741 F F3 +(strftime)3.992 E F0 1.492(\(3\) to display the time stamp)B +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(68)185.115 E 0 Cg EP +%%Page: 69 69 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(history [)108 84 Q/F2 10/Times-Italic@0 SF(n)A F1(])A(history \255c) -108 96 Q(history \255d)108 108 Q F2(of)2.5 E(fset)-.18 E F1 -(history \255d)108 120 Q F2(start)2.5 E F0A F2(end)A F1 -(history \255anrw)108 132 Q F0([)2.5 E F2(\214lename)A F0(])A F1 -(history \255p)108 144 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5(g.) --.37 G(..)-2.5 E F0(])A F1(history \255s)108 156 Q F2(ar)2.5 E(g)-.37 E -F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 168 S .752 -(th no options, display the command history list with line numbers.).4 F -.752(Lines listed with a)5.752 F F1(*)3.251 E F0(ha)3.251 E -.15(ve)-.2 -G .38(been modi\214ed.)144 180 R .38(An ar)5.38 F .38(gument of)-.18 F -F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 -(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9 -/Times-Bold@0 SF(HISTTIMEFOR-)2.881 E(MA)144 192 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 204 R 6.019(.N)-.65 G -3.519(oi)-6.019 G(nterv)-3.519 E 1.019 -(ening blank is printed between the formatted)-.15 F .176 -(time stamp and the history line.)144 216 R(If)5.176 E F2(\214lename) -2.676 E F0 .176 -(is supplied, it is used as the name of the history \214le; if)2.676 F -(not, the v)144 228 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)2.25 -E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 240 Q F0 -(Clear the history list by deleting all the entries.)180 240 Q F1 -144 252 Q F2(of)2.5 E(fset)-.18 E F0 .389 -(Delete the history entry at position)180 264 R F2(of)2.889 E(fset)-.18 -E F0 5.389(.I)C(f)-5.389 E F2(of)2.889 E(fset)-.18 E F0 .389(is ne)2.889 -F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 2.89(,i).15 G 2.89(ti)-2.89 G -2.89(si)-2.89 G .39(nterpreted as relati)-2.89 F -.15(ve)-.25 G .599 -(to one greater than the last history position, so ne)180 276 R -.05(ga) --.15 G(ti).05 E .899 -.15(ve i)-.25 H .598 -(ndices count back from the end).15 F(of the history)180 288 Q 2.5(,a) +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .379 +(associated with each displayed history entry)144 84 R 5.379(.N)-.65 G +2.878(oi)-5.379 G(nterv)-2.878 E .378 +(ening blank is printed between the format-)-.15 F .814 +(ted time stamp and the history line.)144 96 R(If)5.814 E/F1 10 +/Times-Italic@0 SF(\214lename)3.314 E F0 .814 +(is supplied, it is used as the name of the history)3.314 F +(\214le; if not, the v)144 108 Q(alue of)-.25 E/F2 9/Times-Bold@0 SF +(HISTFILE)2.5 E F0(is used.)2.25 E(Options, if supplied, ha)5 E .3 -.15 +(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E/F3 10/Times-Bold@0 SF +144 120 Q F0(Clear the history list by deleting all the entries.) +180 120 Q F3144 132 Q F1(of)2.5 E(fset)-.18 E F0 .39 +(Delete the history entry at position)180 144 R F1(of)2.889 E(fset)-.18 +E F0 5.389(.I)C(f)-5.389 E F1(of)2.889 E(fset)-.18 E F0 .389(is ne)2.889 +F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 2.889(,i).15 G 2.889(ti)-2.889 +G 2.889(si)-2.889 G .389(nterpreted as relati)-2.889 F -.15(ve)-.25 G +.598(to one greater than the last history position, so ne)180 156 R -.05 +(ga)-.15 G(ti).05 E .899 -.15(ve i)-.25 H .599 +(ndices count back from the end).15 F(of the history)180 168 Q 2.5(,a) -.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G -(efers to the current)-2.5 E F1(history -d)2.5 E F0(command.)2.5 E F1 -144 300 Q F2(start)2.5 E F0A F2(end)A F0 .757 -(Delete the history entries between positions)180 312 R F2(start)3.257 E -F0(and)3.258 E F2(end)3.258 E F0 3.258(,i)C(nclusi)-3.258 E -.15(ve)-.25 -G 5.758(.P).15 G(ositi)-5.758 E 1.058 -.15(ve a)-.25 H .758(nd ne).15 F --.05(ga)-.15 G(-).05 E(ti)180 324 Q .3 -.15(ve v)-.25 H(alues for)-.1 E -F2(start)2.5 E F0(and)2.5 E F2(end)2.5 E F0 -(are interpreted as described abo)2.5 E -.15(ve)-.15 G(.).15 E F1 -144 336 Q F0 .565(Append the `)180 336 R(`ne)-.74 E(w')-.25 E 3.065('h) --.74 G .564(istory lines to the history \214le.)-3.065 F .564 -(These are history lines entered since)5.564 F(the be)180 348 Q -(ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E -(ut not already appended to the history \214le.)-.2 E F1144 360 Q +(efers to the current)-2.5 E F3(history -d)2.5 E F0(command.)2.5 E F3 +144 180 Q F1(start)2.5 E F0A F1(end)A F0 1.25 +(Delete the range of history entries between positions)180 192 R F1 +(start)3.75 E F0(and)3.75 E F1(end)3.75 E F0 3.75(,i)C(nclusi)-3.75 E +-.15(ve)-.25 G 6.25(.P).15 G(ositi)-6.25 E -.15(ve)-.25 G(and ne)180 204 +Q -.05(ga)-.15 G(ti).05 E .3 -.15(ve v)-.25 H(alues for)-.1 E F1(start) +2.5 E F0(and)2.5 E F1(end)2.5 E F0(are interpreted as described abo)2.5 +E -.15(ve)-.15 G(.).15 E F3144 216 Q F0 .564(Append the `)180 216 +R(`ne)-.74 E(w')-.25 E 3.064('h)-.74 G .564 +(istory lines to the history \214le.)-3.064 F .565 +(These are history lines entered since)5.564 F(the be)180 228 Q +(ginning of the current)-.15 E F3(bash)2.5 E F0(session, b)2.5 E +(ut not already appended to the history \214le.)-.2 E F3144 240 Q F0 .854(Read the history lines not already read from the history \214le\ - into the current history list.)180 360 R .773 -(These are lines appended to the history \214le since the be)180 372 R -.772(ginning of the current)-.15 F F1(bash)3.272 E F0(ses-)3.272 E -(sion.)180 384 Q F1144 396 Q F0(Read the contents of the history \ -\214le and append them to the current history list.)180 396 Q F1 -144 408 Q F0(Write the current history list to the history \214le, o)180 -408 Q -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G -(ontents.)-2.5 E F1144 420 Q F0 .625 -(Perform history substitution on the follo)180 420 R(wing)-.25 E F2(ar) -3.125 E(gs)-.37 E F0 .626(and display the result on the standard)3.125 F -2.975(output. Does)180 432 R .475 -(not store the results in the history list.)2.975 F(Each)5.475 E F2(ar) + into the current history list.)180 240 R .772 +(These are lines appended to the history \214le since the be)180 252 R +.773(ginning of the current)-.15 F F3(bash)3.273 E F0(ses-)3.273 E +(sion.)180 264 Q F3144 276 Q F0(Read the contents of the history \ +\214le and append them to the current history list.)180 276 Q F3 +144 288 Q F0(Write the current history list to the history \214le, o)180 +288 Q -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G +(ontents.)-2.5 E F3144 300 Q F0 .626 +(Perform history substitution on the follo)180 300 R(wing)-.25 E F1(ar) +3.125 E(gs)-.37 E F0 .625(and display the result on the standard)3.125 F +2.975(output. Does)180 312 R .475 +(not store the results in the history list.)2.975 F(Each)5.475 E F1(ar) 2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F -(normal history e)180 444 Q(xpansion.)-.15 E F1144 456 Q F0 .362 -(Store the)180 456 R F2(ar)3.192 E(gs)-.37 E F0 .363 -(in the history list as a single entry)3.132 F 5.363(.T)-.65 G .363 -(he last command in the history list is)-5.363 F(remo)180 468 Q -.15(ve) --.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 -(are added.)2.77 E .146(If the)144 484.8 R F3(HISTTIMEFORMA)2.645 E(T) +(normal history e)180 324 Q(xpansion.)-.15 E F3144 336 Q F0 .363 +(Store the)180 336 R F1(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 348 Q -.15(ve) +-.15 G 2.5(db).15 G(efore the)-2.5 E F1(ar)2.83 E(gs)-.37 E F0 +(are added.)2.77 E .145(If the)144 364.8 R F2(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 496.8 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 508.8 R .956 -(ginning with the history comment character follo)-.15 F .955 -(wed immediately by a digit)-.25 F .832 -(are interpreted as timestamps for the follo)144 520.8 R .832 -(wing history entry)-.25 F 5.833(.T)-.65 G .833(he return v)-5.833 F -.833(alue is 0 unless an in-)-.25 F -.25(va)144 532.8 S .168(lid option\ +.25 F .669(entry is written to the history \214le, mark)144 376.8 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 388.8 R .956 +(ginning with the history comment character follo)-.15 F .956 +(wed immediately by a digit)-.25 F .833 +(are interpreted as timestamps for the follo)144 400.8 R .833 +(wing history entry)-.25 F 5.832(.T)-.65 G .832(he return v)-5.832 F +.832(alue is 0 unless an in-)-.25 F -.25(va)144 412.8 S .168(lid option\ is encountered, an error occurs while reading or writing the history \ -\214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)2.668 E(f-)-.18 E(set) -144 544.8 Q F0(is supplied as an ar)2.5 E(gument to)-.18 E F12.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 F12.5 E F0 -.1 -(fa)2.5 G(ils.).1 E F1(jobs)108 561.6 Q F0([)2.5 E F1(\255lnprs)A F0 2.5 -(][)C F2(jobspec)A F0(... ])2.5 E F1(jobs \255x)108 573.6 Q F2(command) -2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 E F0(... ])2.5 E -(The \214rst form lists the acti)144 585.6 Q .3 -.15(ve j)-.25 H 2.5 -(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 597.6 Q F0 -(List process IDs in addition to the normal information.)180 597.6 Q F1 -144 609.6 Q F0 .193(Display information only about jobs that ha) -180 609.6 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 -F .194(as last noti-)-.1 F(\214ed of their status.)180 621.6 Q F1 -144 633.6 Q F0(List only the process ID of the job')180 633.6 Q 2.5(sp) --.55 G(rocess group leader)-2.5 E(.)-.55 E F1144 645.6 Q F0 -(Display only running jobs.)180 645.6 Q F1144 657.6 Q F0 -(Display only stopped jobs.)180 657.6 Q(If)144 674.4 Q F2(jobspec)4.554 +\214le, an in).25 F -.25(va)-.4 G(lid).25 E F1(of)2.669 E(f-)-.18 E(set) +144 424.8 Q F0 .341(or range is supplied as an ar)2.841 F .341 +(gument to)-.18 F F32.841 E F0 2.841(,o)C 2.84(rt)-2.841 G .34 +(he history e)-2.84 F .34(xpansion supplied as an ar)-.15 F .34 +(gument to)-.18 F F3144 436.8 Q F0 -.1(fa)2.5 G(ils.).1 E F3(jobs) +108 453.6 Q F0([)2.5 E F3(\255lnprs)A F0 2.5(][)C F1(jobspec)A F0(... ]) +2.5 E F3(jobs \255x)108 465.6 Q F1(command)2.5 E F0([)2.5 E F1(ar)2.5 E +(gs)-.37 E F0(... ])2.5 E(The \214rst form lists the acti)144 477.6 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 F3144 489.6 Q F0 +(List process IDs in addition to the normal information.)180 489.6 Q F3 +144 501.6 Q F0 .193(Display information only about jobs that ha) +180 501.6 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 +F .194(as last noti-)-.1 F(\214ed of their status.)180 513.6 Q F3 +144 525.6 Q F0(List only the process ID of the job')180 525.6 Q 2.5(sp) +-.55 G(rocess group leader)-2.5 E(.)-.55 E F3144 537.6 Q F0 +(Display only running jobs.)180 537.6 Q F3144 549.6 Q F0 +(Display only stopped jobs.)180 549.6 Q(If)144 566.4 Q F1(jobspec)4.554 E F0 .314(is gi)3.124 F -.15(ve)-.25 G .314 (n, output is restricted to information about that job).15 F 5.313(.T) --.4 G .313(he return status is 0 unless)-5.313 F(an in)144 686.4 Q -.25 +-.4 G .313(he return status is 0 unless)-5.313 F(an in)144 578.4 Q -.25 (va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25 -E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 703.2 R F1 -2.894 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0 -.394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in) -3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .395 -(with the corre-)3.164 F(sponding process group ID, and e)144 715.2 Q --.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar) +E F1(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 595.2 R F3 +2.894 E F0 .394(option is supplied,)2.894 F F3(jobs)2.894 E F0 +.394(replaces an)2.894 F(y)-.15 E F1(jobspec)4.634 E F0 .394(found in) +3.204 F F1(command)3.094 E F0(or)3.664 E F1(ar)3.224 E(gs)-.37 E F0 .395 +(with the corre-)3.164 F(sponding process group ID, and e)144 607.2 Q +-.15(xe)-.15 G(cutes).15 E F1(command)2.7 E F0(passing it)3.27 E F1(ar) 2.83 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 -E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(66)190.395 E 0 Cg EP -%%Page: 67 67 +E F3(kill)108 624 Q F0([)2.5 E F3A F1(sigspec)2.5 E F0(|)2.5 E F3 +2.5 E F1(signum)2.5 E F0(|)2.5 E F32.5 E F1(sigspec)A F0 2.5 +(][)C F1(pid)-2.5 E F0(|)2.5 E F1(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F3 +(kill \255l)108 636 Q F0(|)A F3A F0([)2.5 E F1(sigspec)A F0(|)2.5 +E F1 -.2(ex)2.5 G(it_status).2 E F0(])A .017(Send the signal named by) +144 648 R F1(sigspec)2.857 E F0(or)2.827 E F1(signum)2.857 E F0 .017 +(to the processes named by)2.837 F F1(pid)3.767 E F0(or)3.287 E F1 +(jobspec)4.257 E F0(.).31 E F1(sigspec)5.357 E F0(is)2.827 E .318 +(either a case-insensiti)144 660 R .618 -.15(ve s)-.25 H .318 +(ignal name such as).15 F F2(SIGKILL)2.818 E F0 .319 +(\(with or without the)2.569 F F2(SIG)2.819 E F0 .319 +(pre\214x\) or a signal)2.569 F(number;)144 672 Q F1(signum)3.268 E F0 +.427(is a signal number)3.247 F 5.427(.I)-.55 G(f)-5.427 E F1(sigspec) +3.267 E F0 .427(is not present, then)3.237 F F2(SIGTERM)2.927 E F0 .427 +(is assumed.)2.677 F .427(An ar)5.427 F(-)-.2 E .313(gument of)144 684 R +F32.813 E F0 .314(lists the signal names.)2.814 F .314(If an)5.314 +F 2.814(ya)-.15 G -.18(rg)-2.814 G .314(uments are supplied when).18 F +F32.814 E F0 .314(is gi)2.814 F -.15(ve)-.25 G .314 +(n, the names of).15 F .12(the signals corresponding to the ar)144 696 R +.119(guments are listed, and the return status is 0.)-.18 F(The)5.119 E +F1 -.2(ex)2.619 G(it_status).2 E F0(ar)2.619 E(-)-.2 E .799(gument to) +144 708 R F33.299 E F0 .799 +(is a number specifying either a signal number or the e)3.299 F .8 +(xit status of a process termi-)-.15 F .963(nated by a signal.)144 720 R +(The)5.962 E F33.462 E F0 .962(option is equi)3.462 F -.25(va)-.25 +G .962(lent to).25 F F33.462 E F0(.)A F3(kill)5.962 E F0 .962 +(returns true if at least one signal w)3.462 F(as)-.1 E(GNU Bash 5.2)72 +768 Q(2022 September 19)135.955 E(69)185.115 E 0 Cg EP +%%Page: 70 70 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(kill)108 84 Q F0([)2.5 E F1A/F2 10/Times-Italic@0 SF(sigspec) -2.5 E F0(|)2.5 E F12.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2 -(sigspec)A F0 2.5(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5 -(].)C(..)-2.5 E F1(kill \255l)108 96 Q F0(|)A F1A F0([)2.5 E F2 -(sigspec)A F0(|)2.5 E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .017 -(Send the signal named by)144 108 R F2(sigspec)2.857 E F0(or)2.827 E F2 -(signum)2.857 E F0 .017(to the processes named by)2.837 F F2(pid)3.767 E -F0(or)3.287 E F2(jobspec)4.257 E F0(.).31 E F2(sigspec)5.357 E F0(is) -2.827 E .318(either a case-insensiti)144 120 R .618 -.15(ve s)-.25 H -.318(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.818 E F0 -.319(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319 -(pre\214x\) or a signal)2.569 F(number;)144 132 Q F2(signum)3.268 E F0 -.427(is a signal number)3.247 F 5.427(.I)-.55 G(f)-5.427 E F2(sigspec) -3.267 E F0 .427(is not present, then)3.237 F F3(SIGTERM)2.927 E F0 .427 -(is assumed.)2.677 F .427(An ar)5.427 F(-)-.2 E .313(gument of)144 144 R -F12.813 E F0 .314(lists the signal names.)2.814 F .314(If an)5.314 -F 2.814(ya)-.15 G -.18(rg)-2.814 G .314(uments are supplied when).18 F -F12.814 E F0 .314(is gi)2.814 F -.15(ve)-.25 G .314 -(n, the names of).15 F .12(the signals corresponding to the ar)144 156 R -.119(guments are listed, and the return status is 0.)-.18 F(The)5.119 E -F2 -.2(ex)2.619 G(it_status).2 E F0(ar)2.619 E(-)-.2 E .799(gument to) -144 168 R F13.299 E F0 .799 -(is a number specifying either a signal number or the e)3.299 F .8 -(xit status of a process termi-)-.15 F .963(nated by a signal.)144 180 R -(The)5.962 E F13.462 E F0 .962(option is equi)3.462 F -.25(va)-.25 -G .962(lent to).25 F F13.462 E F0(.)A F1(kill)5.962 E F0 .962 -(returns true if at least one signal w)3.462 F(as)-.1 E -(successfully sent, or f)144 192 Q(alse if an error occurs or an in)-.1 -E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 208.8 Q F2 -(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144 -220.8 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197 -(xpression to be e)-.15 F -.25(va)-.25 G .197(luated \(see).25 F F3 .197 -(ARITHMETIC EV)2.697 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo) -2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 232.8 Q F2(ar) -2.83 E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E F0 -(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 249.6 Q F0([)2.5 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(successfully sent, or f)144 84 Q(alse if an error occurs or an in)-.1 E +-.25(va)-.4 G(lid option is encountered.).25 E/F1 10/Times-Bold@0 SF +(let)108 100.8 Q/F2 10/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0([)2.5 E F2 +(ar)A(g)-.37 E F0(...])2.5 E(Each)144 112.8 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 9/Times-Bold@0 SF .197(ARITHMETIC EV) +2.697 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo)2.447 E -.15(ve) +-.15 G 2.697(\). If).15 F(the last)144 124.8 Q F2(ar)2.83 E(g)-.37 E F0 +-.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E F0 +(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 141.6 Q F0([)2.5 E F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(.. | \255 ])-2.5 E -.15(Fo)144 261.6 S 2.542(re).15 G .042(ach ar) +(.. | \255 ])-2.5 E -.15(Fo)144 153.6 S 2.542(re).15 G .042(ach ar) -2.542 F .042(gument, a local v)-.18 F .042(ariable named)-.25 F F2 (name)2.902 E F0 .042(is created, and assigned)2.722 F F2(value)2.832 E F0 5.042(.T).18 G(he)-5.042 E F2(option)2.542 E F0 .041(can be)2.541 F -(an)144 273.6 Q 3.152(yo)-.15 G 3.152(ft)-3.152 G .652 +(an)144 165.6 Q 3.152(yo)-.15 G 3.152(ft)-3.152 G .652 (he options accepted by)-3.152 F F1(declar)3.152 E(e)-.18 E F0 5.652(.W) C(hen)-5.652 E F1(local)3.152 E F0 .653 (is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 -285.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H +177.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H .422(isible scope restricted to that function and its children.).15 F (If)5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F .509 -(of shell options is made local to the function in which)144 297.6 R F1 +(of shell options is made local to the function in which)144 189.6 R F1 (local)3.01 E F0 .51(is in)3.01 F -.2(vo)-.4 G -.1(ke).2 G .51 -(d: shell options changed us-).1 F 1.171(ing the)144 309.6 R F1(set) +(d: shell options changed us-).1 F 1.171(ing the)144 201.6 R F1(set) 3.671 E F0 -.2(bu)3.671 G 1.171 (iltin inside the function are restored to their original v).2 F 1.17 -(alues when the function re-)-.25 F 3.38(turns. The)144 321.6 R .88 +(alues when the function re-)-.25 F 3.38(turns. The)144 213.6 R .88 (restore is ef)3.38 F .88(fected as if a series of)-.25 F F1(set)3.381 E F0 .881(commands were e)3.381 F -.15(xe)-.15 G .881 (cuted to restore the v).15 F(alues)-.25 E .788 -(that were in place before the function.)144 333.6 R -.4(Wi)5.788 G .788 +(that were in place before the function.)144 225.6 R -.4(Wi)5.788 G .788 (th no operands,).4 F F1(local)3.288 E F0 .787(writes a list of local v) -3.288 F .787(ariables to)-.25 F .654(the standard output.)144 345.6 R +3.288 F .787(ariables to)-.25 F .654(the standard output.)144 237.6 R .654(It is an error to use)5.654 F F1(local)3.154 E F0 .654 (when not within a function.)3.154 F .655(The return status is 0)5.654 F -(unless)144 357.6 Q F1(local)2.5 E F0(is used outside a function, an in) +(unless)144 249.6 Q F1(local)2.5 E F0(is used outside a function, an in) 2.5 E -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or)2.68 E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout)108 -374.4 Q F0(Exit a login shell.)144 374.4 Q F1(map\214le)108 391.2 Q F0 +266.4 Q F0(Exit a login shell.)144 266.4 Q F1(map\214le)108 283.2 Q F0 ([)2.5 E F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count) 2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1 -2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1 -2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E -(ay)-.15 E F0(])A F1 -.18(re)108 403.2 S(adarray).18 E F0([)2.5 E F1 +(ay)-.15 E F0(])A F1 -.18(re)108 295.2 S(adarray).18 E F0([)2.5 E F1 A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count)2.5 E F0 2.5 (][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1-2.5 E F2 (count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1-2.5 E F2 (fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][) C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0 -(])A .159(Read lines from the standard input into the inde)144 415.2 R +(])A .159(Read lines from the standard input into the inde)144 307.2 R -.15(xe)-.15 G 2.659(da).15 G .159(rray v)-2.659 F(ariable)-.25 E F2 (arr)2.989 E(ay)-.15 E F0 2.659(,o).32 G 2.658(rf)-2.659 G .158 -(rom \214le descriptor)-2.658 F F2(fd)4.628 E F0 1.248(if the)144 427.2 +(rom \214le descriptor)-2.658 F F2(fd)4.628 E F0 1.248(if the)144 319.2 R F13.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 439.2 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 451.2 Q F0 .911 -(The \214rst character of)180 451.2 R F2(delim)3.411 E F0 .911 +-6.249 F(ha)144 331.2 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 343.2 Q F0 .911 +(The \214rst character of)180 343.2 R F2(delim)3.411 E F0 .911 (is used to terminate each input line, rather than ne)3.411 F 3.41 -(wline. If)-.25 F F2(delim)180 463.2 Q F0(is the empty string,)2.5 E F1 +(wline. If)-.25 F F2(delim)180 355.2 Q F0(is the empty string,)2.5 E F1 (map\214le)2.5 E F0(will terminate a line when it reads a NUL character) -2.5 E(.)-.55 E F1144 475.2 Q F0(Cop)180 475.2 Q 2.5(ya)-.1 G 2.5 +2.5 E(.)-.55 E F1144 367.2 Q F0(Cop)180 367.2 Q 2.5(ya)-.1 G 2.5 (tm)-2.5 G(ost)-2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count) -2.5 E F0(is 0, all lines are copied.)2.5 E F1144 487.2 Q F0(Be)180 -487.2 Q(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 +2.5 E F0(is 0, all lines are copied.)2.5 E F1144 379.2 Q F0(Be)180 +379.2 Q(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 E(x)-.15 E F2(origin)2.73 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E -2.5(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 499.2 Q F0 -(Discard the \214rst)180 499.2 Q F2(count)2.5 E F0(lines read.)2.5 E F1 -144 511.2 Q F0(Remo)180 511.2 Q .3 -.15(ve a t)-.15 H(railing).15 +2.5(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 391.2 Q F0 +(Discard the \214rst)180 391.2 Q F2(count)2.5 E F0(lines read.)2.5 E F1 +144 403.2 Q F0(Remo)180 403.2 Q .3 -.15(ve a t)-.15 H(railing).15 E F2(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E -(wline\) from each line read.)-.25 E F1144 523.2 Q F0 -(Read lines from \214le descriptor)180 523.2 Q F2(fd)2.5 E F0 -(instead of the standard input.)2.5 E F1144 535.2 Q F0(Ev)180 -535.2 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2 +(wline\) from each line read.)-.25 E F1144 415.2 Q F0 +(Read lines from \214le descriptor)180 415.2 Q F2(fd)2.5 E F0 +(instead of the standard input.)2.5 E F1144 427.2 Q F0(Ev)180 +427.2 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2 (quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F12.5 E F0 -(option speci\214es)2.5 E F2(quantum)2.75 E F0(.).32 E F1144 547.2 -Q F0(Specify the number of lines read between each call to)180 547.2 Q -F2(callbac)2.7 E(k)-.2 E F0(.).67 E(If)144 564 Q F12.967 E F0 .467 +(option speci\214es)2.5 E F2(quantum)2.75 E F0(.).32 E F1144 439.2 +Q F0(Specify the number of lines read between each call to)180 439.2 Q +F2(callbac)2.7 E(k)-.2 E F0(.).67 E(If)144 456 Q F12.967 E F0 .467 (is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 (he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 (callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 -(luated, it is sup-).25 F .262(plied the inde)144 576 R 2.762(xo)-.15 G +(luated, it is sup-).25 F .262(plied the inde)144 468 R 2.762(xo)-.15 G 2.762(ft)-2.762 G .262(he ne)-2.762 F .261(xt array element to be assig\ ned and the line to be assigned to that element)-.15 F .274 -(as additional ar)144 588 R(guments.)-.18 E F2(callbac)5.274 E(k)-.2 E +(as additional ar)144 480 R(guments.)-.18 E F2(callbac)5.274 E(k)-.2 E F0 .274(is e)2.774 F -.25(va)-.25 G .274 (luated after the line is read b).25 F .275 -(ut before the array element is)-.2 F(assigned.)144 600 Q -(If not supplied with an e)144 616.8 Q(xplicit origin,)-.15 E F1 +(ut before the array element is)-.2 F(assigned.)144 492 Q +(If not supplied with an e)144 508.8 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 633.6 Q F0 .797 +(before assigning to it.)2.5 E F1(map\214le)144 525.6 Q F0 .797 (returns successfully unless an in)3.298 F -.25(va)-.4 G .797 (lid option or option ar).25 F .797(gument is supplied,)-.18 F F2(arr) -3.297 E(ay)-.15 E F0 .797(is in-)3.297 F -.25(va)144 645.6 S +3.297 E(ay)-.15 E F0 .797(is in-)3.297 F -.25(va)144 537.6 S (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 662.4 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 -2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 674.4 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 -686.4 R F1(cd)3.979 E F0 1.479(to the ne)3.979 F 3.979(wt)-.25 G 1.479 -(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.478 -(uments, if supplied, ha).18 F 1.778 -.15(ve t)-.2 H 1.478(he follo).15 -F(wing)-.25 E(meanings:)144 698.4 Q F1144 710.4 Q F0 .551 -(Suppresses the normal change of directory when remo)180 710.4 R .551 +F1(popd)108 554.4 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 +2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 566.4 Q -.15(ve)-.15 G 3.091 +(se).15 G .591(ntries from the directory stack.)-3.091 F .592 +(The elements are numbered from 0 starting at the \214rst)5.591 F .665 +(directory listed by)144 578.4 R F1(dirs)3.165 E F0 5.665(.W)C .665 +(ith no ar)-6.065 F(guments,)-.18 E F1(popd)3.165 E F0(remo)3.165 E -.15 +(ve)-.15 G 3.165(st).15 G .664(he top directory from the stack, and) +-3.165 F(changes to the ne)144 590.4 Q 2.5(wt)-.25 G(op directory)-2.5 E +5(.A)-.65 G -.18(rg)-5 G(uments, if supplied, ha).18 E .3 -.15(ve t)-.2 +H(he follo).15 E(wing meanings:)-.25 E F1144 602.4 Q F0 .551 +(Suppresses the normal change of directory when remo)180 602.4 R .551 (ving directories from the stack, so)-.15 F -(that only the stack is manipulated.)180 722.4 Q(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(67)190.395 E 0 Cg EP -%%Page: 68 68 +(that only the stack is manipulated.)180 614.4 Q F1(+)144 626.4 Q F2(n)A +F0(Remo)180 626.4 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E +F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25 +F F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero,)-2.64 F .779 +(from the stack.)180 638.4 R -.15(Fo)5.779 G 3.279(re).15 G(xample:) +-3.429 E/F4 10/Courier@0 SF .779(popd +0)3.279 F F0(remo)3.279 E -.15 +(ve)-.15 G 3.279(st).15 G .779(he \214rst directory)-3.279 F(,)-.65 E F4 +.78(popd +1)3.28 F F0 .78(the sec-)3.28 F(ond.)180 650.4 Q F1144 +662.4 Q F2(n)A F0(Remo)180 662.4 Q -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 +E F2(n)3.76 E F0 1.259(th entry counting from the right of the list sho) +B 1.259(wn by)-.25 F F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with) +-3.759 F 2.5(zero. F)180 674.4 R(or e)-.15 E(xample:)-.15 E F4(popd -0) +2.5 E F0(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E +(,)-.65 E F4(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .093 +(If the top element of the directory stack is modi\214ed, and the)144 +691.2 R F2(-n)2.593 E F0 .094(option w)2.594 F .094(as not supplied,)-.1 +F F1(popd)2.594 E F0(uses)2.594 E(the)144 703.2 Q F1(cd)2.697 E F0 -.2 +(bu)2.697 G .196 +(iltin to change to the directory at the top of the stack.).2 F .196 +(If the)5.196 F F1(cd)2.696 E F0 -.1(fa)2.696 G(ils,).1 E F1(popd)2.696 +E F0 .196(returns a non-)2.696 F(zero v)144 715.2 Q(alue.)-.25 E +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(70)185.115 E 0 Cg EP +%%Page: 71 71 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(+)144 84 Q/F2 10/Times-Italic@0 SF(n)A F0(Remo)180 84 Q -.15(ve)-.15 -G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E F0 .14 -(th entry counting from the left of the list sho)B .14(wn by)-.25 F F1 -(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 96 -S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0(remo) -2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,)-.65 E -F3(popd +1)2.5 E F0(the second.)2.5 E F1144 108 Q F2(n)A F0(Remo)180 -108 Q -.15(ve)-.15 G 3.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 120 -R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0(remo)2.5 E -.15(ve)-.15 -G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 E F3(popd -1)2.5 E F0 -(the ne)2.5 E(xt to last.)-.15 E .644(If the)144 136.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 148.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 -(tory stack entry is speci\214ed, or the directory change f)144 160.8 Q -(ails.)-.1 E F1(printf)108 177.6 Q F0([)2.5 E F1A F2(var)2.5 E F0 -(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A .358 -(Write the formatted)144 189.6 R F2(ar)2.858 E(guments)-.37 E F0 .358 -(to the standard output under the control of the)2.858 F F2(format)2.857 -E F0 5.357(.T)C(he)-5.357 E F12.857 E F0(op-)2.857 E .714 -(tion causes the output to be assigned to the v)144 201.6 R(ariable)-.25 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(Otherwise,)144 84 +Q/F1 10/Times-Bold@0 SF(popd)2.67 E F0 .17(returns f)2.67 F .17 +(alse if an in)-.1 F -.25(va)-.4 G .171 +(lid option is encountered, the directory stack is empty).25 F 2.671(,o) +-.65 G 2.671(ra)-2.671 G(non-e)144 96 Q +(xistent directory stack entry is speci\214ed.)-.15 E 1.556(If the)144 +112.8 R F1(popd)4.056 E F0 1.556(command is successful, bash runs)4.056 +F F1(dirs)4.056 E F0 1.556(to sho)4.056 F 4.055(wt)-.25 G 1.555 +(he \214nal contents of the directory)-4.055 F +(stack, and the return status is 0.)144 124.8 Q F1(printf)108 141.6 Q F0 +([)2.5 E F1A/F2 10/Times-Italic@0 SF(var)2.5 E F0(])A F2(format) +2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A .357(Write the formatted) +144 153.6 R F2(ar)2.857 E(guments)-.37 E F0 .357 +(to the standard output under the control of the)2.857 F F2(format)2.858 +E F0 5.358(.T)C(he)-5.358 E F12.858 E F0(op-)2.858 E .714 +(tion causes the output to be assigned to the v)144 165.6 R(ariable)-.25 E F2(var)3.214 E F0 .714(rather than being printed to the standard)3.214 -F(output.)144 213.6 Q(The)144 237.6 Q F2(format)3.018 E F0 .517(is a ch\ +F(output.)144 177.6 Q(The)144 201.6 Q F2(format)3.017 E F0 .517(is a ch\ aracter string which contains three types of objects: plain characters,\ - which are)3.018 F .704(simply copied to standard output, character esc\ -ape sequences, which are con)144 249.6 R -.15(ve)-.4 G .704 + which are)3.017 F .704(simply copied to standard output, character esc\ +ape sequences, which are con)144 213.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 261.6 R .036 -(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 273.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 285.6 Q -(xtensions:)-.15 E F1(%b)144 297.6 Q F0(causes)180 297.6 Q F1(printf) -2.596 E F0 .096(to e)2.596 F .096 +\214cations, each of which causes printing of the ne)144 225.6 R .037 +(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 237.6 Q(gument)-.37 E F0 +5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F2 +(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.031 +E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 249.6 Q +(xtensions:)-.15 E F1(%b)144 261.6 Q F0(causes)180 261.6 Q F1(printf) +2.595 E F0 .096(to e)2.595 F .096 (xpand backslash escape sequences in the corresponding)-.15 F F2(ar) -2.596 E(gument)-.37 E F0 .095(in the)2.595 F(same w)180 309.6 Q(ay as) --.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 321.6 Q F0(causes)180 321.6 Q +2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 273.6 Q(ay as) +-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 285.6 Q F0(causes)180 285.6 Q F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E (gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F -(input.)180 333.6 Q F1(%\()144 345.6 Q F2(datefmt)A F1(\)T)A F0(causes) -180 357.6 Q F1(printf)4.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 369.6 R F2 +(input.)180 297.6 Q F1(%Q)144 309.6 Q F0(lik)180 309.6 Q(e)-.1 E F1(%q) +2.5 E F0 2.5(,b)C(ut applies an)-2.7 E 2.5(ys)-.15 G +(upplied precision to the)-2.5 E F2(ar)2.5 E(gument)-.37 E F0 +(before quoting it.)2.5 E F1(%\()144 321.6 Q F2(datefmt)A F1(\)T)A F0 +(causes)180 333.6 Q F1(printf)4.403 E F0 1.904 +(to output the date-time string resulting from using)4.403 F F2(datefmt) +4.404 E F0 1.904(as a format)4.404 F .381(string for)180 345.6 R F2 (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 .293(of seconds since the epoch.)180 -381.6 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F -.293(alues may be used: \2551 represents the)-.25 F .693 -(current time, and \2552 represents the time the shell w)180 393.6 R -.693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.194(d. If).1 F .694(no ar) -3.194 F .694(gument is speci-)-.18 F .21(\214ed, con)180 405.6 R -.15 +(ger representing the number)-.15 F .292(of seconds since the epoch.)180 +357.6 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F +.293(alues may be used: \2551 represents the)-.25 F .694 +(current time, and \2552 represents the time the shell w)180 369.6 R +.693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.193(d. If).1 F .693(no ar) +3.193 F .693(gument is speci-)-.18 F .21(\214ed, con)180 381.6 R -.15 (ve)-.4 G .21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71 G 2.71<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25 G 2.71(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F -F1(printf)2.71 E F0(beha)180 417.6 Q(vior)-.2 E(.)-.55 E .901 -(The %b, %q, and %T directi)144 434.4 R -.15(ve)-.25 G 3.401(sa).15 G -.901(ll use the \214eld width and precision ar)-3.401 F .902 -(guments from the format)-.18 F .358(speci\214cation and write that man) -144 446.4 R 2.858(yb)-.15 G .357 -(ytes from \(or use that wide a \214eld for\) the e)-2.858 F .357 +F1(printf)2.71 E F0(beha)180 393.6 Q(vior)-.2 E(.)-.55 E .902 +(The %b, %q, and %T directi)144 410.4 R -.15(ve)-.25 G 3.401(sa).15 G +.901(ll use the \214eld width and precision ar)-3.401 F .901 +(guments from the format)-.18 F .357(speci\214cation and write that man) +144 422.4 R 2.857(yb)-.15 G .358 +(ytes from \(or use that wide a \214eld for\) the e)-2.857 F .358 (xpanded ar)-.15 F(gument,)-.18 E -(which usually contains more characters than the original.)144 458.4 Q -(Ar)144 475.2 Q .463(guments to non-string format speci\214ers are trea\ -ted as C constants, e)-.18 F .464(xcept that a leading plus or)-.15 F -1.259(minus sign is allo)144 487.2 R 1.259 +(which usually contains more characters than the original.)144 434.4 Q +(Ar)144 451.2 Q .464(guments to non-string format speci\214ers are trea\ +ted as C constants, e)-.18 F .463(xcept that a leading plus or)-.15 F +1.258(minus sign is allo)144 463.2 R 1.259 (wed, and if the leading character is a single or double quote, the v) --.25 F 1.258(alue is the)-.25 F(ASCII v)144 499.2 Q(alue of the follo) --.25 E(wing character)-.25 E(.)-.55 E(The)144 516 Q F2(format)2.514 E F0 -.015(is reused as necessary to consume all of the)2.514 F F2(ar)2.515 E -(guments)-.37 E F0 5.015(.I)C 2.515(ft)-5.015 G(he)-2.515 E F2(format) -2.515 E F0 .015(requires more)2.515 F F2(ar)2.515 E(-)-.2 E(guments)144 -528 Q F0 .566(than are supplied, the e)3.066 F .566 +-.25 F 1.259(alue is the)-.25 F(ASCII v)144 475.2 Q(alue of the follo) +-.25 E(wing character)-.25 E(.)-.55 E(The)144 492 Q F2(format)2.515 E F0 +.015(is reused as necessary to consume all of the)2.515 F F2(ar)2.515 E +(guments)-.37 E F0 5.015(.I)C 2.514(ft)-5.015 G(he)-2.514 E F2(format) +2.514 E F0 .014(requires more)2.514 F F2(ar)2.514 E(-)-.2 E(guments)144 +504 Q F0 .565(than are supplied, the e)3.065 F .566 (xtra format speci\214cations beha)-.15 F .866 -.15(ve a)-.2 H 3.066(si) -.15 G 3.065(faz)-3.066 G .565(ero v)-3.065 F .565(alue or null string,) --.25 F(as appropriate, had been supplied.)144 540 Q(The return v)5 E +.15 G 3.066(faz)-3.066 G .566(ero v)-3.066 F .566(alue or null string,) +-.25 F(as appropriate, had been supplied.)144 516 Q(The return v)5 E (alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) -108 556.8 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C --2.5 E F2(n)A F0(])A F1(pushd)108 568.8 Q F0([)2.5 E F1A F0 -2.5(][)C F2(dir)-2.5 E F0(])A .639(Adds a directory to the top of the d\ -irectory stack, or rotates the stack, making the ne)144 580.8 R 3.14(wt) --.25 G .64(op of the)-3.14 F .417(stack the current w)144 592.8 R .416 -(orking directory)-.1 F 5.416(.W)-.65 G .416(ith no ar)-5.816 F -(guments,)-.18 E F1(pushd)2.916 E F0 -.15(ex)2.916 G .416 -(changes the top tw).15 F 2.916(od)-.1 G(irectories)-2.916 E 1.625 -(and returns 0, unless the directory stack is empty)144 604.8 R 6.625 -(.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 --.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 616.8 Q -F1144 628.8 Q F0 1.811(Suppresses the normal change of directory \ -when rotating or adding directories to the)180 628.8 R -(stack, so that only the stack is manipulated.)180 640.8 Q F1(+)144 -652.8 Q F2(n)A F0 1.267(Rotates the stack so that the)180 652.8 R F2(n) +108 532.8 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C +-2.5 E F2(n)A F0(])A F1(pushd)108 544.8 Q F0([)2.5 E F1A F0 +2.5(][)C F2(dir)-2.5 E F0(])A .64(Adds a directory to the top of the di\ +rectory stack, or rotates the stack, making the ne)144 556.8 R 3.139(wt) +-.25 G .639(op of the)-3.139 F .088(stack the current w)144 568.8 R .088 +(orking directory)-.1 F 5.088(.W)-.65 G .088(ith no ar)-5.488 F +(guments,)-.18 E F1(pushd)2.589 E F0 -.15(ex)2.589 G .089 +(changes the top tw).15 F 2.589(oe)-.1 G .089(lements of)-2.589 F +(the directory stack.)144 580.8 Q(Ar)5 E(guments, if supplied, ha)-.18 E +.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 +592.8 Q F0 1.811(Suppresses the normal change of directory when rotatin\ +g or adding directories to the)180 592.8 R +(stack, so that only the stack is manipulated.)180 604.8 Q F1(+)144 +616.8 Q F2(n)A F0 1.267(Rotates the stack so that the)180 616.8 R F2(n) 3.767 E F0 1.268(th directory \(counting from the left of the list sho)B -1.268(wn by)-.25 F F1(dirs)180 664.8 Q F0 2.5(,s)C -(tarting with zero\) is at the top.)-2.5 E F1144 676.8 Q F2(n)A F0 -.92(Rotates the stack so that the)180 676.8 R F2(n)3.42 E F0 .92 +1.268(wn by)-.25 F F1(dirs)180 628.8 Q F0 2.5(,s)C +(tarting with zero\) is at the top.)-2.5 E F1144 640.8 Q F2(n)A F0 +.92(Rotates the stack so that the)180 640.8 R F2(n)3.42 E F0 .92 (th directory \(counting from the right of the list sho)B .92(wn by)-.25 -F F1(dirs)180 688.8 Q F0 2.5(,s)C(tarting with zero\) is at the top.) --2.5 E F2(dir)144.35 700.8 Q F0(Adds)180 700.8 Q F2(dir)3.137 E F0 .287 -(to the directory stack at the top, making it the ne)3.517 F 2.788(wc) --.25 G .288(urrent w)-2.788 F .288(orking directory as)-.1 F -(if it had been supplied as the ar)180 712.8 Q(gument to the)-.18 E F1 -(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .489(If the)144 729.6 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(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(68) -190.395 E 0 Cg EP -%%Page: 69 69 +F F1(dirs)180 652.8 Q F0 2.5(,s)C(tarting with zero\) is at the top.) +-2.5 E F2(dir)144.35 664.8 Q F0(Adds)180 664.8 Q F2(dir)2.85 E F0 +(to the directory stack at the top)3.23 E .434 +(After the stack has been modi\214ed, if the)144 681.6 R F12.934 E +F0 .434(option w)2.934 F .435(as not supplied,)-.1 F F1(pushd)2.935 E F0 +.435(uses the)2.935 F F1(cd)2.935 E F0 -.2(bu)2.935 G .435(iltin to).2 F +(change to the directory at the top of the stack.)144 693.6 Q(If the)5 E +F1(cd)2.5 E F0 -.1(fa)2.5 G(ils,).1 E F1(pushd)2.5 E F0 +(returns a non-zero v)2.5 E(alue.)-.25 E 1.78(Otherwise, if no ar)144 +710.4 R 1.78(guments are supplied,)-.18 F F1(pushd)4.28 E F0 1.78 +(returns 0 unless the directory stack is empty)4.28 F(.)-.65 E .881 +(When rotating the directory stack,)144 722.4 R F1(pushd)3.381 E F0 .881 +(returns 0 unless the directory stack is empty or a non-)3.381 F +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(71)185.115 E 0 Cg EP +%%Page: 72 72 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.039 -(returns 0 unless the cd to)144 84 R/F1 10/Times-Italic@0 SF(dir)3.889 E -F0 -.1(fa)4.269 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4 F/F2 -10/Times-Bold@0 SF(pushd)3.54 E F0 1.04(returns 0 unless the directory) -3.54 F .847(stack is empty)144 96 R 3.347(,an)-.65 G(on-e)-3.347 E .847 -(xistent directory stack element is speci\214ed, or the directory chang\ -e to the)-.15 F(speci\214ed ne)144 108 Q 2.5(wc)-.25 G -(urrent directory f)-2.5 E(ails.)-.1 E F2(pwd)108 124.8 Q F0([)2.5 E F2 -(\255LP)A F0(])A .844(Print the absolute pathname of the current w)144 -136.8 R .845(orking directory)-.1 F 5.845(.T)-.65 G .845 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.15(ex)144 84 S +(istent directory stack element is speci\214ed.).15 E 1.278(If the)144 +100.8 R/F1 10/Times-Bold@0 SF(pushd)3.778 E F0 1.278 +(command is successful, bash runs)3.778 F F1(dirs)3.778 E F0 1.277 +(to sho)3.777 F 3.777(wt)-.25 G 1.277 +(he \214nal contents of the directory)-3.777 F(stack.)144 112.8 Q F1 +(pwd)108 129.6 Q F0([)2.5 E F1(\255LP)A F0(])A .844 +(Print the absolute pathname of the current w)144 141.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 -148.8 R F22.681 E F0 .181(option is supplied or the)2.681 F F2 -.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F2 +153.6 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 +.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1 (set)2.681 E F0 -.2(bu)2.681 G .181(iltin command is).2 F 3.263 -(enabled. If)144 160.8 R(the)3.263 E F23.263 E F0 .763 +(enabled. If)144 165.6 R(the)3.263 E F13.263 E F0 .763 (option is used, the pathname printed may contain symbolic links.)3.263 F .764(The return)5.764 F .405(status is 0 unless an error occurs while\ - reading the name of the current directory or an in)144 172.8 R -.25(va) --.4 G .405(lid op-).25 F(tion is supplied.)144 184.8 Q F2 -.18(re)108 -201.6 S(ad).18 E F0([)3.816 E F2(\255ers)A F0 3.816(][)C F2-3.816 -E F1(aname)3.816 E F0 3.816(][)C F2-3.816 E F1(delim)3.816 E F0 -3.816(][)C F2-3.816 E F1(te)3.816 E(xt)-.2 E F0 3.816(][)C F2 --3.816 E F1(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817(][)C F2 --3.817 E F1(nc)3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F2-3.817 E -F1(pr)3.817 E(ompt)-.45 E F0 3.817(][)C F2-3.817 E F1(timeout) -3.817 E F0 3.817(][)C F2-3.817 E F1(fd)3.817 E F0(])A([)108 213.6 -Q F1(name)A F0(...])2.5 E .516(One line is read from the standard input\ -, or from the \214le descriptor)144 225.6 R F1(fd)3.016 E F0 .516 -(supplied as an ar)3.016 F .516(gument to)-.18 F(the)144 237.6 Q F2 -2.935 E F0 .435(option, split into w)2.935 F .435 -(ords as described abo)-.1 F .735 -.15(ve u)-.15 H(nder).15 E F2 -.75 + reading the name of the current directory or an in)144 177.6 R -.25(va) +-.4 G .405(lid op-).25 F(tion is supplied.)144 189.6 Q F1 -.18(re)108 +206.4 S(ad).18 E F0([)3.816 E F1(\255ers)A F0 3.816(][)C F1-3.816 +E/F2 10/Times-Italic@0 SF(aname)3.816 E F0 3.816(][)C F1-3.816 E +F2(delim)3.816 E F0 3.816(][)C F1-3.816 E F2(te)3.816 E(xt)-.2 E +F0 3.816(][)C F1-3.816 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817 +(][)C F1-3.817 E F2(nc)3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1 +-3.817 E F2(pr)3.817 E(ompt)-.45 E F0 3.817(][)C F1-3.817 E +F2(timeout)3.817 E F0 3.817(][)C F1-3.817 E F2(fd)3.817 E F0(])A +([)108 218.4 Q F2(name)A F0(...])2.5 E .516(One line is read from the s\ +tandard input, or from the \214le descriptor)144 230.4 R F2(fd)3.016 E +F0 .516(supplied as an ar)3.016 F .516(gument to)-.18 F(the)144 242.4 Q +F12.935 E F0 .435(option, split into w)2.935 F .435 +(ords as described abo)-.1 F .735 -.15(ve u)-.15 H(nder).15 E F1 -.75 (Wo)2.935 G .435(rd Splitting).75 F F0 2.935(,a)C .436(nd the \214rst w) --2.935 F .436(ord is as-)-.1 F .376(signed to the \214rst)144 249.6 R F1 +-2.935 F .436(ord is as-)-.1 F .376(signed to the \214rst)144 254.4 R F2 (name)3.236 E F0 2.876(,t).18 G .376(he second w)-2.876 F .376 -(ord to the second)-.1 F F1(name)3.236 E F0 2.876(,a).18 G .376 +(ord to the second)-.1 F F2(name)3.236 E F0 2.876(,a).18 G .376 (nd so on.)-2.876 F .375(If there are more w)5.376 F(ords)-.1 E .236 -(than names, the remaining w)144 261.6 R .237(ords and their interv)-.1 -F .237(ening delimiters are assigned to the last)-.15 F F1(name)3.097 E -F0 5.237(.I).18 G(f)-5.237 E .875(there are fe)144 273.6 R .875(wer w) +(than names, the remaining w)144 266.4 R .237(ords and their interv)-.1 +F .237(ening delimiters are assigned to the last)-.15 F F2(name)3.097 E +F0 5.237(.I).18 G(f)-5.237 E .875(there are fe)144 278.4 R .875(wer w) -.25 F .875(ords read from the input stream than names, the remaining n\ -ames are assigned)-.1 F .517(empty v)144 285.6 R 3.017(alues. The)-.25 F +ames are assigned)-.1 F .517(empty v)144 290.4 R 3.017(alues. The)-.25 F .517(characters in)3.017 F/F3 9/Times-Bold@0 SF(IFS)3.017 E F0 .518 (are used to split the line into w)2.767 F .518 -(ords using the same rules the)-.1 F .027(shell uses for e)144 297.6 R -.026(xpansion \(described abo)-.15 F .326 -.15(ve u)-.15 H(nder).15 E F2 +(ords using the same rules the)-.1 F .027(shell uses for e)144 302.4 R +.026(xpansion \(described abo)-.15 F .326 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.526 G .026(rd Splitting).75 F F0 2.526(\). The)B .026 -(backslash character \()2.526 F F2(\\)A F0 2.526(\)m)C(ay)-2.526 E .488 -(be used to remo)144 309.6 R .788 -.15(ve a)-.15 H .788 -.15(ny s).15 H +(backslash character \()2.526 F F1(\\)A F0 2.526(\)m)C(ay)-2.526 E .488 +(be used to remo)144 314.4 R .788 -.15(ve a)-.15 H .788 -.15(ny s).15 H .488(pecial meaning for the ne).15 F .488 (xt character read and for line continuation.)-.15 F(Op-)5.489 E -(tions, if supplied, ha)144 321.6 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F2144 333.6 Q F1(aname)2.5 E F0 1.026 -(The w)180 345.6 R 1.026 +(tions, if supplied, ha)144 326.4 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 338.4 Q F2(aname)2.5 E F0 1.026 +(The w)180 350.4 R 1.026 (ords are assigned to sequential indices of the array v)-.1 F(ariable) --.25 E F1(aname)3.855 E F0 3.525(,s).18 G 1.025(tarting at 0.)-3.525 F -F1(aname)180.33 357.6 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 --.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F1(name)2.5 E F0 -(ar)2.5 E(guments are ignored.)-.18 E F2144 369.6 Q F1(delim)2.5 E -F0 .28(The \214rst character of)180 381.6 R F1(delim)2.78 E F0 .281 +-.25 E F2(aname)3.855 E F0 3.525(,s).18 G 1.025(tarting at 0.)-3.525 F +F2(aname)180.33 362.4 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 +-.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0 +(ar)2.5 E(guments are ignored.)-.18 E F1144 374.4 Q F2(delim)2.5 E +F0 .28(The \214rst character of)180 386.4 R F2(delim)2.78 E F0 .281 (is used to terminate the input line, rather than ne)2.78 F 2.781 -(wline. If)-.25 F F1(de-)2.781 E(lim)180 393.6 Q F0 -(is the empty string,)2.5 E F2 -.18(re)2.5 G(ad).18 E F0 -(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F2 -144 405.6 Q F0 .373 -(If the standard input is coming from a terminal,)180 405.6 R F2 -.18 +(wline. If)-.25 F F2(de-)2.781 E(lim)180 398.4 Q F0 +(is the empty string,)2.5 E F1 -.18(re)2.5 G(ad).18 E F0 +(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F1 +144 410.4 Q F0 .373 +(If the standard input is coming from a terminal,)180 410.4 R F1 -.18 (re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.872 E F0(abo) 2.622 E -.15(ve)-.15 G 2.872(\)i).15 G 2.872(su)-2.872 G(sed)-2.872 E -.218(to obtain the line.)180 417.6 R .218 +.218(to obtain the line.)180 422.4 R .218 (Readline uses the current \(or def)5.218 F .218 (ault, if line editing w)-.1 F .218(as not pre)-.1 F(viously)-.25 E -(acti)180 429.6 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E -(ut uses Readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E -(ault \214lename completion.)-.1 E F2144 441.6 Q F1(te)2.5 E(xt) --.2 E F0(If)180 441.6 Q F2 -.18(re)2.716 G(adline).18 E F0 .216 -(is being used to read the line,)2.716 F F1(te)2.716 E(xt)-.2 E F0 .216 +(acti)180 434.4 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E +(ut uses readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E +(ault \214lename completion.)-.1 E F1144 446.4 Q F2(te)2.5 E(xt) +-.2 E F0(If)180 446.4 Q F1 -.18(re)2.716 G(adline).18 E F0 .216 +(is being used to read the line,)2.716 F F2(te)2.716 E(xt)-.2 E F0 .216 (is placed into the editing b)2.716 F(uf)-.2 E .215(fer before edit-) --.25 F(ing be)180 453.6 Q(gins.)-.15 E F2144 465.6 Q F1(nc)2.5 E -(har)-.15 E(s)-.1 E F2 -.18(re)180 477.6 S(ad).18 E F0 .322 -(returns after reading)2.822 F F1(nc)2.823 E(har)-.15 E(s)-.1 E F0 .323 +-.25 F(ing be)180 458.4 Q(gins.)-.15 E F1144 470.4 Q F2(nc)2.5 E +(har)-.15 E(s)-.1 E F1 -.18(re)180 482.4 S(ad).18 E F0 .322 +(returns after reading)2.822 F F2(nc)2.823 E(har)-.15 E(s)-.1 E F0 .323 (characters rather than w)2.823 F .323 -(aiting for a complete line of in-)-.1 F(put, b)180 489.6 Q -(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F1(nc)2.5 E(har)-.15 -E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F2 -144 501.6 Q F1(nc)2.5 E(har)-.15 E(s)-.1 E F2 -.18(re)180 513.6 S -(ad).18 E F0 1.269(returns after reading e)3.77 F(xactly)-.15 E F1(nc) +(aiting for a complete line of in-)-.1 F(put, b)180 494.4 Q +(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15 +E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1 +144 506.4 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 518.4 S +(ad).18 E F0 1.269(returns after reading e)3.77 F(xactly)-.15 E F2(nc) 3.769 E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.269(aiting for a complete)-.1 F .274 -(line of input, unless EOF is encountered or)180 525.6 R F2 -.18(re) +(line of input, unless EOF is encountered or)180 530.4 R F1 -.18(re) 2.775 G(ad).18 E F0 .275(times out.)2.775 F .275 (Delimiter characters encoun-)5.275 F 1.003 -(tered in the input are not treated specially and do not cause)180 537.6 -R F2 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F1(nc) -3.502 E(har)-.15 E(s)-.1 E F0 .608(characters are read.)180 549.6 R .608 -(The result is not split on the characters in)5.608 F F2(IFS)3.108 E F0 -3.108(;t)C .609(he intent is that the)-3.108 F -.25(va)180 561.6 S .67 +(tered in the input are not treated specially and do not cause)180 542.4 +R F1 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F2(nc) +3.502 E(har)-.15 E(s)-.1 E F0 .608(characters are read.)180 554.4 R .608 +(The result is not split on the characters in)5.608 F F1(IFS)3.108 E F0 +3.108(;t)C .609(he intent is that the)-3.108 F -.25(va)180 566.4 S .67 (riable is assigned e).25 F .669 (xactly the characters read \(with the e)-.15 F .669 -(xception of backslash; see the)-.15 F F2180 573.6 Q F0 -(option belo)2.5 E(w\).)-.25 E F2144 585.6 Q F1(pr)2.5 E(ompt)-.45 -E F0(Display)180 597.6 Q F1(pr)3.66 E(ompt)-.45 E F0 1.161 +(xception of backslash; see the)-.15 F F1180 578.4 Q F0 +(option belo)2.5 E(w\).)-.25 E F1144 590.4 Q F2(pr)2.5 E(ompt)-.45 +E F0(Display)180 602.4 Q F2(pr)3.66 E(ompt)-.45 E F0 1.161 (on standard error)3.66 F 3.661(,w)-.4 G 1.161(ithout a trailing ne) --3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 609.6 Q +-3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 614.4 Q 2.5(yi)-.15 G 2.5(nput. The)-2.5 F -(prompt is displayed only if input is coming from a terminal.)2.5 E F2 -144 621.6 Q F0 .544(Backslash does not act as an escape character) -180 621.6 R 5.543(.T)-.55 G .543 +(prompt is displayed only if input is coming from a terminal.)2.5 E F1 +144 626.4 Q F0 .544(Backslash does not act as an escape character) +180 626.4 R 5.543(.T)-.55 G .543 (he backslash is considered to be part of)-5.543 F .492(the line.)180 -633.6 R .492(In particular)5.492 F 2.992(,ab)-.4 G(ackslash-ne)-2.992 E +638.4 R .492(In particular)5.492 F 2.992(,ab)-.4 G(ackslash-ne)-2.992 E .493(wline pair may not then be used as a line continua-)-.25 F(tion.) -180 645.6 Q F2144 657.6 Q F0(Silent mode.)180 657.6 Q -(If input is coming from a terminal, characters are not echoed.)5 E F2 -144 669.6 Q F1(timeout)2.5 E F0(Cause)180 681.6 Q F2 -.18(re)2.929 +180 650.4 Q F1144 662.4 Q F0(Silent mode.)180 662.4 Q +(If input is coming from a terminal, characters are not echoed.)5 E F1 +144 674.4 Q F2(timeout)2.5 E F0(Cause)180 686.4 Q F1 -.18(re)2.929 G(ad).18 E F0 .428(to time out and return f)2.929 F .428 (ailure if a complete line of input \(or a speci\214ed num-)-.1 F .56 -(ber of characters\) is not read within)180 693.6 R F1(timeout)3.061 E -F0(seconds.)3.061 E F1(timeout)5.561 E F0 .561(may be a decimal number) -3.061 F(with a fractional portion follo)180 705.6 Q +(ber of characters\) is not read within)180 698.4 R F2(timeout)3.061 E +F0(seconds.)3.061 E F2(timeout)5.561 E F0 .561(may be a decimal number) +3.061 F(with a fractional portion follo)180 710.4 Q (wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E -.3 -.15(ve i)-.25 H(f).15 E F2 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ +.3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ g input from a terminal, pipe, or other special \214le; it has no ef)180 -717.6 R .506(fect when reading)-.25 F .59(from re)180 729.6 R .59 -(gular \214les.)-.15 F(If)5.59 E F2 -.18(re)3.09 G(ad).18 E F0 .589 -(times out,)3.09 F F2 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)-.2 -G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .589 -(artial input read into the speci\214ed).15 F(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(69)190.395 E 0 Cg EP -%%Page: 70 70 +722.4 R .506(fect when reading)-.25 F(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(72)185.115 E 0 Cg EP +%%Page: 73 73 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)180 84 S -(riable).25 E/F1 10/Times-Italic@0 SF(name)2.77 E F0 5.27(.I)C(f)-5.27 E -F1(timeout)2.77 E F0 .27(is 0,)2.77 F/F2 10/Times-Bold@0 SF -.18(re)2.77 -G(ad).18 E F0 .27(returns immediately)2.77 F 2.77(,w)-.65 G .27 -(ithout trying to read an)-2.77 F 2.77(yd)-.15 G(ata.)-2.77 E 1.12 -(The e)180 96 R 1.12(xit status is 0 if input is a)-.15 F -.25(va)-.2 G -1.12(ilable on the speci\214ed \214le descriptor).25 F 3.62(,n)-.4 G -1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 108 R -.15(ex)2.5 G -(it status is greater than 128 if the timeout is e).15 E(xceeded.)-.15 E -F2144 120 Q F1(fd)2.5 E F0(Read input from \214le descriptor)180 -120 Q F1(fd)2.5 E F0(.)A .522(If no)144 136.8 R F1(names)3.382 E F0 .522 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .59(from re)180 84 +R .59(gular \214les.)-.15 F(If)5.59 E/F1 10/Times-Bold@0 SF -.18(re)3.09 +G(ad).18 E F0 .589(times out,)3.09 F F1 -.18(re)3.089 G(ad).18 E F0(sa) +3.089 E -.15(ve)-.2 G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .589 +(artial input read into the speci\214ed).15 F -.25(va)180 96 S(riable) +.25 E/F2 10/Times-Italic@0 SF(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2 +(timeout)2.77 E F0 .27(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27 +(returns immediately)2.77 F 2.77(,w)-.65 G .27(ithout trying to read an) +-2.77 F 2.77(yd)-.15 G(ata.)-2.77 E .228(The e)180 108 R .228 +(xit status is 0 if input is a)-.15 F -.25(va)-.2 G .228 +(ilable on the speci\214ed \214le descriptor).25 F 2.728(,o)-.4 G 2.727 +(rt)-2.728 G .227(he read will re-)-2.727 F 1.224(turn EOF)180 120 R +3.724(,n)-.8 G 1.224(on-zero otherwise.)-3.724 F 1.224(The e)6.224 F +1.225(xit status is greater than 128 if the timeout is e)-.15 F(x-)-.15 +E(ceeded.)180 132 Q F1144 144 Q F2(fd)2.5 E F0 +(Read input from \214le descriptor)180 144 Q F2(fd)2.5 E F0(.)A .522 +(If no)144 160.8 R F2(names)3.382 E F0 .522 (are supplied, the line read, without the ending delimiter b)3.292 F -.522(ut otherwise unmodi\214ed, is)-.2 F 1.187(assigned to the v)144 -148.8 R(ariable)-.25 E/F3 9/Times-Bold@0 SF(REPL)3.686 E(Y)-.828 E/F4 9 +.522(ut otherwise unmodi\214ed, is)-.2 F 1.186(assigned to the v)144 +172.8 R(ariable)-.25 E/F3 9/Times-Bold@0 SF(REPL)3.686 E(Y)-.828 E/F4 9 /Times-Roman@0 SF(.)A F0 1.186(The e)5.686 F 1.186 -(xit status is zero, unless end-of-\214le is encountered,)-.15 F F2 -.18 -(re)3.686 G(ad).18 E F0 .96 +(xit status is zero, unless end-of-\214le is encountered,)-.15 F F1 -.18 +(re)3.687 G(ad).18 E F0 .961 (times out \(in which case the status is greater than 128\), a v)144 -160.8 R .961(ariable assignment error \(such as as-)-.25 F .707 -(signing to a readonly v)144 172.8 R .706(ariable\) occurs, or an in) +184.8 R .96(ariable assignment error \(such as as-)-.25 F .706 +(signing to a readonly v)144 196.8 R .706(ariable\) occurs, or an in) -.25 F -.25(va)-.4 G .706(lid \214le descriptor is supplied as the ar) -.25 F .706(gument to)-.18 F F2144 184.8 Q F0(.)A F2 -.18(re)108 -201.6 S(adonly).18 E F0([)2.5 E F2(\255aAf)A F0 2.5(][)C F2-2.5 E -F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(wor)A(d)-.37 E F0 2.5(].)C(..]) --2.5 E .77(The gi)144 213.6 R -.15(ve)-.25 G(n).15 E F1(names)3.27 E F0 +.25 F .707(gument to)-.18 F F1144 208.8 Q F0(.)A F1 -.18(re)108 +225.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A F0 2.5(][)C F1-2.5 E +F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E F0 2.5(].)C(..]) +-2.5 E .77(The gi)144 237.6 R -.15(ve)-.25 G(n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77(ed readonly; the v)-.1 F .77(alues of these)-.25 -F F1(names)3.63 E F0 .77(may not be changed by subse-)3.54 F 1.097 -(quent assignment.)144 225.6 R 1.097(If the)6.097 F F23.597 E F0 -1.097(option is supplied, the functions corresponding to the)3.597 F F1 -(names)3.596 E F0 1.096(are so)3.596 F(mark)144 237.6 Q 3.334(ed. The) --.1 F F23.334 E F0 .834(option restricts the v)3.334 F .834 +F F2(names)3.63 E F0 .77(may not be changed by subse-)3.54 F 1.096 +(quent assignment.)144 249.6 R 1.096(If the)6.096 F F13.596 E F0 +1.097(option is supplied, the functions corresponding to the)3.596 F F2 +(names)3.597 E F0 1.097(are so)3.597 F(mark)144 261.6 Q 3.334(ed. The) +-.1 F F13.334 E F0 .834(option restricts the v)3.334 F .834 (ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) --3.334 F F23.334 E F0 .834(option restricts the v)3.334 F(ari-) --.25 E .777(ables to associati)144 249.6 R 1.077 -.15(ve a)-.25 H 3.277 -(rrays. If).15 F .777(both options are supplied,)3.277 F F23.277 E -F0(tak)3.277 E .776(es precedence.)-.1 F .776(If no)5.776 F F1(name) -3.636 E F0(ar)3.456 E(gu-)-.18 E .521(ments are gi)144 261.6 R -.15(ve) --.25 G .521(n, or if the).15 F F23.021 E F0 .521 +-3.334 F F13.334 E F0 .834(option restricts the v)3.334 F(ari-) +-.25 E .776(ables to associati)144 273.6 R 1.076 -.15(ve a)-.25 H 3.276 +(rrays. If).15 F .777(both options are supplied,)3.276 F F13.277 E +F0(tak)3.277 E .777(es precedence.)-.1 F .777(If no)5.777 F F2(name) +3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 285.6 R -.15(ve) +-.25 G .521(n, or if the).15 F F13.021 E F0 .521 (option is supplied, a list of all readonly names is printed.)3.021 F -.522(The other)5.521 F .295(options may be used to restrict the output \ -to a subset of the set of readonly names.)144 273.6 R(The)5.295 E F2 -2.795 E F0(option)2.795 E .786 +.521(The other)5.521 F .295(options may be used to restrict the output \ +to a subset of the set of readonly names.)144 297.6 R(The)5.296 E F1 +2.796 E F0(option)2.796 E .786 (causes output to be displayed in a format that may be reused as input.) -144 285.6 R .786(If a v)5.786 F .786(ariable name is fol-)-.25 F(lo)144 -297.6 Q .718(wed by =)-.25 F F1(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) --3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F1(wor) +144 309.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 +321.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) +-3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor) 3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in) -5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the) -144 309.6 R F1(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) --.25 F .26(ariable name, or)-.25 F F22.76 E F0 .26 -(is supplied with a)2.76 F F1(name)144.36 321.6 Q F0 -(that is not a function.)2.68 E F2 -.18(re)108 338.4 S(tur).18 E(n)-.15 -E F0([)2.5 E F1(n)A F0(])A .021(Causes a function to stop e)144 350.4 R --.15(xe)-.15 G .021(cuting and return the v).15 F .021 -(alue speci\214ed by)-.25 F F1(n)2.88 E F0 .02(to its caller)2.76 F 5.02 -(.I)-.55 G(f)-5.02 E F1(n)2.88 E F0 .02(is omitted,)2.76 F .596 -(the return status is that of the last command e)144 362.4 R -.15(xe) --.15 G .597(cuted in the function body).15 F 5.597(.I)-.65 G(f)-5.597 E -F2 -.18(re)3.097 G(tur).18 E(n)-.15 E F0 .597(is e)3.097 F -.15(xe)-.15 -G(cuted).15 E .267(by a trap handler)144 374.4 R 2.767(,t)-.4 G .267 +144 333.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) +-.25 F .26(ariable name, or)-.25 F F12.76 E F0 .26 +(is supplied with a)2.76 F F2(name)144.36 345.6 Q F0 +(that is not a function.)2.68 E F1 -.18(re)108 362.4 S(tur).18 E(n)-.15 +E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 374.4 R +-.15(xe)-.15 G .02(cuting and return the v).15 F .021 +(alue speci\214ed by)-.25 F F2(n)2.881 E F0 .021(to its caller)2.761 F +5.021(.I)-.55 G(f)-5.021 E F2(n)2.881 E F0 .021(is omitted,)2.761 F .597 +(the return status is that of the last command e)144 386.4 R -.15(xe) +-.15 G .596(cuted in the function body).15 F 5.596(.I)-.65 G(f)-5.596 E +F1 -.18(re)3.096 G(tur).18 E(n)-.15 E F0 .596(is e)3.096 F -.15(xe)-.15 +G(cuted).15 E .267(by a trap handler)144 398.4 R 2.767(,t)-.4 G .267 (he last command used to determine the status is the last command e) --2.767 F -.15(xe)-.15 G .267(cuted be-).15 F .02(fore the trap handler) -144 386.4 R 5.02(.I)-.55 G(f)-5.02 E F2 -.18(re)2.52 G(tur).18 E(n)-.15 -E F0 .02(is e)2.52 F -.15(xe)-.15 G .02(cuted during a).15 F F2(DEB)2.52 +-2.767 F -.15(xe)-.15 G .268(cuted be-).15 F .02(fore the trap handler) +144 410.4 R 5.02(.I)-.55 G(f)-5.02 E F1 -.18(re)2.52 G(tur).18 E(n)-.15 +E F0 .02(is e)2.52 F -.15(xe)-.15 G .02(cuted during a).15 F F1(DEB)2.52 E(UG)-.1 E F0 .02(trap, the last command used to deter)2.52 F(-)-.2 E -.886(mine the status is the last command e)144 398.4 R -.15(xe)-.15 G -.886(cuted by the trap handler before).15 F F2 -.18(re)3.385 G(tur).18 E -(n)-.15 E F0 -.1(wa)3.385 G 3.385(si).1 G -1.9 -.4(nv o)-3.385 H -.1(ke) -.4 G 3.385(d. If).1 F F2 -.18(re)144 410.4 S(tur).18 E(n)-.15 E F0 .627 -(is used outside a function, b)3.127 F .628(ut during e)-.2 F -.15(xe) --.15 G .628(cution of a script by the).15 F F2(.)3.128 E F0(\()5.628 E -F2(sour)A(ce)-.18 E F0 3.128(\)c)C .628(ommand, it)-3.128 F .589 -(causes the shell to stop e)144 422.4 R -.15(xe)-.15 G .589 -(cuting that script and return either).15 F F1(n)3.448 E F0 .588 -(or the e)3.328 F .588(xit status of the last com-)-.15 F .325(mand e) -144 434.4 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F -.326(xit status of the script.)-.15 F(If)5.326 E F1(n)2.826 E F0 .326 -(is supplied, the return v)2.826 F .326(alue is)-.25 F .445 -(its least signi\214cant 8 bits.)144 446.4 R .444 -(The return status is non-zero if)5.445 F F2 -.18(re)2.944 G(tur).18 E -(n)-.15 E F0 .444(is supplied a non-numeric ar)2.944 F(gu-)-.18 E .381 -(ment, or is used outside a function and not during e)144 458.4 R -.15 -(xe)-.15 G .381(cution of a script by).15 F F2(.)2.881 E F0(or)3.714 E -F2(sour)2.881 E(ce)-.18 E F0 5.381(.A)C .681 -.15(ny c)-5.381 H(om-).15 -E .75(mand associated with the)144 470.4 R F2(RETURN)3.249 E F0 .749 +.885(mine the status is the last command e)144 422.4 R -.15(xe)-.15 G +.886(cuted by the trap handler before).15 F F1 -.18(re)3.386 G(tur).18 E +(n)-.15 E F0 -.1(wa)3.386 G 3.386(si).1 G -1.9 -.4(nv o)-3.386 H -.1(ke) +.4 G 3.386(d. If).1 F F1 -.18(re)144 434.4 S(tur).18 E(n)-.15 E F0 .628 +(is used outside a function, b)3.128 F .628(ut during e)-.2 F -.15(xe) +-.15 G .628(cution of a script by the).15 F F1(.)3.127 E F0(\()5.627 E +F1(sour)A(ce)-.18 E F0 3.127(\)c)C .627(ommand, it)-3.127 F .588 +(causes the shell to stop e)144 446.4 R -.15(xe)-.15 G .588 +(cuting that script and return either).15 F F2(n)3.448 E F0 .589 +(or the e)3.329 F .589(xit status of the last com-)-.15 F .326(mand e) +144 458.4 R -.15(xe)-.15 G .326(cuted within the script as the e).15 F +.326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .325 +(is supplied, the return v)2.826 F .325(alue is)-.25 F .444 +(its least signi\214cant 8 bits.)144 470.4 R .444 +(The return status is non-zero if)5.444 F F1 -.18(re)2.945 G(tur).18 E +(n)-.15 E F0 .445(is supplied a non-numeric ar)2.945 F(gu-)-.18 E .381 +(ment, or is used outside a function and not during e)144 482.4 R -.15 +(xe)-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E +F1(sour)2.881 E(ce)-.18 E F0 5.38(.A)C .68 -.15(ny c)-5.38 H(om-).15 E +.749(mand associated with the)144 494.4 R F1(RETURN)3.249 E F0 .749 (trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15 -G .749(cution resumes after the function).15 F(or script.)144 482.4 Q F2 -(set)108 499.2 Q F0([)2.5 E F2(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C -F2-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 511.2 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 523.2 S .835 -(thout options, the name and v).4 F .835(alue of each shell v)-.25 F -.836(ariable are displayed in a format that can be)-.25 F .784 -(reused as input for setting or resetting the currently-set v)144 535.2 -R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783 -(riables cannot be).25 F 2.946(reset. In)144 547.2 R F1 .447(posix mode) -2.946 F F0 2.947(,o)C .447(nly shell v)-2.947 F .447 -(ariables are listed.)-.25 F .447 -(The output is sorted according to the current)5.447 F 3.531 -(locale. When)144 559.2 R 1.031(options are speci\214ed, the)3.531 F -3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.53(utes. An) --.2 F 3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F .584 -(after option processing are treated as v)144 571.2 R .585 -(alues for the positional parameters and are assigned, in or)-.25 F(-) --.2 E(der)144 583.2 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 F2144 -595.2 Q F0 1.378(Each v)184 595.2 R 1.377 +G .75(cution resumes after the function).15 F(or script.)144 506.4 Q F1 +(set)108 523.2 Q F0([)2.5 E F1(\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1 +-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5 +(][)C F1-2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E F1 +(set)108 535.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 F1-2.5 E F0 2.5(][)C F1 +-2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E -.4(Wi)144 +547.2 S .574(thout options, display the name and v).4 F .574 +(alue of each shell v)-.25 F .573 +(ariable in a format that can be reused)-.25 F .113 +(as input for setting or resetting the currently-set v)144 559.2 R 2.613 +(ariables. Read-only)-.25 F -.25(va)2.613 G .113 +(riables cannot be reset.).25 F(In)5.113 E F2 1.032(posix mode)144 571.2 +R F0 3.532(,o)C 1.032(nly shell v)-3.532 F 1.032(ariables are listed.) +-.25 F 1.032(The output is sorted according to the current locale.)6.032 +F .58(When options are speci\214ed, the)144 583.2 R 3.081(ys)-.15 G .581 +(et or unset shell attrib)-3.081 F 3.081(utes. An)-.2 F 3.081(ya)-.15 G +-.18(rg)-3.081 G .581(uments remaining after op-).18 F .161 +(tion processing are treated as v)144 595.2 R .161 +(alues for the positional parameters and are assigned, in order)-.25 F +2.66(,t)-.4 G(o)-2.66 E F1($1)2.66 E F0(,)A F1($2)144 607.2 Q F0(,)A F1 +2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 -.15 +(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 619.2 Q F0 +1.377(Each v)184 619.2 R 1.377 (ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve) --.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.377(xport attrib)-.15 F -1.377(ute and)-.2 F(mark)184 607.2 Q(ed for e)-.1 E(xport to the en)-.15 -E(vironment of subsequent commands.)-.4 E F2144 619.2 Q F0 .131 -(Report the status of terminated background jobs immediately)184 619.2 R -2.632(,r)-.65 G .132(ather than before the ne)-2.632 F(xt)-.15 E -(primary prompt.)184 631.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F2144 643.2 Q F0 -.088(Exit immediately if a)184 643.2 R F1(pipeline)2.588 E F0 .087 -(\(which may consist of a single)2.588 F F1 .087(simple command)2.587 F -F0 .087(\), a)B F1(list)2.587 E F0 2.587(,o)C(r)-2.587 E(a)184 655.2 Q -F1 1.52(compound command)4.02 F F0(\(see)4.021 E F3 1.521(SHELL GRAMMAR) -4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e).15 F 1.521 -(xits with a non-zero status.)-.15 F .08(The shell does not e)184 667.2 -R .079(xit if the command that f)-.15 F .079 -(ails is part of the command list immediately)-.1 F(follo)184 679.2 Q -1.654(wing a)-.25 F F2(while)4.154 E F0(or)4.154 E F2(until)4.154 E F0 --.1(ke)4.154 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.655 -(wing the)-.25 F F2(if)4.155 E F0(or)4.155 E F2(elif)4.155 E F0(reserv) -4.155 E(ed)-.15 E -.1(wo)184 691.2 S .582(rds, part of an).1 F 3.082(yc) --.15 G .582(ommand e)-3.082 F -.15(xe)-.15 G .581(cuted in a).15 F F2 -(&&)3.081 E F0(or)3.081 E F2(||)3.081 E F0 .581(list e)3.081 F .581 -(xcept the command follo)-.15 F(wing)-.25 E .917(the \214nal)184 703.2 R -F2(&&)3.417 E F0(or)3.417 E F2(||)3.417 E F0 3.417(,a)C 1.217 -.15(ny c) --3.417 H .918(ommand in a pipeline b).15 F .918 -(ut the last, or if the command')-.2 F 3.418(sr)-.55 G(eturn)-3.418 E --.25(va)184 715.2 S .661(lue is being in).25 F -.15(ve)-.4 G .661 -(rted with).15 F F2(!)3.161 E F0 5.661(.I)C 3.161(fac)-5.661 G .66 -(ompound command other than a subshell returns a)-3.161 F 1.112 -(non-zero status because a command f)184 727.2 R 1.112(ailed while)-.1 F -F23.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.113 -(eing ignored, the shell does)-3.612 F(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(70)190.395 E 0 Cg EP -%%Page: 71 71 +-.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.378(xport attrib)-.15 F +1.378(ute and)-.2 F(mark)184 631.2 Q(ed for e)-.1 E(xport to the en)-.15 +E(vironment of subsequent commands.)-.4 E F1144 643.2 Q F0 .132 +(Report the status of terminated background jobs immediately)184 643.2 R +2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E +(primary prompt.)184 655.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) +-.25 H(nly when job control is enabled.).15 E F1144 667.2 Q F0 +.087(Exit immediately if a)184 667.2 R F2(pipeline)2.587 E F0 .087 +(\(which may consist of a single)2.587 F F2 .088(simple command)2.588 F +F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 679.2 Q +F2 1.521(compound command)4.021 F F0(\(see)4.021 E F3 1.521 +(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e).15 F +1.521(xits with a non-zero status.)-.15 F .079(The shell does not e)184 +691.2 R .079(xit if the command that f)-.15 F .08 +(ails is part of the command list immediately)-.1 F(follo)184 703.2 Q +1.655(wing a)-.25 F F1(while)4.155 E F0(or)4.155 E F1(until)4.155 E F0 +-.1(ke)4.155 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.654 +(wing the)-.25 F F1(if)4.154 E F0(or)4.154 E F1(elif)4.154 E F0(reserv) +4.154 E(ed)-.15 E -.1(wo)184 715.2 S .581(rds, part of an).1 F 3.081(yc) +-.15 G .581(ommand e)-3.081 F -.15(xe)-.15 G .581(cuted in a).15 F F1 +(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .582(list e)3.082 F .582 +(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 727.2 R +F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 3.418(,a)C 1.218 -.15(ny c) +-3.418 H .918(ommand in a pipeline b).15 F .917 +(ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 E +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(73)185.115 E 0 Cg EP +%%Page: 74 74 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .178(not e)184 84 -R 2.678(xit. A)-.15 F .178(trap on)2.678 F/F1 10/Times-Bold@0 SF(ERR) -2.678 E F0 2.678(,i)C 2.678(fs)-2.678 G .178(et, is e)-2.678 F -.15(xe) --.15 G .178(cuted before the shell e).15 F 2.677(xits. This)-.15 F .177 -(option applies to)2.677 F .617(the shell en)184 96 R .617 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)184 84 S +.66(lue is being in).25 F -.15(ve)-.4 G .66(rted with).15 F/F1 10 +/Times-Bold@0 SF(!)3.16 E F0 5.661(.I)C 3.161(fac)-5.661 G .661 +(ompound command other than a subshell returns a)-3.161 F 1.113 +(non-zero status because a command f)184 96 R 1.112(ailed while)-.1 F F1 +3.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.112 +(eing ignored, the shell does)-3.612 F .177(not e)184 108 R 2.677 +(xit. A)-.15 F .177(trap on)2.677 F F1(ERR)2.677 E F0 2.677(,i)C 2.678 +(fs)-2.677 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 +(cuted before the shell e).15 F 2.678(xits. This)-.15 F .178 +(option applies to)2.678 F .618(the shell en)184 120 R .617 (vironment and each subshell en)-.4 F .617(vironment separately \(see) --.4 F/F2 9/Times-Bold@0 SF .618(COMMAND EXE-)3.118 F .643(CUTION ENVIR) -184 108 R(ONMENT)-.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 +-.4 F/F2 9/Times-Bold@0 SF .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR) +184 132 R(ONMENT)-.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 (\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15 -(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 120 Q -.998(If a compound command or shell function e)184 138 R -.15(xe)-.15 G -.999(cutes in a conte).15 F .999(xt where)-.15 F F13.499 E F0 .999 -(is being ig-)3.499 F .089(nored, none of the commands e)184 150 R -.15 +(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 144 Q +.999(If a compound command or shell function e)184 162 R -.15(xe)-.15 G +.999(cutes in a conte).15 F .998(xt where)-.15 F F13.498 E F0 .998 +(is being ig-)3.498 F .089(nored, none of the commands e)184 174 R -.15 (xe)-.15 G .089(cuted within the compound command or function body).15 F -.502(will be af)184 162 R .502(fected by the)-.25 F F13.002 E F0 +.503(will be af)184 186 R .503(fected by the)-.25 F F13.002 E F0 .502(setting, e)3.002 F -.15(ve)-.25 G 3.002(ni).15 G(f)-3.002 E F1 -3.002 E F0 .502(is set and a command returns a f)3.002 F .503 -(ailure sta-)-.1 F 4.184(tus. If)184 174 R 4.184(ac)4.184 G 1.684 -(ompound command or shell function sets)-4.184 F F14.183 E F0 -1.683(while e)4.183 F -.15(xe)-.15 G 1.683(cuting in a conte).15 F(xt) --.15 E(where)184 186 Q F13.153 E F0 .653 -(is ignored, that setting will not ha)3.153 F .954 -.15(ve a)-.2 H .954 --.15(ny e).15 H -.25(ff).15 G .654(ect until the compound command).25 F -(or the command containing the function call completes.)184 198 Q F1 -144 210 Q F0(Disable pathname e)184 210 Q(xpansion.)-.15 E F1 -144 222 Q F0 .988(Remember the location of commands as the)184 222 +3.002 E F0 .502(is set and a command returns a f)3.002 F .502 +(ailure sta-)-.1 F 4.183(tus. If)184 198 R 4.183(ac)4.183 G 1.683 +(ompound command or shell function sets)-4.183 F F14.184 E F0 +1.684(while e)4.184 F -.15(xe)-.15 G 1.684(cuting in a conte).15 F(xt) +-.15 E(where)184 210 Q F13.154 E F0 .654 +(is ignored, that setting will not ha)3.154 F .953 -.15(ve a)-.2 H .953 +-.15(ny e).15 H -.25(ff).15 G .653(ect until the compound command).25 F +(or the command containing the function call completes.)184 222 Q F1 +144 234 Q F0(Disable pathname e)184 234 Q(xpansion.)-.15 E F1 +144 246 Q F0 .988(Remember the location of commands as the)184 246 R 3.488(ya)-.15 G .988(re look)-3.488 F .988(ed up for e)-.1 F -.15(xe) --.15 G 3.488(cution. This).15 F .987(is en-)3.487 F(abled by def)184 234 -Q(ault.)-.1 E F1144 246 Q F0 .513(All ar)184 246 R .514 +-.15 G 3.488(cution. This).15 F .988(is en-)3.488 F(abled by def)184 258 +Q(ault.)-.1 E F1144 270 Q F0 .514(All ar)184 270 R .514 (guments in the form of assignment statements are placed in the en)-.18 -F .514(vironment for a)-.4 F -(command, not just those that precede the command name.)184 258 Q F1 -144 270 Q F0 .149(Monitor mode.)184 270 R .149 -(Job control is enabled.)5.149 F .148(This option is on by def)5.149 F -.148(ault for interacti)-.1 F .448 -.15(ve s)-.25 H(hells).15 E .65 -(on systems that support it \(see)184 282 R F2 .651(JOB CONTR)3.151 F -(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .651 -(processes run in a separate)3.151 F .679(process group.)184 294 R .678 +F .513(vironment for a)-.4 F +(command, not just those that precede the command name.)184 282 Q F1 +144 294 Q F0 .148(Monitor mode.)184 294 R .148 +(Job control is enabled.)5.148 F .149(This option is on by def)5.148 F +.149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .651 +(on systems that support it \(see)184 306 R F2 .651(JOB CONTR)3.151 F +(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .65 +(processes run in a separate)3.151 F .678(process group.)184 318 R .679 (When a background job completes, the shell prints a line containing it\ -s)5.679 F -.15(ex)184 306 S(it status.).15 E F1144 318 Q F0 .652 -(Read commands b)184 318 R .652(ut do not e)-.2 F -.15(xe)-.15 G .652 -(cute them.).15 F .653(This may be used to check a shell script for) -5.652 F(syntax errors.)184 330 Q(This is ignored by interacti)5 E .3 --.15(ve s)-.25 H(hells.).15 E F1144 342 Q/F3 10/Times-Italic@0 SF -(option\255name)2.5 E F0(The)184 354 Q F3(option\255name)2.5 E F0 -(can be one of the follo)2.5 E(wing:)-.25 E F1(allexport)184 366 Q F0 -(Same as)224 378 Q F12.5 E F0(.)A F1(braceexpand)184 390 Q F0 -(Same as)224 402 Q F12.5 E F0(.)A F1(emacs)184 414 Q F0 .089 -(Use an emacs-style command line editing interf)224 414 R 2.589 +s)5.678 F -.15(ex)184 330 S(it status.).15 E F1144 342 Q F0 .653 +(Read commands b)184 342 R .653(ut do not e)-.2 F -.15(xe)-.15 G .653 +(cute them.).15 F .652(This may be used to check a shell script for) +5.653 F(syntax errors.)184 354 Q(This is ignored by interacti)5 E .3 +-.15(ve s)-.25 H(hells.).15 E F1144 366 Q/F3 10/Times-Italic@0 SF +(option\255name)2.5 E F0(The)184 378 Q F3(option\255name)2.5 E F0 +(can be one of the follo)2.5 E(wing:)-.25 E F1(allexport)184 390 Q F0 +(Same as)224 402 Q F12.5 E F0(.)A F1(braceexpand)184 414 Q F0 +(Same as)224 426 Q F12.5 E F0(.)A F1(emacs)184 438 Q F0 .089 +(Use an emacs-style command line editing interf)224 438 R 2.589 (ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95 -(when the shell is interacti)224 426 R -.15(ve)-.25 G 3.45(,u).15 G .95 +(when the shell is interacti)224 450 R -.15(ve)-.25 G 3.45(,u).15 G .95 (nless the shell is started with the)-3.45 F F1(\255\255noediting)3.45 E -F0 2.5(option. This)224 438 R(also af)2.5 E(fects the editing interf) +F0 2.5(option. This)224 462 R(also af)2.5 E(fects the editing interf) -.25 E(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(err) -184 450 Q(exit)-.18 E F0(Same as)224 450 Q F12.5 E F0(.)A F1 -(errtrace)184 462 Q F0(Same as)224 462 Q F12.5 E F0(.)A F1 -(functrace)184 474 Q F0(Same as)224 486 Q F12.5 E F0(.)A F1 -(hashall)184 498 Q F0(Same as)224 498 Q F12.5 E F0(.)A F1 -(histexpand)184 510 Q F0(Same as)224 522 Q F12.5 E F0(.)A F1 -(history)184 534 Q F0 .587(Enable command history)224 534 R 3.087(,a) +184 474 Q(exit)-.18 E F0(Same as)224 474 Q F12.5 E F0(.)A F1 +(errtrace)184 486 Q F0(Same as)224 486 Q F12.5 E F0(.)A F1 +(functrace)184 498 Q F0(Same as)224 510 Q F12.5 E F0(.)A F1 +(hashall)184 522 Q F0(Same as)224 522 Q F12.5 E F0(.)A F1 +(histexpand)184 534 Q F0(Same as)224 546 Q F12.5 E F0(.)A F1 +(history)184 558 Q F0 .586(Enable command history)224 558 R 3.087(,a) -.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 -.15(ve u)-.15 H(nder).15 E F2(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F4 9/Times-Roman@0 SF -(.)A F0 .587(This option is)5.087 F(on by def)224 546 Q +(.)A F0 .587(This option is)5.087 F(on by def)224 570 Q (ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 -558 Q(eeof)-.18 E F0 1.656(The ef)224 570 R 1.656 +582 Q(eeof)-.18 E F0 1.657(The ef)224 594 R 1.657 (fect is as if the shell command)-.25 F/F5 10/Courier@0 SF(IGNOREEOF=10) -4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224 -582 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 594 S(yw).1 E(ord)-.1 E F0(Same as)224 606 Q F1 -2.5 E F0(.)A F1(monitor)184 618 Q F0(Same as)224 618 Q F12.5 -E F0(.)A F1(noclob)184 630 Q(ber)-.1 E F0(Same as)224 642 Q F12.5 -E F0(.)A F1(noexec)184 654 Q F0(Same as)224 654 Q F12.5 E F0(.)A -F1(noglob)184 666 Q F0(Same as)224 666 Q F12.5 E F0(.)A F1(nolog) -184 678 Q F0(Currently ignored.)224 678 Q F1(notify)184 690 Q F0 -(Same as)224 690 Q F12.5 E F0(.)A F1(nounset)184 702 Q F0(Same as) -224 702 Q F12.5 E F0(.)A F1(onecmd)184 714 Q F0(Same as)224 714 Q -F12.5 E F0(.)A(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(71) -190.395 E 0 Cg EP -%%Page: 72 72 +4.156 E F0 1.656(had been e)4.156 F -.15(xe)-.15 G(cuted).15 E(\(see)224 +606 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 618 S(yw).1 E(ord)-.1 E F0(Same as)224 630 Q F1 +2.5 E F0(.)A F1(monitor)184 642 Q F0(Same as)224 642 Q F12.5 +E F0(.)A F1(noclob)184 654 Q(ber)-.1 E F0(Same as)224 666 Q F12.5 +E F0(.)A F1(noexec)184 678 Q F0(Same as)224 678 Q F12.5 E F0(.)A +F1(noglob)184 690 Q F0(Same as)224 690 Q F12.5 E F0(.)A F1(nolog) +184 702 Q F0(Currently ignored.)224 702 Q F1(notify)184 714 Q F0 +(Same as)224 714 Q F12.5 E F0(.)A(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(74)185.115 E 0 Cg EP +%%Page: 75 75 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(ph)184 84 Q(ysical)-.15 E F0(Same as)224 84 Q F12.5 E F0(.)A F1 -(pipefail)184 96 Q F0 1.03(If set, the return v)224 96 R 1.029 -(alue of a pipeline is the v)-.25 F 1.029 -(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 108 R +SF(nounset)184 84 Q F0(Same as)224 84 Q F12.5 E F0(.)A F1(onecmd) +184 96 Q F0(Same as)224 96 Q F12.5 E F0(.)A F1(ph)184 108 Q +(ysical)-.15 E F0(Same as)224 108 Q F12.5 E F0(.)A F1(pipefail)184 +120 Q F0 1.029(If set, the return v)224 120 R 1.029 +(alue of a pipeline is the v)-.25 F 1.03 +(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 132 R 1.136 (xit with a non-zero status, or zero if all commands in the pipeline) --.15 F -.15(ex)224 120 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 132 Q F0 -2.091(Change the beha)224 132 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 +-.15 F -.15(ex)224 144 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 156 Q F0 +2.09(Change the beha)224 156 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 (fers from the)-.25 F 1.212(POSIX standard to match the standard \()224 -144 R/F2 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B/F3 9 -/Times-Bold@0 SF 1.212(SEE ALSO)3.712 F F0(belo)3.463 E(w)-.25 E .955 -(for a reference to a document that details ho)224 156 R 3.454(wp)-.25 G -.954(osix mode af)-3.454 F .954(fects bash')-.25 F 3.454(sb)-.55 G(e-) --3.454 E(ha)224 168 Q(vior)-.2 E(.)-.55 E F1(pri)184 180 Q(vileged)-.1 E -F0(Same as)224 192 Q F12.5 E F0(.)A F1 -.1(ve)184 204 S(rbose).1 E -F0(Same as)224 204 Q F12.5 E F0(.)A F1(vi)184 216 Q F0 .209 -(Use a vi-style command line editing interf)224 216 R 2.709(ace. This) --.1 F .209(also af)2.709 F .21(fects the editing in-)-.25 F(terf)224 228 -Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(xtrace) -184 240 Q F0(Same as)224 240 Q F12.5 E F0(.)A(If)184 258 Q F1 -3.053 E F0 .553(is supplied with no)3.053 F F2(option\255name) -3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552 -(alues of the current options are printed.)-.25 F(If)5.552 E F1(+o)184 -270 Q F0 1.071(is supplied with no)3.571 F F2(option\255name)3.571 E F0 -3.571(,as)C 1.071(eries of)-3.571 F F1(set)3.572 E F0 1.072 -(commands to recreate the current)3.572 F -(option settings is displayed on the standard output.)184 282 Q F1 -144 294 Q F0 -.45(Tu)184 294 S 1.072(rn on).45 F F2(privile)4.822 E -.1 -(ge)-.4 G(d).1 E F0 3.572(mode. In)4.342 F 1.072(this mode, the)3.572 F -F3($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV)-.27 E F0 1.071 -(\214les are not pro-)3.322 F 1.5 -(cessed, shell functions are not inherited from the en)184 306 R 1.501 -(vironment, and the)-.4 F F3(SHELLOPTS)4.001 E/F4 9/Times-Roman@0 SF(,)A -F3 -.27(BA)184 318 S(SHOPTS).27 E F4(,)A F3(CDP)2.775 E -.855(AT)-.666 G -(H).855 E F4(,)A F0(and)2.775 E F3(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G -.524(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F -(vironment,)-.4 E .379(are ignored.)184 330 R .379 -(If the shell is started with the ef)5.379 F(fecti)-.25 E .679 -.15 -(ve u)-.25 H .38(ser \(group\) id not equal to the real).15 F .462 -(user \(group\) id, and the)184 342 R F12.961 E F0 .461 -(option is not supplied, these actions are tak)2.961 F .461 -(en and the ef)-.1 F(fec-)-.25 E(ti)184 354 Q .694 -.15(ve u)-.25 H .394 +168 R/F2 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B/F3 9 +/Times-Bold@0 SF 1.212(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E .954 +(for a reference to a document that details ho)224 180 R 3.455(wp)-.25 G +.955(osix mode af)-3.455 F .955(fects bash')-.25 F 3.455(sb)-.55 G(e-) +-3.455 E(ha)224 192 Q(vior)-.2 E(.)-.55 E F1(pri)184 204 Q(vileged)-.1 E +F0(Same as)224 216 Q F12.5 E F0(.)A F1 -.1(ve)184 228 S(rbose).1 E +F0(Same as)224 228 Q F12.5 E F0(.)A F1(vi)184 240 Q F0 .209 +(Use a vi-style command line editing interf)224 240 R 2.709(ace. This) +-.1 F .209(also af)2.709 F .209(fects the editing in-)-.25 F(terf)224 +252 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 +(xtrace)184 264 Q F0(Same as)224 264 Q F12.5 E F0(.)A(If)184 282 Q +F13.052 E F0 .552(is supplied with no)3.052 F F2(option\255name) +3.053 E F0 3.053(,t)C .553(he v)-3.053 F .553 +(alues of the current options are printed.)-.25 F(If)5.553 E F1(+o)184 +294 Q F0 1.072(is supplied with no)3.572 F F2(option\255name)3.572 E F0 +3.572(,a)C 1.071(series of)-.001 F F1(set)3.571 E F0 1.071 +(commands to recreate the current)3.571 F +(option settings is displayed on the standard output.)184 306 Q F1 +144 318 Q F0 -.45(Tu)184 318 S 1.071(rn on).45 F F2(privile)4.821 E -.1 +(ge)-.4 G(d).1 E F0 3.572(mode. In)4.341 F 1.072(this mode, the)3.572 F +F3($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV)-.27 E F0 1.072 +(\214les are not pro-)3.322 F 1.501 +(cessed, shell functions are not inherited from the en)184 330 R 1.5 +(vironment, and the)-.4 F F3(SHELLOPTS)4 E/F4 9/Times-Roman@0 SF(,)A F3 +-.27(BA)184 342 S(SHOPTS).27 E F4(,)A F3(CDP)2.774 E -.855(AT)-.666 G(H) +.855 E F4(,)A F0(and)2.774 E F3(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G +.524(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F +(vironment,)-.4 E .38(are ignored.)184 354 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 366 R F12.961 E F0 .461 +(option is not supplied, these actions are tak)2.961 F .462 +(en and the ef)-.1 F(fec-)-.25 E(ti)184 378 Q .695 -.15(ve u)-.25 H .395 (ser id is set to the real user id.).15 F .395(If the)5.395 F F1 -2.895 E F0 .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 366 R -.45(Tu)5.387 G -.387(rning this option of).45 F 2.886(fc)-.25 G .386(auses the ef)-2.886 -F(fecti)-.25 E .686 -.15(ve u)-.25 H .386(ser and group ids to be).15 F -(set to the real user and group ids.)184 378 Q F1144 390 Q F0 -(Exit after reading and e)184 390 Q -.15(xe)-.15 G(cuting one command.) -.15 E F1144 402 Q F0 -.35(Tr)184 402 S .043(eat unset v).35 F .044 -(ariables and parameters other than the special parameters "@" and "*" \ -as an)-.25 F .183(error when performing parameter e)184 414 R 2.683 -(xpansion. If)-.15 F -.15(ex)2.683 G .182 -(pansion is attempted on an unset v).15 F(ari-)-.25 E .746 -(able or parameter)184 426 R 3.246(,t)-.4 G .746 -(he shell prints an error message, and, if not interacti)-3.246 F -.15 -(ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184 -438 Q F1144 450 Q F0(Print shell input lines as the)184 450 Q 2.5 -(ya)-.15 G(re read.)-2.5 E F1144 462 Q F0 .315(After e)184 462 R -.315(xpanding each)-.15 F F2 .315(simple command)2.815 F F0(,)A F1 -.25 -(fo)2.815 G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,) -2.815 E F1(select)2.815 E F0(command,)2.815 E 1.235(or arithmetic)184 -474 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F -1.236(xpanded v)-.15 F 1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0 -(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 486 Q -(xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 -144 498 Q F0 1.206(The shell performs brace e)184 498 R 1.206 -(xpansion \(see)-.15 F F1 1.205(Brace Expansion)3.705 F F0(abo)3.705 E --.15(ve)-.15 G 3.705(\). This).15 F 1.205(is on by de-)3.705 F -.1(fa) -184 510 S(ult.).1 E F1144 522 Q F0 .213(If set,)184 522 R F1(bash) -2.713 E F0 .213(does not o)2.713 F -.15(ve)-.15 G .214(rwrite an e).15 F -.214(xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0 -2.714(,a)C(nd)-2.714 E F1(<>)2.714 E F0 .214(redirection opera-)2.714 F -3.054(tors. This)184 534 R .553(may be o)3.053 F -.15(ve)-.15 G .553 +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 390 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 402 Q F1144 414 Q F0 +(Enable restricted shell mode.)184 414 Q +(This option cannot be unset once it has been set.)5 E F1144 426 Q +F0(Exit after reading and e)184 426 Q -.15(xe)-.15 G +(cuting one command.).15 E F1144 438 Q F0 -.35(Tr)184 438 S .774 +(eat unset v).35 F .773(ariables and parameters other than the special \ +parameters "@" and "*", or)-.25 F .459(array v)184 450 R .459(ariables \ +subscripted with "@" or "*", as an error when performing parameter e) +-.25 F(x-)-.15 E 2.891(pansion. If)184 462 R -.15(ex)2.891 G .391 +(pansion is attempted on an unset v).15 F .391(ariable or parameter)-.25 +F 2.89(,t)-.4 G .39(he shell prints an)-2.89 F +(error message, and, if not interacti)184 474 Q -.15(ve)-.25 G 2.5(,e) +.15 G(xits with a non-zero status.)-2.65 E F1144 486 Q F0 +(Print shell input lines as the)184 486 Q 2.5(ya)-.15 G(re read.)-2.5 E +F1144 498 Q F0 .315(After e)184 498 R .315(xpanding each)-.15 F F2 +.315(simple command)2.815 F F0(,)A F1 -.25(fo)2.815 G(r).25 E F0 +(command,)2.815 E F1(case)2.815 E F0(command,)2.815 E F1(select)2.815 E +F0(command,)2.815 E 1.236(or arithmetic)184 510 R F1 -.25(fo)3.736 G(r) +.25 E F0 1.236(command, display the e)3.736 F 1.236(xpanded v)-.15 F +1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0(follo)3.486 E 1.236 +(wed by the com-)-.25 F(mand and its e)184 522 Q(xpanded ar)-.15 E +(guments or associated w)-.18 E(ord list.)-.1 E F1144 534 Q F0 +1.205(The shell performs brace e)184 534 R 1.205(xpansion \(see)-.15 F +F1 1.205(Brace Expansion)3.705 F F0(abo)3.705 E -.15(ve)-.15 G 3.706 +(\). This).15 F 1.206(is on by de-)3.706 F -.1(fa)184 546 S(ult.).1 E F1 +144 558 Q F0 .214(If set,)184 558 R F1(bash)2.714 E F0 .214 +(does not o)2.714 F -.15(ve)-.15 G .214(rwrite an e).15 F .214 +(xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0 +2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213(redirection opera-)2.713 F +3.053(tors. This)184 570 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 546 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 -144 558 Q F0 .103(If set, an)184 558 R 2.603(yt)-.15 G .103 -(rap on)-2.603 F F1(ERR)2.603 E F0 .104 -(is inherited by shell functions, command substitutions, and com-)2.603 -F .839(mands e)184 570 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 582 Q F1 -144 594 Q F0(Enable)184 594 Q F1(!)3.031 E F0 .531 -(style history substitution.)5.531 F .531(This option is on by def)5.531 -F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 606 Q -.15 -(ve)-.25 G(.).15 E F1144 618 Q F0 .96 -(If set, the shell does not resolv)184 618 R 3.459(es)-.15 G .959 -(ymbolic links when e)-3.459 F -.15(xe)-.15 G .959 -(cuting commands such as).15 F F1(cd)3.459 E F0 1.452 -(that change the current w)184 630 R 1.452(orking directory)-.1 F 6.452 -(.I)-.65 G 3.953(tu)-6.452 G 1.453(ses the ph)-3.953 F 1.453 -(ysical directory structure in-)-.05 F 3.335(stead. By)184 642 R(def) -3.335 E(ault,)-.1 E F1(bash)3.334 E F0(follo)3.334 E .834 +.15 F(tor)184 582 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 594 Q F0 .104(If set, an)184 594 R 2.604(yt)-.15 G .104 +(rap on)-2.604 F F1(ERR)2.604 E F0 .103 +(is inherited by shell functions, command substitutions, and com-)2.604 +F .838(mands e)184 606 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 618 Q F1 +144 630 Q F0(Enable)184 630 Q F1(!)3.032 E F0 .532 +(style history substitution.)5.532 F .531(This option is on by def)5.532 +F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 642 Q -.15 +(ve)-.25 G(.).15 E F1144 654 Q F0 .959 +(If set, the shell does not resolv)184 654 R 3.459(es)-.15 G .959 +(ymbolic links when e)-3.459 F -.15(xe)-.15 G .96 +(cuting commands such as).15 F F1(cd)3.46 E F0 1.453 +(that change the current w)184 666 R 1.453(orking directory)-.1 F 6.453 +(.I)-.65 G 3.952(tu)-6.453 G 1.452(ses the ph)-3.952 F 1.452 +(ysical directory structure in-)-.05 F 3.334(stead. By)184 678 R(def) +3.334 E(ault,)-.1 E F1(bash)3.334 E F0(follo)3.334 E .834 (ws the logical chain of directories when performing com-)-.25 F -(mands which change the current directory)184 654 Q(.)-.65 E F1144 -666 Q F0 .89(If set, an)184 666 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1 +(mands which change the current directory)184 690 Q(.)-.65 E F1144 +702 Q F0 .89(If set, an)184 702 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1 (DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89 (are inherited by shell functions, command)3.39 F 1.932 -(substitutions, and commands e)184 678 R -.15(xe)-.15 G 1.932 +(substitutions, and commands e)184 714 R -.15(xe)-.15 G 1.932 (cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E -(UG)-.1 E F0(and)4.432 E F1(RETURN)184 690 Q F0 -(traps are normally not inherited in such cases.)2.5 E F1144 702 Q -F0 .4(If no ar)184 702 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401 -(his option, then the positional parameters are unset.)-2.901 F -(Otherwise,)5.401 E(the positional parameters are set to the)184 714 Q -F2(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G -(ome of them be)-2.5 E(gin with a)-.15 E F12.5 E F0(.)A -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(72)190.395 E 0 Cg EP -%%Page: 73 73 +(UG)-.1 E F0(and)4.432 E F1(RETURN)184 726 Q F0 +(traps are normally not inherited in such cases.)2.5 E(GNU Bash 5.2)72 +768 Q(2022 September 19)135.955 E(75)185.115 E 0 Cg EP +%%Page: 76 76 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q F0 .797(Signal the end of options, cause all remaining) -184 84 R/F2 10/Times-Italic@0 SF(ar)3.297 E(g)-.37 E F0 3.297(st)C 3.297 -(ob)-3.297 G 3.296(ea)-3.297 G .796(ssigned to the positional pa-)-3.296 -F 3.021(rameters. The)184 96 R F13.021 E F0(and)3.022 E F1 -3.022 E F0 .522(options are turned of)3.022 F 3.022(f. If)-.25 F .522 -(there are no)3.022 F F2(ar)3.022 E(g)-.37 E F0 .522 -(s, the positional pa-)B(rameters remain unchanged.)184 108 Q .425 -(The options are of)144 124.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 136.8 R 2.677(f. The)-.25 F .178 +SF144 84 Q F0 .401(If no ar)184 84 R .401(guments follo)-.18 F +2.901(wt)-.25 G .401 +(his option, then the positional parameters are unset.)-2.901 F +(Otherwise,)5.4 E(the positional parameters are set to the)184 96 Q/F2 +10/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni) +.15 G 2.5(fs)-2.5 G(ome of them be)-2.5 E(gin with a)-.15 E F12.5 E +F0(.)A F1144 108 Q F0 .796 +(Signal the end of options, cause all remaining)184 108 R F2(ar)3.297 E +(g)-.37 E F0 3.297(st)C 3.297(ob)-3.297 G 3.297(ea)-3.297 G .797 +(ssigned to the positional pa-)-3.297 F 3.022(rameters. The)184 120 R F1 +3.022 E F0(and)3.022 E F13.022 E F0 .522 +(options are turned of)3.022 F 3.022(f. If)-.25 F .522(there are no) +3.022 F F2(ar)3.022 E(g)-.37 E F0 .521(s, the positional pa-)B +(rameters remain unchanged.)184 132 Q .425(The options are of)144 148.8 +R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 +(ault unless otherwise noted.)-.1 F .425 +(Using + rather than \255 causes these options)5.425 F .178 +(to be turned of)144 160.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 -(current set of options may be found in)144 148.8 R F1<24ad>2.566 E F0 +-.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E .066 +(current set of options may be found in)144 172.8 R F1<24ad>2.566 E F0 5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066 -(ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F -(is encountered.)144 160.8 Q F1(shift)108 177.6 Q F0([)2.5 E F2(n)A F0 -(])A .428(The positional parameters from)144 189.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 201.6 Q F1($#)2.583 -E F0(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0A F2(n)A F0 .083 -(+1 are unset.)B F2(n)5.443 E F0 .083(must be a non-ne)2.823 F -.05(ga) --.15 G(ti).05 E .382 -.15(ve n)-.25 H .082(umber less than or equal to) -.15 F F1($#)2.582 E F0 5.082(.I)C(f)-5.082 E F2(n)2.942 E F0 .06 -(is 0, no parameters are changed.)144 213.6 R(If)5.06 E F2(n)2.92 E F0 +(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F +(is encountered.)144 184.8 Q F1(shift)108 201.6 Q F0([)2.5 E F2(n)A F0 +(])A .429(The positional parameters from)144 213.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 225.6 Q F1($#)2.582 +E F0(do)2.582 E .082(wn to)-.25 F F1($#)2.582 E F0A F2(n)A F0 .082 +(+1 are unset.)B F2(n)5.442 E F0 .082(must be a non-ne)2.822 F -.05(ga) +-.15 G(ti).05 E .383 -.15(ve n)-.25 H .083(umber less than or equal to) +.15 F F1($#)2.583 E F0 5.083(.I)C(f)-5.083 E F2(n)2.943 E F0 .06 +(is 0, no parameters are changed.)144 237.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 225.6 R -.144(The return status is greater than zero if)5.144 F F2(n)3.003 E F0 -.143(is greater than)2.883 F F1($#)2.643 E F0 -(or less than zero; otherwise 0.)144 237.6 Q F1(shopt)108 254.4 Q F0([) +(,t)C(he)-2.56 E .143(positional parameters are not changed.)144 249.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 261.6 Q F1(shopt)108 278.4 Q F0([) 2.5 E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname) --2.5 E F0(...])2.5 E -.8(To)144 266.4 S .639(ggle the v).8 F .639 +-2.5 E F0(...])2.5 E -.8(To)144 290.4 S .64(ggle the v).8 F .639 (alues of settings controlling optional shell beha)-.25 F(vior)-.2 E -5.639(.T)-.55 G .64(he settings can be either those)-5.639 F .375 -(listed belo)144 278.4 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H -2.875(ft).4 G(he)-2.875 E F12.875 E F0 .375 +5.639(.T)-.55 G .639(he settings can be either those)-5.639 F .374 +(listed belo)144 302.4 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H +2.874(ft).4 G(he)-2.874 E F12.874 E F0 .375 (option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 -F F12.875 E F0 .374(option to the)2.875 F F1(set)2.874 E F0 -.2 -(bu)2.874 G .374(iltin com-).2 F 2.565(mand. W)144 290.4 R .065 +F F12.875 E F0 .375(option to the)2.875 F F1(set)2.875 E F0 -.2 +(bu)2.875 G .375(iltin com-).2 F 2.566(mand. W)144 314.4 R .066 (ith no options, or with the)-.4 F F12.566 E F0 .066 (option, a list of all settable options is displayed, with an in-)2.566 -F .074(dication of whether or not each is set; if)144 302.4 R F2 +F .074(dication of whether or not each is set; if)144 326.4 R F2 (optnames)2.574 E F0 .074 (are supplied, the output is restricted to those op-)2.574 F 3.105 -(tions. The)144 314.4 R F13.105 E F0 .605(option causes output to\ +(tions. The)144 338.4 R F13.105 E F0 .605(option causes output to\ be displayed in a form that may be reused as input.)3.105 F(Other)5.605 -E(options ha)144 326.4 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 338.4 Q F0(Enable \(set\) each)180 -338.4 Q F2(optname)2.5 E F0(.)A F1144 350.4 Q F0 -(Disable \(unset\) each)180 350.4 Q F2(optname)2.5 E F0(.)A F1144 -362.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ -tus indicates whether the)180 362.4 R F2(optname)2.503 E F0(is)2.503 E -.255(set or unset.)180 374.4 R .255(If multiple)5.255 F F2(optname)2.755 -E F0(ar)2.755 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G -(ith)-2.756 E F12.756 E F0 2.756(,t)C .256 -(he return status is zero if)-2.756 F(all)180 386.4 Q F2(optnames)2.5 E -F0(are enabled; non-zero otherwise.)2.5 E F1144 398.4 Q F0 -(Restricts the v)180 398.4 Q(alues of)-.25 E F2(optname)2.5 E F0 +E(options ha)144 350.4 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 362.4 Q F0(Enable \(set\) each)180 +362.4 Q F2(optname)2.5 E F0(.)A F1144 374.4 Q F0 +(Disable \(unset\) each)180 374.4 Q F2(optname)2.5 E F0(.)A F1144 +386.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ +tus indicates whether the)180 386.4 R F2(optname)2.504 E F0(is)2.504 E +.256(set or unset.)180 398.4 R .256(If multiple)5.256 F F2(optname)2.756 +E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G +(ith)-2.756 E F12.756 E F0 2.755(,t)C .255 +(he return status is zero if)-2.755 F(all)180 410.4 Q F2(optnames)2.5 E +F0(are enabled; non-zero otherwise.)2.5 E F1144 422.4 Q F0 +(Restricts the v)180 422.4 Q(alues of)-.25 E F2(optname)2.5 E F0 (to be those de\214ned for the)2.5 E F12.5 E F0(option to the)2.5 -E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .625(If either)144 415.2 R F1 -3.125 E F0(or)3.124 E F13.124 E F0 .624(is used with no) +E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 439.2 R F1 +3.124 E F0(or)3.124 E F13.124 E F0 .624(is used with no) 3.124 F F2(optname)3.124 E F0(ar)3.124 E(guments,)-.18 E F1(shopt)3.124 -E F0(sho)3.124 E .624(ws only those options which are)-.25 F .983 -(set or unset, respecti)144 427.2 R -.15(ve)-.25 G(ly).15 E 5.983(.U) --.65 G .983(nless otherwise noted, the)-5.983 F F1(shopt)3.484 E F0 .984 -(options are disabled \(unset\) by de-)3.484 F -.1(fa)144 439.2 S(ult.) -.1 E 1.544(The return status when listing options is zero if all)144 456 -R F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.)4.044 F +E F0(sho)3.124 E .624(ws only those options which are)-.25 F .984 +(set or unset, respecti)144 451.2 R -.15(ve)-.25 G(ly).15 E 5.984(.U) +-.65 G .984(nless otherwise noted, the)-5.984 F F1(shopt)3.484 E F0 .983 +(options are disabled \(unset\) by de-)3.483 F -.1(fa)144 463.2 S(ult.) +.1 E 1.544(The return status when listing options is zero if all)144 480 +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 468 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696(alid shell) --.25 F(option.)144 480 Q(The list of)144 496.8 Q F1(shopt)2.5 E F0 -(options is:)2.5 E F1(assoc_expand_once)144 514.8 Q F0 1.945 -(If set, the shell suppresses multiple e)184 526.8 R -.25(va)-.25 G -1.944(luation of associati).25 F 2.244 -.15(ve a)-.25 H 1.944 -(rray subscripts during).15 F .885(arithmetic e)184 538.8 R .885 +144 492 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695(alid shell) +-.25 F(option.)144 504 Q(The list of)144 520.8 Q F1(shopt)2.5 E F0 +(options is:)2.5 E F1(assoc_expand_once)144 538.8 Q F0 1.944 +(If set, the shell suppresses multiple e)184 550.8 R -.25(va)-.25 G +1.945(luation of associati).25 F 2.245 -.15(ve a)-.25 H 1.945 +(rray subscripts during).15 F .885(arithmetic e)184 562.8 R .885 (xpression e)-.15 F -.25(va)-.25 G .885(luation, while e).25 F -.15(xe) -.15 G .885(cuting b).15 F .885(uiltins that can perform v)-.2 F .885 -(ariable as-)-.25 F(signments, and while e)184 550.8 Q -.15(xe)-.15 G +(ariable as-)-.25 F(signments, and while e)184 574.8 Q -.15(xe)-.15 G (cuting b).15 E(uiltins that perform array dereferencing.)-.2 E F1 -(autocd)144 562.8 Q F0 .2 -(If set, a command name that is the name of a directory is e)184 562.8 R --.15(xe)-.15 G .199(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 574.8 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F +(autocd)144 586.8 Q F0 .199 +(If set, a command name that is the name of a directory is e)184 586.8 R +-.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E +(ment to the)184 598.8 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F (option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E -F1(cdable_v)144 586.8 Q(ars)-.1 E F0 .155(If set, an ar)184 598.8 R .155 -(gument to the)-.18 F F1(cd)2.655 E F0 -.2(bu)2.655 G .156 +F1(cdable_v)144 610.8 Q(ars)-.1 E F0 .156(If set, an ar)184 622.8 R .156 +(gument to the)-.18 F F1(cd)2.656 E F0 -.2(bu)2.656 G .155 (iltin command that is not a directory is assumed to be the).2 F -(name of a v)184 610.8 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E F1(cdspell)144 622.8 Q F0 +(name of a v)184 634.8 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F1(cdspell)144 646.8 Q F0 1.055 (If set, minor errors in the spelling of a directory component in a)184 -622.8 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987 -(corrected. The)184 634.8 R 1.487(errors check)3.987 F 1.487 -(ed for are transposed characters, a missing character)-.1 F 3.988(,a) --.4 G(nd)-3.988 E .77(one character too man)184 646.8 R 4.57 -.65(y. I) +646.8 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 +(corrected. The)184 658.8 R 1.488(errors check)3.988 F 1.487 +(ed for are transposed characters, a missing character)-.1 F 3.987(,a) +-.4 G(nd)-3.987 E .77(one character too man)184 670.8 R 4.57 -.65(y. I) -.15 H 3.27(fac).65 G .77 (orrection is found, the corrected \214lename is printed, and)-3.27 F -(the command proceeds.)184 658.8 Q +(the command proceeds.)184 682.8 Q (This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(checkhash)144 670.8 Q F0 .736(If set,)184 682.8 R F1(bash)3.236 -E F0 .736(checks that a command found in the hash table e)3.236 F .737 +.15 E F1(checkhash)144 694.8 Q F0 .737(If set,)184 706.8 R F1(bash)3.237 +E F0 .736(checks that a command found in the hash table e)3.237 F .736 (xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 -694.8 Q(If a hashed command no longer e)5 E -(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 706.8 -Q F0 .449(If set,)184 718.8 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 730.8 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 -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(73)190.395 E 0 Cg EP -%%Page: 74 74 +718.8 Q(If a hashed command no longer e)5 E +(xists, a normal path search is performed.)-.15 E(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(76)185.115 E 0 Cg EP +%%Page: 77 77 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .817 -(attempted without an interv)184 84 R .817(ening command \(see)-.15 F/F1 -9/Times-Bold@0 SF .816(JOB CONTR)3.316 F(OL)-.27 E F0(abo)3.066 E -.15 -(ve)-.15 G 3.316(\). The).15 F .816(shell al-)3.316 F -.1(wa)184 96 S +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(checkjobs)144 84 Q F0 .448(If set,)184 96 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 2.662(shell. If)184 108 R(an)2.662 E 2.661(yj)-.15 G +.161(obs are running, this causes the e)-2.661 F .161 +(xit to be deferred until a second e)-.15 F .161(xit is at-)-.15 F 1.472 +(tempted without an interv)184 120 R 1.473(ening command \(see)-.15 F/F2 +9/Times-Bold@0 SF 1.473(JOB CONTR)3.973 F(OL)-.27 E F0(abo)3.723 E -.15 +(ve)-.15 G 3.973(\). The).15 F 1.473(shell al-)3.973 F -.1(wa)184 132 S (ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G(obs are stopped.) --2.5 E/F2 10/Times-Bold@0 SF(checkwinsize)144 108 Q F0 1.09(If set,)184 -120 R F2(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09 -(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09 -(uiltin\) command and, if)-.2 F(necessary)184 132 Q 3.351(,u)-.65 G .851 -(pdates the v)-3.351 F .85(alues of)-.25 F F1(LINES)3.35 E F0(and)3.1 E -F1(COLUMNS)3.35 E/F3 9/Times-Roman@0 SF(.)A F0 .85 -(This option is enabled by de-)5.35 F -.1(fa)184 144 S(ult.).1 E F2 -(cmdhist)144 156 Q F0 .172(If set,)184 156 R F2(bash)2.672 E F0 .172 -(attempts to sa)2.672 F .472 -.15(ve a)-.2 H .173 +-2.5 E F1(checkwinsize)144 144 Q F0 1.09(If set,)184 156 R F1(bash)3.59 +E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09(ize after each e) +-3.59 F 1.09(xternal \(non-b)-.15 F 1.09(uiltin\) command and, if)-.2 F +(necessary)184 168 Q 3.35(,u)-.65 G .85(pdates the v)-3.35 F .85 +(alues of)-.25 F F2(LINES)3.35 E F0(and)3.1 E F2(COLUMNS)3.35 E/F3 9 +/Times-Roman@0 SF(.)A F0 .85(This option is enabled by de-)5.35 F -.1 +(fa)184 180 S(ult.).1 E F1(cmdhist)144 192 Q F0 .173(If set,)184 192 R +F1(bash)2.673 E F0 .173(attempts to sa)2.673 F .473 -.15(ve a)-.2 H .172 (ll lines of a multiple-line command in the same history en-).15 F(try) -184 168 Q 5.597(.T)-.65 G .597(his allo)-5.597 F .597 +184 204 Q 5.596(.T)-.65 G .597(his allo)-5.596 F .597 (ws easy re-editing of multi-line commands.)-.25 F .597 -(This option is enabled by de-)5.597 F -.1(fa)184 180 S 1.287(ult, b).1 +(This option is enabled by de-)5.597 F -.1(fa)184 216 S 1.288(ult, b).1 F 1.288(ut only has an ef)-.2 F 1.288 -(fect if command history is enabled, as described abo)-.25 F 1.588 -.15 -(ve u)-.15 H(nder).15 E F1(HIST)184 192 Q(OR)-.162 E(Y)-.315 E F3(.)A F2 -(compat31)144 204 Q(compat32)144 216 Q(compat40)144 228 Q(compat41)144 -240 Q(compat42)144 252 Q(compat43)144 264 Q(compat44)144 276 Q F0 .889 -(These control aspects of the shell')184 288 R 3.389(sc)-.55 G .889 -(ompatibility mode \(see)-3.389 F F1 .889(SHELL COMP)3.389 F -.855(AT) --.666 G(IBILITY).855 E(MODE)184 300 Q F0(belo)2.25 E(w\).)-.25 E F2 -(complete_fullquote)144 316.8 Q F0 .653(If set,)184 328.8 R F2(bash) -3.153 E F0 .653(quotes all shell metacharacters in \214lenames and dire\ -ctory names when per)3.153 F(-)-.2 E 1.525(forming completion.)184 340.8 -R 1.524(If not set,)6.525 F F2(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 -G 4.024(sm).15 G 1.524(etacharacters such as the dollar sign)-4.024 F -2.667(from the set of characters that will be quoted in completed \214l\ -enames when these)184 352.8 R .029(metacharacters appear in shell v)184 -364.8 R .028(ariable references in w)-.25 F .028(ords to be completed.) --.1 F .028(This means)5.028 F 1.072(that dollar signs in v)184 376.8 R -1.073(ariable names that e)-.25 F 1.073 +(fect if command history is enabled, as described abo)-.25 F 1.587 -.15 +(ve u)-.15 H(nder).15 E F2(HIST)184 228 Q(OR)-.162 E(Y)-.315 E F3(.)A F1 +(compat31)144 240 Q(compat32)144 252 Q(compat40)144 264 Q(compat41)144 +276 Q(compat42)144 288 Q(compat43)144 300 Q(compat44)144 312 Q(compat50) +144 324 Q F0 .889(These control aspects of the shell')184 336 R 3.389 +(sc)-.55 G .889(ompatibility mode \(see)-3.389 F F2 .889(SHELL COMP) +3.389 F -.855(AT)-.666 G(IBILITY).855 E(MODE)184 348 Q F0(belo)2.25 E +(w\).)-.25 E F1(complete_fullquote)144 364.8 Q F0 .654(If set,)184 376.8 +R F1(bash)3.153 E F0 .653(quotes all shell metacharacters in \214lename\ +s and directory names when per)3.153 F(-)-.2 E 1.524 +(forming completion.)184 388.8 R 1.524(If not set,)6.524 F F1(bash)4.024 +E F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524 +(etacharacters such as the dollar sign)-4.024 F 2.667(from the set of c\ +haracters that will be quoted in completed \214lenames when these)184 +400.8 R .028(metacharacters appear in shell v)184 412.8 R .028 +(ariable references in w)-.25 F .029(ords to be completed.)-.1 F .029 +(This means)5.029 F 1.073(that dollar signs in v)184 424.8 R 1.073 +(ariable names that e)-.25 F 1.073 (xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25 -(ev e)184 388.8 T 1.923 -.4(r, a).25 H 1.423 -.15(ny d).4 H 1.123 +(ev e)184 436.8 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 (ollar signs appearing in \214lenames will not be quoted, either).15 F -6.123(.T)-.55 G 1.122(his is acti)-6.123 F -.15(ve)-.25 G .59 +6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59 (only when bash is using backslashes to quote completed \214lenames.)184 -400.8 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 412.8 Q +448.8 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 460.8 Q (ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E -(ersions through 4.2.)-.15 E F2(dir)144 429.6 Q(expand)-.18 E F0 .487 -(If set,)184 441.6 R F2(bash)2.987 E F0 .486 +(ersions through 4.2.)-.15 E F1(dir)144 477.6 Q(expand)-.18 E F0 .486 +(If set,)184 489.6 R F1(bash)2.986 E F0 .486 (replaces directory names with the results of w)2.986 F .486(ord e)-.1 F -.486(xpansion when perform-)-.15 F .179(ing \214lename completion.)184 -453.6 R .179(This changes the contents of the readline editing b)5.179 F -(uf)-.2 E(fer)-.25 E 5.18(.I)-.55 G 2.68(fn)-5.18 G(ot)-2.68 E(set,)184 -465.6 Q F2(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G -(hat the user typed.)-2.5 E F2(dirspell)144 482.4 Q F0 .859(If set,)184 -482.4 R F2(bash)3.359 E F0 .858 -(attempts spelling correction on directory names during w)3.359 F .858 +.487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184 +501.6 R .179(This changes the contents of the readline editing b)5.18 F +(uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,) +184 513.6 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G +(hat the user typed.)-2.5 E F1(dirspell)144 530.4 Q F0 .858(If set,)184 +530.4 R F1(bash)3.358 E F0 .858 +(attempts spelling correction on directory names during w)3.358 F .859 (ord completion if)-.1 F -(the directory name initially supplied does not e)184 494.4 Q(xist.)-.15 -E F2(dotglob)144 511.2 Q F0 .165(If set,)184 511.2 R F2(bash)2.665 E F0 +(the directory name initially supplied does not e)184 542.4 Q(xist.)-.15 +E F1(dotglob)144 559.2 Q F0 .165(If set,)184 559.2 R F1(bash)2.665 E F0 .165(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665 ('i)-.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F -(xpansion.)-.15 E(The \214lenames)184 523.2 Q F2 -.63(``)2.5 G -.55(.') -.63 G(')-.08 E F0(and)5 E F2 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0 +(xpansion.)-.15 E(The \214lenames)184 571.2 Q F1 -.63(``)2.5 G -.55(.') +.63 G(')-.08 E F0(and)5 E F1 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0 (must al)5.63 E -.1(wa)-.1 G(ys be matched e).1 E(xplicitly)-.15 E 2.5 -(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F2(dotglob)2.5 E F0 -(is set.)2.5 E F2(execfail)144 540 Q F0 .517(If set, a non-interacti)184 -540 R .817 -.15(ve s)-.25 H .517(hell will not e).15 F .516 -(xit if it cannot e)-.15 F -.15(xe)-.15 G .516 +(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F1(dotglob)2.5 E F0 +(is set.)2.5 E F1(execfail)144 588 Q F0 .516(If set, a non-interacti)184 +588 R .816 -.15(ve s)-.25 H .516(hell will not e).15 F .516 +(xit if it cannot e)-.15 F -.15(xe)-.15 G .517 (cute the \214le speci\214ed as an ar).15 F(-)-.2 E(gument to the)184 -552 Q F2(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E(An interacti)5 E -.3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 E F2(exec)2.5 E F0 --.1(fa)2.5 G(ils.).1 E F2(expand_aliases)144 568.8 Q F0 .716 -(If set, aliases are e)184 580.8 R .717(xpanded as described abo)-.15 F -1.017 -.15(ve u)-.15 H(nder).15 E F1(ALIASES)3.217 E F3(.)A F0 .717 -(This option is enabled)5.217 F(by def)184 592.8 Q(ault for interacti) --.1 E .3 -.15(ve s)-.25 H(hells.).15 E F2(extdeb)144 609.6 Q(ug)-.2 E F0 -.17(If set at shell in)184 621.6 R -.2(vo)-.4 G .17 +600 Q 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 616.8 Q F0 .717 +(If set, aliases are e)184 628.8 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 +(This option is enabled)5.217 F(by def)184 640.8 Q(ault for interacti) +-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(extdeb)144 657.6 Q(ug)-.2 E F0 +.17(If set at shell in)184 669.6 R -.2(vo)-.4 G .17 (cation, or in a shell startup \214le, arrange to e).2 F -.15(xe)-.15 G -.17(cute the deb).15 F .17(ugger pro\214le)-.2 F 1.081 -(before the shell starts, identical to the)184 633.6 R F2 -3.582 E(ugger)-.2 E F0 3.582(option. If)3.582 F 1.082(set after in)3.582 -F -.2(vo)-.4 G 1.082(cation, be-).2 F(ha)184 645.6 Q -(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F2(1.)184 -662.4 Q F0(The)220 662.4 Q F24.251 E F0 1.751(option to the)4.251 -F F2(declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 G 1.751 +.17(cute the deb).15 F .17(ugger pro\214le)-.2 F 1.082 +(before the shell starts, identical to the)184 681.6 R F1 +3.582 E(ugger)-.2 E F0 3.581(option. If)3.581 F 1.081(set after in)3.581 +F -.2(vo)-.4 G 1.081(cation, be-).2 F(ha)184 693.6 Q +(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184 +710.4 Q F0(The)220 710.4 Q F14.25 E F0 1.75(option to the)4.25 F +F1(declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 G 1.751 (iltin displays the source \214le name and line).2 F -(number corresponding to each function name supplied as an ar)220 674.4 -Q(gument.)-.18 E F2(2.)184 691.2 Q F0 1.667(If the command run by the) -220 691.2 R F2(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 703.2 Q -.15(xe)-.15 G(cuted.).15 E -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(74)190.395 E 0 Cg EP -%%Page: 75 75 +(number corresponding to each function name supplied as an ar)220 722.4 +Q(gument.)-.18 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(77) +185.115 E 0 Cg EP +%%Page: 78 78 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(3.)184 84 Q F0 .841(If the command run by the)220 84 R F1(DEB)3.341 E -(UG)-.1 E F0 .841(trap returns a v)3.341 F .84 -(alue of 2, and the shell is)-.25 F -.15(exe)220 96 S .488 +SF(2.)184 84 Q F0 1.667(If the command run by the)220 84 R F1(DEB)4.167 +E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F 1.667 +(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 96 Q +-.15(xe)-.15 G(cuted.).15 E F1(3.)184 112.8 Q F0 .84 +(If the command run by the)220 112.8 R F1(DEB)3.34 E(UG)-.1 E F0 .841 +(trap returns a v)3.341 F .841(alue of 2, and the shell is)-.25 F -.15 +(exe)220 124.8 S .488 (cuting in a subroutine \(a shell function or a shell script e).15 F -.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1 -(sour)220 108 Q(ce)-.18 E F0 -.2(bu)2.5 G +(sour)220 136.8 Q(ce)-.18 E F0 -.2(bu)2.5 G (iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E -(n)-.15 E F0(.)A F1(4.)184 124.8 Q/F2 9/Times-Bold@0 SF -.27(BA)220 -124.8 S(SH_ARGC).27 E F0(and)3.154 E F2 -.27(BA)3.404 G(SH_ARGV).27 E F0 +(n)-.15 E F0(.)A F1(4.)184 153.6 Q/F2 9/Times-Bold@0 SF -.27(BA)220 +153.6 S(SH_ARGC).27 E F0(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904(are updated as described in their descriptions)3.154 F(abo)220 -136.8 Q -.15(ve)-.15 G(.).15 E F1(5.)184 153.6 Q F0 1.637(Function trac\ -ing is enabled: command substitution, shell functions, and sub-)220 -153.6 R(shells in)220 165.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith) +165.6 Q -.15(ve)-.15 G(\).).15 E F1(5.)184 182.4 Q F0 1.637(Function tr\ +acing is enabled: command substitution, shell functions, and sub-)220 +182.4 R(shells in)220 194.4 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 182.4 Q F0 1.082(Error tracing is enabled: comm\ -and substitution, shell functions, and subshells)220 182.4 R(in)220 -194.4 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F3 +(traps.)2.5 E F1(6.)184 211.2 Q F0 1.082(Error tracing is enabled: comm\ +and substitution, shell functions, and subshells)220 211.2 R(in)220 +223.2 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 211.2 Q F0 .4(If set, the e)184 211.2 R .4 +2.5 E F1(extglob)144 240 Q F0 .4(If set, the e)184 240 R .4 (xtended pattern matching features described abo)-.15 F .7 -.15(ve u) --.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 223.2 Q -F0(are enabled.)2.5 E F1(extquote)144 240 Q F0 .86(If set,)184 252 R F1 -($)3.36 E F0<08>A F3(string)A F0 3.36<0861>C(nd)-3.36 E F1($)3.36 E F0 +-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 252 Q +F0(are enabled.)2.5 E F1(extquote)144 268.8 Q F0 .86(If set,)184 280.8 R +F1($)3.36 E F0<08>A F3(string)A F0 3.36<0861>C(nd)-3.36 E F1($)3.36 E F0 (")A F3(string)A F0 3.36("q)C .86(uoting is performed within)-3.36 F F1 (${)3.36 E F3(par)A(ameter)-.15 E F1(})A F0 -.15(ex)3.36 G .86 -(pansions en-).15 F(closed in double quotes.)184 264 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 280.8 Q -F0 .242(If set, patterns which f)184 280.8 R .243 +(pansions en-).15 F(closed in double quotes.)184 292.8 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 309.6 Q +F0 .243(If set, patterns which f)184 309.6 R .243 (ail to match \214lenames during pathname e)-.1 F .243 -(xpansion result in an e)-.15 F(x-)-.15 E(pansion error)184 292.8 Q(.) --.55 E F1 -.25(fo)144 309.6 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.937(If set, the suf)184 321.6 R<8c78>-.25 E .936(es speci\214ed by the) +(xpansion result in an e)-.15 F(x-)-.15 E(pansion error)184 321.6 Q(.) +-.55 E F1 -.25(fo)144 338.4 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.936(If set, the suf)184 350.4 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 .936(ords to be ignored)-.1 F .32(when performing w)184 333.6 R +-.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 362.4 R .32(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G -.32(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.948 -(pletions. See)184 345.6 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 357.6 Q(ault.)-.1 E F1(globasciiranges)144 374.4 Q -F0 2.518(If set, range e)184 386.4 R 2.519 -(xpressions used in pattern matching brack)-.15 F 2.519(et e)-.1 F 2.519 -(xpressions \(see)-.15 F F2 -.09(Pa)5.019 G(tter).09 E(n)-.135 E -(Matching)184 398.4 Q F0(abo)2.965 E -.15(ve)-.15 G 3.215(\)b).15 G(eha) --3.215 E 1.015 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 +.32(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947 +(pletions. See)184 374.4 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 386.4 Q(ault.)-.1 E F1(globasciiranges)144 403.2 Q +F0 2.519(If set, range e)184 415.2 R 2.519 +(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518 +(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E +(Matching)184 427.2 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) +-3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 (nt)-3.214 G .714(he traditional C locale when performing comparisons.) --3.214 F 1.02(That is, the current locale')184 410.4 R 3.52(sc)-.55 G +-3.214 F 1.02(That is, the current locale')184 439.2 R 3.52(sc)-.55 G 1.02(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F -F1(b)3.52 E F0 1.02(will not)3.52 F .957(collate between)184 422.4 R F1 -(A)3.457 E F0(and)3.457 E F1(B)3.457 E F0 3.457(,a)C .957(nd upper) --3.457 F .957(-case and lo)-.2 F(wer)-.25 E .956 -(-case ASCII characters will collate)-.2 F(together)184 434.4 Q(.)-.55 E -F1(globstar)144 451.2 Q F0 .518(If set, the pattern)184 451.2 R F1(**) +F1(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 451.2 R F1 +(A)3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper) +-3.457 F .957(-case and lo)-.2 F(wer)-.25 E .957 +(-case ASCII characters will collate)-.2 F(together)184 463.2 Q(.)-.55 E +F1(globskipdots)144 480 Q F0 .285(If set, pathname e)184 492 R .285 +(xpansion will ne)-.15 F -.15(ve)-.25 G 2.785(rm).15 G .285 +(atch the \214lenames)-2.785 F F1 -.63(``)2.785 G -.55(.').63 G(')-.08 E +F0(and)5.285 E F1 -.63(``)2.784 G(..).63 E -.63('')-.55 G F0 2.784(,e) +.63 G -.15(ve)-3.034 G 2.784(ni).15 G 2.784(ft)-2.784 G .284(he pat-) +-2.784 F(tern be)184 504 Q(gins with a)-.15 E F1 -.63(``)2.5 G -.55(.') +.63 G(')-.08 E F0 5(.T)C(his option is enabled by def)-5 E(ault.)-.1 E +F1(globstar)144 520.8 Q F0 .518(If set, the pattern)184 520.8 R F1(**) 3.018 E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .519(xt will match all \214les and zero)-.15 F .432 -(or more directories and subdirectories.)184 463.2 R .431 +(or more directories and subdirectories.)184 532.8 R .431 (If the pattern is follo)5.432 F .431(wed by a)-.25 F F1(/)2.931 E F0 2.931(,o)C .431(nly directories)-2.931 F(and subdirectories match.)184 -475.2 Q F1(gnu_errfmt)144 492 Q F0(If set, shell error messages are wri\ -tten in the standard GNU error message format.)184 504 Q F1(histappend) -144 520.8 Q F0 .676 +544.8 Q F1(gnu_errfmt)144 561.6 Q F0(If set, shell error messages are w\ +ritten in the standard GNU error message format.)184 573.6 Q F1 +(histappend)144 590.4 Q F0 .676 (If set, the history list is appended to the \214le named by the v)184 -532.8 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 544.8 Q(xits, rather than o)-.15 E --.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 561.6 Q(eedit) --.18 E F0 .576(If set, and)184 573.6 R F1 -.18(re)3.076 G(adline).18 E +602.4 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 614.4 Q(xits, rather than o)-.15 E +-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 631.2 Q(eedit) +-.18 E F0 .576(If set, and)184 643.2 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 585.6 Q F1(histv)144 602.4 Q(erify)-.1 E F0 .402 -(If set, and)184 614.4 R F1 -.18(re)2.903 G(adline).18 E F0 .403 +(tory substitution.)184 655.2 Q F1(histv)144 672 Q(erify)-.1 E F0 .402 +(If set, and)184 684 R F1 -.18(re)2.903 G(adline).18 E F0 .403 (is being used, the results of history substitution are not immediately) -2.903 F .662(passed to the shell parser)184 626.4 R 5.662(.I)-.55 G .661 +2.903 F .662(passed to the shell parser)184 696 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 638.4 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 655.2 Q F0 1.181(If set, and)184 667.2 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 679.2 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 691.2 Q -.15(ve)-.15 G 2.5(\). This).15 F -(is enabled by def)2.5 E(ault.)-.1 E(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(75)190.395 E 0 Cg EP -%%Page: 76 76 +G(adline).18 E F0(editing)3.161 E -.2(bu)184 708 S -.25(ff).2 G(er).25 E +2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(78)185.115 E 0 Cg EP +%%Page: 79 79 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(huponexit)144 84 Q F0(If set,)184 96 Q F1(bash)2.5 E F0(will send)2.5 -E/F2 9/Times-Bold@0 SF(SIGHUP)2.5 E F0(to all jobs when an interacti) -2.25 E .3 -.15(ve l)-.25 H(ogin shell e).15 E(xits.)-.15 E F1 -(inherit_err)144 112.8 Q(exit)-.18 E F0 .219 -(If set, command substitution inherits the v)184 124.8 R .219 +SF(hostcomplete)144 84 Q F0 1.181(If set, and)184 96 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 +108 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 9/Times-Bold@0 SF(READLINE)3.88 E F0(abo)184 120 Q -.15(ve)-.15 G +2.5(\). This).15 F(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 +136.8 Q F0(If set,)184 148.8 Q F1(bash)2.5 E F0(will send)2.5 E F2 +(SIGHUP)2.5 E F0(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 +H(ogin shell e).15 E(xits.)-.15 E F1(inherit_err)144 165.6 Q(exit)-.18 E +F0 .219(If set, command substitution inherits the v)184 177.6 R .219 (alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .22 -(option, instead of unsetting)2.719 F(it in the subshell en)184 136.8 Q +(option, instead of unsetting)2.719 F(it in the subshell en)184 189.6 Q 2.5(vironment. This)-.4 F(option is enabled when)2.5 E/F3 10 /Times-Italic@0 SF(posix mode)2.5 E F0(is enabled.)2.5 E F1(interacti) -144 153.6 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 165.6 R +144 206.4 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 218.4 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33(ginning with)-.15 F F1(#)2.83 E F0 .33(to cause that w)2.83 F .33(ord and all remaining characters on) --.1 F .967(that line to be ignored in an interacti)184 177.6 R 1.267 +-.1 F .967(that line to be ignored in an interacti)184 230.4 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 189.6 Q(ault.)-.1 E F1(lastpipe)144 206.4 Q F0 .066 -(If set, and job control is not acti)184 206.4 R -.15(ve)-.25 G 2.566 +(enabled by def)184 242.4 Q(ault.)-.1 E F1(lastpipe)144 259.2 Q F0 .066 +(If set, and job control is not acti)184 259.2 R -.15(ve)-.25 G 2.566 (,t).15 G .066(he shell runs the last command of a pipeline not e)-2.566 F -.15(xe)-.15 G(-).15 E -(cuted in the background in the current shell en)184 218.4 Q(vironment.) --.4 E F1(lithist)144 235.2 Q F0 .654(If set, and the)184 235.2 R F1 -(cmdhist)3.154 E F0 .654(option is enabled, multi-line commands are sa) -3.154 F -.15(ve)-.2 G 3.155(dt).15 G 3.155(ot)-3.155 G .655(he history) --3.155 F(with embedded ne)184 247.2 Q +(cuted in the background in the current shell en)184 271.2 Q(vironment.) +-.4 E F1(lithist)144 288 Q F0 .654(If set, and the)184 288 R F1(cmdhist) +3.154 E F0 .654(option is enabled, multi-line commands are sa)3.154 F +-.15(ve)-.2 G 3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)-3.155 F +(with embedded ne)184 300 Q (wlines rather than using semicolon separators where possible.)-.25 E F1 -(localv)144 264 Q(ar_inherit)-.1 E F0 .422(If set, local v)184 276 R +(localv)144 316.8 Q(ar_inherit)-.1 E F0 .422(If set, local v)184 328.8 R .422(ariables inherit the v)-.25 F .422(alue and attrib)-.25 F .422 (utes of a v)-.2 F .422(ariable of the same name that)-.25 F -.15(ex)184 -288 S .173(ists at a pre).15 F .173(vious scope before an)-.25 F 2.673 +340.8 S .173(ists at a pre).15 F .173(vious scope before an)-.25 F 2.673 (yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .174 -(The nameref attrib)5.174 F .174(ute is not)-.2 F(inherited.)184 300 Q -F1(localv)144 316.8 Q(ar_unset)-.1 E F0 .329(If set, calling)184 328.8 R +(The nameref attrib)5.174 F .174(ute is not)-.2 F(inherited.)184 352.8 Q +F1(localv)144 369.6 Q(ar_unset)-.1 E F0 .329(If set, calling)184 381.6 R F1(unset)2.829 E F0 .329(on local v)2.829 F .329(ariables in pre)-.25 F .328(vious function scopes marks them so subse-)-.25 F .543(quent looku\ ps \214nd them unset until that function returns. This is identical to \ -the beha)184 340.8 R(v-)-.2 E(ior of unsetting local v)184 352.8 Q -(ariables at the current function scope.)-.25 E F1(login_shell)144 369.6 +the beha)184 393.6 R(v-)-.2 E(ior of unsetting local v)184 405.6 Q +(ariables at the current function scope.)-.25 E F1(login_shell)144 422.4 Q F0 .486 (The shell sets this option if it is started as a login shell \(see)184 -381.6 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 393.6 S(lue may not be changed.) -.25 E F1(mailwar)144 410.4 Q(n)-.15 E F0 .814(If set, and a \214le that) -184 422.4 R F1(bash)3.314 E F0 .815 +434.4 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 446.4 S(lue may not be changed.) +.25 E F1(mailwar)144 463.2 Q(n)-.15 E F0 .814(If set, and a \214le that) +184 475.2 R F1(bash)3.314 E F0 .815 (is checking for mail has been accessed since the last time it)3.314 F --.1(wa)184 434.4 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +-.1(wa)184 487.2 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E (`The mail in)-.74 E F3(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i) --.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 -451.2 Q F0 .325(If set, and)184 463.2 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 +-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 504 +Q F0 .325(If set, and)184 516 R F1 -.18(re)2.825 G(adline).18 E F0 .325 +(is being used,)2.825 F F1(bash)2.824 E F0 .324 (will not attempt to search the)2.824 F F2 -.666(PA)2.824 G(TH)-.189 E F0 .324(for possible)2.574 F -(completions when completion is attempted on an empty line.)184 475.2 Q -F1(nocaseglob)144 492 Q F0 .436(If set,)184 504 R F1(bash)2.936 E F0 +(completions when completion is attempted on an empty line.)184 528 Q F1 +(nocaseglob)144 544.8 Q F0 .436(If set,)184 556.8 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 516 S +-.25 H .437(ashion when performing pathname).05 F -.15(ex)184 568.8 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 532.8 Q F0 1.194(If set,)184 -544.8 R F1(bash)3.694 E F0 1.194 +-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 585.6 Q F0 1.194(If set,)184 +597.6 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 F .551(while e)184 556.8 R +1.193(ashion when performing matching).05 F .551(while e)184 609.6 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0(or)3.051 E F1([[)3.051 E F0 .551(conditional commands, when performing pattern substitution)3.051 -F -.1(wo)184 568.8 S .623(rd e).1 F .623(xpansions, or when \214ltering\ +F -.1(wo)184 621.6 S .623(rd e).1 F .623(xpansions, or when \214ltering\ possible completions as part of programmable com-)-.15 F(pletion.)184 -580.8 Q F1(nullglob)144 597.6 Q F0 .854(If set,)184 609.6 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 621.6 S -(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 -638.4 Q(ogcomp)-.18 E F0 .677(If set, the programmable completion f)184 -650.4 R .677(acilities \(see)-.1 F F1(Pr)3.176 E .676 -(ogrammable Completion)-.18 F F0(abo)3.176 E -.15(ve)-.15 G(\)).15 E -(are enabled.)184 662.4 Q(This option is enabled by def)5 E(ault.)-.1 E -F1(pr)144 679.2 Q(ogcomp_alias)-.18 E F0 2.124 -(If set, and programmable completion is enabled,)184 691.2 R F1(bash) -4.624 E F0 2.124(treats a command name that)4.624 F(doesn')184 703.2 Q -3.289(th)-.18 G -2.25 -.2(av e)-3.289 H(an)3.489 E 3.289(yc)-.15 G .789 -(ompletions as a possible alias and attempts alias e)-3.289 F .788 -(xpansion. If it has)-.15 F 1.473(an alias,)184 715.2 R F1(bash)3.973 E -F0 1.473(attempts programmable completion using the command w)3.973 F -1.473(ord resulting)-.1 F(from the e)184 727.2 Q(xpanded alias.)-.15 E -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(76)190.395 E 0 Cg EP -%%Page: 77 77 +633.6 Q F1(noexpand_translation)144 650.4 Q F0 1.117(If set,)184 662.4 R +F1(bash)3.617 E F0 1.117(encloses the translated results of $"..." quot\ +ing in single quotes instead of)3.617 F(double quotes.)184 674.4 Q +(If the string is not translated, this has no ef)5 E(fect.)-.25 E F1 +(nullglob)144 691.2 Q F0 .855(If set,)184 703.2 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 715.2 S +(pand to a null string, rather than themselv).15 E(es.)-.15 E +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(79)185.115 E 0 Cg EP +%%Page: 80 80 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(pr)144 84 Q(omptv)-.18 E(ars)-.1 E F0 1.448 -(If set, prompt strings under)184 96 R 1.448(go parameter e)-.18 F 1.447 -(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 108 S .17 -(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 -(fter being e)-2.67 F .17(xpanded as described in)-.15 F/F2 9 -/Times-Bold@0 SF(PR)2.671 E(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G -(.).15 E(This option is enabled by def)184 120 Q(ault.)-.1 E F1 -.18(re) -144 136.8 S(stricted_shell).18 E F0 1.069 +SF(patsub_r)144 84 Q(eplacement)-.18 E F0 .105(If set,)184 96 R F1(bash) +2.605 E F0 -.15(ex)2.605 G .105(pands occurrences of).15 F F1(&)2.606 E +F0 .106(in the replacement string of pattern substitution to)2.606 F +.528(the te)184 108 R .528 +(xt matched by the pattern, as described under)-.15 F F1 -.1(Pa)3.027 G +.527(rameter Expansion).1 F F0(abo)3.027 E -.15(ve)-.15 G 5.527(.T).15 G +(his)-5.527 E(option is enabled by def)184 120 Q(ault.)-.1 E F1(pr)144 +136.8 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 +148.8 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677 +(ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E +(are enabled.)184 160.8 Q(This option is enabled by def)5 E(ault.)-.1 E +F1(pr)144 177.6 Q(ogcomp_alias)-.18 E F0 2.124 +(If set, and programmable completion is enabled,)184 189.6 R F1(bash) +4.624 E F0 2.124(treats a command name that)4.624 F(doesn')184 201.6 Q +3.288(th)-.18 G -2.25 -.2(av e)-3.288 H(an)3.488 E 3.288(yc)-.15 G .789 +(ompletions as a possible alias and attempts alias e)-3.288 F .789 +(xpansion. If it has)-.15 F 1.473(an alias,)184 213.6 R F1(bash)3.973 E +F0 1.473(attempts programmable completion using the command w)3.973 F +1.473(ord resulting)-.1 F(from the e)184 225.6 Q(xpanded alias.)-.15 E +F1(pr)144 242.4 Q(omptv)-.18 E(ars)-.1 E F0 1.447 +(If set, prompt strings under)184 254.4 R 1.448(go parameter e)-.18 F +1.448(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 +266.4 S .171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G +.17(fter being e)-2.67 F .17(xpanded as described in)-.15 F/F2 9 +/Times-Bold@0 SF(PR)2.67 E(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G +(.).15 E(This option is enabled by def)184 278.4 Q(ault.)-.1 E F1 -.18 +(re)144 295.2 S(stricted_shell).18 E F0 1.069 (The shell sets this option if it is started in restricted mode \(see) -184 148.8 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 160.8 Q 2.86 +184 307.2 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 319.2 Q 2.86 (w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36 (This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G -(-).15 E(cuted, allo)184 172.8 Q(wing the startup \214les to disco)-.25 +(-).15 E(cuted, allo)184 331.2 Q(wing the startup \214les to disco)-.25 E -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 -E F1(shift_v)144 189.6 Q(erbose)-.1 E F0 .502(If set, the)184 201.6 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 213.6 Q F1(sour) -144 230.4 Q(cepath)-.18 E F0 .77(If set, the)184 242.4 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 254.4 Q 2.5(gument. This)-.18 F -(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 271.2 Q F0 -(If set, the)184 283.2 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 300 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 312 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 324 R F1 -2.522 E F0 .022(option can be used to o)2.522 F -.15(ve)-.15 G .022 -(rride this and force the suspension.).15 F .023(The return status is) -5.023 F 2.5(0u)144 336 S(nless the shell is a login shell and)-2.5 E F1 -2.5 E F0(is not supplied, or if job control is not enabled.)2.5 E -F1(test)108 352.8 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) -108 364.8 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .878 -(Return a status of 0 \(true\) or 1 \(f)144 364.8 R .877 +E F1(shift_v)144 348 Q(erbose)-.1 E F0 .501(If set, the)184 360 R F1 +(shift)3.001 E F0 -.2(bu)3.001 G .501 +(iltin prints an error message when the shift count e).2 F .502 +(xceeds the number)-.15 F(of positional parameters.)184 372 Q F1(sour) +144 388.8 Q(cepath)-.18 E F0 .771(If set, the)184 400.8 R F1(.)3.271 E +F0(\()3.271 E F1(sour)A(ce)-.18 E 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 412.8 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E +(ault.)-.1 E F1 -.1(va)144 429.6 S(rr).1 E(edir_close)-.18 E F0 .74(If \ +set, the shell automatically closes \214le descriptors assigned using t\ +he)184 441.6 R/F3 10/Times-Italic@0 SF({varname})3.24 E F0(redi-)3.24 E +.424(rection syntax \(see)184 453.6 R F2(REDIRECTION)2.924 E F0(abo) +2.674 E -.15(ve)-.15 G 2.924(\)i).15 G .424(nstead of lea)-2.924 F .424 +(ving them open when the com-)-.2 F(mand completes.)184 465.6 Q F1 +(xpg_echo)144 482.4 Q F0(If set, the)184 494.4 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 511.2 Q F0([)2.5 E F1A F0(])A .909 +(Suspend the e)144 523.2 R -.15(xe)-.15 G .909 +(cution of this shell until it recei).15 F -.15(ve)-.25 G 3.41(sa).15 G +F2(SIGCONT)A F0 3.41(signal. A)3.16 F .91(login shell, or a shell)3.41 F +.753(without job control enabled, cannot be suspended; the)144 535.2 R +F13.253 E F0 .752(option can be used to o)3.252 F -.15(ve)-.15 G +.752(rride this and).15 F .107(force the suspension.)144 547.2 R .107(T\ +he return status is 0 unless the shell is a login shell or job control \ +is not en-)5.107 F(abled and)144 559.2 Q F12.5 E F0 +(is not supplied.)2.5 E F1(test)108 576 Q F3 -.2(ex)2.5 G(pr).2 E F1([) +108 588 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .878 +(Return a status of 0 \(true\) or 1 \(f)144 588 R .877 (alse\) depending on the e)-.1 F -.25(va)-.25 G .877 -(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 376.8 -S(pr).2 E F0 5.53(.E).73 G .53 +(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 600 S +(pr).2 E F0 5.53(.E).73 G .53 (ach operator and operand must be a separate ar)-5.53 F 3.03 (gument. Expressions)-.18 F .53(are composed of the)3.03 F 1.361 -(primaries described abo)144 388.8 R 1.661 -.15(ve u)-.15 H(nder).15 E -F2(CONDITION)3.861 E 1.36(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.) -A F1(test)5.86 E F0 1.36(does not accept an)3.86 F 3.86(yo)-.15 G(p-) --3.86 E(tions, nor does it accept and ignore an ar)144 400.8 Q -(gument of)-.18 E F12.5 E F0(as signifying the end of options.)2.5 -E .785(Expressions may be combined using the follo)144 418.8 R .786 +(primaries described abo)144 612 R 1.661 -.15(ve u)-.15 H(nder).15 E F2 +(CONDITION)3.861 E 1.36(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)A +F1(test)5.86 E F0 1.36(does not accept an)3.86 F 3.86(yo)-.15 G(p-)-3.86 +E(tions, nor does it accept and ignore an ar)144 624 Q(gument of)-.18 E +F12.5 E F0(as signifying the end of options.)2.5 E .785 +(Expressions may be combined using the follo)144 642 R .786 (wing operators, listed in decreasing order of prece-)-.25 F 3.412 -(dence. The)144 430.8 R -.25(eva)3.412 G .912 +(dence. The)144 654 R -.25(eva)3.412 G .912 (luation depends on the number of ar).25 F .911(guments; see belo)-.18 F 4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F -(used when there are \214v)144 442.8 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G -(ore ar)-2.5 E(guments.)-.18 E F1(!)144 454.8 Q F3 -.2(ex)2.5 G(pr).2 E -F0 -.35(Tr)180 454.8 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 -E(alse.)-.1 E F1(\()144 466.8 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 -.26(Returns the v)180 466.8 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2 -E F0 5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26 -(rride the normal precedence of opera-).15 F(tors.)180 478.8 Q F3 -.2 -(ex)144 490.8 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 --.35(Tr)180 502.8 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 -E F3 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F3 -.2(ex)144 514.8 S -(pr1).2 E F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 -526.8 S(ue if either).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F3 -.2 -(ex)2.5 G(pr2).2 E F0(is true.)2.52 E F1(test)144 543.6 Q F0(and)2.5 E -F1([)2.5 E F0 -.25(eva)2.5 G(luate conditional e).25 E +(used when there are \214v)144 666 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G(ore ar) +-2.5 E(guments.)-.18 E F1(!)144 678 Q F3 -.2(ex)2.5 G(pr).2 E F0 -.35 +(Tr)180 678 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E(alse.) +-.1 E F1(\()144 690 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 .26 +(Returns the v)180 690 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2 E F0 +5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26 +(rride the normal precedence of opera-).15 F(tors.)180 702 Q +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(80)185.115 E 0 Cg EP +%%Page: 81 81 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF -.2(ex)144 84 S(pr1).2 E F02.5 E/F2 10 +/Times-Bold@0 SF(a)A F1 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 96 S +(ue if both).35 E F1 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E F1 -.2(ex)2.5 G +(pr2).2 E F0(are true.)2.52 E F1 -.2(ex)144 108 S(pr1).2 E F02.5 E +F2(o)A F1 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 120 S(ue if either).35 E +F1 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F1 -.2(ex)2.5 G(pr2).2 E F0 +(is true.)2.52 E F2(test)144 136.8 Q F0(and)2.5 E F2([)2.5 E F0 -.25 +(eva)2.5 G(luate conditional e).25 E (xpressions using a set of rules based on the number of ar)-.15 E -(guments.)-.18 E 2.5(0a)144 561.6 S -.18(rg)-2.5 G(uments).18 E(The e) -180 573.6 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 585.6 S -.18 -(rg)-2.5 G(ument).18 E(The e)180 597.6 Q +(guments.)-.18 E 2.5(0a)144 154.8 S -.18(rg)-2.5 G(uments).18 E(The e) +180 166.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 178.8 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 190.8 Q (xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 609.6 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) -180 621.6 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 +E 2.5(2a)144 202.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 214.8 R .37(gument is)-.18 F F2(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 F .37(xpression is true if and only if the second ar)-.15 F .37 -(gument is null.)-.18 F .379(If the \214rst ar)180 633.6 R .38 +(gument is null.)-.18 F .379(If the \214rst ar)180 226.8 R .38 (gument is one of the unary conditional operators listed abo)-.18 F .68 --.15(ve u)-.15 H(nder).15 E F2(CONDI-)2.88 E(TION)180 645.6 Q .553 -(AL EXPRESSIONS)-.18 F F4(,)A F0 .552(the e)2.802 F .552 -(xpression is true if the unary test is true.)-.15 F .552 -(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 657.6 Q +-.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(CONDI-)2.88 E(TION)180 +238.8 Q .553(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(,)A F0 .552 +(the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F +.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 250.8 Q (alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E -(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 669.6 S -.18(rg)-2.5 G -(uments).18 E .236(The follo)180 681.6 R .236 +(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 262.8 S -.18(rg)-2.5 G +(uments).18 E .236(The follo)180 274.8 R .236 (wing conditions are applied in the order listed.)-.25 F .236 (If the second ar)5.236 F .236(gument is one of)-.18 F .855 -(the binary conditional operators listed abo)180 693.6 R 1.155 -.15 -(ve u)-.15 H(nder).15 E F2(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F -F4(,)A F0(the)3.104 E .578(result of the e)180 705.6 R .578(xpression i\ +(the binary conditional operators listed abo)180 286.8 R 1.155 -.15 +(ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F +F4(,)A F0(the)3.104 E .578(result of the e)180 298.8 R .578(xpression i\ s the result of the binary test using the \214rst and third ar)-.15 F -(guments)-.18 E 1.333(as operands.)180 717.6 R(The)6.333 E F13.833 -E F0(and)3.833 E F13.832 E F0 1.332 +(guments)-.18 E 1.333(as operands.)180 310.8 R(The)6.333 E F23.833 +E F0(and)3.833 E F23.832 E F0 1.332 (operators are considered binary operators when there are)3.832 F .558 -(three ar)180 729.6 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 -F .558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F +(three ar)180 322.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 +F .558(gument is)-.18 F F2(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F .558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F -(o-ar)-.1 E(gument)-.18 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 -E(77)190.395 E 0 Cg EP -%%Page: 78 78 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .521 -(test using the second and third ar)180 84 R 3.021(guments. If)-.18 F -.521(the \214rst ar)3.021 F .52(gument is e)-.18 F(xactly)-.15 E/F1 10 -/Times-Bold@0 SF(\()3.02 E F0 .52(and the third)3.02 F(ar)180 96 Q .485 -(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 2.985(,t)C .485 -(he result is the one-ar)-2.985 F .485(gument test of the second ar)-.18 -F 2.985(gument. Other)-.18 F(-)-.2 E(wise, the e)180 108 Q -(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 120 S -.18(rg)-2.5 G -(uments).18 E .385(If the \214rst ar)180 132 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 .284(posed of the remaining ar)180 144 R 2.784 -(guments. Otherwise,)-.18 F .284(the e)2.784 F .284 -(xpression is parsed and e)-.15 F -.25(va)-.25 G .285(luated ac-).25 F -(cording to precedence using the rules listed abo)180 156 Q -.15(ve)-.15 -G(.).15 E 2.5(5o)144 168 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 E -1.635(The e)180 180 R 1.635(xpression is parsed and e)-.15 F -.25(va) --.25 G 1.635(luated according to precedence using the rules listed).25 F -(abo)180 192 Q -.15(ve)-.15 G(.).15 E(When used with)144 210 Q F1(test) -2.5 E F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 -E F1(>)2.5 E F0(operators sort le)2.5 E -(xicographically using ASCII ordering.)-.15 E F1(times)108 226.8 Q F0 +(o-ar)-.1 E(gument)-.18 E .521(test using the second and third ar)180 +334.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52 +(gument is e)-.18 F(xactly)-.15 E F2(\()3.02 E F0 .52(and the third)3.02 +F(ar)180 346.8 Q .485(gument is e)-.18 F(xactly)-.15 E F2(\))2.985 E F0 +2.985(,t)C .485(he result is the one-ar)-2.985 F .485 +(gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E +(wise, the e)180 358.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 +370.8 S -.18(rg)-2.5 G(uments).18 E .43(The follo)180 382.8 R .43 +(wing conditions are applied in the order listed.)-.25 F .429 +(If the \214rst ar)5.429 F .429(gument is)-.18 F F2(!)2.929 E F0 2.929 +(,t)C .429(he re-)-2.929 F 1.314(sult is the ne)180 394.8 R -.05(ga)-.15 +G 1.314(tion of the three-ar).05 F 1.314(gument e)-.18 F 1.314 +(xpression composed of the remaining ar)-.15 F(gu-)-.18 E 2.745 +(ments. the)180 406.8 R(tw)2.745 E(o-ar)-.1 E .245 +(gument test using the second and third ar)-.18 F 2.744(guments. If)-.18 +F .244(the \214rst ar)2.744 F(gument)-.18 E .309(is e)180 418.8 R +(xactly)-.15 E F2(\()2.809 E F0 .309(and the fourth ar)2.809 F .309 +(gument is e)-.18 F(xactly)-.15 E F2(\))2.809 E F0 2.809(,t)C .31 +(he result is the tw)-2.809 F(o-ar)-.1 E .31(gument test of the)-.18 F +.184(second and third ar)180 430.8 R 2.684(guments. Otherwise,)-.18 F +.184(the e)2.684 F .183(xpression is parsed and e)-.15 F -.25(va)-.25 G +.183(luated according).25 F(to precedence using the rules listed abo)180 +442.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 454.8 S 2.5(rm)-2.5 G(ore ar) +-2.5 E(guments)-.18 E 1.635(The e)180 466.8 R 1.635 +(xpression is parsed and e)-.15 F -.25(va)-.25 G 1.635 +(luated according to precedence using the rules listed).25 F(abo)180 +478.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 496.8 Q F2(test)2.5 E +F0(or)2.5 E F2([)2.5 E F0 2.5(,t)C(he)-2.5 E F2(<)2.5 E F0(and)2.5 E F2 +(>)2.5 E F0(operators sort le)2.5 E +(xicographically using ASCII ordering.)-.15 E F2(times)108 513.6 Q F0 1.229(Print the accumulated user and system times for the shell and for\ - processes run from the shell.)144 226.8 R(The return status is 0.)144 -238.8 Q F1(trap)108 255.6 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E -/F2 10/Times-Italic@0 SF(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...]) -2.5 E .683(The command)144 267.6 R F2(ar)3.513 E(g)-.37 E F0 .683 -(is to be read and e)3.403 F -.15(xe)-.15 G .682 -(cuted when the shell recei).15 F -.15(ve)-.25 G 3.182(ss).15 G -(ignal\(s\))-3.182 E F2(sigspec)3.522 E F0 5.682(.I).31 G(f)-5.682 E F2 -(ar)3.512 E(g)-.37 E F0(is)3.402 E .608(absent \(and there is a single) -144 279.6 R F2(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F13.108 E -F0 3.108(,e)C .608 + processes run from the shell.)144 513.6 R(The return status is 0.)144 +525.6 Q F2(trap)108 542.4 Q F0([)2.5 E F2(\255lp)A F0 2.5(][)C([)-2.5 E +F1(ar)A(g)-.37 E F0(])A F1(sigspec)2.5 E F0(...])2.5 E .682(The command) +144 554.4 R F1(ar)3.512 E(g)-.37 E F0 .682(is to be read and e)3.402 F +-.15(xe)-.15 G .682(cuted when the shell recei).15 F -.15(ve)-.25 G +3.183(ss).15 G(ignal\(s\))-3.183 E F1(sigspec)3.523 E F0 5.683(.I).31 G +(f)-5.683 E F1(ar)3.513 E(g)-.37 E F0(is)3.403 E .609 +(absent \(and there is a single)144 566.4 R F1(sigspec)3.108 E F0 3.108 +(\)o)C(r)-3.108 E F23.108 E F0 3.108(,e)C .608 (ach speci\214ed signal is reset to its original disposition)-3.108 F -.659(\(the v)144 291.6 R .659(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658 -(is the null string the signal speci\214ed by each)3.378 F F2(sigspec) -144.34 303.6 Q F0 .58(is ignored by the shell and by the commands it in) -3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E -F0 .581(is not present and)3.301 F F13.081 E F0(has)3.081 E 1.215 -(been supplied, then the trap commands associated with each)144 315.6 R -F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 -F(gu-)-.18 E .86(ments are supplied or if only)144 327.6 R F13.36 -E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86 +.658(\(the v)144 578.4 R .658(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F1(ar)3.488 E(g)-.37 E F0 .659 +(is the null string the signal speci\214ed by each)3.378 F F1(sigspec) +144.34 590.4 Q F0 .581 +(is ignored by the shell and by the commands it in)3.391 F -.2(vo)-.4 G +-.1(ke).2 G 3.08(s. If).1 F F1(ar)3.41 E(g)-.37 E F0 .58 +(is not present and)3.3 F F23.08 E F0(has)3.08 E 1.214 +(been supplied, then the trap commands associated with each)144 602.4 R +F1(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215 +F(gu-)-.18 E .86(ments are supplied or if only)144 614.4 R F23.36 +E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F2(trap)3.36 E F0 .86 (prints the list of commands associated with each)3.36 F 2.83 -(signal. The)144 339.6 R F12.83 E F0 .33(option causes the shell \ -to print a list of signal names and their corresponding num-)2.83 F 4.31 -(bers. Each)144 351.6 R F2(sigspec)4.65 E F0 1.811 -(is either a signal name de\214ned in <)4.62 F F2(signal.h)A F0 1.811 -(>, or a signal number)B 6.811(.S)-.55 G(ignal)-6.811 E -(names are case insensiti)144 363.6 Q .3 -.15(ve a)-.25 H(nd the).15 E -/F3 9/Times-Bold@0 SF(SIG)2.5 E F0(pre\214x is optional.)2.25 E .667 -(If a)144 381.6 R F2(sigspec)3.507 E F0(is)3.477 E F3(EXIT)3.167 E F0 -.667(\(0\) the command)2.917 F F2(ar)3.496 E(g)-.37 E F0 .666(is e)3.386 -F -.15(xe)-.15 G .666(cuted on e).15 F .666(xit from the shell.)-.15 F -.666(If a)5.666 F F2(sigspec)3.506 E F0(is)3.476 E F3(DE-)3.166 E -.09 -(BU)144 393.6 S(G).09 E/F4 9/Times-Roman@0 SF(,)A F0 .483(the command) -2.733 F F2(ar)3.313 E(g)-.37 E F0 .483(is e)3.203 F -.15(xe)-.15 G .484 -(cuted before e).15 F -.15(ve)-.25 G(ry).15 E F2 .484(simple command) -2.984 F F0(,)A F2(for)2.984 E F0(command,)2.984 E F2(case)2.984 E F0 -(command,)2.984 E F2(select)144 405.6 Q F0 .563(command, e)3.063 F -.15 -(ve)-.25 G .563(ry arithmetic).15 F F2(for)3.063 E F0 .563 -(command, and before the \214rst command e)3.063 F -.15(xe)-.15 G .562 -(cutes in a shell).15 F .622(function \(see)144 417.6 R F3 .622 +(signal. The)144 626.4 R F22.83 E F0 .33(option causes the shell \ +to print a list of signal names and their corresponding num-)2.83 F +4.311(bers. Each)144 638.4 R F1(sigspec)4.651 E F0 1.811 +(is either a signal name de\214ned in <)4.621 F F1(signal.h)A F0 1.81 +(>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E +(names are case insensiti)144 650.4 Q .3 -.15(ve a)-.25 H(nd the).15 E +F3(SIG)2.5 E F0(pre\214x is optional.)2.25 E .666(If a)144 668.4 R F1 +(sigspec)3.506 E F0(is)3.476 E F3(EXIT)3.166 E F0 .666 +(\(0\) the command)2.916 F F1(ar)3.496 E(g)-.37 E F0 .666(is e)3.386 F +-.15(xe)-.15 G .666(cuted on e).15 F .667(xit from the shell.)-.15 F +.667(If a)5.667 F F1(sigspec)3.507 E F0(is)3.477 E F3(DE-)3.167 E -.09 +(BU)144 680.4 S(G).09 E F4(,)A F0 .484(the command)2.734 F F1(ar)3.314 E +(g)-.37 E F0 .484(is e)3.204 F -.15(xe)-.15 G .484(cuted before e).15 F +-.15(ve)-.25 G(ry).15 E F1 .483(simple command)2.984 F F0(,)A F1(for) +2.983 E F0(command,)2.983 E F1(case)2.983 E F0(command,)2.983 E F1 +(select)144 692.4 Q F0 .562(command, e)3.062 F -.15(ve)-.25 G .563 +(ry arithmetic).15 F F1(for)3.063 E F0 .563 +(command, and before the \214rst command e)3.063 F -.15(xe)-.15 G .563 +(cutes in a shell).15 F .623(function \(see)144 704.4 R F3 .622 (SHELL GRAMMAR)3.122 F F0(abo)2.872 E -.15(ve)-.15 G 3.122(\). Refer).15 -F .622(to the description of the)3.122 F F1(extdeb)3.122 E(ug)-.2 E F0 -.622(option to the)3.122 F F1(shopt)144 429.6 Q F0 -.2(bu)2.996 G .496 -(iltin for details of its ef).2 F .496(fect on the)-.25 F F1(DEB)2.996 E -(UG)-.1 E F0 2.996(trap. If)2.996 F(a)2.996 E F2(sigspec)3.336 E F0(is) -3.306 E F3(RETURN)2.996 E F4(,)A F0 .496(the command)2.746 F F2(ar) -144.33 441.6 Q(g)-.37 E F0 .18(is e)2.9 F -.15(xe)-.15 G .18 +F .622(to the description of the)3.122 F F2(extdeb)3.122 E(ug)-.2 E F0 +.622(option to the)3.122 F F2(shopt)144 716.4 Q F0 -.2(bu)2.996 G .496 +(iltin for details of its ef).2 F .496(fect on the)-.25 F F2(DEB)2.996 E +(UG)-.1 E F0 2.996(trap. If)2.996 F(a)2.996 E F1(sigspec)3.336 E F0(is) +3.306 E F3(RETURN)2.996 E F4(,)A F0 .496(the command)2.746 F F1(ar) +144.33 728.4 Q(g)-.37 E F0 .18(is e)2.9 F -.15(xe)-.15 G .18 (cuted each time a shell function or a script e).15 F -.15(xe)-.15 G .18 -(cuted with the).15 F F1(.)2.68 E F0(or)2.68 E F1(sour)2.68 E(ce)-.18 E -F0 -.2(bu)2.68 G .18(iltins \214nishes).2 F -.15(exe)144 453.6 S -(cuting.).15 E .961(If a)144 471.6 R F2(sigspec)3.801 E F0(is)3.771 E F3 -(ERR)3.461 E F4(,)A F0 .961(the command)3.211 F F2(ar)3.791 E(g)-.37 E -F0 .961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 -G 3.461(ra).15 G .96(pipeline \(which may consist of a)-.001 F .185(sin\ -gle simple command\), a list, or a compound command returns a non\255ze\ -ro e)144 483.6 R .185(xit status, subject to)-.15 F .452(the follo)144 -495.6 R .452(wing conditions.)-.25 F(The)5.452 E F3(ERR)2.952 E F0 .451 -(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .451 -(ailed command is part of the com-)-.1 F .387 -(mand list immediately follo)144 507.6 R .387(wing a)-.25 F F1(while) -2.887 E F0(or)2.887 E F1(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 -(ord, part of the test in an)-.1 F F2(if)2.898 E F0 .388 -(statement, part)4.848 F .778(of a command e)144 519.6 R -.15(xe)-.15 G -.778(cuted in a).15 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 .778 -(list e)3.278 F .778(xcept the command follo)-.15 F .778 -(wing the \214nal)-.25 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.277 E F0 -3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 531.6 R -1.28(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v) --3.78 F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F -F1(!)3.78 E F0(.)A(These are the same conditions obe)144 543.6 Q -(yed by the)-.15 E F1(err)2.5 E(exit)-.18 E F0(\()2.5 E F1A F0 2.5 -(\)o)C(ption.)-2.5 E .133 -(Signals ignored upon entry to the shell cannot be trapped or reset.)144 -561.6 R -.35(Tr)5.132 G .132(apped signals that are not be-).35 F .117 -(ing ignored are reset to their original v)144 573.6 R .117 -(alues in a subshell or subshell en)-.25 F .117 -(vironment when one is cre-)-.4 F 2.5(ated. The)144 585.6 R -(return status is f)2.5 E(alse if an)-.1 E(y)-.15 E F2(sigspec)2.84 E F0 -(is in)2.81 E -.25(va)-.4 G(lid; otherwise).25 E F1(trap)2.5 E F0 -(returns true.)2.5 E F1(type)108 602.4 Q F0([)2.5 E F1(\255aftpP)A F0(]) -A F2(name)2.5 E F0([)2.5 E F2(name)A F0(...])2.5 E -.4(Wi)144 614.4 S -.174(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F2 -(name)3.034 E F0 -.1(wo)2.854 G .173 -(uld be interpreted if used as a command name.).1 F .173(If the)5.173 F -F1144 626.4 Q F0 .715(option is used,)3.215 F F1(type)3.215 E F0 -.715(prints a string which is one of)3.215 F F2(alias)3.545 E F0(,).27 E -F2 -.1(ke)3.215 G(ywor)-.2 E(d)-.37 E F0(,).77 E F2(function)5.185 E F0 -(,).24 E F2 -.2(bu)3.215 G(iltin).2 E F0 3.215(,o).24 G(r)-3.215 E F2 -(\214le)5.125 E F0(if)3.395 E F2(name)144.36 638.4 Q F0 .087 -(is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087 -(ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15 -(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F2 -(name)2.946 E F0 .086(is not)2.766 F .118 -(found, then nothing is printed, and an e)144 650.4 R .118 -(xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F -F12.619 E F0 .119(option is used,)2.619 F F1(type)2.619 E F0 .855 -(either returns the name of the disk \214le that w)144 662.4 R .855 -(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F2(name)3.715 E F0 -.855(were speci\214ed as a com-)3.535 F .528(mand name, or nothing if) -144 674.4 R/F5 10/Courier@0 SF .528(type -t name)3.028 F F0 -.1(wo)3.028 -G .528(uld not return).1 F F2(\214le)4.938 E F0 5.528(.T).18 G(he)-5.528 -E F13.028 E F0 .529(option forces a)3.028 F F3 -.666(PA)3.029 G -(TH)-.189 E F0 .007(search for each)144 686.4 R F2(name)2.507 E F0 2.507 -(,e)C -.15(ve)-2.757 G 2.507(ni).15 G(f)-2.507 E F5 .007(type -t name) -2.507 F F0 -.1(wo)2.507 G .007(uld not return).1 F F2(\214le)4.417 E F0 -5.006(.I).18 G 2.506(fac)-5.006 G .006(ommand is hashed,)-2.506 F F1 -2.506 E F0(and)144 698.4 Q F13.23 E F0 .73 -(print the hashed v)3.23 F .731 -(alue, which is not necessarily the \214le that appears \214rst in)-.25 -F F3 -.666(PA)3.231 G(TH)-.189 E F4(.)A F0 .731(If the)5.231 F F1 -144 710.4 Q F0 .824(option is used,)3.324 F F1(type)3.324 E F0 .824 -(prints all of the places that contain an e)3.324 F -.15(xe)-.15 G .823 -(cutable named).15 F F2(name)3.683 E F0 5.823(.T).18 G .823(his in-) --5.823 F 1.176(cludes aliases and functions, if and only if the)144 -722.4 R F13.676 E F0 1.176(option is not also used.)3.676 F 1.177 -(The table of hashed)6.176 F(GNU Bash 5.1)72 768 Q(2020 October 29) -141.235 E(78)190.395 E 0 Cg EP -%%Page: 79 79 +(cuted with the).15 F F2(.)2.68 E F0(or)2.68 E F2(sour)2.68 E(ce)-.18 E +F0 -.2(bu)2.68 G .18(iltins \214nishes).2 F(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(81)185.115 E 0 Cg EP +%%Page: 82 82 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.223 -(commands is not consulted when using)144 84 R/F1 10/Times-Bold@0 SF -3.723 E F0 6.223(.T)C(he)-6.223 E F13.723 E F0 1.223 -(option suppresses shell function lookup, as)3.723 F .325(with the)144 -96 R F1(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F1(type)5.325 E F0 -.325(returns true if all of the ar)2.825 F .326(guments are found, f) --.18 F .326(alse if an)-.1 F 2.826(ya)-.15 G .326(re not)-2.826 F -(found.)144 108 Q F1(ulimit)108 124.8 Q F0([)2.5 E F1(\255HS)A F0(])A F1 -2.5 E(ulimit)108 136.8 Q F0([)2.5 E F1(\255HS)A F0 2.5(][)C F1 -(\255bcde\214klmnpqrstuvxPR)-2.5 E(T)-.4 E F0([)2.5 E/F2 10 -/Times-Italic@0 SF(limit)A F0(]])A(Pro)144 148.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 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.15(exe)144 84 S +(cuting.).15 E .96(If a)144 102 R/F1 10/Times-Italic@0 SF(sigspec)3.8 E +F0(is)3.77 E/F2 9/Times-Bold@0 SF(ERR)3.46 E/F3 9/Times-Roman@0 SF(,)A +F0 .96(the command)3.21 F F1(ar)3.791 E(g)-.37 E F0 .961(is e)3.681 F +-.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G 3.461(rap).15 G +.961(ipeline \(which may consist of a)-3.461 F .185(single simple comma\ +nd\), a list, or a compound command returns a non\255zero e)144 114 R +.184(xit status, subject to)-.15 F .451(the follo)144 126 R .451 +(wing conditions.)-.25 F(The)5.451 E F2(ERR)2.951 E F0 .451 +(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .452 +(ailed command is part of the com-)-.1 F .388 +(mand list immediately follo)144 138 R .388(wing a)-.25 F/F4 10 +/Times-Bold@0 SF(while)2.888 E F0(or)2.888 E F4(until)2.888 E F0 -.1(ke) +2.888 G(yw)-.05 E .388(ord, part of the test in an)-.1 F F1(if)2.897 E +F0 .387(statement, part)4.847 F .777(of a command e)144 150 R -.15(xe) +-.15 G .778(cuted in a).15 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E +F0 .778(list e)3.278 F .778(xcept the command follo)-.15 F .778 +(wing the \214nal)-.25 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E F0 +3.278(,a)C -.15(ny)-3.278 G 1.28(command in a pipeline b)144 162 R 1.28 +(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)-3.78 +F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F F4(!) +3.78 E F0(.)A(These are the same conditions obe)144 174 Q(yed by the) +-.15 E F4(err)2.5 E(exit)-.18 E F0(\()2.5 E F4A F0 2.5(\)o)C +(ption.)-2.5 E .132 +(Signals ignored upon entry to the shell cannot be trapped or reset.)144 +192 R -.35(Tr)5.133 G .133(apped signals that are not be-).35 F .117 +(ing ignored are reset to their original v)144 204 R .117 +(alues in a subshell or subshell en)-.25 F .117 +(vironment when one is cre-)-.4 F 2.5(ated. The)144 216 R +(return status is f)2.5 E(alse if an)-.1 E(y)-.15 E F1(sigspec)2.84 E F0 +(is in)2.81 E -.25(va)-.4 G(lid; otherwise).25 E F4(trap)2.5 E F0 +(returns true.)2.5 E F4(type)108 232.8 Q F0([)2.5 E F4(\255aftpP)A F0(]) +A F1(name)2.5 E F0([)2.5 E F1(name)A F0(...])2.5 E -.4(Wi)144 244.8 S +.173(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F1 +(name)3.033 E F0 -.1(wo)2.853 G .174 +(uld be interpreted if used as a command name.).1 F .174(If the)5.174 F +F4144 256.8 Q F0 .715(option is used,)3.215 F F4(type)3.215 E F0 +.715(prints a string which is one of)3.215 F F1(alias)3.545 E F0(,).27 E +F1 -.1(ke)3.215 G(ywor)-.2 E(d)-.37 E F0(,).77 E F1(function)5.185 E F0 +(,).24 E F1 -.2(bu)3.215 G(iltin).2 E F0 3.215(,o).24 G(r)-3.215 E F1 +(\214le)5.125 E F0(if)3.395 E F1(name)144.36 268.8 Q F0 .086 +(is an alias, shell reserv)2.766 F .086(ed w)-.15 F .086 +(ord, function, b)-.1 F .087(uiltin, or disk \214le, respecti)-.2 F -.15 +(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F1 +(name)2.947 E F0 .087(is not)2.767 F .119 +(found, then nothing is printed, and an e)144 280.8 R .118 +(xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F +F42.618 E F0 .118(option is used,)2.618 F F4(type)2.618 E F0 .855 +(either returns the name of the disk \214le that w)144 292.8 R .855 +(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F1(name)3.715 E F0 +.855(were speci\214ed as a com-)3.535 F .529(mand name, or nothing if) +144 304.8 R/F5 10/Courier@0 SF .528(type -t name)3.028 F F0 -.1(wo)3.028 +G .528(uld not return).1 F F1(\214le)4.938 E F0 5.528(.T).18 G(he)-5.528 +E F43.028 E F0 .528(option forces a)3.028 F F2 -.666(PA)3.028 G +(TH)-.189 E F0 .006(search for each)144 316.8 R F1(name)2.506 E F0 2.506 +(,e)C -.15(ve)-2.756 G 2.506(ni).15 G(f)-2.506 E F5 .007(type -t name) +2.506 F F0 -.1(wo)2.507 G .007(uld not return).1 F F1(\214le)4.417 E F0 +5.007(.I).18 G 2.507(fac)-5.007 G .007(ommand is hashed,)-2.507 F F4 +2.507 E F0(and)144 328.8 Q F43.231 E F0 .731 +(print the hashed v)3.231 F .73 +(alue, which is not necessarily the \214le that appears \214rst in)-.25 +F F2 -.666(PA)3.23 G(TH)-.189 E F3(.)A F0 .73(If the)5.23 F F4144 +340.8 Q F0 .823(option is used,)3.323 F F4(type)3.323 E F0 .824 +(prints all of the places that contain an e)3.323 F -.15(xe)-.15 G .824 +(cutable named).15 F F1(name)3.684 E F0 5.824(.T).18 G .824(his in-) +-5.824 F 1.176(cludes aliases and functions, if and only if the)144 +352.8 R F43.676 E F0 1.176(option is not also used.)3.676 F 1.176 +(The table of hashed)6.176 F 1.223(commands is not consulted when using) +144 364.8 R F43.723 E F0 6.223(.T)C(he)-6.223 E F43.723 E F0 +1.223(option suppresses shell function lookup, as)3.723 F .326(with the) +144 376.8 R F4(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F4(type) +5.326 E F0 .326(returns true if all of the ar)2.826 F .325 +(guments are found, f)-.18 F .325(alse if an)-.1 F 2.825(ya)-.15 G .325 +(re not)-2.825 F(found.)144 388.8 Q F4(ulimit)108 405.6 Q F0([)2.5 E F4 +(\255HS)A F0(])A F42.5 E(ulimit)108 417.6 Q F0([)2.5 E F4(\255HS)A +F0 2.5(][)C F4(\255bcde\214klmnpqrstuvxPR)-2.5 E(T)-.4 E F0([)2.5 E F1 +(limit)A F0(]])A(Pro)144 429.6 Q .243(vides control o)-.15 F -.15(ve) +-.15 G 2.743(rt).15 G .243(he resources a)-2.743 F -.25(va)-.2 G .244 (ilable to the shell and to processes started by it, on systems).25 F -.943(that allo)144 160.8 R 3.443(ws)-.25 G .943(uch control.)-3.443 F -(The)5.943 E F13.443 E F0(and)3.443 E F13.444 E F0 .944 +.944(that allo)144 441.6 R 3.444(ws)-.25 G .944(uch control.)-3.444 F +(The)5.944 E F43.444 E F0(and)3.444 E F43.444 E F0 .943 (options specify that the hard or soft limit is set for the)3.444 F(gi) -144 172.8 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 +144 453.6 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208 (hard limit cannot be increased by a non-root user once it is set; a so\ -ft limit may)2.709 F .425(be increased up to the v)144 184.8 R .425 -(alue of the hard limit.)-.25 F .426(If neither)5.425 F F12.926 E -F0(nor)2.926 E F12.926 E F0 .426 -(is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144 -196.8 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139 +ft limit may)2.708 F .426(be increased up to the v)144 465.6 R .426 +(alue of the hard limit.)-.25 F .425(If neither)5.426 F F42.925 E +F0(nor)2.925 E F42.925 E F0 .425 +(is speci\214ed, both the soft and)2.925 F .139(hard limits are set.)144 +477.6 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139 (can be a number in the unit speci\214ed for the resource or one)3.319 F -.741(of the special v)144 208.8 R(alues)-.25 E F1(hard)3.241 E F0(,)A F1 -(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w) -C .741(hich stand for the current hard limit, the current)-3.241 F .024 -(soft limit, and no limit, respecti)144 220.8 R -.15(ve)-.25 G(ly).15 E -5.023(.I)-.65 G(f)-5.023 E F2(limit)2.613 E F0 .023 +.742(of the special v)144 489.6 R(alues)-.25 E F4(hard)3.242 E F0(,)A F4 +(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F4(unlimited)3.241 E F0 3.241(,w) +C .741(hich stand for the current hard limit, the current)-3.241 F .023 +(soft limit, and no limit, respecti)144 501.6 R -.15(ve)-.25 G(ly).15 E +5.023(.I)-.65 G(f)-5.023 E F1(limit)2.613 E F0 .023 (is omitted, the current v)3.203 F .023 -(alue of the soft limit of the re-)-.25 F .984 -(source is printed, unless the)144 232.8 R F13.484 E F0 .984 -(option is gi)3.484 F -.15(ve)-.25 G 3.484(n. When).15 F .985 +(alue of the soft limit of the re-)-.25 F .985 +(source is printed, unless the)144 513.6 R F43.485 E F0 .984 +(option is gi)3.485 F -.15(ve)-.25 G 3.484(n. When).15 F .984 (more than one resource is speci\214ed, the)3.484 F .7 -(limit name and unit, if appropriate, are printed before the v)144 244.8 +(limit name and unit, if appropriate, are printed before the v)144 525.6 R 3.2(alue. Other)-.25 F .7(options are interpreted as)3.2 F(follo)144 -256.8 Q(ws:)-.25 E F1144 268.8 Q F0 -(All current limits are reported; no limits are set)180 268.8 Q F1 -144 280.8 Q F0(The maximum sock)180 280.8 Q(et b)-.1 E(uf)-.2 E -(fer size)-.25 E F1144 292.8 Q F0 -(The maximum size of core \214les created)180 292.8 Q F1144 304.8 -Q F0(The maximum size of a process')180 304.8 Q 2.5(sd)-.55 G(ata se) --2.5 E(gment)-.15 E F1144 316.8 Q F0 -(The maximum scheduling priority \("nice"\))180 316.8 Q F1144 -328.8 Q F0 +537.6 Q(ws:)-.25 E F4144 549.6 Q F0 +(All current limits are reported; no limits are set)180 549.6 Q F4 +144 561.6 Q F0(The maximum sock)180 561.6 Q(et b)-.1 E(uf)-.2 E +(fer size)-.25 E F4144 573.6 Q F0 +(The maximum size of core \214les created)180 573.6 Q F4144 585.6 +Q F0(The maximum size of a process')180 585.6 Q 2.5(sd)-.55 G(ata se) +-2.5 E(gment)-.15 E F4144 597.6 Q F0 +(The maximum scheduling priority \("nice"\))180 597.6 Q F4144 +609.6 Q F0 (The maximum size of \214les written by the shell and its children)180 -328.8 Q F1144 340.8 Q F0(The maximum number of pending signals)180 -340.8 Q F1144 352.8 Q F0 -(The maximum number of kqueues that may be allocated)180 352.8 Q F1 -144 364.8 Q F0(The maximum size that may be lock)180 364.8 Q -(ed into memory)-.1 E F1144 376.8 Q F0 -(The maximum resident set size \(man)180 376.8 Q 2.5(ys)-.15 G -(ystems do not honor this limit\))-2.5 E F1144 388.8 Q F0 .791(Th\ +609.6 Q F4144 621.6 Q F0(The maximum number of pending signals)180 +621.6 Q F4144 633.6 Q F0 +(The maximum number of kqueues that may be allocated)180 633.6 Q F4 +144 645.6 Q F0(The maximum size that may be lock)180 645.6 Q +(ed into memory)-.1 E F4144 657.6 Q F0 +(The maximum resident set size \(man)180 657.6 Q 2.5(ys)-.15 G +(ystems do not honor this limit\))-2.5 E F4144 669.6 Q F0 .791(Th\ e maximum number of open \214le descriptors \(most systems do not allo) -180 388.8 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F -(be set\))180 400.8 Q F1144 412.8 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))180 412.8 Q F1 -144 424.8 Q F0 -(The maximum number of bytes in POSIX message queues)180 424.8 Q F1 -144 436.8 Q F0(The maximum real-time scheduling priority)180 436.8 -Q F1144 448.8 Q F0(The maximum stack size)180 448.8 Q F1144 -460.8 Q F0(The maximum amount of cpu time in seconds)180 460.8 Q F1 -144 472.8 Q F0(The maximum number of processes a)180 472.8 Q -.25 -(va)-.2 G(ilable to a single user).25 E F1144 484.8 Q F0 .47 -(The maximum amount of virtual memory a)180 484.8 R -.25(va)-.2 G .47 -(ilable to the shell and, on some systems, to).25 F(its children)180 -496.8 Q F1144 508.8 Q F0(The maximum number of \214le locks)180 -508.8 Q F1144 520.8 Q F0(The maximum number of pseudoterminals)180 -520.8 Q F1144 532.8 Q F0(The maximum time a real-time process can\ - run before blocking, in microseconds)180 532.8 Q F1144 544.8 Q F0 -(The maximum number of threads)180 544.8 Q(If)144 561.6 Q F2(limit)3.058 -E F0 .468(is gi)3.648 F -.15(ve)-.25 G .468(n, and the).15 F F1 -2.968 E F0 .468(option is not used,)2.968 F F2(limit)2.968 E F0 .468 -(is the ne)2.968 F 2.968(wv)-.25 G .468 -(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .045 -(no option is gi)144 573.6 R -.15(ve)-.25 G .045(n, then).15 F F1 -2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 -(lues are in 1024-byte increments, e)1.11 F .044(xcept for)-.15 F F1 -2.544 E F0 2.544(,w)C .044(hich is)-2.544 F .67(in seconds;)144 -585.6 R F13.17 E F0 3.17(,w)C .67(hich is in microseconds;)-3.17 F +180 669.6 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F +(be set\))180 681.6 Q F4144 693.6 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))180 693.6 Q F4 +144 705.6 Q F0 +(The maximum number of bytes in POSIX message queues)180 705.6 Q F4 +144 717.6 Q F0(The maximum real-time scheduling priority)180 717.6 +Q(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(82)185.115 E 0 Cg EP +%%Page: 83 83 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q F0(The maximum stack size)180 84 Q F1144 96 Q F0 +(The maximum amount of cpu time in seconds)180 96 Q F1144 108 Q F0 +(The maximum number of processes a)180 108 Q -.25(va)-.2 G +(ilable to a single user).25 E F1144 120 Q F0 .47 +(The maximum amount of virtual memory a)180 120 R -.25(va)-.2 G .47 +(ilable to the shell and, on some systems, to).25 F(its children)180 132 +Q F1144 144 Q F0(The maximum number of \214le locks)180 144 Q F1 +144 156 Q F0(The maximum number of pseudoterminals)180 156 Q F1 +144 168 Q F0(The maximum time a real-time process can run before \ +blocking, in microseconds)180 168 Q F1144 180 Q F0 +(The maximum number of threads)180 180 Q(If)144 196.8 Q/F2 10 +/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G +.468(n, and the).15 F F12.968 E F0 .468(option is not used,)2.968 +F F2(limit)2.968 E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468 +(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .044 +(no option is gi)144 208.8 R -.15(ve)-.25 G .044(n, then).15 F F1 +2.544 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 +(lues are in 1024-byte increments, e)1.11 F .045(xcept for)-.15 F F1 +2.545 E F0 2.545(,w)C .045(hich is)-2.545 F .67(in seconds;)144 +220.8 R F13.17 E F0 3.17(,w)C .67(hich is in microseconds;)-3.17 F F13.17 E F0 3.17(,w)C .67(hich is in units of 512-byte blocks;) -3.17 F F13.17 E F0(,)A F13.17 E F0(,)A F13.17 E F0(,) -A F1144 597.6 Q F0(,)A F13.737 E F0 3.737(,a)C(nd)-3.737 E +A F1144 232.8 Q F0(,)A F13.736 E F0 3.736(,a)C(nd)-3.736 E F13.736 E F0 3.736(,w)C 1.236(hich are unscaled v)-3.736 F 1.236 (alues; and, when in posix mode,)-.25 F F13.736 E F0(and)3.736 E -F13.736 E F0 3.736(,w)C 1.236(hich are in)-3.736 F .238 -(512-byte increments.)144 609.6 R .238 -(The return status is 0 unless an in)5.238 F -.25(va)-.4 G .238 +F13.736 E F0 3.736(,w)C 1.237(hich are in)-3.736 F .239 +(512-byte increments.)144 244.8 R .238 +(The return status is 0 unless an in)5.239 F -.25(va)-.4 G .238 (lid option or ar).25 F .238(gument is supplied, or an)-.18 F -(error occurs while setting a ne)144 621.6 Q 2.5(wl)-.25 G(imit.)-2.5 E -F1(umask)108 638.4 Q F0([)2.5 E F1A F0 2.5(][)C F1-2.5 E F0 +(error occurs while setting a ne)144 256.8 Q 2.5(wl)-.25 G(imit.)-2.5 E +F1(umask)108 273.6 Q F0([)2.5 E F1A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(mode)-2.5 E F0(])A .18 -(The user \214le-creation mask is set to)144 650.4 R F2(mode)3.06 E F0 +(The user \214le-creation mask is set to)144 285.6 R F2(mode)3.06 E F0 5.18(.I).18 G(f)-5.18 E F2(mode)3.06 E F0(be)2.86 E .18 (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 662.4 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -674.4 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382 +pted by)144 297.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +309.6 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 (alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 (option causes the mask to be)2.882 F .547 -(printed in symbolic form; the def)144 686.4 R .547 +(printed in symbolic form; the def)144 321.6 R .547 (ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G (he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 -(mode)144.38 698.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 710.4 Q +(mode)144.38 333.6 Q F0 .551 +(is omitted, the output is in a form that may be reused as input.)3.231 +F .552(The return status is 0 if the)5.552 F(mode w)144 345.6 Q (as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E -(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E -(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(79)190.395 E 0 Cg EP -%%Page: 80 80 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(unalias)108 84 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C/F2 10 -/Times-Italic@0 SF(name)-2.5 E F0(...])2.5 E(Remo)144 96 Q 1.057 -.15 -(ve e)-.15 H(ach).15 E F2(name)3.257 E F0 .757 -(from the list of de\214ned aliases.)3.257 F(If)5.758 E F13.258 E -F0 .758(is supplied, all alias de\214nitions are re-)3.258 F(mo)144 108 -Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E +(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1 +(unalias)108 362.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 +(...])2.5 E(Remo)144 374.4 Q 1.058 -.15(ve e)-.15 H(ach).15 E F2(name) +3.258 E F0 .758(from the list of de\214ned aliases.)3.258 F(If)5.758 E +F13.258 E F0 .757(is supplied, all alias de\214nitions are re-) +3.258 F(mo)144 386.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E (alue is true unless a supplied)-.25 E F2(name)2.86 E F0 -(is not a de\214ned alias.)2.68 E F1(unset)108 124.8 Q F0<5bad>2.5 E F1 +(is not a de\214ned alias.)2.68 E F1(unset)108 403.2 Q F0<5bad>2.5 E F1 (fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) -2.5 E -.15(Fo)144 136.8 S 3.804(re).15 G(ach)-3.804 E F2(name)4.164 E F0 -3.804(,r).18 G(emo)-3.804 E 1.604 -.15(ve t)-.15 H 1.304 +2.5 E -.15(Fo)144 415.2 S 3.803(re).15 G(ach)-3.803 E F2(name)4.163 E F0 +3.803(,r).18 G(emo)-3.803 E 1.603 -.15(ve t)-.15 H 1.303 (he corresponding v).15 F 1.303(ariable or function.)-.25 F 1.303 -(If the)6.303 F F13.803 E F0 1.303(option is gi)3.803 F -.15(ve) --.25 G 1.303(n, each).15 F F2(name)144.36 148.8 Q F0 .464 -(refers to a shell v)3.144 F .464(ariable, and that v)-.25 F .464 -(ariable is remo)-.25 F -.15(ve)-.15 G 2.965(d. Read-only).15 F -.25(va) -2.965 G .465(riables may not be un-).25 F 2.769(set. If)144 160.8 R F1 -2.769 E F0 .269(is speci\214ed, each)2.769 F F2(name)3.129 E F0 +(If the)6.303 F F13.804 E F0 1.304(option is gi)3.804 F -.15(ve) +-.25 G 1.304(n, each).15 F F2(name)144.36 427.2 Q F0 .465 +(refers to a shell v)3.145 F .464(ariable, and that v)-.25 F .464 +(ariable is remo)-.25 F -.15(ve)-.15 G 2.964(d. Read-only).15 F -.25(va) +2.964 G .464(riables may not be un-).25 F 2.768(set. If)144 439.2 R F1 +2.768 E F0 .269(is speci\214ed, each)2.768 F F2(name)3.129 E F0 .269(refers to a shell function, and the function de\214nition is remo) -2.949 F -.15(ve)-.15 G(d.).15 E .403(If the)144 172.8 R F12.903 E +2.949 F -.15(ve)-.15 G(d.).15 E .404(If the)144 451.2 R F12.904 E F0 .404(option is supplied, and)2.904 F F2(name)2.904 E F0 .404(is a v) 2.904 F .404(ariable with the)-.25 F F2(namer)2.904 E(ef)-.37 E F0 -(attrib)2.904 E(ute,)-.2 E F2(name)2.904 E F0 .404(will be unset)2.904 F -.72(rather than the v)144 184.8 R .72(ariable it references.)-.25 F F1 -5.72 E F0 .72(has no ef)3.22 F .719(fect if the)-.25 F F1 -3.219 E F0 .719(option is supplied.)3.219 F .719(If no options)5.719 F -.736(are supplied, each)144 196.8 R F2(name)3.236 E F0 .736 -(refers to a v)3.236 F .737(ariable; if there is no v)-.25 F .737 -(ariable by that name, a function with)-.25 F 1.762(that name, if an)144 -208.8 R 3.062 -.65(y, i)-.15 H 4.262(su).65 G 4.261(nset. Each)-4.262 F +(attrib)2.904 E(ute,)-.2 E F2(name)2.904 E F0 .403(will be unset)2.904 F +.719(rather than the v)144 463.2 R .719(ariable it references.)-.25 F F1 +5.719 E F0 .719(has no ef)3.219 F .719(fect if the)-.25 F F1 +3.22 E F0 .72(option is supplied.)3.22 F .72(If no options)5.72 F .737 +(are supplied, each)144 475.2 R F2(name)3.237 E F0 .737(refers to a v) +3.237 F .737(ariable; if there is no v)-.25 F .736 +(ariable by that name, a function with)-.25 F 1.761(that name, if an)144 +487.2 R 3.061 -.65(y, i)-.15 H 4.261(su).65 G 4.261(nset. Each)-4.261 F 1.761(unset v)4.261 F 1.761(ariable or function is remo)-.25 F -.15(ve) --.15 G 4.261(df).15 G 1.761(rom the en)-4.261 F(vironment)-.4 E 3.171 -(passed to subsequent commands.)144 220.8 R 3.172(If an)8.172 F 5.672 +-.15 G 4.262(df).15 G 1.762(rom the en)-4.262 F(vironment)-.4 E 3.172 +(passed to subsequent commands.)144 499.2 R 3.172(If an)8.172 F 5.672 (yo)-.15 G(f)-5.672 E/F3 9/Times-Bold@0 SF -.27(BA)5.672 G(SH_ALIASES) -.27 E/F4 9/Times-Roman@0 SF(,)A F3 -.27(BA)5.422 G(SH_ARGV0).27 E F4(,)A -F3 -.27(BA)5.422 G(SH_CMDS).27 E F4(,)A F3 -.27(BA)144 232.8 S -(SH_COMMAND).27 E F4(,)A F3 -.27(BA)11.482 G(SH_SUBSHELL).27 E F4(,)A F3 +.27 E/F4 9/Times-Roman@0 SF(,)A F3 -.27(BA)5.421 G(SH_ARGV0).27 E F4(,)A +F3 -.27(BA)5.421 G(SH_CMDS).27 E F4(,)A F3 -.27(BA)144 511.2 S +(SH_COMMAND).27 E F4(,)A F3 -.27(BA)11.481 G(SH_SUBSHELL).27 E F4(,)A F3 -.27(BA)11.482 G(SHPID).27 E F4(,)A F3(COMP_W)11.482 E(ORDBREAKS)-.09 E -F4(,)A F3(DIRST)11.481 E -.495(AC)-.81 G(K).495 E F4(,)A F3(EPOCHREAL) -144 244.8 Q(TIME)-.828 E F4(,)A F3(EPOCHSECONDS)2.67 E F4(,)A F3(FUNCN) +F4(,)A F3(DIRST)11.482 E -.495(AC)-.81 G(K).495 E F4(,)A F3(EPOCHREAL) +144 523.2 Q(TIME)-.828 E F4(,)A F3(EPOCHSECONDS)2.67 E F4(,)A F3(FUNCN) 2.67 E(AME)-.18 E F4(,)A F3(GR)2.67 E(OUPS)-.27 E F4(,)A F3(HISTCMD)2.67 E F4(,)A F3(LINENO)2.67 E F4(,)A F3(RANDOM)2.67 E F4(,)A F3(SECONDS)144 -256.8 Q F4(,)A F0(or)4.03 E F3(SRANDOM)4.28 E F0 1.779(are unset, the) -4.03 F 4.279(yl)-.15 G 1.779(ose their special properties, e)-4.279 F --.15(ve)-.25 G 4.279(ni).15 G 4.279(ft)-4.279 G(he)-4.279 E 4.279(ya) --.15 G 1.779(re subse-)-4.279 F(quently reset.)144 268.8 Q(The e)5 E -(xit status is true unless a)-.15 E F2(name)2.86 E F0(is readonly)2.68 E -(.)-.65 E F1(wait)108 285.6 Q F0([)2.5 E F1(\255fn)A F0 2.5(][)C F1 --2.5 E F2(varname)2.5 E F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8 -(Wa)144 297.6 S .659(it for each speci\214ed child process and return i\ -ts termination status.).8 F(Each)5.659 E F2(id)3.169 E F0 .659 -(may be a process)3.929 F .009 -(ID or a job speci\214cation; if a job spec is gi)144 309.6 R -.15(ve) --.25 G .008(n, all processes in that job').15 F 2.508(sp)-.55 G .008 -(ipeline are w)-2.508 F .008(aited for)-.1 F 5.008(.I)-.55 G(f)-5.008 E -F2(id)144.01 321.6 Q F0 .441(is not gi)3.711 F -.15(ve)-.25 G(n,).15 E -F1(wait)2.941 E F0 -.1(wa)2.941 G .441 +535.2 Q F4(,)A F0(or)4.029 E F3(SRANDOM)4.279 E F0 1.779(are unset, the) +4.029 F 4.279(yl)-.15 G 1.779(ose their special properties, e)-4.279 F +-.15(ve)-.25 G 4.279(ni).15 G 4.28(ft)-4.279 G(he)-4.28 E 4.28(ya)-.15 G +1.78(re subse-)-4.28 F(quently reset.)144 547.2 Q(The e)5 E +(xit status is true unless a)-.15 E F2(name)2.86 E F0 +(is readonly or may not be unset.)2.68 E F1(wait)108 564 Q F0([)2.5 E F1 +(\255fn)A F0 2.5(][)C F1-2.5 E F2(varname)2.5 E F0 2.5(][)C F2 +(id ...)-2.5 E F0(])A -.8(Wa)144 576 S .659(it for each speci\214ed chi\ +ld process and return its termination status.).8 F(Each)5.659 E F2(id) +3.169 E F0 .658(may be a process)3.928 F .008 +(ID or a job speci\214cation; if a job spec is gi)144 588 R -.15(ve)-.25 +G .009(n, all processes in that job').15 F 2.509(sp)-.55 G .009 +(ipeline are w)-2.509 F .009(aited for)-.1 F 5.009(.I)-.55 G(f)-5.009 E +F2(id)144.01 600 Q F0 .442(is not gi)3.712 F -.15(ve)-.25 G(n,).15 E F1 +(wait)2.942 E F0 -.1(wa)2.942 G .441 (its for all running background jobs and the last-e).1 F -.15(xe)-.15 G -.442(cuted process substitu-).15 F .598 -(tion, if its process id is the same as)144 333.6 R F1($!)3.098 E F0 -3.098(,a)C .598(nd the return status is zero.)-3.098 F .597(If the)5.597 -F F13.097 E F0 .597(option is supplied,)3.097 F F1(wait)144 345.6 -Q F0 -.1(wa)3.082 G .583(its for a single job from the list of).1 F F2 -(id)3.083 E F0 3.083(so)C 1.383 -.4(r, i)-3.083 H 3.083(fn).4 G(o)-3.083 -E F2(id)3.083 E F0 3.083(sa)C .583(re supplied, an)-3.083 F 3.083(yj) --.15 G .583(ob, to complete and)-3.083 F .404(returns its e)144 357.6 R -.404(xit status.)-.15 F .403(If none of the supplied ar)5.403 F .403 -(guments is a child of the shell, or if no ar)-.18 F(guments)-.18 E .572 -(are supplied and the shell has no unw)144 369.6 R .573 -(aited-for children, the e)-.1 F .573(xit status is 127.)-.15 F .573 -(If the)5.573 F F13.073 E F0 .573(option is)3.073 F .39 +.441(cuted process substitu-).15 F .597 +(tion, if its process id is the same as)144 612 R F1($!)3.098 E F0 3.098 +(,a)C .598(nd the return status is zero.)-3.098 F .598(If the)5.598 F F1 +3.098 E F0 .598(option is supplied,)3.098 F F1(wait)144 624 Q F0 +-.1(wa)3.083 G .583(its for a single job from the list of).1 F F2(id) +3.083 E F0 3.083(so)C 1.383 -.4(r, i)-3.083 H 3.083(fn).4 G(o)-3.083 E +F2(id)3.083 E F0 3.083(sa)C .583(re supplied, an)-3.083 F 3.083(yj)-.15 +G .582(ob, to complete and)-3.083 F .403(returns its e)144 636 R .403 +(xit status.)-.15 F .403(If none of the supplied ar)5.403 F .403 +(guments is a child of the shell, or if no ar)-.18 F(guments)-.18 E .573 +(are supplied and the shell has no unw)144 648 R .573 +(aited-for children, the e)-.1 F .573(xit status is 127.)-.15 F .572 +(If the)5.573 F F13.072 E F0 .572(option is)3.072 F .39 (supplied, the process or job identi\214er of the job for which the e) -144 381.6 R .39(xit status is returned is assigned to)-.15 F .905(the v) -144 393.6 R(ariable)-.25 E F2(varname)3.405 E F0 .905 +144 660 R .39(xit status is returned is assigned to)-.15 F .905(the v) +144 672 R(ariable)-.25 E F2(varname)3.405 E F0 .905 (named by the option ar)3.405 F 3.405(gument. The)-.18 F -.25(va)3.405 G .905(riable will be unset initially).25 F 3.405(,b)-.65 G(efore)-3.405 E -(an)144 405.6 Q 3.89(ya)-.15 G 3.89(ssignment. This)-3.89 F 1.39 +(an)144 684 Q 3.89(ya)-.15 G 3.89(ssignment. This)-3.89 F 1.39 (is useful only when the)3.89 F F13.89 E F0 1.39 (option is supplied.)3.89 F 1.39(Supplying the)6.39 F F13.89 E F0 -(option,)3.89 E .574(when job control is enabled, forces)144 417.6 R F1 +(option,)3.89 E .575(when job control is enabled, forces)144 696 R F1 (wait)3.075 E F0 .575(to w)3.075 F .575(ait for)-.1 F F2(id)3.075 E F0 -.575(to terminate before returning its status, in-)3.075 F .635 -(stead of returning when it changes status.)144 429.6 R(If)5.635 E F2 -(id)3.145 E F0 .635(speci\214es a non-e)3.905 F .635 -(xistent process or job, the return)-.15 F(status is 127.)144 441.6 Q -(Otherwise, the return status is the e)5 E -(xit status of the last process or job w)-.15 E(aited for)-.1 E(.)-.55 E -/F5 10.95/Times-Bold@0 SF(SHELL COMP)72 458.4 Q -1.04(AT)-.81 G -(IBILITY MODE)1.04 E F0 .911 -(Bash-4.0 introduced the concept of a `shell compatibility le)108 470.4 -R -.15(ve)-.25 G .912(l', speci\214ed as a set of options to the shopt) -.15 F -.2(bu)108 482.4 S(iltin).2 E F1(compat31)3.378 E F0(,)A F1 -(compat32)3.378 E F0(,)A F1(compat40)3.378 E F0(,)A F1(compat41)3.378 E -F0 3.378(,a)C .878(nd so on\).)-3.378 F .877 -(There is only one current compatibility)5.878 F(le)108 494.4 Q -.15(ve) --.25 G 3.253(l-).15 G 3.253(-e)-3.253 G .753(ach option is mutually e) --3.253 F(xclusi)-.15 E -.15(ve)-.25 G 5.753(.T).15 G .753 -(he compatibility le)-5.753 F -.15(ve)-.25 G 3.254(li).15 G 3.254(si) --3.254 G .754(ntended to allo)-3.254 F 3.254(wu)-.25 G .754 -(sers to select be-)-3.254 F(ha)108 506.4 Q 1.084(vior from pre)-.2 F -1.084(vious v)-.25 F 1.083(ersions that is incompatible with ne)-.15 F -1.083(wer v)-.25 F 1.083(ersions while the)-.15 F 3.583(ym)-.15 G 1.083 -(igrate scripts to use)-3.583 F(current features and beha)108 518.4 Q -(vior)-.2 E 2.5(.I)-.55 G(t')-2.5 E 2.5(si)-.55 G -(ntended to be a temporary solution.)-2.5 E 1.456 -(This section does not mention beha)108 535.2 R 1.457 -(vior that is standard for a particular v)-.2 F 1.457 -(ersion \(e.g., setting)-.15 F F1(compat32)3.957 E F0 .887 -(means that quoting the rhs of the re)108 547.2 R(ge)-.15 E .886 -(xp matching operator quotes special re)-.15 F(ge)-.15 E .886 -(xp characters in the w)-.15 F(ord,)-.1 E(which is def)108 559.2 Q -(ault beha)-.1 E(vior in bash-3.2 and abo)-.2 E -.15(ve)-.15 G(\).).15 E -.522(If a user enables, say)108 576 R(,)-.65 E F1(compat32)3.023 E F0 -3.023(,i)C 3.023(tm)-3.023 G .523(ay af)-3.023 F .523(fect the beha)-.25 -F .523(vior of other compatibility le)-.2 F -.15(ve)-.25 G .523 -(ls up to and includ-).15 F .26(ing the current compatibility le)108 588 -R -.15(ve)-.25 G 2.76(l. The).15 F .259 -(idea is that each compatibility le)2.759 F -.15(ve)-.25 G 2.759(lc).15 -G .259(ontrols beha)-2.759 F .259(vior that changed)-.2 F 1.645 -(in that v)108 600 R 1.646(ersion of)-.15 F F1(bash)4.146 E F0 4.146(,b) -C 1.646(ut that beha)-4.346 F 1.646(vior may ha)-.2 F 1.946 -.15(ve b) --.2 H 1.646(een present in earlier v).15 F 4.146(ersions. F)-.15 F 1.646 -(or instance, the)-.15 F .761 -(change to use locale-based comparisons with the)108 612 R F1([[)3.261 E -F0 .76(command came in bash-4.1, and earlier v)3.261 F .76(ersions used) --.15 F 1.904(ASCII-based comparisons, so enabling)108 624 R F1(compat32) -4.404 E F0 1.905(will enable ASCII-based comparisons as well.)4.404 F -(That)6.905 E .296(granularity may not be suf)108 636 R .296 -(\214cient for all uses, and as a result users should emplo)-.25 F 2.796 -(yc)-.1 G .295(ompatibility le)-2.796 F -.15(ve)-.25 G .295(ls care-).15 -F(fully)108 648 Q 5(.R)-.65 G(ead the documentation for a particular fe\ -ature to \214nd out the current beha)-5 E(vior)-.2 E(.)-.55 E .531 -(Bash-4.3 introduced a ne)108 664.8 R 3.031(ws)-.25 G .531(hell v)-3.031 -F(ariable:)-.25 E F3 -.27(BA)3.031 G(SH_COMP).27 E -.855(AT)-.666 G F4 -(.).855 E F0 .531(The v)5.031 F .531(alue assigned to this v)-.25 F .532 -(ariable \(a decimal)-.25 F -.15(ve)108 676.8 S .108(rsion number lik) -.15 F 2.608(e4)-.1 G .108(.2, or an inte)-2.608 F .108 -(ger corresponding to the)-.15 F F1(compat)2.607 E F2(NN)A F0 .107 -(option, lik)2.607 F 2.607(e4)-.1 G .107(2\) determines the com-)-2.607 -F(patibility le)108 688.8 Q -.15(ve)-.25 G(l.).15 E .387 -(Starting with bash-4.4, Bash has be)108 705.6 R .388 -(gun deprecating older compatibility le)-.15 F -.15(ve)-.25 G 2.888 -(ls. Ev).15 F(entually)-.15 E 2.888(,t)-.65 G .388(he options will) --2.888 F(be remo)108 717.6 Q -.15(ve)-.15 G 2.5(di).15 G 2.5(nf)-2.5 G --.2(avo)-2.6 G 2.5(ro).2 G(f)-2.5 E F3 -.27(BA)2.5 G(SH_COMP).27 E -.855 -(AT)-.666 G F4(.).855 E F0(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 -E(80)190.395 E 0 Cg EP -%%Page: 81 81 +.574(to terminate before returning its status, in-)3.075 F .635 +(stead of returning when it changes status.)144 708 R(If)5.635 E F2(id) +3.145 E F0 .635(speci\214es a non-e)3.905 F .635 +(xistent process or job, the return)-.15 F 1.694(status is 127.)144 720 +R(If)6.694 E F1(wait)4.194 E F0 1.694(is interrupted by a signal, the r\ +eturn status will be greater than 128, as)4.194 F(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(83)185.115 E 0 Cg EP +%%Page: 84 84 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.164 -(Bash-5.0 is the \214nal v)108 84 R 1.164 -(ersion for which there will be an indi)-.15 F 1.163 -(vidual shopt option for the pre)-.25 F 1.163(vious v)-.25 F(ersion.) --.15 E(Users should use)108 96 Q/F1 9/Times-Bold@0 SF -.27(BA)2.5 G -(SH_COMP).27 E -.855(AT)-.666 G F0(on bash-5.0 and later v)3.105 E -(ersions.)-.15 E 1.613(The follo)108 112.8 R 1.613 -(wing table describes the beha)-.25 F 1.613 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .113 +(described under)144 84 R/F1 10/Times-Bold@0 SF(SIGN)2.613 E(ALS)-.2 E +F0(abo)2.613 E -.15(ve)-.15 G 5.113(.O).15 G .113 +(therwise, the return status is the e)-5.113 F .114 +(xit status of the last process)-.15 F(or job w)144 96 Q(aited for)-.1 E +(.)-.55 E/F2 10.95/Times-Bold@0 SF(SHELL COMP)72 112.8 Q -1.04(AT)-.81 G +(IBILITY MODE)1.04 E F0 1.355(Bash-4.0 introduced the concept of a)108 +124.8 R/F3 10/Times-Italic@0 SF 1.355(shell compatibility le)3.855 F +(vel)-.15 E F0 3.855(,s)C 1.354 +(peci\214ed as a set of options to the shopt)-3.855 F -.2(bu)108 136.8 S +.398(iltin \().2 F F1(compat31)2.898 E F0(,)A F1(compat32)2.898 E F0(,)A +F1(compat40)2.898 E F0(,)A F1(compat41)2.898 E F0 2.898(,a)C .399 +(nd so on\).)-2.898 F .399(There is only one current compatibility)5.399 +F(le)108 148.8 Q -.15(ve)-.25 G 3.254(l-).15 G 3.254(-e)-3.254 G .754 +(ach option is mutually e)-3.254 F(xclusi)-.15 E -.15(ve)-.25 G 5.754 +(.T).15 G .754(he compatibility le)-5.754 F -.15(ve)-.25 G 3.253(li).15 +G 3.253(si)-3.253 G .753(ntended to allo)-3.253 F 3.253(wu)-.25 G .753 +(sers to select be-)-3.253 F(ha)108 160.8 Q 1.083(vior from pre)-.2 F +1.083(vious v)-.25 F 1.083(ersions that is incompatible with ne)-.15 F +1.083(wer v)-.25 F 1.083(ersions while the)-.15 F 3.584(ym)-.15 G 1.084 +(igrate scripts to use)-3.584 F(current features and beha)108 172.8 Q +(vior)-.2 E 2.5(.I)-.55 G(t')-2.5 E 2.5(si)-.55 G +(ntended to be a temporary solution.)-2.5 E 1.457 +(This section does not mention beha)108 189.6 R 1.457 +(vior that is standard for a particular v)-.2 F 1.456 +(ersion \(e.g., setting)-.15 F F1(compat32)3.956 E F0 .886 +(means that quoting the rhs of the re)108 201.6 R(ge)-.15 E .886 +(xp matching operator quotes special re)-.15 F(ge)-.15 E .887 +(xp characters in the w)-.15 F(ord,)-.1 E(which is def)108 213.6 Q +(ault beha)-.1 E(vior in bash-3.2 and subsequent v)-.2 E(ersions\).)-.15 +E .523(If a user enables, say)108 230.4 R(,)-.65 E F1(compat32)3.023 E +F0 3.023(,i)C 3.023(tm)-3.023 G .523(ay af)-3.023 F .523(fect the beha) +-.25 F .523(vior of other compatibility le)-.2 F -.15(ve)-.25 G .522 +(ls up to and includ-).15 F .259(ing the current compatibility le)108 +242.4 R -.15(ve)-.25 G 2.759(l. The).15 F .259 +(idea is that each compatibility le)2.759 F -.15(ve)-.25 G 2.76(lc).15 G +.26(ontrols beha)-2.76 F .26(vior that changed)-.2 F 1.646(in that v)108 +254.4 R 1.646(ersion of)-.15 F F1(bash)4.146 E F0 4.146(,b)C 1.646 +(ut that beha)-4.346 F 1.646(vior may ha)-.2 F 1.946 -.15(ve b)-.2 H +1.646(een present in earlier v).15 F 4.146(ersions. F)-.15 F 1.645 +(or instance, the)-.15 F .76 +(change to use locale-based comparisons with the)108 266.4 R F1([[)3.261 +E F0 .761(command came in bash-4.1, and earlier v)3.261 F .761 +(ersions used)-.15 F 1.905(ASCII-based comparisons, so enabling)108 +278.4 R F1(compat32)4.405 E F0 1.904 +(will enable ASCII-based comparisons as well.)4.405 F(That)6.904 E .295 +(granularity may not be suf)108 290.4 R .296 +(\214cient for all uses, and as a result users should emplo)-.25 F 2.796 +(yc)-.1 G .296(ompatibility le)-2.796 F -.15(ve)-.25 G .296(ls care-).15 +F(fully)108 302.4 Q 5(.R)-.65 G(ead the documentation for a particular \ +feature to \214nd out the current beha)-5 E(vior)-.2 E(.)-.55 E .532 +(Bash-4.3 introduced a ne)108 319.2 R 3.032(ws)-.25 G .531(hell v)-3.032 +F(ariable:)-.25 E/F4 9/Times-Bold@0 SF -.27(BA)3.031 G(SH_COMP).27 E +-.855(AT)-.666 G/F5 9/Times-Roman@0 SF(.).855 E F0 .531(The v)5.031 F +.531(alue assigned to this v)-.25 F .531(ariable \(a decimal)-.25 F -.15 +(ve)108 331.2 S .107(rsion number lik).15 F 2.607(e4)-.1 G .107 +(.2, or an inte)-2.607 F .107(ger corresponding to the)-.15 F F1(compat) +2.608 E F3(NN)A F0 .108(option, lik)2.608 F 2.608(e4)-.1 G .108 +(2\) determines the com-)-2.608 F(patibility le)108 343.2 Q -.15(ve)-.25 +G(l.).15 E .388(Starting with bash-4.4, Bash has be)108 360 R .388 +(gun deprecating older compatibility le)-.15 F -.15(ve)-.25 G 2.887 +(ls. Ev).15 F(entually)-.15 E 2.887(,t)-.65 G .387(he options will) +-2.887 F(be remo)108 372 Q -.15(ve)-.15 G 2.5(di).15 G 2.5(nf)-2.5 G -.2 +(avo)-2.6 G 2.5(ro).2 G(f)-2.5 E F4 -.27(BA)2.5 G(SH_COMP).27 E -.855 +(AT)-.666 G F5(.).855 E F0 1.163(Bash-5.0 is the \214nal v)108 388.8 R +1.163(ersion for which there will be an indi)-.15 F 1.164 +(vidual shopt option for the pre)-.25 F 1.164(vious v)-.25 F(ersion.) +-.15 E(Users should use)108 400.8 Q F4 -.27(BA)2.5 G(SH_COMP).27 E -.855 +(AT)-.666 G F0(on bash-5.0 and later v)3.105 E(ersions.)-.15 E 1.614 +(The follo)108 417.6 R 1.613(wing table describes the beha)-.25 F 1.613 (vior changes controlled by each compatibility le)-.2 F -.15(ve)-.25 G -4.113(ls).15 G 4.114(etting. The)-4.113 F/F2 10/Times-Bold@0 SF(compat) -108 124.8 Q/F3 10/Times-Italic@0 SF(NN)A F0 1.186 -(tag is used as shorthand for setting the compatibility le)3.686 F -.15 -(ve)-.25 G 3.686(lt).15 G(o)-3.686 E F3(NN)3.686 E F0 1.186 -(using one of the follo)3.686 F(wing)-.25 E 3.806(mechanisms. F)108 -136.8 R 1.306(or v)-.15 F 1.306 +4.113(ls).15 G 4.113(etting. The)-4.113 F F1(compat)108 429.6 Q F3(NN)A +F0 1.186(tag is used as shorthand for setting the compatibility le)3.685 +F -.15(ve)-.25 G 3.686(lt).15 G(o)-3.686 E F3(NN)3.686 E F0 1.186 +(using one of the follo)3.686 F(wing)-.25 E 3.807(mechanisms. F)108 +441.6 R 1.307(or v)-.15 F 1.307 (ersions prior to bash-5.0, the compatibility le)-.15 F -.15(ve)-.25 G -3.807(lm).15 G 1.307(ay be set using the corresponding)-3.807 F F2 -(compat)108 148.8 Q F3(NN)A F0 .502(shopt option.)3.002 F -.15(Fo)5.502 +3.806(lm).15 G 1.306(ay be set using the corresponding)-3.806 F F1 +(compat)108 453.6 Q F3(NN)A F0 .502(shopt option.)3.002 F -.15(Fo)5.502 G 3.002(rb).15 G .502(ash-4.3 and later v)-3.002 F .502(ersions, the) --.15 F F1 -.27(BA)3.002 G(SH_COMP).27 E -.855(AT)-.666 G F0 -.25(va) +-.15 F F4 -.27(BA)3.002 G(SH_COMP).27 E -.855(AT)-.666 G F0 -.25(va) 3.607 G .502(riable is preferred, and it).25 F -(is required for bash-5.1 and later v)108 160.8 Q(ersions.)-.15 E F2 -(compat31)108 177.6 Q F0<83>144 189.6 Q(quoting the rhs of the)180 189.6 -Q F2([[)2.5 E F0(command')2.5 E 2.5(sr)-.55 G -.15(eg)-2.5 G -.15(ex).15 +(is required for bash-5.1 and later v)108 465.6 Q(ersions.)-.15 E F1 +(compat31)108 482.4 Q F0<83>144 494.4 Q(quoting the rhs of the)180 494.4 +Q F1([[)2.5 E F0(command')2.5 E 2.5(sr)-.55 G -.15(eg)-2.5 G -.15(ex).15 G 2.5(pm).15 G(atching operator \(=~\) has no special ef)-2.5 E(fect) --.25 E F2(compat32)108 206.4 Q F0<83>144 218.4 Q .35 -(interrupting a command list such as "a ; b ; c" causes the e)180 218.4 -R -.15(xe)-.15 G .35(cution of the ne).15 F .35(xt command)-.15 F .018 -(in the list \(in bash-4.0 and later v)180 230.4 R .018 -(ersions, the shell acts as if it recei)-.15 F -.15(ve)-.25 G 2.517(dt) -.15 G .017(he interrupt, so in-)-2.517 F -(terrupting one command in a list aborts the e)180 242.4 Q -.15(xe)-.15 -G(cution of the entire list\)).15 E F2(compat40)108 259.2 Q F0<83>144 -271.2 Q(the)180 271.2 Q F2(<)2.673 E F0(and)2.673 E F2(>)2.673 E F0 .173 -(operators to the)2.673 F F2([[)2.673 E F0 .173 +-.25 E F1(compat32)108 511.2 Q F0<83>144 523.2 Q .35 +(interrupting a command list such as "a ; b ; c" causes the e)180 523.2 +R -.15(xe)-.15 G .35(cution of the ne).15 F .35(xt command)-.15 F .017 +(in the list \(in bash-4.0 and later v)180 535.2 R .018 +(ersions, the shell acts as if it recei)-.15 F -.15(ve)-.25 G 2.518(dt) +.15 G .018(he interrupt, so in-)-2.518 F +(terrupting one command in a list aborts the e)180 547.2 Q -.15(xe)-.15 +G(cution of the entire list\)).15 E F1(compat40)108 564 Q F0<83>144 576 +Q(the)180 576 Q F1(<)2.674 E F0(and)2.674 E F1(>)2.673 E F0 .173 +(operators to the)2.673 F F1([[)2.673 E F0 .173 (command do not consider the current locale when compar)2.673 F(-)-.2 E -.068(ing strings; the)180 283.2 R 2.568(yu)-.15 G .068 -(se ASCII ordering.)-2.568 F .068(Bash v)5.068 F .067 -(ersions prior to bash-4.1 use ASCII collation)-.15 F(and)180 295.2 Q F3 -(str)4.742 E(cmp)-.37 E F0 1.902 -(\(3\); bash-4.1 and later use the current locale').19 F 4.403(sc)-.55 G -1.903(ollation sequence and)-4.403 F F3(str)4.743 E(-)-.2 E(coll)180 -307.2 Q F0(\(3\).).51 E F2(compat41)108 324 Q F0<83>144 336 Q(in)180 336 -Q F3(posix)3.79 E F0(mode,)3.79 E F2(time)3.79 E F0 1.29(may be follo) +.067(ing strings; the)180 588 R 2.567(yu)-.15 G .067(se ASCII ordering.) +-2.567 F .068(Bash v)5.068 F .068 +(ersions prior to bash-4.1 use ASCII collation)-.15 F(and)180 600 Q F3 +(str)4.743 E(cmp)-.37 E F0 1.903 +(\(3\); bash-4.1 and later use the current locale').19 F 4.402(sc)-.55 G +1.902(ollation sequence and)-4.402 F F3(str)4.742 E(-)-.2 E(coll)180 612 +Q F0(\(3\).).51 E F1(compat41)108 628.8 Q F0<83>144 640.8 Q(in)180 640.8 +Q F3(posix)3.79 E F0(mode,)3.79 E F1(time)3.79 E F0 1.29(may be follo) 3.79 F 1.29(wed by options and still be recognized as a reserv)-.25 F -(ed)-.15 E -.1(wo)180 348 S(rd \(this is POSIX interpretation 267\)).1 E -<83>144 360 Q(in)180 360 Q F3(posix)2.708 E F0 .208 -(mode, the parser requires that an e)2.708 F -.15(ve)-.25 G 2.708(nn).15 -G .208(umber of single quotes occur in the)-2.708 F F3(wor)2.709 E(d) --.37 E F0 .282(portion of a double-quoted parameter e)180 372 R .282 -(xpansion and treats them specially)-.15 F 2.781(,s)-.65 G 2.781(ot) --2.781 G .281(hat charac-)-2.781 F(ters within the single quotes are co\ -nsidered quoted \(this is POSIX interpretation 221\))180 384 Q F2 -(compat42)108 400.8 Q F0<83>144 412.8 Q 1.055(the replacement string in\ - double-quoted pattern substitution does not under)180 412.8 R 1.056 -(go quote re-)-.18 F(mo)180 424.8 Q -.25(va)-.15 G(l, as it does in v) -.25 E(ersions after bash-4.2)-.15 E<83>144 436.8 Q .021 -(in posix mode, single quotes are considered special when e)180 436.8 R -.021(xpanding the)-.15 F F3(wor)2.52 E(d)-.37 E F0 .02(portion of a)2.52 -F .017(double-quoted parameter e)180 448.8 R .017 +(ed)-.15 E -.1(wo)180 652.8 S(rd \(this is POSIX interpretation 267\)).1 +E<83>144 664.8 Q(in)180 664.8 Q F3(posix)2.709 E F0 .208 +(mode, the parser requires that an e)2.709 F -.15(ve)-.25 G 2.708(nn).15 +G .208(umber of single quotes occur in the)-2.708 F F3(wor)2.708 E(d) +-.37 E F0 .281(portion of a double-quoted parameter e)180 676.8 R .282 +(xpansion and treats them specially)-.15 F 2.782(,s)-.65 G 2.782(ot) +-2.782 G .282(hat charac-)-2.782 F(ters within the single quotes are co\ +nsidered quoted \(this is POSIX interpretation 221\))180 688.8 Q F1 +(compat42)108 705.6 Q F0<83>144 717.6 Q 1.056(the replacement string in\ + double-quoted pattern substitution does not under)180 717.6 R 1.055 +(go quote re-)-.18 F(mo)180 729.6 Q -.25(va)-.15 G(l, as it does in v) +.25 E(ersions after bash-4.2)-.15 E(GNU Bash 5.2)72 768 Q +(2022 September 19)135.955 E(84)185.115 E 0 Cg EP +%%Page: 85 85 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>144 84 Q .021 +(in posix mode, single quotes are considered special when e)180 84 R +.021(xpanding the)-.15 F/F1 10/Times-Italic@0 SF(wor)2.521 E(d)-.37 E F0 +.021(portion of a)2.521 F .018(double-quoted parameter e)180 96 R .017 (xpansion and can be used to quote a closing brace or other spe-)-.15 F -.999(cial character \(this is part of POSIX interpretation 221\); in la\ -ter v)180 460.8 R .998(ersions, single quotes)-.15 F -(are not special within double-quoted w)180 472.8 Q(ord e)-.1 E -(xpansions)-.15 E F2(compat43)108 489.6 Q F0<83>144 501.6 Q 1.07 -(the shell does not print a w)180 501.6 R 1.071 -(arning message if an attempt is made to use a quoted com-)-.1 F .249 -(pound assignment as an ar)180 513.6 R .248 -(gument to declare \(declare -a foo='\(1 2\)'\). Later v)-.18 F .248 -(ersions w)-.15 F(arn)-.1 E(that this usage is deprecated)180 525.6 Q -<83>144 537.6 Q -.1(wo)180 537.6 S .5(rd e).1 F .501 -(xpansion errors are considered non-f)-.15 F .501 -(atal errors that cause the current command to)-.1 F -.1(fa)180 549.6 S +.998(cial character \(this is part of POSIX interpretation 221\); in la\ +ter v)180 108 R .999(ersions, single quotes)-.15 F +(are not special within double-quoted w)180 120 Q(ord e)-.1 E(xpansions) +-.15 E/F2 10/Times-Bold@0 SF(compat43)108 136.8 Q F0<83>144 148.8 Q +1.071(the shell does not print a w)180 148.8 R 1.07 +(arning message if an attempt is made to use a quoted com-)-.1 F .71 +(pound assignment as an ar)180 160.8 R .711 +(gument to declare \(e.g., declare -a foo=\010\(1 2\)\010\). Later v) +-.18 F(ersions)-.15 E -.1(wa)180 172.8 S +(rn that this usage is deprecated).1 E<83>144 184.8 Q -.1(wo)180 184.8 S +.501(rd e).1 F .501(xpansion errors are considered non-f)-.15 F .501 +(atal errors that cause the current command to)-.1 F -.1(fa)180 196.8 S .605(il, e).1 F -.15(ve)-.25 G 3.105(ni).15 G 3.105(np)-3.105 G .605 (osix mode \(the def)-3.105 F .605(ault beha)-.1 F .605(vior is to mak) -.2 F 3.105(et)-.1 G .605(hem f)-3.105 F .605 -(atal errors that cause the)-.1 F(shell to e)180 561.6 Q(xit\))-.15 E -<83>144 573.6 Q .354(when e)180 573.6 R -.15(xe)-.15 G .354 -(cuting a shell function, the loop state \(while/until/etc.\)).15 F .355 -(is not reset, so)5.354 F F2(br)2.855 E(eak)-.18 E F0(or)2.855 E F2 -(continue)180 585.6 Q F0 .052 +(atal errors that cause the)-.1 F(shell to e)180 208.8 Q(xit\))-.15 E +<83>144 220.8 Q .355(when e)180 220.8 R -.15(xe)-.15 G .354 +(cuting a shell function, the loop state \(while/until/etc.\)).15 F .354 +(is not reset, so)5.354 F F2(br)2.854 E(eak)-.18 E F0(or)2.854 E F2 +(continue)180 232.8 Q F0 .052 (in that function will break or continue loops in the calling conte) -2.553 F .052(xt. Bash-4.4 and)-.15 F(later reset the loop state to pre) -180 597.6 Q -.15(ve)-.25 G(nt this).15 E F2(compat44)108 614.4 Q F0<83> -144 626.4 Q .719(the shell sets up the v)180 626.4 R .719(alues used by) --.25 F F1 -.27(BA)3.219 G(SH_ARGV).27 E F0(and)2.969 E F1 -.27(BA)3.219 -G(SH_ARGC).27 E F0 .719(so the)2.969 F 3.219(yc)-.15 G .719(an e)-3.219 -F(xpand)-.15 E(to the shell')180 638.4 Q 2.5(sp)-.55 G +2.552 F .053(xt. Bash-4.4 and)-.15 F(later reset the loop state to pre) +180 244.8 Q -.15(ve)-.25 G(nt this).15 E F2(compat44)108 261.6 Q F0<83> +144 273.6 Q .719(the shell sets up the v)180 273.6 R .719(alues used by) +-.25 F/F3 9/Times-Bold@0 SF -.27(BA)3.219 G(SH_ARGV).27 E F0(and)2.969 E +F3 -.27(BA)3.219 G(SH_ARGC).27 E F0 .719(so the)2.969 F 3.218(yc)-.15 G +.718(an e)-3.218 F(xpand)-.15 E(to the shell')180 285.6 Q 2.5(sp)-.55 G (ositional parameters e)-2.5 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(fe)-2.5 G -(xtended deb)-2.65 E(ugging mode is not enabled)-.2 E<83>144 650.4 Q -2.635(as)180 650.4 S .135(ubshell inherits loops from its parent conte) --2.635 F .135(xt, so)-.15 F F2(br)2.635 E(eak)-.18 E F0(or)2.635 E F2 -(continue)2.634 E F0 .134(will cause the sub-)2.634 F(shell to e)180 -662.4 Q 2.5(xit. Bash-5.0)-.15 F(and later reset the loop state to pre) -2.5 E -.15(ve)-.25 G(nt the e).15 E(xit)-.15 E<83>144 674.4 Q -.25(va) -180 674.4 S .618(riable assignments preceding b).25 F .618(uiltins lik) +(xtended deb)-2.65 E(ugging mode is not enabled)-.2 E<83>144 297.6 Q +2.634(as)180 297.6 S .134(ubshell inherits loops from its parent conte) +-2.634 F .135(xt, so)-.15 F F2(br)2.635 E(eak)-.18 E F0(or)2.635 E F2 +(continue)2.635 E F0 .135(will cause the sub-)2.635 F(shell to e)180 +309.6 Q 2.5(xit. Bash-5.0)-.15 F(and later reset the loop state to pre) +2.5 E -.15(ve)-.25 G(nt the e).15 E(xit)-.15 E<83>144 321.6 Q -.25(va) +180 321.6 S .619(riable assignments preceding b).25 F .618(uiltins lik) -.2 F(e)-.1 E F2(export)3.118 E F0(and)3.118 E F2 -.18(re)3.118 G -(adonly).18 E F0 .618(that set attrib)3.118 F .619(utes con-)-.2 F .12 -(tinue to af)180 686.4 R .12(fect v)-.25 F .119 -(ariables with the same name in the calling en)-.25 F .119(vironment e) --.4 F -.15(ve)-.25 G 2.619(ni).15 G 2.619(ft)-2.619 G .119(he shell is) --2.619 F(not in posix mode)180 698.4 Q(GNU Bash 5.1)72 768 Q -(2020 October 29)141.235 E(81)190.395 E 0 Cg EP -%%Page: 82 82 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(compat50)108 84 Q F0<83>144 96 Q 1.209(Bash-5.1 changed the w)180 96 -R(ay)-.1 E/F2 9/Times-Bold@0 SF($RANDOM)3.709 E F0 1.209 -(is generated to introduce slightly more random-)3.459 F 1.019 -(ness. If the shell compatibility le)180 108 R -.15(ve)-.25 G 3.518(li) -.15 G 3.518(ss)-3.518 G 1.018(et to 50 or lo)-3.518 F(wer)-.25 E 3.518 -(,i)-.4 G 3.518(tr)-3.518 G -2.15 -.25(ev e)-3.518 H 1.018 -(rts to the method from).25 F .732(bash-5.0 and pre)180 120 R .732 -(vious v)-.25 F .733 +(adonly).18 E F0 .618(that set attrib)3.118 F .618(utes con-)-.2 F .119 +(tinue to af)180 333.6 R .119(fect v)-.25 F .119 +(ariables with the same name in the calling en)-.25 F .12(vironment e) +-.4 F -.15(ve)-.25 G 2.62(ni).15 G 2.62(ft)-2.62 G .12(he shell is)-2.62 +F(not in posix mode)180 345.6 Q F2(compat50)108 362.4 Q F0<83>144 374.4 +Q 1.209(Bash-5.1 changed the w)180 374.4 R(ay)-.1 E F3($RANDOM)3.709 E +F0 1.209(is generated to introduce slightly more random-)3.459 F 1.018 +(ness. If the shell compatibility le)180 386.4 R -.15(ve)-.25 G 3.518 +(li).15 G 3.518(ss)-3.518 G 1.018(et to 50 or lo)-3.518 F(wer)-.25 E +3.518(,i)-.4 G 3.518(tr)-3.518 G -2.15 -.25(ev e)-3.518 H 1.019 +(rts to the method from).25 F .733(bash-5.0 and pre)180 398.4 R .733 +(vious v)-.25 F .732 (ersions, so seeding the random number generator by assigning a)-.15 F --.25(va)180 132 S(lue to).25 E F2(RANDOM)2.5 E F0 -(will produce the same sequence as in bash-5.0)2.25 E<83>144 144 Q .696 -(If the command hash table is empty)180 144 R 3.196(,b)-.65 G .696 -(ash v)-3.196 F .695(ersions prior to bash-5.1 printed an informa-)-.15 -F 1.32(tional message to that ef)180 156 R 1.321(fect, e)-.25 F -.15(ve) --.25 G 3.821(nw).15 G 1.321 +-.25(va)180 410.4 S(lue to).25 E F3(RANDOM)2.5 E F0 +(will produce the same sequence as in bash-5.0)2.25 E<83>144 422.4 Q +.695(If the command hash table is empty)180 422.4 R 3.196(,b)-.65 G .696 +(ash v)-3.196 F .696(ersions prior to bash-5.1 printed an informa-)-.15 +F 1.321(tional message to that ef)180 434.4 R 1.321(fect, e)-.25 F -.15 +(ve)-.25 G 3.821(nw).15 G 1.321 (hen producing output that can be reused as input.)-3.821 F -(Bash-5.1 suppresses that message when the)180 168 Q F12.5 E F0 -(option is supplied.)2.5 E/F3 10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 -184.8 Q F0(If)108 196.8 Q F1(bash)3.582 E F0 1.081 -(is started with the name)3.581 F F1(rbash)3.581 E F0 3.581(,o)C 3.581 -(rt)-3.581 G(he)-3.581 E F13.581 E F0 1.081 +(Bash-5.1 suppresses that message when the)180 446.4 Q F22.5 E F0 +(option is supplied.)2.5 E F2(compat51)108 463.2 Q F0<83>144 475.2 Q +(The)180 475.2 Q F2(unset)2.954 E F0 -.2(bu)2.954 G .454 +(iltin treats attempts to unset array subscripts).2 F F2(@)2.955 E F0 +(and)2.955 E F2(*)2.955 E F0(dif)2.955 E .455(ferently depending)-.25 F +(on whether the array is inde)180 487.2 Q -.15(xe)-.15 G 2.5(do).15 G +2.5(ra)-2.5 G(ssociati)-2.5 E -.15(ve)-.25 G 2.5(,a).15 G(nd dif)-2.5 E +(ferently than in pre)-.25 E(vious v)-.25 E(ersions.)-.15 E/F4 10.95 +/Times-Bold@0 SF(RESTRICTED SHELL)72 504 Q F0(If)108 516 Q F2(bash)3.582 +E F0 1.081(is started with the name)3.581 F F2(rbash)3.581 E F0 3.581 +(,o)C 3.581(rt)-3.581 G(he)-3.581 E F23.581 E F0 1.081 (option is supplied at in)3.581 F -.2(vo)-.4 G 1.081 -(cation, the shell becomes re-).2 F 2.976(stricted. A)108 208.8 R .476 +(cation, the shell becomes re-).2 F 2.976(stricted. A)108 528 R .476 (restricted shell is used to set up an en)2.976 F .476 (vironment more controlled than the standard shell.)-.4 F .477(It be-) -5.477 F(ha)108 220.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E -F1(bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E -(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 237.6 Q -(changing directories with)144 237.6 Q F1(cd)2.5 E F0<83>108 254.4 Q -(setting or unsetting the v)144 254.4 Q(alues of)-.25 E F2(SHELL)2.5 E -/F4 9/Times-Roman@0 SF(,)A F2 -.666(PA)2.25 G(TH)-.189 E F4(,)A F2 -(HISTFILE)2.25 E F4(,)A F2(ENV)2.25 E F4(,)A F0(or)2.25 E F2 -.27(BA)2.5 -G(SH_ENV).27 E F0<83>108 271.2 Q(specifying command names containing)144 -271.2 Q F1(/)2.5 E F0<83>108 288 Q(specifying a \214lename containing a) -144 288 Q F1(/)2.5 E F0(as an ar)2.5 E(gument to the)-.18 E F1(.)2.5 E -F0 -.2(bu)5 G(iltin command).2 E<83>108 304.8 Q -(specifying a \214lename containing a slash as an ar)144 304.8 Q -(gument to the)-.18 E F1(history)2.5 E F0 -.2(bu)2.5 G(iltin command).2 -E<83>108 321.6 Q .45 -(specifying a \214lename containing a slash as an ar)144 321.6 R .449 -(gument to the)-.18 F F12.949 E F0 .449(option to the)2.949 F F1 -(hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 333.6 Q -<83>108 350.4 Q(importing function de\214nitions from the shell en)144 -350.4 Q(vironment at startup)-.4 E<83>108 367.2 Q(parsing the v)144 -367.2 Q(alue of)-.25 E F2(SHELLOPTS)2.5 E F0(from the shell en)2.25 E -(vironment at startup)-.4 E<83>108 384 Q(redirecting output using the >\ -, >|, <>, >&, &>, and >> redirection operators)144 384 Q<83>108 400.8 Q -(using the)144 400.8 Q F1(exec)2.5 E F0 -.2(bu)2.5 G +5.477 F(ha)108 540 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F2 +(bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E +(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 556.8 Q +(changing directories with)144 556.8 Q F2(cd)2.5 E F0<83>108 573.6 Q +(setting or unsetting the v)144 573.6 Q(alues of)-.25 E F3(SHELL)2.5 E +/F5 9/Times-Roman@0 SF(,)A F3 -.666(PA)2.25 G(TH)-.189 E F5(,)A F3 +(HISTFILE)2.25 E F5(,)A F3(ENV)2.25 E F5(,)A F0(or)2.25 E F3 -.27(BA)2.5 +G(SH_ENV).27 E F0<83>108 590.4 Q(specifying command names containing)144 +590.4 Q F2(/)2.5 E F0<83>108 607.2 Q +(specifying a \214lename containing a)144 607.2 Q F2(/)2.5 E F0 +(as an ar)2.5 E(gument to the)-.18 E F2(.)2.5 E F0 -.2(bu)5 G +(iltin command).2 E<83>108 624 Q +(specifying a \214lename containing a slash as an ar)144 624 Q +(gument to the)-.18 E F2(history)2.5 E F0 -.2(bu)2.5 G(iltin command).2 +E<83>108 640.8 Q .45 +(specifying a \214lename containing a slash as an ar)144 640.8 R .449 +(gument to the)-.18 F F22.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 652.8 Q +<83>108 669.6 Q(importing function de\214nitions from the shell en)144 +669.6 Q(vironment at startup)-.4 E<83>108 686.4 Q(parsing the v)144 +686.4 Q(alue of)-.25 E F3(SHELLOPTS)2.5 E F0(from the shell en)2.25 E +(vironment at startup)-.4 E<83>108 703.2 Q(redirecting output using the\ + >, >|, <>, >&, &>, and >> redirection operators)144 703.2 Q +(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(85)185.115 E 0 Cg EP +%%Page: 86 86 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>108 84 Q +(using the)144 84 Q/F1 10/Times-Bold@0 SF(exec)2.5 E F0 -.2(bu)2.5 G (iltin command to replace the shell with another command).2 E<83>108 -417.6 Q(adding or deleting b)144 417.6 Q(uiltin commands with the)-.2 E +100.8 Q(adding or deleting b)144 100.8 Q(uiltin commands with the)-.2 E F12.5 E F0(and)2.5 E F12.5 E F0(options to the)2.5 E F1 -(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 434.4 Q -(using the)144 434.4 Q F1(enable)2.5 E F0 -.2(bu)2.5 G +(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 117.6 Q +(using the)144 117.6 Q F1(enable)2.5 E F0 -.2(bu)2.5 G (iltin command to enable disabled shell b).2 E(uiltins)-.2 E<83>108 -451.2 Q(specifying the)144 451.2 Q F12.5 E F0(option to the)2.5 E -F1(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 468 Q -(turning of)144 468 Q 2.5(fr)-.25 G(estricted mode with)-2.5 E F1 -(set +r)2.5 E F0(or)2.5 E F1(set +o r)2.5 E(estricted)-.18 E F0(.)A -(These restrictions are enforced after an)108 484.8 Q 2.5(ys)-.15 G +134.4 Q(specifying the)144 134.4 Q F12.5 E F0(option to the)2.5 E +F1(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 151.2 Q +(turning of)144 151.2 Q 2.5(fr)-.25 G(estricted mode with)-2.5 E F1 +(set +r)2.5 E F0(or)2.5 E F1(shopt -u r)2.5 E(estricted_shell)-.18 E F0 +(.)A(These restrictions are enforced after an)108 168 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 501.6 R -.15 -(xe)-.15 G 1.567(cuted \(see).15 F F2 1.567(COMMAND EXECUTION)4.067 F F0 -(abo)3.817 E -.15(ve)-.15 G(\),).15 E F1(rbash)108 513.6 Q F0(turns of) -2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H(estrictions in the shell spa).15 -E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E F3(SEE ALSO)72 -530.4 Q/F5 10/Times-Italic@0 SF(Bash Refer)108 542.4 Q(ence Manual)-.37 -E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F5 -(The Gnu Readline Libr)108 554.4 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E -(ox and Chet Rame)-.15 E(y)-.15 E F5(The Gnu History Libr)108 566.4 Q +(When a command that is found to be a shell script is e)108 184.8 R -.15 +(xe)-.15 G 1.567(cuted \(see).15 F/F2 9/Times-Bold@0 SF 1.567 +(COMMAND EXECUTION)4.067 F F0(abo)3.817 E -.15(ve)-.15 G(\),).15 E F1 +(rbash)108 196.8 Q F0(turns of)2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H +(estrictions in the shell spa).15 E(wned to e)-.15 E -.15(xe)-.15 G +(cute the script.).15 E/F3 10.95/Times-Bold@0 SF(SEE ALSO)72 213.6 Q/F4 +10/Times-Italic@0 SF(Bash Refer)108 225.6 Q(ence Manual)-.37 E F0 2.5 +(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F4 +(The Gnu Readline Libr)108 237.6 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E +(ox and Chet Rame)-.15 E(y)-.15 E F4(The Gnu History Libr)108 249.6 Q (ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E -F5 -.8(Po)108 578.4 S(rtable Oper).8 E +F4 -.8(Po)108 261.6 S(rtable Oper).8 E (ating System Interface \(POSIX\) P)-.15 E(art 2: Shell and Utilities) --.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 590.4 Q -(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 602.4 Q -(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F5(sh) -108 614.4 Q F0(\(1\),)A F5(ksh)2.5 E F0(\(1\),)A F5(csh)2.5 E F0(\(1\))A -F5(emacs)108 626.4 Q F0(\(1\),)A F5(vi)2.5 E F0(\(1\))A F5 -.37(re)108 -638.4 S(adline).37 E F0(\(3\))A F3(FILES)72 655.2 Q F5(/bin/bash)109.666 -667.2 Q F0(The)144 679.2 Q F1(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E -F5(/etc/pr)109.666 691.2 Q(o\214le)-.45 E F0 -(The systemwide initialization \214le, e)144 703.2 Q -.15(xe)-.15 G -(cuted for login shells).15 E(GNU Bash 5.1)72 768 Q(2020 October 29) -141.235 E(82)190.395 E 0 Cg EP -%%Page: 83 83 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 -/Times-Italic@0 SF(~/.bash_pr)109.666 84 Q(o\214le)-.45 E F0 -(The personal initialization \214le, e)144 96 Q -.15(xe)-.15 G -(cuted for login shells).15 E F1(~/.bashr)109.666 108 Q(c)-.37 E F0 -(The indi)144 120 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G -(-shell startup \214le).15 E F1(~/.bash_lo)109.666 132 Q(gout)-.1 E F0 -(The indi)144 144 Q(vidual login shell cleanup \214le, e)-.25 E -.15(xe) --.15 G(cuted when a login shell e).15 E(xits)-.15 E F1(~/.inputr)109.666 -156 Q(c)-.37 E F0(Indi)144 168 Q(vidual)-.25 E F1 -.37(re)2.5 G(adline) -.37 E F0(initialization \214le)2.5 E/F2 10.95/Times-Bold@0 SF -.548(AU) -72 184.8 S(THORS).548 E F0(Brian F)108 196.8 Q(ox, Free Softw)-.15 E -(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 208.8 Q(g)-.18 E -(Chet Rame)108 225.6 Q 1.3 -.65(y, C)-.15 H(ase W).65 E(estern Reserv) --.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E(chet.rame)108 -237.6 Q(y@case.edu)-.15 E F2 -.11(BU)72 254.4 S 2.738(GR).11 G(EPOR) --2.738 E(TS)-.438 E F0 .568(If you \214nd a b)108 266.4 R .568(ug in)-.2 -F/F3 10/Times-Bold@0 SF(bash,)3.068 E F0 .568(you should report it.) +-.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 273.6 Q +(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 285.6 Q +(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F4(sh) +108 297.6 Q F0(\(1\),)A F4(ksh)2.5 E F0(\(1\),)A F4(csh)2.5 E F0(\(1\))A +F4(emacs)108 309.6 Q F0(\(1\),)A F4(vi)2.5 E F0(\(1\))A F4 -.37(re)108 +321.6 S(adline).37 E F0(\(3\))A F3(FILES)72 338.4 Q F4(/bin/bash)109.666 +350.4 Q F0(The)144 362.4 Q F1(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E +F4(/etc/pr)109.666 374.4 Q(o\214le)-.45 E F0 +(The systemwide initialization \214le, e)144 386.4 Q -.15(xe)-.15 G +(cuted for login shells).15 E F4(~/.bash_pr)109.666 398.4 Q(o\214le)-.45 +E F0(The personal initialization \214le, e)144 410.4 Q -.15(xe)-.15 G +(cuted for login shells).15 E F4(~/.bashr)109.666 422.4 Q(c)-.37 E F0 +(The indi)144 434.4 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G +(-shell startup \214le).15 E F4(~/.bash_lo)109.666 446.4 Q(gout)-.1 E F0 +(The indi)144 458.4 Q(vidual login shell cleanup \214le, e)-.25 E -.15 +(xe)-.15 G(cuted when a login shell e).15 E(xits)-.15 E F4 +(~/.bash_history)109.666 470.4 Q F0(The def)144 482.4 Q(ault v)-.1 E +(alue of)-.25 E F1(HISTFILE)2.5 E F0 2.5(,t)C +(he \214le in which bash sa)-2.5 E -.15(ve)-.2 G 2.5(st).15 G +(he command history)-2.5 E F4(~/.inputr)109.666 494.4 Q(c)-.37 E F0 +(Indi)144 506.4 Q(vidual)-.25 E F4 -.37(re)2.5 G(adline).37 E F0 +(initialization \214le)2.5 E F3 -.548(AU)72 523.2 S(THORS).548 E F0 +(Brian F)108 535.2 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E +(bfox@gnu.or)108 547.2 Q(g)-.18 E(Chet Rame)108 564 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 576 Q(y@case.edu)-.15 E F3 -.11(BU)72 592.8 S +2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .568(If you \214nd a b)108 +604.8 R .568(ug in)-.2 F F1(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 278.4 R 5.625(ersion of)-.15 F F3 +(that it appears in the latest v)108 616.8 R 5.625(ersion of)-.15 F F1 (bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.626 (ersion is al)-.15 F -.1(wa)-.1 G 5.626(ys a).1 F -.25(va)-.2 G 5.626 -(ilable from).25 F F1(ftp://ftp.gnu.or)108 290.4 Q(g/pub/gnu/bash/)-.37 -E F0(.)A .411(Once you ha)108 307.2 R .711 -.15(ve d)-.2 H .411 +(ilable from).25 F F4(ftp://ftp.gnu.or)108 628.8 Q(g/pub/gnu/bash/)-.37 +E F0(and)2.5 E F4(http://git.savannah.gnu.or)2.5 E +(g/cgit/bash.git/snapshot/bash-master)-.37 E(.tar)-1.11 E(.gz)-1.11 E F0 +(.)A .411(Once you ha)108 645.6 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 319.2 R .894 -.15(ve a \214) +-.15 F F4(bashb)3.18 E(ug)-.2 E F0 .41(command to submit a b)3.13 F .41 +(ug report.)-.2 F(If)5.41 E .594(you ha)108 657.6 R .894 -.15(ve a \214) -.2 H .595(x, you are encouraged to mail that as well!).15 F .595 (Suggestions and `philosophical' b)5.595 F .595(ug reports may)-.2 F -(be mailed to)108 331.2 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 348 Q(ug reports should include:)-.2 E(The v)108 -364.8 Q(ersion number of)-.15 E F3(bash)2.5 E F0(The hardw)108 376.8 Q -(are and operating system)-.1 E(The compiler used to compile)108 388.8 Q -2.5(Ad)108 400.8 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 E -2.5(As)108 412.8 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 G -(rcises the b).15 E(ug)-.2 E F1(bashb)108.27 429.6 Q(ug)-.2 E F0 +(be mailed to)108 669.6 Q F4 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0 +(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F1(gnu.bash.b)2.5 E(ug) +-.2 E F0(.)A(ALL b)108 686.4 Q(ug reports should include:)-.2 E(The v) +108 703.2 Q(ersion number of)-.15 E F1(bash)2.5 E F0(GNU Bash 5.2)72 768 +Q(2022 September 19)135.955 E(86)185.115 E 0 Cg EP +%%Page: 87 87 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(The hardw)108 84 Q +(are and operating system)-.1 E(The compiler used to compile)108 96 Q +2.5(Ad)108 108 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 E +2.5(As)108 120 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 G +(rcises the b).15 E(ug)-.2 E/F1 10/Times-Italic@0 SF(bashb)108.27 136.8 +Q(ug)-.2 E F0 (inserts the \214rst three items automatically into the template it pro) 2.72 E(vides for \214ling a b)-.15 E(ug report.)-.2 E(Comments and b)108 -446.4 Q(ug reports concerning this manual page should be directed to)-.2 +153.6 Q(ug reports concerning this manual page should be directed to)-.2 E F1 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.) -.25 E F2 -.11(BU)72 463.2 S(GS).11 E F0(It')108 475.2 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 492 R 1.869(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 504 Q F0(speci\214cation.)2.25 E -(Aliases are confusing in some uses.)108 520.8 Q(Shell b)108 537.6 Q +.25 E/F2 10.95/Times-Bold@0 SF -.11(BU)72 170.4 S(GS).11 E F0(It')108 +182.4 Q 2.5(st)-.55 G(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.869 +(There are some subtle dif)108 199.2 R 1.869(ferences between)-.25 F/F3 +10/Times-Bold@0 SF(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 211.2 Q F0 +(speci\214cation.)2.25 E(Aliases are confusing in some uses.)108 228 Q +(Shell b)108 244.8 Q (uiltin commands and functions are not stoppable/restartable.)-.2 E 1.315(Compound commands and command sequences of the form `a ; b ; c' a\ -re not handled gracefully when)108 554.4 R .39 -(process suspension is attempted.)108 566.4 R .389 +re not handled gracefully when)108 261.6 R .39 +(process suspension is attempted.)108 273.6 R .389 (When a process is stopped, the shell immediately e)5.39 F -.15(xe)-.15 G .389(cutes the ne).15 F .389(xt com-)-.15 F .192 -(mand in the sequence.)108 578.4 R .192(It suf)5.192 F .192(\214ces to \ +(mand in the sequence.)108 285.6 R .192(It suf)5.192 F .192(\214ces to \ place the sequence of commands between parentheses to force it into a) --.25 F(subshell, which may be stopped as a unit.)108 590.4 Q(Array v)108 -607.2 Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E -(There may be only one acti)108 624 Q .3 -.15(ve c)-.25 H -(oprocess at a time.).15 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 -E(83)190.395 E 0 Cg EP +-.25 F(subshell, which may be stopped as a unit.)108 297.6 Q(Array v)108 +314.4 Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E +(There may be only one acti)108 331.2 Q .3 -.15(ve c)-.25 H +(oprocess at a time.).15 E(GNU Bash 5.2)72 768 Q(2022 September 19) +135.955 E(87)185.115 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/bashbug.0 b/doc/bashbug.0 index 373c47b1d..58f08de22 100644 --- a/doc/bashbug.0 +++ b/doc/bashbug.0 @@ -49,4 +49,4 @@ AAUUTTHHOORRSS -GNU Bash 5.1 2020 August 1 BASHBUG(1) +GNU Bash 5.2 2020 August 1 BASHBUG(1) diff --git a/doc/bashbug.ps b/doc/bashbug.ps index 9c60a331d..55fe45ce1 100644 --- a/doc/bashbug.ps +++ b/doc/bashbug.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.4 -%%CreationDate: Fri Aug 7 11:58:10 2020 +%%CreationDate: Tue Jan 11 16:04:43 2022 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic @@ -290,7 +290,7 @@ F2(EDIT)108 300 Q(OR)-.18 E F0 .327(Speci\214es the preferred editor)144 (are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 463.2 Q(g)-.18 E (Chet Rame)108 480 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@po.cwru.edu) -108 492 Q(GNU Bash 5.1)72 768 Q(2020 August 1)145.395 E(1)199.555 E 0 Cg +108 492 Q(GNU Bash 5.2)72 768 Q(2020 August 1)145.395 E(1)199.555 E 0 Cg EP %%Trailer end diff --git a/doc/bashref.dvi b/doc/bashref.dvi index 2b682d276..a7a571b89 100644 Binary files a/doc/bashref.dvi and b/doc/bashref.dvi differ diff --git a/doc/bashref.html b/doc/bashref.html index 6a4c3ab88..928b3ff19 100644 --- a/doc/bashref.html +++ b/doc/bashref.html @@ -1,13 +1,16 @@ + + + - - - Bash Reference Manual @@ -25,17 +25,21 @@ A copy of the license is included in the section entitled + + + + @@ -63,7 +68,36 @@ ul.no-bullet {list-style: none} - + +
+
+

+Next: , Previous: , Up: (dir)   [Contents][Index]

+
+

Bash Features

+ +

This text is a brief description of the features that are present in +the Bash shell (version 5.2, 19 September 2022). +The Bash home page is http://www.gnu.org/software/bash/. +

+

This is Edition 5.2, last updated 19 September 2022, +of The GNU Bash Reference Manual, +for Bash, Version 5.2. +

+

Bash contains features that appear in other popular shells, and some +features that only appear in Bash. Some of the shells that Bash has +borrowed concepts from are the Bourne Shell (sh), the Korn Shell +(ksh), and the C-shell (csh and its successor, +tcsh). The following menu breaks the features up into +categories, noting which features were inspired by other shells and +which are specific to Bash. +

+

This manual is meant as a brief introduction to features found in +Bash. The Bash manual page should be used as the definitive +reference on shell behavior. +

+ +

Table of Contents

@@ -266,85 +300,22 @@ ul.no-bullet {list-style: none}
- - -
-

-Next: , Previous: , Up: (dir)   [Contents][Index]

-

Bash Features

- -

This text is a brief description of the features that are present in -the Bash shell (version 5.1, 29 October 2020). -The Bash home page is http://www.gnu.org/software/bash/. -

-

This is Edition 5.1, last updated 29 October 2020, -of The GNU Bash Reference Manual, -for Bash, Version 5.1. -

-

Bash contains features that appear in other popular shells, and some -features that only appear in Bash. Some of the shells that Bash has -borrowed concepts from are the Bourne Shell (sh), the Korn Shell -(ksh), and the C-shell (csh and its successor, -tcsh). The following menu breaks the features up into -categories, noting which features were inspired by other shells and -which are specific to Bash. -

-

This manual is meant as a brief introduction to features found in -Bash. The Bash manual page should be used as the definitive -reference on shell behavior. -

- - - - - - - - - - - - - - - - -
-
+
+

-Next: , Up: Top   [Contents][Index]

+Next: , Up: Bash Features   [Contents][Index]

1 Introduction

- - - - +
-
+
+ @@ -374,7 +345,9 @@ independently-supported ports exist for MS-DOS, OS/2
-
+
+
+

Previous: , Up: Introduction   [Contents][Index]

@@ -433,146 +406,132 @@ editing, command history and aliases. Each of these features is described in this manual.


-
+
+
+
+

2 Definitions

These definitions are used throughout the remainder of this manual.

-
POSIX
-
-

A family of open system standards based on Unix. Bash +

POSIX
+

A family of open system standards based on Unix. Bash is primarily concerned with the Shell and Utilities portion of the POSIX 1003.1 standard.

-
blank
+
blank

A space or tab character.

-
builtin
-
-

A command that is implemented internally by the shell itself, rather +

builtin
+

A command that is implemented internally by the shell itself, rather than by an executable program somewhere in the file system.

-
control operator
-
-

A token that performs a control function. It is a newline +

control operator
+

A token that performs a control function. It is a newline or one of the following: ‘||’, ‘&&’, ‘&’, ‘;’, ‘;;’, ‘;&’, ‘;;&’, ‘|’, ‘|&’, ‘(’, or ‘)’.

-
exit status
-
-

The value returned by a command to its caller. The value is restricted +

exit status
+

The value returned by a command to its caller. The value is restricted to eight bits, so the maximum value is 255.

-
field
-
-

A unit of text that is the result of one of the shell expansions. After +

field
+

A unit of text that is the result of one of the shell expansions. After expansion, when executing a command, the resulting fields are used as the command name and arguments.

-
filename
-
-

A string of characters used to identify a file. +

filename
+

A string of characters used to identify a file.

-
job
-
-

A set of processes comprising a pipeline, and any processes descended +

job
+

A set of processes comprising a pipeline, and any processes descended from it, that are all in the same process group.

-
job control
-
-

A mechanism by which users can selectively stop (suspend) and restart +

job control
+

A mechanism by which users can selectively stop (suspend) and restart (resume) execution of processes.

-
metacharacter
-
-

A character that, when unquoted, separates words. A metacharacter is +

metacharacter
+

A character that, when unquoted, separates words. A metacharacter is a space, tab, newline, or one of the following characters: ‘|’, ‘&’, ‘;’, ‘(’, ‘)’, ‘<’, or ‘>’.

-
name
-
- +
name
+

A word consisting solely of letters, numbers, and underscores, and beginning with a letter or underscore. Names are used as shell variable and function names. Also referred to as an identifier.

-
operator
-
-

A control operator or a redirection operator. +

operator
+

A control operator or a redirection operator. See Redirections, for a list of redirection operators. Operators contain at least one unquoted metacharacter.

-
process group
-
-

A collection of related processes each having the same process +

process group
+

A collection of related processes each having the same process group ID.

-
process group ID
-
-

A unique identifier that represents a process group +

process group ID
+

A unique identifier that represents a process group during its lifetime.

-
reserved word
-
-

A word that has a special meaning to the shell. Most reserved +

reserved word
+

A word that has a special meaning to the shell. Most reserved words introduce shell flow control constructs, such as for and while.

-
return status
-
-

A synonym for exit status. +

return status
+

A synonym for exit status.

-
signal
-
-

A mechanism by which a process may be notified by the kernel +

signal
+

A mechanism by which a process may be notified by the kernel of an event occurring in the system.

-
special builtin
-
-

A shell builtin command that has been classified as special by the +

special builtin
+

A shell builtin command that has been classified as special by the POSIX standard.

-
token
-
-

A sequence of characters considered a single unit by the shell. +

token
+

A sequence of characters considered a single unit by the shell. It is either a word or an operator.

-
word
-
-

A sequence of characters treated as a unit by the shell. +

word
+

A sequence of characters treated as a unit by the shell. Words may not include unquoted metacharacters.


-
+
+
+

3 Basic Shell Features

@@ -590,40 +549,24 @@ shell expansions, redirections, which are a way to direct input and output from and to named files, and how the shell executes commands.

- - - - - - - - - - +
-
+
+

3.1 Shell Syntax

- - - - -

When the shell reads input, it proceeds through a sequence of operations. If the input indicates the beginning of a @@ -640,8 +583,14 @@ others, redirects input and output as needed, executes the specified command, waits for the command’s exit status, and makes that exit status available for further inspection or processing.

+
-
+
+

Next: , Up: Shell Syntax   [Contents][Index]

@@ -679,27 +628,14 @@ status (see Exit Status).
-
+
+
+

Next: , Previous: , Up: Shell Syntax   [Contents][Index]

3.1.2 Quoting

- - - - - - -

Quoting is used to remove the special meaning of certain characters or words to the shell. Quoting can be used to @@ -711,16 +647,24 @@ parameter expansion. has special meaning to the shell and must be quoted if it is to represent itself. When the command history expansion facilities are being used -(see History Interaction), the -history expansion character, usually ‘!’, must be quoted +(see History Expansion), the +history expansion character, usually ‘!’, must be quoted to prevent history expansion. See Bash History Facilities, for more details concerning history expansion.

There are three quoting mechanisms: the -escape character, single quotes, and double quotes. -

+escape character, single quotes, and double quotes. +

+
-
+
+

Next: , Up: Quoting   [Contents][Index]

@@ -733,7 +677,9 @@ is treated as a line continuation (that is, it is removed from the input stream and effectively ignored).


-
+
+
+

Next: , Previous: , Up: Quoting   [Contents][Index]

@@ -744,7 +690,9 @@ of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.


-
+
+
+

Next: , Previous: , Up: Quoting   [Contents][Index]

@@ -776,73 +724,76 @@ The backslash preceding the ‘!’ is not removed. when in double quotes (see Shell Parameter Expansion).


-
+
+
+

3.1.2.4 ANSI-C Quoting

-

Words of the form $'string' are treated specially. The -word expands to string, with backslash-escaped characters replaced -as specified by the ANSI C standard. Backslash escape sequences, if -present, are decoded as follows: +

Character sequences of the form $’string’ are treated as a special +kind of single quotes. +The sequence expands to string, with backslash-escaped characters +in string replaced as specified by the ANSI C standard. +Backslash escape sequences, if present, are decoded as follows:

-
\a
+
\a

alert (bell)

-
\b
+
\b

backspace

-
\e
-
\E
+
\e
+
\E

an escape character (not ANSI C)

-
\f
+
\f

form feed

-
\n
+
\n

newline

-
\r
+
\r

carriage return

-
\t
+
\t

horizontal tab

-
\v
+
\v

vertical tab

-
\\
+
\\

backslash

-
\'
+
\'

single quote

-
\"
+
\"

double quote

-
\?
+
\?

question mark

-
\nnn
+
\nnn

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

-
\xHH
+
\xHH

the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)

-
\uHHHH
+
\uHHHH

the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits)

-
\UHHHHHHHH
+
\UHHHHHHHH

the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits)

-
\cx
+
\cx

a control-x character

@@ -851,7 +802,9 @@ present, are decoded as follows: been present.


-
+
+
+

Previous: , Up: Quoting   [Contents][Index]

@@ -861,32 +814,142 @@ Previous:

The Shopt Builtin), +translated strings are single-quoted instead of double-quoted. +

+

The rest of this section is a brief overview of how you use gettext to +create translations for strings in a shell script named scriptname. +There are more details in the gettext documentation. +

+
+
+

+   [Contents][Index]

+
+

Creating Internationalized Scripts

+ + +

Once you’ve marked the strings in your script +that you want to translate using $"...", +you create a gettext "template" file using the command +

+
+
bash --dump-po-strings scriptname > domain.pot
+
+ +

The domain is your message domain. +It’s just an arbitrary string that’s used to identify the files gettext +needs, like a package or script name. +It needs to be unique among all +the message domains on systems where you install the translations, so +gettext knows which translations correspond to your script. +You’ll use the template file to create translations for each target language. +The template file conventionally has the suffix ‘.pot’. +

+

You copy this template file to a separate file for each target language +you want to support (called "PO" files, which use the suffix ‘.po’). +PO files use various naming conventions, but +when you are working to translate a template file into a particular +language, you first copy the template file to a file whose name is the +language you want to target, with the ‘.po’ suffix. +For instance, the Spanish translations of your strings would be +in a file named ‘es.po’, and to get started using a message +domain named "example," you would run

+
+
cp example.pot es.po
+
+ +

Ultimately, PO files are often named domain.po and installed in +directories that contain multiple translation files for a particular language. +

+

Whichever naming convention you choose, you will need to translate the +strings in the PO files into the appropriate languages. +This has to be done manually. +

+

When you have the translations and PO files complete, you’ll use the +gettext tools to produce what are called "MO" files, which are compiled +versions of the PO files the gettext tools use to look up translations +efficiently. +MO files are also called "message catalog" files. +You use the msgfmt program to do this. +For instance, if you had a file with Spanish translations, you could run +

+
+
msgfmt -o es.mo es.po
+
+ +

to produce the corresponding MO file. +

+

Once you have the MO files, you decide where to install them and use the +TEXTDOMAINDIR shell variable to tell the gettext tools where they are. +Make sure to use the same message domain to name the MO files +as you did for the PO files when you install them. +

+ -

Some systems use the message catalog selected by the LC_MESSAGES -shell variable. Others create the name of the message catalog from the -value of the TEXTDOMAIN shell variable, possibly adding a -suffix of ‘.mo’. If you use the TEXTDOMAIN variable, you -may need to set the TEXTDOMAINDIR variable to the location of -the message catalog files. Still others use both variables in this -fashion: -TEXTDOMAINDIR/LC_MESSAGES/LC_MESSAGES/TEXTDOMAIN.mo. +

Your users will use the LANG or LC_MESSAGES shell variables to +select the desired language. +

+

You set the TEXTDOMAIN variable to the script’s message domain. +As above, you use the message domain to name your translation files. +

+

You, or possibly your users, set the TEXTDOMAINDIR variable to the +name of a directory where the message catalog files are stored. +If you install the message files into the system’s standard message catalog +directory, you don’t need to worry about this variable. +

+

The directory where the message catalog files are stored varies between +systems. +Some use the message catalog selected by the LC_MESSAGES +shell variable. +Others create the name of the message catalog from the value of the +TEXTDOMAIN shell variable, possibly adding the ‘.mo’ suffix. +If you use the TEXTDOMAIN variable, you may need to set the +TEXTDOMAINDIR variable to the location of the message catalog files, +as above. +It’s common to use both variables in this fashion: +$TEXTDOMAINDIR/$LC_MESSAGES/LC_MESSAGES/$TEXTDOMAIN.mo. +

+

If you used that last convention, and you wanted to store the message +catalog files with Spanish (es) and Esperanto (eo) translations into a +local directory you use for custom translation files, you could run +

+
+
TEXTDOMAIN=example
+TEXTDOMAINDIR=/usr/local/share/locale
+
+cp es.mo ${TEXTDOMAINDIR}/es/LC_MESSAGES/${TEXTDOMAIN}.mo
+cp eo.mo ${TEXTDOMAINDIR}/eo/LC_MESSAGES/${TEXTDOMAIN}.mo
+
+ +

When all of this is done, and the message catalog files containing the +compiled translations are installed in the correct location, +your users will be able to see translated strings +in any of the supported languages by setting the LANG or +LC_MESSAGES environment variables before running your script.


-
+
+
+
+

Previous: , Up: Shell Syntax   [Contents][Index]

@@ -905,7 +968,10 @@ See Interactive Shells, for a description of w a shell interactive.


-
+
+
+
+ @@ -920,26 +986,19 @@ in a variety of ways: in a pipeline in which the output of one command becomes the input of a second, in a loop or conditional construct, or in some other grouping.

- - - - - - - - - +
-
+
+ @@ -965,7 +1024,9 @@ the first word of a command (see below for exceptions): words if they are the third word in a for command.


-
+
+
+

Next: , Previous: , Up: Shell Commands   [Contents][Index]

@@ -984,9 +1045,11 @@ by the POSIX 1003.1 waitpid function, or 128+n< the command was terminated by signal n.


-
+
+
+

3.2.3 Pipelines

@@ -1006,15 +1069,15 @@ one of the control operators ‘|’ or ‘|&

The output of each command in the pipeline is connected via a pipe to the input of the next command. That is, each command reads the previous command’s output. This -connection is performed before any redirections specified by the -command. +connection is performed before any redirections specified by +command1.

If ‘|&’ is used, command1’s standard error, in addition to its standard output, is connected to command2’s standard input through the pipe; it is shorthand for 2>&1 |. This implicit redirection of the standard error to the standard output is -performed after any redirections specified by the command. +performed after any redirections specified by command1.

The reserved word time causes timing statistics to be printed for the pipeline once it finishes. @@ -1038,14 +1101,17 @@ total user and system time consumed by the shell and its children. The TIMEFORMAT variable may be used to specify the format of the time information.

-

If the pipeline is not executed asynchronously (see Lists), the +

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

-

Each command in a pipeline is executed in its own subshell, which is a +

Each command in a multi-command pipeline, +where pipes are created, +is executed in its own subshell, which is a separate process (see Command Execution Environment). If the lastpipe option is enabled using the shopt builtin (see The Shopt Builtin), -the last element of a pipeline may be run by the shell process. +the last element of a pipeline may be run by the shell process +when job control is not active.

The exit status of a pipeline is the exit status of the last command in the @@ -1061,7 +1127,9 @@ The shell waits for all commands in the pipeline to terminate before returning a value.


-
+
+
+ @@ -1082,8 +1150,8 @@ to delimit commands, equivalent to a semicolon.

If a command is terminated by the control operator ‘&’, the shell executes the command asynchronously in a subshell. -This is known as executing the command in the background, -and these are referred to as asynchronous commands. +This is known as executing the command in the background, +and these are referred to as asynchronous commands. The shell does not wait for the command to finish, and the return status is 0 (true). When job control is not active (see Job Control), @@ -1120,21 +1188,15 @@ returns a non-zero exit status. executed in the list.


-
+
+
+

-Next: , Previous: , Up: Shell Commands   [Contents][Index]

+Next: , Previous: , Up: Shell Commands   [Contents][Index]

3.2.5 Compound Commands

- - - - -

Compound commands are the shell programming language constructs. Each construct begins with a reserved word or control operator and is @@ -1149,8 +1211,14 @@ followed by a newline in place of a semicolon.

Bash provides looping constructs, conditional commands, and mechanisms to group commands and execute them as a unit.

+
-
+
+ @@ -1163,9 +1231,8 @@ Next:
+

The syntax of the until command is:

@@ -1179,9 +1246,8 @@ The return status is the exit status of the last command executed in consequent-commands, or zero if none was executed.

-
while
-
-

The syntax of the while command is: +

while
+

The syntax of the while command is:

while test-commands; do consequent-commands; done
@@ -1193,9 +1259,8 @@ The return status is the exit status of the last command executed
 in consequent-commands, or zero if none was executed.
 

-
for
-
-

The syntax of the for command is: +

for
+

The syntax of the for command is:

for name [ [in [words …] ] ; ] do commands; done
@@ -1235,17 +1300,18 @@ that is executed, or false if any of the expressions is invalid.
 may be used to control loop execution.
 


-
+
+
+

3.2.5.2 Conditional Constructs

-
if
-
- +
if
+
@@ -1273,9 +1339,8 @@ The return status is the exit status of the last command executed, or zero if no condition tested true.

-
case
-
- +
case
+

The syntax of the case command is:

@@ -1302,9 +1367,10 @@ as a clause. The word undergoes tilde expansion, parameter expansion, command substitution, arithmetic expansion, and quote removal (see Shell Parameter Expansion) -before matching is -attempted. Each pattern undergoes tilde expansion, parameter -expansion, command substitution, and arithmetic expansion. +before matching is attempted. +Each pattern undergoes tilde expansion, parameter expansion, +command substitution, arithmetic expansion, process substitution, and +quote removal.

There may be an arbitrary number of case clauses, each terminated by a ‘;;’, ‘;&’, or ‘;;&’. @@ -1342,9 +1408,8 @@ continuing the case statement execution as if the pattern list had not matched. return status is the exit status of the command-list executed.

-
select
-
- +
select
+

The select construct allows the easy generation of menus. It has almost the same syntax as the for command:

@@ -1353,16 +1418,16 @@ It has almost the same syntax as the for command:

The list of words following in is expanded, generating a list -of items. The set of expanded words is printed on the standard +of items, and the set of expanded words is printed on the standard error output stream, each preceded by a number. If the ‘in words’ is omitted, the positional parameters are printed, as if ‘in "$@"’ had been specified. -The PS3 prompt is then displayed and a line is read from the -standard input. +select then displays the PS3 +prompt and reads a line from the standard input. If the line consists of a number corresponding to one of the displayed words, then the value of name is set to that word. If the line is empty, the words and prompt are displayed again. -If EOF is read, the select command completes. +If EOF is read, the select command completes and returns 1. Any other value read causes name to be set to null. The line read is saved in the variable REPLY.

@@ -1383,24 +1448,24 @@ done
-
((…))
+
((…))
(( expression ))
 

The arithmetic expression is evaluated according to the rules described below (see Shell Arithmetic). +The expression undergoes the same expansions +as if it were within double quotes, +but double quote characters in expression are not treated specially +are removed. If the value of the expression is non-zero, the return status is 0; -otherwise the return status is 1. This is exactly equivalent to -

-
let "expression"
-
-

See Bash Builtins, for a full description of the let builtin. +otherwise the return status is 1.

+
-
[[…]]
-
- +
[[…]]
+
[[ expression ]]
 
@@ -1409,10 +1474,12 @@ otherwise the return status is 1. This is exactly equivalent to the conditional expression expression. Expressions are composed of the primaries described below in Bash Conditional Expressions. -Word splitting and filename expansion are not performed on the words -between the [[ and ]]; tilde expansion, parameter and +The words between the [[ and ]] do not undergo word splitting +and filename expansion. +The shell performs tilde expansion, parameter and variable expansion, arithmetic expansion, command substitution, process -substitution, and quote removal are performed. +substitution, and quote removal on those words +(the expansions that would occur if the words were enclosed in double quotes). Conditional operators such as ‘-f’ must be unquoted to be recognized as primaries.

@@ -1430,78 +1497,110 @@ is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches (‘==’) or does not match (‘!=’) the pattern, and 1 otherwise. -Any part of the pattern may be quoted to force the quoted portion -to be matched as a string. +

+

If you quote any part of the pattern, +using any of the shell’s quoting mechanisms, +the quoted portion is matched literally. +This means every character in the quoted portion matches itself, +instead of having any special pattern matching meaning.

An additional binary operator, ‘=~’, is available, with the same precedence as ‘==’ and ‘!=’. -When it is used, the string to the right of the operator is considered -a POSIX extended regular expression and matched accordingly +When you use ‘=~’, the string to the right of the operator is considered +a POSIX extended regular expression pattern and matched accordingly (using the POSIX regcomp and regexec interfaces usually described in regex(3)). -The return value is 0 if the string matches -the pattern, and 1 otherwise. +The return value is 0 if the string matches the pattern, and 1 if it does not. If the regular expression is syntactically incorrect, the conditional -expression’s return value is 2. +expression returns 2. If the nocasematch shell option (see the description of shopt in The Shopt Builtin) is enabled, the match is performed without regard to the case of alphabetic characters. -Any part of the pattern may be quoted to force the quoted portion -to be matched as a string. -Bracket expressions in regular expressions must be treated carefully, -since normal quoting characters lose their meanings between brackets. +

+

You can quote any part of the pattern +to force the quoted portion to be matched literally +instead of as a regular expression (see above). If the pattern is stored in a shell variable, quoting the variable -expansion forces the entire pattern to be matched as a string. +expansion forces the entire pattern to be matched literally.

The pattern will match if it matches any part of the string. -Anchor the pattern using the ‘^’ and ‘$’ regular expression -operators to force it to match the entire string. -The array variable BASH_REMATCH records which parts of the string -matched the pattern. -The element of BASH_REMATCH with index 0 contains the portion of -the string matching the entire regular expression. -Substrings matched by parenthesized subexpressions within the regular -expression are saved in the remaining BASH_REMATCH indices. -The element of BASH_REMATCH with index n is the portion of the -string matching the nth parenthesized subexpression. +If you want to force the pattern to match the entire string, +anchor the pattern using the ‘^’ and ‘$’ regular expression +operators.

For example, the following will match a line -(stored in the shell variable line) +(stored in the shell variable line) if there is a sequence of characters anywhere in the value consisting of any number, including zero, of characters in the space character class, -zero or one instances of ‘a’, then a ‘b’: -

+immediately followed by zero or one instances of ‘a’, +then a ‘b’: +

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

That means values like ‘aab’ and ‘ aaaaaab’ will match, as -will a line containing a ‘b’ anywhere in its value. +

That means values for line like +‘aab’, ‘ aaaaaab’, ‘xaby’, and ‘ ab’ +will all match, +as will a line containing a ‘b’ anywhere in its value.

-

Storing the regular expression in a shell variable is often a useful +

If you want to match a character that’s special to the regular expression +grammar (‘^$|[]()\.*+?’), it has to be quoted to remove its special +meaning. +This means that in the pattern ‘xxx.txt’, the ‘.’ matches any +character in the string (its usual regular expression meaning), but in the +pattern ‘"xxx.txt"’, it can only match a literal ‘.’. +

+

Likewise, if you want to include a character in your pattern that has a +special meaning to the regular expression grammar, you must make sure it’s +not quoted. +If you want to anchor a pattern at the beginning or end of the string, +for instance, you cannot quote the ‘^’ or ‘$’ +characters using any form of shell quoting. +

+

If you want to match ‘initial string’ at the start of a line, +the following will work: +

+
[[ $line =~ ^"initial string" ]]
+
+

but this will not: +

+
[[ $line =~ "^initial string" ]]
+
+

because in the second example the ‘^’ is quoted and doesn’t have its +usual special meaning. +

+

It is sometimes difficult to specify a regular expression properly +without using quotes, or to keep track of the quoting used by regular +expressions while paying attention to +shell quoting and the shell’s quote removal. +Storing the regular expression in a shell variable is often a useful way to avoid problems with quoting characters that are special to the shell. -It is sometimes difficult to specify a regular expression literally -without using quotes, or to keep track of the quoting used by regular -expressions while paying attention to the shell’s quote removal. -Using a shell variable to store the pattern decreases these problems. -For example, the following is equivalent to the above: -

+For example, the following is equivalent to the pattern used above: +

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

If you want to match a character that’s special to the regular expression -grammar, it has to be quoted to remove its special meaning. -This means that in the pattern ‘xxx.txt’, the ‘.’ matches any -character in the string (its usual regular expression meaning), but in the -pattern ‘"xxx.txt"’ it can only match a literal ‘.’. -Shell programmers should take special care with backslashes, since backslashes -are used both by the shell and regular expressions to remove the special -meaning from the following character. -The following two sets of commands are not equivalent: -

+

Shell programmers should take special care with backslashes, since +backslashes are used by both the shell and regular expressions to remove +the special meaning from the following character. +This means that after the shell’s word expansions complete +(see Shell Expansions), +any backslashes remaining in parts of the pattern +that were originally not quoted can remove the +special meaning of pattern characters. +If any part of the pattern is quoted, the shell does its best to ensure that +the regular expression treats those remaining backslashes as literal, +if they appeared in a quoted portion. +

+

The following two sets of commands are not equivalent: +

+
pattern='\.'
 
 [[ . =~ $pattern ]]
@@ -1513,30 +1612,71 @@ The following two sets of commands are not equivalent:
 
 

The first two matches will succeed, but the second two will not, because in the second two the backslash will be part of the pattern to be matched. -In the first two examples, the backslash removes the special meaning from +In the first two examples, the pattern passed to the regular expression +parser is ‘\.’. The backslash removes the special meaning from ‘.’, so the literal ‘.’ matches. +In the second two examples, the pattern passed to the regular expression +parser has the backslash quoted (e.g., ‘\\\.’), which will not match +the string, since it does not contain a backslash. If the string in the first examples were anything other than ‘.’, say ‘a’, the pattern would not match, because the quoted ‘.’ in the pattern loses its special meaning of matching any single character.

+

Bracket expressions in regular expressions can be sources of errors as well, +since characters that are normally special in regular expressions +lose their special meanings between brackets. +However, you can use bracket expressions to match special pattern characters +without quoting them, so they are sometimes useful for this purpose. +

+

Though it might seem like a strange way to write it, the following pattern +will match a ‘.’ in the string: +

+
+
[[ . =~ [.] ]]
+
+ +

The shell performs any word expansions before passing the pattern +to the regular expression functions, +so you can assume that the shell’s quoting takes precedence. +As noted above, the regular expression parser will interpret any +unquoted backslashes remaining in the pattern after shell expansion +according to its own rules. +The intention is to avoid making shell programmers quote things twice +as much as possible, so shell quoting should be sufficient to quote +special pattern characters where that’s necessary. +

+

The array variable BASH_REMATCH records which parts of the string +matched the pattern. +The element of BASH_REMATCH with index 0 contains the portion of +the string matching the entire regular expression. +Substrings matched by parenthesized subexpressions within the regular +expression are saved in the remaining BASH_REMATCH indices. +The element of BASH_REMATCH with index n is the portion of the +string matching the nth parenthesized subexpression. +

+

Bash sets +BASH_REMATCH +in the global scope; declaring it as a local variable will lead to +unexpected results. +

Expressions may be combined using the following operators, listed in decreasing order of precedence:

-
( expression )
+
( expression )

Returns the value of expression. This may be used to override the normal precedence of operators.

-
! expression
+
! expression

True if expression is false.

-
expression1 && expression2
+
expression1 && expression2

True if both expression1 and expression2 are true.

-
expression1 || expression2
+
expression1 || expression2

True if either expression1 or expression2 is true.

@@ -1548,7 +1688,9 @@ value of the entire conditional expression.
-
+
+
+ @@ -1561,21 +1703,20 @@ to the entire command list. For example, the output of all the commands in the list may be redirected to a single stream.

-
()
+
()
( list )
 
-

Placing a list of commands between parentheses causes a subshell -environment to be created (see Command Execution Environment), and each -of the commands in list to be executed in that subshell. Since the -list is executed in a subshell, variable assignments do not remain in -effect after the subshell completes. +

Placing a list of commands between parentheses forces the shell to create +a subshell (see Command Execution Environment), and each +of the commands in list is executed in that subshell environment. +Since the list is executed in a subshell, variable assignments do not +remain in effect after the subshell completes.

-
{}
-
- +
{}
+
{ list; }
 
@@ -1588,9 +1729,9 @@ The semicolon (or newline) following list is required.

In addition to the creation of a subshell, there is a subtle difference between these two constructs due to historical reasons. The braces -are reserved words, so they must be separated from the list +are reserved words, so they must be separated from the list by blanks or other shell metacharacters. -The parentheses are operators, and are +The parentheses are operators, and are recognized as separate tokens by the shell even if they are not separated from the list by whitespace.

@@ -1598,7 +1739,10 @@ from the list by whitespace. list.


-
+
+
+
+ @@ -1611,26 +1755,53 @@ A coprocess is executed asynchronously in a subshell, as if the command had been terminated with the ‘&’ control operator, with a two-way pipe established between the executing shell and the coprocess.

-

The format for a coprocess is: -

+

The syntax for a coprocess is: +

+
coproc [NAME] command [redirections]
 

This creates a coprocess named NAME. -If NAME is not supplied, the default name is COPROC. -NAME must not be supplied if command is a simple -command (see Simple Commands); otherwise, it is interpreted as -the first word of the simple command. +command may be either a simple command (see Simple Commands) +or a compound command (see Compound Commands). +NAME is a shell variable name. +If NAME is not supplied, the default name is COPROC. +

+

The recommended form to use for a coprocess is +

+
+
coproc NAME { command; }
+
+ +

This form is recommended because simple commands result in the coprocess +always being named COPROC, and it is simpler to use and more complete +than the other compound commands. +

+

There are other forms of coprocesses: +

+
+
coproc NAME compound-command
+coproc compound-command
+coproc simple-command
+
+ +

If command is a compound command, NAME is optional. The +word following coproc determines whether that word is interpreted +as a variable name: it is interpreted as NAME if it is not a +reserved word that introduces a compound command. +If command is a simple command, NAME is not allowed; this +is to avoid confusion between NAME and the first word of the simple +command.

When the coprocess is executed, the shell creates an array variable (see Arrays) -named NAME in the context of the executing shell. +named NAME in the context of the executing shell. The standard output of command is connected via a pipe to a file descriptor in the executing shell, -and that file descriptor is assigned to NAME[0]. +and that file descriptor is assigned to NAME[0]. The standard input of command is connected via a pipe to a file descriptor in the executing shell, -and that file descriptor is assigned to NAME[1]. +and that file descriptor is assigned to NAME[1]. This pipe is established before any redirections specified by the command (see Redirections). The file descriptors can be utilized as arguments to shell commands @@ -1639,7 +1810,7 @@ Other than those created to execute command and process substitutions, the file descriptors are not available in subshells.

The process ID of the shell spawned to execute the coprocess is -available as the value of the variable NAME_PID. +available as the value of the variable NAME_PID. The wait builtin command may be used to wait for the coprocess to terminate.

@@ -1648,7 +1819,9 @@ the coproc command always returns success. The return status of a coprocess is the exit status of command.


-
+
+
+

Previous: , Up: Shell Commands   [Contents][Index]

@@ -1665,113 +1838,15 @@ Parallel provides shorthand references to many of the most common operations the input source, and so on). Parallel can replace xargs or feed commands from its input sources to several different instances of Bash.

-

For a complete description, refer to the GNU Parallel documentation. A few -examples should provide a brief introduction to its use. -

-

For example, it is easy to replace xargs to gzip all html files in the -current directory and its subdirectories: -

-
find . -type f -name '*.html' -print | parallel gzip
-
-

If you need to protect special characters such as newlines in file names, -use find’s -print0 option and parallel’s -0 option. -

-

You can use Parallel to move files from the current directory when the -number of files is too large to process with one mv invocation: -

-
printf '%s\n' * | parallel mv {} destdir
-
- -

As you can see, the {} is replaced with each line read from standard input. -While using ls will work in most instances, it is not sufficient to -deal with all filenames. printf is a shell builtin, and therefore is -not subject to the kernel’s limit on the number of arguments to a program, -so you can use ‘*’ (but see below about the dotglob shell option). -If you need to accommodate special characters in filenames, you can use -

-
-
printf '%s\0' * | parallel -0 mv {} destdir
-
- -

as alluded to above. -

-

This will run as many mv commands as there are files in the current -directory. -You can emulate a parallel xargs by adding the -X option: -

-
printf '%s\0' * | parallel -0 -X mv {} destdir
-
- -

(You may have to modify the pattern if you have the dotglob option -enabled.) -

-

GNU Parallel can replace certain common idioms that operate on lines read -from a file (in this case, filenames listed one per line): -

-
	while IFS= read -r x; do
-		do-something1 "$x" "config-$x"
-		do-something2 < "$x"
-	done < file | process-output
-
- -

with a more compact syntax reminiscent of lambdas: -

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

Parallel provides a built-in mechanism to remove filename extensions, which -lends itself to batch file transformations or renaming: -

-
ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}"
-
-

This will recompress all files in the current directory with names ending -in .gz using bzip2, running one job per CPU (-j+0) in parallel. -(We use ls for brevity here; using find as above is more -robust in the face of filenames containing unexpected characters.) -Parallel can take arguments from the command line; the above can also be -written as -

-
-
parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz
-
- -

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

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

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

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

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

-

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

-
-
parallel -j 10 < file
-
- -

will evaluate the commands using the shell (since no explicit command is -supplied as an argument), in blocks of ten shell jobs at a time. +

For a complete description, refer to the GNU Parallel documentation, which +is available at +https://www.gnu.org/software/parallel/parallel_tutorial.html.


-
+
+
+
+ @@ -1803,16 +1878,16 @@ shell context; no new process is created to interpret them. word function is optional. If the function reserved word is supplied, the parentheses are optional. -The body of the function is the compound command +The body of the function is the compound command compound-command (see Compound Commands). That command is usually a list enclosed between { and }, but -may be any compound command listed above, -with one exception: If the function reserved word is used, but the -parentheses are not supplied, the braces are required. +may be any compound command listed above. +If the function reserved word is used, but the +parentheses are not supplied, the braces are recommended. compound-command is executed whenever fname is specified as the -name of a command. +name of a simple command. When the shell is in POSIX mode (see Bash POSIX Mode), -fname must be a valid shell name and +fname must be a valid shell name and may not be the same as one of the special builtins (see Special Builtins). In default mode, a function name can be any unquoted shell word that does @@ -1879,17 +1954,29 @@ return status is the exit status of the last command executed before the return.

Variables local to the function may be declared with the -local builtin. These variables are visible only to +local builtin (local variables). +Ordinarily, variables and their values +are shared between a function and its caller. +These variables are visible only to the function and the commands it invokes. This is particularly important when a shell function calls other functions.

+

In the following description, the current scope is a currently- +executing function. +Previous scopes consist of that function’s caller and so on, +back to the "global" scope, where the shell is not executing +any shell function. +Consequently, a local variable at the current local scope is a variable +declared using the local or declare builtins in the +function that is currently executing. +

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

-

The shell uses dynamic scoping to control a variable’s visibility +

The shell uses dynamic scoping to control a variable’s visibility within functions. With dynamic scoping, visible variables and their values are a result of the sequence of function calls that caused execution @@ -1901,11 +1988,11 @@ This is also the value that a local variable declaration "shadows", and the value that is restored when the function returns.

-

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

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

The following script demonstrates this behavior. When executed, the script displays @@ -1935,20 +2022,23 @@ variable is local to the current scope, unset will unset it; otherwise the unset will refer to the variable found in any calling scope as described above. If a variable at the current local scope is unset, it will remain so +(appearing as unset) until it is reset in that scope or until the function returns. Once the function returns, any instance of the variable at a previous scope will become visible. If the unset acts on a variable at a previous scope, any instance of a -variable with that name that had been shadowed will become visible. +variable with that name that had been shadowed will become visible +(see below how localvar_unsetshell option changes this behavior).

Function names and definitions may be listed with the -f option to the declare (typeset) -builtin command (see Bash Builtins). +builtin command (see Bash Builtin Commands). The -F option to declare or typeset will list the function names only (and optionally the source file and line number, if the extdebug shell option is enabled). -Functions may be exported so that subshells +Functions may be exported so that child shell processes +(those created when executing a separate shell invocation) automatically have them defined with the -f option to the export builtin (see Bourne Shell Builtins). @@ -1959,7 +2049,9 @@ function call stack and restrict the number of function invocations. By default, no limit is placed on the number of recursive calls.


-
+
+
+ @@ -1968,20 +2060,14 @@ Next: , - - - - -

A parameter is an entity that stores values. +

A parameter is an entity that stores values. It can be a name, a number, or one of the special characters listed below. -A variable is a parameter denoted by a name. -A variable has a value and zero or more attributes. +A variable is a parameter denoted by a name. +A variable has a value and zero or more attributes. Attributes are assigned using the declare builtin command -(see the description of the declare builtin in Bash Builtins). +(see the description of the declare builtin in Bash Builtin Commands).

A parameter is set if it has been assigned a value. The null string is a valid value. Once a variable is set, it may be unset only by using @@ -1995,17 +2081,16 @@ the unset builtin command. is not given, the variable is assigned the null string. All values undergo tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote -removal (detailed below). If the variable has its integer +removal (see Shell Parameter Expansion). +If the variable has its integer attribute set, then value is evaluated as an arithmetic expression even if the $((…)) expansion is not used (see Arithmetic Expansion). -Word splitting is not performed, with the exception -of "$@" as explained below. -Filename expansion is not performed. +Word splitting and filename expansion are not performed. Assignment statements may also appear as arguments to the alias, declare, typeset, export, readonly, -and local builtin commands (declaration commands). +and local builtin commands (declaration commands). When in POSIX mode (see Bash POSIX Mode), these builtins may appear in a command after one or more instances of the command builtin and retain these assignment statement properties. @@ -2015,8 +2100,8 @@ to a shell variable or array index (see Arrays), the &lsqu operator can be used to append to or add to the variable’s previous value. This includes arguments to builtin commands such as declare that -accept assignment statements (declaration commands). -When ‘+=’ is applied to a variable for which the integer attribute +accept assignment statements (declaration commands). +When ‘+=’ 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 @@ -2028,10 +2113,10 @@ in an associative array. When applied to a string-valued variable, value is expanded and appended to the variable’s value.

-

A variable can be assigned the nameref attribute using the +

A variable can be assigned the nameref attribute using the -n option to the declare or local builtin commands -(see Bash Builtins) -to create a nameref, or a reference to another variable. +(see Bash Builtin Commands) +to create a nameref, or a reference to another variable. This allows variables to be manipulated indirectly. Whenever the nameref variable is referenced, assigned to, unset, or has its attributes modified (other than using or changing the nameref @@ -2045,9 +2130,9 @@ argument, running

declare -n ref=$1
 
-

inside the function creates a nameref variable ref whose value is +

inside the function creates a nameref variable ref whose value is the variable name passed as the first argument. -References and assignments to ref, and changes to its attributes, +References and assignments to ref, and changes to its attributes, are treated as references, assignments, and attribute modifications to the variable whose name was passed as $1.

@@ -2063,15 +2148,20 @@ Namerefs can be unset using the -n option to the unset Otherwise, if unset is executed with the name of a nameref variable as an argument, the variable referenced by the nameref variable will be unset.

+
-
+
+

3.4.1 Positional Parameters

-

A positional parameter is a parameter denoted by one or more +

A positional parameter is a parameter denoted by one or more digits, other than the single digit 0. Positional parameters are assigned from the shell’s arguments when it is invoked, and may be reassigned using the set builtin command. @@ -2088,7 +2178,9 @@ temporarily replaced when a shell function is executed digit is expanded, it must be enclosed in braces.


-
+
+
+ @@ -2099,9 +2191,7 @@ Previous:

($*) Expands to the positional parameters, starting from one. When the expansion is not within double quotes, each positional parameter @@ -2119,9 +2209,7 @@ If IFS is null, the parameters are joined without intervening separators.

-
@ - -
+
@

($@) Expands to the positional parameters, starting from one. In contexts where word splitting is performed, this expands each @@ -2144,24 +2232,18 @@ When there are no positional parameters, "$@" and expand to nothing (i.e., they are removed).

-
# - -
+
#

($#) Expands to the number of positional parameters in decimal.

-
? - -
+
?

($?) Expands to the exit status of the most recently executed foreground pipeline.

-
- - -
+
-

($-, a hyphen.) Expands to the current option flags as specified upon invocation, by the set @@ -2169,26 +2251,20 @@ builtin command, or those set by the shell itself (such as the -i option).

-
$ - -
+
$
-

($$) Expands to the process ID of the shell. In a () subshell, it +

($$) Expands to the process ID of the shell. In a subshell, it expands to the process ID of the invoking shell, not the subshell.

-
! - -
+
!

($!) Expands to the process ID of the job most recently placed into the background, whether executed as an asynchronous command or using the bg builtin (see Job Control Builtins).

-
0 - -
+
0

($0) Expands to the name of the shell or shell script. This is set at shell initialization. If Bash is invoked with a file of commands @@ -2201,7 +2277,10 @@ to the filename used to invoke Bash, as given by argument zero.


-
+
+
+
+ @@ -2221,29 +2300,6 @@ Next: , Previou
  • filename expansion
  • - - - - - - - - - - -

    The order of expansions is: brace expansion; @@ -2253,14 +2309,14 @@ word splitting; and filename expansion.

    On systems that can support it, there is an additional expansion -available: process substitution. +available: process substitution. This is performed at the same time as tilde, parameter, variable, and arithmetic expansion and command substitution.

    After these expansions are performed, quote characters present in the original word are removed unless they have been quoted themselves -(quote removal). +(quote removal).

    Only brace expansion, word splitting, and filename expansion can increase the number of words of the expansion; other expansions @@ -2273,8 +2329,20 @@ The only exceptions to this are the expansions of

    After all expansions, quote removal (see Quote Removal) is performed.

    +
    -
    +
    + @@ -2284,7 +2352,7 @@ Next: , U

    Brace expansion is a mechanism by which arbitrary strings may be generated. This mechanism is similar to -filename expansion (see Filename Expansion), +filename expansion (see Filename Expansion), but the filenames generated need not exist. Patterns to be brace expanded take the form of an optional preamble, followed by either a series of comma-separated strings or a sequence expression @@ -2304,7 +2372,7 @@ ade ace abe

    A sequence expression takes the form {x..y[..incr]}, -where x and y are either integers or single characters, +where x and y are either integers or letters, and incr, an optional increment, is an integer. When integers are supplied, the expression expands to each number between x and y, inclusive. @@ -2313,10 +2381,11 @@ 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 necessary. -When characters are supplied, the expression expands to each character +When letters are supplied, the expression expands to each character lexicographically between x and y, inclusive, using the default C locale. -Note that both x and y must be of the same type. +Note that both x and y must be of the same type +(integer or letter). When the increment is supplied, it is used as the difference between each term. The default increment is 1 or -1 as appropriate.

    @@ -2349,7 +2418,9 @@ above example:

    -
    +
    +
    + @@ -2359,10 +2430,10 @@ Next:

    Shell Parameters) when they appear as arguments to simple commands. -Bash does not do this, except for the declaration commands listed +Bash does not do this, except for the declaration commands listed above, when in POSIX mode.


    -
    +
    +
    + @@ -2467,7 +2540,7 @@ or when parameter is followed by a character that is not to be interpreted as part of its name.

    If the first character of parameter is an exclamation point (!), -and parameter is not a nameref, +and parameter is not a nameref, it introduces a level of indirection. Bash uses the value formed by expanding the rest of parameter as the new parameter; this is then @@ -2496,13 +2569,19 @@ the operator tests for both parameter’s existence and that its is not null; if the colon is omitted, the operator tests only for existence.

    -
    ${parameter:-word}
    +
    ${parameter:-word}

    If parameter is unset or null, the expansion of word is substituted. Otherwise, the value of parameter is substituted.

    +
    +
    $ v=123
    +$ echo ${v-unset}
    +123
    +
    +
    -
    ${parameter:=word}
    +
    ${parameter:=word}

    If parameter is unset or null, the expansion of word is assigned to parameter. @@ -2510,8 +2589,15 @@ The value of parameter is then substituted. Positional parameters and special parameters may not be assigned to in this way.

    +
    +
    $ var=
    +$ : ${var:=DEFAULT}
    +$ echo $var
    +DEFAULT
    +
    +
    -
    ${parameter:?word}
    +
    ${parameter:?word}

    If parameter is null or unset, the expansion of word (or a message to that effect if word @@ -2519,19 +2605,31 @@ is not present) is written to the standard error and the shell, if it is not interactive, exits. Otherwise, the value of parameter is substituted.

    +
    +
    $ var=
    +$ : ${var:?var is unset or null}
    +bash: var: var is unset or null
    +
    +
    -
    ${parameter:+word}
    +
    ${parameter:+word}

    If parameter is null or unset, nothing is substituted, otherwise the expansion of word is substituted.

    +
    +
    $ var=123
    +$ echo ${var:+var is set and not null}
    +var is set and not null
    +
    +
    -
    ${parameter:offset}
    -
    ${parameter:offset:length}
    +
    ${parameter:offset}
    +
    ${parameter:offset:length}

    This is referred to as Substring Expansion. It expands to up to length characters of the value of parameter starting at the character specified by offset. -If parameter is ‘@’, an indexed array subscripted by +If parameter is ‘@’ or ‘*’, an indexed array subscripted by ‘@’ or ‘*’, or an associative array name, the results differ as described below. If length is omitted, it expands to the substring of the value of @@ -2606,8 +2704,8 @@ bc $ echo ${array[0]: -7:-2} bcdef -

    If parameter is ‘@’, the result is length positional -parameters beginning at offset. +

    If parameter is ‘@’ or ‘*’, the result is length +positional parameters beginning at offset. A negative offset is taken relative to one greater than the greatest positional parameter, so an offset of -1 evaluates to the last positional parameter. @@ -2669,16 +2767,16 @@ If offset is 0, and the positional parameters are used, $0

    -
    ${!prefix*}
    -
    ${!prefix@}
    +
    ${!prefix*}
    +
    ${!prefix@}

    Expands to the names of variables whose names begin with prefix, separated by the first character of the IFS special variable. When ‘@’ is used and the expansion appears within double quotes, each variable name expands to a separate word.

    -
    ${!name[@]}
    -
    ${!name[*]}
    +
    ${!name[@]}
    +
    ${!name[*]}

    If name is an array variable, expands to the list of array indices (keys) assigned in name. If name is not an array, expands to 0 if name is set and null @@ -2687,7 +2785,7 @@ When ‘@’ is used and the expansion appears within doubl key expands to a separate word.

    -
    ${#parameter}
    +
    ${#parameter}

    The length in characters of the expanded value of parameter is substituted. If parameter is ‘*’ or ‘@’, the value substituted @@ -2701,8 +2799,8 @@ interpreted as relative to one greater than the maximum index of array, and an index of -1 references the last element.

    -
    ${parameter#word}
    -
    ${parameter##word}
    +
    ${parameter#word}
    +
    ${parameter##word}

    The word is expanded to produce a pattern and matched according to the rules described below (see Pattern Matching). If the pattern matches @@ -2719,8 +2817,8 @@ the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list.

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

    The word is expanded to produce a pattern and matched according to the rules described below (see Pattern Matching). @@ -2737,23 +2835,99 @@ the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list.

    -
    ${parameter/pattern/string}
    -
    -

    The pattern is expanded to produce a pattern just as in +

    ${parameter/pattern/string}
    +
    ${parameter//pattern/string}
    +
    ${parameter/#pattern/string}
    +
    ${parameter/%pattern/string}
    +

    The pattern is expanded to produce a pattern just as in filename expansion. Parameter is expanded and the longest match of pattern against its value is replaced with string. +string undergoes tilde expansion, parameter and variable expansion, +arithmetic expansion, command and process substitution, and quote removal. The match is performed according to the rules described below (see Pattern Matching). -If pattern begins with ‘/’, all matches of pattern are -replaced with string. Normally only the first match is replaced. -If pattern begins with ‘#’, it must match at the beginning -of the expanded value of parameter. -If pattern begins with ‘%’, it must match at the end -of the expanded value of parameter. -If string is null, matches of pattern are deleted -and the / following pattern may be omitted. -If the nocasematch shell option +

    +

    In the first form above, only the first match is replaced. +If there are two slashes separating parameter and pattern +(the second form above), all matches of pattern are +replaced with string. +If pattern is preceded by ‘#’ (the third form above), +it must match at the beginning of the expanded value of parameter. +If pattern is preceded by ‘%’ (the fourth form above), +it must match at the end of the expanded value of parameter. +If the expansion of string is null, +matches of pattern are deleted. +If string is null, +matches of pattern are deleted +and the ‘/’ following pattern may be omitted. +

    +

    If the patsub_replacement shell option is enabled using shopt, +any unquoted instances of ‘&’ in string are replaced with the +matching portion of pattern. +This is intended to duplicate a common sed idiom. +

    +

    Quoting any part of string inhibits replacement in the +expansion of the quoted portion, including replacement strings stored +in shell variables. +Backslash will escape ‘&’ in string; the backslash is removed +in order to permit a literal ‘&’ in the replacement string. +Users should take care if string is double-quoted to avoid +unwanted interactions between the backslash and double-quoting, since +backslash has special meaning within double quotes. +Pattern substitution performs the check for unquoted ‘&’ after +expanding string, +so users should ensure to properly quote any occurrences of ‘&’ +they want to be taken literally in the replacement +and ensure any instances of ‘&’ they want to be replaced are unquoted. +

    +

    For instance, +

    +
    +
    var=abcdef
    +rep='& '
    +echo ${var/abc/& }
    +echo "${var/abc/& }"
    +echo ${var/abc/$rep}
    +echo "${var/abc/$rep}"
    +
    + +

    will display four lines of "abc def", while +

    +
    +
    var=abcdef
    +rep='& '
    +echo ${var/abc/\& }
    +echo "${var/abc/\& }"
    +echo ${var/abc/"& "}
    +echo ${var/abc/"$rep"}
    +
    + +

    will display four lines of "& def". +Like the pattern removal operators, double quotes surrounding the +replacement string quote the expanded characters, while double quotes +enclosing the entire parameter substitution do not, since +the expansion is performed in a +context that doesn’t take any enclosing double quotes into account. +

    +

    Since backslash can escape ‘&’, it can also escape a backslash in +the replacement string. +This means that ‘\\’ will insert a literal +backslash into the replacement, so these two echo commands +

    +
    +
    var=abcdef
    +rep='\\&xyz'
    +echo ${var/abc/\\&xyz}
    +echo ${var/abc/$rep}
    +
    + +

    will both output ‘\abcxyzdef’. +

    +

    It should rarely be necessary to enclose only string in double +quotes. +

    +

    If the nocasematch shell option (see the description of shopt in The Shopt Builtin) is enabled, the match is performed without regard to the case of alphabetic characters. @@ -2766,17 +2940,18 @@ the substitution operation is applied to each member of the array in turn, and the expansion is the resultant list.

    -
    ${parameter^pattern}
    -
    ${parameter^^pattern}
    -
    ${parameter,pattern}
    -
    ${parameter,,pattern}
    +
    ${parameter^pattern}
    +
    ${parameter^^pattern}
    +
    ${parameter,pattern}
    +
    ${parameter,,pattern}

    This expansion modifies the case of alphabetic characters in parameter. The pattern is expanded to produce a pattern just as in filename expansion. Each character in the expanded value of parameter is tested against pattern, and, if it matches the pattern, its case is converted. The pattern should not attempt to match more than one character. -The ‘^’ operator converts lowercase letters matching pattern +

    +

    The ‘^’ operator converts lowercase letters matching pattern to uppercase; the ‘,’ operator converts matching uppercase letters to lowercase. The ‘^^’ and ‘,,’ expansions convert each matched character in the @@ -2784,7 +2959,8 @@ expanded value; the ‘^’ and ‘,&rsquo the first character in the expanded value. If pattern is omitted, it is treated like a ‘?’, which matches every character. -If parameter is ‘@’ or ‘*’, +

    +

    If parameter is ‘@’ or ‘*’, the case modification operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter @@ -2793,51 +2969,55 @@ the case modification operation is applied to each member of the array in turn, and the expansion is the resultant list.

    -
    ${parameter@operator}
    +
    ${parameter@operator}

    The expansion is either a transformation of the value of parameter or information about parameter itself, depending on the value of operator. Each operator is a single letter:

    -
    U
    +
    U

    The expansion is a string that is the value of parameter with lowercase alphabetic characters converted to uppercase.

    -
    u
    +
    u

    The expansion is a string that is the value of parameter with the first character converted to uppercase, if it is alphabetic.

    -
    L
    +
    L

    The expansion is a string that is the value of parameter with uppercase alphabetic characters converted to lowercase.

    -
    Q
    +
    Q

    The expansion is a string that is the value of parameter quoted in a format that can be reused as input.

    -
    E
    +
    E

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

    -
    P
    +
    P

    The expansion is a string that is the result of expanding the value of parameter as if it were a prompt string (see Controlling the Prompt).

    -
    A
    +
    A

    The expansion is a string in the form of an assignment statement or declare command that, if evaluated, will recreate parameter with its attributes and value.

    -
    K
    +
    K

    Produces a possibly-quoted version of the value of parameter, except that it prints the values of indexed and associative arrays as a sequence of quoted key-value pairs (see Arrays).

    -
    a
    +
    a

    The expansion is a string consisting of flag values representing parameter’s attributes.

    +
    k
    +

    Like the ‘K’ transformation, but expands the keys and values of +indexed and associative arrays to separate words after word splitting. +

    If parameter is ‘@’ or ‘*’, @@ -2854,7 +3034,9 @@ expansion as described below.


    -
    +
    +
    + @@ -2895,7 +3077,9 @@ form, escape the inner backquotes with backslashes. filename expansion are not performed on the results.


    -
    +
    +
    + @@ -2910,8 +3094,10 @@ and the substitution of the result. The format for arithmetic expansion is:
    $(( expression ))
     
    -

    The expression is treated as if it were within double quotes, but -a double quote inside the parentheses is not treated specially. +

    The expression undergoes the same expansions +as if it were within double quotes, +but double quote characters in expression are not treated specially +and are removed. All tokens in the expression undergo parameter and variable expansion, command substitution, and quote removal. The result is treated as the arithmetic expression to be evaluated. @@ -2923,7 +3109,9 @@ If the expression is invalid, Bash prints a message indicating failure to the standard error and no substitution occurs.


    -
    +
    +
    + @@ -2960,7 +3148,9 @@ parameter and variable expansion, command substitution, and arithmetic expansion.


    -
    +
    +
    + @@ -3008,15 +3198,13 @@ null argument removal. is performed.


    -
    +
    +
    +

    3.5.8 Filename Expansion

    - - - @@ -3042,9 +3230,13 @@ without regard to the case of alphabetic characters.

    When a pattern is used for filename expansion, the character ‘.’ at the start of a filename or immediately following a slash must be matched explicitly, unless the shell option dotglob is set. -The filenames ‘.’ and ‘..’ must always be matched explicitly, +In order to match the filenames ‘.’ and ‘..’, +the pattern must begin with ‘.’ (for example, ‘.?’), even if dotglob is set. -In other cases, the ‘.’ character is not treated specially. +If the globskipdots shell option is enabled, the filenames +‘.’ and ‘..’ are never matched, even if the pattern begins +with a ‘.’. +When not matching filenames, the ‘.’ character is not treated specially.

    When matching a filename, the slash character must always be matched explicitly by a slash in the pattern, but in other matching @@ -3053,6 +3245,7 @@ below (see Pattern Matching).

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

    The GLOBIGNORE @@ -3075,8 +3268,12 @@ To get the old behavior of ignoring filenames beginning with a The dotglob option is disabled when GLOBIGNORE is unset.

    +
    -
    +
    + @@ -3094,7 +3291,7 @@ literally.

    The special pattern characters have the following meanings:

    -
    *
    +
    *

    Matches any string, including the null string. When the globstar shell option is enabled, and ‘*’ is used in a filename expansion context, two adjacent ‘*’s used as a single @@ -3103,10 +3300,10 @@ subdirectories. 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 characters separated by a hyphen denotes a range expression; any character that falls between those two characters, inclusive, @@ -3117,20 +3314,22 @@ then any character not enclosed is matched. A ‘-’ may be matched by including it as the first or last character in the set. A ‘]’ may be matched by including it as the first character in the set. -The sorting order of characters in range expressions is determined by +The sorting order of characters in range expressions, +and the characters included in the range, +are determined by the current locale and the values of the LC_COLLATE and LC_ALL shell variables, if set.

    For example, in the default C locale, ‘[a-dx-z]’ is equivalent to ‘[abcdxyz]’. Many locales sort characters in dictionary order, and in these locales ‘[a-dx-z]’ is typically not equivalent to ‘[abcdxyz]’; -it might be equivalent to ‘[aBbCcDdxXyYz]’, for example. To obtain +it might be equivalent to ‘[aBbCcDdxYyZz]’, for example. To obtain the traditional interpretation of ranges in bracket expressions, you can force the use of the C locale by setting the LC_COLLATE or LC_ALL environment variable to the value ‘C’, or enable the globasciiranges shell option.

    -

    Within ‘[’ and ‘]’, character classes can be specified +

    Within ‘[’ and ‘]’, character classes can be specified using the syntax [:class:], where class is one of the following classes defined in the POSIX standard: @@ -3142,7 +3341,7 @@ print punct space upper word xdigit The word character class matches letters, digits, and the character ‘_’.

    -

    Within ‘[’ and ‘]’, an equivalence class can be +

    Within ‘[’ and ‘]’, an equivalence class can be specified using the syntax [=c=], which matches all characters with the same collation weight (as defined by the current locale) as the character c. @@ -3153,34 +3352,53 @@ matches the collating symbol symbol.

    If the extglob shell option is enabled using the shopt -builtin, several extended pattern matching operators are recognized. +builtin, the shell recognizes several extended pattern matching operators. In the following description, a pattern-list is a list of one or more patterns separated by a ‘|’. +When matching filenames, the dotglob shell option determines +the set of filenames that are tested, as described above. Composite patterns may be formed using one or more of the following sub-patterns:

    -
    ?(pattern-list)
    +
    ?(pattern-list)

    Matches zero or one occurrence of the given patterns.

    -
    *(pattern-list)
    +
    *(pattern-list)

    Matches zero or more occurrences of the given patterns.

    -
    +(pattern-list)
    +
    +(pattern-list)

    Matches one or more occurrences of the given patterns.

    -
    @(pattern-list)
    +
    @(pattern-list)

    Matches one of the given patterns.

    -
    !(pattern-list)
    +
    !(pattern-list)

    Matches anything except one of the given patterns.

    +

    The extglob option changes the behavior of the parser, since the +parentheses are normally treated as operators with syntactic meaning. +To ensure that extended matching patterns are parsed correctly, make sure +that extglob is enabled before parsing constructs containing the +patterns, including shell functions and command substitutions. +

    +

    When matching filenames, the dotglob shell option determines +the set of filenames that are tested: +when dotglob is enabled, the set of filenames includes all files +beginning with ‘.’, but the filenames +‘.’ and ‘..’ must be matched by a +pattern or sub-pattern that begins with a dot; +when it is disabled, the set does not +include any filenames beginning with “.” unless the pattern +or sub-pattern begins with a ‘.’. +As above, ‘.’ only has a special meaning when matching filenames. +

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


    -
    +
    +
    +
    + @@ -3199,7 +3420,10 @@ characters ‘\’, ‘'’, and &lsqu result from one of the above expansions are removed.


    -
    +
    +
    +
    + @@ -3207,9 +3431,9 @@ Next:

    The Shopt Builtin).

    In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is @@ -3265,29 +3491,29 @@ special files, bash will use them; otherwise it will emulate them internally with the behavior described below.

    -
    /dev/fd/fd
    +
    /dev/fd/fd

    If fd is a valid integer, file descriptor fd is duplicated.

    -
    /dev/stdin
    +
    /dev/stdin

    File descriptor 0 is duplicated.

    -
    /dev/stdout
    +
    /dev/stdout

    File descriptor 1 is duplicated.

    -
    /dev/stderr
    +
    /dev/stderr

    File descriptor 2 is duplicated.

    -
    /dev/tcp/host/port
    +
    /dev/tcp/host/port

    If host is a valid hostname or Internet address, and port is an integer port number or service name, Bash attempts to open the corresponding TCP socket.

    -
    /dev/udp/host/port
    +
    /dev/udp/host/port

    If host is a valid hostname or Internet address, and port is an integer port number or service name, Bash attempts to open the corresponding UDP socket. @@ -3300,7 +3526,20 @@ the corresponding UDP socket. care, as they may conflict with file descriptors the shell uses internally.

    -

    3.6.1 Redirecting Input

    + +
    +

    3.6.1 Redirecting Input

    Redirection of input causes the file whose name results from the expansion of word to be opened for reading on file descriptor n, @@ -3312,7 +3551,9 @@ is not specified.

    [n]<word
     
    -

    3.6.2 Redirecting Output

    +
    +
    +

    3.6.2 Redirecting Output

    Redirection of output causes the file whose name results from the expansion of word to be opened for writing on file descriptor n, @@ -3333,7 +3574,9 @@ If the redirection operator is ‘>|’, or the redirect ‘>’ and the noclobber option is not enabled, the redirection is attempted even if the file named by word exists.

    -

    3.6.3 Appending Redirected Output

    +
    +
    +

    3.6.3 Appending Redirected Output

    Redirection of output in this fashion causes the file whose name results from the expansion of word @@ -3346,7 +3589,9 @@ is not specified. If the file does not exist it is created.

    [n]>>word
     
    -

    3.6.4 Redirecting Standard Output and Standard Error

    +
    +
    +

    3.6.4 Redirecting Standard Output and Standard Error

    This construct allows both the standard output (file descriptor 1) and the standard error output (file descriptor 2) @@ -3371,7 +3616,9 @@ This is semantically equivalent to ‘-’. If it does, other redirection operators apply (see Duplicating File Descriptors below) for compatibility reasons.

    -

    3.6.5 Appending Standard Output and Standard Error

    +
    +
    +

    3.6.5 Appending Standard Output and Standard Error

    This construct allows both the standard output (file descriptor 1) and the standard error output (file descriptor 2) @@ -3388,7 +3635,9 @@ expansion of word.

    (see Duplicating File Descriptors below).

    -

    3.6.6 Here Documents

    +
    +
    +

    3.6.6 Here Documents

    This type of redirection instructs the shell to read input from the current source until a line containing only word (with no trailing blanks) is seen. All of @@ -3420,7 +3669,9 @@ line containing delimiter. This allows here-documents within shell scripts to be indented in a natural fashion.

    -

    3.6.7 Here Strings

    +
    +
    +

    3.6.7 Here Strings

    A variant of here documents, the format is:

    [n]<<< word
    @@ -3435,7 +3686,9 @@ with a newline appended,
     to the command on its
     standard input (or file descriptor n if n is specified).
     

    -

    3.6.8 Duplicating File Descriptors

    +
    +
    +

    3.6.8 Duplicating File Descriptors

    The redirection operator

    [n]<&word
    @@ -3464,7 +3717,9 @@ As a special case, if n is omitted, and word does not
     expand to one or more digits or ‘-’, the standard output and standard
     error are redirected as described previously.
     

    -

    3.6.9 Moving File Descriptors

    +
    +
    +

    3.6.9 Moving File Descriptors

    The redirection operator

    [n]<&digit-
    @@ -3480,7 +3735,9 @@ or the standard input (file descriptor 0) if n is not specified.
     

    moves the file descriptor digit to file descriptor n, or the standard output (file descriptor 1) if n is not specified.

    -

    3.6.10 Opening File Descriptors for Reading and Writing

    +
    +
    +

    3.6.10 Opening File Descriptors for Reading and Writing

    The redirection operator

    [n]<>word
    @@ -3491,34 +3748,27 @@ to be opened for both reading and writing on file descriptor
     is not specified.  If the file does not exist, it is created.
     


    -
    +
    +
    +
    +

    3.7 Executing Commands

    - - - - - - - - +
    -
    +
    + @@ -3548,7 +3798,11 @@ and quote removal before being assigned to the variable.

    If no command name results, the variable assignments affect the current -shell environment. Otherwise, the variables are added to the environment +shell environment. +In the case of such a command (one that consists only of assignment +statements and redirections), assignment statements are performed before +redirections. +Otherwise, the variables are added to the environment of the executed command and do not affect the current shell environment. 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. @@ -3564,7 +3818,9 @@ the exit status of the last command substitution performed. If there were no command substitutions, the command exits with a status of zero.


    -
    +
    +
    + @@ -3610,7 +3866,7 @@ to the command are set to the arguments supplied, 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 -shell script and the shell executes it as described in +shell script and the shell executes it as described in Shell Scripts.
  • If the command was not begun asynchronously, the shell waits for @@ -3619,14 +3875,16 @@ the command to complete and collects its exit status.

  • -
    +
    +
    +

    3.7.3 Command Execution Environment

    -

    The shell has an execution environment, which consists of the +

    The shell has an execution environment, which consists of the following:

      @@ -3655,7 +3913,7 @@ arguments) or by set
    • shell aliases defined with alias (see Aliases)
    • various process IDs, including those of background jobs -(see Lists), the value of $$, and the value of +(see Lists of Commands), the value of $$, and the value of $PPID
    @@ -3685,6 +3943,8 @@ shell’s parent, and traps ignored by the shell are ignored

    A command invoked in this separate environment cannot affect the shell’s execution environment.

    +

    A subshell is a copy of the shell process. +

    Command substitution, commands grouped with parentheses, and asynchronous commands are invoked in a subshell environment that is a duplicate of the shell environment, @@ -3704,7 +3964,9 @@ Otherwise, the invoked command inherits the file descriptors of the calling shell as modified by redirections.


    -
    +
    +
    + @@ -3712,13 +3974,13 @@ Next: , Previous:

    When a program is invoked it is given an array of strings -called the environment. +called the environment. This is a list of name-value pairs, of the form name=value.

    Bash 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 export +it for export to child processes. Executed commands inherit the environment. The export and ‘declare -x’ commands allow parameters and functions to be added to and @@ -3746,7 +4008,9 @@ is set to the full pathname of the command and passed to that command in its environment.


    -
    +
    +
    +

    Next: , Previous: , Up: Executing Commands   [Contents][Index]

    @@ -3754,7 +4018,7 @@ Next: , Previous:

    The exit status of an executed command is the value returned by the -waitpid system call or equivalent function. Exit statuses +waitpid system call or equivalent function. Exit statuses fall between 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 @@ -3779,7 +4043,7 @@ the exit status is greater than zero.

    The exit status is used by the Bash conditional commands (see Conditional Constructs) and some of the list -constructs (see Lists). +constructs (see Lists of Commands).

    All of the Bash builtins return an exit status of zero if they succeed and a non-zero status on failure, so they may be used by the @@ -3787,8 +4051,13 @@ conditional and list constructs. All builtins return an exit status of 2 to indicate incorrect usage, generally invalid options or missing arguments.

    +

    The exit status of the last command is available in the special +parameter $? (see Special Parameters). +


    -
    +
    +
    + @@ -3837,8 +4106,40 @@ which a trap has been set will cause the wait builtin to return immediately with an exit status greater than 128, immediately after which the trap is executed.

    +

    When job control is not enabled, and Bash is waiting for a foreground +command to complete, the shell receives keyboard-generated signals +such as SIGINT (usually generated by ‘^C’) that users +commonly intend to send to that command. +This happens because the shell and the command are in the same process +group as the terminal, and ‘^C’ sends SIGINT to all processes +in that process group. +See Job Control, for a more in-depth discussion of process groups. +

    +

    When Bash is running without job control enabled and receives SIGINT +while waiting for a foreground command, it waits until that foreground +command terminates and then decides what to do about the SIGINT: +

    +
      +
    1. If the command terminates due to the SIGINT, Bash concludes +that the user meant to end the entire script, and acts on the +SIGINT (e.g., by running a SIGINT trap or exiting itself); + +
    2. If the pipeline does not terminate due to SIGINT, the program +handled the SIGINT itself and did not treat it as a fatal signal. +In that case, Bash does not treat SIGINT as a fatal signal, +either, instead assuming that the SIGINT was used as part of the +program’s normal operation (e.g., emacs uses it to abort editing +commands) or deliberately discarded. However, Bash will run any +trap set on SIGINT, as it does with any other trapped signal it +receives while it is waiting for the foreground command to +complete, for compatibility. +
    +
    -
    +
    +
    +
    + @@ -3863,8 +4164,10 @@ are unset.

    A shell script may be made executable by using the chmod command to turn on the execute bit. When Bash finds such a file while -searching the $PATH for a command, it spawns a subshell to -execute it. In other words, executing +searching the $PATH for a command, it creates a +new instance of itself +to execute it. +In other words, executing

    filename arguments
     
    @@ -3910,25 +4213,15 @@ under another shell. It’s a common idiom to use env to find in $PATH.


    -
    +
    +
    +
    +

    4 Shell Builtin Commands

    - - - - - -

    Builtin commands are contained within the shell itself. When the name of a builtin command is used as the first word of @@ -3963,10 +4256,17 @@ 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.

    +
    -
    +
    +

    4.1 Bourne Shell Builtins

    @@ -3974,9 +4274,8 @@ Next: , Up: < These commands are implemented as specified by the POSIX standard.

    -
    : (a colon)
    -
    -
    +
    : (a colon)
    +
    : [arguments]
     
    @@ -3984,35 +4283,34 @@ These commands are implemented as specified by the POSIX standard The return status is zero.

    -
    . (a period)
    -
    -
    +
    . (a period)
    +
    . filename [arguments]
     

    Read and execute commands from the filename argument in the current shell context. If filename does not contain a slash, -the PATH variable is used to find filename. -When Bash is not in POSIX mode, the current directory is searched +the PATH variable is used to find filename, +but filename does not need to be executable. +When Bash is not in POSIX mode, it searches the current directory if filename is not found in $PATH. If any arguments are supplied, they become the positional parameters when filename is executed. Otherwise the positional parameters are unchanged. -If the -T option is enabled, source inherits any trap on +If the -T option is enabled, . inherits any trap on DEBUG; if it is not, any DEBUG trap string is saved and -restored around the call to source, and source unsets the +restored around the call to ., and . unsets the DEBUG trap while it executes. If -T is not set, and the sourced file changes -the DEBUG trap, the new value is retained when source completes. +the DEBUG trap, the new value is retained when . completes. The return status is the exit status of the last command executed, or zero if no commands are executed. If filename is not found, or cannot be read, the return status is non-zero. This builtin is equivalent to source.

    -
    break
    -
    -
    +
    break
    +
    break [n]
     
    @@ -4022,16 +4320,14 @@ If n is supplied, the nth enclosing loop is exited. The return status is zero unless n is not greater than or equal to 1.

    -
    cd
    -
    -
    +
    cd
    +
    cd [-L|[-P [-e]] [-@] [directory]
     

    Change the current working directory to directory. If directory is not supplied, the value of the HOME shell variable is used. -Any additional arguments following directory are ignored. If the shell variable CDPATH exists, it is used as a search path: each directory name in CDPATH is searched for @@ -4067,13 +4363,17 @@ before the directory change is attempted. successful, the absolute pathname of the new working directory is written to the standard output.

    +

    If the directory change is successful, cd sets the value of the +PWD environment variable to the new directory name, and sets the +OLDPWD environment variable to the value of the current working +directory before the change. +

    The return status is zero if the directory is successfully changed, non-zero otherwise.

    -
    continue
    -
    -
    +
    continue
    +
    continue [n]
     
    @@ -4085,9 +4385,8 @@ is resumed. The return status is zero unless n is not greater than or equal to 1.

    -
    eval
    -
    -
    +
    eval
    +
    eval [arguments]
     
    @@ -4098,9 +4397,8 @@ If there are no arguments or only empty arguments, the return status is zero.

    -
    exec
    -
    -
    +
    exec
    +
    exec [-cl] [-a name] [command [arguments]]
     
    @@ -4124,9 +4422,8 @@ the current shell environment. If there are no redirection errors, the return status is zero; otherwise the return status is non-zero.

    -
    exit
    -
    -
    +
    exit
    +
    exit [n]
     
    @@ -4135,9 +4432,8 @@ If n is omitted, the exit status is that of the last command executed Any trap on EXIT is executed before the shell terminates.

    -
    export
    -
    -
    +
    export
    +
    export [-fn] [-p] [name[=value]]
     
    @@ -4145,7 +4441,7 @@ Any trap on EXIT is executed before the shell terminates. in the environment. If the -f option is supplied, the names refer to shell functions; otherwise the names refer to shell variables. The -n option means to no longer mark each name for export. -If no names are supplied, or if the -p option is given, a +If no names are supplied, or if the -p option is given, a list of names of all exported variables is displayed. The -p option displays output in a form that may be reused as input. If a variable name is followed by =value, the value of @@ -4156,9 +4452,8 @@ the names is not a valid shell variable name, or -f is supplied with a name that is not a shell function.

    -
    getopts
    -
    -
    +
    getopts
    +
    getopts optstring name [arg …]
     
    @@ -4212,9 +4507,8 @@ If getopts is silent, then a colon (‘:’) i name and OPTARG is set to the option character found.

    -
    hash
    -
    -
    +
    hash
    +
    hash [-r] [-p filename] [-dt] [name]
     
    @@ -4241,9 +4535,8 @@ The return status is zero unless a name is not found or an invalid option is supplied.

    -
    pwd
    -
    -
    +
    pwd
    +
    pwd [-LP]
     
    @@ -4257,9 +4550,8 @@ determining the name of the current directory or an invalid option is supplied.

    -
    readonly
    -
    -
    +
    readonly
    +
    readonly [-aAf] [-p] [name[=value]] …
     
    @@ -4284,9 +4576,8 @@ the name arguments is not a valid shell variable or function name, or the -f option is supplied with a name that is not a shell function.

    -
    return
    -
    -
    +
    return
    +
    return [n]
     
    @@ -4313,9 +4604,8 @@ argument or is used outside a function and not during the execution of a script by . or source.

    -
    shift
    -
    -
    +
    shift
    +
    shift [n]
     
    @@ -4332,10 +4622,9 @@ The return status is zero unless n is greater than $# or less than zero, non-zero otherwise.

    -
    test
    -
    [
    -
    - +
    test
    +
    [
    +
    test expr
     
    @@ -4357,20 +4646,20 @@ The evaluation depends on the number of arguments; see below. Operator precedence is used when there are five or more arguments.

    -
    ! expr
    +
    ! expr

    True if expr is false.

    -
    ( expr )
    +
    ( expr )

    Returns the value of expr. This may be used to override the normal precedence of operators.

    -
    expr1 -a expr2
    +
    expr1 -a expr2

    True if both expr1 and expr2 are true.

    -
    expr1 -o expr2
    +
    expr1 -o expr2

    True if either expr1 or expr2 is true.

    @@ -4379,15 +4668,15 @@ This may be used to override the normal precedence of operators. expressions using a set of rules based on the number of arguments.

    -
    0 arguments
    +
    0 arguments

    The expression is false.

    -
    1 argument
    +
    1 argument

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

    -
    2 arguments
    +
    2 arguments

    If the first argument is ‘!’, the expression is true if and only if the second argument is null. If the first argument is one of the unary conditional operators @@ -4397,7 +4686,7 @@ If the first argument is not a valid unary operator, the expression is false.

    -
    3 arguments
    +
    3 arguments

    The following conditions are applied in the order listed.

      @@ -4416,14 +4705,21 @@ argument.
    -
    4 arguments
    -

    If the first argument is ‘!’, the result is the negation of +

    4 arguments
    +

    The following conditions are applied in the order listed. +

    +
      +
    1. If the first argument is ‘!’, the result is the negation of the three-argument expression composed of the remaining arguments. -Otherwise, the expression is parsed and evaluated according to +
    2. If the first argument is exactly ‘(’ and the fourth argument is +exactly ‘)’, the result is the two-argument test of the second +and third arguments. +
    3. Otherwise, the expression is parsed and evaluated according to precedence using the rules listed above. -

      +
    +
    -
    5 or more arguments
    +
    5 or more arguments

    The expression is parsed and evaluated according to precedence using the rules listed above.

    @@ -4433,9 +4729,8 @@ using the rules listed above. operators sort lexicographically using ASCII ordering.

    -
    times
    -
    -
    +
    times
    +
    times
     
    @@ -4443,9 +4738,8 @@ operators sort lexicographically using ASCII ordering. The return status is zero.

    -
    trap
    -
    -
    +
    trap
    +
    trap [-lp] [arg] [sigspec …]
     
    @@ -4505,9 +4799,8 @@ values in a subshell or subshell environment when one is created. valid signal.

    -
    umask
    -
    -
    +
    umask
    +
    umask [-p] [-S] [mode]
     
    @@ -4528,9 +4821,8 @@ of the umask is subtracted from 7. Thus, a umask of 022755.

    -
    unset
    -
    -
    +
    unset
    +
    unset [-fnv] [name]
     
    @@ -4540,7 +4832,7 @@ If the -v option is given, each If the -f option is given, the names refer to shell functions, and the function definition is removed. If the -n option is supplied, and name is a variable with -the nameref attribute, name will be unset rather than the +the nameref attribute, name will be unset rather than the variable it references. -n has no effect if the -f option is supplied. If no options are supplied, each name refers to a variable; if @@ -4549,12 +4841,14 @@ unset. Readonly variables and functions may not be unset. Some shell variables lose their special behavior if they are unset; such behavior is noted in the description of the individual variables. -The return status is zero unless a name is readonly. +The return status is zero unless a name is readonly or may not be unset.


    -
    +
    +
    + @@ -4565,9 +4859,8 @@ or have been extended in Bash. Some of these commands are specified in the POSIX standard.

    -
    alias
    -
    -
    +
    alias
    +
    alias [-p] [name[=value] …]
     
    @@ -4580,15 +4873,15 @@ and value of the alias is printed. Aliases are described in Aliases.

    -
    bind
    -
    -
    +
    bind
    +
    bind [-m keymap] [-lpsvPSVX]
     bind [-m keymap] [-q function] [-u function] [-r keyseq]
     bind [-m keymap] -f filename
     bind [-m keymap] -x keyseq:shell-command
     bind [-m keymap] keyseq:function-name
     bind [-m keymap] keyseq:readline-command
    +bind readline-command-line
     

    Display current Readline (see Command Line Editing) @@ -4603,7 +4896,7 @@ but each binding or command must be passed as a separate argument; e.g.,

    Options, if supplied, have the following meanings:

    -
    -m keymap
    +
    -m keymap

    Use keymap as the keymap to be affected by the subsequent bindings. Acceptable keymap names are @@ -4619,55 +4912,55 @@ names are synonym); emacs is equivalent to emacs-standard.

    -
    -l
    +
    -l

    List the names of all Readline functions.

    -
    -p
    +
    -p

    Display Readline function names and bindings in such a way that they can be used as input or in a Readline initialization file.

    -
    -P
    +
    -P

    List current Readline function names and bindings.

    -
    -v
    +
    -v

    Display Readline variable names and values in such a way that they can be used as input or in a Readline initialization file.

    -
    -V
    +
    -V

    List current Readline variable names and values.

    -
    -s
    +
    -s

    Display Readline key sequences bound to macros and the strings they output in such a way that they can be used as input or in a Readline initialization file.

    -
    -S
    +
    -S

    Display Readline key sequences bound to macros and the strings they output.

    -
    -f filename
    +
    -f filename

    Read key bindings from filename.

    -
    -q function
    +
    -q function

    Query about which keys invoke the named function.

    -
    -u function
    +
    -u function

    Unbind all keys bound to the named function.

    -
    -r keyseq
    +
    -r keyseq

    Remove any current binding for keyseq.

    -
    -x keyseq:shell-command
    +
    -x keyseq:shell-command

    Cause shell-command to be executed whenever keyseq is entered. When shell-command is executed, the shell sets the @@ -4675,12 +4968,15 @@ When shell-command is executed, the shell sets the buffer and the READLINE_POINT and READLINE_MARK variables to the current location of the insertion point and the saved insertion point (the mark), respectively. +The shell assigns any numeric argument the user supplied to the +READLINE_ARGUMENT variable. +If there was no argument, that variable is not set. If the executed command changes the value of any of READLINE_LINE, READLINE_POINT, or READLINE_MARK, those new values will be reflected in the editing state.

    -
    -X
    +
    -X

    List all key sequences bound to shell commands and the associated commands in a format that can be reused as input.

    @@ -4690,9 +4986,8 @@ in a format that can be reused as input. error occurs.

    -
    builtin
    -
    -
    +
    builtin
    +
    builtin [shell-builtin [args]]
     
    @@ -4704,9 +4999,8 @@ The return status is non-zero if shell-builtin is not a shell builtin command.

    -
    caller
    -
    -
    +
    caller
    +
    caller [expr]
     
    @@ -4726,9 +5020,8 @@ call or expr does not correspond to a valid position in the call stack.

    -
    command
    -
    -
    +
    command
    +
    command [-pVv] command [arguments …]
     
    @@ -4753,9 +5046,8 @@ a more verbose description. In this case, the return status is zero if command is found, and non-zero if not.

    -
    declare
    -
    -
    +
    declare
    +
    declare [-aAfFgiIlnrtux] [-p] [name[=value] …]
     
    @@ -4786,7 +5078,7 @@ the global scope, even when declare is executed in a shell function It is ignored in all other cases.

    The -I option causes local variables to inherit the attributes -(except the nameref attribute) +(except the nameref attribute) and value of any existing variable with the same name at a surrounding scope. If there is no existing variable, the local variable is initially unset. @@ -4795,32 +5087,32 @@ If there is no existing variable, the local variable is initially unset. the specified attributes or to give variables attributes:

    -
    -a
    +
    -a

    Each name is an indexed array variable (see Arrays).

    -
    -A
    +
    -A

    Each name is an associative array variable (see Arrays).

    -
    -f
    +
    -f

    Use function names only.

    -
    -i
    +
    -i

    The variable is to be treated as an integer; arithmetic evaluation (see Shell Arithmetic) is performed when the variable is assigned a value.

    -
    -l
    +
    -l

    When the variable is assigned a value, all upper-case characters are converted to lower-case. The upper-case attribute is disabled.

    -
    -n
    -

    Give each name the nameref attribute, making +

    -n
    +

    Give each name the nameref attribute, making it a name reference to another variable. That other variable is defined by the value of name. All references, assignments, and attribute modifications @@ -4830,25 +5122,25 @@ to name, except for those using or changing the The nameref attribute cannot be applied to array variables.

    -
    -r
    +
    -r

    Make names readonly. These names cannot then be assigned values by subsequent assignment statements or unset.

    -
    -t
    +
    -t

    Give each name the trace attribute. Traced functions inherit the DEBUG and RETURN traps from the calling shell. The trace attribute has no special meaning for variables.

    -
    -u
    +
    -u

    When the variable is assigned a value, all lower-case characters are converted to upper-case. The lower-case attribute is disabled.

    -
    -x
    +
    -x

    Mark each name for export to subsequent commands via the environment.

    @@ -4872,15 +5164,14 @@ an attempt is made to define a function using ‘-f foo=bar&rsq an attempt is made to assign a value to a readonly variable, an attempt is made to assign a value to an array variable without using the compound assignment syntax (see Arrays), -one of the names is not a valid shell variable name, +one of the names 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 attempt is made to display a non-existent function with -f.

    -
    echo
    -
    -
    +
    echo
    +
    echo [-neE] [arg …]
     
    @@ -4899,59 +5190,58 @@ escape characters by default.

    echo interprets the following escape sequences:

    -
    \a
    +
    \a

    alert (bell)

    -
    \b
    +
    \b

    backspace

    -
    \c
    +
    \c

    suppress further output

    -
    \e
    -
    \E
    +
    \e
    +
    \E

    escape

    -
    \f
    +
    \f

    form feed

    -
    \n
    +
    \n

    new line

    -
    \r
    +
    \r

    carriage return

    -
    \t
    +
    \t

    horizontal tab

    -
    \v
    +
    \v

    vertical tab

    -
    \\
    +
    \\

    backslash

    -
    \0nnn
    +
    \0nnn

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

    -
    \xHH
    +
    \xHH

    the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)

    -
    \uHHHH
    +
    \uHHHH

    the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits)

    -
    \UHHHHHHHH
    +
    \UHHHHHHHH

    the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits)

    -
    enable
    -
    -
    +
    enable
    +
    enable [-a] [-dnps] [-f filename] [name …]
     
    @@ -4972,6 +5262,9 @@ each builtin with an indication of whether or not it is enabled.

    The -f option means to load the new builtin command name from shared object filename, on systems that support dynamic loading. +Bash will use the value of the BASH_LOADABLES_PATH variable as a +colon-separated list of directories in which to search for filename. +The default is system-dependent. The -d option will delete a builtin loaded with -f.

    If there are no options, a list of the shell builtins is displayed. @@ -4979,13 +5272,17 @@ The -s option restricts enable to the POSIX-s is used with -f, the new builtin becomes a special builtin (see Special Builtins).

    +

    If no options are supplied and a name is not a shell builtin, +enable will attempt to load name from a shared object named +name, as if the command were +‘enable -f name name’. +

    The return status is zero unless a name is not a shell builtin or there is an error loading a new builtin from a shared object.

    -
    help
    -
    -
    +
    help
    +
    help [-dms] [pattern]
     
    @@ -4997,13 +5294,13 @@ the builtins is printed.

    Options, if supplied, have the following meanings:

    -
    -d
    +
    -d

    Display a short description of each pattern

    -
    -m
    +
    -m

    Display the description of each pattern in a manpage-like format

    -
    -s
    +
    -s

    Display only a short usage synopsis for each pattern

    @@ -5011,9 +5308,8 @@ the builtins is printed.

    The return status is zero unless no command matches pattern.

    -
    let
    -
    -
    +
    let
    +
    let expression [expression …]
     
    @@ -5024,9 +5320,8 @@ last expression evaluates to 0, let returns 1; otherwise 0 is returned.

    -
    local
    -
    -
    +
    local
    +
    local [option] name[=value] …
     
    @@ -5047,9 +5342,8 @@ a function, an invalid name is supplied, or name is a readonly variable.

    -
    logout
    -
    -
    +
    logout
    +
    logout [n]
     
    @@ -5057,9 +5351,8 @@ readonly variable. parent.

    -
    mapfile
    -
    -
    +
    mapfile
    +
    mapfile [-d delim] [-n count] [-O origin] [-s count]
         [-t] [-u fd] [-C callback] [-c quantum] [array]
     
    @@ -5071,33 +5364,33 @@ The variable MAPFILE is the default array. Options, if supplied, have the following meanings:

    -
    -d
    +
    -d

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

    -
    -n
    +
    -n

    Copy at most count lines. If count is 0, all lines are copied.

    -
    -O
    +
    -O

    Begin assigning to array at index origin. The default index is 0.

    -
    -s
    +
    -s

    Discard the first count lines read.

    -
    -t
    +
    -t

    Remove a trailing delim (default newline) from each line read.

    -
    -u
    +
    -u

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

    -
    -C
    +
    -C

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

    -
    -c
    +
    -c

    Specify the number of lines read between each call to callback.

    @@ -5118,9 +5411,8 @@ argument is supplied, array is invalid or unassignable, or array is not an indexed array.

    -
    printf
    -
    -
    +
    printf
    +
    printf [-v var] format [arguments]
     
    @@ -5138,16 +5430,20 @@ In addition to the standard printf(1) formats, printf interprets the following extensions:

    -
    %b
    +
    %b

    Causes printf to expand backslash escape sequences in the corresponding argument in the same way as echo -e -(see Bash Builtins). +(see Bash Builtin Commands).

    -
    %q
    +
    %q

    Causes printf to output the corresponding argument in a format that can be reused as shell input.

    -
    %(datefmt)T
    +
    %Q
    +

    like %q, but applies any supplied precision to the argument +before quoting it. +

    +
    %(datefmt)T

    Causes printf to output the date-time string resulting from using datefmt as a format string for strftime(3). The corresponding argument is an integer representing the number of @@ -5176,9 +5472,8 @@ appropriate, had been supplied. The return value is zero on success, non-zero on failure.

    -
    read
    -
    -
    +
    read
    +
    read [-ers] [-a aname] [-d delim] [-i text] [-n nchars]
         [-N nchars] [-p prompt] [-t timeout] [-u fd] [name …]
     
    @@ -5203,38 +5498,38 @@ meaning for the next character read and for line continuation.

    Options, if supplied, have the following meanings:

    -
    -a aname
    +
    -a aname

    The words are assigned to sequential indices of the array variable aname, starting at 0. All elements are removed from aname before the assignment. Other name arguments are ignored.

    -
    -d delim
    +
    -d delim

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

    -
    -e
    +
    -e

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

    -
    -i text
    +
    -i text

    If Readline is being used to read the line, text is placed into the editing buffer before editing begins.

    -
    -n nchars
    +
    -n nchars

    read returns after reading nchars characters rather than waiting for a complete line of input, but honors a delimiter if fewer than nchars characters are read before the delimiter.

    -
    -N nchars
    +
    -N nchars

    read returns after reading exactly nchars characters rather than waiting for a complete line of input, unless EOF is encountered or read times out. @@ -5246,25 +5541,25 @@ that the variable is assigned exactly the characters read (with the exception of backslash; see the -r option below).

    -
    -p prompt
    +
    -p prompt

    Display prompt, without a trailing newline, before attempting to read any input. The prompt is displayed only if input is coming from a terminal.

    -
    -r
    +
    -r

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

    -
    -s
    +
    -s

    Silent mode. If input is coming from a terminal, characters are not echoed.

    -
    -t timeout
    +
    -t timeout

    Cause read to time out and return failure if a complete line of input (or a specified number of characters) is not read within timeout seconds. @@ -5276,12 +5571,14 @@ from regular files. If read times out, read saves any partial input read into the specified variable name. If timeout is 0, read returns immediately, without trying to -read any data. The exit status is 0 if input is available on -the specified file descriptor, non-zero otherwise. +read any data. +The exit status is 0 if input is available on the specified file descriptor, +or the read will return EOF, +non-zero otherwise. The exit status is greater than 128 if the timeout is exceeded.

    -
    -u fd
    +
    -u fd

    Read input from file descriptor fd.

    @@ -5296,9 +5593,8 @@ a variable assignment error (such as assigning to a readonly variable) occurs, or an invalid file descriptor is supplied as the argument to -u.

    -
    readarray
    -
    -
    +
    readarray
    +
    readarray [-d delim] [-n count] [-O origin] [-s count]
         [-t] [-u fd] [-C callback] [-c quantum] [array]
     
    @@ -5310,18 +5606,16 @@ if the -u option is supplied.

    A synonym for mapfile.

    -
    source
    -
    -
    +
    source
    +
    source filename
     

    A synonym for . (see Bourne Shell Builtins).

    -
    type
    -
    -
    +
    type
    +
    type [-afptP] [name …]
     
    @@ -5354,13 +5648,12 @@ is not also used.

    If the -f option is used, type does not attempt to find shell functions, as with the command builtin.

    -

    The return status is zero if all of the names are found, non-zero +

    The return status is zero if all of the names are found, non-zero if any are not found.

    -
    typeset
    -
    -
    +
    typeset
    +
    typeset [-afFgrxilnrtux] [-p] [name[=value] …]
     
    @@ -5369,9 +5662,8 @@ shell. It is a synonym for the declare builtin command.

    -
    ulimit
    -
    -
    +
    ulimit
    +
    ulimit [-HS] -a
     ulimit [-HS] [-bcdefiklmnpqrstuvxPRT] [limit]
     
    @@ -5381,101 +5673,101 @@ started by the shell, on systems that allow such control. If an option is given, it is interpreted as follows:

    -
    -S
    +
    -S

    Change and report the soft limit associated with a resource.

    -
    -H
    +
    -H

    Change and report the hard limit associated with a resource.

    -
    -a
    +
    -a

    All current limits are reported; no limits are set.

    -
    -b
    +
    -b

    The maximum socket buffer size.

    -
    -c
    +
    -c

    The maximum size of core files created.

    -
    -d
    +
    -d

    The maximum size of a process’s data segment.

    -
    -e
    +
    -e

    The maximum scheduling priority ("nice").

    -
    -f
    +
    -f

    The maximum size of files written by the shell and its children.

    -
    -i
    +
    -i

    The maximum number of pending signals.

    -
    -k
    +
    -k

    The maximum number of kqueues that may be allocated.

    -
    -l
    +
    -l

    The maximum size that may be locked into memory.

    -
    -m
    +
    -m

    The maximum resident set size (many systems do not honor this limit).

    -
    -n
    +
    -n

    The maximum number of open file descriptors (most systems do not allow this value to be set).

    -
    -p
    +
    -p

    The pipe buffer size.

    -
    -q
    +
    -q

    The maximum number of bytes in POSIX message queues.

    -
    -r
    +
    -r

    The maximum real-time scheduling priority.

    -
    -s
    +
    -s

    The maximum stack size.

    -
    -t
    +
    -t

    The maximum amount of cpu time in seconds.

    -
    -u
    +
    -u

    The maximum number of processes available to a single user.

    -
    -v
    +
    -v

    The maximum amount of virtual memory available to the shell, and, on some systems, to its children.

    -
    -x
    +
    -x

    The maximum number of file locks.

    -
    -P
    +
    -P

    The maximum number of pseudoterminals.

    -
    -R
    +
    -R

    The maximum time a real-time process can run before blocking, in microseconds.

    -
    -T
    +
    -T

    The maximum number of threads.

    @@ -5511,9 +5803,8 @@ and, when in POSIX Mode (see Bash POSI or an error occurs while setting a new limit.

    -
    unalias
    -
    -
    +
    unalias
    +
    unalias [-a] [name … ]
     
    @@ -5524,22 +5815,22 @@ Aliases are described in Aliases.

    -
    +
    +
    +

    4.3 Modifying Shell Behavior

    - - - - +
    -
    +
    + @@ -5550,11 +5841,10 @@ 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-name] [argument …]
    -set [+abefhkmnptuvxBCEHPT] [+o option-name] [argument …]
    +
    set
    +
    +
    set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [argument …]
    +set [+abefhkmnptuvxBCEHPT] [+o option-name] [--] [-] [argument …]
     

    If no options or arguments are supplied, set displays the names @@ -5568,22 +5858,22 @@ In POSIX mode, only shell variables are listed. Options, if specified, have the following meanings:

    -
    -a
    +
    -a

    Each variable or function that is created or modified is given the export attribute and marked for export to the environment of subsequent commands.

    -
    -b
    +
    -b

    Cause the status of terminated background jobs to be reported immediately, rather than before printing the next primary prompt.

    -
    -e
    +
    -e

    Exit immediately if a pipeline (see Pipelines), which may consist of a single simple command (see Simple Commands), -a list (see Lists), +a list (see Lists of Commands), or a compound command (see Compound Commands) returns a non-zero status. The shell does not exit if the command that fails is part of the @@ -5613,129 +5903,129 @@ effect until the compound command or the command containing the function call completes.

    -
    -f
    +
    -f

    Disable filename expansion (globbing).

    -
    -h
    +
    -h

    Locate and remember (hash) commands as they are looked up for execution. This option is enabled by default.

    -
    -k
    +
    -k

    All arguments in the form of assignment statements are placed in the environment for a command, not just those that precede the command name.

    -
    -m
    +
    -m

    Job control is enabled (see Job Control). All processes run in a separate process group. When a background job completes, the shell prints a line containing its exit status.

    -
    -n
    +
    -n

    Read commands but do not execute them. This may be used to check a script for syntax errors. This option is ignored by interactive shells.

    -
    -o option-name
    +
    -o option-name

    Set the option corresponding to option-name:

    -
    allexport
    +
    allexport

    Same as -a.

    -
    braceexpand
    +
    braceexpand

    Same as -B.

    -
    emacs
    +
    emacs

    Use an emacs-style line editing interface (see Command Line Editing). This also affects the editing interface used for read -e.

    -
    errexit
    +
    errexit

    Same as -e.

    -
    errtrace
    +
    errtrace

    Same as -E.

    -
    functrace
    +
    functrace

    Same as -T.

    -
    hashall
    +
    hashall

    Same as -h.

    -
    histexpand
    +
    histexpand

    Same as -H.

    -
    history
    +
    history

    Enable command history, as described in Bash History Facilities. This option is on by default in interactive shells.

    -
    ignoreeof
    +
    ignoreeof

    An interactive shell will not exit upon reading EOF.

    -
    keyword
    +
    keyword

    Same as -k.

    -
    monitor
    +
    monitor

    Same as -m.

    -
    noclobber
    +
    noclobber

    Same as -C.

    -
    noexec
    +
    noexec

    Same as -n.

    -
    noglob
    +
    noglob

    Same as -f.

    -
    nolog
    +
    nolog

    Currently ignored.

    -
    notify
    +
    notify

    Same as -b.

    -
    nounset
    +
    nounset

    Same as -u.

    -
    onecmd
    +
    onecmd

    Same as -t.

    -
    physical
    +
    physical

    Same as -P.

    -
    pipefail
    +
    pipefail

    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.

    -
    posix
    +
    posix

    Change the behavior of Bash where the default operation differs from the POSIX standard to match the standard (see Bash POSIX Mode). @@ -5743,26 +6033,26 @@ This is intended to make Bash behave as a strict superset of that standard.

    -
    privileged
    +
    privileged

    Same as -p.

    -
    verbose
    +
    verbose

    Same as -v.

    -
    vi
    +
    vi

    Use a vi-style line editing interface. This also affects the editing interface used for read -e.

    -
    xtrace
    +
    xtrace

    Same as -x.

    -
    -p
    +
    -p

    Turn on privileged mode. In this mode, the $BASH_ENV and $ENV files are not processed, shell functions are not inherited from the environment, @@ -5777,22 +6067,29 @@ Turning this option off causes the effective user and group ids to be set to the real user and group ids.

    -
    -t
    +
    -r
    +

    Enable restricted shell mode. +This option cannot be unset once it has been set. +

    +
    +
    -t

    Exit after reading and executing one command.

    -
    -u
    +
    -u

    Treat unset variables and parameters other than the special parameters -‘@’ or ‘*’ as an error when performing parameter expansion. +‘@’ or ‘*’, +or array variables subscripted with ‘@’ or ‘*’, +as an error when performing parameter expansion. An error message will be written to the standard error, and a non-interactive shell will exit.

    -
    -v
    +
    -v

    Print shell input lines as they are read.

    -
    -x
    +
    -x

    Print a trace of simple commands, for commands, case commands, select commands, and arithmetic for commands and their arguments or associated word lists after they are @@ -5801,28 +6098,28 @@ variable is expanded and the resultant value is printed before the command and its expanded arguments.

    -
    -B
    +
    -B

    The shell will perform brace expansion (see Brace Expansion). This option is on by default.

    -
    -C
    +
    -C

    Prevent output redirection using ‘>’, ‘>&’, and ‘<>’ from overwriting existing files.

    -
    -E
    +
    -E

    If set, any trap on ERR is inherited by shell functions, command substitutions, and commands executed in a subshell environment. The ERR trap is normally not inherited in such cases.

    -
    -H
    -

    Enable ‘!’ style history substitution (see History Interaction). +

    -H
    +

    Enable ‘!’ style history substitution (see History Expansion). This option is on by default for interactive shells.

    -
    -P
    +
    -P

    If set, do not resolve symbolic links when performing commands such as cd which change the current directory. The physical directory is used instead. By default, Bash follows @@ -5847,7 +6144,7 @@ $ cd ..; pwd

    -
    -T
    +
    -T

    If set, any trap on DEBUG and RETURN are inherited by shell functions, command substitutions, and commands executed in a subshell environment. @@ -5855,13 +6152,13 @@ The DEBUG and RETURN traps are normally not inherited in such cases.

    -
    --
    +
    --

    If no arguments follow this option, then the positional parameters are unset. Otherwise, the positional parameters are set to the arguments, even if some of them begin with a ‘-’.

    -
    -
    +
    -

    Signal the end of options, cause all remaining arguments to be assigned to the positional parameters. The -x and -v options are turned off. @@ -5882,7 +6179,9 @@ The special parameter # is set to N.


    -
    +
    +
    + @@ -5891,9 +6190,8 @@ Previous: This builtin allows you to change additional shell optional behavior.

    -
    shopt
    -
    -
    +
    shopt
    +
    shopt [-pqsu] [-o] [optname …]
     
    @@ -5903,29 +6201,29 @@ The settings can be either those listed below, or, if the option to the set builtin command (see The Set Builtin). With no options, or with the -p option, a list of all settable options is displayed, with an indication of whether or not each is set; -if optnames are supplied, the output is restricted to those options. +if optnames are supplied, the output is restricted to those options. The -p option causes output to be displayed in a form that may be reused as input. Other options have the following meanings:

    -
    -s
    +
    -s

    Enable (set) each optname.

    -
    -u
    +
    -u

    Disable (unset) each optname.

    -
    -q
    +
    -q

    Suppresses normal output; the return status indicates whether the optname is set or unset. If multiple optname arguments are given with -q, -the return status is zero if all optnames are enabled; +the return status is zero if all optnames are enabled; non-zero otherwise.

    -
    -o
    +
    -o

    Restricts the values of optname to be those defined for the -o option to the set builtin (see The Set Builtin). @@ -5939,33 +6237,33 @@ those options which are set or unset, respectively.

    Unless otherwise noted, the shopt options are disabled (off) by default.

    -

    The return status when listing options is zero if all optnames +

    The return status when listing options is zero if all optnames are enabled, non-zero otherwise. When setting or unsetting options, the return status is zero unless an optname is not a valid shell option.

    The list of shopt options is:

    -
    assoc_expand_once
    +
    assoc_expand_once

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

    -
    autocd
    +
    autocd

    If set, a command name that is the name of a directory is executed as if it were the argument to the cd command. This option is only used by interactive shells.

    -
    cdable_vars
    +
    cdable_vars

    If this is set, an argument to the cd builtin command that is not a directory is assumed to be the name of a variable whose value is the directory to change to.

    -
    cdspell
    +
    cdspell

    If set, minor errors in the spelling of a directory component in a cd command will be corrected. The errors checked for are transposed characters, @@ -5975,13 +6273,13 @@ and the command proceeds. This option is only used by interactive shells.

    -
    checkhash
    +
    checkhash

    If this is set, Bash checks that a command found in the hash table exists before trying to execute it. If a hashed command no longer exists, a normal path search is performed.

    -
    checkjobs
    +
    checkjobs

    If set, Bash lists the status of any stopped and running 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 @@ -5989,14 +6287,14 @@ intervening command (see Job Control). The shell always postpones exiting if any jobs are stopped.

    -
    checkwinsize
    +
    checkwinsize

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

    -
    cmdhist
    +
    cmdhist

    If set, Bash attempts to save all lines of a multiple-line command in the same history entry. This allows @@ -6005,18 +6303,18 @@ This option is enabled by default, but only has an effect if command history is enabled (see Bash History Facilities).

    -
    compat31
    -
    compat32
    -
    compat40
    -
    compat41
    -
    compat42
    -
    compat43
    -
    compat44
    +
    compat31
    +
    compat32
    +
    compat40
    +
    compat41
    +
    compat42
    +
    compat43
    +
    compat44

    These control aspects of the shell’s compatibility mode (see Shell Compatibility Mode).

    -
    complete_fullquote
    +
    complete_fullquote

    If set, Bash quotes all shell metacharacters in filenames and directory names when performing completion. @@ -6034,41 +6332,41 @@ This variable is set by default, which is the default Bash behavior in versions through 4.2.

    -
    direxpand
    +
    direxpand

    If set, Bash replaces directory names with the results of word expansion when performing -filename completion. This changes the contents of the readline editing +filename completion. This changes the contents of the Readline editing buffer. If not set, Bash attempts to preserve what the user typed.

    -
    dirspell
    +
    dirspell

    If set, Bash attempts spelling correction on directory names during word completion if the directory name initially supplied does not exist.

    -
    dotglob
    +
    dotglob

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

    -
    execfail
    +
    execfail

    If this is set, a non-interactive shell will not exit if it cannot execute the file specified as an argument to the exec builtin command. An interactive shell does not exit if exec fails.

    -
    expand_aliases
    +
    expand_aliases

    If set, aliases are expanded as described below under Aliases, Aliases. This option is enabled by default for interactive shells.

    -
    extdebug
    +
    extdebug

    If set at shell invocation, or in a shell startup file, arrange to execute the debugger profile @@ -6076,7 +6374,7 @@ before the shell starts, identical to the --debugger option. If set after invocation, behavior intended for use by debuggers is enabled:

      -
    1. The -F option to the declare builtin (see Bash Builtins) +
    2. The -F option to the declare builtin (see Bash Builtin Commands) displays the source file name and line number corresponding to each function name supplied as an argument. @@ -6101,23 +6399,23 @@ subshells invoked with ( command ) inherit the
    -
    extglob
    +
    extglob

    If set, the extended pattern matching features described above (see Pattern Matching) are enabled.

    -
    extquote
    +
    extquote

    If set, $'string' and $"string" quoting is performed within ${parameter} expansions enclosed in double quotes. This option is enabled by default.

    -
    failglob
    +
    failglob

    If set, patterns which fail to match filenames during filename expansion result in an expansion error.

    -
    force_fignore
    +
    force_fignore

    If set, the suffixes specified by the FIGNORE shell variable cause words to be ignored when performing word completion even if the ignored words are the only possible completions. @@ -6125,7 +6423,7 @@ See Bash Variables, for a description of FIG This option is enabled by default.

    -
    globasciiranges
    +
    globasciiranges

    If set, range expressions used in pattern matching bracket expressions (see Pattern Matching) behave as if in the traditional C locale when performing @@ -6135,136 +6433,158 @@ is not taken into account, so and upper-case and lower-case ASCII characters will collate together.

    -
    globstar
    +
    globskipdots
    +

    If set, filename expansion will never match the filenames +‘.’ and ‘..’, +even if the pattern begins with a ‘.’. +This option is enabled by default. +

    +
    +
    globstar

    If set, the pattern ‘**’ used in a filename expansion context will match all files and zero or more directories and subdirectories. If the pattern is followed by a ‘/’, only directories and subdirectories match.

    -
    gnu_errfmt
    +
    gnu_errfmt

    If set, shell error messages are written in the standard GNU error message format.

    -
    histappend
    +
    histappend

    If set, the history list is appended to the file named by the value of the HISTFILE variable when the shell exits, rather than overwriting the file.

    -
    histreedit
    +
    histreedit

    If set, and Readline is being used, a user is given the opportunity to re-edit a failed history substitution.

    -
    histverify
    +
    histverify

    If set, and Readline is being used, the results of history substitution are not immediately passed to the shell parser. Instead, the resulting line is loaded into the Readline editing buffer, allowing further modification.

    -
    hostcomplete
    +
    hostcomplete

    If set, and Readline is being used, Bash will attempt to perform hostname completion when a word containing a ‘@’ is being -completed (see Commands For Completion). This option is enabled +completed (see Letting Readline Type For You). This option is enabled by default.

    -
    huponexit
    +
    huponexit

    If set, Bash will send SIGHUP to all jobs when an interactive login shell exits (see Signals).

    -
    inherit_errexit
    +
    inherit_errexit

    If set, command substitution inherits the value of the errexit option, instead of unsetting it in the subshell environment. This option is enabled when POSIX mode is enabled.

    -
    interactive_comments
    +
    interactive_comments

    Allow a word beginning with ‘#’ to cause that word and all remaining characters on that line to be ignored in an interactive shell. This option is enabled by default.

    -
    lastpipe
    +
    lastpipe

    If set, and job control is not active, the shell runs the last command of a pipeline not executed in the background in the current shell environment.

    -
    lithist
    +
    lithist

    If enabled, and the cmdhist option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible.

    -
    localvar_inherit
    +
    localvar_inherit

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

    -
    localvar_unset
    +
    localvar_unset

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

    -
    login_shell
    +
    login_shell

    The shell sets this option if it is started as a login shell (see Invoking Bash). The value may not be changed.

    -
    mailwarn
    +
    mailwarn

    If set, and a file that Bash is checking for mail has been accessed since the last time it was checked, the message "The mail in mailfile has been read" is displayed.

    -
    no_empty_cmd_completion
    +
    no_empty_cmd_completion

    If set, and Readline is being used, Bash will not attempt to search the PATH for possible completions when completion is attempted on an empty line.

    -
    nocaseglob
    +
    nocaseglob

    If set, Bash matches filenames in a case-insensitive fashion when performing filename expansion.

    -
    nocasematch
    +
    nocasematch

    If set, Bash matches patterns in a case-insensitive fashion when performing matching while executing case or [[ -conditional commands, +conditional commands (see Conditional Constructs, when performing pattern substitution word expansions, or when filtering possible completions as part of programmable completion.

    -
    nullglob
    +
    noexpand_translation
    +

    If set, Bash +encloses the translated results of $"..." quoting in single quotes +instead of double quotes. +If the string is not translated, this has no effect. +

    +
    +
    nullglob

    If set, Bash allows filename patterns which match no files to expand to a null string, rather than themselves.

    -
    progcomp
    +
    patsub_replacement
    +

    If set, Bash +expands occurrences of ‘&’ in the replacement string of pattern +substitution to the text matched by the pattern, as described +above (see Shell Parameter Expansion). +This option is enabled by default. +

    +
    +
    progcomp

    If set, the programmable completion facilities (see Programmable Completion) are enabled. This option is enabled by default.

    -
    progcomp_alias
    +
    progcomp_alias

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

    -
    promptvars
    +
    promptvars

    If set, prompt strings undergo parameter expansion, command substitution, arithmetic expansion, and quote removal after being expanded @@ -6272,7 +6592,7 @@ as described below (see Controlling the Prompt This option is enabled by default.

    -
    restricted_shell
    +
    restricted_shell

    The shell sets this option if it is started in restricted mode (see The Restricted Shell). The value may not be changed. @@ -6280,19 +6600,25 @@ This is not reset when the startup files are executed, allowing the startup files to discover whether or not a shell is restricted.

    -
    shift_verbose
    +
    shift_verbose

    If this is set, the shift builtin prints an error message when the shift count exceeds the number of positional parameters.

    -
    sourcepath
    -

    If set, the source builtin uses the value of PATH +

    sourcepath
    +

    If set, the . (source) builtin uses the value of PATH to find the directory containing the file supplied as an argument. This option is enabled by default.

    -
    xpg_echo
    +
    varredir_close
    +

    If set, the shell automatically closes file descriptors assigned using the +{varname} redirection syntax (see Redirections) instead of +leaving them open when the command completes. +

    +
    +
    xpg_echo

    If set, the echo builtin expands backslash-escape sequences by default.

    @@ -6302,7 +6628,10 @@ by default.

    -
    +
    +
    +
    + @@ -6334,25 +6663,26 @@ shift trap unset

    -
    +
    +
    +
    +

    5 Shell Variables

    - - - -

    This chapter describes the shell variables that Bash uses. Bash automatically assigns default values to a number of variables.

    +
    -
    +
    + @@ -6362,41 +6692,31 @@ Next: , Up: In some cases, Bash assigns a default value to the variable.

    -
    CDPATH - -
    +
    CDPATH

    A colon-separated list of directories used as a search path for the cd builtin command.

    -
    HOME - -
    +
    HOME

    The current user’s home directory; the default for the cd builtin command. The value of this variable is also used by tilde expansion (see Tilde Expansion).

    -
    IFS - -
    +
    IFS

    A list of characters that separate fields; used when the shell splits words as part of expansion.

    -
    MAIL - -
    +
    MAIL

    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 - -
    +
    MAILPATH

    A colon-separated list of filenames which the shell periodically checks for new mail. Each list entry can specify the message that is printed when new mail @@ -6406,21 +6726,15 @@ When used in the text of the message, $_ expands to the name of the current mail file.

    -
    OPTARG - -
    +
    OPTARG

    The value of the last option argument processed by the getopts builtin.

    -
    OPTIND - -
    +
    OPTIND

    The index of the last option argument processed by the getopts builtin.

    -
    PATH - -
    +
    PATH

    A colon-separated list of directories in which the shell looks for commands. A zero-length (null) directory name in the value of PATH indicates the @@ -6429,17 +6743,13 @@ A null directory name may appear as two adjacent colons, or as an initial or trailing colon.

    -
    PS1 - -
    +
    PS1

    The primary prompt string. The default value is ‘\s-\v\$ ’. See Controlling the Prompt, for the complete list of escape sequences that are expanded before PS1 is displayed.

    -
    PS2 - -
    +
    PS2

    The secondary prompt string. The default value is ‘> ’. PS2 is expanded in the same way as PS1 before being displayed. @@ -6448,7 +6758,9 @@ displayed.


    -
    +
    +
    + @@ -6462,9 +6774,7 @@ variables for controlling the job control facilities (see Job Control Variables).

    -
    _ - -
    +
    _

    ($_, an underscore.) At shell startup, set to the pathname used to invoke the @@ -6477,15 +6787,11 @@ and placed in the environment exported to that command. When checking mail, this parameter holds the name of the mail file.

    -
    BASH - -
    +
    BASH

    The full pathname used to execute the current instance of Bash.

    -
    BASHOPTS - -
    +
    BASHOPTS

    A colon-separated list of enabled shell options. Each word in the list is a valid argument for the -s option to the shopt builtin command (see The Shopt Builtin). @@ -6496,9 +6802,7 @@ starts up, each shell option in the list will be enabled before reading any startup files. This variable is readonly.

    -
    BASHPID - -
    +
    BASHPID

    Expands to the process ID of the current Bash process. This differs from $$ under certain circumstances, such as subshells that do not require Bash to be re-initialized. @@ -6508,9 +6812,7 @@ is unset, it loses its special properties, even if it is subsequently reset.

    -
    BASH_ALIASES - -
    +
    BASH_ALIASES

    An associative array variable whose members correspond to the internal list of aliases as maintained by the alias builtin. (see Bourne Shell Builtins). @@ -6522,9 +6824,7 @@ is unset, it loses its special properties, even if it is subsequently reset.

    -
    BASH_ARGC - -
    +
    BASH_ARGC

    An array variable whose values are the number of parameters in each frame of the current bash execution call stack. The number of parameters to the current subroutine (shell function or script executed @@ -6540,9 +6840,7 @@ or referencing this variable when extdebug is not set, may result in inconsistent values.

    -
    BASH_ARGV - -
    +
    BASH_ARGV

    An array variable containing all of the parameters in the current bash execution call stack. The final parameter of the last subroutine call is at the top of the stack; the first parameter of the initial call is @@ -6557,9 +6855,7 @@ or referencing this variable when extdebug is not set, may result in inconsistent values.

    -
    BASH_ARGV0 - -
    +
    BASH_ARGV0

    When referenced, this variable expands to the name of the shell or shell script (identical to $0; See Special Parameters, for the description of special parameter 0). @@ -6570,9 +6866,7 @@ is unset, it loses its special properties, even if it is subsequently reset.

    -
    BASH_CMDS - -
    +
    BASH_CMDS

    An associative array variable whose members correspond to the internal hash table of commands as maintained by the hash builtin (see Bourne Shell Builtins). @@ -6584,9 +6878,7 @@ is unset, it loses its special properties, even if it is subsequently reset.

    -
    BASH_COMMAND - -
    +
    BASH_COMMAND

    The command currently being executed or about to be executed, unless the shell is executing a command as the result of a trap, in which case it is the command executing at the time of the trap. @@ -6595,9 +6887,7 @@ is unset, it loses its special properties, even if it is subsequently reset.

    -
    BASH_COMPAT - -
    +
    BASH_COMPAT

    The value is used to set the shell’s compatibility level. See Shell Compatibility Mode, for a description of the various compatibility levels and their effects. @@ -6616,25 +6906,19 @@ and set the compatibility level to 42. The current version is also a valid value.

    -
    BASH_ENV - -
    +
    BASH_ENV

    If this variable is set when Bash is invoked to execute a shell script, its value is expanded and used as the name of a startup file to read before executing the script. See Bash Startup Files.

    -
    BASH_EXECUTION_STRING - -
    +
    BASH_EXECUTION_STRING

    The command argument to the -c invocation option.

    -
    BASH_LINENO - -
    +
    BASH_LINENO

    An array variable whose members are the line numbers in source files -where each corresponding member of FUNCNAME was invoked. +where each corresponding member of FUNCNAME was invoked. ${BASH_LINENO[$i]} is the line number in the source file (${BASH_SOURCE[$i+1]}) where ${FUNCNAME[$i]} was called (or ${BASH_LINENO[$i-1]} if @@ -6642,17 +6926,13 @@ referenced within another shell function). Use LINENO to obtain the current line number.

    -
    BASH_LOADABLES_PATH - -
    +
    BASH_LOADABLES_PATH

    A colon-separated list of directories in which the shell looks for dynamically loadable builtins specified by the enable command.

    -
    BASH_REMATCH - -
    +
    BASH_REMATCH

    An array variable whose members are assigned by the ‘=~’ binary operator to the [[ conditional command (see Conditional Constructs). @@ -6662,9 +6942,7 @@ The element with index n is the portion of the string matching the nth parenthesized subexpression.

    -
    BASH_SOURCE - -
    +
    BASH_SOURCE

    An array variable whose members are the source filenames where the corresponding shell function names in the FUNCNAME array variable are defined. @@ -6672,9 +6950,7 @@ The shell function ${FUNCNAME[$i]} is defined in the file ${BASH_SOURCE[$i]} and called from ${BASH_SOURCE[$i+1]}

    -
    BASH_SUBSHELL - -
    +
    BASH_SUBSHELL

    Incremented by one within each subshell or subshell environment when the shell begins executing in that environment. The initial value is 0. @@ -6683,49 +6959,43 @@ is unset, it loses its special properties, even if it is subsequently reset.

    -
    BASH_VERSINFO - -
    +
    BASH_VERSINFO

    A readonly array variable (see Arrays) whose members hold version information for this instance of Bash. The values assigned to the array members are as follows:

    -
    BASH_VERSINFO[0]
    -

    The major version number (the release). +

    BASH_VERSINFO[0]
    +

    The major version number (the release).

    -
    BASH_VERSINFO[1]
    -

    The minor version number (the version). +

    BASH_VERSINFO[1]
    +

    The minor version number (the version).

    -
    BASH_VERSINFO[2]
    +
    BASH_VERSINFO[2]

    The patch level.

    -
    BASH_VERSINFO[3]
    +
    BASH_VERSINFO[3]

    The build version.

    -
    BASH_VERSINFO[4]
    -

    The release status (e.g., beta1). +

    BASH_VERSINFO[4]
    +

    The release status (e.g., beta1).

    -
    BASH_VERSINFO[5]
    +
    BASH_VERSINFO[5]

    The value of MACHTYPE.

    -
    BASH_VERSION - -
    +
    BASH_VERSION

    The version number of the current instance of Bash.

    -
    BASH_XTRACEFD - -
    +
    BASH_XTRACEFD

    If set to an integer corresponding to a valid file descriptor, Bash will write the trace output generated when ‘set -x’ is enabled to that file descriptor. @@ -6740,9 +7010,7 @@ descriptor) and then unsetting it will result in the standard error being closed.

    -
    CHILD_MAX - -
    +
    CHILD_MAX

    Set the number of exited child status values for the shell to remember. Bash will not allow this value to be decreased below a POSIX-mandated minimum, and there is a maximum value (currently 8192) that this may @@ -6750,9 +7018,7 @@ not exceed. The minimum value is system-dependent.

    -
    COLUMNS - -
    +
    COLUMNS

    Used by the select command to determine the terminal width when printing selection lists. Automatically set if the checkwinsize option is enabled @@ -6760,27 +7026,21 @@ Automatically set if the checkwinsize option is enabled SIGWINCH.

    -
    COMP_CWORD - -
    +
    COMP_CWORD

    An index into ${COMP_WORDS} of the word containing the current cursor position. This variable is available only in shell functions invoked by the programmable completion facilities (see Programmable Completion).

    -
    COMP_LINE - -
    +
    COMP_LINE

    The current command line. This variable is available only in shell functions and external commands invoked by the programmable completion facilities (see Programmable Completion).

    -
    COMP_POINT - -
    +
    COMP_POINT

    The index of the current cursor position relative to the beginning of the current command. If the current cursor position is at the end of the current command, @@ -6790,12 +7050,10 @@ commands invoked by the programmable completion facilities (see Programmable Completion).

    -
    COMP_TYPE - -
    +
    COMP_TYPE

    Set to an integer value corresponding to the type of completion attempted that caused a completion function to be called: -TAB, for normal completion, +TAB, for normal completion, ‘?’, for listing completions after successive tabs, ‘!’, for listing alternatives on partial word completion, ‘@’, to list completions if the word is not unmodified, @@ -6806,16 +7064,12 @@ commands invoked by the programmable completion facilities (see Programmable Completion).

    -
    COMP_KEY - -
    +
    COMP_KEY

    The key (or final key of a key sequence) used to invoke the current completion function.

    -
    COMP_WORDBREAKS - -
    +
    COMP_WORDBREAKS

    The set of characters that the Readline library treats as word separators when performing word completion. If COMP_WORDBREAKS @@ -6823,9 +7077,7 @@ is unset, it loses its special properties, even if it is subsequently reset.

    -
    COMP_WORDS - -
    +
    COMP_WORDS

    An array variable consisting of the individual words in the current command line. The line is split into words as Readline would split it, using @@ -6834,25 +7086,19 @@ This variable is available only in shell functions invoked by the programmable completion facilities (see Programmable Completion).

    -
    COMPREPLY - -
    +
    COMPREPLY

    An array variable from which Bash reads the possible completions generated by a shell function invoked by the programmable completion facility (see Programmable Completion). Each array element contains one possible completion.

    -
    COPROC - -
    +
    COPROC

    An array variable created to hold the file descriptors for output from and input to an unnamed coprocess (see Coprocesses).

    -
    DIRSTACK - -
    +
    DIRSTACK

    An array variable containing the current contents of the directory stack. Directories appear in the stack in the order they are displayed by the dirs builtin. @@ -6865,29 +7111,23 @@ is unset, it loses its special properties, even if it is subsequently reset.

    -
    EMACS - -
    +
    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.

    -
    ENV - -
    -

    Expanded and executed similarlty to BASH_ENV +

    ENV
    +

    Expanded and executed similarly to BASH_ENV (see Bash Startup Files) when an interactive shell is invoked in POSIX Mode (see Bash POSIX Mode).

    -
    EPOCHREALTIME - -
    +
    EPOCHREALTIME

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

    -
    EPOCHSECONDS - -
    +
    EPOCHSECONDS

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

    -
    EUID - -
    +
    EUID

    The numeric effective user id of the current user. This variable is readonly.

    -
    EXECIGNORE - -
    +
    EXECIGNORE

    A colon-separated list of shell patterns (see Pattern Matching) defining the list of filenames to be ignored by command search using PATH. @@ -6932,16 +7166,12 @@ The pattern matching honors the setting of the extglob shell option.

    -
    FCEDIT - -
    +
    FCEDIT

    The editor used as a default by the -e option to the fc builtin command.

    -
    FIGNORE - -
    +
    FIGNORE

    A colon-separated list of suffixes to ignore when performing filename completion. A filename whose suffix matches one of the entries in @@ -6950,9 +7180,7 @@ is excluded from the list of matched filenames. A sample value is ‘.o:~

    -
    FUNCNAME - -
    +
    FUNCNAME

    An array variable containing the names of all shell functions currently in the execution call stack. The element with index 0 is the name of any currently-executing @@ -6974,17 +7202,13 @@ The caller builtin displays the current call stack using this information.

    -
    FUNCNEST - -
    +
    FUNCNEST

    If set to a numeric value greater than 0, defines a maximum function nesting level. Function invocations that exceed this nesting level will cause the current command to abort.

    -
    GLOBIGNORE - -
    +
    GLOBIGNORE

    A colon-separated list of patterns defining the set of file names to be ignored by filename expansion. If a file name matched by a filename expansion pattern also matches one @@ -6994,9 +7218,7 @@ The pattern matching honors the setting of the extglob shell option.

    -
    GROUPS - -
    +
    GROUPS

    An array variable containing the list of groups of which the current user is a member. Assignments to GROUPS have no effect. @@ -7005,13 +7227,11 @@ is unset, it loses its special properties, even if it is subsequently reset.

    -
    histchars - -
    +
    histchars

    Up to three characters which control history expansion, quick -substitution, and tokenization (see History Interaction). +substitution, and tokenization (see History Expansion). The first character is the -history expansion character, that is, the character which signifies the +history expansion character, that is, the character which signifies the start of a history expansion, normally ‘!’. The second character is the character which signifies ‘quick substitution’ when seen as the first character on a line, normally ‘^’. The optional third character is the @@ -7022,9 +7242,7 @@ remaining words on the line. It does not necessarily cause the shell parser to treat the rest of the line as a comment.

    -
    HISTCMD - -
    +
    HISTCMD

    The history number, or index in the history list, of the current command. Assignments to HISTCMD are ignored. @@ -7033,9 +7251,7 @@ is unset, it loses its special properties, even if it is subsequently reset.

    -
    HISTCONTROL - -
    +
    HISTCONTROL

    A colon-separated list of values controlling how commands are saved on the history list. If the list of values includes ‘ignorespace’, lines which begin @@ -7056,16 +7272,12 @@ not tested, and are added to the history regardless of the value of HISTCONTROL.

    -
    HISTFILE - -
    +
    HISTFILE

    The name of the file to which the command history is saved. The default value is ~/.bash_history.

    -
    HISTFILESIZE - -
    +
    HISTFILESIZE

    The maximum number of lines contained in the history file. When this variable is assigned a value, the history file is truncated, if necessary, to contain no more than that number of lines @@ -7078,9 +7290,7 @@ The shell sets the default value to the value of HISTSIZE after reading any startup files.

    -
    HISTIGNORE - -
    +
    HISTIGNORE

    A colon-separated list of patterns used to decide which command lines should be saved on the history list. Each pattern is anchored at the beginning of the line and must match the complete @@ -7103,9 +7313,7 @@ Combining these two patterns, separating them with a colon, provides the functionality of ignoreboth.

    -
    HISTSIZE - -
    +
    HISTSIZE

    The maximum number of commands to remember on the history list. If the value is 0, commands are not saved in the history list. Numeric values less than zero result in every command being saved @@ -7113,11 +7321,9 @@ on the history list (there is no limit). The shell sets the default value to 500 after reading any startup files.

    -
    HISTTIMEFORMAT - -
    +
    HISTTIMEFORMAT

    If this variable is set and not null, its value is used as a format string -for strftime to print the time stamp associated with each history +for strftime to print the time stamp associated with each history entry displayed by the history builtin. If this variable is set, time stamps are written to the history file so they may be preserved across shell sessions. @@ -7125,9 +7331,7 @@ This uses the history comment character to distinguish timestamps from other history lines.

    -
    HOSTFILE - -
    +
    HOSTFILE

    Contains the name of a file in the same format as /etc/hosts that should be read when the shell needs to complete a hostname. The list of possible hostname completions may be changed while the shell @@ -7141,21 +7345,15 @@ Bash attempts to read When HOSTFILE is unset, the hostname list is cleared.

    -
    HOSTNAME - -
    +
    HOSTNAME

    The name of the current host.

    -
    HOSTTYPE - -
    +
    HOSTTYPE

    A string describing the machine Bash is running on.

    -
    IGNOREEOF - -
    +
    IGNOREEOF

    Controls the action of the shell on receipt of an EOF character as the sole input. If set, the value denotes the number of consecutive EOF characters that can be read as the @@ -7166,38 +7364,28 @@ If the variable does not exist, then EOF signifies the end of input to the shell. This is only in effect for interactive shells.

    -
    INPUTRC - -
    +
    INPUTRC

    The name of the Readline initialization file, overriding the default of ~/.inputrc.

    -
    INSIDE_EMACS - -
    +
    INSIDE_EMACS

    If Bash finds this variable in the environment when the shell starts, it assumes that the shell is running in an Emacs shell buffer and may disable line editing depending on the value of TERM.

    -
    LANG - -
    +
    LANG

    Used to determine the locale category for any category not specifically selected with a variable starting with LC_.

    -
    LC_ALL - -
    +
    LC_ALL

    This variable overrides the value of LANG and any other LC_ variable specifying a locale category.

    -
    LC_COLLATE - -
    +
    LC_COLLATE

    This variable determines the collation order used when sorting the results of filename expansion, and determines the behavior of range expressions, equivalence classes, @@ -7205,46 +7393,34 @@ and collating sequences within filename expansion and pattern matching (see Filename Expansion).

    -
    LC_CTYPE - -
    +
    LC_CTYPE

    This variable determines the interpretation of characters and the behavior of character classes within filename expansion and pattern matching (see Filename Expansion).

    -
    LC_MESSAGES - -
    +
    LC_MESSAGES

    This variable determines the locale used to translate double-quoted -strings preceded by a ‘$’ (see Locale Translation). +strings preceded by a ‘$’ (see Locale-Specific Translation).

    -
    LC_NUMERIC - -
    +
    LC_NUMERIC

    This variable determines the locale category used for number formatting.

    -
    LC_TIME - -
    +
    LC_TIME

    This variable determines the locale category used for data and time formatting.

    -
    LINENO - -
    +
    LINENO

    The line number in the script or shell function currently executing. If LINENO is unset, it loses its special properties, even if it is subsequently reset.

    -
    LINES - -
    +
    LINES

    Used by the select command to determine the column length for printing selection lists. Automatically set if the checkwinsize option is enabled @@ -7252,16 +7428,12 @@ Automatically set if the checkwinsize option is enabled SIGWINCH.

    -
    MACHTYPE - -
    +
    MACHTYPE

    A string that fully describes the system type on which Bash is executing, in the standard GNU cpu-company-system format.

    -
    MAILCHECK - -
    +
    MAILCHECK

    How often (in seconds) that the shell should check for mail in the files specified in the MAILPATH or MAIL variables. The default is 60 seconds. When it is time to check @@ -7270,44 +7442,32 @@ 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.

    -
    MAPFILE - -
    +
    MAPFILE

    An array variable created to hold the text read by the mapfile builtin when no variable name is supplied.

    -
    OLDPWD - -
    +
    OLDPWD

    The previous working directory as set by the cd builtin.

    -
    OPTERR - -
    +
    OPTERR

    If set to the value 1, Bash displays error messages generated by the getopts builtin command.

    -
    OSTYPE - -
    +
    OSTYPE

    A string describing the operating system Bash is running on.

    -
    PIPESTATUS - -
    +
    PIPESTATUS

    An array variable (see Arrays) containing a list of exit status values from the processes in the most-recently-executed foreground pipeline (which may contain only a single command).

    -
    POSIXLY_CORRECT - -
    +
    POSIXLY_CORRECT

    If this variable is in the environment when Bash starts, the shell enters POSIX mode (see Bash POSIX Mode) before reading the startup files, as if the --posix invocation option had been supplied. @@ -7321,16 +7481,12 @@ When the shell enters POSIX mode, it sets this variable if it was not already set.

    -
    PPID - -
    +
    PPID

    The process ID of the shell’s parent process. This variable is readonly.

    -
    PROMPT_COMMAND - -
    +
    PROMPT_COMMAND

    If this variable is set, and is an array, the value of each set element is interpreted as a command to execute before printing the primary prompt ($PS1). @@ -7338,35 +7494,27 @@ If this is set but not an array variable, its value is used as a command to execute instead.

    -
    PROMPT_DIRTRIM - -
    +
    PROMPT_DIRTRIM

    If set to a number greater than zero, the value is used as the number of trailing directory components to retain when expanding the \w and \W prompt string escapes (see Controlling the Prompt). Characters removed are replaced with an ellipsis.

    -
    PS0 - -
    +
    PS0

    The value of this parameter is expanded like PS1 and displayed by interactive shells after reading a command and before the command is executed.

    -
    PS3 - -
    +
    PS3

    The value of this variable is used as the prompt for the select command. If this variable is not set, the select command prompts with ‘#?

    -
    PS4 - -
    -

    The value of this parameter is expanded like PS1 +

    PS4
    +

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

    -
    PWD - -
    +
    PWD

    The current working directory as set by the cd builtin.

    -
    RANDOM - -
    +
    RANDOM

    Each time this parameter is referenced, it expands to a random integer between 0 and 32767. Assigning a value to this variable seeds the random number generator. @@ -7391,62 +7535,53 @@ is unset, it loses its special properties, even if it is subsequently reset.

    -
    READLINE_LINE - -
    +
    READLINE_ARGUMENT
    +

    Any numeric argument given to a Readline command that was defined using +‘bind -x’ (see Bash Builtin Commands +when it was invoked. +

    +
    +
    READLINE_LINE

    The contents of the Readline line buffer, for use -with ‘bind -x’ (see Bash Builtins). +with ‘bind -x’ (see Bash Builtin Commands).

    -
    READLINE_MARK - -
    -

    The position of the mark (saved insertion point) in the +

    READLINE_MARK
    +

    The position of the mark (saved insertion point) in the Readline line buffer, for use -with ‘bind -x’ (see Bash Builtins). +with ‘bind -x’ (see Bash Builtin Commands). The characters between the insertion point and the mark are often -called the region. +called the region.

    -
    READLINE_POINT - -
    +
    READLINE_POINT

    The position of the insertion point in the Readline line buffer, for use -with ‘bind -x’ (see Bash Builtins). +with ‘bind -x’ (see Bash Builtin Commands).

    -
    REPLY - -
    +
    REPLY

    The default variable for the read builtin.

    -
    SECONDS - -
    -

    This variable expands to the number of seconds since the -shell was started. Assignment to this variable resets -the count to the value assigned, and the expanded value -becomes the value assigned plus the number of seconds +

    SECONDS
    +

    This variable expands to the number of seconds since the shell was started. +Assignment to this variable resets the count to the value assigned, and the +expanded value becomes the value assigned plus the number of seconds since the assignment. -The number of seconds at shell invocation and the current time is always +The number of seconds at shell invocation and the current time are always determined by querying the system clock. If SECONDS is unset, it loses its special properties, even if it is subsequently reset.

    -
    SHELL - -
    +
    SHELL

    This environment variable expands to the full pathname to the shell. If it is not set when the shell starts, Bash assigns to it the full pathname of the current user’s login shell.

    -
    SHELLOPTS - -
    +
    SHELLOPTS

    A colon-separated list of enabled shell options. Each word in the list is a valid argument for the -o option to the set builtin command (see The Set Builtin). @@ -7457,16 +7592,12 @@ starts up, each shell option in the list will be enabled before reading any startup files. This variable is readonly.

    -
    SHLVL - -
    +
    SHLVL

    Incremented by one each time a new instance of Bash is started. This is intended to be a count of how deeply your Bash shells are nested.

    -
    SRANDOM - -
    +
    SRANDOM

    This variable expands to a 32-bit pseudo-random number each time it is referenced. The random number generator is not linear on systems that support /dev/urandom or arc4random, so each returned number @@ -7478,9 +7609,7 @@ is unset, it loses its special properties, even if it is subsequently reset.

    -
    TIMEFORMAT - -
    +
    TIMEFORMAT

    The value of this parameter is used as a format string specifying how the timing information for pipelines prefixed with the time reserved word should be displayed. @@ -7491,23 +7620,23 @@ The escape sequences and their meanings are as follows; the braces denote optional portions.

    -
    %%
    +
    %%

    A literal ‘%’.

    -
    %[p][l]R
    +
    %[p][l]R

    The elapsed time in seconds.

    -
    %[p][l]U
    +
    %[p][l]U

    The number of CPU seconds spent in user mode.

    -
    %[p][l]S
    +
    %[p][l]S

    The number of CPU seconds spent in system mode.

    -
    %P
    +
    %P

    The CPU percentage, computed as (%U + %S) / %R.

    @@ -7531,11 +7660,9 @@ The value of p determines whether or not the fraction is included. A trailing newline is added when the format string is displayed.

    -
    TMOUT - -
    +
    TMOUT

    If set to a value greater than zero, TMOUT is treated as the -default timeout for the read builtin (see Bash Builtins). +default timeout for the read builtin (see Bash Builtin Commands). The select command (see Conditional Constructs) terminates if input does not arrive after TMOUT seconds when input is coming from a terminal. @@ -7548,63 +7675,47 @@ terminates after waiting for that number of seconds if a complete line of input does not arrive.

    -
    TMPDIR - -
    +
    TMPDIR

    If set, Bash uses its value as the name of a directory in which Bash creates temporary files for the shell’s use.

    -
    UID - -
    +
    UID

    The numeric real user id of the current user. This variable is readonly.


    -
    +
    +
    +
    +

    -Next: , Previous: , Up: Top   [Contents][Index]

    +Next: , Previous: , Up: Bash Features   [Contents][Index]

    6 Bash Features

    This chapter describes features unique to Bash.

    - - - - - - - - - - - - - - +
    -
    +
    + @@ -7626,57 +7737,57 @@ options that you can use. These options must appear on the command line before the single-character options to be recognized.

    -
    --debugger
    +
    --debugger

    Arrange for the debugger profile to be executed before the shell starts. Turns on extended debugging mode (see The Shopt Builtin for a description of the extdebug option to the shopt builtin).

    -
    --dump-po-strings
    +
    --dump-po-strings

    A list of all double-quoted strings preceded by ‘$’ is printed on the standard output in the GNU gettext PO (portable object) file format. Equivalent to -D except for the output format.

    -
    --dump-strings
    +
    --dump-strings

    Equivalent to -D.

    -
    --help
    +
    --help

    Display a usage message on standard output and exit successfully.

    -
    --init-file filename
    -
    --rcfile filename
    +
    --init-file filename
    +
    --rcfile filename

    Execute commands from filename (instead of ~/.bashrc) in an interactive shell.

    -
    --login
    +
    --login

    Equivalent to -l.

    -
    --noediting
    +
    --noediting

    Do not use the GNU Readline library (see Command Line Editing) to read command lines when the shell is interactive.

    -
    --noprofile
    +
    --noprofile

    Don’t load the system-wide startup file /etc/profile or any of the personal initialization files ~/.bash_profile, ~/.bash_login, or ~/.profile when Bash is invoked as a login shell.

    -
    --norc
    +
    --norc

    Don’t read the ~/.bashrc initialization file in an interactive shell. This is on by default if the shell is invoked as sh.

    -
    --posix
    +
    --posix

    Change the behavior of Bash where the default operation differs from the POSIX standard to match the standard. This is intended to make Bash behave as a strict superset of that @@ -7684,15 +7795,15 @@ standard. See Bash POSIX Mode, for a description POSIX mode.

    -
    --restricted
    +
    --restricted

    Make the shell a restricted shell (see The Restricted Shell).

    -
    --verbose
    +
    --verbose

    Equivalent to -v. Print shell input lines as they’re read.

    -
    --version
    +
    --version

    Show version information for this instance of Bash on the standard output and exit successfully.

    @@ -7702,7 +7813,7 @@ Bash on the standard output and exit successfully. invocation which are not available with the set builtin.

    -
    -c
    +
    -c

    Read and execute commands from the first non-option argument command_string, then exit. If there are arguments after the command_string, @@ -7712,12 +7823,12 @@ The assignment to $0 sets the name of the shell, which is used in warning and error messages.

    -
    -i
    +
    -i

    Force the shell to run interactively. Interactive shells are described in Interactive Shells.

    -
    -l
    +
    -l

    Make this shell act as if it had been directly invoked by login. When the shell is interactive, this is equivalent to starting a login shell with ‘exec -l bash’. @@ -7729,11 +7840,11 @@ See Bash Startup Files, for a description of t of a login shell.

    -
    -r
    +
    -r

    Make the shell a restricted shell (see The Restricted Shell).

    -
    -s
    +
    -s

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

    -
    -D
    +
    -D

    A list of all double-quoted strings preceded by ‘$’ is printed on the standard output. These are the strings that are subject to language translation when the current locale -is not C or POSIX (see Locale Translation). +is not C or POSIX (see Locale-Specific Translation). This implies the -n option; no commands will be executed.

    -
    [-+]O [shopt_option]
    +
    [-+]O [shopt_option]

    shopt_option is one of the shell options accepted by the shopt builtin (see The Shopt Builtin). If shopt_option is present, -O sets the value of that option; @@ -7761,7 +7872,7 @@ If the invocation option is +O, the output is displayed in a format that may be reused as input.

    -
    --
    +
    --

    A -- signals the end of options and disables further option processing. Any arguments after the -- are treated as filenames and arguments. @@ -7792,7 +7903,9 @@ Bash’s exit status is the exit status of the last command executed in the script. If no commands are executed, the exit status is 0.


    -
    +
    +
    + @@ -7889,10 +8002,12 @@ No other startup files are read.

    Invoked by remote shell daemon

    Bash attempts to determine when it is being run with its standard input -connected to a network connection, as when executed by the remote shell -daemon, usually 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 +connected to a network connection, as when executed by +the historical remote shell daemon, usually rshd, +or the secure shell daemon sshd. +If Bash +determines it is being run non-interactively 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 @@ -7912,7 +8027,9 @@ If the -p option is supplied at invocation, the startup behavior is the same, but the effective user id is not reset.


    -
    +
    +
    + @@ -7920,25 +8037,24 @@ Next:
    -
    +
    +

    6.3.1 What is an Interactive Shell?

    An interactive shell -is one started without non-option arguments, unless -s is -specified, without specifying the -c option, and +is one started without non-option arguments +(unless -s is specified) +and without specifying the -c option, whose input and error output are both connected to terminals (as determined by isatty(3)), or one started with the -i option. @@ -7950,7 +8066,9 @@ terminal. when an interactive shell is started.


    -
    +
    +
    + @@ -7981,7 +8099,9 @@ fi

    -
    +
    +
    + @@ -8005,7 +8125,7 @@ executing it. See Controlling the Prompt, for a complete list of prompt string escape sequences. -
  • Bash executes the values of the set elements of the PROMPT_COMMANDS +
  • Bash executes the values of the set elements of the PROMPT_COMMAND array variable as commands before printing the primary prompt, $PS1 (see Bash Variables). @@ -8017,7 +8137,7 @@ instead of exiting immediately when it receives an EOF on its standard input when reading a command (see The Set Builtin).
  • Command history (see Bash History Facilities) -and history expansion (see History Interaction) +and history expansion (see History Expansion) are enabled by default. Bash will save the command history to the file named by $HISTFILE when a shell with history enabled exits. @@ -8060,9 +8180,11 @@ status will not cause the shell to exit (see Bash POS
  • Parser syntax errors will not cause the shell to exit. -
  • Simple spelling correction for directory arguments to the cd -builtin is enabled by default (see the description of the cdspell +
  • If the cdspell shell option is enabled, the shell will attempt +simple spelling correction for directory arguments to the cd +builtin (see the description of the cdspell option to the shopt builtin in The Shopt Builtin). +The cdspell option is only effective in interactive shells.
  • The shell will check the value of the TMOUT variable and exit if a command is not read within the specified number of seconds after @@ -8071,7 +8193,10 @@ printing $PS1 (see Bash Variables).

  • -
    +
    +
    +
    + @@ -8079,7 +8204,10 @@ Next: ,

    Conditional expressions are used by the [[ compound command -and the test and [ builtin commands. The test +(see Conditional Constructs) +and the test and [ builtin commands +(see Bourne Shell Builtins). +The test and [ commands determine their behavior based on the number of arguments; see the descriptions of those commands for any other command-specific actions. @@ -8107,130 +8235,130 @@ The test command uses ASCII ordering. links and operate on the target of the link, rather than the link itself.

    -
    -a file
    +
    -a file

    True if file exists.

    -
    -b file
    +
    -b file

    True if file exists and is a block special file.

    -
    -c file
    +
    -c file

    True if file exists and is a character special file.

    -
    -d file
    +
    -d file

    True if file exists and is a directory.

    -
    -e file
    +
    -e file

    True if file exists.

    -
    -f file
    +
    -f file

    True if file exists and is a regular file.

    -
    -g file
    +
    -g file

    True if file exists and its set-group-id bit is set.

    -
    -h file
    +
    -h file

    True if file exists and is a symbolic link.

    -
    -k file
    +
    -k file

    True if file exists and its "sticky" bit is set.

    -
    -p file
    +
    -p file

    True if file exists and is a named pipe (FIFO).

    -
    -r file
    +
    -r file

    True if file exists and is readable.

    -
    -s file
    +
    -s file

    True if file exists and has a size greater than zero.

    -
    -t fd
    +
    -t fd

    True if file descriptor fd is open and refers to a terminal.

    -
    -u file
    +
    -u file

    True if file exists and its set-user-id bit is set.

    -
    -w file
    +
    -w file

    True if file exists and is writable.

    -
    -x file
    +
    -x file

    True if file exists and is executable.

    -
    -G file
    +
    -G file

    True if file exists and is owned by the effective group id.

    -
    -L file
    +
    -L file

    True if file exists and is a symbolic link.

    -
    -N file
    +
    -N file

    True if file exists and has been modified since it was last read.

    -
    -O file
    +
    -O file

    True if file exists and is owned by the effective user id.

    -
    -S file
    +
    -S file

    True if file exists and is a socket.

    -
    file1 -ef file2
    +
    file1 -ef file2

    True if file1 and file2 refer to the same device and inode numbers.

    -
    file1 -nt file2
    +
    file1 -nt file2

    True if file1 is newer (according to modification date) than file2, or if file1 exists and file2 does not.

    -
    file1 -ot file2
    +
    file1 -ot file2

    True if file1 is older than file2, or if file2 exists and file1 does not.

    -
    -o optname
    +
    -o optname

    True if the shell option optname is enabled. The list of options appears in the description of the -o option to the set builtin (see The Set Builtin).

    -
    -v varname
    +
    -v varname

    True if the shell variable varname is set (has been assigned a value).

    -
    -R varname
    +
    -R varname

    True if the shell variable varname is set and is a name reference.

    -
    -z string
    +
    -z string

    True if the length of string is zero.

    -
    -n string
    -
    string
    +
    -n string
    +
    string

    True if the length of string is non-zero.

    -
    string1 == string2
    -
    string1 = string2
    +
    string1 == string2
    +
    string1 = string2

    True if the strings are equal. When used with the [[ command, this performs pattern matching as described above (see Conditional Constructs). @@ -8238,19 +8366,19 @@ described above (see Conditional Constructs=’ should be used with the test command for POSIX conformance.

    -
    string1 != string2
    +
    string1 != string2

    True if the strings are not equal.

    -
    string1 < string2
    +
    string1 < string2

    True if string1 sorts before string2 lexicographically.

    -
    string1 > string2
    +
    string1 > string2

    True if string1 sorts after string2 lexicographically.

    -
    arg1 OP arg2
    +
    arg1 OP arg2

    OP is one of ‘-eq’, ‘-ne’, ‘-lt’, ‘-le’, ‘-gt’, or ‘-ge’. These arithmetic binary operators return true if arg1 @@ -8264,7 +8392,9 @@ are evaluated as arithmetic expressions (see Shell A


    -
    +
    +
    + @@ -8288,75 +8418,75 @@ equal-precedence operators. The levels are listed in order of decreasing precedence.

    -
    id++ id--
    +
    id++ id--

    variable post-increment and post-decrement

    -
    ++id --id
    +
    ++id --id

    variable pre-increment and pre-decrement

    -
    - +
    +
    - +

    unary minus and plus

    -
    ! ~
    +
    ! ~

    logical and bitwise negation

    -
    **
    +
    **

    exponentiation

    -
    * / %
    +
    * / %

    multiplication, division, remainder

    -
    + -
    +
    + -

    addition, subtraction

    -
    << >>
    +
    << >>

    left and right bitwise shifts

    -
    <= >= < >
    +
    <= >= < >

    comparison

    -
    == !=
    +
    == !=

    equality and inequality

    -
    &
    +
    &

    bitwise AND

    -
    ^
    +
    ^

    bitwise exclusive OR

    -
    |
    +
    |

    bitwise OR

    -
    &&
    +
    &&

    logical AND

    -
    ||
    +
    ||

    logical OR

    -
    expr ? expr : expr
    +
    expr ? expr : expr

    conditional operator

    -
    = *= /= %= += -= <<= >>= &= ^= |=
    +
    = *= /= %= += -= <<= >>= &= ^= |=

    assignment

    -
    expr1 , expr2
    +
    expr1 , expr2

    comma

    @@ -8369,9 +8499,9 @@ 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 -integer attribute using ‘declare -i’ is assigned a value. +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 +A shell variable need not have its integer attribute turned on to be used in an expression.

    Integer constants follow the C language definition, without suffixes or @@ -8395,14 +8525,16 @@ parentheses are evaluated first and may override the precedence rules above.


    -
    +
    +
    +

    Next: , Previous: , Up: Bash Features   [Contents][Index]

    6.6 Aliases

    -

    Aliases allow a string to be substituted for a word when it is used +

    Aliases 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 alias and unalias builtin commands. @@ -8422,7 +8554,7 @@ This means that one may alias ls to "ls -F", for instance, and Bash does not try to recursively expand the replacement text. If the last character of the alias value is a -blank, then the next command word following the +blank, then the next command word following the alias is also checked for alias expansion.

    Aliases are created and listed with the alias @@ -8430,7 +8562,7 @@ command, and removed with the unalias command.

    There is no mechanism for using arguments in the replacement text, as in csh. -If arguments are needed, a shell function should be used +If arguments are needed, use a shell function (see Shell Functions).

    Aliases are not expanded when the shell is not interactive, @@ -8460,7 +8592,9 @@ in compound commands.

    For almost every purpose, shell functions are preferred over aliases.


    -
    +
    +
    + @@ -8543,6 +8677,9 @@ interpreted as relative to one greater than the maximum index of name, so negative indices count back from the end of the array, and an index of -1 references the last element.

    +

    The ‘+=’ operator will append to an array variable when assigning +using the compound assignment syntax; see Shell Parameters above. +

    Any element of an array may be referenced using ${name[subscript]}. The braces are required to avoid @@ -8593,8 +8730,14 @@ destroys the array element at index subscript. Negative subscripts to indexed arrays are interpreted as described above. Unsetting the last element of an array variable does not unset the variable. unset name, where name is an array, removes the -entire array. A subscript of ‘*’ or ‘@’ also removes the entire array. +unset name[subscript] behaves differently +depending on the array type when given a +subscript of ‘*’ or ‘@’. +When name is an associative array, it removes the element with key +‘*’ or ‘@’. +If name is an indexed array, unset removes all of the elements, +but does not remove the array itself.

    When using a variable name with a subscript as an argument to a command, such as with unset, without using the word expansion syntax @@ -8613,18 +8756,15 @@ builtins display array values in a way that allows them to be reused as input.


    -
    +
    +
    +

    6.8 The Directory Stack

    - - -

    The directory stack is a list of recently-visited directories. The pushd builtin adds directories to the stack as it changes @@ -8637,17 +8777,20 @@ of the directory stack.

    The contents of the directory stack are also visible as the value of the DIRSTACK shell variable.

    +
    -
    +
    +

    6.8.1 Directory Stack Builtins

    -
    dirs
    -
    -
    +
    dirs
    +
    dirs [-clpv] [+N | -N]
     
    @@ -8657,27 +8800,27 @@ are added to the list with the pushd command; the The current directory is always the first directory in the stack.

    -
    -c
    +
    -c

    Clears the directory stack by deleting all of the elements.

    -
    -l
    +
    -l

    Produces a listing using full pathnames; the default listing format uses a tilde to denote the home directory.

    -
    -p
    +
    -p

    Causes dirs to print the directory stack with one entry per line.

    -
    -v
    +
    -v

    Causes dirs to print the directory stack with one entry per line, prefixing each entry with its index in the stack.

    -
    +N
    +
    +N

    Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero.

    -
    -N
    +
    -N

    Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero. @@ -8685,80 +8828,116 @@ with zero.

    -
    popd
    -
    -
    +
    popd
    +
    popd [-n] [+N | -N]
     
    -

    When no arguments are given, popd -removes the top directory from the stack and -performs a cd to the new top directory. +

    Removes elements from the directory stack. The elements are numbered from 0 starting at the first directory -listed with dirs; that is, popd is equivalent to popd +0. +listed by dirs; +that is, popd is equivalent to popd +0. +

    +

    When no arguments are given, popd +removes the top directory from the stack and changes to +the new top directory. +

    +

    Arguments, if supplied, have the following meanings:

    -
    -n
    +
    -n

    Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated.

    -
    +N
    +
    +N

    Removes the Nth directory (counting from the left of the -list printed by dirs), starting with zero. +list printed by dirs), starting with zero, from the stack.

    -
    -N
    +
    -N

    Removes the Nth directory (counting from the right of the -list printed by dirs), starting with zero. +list printed by dirs), starting with zero, from the stack.

    +

    If the top element of the directory stack is modified, and +the -n option was not supplied, popd uses the cd +builtin to change to the directory at the top of the stack. +If the cd fails, popd returns a non-zero value. +

    +

    Otherwise, popd returns an unsuccessful status if +an invalid option is encountered, the directory stack +is empty, or a non-existent directory stack entry is specified. +

    +

    If the popd command is successful, +Bash runs dirs to show the final contents of the directory stack, +and the return status is 0. +

    -
    pushd
    +
    pushd
    pushd [-n] [+N | -N | dir]
     
    -

    Save the current directory on the top of the directory stack -and then cd to dir. -With no arguments, pushd exchanges the top two directories -and makes the new top the current directory. +

    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, pushd exchanges the top two elements +of the directory stack. +

    +

    Arguments, if supplied, have the following meanings:

    -
    -n
    +
    -n

    Suppresses the normal change of directory when rotating or adding directories to the stack, so that only the stack is manipulated.

    -
    +N
    +
    +N

    Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.

    -
    -N
    +
    -N

    Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.

    -
    dir
    -

    Makes dir be the top of the stack, making -it the new current directory as if it had been supplied as an argument -to the cd builtin. +

    dir
    +

    Makes dir be the top of the stack.

    + +

    After the stack has been modified, if the -n option was not +supplied, pushd uses the cd builtin to change to the +directory at the top of the stack. +If the cd fails, pushd returns a non-zero value. +

    +

    Otherwise, if no arguments are supplied, pushd returns 0 unless the +directory stack is empty. +When rotating the directory stack, pushd returns 0 unless +the directory stack is empty or a non-existent directory stack element +is specified. +

    +

    If the pushd command is successful, +Bash runs dirs to show the final contents of the directory stack. +


    -
    +
    +
    +
    +

    6.9 Controlling the Prompt

    -

    Bash examines the value of the array variable PROMPT_COMMANDS just before +

    Bash examines the value of the array variable PROMPT_COMMAND just before printing each primary prompt. -If any elements in PROMPT_COMMANDS are set and non-null, Bash +If any elements in PROMPT_COMMAND are set and non-null, Bash executes each value, in numeric order, just as if it had been typed on the command line.

    @@ -8767,90 +8946,91 @@ can appear in the prompt variables PS0, PS1, PS2 PS4:

    -
    \a
    +
    \a

    A bell character.

    -
    \d
    +
    \d

    The date, in "Weekday Month Date" format (e.g., "Tue May 26").

    -
    \D{format}
    +
    \D{format}

    The format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required.

    -
    \e
    +
    \e

    An escape character.

    -
    \h
    +
    \h

    The hostname, up to the first ‘.’.

    -
    \H
    +
    \H

    The hostname.

    -
    \j
    +
    \j

    The number of jobs currently managed by the shell.

    -
    \l
    +
    \l

    The basename of the shell’s terminal device name.

    -
    \n
    +
    \n

    A newline.

    -
    \r
    +
    \r

    A carriage return.

    -
    \s
    +
    \s

    The name of the shell, the basename of $0 (the portion following the final slash).

    -
    \t
    +
    \t

    The time, in 24-hour HH:MM:SS format.

    -
    \T
    +
    \T

    The time, in 12-hour HH:MM:SS format.

    -
    \@
    +
    \@

    The time, in 12-hour am/pm format.

    -
    \A
    +
    \A

    The time, in 24-hour HH:MM format.

    -
    \u
    +
    \u

    The username of the current user.

    -
    \v
    +
    \v

    The version of Bash (e.g., 2.00)

    -
    \V
    +
    \V

    The release of Bash, version + patchlevel (e.g., 2.00.0)

    -
    \w
    -

    The current working directory, with $HOME abbreviated with a tilde +

    \w
    +

    The value of the PWD shell variable ($PWD), +with $HOME abbreviated with a tilde (uses the $PROMPT_DIRTRIM variable).

    -
    \W
    +
    \W

    The basename of $PWD, with $HOME abbreviated with a tilde.

    -
    \!
    +
    \!

    The history number of this command.

    -
    \#
    +
    \#

    The command number of this command.

    -
    \$
    +
    \$

    If the effective uid is 0, #, otherwise $.

    -
    \nnn
    +
    \nnn

    The character whose ASCII code is the octal value nnn.

    -
    \\
    +
    \\

    A backslash.

    -
    \[
    +
    \[

    Begin a sequence of non-printing characters. This could be used to embed a terminal control sequence into the prompt.

    -
    \]
    +
    \]

    End a sequence of non-printing characters.

    @@ -8871,7 +9051,9 @@ appear within command substitution or contain characters special to word expansion.


    -
    +
    +
    + @@ -8909,7 +9091,7 @@ option to the hash builtin command. -f and -d options to the enable builtin.
  • Using the enable builtin command to enable disabled shell builtins.
  • Specifying the -p option to the command builtin. -
  • Turning off restricted mode with ‘set +r’ or ‘set +o restricted’. +
  • Turning off restricted mode with ‘set +r’ or ‘shopt -u restricted_shell’.
  • These restrictions are enforced after any startup files are read. @@ -8921,8 +9103,8 @@ the shell spawned to execute the script.

    The restricted shell mode is only one component of a useful restricted environment. It should be accompanied by setting PATH to a value that allows execution of only a few verified commands (commands that -allow shell escapes are particularly vulnerable), leaving the user -in a non-writable directory other than his home directory after login, +allow shell escapes are particularly vulnerable), changing the current +directory to a non-writable directory other than $HOME after login, not allowing the restricted shell to execute shell scripts, and cleaning the environment of variables that cause some commands to modify their behavior (e.g., VISUAL or PAGER). @@ -8932,7 +9114,9 @@ such as jails, zones, or containers.


    -
    +
    +
    + @@ -8972,6 +9156,12 @@ example, SIGTSTP.
  • Reserved words appearing in a context where reserved words are recognized do not undergo alias expansion. +
  • Alias expansion is performed when initially parsing a command substitution. +The default mode generally defers it, when enabled, until the command +substitution is executed. This means that command substitution will not +expand aliases that are defined after the command substitution is initially +parsed (e.g., as part of a function definition). +
  • The POSIX PS1 and PS2 expansions of ‘!’ to the history number and ‘!!’ to ‘!’ are enabled, and parameter expansion is performed on the values of PS1 and @@ -9042,7 +9232,10 @@ a value to a readonly variable.
  • A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a special -builtin, but not with any other simple command. +builtin, but not with any other simple command. For any other simple +command, the shell aborts execution of that command, and execution continues +at the top level ("the shell shall not perform any further processing of the +command in which the error occurred").
  • A non-interactive shell exits with an error status if the iteration variable in a for statement or the selection variable in a @@ -9063,7 +9256,7 @@ the eval builtin.
  • While variable indirection is available, it may not be applied to the ‘#’ and ‘?’ special parameters. -
  • When expanding the ‘*’ special parameter in a pattern context where the +
  • Expanding the ‘*’ special parameter in a pattern context where the expansion is double-quoted does not treat the $* as if it were double-quoted. @@ -9127,15 +9320,15 @@ shell function names and definitions. variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. -
  • When the cd builtin is invoked in logical mode, and the pathname +
  • When the cd builtin is invoked in logical mode, and the pathname constructed from $PWD and the directory name supplied as an argument does not refer to an existing directory, cd will fail instead of -falling back to physical mode. +falling back to physical mode.
  • When the cd builtin cannot change a directory because the length of the pathname constructed from $PWD and the directory name supplied as an argument -exceeds PATH_MAX when all symbolic links are expanded, cd will +exceeds PATH_MAX when all symbolic links are expanded, cd will fail instead of attempting to use only the supplied directory name.
  • The pwd builtin verifies that the value it prints is the same as the @@ -9171,6 +9364,11 @@ has been set. If Bash receives a trapped signal while executing read, the trap handler executes and read returns an exit status greater than 128. +
  • The printf builtin uses double (via strtod) to convert +arguments corresponding to floating point conversion specifiers, instead of +long double if it’s available. The ‘L’ length modifier forces +printf to use long double if it’s available. +
  • Bash removes an exited background process’s status from the list of such statuses after the wait builtin is used to obtain it. @@ -9195,7 +9393,9 @@ the --enable-strict-posix-default to configure when bu (see Optional Features).


    -
    +
    +
    + @@ -9203,8 +9403,8 @@ Previous: -

    Bash-4.0 introduced the concept of a ‘shell compatibility level’, specified -as a set of options to the shopt builtin +

    Bash-4.0 introduced the concept of a shell compatibility level, +specified as a set of options to the shopt builtin (compat31, compat32, compat40, @@ -9220,7 +9420,7 @@ behavior. It’s intended to be a temporary solution.

    This section 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). +default behavior in bash-3.2 and subsequent versions).

    If a user enables, say, compat32, it may affect the behavior of other compatibility levels up to and including the current compatibility level. @@ -9260,14 +9460,14 @@ For bash-4.3 and later versions, the BASH_COMPAT variable is prefer and it is required for bash-5.1 and later versions.

    -
    compat31
    +
    compat31
    • quoting the rhs of the [[ command’s regexp matching operator (=~) has no special effect
    -
    compat32
    +
    compat32
    • interrupting a command list such as "a ; b ; c" causes the execution of the next command in the list (in bash-4.0 and later versions, @@ -9277,7 +9477,7 @@ entire list)
    -
    compat40
    +
    compat40
    • the ‘<’ and ‘>’ operators to the [[ command do not consider the current locale when comparing strings; they use ASCII @@ -9288,7 +9488,7 @@ strcoll(3).
    -
    compat41
    +
    compat41
    • in posix mode, time may be followed by options and still be recognized as a reserved word (this is POSIX interpretation 267) @@ -9300,7 +9500,7 @@ the single quotes are considered quoted
    -
    compat42
    +
    compat42
    • the replacement string in double-quoted pattern substitution does not undergo quote removal, as it does in versions after bash-4.2 @@ -9313,11 +9513,11 @@ are not special within double-quoted word expansions
    -
    compat43
    +
    compat43
    • the shell does not print a warning message if an attempt is made to use a quoted compound assignment as an argument to declare -(declare -a foo=’(1 2)’). Later versions warn that this usage is +(e.g., declare -a foo=’(1 2)’). Later versions warn that this usage is deprecated
    • word expansion errors are considered non-fatal errors that cause the current command to fail, even in posix mode @@ -9330,7 +9530,7 @@ the loop state to prevent this
    -
    compat44
    +
    compat44
    • the shell sets up the values used by BASH_ARGV and BASH_ARGC so they can expand to the shell’s positional parameters even if extended @@ -9345,7 +9545,7 @@ mode
    -
    compat50 (set using BASH_COMPAT)
    +
    compat50 (set using BASH_COMPAT)
    • Bash-5.1 changed the way $RANDOM is generated to introduce slightly more randomness. If the shell compatibility level is set to 50 or @@ -9357,32 +9557,66 @@ printed an informational message to that effect, even when producing output that can be reused as input. Bash-5.1 suppresses that message when the -l option is supplied.
    + +
    +
    compat51 (set using BASH_COMPAT)
    +
      +
    • The unset builtin will unset the array a given an argument like +‘a[@]’. +Bash-5.2 will unset an element with key ‘@’ (associative arrays) +or remove all the elements without unsetting the array (indexed arrays) +
    • arithmetic commands ( ((...)) ) and the expressions in an arithmetic for +statement can be expanded more than once +
    • expressions used as arguments to arithmetic operators in the [[ +conditional command can be expanded more than once +
    • the expressions in substring parameter brace expansion can be +expanded more than once +
    • the expressions in the $(( ... )) word expansion can be expanded +more than once +
    • arithmetic expressions used as indexed array subscripts can be +expanded more than once +
    • test -v, when given an argument of ‘A[@]’, where A is +an existing associative array, will return true if the array has any set +elements. +Bash-5.2 will look for and report on a key named ‘@’ +
    • the ${parameter[:]=value} word expansion will return +value, before any variable-specific transformations have been +performed (e.g., converting to lowercase). +Bash-5.2 will return the final value assigned to the variable. +
    • Parsing command substitutions will behave as if extended glob +(see The Shopt Builtin) +is enabled, so that parsing a command substitution containing an extglob +pattern (say, as part of a shell function) will not fail. +This assumes the intent is to enable extglob before the command is executed +and word expansions are performed. +It will fail at word expansion time if extglob hasn’t been +enabled by the time the command is executed. +

    -
    +
    +
    +
    +

    7 Job Control

    This chapter discusses what job control is, how it works, and how Bash allows you to access its facilities.

    - - - - - +
    -
    +
    + @@ -9431,9 +9665,9 @@ which, unless caught, suspends the process.

    If the operating system on which Bash is running supports job control, Bash contains facilities to use it. Typing the -suspend character (typically ‘^Z’, Control-Z) while a +suspend character (typically ‘^Z’, Control-Z) while a process is running causes that process to be stopped and returns -control to Bash. Typing the delayed suspend character +control to Bash. Typing the delayed suspend character (typically ‘^Y’, Control-Y) causes the process to be stopped when it attempts to read input from the terminal, and control to be returned to Bash. The user then manipulates the state of @@ -9444,7 +9678,7 @@ 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 -character ‘%’ introduces a job specification (jobspec). +character ‘%’ introduces a job specification (jobspec).

    Job number n may be referred to as ‘%n’. The symbols ‘%%’ and ‘%+’ refer to the shell’s notion of the @@ -9496,16 +9730,17 @@ job changes state. The -f option causes wait to wait until the job or process terminates before returning.


    -
    +
    +
    +

    7.2 Job Control Builtins

    -
    bg
    -
    -
    +
    bg
    +
    bg [jobspec …]
     
    @@ -9518,9 +9753,8 @@ enabled, or, when run with job control enabled, any that was started without job control.

    -
    fg
    -
    -
    +
    fg
    +
    fg [jobspec]
     
    @@ -9532,9 +9766,8 @@ job control enabled, jobspec does not specify a valid job or jobspec specifies a job that was started without job control.

    -
    jobs
    -
    -
    +
    jobs
    +
    jobs [-lnprs] [jobspec]
     jobs -x command [arguments]
     
    @@ -9543,24 +9776,24 @@ jobs -x command [arguments] following meanings:

    -
    -l
    +
    -l

    List process IDs in addition to the normal information.

    -
    -n
    +
    -n

    Display information only about jobs that have changed status since the user was last notified of their status.

    -
    -p
    +
    -p

    List only the process ID of the job’s process group leader.

    -
    -r
    +
    -r

    Display only running jobs.

    -
    -s
    +
    -s

    Display only stopped jobs.

    @@ -9576,9 +9809,8 @@ corresponding process group ID, and executes command, passing it arguments, returning its exit status.

    -
    kill
    -
    -
    +
    kill
    +
    kill [-s sigspec] [-n signum] [-sigspec] jobspec or pid
     kill -l|-L [exit_status]
     
    @@ -9600,9 +9832,8 @@ The return status is zero if at least one signal was successfully sent, or non-zero if an error occurs or an invalid option is encountered.

    -
    wait
    -
    -
    +
    wait
    +
    wait [-fn] [-p varname] [jobspec or pid …]
     
    @@ -9616,7 +9847,7 @@ the last-executed process substitution, if its process id is the same as $!, and the return status is zero. If the -n option is supplied, wait waits for a single job -from the list of pids or jobspecs or, if no arguments are +from the list of pids or jobspecs or, if no arguments are supplied, any job, to complete and returns its exit status. If none of the supplied arguments is a child of the shell, or if no arguments @@ -9629,15 +9860,18 @@ The variable will be unset initially, before any assignment. This is useful only when the -n option is supplied. Supplying the -f option, when job control is enabled, forces wait to wait for each pid or jobspec to -terminate before returning its status, intead of returning when it changes +terminate before returning its status, instead of returning when it changes status. If neither jobspec nor pid specifies an active child process of the shell, the return status is 127. +If wait is interrupted by a signal, the return status will be greater +than 128, as described above (see Signals). +Otherwise, the return status is the exit status +of the last process or job waited for.

    -
    disown
    -
    -
    +
    disown
    +
    disown [-ar] [-h] [jobspec … | pid … ]
     
    @@ -9653,17 +9887,24 @@ mark all jobs; the -r option without a jobspec argument restricts operation to running jobs.

    -
    suspend
    -
    -
    +
    suspend
    +
    suspend [-f]
     

    Suspend the execution of this shell until it receives a SIGCONT signal. -A login shell cannot be suspended; the -f +A login shell, +or a shell without job control enabled, +cannot be suspended; the -f option can be used to override this and force the suspension. -

    +The return status is 0 unless the shell is a login shell +or job control is not enabled +and +-f +is not supplied. +

    +
  • When job control is not active, the kill and wait @@ -9671,16 +9912,16 @@ builtins do not accept jobspec arguments. They must be supplied process IDs.


    -
    +
    +
    +

    7.3 Job Control Variables

    -
    auto_resume - -
    +
    auto_resume

    This variable controls how the shell interacts with the user and job control. If this variable exists then single word simple commands without redirections are treated as candidates for resumption @@ -9707,9 +9948,12 @@ analogous to the ‘%’ job ID.


    -
    +
    +
    +
    +

    8 Command Line Editing

    @@ -9720,7 +9964,7 @@ used by several different programs, including Bash. 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 (see Bash Builtins). +read builtin command (see Bash Builtin Commands). 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 -o emacs or @@ -9728,32 +9972,20 @@ Line editing can be enabled at any time using the -o emacs or (see The Set Builtin), or disabled using the +o emacs or +o vi options to set.

    - - - - - - - - - - +
    -
    +
    + @@ -9795,9 +10027,11 @@ The RET key may be labeled Return or < some keyboards.


    -
    +
    +
    +

    8.2 Readline Interaction

    @@ -9813,21 +10047,17 @@ the line, you simply press RET. You do not have to be at t end of the line to press RET; the entire line is accepted regardless of the location of the cursor within the line.

    - - - - - - - +
    -
    +
    + @@ -9855,34 +10085,36 @@ blank space created by the removal of the text. A list of the bare essentials for editing the text of an input line follows.

    -
    C-b
    +
    C-b

    Move back one character.

    -
    C-f
    +
    C-f

    Move forward one character.

    -
    DEL or Backspace
    +
    DEL or Backspace

    Delete the character to the left of the cursor.

    -
    C-d
    +
    C-d

    Delete the character underneath the cursor.

    -
    Printing characters
    +
    Printing characters

    Insert the character into the line at the cursor.

    -
    C-_ or C-x C-u
    +
    C-_ or C-x C-u

    Undo the last editing command. You can undo all the way back to an empty line.

    -

    (Depending on your configuration, the Backspace key be set to +

    (Depending on your configuration, the Backspace key might be set to delete the character to the left of the cursor and the DEL key set to delete the character underneath the cursor, like C-d, rather than the character to the left of the cursor.)


    -
    +
    +
    + @@ -9896,19 +10128,19 @@ other commands have been added in addition to C-b, C-f, about the line.

    -
    C-a
    +
    C-a

    Move to the start of the line.

    -
    C-e
    +
    C-e

    Move to the end of the line.

    -
    M-f
    +
    M-f

    Move forward a word, where a word is composed of letters and digits.

    -
    M-b
    +
    M-b

    Move backward a word.

    -
    C-l
    +
    C-l

    Clear the screen, reprinting the current line at the top.

    @@ -9918,7 +10150,9 @@ forward a word. It is a loose convention that control keystrokes operate on characters while meta keystrokes operate on words.


    -
    +
    +
    + @@ -9947,23 +10181,23 @@ another line.

    Here is the list of commands for killing text.

    -
    C-k
    +
    C-k

    Kill the text from the current cursor position to the end of the line.

    -
    M-d
    +
    M-d

    Kill from the cursor 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 M-f.

    -
    M-DEL
    -

    Kill from the cursor the start of the current word, or, if between +

    M-DEL
    +

    Kill from the cursor to the start of the current word, or, if between words, to the start of the previous word. Word boundaries are the same as those used by M-b.

    -
    C-w
    +
    C-w

    Kill from the cursor to the previous whitespace. This is different than M-DEL because the word boundaries differ.

    @@ -9974,20 +10208,22 @@ Word boundaries are the same as those used by M-b. means to copy the most-recently-killed text from the kill buffer.

    -
    C-y
    +
    C-y

    Yank the most recently killed text back into the buffer at the cursor.

    -
    M-y
    +
    M-y

    Rotate the kill-ring, and yank the new top. You can only do this if the prior command is C-y or M-y.


    -
    +
    +
    +

    8.2.4 Readline Arguments

    @@ -10007,7 +10243,9 @@ the C-d command an argument of 10, you could type ‘M-1 0 which will delete the next ten characters on the input line.


    -
    +
    +
    + @@ -10054,7 +10292,10 @@ 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.


    -
    +
    +
    +
    + @@ -10065,7 +10306,8 @@ Next: Bash Builtins. +See Bash Builtin Commands.

    When a program which uses the Readline library starts up, the init file is read, and the key bindings are set. @@ -10081,21 +10323,15 @@ init file is read, and the key bindings are set.

    In addition, the C-x C-r command re-reads this init file, thus incorporating any changes that you might have made to it.

    - - - - - +
    -
    +
    + @@ -10109,7 +10345,7 @@ constructs (see Conditional Init Construc denote variable settings and key bindings.

    -
    Variable Settings
    +
    Variable Settings

    You can modify the run-time behavior of Readline by altering the values of variables in Readline using the set command within the init file. @@ -10135,64 +10371,86 @@ the value is null or empty, on (case-insensitive), or 1. Any other value results in the variable being set to off.

    The bind -V command lists the current Readline variable names -and values. See Bash Builtins. +and values. See Bash Builtin Commands.

    A great deal of run-time behavior is changeable with the following variables.

    -
    bell-style
    -
    -

    Controls what happens when Readline wants to ring the terminal bell. +

    active-region-start-color
    +

    A string variable that controls the text color and background when displaying +the text in the active region (see the description of +enable-active-region below). +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal before displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that puts the terminal in standout mode, +as obtained from the terminal’s terminfo description. +A sample value might be ‘\e[01;33m’. +

    +
    +
    active-region-end-color
    +

    A string variable that "undoes" the effects of active-region-start-color +and restores "normal" terminal display appearance after displaying text +in the active region. +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal after displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that restores the terminal from standout mode, +as obtained from the terminal’s terminfo description. +A sample value might be ‘\e[0m’. +

    +
    +
    bell-style
    +

    Controls what happens when Readline wants to ring the terminal bell. If set to ‘none’, Readline never rings the bell. If set to ‘visible’, Readline uses a visible bell if one is available. If set to ‘audible’ (the default), Readline attempts to ring the terminal’s bell.

    -
    bind-tty-special-chars
    -
    -

    If set to ‘on’ (the default), Readline attempts to bind the control +

    bind-tty-special-chars
    +

    If set to ‘on’ (the default), Readline attempts to bind the control characters treated specially by the kernel’s terminal driver to their Readline equivalents.

    -
    blink-matching-paren
    -
    -

    If set to ‘on’, Readline attempts to briefly move the cursor to an +

    +

    If set to ‘on’, Readline attempts to briefly move the cursor to an opening parenthesis when a closing parenthesis is inserted. The default is ‘off’.

    -
    colored-completion-prefix
    -
    -

    If set to ‘on’, when listing completions, Readline displays the +

    colored-completion-prefix
    +

    If set to ‘on’, when listing completions, Readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the value of the LS_COLORS environment variable. +If there is a color definition in LS_COLORS for the custom suffix +‘readline-colored-completion-prefix’, Readline uses this color for +the common prefix instead of its default. The default is ‘off’.

    -
    colored-stats
    -
    -

    If set to ‘on’, Readline displays possible completions using different +

    colored-stats
    +

    If set to ‘on’, Readline displays possible completions using different colors to indicate their file type. The color definitions are taken from the value of the LS_COLORS environment variable. The default is ‘off’.

    -
    comment-begin
    -
    -

    The string to insert at the beginning of the line when the +

    comment-begin
    +

    The string to insert at the beginning of the line when the insert-comment command is executed. The default value is "#".

    -
    completion-display-width
    -
    -

    The number of screen columns used to display possible matches +

    completion-display-width
    +

    The number of screen columns used to display possible matches when performing completion. The value is ignored if it is less than 0 or greater than the terminal screen width. @@ -10200,76 +10458,71 @@ A value of 0 will cause matches to be displayed one per line. The default value is -1.

    -
    completion-ignore-case
    -
    -

    If set to ‘on’, Readline performs filename matching and completion +

    completion-ignore-case
    +

    If set to ‘on’, Readline performs filename matching and completion in a case-insensitive fashion. The default value is ‘off’.

    -
    completion-map-case
    -
    -

    If set to ‘on’, and completion-ignore-case is enabled, Readline +

    completion-map-case
    +

    If set to ‘on’, and completion-ignore-case is enabled, Readline treats hyphens (‘-’) and underscores (‘_’) as equivalent when performing case-insensitive filename matching and completion. The default value is ‘off’.

    -
    completion-prefix-display-length
    -
    -

    The length in characters of the common prefix of a list of possible +

    completion-prefix-display-length
    +

    The length in characters of the common prefix of a list of possible 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 possible completions.

    -
    completion-query-items
    -
    -

    The number of possible completions that determines when the user is +

    completion-query-items
    +

    The number of possible completions that determines when the user is asked whether the list of possibilities should be displayed. If the number of possible completions is greater than or equal to this value, Readline will ask whether or not the user wishes to view them; otherwise, they are simply listed. -This variable must be set to an integer value greater than or equal to 0. -A negative value means Readline should never ask. +This variable must be set to an integer value greater than or equal to zero. +A zero value means Readline should never ask; negative values are +treated as zero. The default limit is 100.

    -
    convert-meta
    -
    -

    If set to ‘on’, Readline will convert characters with the +

    convert-meta
    +

    If set to ‘on’, Readline will convert characters with the eighth bit set to an ASCII key sequence by stripping the eighth bit and prefixing an ESC character, converting them to a -meta-prefixed key sequence. The default value is ‘on’, but +meta-prefixed key sequence. +The default value is ‘on’, but will be set to ‘off’ if the locale is one that contains eight-bit characters. +This variable is dependent on the LC_CTYPE locale category, and +may change if the locale is changed.

    -
    disable-completion
    -
    -

    If set to ‘On’, Readline will inhibit word completion. +

    disable-completion
    +

    If set to ‘On’, Readline will inhibit word completion. Completion characters will be inserted into the line as if they had been mapped to self-insert. The default is ‘off’.

    -
    echo-control-characters
    -
    -

    When set to ‘on’, on operating systems that indicate they support it, -readline echoes a character corresponding to a signal generated from the +

    echo-control-characters
    +

    When set to ‘on’, on operating systems that indicate they support it, +Readline echoes a character corresponding to a signal generated from the keyboard. The default is ‘on’.

    -
    editing-mode
    -
    -

    The editing-mode variable controls which default set of +

    editing-mode
    +

    The editing-mode variable controls which default set of key bindings is used. By default, Readline starts up in Emacs editing mode, where the keystrokes are most similar to Emacs. This variable can be set to either ‘emacs’ or ‘vi’.

    -
    emacs-mode-string
    -
    -

    If the show-mode-in-prompt variable is enabled, +

    emacs-mode-string
    +

    If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when emacs editing mode is active. The value is expanded like a key binding, so the standard set of meta- and control prefixes and @@ -10280,46 +10533,58 @@ sequence into the mode string. The default is ‘@’.

    -
    enable-bracketed-paste
    -
    -

    When set to ‘On’, Readline will configure the terminal in a way -that will enable it to insert each paste into the editing buffer as a -single string of characters, instead of treating each character as if -it had been read from the keyboard. This can prevent pasted characters -from being interpreted as editing commands. The default is ‘On’. -

    -
    -
    enable-keypad
    -
    -

    When set to ‘on’, Readline will try to enable the application +

    enable-active-region
    +

    The point is the current cursor position, and mark refers +to a saved cursor position (see Commands For Moving). +The text between the point and mark is referred to as the region. +When this variable is set to ‘On’, Readline allows certain commands +to designate the region as active. +When the region is active, Readline highlights the text in the region using +the value of the active-region-start-color, which defaults to the +string that enables +the terminal’s standout mode. +The active region shows the text inserted by bracketed-paste and any +matching text found by incremental and non-incremental history searches. +The default is ‘On’. +

    +
    +
    enable-bracketed-paste
    +

    When set to ‘On’, Readline configures the terminal to insert each +paste into the editing buffer as a single string of characters, instead +of treating each character as if it had been read from the keyboard. +This is called putting the terminal into bracketed paste mode; +it prevents Readline from executing any editing commands bound to key +sequences appearing in the pasted text. +The default is ‘On’. +

    +
    +
    enable-keypad
    +

    When set to ‘on’, Readline will try to enable the application keypad when it is called. Some systems need this to enable the arrow keys. The default is ‘off’.

    -
    enable-meta-key
    +
    enable-meta-key

    When set to ‘on’, 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. The default is ‘on’.

    -
    expand-tilde
    -
    -

    If set to ‘on’, tilde expansion is performed when Readline +

    expand-tilde
    +

    If set to ‘on’, tilde expansion is performed when Readline attempts word completion. The default is ‘off’.

    -
    history-preserve-point
    -
    -

    If set to ‘on’, the history code attempts to place the point (the +

    history-preserve-point
    +

    If set to ‘on’, the history code attempts to place the point (the current cursor position) at the same location on each history line retrieved with previous-history or next-history. The default is ‘off’.

    -
    history-size
    -
    -

    Set the maximum number of history entries saved in the history list. +

    history-size
    +

    Set the maximum number of history entries saved in the history list. If set to zero, any existing history entries are deleted and no new entries are saved. If set to a value less than zero, the number of history entries is not @@ -10329,9 +10594,8 @@ If an attempt is made to set history-size to a non-numeric value, the maximum number of history entries will be set to 500.

    -
    horizontal-scroll-mode
    -
    -

    This variable can be set to either ‘on’ or ‘off’. Setting it +

    horizontal-scroll-mode
    +

    This variable can be set to either ‘on’ or ‘off’. Setting it to ‘on’ means that the text of the lines being edited will scroll horizontally on a single screen line when they are longer than the width of the screen, instead of wrapping onto a new screen line. @@ -10339,28 +10603,27 @@ This variable is automatically set to ‘on’ for terminal By default, this variable is set to ‘off’.

    -
    input-meta
    -
    - +
    input-meta
    +

    If set to ‘on’, Readline will enable eight-bit input (it will not clear the eighth bit in the characters it reads), regardless of what the terminal claims it can support. The default value is ‘off’, but Readline will set it to ‘on’ if the locale contains eight-bit characters. The name meta-flag is a synonym for this variable. +This variable is dependent on the LC_CTYPE locale category, and +may change if the locale is changed.

    -
    isearch-terminators
    -
    -

    The string of characters that should terminate an incremental search without -subsequently executing the character as a command (see Searching). +

    isearch-terminators
    +

    The string of characters that should terminate an incremental search without +subsequently executing the character as a command (see Searching for Commands in the History). If this variable has not been given a value, the characters ESC and C-J will terminate an incremental search.

    -
    keymap
    -
    -

    Sets Readline’s idea of the current keymap for key binding commands. +

    keymap
    +

    Sets Readline’s idea of the current keymap for key binding commands. Built-in keymap names are emacs, emacs-standard, @@ -10378,7 +10641,7 @@ The value of the editing-mode variable also affects the default keymap.

    -
    keyseq-timeout
    +
    keyseq-timeout

    Specifies the duration Readline will wait for a character when reading an ambiguous key sequence (one that can form a complete key sequence using the input read so far, or can take additional input to complete a longer @@ -10395,29 +10658,26 @@ decide which key sequence to complete. The default value is 500.

    -
    mark-directories
    +
    mark-directories

    If set to ‘on’, completed directory names have a slash appended. The default is ‘on’.

    -
    mark-modified-lines
    -
    -

    This variable, when set to ‘on’, causes Readline to display an +

    mark-modified-lines
    +

    This variable, when set to ‘on’, causes Readline to display an asterisk (‘*’) at the start of history lines which have been modified. This variable is ‘off’ by default.

    -
    mark-symlinked-directories
    -
    -

    If set to ‘on’, completed names which are symbolic links +

    mark-symlinked-directories
    +

    If set to ‘on’, completed names which are symbolic links to directories have a slash appended (subject to the value of mark-directories). The default is ‘off’.

    -
    match-hidden-files
    -
    -

    This variable, when set to ‘on’, causes Readline to match files whose +

    match-hidden-files
    +

    This variable, when set to ‘on’, causes Readline to match files whose names begin with a ‘.’ (hidden files) when performing filename completion. If set to ‘off’, the leading ‘.’ must be @@ -10425,55 +10685,51 @@ 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 +

    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 +

    output-meta
    +

    If set to ‘on’, Readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape sequence. The default is ‘off’, but Readline will set it to ‘on’ if the locale contains eight-bit characters. +This variable is dependent on the LC_CTYPE locale category, and +may change if the locale is changed.

    -
    page-completions
    -
    -

    If set to ‘on’, Readline uses an internal more-like pager +

    page-completions
    +

    If set to ‘on’, Readline uses an internal more-like pager to display a screenful of possible completions at a time. This variable is ‘on’ by default.

    -
    print-completions-horizontally
    +
    print-completions-horizontally

    If set to ‘on’, Readline will display completions with matches sorted horizontally in alphabetical order, rather than down the screen. The default is ‘off’.

    -
    revert-all-at-newline
    -
    -

    If set to ‘on’, Readline will undo all changes to history lines +

    revert-all-at-newline
    +

    If set to ‘on’, Readline will undo all changes to history lines before returning when accept-line is executed. By default, history lines may be modified and retain individual undo lists across -calls to readline. The default is ‘off’. +calls to readline(). The default is ‘off’.

    -
    show-all-if-ambiguous
    -
    -

    This alters the default behavior of the completion functions. If +

    show-all-if-ambiguous
    +

    This alters the default behavior of the completion functions. If set to ‘on’, words which have more than one possible completion cause the matches to be listed immediately instead of ringing the bell. The default value is ‘off’.

    -
    show-all-if-unmodified
    -
    -

    This alters the default behavior of the completion functions in +

    show-all-if-unmodified
    +

    This alters the default behavior of the completion functions in a fashion similar to show-all-if-ambiguous. If set to ‘on’, words which have more than one possible completion without any @@ -10483,19 +10739,17 @@ of ringing the bell. The default value is ‘off’.

    -
    show-mode-in-prompt
    -
    -

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

    show-mode-in-prompt
    +

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

    -
    skip-completed-text
    -
    -

    If set to ‘on’, this alters the default completion behavior when +

    skip-completed-text
    +

    If set to ‘on’, 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 +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. @@ -10506,9 +10760,8 @@ completion. The default value is ‘off’.

    -
    vi-cmd-mode-string
    -
    -

    If the show-mode-in-prompt variable is enabled, +

    vi-cmd-mode-string
    +

    If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a @@ -10520,9 +10773,8 @@ sequence into the mode string. The default is ‘(cmd)’.

    -
    vi-ins-mode-string
    -
    -

    If the show-mode-in-prompt variable is enabled, +

    vi-ins-mode-string
    +

    If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a @@ -10534,9 +10786,8 @@ sequence into the mode string. The default is ‘(ins)’.

    -
    visible-stats
    -
    -

    If set to ‘on’, a character denoting a file’s type +

    visible-stats
    +

    If set to ‘on’, a character denoting a file’s type is appended to the filename when listing possible completions. The default is ‘off’.

    @@ -10544,7 +10795,7 @@ completions. The default is ‘off’.
    -
    Key Bindings
    +
    Key Bindings

    The syntax for controlling key bindings in the init file is simple. First you need to find the name of the command that you want to change. The following sections contain tables of the command @@ -10560,15 +10811,15 @@ interpreted as part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable.

    -

    In addition to command names, readline allows keys to be bound +

    In addition to command names, Readline allows keys to be bound to a string that is inserted when the key is pressed (a macro).

    The bind -p command displays Readline function names and -bindings in a format that can put directly into an initialization file. -See Bash Builtins. +bindings in a format that can be put directly into an initialization file. +See Bash Builtin Commands.

    -
    keynamefunction-name or macro
    +
    keynamefunction-name or macro

    keyname is the name of a key spelled out in English. For example:

    Control-u: universal-argument
    @@ -10599,7 +10850,7 @@ and
     TAB.
     

    -
    "keyseq": function-name or macro
    +
    "keyseq": function-name or macro

    keyseq differs from keyname above in that strings denoting an entire key sequence can be specified, by placing the key sequence in double quotes. Some GNU Emacs style key @@ -10625,22 +10876,22 @@ the text ‘Function Key 1’. specifying key sequences:

    -
    \C-
    +
    \C-

    control prefix

    -
    \M-
    +
    \M-

    meta prefix

    -
    \e
    +
    \e

    an escape character

    -
    \\
    +
    \\

    backslash

    -
    \"
    +
    \"

    ", a double quotation mark

    -
    \'
    +
    \'

    ', a single quote or apostrophe

    @@ -10649,35 +10900,35 @@ specifying key sequences: set of backslash escapes is available:

    -
    \a
    +
    \a

    alert (bell)

    -
    \b
    +
    \b

    backspace

    -
    \d
    +
    \d

    delete

    -
    \f
    +
    \f

    form feed

    -
    \n
    +
    \n

    newline

    -
    \r
    +
    \r

    carriage return

    -
    \t
    +
    \t

    horizontal tab

    -
    \v
    +
    \v

    vertical tab

    -
    \nnn
    +
    \nnn

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

    -
    \xHH
    +
    \xHH

    the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)

    @@ -10699,7 +10950,9 @@ insert a single ‘\’ into the line:

    -
    +
    +
    + @@ -10711,7 +10964,7 @@ bindings and variable settings to be performed as the result of tests. There are four parser directives used.

    -
    $if
    +
    $if

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

    -
    mode
    +
    mode

    The mode= form of the $if directive is used to test whether Readline is in emacs or vi mode. This may be used in conjunction @@ -10728,7 +10981,7 @@ the emacs-standard and emacs-ctlx keymaps only if Readline is starting out in emacs mode.

    -
    term
    +
    term

    The term= 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 @@ -10738,7 +10991,7 @@ allows sun to match both sun and sun-cmd, for instance.

    -
    version
    +
    version

    The version test may be used to perform comparisons against specific Readline versions. The version expands to the current Readline version. @@ -10760,7 +11013,7 @@ $endif

    -
    application
    +
    application

    The application construct is used to include application-specific settings. Each program using the Readline library sets the application name, and you can test for @@ -10776,7 +11029,7 @@ $endif

    -
    variable
    +
    variable

    The variable construct provides simple equality tests for Readline variables and values. The permitted comparison operators are ‘=’, ‘==’, and ‘!=’. @@ -10796,17 +11049,17 @@ $endif

    -
    $endif
    +
    $endif

    This command, as seen in the previous example, terminates an $if command.

    -
    $else
    +
    $else

    Commands in this branch of the $if directive are executed if the test fails.

    -
    $include
    +
    $include

    This directive takes a single filename as an argument and reads commands and bindings from that file. For example, the following directive reads from /etc/inputrc: @@ -10817,7 +11070,9 @@ For example, the following directive reads from /etc/inputrc:


    -
    +
    +
    + @@ -10929,36 +11184,21 @@ $endif

    -
    +
    +
    +
    +

    8.4 Bindable Readline Commands

    - - - - - - - - - -

    This section describes Readline commands that may be bound to key sequences. You can list your key bindings by executing bind -P or, for a more terse format, suitable for an -inputrc file, bind -p. (See Bash Builtins.) +inputrc file, bind -p. (See Bash Builtin Commands.) Command names without an accompanying key sequence are unbound by default.

    In the following descriptions, point refers to the current cursor @@ -10966,77 +11206,68 @@ position, and mark refers to a cursor position saved by the set-mark command. The text between the point and mark is referred to as the region.

    +
    -
    +
    +

    8.4.1 Commands For Moving

    -
    beginning-of-line (C-a) - -
    +
    beginning-of-line (C-a)

    Move to the start of the current line.

    -
    end-of-line (C-e) - -
    +
    end-of-line (C-e)

    Move to the end of the line.

    -
    forward-char (C-f) - -
    +
    forward-char (C-f)

    Move forward a character.

    -
    backward-char (C-b) - -
    +
    backward-char (C-b)

    Move back a character.

    -
    forward-word (M-f) - -
    +
    forward-word (M-f)

    Move forward to the end of the next word. Words are composed of letters and digits.

    -
    backward-word (M-b) - -
    +
    backward-word (M-b)

    Move back to the start of the current or previous word. Words are composed of letters and digits.

    -
    shell-forward-word (M-C-f) - -
    +
    shell-forward-word (M-C-f)

    Move forward to the end of the next word. Words are delimited by non-quoted shell metacharacters.

    -
    shell-backward-word (M-C-b) - -
    +
    shell-backward-word (M-C-b)

    Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters.

    -
    previous-screen-line () - -
    +
    previous-screen-line ()

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

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

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

    -
    clear-display (M-C-l) - -
    +
    clear-display (M-C-l)

    Clear the screen and, if possible, the terminal’s scrollback buffer, then redraw the current line, leaving the current line at the top of the screen.

    -
    clear-screen (C-l) - -
    +
    clear-screen (C-l)

    Clear the screen, then redraw the current line, leaving the current line at the top of the screen.

    -
    redraw-current-line () - -
    +
    redraw-current-line ()

    Refresh the current line. By default, this is unbound.


    -
    +
    +
    +

    8.4.2 Commands For Manipulating The History

    -
    accept-line (Newline or Return) - -
    +
    accept-line (Newline or Return)

    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 @@ -11087,68 +11312,50 @@ If this line is a modified history line, then restore the history line to its original state.

    -
    previous-history (C-p) - -
    +
    previous-history (C-p)

    Move ‘back’ through the history list, fetching the previous command.

    -
    next-history (C-n) - -
    +
    next-history (C-n)

    Move ‘forward’ through the history list, fetching the next command.

    -
    beginning-of-history (M-<) - -
    +
    beginning-of-history (M-<)

    Move to the first line in the history.

    -
    end-of-history (M->) - -
    +
    end-of-history (M->)

    Move to the end of the input history, i.e., the line currently being entered.

    -
    reverse-search-history (C-r) - -
    +
    reverse-search-history (C-r)

    Search backward starting at the current line and moving ‘up’ through the history as necessary. This is an incremental search. This command sets the region to the matched text and activates the mark.

    -
    forward-search-history (C-s) - -
    +
    forward-search-history (C-s)

    Search forward starting at the current line and moving ‘down’ through the history as necessary. This is an incremental search. This command sets the region to the matched text and activates the mark.

    -
    non-incremental-reverse-search-history (M-p) - -
    +
    non-incremental-reverse-search-history (M-p)

    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. The search string may match anywhere in a history line.

    -
    non-incremental-forward-search-history (M-n) - -
    +
    non-incremental-forward-search-history (M-n)

    Search forward starting at the current line and moving ‘down’ through the history as necessary using a non-incremental search for a string supplied by the user. The search string may match anywhere in a history line.

    -
    history-search-forward () - -
    +
    history-search-forward ()

    Search forward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. @@ -11156,9 +11363,7 @@ This is a non-incremental search. By default, this command is unbound.

    -
    history-search-backward () - -
    +
    history-search-backward ()

    Search backward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. @@ -11166,9 +11371,7 @@ This is a non-incremental search. By default, this command is unbound.

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

    Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. @@ -11176,9 +11379,7 @@ This is a non-incremental search. By default, this command is unbound.

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

    Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. @@ -11186,9 +11387,7 @@ This is a non-incremental search. By default, this command is unbound.

    -
    yank-nth-arg (M-C-y) - -
    +
    yank-nth-arg (M-C-y)

    Insert the first argument to the previous command (usually the second word on the previous line) at point. With an argument n, @@ -11199,9 +11398,7 @@ Once the argument n is computed, the argument is extracted as if the ‘!n’ history expansion had been specified.

    -
    yank-last-arg (M-. or M-_) - -
    +
    yank-last-arg (M-. or M-_)

    Insert last argument to the previous command (the last word of the previous history entry). With a numeric argument, behave exactly like yank-nth-arg. @@ -11215,9 +11412,7 @@ The history expansion facilities are used to extract the last argument, as if the ‘!$’ history expansion had been specified.

    -
    operate-and-get-next (C-o) - -
    +
    operate-and-get-next (C-o)

    Accept the current line for return to the calling application as if a newline had been entered, and fetch the next line relative to the current line from the history @@ -11226,65 +11421,59 @@ A numeric argument, if supplied, specifies the history entry to use instead of the current line.

    +
    fetch-history ()
    +

    With a numeric argument, fetch that entry from the history list +and make it the current line. +Without an argument, move back to the first entry in the history list. +

    +

    -
    +
    +
    +

    8.4.3 Commands For Changing Text

    -
    end-of-file (usually C-d) - -
    +
    end-of-file (usually C-d)

    The character indicating end-of-file as set, for example, by stty. If this character is read when there are no characters on the line, and point is at the beginning of the line, Readline interprets it as the end of input and returns EOF.

    -
    delete-char (C-d) - -
    +
    delete-char (C-d)

    Delete the character at point. If this function is bound to the same character as the tty EOF character, as C-d commonly is, see above for the effects.

    -
    backward-delete-char (Rubout) - -
    +
    backward-delete-char (Rubout)

    Delete the character behind the cursor. A numeric argument means to kill the characters instead of deleting them.

    -
    forward-backward-delete-char () - -
    +
    forward-backward-delete-char ()

    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.

    -
    quoted-insert (C-q or C-v) - -
    +
    quoted-insert (C-q or C-v)

    Add the next character typed to the line verbatim. This is how to insert key sequences like C-q, for example.

    -
    self-insert (a, b, A, 1, !, …) - -
    +
    self-insert (a, b, A, 1, !, …)

    Insert yourself.

    -
    bracketed-paste-begin () - -
    +
    bracketed-paste-begin ()

    This function is intended to be bound to the "bracketed paste" escape sequence sent by some terminals, and such a binding is assigned by default. It allows Readline to insert the pasted text as a single unit without treating @@ -11298,9 +11487,7 @@ mark is active, Readline redisplay uses the terminal’s standout mode to denote the region.

    -
    transpose-chars (C-t) - -
    +
    transpose-chars (C-t)

    Drag the character before the cursor forward over the character at the cursor, moving the cursor forward as well. If the insertion point @@ -11309,39 +11496,29 @@ transposes the last two characters of the line. Negative arguments have no effect.

    -
    transpose-words (M-t) - -
    +
    transpose-words (M-t)

    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.

    -
    upcase-word (M-u) - -
    +
    upcase-word (M-u)

    Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move the cursor.

    -
    downcase-word (M-l) - -
    +
    downcase-word (M-l)

    Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move the cursor.

    -
    capitalize-word (M-c) - -
    +
    capitalize-word (M-c)

    Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move the cursor.

    -
    overwrite-mode () - -
    +
    overwrite-mode ()

    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 @@ -11359,75 +11536,59 @@ before point with a space.


    -
    +
    +
    +

    8.4.4 Killing And Yanking

    -
    kill-line (C-k) - -
    +
    kill-line (C-k)

    Kill the text from point to the end of the line. With a negative numeric argument, kill backward from the cursor to the beginning of the current line.

    -
    backward-kill-line (C-x Rubout) - -
    +
    backward-kill-line (C-x Rubout)

    Kill backward from the cursor to the beginning of the current line. With a negative numeric argument, kill forward from the cursor to the end of the current line.

    -
    unix-line-discard (C-u) - -
    +
    unix-line-discard (C-u)

    Kill backward from the cursor to the beginning of the current line.

    -
    kill-whole-line () - -
    +
    kill-whole-line ()

    Kill all characters on the current line, no matter where point is. By default, this is unbound.

    -
    kill-word (M-d) - -
    +
    kill-word (M-d)

    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 forward-word.

    -
    backward-kill-word (M-DEL) - -
    +
    backward-kill-word (M-DEL)

    Kill the word behind point. Word boundaries are the same as backward-word.

    -
    shell-kill-word (M-C-d) - -
    +
    shell-kill-word (M-C-d)

    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 shell-forward-word.

    -
    shell-backward-kill-word () - -
    +
    shell-backward-kill-word ()

    Kill the word behind point. Word boundaries are the same as shell-backward-word.

    -
    shell-transpose-words (M-C-t) - -
    +
    shell-transpose-words (M-C-t)

    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 @@ -11436,88 +11597,68 @@ Word boundaries are the same as shell-forward-word and shell-backward-word.

    -
    unix-word-rubout (C-w) - -
    +
    unix-word-rubout (C-w)

    Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring.

    -
    unix-filename-rubout () - -
    +
    unix-filename-rubout ()

    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.

    -
    delete-horizontal-space () - -
    +
    delete-horizontal-space ()

    Delete all spaces and tabs around point. By default, this is unbound.

    -
    kill-region () - -
    +
    kill-region ()

    Kill the text in the current region. By default, this command is unbound.

    -
    copy-region-as-kill () - -
    +
    copy-region-as-kill ()

    Copy the text in the region to the kill buffer, so it can be yanked right away. By default, this command is unbound.

    -
    copy-backward-word () - -
    +
    copy-backward-word ()

    Copy the word before point to the kill buffer. The word boundaries are the same as backward-word. By default, this command is unbound.

    -
    copy-forward-word () - -
    +
    copy-forward-word ()

    Copy the word following point to the kill buffer. The word boundaries are the same as forward-word. By default, this command is unbound.

    -
    yank (C-y) - -
    +
    yank (C-y)

    Yank the top of the kill ring into the buffer at point.

    -
    yank-pop (M-y) - -
    +
    yank-pop (M-y)

    Rotate the kill-ring, and yank the new top. You can only do this if the prior command is yank or yank-pop.


    -
    +
    +
    +

    8.4.5 Specifying Numeric Arguments

    -
    digit-argument (M-0, M-1, … M--) - -
    +
    digit-argument (M-0, M-1, … M--)

    Add this digit to the argument already accumulating, or start a new argument. M-- starts a negative argument.

    -
    universal-argument () - -
    +
    universal-argument ()

    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. @@ -11534,16 +11675,16 @@ By default, this is not bound to a key.


    -
    +
    +
    +

    8.4.6 Letting Readline Type For You

    -
    complete (TAB) - -
    +
    complete (TAB)

    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 @@ -11553,25 +11694,19 @@ command (including aliases and functions) in turn. If none of these produces a match, filename completion is attempted.

    -
    possible-completions (M-?) - -
    +
    possible-completions (M-?)

    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 completion-display-width, the value of the environment variable COLUMNS, or the screen width, in that order.

    -
    insert-completions (M-*) - -
    +
    insert-completions (M-*)

    Insert all completions of the text before point that would have been generated by possible-completions.

    -
    menu-complete () - -
    +
    menu-complete ()

    Similar to complete, but replaces the word to be completed with a single match from the list of possible completions. Repeated execution of menu-complete steps through the list @@ -11586,17 +11721,13 @@ This command is intended to be bound to TAB, but is unbound by default.

    -
    menu-complete-backward () - -
    +
    menu-complete-backward ()

    Identical to menu-complete, but moves backward through the list of possible completions, as if menu-complete had been given a negative argument.

    -
    delete-char-or-list () - -
    +
    delete-char-or-list ()

    Deletes the character under the cursor if not at the beginning or end of the line (like delete-char). If at the end of the line, behaves identically to @@ -11604,64 +11735,46 @@ If at the end of the line, behaves identically to This command is unbound by default.

    -
    complete-filename (M-/) - -
    +
    complete-filename (M-/)

    Attempt filename completion on the text before point.

    -
    possible-filename-completions (C-x /) - -
    +
    possible-filename-completions (C-x /)

    List the possible completions of the text before point, treating it as a filename.

    -
    complete-username (M-~) - -
    +
    complete-username (M-~)

    Attempt completion on the text before point, treating it as a username.

    -
    possible-username-completions (C-x ~) - -
    +
    possible-username-completions (C-x ~)

    List the possible completions of the text before point, treating it as a username.

    -
    complete-variable (M-$) - -
    +
    complete-variable (M-$)

    Attempt completion on the text before point, treating it as a shell variable.

    -
    possible-variable-completions (C-x $) - -
    +
    possible-variable-completions (C-x $)

    List the possible completions of the text before point, treating it as a shell variable.

    -
    complete-hostname (M-@) - -
    +
    complete-hostname (M-@)

    Attempt completion on the text before point, treating it as a hostname.

    -
    possible-hostname-completions (C-x @) - -
    +
    possible-hostname-completions (C-x @)

    List the possible completions of the text before point, treating it as a hostname.

    -
    complete-command (M-!) - -
    +
    complete-command (M-!)

    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 @@ -11669,32 +11782,24 @@ functions, shell builtins, and finally executable filenames, in that order.

    -
    possible-command-completions (C-x !) - -
    +
    possible-command-completions (C-x !)

    List the possible completions of the text before point, treating it as a command name.

    -
    dynamic-complete-history (M-TAB) - -
    +
    dynamic-complete-history (M-TAB)

    Attempt completion on the text before point, comparing the text against lines from the history list for possible completion matches.

    -
    dabbrev-expand () - -
    +
    dabbrev-expand ()

    Attempt menu completion on the text before point, comparing the text against lines from the history list for possible completion matches.

    -
    complete-into-braces (M-{) - -
    +
    complete-into-braces (M-{)

    Perform filename completion and insert the list of possible completions enclosed within braces so the list is available to the shell (see Brace Expansion). @@ -11703,142 +11808,112 @@ enclosed within braces so the list is available to the shell


    -
    +
    +
    +

    8.4.7 Keyboard Macros

    -
    start-kbd-macro (C-x () - -
    +
    start-kbd-macro (C-x ()

    Begin saving the characters typed into the current keyboard macro.

    -
    end-kbd-macro (C-x )) - -
    +
    end-kbd-macro (C-x ))

    Stop saving the characters typed into the current keyboard macro and save the definition.

    -
    call-last-kbd-macro (C-x e) - -
    +
    call-last-kbd-macro (C-x e)

    Re-execute the last keyboard macro defined, by making the characters in the macro appear as if typed at the keyboard.

    -
    print-last-kbd-macro () - -
    -

    Print the last keboard macro defined in a format suitable for the +

    print-last-kbd-macro ()
    +

    Print the last keyboard macro defined in a format suitable for the inputrc file.


    -
    +
    +
    +

    8.4.8 Some Miscellaneous Commands

    -
    re-read-init-file (C-x C-r) - -
    +
    re-read-init-file (C-x C-r)

    Read in the contents of the inputrc file, and incorporate any bindings or variable assignments found there.

    -
    abort (C-g) - -
    +
    abort (C-g)

    Abort the current editing command and ring the terminal’s bell (subject to the setting of bell-style).

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

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

    -
    prefix-meta (ESC) - -
    +
    prefix-meta (ESC)

    Metafy the next character typed. This is for keyboards without a meta key. Typing ‘ESC f’ is equivalent to typing M-f.

    -
    undo (C-_ or C-x C-u) - -
    +
    undo (C-_ or C-x C-u)

    Incremental undo, separately remembered for each line.

    -
    revert-line (M-r) - -
    +
    revert-line (M-r)

    Undo all changes made to this line. This is like executing the undo command enough times to get back to the beginning.

    -
    tilde-expand (M-&) - -
    +
    tilde-expand (M-&)

    Perform tilde expansion on the current word.

    -
    set-mark (C-@) - -
    +
    set-mark (C-@)

    Set the mark to the point. If a numeric argument is supplied, the mark is set to that position.

    -
    exchange-point-and-mark (C-x C-x) - -
    +
    exchange-point-and-mark (C-x C-x)

    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.

    -
    character-search (C-]) - -
    +
    character-search (C-])

    A character is read and point is moved to the next occurrence of that -character. A negative count searches for previous occurrences. +character. A negative argument searches for previous occurrences.

    -
    character-search-backward (M-C-]) - -
    +
    character-search-backward (M-C-])

    A character is read and point is moved to the previous occurrence -of that character. A negative count searches for subsequent +of that character. A negative argument searches for subsequent occurrences.

    -
    skip-csi-sequence () - -
    +
    skip-csi-sequence ()

    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 "\e[", keys producing such sequences will have no effect -unless explicitly bound to a readline command, instead of inserting +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-[.

    -
    insert-comment (M-#) - -
    +
    insert-comment (M-#)

    Without a numeric argument, the value of the comment-begin variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a toggle: if @@ -11853,107 +11928,85 @@ If a numeric argument causes the comment character to be removed, the line will be executed by the shell.

    -
    dump-functions () - -
    +
    dump-functions ()

    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 inputrc file. This command is unbound by default.

    -
    dump-variables () - -
    +
    dump-variables ()

    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 inputrc file. This command is unbound by default.

    -
    dump-macros () - -
    +
    dump-macros ()

    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 inputrc file. This command is unbound by default.

    -
    glob-complete-word (M-g) - -
    +
    spell-correct-word (C-x s)
    +

    Perform spelling correction on the current word, treating it as a directory +or filename, in the same way as the cdspell shell option. +Word boundaries are the same as those used by shell-forward-word. +

    +
    +
    glob-complete-word (M-g)

    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.

    -
    glob-expand-word (C-x *) - -
    +
    glob-expand-word (C-x *)

    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 ‘*’ is appended before pathname expansion.

    -
    glob-list-expansions (C-x g) - -
    +
    glob-list-expansions (C-x g)

    The list of expansions that would have been generated by glob-expand-word is displayed, and the line is redrawn. If a numeric argument is supplied, a ‘*’ is appended before pathname expansion.

    -
    display-shell-version (C-x C-v) - -
    +
    display-shell-version (C-x C-v)

    Display version information about the current instance of Bash.

    -
    shell-expand-line (M-C-e) - -
    +
    shell-expand-line (M-C-e)

    Expand the line as the shell does. This performs alias and history expansion as well as all of the shell word expansions (see Shell Expansions).

    -
    history-expand-line (M-^) - -
    +
    history-expand-line (M-^)

    Perform history expansion on the current line.

    -
    magic-space () - -
    +
    magic-space ()

    Perform history expansion on the current line and insert a space -(see History Interaction). +(see History Expansion).

    -
    alias-expand-line () - -
    +
    alias-expand-line ()

    Perform alias expansion on the current line (see Aliases).

    -
    history-and-alias-expand-line () - -
    +
    history-and-alias-expand-line ()

    Perform history and alias expansion on the current line.

    -
    insert-last-argument (M-. or M-_) - -
    +
    insert-last-argument (M-. or M-_)

    A synonym for yank-last-arg.

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

    Invoke an editor on the current command line, and execute the result as shell commands. Bash attempts to invoke @@ -11966,7 +12019,10 @@ as the editor, in that order.


    -
    +
    +
    +
    + @@ -11990,7 +12046,9 @@ history lines with ‘k’ and subsequent lines with &lsquo so forth.


    -
    +
    +
    + @@ -12021,7 +12079,7 @@ for the command word from any successful expansion

    Once a compspec has been found, it is used to generate the list of matching words. If a compspec is not found, the default Bash completion -described above (see Commands For Completion) is performed. +described above (see Letting Readline Type For You) is performed.

    First, the actions specified by the compspec are used. Only matches which are prefixed by the word being completed are @@ -12152,7 +12210,9 @@ complete -D -F _completion_loader -o bashdefault -o default


    -
    +
    +
    + @@ -12164,9 +12224,8 @@ facilities: one to specify how the arguments to a particular command are to be completed, and two to modify the completion as it is happening.

    -
    compgen
    -
    -
    +
    compgen
    +
    compgen [option] [word]
     
    @@ -12189,9 +12248,8 @@ will be displayed. matches were generated.

    -
    complete
    -
    -
    +
    complete
    +
    complete [-abcdefgjksuv] [-o comp-option] [-DEI] [-A action] [-G globpat]
     [-W wordlist] [-F function] [-C command] [-X filterpat]
     [-P prefix] [-S suffix] name [name …]
    @@ -12232,27 +12290,27 @@ should be quoted to protect them from expansion before the
     

    -
    -o comp-option
    +
    -o comp-option

    The comp-option controls several aspects of the compspec’s behavior beyond the simple generation of completions. comp-option may be one of:

    -
    bashdefault
    +
    bashdefault

    Perform the rest of the default Bash completions if the compspec generates no matches.

    -
    default
    +
    default

    Use Readline’s default filename completion if the compspec generates no matches.

    -
    dirnames
    +
    dirnames

    Perform directory name completion if the compspec generates no matches.

    -
    filenames
    +
    filenames

    Tell Readline that the compspec generates filenames, so it can perform any filename-specific processing (like adding a slash to directory names, quoting special characters, or suppressing trailing spaces). @@ -12260,21 +12318,21 @@ This option is intended to be used with shell functions specified with -F.

    -
    noquote
    +
    noquote

    Tell Readline not to quote the completed words if they are filenames (quoting filenames is the default).

    -
    nosort
    +
    nosort

    Tell Readline not to sort the list of possible completions alphabetically.

    -
    nospace
    +
    nospace

    Tell Readline not to append a space (the default) to words completed at the end of the line.

    -
    plusdirs
    +
    plusdirs

    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. @@ -12283,118 +12341,119 @@ matches are added to the results of the other actions.

    -
    -A action
    +
    -A action

    The action may be one of the following to generate a list of possible completions:

    -
    alias
    +
    alias

    Alias names. May also be specified as -a.

    -
    arrayvar
    +
    arrayvar

    Array variable names.

    -
    binding
    +
    binding

    Readline key binding names (see Bindable Readline Commands).

    -
    builtin
    +
    builtin

    Names of shell builtin commands. May also be specified as -b.

    -
    command
    +
    command

    Command names. May also be specified as -c.

    -
    directory
    +
    directory

    Directory names. May also be specified as -d.

    -
    disabled
    +
    disabled

    Names of disabled shell builtins.

    -
    enabled
    +
    enabled

    Names of enabled shell builtins.

    -
    export
    +
    export

    Names of exported shell variables. May also be specified as -e.

    -
    file
    +
    file

    File names. May also be specified as -f.

    -
    function
    +
    function

    Names of shell functions.

    -
    group
    +
    group

    Group names. May also be specified as -g.

    -
    helptopic
    -

    Help topics as accepted by the help builtin (see Bash Builtins). +

    helptopic
    +

    Help topics as accepted by the help builtin (see Bash Builtin Commands).

    -
    hostname
    +
    hostname

    Hostnames, as taken from the file specified by the HOSTFILE shell variable (see Bash Variables).

    -
    job
    +
    job

    Job names, if job control is active. May also be specified as -j.

    -
    keyword
    +
    keyword

    Shell reserved words. May also be specified as -k.

    -
    running
    +
    running

    Names of running jobs, if job control is active.

    -
    service
    +
    service

    Service names. May also be specified as -s.

    -
    setopt
    +
    setopt

    Valid arguments for the -o option to the set builtin (see The Set Builtin).

    -
    shopt
    +
    shopt

    Shell option names as accepted by the shopt builtin -(see Bash Builtins). +(see Bash Builtin Commands).

    -
    signal
    +
    signal

    Signal names.

    -
    stopped
    +
    stopped

    Names of stopped jobs, if job control is active.

    -
    user
    +
    user

    User names. May also be specified as -u.

    -
    variable
    +
    variable

    Names of all shell variables. May also be specified as -v.

    -
    -C command
    +
    -C command

    command is executed in a subshell environment, and its output is used as the possible completions. +Arguments are passed as with the -F option.

    -
    -F function
    +
    -F function

    The shell function function is executed in the current shell environment. When it is executed, $1 is the name of the command whose arguments are @@ -12405,22 +12464,22 @@ When it finishes, the possible completions are retrieved from the value of the COMPREPLY array variable.

    -
    -G globpat
    +
    -G globpat

    The filename expansion pattern globpat is expanded to generate the possible completions.

    -
    -P prefix
    +
    -P prefix

    prefix is added at the beginning of each possible completion after all other options have been applied.

    -
    -S suffix
    +
    -S suffix

    suffix is appended to each possible completion after all other options have been applied.

    -
    -W wordlist
    +
    -W wordlist

    The wordlist is split using the characters in the IFS special variable as delimiters, and each resultant word is expanded. @@ -12428,7 +12487,7 @@ The possible completions are the members of the resultant list which match the word being completed.

    -
    -X filterpat
    +
    -X filterpat

    filterpat is a pattern as used for filename expansion. It is applied to the list of possible completions generated by the preceding options and arguments, and each completion matching @@ -12445,9 +12504,8 @@ a name for which no specification exists, or an error occurs adding a completion specification.

    -
    compopt
    -
    -
    +
    compopt
    +
    compopt [-o option] [-DEI] [+o option] [name]
     

    Modify completion options for each name according to the @@ -12479,7 +12537,9 @@ specification exists, or an output error occurs.


    -
    +
    +
    + @@ -12581,7 +12641,7 @@ via CDPATH: Readline can’t tell those completions are directori The -o nospace option tells Readline to not append a space character to the directory name, in case we want to append to it. The -o bashdefault option brings in the rest of the "Bash default" -completions – possible completion that Bash adds to the default Readline +completions – possible completions that Bash adds to the default Readline set. These include things like command name completion, variable completion for words beginning with ‘$’ or ‘${’, completions containing pathname expansion patterns (see Filename Expansion), and so on. @@ -12602,9 +12662,12 @@ in the examples/complete subdirectory.
    -
    +
    +
    +
    +

    9 Using History Interactively

    @@ -12615,19 +12678,15 @@ It should be considered a user’s guide. For information on using the GNU History Library in other programs, see the GNU Readline Library Manual.

    - - - - - +
    -
    +
    + @@ -12657,7 +12716,7 @@ the value of the HISTFILESIZE variable. When a shell with history enabled exits, the last $HISTSIZE lines are copied from the history list to the file named by $HISTFILE. -If the histappend shell option is set (see Bash Builtins), +If the histappend shell option is set (see Bash Builtin Commands), the lines are appended to the history file, otherwise the history file is overwritten. If HISTFILE @@ -12680,7 +12739,7 @@ The history 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 (see Commands For History). +history list (see Commands For Manipulating The History).

    The shell allows control over which commands are saved on the history list. The HISTCONTROL and HISTIGNORE @@ -12697,9 +12756,11 @@ The shopt builtin is used to set these options. See The Shopt Builtin, for a description of shopt.


    -
    +
    +
    +

    9.2 Bash History Builtins

    @@ -12708,9 +12769,8 @@ Next:
    +
    fc [-e ename] [-lnr] [first] [last]
     fc -s [pat=rep] [command]
     
    @@ -12751,9 +12811,8 @@ that typing ‘r cc’ runs the last command beginning with and typing ‘r’ re-executes the last command (see Aliases).

    -
    history
    -
    -
    +
    history
    +
    history [n]
     history -c
     history -d offset
    @@ -12774,12 +12833,12 @@ and the history line.
     

    Options, if supplied, have the following meanings:

    -
    -c
    +
    -c

    Clear the history list. This may be combined with the other options to replace the history list completely.

    -
    -d offset
    +
    -d offset

    Delete the history entry at position offset. If offset is positive, it should be specified as it appears when the history is displayed. @@ -12789,55 +12848,63 @@ end of the history, and an index of ‘-1’ refers to the history -d command.

    -
    -d start-end
    -

    Delete the history entries between positions start and end, -inclusive. Positive and negative values for start and end +

    -d start-end
    +

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

    -
    -a
    +
    -a

    Append the new history lines to the history file. These are history lines entered since the beginning of the current Bash session, but not already appended to the history file.

    -
    -n
    +
    -n

    Append the history lines not already read from the history file to the current history list. These are lines appended to the history file since the beginning of the current Bash session.

    -
    -r
    +
    -r

    Read the history file and append its contents to the history list.

    -
    -w
    +
    -w

    Write out the current history list to the history file.

    -
    -p
    +
    -p

    Perform history substitution on the args and display the result on the standard output, without storing the results in the history list.

    -
    -s
    +
    -s

    The args are added to the end of the history list as a single entry.

    -

    When any of the -w, -r, -a, or -n options is -used, if filename -is given, then it is used as the history file. If not, then -the value of the HISTFILE variable is used. +

    If a filename argument is supplied +when any of the -w, -r, -a, or -n options +is used, Bash uses filename as the history file. +If not, then the value of the HISTFILE variable is used. +

    +

    The return value is 0 unless an invalid option is encountered, an +error occurs while reading or writing the history file, an invalid +offset or range is supplied as an argument to -d, or the +history expansion supplied as an argument to -p fails.


    -
    +
    +
    + @@ -12908,19 +12975,17 @@ as explained above (see Bash Variables). The shel the history comment character to mark history timestamps when writing the history file.

    - - - - - +
    -
    +
    +

    9.3.1 Event Designators

    @@ -12932,31 +12997,31 @@ position in the history list.

    -
    !
    +
    !

    Start a history substitution, except when followed by a space, tab, the end of the line, ‘=’ or ‘(’ (when the extglob shell option is enabled using the shopt builtin).

    -
    !n
    +
    !n

    Refer to command line n.

    -
    !-n
    +
    !-n

    Refer to the command n lines back.

    -
    !!
    +
    !!

    Refer to the previous command. This is a synonym for ‘!-1’.

    -
    !string
    +
    !string

    Refer to the most recent command preceding the current position in the history list starting with string.

    -
    !?string[?]
    +
    !?string[?]

    Refer to the most recent command preceding the current position in the history list containing string. @@ -12967,22 +13032,24 @@ If string is missing, the string from the most recent search is used; it is an error if there is no previous search string.

    -
    ^string1^string2^
    +
    ^string1^string2^

    Quick Substitution. Repeat the last command, replacing string1 with string2. Equivalent to !!:s^string1^string2^.

    -
    !#
    +
    !#

    The entire command line typed so far.


    -
    +
    +
    +

    9.3.2 Word Designators

    @@ -12996,17 +13063,17 @@ inserted into the current line separated by single spaces.

    For example,

    -
    !!
    +
    !!

    designates the preceding command. When you type this, the preceding command is repeated in toto.

    -
    !!:$
    +
    !!:$

    designates the last argument of the preceding command. This may be shortened to !$.

    -
    !fi:2
    +
    !fi:2

    designates the second argument of the most recent command starting with the letters fi.

    @@ -13015,42 +13082,42 @@ the letters fi.

    Here are the word designators:

    -
    0 (zero)
    +
    0 (zero)

    The 0th word. For many applications, this is the command word.

    -
    n
    +
    n

    The nth word.

    -
    ^
    +
    ^

    The first argument; that is, word 1.

    -
    $
    +
    $

    The last argument.

    -
    %
    +
    %

    The first word matched by the most recent ‘?string?’ search, if the search string begins with a character that is part of a word.

    -
    x-y
    +
    x-y

    A range of words; ‘-y’ abbreviates ‘0-y’.

    -
    *
    +
    *

    All of the words, except the 0th. 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.

    -
    x*
    +
    x*

    Abbreviates ‘x-$

    -
    x-
    +
    x-

    Abbreviates ‘x-$’ like ‘x*’, but omits the last word. If ‘x’ is missing, it defaults to 0.

    @@ -13061,9 +13128,11 @@ If ‘x’ is missing, it defaults to 0. previous command is used as the event.


    -
    +
    +
    +

    9.3.3 Modifiers

    @@ -13072,39 +13141,39 @@ of the following modifiers, each preceded by a ‘:’. These modify, or edit, the word or words selected from the history event.

    -
    h
    +
    h

    Remove a trailing pathname component, leaving only the head.

    -
    t
    +
    t

    Remove all leading pathname components, leaving the tail.

    -
    r
    +
    r

    Remove a trailing suffix of the form ‘.suffix’, leaving the basename.

    -
    e
    +
    e

    Remove all but the trailing suffix.

    -
    p
    +
    p

    Print the new command but do not execute it.

    -
    q
    +
    q

    Quote the substituted words, escaping further substitutions.

    -
    x
    +
    x

    Quote the substituted words as with ‘q’, but break into words at spaces, tabs, and newlines. The ‘q’ and ‘x’ modifiers are mutually exclusive; the last one supplied is used.

    -
    s/old/new/
    +
    s/old/new/

    Substitute new for the first occurrence of old in the event line. Any character may be used as the delimiter in place of ‘/’. @@ -13117,23 +13186,23 @@ substituted, or, if no previous history substitutions took place, the last string in a !?string[?] search. -If new is is null, each matching old is deleted. +If new is null, each matching old is deleted. The final delimiter is optional if it is the last character on the input line.

    -
    &
    +
    &

    Repeat the previous substitution.

    -
    g
    -
    a
    +
    g
    +
    a

    Cause changes to be applied over the entire event line. Used in conjunction with ‘s’, as in gs/old/new/, or with ‘&’.

    -
    G
    +
    G

    Apply the following ‘s’ or ‘&’ modifier once to each word in the event.

    @@ -13141,9 +13210,13 @@ in the event.

    -
    +
    +
    +
    +
    +

    10 Installing Bash

    @@ -13154,32 +13227,20 @@ non-Unix systems such as BeOS and Interix. Other independent ports exist for MS-DOS, OS/2, and Windows platforms.

    - - - - - - - - - - +
    -
    +
    + @@ -13210,7 +13271,14 @@ reporting script.
  • Optionally, type ‘make tests’ to run the Bash test suite.
  • Type ‘make install’ to install bash and bashbug. -This will also install the manual pages and Info file. +This will also install the manual pages and Info file, message translation +files, some supplemental documentation, a number of example loadable +builtin commands, and a set of header files for developing loadable +builtins. +You may need additional privileges to install bash to your +desired destination, so ‘sudo make install’ might be required. +More information about controlling the locations where bash and +other files are installed is below (see Installation Names).
  • @@ -13218,7 +13286,7 @@ This will also install the manual pages and Info file. values for various system-dependent variables used during compilation. It uses those values to create a Makefile in each directory of the package (the top directory, the -builtins, doc, and support directories, +builtins, doc, po, and support directories, each directory under lib, and several others). It also creates a config.h file containing system-dependent definitions. Finally, it creates a shell script named config.status that you @@ -13262,10 +13330,10 @@ to do them, and mail diffs or instructions to considered for the next release.

    The file configure.ac is used to create configure -by a program called Autoconf. You only need -configure.ac if you want to change it or regenerate -configure using a newer version of Autoconf. If -you do this, make sure you are using Autoconf version 2.50 or +by a program called Autoconf. +You only need configure.ac if you want to change it or regenerate +configure using a newer version of Autoconf. +If you do this, make sure you are using Autoconf version 2.69 or newer.

    You can remove the program binaries and object files from the @@ -13274,7 +13342,9 @@ files that configure created (so you can compile Bash for a different kind of computer), type ‘make distclean’.


    -
    +
    +
    + @@ -13300,7 +13370,9 @@ can do that on the command line like this: is available.


    -
    +
    +
    + @@ -13319,7 +13391,7 @@ supply the --srcdir=PATH argument to tell configure wh source files are. configure automatically checks for the source code in the directory that configure is in and in ‘..’.

    -

    If you have to use a make that does not supports the VPATH +

    If you have to use a make that does not support the VPATH variable, you can compile Bash for one architecture at a time in the source code directory. After you have installed Bash for one architecture, use ‘make distclean’ before @@ -13340,35 +13412,69 @@ Bash for at least one architecture before you can create build directories for other architectures.


    -
    +
    +
    +

    10.4 Installation Names

    By default, ‘make install’ will install into -/usr/local/bin, /usr/local/man, etc. You can -specify an installation prefix other than /usr/local by +/usr/local/bin, /usr/local/man, etc.; +that is, the installation prefix defaults to /usr/local. +You can specify an installation prefix other than /usr/local by giving configure the option --prefix=PATH, -or by specifying a value for the DESTDIRmake’ -variable when running ‘make install’. +or by specifying a value for the prefixmake’ +variable when running ‘make install’ +(e.g., ‘make install prefix=PATH’). +The prefix variable provides a default for exec_prefix and +other variables used when installing bash.

    You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give configure the option --exec-prefix=PATH, ‘make install’ will use PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. +Documentation and other data files will still use the regular prefix. +

    +

    If you would like to change the installation locations for a single run, +you can specify these variables as arguments to make: +‘make install exec_prefix=/’ will install bash and +bashbug into /bin instead of the default /usr/local/bin. +

    +

    If you want to see the files bash will install and where it will install +them without changing anything on your system, specify the variable +DESTDIR as an argument to make. Its value should be the +absolute directory path you’d like to use as the root of your sample +installation tree. For example, +

    +
    +
    mkdir /fs1/bash-install
    +make install DESTDIR=/fs1/bash-install
    +
    + +

    will install bash into /fs1/bash-install/usr/local/bin/bash, +the documentation into directories within +/fs1/bash-install/usr/local/share, the example loadable builtins into +/fs1/bash-install/usr/local/lib/bash, and so on. +You can use the usual exec_prefix and prefix variables to alter +the directory paths beneath the value of DESTDIR. +

    +

    The GNU Makefile standards provide a more complete description of these +variables and their effects.


    -
    +
    +
    +

    10.5 Specifying the System Type

    There may be some features configure can not figure out -automatically, but need to determine by the type of host Bash +automatically, but needs to determine by the type of host Bash will run on. Usually configure can figure that out, but if it prints a message saying it can not guess the host type, give it the --host=TYPE option. ‘TYPE’ can @@ -13380,7 +13486,9 @@ or a canonical name with three fields: ‘CPU-COMPANY-SYSTEM&rs values of each field.


    -
    +
    +
    + @@ -13397,7 +13505,9 @@ script. A warning: the Bash configure looks for a site script, but not all configure scripts do.


    -
    +
    +
    + @@ -13407,29 +13517,29 @@ Next:
    -
    --cache-file=file
    +
    --cache-file=file

    Use and save the results of the tests in file instead of ./config.cache. Set file to /dev/null to disable caching, for debugging configure.

    -
    --help
    +
    --help

    Print a summary of the options to configure, and exit.

    -
    --quiet
    -
    --silent
    -
    -q
    +
    --quiet
    +
    --silent
    +
    -q

    Do not print messages saying which checks are being made.

    -
    --srcdir=dir
    +
    --srcdir=dir

    Look for the Bash source code in directory dir. Usually configure can determine that directory automatically.

    -
    --version
    +
    --version

    Print the version of Autoconf used to generate the configure script, and exit.

    @@ -13439,7 +13549,9 @@ script, and exit. options. ‘configure --help’ prints the complete list.


    -
    +
    +
    + @@ -13457,11 +13569,11 @@ that is enabled by default, use --disable-feature. --with- options that the Bash configure recognizes.

    -
    --with-afs
    +
    --with-afs

    Define if you are using the Andrew File System from Transarc.

    -
    --with-bash-malloc
    +
    --with-bash-malloc

    Use the Bash version of malloc in the directory lib/malloc. This is not the same malloc that appears in GNU libc, but an older version @@ -13473,17 +13585,17 @@ which this should be turned off, and configure disables this option automatically for a number of systems.

    -
    --with-curses
    +
    --with-curses

    Use the curses library instead of the termcap library. This should be supplied if your system has an inadequate or incomplete termcap database.

    -
    --with-gnu-malloc
    +
    --with-gnu-malloc

    A synonym for --with-bash-malloc.

    -
    --with-installed-readline[=PREFIX]
    +
    --with-installed-readline[=PREFIX]

    Define this to make Bash link with a locally-installed version of Readline rather than the version in lib/readline. This works only with Readline 5.0 and later versions. If PREFIX is yes or not @@ -13500,255 +13612,276 @@ the installed version of Readline in subdirectories of that directory PREFIX/lib).

    -
    --with-purify
    -

    Define this to use the Purify memory allocation checker from Rational -Software. +

    --with-libintl-prefix[=PREFIX]
    +

    Define this to make Bash link with a locally-installed version of the +libintl library instead of the version in lib/intl. +

    +
    +
    --with-libiconv-prefix[=PREFIX]
    +

    Define this to make Bash look for libiconv in PREFIX instead of the +standard system locations. There is no version included with Bash.

    -
    --enable-minimal-config
    +
    --enable-minimal-config

    This produces a shell with minimal features, close to the historical Bourne shell.

    There are several --enable- options that alter how Bash is -compiled and linked, rather than changing run-time features. +compiled, linked, and installed, rather than changing run-time features.

    -
    --enable-largefile
    +
    --enable-largefile

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

    -
    --enable-profiling
    +
    --enable-profiling

    This builds a Bash binary that produces profiling information to be processed by gprof each time it is executed.

    -
    --enable-static-link
    +
    --enable-separate-helpfiles
    +

    Use external files for the documentation displayed by the help builtin +instead of storing the text internally. +

    +
    +
    --enable-static-link

    This causes Bash to be linked statically, if gcc is being used. This could be used to build a version to use as root’s shell. -

    +

    +

    The ‘minimal-config’ option can be used to disable all of the following options, but it is processed first, so individual options may be enabled using ‘enable-feature’.

    -

    All of the following options except for ‘disabled-builtins’, -‘direxpand-default’, and +

    All of the following options except for +‘alt-array-implementation’, +‘disabled-builtins’, +‘direxpand-default’, +‘strict-posix-default’, +and ‘xpg-echo-default’ are enabled by default, unless the operating system does not provide the necessary support.

    -
    --enable-alias
    +
    --enable-alias

    Allow alias expansion and include the alias and unalias builtins (see Aliases).

    -
    --enable-arith-for-command
    +
    --enable-alt-array-implementation
    +

    This builds bash using an alternate implementation of arrays +(see Arrays) that provides faster access at the expense of using +more memory (sometimes many times more, depending on how sparse an array is). +

    +
    +
    --enable-arith-for-command

    Include support for the alternate form of the for command that behaves like the C language for statement (see Looping Constructs).

    -
    --enable-array-variables
    +
    --enable-array-variables

    Include support for one-dimensional array shell variables (see Arrays).

    -
    --enable-bang-history
    +
    --enable-bang-history

    Include support for csh-like history substitution -(see History Interaction). +(see History Expansion).

    -
    --enable-brace-expansion
    +
    --enable-brace-expansion

    Include csh-like brace expansion ( b{a,b}cbac bbc ). See Brace Expansion, for a complete description.

    -
    --enable-casemod-attributes
    +
    --enable-casemod-attributes

    Include support for case-modifying attributes in the declare builtin -and assignment statements. Variables with the uppercase attribute, +and assignment statements. Variables with the uppercase attribute, for example, will have their values converted to uppercase upon assignment.

    -
    --enable-casemod-expansion
    +
    --enable-casemod-expansion

    Include support for case-modifying word expansions.

    -
    --enable-command-timing
    +
    --enable-command-timing

    Include support for recognizing time as a reserved word and for displaying timing statistics for the pipeline following time (see Pipelines). This allows pipelines as well as shell builtins and functions to be timed.

    -
    --enable-cond-command
    +
    --enable-cond-command

    Include support for the [[ conditional command. (see Conditional Constructs).

    -
    --enable-cond-regexp
    +
    --enable-cond-regexp

    Include support for matching POSIX regular expressions using the ‘=~’ binary operator in the [[ conditional command. (see Conditional Constructs).

    -
    --enable-coprocesses
    +
    --enable-coprocesses

    Include support for coprocesses and the coproc reserved word (see Pipelines).

    -
    --enable-debugger
    +
    --enable-debugger

    Include support for the bash debugger (distributed separately).

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

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

    -
    --enable-direxpand-default
    +
    --enable-direxpand-default

    Cause the direxpand shell option (see The Shopt Builtin) to be enabled by default when the shell starts. It is normally disabled by default.

    -
    --enable-directory-stack
    +
    --enable-directory-stack

    Include support for a csh-like directory stack and the pushd, popd, and dirs builtins (see The Directory Stack).

    -
    --enable-disabled-builtins
    +
    --enable-disabled-builtins

    Allow builtin commands to be invoked via ‘builtin xxx’ even after xxx has been disabled using ‘enable -n xxx’. -See Bash Builtins, for details of the builtin and +See Bash Builtin Commands, for details of the builtin and enable builtin commands.

    -
    --enable-dparen-arithmetic
    +
    --enable-dparen-arithmetic

    Include support for the ((…)) command (see Conditional Constructs).

    -
    --enable-extended-glob
    +
    --enable-extended-glob

    Include support for the extended pattern matching features described above under Pattern Matching.

    -
    --enable-extended-glob-default
    -

    Set the default value of the extglob shell option described +

    --enable-extended-glob-default
    +

    Set the default value of the extglob shell option described above under The Shopt Builtin to be enabled.

    -
    --enable-function-import
    +
    --enable-function-import

    Include support for importing function definitions exported by another instance of the shell from the environment. This option is enabled by default.

    -
    --enable-glob-asciirange-default
    -

    Set the default value of the globasciiranges shell option described +

    --enable-glob-asciirange-default
    +

    Set the default value of the globasciiranges shell option described above under The Shopt Builtin to be enabled. This controls the behavior of character ranges when used in pattern matching bracket expressions.

    -
    --enable-help-builtin
    +
    --enable-help-builtin

    Include the help builtin, which displays help on shell builtins and -variables (see Bash Builtins). +variables (see Bash Builtin Commands).

    -
    --enable-history
    +
    --enable-history

    Include command history and the fc and history builtin commands (see Bash History Facilities).

    -
    --enable-job-control
    +
    --enable-job-control

    This enables the job control features (see Job Control), if the operating system supports them.

    -
    --enable-multibyte
    +
    --enable-multibyte

    This enables support for multibyte characters if the operating system provides the necessary support.

    -
    --enable-net-redirections
    +
    --enable-net-redirections

    This enables the special handling of filenames of the form /dev/tcp/host/port and /dev/udp/host/port when used in redirections (see Redirections).

    -
    --enable-process-substitution
    +
    --enable-process-substitution

    This enables process substitution (see Process Substitution) if the operating system provides the necessary support.

    -
    --enable-progcomp
    +
    --enable-progcomp

    Enable the programmable completion facilities (see Programmable Completion). If Readline is not enabled, this option has no effect.

    -
    --enable-prompt-string-decoding
    +
    --enable-prompt-string-decoding

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

    -
    --enable-readline
    +
    --enable-readline

    Include support for command-line editing and history with the Bash version of the Readline library (see Command Line Editing).

    -
    --enable-restricted
    +
    --enable-restricted

    Include support for a restricted shell. If this is enabled, Bash, when called as rbash, enters a restricted mode. See The Restricted Shell, for a description of restricted mode.

    -
    --enable-select
    +
    --enable-select

    Include the select compound command, which allows the generation of simple menus (see Conditional Constructs).

    -
    --enable-separate-helpfiles
    -

    Use external files for the documentation displayed by the help builtin -instead of storing the text internally. -

    -
    -
    --enable-single-help-strings
    +
    --enable-single-help-strings

    Store the text displayed by the help builtin as a single string for each help topic. This aids in translating the text to different languages. You may need to disable this if your compiler cannot handle very long string literals.

    -
    --enable-strict-posix-default
    +
    --enable-strict-posix-default

    Make Bash POSIX-conformant by default (see Bash POSIX Mode).

    -
    --enable-usg-echo-default
    +
    --enable-translatable-strings
    +

    Enable support for $"string" translatable strings +(see Locale-Specific Translation). +

    +
    +
    --enable-usg-echo-default

    A synonym for --enable-xpg-echo-default.

    -
    --enable-xpg-echo-default
    +
    --enable-xpg-echo-default

    Make the echo builtin expand backslash-escaped characters by default, without requiring the -e option. This sets the default value of the xpg_echo shell option to on, which makes the Bash echo behave more like the version specified in the Single Unix Specification, version 3. -See Bash Builtins, for a description of the escape sequences that +See Bash Builtin Commands, for a description of the escape sequences that echo recognizes.

    @@ -13762,9 +13895,12 @@ Read the comments associated with each definition for more information about its effect.


    -
    +
    +
    +
    +

    Appendix A Reporting Bugs

    @@ -13773,7 +13909,8 @@ But first, you should make sure that it really is a bug, and that it appears in the latest version of Bash. The latest version of Bash is always available for FTP from -ftp://ftp.gnu.org/pub/gnu/bash/. +ftp://ftp.gnu.org/pub/gnu/bash/ and from +http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz.

    Once you have determined that a bug actually exists, use the bashbug command to submit a bug report. @@ -13799,9 +13936,11 @@ the template it provides for filing a bug report. bug-bash@gnu.org.


    -
    +
    +
    +

    Appendix B Major Differences From The Bourne Shell

    @@ -13836,7 +13975,7 @@ The Bash history list maintains timestamp information and uses the value of the HISTTIMEFORMAT variable to display it.
  • Bash implements csh-like history expansion -(see History Interaction). +(see History Expansion).
  • Bash has one-dimensional array variables (see Arrays), and the appropriate variable expansions and assignment syntax to use them. @@ -13851,7 +13990,7 @@ is supported (see ANSI-C Quoting). locale-specific translation of the characters between the double quotes. The -D, --dump-strings, and --dump-po-strings invocation options list the translatable strings found in a script -(see Locale Translation). +(see Locale-Specific Translation).
  • Bash implements the ! keyword to negate the return value of a pipeline (see Pipelines). @@ -13907,15 +14046,15 @@ which expands to the substring of var’s value of length (see Shell Parameter Expansion).
  • The expansion -${var/[/]pattern[/replacement]}, +${var/[/]pattern[/replacement]}, which matches pattern and replaces it with replacement in -the value of var, is available (see Shell Parameter Expansion). +the value of var, is available (see Shell Parameter Expansion).
  • The expansion ${!prefix*} expansion, which expands to the names of all shell variables whose names begin with prefix, is available (see Shell Parameter Expansion). -
  • Bash has indirect variable expansion using ${!word} +
  • Bash has indirect variable expansion using ${!word} (see Shell Parameter Expansion).
  • Bash can expand positional parameters beyond $9 using @@ -13944,8 +14083,8 @@ to negate the set of characters between the brackets. The Bourne shell uses only ‘!’.
  • Bash implements the full set of POSIX filename expansion operators, -including character classes, equivalence classes, and -collating symbols (see Filename Expansion). +including character classes, equivalence classes, and +collating symbols (see Filename Expansion).
  • Bash implements extended pattern matching features when the extglob shell option is enabled (see Pattern Matching). @@ -13955,7 +14094,7 @@ shell option is enabled (see Pattern Matching).
  • Bash functions are permitted to have local variables using the local builtin, and thus useful recursive functions may be written -(see Bash Builtins). +(see Bash Builtin Commands).
  • Variable assignments preceding commands affect only that command, even builtins and functions (see Environment). @@ -13993,13 +14132,13 @@ physical modes.
  • Bash allows a function to override a builtin with the same name, and provides access to that builtin’s functionality within the function via the -builtin and command builtins (see Bash Builtins). +builtin and command builtins (see Bash Builtin Commands).
  • The command builtin allows selective disabling of functions -when command lookup is performed (see Bash Builtins). +when command lookup is performed (see Bash Builtin Commands).
  • Individual builtins may be enabled or disabled using the enable -builtin (see Bash Builtins). +builtin (see Bash Builtin Commands).
  • The Bash exec builtin takes additional options that allow users to control the contents of the environment passed to the executed @@ -14022,12 +14161,12 @@ searching the $PATH, using ‘hash -p’ (see Bourne Shell Builtins).
  • Bash includes a help builtin for quick reference to shell -facilities (see Bash Builtins). +facilities (see Bash Builtin Commands).
  • The printf builtin is available to display formatted output -(see Bash Builtins). +(see Bash Builtin Commands). -
  • The Bash read builtin (see Bash Builtins) +
  • The Bash read builtin (see Bash Builtin Commands) will read a line ending in ‘\’ with the -r option, and will use the REPLY variable as a default if no non-option arguments are supplied. @@ -14063,7 +14202,7 @@ which specifies the behavior based on the number of arguments.
  • Bash includes the caller builtin, which displays the context of any active subroutine call (a shell function or a script executed with -the . or source builtins). This supports the bash +the . or source builtins). This supports the Bash debugger.
  • The trap builtin (see Bourne Shell Builtins) allows a @@ -14088,7 +14227,7 @@ The ERR trap is not inherited by shell functions unless the

    The trap builtin (see Bourne Shell Builtins) allows a RETURN pseudo-signal specification, similar to EXIT and DEBUG. -Commands specified with an RETURN trap are executed before +Commands specified with a RETURN trap are executed before execution resumes after a shell function or a shell script executed with . or source returns. The RETURN trap is not inherited by shell functions unless the @@ -14096,7 +14235,7 @@ function has been given the trace attribute or the functrace option has been enabled using the shopt builtin.

  • The Bash type builtin is more extensive and gives more information -about the names it finds (see Bash Builtins). +about the names it finds (see Bash Builtin Commands).
  • The Bash umask builtin permits a -p option to cause the output to be displayed in the form of a umask command @@ -14137,7 +14276,11 @@ shell scripts.

    More features unique to Bash may be found in Bash Features.

    -

    B.1 Implementation Differences From The SVR4.2 Shell

    + +
    +

    B.1 Implementation Differences From The SVR4.2 Shell

    Since Bash is a completely new implementation, it does not suffer from many of the limitations of the SVR4.2 shell. For instance: @@ -14185,9 +14328,12 @@ only for certain failures, as enumerated in the POSIX standard.


  • -
    +
    +
    +
    +

    Appendix C GNU Free Documentation License

    @@ -14661,31 +14807,27 @@ to permit their use in free software.
    -
    +
    +
    +

    Appendix D Indexes

    - - - - - - - +
    -
    +
    +

    D.1 Index of Shell Builtin Commands

    Jump to:   . @@ -14883,9 +15025,11 @@ Next:

    -
    +
    +
    +

    D.2 Index of Shell Reserved Words

    Jump to:   ! @@ -15003,9 +15147,11 @@ Next: , Pre

    -
    +
    +
    +

    D.3 Parameter and Variable Index

    + + @@ -15165,6 +15313,7 @@ Next: , Pre + @@ -15213,11 +15362,12 @@ Next: , Pre - + + - + @@ -15261,6 +15411,7 @@ Next: , Pre + @@ -15279,8 +15430,8 @@ Next: , Pre - - + + @@ -15354,9 +15505,11 @@ Next: , Pre
    Jump to:   ! @@ -15106,6 +15252,8 @@ Next: , Pre
    _: Bash Variables

    A
    active-region-end-color: Readline Init File Syntax
    active-region-start-color: Readline Init File Syntax
    auto_resume: Job Control Variables

    B
    editing-mode: Readline Init File Syntax
    EMACS: Bash Variables
    emacs-mode-string: Readline Init File Syntax
    enable-active-region: Readline Init File Syntax
    enable-bracketed-paste: Readline Init File Syntax
    enable-keypad: Readline Init File Syntax
    ENV: Bash Variables
    keymap: Readline Init File Syntax

    L
    LANG: Bash Variables
    LANG: Creating Internationalized Scripts
    LANG: Bash Variables
    LC_ALL: Bash Variables
    LC_COLLATE: Bash Variables
    LC_CTYPE: Bash Variables
    LC_MESSAGES: Locale Translation
    LC_MESSAGES: Creating Internationalized Scripts
    LC_MESSAGES: Bash Variables
    LC_NUMERIC: Bash Variables
    LC_TIME: Bash Variables

    R
    RANDOM: Bash Variables
    READLINE_ARGUMENT: Bash Variables
    READLINE_LINE: Bash Variables
    READLINE_MARK: Bash Variables
    READLINE_POINT: Bash Variables
    SRANDOM: Bash Variables

    T
    TEXTDOMAIN: Locale Translation
    TEXTDOMAINDIR: Locale Translation
    TEXTDOMAIN: Creating Internationalized Scripts
    TEXTDOMAINDIR: Creating Internationalized Scripts
    TIMEFORMAT: Bash Variables
    TMOUT: Bash Variables
    TMPDIR: Bash Variables

    -
    +
    + +
    diff --git a/doc/bashref.info b/doc/bashref.info index 20ebf243c..25372f9b5 100644 --- a/doc/bashref.info +++ b/doc/bashref.info @@ -1,13 +1,13 @@ -This is bashref.info, produced by makeinfo version 6.7 from +This is bashref.info, produced by makeinfo version 6.8 from bashref.texi. This text is a brief description of the features that are present in the -Bash shell (version 5.1, 29 October 2020). +Bash shell (version 5.2, 19 September 2022). - This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash -Reference Manual', for 'Bash', Version 5.1. + This is Edition 5.2, last updated 19 September 2022, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.2. - Copyright (C) 1988-2020 Free Software Foundation, Inc. + Copyright (C) 1988-2022 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -27,11 +27,11 @@ Bash Features ************* This text is a brief description of the features that are present in the -Bash shell (version 5.1, 29 October 2020). The Bash home page is +Bash shell (version 5.2, 19 September 2022). The Bash home page is . - This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash -Reference Manual', for 'Bash', Version 5.1. + This is Edition 5.2, last updated 19 September 2022, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.2. Bash contains features that appear in other popular shells, and some features that only appear in Bash. Some of the shells that Bash has @@ -359,11 +359,11 @@ as such, and to prevent parameter expansion. Each of the shell metacharacters (*note Definitions::) has special meaning to the shell and must be quoted if it is to represent itself. When the command history expansion facilities are being used (*note -History Interaction::), the HISTORY EXPANSION character, usually '!', +History Interaction::), the "history expansion" character, usually '!', must be quoted to prevent history expansion. *Note Bash History Facilities::, for more details concerning history expansion. - There are three quoting mechanisms: the ESCAPE CHARACTER, single + There are three quoting mechanisms: the "escape character", single quotes, and double quotes.  @@ -419,10 +419,11 @@ File: bashref.info, Node: ANSI-C Quoting, Next: Locale Translation, Prev: Dou 3.1.2.4 ANSI-C Quoting ...................... -Words of the form '$'STRING'' are treated specially. The word expands -to STRING, with backslash-escaped characters replaced as specified by -the ANSI C standard. Backslash escape sequences, if present, are -decoded as follows: +Character sequences of the form $'STRING' are treated as a special kind +of single quotes. The sequence expands to STRING, with +backslash-escaped characters in STRING replaced as specified by the ANSI +C standard. Backslash escape sequences, if present, are decoded as +follows: '\a' alert (bell) @@ -473,22 +474,114 @@ File: bashref.info, Node: Locale Translation, Prev: ANSI-C Quoting, Up: Quoti 3.1.2.5 Locale-Specific Translation ................................... -A double-quoted string preceded by a dollar sign ('$') will cause the -string to be translated according to the current locale. The GETTEXT -infrastructure performs the message catalog lookup and translation, -using the 'LC_MESSAGES' and 'TEXTDOMAIN' shell variables, as explained -below. See the gettext documentation for additional details. If the -current locale is 'C' or 'POSIX', or if there are no translations -available, the dollar sign is ignored. If the string is translated and -replaced, the replacement is double-quoted. +* Menu: - Some systems use the message catalog selected by the 'LC_MESSAGES' -shell variable. Others create the name of the message catalog from the -value of the 'TEXTDOMAIN' shell variable, possibly adding a suffix of -'.mo'. If you use the 'TEXTDOMAIN' variable, you may need to set the -'TEXTDOMAINDIR' variable to the location of the message catalog files. -Still others use both variables in this fashion: -'TEXTDOMAINDIR'/'LC_MESSAGES'/LC_MESSAGES/'TEXTDOMAIN'.mo. +* Creating Internationalized Scripts:: How to use translations and different + languages in your scripts. + +Prefixing a double-quoted string with a dollar sign ('$'), such as +$"hello, world", will cause the string to be translated according to the +current locale. The 'gettext' infrastructure performs the lookup and +translation, using the 'LC_MESSAGES', 'TEXTDOMAINDIR', and 'TEXTDOMAIN' +shell variables, as explained below. See the gettext documentation for +additional details not covered here. If the current locale is 'C' or +'POSIX', if there are no translations available, of if the string is not +translated, the dollar sign is ignored. Since this is a form of double +quoting, the string remains double-quoted by default, whether or not it +is translated and replaced. If the 'noexpand_translation' option is +enabled using the 'shopt' builtin (*note The Shopt Builtin::), +translated strings are single-quoted instead of double-quoted. + + The rest of this section is a brief overview of how you use gettext +to create translations for strings in a shell script named SCRIPTNAME. +There are more details in the gettext documentation. + + +File: bashref.info, Node: Creating Internationalized Scripts, Up: Locale Translation + +Once you've marked the strings in your script that you want to translate +using $"...", you create a gettext "template" file using the command + + bash --dump-po-strings SCRIPTNAME > DOMAIN.pot + +The DOMAIN is your "message domain". It's just an arbitrary string +that's used to identify the files gettext needs, like a package or +script name. It needs to be unique among all the message domains on +systems where you install the translations, so gettext knows which +translations correspond to your script. You'll use the template file to +create translations for each target language. The template file +conventionally has the suffix '.pot'. + + You copy this template file to a separate file for each target +language you want to support (called "PO" files, which use the suffix +'.po'). PO files use various naming conventions, but when you are +working to translate a template file into a particular language, you +first copy the template file to a file whose name is the language you +want to target, with the '.po' suffix. For instance, the Spanish +translations of your strings would be in a file named 'es.po', and to +get started using a message domain named "example," you would run + + cp example.pot es.po + +Ultimately, PO files are often named DOMAIN.po and installed in +directories that contain multiple translation files for a particular +language. + + Whichever naming convention you choose, you will need to translate +the strings in the PO files into the appropriate languages. This has to +be done manually. + + When you have the translations and PO files complete, you'll use the +gettext tools to produce what are called "MO" files, which are compiled +versions of the PO files the gettext tools use to look up translations +efficiently. MO files are also called "message catalog" files. You use +the 'msgfmt' program to do this. For instance, if you had a file with +Spanish translations, you could run + + msgfmt -o es.mo es.po + +to produce the corresponding MO file. + + Once you have the MO files, you decide where to install them and use +the 'TEXTDOMAINDIR' shell variable to tell the gettext tools where they +are. Make sure to use the same message domain to name the MO files as +you did for the PO files when you install them. + + Your users will use the 'LANG' or 'LC_MESSAGES' shell variables to +select the desired language. + + You set the 'TEXTDOMAIN' variable to the script's message domain. As +above, you use the message domain to name your translation files. + + You, or possibly your users, set the 'TEXTDOMAINDIR' variable to the +name of a directory where the message catalog files are stored. If you +install the message files into the system's standard message catalog +directory, you don't need to worry about this variable. + + The directory where the message catalog files are stored varies +between systems. Some use the message catalog selected by the +'LC_MESSAGES' shell variable. Others create the name of the message +catalog from the value of the 'TEXTDOMAIN' shell variable, possibly +adding the '.mo' suffix. If you use the 'TEXTDOMAIN' variable, you may +need to set the 'TEXTDOMAINDIR' variable to the location of the message +catalog files, as above. It's common to use both variables in this +fashion: '$TEXTDOMAINDIR'/'$LC_MESSAGES'/LC_MESSAGES/'$TEXTDOMAIN'.mo. + + If you used that last convention, and you wanted to store the message +catalog files with Spanish (es) and Esperanto (eo) translations into a +local directory you use for custom translation files, you could run + + TEXTDOMAIN=example + TEXTDOMAINDIR=/usr/local/share/locale + + cp es.mo ${TEXTDOMAINDIR}/es/LC_MESSAGES/${TEXTDOMAIN}.mo + cp eo.mo ${TEXTDOMAINDIR}/eo/LC_MESSAGES/${TEXTDOMAIN}.mo + + When all of this is done, and the message catalog files containing +the compiled translations are installed in the correct location, your +users will be able to see translated strings in any of the supported +languages by setting the 'LANG' or 'LC_MESSAGES' environment variables +before running your script.  File: bashref.info, Node: Comments, Prev: Quoting, Up: Shell Syntax @@ -582,13 +675,13 @@ the control operators '|' or '|&'. The output of each command in the pipeline is connected via a pipe to the input of the next command. That is, each command reads the previous command's output. This connection is performed before any redirections -specified by the command. +specified by COMMAND1. If '|&' is used, COMMAND1's standard error, in addition to its standard output, is connected to COMMAND2's standard input through the pipe; it is shorthand for '2>&1 |'. This implicit redirection of the standard error to the standard output is performed after any -redirections specified by the command. +redirections specified by COMMAND1. The reserved word 'time' causes timing statistics to be printed for the pipeline once it finishes. The statistics currently consist of @@ -612,11 +705,12 @@ information. If the pipeline is not executed asynchronously (*note Lists::), the shell waits for all commands in the pipeline to complete. - Each command in a pipeline is executed in its own subshell, which is -a separate process (*note Command Execution Environment::). If the -'lastpipe' option is enabled using the 'shopt' builtin (*note The Shopt -Builtin::), the last element of a pipeline may be run by the shell -process. + Each command in a multi-command pipeline, where pipes are created, is +executed in its own "subshell", which is a separate process (*note +Command Execution Environment::). If the 'lastpipe' option is enabled +using the 'shopt' builtin (*note The Shopt Builtin::), the last element +of a pipeline may be run by the shell process when job control is not +active. The exit status of a pipeline is the exit status of the last command in the pipeline, unless the 'pipefail' option is enabled (*note The Set @@ -645,8 +739,8 @@ commands, equivalent to a semicolon. If a command is terminated by the control operator '&', the shell executes the command asynchronously in a subshell. This is known as -executing the command in the BACKGROUND, and these are referred to as -ASYNCHRONOUS commands. The shell does not wait for the command to +executing the command in the "background", and these are referred to as +"asynchronous" commands. The shell does not wait for the command to finish, and the return status is 0 (true). When job control is not active (*note Job Control::), the standard input for asynchronous commands, in the absence of any explicit redirections, is redirected @@ -814,7 +908,8 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre substitution, arithmetic expansion, and quote removal (*note Shell Parameter Expansion::) before matching is attempted. Each PATTERN undergoes tilde expansion, parameter expansion, command - substitution, and arithmetic expansion. + substitution, arithmetic expansion, process substitution, and quote + removal. There may be an arbitrary number of 'case' clauses, each terminated by a ';;', ';&', or ';;&'. The first pattern that matches @@ -855,16 +950,16 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre select NAME [in WORDS ...]; do COMMANDS; done The list of words following 'in' is expanded, generating a list of - items. The set of expanded words is printed on the standard error - output stream, each preceded by a number. If the 'in WORDS' is - omitted, the positional parameters are printed, as if 'in "$@"' had - been specified. The 'PS3' prompt is then displayed and a line is - read from the standard input. If the line consists of a number - corresponding to one of the displayed words, then the value of NAME - is set to that word. If the line is empty, the words and prompt - are displayed again. If 'EOF' is read, the 'select' command - completes. Any other value read causes NAME to be set to null. - The line read is saved in the variable 'REPLY'. + items, and the set of expanded words is printed on the standard + error output stream, each preceded by a number. If the 'in WORDS' + is omitted, the positional parameters are printed, as if 'in "$@"' + had been specified. 'select' then displays the 'PS3' prompt and + reads a line from the standard input. If the line consists of a + number corresponding to one of the displayed words, then the value + of NAME is set to that word. If the line is empty, the words and + prompt are displayed again. If 'EOF' is read, the 'select' command + completes and returns 1. Any other value read causes NAME to be + set to null. The line read is saved in the variable 'REPLY'. The COMMANDS are executed after each selection until a 'break' command is executed, at which point the 'select' command completes. @@ -883,11 +978,11 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre (( EXPRESSION )) The arithmetic EXPRESSION is evaluated according to the rules - described below (*note Shell Arithmetic::). If the value of the - expression is non-zero, the return status is 0; otherwise the - return status is 1. This is exactly equivalent to - let "EXPRESSION" - *Note Bash Builtins::, for a full description of the 'let' builtin. + described below (*note Shell Arithmetic::). The EXPRESSION + undergoes the same expansions as if it were within double quotes, + but double quote characters in EXPRESSION are not treated specially + are removed. If the value of the expression is non-zero, the + return status is 0; otherwise the return status is 1. '[[...]]' [[ EXPRESSION ]] @@ -895,12 +990,13 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre Return a status of 0 or 1 depending on the evaluation of the conditional expression EXPRESSION. Expressions are composed of the primaries described below in *note Bash Conditional Expressions::. - Word splitting and filename expansion are not performed on the - words between the '[[' and ']]'; tilde expansion, parameter and - variable expansion, arithmetic expansion, command substitution, - process substitution, and quote removal are performed. Conditional - operators such as '-f' must be unquoted to be recognized as - primaries. + The words between the '[[' and ']]' do not undergo word splitting + and filename expansion. The shell performs tilde expansion, + parameter and variable expansion, arithmetic expansion, command + substitution, process substitution, and quote removal on those + words (the expansions that would occur if the words were enclosed + in double quotes). Conditional operators such as '-f' must be + unquoted to be recognized as primaries. When used with '[[', the '<' and '>' operators sort lexicographically using the current locale. @@ -913,67 +1009,92 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre 'shopt' in *note The Shopt Builtin::) is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches ('==') or does not match - ('!=') the pattern, and 1 otherwise. Any part of the pattern may - be quoted to force the quoted portion to be matched as a string. + ('!=') the pattern, and 1 otherwise. + + If you quote any part of the pattern, using any of the shell's + quoting mechanisms, the quoted portion is matched literally. This + means every character in the quoted portion matches itself, instead + of having any special pattern matching meaning. An additional binary operator, '=~', is available, with the same - precedence as '==' and '!='. When it is used, the string to the + precedence as '==' and '!='. When you use '=~', the string to the right of the operator is considered a POSIX extended regular - expression and matched accordingly (using the POSIX 'regcomp' and - 'regexec' interfaces usually described in regex(3)). The return - value is 0 if the string matches the pattern, and 1 otherwise. If - the regular expression is syntactically incorrect, the conditional - expression's return value is 2. If the 'nocasematch' shell option - (see the description of 'shopt' in *note The Shopt Builtin::) is - enabled, the match is performed without regard to the case of - alphabetic characters. Any part of the pattern may be quoted to - force the quoted portion to be matched as a string. Bracket - expressions in regular expressions must be treated carefully, since - normal quoting characters lose their meanings between brackets. If - the pattern is stored in a shell variable, quoting the variable - expansion forces the entire pattern to be matched as a string. - - The pattern will match if it matches any part of the string. - Anchor the pattern using the '^' and '$' regular expression - operators to force it to match the entire string. The array - variable 'BASH_REMATCH' records which parts of the string matched - the pattern. The element of 'BASH_REMATCH' with index 0 contains - the portion of the string matching the entire regular expression. - Substrings matched by parenthesized subexpressions within the - regular expression are saved in the remaining 'BASH_REMATCH' - indices. The element of 'BASH_REMATCH' with index N is the portion - of the string matching the Nth parenthesized subexpression. + expression pattern and matched accordingly (using the POSIX + 'regcomp' and 'regexec' interfaces usually described in regex(3)). + The return value is 0 if the string matches the pattern, and 1 if + it does not. If the regular expression is syntactically incorrect, + the conditional expression returns 2. If the 'nocasematch' shell + option (see the description of 'shopt' in *note The Shopt + Builtin::) is enabled, the match is performed without regard to the + case of alphabetic characters. + + You can quote any part of the pattern to force the quoted portion + to be matched literally instead of as a regular expression (see + above). If the pattern is stored in a shell variable, quoting the + variable expansion forces the entire pattern to be matched + literally. + + The pattern will match if it matches any part of the string. If + you want to force the pattern to match the entire string, anchor + the pattern using the '^' and '$' regular expression operators. For example, the following will match a line (stored in the shell - variable LINE) if there is a sequence of characters anywhere in the - value consisting of any number, including zero, of characters in - the 'space' character class, zero or one instances of 'a', then a - 'b': + variable 'line') if there is a sequence of characters anywhere in + the value consisting of any number, including zero, of characters + in the 'space' character class, immediately followed by zero or one + instances of 'a', then a 'b': + [[ $line =~ [[:space:]]*(a)?b ]] - That means values like 'aab' and ' aaaaaab' will match, as will a - line containing a 'b' anywhere in its value. - - Storing the regular expression in a shell variable is often a - useful way to avoid problems with quoting characters that are - special to the shell. It is sometimes difficult to specify a - regular expression literally without using quotes, or to keep track - of the quoting used by regular expressions while paying attention - to the shell's quote removal. Using a shell variable to store the - pattern decreases these problems. For example, the following is - equivalent to the above: + That means values for 'line' like 'aab', ' aaaaaab', 'xaby', and ' + ab' will all match, as will a line containing a 'b' anywhere in its + value. + + If you want to match a character that's special to the regular + expression grammar ('^$|[]()\.*+?'), it has to be quoted to remove + its special meaning. This means that in the pattern 'xxx.txt', the + '.' matches any character in the string (its usual regular + expression meaning), but in the pattern '"xxx.txt"', it can only + match a literal '.'. + + Likewise, if you want to include a character in your pattern that + has a special meaning to the regular expression grammar, you must + make sure it's not quoted. If you want to anchor a pattern at the + beginning or end of the string, for instance, you cannot quote the + '^' or '$' characters using any form of shell quoting. + + If you want to match 'initial string' at the start of a line, the + following will work: + [[ $line =~ ^"initial string" ]] + but this will not: + [[ $line =~ "^initial string" ]] + because in the second example the '^' is quoted and doesn't have + its usual special meaning. + + It is sometimes difficult to specify a regular expression properly + without using quotes, or to keep track of the quoting used by + regular expressions while paying attention to shell quoting and the + shell's quote removal. Storing the regular expression in a shell + variable is often a useful way to avoid problems with quoting + characters that are special to the shell. For example, the + following is equivalent to the pattern used above: + pattern='[[:space:]]*(a)?b' [[ $line =~ $pattern ]] - If you want to match a character that's special to the regular - expression grammar, it has to be quoted to remove its special - meaning. This means that in the pattern 'xxx.txt', the '.' matches - any character in the string (its usual regular expression meaning), - but in the pattern '"xxx.txt"' it can only match a literal '.'. Shell programmers should take special care with backslashes, since - backslashes are used both by the shell and regular expressions to - remove the special meaning from the following character. The - following two sets of commands are _not_ equivalent: + backslashes are used by both the shell and regular expressions to + remove the special meaning from the following character. This + means that after the shell's word expansions complete (*note Shell + Expansions::), any backslashes remaining in parts of the pattern + that were originally not quoted can remove the special meaning of + pattern characters. If any part of the pattern is quoted, the + shell does its best to ensure that the regular expression treats + those remaining backslashes as literal, if they appeared in a + quoted portion. + + The following two sets of commands are _not_ equivalent: + pattern='\.' [[ . =~ $pattern ]] @@ -984,12 +1105,49 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre The first two matches will succeed, but the second two will not, because in the second two the backslash will be part of the pattern - to be matched. In the first two examples, the backslash removes - the special meaning from '.', so the literal '.' matches. If the + to be matched. In the first two examples, the pattern passed to + the regular expression parser is '\.'. The backslash removes the + special meaning from '.', so the literal '.' matches. In the + second two examples, the pattern passed to the regular expression + parser has the backslash quoted (e.g., '\\\.'), which will not + match the string, since it does not contain a backslash. If the string in the first examples were anything other than '.', say 'a', the pattern would not match, because the quoted '.' in the pattern loses its special meaning of matching any single character. + Bracket expressions in regular expressions can be sources of errors + as well, since characters that are normally special in regular + expressions lose their special meanings between brackets. However, + you can use bracket expressions to match special pattern characters + without quoting them, so they are sometimes useful for this + purpose. + + Though it might seem like a strange way to write it, the following + pattern will match a '.' in the string: + + [[ . =~ [.] ]] + + The shell performs any word expansions before passing the pattern + to the regular expression functions, so you can assume that the + shell's quoting takes precedence. As noted above, the regular + expression parser will interpret any unquoted backslashes remaining + in the pattern after shell expansion according to its own rules. + The intention is to avoid making shell programmers quote things + twice as much as possible, so shell quoting should be sufficient to + quote special pattern characters where that's necessary. + + The array variable 'BASH_REMATCH' records which parts of the string + matched the pattern. The element of 'BASH_REMATCH' with index 0 + contains the portion of the string matching the entire regular + expression. Substrings matched by parenthesized subexpressions + within the regular expression are saved in the remaining + 'BASH_REMATCH' indices. The element of 'BASH_REMATCH' with index N + is the portion of the string matching the Nth parenthesized + subexpression. + + Bash sets 'BASH_REMATCH' in the global scope; declaring it as a + local variable will lead to unexpected results. + Expressions may be combined using the following operators, listed in decreasing order of precedence: @@ -1024,9 +1182,9 @@ list may be redirected to a single stream. '()' ( LIST ) - Placing a list of commands between parentheses causes a subshell - environment to be created (*note Command Execution Environment::), - and each of the commands in LIST to be executed in that subshell. + Placing a list of commands between parentheses forces the shell to + create a subshell (*note Command Execution Environment::), and each + of the commands in LIST is executed in that subshell environment. Since the LIST is executed in a subshell, variable assignments do not remain in effect after the subshell completes. @@ -1039,10 +1197,10 @@ list may be redirected to a single stream. In addition to the creation of a subshell, there is a subtle difference between these two constructs due to historical reasons. The -braces are 'reserved words', so they must be separated from the LIST by -'blank's or other shell metacharacters. The parentheses are -'operators', and are recognized as separate tokens by the shell even if -they are not separated from the LIST by whitespace. +braces are reserved words, so they must be separated from the LIST by +'blank's or other shell metacharacters. The parentheses are operators, +and are recognized as separate tokens by the shell even if they are not +separated from the LIST by whitespace. The exit status of both of these constructs is the exit status of LIST. @@ -1058,29 +1216,51 @@ A coprocess is executed asynchronously in a subshell, as if the command had been terminated with the '&' control operator, with a two-way pipe established between the executing shell and the coprocess. - The format for a coprocess is: + The syntax for a coprocess is: + coproc [NAME] COMMAND [REDIRECTIONS] -This creates a coprocess named NAME. If NAME is not supplied, the -default name is COPROC. NAME must not be supplied if COMMAND is a -simple command (*note Simple Commands::); otherwise, it is interpreted -as the first word of the simple command. +This creates a coprocess named NAME. COMMAND may be either a simple +command (*note Simple Commands::) or a compound command (*note Compound +Commands::). NAME is a shell variable name. If NAME is not supplied, +the default name is 'COPROC'. + + The recommended form to use for a coprocess is + + coproc NAME { COMMAND; } + +This form is recommended because simple commands result in the coprocess +always being named 'COPROC', and it is simpler to use and more complete +than the other compound commands. + + There are other forms of coprocesses: + + coproc NAME COMPOUND-COMMAND + coproc COMPOUND-COMMAND + coproc SIMPLE-COMMAND + +If COMMAND is a compound command, NAME is optional. The word following +'coproc' determines whether that word is interpreted as a variable name: +it is interpreted as NAME if it is not a reserved word that introduces a +compound command. If COMMAND is a simple command, NAME is not allowed; +this is to avoid confusion between NAME and the first word of the simple +command. When the coprocess is executed, the shell creates an array variable -(*note Arrays::) named 'NAME' in the context of the executing shell. -The standard output of COMMAND is connected via a pipe to a file +(*note Arrays::) named NAME in the context of the executing shell. The +standard output of COMMAND is connected via a pipe to a file descriptor +in the executing shell, and that file descriptor is assigned to NAME[0]. +The standard input of COMMAND is connected via a pipe to a file descriptor in the executing shell, and that file descriptor is assigned -to 'NAME'[0]. The standard input of COMMAND is connected via a pipe to -a file descriptor in the executing shell, and that file descriptor is -assigned to 'NAME'[1]. This pipe is established before any redirections -specified by the command (*note Redirections::). The file descriptors -can be utilized as arguments to shell commands and redirections using -standard word expansions. Other than those created to execute command -and process substitutions, the file descriptors are not available in +to NAME[1]. This pipe is established before any redirections specified +by the command (*note Redirections::). The file descriptors can be +utilized as arguments to shell commands and redirections using standard +word expansions. Other than those created to execute command and +process substitutions, the file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is -available as the value of the variable 'NAME'_PID. The 'wait' builtin +available as the value of the variable 'NAME_PID'. The 'wait' builtin command may be used to wait for the coprocess to terminate. Since the coprocess is created as an asynchronous command, the @@ -1105,88 +1285,9 @@ line, different ways to specify the input source, and so on). Parallel can replace 'xargs' or feed commands from its input sources to several different instances of Bash. - For a complete description, refer to the GNU Parallel documentation. -A few examples should provide a brief introduction to its use. - - For example, it is easy to replace 'xargs' to gzip all html files in -the current directory and its subdirectories: - find . -type f -name '*.html' -print | parallel gzip -If you need to protect special characters such as newlines in file -names, use find's '-print0' option and parallel's '-0' option. - - You can use Parallel to move files from the current directory when -the number of files is too large to process with one 'mv' invocation: - printf '%s\n' * | parallel mv {} destdir - - As you can see, the {} is replaced with each line read from standard -input. While using 'ls' will work in most instances, it is not -sufficient to deal with all filenames. 'printf' is a shell builtin, and -therefore is not subject to the kernel's limit on the number of -arguments to a program, so you can use '*' (but see below about the -'dotglob' shell option). If you need to accommodate special characters -in filenames, you can use - - printf '%s\0' * | parallel -0 mv {} destdir - -as alluded to above. - - This will run as many 'mv' commands as there are files in the current -directory. You can emulate a parallel 'xargs' by adding the '-X' -option: - printf '%s\0' * | parallel -0 -X mv {} destdir - - (You may have to modify the pattern if you have the 'dotglob' option -enabled.) - - GNU Parallel can replace certain common idioms that operate on lines -read from a file (in this case, filenames listed one per line): - while IFS= read -r x; do - do-something1 "$x" "config-$x" - do-something2 < "$x" - done < file | process-output - -with a more compact syntax reminiscent of lambdas: - cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | - process-output - - Parallel provides a built-in mechanism to remove filename extensions, -which lends itself to batch file transformations or renaming: - ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}" -This will recompress all files in the current directory with names -ending in .gz using bzip2, running one job per CPU (-j+0) in parallel. -(We use 'ls' for brevity here; using 'find' as above is more robust in -the face of filenames containing unexpected characters.) Parallel can -take arguments from the command line; the above can also be written as - - parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz - - If a command generates output, you may want to preserve the input -order in the output. For instance, the following command - { - echo foss.org.my ; - echo debian.org ; - echo freenetproject.org ; - } | parallel traceroute -will display as output the traceroute invocation that finishes first. -Adding the '-k' option - { - echo foss.org.my ; - echo debian.org ; - echo freenetproject.org ; - } | parallel -k traceroute -will ensure that the output of 'traceroute foss.org.my' is displayed -first. - - Finally, Parallel can be used to run a sequence of shell commands in -parallel, similar to 'cat file | bash'. It is not uncommon to take a -list of filenames, create a series of shell commands to operate on them, -and feed that list of commands to a shell. Parallel can speed this up. -Assuming that 'file' contains a list of shell commands, one per line, - - parallel -j 10 < file - -will evaluate the commands using the shell (since no explicit command is -supplied as an argument), in blocks of ten shell jobs at a time. + For a complete description, refer to the GNU Parallel documentation, +which is available at +.  File: bashref.info, Node: Shell Functions, Next: Shell Parameters, Prev: Shell Commands, Up: Basic Shell Features @@ -1210,15 +1311,15 @@ new process is created to interpret them. This defines a shell function named FNAME. The reserved word 'function' is optional. If the 'function' reserved word is supplied, -the parentheses are optional. The BODY of the function is the compound -command COMPOUND-COMMAND (*note Compound Commands::). That command is -usually a LIST enclosed between { and }, but may be any compound command -listed above, with one exception: If the 'function' reserved word is -used, but the parentheses are not supplied, the braces are required. +the parentheses are optional. The "body" of the function is the +compound command COMPOUND-COMMAND (*note Compound Commands::). That +command is usually a LIST enclosed between { and }, but may be any +compound command listed above. If the 'function' reserved word is used, +but the parentheses are not supplied, the braces are recommended. COMPOUND-COMMAND is executed whenever FNAME is specified as the name of -a command. When the shell is in POSIX mode (*note Bash POSIX Mode::), -FNAME must be a valid shell NAME and may not be the same as one of the -special builtins (*note Special Builtins::). In default mode, a +a simple command. When the shell is in POSIX mode (*note Bash POSIX +Mode::), FNAME must be a valid shell name and may not be the same as one +of the special builtins (*note Special Builtins::). In default mode, a function name can be any unquoted shell word that does not contain '$'. Any redirections (*note Redirections::) associated with the shell function are performed when the function is executed. A function @@ -1271,9 +1372,17 @@ status; otherwise the function's return status is the exit status of the last command executed before the 'return'. Variables local to the function may be declared with the 'local' -builtin. These variables are visible only to the function and the -commands it invokes. This is particularly important when a shell -function calls other functions. +builtin ("local variables"). Ordinarily, variables and their values are +shared between a function and its caller. These variables are visible +only to the function and the commands it invokes. This is particularly +important when a shell function calls other functions. + + In the following description, the "current scope" is a currently- +executing function. Previous scopes consist of that function's caller +and so on, back to the "global" scope, where the shell is not executing +any shell function. Consequently, a local variable at the current local +scope is a variable declared using the 'local' or 'declare' builtins in +the function that is currently executing. Local variables "shadow" variables with the same name declared at previous scopes. For instance, a local variable declared in a function @@ -1281,7 +1390,7 @@ hides a global variable of the same name: references and assignments refer to the local variable, leaving the global variable unmodified. When the function returns, the global variable is once again visible. - The shell uses DYNAMIC SCOPING to control a variable's visibility + The shell uses "dynamic scoping" to control a variable's visibility within functions. With dynamic scoping, visible variables and their values are a result of the sequence of function calls that caused execution to reach the current function. The value of a variable that a @@ -1290,10 +1399,10 @@ that caller is the "global" scope or another shell function. This is also the value that a local variable declaration "shadows", and the value that is restored when the function returns. - For example, if a variable VAR is declared as local in function -FUNC1, and FUNC1 calls another function FUNC2, references to VAR made -from within FUNC2 will resolve to the local variable VAR from FUNC1, -shadowing any global variable named VAR. + For example, if a variable 'var' is declared as local in function +'func1', and 'func1' calls another function 'func2', references to 'var' +made from within 'func2' will resolve to the local variable 'var' from +'func1', shadowing any global variable named 'var'. The following script demonstrates this behavior. When executed, the script displays @@ -1318,17 +1427,19 @@ script displays variable is local to the current scope, 'unset' will unset it; otherwise the unset will refer to the variable found in any calling scope as described above. If a variable at the current local scope is unset, it -will remain so until it is reset in that scope or until the function -returns. Once the function returns, any instance of the variable at a -previous scope will become visible. If the unset acts on a variable at -a previous scope, any instance of a variable with that name that had -been shadowed will become visible. +will remain so (appearing as unset) until it is reset in that scope or +until the function returns. Once the function returns, any instance of +the variable at a previous scope will become visible. If the unset acts +on a variable at a previous scope, any instance of a variable with that +name that had been shadowed will become visible (see below how +'localvar_unset'shell option changes this behavior). Function names and definitions may be listed with the '-f' option to the 'declare' ('typeset') builtin command (*note Bash Builtins::). The '-F' option to 'declare' or 'typeset' will list the function names only (and optionally the source file and line number, if the 'extdebug' shell -option is enabled). Functions may be exported so that subshells +option is enabled). Functions may be exported so that child shell +processes (those created when executing a separate shell invocation) automatically have them defined with the '-f' option to the 'export' builtin (*note Bourne Shell Builtins::). @@ -1348,11 +1459,12 @@ File: bashref.info, Node: Shell Parameters, Next: Shell Expansions, Prev: She * Positional Parameters:: The shell's command-line arguments. * Special Parameters:: Parameters denoted by special characters. -A PARAMETER is an entity that stores values. It can be a 'name', a -number, or one of the special characters listed below. A VARIABLE is a -parameter denoted by a 'name'. A variable has a VALUE and zero or more -ATTRIBUTES. Attributes are assigned using the 'declare' builtin command -(see the description of the 'declare' builtin in *note Bash Builtins::). +A "parameter" is an entity that stores values. It can be a 'name', a +number, or one of the special characters listed below. A "variable" is +a parameter denoted by a 'name'. A variable has a 'value' and zero or +more 'attributes'. Attributes are assigned using the 'declare' builtin +command (see the description of the 'declare' builtin in *note Bash +Builtins::). A parameter is set if it has been assigned a value. The null string is a valid value. Once a variable is set, it may be unset only by using @@ -1362,24 +1474,23 @@ the 'unset' builtin command. NAME=[VALUE] If VALUE is not given, the variable is assigned the null string. All VALUEs undergo tilde expansion, parameter and variable expansion, -command substitution, arithmetic expansion, and quote removal (detailed -below). If the variable has its 'integer' attribute set, then VALUE is -evaluated as an arithmetic expression even if the '$((...))' expansion -is not used (*note Arithmetic Expansion::). Word splitting is not -performed, with the exception of '"$@"' as explained below. Filename -expansion is not performed. Assignment statements may also appear as -arguments to the 'alias', 'declare', 'typeset', 'export', 'readonly', -and 'local' builtin commands (DECLARATION commands). When in POSIX mode -(*note Bash POSIX Mode::), these builtins may appear in a command after -one or more instances of the 'command' builtin and retain these -assignment statement properties. +command substitution, arithmetic expansion, and quote removal (*note +Shell Parameter Expansion::). If the variable has its 'integer' +attribute set, then VALUE is evaluated as an arithmetic expression even +if the '$((...))' expansion is not used (*note Arithmetic Expansion::). +Word splitting and filename expansion are not performed. Assignment +statements may also appear as arguments to the 'alias', 'declare', +'typeset', 'export', 'readonly', and 'local' builtin commands +("declaration" commands). When in POSIX mode (*note Bash POSIX Mode::), +these builtins may appear in a command after one or more instances of +the 'command' builtin and retain these assignment statement properties. 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. This includes arguments to builtin commands such as 'declare' that accept -assignment statements (DECLARATION commands). When '+=' is applied to a -variable for which the INTEGER attribute has been set, VALUE is +assignment statements (declaration commands). When '+=' 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 Arrays::), the @@ -1389,9 +1500,9 @@ maximum index (for indexed arrays), or added as additional key-value pairs in an associative array. When applied to a string-valued variable, VALUE is expanded and appended to the variable's value. - A variable can be assigned the NAMEREF attribute using the '-n' + A variable can be assigned the 'nameref' attribute using the '-n' option to the 'declare' or 'local' builtin commands (*note Bash -Builtins::) to create a NAMEREF, or a reference to another variable. +Builtins::) to create a "nameref", or a reference to another variable. This allows variables to be manipulated indirectly. Whenever the nameref variable is referenced, assigned to, unset, or has its attributes modified (other than using or changing the nameref attribute @@ -1401,9 +1512,9 @@ shell functions to refer to a variable whose name is passed as an argument to the function. For instance, if a variable name is passed to a shell function as its first argument, running declare -n ref=$1 -inside the function creates a nameref variable REF whose value is the +inside the function creates a nameref variable 'ref' whose value is the variable name passed as the first argument. References and assignments -to REF, and changes to its attributes, are treated as references, +to 'ref', and changes to its attributes, are treated as references, assignments, and attribute modifications to the variable whose name was passed as '$1'. @@ -1423,7 +1534,7 @@ File: bashref.info, Node: Positional Parameters, Next: Special Parameters, Up 3.4.1 Positional Parameters --------------------------- -A POSITIONAL PARAMETER is a parameter denoted by one or more digits, +A "positional parameter" is a parameter denoted by one or more digits, other than the single digit '0'. Positional parameters are assigned from the shell's arguments when it is invoked, and may be reassigned using the 'set' builtin command. Positional parameter 'N' may be @@ -1488,9 +1599,8 @@ only be referenced; assignment to them is not allowed. shell itself (such as the '-i' option). '$' - ($$) Expands to the process ID of the shell. In a '()' subshell, - it expands to the process ID of the invoking shell, not the - subshell. + ($$) Expands to the process ID of the shell. In a subshell, it + expands to the process ID of the invoking shell, not the subshell. '!' ($!) Expands to the process ID of the job most recently placed @@ -1544,13 +1654,13 @@ substitution (done in a left-to-right fashion); word splitting; and filename expansion. On systems that can support it, there is an additional expansion -available: PROCESS SUBSTITUTION. This is performed at the same time as -tilde, parameter, variable, and arithmetic expansion and command +available: "process substitution". This is performed at the same time +as tilde, parameter, variable, and arithmetic expansion and command substitution. After these expansions are performed, quote characters present in the -original word are removed unless they have been quoted themselves (QUOTE -REMOVAL). +original word are removed unless they have been quoted themselves +("quote removal"). Only brace expansion, word splitting, and filename expansion can increase the number of words of the expansion; other expansions expand a @@ -1568,7 +1678,7 @@ File: bashref.info, Node: Brace Expansion, Next: Tilde Expansion, Up: Shell E --------------------- Brace expansion is a mechanism by which arbitrary strings may be -generated. This mechanism is similar to FILENAME EXPANSION (*note +generated. This mechanism is similar to "filename expansion" (*note Filename Expansion::), but the filenames generated need not exist. Patterns to be brace expanded take the form of an optional PREAMBLE, followed by either a series of comma-separated strings or a sequence @@ -1583,17 +1693,17 @@ are not sorted; left to right order is preserved. For example, ade ace abe A sequence expression takes the form '{X..Y[..INCR]}', where X and Y -are either integers or single characters, and INCR, 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 prefixed 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 -necessary. When characters are supplied, the expression expands to each -character lexicographically between X and Y, inclusive, using the -default C locale. Note that both X and Y must be of the same type. -When the increment is supplied, it is used as the difference between -each term. The default increment is 1 or -1 as appropriate. +are either integers or letters, and INCR, 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 prefixed +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 necessary. When +letters are supplied, the expression expands to each character +lexicographically between X and Y, inclusive, using the default C +locale. Note that both X and Y must be of the same type (integer or +letter). 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 characters special to other expansions are preserved in the result. It @@ -1623,9 +1733,9 @@ File: bashref.info, Node: Tilde Expansion, Next: Shell Parameter Expansion, P If a word begins with an unquoted tilde character ('~'), all of the characters up to the first unquoted slash (or all characters, if there -is no unquoted slash) are considered a TILDE-PREFIX. If none of the +is no unquoted slash) are considered a "tilde-prefix". 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 LOGIN NAME. +tilde-prefix following the tilde are treated as a possible "login name". If this login name is the null string, the tilde is replaced with the value of the 'HOME' shell variable. If 'HOME' is unset, the home directory of the user executing the shell is substituted instead. @@ -1681,7 +1791,7 @@ assigns the expanded value. Bash also performs tilde expansion on words satisfying the conditions of variable assignments (*note Shell Parameters::) when they appear as arguments to simple commands. Bash does not do this, except for the -DECLARATION commands listed above, when in POSIX mode. +declaration commands listed above, when in POSIX mode.  File: bashref.info, Node: Shell Parameter Expansion, Next: Command Substitution, Prev: Tilde Expansion, Up: Shell Expansions @@ -1708,7 +1818,7 @@ parameter with more than one digit, or when PARAMETER is followed by a character that is not to be interpreted as part of its name. If the first character of PARAMETER is an exclamation point (!), and -PARAMETER is not a NAMEREF, it introduces a level of indirection. Bash +PARAMETER is not a nameref, it introduces a level of indirection. Bash uses the value formed by expanding the rest of PARAMETER as the new PARAMETER; this is then expanded and that value is used in the rest of the expansion, rather than the expansion of the original PARAMETER. @@ -1734,31 +1844,48 @@ omitted, the operator tests only for existence. If PARAMETER is unset or null, the expansion of WORD is substituted. Otherwise, the value of PARAMETER is substituted. + $ v=123 + $ echo ${v-unset} + 123 + '${PARAMETER:=WORD}' If PARAMETER is unset or null, the expansion of WORD is assigned to PARAMETER. The value of PARAMETER is then substituted. Positional parameters and special parameters may not be assigned to in this way. + $ var= + $ : ${var:=DEFAULT} + $ echo $var + DEFAULT + '${PARAMETER:?WORD}' If PARAMETER is null or unset, the expansion of WORD (or a message to that effect if WORD is not present) is written to the standard error and the shell, if it is not interactive, exits. Otherwise, the value of PARAMETER is substituted. + $ var= + $ : ${var:?var is unset or null} + bash: var: var is unset or null + '${PARAMETER:+WORD}' If PARAMETER is null or unset, nothing is substituted, otherwise the expansion of WORD is substituted. + $ var=123 + $ echo ${var:+var is set and not null} + var is set and not null + '${PARAMETER:OFFSET}' '${PARAMETER:OFFSET:LENGTH}' This is referred to as Substring Expansion. It expands to up to LENGTH characters of the value of PARAMETER starting at the - character specified by OFFSET. If PARAMETER is '@', an indexed - array subscripted by '@' or '*', or an associative array name, the - results differ as described below. If LENGTH is omitted, it - expands to the substring of the value of PARAMETER starting at the - character specified by OFFSET and extending to the end of the + character specified by OFFSET. If PARAMETER is '@' or '*', an + indexed array subscripted by '@' or '*', or an associative array + name, the results differ as described below. If LENGTH is omitted, + it expands to the substring of the value of PARAMETER starting at + the character specified by OFFSET and extending to the end of the value. LENGTH and OFFSET are arithmetic expressions (*note Shell Arithmetic::). @@ -1826,11 +1953,11 @@ omitted, the operator tests only for existence. $ echo ${array[0]: -7:-2} bcdef - If PARAMETER is '@', the result is LENGTH positional parameters - beginning at OFFSET. A negative OFFSET is taken relative to one - greater than the greatest positional parameter, so an offset of -1 - evaluates to the last positional parameter. It is an expansion - error if LENGTH evaluates to a number less than zero. + If PARAMETER is '@' or '*', the result is LENGTH positional + parameters beginning at OFFSET. A negative OFFSET is taken + relative to one greater than the greatest positional parameter, so + an offset of -1 evaluates to the last positional parameter. It is + an expansion error if LENGTH evaluates to a number less than zero. The following examples illustrate substring expansion using positional parameters: @@ -1940,26 +2067,92 @@ omitted, the operator tests only for existence. array in turn, and the expansion is the resultant list. '${PARAMETER/PATTERN/STRING}' - +'${PARAMETER//PATTERN/STRING}' +'${PARAMETER/#PATTERN/STRING}' +'${PARAMETER/%PATTERN/STRING}' The PATTERN is expanded to produce a pattern just as in filename expansion. PARAMETER is expanded and the longest match of PATTERN - against its value is replaced with STRING. The match is performed - according to the rules described below (*note Pattern Matching::). - If PATTERN begins with '/', all matches of PATTERN are replaced - with STRING. Normally only the first match is replaced. If - PATTERN begins with '#', it must match at the beginning of the - expanded value of PARAMETER. If PATTERN begins with '%', it must - match at the end of the expanded value of PARAMETER. If STRING is - null, matches of PATTERN are deleted and the '/' following PATTERN - may be omitted. If the 'nocasematch' shell option (see the - description of 'shopt' in *note The Shopt Builtin::) is enabled, - the match is performed without regard to the case of alphabetic - characters. If PARAMETER is '@' or '*', the substitution operation - is applied to each positional parameter in turn, and the expansion - is the resultant list. If PARAMETER is an array variable - subscripted with '@' or '*', the substitution operation is applied - to each member of the array in turn, and the expansion is the - resultant list. + against its value is replaced with STRING. STRING undergoes tilde + expansion, parameter and variable expansion, arithmetic expansion, + command and process substitution, and quote removal. The match is + performed according to the rules described below (*note Pattern + Matching::). + + In the first form above, only the first match is replaced. If + there are two slashes separating PARAMETER and PATTERN (the second + form above), all matches of PATTERN are replaced with STRING. If + PATTERN is preceded by '#' (the third form above), it must match at + the beginning of the expanded value of PARAMETER. If PATTERN is + preceded by '%' (the fourth form above), it must match at the end + of the expanded value of PARAMETER. If the expansion of STRING is + null, matches of PATTERN are deleted. If STRING is null, matches + of PATTERN are deleted and the '/' following PATTERN may be + omitted. + + If the 'patsub_replacement' shell option is enabled using 'shopt', + any unquoted instances of '&' in STRING are replaced with the + matching portion of PATTERN. This is intended to duplicate a + common 'sed' idiom. + + Quoting any part of STRING inhibits replacement in the expansion of + the quoted portion, including replacement strings stored in shell + variables. Backslash will escape '&' in STRING; the backslash is + removed in order to permit a literal '&' in the replacement string. + Users should take care if STRING is double-quoted to avoid unwanted + interactions between the backslash and double-quoting, since + backslash has special meaning within double quotes. Pattern + substitution performs the check for unquoted '&' after expanding + STRING, so users should ensure to properly quote any occurrences of + '&' they want to be taken literally in the replacement and ensure + any instances of '&' they want to be replaced are unquoted. + + For instance, + + var=abcdef + rep='& ' + echo ${var/abc/& } + echo "${var/abc/& }" + echo ${var/abc/$rep} + echo "${var/abc/$rep}" + + will display four lines of "abc def", while + + var=abcdef + rep='& ' + echo ${var/abc/\& } + echo "${var/abc/\& }" + echo ${var/abc/"& "} + echo ${var/abc/"$rep"} + + will display four lines of "& def". Like the pattern removal + operators, double quotes surrounding the replacement string quote + the expanded characters, while double quotes enclosing the entire + parameter substitution do not, since the expansion is performed in + a context that doesn't take any enclosing double quotes into + account. + + Since backslash can escape '&', it can also escape a backslash in + the replacement string. This means that '\\' will insert a literal + backslash into the replacement, so these two 'echo' commands + + var=abcdef + rep='\\&xyz' + echo ${var/abc/\\&xyz} + echo ${var/abc/$rep} + + will both output '\abcxyzdef'. + + It should rarely be necessary to enclose only STRING in double + quotes. + + If the 'nocasematch' shell option (see the description of 'shopt' + in *note The Shopt Builtin::) is enabled, the match is performed + without regard to the case of alphabetic characters. If PARAMETER + is '@' or '*', the substitution operation is applied to each + positional parameter in turn, and the expansion is the resultant + list. If PARAMETER is an array variable subscripted with '@' or + '*', the substitution operation is applied to each member of the + array in turn, and the expansion is the resultant list. '${PARAMETER^PATTERN}' '${PARAMETER^^PATTERN}' @@ -1970,18 +2163,22 @@ omitted, the operator tests only for existence. filename expansion. Each character in the expanded value of PARAMETER is tested against PATTERN, and, if it matches the pattern, its case is converted. The pattern should not attempt to - match more than one character. The '^' operator converts lowercase - letters matching PATTERN 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 PATTERN is omitted, it is - treated like a '?', which matches every character. If PARAMETER is - '@' or '*', the case modification operation is applied to each - positional parameter in turn, and the expansion is the resultant - list. If PARAMETER is an array variable subscripted with '@' or - '*', the case modification operation is applied to each member of - the array in turn, and the expansion is the resultant list. + match more than one character. + + The '^' operator converts lowercase letters matching PATTERN 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 + PATTERN is omitted, it is treated like a '?', which matches every + character. + + If PARAMETER is '@' or '*', the case modification operation is + applied to each positional parameter in turn, and the expansion is + the resultant list. If PARAMETER is an array variable subscripted + with '@' or '*', the case modification operation is applied to each + member of the array in turn, and the expansion is the resultant + list. '${PARAMETER@OPERATOR}' The expansion is either a transformation of the value of PARAMETER @@ -2021,6 +2218,10 @@ omitted, the operator tests only for existence. 'a' The expansion is a string consisting of flag values representing PARAMETER's attributes. + 'k' + Like the 'K' transformation, but expands the keys and values + of indexed and associative arrays to separate words after word + splitting. If PARAMETER is '@' or '*', the operation is applied to each positional parameter in turn, and the expansion is the resultant @@ -2075,12 +2276,12 @@ is: $(( EXPRESSION )) - The expression is treated as if it were within double quotes, but a -double quote inside the parentheses is not treated specially. All -tokens in the expression undergo parameter and variable expansion, -command substitution, and quote removal. The result is treated as the -arithmetic expression to be evaluated. Arithmetic expansions may be -nested. + The EXPRESSION undergoes the same expansions as if it were within +double quotes, but double quote characters in EXPRESSION are not treated +specially and are removed. All tokens in the expression undergo +parameter and variable expansion, command substitution, and quote +removal. The result is treated as the arithmetic expression to be +evaluated. Arithmetic expansions may be nested. The evaluation is performed according to the rules listed below (*note Shell Arithmetic::). If the expression is invalid, Bash prints a @@ -2175,9 +2376,12 @@ characters. When a pattern is used for filename expansion, the character '.' at the start of a filename or immediately following a slash must be matched -explicitly, unless the shell option 'dotglob' is set. The filenames '.' -and '..' must always be matched explicitly, even if 'dotglob' is set. -In other cases, the '.' character is not treated specially. +explicitly, unless the shell option 'dotglob' is set. In order to match +the filenames '.' and '..', the pattern must begin with '.' (for +example, '.?'), even if 'dotglob' is set. If the 'globskipdots' shell +option is enabled, the filenames '.' and '..' are never matched, even if +the pattern begins with a '.'. When not matching filenames, the '.' +character is not treated specially. When matching a filename, the slash character must always be matched explicitly by a slash in the pattern, but in other matching contexts it @@ -2185,8 +2389,8 @@ can be matched by a special pattern character as described below (*note Pattern Matching::). See the description of 'shopt' in *note The Shopt Builtin::, for a -description of the 'nocaseglob', 'nullglob', 'failglob', and 'dotglob' -options. +description of the 'nocaseglob', 'nullglob', 'globskipdots', 'failglob', +and 'dotglob' options. The 'GLOBIGNORE' shell variable may be used to restrict the set of file names matching a pattern. If 'GLOBIGNORE' is set, each matching @@ -2232,20 +2436,21 @@ characters must be quoted if they are to be matched literally. character not enclosed is matched. A '-' may be matched by including it as the first or last character in the set. A ']' may be matched by including it as the first character in the set. The - sorting order of characters in range expressions is determined by - the current locale and the values of the 'LC_COLLATE' and 'LC_ALL' - shell variables, if set. + sorting order of characters in range expressions, and the + characters included in the range, are determined by the current + locale and the values of the 'LC_COLLATE' and 'LC_ALL' shell + variables, if set. For example, in the default C locale, '[a-dx-z]' is equivalent to '[abcdxyz]'. Many locales sort characters in dictionary order, and in these locales '[a-dx-z]' is typically not equivalent to - '[abcdxyz]'; it might be equivalent to '[aBbCcDdxXyYz]', for + '[abcdxyz]'; it might be equivalent to '[aBbCcDdxYyZz]', for example. To obtain the traditional interpretation of ranges in bracket expressions, you can force the use of the C locale by setting the 'LC_COLLATE' or 'LC_ALL' environment variable to the value 'C', or enable the 'globasciiranges' shell option. - Within '[' and ']', CHARACTER CLASSES can be specified using the + Within '[' and ']', "character classes" can be specified using the syntax '[:'CLASS':]', where CLASS is one of the following classes defined in the POSIX standard: alnum alpha ascii blank cntrl digit graph lower @@ -2254,8 +2459,8 @@ characters must be quoted if they are to be matched literally. The 'word' character class matches letters, digits, and the character '_'. - Within '[' and ']', an EQUIVALENCE CLASS can be specified using the - syntax '[='C'=]', which matches all characters with the same + Within '[' and ']', an "equivalence class" can be specified using + the syntax '[='C'=]', which matches all characters with the same collation weight (as defined by the current locale) as the character C. @@ -2263,10 +2468,12 @@ characters must be quoted if they are to be matched literally. symbol SYMBOL. If the 'extglob' shell option is enabled using the 'shopt' builtin, -several extended pattern matching operators are recognized. In the -following description, a PATTERN-LIST is a list of one or more patterns -separated by a '|'. Composite patterns may be formed using one or more -of the following sub-patterns: +the shell recognizes several extended pattern matching operators. In +the following description, a PATTERN-LIST is a list of one or more +patterns separated by a '|'. When matching filenames, the 'dotglob' +shell option determines the set of filenames that are tested, as +described above. Composite patterns may be formed using one or more of +the following sub-patterns: '?(PATTERN-LIST)' Matches zero or one occurrence of the given patterns. @@ -2283,6 +2490,20 @@ of the following sub-patterns: '!(PATTERN-LIST)' Matches anything except one of the given patterns. + The 'extglob' option changes the behavior of the parser, since the +parentheses are normally treated as operators with syntactic meaning. +To ensure that extended matching patterns are parsed correctly, make +sure that 'extglob' is enabled before parsing constructs containing the +patterns, including shell functions and command substitutions. + + When matching filenames, the 'dotglob' shell option determines the +set of filenames that are tested: when 'dotglob' is enabled, the set of +filenames includes all files beginning with '.', but the filenames '.' +and '..' must be matched by a pattern or sub-pattern that begins with a +dot; when it is disabled, the set does not include any filenames +beginning with "." unless the pattern or sub-pattern begins with a '.'. +As above, '.' only has a special meaning when matching filenames. + Complicated extended pattern matching against long strings is slow, especially when the patterns contain alternations and the strings contain multiple matches. Using separate matches against shorter @@ -2305,8 +2526,8 @@ File: bashref.info, Node: Redirections, Next: Executing Commands, Prev: Shell 3.6 Redirections ================ -Before a command is executed, its input and output may be REDIRECTED -using a special notation interpreted by the shell. Redirection allows +Before a command is executed, its input and output may be "redirected" +using a special notation interpreted by the shell. "Redirection" allows commands' file handles to be duplicated, opened, closed, made to refer to different files, and can change the files the command reads from and writes to. Redirection may also be used to modify file handles in the @@ -2322,7 +2543,8 @@ file descriptor greater than 10 and assign it to {VARNAME}. If >&- or <&- is preceded by {VARNAME}, the value of VARNAME defines the file descriptor to close. If {VARNAME} is supplied, the redirection persists beyond the scope of the command, allowing the shell programmer to manage -the file descriptor's lifetime manually. +the file descriptor's lifetime manually. The 'varredir_close' shell +option manages this behavior (*note The Shopt Builtin::). In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is '<', the @@ -2584,11 +2806,13 @@ following order. expansion, and quote removal before being assigned to the variable. If no command name results, the variable assignments affect the -current shell environment. Otherwise, the variables are added to the -environment of the executed command and do not affect the current shell -environment. 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. +current shell environment. In the case of such a command (one that +consists only of assignment statements and redirections), assignment +statements are performed before redirections. Otherwise, the variables +are added to the environment of the executed command and do not affect +the current shell environment. 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 @@ -2642,8 +2866,8 @@ taken. 5. 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 - SHELL SCRIPT and the shell executes it as described in *note Shell - Scripts::. + "shell script" and the shell executes it as described in *note + Shell Scripts::. 6. If the command was not begun asynchronously, the shell waits for the command to complete and collects its exit status. @@ -2654,7 +2878,8 @@ File: bashref.info, Node: Command Execution Environment, Next: Environment, P 3.7.3 Command Execution Environment ----------------------------------- -The shell has an EXECUTION ENVIRONMENT, which consists of the following: +The shell has an "execution environment", which consists of the +following: * open files inherited by the shell at invocation, as modified by redirections supplied to the 'exec' builtin @@ -2705,6 +2930,8 @@ inherited from the shell. A command invoked in this separate environment cannot affect the shell's execution environment. + A "subshell" is a copy of the shell process. + Command substitution, commands grouped with parentheses, and asynchronous commands are invoked in a subshell environment that is a duplicate of the shell environment, except that traps caught by the @@ -2729,12 +2956,12 @@ File: bashref.info, Node: Environment, Next: Exit Status, Prev: Command Execu ----------------- When a program is invoked it is given an array of strings called the -ENVIRONMENT. This is a list of name-value pairs, of the form +"environment". This is a list of name-value pairs, of the form 'name=value'. Bash 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 EXPORT to child +for each name found, automatically marking it for 'export' to child processes. Executed commands inherit the environment. The 'export' and 'declare -x' commands allow parameters and functions to be added to and deleted from the environment. If the value of a parameter in the @@ -2765,11 +2992,11 @@ File: bashref.info, Node: Exit Status, Next: Signals, Prev: Environment, Up: ----------------- The exit status of an executed command is the value returned by the -WAITPID system call or equivalent function. Exit statuses fall between -0 and 255, though, as explained below, the shell may use values above -125 specially. Exit statuses from shell builtins and compound commands -are also limited to this range. Under certain circumstances, the shell -will use special values to indicate specific failure modes. +'waitpid' system call or equivalent function. Exit statuses fall +between 0 and 255, though, as explained below, the shell may use values +above 125 specially. Exit statuses from shell builtins and compound +commands are also limited to this range. Under certain circumstances, +the shell will use special values to indicate specific failure modes. For the shell's purposes, a command which exits with a zero exit status has succeeded. A non-zero exit status indicates failure. This @@ -2795,6 +3022,9 @@ conditional and list constructs. All builtins return an exit status of 2 to indicate incorrect usage, generally invalid options or missing arguments. + The exit status of the last command is available in the special +parameter $? (*note Special Parameters::). +  File: bashref.info, Node: Signals, Prev: Exit Status, Up: Executing Commands @@ -2835,6 +3065,33 @@ the 'wait' builtin, the reception of a signal for which a trap has been set will cause the 'wait' builtin to return immediately with an exit status greater than 128, immediately after which the trap is executed. + When job control is not enabled, and Bash is waiting for a foreground +command to complete, the shell receives keyboard-generated signals such +as 'SIGINT' (usually generated by '^C') that users commonly intend to +send to that command. This happens because the shell and the command +are in the same process group as the terminal, and '^C' sends 'SIGINT' +to all processes in that process group. See *note Job Control::, for a +more in-depth discussion of process groups. + + When Bash is running without job control enabled and receives +'SIGINT' while waiting for a foreground command, it waits until that +foreground command terminates and then decides what to do about the +'SIGINT': + + 1. If the command terminates due to the 'SIGINT', Bash concludes that + the user meant to end the entire script, and acts on the 'SIGINT' + (e.g., by running a 'SIGINT' trap or exiting itself); + + 2. If the pipeline does not terminate due to 'SIGINT', the program + handled the 'SIGINT' itself and did not treat it as a fatal signal. + In that case, Bash does not treat 'SIGINT' as a fatal signal, + either, instead assuming that the 'SIGINT' was used as part of the + program's normal operation (e.g., 'emacs' uses it to abort editing + commands) or deliberately discarded. However, Bash will run any + trap set on 'SIGINT', as it does with any other trapped signal it + receives while it is waiting for the foreground command to + complete, for compatibility. +  File: bashref.info, Node: Shell Scripts, Prev: Executing Commands, Up: Basic Shell Features @@ -2857,8 +3114,8 @@ parameters are unset. A shell script may be made executable by using the 'chmod' command to turn on the execute bit. When Bash finds such a file while searching -the '$PATH' for a command, it spawns a subshell to execute it. In other -words, executing +the '$PATH' for a command, it creates a new instance of itself to +execute it. In other words, executing filename ARGUMENTS is equivalent to executing bash filename ARGUMENTS @@ -2962,19 +3219,20 @@ standard. Read and execute commands from the FILENAME argument in the current shell context. If FILENAME does not contain a slash, the 'PATH' - variable is used to find FILENAME. When Bash is not in POSIX mode, - the current directory is searched if FILENAME is not found in - '$PATH'. If any ARGUMENTS are supplied, they become the positional - parameters when FILENAME is executed. Otherwise the positional - parameters are unchanged. If the '-T' option is enabled, 'source' - inherits any trap on 'DEBUG'; if it is not, any 'DEBUG' trap string - is saved and restored around the call to 'source', and 'source' - unsets the 'DEBUG' trap while it executes. If '-T' is not set, and - the sourced file changes the 'DEBUG' trap, the new value is - retained when 'source' completes. The return status is the exit - status of the last command executed, or zero if no commands are - executed. If FILENAME is not found, or cannot be read, the return - status is non-zero. This builtin is equivalent to 'source'. + variable is used to find FILENAME, but FILENAME does not need to be + executable. When Bash is not in POSIX mode, it searches the + current directory if FILENAME is not found in '$PATH'. If any + ARGUMENTS are supplied, they become the positional parameters when + FILENAME is executed. Otherwise the positional parameters are + unchanged. If the '-T' option is enabled, '.' inherits any trap on + 'DEBUG'; if it is not, any 'DEBUG' trap string is saved and + restored around the call to '.', and '.' unsets the 'DEBUG' trap + while it executes. If '-T' is not set, and the sourced file + changes the 'DEBUG' trap, the new value is retained when '.' + completes. The return status is the exit status of the last + command executed, or zero if no commands are executed. If FILENAME + is not found, or cannot be read, the return status is non-zero. + This builtin is equivalent to 'source'. 'break' break [N] @@ -2988,10 +3246,9 @@ standard. cd [-L|[-P [-e]] [-@] [DIRECTORY] Change the current working directory to DIRECTORY. If DIRECTORY is - not supplied, the value of the 'HOME' shell variable is used. Any - additional arguments following DIRECTORY are ignored. If the shell - variable 'CDPATH' exists, it is used as a search path: each - directory name in 'CDPATH' is searched for DIRECTORY, with + not supplied, the value of the 'HOME' shell variable is used. If + the shell variable 'CDPATH' exists, it is used as a search path: + each directory name in 'CDPATH' is searched for DIRECTORY, with alternative directory names in 'CDPATH' separated by a colon (':'). If DIRECTORY begins with a slash, 'CDPATH' is not used. @@ -3022,6 +3279,11 @@ standard. absolute pathname of the new working directory is written to the standard output. + If the directory change is successful, 'cd' sets the value of the + 'PWD' environment variable to the new directory name, and sets the + 'OLDPWD' environment variable to the value of the current working + directory before the change. + The return status is zero if the directory is successfully changed, non-zero otherwise. @@ -3073,7 +3335,7 @@ standard. Mark each NAME to be passed to child processes in the environment. If the '-f' option is supplied, the NAMEs refer to shell functions; otherwise the names refer to shell variables. The '-n' option - means to no longer mark each NAME for export. If no NAMES are + means to no longer mark each NAME for export. If no NAMEs are supplied, or if the '-p' option is given, a list of names of all exported variables is displayed. The '-p' option displays output in a form that may be reused as input. If a variable name is @@ -3277,10 +3539,16 @@ standard. 4. Otherwise, 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 - arguments. Otherwise, the expression is parsed and evaluated - according to precedence using the rules listed above. + The following conditions are applied in the order listed. + + 1. If the first argument is '!', the result is the negation + of the three-argument expression composed of the + remaining arguments. + 2. If the first argument is exactly '(' and the fourth + argument is exactly ')', the result is the two-argument + test of the second and third arguments. + 3. Otherwise, the expression is parsed and evaluated + according to precedence using the rules listed above. 5 or more arguments The expression is parsed and evaluated according to precedence @@ -3369,7 +3637,7 @@ standard. given, each NAME refers to a shell variable and that variable is removed. If the '-f' option is given, the NAMEs refer to shell functions, and the function definition is removed. If the '-n' - option is supplied, and NAME is a variable with the NAMEREF + option is supplied, and NAME is a variable with the 'nameref' attribute, NAME will be unset rather than the variable it references. '-n' has no effect if the '-f' option is supplied. If no options are supplied, each NAME refers to a variable; if there @@ -3377,7 +3645,8 @@ standard. unset. Readonly variables and functions may not be unset. Some shell variables lose their special behavior if they are unset; such behavior is noted in the description of the individual variables. - The return status is zero unless a NAME is readonly. + The return status is zero unless a NAME is readonly or may not be + unset.  File: bashref.info, Node: Bash Builtins, Next: Modifying Shell Behavior, Prev: Bourne Shell Builtins, Up: Shell Builtin Commands @@ -3406,6 +3675,7 @@ standard. bind [-m KEYMAP] -x KEYSEQ:SHELL-COMMAND bind [-m KEYMAP] KEYSEQ:FUNCTION-NAME bind [-m KEYMAP] KEYSEQ:READLINE-COMMAND + bind READLINE-COMMAND-LINE Display current Readline (*note Command Line Editing::) key and function bindings, bind a key sequence to a Readline function or @@ -3470,10 +3740,13 @@ standard. 'READLINE_LINE' variable to the contents of the Readline line buffer and the 'READLINE_POINT' and 'READLINE_MARK' variables to the current location of the insertion point and the saved - insertion point (the MARK), respectively. If the executed - command changes the value of any of 'READLINE_LINE', - 'READLINE_POINT', or 'READLINE_MARK', those new values will be - reflected in the editing state. + insertion point (the MARK), respectively. The shell assigns + any numeric argument the user supplied to the + 'READLINE_ARGUMENT' variable. If there was no argument, that + variable is not set. If the executed command changes the + value of any of 'READLINE_LINE', 'READLINE_POINT', or + 'READLINE_MARK', those new values will be reflected in the + editing state. '-X' List all key sequences bound to shell commands and the @@ -3556,7 +3829,7 @@ standard. It is ignored in all other cases. The '-I' option causes local variables to inherit the attributes - (except the NAMEREF attribute) and value of any existing variable + (except the 'nameref' attribute) and value of any existing variable with the same NAME at a surrounding scope. If there is no existing variable, the local variable is initially unset. @@ -3583,7 +3856,7 @@ standard. attribute is disabled. '-n' - Give each NAME the NAMEREF attribute, making it a name + Give each NAME the 'nameref' attribute, making it a name reference to another variable. That other variable is defined by the value of NAME. All references, assignments, and attribute modifications to NAME, except for those using or @@ -3626,7 +3899,7 @@ standard. attempt is made to assign a value to a readonly variable, an attempt is made to assign a value to an array variable without using the compound assignment syntax (*note Arrays::), one of the - NAMES is not a valid shell variable name, an attempt is made to + NAMEs 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 attempt is made to display a non-existent function with '-f'. @@ -3699,13 +3972,20 @@ standard. The '-f' option means to load the new builtin command NAME from shared object FILENAME, on systems that support dynamic loading. - The '-d' option will delete a builtin loaded with '-f'. + Bash will use the value of the 'BASH_LOADABLES_PATH' variable as a + colon-separated list of directories in which to search for + FILENAME. The default is system-dependent. The '-d' option will + delete a builtin loaded with '-f'. If there are no options, a list of the shell builtins is displayed. The '-s' option restricts 'enable' to the POSIX special builtins. If '-s' is used with '-f', the new builtin becomes a special builtin (*note Special Builtins::). + If no options are supplied and a NAME is not a shell builtin, + 'enable' will attempt to load NAME from a shared object named NAME, + as if the command were 'enable -f NAME NAME'. + The return status is zero unless a NAME is not a shell builtin or there is an error loading a new builtin from a shared object. @@ -3826,6 +4106,9 @@ standard. '%q' Causes 'printf' to output the corresponding ARGUMENT in a format that can be reused as shell input. + '%Q' + like '%q', but applies any supplied precision to the ARGUMENT + before quoting it. '%(DATEFMT)T' Causes 'printf' to output the date-time string resulting from using DATEFMT as a format string for 'strftime'(3). The @@ -3934,8 +4217,9 @@ standard. partial input read into the specified variable NAME. If TIMEOUT is 0, 'read' returns immediately, without trying to read any data. The exit status is 0 if input is available on - the specified file descriptor, non-zero otherwise. The exit - status is greater than 128 if the timeout is exceeded. + the specified file descriptor, or the read will return EOF, + non-zero otherwise. The exit status is greater than 128 if + the timeout is exceeded. '-u FD' Read input from file descriptor FD. @@ -3991,7 +4275,7 @@ standard. If the '-f' option is used, 'type' does not attempt to find shell functions, as with the 'command' builtin. - The return status is zero if all of the NAMES are found, non-zero + The return status is zero if all of the NAMEs are found, non-zero if any are not found. 'typeset' @@ -4135,8 +4419,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-NAME] [ARGUMENT ...] - set [+abefhkmnptuvxBCEHPT] [+o OPTION-NAME] [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 @@ -4317,14 +4601,19 @@ parameters, or to display the names and values of shell variables. causes the effective user and group ids to be set to the real user and group ids. + '-r' + Enable restricted shell mode. This option cannot be unset + once it has been set. + '-t' Exit after reading and executing one command. '-u' Treat unset variables and parameters other than the special - parameters '@' or '*' as an error when performing parameter - expansion. An error message will be written to the standard - error, and a non-interactive shell will exit. + parameters '@' or '*', or array variables subscripted with '@' + or '*', as an error when performing parameter expansion. An + error message will be written to the standard error, and a + non-interactive shell will exit. '-v' Print shell input lines as they are read. @@ -4421,7 +4710,7 @@ This builtin allows you to change additional shell optional behavior. option is used, those available with the '-o' option to the 'set' builtin command (*note The Set Builtin::). With no options, or with the '-p' option, a list of all settable options is displayed, - with an indication of whether or not each is set; if OPTNAMES are + with an indication of whether or not each is set; if OPTNAMEs are supplied, the output is restricted to those options. The '-p' option causes output to be displayed in a form that may be reused as input. Other options have the following meanings: @@ -4435,7 +4724,7 @@ This builtin allows you to change additional shell optional behavior. '-q' Suppresses normal output; the return status indicates whether the OPTNAME is set or unset. If multiple OPTNAME arguments - are given with '-q', the return status is zero if all OPTNAMES + are given with '-q', the return status is zero if all OPTNAMEs are enabled; non-zero otherwise. '-o' @@ -4448,7 +4737,7 @@ This builtin allows you to change additional shell optional behavior. Unless otherwise noted, the 'shopt' options are disabled (off) by default. - The return status when listing options is zero if all OPTNAMES are + The return status when listing options is zero if all OPTNAMEs are enabled, non-zero otherwise. When setting or unsetting options, the return status is zero unless an OPTNAME is not a valid shell option. @@ -4532,7 +4821,7 @@ This builtin allows you to change additional shell optional behavior. 'direxpand' If set, Bash replaces directory names with the results of word expansion when performing filename completion. This changes - the contents of the readline editing buffer. If not set, Bash + the contents of the Readline editing buffer. If not set, Bash attempts to preserve what the user typed. 'dirspell' @@ -4616,6 +4905,11 @@ This builtin allows you to change additional shell optional behavior. upper-case and lower-case ASCII characters will collate together. + 'globskipdots' + If set, filename expansion will never match the filenames '.' + and '..', even if the pattern begins with a '.'. This option + is enabled by default. + 'globstar' If set, the pattern '**' used in a filename expansion context will match all files and zero or more directories and @@ -4675,7 +4969,7 @@ This builtin allows you to change additional shell optional behavior. 'localvar_inherit' If set, local variables inherit the value and attributes of a variable of the same name that exists at a previous scope - before any new value is assigned. The NAMEREF attribute is + before any new value is assigned. The 'nameref' attribute is not inherited. 'localvar_unset' @@ -4706,14 +5000,26 @@ This builtin allows you to change additional shell optional behavior. 'nocasematch' If set, Bash matches patterns in a case-insensitive fashion when performing matching while executing 'case' or '[[' - conditional commands, when performing pattern substitution - word expansions, or when filtering possible completions as - part of programmable completion. + conditional commands (*note Conditional Constructs::, when + performing pattern substitution word expansions, or when + filtering possible completions as part of programmable + completion. + + 'noexpand_translation' + If set, Bash encloses the translated results of $"..." + quoting in single quotes instead of double quotes. If the + string is not translated, this has no effect. 'nullglob' If set, Bash allows filename patterns which match no files to expand to a null string, rather than themselves. + 'patsub_replacement' + If set, Bash expands occurrences of '&' in the replacement + string of pattern substitution to the text matched by the + pattern, as described above (*note Shell Parameter + Expansion::). This option is enabled by default. + 'progcomp' If set, the programmable completion facilities (*note Programmable Completion::) are enabled. This option is @@ -4745,9 +5051,15 @@ This builtin allows you to change additional shell optional behavior. parameters. 'sourcepath' - If set, the 'source' builtin uses the value of 'PATH' to find - the directory containing the file supplied as an argument. - This option is enabled by default. + If set, the '.' ('source') builtin uses the value of 'PATH' to + find the directory containing the file supplied as an + argument. This option is enabled by default. + + 'varredir_close' + If set, the shell automatically closes file descriptors + assigned using the '{varname}' redirection syntax (*note + Redirections::) instead of leaving them open when the command + completes. 'xpg_echo' If set, the 'echo' builtin expands backslash-escape sequences @@ -4980,7 +5292,7 @@ Variables::). 'BASH_LINENO' An array variable whose members are the line numbers in source - files where each corresponding member of FUNCNAME was invoked. + files where each corresponding member of 'FUNCNAME' was invoked. '${BASH_LINENO[$i]}' is the line number in the source file ('${BASH_SOURCE[$i+1]}') where '${FUNCNAME[$i]}' was called (or '${BASH_LINENO[$i-1]}' if referenced within another shell @@ -5017,10 +5329,10 @@ Variables::). to the array members are as follows: 'BASH_VERSINFO[0]' - The major version number (the RELEASE). + The major version number (the "release"). 'BASH_VERSINFO[1]' - The minor version number (the VERSION). + The minor version number (the "version"). 'BASH_VERSINFO[2]' The patch level. @@ -5029,7 +5341,7 @@ Variables::). The build version. 'BASH_VERSINFO[4]' - The release status (e.g., BETA1). + The release status (e.g., 'beta1'). 'BASH_VERSINFO[5]' The value of 'MACHTYPE'. @@ -5082,12 +5394,12 @@ Variables::). 'COMP_TYPE' Set to an integer value corresponding to the type of completion - attempted that caused a completion function to be called: TAB, for - normal completion, '?', for listing completions after successive - tabs, '!', for listing alternatives on partial word completion, - '@', to list completions if the word is not unmodified, or '%', for - menu completion. This variable is available only in shell - functions and external commands invoked by the programmable + attempted that caused a completion function to be called: , + for normal completion, '?', for listing completions after + successive tabs, '!', for listing alternatives on partial word + completion, '@', to list completions if the word is not unmodified, + or '%', for menu completion. This variable is available only in + shell functions and external commands invoked by the programmable completion facilities (*note Programmable Completion::). 'COMP_KEY' @@ -5133,7 +5445,7 @@ Variables::). Emacs shell buffer and disables line editing. 'ENV' - Expanded and executed similarlty to 'BASH_ENV' (*note Bash Startup + Expanded and executed similarly to 'BASH_ENV' (*note Bash Startup Files::) when an interactive shell is invoked in POSIX Mode (*note Bash POSIX Mode::). @@ -5141,16 +5453,16 @@ Variables::). Each time this parameter is referenced, it expands to the number of seconds since the Unix Epoch as a floating point value with micro-second granularity (see the documentation for the C library - function TIME for the definition of Epoch). Assignments to + function 'time' for the definition of Epoch). Assignments to 'EPOCHREALTIME' are ignored. If 'EPOCHREALTIME' is unset, it loses its special properties, even if it is subsequently reset. 'EPOCHSECONDS' Each time this parameter is referenced, it expands to the number of seconds since the Unix Epoch (see the documentation for the C - library function TIME for the definition of Epoch). Assignments to - 'EPOCHSECONDS' are ignored. If 'EPOCHSECONDS' is unset, it loses - its special properties, even if it is subsequently reset. + library function 'time' for the definition of Epoch). Assignments + to 'EPOCHSECONDS' are ignored. If 'EPOCHSECONDS' is unset, it + loses its special properties, even if it is subsequently reset. 'EUID' The numeric effective user id of the current user. This variable @@ -5217,7 +5529,7 @@ Variables::). 'histchars' Up to three characters which control history expansion, quick substitution, and tokenization (*note History Interaction::). The - first character is the HISTORY EXPANSION character, that is, the + first character is the "history expansion" character, that is, the character which signifies the start of a history expansion, normally '!'. The second character is the character which signifies 'quick substitution' when seen as the first character on @@ -5295,7 +5607,7 @@ Variables::). 'HISTTIMEFORMAT' If this variable is set and not null, its value is used as a format - string for STRFTIME to print the time stamp associated with each + string for 'strftime' to print the time stamp associated with each history entry displayed by the 'history' builtin. If this variable is set, time stamps are written to the history file so they may be preserved across shell sessions. This uses the history comment @@ -5449,7 +5761,7 @@ Variables::). with '#? ' 'PS4' - The value of this parameter is expanded like PS1 and the expanded + The value of this parameter is expanded like 'PS1' and the expanded value is the prompt printed before the command line is echoed when the '-x' option is set (*note The Set Builtin::). The first character of the expanded value is replicated multiple times, as @@ -5465,15 +5777,19 @@ Variables::). seeds the random number generator. If 'RANDOM' is unset, it loses its special properties, even if it is subsequently reset. +'READLINE_ARGUMENT' + Any numeric argument given to a Readline command that was defined + using 'bind -x' (*note Bash Builtins:: when it was invoked. + 'READLINE_LINE' The contents of the Readline line buffer, for use with 'bind -x' (*note Bash Builtins::). 'READLINE_MARK' - The position of the MARK (saved insertion point) in the Readline + The position of the "mark" (saved insertion point) in the Readline line buffer, for use with 'bind -x' (*note Bash Builtins::). The characters between the insertion point and the mark are often - called the REGION. + called the "region". 'READLINE_POINT' The position of the insertion point in the Readline line buffer, @@ -5487,7 +5803,7 @@ Variables::). started. Assignment to this variable resets the count to the value assigned, and the expanded value becomes the value assigned plus the number of seconds since the assignment. The number of seconds - at shell invocation and the current time is always determined by + at shell invocation and the current time are always determined by querying the system clock. If 'SECONDS' is unset, it loses its special properties, even if it is subsequently reset. @@ -5843,14 +6159,15 @@ Invoked by remote shell daemon .............................. Bash attempts to determine when it is being run with its standard input -connected to a network connection, as when executed by the remote shell -daemon, usually '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 neither 'rshd' nor 'sshd' generally invoke -the shell with those options or allow them to be specified. +connected to a network connection, as when executed by the historical +remote shell daemon, usually 'rshd', or the secure shell daemon 'sshd'. +If Bash determines it is being run non-interactively 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 neither 'rshd' nor 'sshd' +generally invoke the shell with those options or allow them to be +specified. Invoked with unequal effective and real UID/GIDs ................................................ @@ -5874,7 +6191,7 @@ File: bashref.info, Node: Interactive Shells, Next: Bash Conditional Expressio * What is an Interactive Shell?:: What determines whether a shell is Interactive. * Is this Shell Interactive?:: How to tell if a shell is interactive. -* Interactive Shell Behavior:: What changes in a interactive shell? +* Interactive Shell Behavior:: What changes in an interactive shell?  File: bashref.info, Node: What is an Interactive Shell?, Next: Is this Shell Interactive?, Up: Interactive Shells @@ -5882,8 +6199,8 @@ File: bashref.info, Node: What is an Interactive Shell?, Next: Is this Shell I 6.3.1 What is an Interactive Shell? ----------------------------------- -An interactive shell is one started without non-option arguments, unless -'-s' is specified, without specifying the '-c' option, and whose input +An interactive shell is one started without non-option arguments (unless +'-s' is specified) and without specifying the '-c' option, whose input and error output are both connected to terminals (as determined by 'isatty(3)'), or one started with the '-i' option. @@ -5941,7 +6258,7 @@ several ways. string escape sequences. 4. Bash executes the values of the set elements of the - 'PROMPT_COMMANDS' array variable as commands before printing the + 'PROMPT_COMMAND' array variable as commands before printing the primary prompt, '$PS1' (*note Bash Variables::). 5. Readline (*note Command Line Editing::) is used to read commands @@ -5993,9 +6310,11 @@ several ways. 19. Parser syntax errors will not cause the shell to exit. - 20. Simple spelling correction for directory arguments to the 'cd' - builtin is enabled by default (see the description of the 'cdspell' - option to the 'shopt' builtin in *note The Shopt Builtin::). + 20. If the 'cdspell' shell option is enabled, the shell will attempt + simple spelling correction for directory arguments to the 'cd' + builtin (see the description of the 'cdspell' option to the 'shopt' + builtin in *note The Shopt Builtin::). The 'cdspell' option is + only effective in interactive shells. 21. The shell will check the value of the 'TMOUT' variable and exit if a command is not read within the specified number of seconds after @@ -6007,10 +6326,11 @@ File: bashref.info, Node: Bash Conditional Expressions, Next: Shell Arithmetic 6.4 Bash Conditional Expressions ================================ -Conditional expressions are used by the '[[' compound command and the -'test' and '[' builtin commands. The 'test' and '[' commands determine -their behavior based on the number of arguments; see the descriptions of -those commands for any other command-specific actions. +Conditional expressions are used by the '[[' compound command (*note +Conditional Constructs::) and the 'test' and '[' builtin commands (*note +Bourne Shell Builtins::). The 'test' and '[' commands determine their +behavior based on the number of arguments; see the descriptions of those +commands for any other command-specific actions. Expressions may be unary or binary, and are formed from the following primaries. Unary expressions are often used to examine the status of a @@ -6228,8 +6548,8 @@ 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 INTEGER attribute using 'declare -i' is assigned a value. A -null value evaluates to 0. A shell variable need not have its INTEGER +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. Integer constants follow the C language definition, without suffixes @@ -6254,7 +6574,7 @@ File: bashref.info, Node: Aliases, Next: Arrays, Prev: Shell Arithmetic, Up: 6.6 Aliases =========== -ALIASES allow a string to be substituted for a word when it is used as +"Aliases" 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 'alias' and 'unalias' builtin commands. @@ -6269,15 +6589,15 @@ 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 'ls' to '"ls -F"', for instance, and Bash does not try to recursively expand the replacement text. If the last character of the alias value -is a BLANK, then the next command word following the alias is also +is a 'blank', then the next command word following the alias is also checked for alias expansion. Aliases are created and listed with the 'alias' command, and removed with the 'unalias' command. There is no mechanism for using arguments in the replacement text, as -in 'csh'. If arguments are needed, a shell function should be used -(*note Shell Functions::). +in 'csh'. If arguments are needed, use a shell function (*note Shell +Functions::). Aliases are not expanded when the shell is not interactive, unless the 'expand_aliases' shell option is set using 'shopt' (*note The Shopt @@ -6363,6 +6683,10 @@ negative number, that number is interpreted as relative to one greater than the maximum index of NAME, so negative indices count back from the end of the array, and an index of -1 references the last element. + The '+=' operator will append to an array variable when assigning +using the compound assignment syntax; see *note Shell Parameters:: +above. + Any element of an array may be referenced using '${NAME[SUBSCRIPT]}'. The braces are required to avoid conflicts with the shell's filename expansion operators. If the SUBSCRIPT is '@' or '*', the word expands @@ -6402,7 +6726,11 @@ NAME[SUBSCRIPT]' destroys the array element at index SUBSCRIPT. Negative subscripts to indexed arrays are interpreted as described above. Unsetting the last element of an array variable does not unset the variable. 'unset NAME', where NAME is an array, removes the entire -array. A subscript of '*' or '@' also removes the entire array. +array. 'unset NAME[SUBSCRIPT]' behaves differently depending on the +array type when given a subscript of '*' or '@'. When NAME is an +associative array, it removes the element with key '*' or '@'. If NAME +is an indexed array, 'unset' removes all of the elements, but does not +remove the array itself. When using a variable name with a subscript as an argument to a command, such as with 'unset', without using the word expansion syntax @@ -6477,10 +6805,14 @@ File: bashref.info, Node: Directory Stack Builtins, Up: The Directory Stack 'popd' popd [-n] [+N | -N] + Removes elements from the directory stack. The elements are + numbered from 0 starting at the first directory listed by 'dirs'; + that is, 'popd' is equivalent to 'popd +0'. + When no arguments are given, 'popd' removes the top directory from - the stack and performs a 'cd' to the new top directory. The - elements are numbered from 0 starting at the first directory listed - with 'dirs'; that is, 'popd' is equivalent to 'popd +0'. + the stack and changes to the new top directory. + + Arguments, if supplied, have the following meanings: '-n' Suppresses the normal change of directory when removing @@ -6488,17 +6820,32 @@ File: bashref.info, Node: Directory Stack Builtins, Up: The Directory Stack manipulated. '+N' Removes the Nth directory (counting from the left of the list - printed by 'dirs'), starting with zero. + printed by 'dirs'), starting with zero, from the stack. '-N' Removes the Nth directory (counting from the right of the list - printed by 'dirs'), starting with zero. + printed by 'dirs'), starting with zero, from the stack. + + If the top element of the directory stack is modified, and the '-n' + option was not supplied, 'popd' uses the 'cd' builtin to change to + the directory at the top of the stack. If the 'cd' fails, 'popd' + returns a non-zero value. + + Otherwise, 'popd' returns an unsuccessful status if an invalid + option is encountered, the directory stack is empty, or a + non-existent directory stack entry is specified. + + If the 'popd' command is successful, Bash runs 'dirs' to show the + final contents of the directory stack, and the return status is 0. 'pushd' pushd [-n] [+N | -N | DIR] - Save the current directory on the top of the directory stack and - then 'cd' to DIR. With no arguments, 'pushd' exchanges the top two - directories and makes the new top the current directory. + 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, 'pushd' exchanges the top two + elements of the directory stack. + + Arguments, if supplied, have the following meanings: '-n' Suppresses the normal change of directory when rotating or @@ -6513,9 +6860,20 @@ File: bashref.info, Node: Directory Stack Builtins, Up: The Directory Stack printed by 'dirs', starting with zero) to the top of the list by rotating the stack. 'DIR' - Makes DIR be the top of the stack, making it the new current - directory as if it had been supplied as an argument to the - 'cd' builtin. + Makes DIR be the top of the stack. + + After the stack has been modified, if the '-n' option was not + supplied, 'pushd' uses the 'cd' builtin to change to the directory + at the top of the stack. If the 'cd' fails, 'pushd' returns a + non-zero value. + + Otherwise, if no arguments are supplied, 'pushd' returns 0 unless + the directory stack is empty. When rotating the directory stack, + 'pushd' returns 0 unless the directory stack is empty or a + non-existent directory stack element is specified. + + If the 'pushd' command is successful, Bash runs 'dirs' to show the + final contents of the directory stack.  File: bashref.info, Node: Controlling the Prompt, Next: The Restricted Shell, Prev: The Directory Stack, Up: Bash Features @@ -6523,9 +6881,9 @@ File: bashref.info, Node: Controlling the Prompt, Next: The Restricted Shell, 6.9 Controlling the Prompt ========================== -Bash examines the value of the array variable 'PROMPT_COMMANDS' just +Bash examines the value of the array variable 'PROMPT_COMMAND' just before printing each primary prompt. If any elements in -'PROMPT_COMMANDS' are set and non-null, Bash executes each value, in +'PROMPT_COMMAND' are set and non-null, Bash executes each value, in numeric order, just as if it had been typed on the command line. In addition, the following table describes the special characters @@ -6571,8 +6929,8 @@ which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4': '\V' The release of Bash, version + patchlevel (e.g., 2.00.0) '\w' - The current working directory, with '$HOME' abbreviated with a - tilde (uses the '$PROMPT_DIRTRIM' variable). + The value of the 'PWD' shell variable ('$PWD'), with '$HOME' + abbreviated with a tilde (uses the '$PROMPT_DIRTRIM' variable). '\W' The basename of '$PWD', with '$HOME' abbreviated with a tilde. '\!' @@ -6638,7 +6996,8 @@ with the exception that the following are disallowed or not performed: * Using the 'enable' builtin command to enable disabled shell builtins. * Specifying the '-p' option to the 'command' builtin. - * Turning off restricted mode with 'set +r' or 'set +o restricted'. + * Turning off restricted mode with 'set +r' or 'shopt -u + restricted_shell'. These restrictions are enforced after any startup files are read. @@ -6649,11 +7008,11 @@ spawned to execute the script. The restricted shell mode is only one component of a useful restricted environment. It should be accompanied by setting 'PATH' to a value that allows execution of only a few verified commands (commands -that allow shell escapes are particularly vulnerable), leaving the user -in a non-writable directory other than his home directory after login, -not allowing the restricted shell to execute shell scripts, and cleaning -the environment of variables that cause some commands to modify their -behavior (e.g., 'VISUAL' or 'PAGER'). +that allow shell escapes are particularly vulnerable), changing the +current directory to a non-writable directory other than '$HOME' after +login, not allowing the restricted shell to execute shell scripts, and +cleaning the environment of variables that cause some commands to modify +their behavior (e.g., 'VISUAL' or 'PAGER'). Modern systems provide more secure ways to implement a restricted environment, such as 'jails', 'zones', or 'containers'. @@ -6696,203 +7055,219 @@ startup files. 7. Reserved words appearing in a context where reserved words are recognized do not undergo alias expansion. - 8. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number + 8. Alias expansion is performed when initially parsing a command + substitution. The default mode generally defers it, when enabled, + until the command substitution is executed. This means that + command substitution will not expand aliases that are defined after + the command substitution is initially parsed (e.g., as part of a + function definition). + + 9. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number and '!!' to '!' are enabled, and parameter expansion is performed on the values of 'PS1' and 'PS2' regardless of the setting of the 'promptvars' option. - 9. The POSIX startup files are executed ('$ENV') rather than the + 10. The POSIX startup files are executed ('$ENV') rather than the normal Bash files. - 10. Tilde expansion is only performed on assignments preceding a + 11. Tilde expansion is only performed on assignments preceding a command name, rather than on all assignment statements on the line. - 11. The default history file is '~/.sh_history' (this is the default + 12. The default history file is '~/.sh_history' (this is the default value of '$HISTFILE'). - 12. Redirection operators do not perform filename expansion on the + 13. Redirection operators do not perform filename expansion on the word in the redirection unless the shell is interactive. - 13. Redirection operators do not perform word splitting on the word in + 14. Redirection operators do not perform word splitting on the word in the redirection. - 14. Function names must be valid shell 'name's. That is, they may not + 15. Function names must be valid shell 'name's. That is, they may not contain characters other than letters, digits, and underscores, and may not start with a digit. Declaring a function with an invalid name causes a fatal syntax error in non-interactive shells. - 15. Function names may not be the same as one of the POSIX special + 16. Function names may not be the same as one of the POSIX special builtins. - 16. POSIX special builtins are found before shell functions during + 17. POSIX special builtins are found before shell functions during command lookup. - 17. When printing shell function definitions (e.g., by 'type'), Bash + 18. When printing shell function definitions (e.g., by 'type'), Bash does not print the 'function' keyword. - 18. Literal tildes that appear as the first character in elements of + 19. Literal tildes that appear as the first character in elements of the 'PATH' variable are not expanded as described above under *note Tilde Expansion::. - 19. The 'time' reserved word may be used by itself as a command. When + 20. The 'time' reserved word may be used by itself as a command. When used in this way, it displays timing statistics for the shell and its completed children. The 'TIMEFORMAT' variable controls the format of the timing information. - 20. When parsing and expanding a ${...} expansion that appears within + 21. When parsing and expanding a ${...} expansion that appears within double quotes, single quotes are no longer special and cannot be used to quote a closing brace or other special character, unless the operator is one of those defined to perform pattern removal. In this case, they do not have to appear as matched pairs. - 21. The parser does not recognize 'time' as a reserved word if the + 22. The parser does not recognize 'time' as a reserved word if the next token begins with a '-'. - 22. The '!' character does not introduce history expansion within a + 23. The '!' character does not introduce history expansion within a double-quoted string, even if the 'histexpand' option is enabled. - 23. If a POSIX special builtin returns an error status, a + 24. If a POSIX special builtin returns an error status, a non-interactive shell exits. The fatal errors are those listed in the POSIX standard, and include things like passing incorrect options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. - 24. A non-interactive shell exits with an error status if a variable + 25. 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. - 25. A non-interactive shell exits with an error status if a variable + 26. A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a - special builtin, but not with any other simple command. + special builtin, but not with any other simple command. For any + other simple command, the shell aborts execution of that command, + and execution continues at the top level ("the shell shall not + perform any further processing of the command in which the error + occurred"). - 26. A non-interactive shell exits with an error status if the + 27. 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. - 27. Non-interactive shells exit if FILENAME in '.' FILENAME is not + 28. Non-interactive shells exit if FILENAME in '.' FILENAME is not found. - 28. Non-interactive shells exit if a syntax error in an arithmetic + 29. Non-interactive shells exit if a syntax error in an arithmetic expansion results in an invalid expression. - 29. Non-interactive shells exit if a parameter expansion error occurs. + 30. Non-interactive shells exit if a parameter expansion error occurs. - 30. Non-interactive shells exit if there is a syntax error in a script + 31. Non-interactive shells exit if there is a syntax error in a script read with the '.' or 'source' builtins, or in a string processed by the 'eval' builtin. - 31. While variable indirection is available, it may not be applied to + 32. While variable indirection is available, it may not be applied to the '#' and '?' special parameters. - 32. When expanding the '*' special parameter in a pattern context - where the expansion is double-quoted does not treat the '$*' as if - it were double-quoted. + 33. Expanding the '*' special parameter in a pattern context where the + expansion is double-quoted does not treat the '$*' as if it were + double-quoted. - 33. Assignment statements preceding POSIX special builtins persist in + 34. Assignment statements preceding POSIX special builtins persist in the shell environment after the builtin completes. - 34. The 'command' builtin does not prevent builtins that take + 35. The 'command' builtin does not prevent builtins that take assignment statements as arguments from expanding them as assignment statements; when not in POSIX mode, assignment builtins lose their assignment statement expansion properties when preceded by 'command'. - 35. The 'bg' builtin uses the required format to describe each job + 36. The 'bg' builtin uses the required format to describe each job placed in the background, which does not include an indication of whether the job is the current or previous job. - 36. The output of 'kill -l' prints all the signal names on a single + 37. The output of 'kill -l' prints all the signal names on a single line, separated by spaces, without the 'SIG' prefix. - 37. The 'kill' builtin does not accept signal names with a 'SIG' + 38. The 'kill' builtin does not accept signal names with a 'SIG' prefix. - 38. The 'export' and 'readonly' builtin commands display their output + 39. The 'export' and 'readonly' builtin commands display their output in the format required by POSIX. - 39. The 'trap' builtin displays signal names without the leading + 40. The 'trap' builtin displays signal names without the leading 'SIG'. - 40. The 'trap' builtin doesn't check the first argument for a possible + 41. The 'trap' builtin doesn't check the first argument for a possible signal specification and revert the signal handling to the original disposition if it is, unless that argument consists solely of digits and is a valid signal number. If users want to reset the handler for a given signal to the original disposition, they should use '-' as the first argument. - 41. 'trap -p' displays signals whose dispositions are set to SIG_DFL + 42. 'trap -p' displays signals whose dispositions are set to SIG_DFL and those that were ignored when the shell started. - 42. The '.' and 'source' builtins do not search the current directory + 43. The '.' and 'source' builtins do not search the current directory for the filename argument if it is not found by searching 'PATH'. - 43. Enabling POSIX mode has the effect of setting the + 44. Enabling POSIX mode has the effect of setting the 'inherit_errexit' option, so subshells spawned to execute command substitutions inherit the value of the '-e' option from the parent shell. When the 'inherit_errexit' option is not enabled, Bash clears the '-e' option in such subshells. - 44. Enabling POSIX mode has the effect of setting the 'shift_verbose' + 45. Enabling POSIX mode has the effect of setting the 'shift_verbose' option, so numeric arguments to 'shift' that exceed the number of positional parameters will result in an error message. - 45. When the 'alias' builtin displays alias definitions, it does not + 46. When the 'alias' builtin displays alias definitions, it does not display them with a leading 'alias ' unless the '-p' option is supplied. - 46. When the 'set' builtin is invoked without options, it does not + 47. When the 'set' builtin is invoked without options, it does not display shell function names and definitions. - 47. When the 'set' builtin is invoked without options, it displays + 48. When the 'set' builtin is invoked without options, it displays variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. - 48. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname + 49. When the 'cd' builtin is invoked in logical mode, and the pathname constructed from '$PWD' and the directory name supplied as an argument does not refer to an existing directory, 'cd' will fail - instead of falling back to PHYSICAL mode. + instead of falling back to physical mode. - 49. When the 'cd' builtin cannot change a directory because the length + 50. When the 'cd' builtin cannot change a directory because the length of the pathname constructed from '$PWD' and the directory name - supplied as an argument exceeds PATH_MAX when all symbolic links + supplied as an argument exceeds 'PATH_MAX' when all symbolic links are expanded, 'cd' will fail instead of attempting to use only the supplied directory name. - 50. The 'pwd' builtin verifies that the value it prints is the same as + 51. 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. - 51. When listing the history, the 'fc' builtin does not include an + 52. When listing the history, the 'fc' builtin does not include an indication of whether or not a history entry has been modified. - 52. The default editor used by 'fc' is 'ed'. + 53. The default editor used by 'fc' is 'ed'. - 53. The 'type' and 'command' builtins will not report a non-executable + 54. 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'. - 54. The 'vi' editing mode will invoke the 'vi' editor directly when + 55. The 'vi' editing mode will invoke the 'vi' editor directly when the 'v' command is run, instead of checking '$VISUAL' and '$EDITOR'. - 55. When the 'xpg_echo' option is enabled, Bash does not attempt to + 56. 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. - 56. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' + 57. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' and '-f' options. - 57. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + 58. 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. - 58. The 'read' builtin may be interrupted by a signal for which a trap + 59. The 'read' builtin may be interrupted by a signal for which a trap has been set. If Bash receives a trapped signal while executing 'read', the trap handler executes and 'read' returns an exit status greater than 128. - 59. Bash removes an exited background process's status from the list + 60. The 'printf' builtin uses 'double' (via 'strtod') to convert + arguments corresponding to floating point conversion specifiers, + instead of 'long double' if it's available. The 'L' length + modifier forces 'printf' to use 'long double' if it's available. + + 61. Bash removes an exited background process's status from the list of such statuses after the 'wait' builtin is used to obtain it. There is other POSIX behavior that Bash does not implement by default @@ -6915,7 +7290,7 @@ File: bashref.info, Node: Shell Compatibility Mode, Prev: Bash POSIX Mode, Up 6.12 Shell Compatibility Mode ============================= -Bash-4.0 introduced the concept of a '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', 'compat41', and so on). There is only one current compatibility level - each option is mutually exclusive. The @@ -6927,7 +7302,7 @@ be a temporary solution. This section 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). +word, which is default behavior in bash-3.2 and subsequent versions). If a user enables, say, 'compat32', it may affect the behavior of other compatibility levels up to and including the current compatibility @@ -7004,8 +7379,8 @@ required for bash-5.1 and later versions. 'compat43' * the shell does not print a warning message if an attempt is made to use a quoted compound assignment as an argument to - declare (declare -a foo='(1 2)'). Later versions warn that - this usage is deprecated + declare (e.g., declare -a foo='(1 2)'). Later versions warn + that this usage is deprecated * word expansion errors are considered non-fatal errors that cause the current command to fail, even in posix mode (the default behavior is to make them fatal errors that cause the @@ -7040,6 +7415,38 @@ required for bash-5.1 and later versions. when producing output that can be reused as input. Bash-5.1 suppresses that message when the '-l' option is supplied. +'compat51 (set using BASH_COMPAT)' + * The 'unset' builtin will unset the array 'a' given an argument + like 'a[@]'. Bash-5.2 will unset an element with key '@' + (associative arrays) or remove all the elements without + unsetting the array (indexed arrays) + * arithmetic commands ( ((...)) ) and the expressions in an + arithmetic for statement can be expanded more than once + * expressions used as arguments to arithmetic operators in the + '[[' conditional command can be expanded more than once + * the expressions in substring parameter brace expansion can be + expanded more than once + * the expressions in the $(( ... )) word expansion can be + expanded more than once + * arithmetic expressions used as indexed array subscripts can be + expanded more than once + * 'test -v', when given an argument of 'A[@]', where A is an + existing associative array, will return true if the array has + any set elements. Bash-5.2 will look for and report on a key + named '@' + * the ${PARAMETER[:]=VALUE} word expansion will return VALUE, + before any variable-specific transformations have been + performed (e.g., converting to lowercase). Bash-5.2 will + return the final value assigned to the variable. + * Parsing command substitutions will behave as if extended glob + (*note The Shopt Builtin::) is enabled, so that parsing a + command substitution containing an extglob pattern (say, as + part of a shell function) will not fail. This assumes the + intent is to enable extglob before the command is executed and + word expansions are performed. It will fail at word expansion + time if extglob hasn't been enabled by the time the command is + executed. +  File: bashref.info, Node: Job Control, Next: Command Line Editing, Prev: Bash Features, Up: Top @@ -7093,19 +7500,19 @@ when 'stty tostop' is in effect) the terminal are sent a 'SIGTTIN' caught, suspends the process. If the operating system on which Bash is running supports job -control, Bash contains facilities to use it. Typing the SUSPEND +control, Bash contains facilities to use it. Typing the "suspend" character (typically '^Z', Control-Z) while a process is running causes that process to be stopped and returns control to Bash. Typing the -DELAYED SUSPEND character (typically '^Y', Control-Y) causes the process -to be stopped when it attempts to read input from the terminal, and -control to be returned to Bash. The user then manipulates the state of -this job, using the 'bg' command to continue it in the background, the -'fg' command to continue it in the foreground, or the 'kill' command to -kill it. A '^Z' takes effect immediately, and has the additional side -effect of causing pending output and typeahead to be discarded. +"delayed suspend" character (typically '^Y', Control-Y) causes the +process to be stopped when it attempts to read input from the terminal, +and control to be returned to Bash. The user then manipulates the state +of this job, using the 'bg' command to continue it in the background, +the 'fg' command to continue it in the foreground, or the 'kill' command +to kill it. A '^Z' 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 -character '%' introduces a job specification (JOBSPEC). +character '%' introduces a job specification ("jobspec"). Job number 'n' may be referred to as '%n'. The symbols '%%' and '%+' refer to the shell's notion of the current job, which is the last job @@ -7234,7 +7641,7 @@ File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables, for all running background jobs and the last-executed process substitution, if its process id is the same as $!, and the return status is zero. If the '-n' option is supplied, 'wait' waits for a - single job from the list of PIDS or JOBSPECS or, if no arguments + single job from the list of PIDs or JOBSPECs or, if no arguments are supplied, any job, to complete and returns its exit status. If none of the supplied arguments is a child of the shell, or if no arguments are supplied and the shell has no unwaited-for children, @@ -7245,9 +7652,12 @@ File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables, assignment. This is useful only when the '-n' option is supplied. Supplying the '-f' option, when job control is enabled, forces 'wait' to wait for each PID or JOBSPEC to terminate before - returning its status, intead of returning when it changes status. + returning its status, instead of returning when it changes status. If neither JOBSPEC nor PID specifies an active child process of the - shell, the return status is 127. + shell, the return status is 127. If 'wait' is interrupted by a + signal, the return status will be greater than 128, as described + above (*note Signals::). Otherwise, the return status is the exit + status of the last process or job waited for. 'disown' disown [-ar] [-h] [JOBSPEC ... | PID ... ] @@ -7265,8 +7675,11 @@ File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables, suspend [-f] Suspend the execution of this shell until it receives a 'SIGCONT' - signal. A login shell cannot be suspended; the '-f' option can be - used to override this and force the suspension. + signal. A login shell, or a shell without job control enabled, + cannot be suspended; the '-f' option can be used to override this + and force the suspension. The return status is 0 unless the shell + is a login shell or job control is not enabled and '-f' is not + supplied. When job control is not active, the 'kill' and 'wait' builtins do not accept JOBSPEC arguments. They must be supplied process IDs. @@ -7427,9 +7840,9 @@ Printing characters Undo the last editing command. You can undo all the way back to an empty line. -(Depending on your configuration, the key be set to delete -the character to the left of the cursor and the key set to delete -the character underneath the cursor, like 'C-d', rather than the +(Depending on your configuration, the key might be set to +delete the character to the left of the cursor and the key set to +delete the character underneath the cursor, like 'C-d', rather than the character to the left of the cursor.)  @@ -7491,9 +7904,9 @@ available to be yanked back later, when you are typing another line. as those used by 'M-f'. 'M-' - Kill from the cursor the start of the current word, or, if between - words, to the start of the previous word. Word boundaries are the - same as those used by 'M-b'. + Kill from the cursor to the start of the current word, or, if + between words, to the start of the previous word. Word boundaries + are the same as those used by 'M-b'. 'C-w' Kill from the cursor to the previous whitespace. This is different @@ -7582,7 +7995,7 @@ File: bashref.info, Node: Readline Init File, Next: Bindable Readline Commands Although the Readline library comes with a set of Emacs-like keybindings installed by default, it is possible to use a different set of keybindings. Any user can customize programs that use Readline by -putting commands in an "inputrc" file, conventionally in his home +putting commands in an "inputrc" file, conventionally in their home directory. The name of this file is taken from the value of the shell variable 'INPUTRC'. If that variable is unset, the default is '~/.inputrc'. If that file does not exist or cannot be read, the @@ -7641,6 +8054,32 @@ Variable Settings A great deal of run-time behavior is changeable with the following variables. + 'active-region-start-color' + A string variable that controls the text color and background + when displaying the text in the active region (see the + description of 'enable-active-region' below). This string + must not take up any physical character positions on the + display, so it should consist only of terminal escape + sequences. It is output to the terminal before displaying the + text in the active region. This variable is reset to the + default value whenever the terminal type changes. The default + value is the string that puts the terminal in standout mode, + as obtained from the terminal's terminfo description. A + sample value might be '\e[01;33m'. + + 'active-region-end-color' + A string variable that "undoes" the effects of + 'active-region-start-color' and restores "normal" terminal + display appearance after displaying text in the active region. + This string must not take up any physical character positions + on the display, so it should consist only of terminal escape + sequences. It is output to the terminal after displaying the + text in the active region. This variable is reset to the + default value whenever the terminal type changes. The default + value is the string that restores the terminal from standout + mode, as obtained from the terminal's terminfo description. A + sample value might be '\e[0m'. + 'bell-style' Controls what happens when Readline wants to ring the terminal bell. If set to 'none', Readline never rings the bell. If @@ -7662,7 +8101,10 @@ Variable Settings If set to 'on', when listing completions, Readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the - value of the 'LS_COLORS' environment variable. The default is + value of the 'LS_COLORS' environment variable. If there is a + color definition in 'LS_COLORS' for the custom suffix + 'readline-colored-completion-prefix', Readline uses this color + for the common prefix instead of its default. The default is 'off'. 'colored-stats' @@ -7708,8 +8150,9 @@ Variable Settings than or equal to this value, Readline will ask whether or not the user wishes to view them; otherwise, they are simply listed. This variable must be set to an integer value greater - than or equal to 0. A negative value means Readline should - never ask. The default limit is '100'. + than or equal to zero. A zero value means Readline should + never ask; negative values are treated as zero. The default + limit is '100'. 'convert-meta' If set to 'on', Readline will convert characters with the @@ -7717,7 +8160,9 @@ Variable Settings eighth bit and prefixing an character, converting them to a meta-prefixed key sequence. The default value is 'on', but will be set to 'off' if the locale is one that contains - eight-bit characters. + eight-bit characters. This variable is dependent on the + 'LC_CTYPE' locale category, and may change if the locale is + changed. 'disable-completion' If set to 'On', Readline will inhibit word completion. @@ -7726,7 +8171,7 @@ Variable Settings 'echo-control-characters' When set to 'on', on operating systems that indicate they - support it, readline echoes a character corresponding to a + support it, Readline echoes a character corresponding to a signal generated from the keyboard. The default is 'on'. 'editing-mode' @@ -7745,13 +8190,27 @@ Variable Settings non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is '@'. + 'enable-active-region' + The "point" is the current cursor position, and "mark" refers + to a saved cursor position (*note Commands For Moving::). The + text between the point and mark is referred to as the + "region". When this variable is set to 'On', Readline allows + certain commands to designate the region as "active". When + the region is active, Readline highlights the text in the + region using the value of the 'active-region-start-color', + which defaults to the string that enables the terminal's + standout mode. The active region shows the text inserted by + bracketed-paste and any matching text found by incremental and + non-incremental history searches. The default is 'On'. + 'enable-bracketed-paste' - When set to 'On', Readline will configure the terminal in a - way that will enable it to insert each paste into the editing - buffer as a single string of characters, instead of treating - each character as if it had been read from the keyboard. This - can prevent pasted characters from being interpreted as - editing commands. The default is 'On'. + When set to 'On', Readline configures the terminal to insert + each paste into the editing buffer as a single string of + characters, instead of treating each character as if it had + been read from the keyboard. This is called putting the + terminal into "bracketed paste mode"; it prevents Readline + from executing any editing commands bound to key sequences + appearing in the pasted text. The default is 'On'. 'enable-keypad' When set to 'on', Readline will try to enable the application @@ -7798,7 +8257,9 @@ Variable Settings regardless of what the terminal claims it can support. The default value is 'off', but Readline will set it to 'on' if the locale contains eight-bit characters. The name - 'meta-flag' is a synonym for this variable. + 'meta-flag' is a synonym for this variable. This variable is + dependent on the 'LC_CTYPE' locale category, and may change if + the locale is changed. 'isearch-terminators' The string of characters that should terminate an incremental @@ -7863,7 +8324,9 @@ Variable Settings If set to 'on', Readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape sequence. The default is 'off', but Readline will set it to - 'on' if the locale contains eight-bit characters. + 'on' if the locale contains eight-bit characters. This + variable is dependent on the 'LC_CTYPE' locale category, and + may change if the locale is changed. 'page-completions' If set to 'on', Readline uses an internal 'more'-like pager to @@ -7879,7 +8342,8 @@ Variable Settings If set to 'on', Readline will undo all changes to history lines before returning when 'accept-line' is executed. By default, history lines may be modified and retain individual - undo lists across calls to 'readline'. The default is 'off'. + undo lists across calls to 'readline()'. The default is + 'off'. 'show-all-if-ambiguous' This alters the default behavior of the completion functions. @@ -7906,7 +8370,7 @@ Variable Settings If set to 'on', 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 + 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. For instance, if this is enabled, attempting @@ -7956,11 +8420,11 @@ Key Bindings part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable. - 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 MACRO). The 'bind -p' command displays Readline function names and bindings - in a format that can put directly into an initialization file. + in a format that can be put directly into an initialization file. *Note Bash Builtins::. KEYNAME: FUNCTION-NAME or MACRO @@ -8438,6 +8902,11 @@ File: bashref.info, Node: Commands For History, Next: Commands For Text, Prev supplied, specifies the history entry to use instead of the current line. +'fetch-history ()' + With a numeric argument, fetch that entry from the history list and + make it the current line. Without an argument, move back to the + first entry in the history list. +  File: bashref.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands @@ -8754,7 +9223,7 @@ File: bashref.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev characters in the macro appear as if typed at the keyboard. 'print-last-kbd-macro ()' - Print the last keboard macro defined in a format suitable for the + Print the last keyboard macro defined in a format suitable for the INPUTRC file.  @@ -8801,12 +9270,12 @@ File: bashref.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: 'character-search (C-])' A character is read and point is moved to the next occurrence of - that character. A negative count searches for previous + that character. A negative argument searches for previous occurrences. 'character-search-backward (M-C-])' A character is read and point is moved to the previous occurrence - of that character. A negative count searches for subsequent + of that character. A negative argument searches for subsequent occurrences. 'skip-csi-sequence ()' @@ -8814,7 +9283,7 @@ File: bashref.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: 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 "\e[", keys producing such sequences will have - no effect unless explicitly bound to a readline command, instead of + 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-[. @@ -8849,6 +9318,12 @@ File: bashref.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: is formatted in such a way that it can be made part of an INPUTRC file. This command is unbound by default. +'spell-correct-word (C-x s)' + Perform spelling correction on the current word, treating it as a + directory or filename, in the same way as the 'cdspell' shell + option. Word boundaries are the same as those used by + 'shell-forward-word'. + 'glob-complete-word (M-g)' The word before point is treated as a pattern for pathname expansion, with an asterisk implicitly appended. This pattern is @@ -9249,7 +9724,8 @@ happening. '-C COMMAND' COMMAND is executed in a subshell environment, and its output - is used as the possible completions. + is used as the possible completions. Arguments are passed as + with the '-F' option. '-F FUNCTION' The shell function FUNCTION is executed in the current shell @@ -9411,7 +9887,7 @@ CDPATH: Readline can't tell those completions are directories). The '-o nospace' option tells Readline to not append a space character to the directory name, in case we want to append to it. The '-o bashdefault' option brings in the rest of the "Bash default" completions - possible -completion that Bash adds to the default Readline set. These include +completions that Bash adds to the default Readline set. These include things like command name completion, variable completion for words beginning with '$' or '${', completions containing pathname expansion patterns (*note Filename Expansion::), and so on. @@ -9578,9 +10054,9 @@ history file. -d' command. '-d START-END' - Delete the history entries between positions START and END, - inclusive. Positive and negative values for START and END are - interpreted as described above. + Delete the range of history entries between positions START + and END, inclusive. Positive and negative values for START + and END are interpreted as described above. '-a' Append the new history lines to the history file. These are @@ -9609,9 +10085,14 @@ history file. The ARGs are added to the end of the history list as a single entry. - When any of the '-w', '-r', '-a', or '-n' options is used, if - FILENAME is given, then it is used as the history file. If not, - then the value of the 'HISTFILE' variable is used. + If a FILENAME argument is supplied when any of the '-w', '-r', + '-a', or '-n' options is used, Bash uses FILENAME as the history + file. If not, then the value of the 'HISTFILE' variable is used. + + The return value is 0 unless an invalid option is encountered, an + error occurs while reading or writing the history file, an invalid + OFFSET or range is supplied as an argument to '-d', or the history + expansion supplied as an argument to '-p' fails.  File: bashref.info, Node: History Interaction, Prev: Bash History Builtins, Up: Using History Interactively @@ -9828,7 +10309,7 @@ or edit, the word or words selected from the history event. '&' appears in NEW, it is replaced by OLD. A single backslash will quote the '&'. If OLD is null, it is set to the last OLD substituted, or, if no previous history substitutions took place, - the last STRING in a !?STRING'[?]' search. If NEW is is null, each + the last STRING in a !?STRING'[?]' search. If NEW is null, each matching OLD is deleted. The final delimiter is optional if it is the last character on the input line. @@ -9897,20 +10378,28 @@ These are installation instructions for Bash. 3. Optionally, type 'make tests' to run the Bash test suite. 4. Type 'make install' to install 'bash' and 'bashbug'. This will - also install the manual pages and Info file. + also install the manual pages and Info file, message translation + files, some supplemental documentation, a number of example + loadable builtin commands, and a set of header files for developing + loadable builtins. You may need additional privileges to install + 'bash' to your desired destination, so 'sudo make install' might be + required. More information about controlling the locations where + 'bash' and other files are installed is below (*note Installation + Names::). The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a 'Makefile' in each directory of the package -(the top directory, the 'builtins', 'doc', and 'support' directories, -each directory under 'lib', and several others). It also creates a -'config.h' file containing system-dependent definitions. Finally, it -creates a shell script named 'config.status' that you can run in the -future to recreate the current configuration, a file 'config.cache' that -saves the results of its tests to speed up reconfiguring, and a file -'config.log' containing compiler output (useful mainly for debugging -'configure'). If at some point 'config.cache' contains results you -don't want to keep, you may remove or edit it. +(the top directory, the 'builtins', 'doc', 'po', and 'support' +directories, each directory under 'lib', and several others). It also +creates a 'config.h' file containing system-dependent definitions. +Finally, it creates a shell script named 'config.status' that you can +run in the future to recreate the current configuration, a file +'config.cache' that saves the results of its tests to speed up +reconfiguring, and a file 'config.log' containing compiler output +(useful mainly for debugging 'configure'). If at some point +'config.cache' contains results you don't want to keep, you may remove +or edit it. To find out more about the options and arguments that the 'configure' script understands, type @@ -9941,7 +10430,7 @@ considered for the next release. The file 'configure.ac' is used to create 'configure' by a program called Autoconf. You only need 'configure.ac' if you want to change it or regenerate 'configure' using a newer version of Autoconf. If you do -this, make sure you are using Autoconf version 2.50 or newer. +this, make sure you are using Autoconf version 2.69 or newer. You can remove the program binaries and object files from the source code directory by typing 'make clean'. To also remove the files that @@ -9984,7 +10473,7 @@ need to supply the '--srcdir=PATH' argument to tell 'configure' where the source files are. 'configure' automatically checks for the source code in the directory that 'configure' is in and in '..'. - If you have to use a 'make' that does not supports the 'VPATH' + If you have to use a 'make' that does not support the 'VPATH' variable, you can compile Bash for one architecture at a time in the source code directory. After you have installed Bash for one architecture, use 'make distclean' before reconfiguring for another @@ -10009,10 +10498,13 @@ File: bashref.info, Node: Installation Names, Next: Specifying the System Type ======================= By default, 'make install' will install into '/usr/local/bin', -'/usr/local/man', etc. You can specify an installation prefix other -than '/usr/local' by giving 'configure' the option '--prefix=PATH', or -by specifying a value for the 'DESTDIR' 'make' variable when running -'make install'. +'/usr/local/man', etc.; that is, the "installation prefix" defaults to +'/usr/local'. You can specify an installation prefix other than +'/usr/local' by giving 'configure' the option '--prefix=PATH', or by +specifying a value for the 'prefix' 'make' variable when running 'make +install' (e.g., 'make install prefix=PATH'). The 'prefix' variable +provides a default for 'exec_prefix' and other variables used when +installing bash. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you @@ -10020,6 +10512,30 @@ give 'configure' the option '--exec-prefix=PATH', 'make install' will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. + If you would like to change the installation locations for a single +run, you can specify these variables as arguments to 'make': 'make +install exec_prefix=/' will install 'bash' and 'bashbug' into '/bin' +instead of the default '/usr/local/bin'. + + If you want to see the files bash will install and where it will +install them without changing anything on your system, specify the +variable 'DESTDIR' as an argument to 'make'. Its value should be the +absolute directory path you'd like to use as the root of your sample +installation tree. For example, + + mkdir /fs1/bash-install + make install DESTDIR=/fs1/bash-install + +will install 'bash' into '/fs1/bash-install/usr/local/bin/bash', the +documentation into directories within +'/fs1/bash-install/usr/local/share', the example loadable builtins into +'/fs1/bash-install/usr/local/lib/bash', and so on. You can use the +usual 'exec_prefix' and 'prefix' variables to alter the directory paths +beneath the value of 'DESTDIR'. + + The GNU Makefile standards provide a more complete description of +these variables and their effects. +  File: bashref.info, Node: Specifying the System Type, Next: Sharing Defaults, Prev: Installation Names, Up: Installing Bash @@ -10027,7 +10543,7 @@ File: bashref.info, Node: Specifying the System Type, Next: Sharing Defaults, =============================== There may be some features 'configure' can not figure out automatically, -but need to determine by the type of host Bash will run on. Usually +but needs to determine by the type of host Bash will run on. Usually 'configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the '--host=TYPE' option. 'TYPE' can either be a short name for the system type, such as 'sun4', or a @@ -10135,16 +10651,20 @@ the Bash 'configure' recognizes. subdirectories of that directory (include files in PREFIX/'include' and the library in PREFIX/'lib'). -'--with-purify' - Define this to use the Purify memory allocation checker from - Rational Software. +'--with-libintl-prefix[=PREFIX]' + Define this to make Bash link with a locally-installed version of + the libintl library instead of the version in 'lib/intl'. + +'--with-libiconv-prefix[=PREFIX]' + Define this to make Bash look for libiconv in PREFIX instead of the + standard system locations. There is no version included with Bash. '--enable-minimal-config' This produces a shell with minimal features, close to the historical Bourne shell. - There are several '--enable-' options that alter how Bash is compiled -and linked, rather than changing run-time features. + There are several '--enable-' options that alter how Bash is +compiled, linked, and installed, rather than changing run-time features. '--enable-largefile' Enable support for large files @@ -10157,6 +10677,10 @@ and linked, rather than changing run-time features. This builds a Bash binary that produces profiling information to be processed by 'gprof' each time it is executed. +'--enable-separate-helpfiles' + Use external files for the documentation displayed by the 'help' + builtin instead of storing the text internally. + '--enable-static-link' This causes Bash to be linked statically, if 'gcc' is being used. This could be used to build a version to use as root's shell. @@ -10165,14 +10689,21 @@ and linked, rather than changing run-time features. following options, but it is processed first, so individual options may be enabled using 'enable-FEATURE'. - All of the following options except for 'disabled-builtins', -'direxpand-default', and 'xpg-echo-default' are enabled by default, -unless the operating system does not provide the necessary support. + All of the following options except for 'alt-array-implementation', +'disabled-builtins', 'direxpand-default', 'strict-posix-default', and +'xpg-echo-default' are enabled by default, unless the operating system +does not provide the necessary support. '--enable-alias' Allow alias expansion and include the 'alias' and 'unalias' builtins (*note Aliases::). +'--enable-alt-array-implementation' + This builds bash using an alternate implementation of arrays (*note + Arrays::) that provides faster access at the expense of using more + memory (sometimes many times more, depending on how sparse an array + is). + '--enable-arith-for-command' Include support for the alternate form of the 'for' command that behaves like the C language 'for' statement (*note Looping @@ -10192,7 +10723,7 @@ unless the operating system does not provide the necessary support. '--enable-casemod-attributes' Include support for case-modifying attributes in the 'declare' - builtin and assignment statements. Variables with the UPPERCASE + builtin and assignment statements. Variables with the 'uppercase' attribute, for example, will have their values converted to uppercase upon assignment. @@ -10251,7 +10782,7 @@ unless the operating system does not provide the necessary support. described above under *note Pattern Matching::. '--enable-extended-glob-default' - Set the default value of the EXTGLOB shell option described above + Set the default value of the 'extglob' shell option described above under *note The Shopt Builtin:: to be enabled. '--enable-function-import' @@ -10260,10 +10791,10 @@ unless the operating system does not provide the necessary support. enabled by default. '--enable-glob-asciirange-default' - Set the default value of the GLOBASCIIRANGES shell option described - above under *note The Shopt Builtin:: to be enabled. This controls - the behavior of character ranges when used in pattern matching - bracket expressions. + Set the default value of the 'globasciiranges' shell option + described above under *note The Shopt Builtin:: to be enabled. + This controls the behavior of character ranges when used in pattern + matching bracket expressions. '--enable-help-builtin' Include the 'help' builtin, which displays help on shell builtins @@ -10314,10 +10845,6 @@ unless the operating system does not provide the necessary support. Include the 'select' compound command, which allows the generation of simple menus (*note Conditional Constructs::). -'--enable-separate-helpfiles' - Use external files for the documentation displayed by the 'help' - builtin instead of storing the text internally. - '--enable-single-help-strings' Store the text displayed by the 'help' builtin as a single string for each help topic. This aids in translating the text to @@ -10327,6 +10854,10 @@ unless the operating system does not provide the necessary support. '--enable-strict-posix-default' Make Bash POSIX-conformant by default (*note Bash POSIX Mode::). +'--enable-translatable-strings' + Enable support for '$"STRING"' translatable strings (*note Locale + Translation::). + '--enable-usg-echo-default' A synonym for '--enable-xpg-echo-default'. @@ -10353,7 +10884,8 @@ Appendix A Reporting Bugs Please report all bugs you find in Bash. But first, you should make sure that it really is a bug, and that it appears in the latest version of Bash. The latest version of Bash is always available for FTP from -. + and from +. Once you have determined that a bug actually exists, use the 'bashbug' command to submit a bug report. If you have a fix, you are @@ -10479,15 +11011,15 @@ the baseline reference. substring of 'var''s value of length LENGTH, beginning at OFFSET, is present (*note Shell Parameter Expansion::). - * The expansion '${var/[/]'PATTERN'[/'REPLACEMENT']}', which matches - PATTERN and replaces it with REPLACEMENT in the value of 'var', is + * The expansion '${VAR/[/]'PATTERN'[/'REPLACEMENT']}', which matches + PATTERN and replaces it with REPLACEMENT in the value of VAR, is available (*note Shell Parameter Expansion::). * The expansion '${!PREFIX*}' expansion, which expands to the names of all shell variables whose names begin with PREFIX, is available (*note Shell Parameter Expansion::). - * Bash has INDIRECT variable expansion using '${!word}' (*note Shell + * Bash has indirect variable expansion using '${!word}' (*note Shell Parameter Expansion::). * Bash can expand positional parameters beyond '$9' using '${NUM}'. @@ -10513,8 +11045,8 @@ the baseline reference. shell uses only '!'. * Bash implements the full set of POSIX filename expansion operators, - including CHARACTER CLASSES, EQUIVALENCE CLASSES, and COLLATING - SYMBOLS (*note Filename Expansion::). + including character classes, equivalence classes, and collating + symbols (*note Filename Expansion::). * Bash implements extended pattern matching features when the 'extglob' shell option is enabled (*note Pattern Matching::). @@ -10631,7 +11163,7 @@ the baseline reference. * Bash includes the 'caller' builtin, which displays the context of any active subroutine call (a shell function or a script executed - with the '.' or 'source' builtins). This supports the bash + with the '.' or 'source' builtins). This supports the Bash debugger. * The 'trap' builtin (*note Bourne Shell Builtins::) allows a 'DEBUG' @@ -10653,7 +11185,7 @@ the baseline reference. The 'trap' builtin (*note Bourne Shell Builtins::) allows a 'RETURN' pseudo-signal specification, similar to 'EXIT' and - 'DEBUG'. Commands specified with an 'RETURN' trap are executed + 'DEBUG'. Commands specified with a 'RETURN' trap are executed before execution resumes after a shell function or a shell script executed with '.' or 'source' returns. The 'RETURN' trap is not inherited by shell functions unless the function has been given the @@ -11252,94 +11784,94 @@ D.1 Index of Shell Builtin Commands * :: Bourne Shell Builtins. (line 11) * [: Bourne Shell Builtins. - (line 270) + (line 275) * alias: Bash Builtins. (line 11) * bg: Job Control Builtins. (line 7) * bind: Bash Builtins. (line 21) * break: Bourne Shell Builtins. - (line 36) -* builtin: Bash Builtins. (line 104) -* caller: Bash Builtins. (line 113) + (line 37) +* builtin: Bash Builtins. (line 108) +* caller: Bash Builtins. (line 117) * cd: Bourne Shell Builtins. - (line 44) -* command: Bash Builtins. (line 130) + (line 45) +* command: Bash Builtins. (line 134) * compgen: Programmable Completion Builtins. (line 12) * complete: Programmable Completion Builtins. (line 30) * compopt: Programmable Completion Builtins. - (line 237) + (line 238) * continue: Bourne Shell Builtins. - (line 85) -* declare: Bash Builtins. (line 150) + (line 90) +* declare: Bash Builtins. (line 154) * dirs: Directory Stack Builtins. (line 7) * disown: Job Control Builtins. - (line 101) -* echo: Bash Builtins. (line 253) -* enable: Bash Builtins. (line 302) + (line 104) +* echo: Bash Builtins. (line 257) +* enable: Bash Builtins. (line 306) * eval: Bourne Shell Builtins. - (line 94) + (line 99) * exec: Bourne Shell Builtins. - (line 102) + (line 107) * exit: Bourne Shell Builtins. - (line 120) + (line 125) * export: Bourne Shell Builtins. - (line 127) + (line 132) * fc: Bash History Builtins. (line 10) * fg: Job Control Builtins. (line 17) * getopts: Bourne Shell Builtins. - (line 143) + (line 148) * hash: Bourne Shell Builtins. - (line 187) -* help: Bash Builtins. (line 331) + (line 192) +* help: Bash Builtins. (line 342) * history: Bash History Builtins. (line 46) * jobs: Job Control Builtins. (line 27) * kill: Job Control Builtins. (line 58) -* let: Bash Builtins. (line 350) -* local: Bash Builtins. (line 358) -* logout: Bash Builtins. (line 374) -* mapfile: Bash Builtins. (line 379) +* let: Bash Builtins. (line 361) +* local: Bash Builtins. (line 369) +* logout: Bash Builtins. (line 385) +* mapfile: Bash Builtins. (line 390) * popd: Directory Stack Builtins. (line 35) -* printf: Bash Builtins. (line 425) +* printf: Bash Builtins. (line 436) * pushd: Directory Stack Builtins. - (line 53) + (line 69) * pwd: Bourne Shell Builtins. - (line 207) -* read: Bash Builtins. (line 474) -* readarray: Bash Builtins. (line 570) + (line 212) +* read: Bash Builtins. (line 488) +* readarray: Bash Builtins. (line 585) * readonly: Bourne Shell Builtins. - (line 217) + (line 222) * return: Bourne Shell Builtins. - (line 236) + (line 241) * set: The Set Builtin. (line 11) * shift: Bourne Shell Builtins. - (line 257) + (line 262) * shopt: The Shopt Builtin. (line 9) -* source: Bash Builtins. (line 579) +* source: Bash Builtins. (line 594) * suspend: Job Control Builtins. - (line 113) + (line 116) * test: Bourne Shell Builtins. - (line 270) + (line 275) * times: Bourne Shell Builtins. - (line 349) + (line 360) * trap: Bourne Shell Builtins. - (line 355) -* type: Bash Builtins. (line 584) -* typeset: Bash Builtins. (line 616) -* ulimit: Bash Builtins. (line 622) + (line 366) +* type: Bash Builtins. (line 599) +* typeset: Bash Builtins. (line 631) +* ulimit: Bash Builtins. (line 637) * umask: Bourne Shell Builtins. - (line 404) -* unalias: Bash Builtins. (line 728) + (line 415) +* unalias: Bash Builtins. (line 743) * unset: Bourne Shell Builtins. - (line 422) + (line 433) * wait: Job Control Builtins. (line 76) @@ -11354,9 +11886,9 @@ D.2 Index of Shell Reserved Words * !: Pipelines. (line 9) * [[: Conditional Constructs. - (line 125) + (line 126) * ]]: Conditional Constructs. - (line 125) + (line 126) * {: Command Grouping. (line 21) * }: Command Grouping. (line 21) * case: Conditional Constructs. @@ -11378,7 +11910,7 @@ D.2 Index of Shell Reserved Words * in: Conditional Constructs. (line 28) * select: Conditional Constructs. - (line 83) + (line 84) * then: Conditional Constructs. (line 7) * time: Pipelines. (line 9) @@ -11394,24 +11926,28 @@ D.3 Parameter and Variable Index [index] * Menu: -* !: Special Parameters. (line 56) +* !: Special Parameters. (line 55) * #: Special Parameters. (line 39) * $: Special Parameters. (line 51) -* $!: Special Parameters. (line 57) +* $!: Special Parameters. (line 56) * $#: Special Parameters. (line 40) * $$: Special Parameters. (line 52) * $*: Special Parameters. (line 10) * $-: Special Parameters. (line 47) -* $0: Special Parameters. (line 62) +* $0: Special Parameters. (line 61) * $?: Special Parameters. (line 43) * $@: Special Parameters. (line 23) * $_: Bash Variables. (line 14) * *: Special Parameters. (line 9) * -: Special Parameters. (line 46) -* 0: Special Parameters. (line 61) +* 0: Special Parameters. (line 60) * ?: Special Parameters. (line 42) * @: Special Parameters. (line 22) * _: Bash Variables. (line 13) +* active-region-end-color: Readline Init File Syntax. + (line 51) +* active-region-start-color: Readline Init File Syntax. + (line 38) * auto_resume: Job Control Variables. (line 6) * BASH: Bash Variables. (line 23) @@ -11435,31 +11971,31 @@ D.3 Parameter and Variable Index * BASH_VERSION: Bash Variables. (line 181) * BASH_XTRACEFD: Bash Variables. (line 184) * bell-style: Readline Init File Syntax. - (line 38) + (line 64) * bind-tty-special-chars: Readline Init File Syntax. - (line 45) + (line 71) * blink-matching-paren: Readline Init File Syntax. - (line 50) + (line 76) * CDPATH: Bourne Shell Variables. (line 9) * CHILD_MAX: Bash Variables. (line 195) * colored-completion-prefix: Readline Init File Syntax. - (line 55) + (line 81) * colored-stats: Readline Init File Syntax. - (line 62) + (line 91) * COLUMNS: Bash Variables. (line 202) * comment-begin: Readline Init File Syntax. - (line 68) + (line 97) * completion-display-width: Readline Init File Syntax. - (line 73) + (line 102) * completion-ignore-case: Readline Init File Syntax. - (line 80) + (line 109) * completion-map-case: Readline Init File Syntax. - (line 85) + (line 114) * completion-prefix-display-length: Readline Init File Syntax. - (line 91) + (line 120) * completion-query-items: Readline Init File Syntax. - (line 98) + (line 127) * COMPREPLY: Bash Variables. (line 254) * COMP_CWORD: Bash Variables. (line 208) * COMP_KEY: Bash Variables. (line 237) @@ -11469,29 +12005,31 @@ D.3 Parameter and Variable Index * COMP_WORDBREAKS: Bash Variables. (line 241) * COMP_WORDS: Bash Variables. (line 247) * convert-meta: Readline Init File Syntax. - (line 108) + (line 138) * COPROC: Bash Variables. (line 260) * DIRSTACK: Bash Variables. (line 264) * disable-completion: Readline Init File Syntax. - (line 116) + (line 148) * echo-control-characters: Readline Init File Syntax. - (line 121) + (line 153) * editing-mode: Readline Init File Syntax. - (line 126) + (line 158) * EMACS: Bash Variables. (line 274) * emacs-mode-string: Readline Init File Syntax. - (line 132) + (line 164) +* enable-active-region: Readline Init File Syntax. + (line 174) * enable-bracketed-paste: Readline Init File Syntax. - (line 142) + (line 187) * enable-keypad: Readline Init File Syntax. - (line 150) + (line 196) * ENV: Bash Variables. (line 279) * EPOCHREALTIME: Bash Variables. (line 284) * EPOCHSECONDS: Bash Variables. (line 292) * EUID: Bash Variables. (line 299) * EXECIGNORE: Bash Variables. (line 303) * expand-tilde: Readline Init File Syntax. - (line 161) + (line 207) * FCEDIT: Bash Variables. (line 316) * FIGNORE: Bash Variables. (line 320) * FUNCNAME: Bash Variables. (line 326) @@ -11505,15 +12043,15 @@ D.3 Parameter and Variable Index * HISTFILESIZE: Bash Variables. (line 402) * HISTIGNORE: Bash Variables. (line 413) * history-preserve-point: Readline Init File Syntax. - (line 165) + (line 211) * history-size: Readline Init File Syntax. - (line 171) + (line 217) * HISTSIZE: Bash Variables. (line 433) * HISTTIMEFORMAT: Bash Variables. (line 440) * HOME: Bourne Shell Variables. (line 13) * horizontal-scroll-mode: Readline Init File Syntax. - (line 180) + (line 226) * HOSTFILE: Bash Variables. (line 448) * HOSTNAME: Bash Variables. (line 459) * HOSTTYPE: Bash Variables. (line 462) @@ -11521,18 +12059,21 @@ D.3 Parameter and Variable Index (line 18) * IGNOREEOF: Bash Variables. (line 465) * input-meta: Readline Init File Syntax. - (line 189) + (line 235) * INPUTRC: Bash Variables. (line 475) * INSIDE_EMACS: Bash Variables. (line 479) * isearch-terminators: Readline Init File Syntax. - (line 197) + (line 245) * keymap: Readline Init File Syntax. - (line 204) -* LANG: Bash Variables. (line 485) + (line 252) +* LANG: Creating Internationalized Scripts. + (line 51) +* LANG <1>: Bash Variables. (line 485) * LC_ALL: Bash Variables. (line 489) * LC_COLLATE: Bash Variables. (line 493) * LC_CTYPE: Bash Variables. (line 500) -* LC_MESSAGES: Locale Translation. (line 15) +* LC_MESSAGES: Creating Internationalized Scripts. + (line 51) * LC_MESSAGES <1>: Bash Variables. (line 505) * LC_NUMERIC: Bash Variables. (line 509) * LC_TIME: Bash Variables. (line 513) @@ -11546,15 +12087,15 @@ D.3 Parameter and Variable Index (line 27) * MAPFILE: Bash Variables. (line 540) * mark-modified-lines: Readline Init File Syntax. - (line 234) + (line 282) * mark-symlinked-directories: Readline Init File Syntax. - (line 239) + (line 287) * match-hidden-files: Readline Init File Syntax. - (line 244) + (line 292) * menu-complete-display-prefix: Readline Init File Syntax. - (line 251) + (line 299) * meta-flag: Readline Init File Syntax. - (line 189) + (line 235) * OLDPWD: Bash Variables. (line 544) * OPTARG: Bourne Shell Variables. (line 34) @@ -11563,9 +12104,9 @@ D.3 Parameter and Variable Index (line 38) * OSTYPE: Bash Variables. (line 551) * output-meta: Readline Init File Syntax. - (line 256) + (line 304) * page-completions: Readline Init File Syntax. - (line 262) + (line 312) * PATH: Bourne Shell Variables. (line 42) * PIPESTATUS: Bash Variables. (line 554) @@ -11582,37 +12123,40 @@ D.3 Parameter and Variable Index * PS4: Bash Variables. (line 595) * PWD: Bash Variables. (line 603) * RANDOM: Bash Variables. (line 606) -* READLINE_LINE: Bash Variables. (line 612) -* READLINE_MARK: Bash Variables. (line 616) -* READLINE_POINT: Bash Variables. (line 622) -* REPLY: Bash Variables. (line 626) +* READLINE_ARGUMENT: Bash Variables. (line 612) +* READLINE_LINE: Bash Variables. (line 616) +* READLINE_MARK: Bash Variables. (line 620) +* READLINE_POINT: Bash Variables. (line 626) +* REPLY: Bash Variables. (line 630) * revert-all-at-newline: Readline Init File Syntax. - (line 272) -* SECONDS: Bash Variables. (line 629) -* SHELL: Bash Variables. (line 638) -* SHELLOPTS: Bash Variables. (line 643) -* SHLVL: Bash Variables. (line 652) + (line 322) +* SECONDS: Bash Variables. (line 633) +* SHELL: Bash Variables. (line 642) +* SHELLOPTS: Bash Variables. (line 647) +* SHLVL: Bash Variables. (line 656) * show-all-if-ambiguous: Readline Init File Syntax. - (line 278) + (line 329) * show-all-if-unmodified: Readline Init File Syntax. - (line 284) + (line 335) * show-mode-in-prompt: Readline Init File Syntax. - (line 293) + (line 344) * skip-completed-text: Readline Init File Syntax. - (line 299) -* SRANDOM: Bash Variables. (line 657) -* TEXTDOMAIN: Locale Translation. (line 15) -* TEXTDOMAINDIR: Locale Translation. (line 15) -* TIMEFORMAT: Bash Variables. (line 666) -* TMOUT: Bash Variables. (line 704) -* TMPDIR: Bash Variables. (line 716) -* UID: Bash Variables. (line 720) + (line 350) +* SRANDOM: Bash Variables. (line 661) +* TEXTDOMAIN: Creating Internationalized Scripts. + (line 51) +* TEXTDOMAINDIR: Creating Internationalized Scripts. + (line 51) +* TIMEFORMAT: Bash Variables. (line 670) +* TMOUT: Bash Variables. (line 708) +* TMPDIR: Bash Variables. (line 720) +* UID: Bash Variables. (line 724) * vi-cmd-mode-string: Readline Init File Syntax. - (line 312) + (line 363) * vi-ins-mode-string: Readline Init File Syntax. - (line 323) + (line 374) * visible-stats: Readline Init File Syntax. - (line 334) + (line 385)  File: bashref.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes @@ -11628,7 +12172,7 @@ D.4 Function Index * accept-line (Newline or Return): Commands For History. (line 6) * alias-expand-line (): Miscellaneous Commands. - (line 125) + (line 131) * backward-char (C-b): Commands For Moving. (line 15) * backward-delete-char (Rubout): Commands For Text. (line 17) * backward-kill-line (C-x Rubout): Commands For Killing. @@ -11677,7 +12221,7 @@ D.4 Function Index (line 57) * digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) * display-shell-version (C-x C-v): Miscellaneous Commands. - (line 110) + (line 116) * do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands. (line 14) * downcase-word (M-l): Commands For Text. (line 62) @@ -11690,7 +12234,7 @@ D.4 Function Index * dynamic-complete-history (M-): Commands For Completion. (line 90) * edit-and-execute-command (C-x C-e): Miscellaneous Commands. - (line 134) + (line 140) * end-kbd-macro (C-x )): Keyboard Macros. (line 9) * end-of-file (usually C-d): Commands For Text. (line 6) * end-of-history (M->): Commands For History. @@ -11698,21 +12242,23 @@ D.4 Function Index * end-of-line (C-e): Commands For Moving. (line 9) * exchange-point-and-mark (C-x C-x): Miscellaneous Commands. (line 37) +* fetch-history (): Commands For History. + (line 103) * forward-backward-delete-char (): Commands For Text. (line 21) * forward-char (C-f): Commands For Moving. (line 12) * forward-search-history (C-s): Commands For History. (line 33) * forward-word (M-f): Commands For Moving. (line 18) * glob-complete-word (M-g): Miscellaneous Commands. - (line 92) -* glob-expand-word (C-x *): Miscellaneous Commands. (line 98) -* glob-list-expansions (C-x g): Miscellaneous Commands. +* glob-expand-word (C-x *): Miscellaneous Commands. (line 104) +* glob-list-expansions (C-x g): Miscellaneous Commands. + (line 110) * history-and-alias-expand-line (): Miscellaneous Commands. - (line 128) + (line 134) * history-expand-line (M-^): Miscellaneous Commands. - (line 118) + (line 124) * history-search-backward (): Commands For History. (line 57) * history-search-forward (): Commands For History. @@ -11726,7 +12272,7 @@ D.4 Function Index * insert-completions (M-*): Commands For Completion. (line 22) * insert-last-argument (M-. or M-_): Miscellaneous Commands. - (line 131) + (line 137) * kill-line (C-k): Commands For Killing. (line 6) * kill-region (): Commands For Killing. @@ -11736,7 +12282,7 @@ D.4 Function Index * kill-word (M-d): Commands For Killing. (line 23) * magic-space (): Miscellaneous Commands. - (line 121) + (line 127) * menu-complete (): Commands For Completion. (line 26) * menu-complete-backward (): Commands For Completion. @@ -11784,7 +12330,7 @@ D.4 Function Index (line 37) * shell-backward-word (M-C-b): Commands For Moving. (line 30) * shell-expand-line (M-C-e): Miscellaneous Commands. - (line 113) + (line 119) * shell-forward-word (M-C-f): Commands For Moving. (line 26) * shell-kill-word (M-C-d): Commands For Killing. (line 32) @@ -11792,6 +12338,8 @@ D.4 Function Index (line 41) * skip-csi-sequence (): Miscellaneous Commands. (line 52) +* spell-correct-word (C-x s): Miscellaneous Commands. + (line 92) * start-kbd-macro (C-x (): Keyboard Macros. (line 6) * tilde-expand (M-&): Miscellaneous Commands. (line 30) @@ -11913,6 +12461,8 @@ D.5 Concept Index * interactive shell: Invoking Bash. (line 131) * interactive shell <1>: Interactive Shells. (line 6) * internationalization: Locale Translation. (line 6) +* internationalized scripts: Creating Internationalized Scripts. + (line 3) * job: Definitions. (line 38) * job control: Definitions. (line 42) * job control <1>: Job Control Basics. (line 6) @@ -11968,6 +12518,8 @@ D.5 Concept Index * special builtin: Definitions. (line 82) * special builtin <1>: Special Builtins. (line 6) * startup files: Bash Startup Files. (line 6) +* string translations: Creating Internationalized Scripts. + (line 3) * suspending jobs: Job Control Basics. (line 6) * tilde expansion: Tilde Expansion. (line 6) * token: Definitions. (line 86) @@ -11983,137 +12535,138 @@ D.5 Concept Index  Tag Table: -Node: Top895 -Node: Introduction2813 -Node: What is Bash?3029 -Node: What is a shell?4143 -Node: Definitions6681 -Node: Basic Shell Features9632 -Node: Shell Syntax10851 -Node: Shell Operation11877 -Node: Quoting13170 -Node: Escape Character14470 -Node: Single Quotes14955 -Node: Double Quotes15303 -Node: ANSI-C Quoting16581 -Node: Locale Translation17840 -Node: Comments18993 -Node: Shell Commands19611 -Node: Reserved Words20549 -Node: Simple Commands21305 -Node: Pipelines21959 -Node: Lists24891 -Node: Compound Commands26682 -Node: Looping Constructs27694 -Node: Conditional Constructs30189 -Node: Command Grouping41760 -Node: Coprocesses43239 -Node: GNU Parallel45142 -Node: Shell Functions49443 -Node: Shell Parameters56650 -Node: Positional Parameters61063 -Node: Special Parameters61963 -Node: Shell Expansions65187 -Node: Brace Expansion67310 -Node: Tilde Expansion70033 -Node: Shell Parameter Expansion72650 -Node: Command Substitution87779 -Node: Arithmetic Expansion89134 -Node: Process Substitution90066 -Node: Word Splitting91186 -Node: Filename Expansion93130 -Node: Pattern Matching95679 -Node: Quote Removal99665 -Node: Redirections99960 -Node: Executing Commands109530 -Node: Simple Command Expansion110200 -Node: Command Search and Execution112154 -Node: Command Execution Environment114530 -Node: Environment117514 -Node: Exit Status119173 -Node: Signals120843 -Node: Shell Scripts122810 -Node: Shell Builtin Commands125822 -Node: Bourne Shell Builtins127860 -Node: Bash Builtins148789 -Node: Modifying Shell Behavior178898 -Node: The Set Builtin179243 -Node: The Shopt Builtin189656 -Node: Special Builtins204566 -Node: Shell Variables205545 -Node: Bourne Shell Variables205982 -Node: Bash Variables208086 -Node: Bash Features240720 -Node: Invoking Bash241733 -Node: Bash Startup Files247746 -Node: Interactive Shells252849 -Node: What is an Interactive Shell?253259 -Node: Is this Shell Interactive?253908 -Node: Interactive Shell Behavior254723 -Node: Bash Conditional Expressions258237 -Node: Shell Arithmetic262814 -Node: Aliases265754 -Node: Arrays268374 -Node: The Directory Stack274383 -Node: Directory Stack Builtins275167 -Node: Controlling the Prompt278135 -Node: The Restricted Shell281085 -Node: Bash POSIX Mode283679 -Node: Shell Compatibility Mode294715 -Node: Job Control301371 -Node: Job Control Basics301831 -Node: Job Control Builtins306827 -Node: Job Control Variables312227 -Node: Command Line Editing313383 -Node: Introduction and Notation315054 -Node: Readline Interaction316677 -Node: Readline Bare Essentials317868 -Node: Readline Movement Commands319651 -Node: Readline Killing Commands320611 -Node: Readline Arguments322529 -Node: Searching323573 -Node: Readline Init File325759 -Node: Readline Init File Syntax327018 -Node: Conditional Init Constructs347556 -Node: Sample Init File351752 -Node: Bindable Readline Commands354876 -Node: Commands For Moving356080 -Node: Commands For History358131 -Node: Commands For Text362924 -Node: Commands For Killing366573 -Node: Numeric Arguments369606 -Node: Commands For Completion370745 -Node: Keyboard Macros374936 -Node: Miscellaneous Commands375623 -Node: Readline vi Mode381307 -Node: Programmable Completion382214 -Node: Programmable Completion Builtins389994 -Node: A Programmable Completion Example400689 -Node: Using History Interactively405936 -Node: Bash History Facilities406620 -Node: Bash History Builtins409625 -Node: History Interaction414354 -Node: Event Designators417974 -Node: Word Designators419328 -Node: Modifiers421088 -Node: Installing Bash422899 -Node: Basic Installation424036 -Node: Compilers and Options427294 -Node: Compiling For Multiple Architectures428035 -Node: Installation Names429728 -Node: Specifying the System Type430546 -Node: Sharing Defaults431262 -Node: Operation Controls431935 -Node: Optional Features432893 -Node: Reporting Bugs443411 -Node: Major Differences From The Bourne Shell444605 -Node: GNU Free Documentation License461457 -Node: Indexes486634 -Node: Builtin Index487088 -Node: Reserved Word Index493915 -Node: Variable Index496363 -Node: Function Index512260 -Node: Concept Index525770 +Node: Top899 +Node: Introduction2821 +Node: What is Bash?3037 +Node: What is a shell?4151 +Node: Definitions6689 +Node: Basic Shell Features9640 +Node: Shell Syntax10859 +Node: Shell Operation11885 +Node: Quoting13178 +Node: Escape Character14482 +Node: Single Quotes14967 +Node: Double Quotes15315 +Node: ANSI-C Quoting16593 +Node: Locale Translation17903 +Node: Creating Internationalized Scripts19214 +Node: Comments23331 +Node: Shell Commands23949 +Node: Reserved Words24887 +Node: Simple Commands25643 +Node: Pipelines26297 +Node: Lists29296 +Node: Compound Commands31091 +Node: Looping Constructs32103 +Node: Conditional Constructs34598 +Node: Command Grouping49086 +Node: Coprocesses50564 +Node: GNU Parallel53227 +Node: Shell Functions54144 +Node: Shell Parameters62029 +Node: Positional Parameters66417 +Node: Special Parameters67319 +Node: Shell Expansions70533 +Node: Brace Expansion72660 +Node: Tilde Expansion75394 +Node: Shell Parameter Expansion78015 +Node: Command Substitution96366 +Node: Arithmetic Expansion97721 +Node: Process Substitution98689 +Node: Word Splitting99809 +Node: Filename Expansion101753 +Node: Pattern Matching104502 +Node: Quote Removal109504 +Node: Redirections109799 +Node: Executing Commands119459 +Node: Simple Command Expansion120129 +Node: Command Search and Execution122239 +Node: Command Execution Environment124617 +Node: Environment127652 +Node: Exit Status129315 +Node: Signals131099 +Node: Shell Scripts134548 +Node: Shell Builtin Commands137575 +Node: Bourne Shell Builtins139613 +Node: Bash Builtins161079 +Node: Modifying Shell Behavior191935 +Node: The Set Builtin192280 +Node: The Shopt Builtin202881 +Node: Special Builtins218793 +Node: Shell Variables219772 +Node: Bourne Shell Variables220209 +Node: Bash Variables222313 +Node: Bash Features255128 +Node: Invoking Bash256141 +Node: Bash Startup Files262154 +Node: Interactive Shells267285 +Node: What is an Interactive Shell?267696 +Node: Is this Shell Interactive?268345 +Node: Interactive Shell Behavior269160 +Node: Bash Conditional Expressions272789 +Node: Shell Arithmetic277431 +Node: Aliases280375 +Node: Arrays282988 +Node: The Directory Stack289379 +Node: Directory Stack Builtins290163 +Node: Controlling the Prompt294423 +Node: The Restricted Shell297388 +Node: Bash POSIX Mode299998 +Node: Shell Compatibility Mode311916 +Node: Job Control320483 +Node: Job Control Basics320943 +Node: Job Control Builtins325945 +Node: Job Control Variables331740 +Node: Command Line Editing332896 +Node: Introduction and Notation334567 +Node: Readline Interaction336190 +Node: Readline Bare Essentials337381 +Node: Readline Movement Commands339170 +Node: Readline Killing Commands340130 +Node: Readline Arguments342051 +Node: Searching343095 +Node: Readline Init File345281 +Node: Readline Init File Syntax346542 +Node: Conditional Init Constructs370128 +Node: Sample Init File374324 +Node: Bindable Readline Commands377448 +Node: Commands For Moving378652 +Node: Commands For History380703 +Node: Commands For Text385697 +Node: Commands For Killing389346 +Node: Numeric Arguments392379 +Node: Commands For Completion393518 +Node: Keyboard Macros397709 +Node: Miscellaneous Commands398397 +Node: Readline vi Mode404342 +Node: Programmable Completion405249 +Node: Programmable Completion Builtins413029 +Node: A Programmable Completion Example423781 +Node: Using History Interactively429029 +Node: Bash History Facilities429713 +Node: Bash History Builtins432718 +Node: History Interaction437742 +Node: Event Designators441362 +Node: Word Designators442716 +Node: Modifiers444476 +Node: Installing Bash446284 +Node: Basic Installation447421 +Node: Compilers and Options451143 +Node: Compiling For Multiple Architectures451884 +Node: Installation Names453576 +Node: Specifying the System Type455685 +Node: Sharing Defaults456402 +Node: Operation Controls457075 +Node: Optional Features458033 +Node: Reporting Bugs469252 +Node: Major Differences From The Bourne Shell470527 +Node: GNU Free Documentation License487376 +Node: Indexes512553 +Node: Builtin Index513007 +Node: Reserved Word Index519834 +Node: Variable Index522282 +Node: Function Index539056 +Node: Concept Index552840  End Tag Table diff --git a/doc/bashref.pdf b/doc/bashref.pdf index 50b64fbae..eb8b766ac 100644 Binary files a/doc/bashref.pdf and b/doc/bashref.pdf differ diff --git a/doc/bashref.ps b/doc/bashref.ps index 0ef38c1d1..02ab1d34c 100644 --- a/doc/bashref.ps +++ b/doc/bashref.ps @@ -1,8 +1,8 @@ %!PS-Adobe-2.0 -%%Creator: dvips(k) 2020.1 Copyright 2020 Radical Eye Software +%%Creator: dvips(k) 2021.1 Copyright 2021 Radical Eye Software %%Title: bashref.dvi -%%CreationDate: Wed Nov 18 20:13:07 2020 -%%Pages: 189 +%%CreationDate: Mon Sep 19 16:02:49 2022 +%%Pages: 196 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: CMBX12 CMR10 CMTT10 CMSL10 CMSY10 CMMI12 CMMI10 CMCSC10 @@ -12,7 +12,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2020.11.18:1513 +%DVIPSSource: TeX output 2022.09.19:1202 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -7613,23 +7613,23 @@ ifelse %%Page: 1 1 TeXDict begin 1 0 bop 150 1318 a Fv(Bash)64 b(Reference)j(Man)-5 b(ual)p 150 1385 3600 34 v 2361 1481 a Fu(Reference)31 -b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(5.1,)g(for)f -Ft(Bash)g Fu(V)-8 b(ersion)31 b(5.1.)3217 1697 y(Octob)s(er)f(2020)150 -4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 -b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11 -b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 +b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(5.2,)g(for)f +Ft(Bash)g Fu(V)-8 b(ersion)31 b(5.2.)3118 1697 y(Septem)m(b)s(er)f +(2022)150 4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 +b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 +y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 b(oundation)p 150 5141 3600 17 v eop end %%Page: 2 2 TeXDict begin 2 1 bop 150 4279 a Fu(This)35 b(text)h(is)g(a)g(brief)f (description)h(of)f(the)h(features)g(that)g(are)g(presen)m(t)g(in)f -(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(5.1,)c(29)f(Octob)s(er)f -(2020\).)150 4523 y(This)35 b(is)g(Edition)h(5.1,)i(last)f(up)s(dated)d -(29)i(Octob)s(er)g(2020,)j(of)c Fr(The)h(GNU)g(Bash)f(Reference)i(Man)m -(ual)p Fu(,)150 4633 y(for)30 b Ft(Bash)p Fu(,)g(V)-8 -b(ersion)31 b(5.1.)150 4767 y(Cop)m(yrigh)m(t)602 4764 -y(c)577 4767 y Fq(\015)f Fu(1988{2020)35 b(F)-8 b(ree)31 -b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 4902 -y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 +(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(5.2,)c(19)f(Septem)m(b)s +(er)f(2022\).)150 4523 y(This)e(is)h(Edition)f(5.2,)j(last)e(up)s +(dated)f(19)h(Septem)m(b)s(er)f(2022,)j(of)e Fr(The)f(GNU)i(Bash)e +(Reference)i(Man)m(ual)p Fu(,)150 4633 y(for)g Ft(Bash)p +Fu(,)g(V)-8 b(ersion)31 b(5.2.)150 4767 y(Cop)m(yrigh)m(t)602 +4764 y(c)577 4767 y Fq(\015)f Fu(1988{2022)35 b(F)-8 +b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 +4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f (under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26 @@ -7691,434 +7691,434 @@ f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)30 b Fu(7)399 2438 y(3.1.3)93 b(Commen)m(ts)14 b Fn(:)i(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(7)275 2548 y(3.2)92 +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(9)275 2548 y(3.2)92 b(Shell)30 b(Commands)9 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)23 b Fu(8)399 2658 y(3.2.1)93 b(Reserv)m(ed)31 +(:)h(:)f(:)23 b Fu(9)399 2658 y(3.2.1)93 b(Reserv)m(ed)31 b(W)-8 b(ords)27 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)40 -b Fu(8)399 2767 y(3.2.2)93 b(Simple)30 b(Commands)15 +b Fu(9)399 2767 y(3.2.2)93 b(Simple)30 b(Commands)15 b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)29 b Fu(8)399 2877 y(3.2.3)93 -b(Pip)s(elines)26 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)40 b Fu(8)399 2986 y(3.2.4)93 b(Lists)30 -b(of)h(Commands)23 b Fn(:)14 b(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)36 b Fu(9)399 +(:)f(:)h(:)f(:)g(:)h(:)f(:)29 b Fu(9)399 2877 y(3.2.3)93 +b(Pip)s(elines)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)36 b Fu(10)399 2986 y(3.2.4)93 b(Lists)30 +b(of)h(Commands)20 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(10)399 3096 y(3.2.5)93 b(Comp)s(ound)28 b(Commands)9 b Fn(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -22 b Fu(10)524 3205 y(3.2.5.1)93 b(Lo)s(oping)30 b(Constructs)16 +22 b Fu(11)524 3205 y(3.2.5.1)93 b(Lo)s(oping)30 b(Constructs)16 b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)29 -b Fu(10)524 3315 y(3.2.5.2)93 b(Conditional)31 b(Constructs)25 +b Fu(11)524 3315 y(3.2.5.2)93 b(Conditional)31 b(Constructs)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39 -b Fu(11)524 3425 y(3.2.5.3)93 b(Grouping)30 b(Commands)22 +b Fu(12)524 3425 y(3.2.5.3)93 b(Grouping)30 b(Commands)22 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)36 -b Fu(15)399 3534 y(3.2.6)93 b(Copro)s(cesses)26 b Fn(:)15 +b Fu(17)399 3534 y(3.2.6)93 b(Copro)s(cesses)26 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(15)399 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(18)399 3644 y(3.2.7)93 b(GNU)31 b(P)m(arallel)13 b Fn(:)k(:)f(:)f(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)26 b Fu(16)275 3753 y(3.3)92 b(Shell)30 +(:)f(:)g(:)h(:)26 b Fu(19)275 3753 y(3.3)92 b(Shell)30 b(F)-8 b(unctions)16 b Fn(:)g(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g -(:)h(:)29 b Fu(18)275 3863 y(3.4)92 b(Shell)30 b(P)m(arameters)c +(:)h(:)29 b Fu(19)275 3863 y(3.4)92 b(Shell)30 b(P)m(arameters)c Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38 b -Fu(20)399 3973 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)8 +Fu(21)399 3973 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)8 b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)21 b Fu(21)399 4082 y(3.4.2)93 b(Sp)s(ecial)30 +h(:)f(:)h(:)21 b Fu(23)399 4082 y(3.4.2)93 b(Sp)s(ecial)30 b(P)m(arameters)c Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 b Fu(21)275 4192 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 b Fu(23)275 4192 y(3.5)92 b(Shell)30 b(Expansions)24 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)38 b Fu(22)399 4301 y(3.5.1)93 b(Brace)31 +(:)g(:)h(:)f(:)38 b Fu(24)399 4301 y(3.5.1)93 b(Brace)31 b(Expansion)9 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b -Fu(23)399 4411 y(3.5.2)93 b(Tilde)30 b(Expansion)18 b +Fu(24)399 4411 y(3.5.2)93 b(Tilde)30 b(Expansion)18 b Fn(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)31 b Fu(24)399 4521 y(3.5.3)93 +f(:)h(:)f(:)g(:)h(:)f(:)h(:)31 b Fu(25)399 4521 y(3.5.3)93 b(Shell)30 b(P)m(arameter)i(Expansion)26 b Fn(:)15 b(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fu(25)399 4630 y(3.5.4)93 +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fu(26)399 4630 y(3.5.4)93 b(Command)29 b(Substitution)20 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(31)399 4740 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(34)399 4740 y(3.5.5)93 b(Arithmetic)31 b(Expansion)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b -Fu(31)399 4849 y(3.5.6)93 b(Pro)s(cess)30 b(Substitution)15 +Fu(34)399 4849 y(3.5.6)93 b(Pro)s(cess)30 b(Substitution)15 b Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)28 b Fu(32)399 4959 y(3.5.7)93 b(W)-8 +(:)f(:)g(:)h(:)28 b Fu(34)399 4959 y(3.5.7)93 b(W)-8 b(ord)31 b(Splitting)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 -b Fu(32)399 5068 y(3.5.8)93 b(Filename)32 b(Expansion)22 +b Fu(35)399 5068 y(3.5.8)93 b(Filename)32 b(Expansion)22 b Fn(:)14 b(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)35 b Fu(33)524 5178 y(3.5.8.1)93 b(P)m(attern)31 +f(:)h(:)f(:)g(:)35 b Fu(35)524 5178 y(3.5.8.1)93 b(P)m(attern)31 b(Matc)m(hing)14 b Fn(:)k(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)27 b Fu(33)399 5288 y(3.5.9)93 +h(:)f(:)g(:)h(:)f(:)h(:)27 b Fu(36)399 5288 y(3.5.9)93 b(Quote)31 b(Remo)m(v)-5 b(al)17 b Fn(:)g(:)e(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)30 -b Fu(35)p eop end +b Fu(38)p eop end %%Page: -2 4 TeXDict begin -2 3 bop 3699 -116 a Fu(ii)275 83 y(3.6)92 b(Redirections)14 b Fn(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)27 b Fu(35)399 193 y(3.6.1)93 b(Redirecting)31 +(:)h(:)f(:)g(:)27 b Fu(38)399 193 y(3.6.1)93 b(Redirecting)31 b(Input)11 b Fn(:)j(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(36)399 302 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(39)399 302 y(3.6.2)93 b(Redirecting)31 b(Output)15 b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)28 -b Fu(36)399 412 y(3.6.3)93 b(App)s(ending)28 b(Redirected)k(Output)20 +b Fu(39)399 412 y(3.6.3)93 b(App)s(ending)28 b(Redirected)k(Output)20 b Fn(:)14 b(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(36)399 +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(39)399 521 y(3.6.4)93 b(Redirecting)31 b(Standard)e(Output)h(and)f(Standard)h (Error)16 b Fn(:)e(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)29 b -Fu(37)399 631 y(3.6.5)93 b(App)s(ending)28 b(Standard)i(Output)f(and)h +Fu(40)399 631 y(3.6.5)93 b(App)s(ending)28 b(Standard)i(Output)f(and)h (Standard)f(Error)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40 -b Fu(37)399 741 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)15 +b Fu(40)399 741 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)27 b Fu(37)399 850 y(3.6.7)93 +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)27 b Fu(40)399 850 y(3.6.7)93 b(Here)31 b(Strings)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 -b Fu(38)399 960 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)25 +b Fu(41)399 960 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)25 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 -b Fu(38)399 1069 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)d +b Fu(41)399 1069 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)d Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -40 b Fu(38)399 1179 y(3.6.10)93 b(Op)s(ening)29 b(File)j(Descriptors)f +40 b Fu(41)399 1179 y(3.6.10)93 b(Op)s(ening)29 b(File)j(Descriptors)f (for)f(Reading)h(and)f(W)-8 b(riting)29 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f -(:)41 b Fu(38)275 1289 y(3.7)92 b(Executing)31 b(Commands)24 +(:)41 b Fu(41)275 1289 y(3.7)92 b(Executing)31 b(Commands)24 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(39)399 1398 y(3.7.1)93 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(42)399 1398 y(3.7.1)93 b(Simple)30 b(Command)f(Expansion)11 b Fn(:)k(:)g(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)24 b Fu(39)399 1508 y(3.7.2)93 b(Command)29 +h(:)f(:)g(:)h(:)f(:)24 b Fu(42)399 1508 y(3.7.2)93 b(Command)29 b(Searc)m(h)i(and)f(Execution)15 b Fn(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -28 b Fu(39)399 1617 y(3.7.3)93 b(Command)29 b(Execution)i(En)m +28 b Fu(42)399 1617 y(3.7.3)93 b(Command)29 b(Execution)i(En)m (vironmen)m(t)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fu(40)399 +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fu(43)399 1727 y(3.7.4)93 b(En)m(vironmen)m(t)26 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)39 b Fu(41)399 1836 y(3.7.5)93 b(Exit)31 +(:)f(:)g(:)h(:)39 b Fu(44)399 1836 y(3.7.5)93 b(Exit)31 b(Status)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29 -b Fu(41)399 1946 y(3.7.6)93 b(Signals)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:) +b Fu(44)399 1946 y(3.7.6)93 b(Signals)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fu(42)275 +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fu(45)275 2056 y(3.8)92 b(Shell)30 b(Scripts)12 b Fn(:)i(:)i(:)f(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fu(42)150 2306 +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fu(46)150 2306 y Fs(4)135 b(Shell)45 b(Builtin)g(Commands)14 b Fo(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)27 b Fs(44)275 2443 y Fu(4.1)92 b(Bourne)30 +(:)h(:)f(:)h(:)f(:)27 b Fs(48)275 2443 y Fu(4.1)92 b(Bourne)30 b(Shell)g(Builtins)16 b Fn(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)29 -b Fu(44)275 2553 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)13 +b Fu(48)275 2553 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)13 b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)26 b Fu(51)275 2663 y(4.3)92 b(Mo)s(difying)30 +(:)f(:)g(:)h(:)f(:)26 b Fu(55)275 2663 y(4.3)92 b(Mo)s(difying)30 b(Shell)g(Beha)m(vior)18 b Fn(:)f(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b Fu(62)399 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b Fu(67)399 2772 y(4.3.1)93 b(The)30 b(Set)g(Builtin)14 b Fn(:)i(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)27 b Fu(62)399 2882 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)21 +f(:)g(:)27 b Fu(67)399 2882 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)21 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)34 b Fu(66)275 2991 y(4.4)92 +h(:)f(:)h(:)f(:)g(:)h(:)34 b Fu(71)275 2991 y(4.4)92 b(Sp)s(ecial)30 b(Builtins)9 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)22 b Fu(72)150 3242 y Fs(5)135 b(Shell)45 +f(:)g(:)h(:)f(:)22 b Fu(77)150 3242 y Fs(5)135 b(Shell)45 b(V)-11 b(ariables)11 b Fo(:)20 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)24 b Fs(73)275 3379 y Fu(5.1)92 +f(:)h(:)f(:)g(:)h(:)f(:)24 b Fs(78)275 3379 y Fu(5.1)92 b(Bourne)30 b(Shell)g(V)-8 b(ariables)10 b Fn(:)17 b(:)e(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -23 b Fu(73)275 3489 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)26 +23 b Fu(78)275 3489 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)26 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38 -b Fu(73)150 3739 y Fs(6)135 b(Bash)44 b(F)-11 b(eatures)32 +b Fu(78)150 3739 y Fs(6)135 b(Bash)44 b(F)-11 b(eatures)32 b Fo(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -44 b Fs(86)275 3876 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)16 +44 b Fs(91)275 3876 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)16 b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)29 -b Fu(86)275 3986 y(6.2)92 b(Bash)30 b(Startup)g(Files)f +b Fu(91)275 3986 y(6.2)92 b(Bash)30 b(Startup)g(Files)f Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(88)275 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(93)275 4095 y(6.3)92 b(In)m(teractiv)m(e)32 b(Shells)19 b Fn(:)d(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fu(89)399 4205 y(6.3.1)93 +(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fu(94)399 4205 y(6.3.1)93 b(What)31 b(is)f(an)h(In)m(teractiv)m(e)h(Shell?)25 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 -b Fu(90)399 4315 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m +b Fu(95)399 4315 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m (e?)22 b Fn(:)d(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)35 b Fu(90)399 4424 y(6.3.3)93 b(In)m(teractiv)m(e)33 +h(:)35 b Fu(95)399 4424 y(6.3.3)93 b(In)m(teractiv)m(e)33 b(Shell)d(Beha)m(vior)11 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)24 b Fu(90)275 4534 y(6.4)92 b(Bash)30 +(:)h(:)f(:)g(:)h(:)f(:)24 b Fu(95)275 4534 y(6.4)92 b(Bash)30 b(Conditional)h(Expressions)10 b Fn(:)k(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)23 b Fu(91)275 4643 y(6.5)92 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)23 b Fu(96)275 4643 y(6.5)92 b(Shell)30 b(Arithmetic)13 b Fn(:)k(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)26 b Fu(93)275 4753 y(6.6)92 b(Aliases)20 b Fn(:)d(:)e(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 -b Fu(94)275 4863 y(6.7)92 b(Arra)m(ys)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:) +(:)h(:)26 b Fu(98)275 4753 y(6.6)92 b(Aliases)18 b Fn(:)e(:)g(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)31 +b Fu(100)275 4863 y(6.7)92 b(Arra)m(ys)23 b Fn(:)15 b(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 +b Fu(100)275 4972 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)14 +b Fn(:)j(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)27 b Fu(102)399 5082 y(6.8.1)93 +b(Directory)32 b(Stac)m(k)f(Builtins)20 b Fn(:)c(:)f(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)33 b Fu(102)275 5191 +y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)10 b Fn(:)15 +b(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)38 -b Fu(95)275 4972 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)16 -b Fn(:)h(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(97)399 5082 -y(6.8.1)93 b(Directory)32 b(Stac)m(k)f(Builtins)23 b -Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -36 b Fu(97)275 5191 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)13 -b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(98)275 5301 y(6.10)92 -b(The)30 b(Restricted)h(Shell)9 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22 -b Fu(100)p eop end +h(:)f(:)h(:)23 b Fu(104)275 5301 y(6.10)92 b(The)30 b(Restricted)h +(Shell)9 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22 b Fu(105)p +eop end %%Page: -3 5 TeXDict begin -3 4 bop 3674 -116 a Fu(iii)275 83 y(6.11)92 b(Bash)31 b(POSIX)e(Mo)s(de)14 b Fn(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)28 -b Fu(101)275 193 y(6.12)92 b(Shell)30 b(Compatibilit)m(y)i(Mo)s(de)25 +b Fu(106)275 193 y(6.12)92 b(Shell)30 b(Compatibilit)m(y)i(Mo)s(de)25 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)38 b Fu(104)150 443 y Fs(7)135 b(Job)45 b(Con)l(trol)35 +h(:)38 b Fu(110)150 443 y Fs(7)135 b(Job)45 b(Con)l(trol)35 b Fo(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) -g(:)48 b Fs(107)275 580 y Fu(7.1)92 b(Job)30 b(Con)m(trol)h(Basics)23 +g(:)48 b Fs(113)275 580 y Fu(7.1)92 b(Job)30 b(Con)m(trol)h(Basics)23 b Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 b Fu(107)275 690 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 b Fu(113)275 690 y(7.2)92 b(Job)30 b(Con)m(trol)h(Builtins)11 b Fn(:)k(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)24 b Fu(108)275 800 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8 +(:)f(:)24 b Fu(114)275 800 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8 b(ariables)26 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Fu(110)150 +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Fu(116)150 1050 y Fs(8)135 b(Command)45 b(Line)g(Editing)11 b Fo(:)20 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)k Fs(111)275 1187 y Fu(8.1)92 b(In)m(tro)s(duction) +(:)g(:)h(:)f(:)h(:)k Fs(117)275 1187 y Fu(8.1)92 b(In)m(tro)s(duction) 30 b(to)h(Line)f(Editing)12 b Fn(:)k(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(111)275 1297 y(8.2)92 +(:)h(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(117)275 1297 y(8.2)92 b(Readline)31 b(In)m(teraction)14 b Fn(:)j(:)e(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)27 -b Fu(111)399 1406 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)13 +b Fu(117)399 1406 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)13 b Fn(:)j(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)26 -b Fu(112)399 1516 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i +b Fu(118)399 1516 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i (Commands)13 b Fn(:)i(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)27 -b Fu(112)399 1626 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)24 +b Fu(118)399 1626 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)24 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 -b Fu(113)399 1735 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)17 +b Fu(119)399 1735 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)30 b Fu(113)399 1845 y(8.2.5)93 b(Searc)m(hing)31 +(:)f(:)h(:)30 b Fu(119)399 1845 y(8.2.5)93 b(Searc)m(hing)31 b(for)f(Commands)f(in)h(the)h(History)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28 b Fu(113)275 +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28 b Fu(119)275 1954 y(8.3)92 b(Readline)31 b(Init)f(File)8 b Fn(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b Fu(114)399 2064 +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b Fu(120)399 2064 y(8.3.1)93 b(Readline)31 b(Init)f(File)i(Syn)m(tax)21 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)34 -b Fu(114)399 2174 y(8.3.2)93 b(Conditional)31 b(Init)f(Constructs)14 +b Fu(120)399 2174 y(8.3.2)93 b(Conditional)31 b(Init)f(Constructs)14 b Fn(:)h(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)27 -b Fu(122)399 2283 y(8.3.3)93 b(Sample)30 b(Init)g(File)20 +b Fu(129)399 2283 y(8.3.3)93 b(Sample)30 b(Init)g(File)20 b Fn(:)d(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(124)275 2393 y(8.4)92 +(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(130)275 2393 y(8.4)92 b(Bindable)30 b(Readline)h(Commands)19 b Fn(:)c(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(127)399 2502 y(8.4.1)93 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(133)399 2502 y(8.4.1)93 b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)16 b Fn(:)h(:)e(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(127)399 +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(133)399 2612 y(8.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f (History)c Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)39 b Fu(128)399 2721 y(8.4.3)93 b(Commands)29 b(F)-8 +f(:)39 b Fu(134)399 2721 y(8.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8 b(ext)9 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)23 b Fu(130)399 2831 y(8.4.4)93 b(Killing)31 +h(:)f(:)23 b Fu(136)399 2831 y(8.4.4)93 b(Killing)31 b(And)e(Y)-8 b(anking)10 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(131)399 +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(137)399 2941 y(8.4.5)93 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39 b Fu(132)399 +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39 b Fu(138)399 3050 y(8.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8 b(or)31 b(Y)-8 b(ou)20 b Fn(:)c(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)33 -b Fu(133)399 3160 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)9 +b Fu(139)399 3160 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)9 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(134)399 3269 y(8.4.8)93 +h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(140)399 3269 y(8.4.8)93 b(Some)30 b(Miscellaneous)j(Commands)14 b Fn(:)f(:)j(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)27 b Fu(135)275 3379 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)e +(:)f(:)27 b Fu(141)275 3379 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)e Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)41 b Fu(137)275 +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)41 b Fu(143)275 3489 y(8.6)92 b(Programmable)30 b(Completion)25 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 -b Fu(137)275 3598 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)14 +b Fu(143)275 3598 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)14 b Fn(:)i(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(139)275 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(146)275 3708 y(8.8)92 b(A)30 b(Programmable)h(Completion)g(Example)8 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)22 b Fu(143)150 3958 y +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)22 b Fu(150)150 3958 y Fs(9)135 b(Using)45 b(History)h(In)l(teractiv)l(ely)28 b Fo(:)22 b(:)d(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g -(:)h(:)41 b Fs(146)275 4095 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8 +(:)h(:)41 b Fs(152)275 4095 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8 b(acilities)9 b Fn(:)19 b(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(146)275 +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(152)275 4205 y(9.2)92 b(Bash)30 b(History)h(Builtins)d Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)h(:)f(:)41 b Fu(146)275 4315 y(9.3)92 b(History)31 +h(:)f(:)h(:)f(:)41 b Fu(152)275 4315 y(9.3)92 b(History)31 b(Expansion)10 b Fn(:)k(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)23 -b Fu(148)399 4424 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)19 +b Fu(154)399 4424 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)19 b Fn(:)e(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)32 b Fu(149)399 4534 y(9.3.2)93 b(W)-8 +(:)h(:)f(:)g(:)h(:)32 b Fu(155)399 4534 y(9.3.2)93 b(W)-8 b(ord)31 b(Designators)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(150)399 +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(156)399 4643 y(9.3.3)93 b(Mo)s(di\014ers)15 b Fn(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)29 b Fu(150)p eop end +h(:)f(:)h(:)f(:)g(:)29 b Fu(156)p eop end %%Page: -4 6 TeXDict begin -4 5 bop 3677 -116 a Fu(iv)150 83 y Fs(10)135 b(Installing)46 b(Bash)16 b Fo(:)j(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)h(:)f(:)29 b Fs(152)275 220 y Fu(10.1)92 b(Basic)32 +f(:)h(:)f(:)29 b Fs(158)275 220 y Fu(10.1)92 b(Basic)32 b(Installation)8 b Fn(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22 -b Fu(152)275 330 y(10.2)92 b(Compilers)30 b(and)g(Options)17 +b Fu(158)275 330 y(10.2)92 b(Compilers)30 b(and)g(Options)17 b Fn(:)d(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)30 b Fu(153)275 439 y(10.3)92 b(Compiling)30 +(:)f(:)h(:)f(:)30 b Fu(159)275 439 y(10.3)92 b(Compiling)30 b(F)-8 b(or)32 b(Multiple)f(Arc)m(hitectures)10 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)23 b Fu(153)275 549 y(10.4)92 +(:)g(:)h(:)f(:)h(:)f(:)23 b Fu(159)275 549 y(10.4)92 b(Installation)32 b(Names)22 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)35 -b Fu(153)275 658 y(10.5)92 b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s +b Fu(160)275 658 y(10.5)92 b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s (e)21 b Fn(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)34 b Fu(154)275 768 y(10.6)92 b(Sharing)30 b(Defaults)24 +h(:)34 b Fu(160)275 768 y(10.6)92 b(Sharing)30 b(Defaults)24 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 b Fu(154)275 +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 b Fu(160)275 878 y(10.7)92 b(Op)s(eration)30 b(Con)m(trols)12 b Fn(:)k(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)25 b Fu(154)275 987 y(10.8)92 b(Optional)31 +(:)h(:)f(:)25 b Fu(161)275 987 y(10.8)92 b(Optional)31 b(F)-8 b(eatures)19 b Fn(:)d(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)32 -b Fu(155)150 1238 y Fs(App)t(endix)44 b(A)119 b(Rep)t(orting)46 +b Fu(161)150 1238 y Fs(App)t(endix)44 b(A)119 b(Rep)t(orting)46 b(Bugs)21 b Fo(:)f(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)35 b Fs(160)150 1498 y(App)t(endix)44 +(:)f(:)g(:)h(:)f(:)35 b Fs(167)150 1498 y(App)t(endix)44 b(B)125 b(Ma)7 b(jor)46 b(Di\013erences)g(F)-11 b(rom)284 1639 y(The)45 b(Bourne)f(Shell)35 b Fo(:)19 b(:)h(:)f(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)47 b Fs(161)275 1776 y Fu(B.1)92 +f(:)g(:)h(:)f(:)h(:)47 b Fs(168)275 1776 y Fu(B.1)92 b(Implemen)m(tation)31 b(Di\013erences)h(F)-8 b(rom)31 b(The)e(SVR4.2)j(Shell)22 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)35 b Fu(165)150 2027 y Fs(App)t(endix)44 b(C)124 b(GNU)36 +(:)35 b Fu(172)150 2027 y Fs(App)t(endix)44 b(C)124 b(GNU)36 b(F)-11 b(ree)35 b(Do)t(cumen)l(tation)i(License)25 b -Fo(:)20 b(:)29 b Fs(167)150 2305 y(App)t(endix)44 b(D)118 +Fo(:)20 b(:)29 b Fs(174)150 2305 y(App)t(endix)44 b(D)118 b(Indexes)27 b Fo(:)20 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)40 -b Fs(175)275 2442 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h +b Fs(182)275 2442 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h (Commands)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)38 -b Fu(175)275 2552 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8 +b Fu(182)275 2552 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8 b(ords)20 b Fn(:)c(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)34 -b Fu(176)275 2661 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8 +b Fu(183)275 2661 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8 b(ariable)32 b(Index)27 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)42 b Fu(177)275 2771 y(D.4)92 b(F)-8 b(unction)31 +h(:)f(:)g(:)42 b Fu(184)275 2771 y(D.4)92 b(F)-8 b(unction)31 b(Index)24 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 -b Fu(179)275 2880 y(D.5)92 b(Concept)30 b(Index)15 b +b Fu(186)275 2880 y(D.5)92 b(Concept)30 b(Index)15 b Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29 b -Fu(181)p eop end +Fu(188)p eop end %%Page: 1 7 TeXDict begin 1 6 bop 3705 -116 a Fu(1)150 299 y Fp(1)80 b(In)l(tro)t(duction)150 604 y Fs(1.1)68 b(What)45 b(is)g(Bash?)150 @@ -8267,7 +8267,7 @@ b(and)e(function)h(names.)630 4020 y(Also)31 b(referred)f(to)h(as)f(an) h Ft(identifier)p Fu(.)150 4186 y Ft(operator)96 b Fu(A)38 b Ft(control)28 b(operator)36 b Fu(or)h(a)i Ft(redirection)27 b(operator)p Fu(.)61 b(See)38 b(Section)g(3.6)h([Redirec-)630 -4295 y(tions],)f(page)f(35,)i(for)d(a)g(list)h(of)f(redirection)h(op)s +4295 y(tions],)f(page)f(38,)i(for)d(a)g(list)h(of)f(redirection)h(op)s (erators.)58 b(Op)s(erators)35 b(con)m(tain)j(at)f(least)630 4405 y(one)31 b(unquoted)e Ft(metacharacter)p Fu(.)150 4570 y Ft(process)f(group)630 4680 y Fu(A)i(collection)k(of)c(related)h @@ -8339,34 +8339,34 @@ y Fu(The)c(follo)m(wing)h(is)f(a)h(brief)e(description)i(of)f(the)g (shell's)h(op)s(eration)f(when)f(it)i(reads)f(and)f(executes)j(a)150 3299 y(command.)h(Basically)-8 b(,)34 b(the)c(shell)h(do)s(es)f(the)h (follo)m(wing:)199 3456 y(1.)61 b(Reads)42 b(its)h(input)e(from)h(a)g -(\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(42\),)k +(\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(46\),)k (from)41 b(a)i(string)330 3566 y(supplied)30 b(as)h(an)g(argumen)m(t)h (to)g(the)f Ft(-c)g Fu(in)m(v)m(o)s(cation)i(option)f(\(see)g(Section)g -(6.1)g([In)m(v)m(oking)g(Bash],)330 3675 y(page)f(86\),)h(or)e(from)g +(6.1)g([In)m(v)m(oking)g(Bash],)330 3675 y(page)f(91\),)h(or)e(from)g (the)h(user's)f(terminal.)199 3821 y(2.)61 b(Breaks)43 b(the)g(input)f(in)m(to)h(w)m(ords)f(and)g(op)s(erators,)k(ob)s(eying)d (the)g(quoting)g(rules)f(describ)s(ed)f(in)330 3931 y(Section)27 b(3.1.2)i([Quoting],)f(page)f(6.)40 b(These)26 b(tok)m(ens)i(are)f (separated)g(b)m(y)f Ft(metacharacters)p Fu(.)36 b(Alias)330 4040 y(expansion)30 b(is)h(p)s(erformed)d(b)m(y)j(this)f(step)g(\(see)i -(Section)f(6.6)g([Aliases],)i(page)e(94\).)199 4186 y(3.)61 -b(P)m(arses)35 b(the)g(tok)m(ens)g(in)m(to)h(simple)e(and)g(comp)s -(ound)f(commands)h(\(see)h(Section)h(3.2)f([Shell)g(Com-)330 -4296 y(mands],)30 b(page)h(8\).)199 4442 y(4.)61 b(P)m(erforms)40 +(Section)f(6.6)g([Aliases],)i(page)e(100\).)199 4186 +y(3.)61 b(P)m(arses)35 b(the)g(tok)m(ens)g(in)m(to)h(simple)e(and)g +(comp)s(ound)f(commands)h(\(see)h(Section)h(3.2)f([Shell)g(Com-)330 +4296 y(mands],)30 b(page)h(9\).)199 4442 y(4.)61 b(P)m(erforms)40 b(the)h(v)-5 b(arious)40 b(shell)h(expansions)f(\(see)h(Section)g(3.5)g -([Shell)g(Expansions],)h(page)f(22\),)330 4551 y(breaking)35 +([Shell)g(Expansions],)h(page)f(24\),)330 4551 y(breaking)35 b(the)g(expanded)g(tok)m(ens)h(in)m(to)g(lists)f(of)g(\014lenames)h (\(see)g(Section)f(3.5.8)i([Filename)g(Ex-)330 4661 y(pansion],)30 -b(page)h(33\))h(and)e(commands)g(and)g(argumen)m(ts.)199 +b(page)h(35\))h(and)e(commands)g(and)g(argumen)m(ts.)199 4807 y(5.)61 b(P)m(erforms)36 b(an)m(y)i(necessary)f(redirections)g -(\(see)h(Section)f(3.6)h([Redirections],)i(page)e(35\))g(and)e(re-)330 +(\(see)h(Section)f(3.6)h([Redirections],)i(page)e(38\))g(and)e(re-)330 4916 y(mo)m(v)m(es)c(the)e(redirection)h(op)s(erators)g(and)f(their)g (op)s(erands)f(from)h(the)h(argumen)m(t)f(list.)199 5062 y(6.)61 b(Executes)31 b(the)g(command)f(\(see)h(Section)g(3.7)h -([Executing)f(Commands],)f(page)h(39\).)199 5208 y(7.)61 +([Executing)f(Commands],)f(page)h(42\).)199 5208 y(7.)61 b(Optionally)40 b(w)m(aits)g(for)f(the)g(command)g(to)h(complete)g(and) f(collects)i(its)f(exit)g(status)f(\(see)h(Sec-)330 5317 -y(tion)31 b(3.7.5)h([Exit)f(Status],)g(page)g(41\).)p +y(tion)31 b(3.7.5)h([Exit)f(Status],)g(page)g(44\).)p eop end %%Page: 6 12 TeXDict begin 6 11 bop 150 -116 a Fu(Chapter)30 b(3:)41 @@ -8378,2350 +8378,2604 @@ y(Quoting)c(can)f(b)s(e)g(used)f(to)j(disable)e(sp)s(ecial)h(treatmen)m (t)h(for)e(sp)s(ecial)h(c)m(haracters,)i(to)e(prev)m(en)m(t)g(reserv)m (ed)150 665 y(w)m(ords)i(from)g(b)s(eing)g(recognized)h(as)g(suc)m(h,)f (and)g(to)h(prev)m(en)m(t)g(parameter)g(expansion.)275 -795 y(Eac)m(h)22 b(of)g(the)g(shell)g(metac)m(haracters)i(\(see)f +799 y(Eac)m(h)22 b(of)g(the)g(shell)g(metac)m(haracters)i(\(see)f (Chapter)e(2)i([De\014nitions],)h(page)f(3\))g(has)e(sp)s(ecial)i -(meaning)150 905 y(to)40 b(the)g(shell)f(and)g(m)m(ust)g(b)s(e)g +(meaning)150 908 y(to)40 b(the)g(shell)f(and)g(m)m(ust)g(b)s(e)g (quoted)g(if)h(it)g(is)f(to)h(represen)m(t)g(itself.)68 -b(When)39 b(the)h(command)f(history)150 1015 y(expansion)i(facilities)j +b(When)39 b(the)h(command)f(history)150 1018 y(expansion)i(facilities)j (are)e(b)s(eing)f(used)g(\(see)h(Section)h(9.3)f([History)h(In)m -(teraction],)j(page)c(148\),)47 b(the)150 1124 y Fr(history)30 +(teraction],)j(page)c(154\),)47 b(the)150 1127 y Fr(history)30 b(expansion)h Fu(c)m(haracter,)h(usually)f(`)p Ft(!)p Fu(',)g(m)m(ust)f(b)s(e)g(quoted)h(to)g(prev)m(en)m(t)g(history)g -(expansion.)41 b(See)150 1234 y(Section)22 b(9.1)g([Bash)f(History)h(F) --8 b(acilities],)26 b(page)c(146,)j(for)20 b(more)h(details)h -(concerning)g(history)f(expansion.)275 1364 y(There)37 +(expansion.)41 b(See)150 1237 y(Section)22 b(9.1)g([Bash)f(History)h(F) +-8 b(acilities],)26 b(page)c(152,)j(for)20 b(more)h(details)h +(concerning)g(history)f(expansion.)275 1370 y(There)37 b(are)h(three)f(quoting)h(mec)m(hanisms:)56 b(the)38 b Fr(escap)s(e)g(c)m(haracter)p Fu(,)j(single)d(quotes,)i(and)d(double) -150 1474 y(quotes.)150 1665 y Fk(3.1.2.1)63 b(Escap)s(e)41 -b(Character)150 1812 y Fu(A)36 b(non-quoted)f(bac)m(kslash)h(`)p +150 1480 y(quotes.)150 1677 y Fk(3.1.2.1)63 b(Escap)s(e)41 +b(Character)150 1824 y Fu(A)36 b(non-quoted)f(bac)m(kslash)h(`)p Ft(\\)p Fu(')g(is)f(the)h(Bash)g(escap)s(e)f(c)m(haracter.)58 b(It)36 b(preserv)m(es)f(the)h(literal)h(v)-5 b(alue)36 -b(of)150 1921 y(the)27 b(next)g(c)m(haracter)h(that)f(follo)m(ws,)i +b(of)150 1934 y(the)27 b(next)g(c)m(haracter)h(that)f(follo)m(ws,)i (with)d(the)h(exception)g(of)g Ft(newline)p Fu(.)38 b(If)26 -b(a)h Ft(\\newline)d Fu(pair)i(app)s(ears,)150 2031 y(and)k(the)h(bac)m +b(a)h Ft(\\newline)d Fu(pair)i(app)s(ears,)150 2043 y(and)k(the)h(bac)m (kslash)g(itself)g(is)g(not)g(quoted,)g(the)f Ft(\\newline)f Fu(is)h(treated)i(as)f(a)g(line)g(con)m(tin)m(uation)h(\(that)150 -2140 y(is,)f(it)g(is)f(remo)m(v)m(ed)h(from)f(the)h(input)e(stream)i -(and)f(e\013ectiv)m(ely)j(ignored\).)150 2331 y Fk(3.1.2.2)63 -b(Single)42 b(Quotes)150 2478 y Fu(Enclosing)24 b(c)m(haracters)h(in)e +2153 y(is,)f(it)g(is)f(remo)m(v)m(ed)h(from)f(the)h(input)e(stream)i +(and)f(e\013ectiv)m(ely)j(ignored\).)150 2350 y Fk(3.1.2.2)63 +b(Single)42 b(Quotes)150 2497 y Fu(Enclosing)24 b(c)m(haracters)h(in)e (single)h(quotes)g(\(`)p Ft(')p Fu('\))g(preserv)m(es)g(the)f(literal)i (v)-5 b(alue)24 b(of)g(eac)m(h)g(c)m(haracter)h(within)150 -2588 y(the)31 b(quotes.)42 b(A)31 b(single)h(quote)f(ma)m(y)g(not)g(o)s +2607 y(the)31 b(quotes.)42 b(A)31 b(single)h(quote)f(ma)m(y)g(not)g(o)s (ccur)g(b)s(et)m(w)m(een)g(single)h(quotes,)f(ev)m(en)h(when)d -(preceded)i(b)m(y)g(a)150 2697 y(bac)m(kslash.)150 2888 -y Fk(3.1.2.3)63 b(Double)42 b(Quotes)150 3035 y Fu(Enclosing)24 +(preceded)i(b)m(y)g(a)150 2717 y(bac)m(kslash.)150 2914 +y Fk(3.1.2.3)63 b(Double)42 b(Quotes)150 3061 y Fu(Enclosing)24 b(c)m(haracters)h(in)f(double)f(quotes)h(\(`)p Ft(")p Fu('\))g(preserv)m(es)g(the)g(literal)h(v)-5 b(alue)24 -b(of)g(all)g(c)m(haracters)h(within)150 3145 y(the)34 +b(of)g(all)g(c)m(haracters)h(within)150 3170 y(the)34 b(quotes,)h(with)f(the)g(exception)h(of)f(`)p Ft($)p Fu(',)h(`)p Ft(`)p Fu(',)g(`)p Ft(\\)p Fu(',)g(and,)f(when)f(history)g -(expansion)h(is)g(enabled,)h(`)p Ft(!)p Fu('.)150 3254 +(expansion)h(is)g(enabled,)h(`)p Ft(!)p Fu('.)150 3280 y(When)c(the)g(shell)g(is)g(in)f Fm(posix)h Fu(mo)s(de)f(\(see)i -(Section)g(6.11)g([Bash)f(POSIX)f(Mo)s(de],)i(page)g(101\),)h(the)e(`)p -Ft(!)p Fu(')150 3364 y(has)d(no)g(sp)s(ecial)h(meaning)g(within)f +(Section)g(6.11)g([Bash)f(POSIX)f(Mo)s(de],)i(page)g(106\),)h(the)e(`)p +Ft(!)p Fu(')150 3390 y(has)d(no)g(sp)s(ecial)h(meaning)g(within)f (double)g(quotes,)h(ev)m(en)g(when)f(history)g(expansion)g(is)g -(enabled.)40 b(The)150 3474 y(c)m(haracters)h(`)p Ft($)p +(enabled.)40 b(The)150 3499 y(c)m(haracters)h(`)p Ft($)p Fu(')e(and)g(`)p Ft(`)p Fu(')g(retain)h(their)f(sp)s(ecial)h(meaning)f (within)g(double)g(quotes)h(\(see)g(Section)g(3.5)150 -3583 y([Shell)29 b(Expansions],)g(page)h(22\).)41 b(The)28 +3609 y([Shell)29 b(Expansions],)g(page)h(24\).)41 b(The)28 b(bac)m(kslash)i(retains)f(its)h(sp)s(ecial)f(meaning)g(only)g(when)f -(follo)m(w)m(ed)150 3693 y(b)m(y)41 b(one)f(of)h(the)g(follo)m(wing)h +(follo)m(w)m(ed)150 3718 y(b)m(y)41 b(one)f(of)h(the)g(follo)m(wing)h (c)m(haracters:)63 b(`)p Ft($)p Fu(',)43 b(`)p Ft(`)p Fu(',)h(`)p Ft(")p Fu(',)g(`)p Ft(\\)p Fu(',)f(or)e Ft(newline)p -Fu(.)69 b(Within)41 b(double)f(quotes,)150 3802 y(bac)m(kslashes)25 +Fu(.)69 b(Within)41 b(double)f(quotes,)150 3828 y(bac)m(kslashes)25 b(that)h(are)f(follo)m(w)m(ed)h(b)m(y)e(one)h(of)g(these)g(c)m (haracters)h(are)f(remo)m(v)m(ed.)40 b(Bac)m(kslashes)26 -b(preceding)150 3912 y(c)m(haracters)35 b(without)e(a)h(sp)s(ecial)f +b(preceding)150 3938 y(c)m(haracters)35 b(without)e(a)h(sp)s(ecial)f (meaning)h(are)f(left)h(unmo)s(di\014ed.)47 b(A)34 b(double)f(quote)g -(ma)m(y)h(b)s(e)f(quoted)150 4022 y(within)h(double)h(quotes)g(b)m(y)g +(ma)m(y)h(b)s(e)f(quoted)150 4047 y(within)h(double)h(quotes)g(b)m(y)g (preceding)g(it)g(with)g(a)g(bac)m(kslash.)55 b(If)35 -b(enabled,)h(history)f(expansion)g(will)150 4131 y(b)s(e)f(p)s +b(enabled,)h(history)f(expansion)g(will)150 4157 y(b)s(e)f(p)s (erformed)g(unless)g(an)h(`)p Ft(!)p Fu(')g(app)s(earing)f(in)h(double) f(quotes)i(is)f(escap)s(ed)g(using)f(a)h(bac)m(kslash.)55 -b(The)150 4241 y(bac)m(kslash)31 b(preceding)f(the)h(`)p -Ft(!)p Fu(')f(is)h(not)g(remo)m(v)m(ed.)275 4371 y(The)41 +b(The)150 4266 y(bac)m(kslash)31 b(preceding)f(the)h(`)p +Ft(!)p Fu(')f(is)h(not)g(remo)m(v)m(ed.)275 4400 y(The)41 b(sp)s(ecial)h(parameters)f(`)p Ft(*)p Fu(')h(and)f(`)p Ft(@)p Fu(')h(ha)m(v)m(e)g(sp)s(ecial)g(meaning)g(when)f(in)g(double)g -(quotes)h(\(see)150 4481 y(Section)31 b(3.5.3)h([Shell)f(P)m(arameter)h -(Expansion],)e(page)h(25\).)150 4672 y Fk(3.1.2.4)63 -b(ANSI-C)40 b(Quoting)150 4819 y Fu(W)-8 b(ords)43 b(of)f(the)h(form)f -Ft($')p Fj(string)p Ft(')e Fu(are)j(treated)g(sp)s(ecially)-8 -b(.)79 b(The)42 b(w)m(ord)g(expands)f(to)j Fr(string)p -Fu(,)h(with)150 4928 y(bac)m(kslash-escap)s(ed)f(c)m(haracters)h -(replaced)f(as)g(sp)s(eci\014ed)f(b)m(y)g(the)g(ANSI)g(C)g(standard.)79 -b(Bac)m(kslash)150 5038 y(escap)s(e)31 b(sequences,)g(if)f(presen)m(t,) -h(are)g(deco)s(ded)f(as)g(follo)m(ws:)150 5189 y Ft(\\a)384 -b Fu(alert)31 b(\(b)s(ell\))150 5340 y Ft(\\b)384 b Fu(bac)m(kspace)p -eop end +(quotes)h(\(see)150 4509 y(Section)31 b(3.5.3)h([Shell)f(P)m(arameter)h +(Expansion],)e(page)h(26\).)150 4707 y Fk(3.1.2.4)63 +b(ANSI-C)40 b(Quoting)150 4854 y Fu(Character)g(sequences)h(of)f(the)g +(form)g($')p Fr(string)8 b Fu(')40 b(are)h(treated)g(as)f(a)h(sp)s +(ecial)f(kind)f(of)i(single)f(quotes.)150 4963 y(The)e(sequence)i +(expands)e(to)i Fr(string)p Fu(,)h(with)e(bac)m(kslash-escap)s(ed)h(c)m +(haracters)g(in)f Fr(string)46 b Fu(replaced)40 b(as)150 +5073 y(sp)s(eci\014ed)32 b(b)m(y)h(the)g(ANSI)f(C)h(standard.)47 +b(Bac)m(kslash)34 b(escap)s(e)g(sequences,)g(if)e(presen)m(t,)i(are)f +(deco)s(ded)g(as)150 5182 y(follo)m(ws:)150 5340 y Ft(\\a)384 +b Fu(alert)31 b(\(b)s(ell\))p eop end %%Page: 7 13 TeXDict begin 7 12 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(7)150 299 -y Ft(\\e)150 408 y(\\E)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)h -(\(not)f(ANSI)f(C\))150 566 y Ft(\\f)384 b Fu(form)30 -b(feed)150 723 y Ft(\\n)384 b Fu(newline)150 880 y Ft(\\r)g -Fu(carriage)32 b(return)150 1037 y Ft(\\t)384 b Fu(horizon)m(tal)32 -b(tab)150 1194 y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)150 -1351 y Ft(\\\\)384 b Fu(bac)m(kslash)150 1508 y Ft(\\')g -Fu(single)31 b(quote)150 1665 y Ft(\\")384 b Fu(double)30 -b(quote)150 1823 y Ft(\\?)384 b Fu(question)31 b(mark)150 -1980 y Ft(\\)p Fj(nnn)288 b Fu(the)36 b(eigh)m(t-bit)h(c)m(haracter)g -(whose)f(v)-5 b(alue)36 b(is)f(the)h(o)s(ctal)h(v)-5 -b(alue)36 b Fr(nnn)e Fu(\(one)i(to)h(three)f(o)s(ctal)630 -2089 y(digits\))150 2246 y Ft(\\x)p Fj(HH)288 b Fu(the)36 -b(eigh)m(t-bit)i(c)m(haracter)f(whose)f(v)-5 b(alue)36 -b(is)g(the)g(hexadecimal)h(v)-5 b(alue)36 b Fr(HH)46 -b Fu(\(one)37 b(or)f(t)m(w)m(o)630 2356 y(hex)30 b(digits\))150 -2513 y Ft(\\u)p Fj(HHHH)192 b Fu(the)33 b(Unico)s(de)f(\(ISO/IEC)g -(10646\))j(c)m(haracter)f(whose)e(v)-5 b(alue)33 b(is)g(the)g -(hexadecimal)g(v)-5 b(alue)630 2623 y Fr(HHHH)41 b Fu(\(one)31 -b(to)g(four)f(hex)g(digits\))150 2780 y Ft(\\U)p Fj(HHHHHHHH)630 -2889 y Fu(the)j(Unico)s(de)f(\(ISO/IEC)g(10646\))j(c)m(haracter)f -(whose)e(v)-5 b(alue)33 b(is)g(the)g(hexadecimal)g(v)-5 -b(alue)630 2999 y Fr(HHHHHHHH)42 b Fu(\(one)31 b(to)g(eigh)m(t)g(hex)g -(digits\))150 3156 y Ft(\\c)p Fj(x)336 b Fu(a)31 b(con)m(trol-)p -Fr(x)38 b Fu(c)m(haracter)150 3313 y(The)30 b(expanded)f(result)i(is)f +y Ft(\\b)384 b Fu(bac)m(kspace)150 466 y Ft(\\e)150 576 +y(\\E)g Fu(an)30 b(escap)s(e)h(c)m(haracter)h(\(not)f(ANSI)f(C\))150 +743 y Ft(\\f)384 b Fu(form)30 b(feed)150 911 y Ft(\\n)384 +b Fu(newline)150 1078 y Ft(\\r)g Fu(carriage)32 b(return)150 +1245 y Ft(\\t)384 b Fu(horizon)m(tal)32 b(tab)150 1413 +y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)150 1580 y Ft(\\\\)384 +b Fu(bac)m(kslash)150 1747 y Ft(\\')g Fu(single)31 b(quote)150 +1915 y Ft(\\")384 b Fu(double)30 b(quote)150 2082 y Ft(\\?)384 +b Fu(question)31 b(mark)150 2249 y Ft(\\)p Fj(nnn)288 +b Fu(the)36 b(eigh)m(t-bit)h(c)m(haracter)g(whose)f(v)-5 +b(alue)36 b(is)f(the)h(o)s(ctal)h(v)-5 b(alue)36 b Fr(nnn)e +Fu(\(one)i(to)h(three)f(o)s(ctal)630 2359 y(digits\))150 +2526 y Ft(\\x)p Fj(HH)288 b Fu(the)36 b(eigh)m(t-bit)i(c)m(haracter)f +(whose)f(v)-5 b(alue)36 b(is)g(the)g(hexadecimal)h(v)-5 +b(alue)36 b Fr(HH)46 b Fu(\(one)37 b(or)f(t)m(w)m(o)630 +2636 y(hex)30 b(digits\))150 2803 y Ft(\\u)p Fj(HHHH)192 +b Fu(the)33 b(Unico)s(de)f(\(ISO/IEC)g(10646\))j(c)m(haracter)f(whose)e +(v)-5 b(alue)33 b(is)g(the)g(hexadecimal)g(v)-5 b(alue)630 +2913 y Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)f(hex)g(digits\))150 +3080 y Ft(\\U)p Fj(HHHHHHHH)630 3190 y Fu(the)j(Unico)s(de)f(\(ISO/IEC) +g(10646\))j(c)m(haracter)f(whose)e(v)-5 b(alue)33 b(is)g(the)g +(hexadecimal)g(v)-5 b(alue)630 3299 y Fr(HHHHHHHH)42 +b Fu(\(one)31 b(to)g(eigh)m(t)g(hex)g(digits\))150 3467 +y Ft(\\c)p Fj(x)336 b Fu(a)31 b(con)m(trol-)p Fr(x)38 +b Fu(c)m(haracter)150 3638 y(The)30 b(expanded)f(result)i(is)f (single-quoted,)i(as)f(if)f(the)g(dollar)h(sign)g(had)e(not)i(b)s(een)f -(presen)m(t.)150 3510 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41 -b(T)-10 b(ranslation)150 3657 y Fu(A)28 b(double-quoted)g(string)f -(preceded)h(b)m(y)f(a)h(dollar)h(sign)e(\(`)p Ft($)p -Fu('\))i(will)f(cause)g(the)g(string)g(to)g(b)s(e)f(translated)150 -3767 y(according)37 b(to)g(the)f(curren)m(t)g(lo)s(cale.)59 -b(The)36 b Fr(gettext)k Fu(infrastructure)35 b(p)s(erforms)g(the)h -(message)h(catalog)150 3876 y(lo)s(okup)21 b(and)g(translation,)k -(using)c(the)h Ft(LC_MESSAGES)d Fu(and)i Ft(TEXTDOMAIN)e -Fu(shell)i(v)-5 b(ariables,)25 b(as)d(explained)150 3986 -y(b)s(elo)m(w.)57 b(See)36 b(the)g(gettext)i(do)s(cumen)m(tation)e(for) -g(additional)g(details.)58 b(If)35 b(the)h(curren)m(t)f(lo)s(cale)j(is) -e Ft(C)f Fu(or)150 4096 y Ft(POSIX)p Fu(,)g(or)g(if)g(there)g(are)h(no) -f(translations)h(a)m(v)-5 b(ailable,)38 b(the)e(dollar)f(sign)g(is)g -(ignored.)55 b(If)35 b(the)g(string)g(is)150 4205 y(translated)c(and)f -(replaced,)h(the)f(replacemen)m(t)i(is)f(double-quoted.)275 -4339 y(Some)20 b(systems)h(use)f(the)h(message)h(catalog)h(selected)f -(b)m(y)f(the)g Ft(LC_MESSAGES)c Fu(shell)k(v)-5 b(ariable.)39 -b(Others)150 4448 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog) -i(from)d(the)g(v)-5 b(alue)37 b(of)g(the)h Ft(TEXTDOMAIN)c -Fu(shell)j(v)-5 b(ariable,)150 4558 y(p)s(ossibly)31 -b(adding)g(a)g(su\016x)g(of)h(`)p Ft(.mo)p Fu('.)43 b(If)31 -b(y)m(ou)h(use)f(the)h Ft(TEXTDOMAIN)c Fu(v)-5 b(ariable,)33 -b(y)m(ou)f(ma)m(y)g(need)f(to)h(set)150 4667 y(the)22 -b Ft(TEXTDOMAINDIR)d Fu(v)-5 b(ariable)23 b(to)g(the)f(lo)s(cation)i -(of)e(the)h(message)g(catalog)i(\014les.)38 b(Still)23 -b(others)f(use)g(b)s(oth)150 4777 y(v)-5 b(ariables)31 -b(in)f(this)g(fashion:)41 b Ft(TEXTDOMAINDIR)p Fu(/)p -Ft(LC_MESSAGES)p Fu(/LC)p 2528 4777 28 4 v 34 w(MESSA)m(GES/)p -Ft(TEXTDOMAIN)p Fu(.mo.)150 4974 y Fk(3.1.3)63 b(Commen)m(ts)150 -5121 y Fu(In)21 b(a)i(non-in)m(teractiv)m(e)h(shell,)g(or)e(an)g(in)m -(teractiv)m(e)j(shell)d(in)g(whic)m(h)g(the)g Ft(interactive_comments) -16 b Fu(option)150 5230 y(to)40 b(the)f Ft(shopt)e Fu(builtin)h(is)h -(enabled)g(\(see)h(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)k(page)e -(66\),)i(a)d(w)m(ord)150 5340 y(b)s(eginning)26 b(with)g(`)p -Ft(#)p Fu(')g(causes)h(that)f(w)m(ord)g(and)g(all)h(remaining)g(c)m -(haracters)g(on)f(that)h(line)g(to)g(b)s(e)f(ignored.)p -eop end +(presen)m(t.)150 3845 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41 +b(T)-10 b(ranslation)150 3992 y Fu(Pre\014xing)38 b(a)h(double-quoted)g +(string)f(with)g(a)h(dollar)g(sign)g(\(`)p Ft($)p Fu('\),)j(suc)m(h)c +(as)h Ft($"hello,)45 b(world")p Fu(,)40 b(will)150 4102 +y(cause)33 b(the)f(string)h(to)g(b)s(e)f(translated)h(according)g(to)g +(the)g(curren)m(t)f(lo)s(cale.)48 b(The)32 b Ft(gettext)e +Fu(infrastruc-)150 4211 y(ture)41 b(p)s(erforms)e(the)i(lo)s(okup)g +(and)f(translation,)45 b(using)40 b(the)i Ft(LC_MESSAGES)p +Fu(,)e Ft(TEXTDOMAINDIR)p Fu(,)h(and)150 4321 y Ft(TEXTDOMAIN)34 +b Fu(shell)i(v)-5 b(ariables,)39 b(as)e(explained)f(b)s(elo)m(w.)60 +b(See)36 b(the)h(gettext)i(do)s(cumen)m(tation)e(for)f(addi-)150 +4430 y(tional)24 b(details)g(not)f(co)m(v)m(ered)i(here.)38 +b(If)23 b(the)g(curren)m(t)f(lo)s(cale)j(is)e Ft(C)g +Fu(or)g Ft(POSIX)p Fu(,)g(if)g(there)g(are)g(no)g(translations)150 +4540 y(a)m(v)-5 b(ailable,)32 b(of)c(if)h(the)f(string)h(is)g(not)f +(translated,)i(the)f(dollar)g(sign)f(is)h(ignored.)40 +b(Since)29 b(this)f(is)h(a)g(form)f(of)150 4650 y(double)d(quoting,)j +(the)e(string)g(remains)f(double-quoted)h(b)m(y)g(default,)h(whether)e +(or)h(not)g(it)g(is)g(translated)150 4759 y(and)i(replaced.)41 +b(If)28 b(the)h Ft(noexpand_translation)23 b Fu(option)29 +b(is)g(enabled)f(using)h(the)f Ft(shopt)g Fu(builtin)g(\(see)150 +4869 y(Section)33 b(4.3.2)h([The)e(Shopt)f(Builtin],)j(page)f(71\),)h +(translated)f(strings)e(are)i(single-quoted)g(instead)g(of)150 +4978 y(double-quoted.)275 5121 y(The)39 b(rest)i(of)g(this)f(section)h +(is)g(a)g(brief)f(o)m(v)m(erview)i(of)e(ho)m(w)h(y)m(ou)f(use)g +(gettext)j(to)e(create)h(transla-)150 5230 y(tions)33 +b(for)f(strings)g(in)g(a)h(shell)f(script)h(named)f Fr(scriptname)p +Fu(.)46 b(There)32 b(are)h(more)g(details)g(in)f(the)h(gettext)150 +5340 y(do)s(cumen)m(tation.)p eop end %%Page: 8 14 TeXDict begin 8 13 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(8)150 299 -y(An)43 b(in)m(teractiv)m(e)j(shell)e(without)f(the)g +b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(8)275 299 +y(Once)34 b(y)m(ou'v)m(e)i(mark)m(ed)f(the)f(strings)h(in)f(y)m(our)g +(script)h(that)g(y)m(ou)g(w)m(an)m(t)g(to)g(translate)h(using)e($)p +Ft(")p Fu(...)p Ft(")p Fu(,)150 408 y(y)m(ou)d(create)h(a)e(gettext)j +Ft(")p Fu(template)p Ft(")e Fu(\014le)g(using)f(the)g(command)390 +540 y Ft(bash)47 b(--dump-po-strings)c Fj(scriptname)i +Ft(>)i Fj(domain)p Ft(.pot)150 671 y Fu(The)36 b Fr(domain)g +Fu(is)g(y)m(our)h Fr(message)g(domain)p Fu(.)58 b(It's)37 +b(just)e(an)i(arbitrary)f(string)g(that's)h(used)e(to)i(iden)m(tify)150 +781 y(the)32 b(\014les)g(gettext)i(needs,)f(lik)m(e)g(a)f(pac)m(k)-5 +b(age)35 b(or)d(script)f(name.)46 b(It)32 b(needs)g(to)h(b)s(e)e +(unique)g(among)i(all)g(the)150 891 y(message)41 b(domains)f(on)f +(systems)h(where)g(y)m(ou)g(install)h(the)f(translations,)j(so)d +(gettext)i(kno)m(ws)e(whic)m(h)150 1000 y(translations)27 +b(corresp)s(ond)e(to)i(y)m(our)f(script.)39 b(Y)-8 b(ou'll)28 +b(use)d(the)i(template)g(\014le)g(to)f(create)i(translations)f(for)150 +1110 y(eac)m(h)32 b(target)f(language.)43 b(The)29 b(template)j(\014le) +f(con)m(v)m(en)m(tionally)i(has)d(the)h(su\016x)e(`)p +Ft(.pot)p Fu('.)275 1241 y(Y)-8 b(ou)23 b(cop)m(y)g(this)g(template)h +(\014le)f(to)h(a)f(separate)h(\014le)f(for)g(eac)m(h)h(target)g +(language)g(y)m(ou)f(w)m(an)m(t)h(to)g(supp)s(ort)150 +1351 y(\(called)39 b Ft(")p Fu(PO)p Ft(")e Fu(\014les,)i(whic)m(h)f +(use)f(the)h(su\016x)e(`)p Ft(.po)p Fu('\).)63 b(PO)37 +b(\014les)g(use)h(v)-5 b(arious)37 b(naming)h(con)m(v)m(en)m(tions,)150 +1461 y(but)31 b(when)g(y)m(ou)i(are)f(w)m(orking)g(to)h(translate)g(a)f +(template)i(\014le)e(in)m(to)h(a)f(particular)g(language,)i(y)m(ou)f +(\014rst)150 1570 y(cop)m(y)k(the)g(template)h(\014le)e(to)h(a)g +(\014le)f(whose)h(name)f(is)g(the)h(language)h(y)m(ou)f(w)m(an)m(t)g +(to)g(target,)j(with)c(the)150 1680 y(`)p Ft(.po)p Fu(')29 +b(su\016x.)39 b(F)-8 b(or)30 b(instance,)g(the)f(Spanish)f +(translations)i(of)f(y)m(our)g(strings)g(w)m(ould)g(b)s(e)f(in)h(a)g +(\014le)g(named)150 1789 y(`)p Ft(es.po)p Fu(',)h(and)f(to)j(get)f +(started)g(using)f(a)h(message)g(domain)f(named)g Ft(")p +Fu(example,)p Ft(")h Fu(y)m(ou)g(w)m(ould)f(run)390 1921 +y Ft(cp)47 b(example.pot)e(es.po)150 2052 y Fu(Ultimately)-8 +b(,)42 b(PO)37 b(\014les)g(are)h(often)g(named)f Fr(domain)p +Fu(.p)s(o)g(and)g(installed)h(in)f(directories)i(that)f(con)m(tain)150 +2162 y(m)m(ultiple)31 b(translation)g(\014les)g(for)f(a)h(particular)f +(language.)275 2293 y(Whic)m(hev)m(er)k(naming)f(con)m(v)m(en)m(tion)i +(y)m(ou)e(c)m(ho)s(ose,)i(y)m(ou)e(will)g(need)g(to)g(translate)h(the)f +(strings)g(in)g(the)150 2403 y(PO)d(\014les)g(in)m(to)i(the)e +(appropriate)h(languages.)42 b(This)29 b(has)h(to)h(b)s(e)f(done)g(man) +m(ually)-8 b(.)275 2534 y(When)35 b(y)m(ou)h(ha)m(v)m(e)g(the)g +(translations)g(and)f(PO)g(\014les)g(complete,)k(y)m(ou'll)d(use)g(the) +f(gettext)j(to)s(ols)e(to)150 2644 y(pro)s(duce)26 b(what)g(are)i +(called)g Ft(")p Fu(MO)p Ft(")e Fu(\014les,)i(whic)m(h)e(are)h +(compiled)h(v)m(ersions)f(of)g(the)g(PO)f(\014les)h(the)g(gettext)150 +2754 y(to)s(ols)42 b(use)f(to)h(lo)s(ok)g(up)e(translations)j +(e\016cien)m(tly)-8 b(.)75 b(MO)42 b(\014les)f(are)g(also)i(called)f +Ft(")p Fu(message)g(catalog)p Ft(")150 2863 y Fu(\014les.)k(Y)-8 +b(ou)33 b(use)f(the)g Ft(msgfmt)f Fu(program)h(to)h(do)f(this.)46 +b(F)-8 b(or)33 b(instance,)g(if)f(y)m(ou)h(had)f(a)g(\014le)h(with)e +(Spanish)150 2973 y(translations,)g(y)m(ou)g(could)g(run)390 +3104 y Ft(msgfmt)46 b(-o)h(es.mo)g(es.po)150 3236 y Fu(to)31 +b(pro)s(duce)e(the)i(corresp)s(onding)e(MO)i(\014le.)275 +3367 y(Once)21 b(y)m(ou)h(ha)m(v)m(e)i(the)e(MO)f(\014les,)j(y)m(ou)e +(decide)g(where)g(to)g(install)h(them)f(and)f(use)h(the)g +Ft(TEXTDOMAINDIR)150 3477 y Fu(shell)32 b(v)-5 b(ariable)33 +b(to)g(tell)h(the)e(gettext)i(to)s(ols)f(where)f(they)g(are.)47 +b(Mak)m(e)34 b(sure)d(to)i(use)f(the)g(same)h(message)150 +3587 y(domain)d(to)h(name)g(the)f(MO)h(\014les)f(as)h(y)m(ou)f(did)g +(for)g(the)h(PO)e(\014les)i(when)e(y)m(ou)i(install)g(them.)275 +3718 y(Y)-8 b(our)21 b(users)f(will)h(use)g(the)g Ft(LANG)f +Fu(or)h Ft(LC_MESSAGES)d Fu(shell)j(v)-5 b(ariables)21 +b(to)h(select)h(the)e(desired)f(language.)275 3850 y(Y)-8 +b(ou)29 b(set)g(the)g Ft(TEXTDOMAIN)d Fu(v)-5 b(ariable)30 +b(to)f(the)g(script's)g(message)h(domain.)40 b(As)29 +b(ab)s(o)m(v)m(e,)h(y)m(ou)f(use)g(the)150 3959 y(message)i(domain)g +(to)g(name)f(y)m(our)h(translation)g(\014les.)275 4091 +y(Y)-8 b(ou,)31 b(or)g(p)s(ossibly)f(y)m(our)g(users,)h(set)g(the)g +Ft(TEXTDOMAINDIR)c Fu(v)-5 b(ariable)31 b(to)h(the)f(name)f(of)h(a)g +(directory)150 4200 y(where)d(the)h(message)h(catalog)i(\014les)d(are)g +(stored.)40 b(If)28 b(y)m(ou)i(install)f(the)g(message)h(\014les)f(in)m +(to)h(the)f(system's)150 4310 y(standard)h(message)h(catalog)i +(directory)-8 b(,)32 b(y)m(ou)e(don't)h(need)f(to)h(w)m(orry)f(ab)s +(out)g(this)g(v)-5 b(ariable.)275 4441 y(The)31 b(directory)h(where)g +(the)g(message)h(catalog)h(\014les)e(are)g(stored)g(v)-5 +b(aries)32 b(b)s(et)m(w)m(een)h(systems.)45 b(Some)150 +4551 y(use)24 b(the)h(message)g(catalog)j(selected)e(b)m(y)e(the)h +Ft(LC_MESSAGES)c Fu(shell)k(v)-5 b(ariable.)39 b(Others)24 +b(create)i(the)f(name)150 4661 y(of)i(the)h(message)g(catalog)i(from)d +(the)g(v)-5 b(alue)27 b(of)h(the)f Ft(TEXTDOMAIN)e Fu(shell)i(v)-5 +b(ariable,)29 b(p)s(ossibly)d(adding)h(the)150 4770 y(`)p +Ft(.mo)p Fu(')32 b(su\016x.)47 b(If)33 b(y)m(ou)g(use)f(the)h +Ft(TEXTDOMAIN)d Fu(v)-5 b(ariable,)35 b(y)m(ou)e(ma)m(y)g(need)g(to)g +(set)h(the)f Ft(TEXTDOMAINDIR)150 4880 y Fu(v)-5 b(ariable)26 +b(to)g(the)g(lo)s(cation)h(of)e(the)h(message)h(catalog)h(\014les,)e +(as)g(ab)s(o)m(v)m(e.)40 b(It's)26 b(common)g(to)g(use)f(b)s(oth)f(v)-5 +b(ari-)150 4989 y(ables)31 b(in)f(this)g(fashion:)41 +b Ft($TEXTDOMAINDIR)p Fu(/)p Ft($LC_MESSAG)o(ES)p Fu(/LC)p +2474 4989 28 4 v 34 w(MESSA)m(GES/)p Ft($TEXTDOMAIN)p +Fu(.mo.)275 5121 y(If)i(y)m(ou)h(used)f(that)h(last)g(con)m(v)m(en)m +(tion,)50 b(and)43 b(y)m(ou)h(w)m(an)m(ted)g(to)h(store)f(the)g +(message)h(catalog)h(\014les)150 5230 y(with)28 b(Spanish)f(\(es\))i +(and)f(Esp)s(eran)m(to)h(\(eo\))g(translations)h(in)m(to)f(a)g(lo)s +(cal)h(directory)f(y)m(ou)f(use)g(for)h(custom)150 5340 +y(translation)i(\014les,)g(y)m(ou)g(could)f(run)p eop +end +%%Page: 9 15 +TeXDict begin 9 14 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(9)390 299 +y Ft(TEXTDOMAIN=example)390 408 y(TEXTDOMAINDIR=/usr/local)o(/sha)o +(re/l)o(oca)o(le)390 628 y(cp)47 b(es.mo)g(${TEXTDOMAINDIR}/es/LC_)o +(MES)o(SAGE)o(S/${)o(TEX)o(TDOM)o(AIN})o(.mo)390 737 +y(cp)g(eo.mo)g(${TEXTDOMAINDIR}/eo/LC_)o(MES)o(SAGE)o(S/${)o(TEX)o +(TDOM)o(AIN})o(.mo)275 868 y Fu(When)30 b(all)i(of)f(this)f(is)h(done,) +g(and)f(the)h(message)h(catalog)h(\014les)e(con)m(taining)h(the)f +(compiled)g(transla-)150 977 y(tions)c(are)g(installed)h(in)e(the)h +(correct)h(lo)s(cation,)h(y)m(our)e(users)f(will)h(b)s(e)f(able)h(to)h +(see)f(translated)h(strings)e(in)150 1087 y(an)m(y)k(of)f(the)h(supp)s +(orted)d(languages)k(b)m(y)e(setting)h(the)g Ft(LANG)e +Fu(or)h Ft(LC_MESSAGES)d Fu(en)m(vironmen)m(t)k(v)-5 +b(ariables)150 1197 y(b)s(efore)30 b(running)f(y)m(our)h(script.)150 +1388 y Fk(3.1.3)63 b(Commen)m(ts)150 1535 y Fu(In)21 +b(a)i(non-in)m(teractiv)m(e)h(shell,)g(or)e(an)g(in)m(teractiv)m(e)j +(shell)d(in)g(whic)m(h)g(the)g Ft(interactive_comments)16 +b Fu(option)150 1645 y(to)40 b(the)f Ft(shopt)e Fu(builtin)h(is)h +(enabled)g(\(see)h(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)k(page)e +(71\),)i(a)d(w)m(ord)150 1754 y(b)s(eginning)26 b(with)g(`)p +Ft(#)p Fu(')g(causes)h(that)f(w)m(ord)g(and)g(all)h(remaining)g(c)m +(haracters)g(on)f(that)h(line)g(to)g(b)s(e)f(ignored.)150 +1864 y(An)43 b(in)m(teractiv)m(e)j(shell)e(without)f(the)g Ft(interactive_comments)38 b Fu(option)44 b(enabled)f(do)s(es)g(not)g -(allo)m(w)150 408 y(commen)m(ts.)56 b(The)34 b Ft(interactive_comments) -c Fu(option)35 b(is)g(on)g(b)m(y)g(default)g(in)g(in)m(teractiv)m(e)j -(shells.)55 b(See)150 518 y(Section)30 b(6.3)f([In)m(teractiv)m(e)j -(Shells],)d(page)h(89,)g(for)e(a)i(description)e(of)h(what)g(mak)m(es)h -(a)f(shell)g(in)m(teractiv)m(e.)150 757 y Fs(3.2)68 b(Shell)45 -b(Commands)150 916 y Fu(A)d(simple)g(shell)g(command)f(suc)m(h)h(as)g -Ft(echo)29 b(a)h(b)g(c)41 b Fu(consists)i(of)f(the)f(command)h(itself)h -(follo)m(w)m(ed)g(b)m(y)150 1026 y(argumen)m(ts,)31 b(separated)g(b)m -(y)f(spaces.)275 1159 y(More)h(complex)h(shell)f(commands)g(are)g(comp) -s(osed)g(of)g(simple)g(commands)g(arranged)g(together)h(in)150 -1269 y(a)f(v)-5 b(ariet)m(y)32 b(of)f(w)m(a)m(ys:)41 -b(in)31 b(a)g(pip)s(eline)f(in)g(whic)m(h)g(the)h(output)f(of)h(one)f -(command)h(b)s(ecomes)f(the)h(input)f(of)150 1378 y(a)h(second,)f(in)h -(a)f(lo)s(op)h(or)f(conditional)i(construct,)f(or)f(in)g(some)h(other)g -(grouping.)150 1575 y Fk(3.2.1)63 b(Reserv)m(ed)40 b(W)-10 -b(ords)150 1722 y Fu(Reserv)m(ed)33 b(w)m(ords)g(are)g(w)m(ords)g(that) +(allo)m(w)150 1973 y(commen)m(ts.)56 b(The)34 b Ft +(interactive_comments)c Fu(option)35 b(is)g(on)g(b)m(y)g(default)g(in)g +(in)m(teractiv)m(e)j(shells.)55 b(See)150 2083 y(Section)30 +b(6.3)f([In)m(teractiv)m(e)j(Shells],)d(page)h(94,)g(for)e(a)i +(description)e(of)h(what)g(mak)m(es)h(a)f(shell)g(in)m(teractiv)m(e.) +150 2316 y Fs(3.2)68 b(Shell)45 b(Commands)150 2476 y +Fu(A)d(simple)g(shell)g(command)f(suc)m(h)h(as)g Ft(echo)29 +b(a)h(b)g(c)41 b Fu(consists)i(of)f(the)f(command)h(itself)h(follo)m(w) +m(ed)g(b)m(y)150 2585 y(argumen)m(ts,)31 b(separated)g(b)m(y)f(spaces.) +275 2716 y(More)h(complex)h(shell)f(commands)g(are)g(comp)s(osed)g(of)g +(simple)g(commands)g(arranged)g(together)h(in)150 2825 +y(a)f(v)-5 b(ariet)m(y)32 b(of)f(w)m(a)m(ys:)41 b(in)31 +b(a)g(pip)s(eline)f(in)g(whic)m(h)g(the)h(output)f(of)h(one)f(command)h +(b)s(ecomes)f(the)h(input)f(of)150 2935 y(a)h(second,)f(in)h(a)f(lo)s +(op)h(or)f(conditional)i(construct,)f(or)f(in)g(some)h(other)g +(grouping.)150 3126 y Fk(3.2.1)63 b(Reserv)m(ed)40 b(W)-10 +b(ords)150 3273 y Fu(Reserv)m(ed)33 b(w)m(ords)g(are)g(w)m(ords)g(that) g(ha)m(v)m(e)h(sp)s(ecial)g(meaning)f(to)h(the)f(shell.)49 -b(They)32 b(are)h(used)g(to)g(b)s(egin)150 1832 y(and)d(end)f(the)i -(shell's)g(comp)s(ound)e(commands.)275 1965 y(The)k(follo)m(wing)i(w)m +b(They)32 b(are)h(used)g(to)g(b)s(egin)150 3383 y(and)d(end)f(the)i +(shell's)g(comp)s(ound)e(commands.)275 3514 y(The)k(follo)m(wing)i(w)m (ords)e(are)h(recognized)i(as)e(reserv)m(ed)f(when)g(unquoted)g(and)g -(the)h(\014rst)f(w)m(ord)h(of)g(a)150 2075 y(command)c(\(see)h(b)s(elo) -m(w)g(for)f(exceptions\):)150 2208 y Ft(if)364 b(then)168 -b(elif)g(else)g(fi)336 b(time)150 2318 y(for)316 b(in)264 -b(until)120 b(while)g(do)336 b(done)150 2427 y(case)268 -b(esac)168 b(coproc)72 b(select)g(function)150 2537 y({)412 -b(})312 b([[)264 b(]])g(!)150 2670 y(in)33 b Fu(is)h(recognized)h(as)f +(the)h(\014rst)f(w)m(ord)h(of)g(a)150 3623 y(command)c(\(see)h(b)s(elo) +m(w)g(for)f(exceptions\):)150 3754 y Ft(if)364 b(then)168 +b(elif)g(else)g(fi)336 b(time)150 3863 y(for)316 b(in)264 +b(until)120 b(while)g(do)336 b(done)150 3973 y(case)268 +b(esac)168 b(coproc)72 b(select)g(function)150 4083 y({)412 +b(})312 b([[)264 b(]])g(!)150 4213 y(in)33 b Fu(is)h(recognized)h(as)f (a)g(reserv)m(ed)f(w)m(ord)h(if)f(it)h(is)g(the)g(third)f(w)m(ord)g(of) -h(a)g Ft(case)e Fu(or)i Ft(select)e Fu(command.)150 2780 +h(a)g Ft(case)e Fu(or)i Ft(select)e Fu(command.)150 4323 y Ft(in)e Fu(and)g Ft(do)f Fu(are)i(recognized)h(as)e(reserv)m(ed)h(w)m (ords)f(if)g(they)h(are)f(the)h(third)f(w)m(ord)g(in)g(a)g -Ft(for)g Fu(command.)150 2977 y Fk(3.2.2)63 b(Simple)41 -b(Commands)150 3124 y Fu(A)29 b(simple)f(command)g(is)h(the)g(kind)e +Ft(for)g Fu(command.)150 4514 y Fk(3.2.2)63 b(Simple)41 +b(Commands)150 4661 y Fu(A)29 b(simple)f(command)g(is)h(the)g(kind)e (of)i(command)f(encoun)m(tered)h(most)g(often.)40 b(It's)29 -b(just)f(a)h(sequence)g(of)150 3233 y(w)m(ords)22 b(separated)i(b)m(y)e +b(just)f(a)h(sequence)g(of)150 4771 y(w)m(ords)22 b(separated)i(b)m(y)e Ft(blank)p Fu(s,)i(terminated)f(b)m(y)g(one)g(of)g(the)g(shell's)g(con) -m(trol)h(op)s(erators)f(\(see)h(Chapter)f(2)150 3343 +m(trol)h(op)s(erators)f(\(see)h(Chapter)f(2)150 4881 y([De\014nitions],)37 b(page)e(3\).)54 b(The)35 b(\014rst)e(w)m(ord)i (generally)g(sp)s(eci\014es)g(a)g(command)f(to)h(b)s(e)f(executed,)j -(with)150 3452 y(the)31 b(rest)f(of)h(the)f(w)m(ords)g(b)s(eing)g(that) -h(command's)f(argumen)m(ts.)275 3586 y(The)h(return)h(status)g(\(see)i -(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(41\))g(of)g(a)g(simple)f -(command)g(is)h(its)150 3695 y(exit)38 b(status)f(as)g(pro)m(vided)f(b) +(with)150 4990 y(the)31 b(rest)f(of)h(the)f(w)m(ords)g(b)s(eing)g(that) +h(command's)f(argumen)m(ts.)275 5121 y(The)h(return)h(status)g(\(see)i +(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(44\))g(of)g(a)g(simple)f +(command)g(is)h(its)150 5230 y(exit)38 b(status)f(as)g(pro)m(vided)f(b) m(y)h(the)g Fm(posix)f Fu(1003.1)j Ft(waitpid)c Fu(function,)j(or)f -(128)p Ft(+)p Fr(n)g Fu(if)g(the)g(command)150 3805 y(w)m(as)31 -b(terminated)g(b)m(y)f(signal)h Fr(n)p Fu(.)150 4002 -y Fk(3.2.3)63 b(Pip)s(elines)150 4149 y Fu(A)21 b Ft(pipeline)d +(128)p Ft(+)p Fr(n)g Fu(if)g(the)g(command)150 5340 y(w)m(as)31 +b(terminated)g(b)m(y)f(signal)h Fr(n)p Fu(.)p eop end +%%Page: 10 16 +TeXDict begin 10 15 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(10)150 299 +y Fk(3.2.3)63 b(Pip)s(elines)150 446 y Fu(A)21 b Ft(pipeline)d Fu(is)j(a)g(sequence)g(of)g(one)g(or)g(more)g(commands)f(separated)h(b) m(y)g(one)g(of)g(the)g(con)m(trol)h(op)s(erators)150 -4259 y(`)p Ft(|)p Fu(')31 b(or)f(`)p Ft(|&)p Fu('.)275 -4392 y(The)f(format)i(for)f(a)h(pip)s(eline)f(is)390 -4525 y Ft([time)46 b([-p]])h([!])g Fj(command1)e Ft([)j(|)f(or)g(|&)g -Fj(command2)f Ft(])h(...)150 4659 y Fu(The)25 b(output)f(of)i(eac)m(h)g +555 y(`)p Ft(|)p Fu(')31 b(or)f(`)p Ft(|&)p Fu('.)275 +695 y(The)f(format)i(for)f(a)h(pip)s(eline)f(is)390 834 +y Ft([time)46 b([-p]])h([!])g Fj(command1)e Ft([)j(|)f(or)g(|&)g +Fj(command2)f Ft(])h(...)150 974 y Fu(The)25 b(output)f(of)i(eac)m(h)g (command)f(in)f(the)i(pip)s(eline)e(is)i(connected)g(via)f(a)h(pip)s(e) -e(to)i(the)f(input)f(of)h(the)h(next)150 4768 y(command.)40 +e(to)i(the)f(input)f(of)h(the)h(next)150 1083 y(command.)40 b(That)29 b(is,)h(eac)m(h)h(command)e(reads)g(the)h(previous)f -(command's)g(output.)40 b(This)29 b(connection)150 4878 +(command's)g(output.)40 b(This)29 b(connection)150 1193 y(is)h(p)s(erformed)f(b)s(efore)h(an)m(y)h(redirections)g(sp)s -(eci\014ed)f(b)m(y)g(the)g(command.)275 5011 y(If)k(`)p +(eci\014ed)f(b)m(y)g Fr(command1)p Fu(.)275 1333 y(If)k(`)p Ft(|&)p Fu(')h(is)f(used,)i Fr(command1)7 b Fu('s)35 b(standard)f(error,)i(in)e(addition)h(to)h(its)f(standard)f(output,)i -(is)e(con-)150 5121 y(nected)h(to)g Fr(command2)7 b Fu('s)35 +(is)e(con-)150 1442 y(nected)h(to)g Fr(command2)7 b Fu('s)35 b(standard)f(input)f(through)h(the)g(pip)s(e;)i(it)f(is)g(shorthand)e -(for)h Ft(2>&1)29 b(|)p Fu(.)53 b(This)150 5230 y(implicit)41 +(for)h Ft(2>&1)29 b(|)p Fu(.)53 b(This)150 1552 y(implicit)41 b(redirection)f(of)g(the)g(standard)f(error)g(to)h(the)g(standard)f -(output)g(is)h(p)s(erformed)e(after)j(an)m(y)150 5340 -y(redirections)31 b(sp)s(eci\014ed)f(b)m(y)g(the)g(command.)p -eop end -%%Page: 9 15 -TeXDict begin 9 14 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(9)275 299 -y(The)36 b(reserv)m(ed)g(w)m(ord)g Ft(time)g Fu(causes)h(timing)g -(statistics)h(to)f(b)s(e)f(prin)m(ted)g(for)g(the)h(pip)s(eline)f(once) -h(it)150 408 y(\014nishes.)51 b(The)34 b(statistics)i(curren)m(tly)e -(consist)h(of)f(elapsed)h(\(w)m(all-clo)s(c)m(k\))i(time)e(and)f(user)f -(and)h(system)150 518 y(time)e(consumed)e(b)m(y)h(the)g(command's)g -(execution.)44 b(The)31 b Ft(-p)f Fu(option)i(c)m(hanges)g(the)f -(output)g(format)g(to)150 628 y(that)j(sp)s(eci\014ed)e(b)m(y)h -Fm(posix)p Fu(.)49 b(When)33 b(the)g(shell)g(is)h(in)e -Fm(posix)h Fu(mo)s(de)g(\(see)h(Section)g(6.11)g([Bash)g(POSIX)150 -737 y(Mo)s(de],)j(page)e(101\),)j(it)e(do)s(es)e(not)i(recognize)g +(output)g(is)h(p)s(erformed)e(after)j(an)m(y)150 1661 +y(redirections)31 b(sp)s(eci\014ed)f(b)m(y)g Fr(command1)p +Fu(.)275 1801 y(The)36 b(reserv)m(ed)g(w)m(ord)g Ft(time)g +Fu(causes)h(timing)g(statistics)h(to)f(b)s(e)f(prin)m(ted)g(for)g(the)h +(pip)s(eline)f(once)h(it)150 1910 y(\014nishes.)51 b(The)34 +b(statistics)i(curren)m(tly)e(consist)h(of)f(elapsed)h(\(w)m(all-clo)s +(c)m(k\))i(time)e(and)f(user)f(and)h(system)150 2020 +y(time)e(consumed)e(b)m(y)h(the)g(command's)g(execution.)44 +b(The)31 b Ft(-p)f Fu(option)i(c)m(hanges)g(the)f(output)g(format)g(to) +150 2130 y(that)j(sp)s(eci\014ed)e(b)m(y)h Fm(posix)p +Fu(.)49 b(When)33 b(the)g(shell)g(is)h(in)e Fm(posix)h +Fu(mo)s(de)g(\(see)h(Section)g(6.11)g([Bash)g(POSIX)150 +2239 y(Mo)s(de],)j(page)e(106\),)j(it)e(do)s(es)e(not)i(recognize)g Ft(time)e Fu(as)h(a)h(reserv)m(ed)f(w)m(ord)f(if)h(the)g(next)g(tok)m -(en)h(b)s(egins)150 847 y(with)d(a)g(`)p Ft(-)p Fu('.)49 +(en)h(b)s(egins)150 2349 y(with)d(a)g(`)p Ft(-)p Fu('.)49 b(The)33 b Ft(TIMEFORMAT)d Fu(v)-5 b(ariable)34 b(ma)m(y)g(b)s(e)f(set) g(to)h(a)g(format)f(string)g(that)h(sp)s(eci\014es)f(ho)m(w)g(the)150 -956 y(timing)38 b(information)g(should)e(b)s(e)h(displa)m(y)m(ed.)62 +2458 y(timing)38 b(information)g(should)e(b)s(e)h(displa)m(y)m(ed.)62 b(See)38 b(Section)g(5.2)g([Bash)g(V)-8 b(ariables],)41 -b(page)d(73,)i(for)e(a)150 1066 y(description)27 b(of)g(the)h(a)m(v)-5 +b(page)d(78,)i(for)e(a)150 2568 y(description)27 b(of)g(the)h(a)m(v)-5 b(ailable)29 b(formats.)40 b(The)26 b(use)h(of)g Ft(time)f Fu(as)i(a)f(reserv)m(ed)g(w)m(ord)g(p)s(ermits)f(the)h(timing)150 -1176 y(of)38 b(shell)g(builtins,)i(shell)e(functions,)i(and)d(pip)s +2677 y(of)38 b(shell)g(builtins,)i(shell)e(functions,)i(and)d(pip)s (elines.)63 b(An)38 b(external)h Ft(time)e Fu(command)h(cannot)g(time) -150 1285 y(these)31 b(easily)-8 b(.)275 1418 y(When)26 +150 2787 y(these)31 b(easily)-8 b(.)275 2927 y(When)26 b(the)h(shell)g(is)g(in)g Fm(posix)f Fu(mo)s(de)g(\(see)i(Section)f -(6.11)i([Bash)e(POSIX)f(Mo)s(de],)i(page)g(101\),)h Ft(time)150 -1527 y Fu(ma)m(y)d(b)s(e)f(follo)m(w)m(ed)j(b)m(y)d(a)h(newline.)39 +(6.11)i([Bash)e(POSIX)f(Mo)s(de],)i(page)g(106\),)h Ft(time)150 +3036 y Fu(ma)m(y)d(b)s(e)f(follo)m(w)m(ed)j(b)m(y)d(a)h(newline.)39 b(In)25 b(this)h(case,)i(the)d(shell)h(displa)m(ys)g(the)g(total)h -(user)e(and)g(system)h(time)150 1637 y(consumed)33 b(b)m(y)h(the)h +(user)e(and)g(system)h(time)150 3146 y(consumed)33 b(b)m(y)h(the)h (shell)f(and)f(its)i(c)m(hildren.)51 b(The)34 b Ft(TIMEFORMAT)d Fu(v)-5 b(ariable)35 b(ma)m(y)g(b)s(e)e(used)g(to)i(sp)s(ecify)150 -1746 y(the)c(format)f(of)h(the)f(time)h(information.)275 -1879 y(If)24 b(the)h(pip)s(eline)g(is)g(not)g(executed)h(async)m -(hronously)f(\(see)h(Section)g(3.2.4)h([Lists],)g(page)e(9\),)i(the)f -(shell)150 1988 y(w)m(aits)31 b(for)f(all)i(commands)e(in)g(the)g(pip)s -(eline)g(to)h(complete.)275 2121 y(Eac)m(h)e(command)g(in)g(a)g(pip)s -(eline)g(is)g(executed)h(in)e(its)i(o)m(wn)f(subshell,)f(whic)m(h)h(is) -g(a)g(separate)h(pro)s(cess)150 2230 y(\(see)g(Section)g(3.7.3)h -([Command)e(Execution)h(En)m(vironmen)m(t],)g(page)g(40\).)41 -b(If)29 b(the)g Ft(lastpipe)e Fu(option)j(is)150 2340 -y(enabled)35 b(using)g(the)g Ft(shopt)f Fu(builtin)g(\(see)i(Section)g -(4.3.2)h([The)e(Shopt)f(Builtin],)j(page)f(66\),)i(the)d(last)150 -2450 y(elemen)m(t)d(of)e(a)h(pip)s(eline)f(ma)m(y)h(b)s(e)f(run)f(b)m -(y)h(the)h(shell)f(pro)s(cess.)275 2582 y(The)24 b(exit)i(status)f(of)h -(a)f(pip)s(eline)g(is)g(the)g(exit)h(status)f(of)h(the)f(last)h -(command)f(in)f(the)i(pip)s(eline,)g(unless)150 2692 -y(the)31 b Ft(pipefail)d Fu(option)j(is)g(enabled)f(\(see)i(Section)f -(4.3.1)i([The)d(Set)h(Builtin],)g(page)h(62\).)42 b(If)30 -b Ft(pipefail)150 2801 y Fu(is)f(enabled,)g(the)f(pip)s(eline's)g -(return)g(status)h(is)f(the)h(v)-5 b(alue)29 b(of)f(the)h(last)g -(\(righ)m(tmost\))i(command)d(to)h(exit)150 2911 y(with)34 -b(a)h(non-zero)g(status,)i(or)d(zero)i(if)e(all)i(commands)e(exit)h -(successfully)-8 b(.)54 b(If)34 b(the)h(reserv)m(ed)g(w)m(ord)f(`)p -Ft(!)p Fu(')150 3020 y(precedes)e(the)f(pip)s(eline,)h(the)f(exit)i -(status)f(is)f(the)h(logical)i(negation)f(of)e(the)h(exit)g(status)g -(as)g(describ)s(ed)150 3130 y(ab)s(o)m(v)m(e.)63 b(The)38 -b(shell)f(w)m(aits)i(for)e(all)i(commands)e(in)g(the)h(pip)s(eline)f -(to)h(terminate)h(b)s(efore)e(returning)g(a)150 3240 -y(v)-5 b(alue.)150 3435 y Fk(3.2.4)63 b(Lists)41 b(of)h(Commands)150 -3582 y Fu(A)37 b Ft(list)e Fu(is)i(a)g(sequence)g(of)g(one)g(or)f(more) -h(pip)s(elines)f(separated)h(b)m(y)g(one)g(of)f(the)h(op)s(erators)g(`) -p Ft(;)p Fu(',)i(`)p Ft(&)p Fu(',)150 3691 y(`)p Ft(&&)p -Fu(',)31 b(or)f(`)p Ft(||)p Fu(',)g(and)g(optionally)i(terminated)f(b)m -(y)f(one)h(of)f(`)p Ft(;)p Fu(',)h(`)p Ft(&)p Fu(',)g(or)f(a)h -Ft(newline)p Fu(.)275 3824 y(Of)23 b(these)h(list)g(op)s(erators,)i(`)p -Ft(&&)p Fu(')d(and)g(`)p Ft(||)p Fu(')h(ha)m(v)m(e)h(equal)f -(precedence,)i(follo)m(w)m(ed)f(b)m(y)f(`)p Ft(;)p Fu(')g(and)f(`)p -Ft(&)p Fu(',)i(whic)m(h)150 3933 y(ha)m(v)m(e)32 b(equal)e(precedence.) -275 4066 y(A)f(sequence)h(of)g(one)g(or)g(more)g(newlines)f(ma)m(y)h +3255 y(the)c(format)f(of)h(the)f(time)h(information.)275 +3395 y(If)36 b(the)h(pip)s(eline)g(is)g(not)g(executed)h(async)m +(hronously)f(\(see)h(Section)g(3.2.4)g([Lists],)i(page)e(10\),)i(the) +150 3504 y(shell)31 b(w)m(aits)g(for)f(all)h(commands)f(in)g(the)h(pip) +s(eline)f(to)h(complete.)275 3644 y(Eac)m(h)d(command)g(in)f(a)i(m)m +(ulti-command)f(pip)s(eline,)h(where)e(pip)s(es)g(are)h(created,)i(is)e +(executed)h(in)f(its)150 3753 y(o)m(wn)h Fr(subshell)p +Fu(,)f(whic)m(h)h(is)g(a)g(separate)h(pro)s(cess)e(\(see)i(Section)g +(3.7.3)g([Command)f(Execution)g(En)m(viron-)150 3863 +y(men)m(t],)d(page)e(43\).)40 b(If)23 b(the)h Ft(lastpipe)d +Fu(option)j(is)g(enabled)g(using)f(the)h Ft(shopt)e Fu(builtin)h(\(see) +i(Section)f(4.3.2)150 3973 y([The)i(Shopt)f(Builtin],)i(page)g(71\),)h +(the)e(last)h(elemen)m(t)g(of)f(a)g(pip)s(eline)g(ma)m(y)g(b)s(e)f(run) +g(b)m(y)g(the)h(shell)g(pro)s(cess)150 4082 y(when)j(job)h(con)m(trol)i +(is)f(not)f(activ)m(e.)275 4222 y(The)24 b(exit)i(status)f(of)h(a)f +(pip)s(eline)g(is)g(the)g(exit)h(status)f(of)h(the)f(last)h(command)f +(in)f(the)i(pip)s(eline,)g(unless)150 4331 y(the)31 b +Ft(pipefail)d Fu(option)j(is)g(enabled)f(\(see)i(Section)f(4.3.1)i +([The)d(Set)h(Builtin],)g(page)h(67\).)42 b(If)30 b Ft(pipefail)150 +4441 y Fu(is)f(enabled,)g(the)f(pip)s(eline's)g(return)g(status)h(is)f +(the)h(v)-5 b(alue)29 b(of)f(the)h(last)g(\(righ)m(tmost\))i(command)d +(to)h(exit)150 4550 y(with)34 b(a)h(non-zero)g(status,)i(or)d(zero)i +(if)e(all)i(commands)e(exit)h(successfully)-8 b(.)54 +b(If)34 b(the)h(reserv)m(ed)g(w)m(ord)f(`)p Ft(!)p Fu(')150 +4660 y(precedes)e(the)f(pip)s(eline,)h(the)f(exit)i(status)f(is)f(the)h +(logical)i(negation)f(of)e(the)h(exit)g(status)g(as)g(describ)s(ed)150 +4770 y(ab)s(o)m(v)m(e.)63 b(The)38 b(shell)f(w)m(aits)i(for)e(all)i +(commands)e(in)g(the)h(pip)s(eline)f(to)h(terminate)h(b)s(efore)e +(returning)g(a)150 4879 y(v)-5 b(alue.)150 5083 y Fk(3.2.4)63 +b(Lists)41 b(of)h(Commands)150 5230 y Fu(A)37 b Ft(list)e +Fu(is)i(a)g(sequence)g(of)g(one)g(or)f(more)h(pip)s(elines)f(separated) +h(b)m(y)g(one)g(of)f(the)h(op)s(erators)g(`)p Ft(;)p +Fu(',)i(`)p Ft(&)p Fu(',)150 5340 y(`)p Ft(&&)p Fu(',)31 +b(or)f(`)p Ft(||)p Fu(',)g(and)g(optionally)i(terminated)f(b)m(y)f(one) +h(of)f(`)p Ft(;)p Fu(',)h(`)p Ft(&)p Fu(',)g(or)f(a)h +Ft(newline)p Fu(.)p eop end +%%Page: 11 17 +TeXDict begin 11 16 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(11)275 299 +y(Of)23 b(these)h(list)g(op)s(erators,)i(`)p Ft(&&)p +Fu(')d(and)g(`)p Ft(||)p Fu(')h(ha)m(v)m(e)h(equal)f(precedence,)i +(follo)m(w)m(ed)f(b)m(y)f(`)p Ft(;)p Fu(')g(and)f(`)p +Ft(&)p Fu(',)i(whic)m(h)150 408 y(ha)m(v)m(e)32 b(equal)e(precedence.) +275 536 y(A)f(sequence)h(of)g(one)g(or)g(more)g(newlines)f(ma)m(y)h (app)s(ear)f(in)h(a)g Ft(list)e Fu(to)j(delimit)f(commands,)g(equiv-) -150 4175 y(alen)m(t)i(to)f(a)g(semicolon.)275 4308 y(If)c(a)h(command)f +150 646 y(alen)m(t)i(to)f(a)g(semicolon.)275 773 y(If)c(a)h(command)f (is)h(terminated)g(b)m(y)g(the)g(con)m(trol)h(op)s(erator)f(`)p Ft(&)p Fu(',)h(the)e(shell)h(executes)h(the)f(command)150 -4418 y(async)m(hronously)g(in)h(a)g(subshell.)39 b(This)28 +883 y(async)m(hronously)g(in)h(a)g(subshell.)39 b(This)28 b(is)h(kno)m(wn)f(as)h(executing)h(the)f(command)g(in)f(the)h -Fr(bac)m(kground)p Fu(,)150 4527 y(and)42 b(these)i(are)f(referred)g -(to)g(as)h Fr(async)m(hronous)i Fu(commands.)78 b(The)43 -b(shell)g(do)s(es)g(not)g(w)m(ait)h(for)f(the)150 4637 +Fr(bac)m(kground)p Fu(,)150 992 y(and)42 b(these)i(are)f(referred)g(to) +g(as)h Fr(async)m(hronous)i Fu(commands.)78 b(The)43 +b(shell)g(do)s(es)g(not)g(w)m(ait)h(for)f(the)150 1102 y(command)34 b(to)h(\014nish,)f(and)f(the)h(return)f(status)i(is)f(0)g (\(true\).)53 b(When)34 b(job)g(con)m(trol)h(is)f(not)h(activ)m(e)h -(\(see)150 4746 y(Chapter)27 b(7)h([Job)f(Con)m(trol],)i(page)g(107\),) +(\(see)150 1211 y(Chapter)27 b(7)h([Job)f(Con)m(trol],)i(page)g(113\),) h(the)d(standard)g(input)f(for)i(async)m(hronous)f(commands,)h(in)f -(the)150 4856 y(absence)k(of)f(an)m(y)h(explicit)h(redirections,)f(is)f -(redirected)h(from)f Ft(/dev/null)p Fu(.)275 4988 y(Commands)19 +(the)150 1321 y(absence)k(of)f(an)m(y)h(explicit)h(redirections,)f(is)f +(redirected)h(from)f Ft(/dev/null)p Fu(.)275 1448 y(Commands)19 b(separated)j(b)m(y)f(a)g(`)p Ft(;)p Fu(')g(are)h(executed)g(sequen)m (tially;)k(the)21 b(shell)g(w)m(aits)h(for)f(eac)m(h)h(command)150 -5098 y(to)31 b(terminate)h(in)e(turn.)39 b(The)30 b(return)f(status)i +1558 y(to)31 b(terminate)h(in)e(turn.)39 b(The)30 b(return)f(status)i (is)f(the)h(exit)g(status)g(of)g(the)f(last)h(command)f(executed.)275 -5230 y Fm(and)g Fu(and)h Fm(or)g Fu(lists)h(are)g(sequences)f(of)h(one) +1685 y Fm(and)g Fu(and)h Fm(or)g Fu(lists)h(are)g(sequences)f(of)h(one) g(or)f(more)h(pip)s(elines)e(separated)i(b)m(y)g(the)f(con)m(trol)i(op) -s(er-)150 5340 y(ators)e(`)p Ft(&&)p Fu(')f(and)g(`)p +s(er-)150 1795 y(ators)e(`)p Ft(&&)p Fu(')f(and)g(`)p Ft(||)p Fu(',)h(resp)s(ectiv)m(ely)-8 b(.)42 b Fm(and)30 b Fu(and)f Fm(or)h Fu(lists)h(are)g(executed)g(with)f(left)h(asso)s -(ciativit)m(y)-8 b(.)p eop end -%%Page: 10 16 -TeXDict begin 10 15 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(10)275 299 -y(An)30 b Fm(and)f Fu(list)i(has)f(the)h(form)390 433 -y Fj(command1)46 b Ft(&&)h Fj(command2)150 567 y Fr(command2)38 -b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h Fr(command1)38 -b Fu(returns)29 b(an)h(exit)h(status)g(of)g(zero)g(\(success\).)275 -701 y(An)f Fm(or)f Fu(list)i(has)f(the)h(form)390 835 -y Fj(command1)46 b Ft(||)h Fj(command2)150 969 y Fr(command2)38 -b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h Fr(command1)38 -b Fu(returns)29 b(a)i(non-zero)g(exit)g(status.)275 1103 -y(The)h(return)g(status)i(of)f Fm(and)f Fu(and)h Fm(or)f -Fu(lists)i(is)f(the)g(exit)h(status)g(of)f(the)g(last)h(command)f -(executed)150 1213 y(in)d(the)h(list.)150 1412 y Fk(3.2.5)63 -b(Comp)s(ound)42 b(Commands)150 1558 y Fu(Comp)s(ound)29 -b(commands)h(are)i(the)f(shell)g(programming)f(language)j(constructs.) -42 b(Eac)m(h)32 b(construct)f(b)s(e-)150 1668 y(gins)25 -b(with)f(a)i(reserv)m(ed)f(w)m(ord)f(or)h(con)m(trol)h(op)s(erator)f -(and)g(is)g(terminated)g(b)m(y)g(a)g(corresp)s(onding)f(reserv)m(ed)150 -1778 y(w)m(ord)i(or)g(op)s(erator.)40 b(An)m(y)26 b(redirections)g -(\(see)i(Section)f(3.6)g([Redirections],)h(page)f(35\))h(asso)s(ciated) -f(with)150 1887 y(a)k(comp)s(ound)f(command)h(apply)f(to)i(all)g -(commands)f(within)f(that)i(comp)s(ound)d(command)i(unless)f(ex-)150 -1997 y(plicitly)i(o)m(v)m(erridden.)275 2131 y(In)20 -b(most)h(cases)g(a)g(list)h(of)f(commands)f(in)g(a)h(comp)s(ound)f -(command's)g(description)h(ma)m(y)g(b)s(e)f(separated)150 -2240 y(from)30 b(the)h(rest)g(of)g(the)g(command)g(b)m(y)f(one)h(or)g +(ciativit)m(y)-8 b(.)275 1923 y(An)30 b Fm(and)f Fu(list)i(has)f(the)h +(form)390 2050 y Fj(command1)46 b Ft(&&)h Fj(command2)150 +2178 y Fr(command2)38 b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h +Fr(command1)38 b Fu(returns)29 b(an)h(exit)h(status)g(of)g(zero)g +(\(success\).)275 2305 y(An)f Fm(or)f Fu(list)i(has)f(the)h(form)390 +2432 y Fj(command1)46 b Ft(||)h Fj(command2)150 2560 +y Fr(command2)38 b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h +Fr(command1)38 b Fu(returns)29 b(a)i(non-zero)g(exit)g(status.)275 +2687 y(The)h(return)g(status)i(of)f Fm(and)f Fu(and)h +Fm(or)f Fu(lists)i(is)f(the)g(exit)h(status)g(of)f(the)g(last)h +(command)f(executed)150 2797 y(in)d(the)h(list.)150 2982 +y Fk(3.2.5)63 b(Comp)s(ound)42 b(Commands)150 3129 y +Fu(Comp)s(ound)29 b(commands)h(are)i(the)f(shell)g(programming)f +(language)j(constructs.)42 b(Eac)m(h)32 b(construct)f(b)s(e-)150 +3239 y(gins)25 b(with)f(a)i(reserv)m(ed)f(w)m(ord)f(or)h(con)m(trol)h +(op)s(erator)f(and)g(is)g(terminated)g(b)m(y)g(a)g(corresp)s(onding)f +(reserv)m(ed)150 3348 y(w)m(ord)i(or)g(op)s(erator.)40 +b(An)m(y)26 b(redirections)g(\(see)i(Section)f(3.6)g([Redirections],)h +(page)f(38\))h(asso)s(ciated)f(with)150 3458 y(a)k(comp)s(ound)f +(command)h(apply)f(to)i(all)g(commands)f(within)f(that)i(comp)s(ound)d +(command)i(unless)f(ex-)150 3568 y(plicitly)i(o)m(v)m(erridden.)275 +3695 y(In)20 b(most)h(cases)g(a)g(list)h(of)f(commands)f(in)g(a)h(comp) +s(ound)f(command's)g(description)h(ma)m(y)g(b)s(e)f(separated)150 +3805 y(from)30 b(the)h(rest)g(of)g(the)g(command)g(b)m(y)f(one)h(or)g (more)g(newlines,)g(and)f(ma)m(y)i(b)s(e)e(follo)m(w)m(ed)i(b)m(y)f(a)g -(newline)150 2350 y(in)f(place)h(of)g(a)g(semicolon.)275 -2484 y(Bash)45 b(pro)m(vides)h(lo)s(oping)g(constructs,)j(conditional)e +(newline)150 3914 y(in)f(place)h(of)g(a)g(semicolon.)275 +4042 y(Bash)45 b(pro)m(vides)h(lo)s(oping)g(constructs,)j(conditional)e (commands,)j(and)44 b(mec)m(hanisms)i(to)g(group)150 -2594 y(commands)30 b(and)g(execute)i(them)e(as)g(a)h(unit.)150 -2792 y Fk(3.2.5.1)63 b(Lo)s(oping)43 b(Constructs)150 -2939 y Fu(Bash)31 b(supp)s(orts)d(the)j(follo)m(wing)g(lo)s(oping)g -(constructs.)275 3073 y(Note)k(that)f(wherev)m(er)g(a)g(`)p +4151 y(commands)30 b(and)g(execute)i(them)e(as)g(a)h(unit.)150 +4336 y Fk(3.2.5.1)63 b(Lo)s(oping)43 b(Constructs)150 +4483 y Fu(Bash)31 b(supp)s(orts)d(the)j(follo)m(wing)g(lo)s(oping)g +(constructs.)275 4611 y(Note)k(that)f(wherev)m(er)g(a)g(`)p Ft(;)p Fu(')g(app)s(ears)f(in)h(the)g(description)g(of)g(a)g(command's) -g(syn)m(tax,)i(it)e(ma)m(y)h(b)s(e)150 3183 y(replaced)c(with)f(one)h -(or)f(more)g(newlines.)150 3341 y Ft(until)240 b Fu(The)30 +g(syn)m(tax,)i(it)e(ma)m(y)h(b)s(e)150 4720 y(replaced)c(with)f(one)h +(or)f(more)g(newlines.)150 4866 y Ft(until)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(until)e Fu(command)h(is:)870 -3476 y Ft(until)46 b Fj(test-commands)p Ft(;)e(do)j Fj -(consequent-commands)p Ft(;)c(done)630 3610 y Fu(Execute)f +4993 y Ft(until)46 b Fj(test-commands)p Ft(;)e(do)j Fj +(consequent-commands)p Ft(;)c(done)630 5121 y Fu(Execute)f Fr(consequen)m(t-commands)k Fu(as)41 b(long)h(as)f Fr(test-commands)46 -b Fu(has)41 b(an)g(exit)h(status)630 3719 y(whic)m(h)c(is)h(not)g +b Fu(has)41 b(an)g(exit)h(status)630 5230 y(whic)m(h)c(is)h(not)g (zero.)67 b(The)38 b(return)g(status)h(is)f(the)h(exit)h(status)f(of)g -(the)g(last)g(command)630 3829 y(executed)31 b(in)f Fr(consequen)m -(t-commands)p Fu(,)i(or)e(zero)h(if)g(none)f(w)m(as)h(executed.)150 -3987 y Ft(while)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h -Ft(while)e Fu(command)h(is:)870 4122 y Ft(while)46 b -Fj(test-commands)p Ft(;)e(do)j Fj(consequent-commands)p -Ft(;)c(done)630 4256 y Fu(Execute)f Fr(consequen)m(t-commands)k -Fu(as)41 b(long)h(as)f Fr(test-commands)46 b Fu(has)41 -b(an)g(exit)h(status)630 4365 y(of)34 b(zero.)53 b(The)34 -b(return)f(status)h(is)h(the)f(exit)h(status)g(of)f(the)g(last)h -(command)f(executed)h(in)630 4475 y Fr(consequen)m(t-commands)p -Fu(,)c(or)g(zero)g(if)f(none)g(w)m(as)h(executed.)150 -4633 y Ft(for)336 b Fu(The)30 b(syn)m(tax)h(of)f(the)h -Ft(for)e Fu(command)i(is:)870 4768 y Ft(for)47 b Fj(name)g -Ft([)g([in)g([)p Fj(words)f Ft(...)o(])i(])f(;)h(])f(do)g -Fj(commands)p Ft(;)e(done)630 4902 y Fu(Expand)30 b Fr(w)m(ords)k -Fu(\(see)d(Section)h(3.5)g([Shell)f(Expansions],)g(page)g(22\),)i(and)d -(execute)i Fr(com-)630 5011 y(mands)43 b Fu(once)e(for)g(eac)m(h)g(mem) +(the)g(last)g(command)630 5340 y(executed)31 b(in)f Fr(consequen)m +(t-commands)p Fu(,)i(or)e(zero)h(if)g(none)f(w)m(as)h(executed.)p +eop end +%%Page: 12 18 +TeXDict begin 12 17 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(12)150 299 +y Ft(while)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(while)e +Fu(command)h(is:)870 436 y Ft(while)46 b Fj(test-commands)p +Ft(;)e(do)j Fj(consequent-commands)p Ft(;)c(done)630 +573 y Fu(Execute)f Fr(consequen)m(t-commands)k Fu(as)41 +b(long)h(as)f Fr(test-commands)46 b Fu(has)41 b(an)g(exit)h(status)630 +683 y(of)34 b(zero.)53 b(The)34 b(return)f(status)h(is)h(the)f(exit)h +(status)g(of)f(the)g(last)h(command)f(executed)h(in)630 +792 y Fr(consequen)m(t-commands)p Fu(,)c(or)g(zero)g(if)f(none)g(w)m +(as)h(executed.)150 957 y Ft(for)336 b Fu(The)30 b(syn)m(tax)h(of)f +(the)h Ft(for)e Fu(command)i(is:)870 1094 y Ft(for)47 +b Fj(name)g Ft([)g([in)g([)p Fj(words)f Ft(...)o(])i(])f(;)h(])f(do)g +Fj(commands)p Ft(;)e(done)630 1231 y Fu(Expand)30 b Fr(w)m(ords)k +Fu(\(see)d(Section)h(3.5)g([Shell)f(Expansions],)g(page)g(24\),)i(and)d +(execute)i Fr(com-)630 1341 y(mands)43 b Fu(once)e(for)g(eac)m(h)g(mem) m(b)s(er)f(in)g(the)h(resultan)m(t)g(list,)j(with)c Fr(name)46 -b Fu(b)s(ound)39 b(to)i(the)630 5121 y(curren)m(t)34 +b Fu(b)s(ound)39 b(to)i(the)630 1450 y(curren)m(t)34 b(mem)m(b)s(er.)53 b(If)35 b(`)p Ft(in)30 b Fj(words)p Fu(')j(is)i(not)g(presen)m(t,)h(the)f Ft(for)e Fu(command)i(executes)h -(the)630 5230 y Fr(commands)j Fu(once)e(for)f(eac)m(h)h(p)s(ositional)g +(the)630 1560 y Fr(commands)j Fu(once)e(for)f(eac)m(h)h(p)s(ositional)g (parameter)f(that)h(is)f(set,)i(as)e(if)g(`)p Ft(in)30 -b("$@")p Fu(')36 b(had)630 5340 y(b)s(een)30 b(sp)s(eci\014ed)f(\(see)j -(Section)f(3.4.2)h([Sp)s(ecial)f(P)m(arameters],)h(page)f(21\).)p -eop end -%%Page: 11 17 -TeXDict begin 11 16 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(11)630 299 -y(The)27 b(return)f(status)h(is)g(the)h(exit)g(status)f(of)g(the)h +b("$@")p Fu(')36 b(had)630 1670 y(b)s(een)30 b(sp)s(eci\014ed)f(\(see)j +(Section)f(3.4.2)h([Sp)s(ecial)f(P)m(arameters],)h(page)f(23\).)630 +1807 y(The)c(return)f(status)h(is)g(the)h(exit)g(status)f(of)g(the)h (last)g(command)e(that)i(executes.)41 b(If)27 b(there)630 -408 y(are)38 b(no)f(items)g(in)g(the)h(expansion)f(of)g +1916 y(are)38 b(no)f(items)g(in)g(the)h(expansion)f(of)g Fr(w)m(ords)p Fu(,)i(no)e(commands)g(are)g(executed,)j(and)d(the)630 -518 y(return)29 b(status)i(is)f(zero.)630 644 y(An)g(alternate)i(form)e -(of)h(the)f Ft(for)g Fu(command)g(is)g(also)h(supp)s(orted:)870 -771 y Ft(for)47 b(\(\()g Fj(expr1)f Ft(;)i Fj(expr2)e +2026 y(return)29 b(status)i(is)f(zero.)630 2163 y(An)g(alternate)i +(form)e(of)h(the)f Ft(for)g Fu(command)g(is)g(also)h(supp)s(orted:)870 +2300 y Ft(for)47 b(\(\()g Fj(expr1)f Ft(;)i Fj(expr2)e Ft(;)i Fj(expr3)e Ft(\)\))h(;)h(do)f Fj(commands)e Ft(;)j(done)630 -897 y Fu(First,)38 b(the)f(arithmetic)h(expression)e +2437 y Fu(First,)38 b(the)f(arithmetic)h(expression)e Fr(expr1)43 b Fu(is)36 b(ev)-5 b(aluated)38 b(according)f(to)g(the)g -(rules)f(de-)630 1007 y(scrib)s(ed)41 b(b)s(elo)m(w)h(\(see)h(Section)g -(6.5)g([Shell)g(Arithmetic],)j(page)d(93\).)77 b(The)42 -b(arithmetic)630 1116 y(expression)33 b Fr(expr2)41 b +(rules)f(de-)630 2547 y(scrib)s(ed)41 b(b)s(elo)m(w)h(\(see)h(Section)g +(6.5)g([Shell)g(Arithmetic],)j(page)d(98\).)77 b(The)42 +b(arithmetic)630 2656 y(expression)33 b Fr(expr2)41 b Fu(is)34 b(then)f(ev)-5 b(aluated)35 b(rep)s(eatedly)f(un)m(til)g(it)g -(ev)-5 b(aluates)35 b(to)g(zero.)51 b(Eac)m(h)630 1226 +(ev)-5 b(aluates)35 b(to)g(zero.)51 b(Eac)m(h)630 2766 y(time)23 b Fr(expr2)30 b Fu(ev)-5 b(aluates)25 b(to)e(a)g(non-zero)h (v)-5 b(alue,)25 b Fr(commands)h Fu(are)d(executed)g(and)g(the)g -(arith-)630 1335 y(metic)29 b(expression)f Fr(expr3)36 +(arith-)630 2876 y(metic)29 b(expression)f Fr(expr3)36 b Fu(is)28 b(ev)-5 b(aluated.)41 b(If)28 b(an)m(y)h(expression)f(is)g -(omitted,)i(it)f(b)s(eha)m(v)m(es)g(as)630 1445 y(if)i(it)h(ev)-5 +(omitted,)i(it)f(b)s(eha)m(v)m(es)g(as)630 2985 y(if)i(it)h(ev)-5 b(aluates)32 b(to)g(1.)44 b(The)30 b(return)g(v)-5 b(alue)32 b(is)f(the)g(exit)h(status)g(of)f(the)g(last)h(command)f(in)630 -1555 y Fr(commands)j Fu(that)d(is)f(executed,)i(or)e(false)h(if)f(an)m +3095 y Fr(commands)j Fu(that)d(is)f(executed,)i(or)e(false)h(if)f(an)m (y)h(of)g(the)f(expressions)g(is)h(in)m(v)-5 b(alid.)275 -1698 y(The)26 b Ft(break)g Fu(and)h Ft(continue)e Fu(builtins)i(\(see)h -(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(44\))g(ma)m(y) -150 1807 y(b)s(e)i(used)f(to)i(con)m(trol)h(lo)s(op)f(execution.)150 -1990 y Fk(3.2.5.2)63 b(Conditional)42 b(Constructs)150 -2154 y Ft(if)384 b Fu(The)30 b(syn)m(tax)h(of)f(the)h -Ft(if)f Fu(command)g(is:)870 2280 y Ft(if)47 b Fj(test-commands)p -Ft(;)d(then)965 2390 y Fj(consequent-commands)p Ft(;)870 -2500 y([elif)i Fj(more-test-commands)p Ft(;)d(then)965 -2609 y Fj(more-consequents)p Ft(;])870 2719 y([else)j -Fj(alternate-consequents)p Ft(;])870 2828 y(fi)630 2955 +3262 y(The)26 b Ft(break)g Fu(and)h Ft(continue)e Fu(builtins)i(\(see)h +(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(48\))g(ma)m(y) +150 3372 y(b)s(e)i(used)f(to)i(con)m(trol)h(lo)s(op)f(execution.)150 +3576 y Fk(3.2.5.2)63 b(Conditional)42 b(Constructs)150 +3751 y Ft(if)384 b Fu(The)30 b(syn)m(tax)h(of)f(the)h +Ft(if)f Fu(command)g(is:)870 3888 y Ft(if)47 b Fj(test-commands)p +Ft(;)d(then)965 3997 y Fj(consequent-commands)p Ft(;)870 +4107 y([elif)i Fj(more-test-commands)p Ft(;)d(then)965 +4217 y Fj(more-consequents)p Ft(;])870 4326 y([else)j +Fj(alternate-consequents)p Ft(;])870 4436 y(fi)630 4573 y Fu(The)53 b Fr(test-commands)58 b Fu(list)c(is)g(executed,)60 b(and)53 b(if)g(its)h(return)e(status)i(is)f(zero,)61 -b(the)630 3064 y Fr(consequen)m(t-commands)44 b Fu(list)d(is)f +b(the)630 4682 y Fr(consequen)m(t-commands)44 b Fu(list)d(is)f (executed.)70 b(If)40 b Fr(test-commands)k Fu(returns)39 -b(a)h(non-zero)630 3174 y(status,)45 b(eac)m(h)e Ft(elif)d +b(a)h(non-zero)630 4792 y(status,)45 b(eac)m(h)e Ft(elif)d Fu(list)i(is)g(executed)h(in)e(turn,)j(and)d(if)g(its)h(exit)h(status)f -(is)f(zero,)46 b(the)630 3284 y(corresp)s(onding)37 b +(is)f(zero,)46 b(the)630 4902 y(corresp)s(onding)37 b Fr(more-consequen)m(ts)42 b Fu(is)c(executed)g(and)f(the)h(command)g -(completes.)63 b(If)630 3393 y(`)p Ft(else)29 b Fj +(completes.)63 b(If)630 5011 y(`)p Ft(else)29 b Fj (alternate-consequents)p Fu(')c(is)30 b(presen)m(t,)h(and)f(the)g -(\014nal)g(command)g(in)g(the)g(\014nal)630 3503 y Ft(if)44 +(\014nal)g(command)g(in)g(the)g(\014nal)630 5121 y Ft(if)44 b Fu(or)g Ft(elif)f Fu(clause)i(has)f(a)h(non-zero)g(exit)g(status,)j -(then)c Fr(alternate-consequen)m(ts)51 b Fu(is)630 3612 +(then)c Fr(alternate-consequen)m(ts)51 b Fu(is)630 5230 y(executed.)k(The)34 b(return)g(status)h(is)f(the)h(exit)h(status)f(of) -g(the)g(last)g(command)g(executed,)630 3722 y(or)30 b(zero)i(if)e(no)g -(condition)h(tested)g(true.)150 3865 y Ft(case)288 b -Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(case)e Fu(command)h(is:)870 -3991 y Ft(case)47 b Fj(word)f Ft(in)1061 4101 y([)h([\(])g -Fj(pattern)f Ft([|)h Fj(pattern)p Ft(]...)m(\))h Fj(command-list)c -Ft(;;]...)870 4211 y(esac)630 4337 y(case)20 b Fu(will)i(selectiv)m -(ely)j(execute)e(the)e Fr(command-list)k Fu(corresp)s(onding)20 -b(to)i(the)g(\014rst)f Fr(pattern)630 4446 y Fu(that)h(matc)m(hes)h -Fr(w)m(ord)p Fu(.)38 b(The)21 b(matc)m(h)h(is)g(p)s(erformed)e -(according)j(to)f(the)g(rules)g(describ)s(ed)e(b)s(e-)630 -4556 y(lo)m(w)25 b(in)e(Section)i(3.5.8.1)h([P)m(attern)f(Matc)m -(hing],)i(page)e(33.)39 b(If)23 b(the)h Ft(nocasematch)d -Fu(shell)j(op-)630 4666 y(tion)j(\(see)g(the)f(description)g(of)g -Ft(shopt)f Fu(in)g(Section)i(4.3.2)h([The)e(Shopt)f(Builtin],)j(page)f -(66\))630 4775 y(is)40 b(enabled,)i(the)e(matc)m(h)h(is)e(p)s(erformed) -g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630 -4885 y(c)m(haracters.)48 b(The)32 b(`)p Ft(|)p Fu(')g(is)h(used)e(to)i -(separate)h(m)m(ultiple)f(patterns,)g(and)f(the)g(`)p -Ft(\))p Fu(')h(op)s(erator)630 4994 y(terminates)f(a)f(pattern)g(list.) -43 b(A)31 b(list)g(of)g(patterns)g(and)f(an)h(asso)s(ciated)h -(command-list)g(is)630 5104 y(kno)m(wn)e(as)g(a)h Fr(clause)p -Fu(.)630 5230 y(Eac)m(h)42 b(clause)g(m)m(ust)f(b)s(e)g(terminated)h +g(the)g(last)g(command)g(executed,)630 5340 y(or)30 b(zero)i(if)e(no)g +(condition)h(tested)g(true.)p eop end +%%Page: 13 19 +TeXDict begin 13 18 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(13)150 299 +y Ft(case)288 b Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(case)e +Fu(command)h(is:)870 425 y Ft(case)47 b Fj(word)f Ft(in)1061 +535 y([)h([\(])g Fj(pattern)f Ft([|)h Fj(pattern)p Ft(]...)m(\))h +Fj(command-list)c Ft(;;]...)870 645 y(esac)630 771 y(case)20 +b Fu(will)i(selectiv)m(ely)j(execute)e(the)e Fr(command-list)k +Fu(corresp)s(onding)20 b(to)i(the)g(\014rst)f Fr(pattern)630 +881 y Fu(that)h(matc)m(hes)h Fr(w)m(ord)p Fu(.)38 b(The)21 +b(matc)m(h)h(is)g(p)s(erformed)e(according)j(to)f(the)g(rules)g +(describ)s(ed)e(b)s(e-)630 990 y(lo)m(w)25 b(in)e(Section)i(3.5.8.1)h +([P)m(attern)f(Matc)m(hing],)i(page)e(36.)39 b(If)23 +b(the)h Ft(nocasematch)d Fu(shell)j(op-)630 1100 y(tion)j(\(see)g(the)f +(description)g(of)g Ft(shopt)f Fu(in)g(Section)i(4.3.2)h([The)e(Shopt)f +(Builtin],)j(page)f(71\))630 1209 y(is)40 b(enabled,)i(the)e(matc)m(h)h +(is)e(p)s(erformed)g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s +(etic)630 1319 y(c)m(haracters.)48 b(The)32 b(`)p Ft(|)p +Fu(')g(is)h(used)e(to)i(separate)h(m)m(ultiple)f(patterns,)g(and)f(the) +g(`)p Ft(\))p Fu(')h(op)s(erator)630 1428 y(terminates)f(a)f(pattern)g +(list.)43 b(A)31 b(list)g(of)g(patterns)g(and)f(an)h(asso)s(ciated)h +(command-list)g(is)630 1538 y(kno)m(wn)e(as)g(a)h Fr(clause)p +Fu(.)630 1665 y(Eac)m(h)42 b(clause)g(m)m(ust)f(b)s(e)g(terminated)h (with)e(`)p Ft(;;)p Fu(',)45 b(`)p Ft(;&)p Fu(',)f(or)d(`)p Ft(;;&)p Fu('.)73 b(The)41 b Fr(w)m(ord)j Fu(under-)630 -5340 y(go)s(es)35 b(tilde)f(expansion,)h(parameter)g(expansion,)g -(command)f(substitution,)h(arithmetic)p eop end -%%Page: 12 18 -TeXDict begin 12 17 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(12)630 299 -y(expansion,)35 b(and)f(quote)g(remo)m(v)-5 b(al)36 b(\(see)f(Section)g -(3.5.3)h([Shell)e(P)m(arameter)h(Expansion],)630 408 -y(page)22 b(25\))g(b)s(efore)f(matc)m(hing)h(is)g(attempted.)38 -b(Eac)m(h)22 b Fr(pattern)g Fu(undergo)s(es)e(tilde)i(expansion,)630 -518 y(parameter)31 b(expansion,)f(command)g(substitution,)h(and)f -(arithmetic)h(expansion.)630 651 y(There)f(ma)m(y)g(b)s(e)f(an)h -(arbitrary)g(n)m(um)m(b)s(er)f(of)h Ft(case)f Fu(clauses,)i(eac)m(h)g -(terminated)g(b)m(y)e(a)i(`)p Ft(;;)p Fu(',)630 761 y(`)p -Ft(;&)p Fu(',)c(or)e(`)p Ft(;;&)p Fu('.)39 b(The)25 b(\014rst)g -(pattern)h(that)g(matc)m(hes)h(determines)e(the)h(command-list)g(that) -630 870 y(is)35 b(executed.)55 b(It's)35 b(a)g(common)g(idiom)g(to)g -(use)g(`)p Ft(*)p Fu(')g(as)g(the)g(\014nal)f(pattern)h(to)h(de\014ne)e -(the)630 980 y(default)d(case,)g(since)g(that)g(pattern)f(will)h(alw)m -(a)m(ys)h(matc)m(h.)630 1113 y(Here)j(is)g(an)g(example)h(using)e +1774 y(go)s(es)35 b(tilde)f(expansion,)h(parameter)g(expansion,)g +(command)f(substitution,)h(arithmetic)630 1884 y(expansion,)g(and)f +(quote)g(remo)m(v)-5 b(al)36 b(\(see)f(Section)g(3.5.3)h([Shell)e(P)m +(arameter)h(Expansion],)630 1993 y(page)i(26\))g(b)s(efore)e(matc)m +(hing)i(is)f(attempted.)59 b(Eac)m(h)36 b Fr(pattern)g +Fu(undergo)s(es)f(tilde)i(expan-)630 2103 y(sion,)e(parameter)g +(expansion,)g(command)f(substitution,)h(arithmetic)h(expansion,)f(pro-) +630 2212 y(cess)c(substitution,)f(and)g(quote)h(remo)m(v)-5 +b(al.)630 2339 y(There)30 b(ma)m(y)g(b)s(e)f(an)h(arbitrary)g(n)m(um)m +(b)s(er)f(of)h Ft(case)f Fu(clauses,)i(eac)m(h)g(terminated)g(b)m(y)e +(a)i(`)p Ft(;;)p Fu(',)630 2449 y(`)p Ft(;&)p Fu(',)c(or)e(`)p +Ft(;;&)p Fu('.)39 b(The)25 b(\014rst)g(pattern)h(that)g(matc)m(hes)h +(determines)e(the)h(command-list)g(that)630 2558 y(is)35 +b(executed.)55 b(It's)35 b(a)g(common)g(idiom)g(to)g(use)g(`)p +Ft(*)p Fu(')g(as)g(the)g(\014nal)f(pattern)h(to)h(de\014ne)e(the)630 +2668 y(default)d(case,)g(since)g(that)g(pattern)f(will)h(alw)m(a)m(ys)h +(matc)m(h.)630 2794 y(Here)j(is)g(an)g(example)h(using)e Ft(case)g Fu(in)g(a)h(script)g(that)h(could)f(b)s(e)f(used)g(to)h -(describ)s(e)g(one)630 1223 y(in)m(teresting)d(feature)f(of)f(an)g -(animal:)870 1356 y Ft(echo)47 b(-n)g("Enter)f(the)h(name)f(of)i(an)f -(animal:)f(")870 1465 y(read)h(ANIMAL)870 1575 y(echo)g(-n)g("The)f -($ANIMAL)g(has)h(")870 1684 y(case)g($ANIMAL)e(in)965 -1794 y(horse)i(|)g(dog)g(|)h(cat\))e(echo)h(-n)g("four";;)965 -1904 y(man)g(|)h(kangaroo)d(\))j(echo)e(-n)i("two";;)965 -2013 y(*\))g(echo)e(-n)h("an)g(unknown)f(number)g(of";;)870 -2123 y(esac)870 2232 y(echo)h(")g(legs.")630 2389 y Fu(If)40 +(describ)s(e)g(one)630 2904 y(in)m(teresting)d(feature)f(of)f(an)g +(animal:)870 3030 y Ft(echo)47 b(-n)g("Enter)f(the)h(name)f(of)i(an)f +(animal:)f(")870 3140 y(read)h(ANIMAL)870 3249 y(echo)g(-n)g("The)f +($ANIMAL)g(has)h(")870 3359 y(case)g($ANIMAL)e(in)965 +3469 y(horse)i(|)g(dog)g(|)h(cat\))e(echo)h(-n)g("four";;)965 +3578 y(man)g(|)h(kangaroo)d(\))j(echo)e(-n)i("two";;)965 +3688 y(*\))g(echo)e(-n)h("an)g(unknown)f(number)g(of";;)870 +3797 y(esac)870 3907 y(echo)h(")g(legs.")630 4050 y Fu(If)40 b(the)i(`)p Ft(;;)p Fu(')e(op)s(erator)i(is)f(used,)i(no)e(subsequen)m -(t)f(matc)m(hes)i(are)f(attempted)h(after)g(the)630 2498 +(t)f(matc)m(hes)i(are)f(attempted)h(after)g(the)630 4160 y(\014rst)c(pattern)h(matc)m(h.)67 b(Using)39 b(`)p Ft(;&)p Fu(')g(in)f(place)i(of)f(`)p Ft(;;)p Fu(')g(causes)g(execution)h(to)g -(con)m(tin)m(ue)630 2608 y(with)34 b(the)g Fr(command-list)j +(con)m(tin)m(ue)630 4269 y(with)34 b(the)g Fr(command-list)j Fu(asso)s(ciated)f(with)e(the)h(next)f(clause,)i(if)f(an)m(y)-8 -b(.)53 b(Using)34 b(`)p Ft(;;&)p Fu(')g(in)630 2718 y(place)c(of)f(`)p +b(.)53 b(Using)34 b(`)p Ft(;;&)p Fu(')g(in)630 4379 y(place)c(of)f(`)p Ft(;;)p Fu(')g(causes)h(the)f(shell)h(to)g(test)g(the)f(patterns)g(in)g (the)g(next)h(clause,)g(if)f(an)m(y)-8 b(,)31 b(and)630 -2827 y(execute)26 b(an)m(y)f(asso)s(ciated)h Fr(command-list)h +4489 y(execute)26 b(an)m(y)f(asso)s(ciated)h Fr(command-list)h Fu(on)e(a)f(successful)h(matc)m(h,)i(con)m(tin)m(uing)e(the)g(case)630 -2937 y(statemen)m(t)32 b(execution)g(as)e(if)h(the)f(pattern)h(list)g -(had)f(not)g(matc)m(hed.)630 3070 y(The)c(return)f(status)h(is)g(zero)h +4598 y(statemen)m(t)32 b(execution)g(as)e(if)h(the)f(pattern)h(list)g +(had)f(not)g(matc)m(hed.)630 4725 y(The)c(return)f(status)h(is)g(zero)h (if)f(no)g Fr(pattern)g Fu(is)g(matc)m(hed.)40 b(Otherwise,)27 -b(the)g(return)e(status)630 3180 y(is)30 b(the)h(exit)g(status)g(of)f -(the)h Fr(command-list)i Fu(executed.)150 3336 y Ft(select)630 -3469 y Fu(The)g Ft(select)f Fu(construct)i(allo)m(ws)h(the)f(easy)g +b(the)g(return)e(status)630 4834 y(is)30 b(the)h(exit)g(status)g(of)f +(the)h Fr(command-list)i Fu(executed.)150 4977 y Ft(select)630 +5104 y Fu(The)g Ft(select)f Fu(construct)i(allo)m(ws)h(the)f(easy)g (generation)h(of)e(men)m(us.)50 b(It)34 b(has)f(almost)i(the)630 -3579 y(same)c(syn)m(tax)g(as)f(the)h Ft(for)e Fu(command:)870 -3712 y Ft(select)46 b Fj(name)h Ft([in)g Fj(words)f Ft(...)o(];)h(do)h -Fj(commands)p Ft(;)d(done)630 3845 y Fu(The)25 b(list)h(of)f(w)m(ords)g -(follo)m(wing)i Ft(in)d Fu(is)h(expanded,)h(generating)h(a)e(list)h(of) -g(items.)39 b(The)25 b(set)h(of)630 3954 y(expanded)i(w)m(ords)h(is)g -(prin)m(ted)f(on)h(the)g(standard)f(error)h(output)f(stream,)i(eac)m(h) -g(preceded)630 4064 y(b)m(y)21 b(a)g(n)m(um)m(b)s(er.)37 -b(If)20 b(the)i(`)p Ft(in)30 b Fj(words)p Fu(')20 b(is)h(omitted,)j -(the)d(p)s(ositional)h(parameters)g(are)f(prin)m(ted,)630 -4174 y(as)28 b(if)f(`)p Ft(in)j("$@")p Fu(')d(had)f(b)s(een)h(sp)s -(eci\014ed.)39 b(The)27 b Ft(PS3)g Fu(prompt)f(is)i(then)f(displa)m(y)m -(ed)h(and)f(a)h(line)630 4283 y(is)h(read)f(from)h(the)f(standard)g -(input.)39 b(If)29 b(the)g(line)g(consists)g(of)g(a)g(n)m(um)m(b)s(er)e -(corresp)s(onding)630 4393 y(to)36 b(one)f(of)h(the)f(displa)m(y)m(ed)h -(w)m(ords,)g(then)f(the)g(v)-5 b(alue)36 b(of)f Fr(name)40 -b Fu(is)35 b(set)h(to)g(that)g(w)m(ord.)54 b(If)630 4502 -y(the)37 b(line)h(is)f(empt)m(y)-8 b(,)39 b(the)e(w)m(ords)g(and)f -(prompt)g(are)i(displa)m(y)m(ed)f(again.)62 b(If)37 b -Ft(EOF)f Fu(is)h(read,)630 4612 y(the)c Ft(select)e Fu(command)i -(completes.)50 b(An)m(y)33 b(other)g(v)-5 b(alue)33 b(read)g(causes)g -Fr(name)38 b Fu(to)c(b)s(e)e(set)630 4722 y(to)f(n)m(ull.)41 -b(The)30 b(line)g(read)h(is)f(sa)m(v)m(ed)h(in)g(the)f(v)-5 -b(ariable)31 b Ft(REPLY)p Fu(.)630 4855 y(The)42 b Fr(commands)j -Fu(are)d(executed)h(after)g(eac)m(h)g(selection)h(un)m(til)e(a)h -Ft(break)d Fu(command)i(is)630 4964 y(executed,)32 b(at)f(whic)m(h)f(p) -s(oin)m(t)g(the)h Ft(select)d Fu(command)i(completes.)630 -5097 y(Here)39 b(is)g(an)g(example)h(that)f(allo)m(ws)i(the)e(user)f -(to)i(pic)m(k)f(a)g(\014lename)h(from)e(the)h(curren)m(t)630 -5207 y(directory)-8 b(,)32 b(and)d(displa)m(ys)i(the)f(name)h(and)f -(index)f(of)i(the)g(\014le)f(selected.)870 5340 y Ft(select)46 -b(fname)g(in)i(*;)p eop end -%%Page: 13 19 -TeXDict begin 13 18 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(13)870 299 -y Ft(do)870 408 y(echo)47 b(you)g(picked)f($fname)g(\\\($REPLY\\\))870 -518 y(break;)870 628 y(done)150 788 y(\(\(...)o(\)\))870 -923 y(\(\()h Fj(expression)e Ft(\)\))630 1058 y Fu(The)33 -b(arithmetic)i Fr(expression)f Fu(is)f(ev)-5 b(aluated)35 -b(according)g(to)f(the)g(rules)f(describ)s(ed)g(b)s(elo)m(w)630 -1167 y(\(see)j(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)f(93\).)55 -b(If)34 b(the)h(v)-5 b(alue)35 b(of)g(the)g(expression)g(is)630 -1277 y(non-zero,)27 b(the)f(return)e(status)i(is)g(0;)h(otherwise)f -(the)g(return)e(status)i(is)g(1.)39 b(This)25 b(is)g(exactly)630 -1386 y(equiv)-5 b(alen)m(t)32 b(to)870 1521 y Ft(let)47 -b(")p Fj(expression)p Ft(")630 1656 y Fu(See)25 b(Section)h(4.2)h -([Bash)e(Builtins],)i(page)f(51,)i(for)c(a)i(full)f(description)g(of)g -(the)h Ft(let)e Fu(builtin.)150 1816 y Ft([[...)o(]])870 -1951 y([[)47 b Fj(expression)e Ft(]])630 2086 y Fu(Return)25 -b(a)h(status)f(of)h(0)g(or)g(1)g(dep)s(ending)e(on)h(the)h(ev)-5 -b(aluation)27 b(of)e(the)h(conditional)h(expres-)630 -2196 y(sion)j Fr(expression)p Fu(.)41 b(Expressions)29 -b(are)i(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s(elo)m -(w)h(in)630 2305 y(Section)36 b(6.4)h([Bash)f(Conditional)g -(Expressions],)h(page)f(91.)57 b(W)-8 b(ord)36 b(splitting)h(and)e -(\014le-)630 2415 y(name)d(expansion)g(are)h(not)g(p)s(erformed)d(on)j -(the)f(w)m(ords)g(b)s(et)m(w)m(een)h(the)f Ft([[)g Fu(and)f -Ft(]])p Fu(;)i(tilde)630 2524 y(expansion,)e(parameter)g(and)f(v)-5 -b(ariable)31 b(expansion,)g(arithmetic)g(expansion,)g(command)630 -2634 y(substitution,)40 b(pro)s(cess)f(substitution,)h(and)e(quote)h -(remo)m(v)-5 b(al)40 b(are)f(p)s(erformed.)63 b(Condi-)630 -2744 y(tional)32 b(op)s(erators)e(suc)m(h)g(as)h(`)p -Ft(-f)p Fu(')f(m)m(ust)g(b)s(e)g(unquoted)g(to)h(b)s(e)e(recognized)j -(as)f(primaries.)630 2878 y(When)k(used)f(with)h Ft([[)p -Fu(,)h(the)f(`)p Ft(<)p Fu(')g(and)g(`)p Ft(>)p Fu(')g(op)s(erators)g -(sort)g(lexicographically)j(using)d(the)630 2988 y(curren)m(t)30 -b(lo)s(cale.)630 3123 y(When)22 b(the)h(`)p Ft(==)p Fu(')f(and)g(`)p -Ft(!=)p Fu(')g(op)s(erators)h(are)g(used,)g(the)g(string)f(to)i(the)e -(righ)m(t)h(of)g(the)g(op)s(erator)630 3232 y(is)31 b(considered)g(a)h -(pattern)f(and)g(matc)m(hed)h(according)g(to)g(the)g(rules)f(describ)s -(ed)f(b)s(elo)m(w)h(in)630 3342 y(Section)d(3.5.8.1)h([P)m(attern)f -(Matc)m(hing],)h(page)f(33,)g(as)f(if)g(the)g Ft(extglob)d -Fu(shell)j(option)g(w)m(ere)630 3452 y(enabled.)46 b(The)31 -b(`)p Ft(=)p Fu(')h(op)s(erator)h(is)f(iden)m(tical)h(to)g(`)p -Ft(==)p Fu('.)46 b(If)31 b(the)h Ft(nocasematch)d Fu(shell)j(option)630 -3561 y(\(see)42 b(the)f(description)g(of)h Ft(shopt)d -Fu(in)i(Section)h(4.3.2)h([The)e(Shopt)f(Builtin],)45 -b(page)d(66\))630 3671 y(is)e(enabled,)i(the)e(matc)m(h)h(is)e(p)s -(erformed)g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630 -3780 y(c)m(haracters.)h(The)28 b(return)e(v)-5 b(alue)28 -b(is)g(0)g(if)g(the)g(string)g(matc)m(hes)h(\(`)p Ft(==)p -Fu('\))f(or)g(do)s(es)f(not)h(matc)m(h)630 3890 y(\(`)p -Ft(!=)p Fu('\))j(the)f(pattern,)h(and)e(1)i(otherwise.)41 -b(An)m(y)30 b(part)g(of)h(the)f(pattern)g(ma)m(y)h(b)s(e)f(quoted)g(to) -630 4000 y(force)h(the)g(quoted)f(p)s(ortion)g(to)h(b)s(e)f(matc)m(hed) -h(as)g(a)f(string.)630 4134 y(An)44 b(additional)h(binary)f(op)s -(erator,)49 b(`)p Ft(=~)p Fu(',)f(is)c(a)m(v)-5 b(ailable,)51 -b(with)44 b(the)h(same)f(precedence)630 4244 y(as)c(`)p -Ft(==)p Fu(')g(and)f(`)p Ft(!=)p Fu('.)69 b(When)40 b(it)g(is)g(used,)i -(the)e(string)g(to)g(the)g(righ)m(t)h(of)f(the)g(op)s(erator)g(is)630 -4354 y(considered)23 b(a)g Fm(posix)g Fu(extended)g(regular)g -(expression)g(and)f(matc)m(hed)i(accordingly)g(\(using)630 -4463 y(the)29 b Fm(posix)g Ft(regcomp)e Fu(and)h Ft(regexec)g -Fu(in)m(terfaces)i(usually)f(describ)s(ed)f(in)h Fl(r)-5 -b(e)g(gex)11 b Fu(\(3\)\).)42 b(The)630 4573 y(return)20 -b(v)-5 b(alue)21 b(is)g(0)g(if)g(the)g(string)g(matc)m(hes)h(the)f -(pattern,)j(and)c(1)h(otherwise.)38 b(If)21 b(the)g(regular)630 -4682 y(expression)k(is)h(syn)m(tactically)i(incorrect,)g(the)e -(conditional)h(expression's)e(return)g(v)-5 b(alue)26 -b(is)630 4792 y(2.)39 b(If)24 b(the)h Ft(nocasematch)c -Fu(shell)k(option)g(\(see)h(the)e(description)h(of)g -Ft(shopt)e Fu(in)h(Section)h(4.3.2)630 4902 y([The)e(Shopt)g(Builtin],) -j(page)e(66\))h(is)e(enabled,)i(the)f(matc)m(h)g(is)g(p)s(erformed)e -(without)h(regard)630 5011 y(to)36 b(the)g(case)h(of)f(alphab)s(etic)g -(c)m(haracters.)58 b(An)m(y)36 b(part)g(of)g(the)g(pattern)f(ma)m(y)i -(b)s(e)e(quoted)630 5121 y(to)f(force)g(the)f(quoted)h(p)s(ortion)f(to) -h(b)s(e)f(matc)m(hed)h(as)f(a)h(string.)50 b(Brac)m(k)m(et)35 -b(expressions)e(in)630 5230 y(regular)g(expressions)g(m)m(ust)g(b)s(e)f -(treated)i(carefully)-8 b(,)35 b(since)e(normal)g(quoting)g(c)m -(haracters)630 5340 y(lose)25 b(their)f(meanings)g(b)s(et)m(w)m(een)h -(brac)m(k)m(ets.)40 b(If)23 b(the)h(pattern)h(is)f(stored)g(in)f(a)i -(shell)f(v)-5 b(ariable,)p eop end +5214 y(same)c(syn)m(tax)g(as)f(the)h Ft(for)e Fu(command:)870 +5340 y Ft(select)46 b Fj(name)h Ft([in)g Fj(words)f Ft(...)o(];)h(do)h +Fj(commands)p Ft(;)d(done)p eop end %%Page: 14 20 TeXDict begin 14 19 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(14)630 299 -y(quoting)41 b(the)f(v)-5 b(ariable)42 b(expansion)e(forces)h(the)f(en) -m(tire)h(pattern)g(to)g(b)s(e)f(matc)m(hed)h(as)g(a)630 -408 y(string.)630 555 y(The)26 b(pattern)g(will)h(matc)m(h)g(if)f(it)h -(matc)m(hes)h(an)m(y)e(part)h(of)f(the)h(string.)39 b(Anc)m(hor)26 -b(the)h(pattern)630 664 y(using)f(the)i(`)p Ft(^)p Fu(')f(and)f(`)p -Ft($)p Fu(')h(regular)h(expression)e(op)s(erators)h(to)h(force)g(it)f -(to)h(matc)m(h)g(the)f(en)m(tire)630 774 y(string.)81 -b(The)44 b(arra)m(y)g(v)-5 b(ariable)45 b Ft(BASH_REMATCH)40 -b Fu(records)k(whic)m(h)f(parts)h(of)g(the)g(string)630 -883 y(matc)m(hed)31 b(the)f(pattern.)41 b(The)30 b(elemen)m(t)i(of)e -Ft(BASH_REMATCH)d Fu(with)j(index)g(0)g(con)m(tains)i(the)630 -993 y(p)s(ortion)20 b(of)h(the)g(string)f(matc)m(hing)i(the)f(en)m -(tire)g(regular)g(expression.)37 b(Substrings)19 b(matc)m(hed)630 -1103 y(b)m(y)30 b(paren)m(thesized)g(sub)s(expressions)e(within)i(the)g -(regular)g(expression)g(are)g(sa)m(v)m(ed)h(in)f(the)630 -1212 y(remaining)j Ft(BASH_REMATCH)c Fu(indices.)49 b(The)32 -b(elemen)m(t)i(of)f Ft(BASH_REMATCH)d Fu(with)i(index)g -Fr(n)630 1322 y Fu(is)e(the)h(p)s(ortion)f(of)g(the)h(string)f(matc)m -(hing)i(the)e Fr(n)p Fu(th)g(paren)m(thesized)h(sub)s(expression.)630 -1468 y(F)-8 b(or)34 b(example,)h(the)e(follo)m(wing)i(will)f(matc)m(h)g -(a)g(line)f(\(stored)h(in)f(the)h(shell)f(v)-5 b(ariable)34 -b Fr(line)5 b Fu(\))630 1577 y(if)42 b(there)h(is)g(a)f(sequence)h(of)g -(c)m(haracters)h(an)m(ywhere)e(in)g(the)h(v)-5 b(alue)43 -b(consisting)g(of)g(an)m(y)630 1687 y(n)m(um)m(b)s(er,)30 -b(including)h(zero,)h(of)f(c)m(haracters)i(in)e(the)g -Ft(space)f Fu(c)m(haracter)i(class,)h(zero)f(or)f(one)630 -1797 y(instances)g(of)f(`)p Ft(a)p Fu(',)h(then)f(a)h(`)p -Ft(b)p Fu(':)870 1943 y Ft([[)47 b($line)g(=~)g([[:space:]]*\(a\)?b)c -(]])630 2089 y Fu(That)24 b(means)g(v)-5 b(alues)24 b(lik)m(e)h(`)p -Ft(aab)p Fu(')e(and)h(`)30 b Ft(aaaaaab)p Fu(')22 b(will)i(matc)m(h,)j -(as)d(will)g(a)g(line)g(con)m(taining)630 2198 y(a)31 -b(`)p Ft(b)p Fu(')f(an)m(ywhere)h(in)f(its)g(v)-5 b(alue.)630 -2345 y(Storing)31 b(the)g(regular)g(expression)f(in)h(a)g(shell)g(v)-5 -b(ariable)31 b(is)g(often)g(a)g(useful)f(w)m(a)m(y)i(to)f(a)m(v)m(oid) -630 2454 y(problems)f(with)g(quoting)h(c)m(haracters)i(that)e(are)g(sp) -s(ecial)g(to)h(the)f(shell.)41 b(It)31 b(is)g(sometimes)630 -2564 y(di\016cult)24 b(to)h(sp)s(ecify)f(a)h(regular)g(expression)f -(literally)i(without)f(using)e(quotes,)k(or)d(to)h(k)m(eep)630 -2673 y(trac)m(k)33 b(of)g(the)f(quoting)g(used)g(b)m(y)g(regular)g -(expressions)g(while)g(pa)m(ying)h(atten)m(tion)h(to)f(the)630 -2783 y(shell's)25 b(quote)g(remo)m(v)-5 b(al.)40 b(Using)25 -b(a)g(shell)g(v)-5 b(ariable)26 b(to)f(store)g(the)g(pattern)g -(decreases)g(these)630 2892 y(problems.)40 b(F)-8 b(or)31 -b(example,)g(the)g(follo)m(wing)h(is)e(equiv)-5 b(alen)m(t)32 -b(to)f(the)g(ab)s(o)m(v)m(e:)870 3039 y Ft(pattern='[[:space:]]*\(a\))o -(?b')870 3148 y([[)47 b($line)g(=~)g($pattern)e(]])630 -3294 y Fu(If)28 b(y)m(ou)h(w)m(an)m(t)g(to)g(matc)m(h)h(a)e(c)m -(haracter)j(that's)e(sp)s(ecial)g(to)g(the)g(regular)f(expression)g -(gram-)630 3404 y(mar,)g(it)g(has)g(to)g(b)s(e)f(quoted)h(to)g(remo)m -(v)m(e)h(its)f(sp)s(ecial)g(meaning.)40 b(This)27 b(means)g(that)h(in)g -(the)630 3513 y(pattern)e(`)p Ft(xxx.txt)p Fu(',)g(the)h(`)p -Ft(.)p Fu(')f(matc)m(hes)i(an)m(y)e(c)m(haracter)i(in)e(the)h(string)f -(\(its)h(usual)f(regular)630 3623 y(expression)g(meaning\),)i(but)e(in) -g(the)h(pattern)f(`)p Ft("xxx.txt")p Fu(')f(it)i(can)g(only)f(matc)m(h) -i(a)e(literal)630 3733 y(`)p Ft(.)p Fu('.)56 b(Shell)35 -b(programmers)f(should)h(tak)m(e)i(sp)s(ecial)e(care)i(with)e(bac)m -(kslashes,)i(since)f(bac)m(k-)630 3842 y(slashes)27 b(are)g(used)f(b)s -(oth)g(b)m(y)h(the)f(shell)h(and)f(regular)h(expressions)g(to)g(remo)m -(v)m(e)h(the)f(sp)s(ecial)630 3952 y(meaning)h(from)f(the)h(follo)m -(wing)i(c)m(haracter.)41 b(The)27 b(follo)m(wing)j(t)m(w)m(o)f(sets)f -(of)g(commands)g(are)630 4061 y Fl(not)40 b Fu(equiv)-5 -b(alen)m(t:)870 4208 y Ft(pattern='\\.')870 4427 y([[)47 -b(.)h(=~)f($pattern)e(]])870 4536 y([[)i(.)h(=~)f(\\.)g(]])870 -4756 y([[)g(.)h(=~)f("$pattern")e(]])870 4865 y([[)i(.)h(=~)f('\\.')f -(]])630 5011 y Fu(The)28 b(\014rst)h(t)m(w)m(o)h(matc)m(hes)g(will)f -(succeed,)h(but)f(the)g(second)g(t)m(w)m(o)h(will)f(not,)h(b)s(ecause)f -(in)g(the)630 5121 y(second)39 b(t)m(w)m(o)i(the)e(bac)m(kslash)h(will) -f(b)s(e)g(part)g(of)g(the)h(pattern)f(to)h(b)s(e)e(matc)m(hed.)68 -b(In)39 b(the)630 5230 y(\014rst)31 b(t)m(w)m(o)h(examples,)h(the)e -(bac)m(kslash)h(remo)m(v)m(es)h(the)f(sp)s(ecial)g(meaning)f(from)g(`)p -Ft(.)p Fu(',)h(so)g(the)630 5340 y(literal)f(`)p Ft(.)p -Fu(')e(matc)m(hes.)42 b(If)28 b(the)i(string)f(in)g(the)g(\014rst)g -(examples)g(w)m(ere)h(an)m(ything)g(other)f(than)p eop -end +y(The)32 b(list)i(of)f(w)m(ords)f(follo)m(wing)j Ft(in)d +Fu(is)h(expanded,)g(generating)h(a)f(list)h(of)f(items,)h(and)f(the)630 +408 y(set)41 b(of)f(expanded)f(w)m(ords)g(is)i(prin)m(ted)e(on)h(the)g +(standard)f(error)h(output)g(stream,)j(eac)m(h)630 518 +y(preceded)31 b(b)m(y)g(a)g(n)m(um)m(b)s(er.)42 b(If)31 +b(the)g(`)p Ft(in)f Fj(words)p Fu(')g(is)i(omitted,)g(the)g(p)s +(ositional)g(parameters)630 628 y(are)k(prin)m(ted,)h(as)e(if)h(`)p +Ft(in)30 b("$@")p Fu(')k(had)h(b)s(een)g(sp)s(eci\014ed.)56 +b Ft(select)33 b Fu(then)j(displa)m(ys)f(the)h Ft(PS3)630 +737 y Fu(prompt)42 b(and)h(reads)f(a)i(line)f(from)g(the)g(standard)f +(input.)78 b(If)42 b(the)i(line)f(consists)g(of)h(a)630 +847 y(n)m(um)m(b)s(er)34 b(corresp)s(onding)h(to)h(one)g(of)g(the)g +(displa)m(y)m(ed)g(w)m(ords,)h(then)e(the)h(v)-5 b(alue)36 +b(of)g Fr(name)630 956 y Fu(is)f(set)g(to)h(that)f(w)m(ord.)54 +b(If)34 b(the)h(line)g(is)g(empt)m(y)-8 b(,)37 b(the)e(w)m(ords)f(and)g +(prompt)g(are)h(displa)m(y)m(ed)630 1066 y(again.)40 +b(If)26 b Ft(EOF)f Fu(is)g(read,)i(the)f Ft(select)f +Fu(command)g(completes)i(and)f(returns)e(1.)40 b(An)m(y)26 +b(other)630 1176 y(v)-5 b(alue)30 b(read)f(causes)h Fr(name)k +Fu(to)c(b)s(e)f(set)g(to)h(n)m(ull.)41 b(The)28 b(line)i(read)f(is)g +(sa)m(v)m(ed)i(in)e(the)g(v)-5 b(ariable)630 1285 y Ft(REPLY)p +Fu(.)630 1420 y(The)42 b Fr(commands)j Fu(are)d(executed)h(after)g(eac) +m(h)g(selection)h(un)m(til)e(a)h Ft(break)d Fu(command)i(is)630 +1530 y(executed,)32 b(at)f(whic)m(h)f(p)s(oin)m(t)g(the)h +Ft(select)d Fu(command)i(completes.)630 1665 y(Here)39 +b(is)g(an)g(example)h(that)f(allo)m(ws)i(the)e(user)f(to)i(pic)m(k)f(a) +g(\014lename)h(from)e(the)h(curren)m(t)630 1774 y(directory)-8 +b(,)32 b(and)d(displa)m(ys)i(the)f(name)h(and)f(index)f(of)i(the)g +(\014le)f(selected.)870 1909 y Ft(select)46 b(fname)g(in)i(*;)870 +2019 y(do)870 2128 y(echo)f(you)g(picked)f($fname)g(\\\($REPLY\\\))870 +2238 y(break;)870 2347 y(done)150 2508 y(\(\(...)o(\)\))870 +2642 y(\(\()h Fj(expression)e Ft(\)\))630 2777 y Fu(The)33 +b(arithmetic)i Fr(expression)f Fu(is)f(ev)-5 b(aluated)35 +b(according)g(to)f(the)g(rules)f(describ)s(ed)g(b)s(elo)m(w)630 +2887 y(\(see)22 b(Section)f(6.5)h([Shell)f(Arithmetic],)j(page)d(98\).) +39 b(The)20 b Fr(expression)h Fu(undergo)s(es)f(the)h(same)630 +2996 y(expansions)35 b(as)h(if)f(it)h(w)m(ere)g(within)f(double)f +(quotes,)k(but)d(double)f(quote)i(c)m(haracters)h(in)630 +3106 y Fr(expression)29 b Fu(are)h(not)f(treated)h(sp)s(ecially)g(are)g +(remo)m(v)m(ed.)41 b(If)29 b(the)h(v)-5 b(alue)29 b(of)h(the)f +(expression)630 3216 y(is)h(non-zero,)i(the)e(return)f(status)i(is)g +(0;)g(otherwise)f(the)h(return)e(status)i(is)f(1.)150 +3376 y Ft([[...)o(]])870 3511 y([[)47 b Fj(expression)e +Ft(]])630 3646 y Fu(Return)25 b(a)h(status)f(of)h(0)g(or)g(1)g(dep)s +(ending)e(on)h(the)h(ev)-5 b(aluation)27 b(of)e(the)h(conditional)h +(expres-)630 3755 y(sion)j Fr(expression)p Fu(.)41 b(Expressions)29 +b(are)i(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s(elo)m +(w)h(in)630 3865 y(Section)37 b(6.4)g([Bash)f(Conditional)h +(Expressions],)g(page)g(96.)58 b(The)36 b(w)m(ords)f(b)s(et)m(w)m(een)i +(the)630 3974 y Ft([[)h Fu(and)g Ft(]])g Fu(do)g(not)h(undergo)f(w)m +(ord)g(splitting)h(and)f(\014lename)h(expansion.)65 b(The)38 +b(shell)630 4084 y(p)s(erforms)26 b(tilde)j(expansion,)f(parameter)g +(and)g(v)-5 b(ariable)28 b(expansion,)h(arithmetic)g(expan-)630 +4194 y(sion,)j(command)g(substitution,)g(pro)s(cess)g(substitution,)g +(and)f(quote)i(remo)m(v)-5 b(al)33 b(on)e(those)630 4303 +y(w)m(ords)k(\(the)h(expansions)g(that)g(w)m(ould)f(o)s(ccur)h(if)g +(the)f(w)m(ords)h(w)m(ere)g(enclosed)g(in)f(double)630 +4413 y(quotes\).)41 b(Conditional)28 b(op)s(erators)g(suc)m(h)f(as)i(`) +p Ft(-f)p Fu(')e(m)m(ust)h(b)s(e)f(unquoted)g(to)h(b)s(e)g(recognized) +630 4522 y(as)j(primaries.)630 4657 y(When)k(used)f(with)h +Ft([[)p Fu(,)h(the)f(`)p Ft(<)p Fu(')g(and)g(`)p Ft(>)p +Fu(')g(op)s(erators)g(sort)g(lexicographically)j(using)d(the)630 +4767 y(curren)m(t)30 b(lo)s(cale.)630 4902 y(When)22 +b(the)h(`)p Ft(==)p Fu(')f(and)g(`)p Ft(!=)p Fu(')g(op)s(erators)h(are) +g(used,)g(the)g(string)f(to)i(the)e(righ)m(t)h(of)g(the)g(op)s(erator) +630 5011 y(is)31 b(considered)g(a)h(pattern)f(and)g(matc)m(hed)h +(according)g(to)g(the)g(rules)f(describ)s(ed)f(b)s(elo)m(w)h(in)630 +5121 y(Section)d(3.5.8.1)h([P)m(attern)f(Matc)m(hing],)h(page)f(36,)g +(as)f(if)g(the)g Ft(extglob)d Fu(shell)j(option)g(w)m(ere)630 +5230 y(enabled.)46 b(The)31 b(`)p Ft(=)p Fu(')h(op)s(erator)h(is)f +(iden)m(tical)h(to)g(`)p Ft(==)p Fu('.)46 b(If)31 b(the)h +Ft(nocasematch)d Fu(shell)j(option)630 5340 y(\(see)42 +b(the)f(description)g(of)h Ft(shopt)d Fu(in)i(Section)h(4.3.2)h([The)e +(Shopt)f(Builtin],)45 b(page)d(71\))p eop end %%Page: 15 21 TeXDict begin 15 20 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(15)630 299 -y(`)p Ft(.)p Fu(',)29 b(sa)m(y)g(`)p Ft(a)p Fu(',)g(the)f(pattern)g(w)m -(ould)g(not)h(matc)m(h,)h(b)s(ecause)e(the)g(quoted)g(`)p -Ft(.)p Fu(')h(in)e(the)i(pattern)630 408 y(loses)i(its)g(sp)s(ecial)g -(meaning)f(of)h(matc)m(hing)g(an)m(y)g(single)g(c)m(haracter.)630 -542 y(Expressions)23 b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h +y(is)40 b(enabled,)i(the)e(matc)m(h)h(is)e(p)s(erformed)g(without)g +(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630 408 +y(c)m(haracters.)h(The)28 b(return)e(v)-5 b(alue)28 b(is)g(0)g(if)g +(the)g(string)g(matc)m(hes)h(\(`)p Ft(==)p Fu('\))f(or)g(do)s(es)f(not) +h(matc)m(h)630 518 y(\(`)p Ft(!=)p Fu('\))j(the)g(pattern,)f(and)g(1)h +(otherwise.)630 645 y(If)20 b(y)m(ou)h(quote)g(an)m(y)f(part)h(of)f +(the)h(pattern,)h(using)e(an)m(y)h(of)f(the)h(shell's)g(quoting)g(mec)m +(hanisms,)630 754 y(the)43 b(quoted)g(p)s(ortion)g(is)g(matc)m(hed)h +(literally)-8 b(.)81 b(This)42 b(means)h(ev)m(ery)h(c)m(haracter)h(in)e +(the)630 864 y(quoted)34 b(p)s(ortion)f(matc)m(hes)i(itself,)h(instead) +e(of)f(ha)m(ving)i(an)m(y)f(sp)s(ecial)g(pattern)g(matc)m(hing)630 +973 y(meaning.)630 1100 y(An)f(additional)i(binary)e(op)s(erator,)i(`)p +Ft(=~)p Fu(',)g(is)f(a)m(v)-5 b(ailable,)37 b(with)c(the)h(same)g +(precedence)h(as)630 1209 y(`)p Ft(==)p Fu(')40 b(and)g(`)p +Ft(!=)p Fu('.)70 b(When)40 b(y)m(ou)g(use)g(`)p Ft(=~)p +Fu(',)j(the)d(string)h(to)f(the)h(righ)m(t)g(of)f(the)g(op)s(erator)h +(is)630 1319 y(considered)36 b(a)g Fm(posix)f Fu(extended)g(regular)h +(expression)g(pattern)f(and)g(matc)m(hed)i(accord-)630 +1428 y(ingly)k(\(using)f(the)h Fm(posix)f Ft(regcomp)f +Fu(and)h Ft(regexec)e Fu(in)m(terfaces)k(usually)f(describ)s(ed)e(in) +630 1538 y Fl(r)-5 b(e)g(gex)11 b Fu(\(3\)\).)56 b(The)34 +b(return)g(v)-5 b(alue)35 b(is)g(0)g(if)g(the)g(string)g(matc)m(hes)h +(the)f(pattern,)h(and)e(1)i(if)e(it)630 1648 y(do)s(es)39 +b(not.)66 b(If)38 b(the)h(regular)g(expression)g(is)g(syn)m(tactically) +i(incorrect,)i(the)c(conditional)630 1757 y(expression)e(returns)e(2.) +61 b(If)37 b(the)g Ft(nocasematch)d Fu(shell)j(option)h(\(see)g(the)f +(description)g(of)630 1867 y Ft(shopt)d Fu(in)h(Section)h(4.3.2)h([The) +e(Shopt)f(Builtin],)k(page)e(71\))g(is)g(enabled,)g(the)g(matc)m(h)g +(is)630 1976 y(p)s(erformed)29 b(without)h(regard)h(to)g(the)f(case)i +(of)e(alphab)s(etic)h(c)m(haracters.)630 2103 y(Y)-8 +b(ou)23 b(can)g(quote)g(an)m(y)g(part)g(of)g(the)g(pattern)f(to)i +(force)f(the)g(quoted)g(p)s(ortion)f(to)h(b)s(e)f(matc)m(hed)630 +2212 y(literally)33 b(instead)f(of)g(as)f(a)h(regular)g(expression)f +(\(see)h(ab)s(o)m(v)m(e\).)46 b(If)31 b(the)h(pattern)f(is)h(stored)630 +2322 y(in)h(a)i(shell)f(v)-5 b(ariable,)35 b(quoting)f(the)g(v)-5 +b(ariable)35 b(expansion)e(forces)i(the)f(en)m(tire)g(pattern)g(to)630 +2432 y(b)s(e)c(matc)m(hed)h(literally)-8 b(.)630 2558 +y(The)25 b(pattern)h(will)g(matc)m(h)h(if)e(it)i(matc)m(hes)f(an)m(y)h +(part)e(of)h(the)g(string.)39 b(If)25 b(y)m(ou)h(w)m(an)m(t)h(to)f +(force)630 2668 y(the)j(pattern)h(to)g(matc)m(h)g(the)f(en)m(tire)h +(string,)g(anc)m(hor)g(the)f(pattern)h(using)e(the)i(`)p +Ft(^)p Fu(')f(and)g(`)p Ft($)p Fu(')630 2777 y(regular)i(expression)f +(op)s(erators.)630 2904 y(F)-8 b(or)31 b(example,)g(the)f(follo)m(wing) +h(will)f(matc)m(h)h(a)g(line)f(\(stored)g(in)g(the)g(shell)g(v)-5 +b(ariable)31 b Ft(line)p Fu(\))630 3013 y(if)42 b(there)h(is)g(a)f +(sequence)h(of)g(c)m(haracters)h(an)m(ywhere)e(in)g(the)h(v)-5 +b(alue)43 b(consisting)g(of)g(an)m(y)630 3123 y(n)m(um)m(b)s(er,)26 +b(including)g(zero,)i(of)f(c)m(haracters)g(in)f(the)h +Ft(space)e Fu(c)m(haracter)j(class,)g(immediately)630 +3232 y(follo)m(w)m(ed)k(b)m(y)e(zero)h(or)g(one)f(instances)h(of)g(`)p +Ft(a)p Fu(',)g(then)f(a)h(`)p Ft(b)p Fu(':)870 3359 y +Ft([[)47 b($line)g(=~)g([[:space:]]*\(a\)?b)c(]])630 +3485 y Fu(That)f(means)g(v)-5 b(alues)42 b(for)g Ft(line)f +Fu(lik)m(e)i(`)p Ft(aab)p Fu(',)i(`)31 b Ft(aaaaaab)p +Fu(',)43 b(`)p Ft(xaby)p Fu(',)i(and)c(`)31 b Ft(ab)p +Fu(')42 b(will)g(all)630 3595 y(matc)m(h,)32 b(as)e(will)h(a)g(line)f +(con)m(taining)i(a)f(`)p Ft(b)p Fu(')g(an)m(ywhere)f(in)g(its)h(v)-5 +b(alue.)630 3721 y(If)28 b(y)m(ou)h(w)m(an)m(t)g(to)g(matc)m(h)h(a)e(c) +m(haracter)j(that's)e(sp)s(ecial)g(to)g(the)g(regular)f(expression)g +(gram-)630 3831 y(mar)g(\(`)p Ft(^$|[]\(\)\\.*+?)p Fu('\),)e(it)j(has)f +(to)h(b)s(e)e(quoted)h(to)h(remo)m(v)m(e)g(its)g(sp)s(ecial)g(meaning.) +40 b(This)630 3941 y(means)24 b(that)h(in)f(the)h(pattern)f(`)p +Ft(xxx.txt)p Fu(',)g(the)h(`)p Ft(.)p Fu(')f(matc)m(hes)i(an)m(y)f(c)m +(haracter)g(in)f(the)h(string)630 4050 y(\(its)34 b(usual)f(regular)g +(expression)g(meaning\),)i(but)e(in)g(the)g(pattern)h(`)p +Ft("xxx.txt")p Fu(',)e(it)i(can)630 4160 y(only)c(matc)m(h)i(a)f +(literal)g(`)p Ft(.)p Fu('.)630 4286 y(Lik)m(ewise,)i(if)f(y)m(ou)g(w)m +(an)m(t)g(to)h(include)e(a)h(c)m(haracter)h(in)e(y)m(our)h(pattern)g +(that)g(has)f(a)h(sp)s(ecial)630 4396 y(meaning)21 b(to)h(the)g +(regular)f(expression)g(grammar,)i(y)m(ou)f(m)m(ust)f(mak)m(e)h(sure)e +(it's)i(not)g(quoted.)630 4505 y(If)44 b(y)m(ou)g(w)m(an)m(t)h(to)g +(anc)m(hor)f(a)h(pattern)f(at)h(the)f(b)s(eginning)f(or)h(end)g(of)g +(the)g(string,)k(for)630 4615 y(instance,)e(y)m(ou)d(cannot)g(quote)g +(the)f(`)p Ft(^)p Fu(')h(or)f(`)p Ft($)p Fu(')g(c)m(haracters)i(using)e +(an)m(y)g(form)g(of)h(shell)630 4725 y(quoting.)630 4851 +y(If)28 b(y)m(ou)h(w)m(an)m(t)g(to)g(matc)m(h)h(`)p Ft(initial)e +(string)p Fu(')f(at)i(the)g(start)g(of)g(a)g(line,)g(the)g(follo)m +(wing)h(will)630 4961 y(w)m(ork:)870 5087 y Ft([[)47 +b($line)g(=~)g(^"initial)e(string")h(]])630 5214 y Fu(but)30 +b(this)g(will)h(not:)870 5340 y Ft([[)47 b($line)g(=~)g("^initial)e +(string")h(]])p eop end +%%Page: 16 22 +TeXDict begin 16 21 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(16)630 299 +y(b)s(ecause)42 b(in)h(the)f(second)h(example)g(the)g(`)p +Ft(^)p Fu(')f(is)h(quoted)g(and)f(do)s(esn't)g(ha)m(v)m(e)i(its)e +(usual)630 408 y(sp)s(ecial)31 b(meaning.)630 540 y(It)h(is)f +(sometimes)h(di\016cult)g(to)g(sp)s(ecify)f(a)h(regular)g(expression)f +(prop)s(erly)f(without)h(using)630 650 y(quotes,)c(or)f(to)g(k)m(eep)h +(trac)m(k)g(of)e(the)h(quoting)g(used)f(b)m(y)h(regular)f(expressions)h +(while)f(pa)m(ying)630 759 y(atten)m(tion)40 b(to)f(shell)f(quoting)h +(and)e(the)h(shell's)h(quote)f(remo)m(v)-5 b(al.)65 b(Storing)38 +b(the)h(regular)630 869 y(expression)45 b(in)g(a)g(shell)h(v)-5 +b(ariable)46 b(is)f(often)g(a)h(useful)e(w)m(a)m(y)i(to)g(a)m(v)m(oid)h +(problems)d(with)630 978 y(quoting)35 b(c)m(haracters)g(that)g(are)g +(sp)s(ecial)g(to)g(the)f(shell.)53 b(F)-8 b(or)35 b(example,)h(the)e +(follo)m(wing)i(is)630 1088 y(equiv)-5 b(alen)m(t)32 +b(to)f(the)f(pattern)h(used)f(ab)s(o)m(v)m(e:)870 1219 +y Ft(pattern='[[:space:]]*\(a\))o(?b')870 1329 y([[)47 +b($line)g(=~)g($pattern)e(]])630 1461 y Fu(Shell)29 b(programmers)f +(should)f(tak)m(e)k(sp)s(ecial)e(care)g(with)g(bac)m(kslashes,)h(since) +f(bac)m(kslashes)630 1570 y(are)22 b(used)f(b)m(y)h(b)s(oth)f(the)h +(shell)g(and)f(regular)h(expressions)f(to)i(remo)m(v)m(e)g(the)f(sp)s +(ecial)h(meaning)630 1680 y(from)j(the)g(follo)m(wing)i(c)m(haracter.) +41 b(This)25 b(means)h(that)h(after)g(the)f(shell's)g(w)m(ord)g +(expansions)630 1789 y(complete)i(\(see)f(Section)g(3.5)h([Shell)e +(Expansions],)h(page)g(24\),)i(an)m(y)d(bac)m(kslashes)i(remain-)630 +1899 y(ing)44 b(in)f(parts)g(of)h(the)g(pattern)f(that)h(w)m(ere)g +(originally)h(not)f(quoted)g(can)g(remo)m(v)m(e)h(the)630 +2008 y(sp)s(ecial)29 b(meaning)g(of)g(pattern)f(c)m(haracters.)42 +b(If)28 b(an)m(y)h(part)g(of)f(the)h(pattern)g(is)f(quoted,)i(the)630 +2118 y(shell)h(do)s(es)f(its)g(b)s(est)g(to)i(ensure)d(that)i(the)g +(regular)f(expression)h(treats)g(those)g(remaining)630 +2228 y(bac)m(kslashes)g(as)g(literal,)h(if)e(they)h(app)s(eared)f(in)g +(a)g(quoted)h(p)s(ortion.)630 2359 y(The)f(follo)m(wing)i(t)m(w)m(o)f +(sets)g(of)g(commands)f(are)h Fl(not)39 b Fu(equiv)-5 +b(alen)m(t:)870 2491 y Ft(pattern='\\.')870 2710 y([[)47 +b(.)h(=~)f($pattern)e(]])870 2819 y([[)i(.)h(=~)f(\\.)g(]])870 +3039 y([[)g(.)h(=~)f("$pattern")e(]])870 3148 y([[)i(.)h(=~)f('\\.')f +(]])630 3280 y Fu(The)28 b(\014rst)h(t)m(w)m(o)h(matc)m(hes)g(will)f +(succeed,)h(but)f(the)g(second)g(t)m(w)m(o)h(will)f(not,)h(b)s(ecause)f +(in)g(the)630 3389 y(second)e(t)m(w)m(o)i(the)e(bac)m(kslash)h(will)f +(b)s(e)g(part)g(of)g(the)g(pattern)g(to)h(b)s(e)f(matc)m(hed.)40 +b(In)26 b(the)i(\014rst)630 3499 y(t)m(w)m(o)33 b(examples,)f(the)g +(pattern)f(passed)g(to)h(the)g(regular)f(expression)h(parser)e(is)i(`)p +Ft(\\.)p Fu('.)43 b(The)630 3608 y(bac)m(kslash)35 b(remo)m(v)m(es)g +(the)g(sp)s(ecial)f(meaning)h(from)e(`)p Ft(.)p Fu(',)j(so)e(the)h +(literal)g(`)p Ft(.)p Fu(')g(matc)m(hes.)53 b(In)630 +3718 y(the)35 b(second)h(t)m(w)m(o)g(examples,)h(the)f(pattern)f +(passed)g(to)h(the)f(regular)h(expression)f(parser)630 +3828 y(has)26 b(the)g(bac)m(kslash)g(quoted)g(\(e.g.,)j(`)p +Ft(\\\\\\.)p Fu('\),)e(whic)m(h)e(will)h(not)g(matc)m(h)h(the)f +(string,)h(since)f(it)630 3937 y(do)s(es)31 b(not)g(con)m(tain)h(a)g +(bac)m(kslash.)43 b(If)31 b(the)g(string)g(in)g(the)g(\014rst)f +(examples)i(w)m(ere)g(an)m(ything)630 4047 y(other)f(than)f(`)p +Ft(.)p Fu(',)h(sa)m(y)g(`)p Ft(a)p Fu(',)g(the)f(pattern)h(w)m(ould)f +(not)h(matc)m(h,)g(b)s(ecause)g(the)f(quoted)h(`)p Ft(.)p +Fu(')f(in)630 4156 y(the)h(pattern)f(loses)h(its)g(sp)s(ecial)g +(meaning)g(of)f(matc)m(hing)i(an)m(y)e(single)h(c)m(haracter.)630 +4288 y(Brac)m(k)m(et)d(expressions)d(in)g(regular)h(expressions)f(can)h +(b)s(e)e(sources)i(of)f(errors)g(as)h(w)m(ell,)i(since)630 +4398 y(c)m(haracters)43 b(that)f(are)g(normally)g(sp)s(ecial)g(in)f +(regular)h(expressions)f(lose)i(their)e(sp)s(ecial)630 +4507 y(meanings)24 b(b)s(et)m(w)m(een)g(brac)m(k)m(ets.)40 +b(Ho)m(w)m(ev)m(er,)27 b(y)m(ou)e(can)f(use)f(brac)m(k)m(et)i +(expressions)f(to)g(matc)m(h)630 4617 y(sp)s(ecial)31 +b(pattern)g(c)m(haracters)h(without)f(quoting)g(them,)f(so)h(they)g +(are)g(sometimes)h(useful)630 4726 y(for)e(this)g(purp)s(ose.)630 +4858 y(Though)f(it)i(migh)m(t)g(seem)f(lik)m(e)i(a)e(strange)h(w)m(a)m +(y)g(to)g(write)f(it,)h(the)g(follo)m(wing)g(pattern)g(will)630 +4967 y(matc)m(h)g(a)g(`)p Ft(.)p Fu(')g(in)f(the)g(string:)870 +5099 y Ft([[)47 b(.)h(=~)f([.])g(]])630 5230 y Fu(The)30 +b(shell)g(p)s(erforms)f(an)m(y)i(w)m(ord)f(expansions)g(b)s(efore)g +(passing)g(the)g(pattern)h(to)g(the)f(reg-)630 5340 y(ular)44 +b(expression)g(functions,)k(so)d(y)m(ou)f(can)h(assume)f(that)h(the)g +(shell's)g(quoting)f(tak)m(es)p eop end +%%Page: 17 23 +TeXDict begin 17 22 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)630 299 +y(precedence.)63 b(As)37 b(noted)h(ab)s(o)m(v)m(e,)j(the)d(regular)f +(expression)h(parser)f(will)h(in)m(terpret)g(an)m(y)630 +408 y(unquoted)30 b(bac)m(kslashes)h(remaining)g(in)g(the)g(pattern)f +(after)i(shell)e(expansion)h(according)630 518 y(to)40 +b(its)g(o)m(wn)f(rules.)68 b(The)39 b(in)m(ten)m(tion)i(is)e(to)h(a)m +(v)m(oid)h(making)f(shell)f(programmers)g(quote)630 628 +y(things)31 b(t)m(wice)h(as)f(m)m(uc)m(h)f(as)h(p)s(ossible,)g(so)g +(shell)g(quoting)g(should)f(b)s(e)g(su\016cien)m(t)h(to)g(quote)630 +737 y(sp)s(ecial)g(pattern)f(c)m(haracters)i(where)e(that's)h +(necessary)-8 b(.)630 867 y(The)39 b(arra)m(y)h(v)-5 +b(ariable)40 b Ft(BASH_REMATCH)c Fu(records)j(whic)m(h)g(parts)g(of)g +(the)h(string)f(matc)m(hed)630 977 y(the)34 b(pattern.)51 +b(The)33 b(elemen)m(t)i(of)f Ft(BASH_REMATCH)d Fu(with)i(index)g(0)h +(con)m(tains)h(the)f(p)s(ortion)630 1086 y(of)39 b(the)g(string)g(matc) +m(hing)h(the)g(en)m(tire)f(regular)h(expression.)66 b(Substrings)37 +b(matc)m(hed)j(b)m(y)630 1196 y(paren)m(thesized)k(sub)s(expressions)e +(within)i(the)g(regular)g(expression)g(are)g(sa)m(v)m(ed)h(in)f(the)630 +1306 y(remaining)33 b Ft(BASH_REMATCH)c Fu(indices.)49 +b(The)32 b(elemen)m(t)i(of)f Ft(BASH_REMATCH)d Fu(with)i(index)g +Fr(n)630 1415 y Fu(is)e(the)h(p)s(ortion)f(of)g(the)h(string)f(matc)m +(hing)i(the)e Fr(n)p Fu(th)g(paren)m(thesized)h(sub)s(expression.)630 +1545 y(Bash)26 b(sets)h Ft(BASH_REMATCH)c Fu(in)j(the)g(global)i(scop)s +(e;)f(declaring)g(it)g(as)g(a)f(lo)s(cal)i(v)-5 b(ariable)27 +b(will)630 1655 y(lead)k(to)g(unexp)s(ected)f(results.)630 +1785 y(Expressions)23 b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h (follo)m(wing)h(op)s(erators,)g(listed)f(in)f(decreasing)630 -651 y(order)30 b(of)g(precedence:)630 808 y Ft(\()g Fj(expression)e -Ft(\))1110 918 y Fu(Returns)i(the)h(v)-5 b(alue)31 b(of)g -Fr(expression)p Fu(.)42 b(This)30 b(ma)m(y)i(b)s(e)e(used)g(to)i(o)m(v) -m(erride)g(the)1110 1027 y(normal)e(precedence)h(of)g(op)s(erators.)630 -1184 y Ft(!)f Fj(expression)1110 1293 y Fu(T)-8 b(rue)30 -b(if)g Fr(expression)g Fu(is)h(false.)630 1450 y Fj(expression1)c -Ft(&&)j Fj(expression2)1110 1560 y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g -Fr(expression1)38 b Fu(and)29 b Fr(expression2)38 b Fu(are)31 -b(true.)630 1716 y Fj(expression1)c Ft(||)j Fj(expression2)1110 -1826 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expression1)38 +1895 y(order)30 b(of)g(precedence:)630 2045 y Ft(\()g +Fj(expression)e Ft(\))1110 2155 y Fu(Returns)i(the)h(v)-5 +b(alue)31 b(of)g Fr(expression)p Fu(.)42 b(This)30 b(ma)m(y)i(b)s(e)e +(used)g(to)i(o)m(v)m(erride)g(the)1110 2264 y(normal)e(precedence)h(of) +g(op)s(erators.)630 2415 y Ft(!)f Fj(expression)1110 +2524 y Fu(T)-8 b(rue)30 b(if)g Fr(expression)g Fu(is)h(false.)630 +2675 y Fj(expression1)c Ft(&&)j Fj(expression2)1110 2784 +y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g Fr(expression1)38 +b Fu(and)29 b Fr(expression2)38 b Fu(are)31 b(true.)630 +2935 y Fj(expression1)c Ft(||)j Fj(expression2)1110 3045 +y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expression1)38 b Fu(or)30 b Fr(expression2)38 b Fu(is)30 b(true.)630 -1983 y(The)24 b Ft(&&)h Fu(and)f Ft(||)g Fu(op)s(erators)h(do)g(not)g +3195 y(The)24 b Ft(&&)h Fu(and)f Ft(||)g Fu(op)s(erators)h(do)g(not)g (ev)-5 b(aluate)27 b Fr(expression2)32 b Fu(if)25 b(the)g(v)-5 -b(alue)25 b(of)g Fr(expression1)630 2092 y Fu(is)30 b(su\016cien)m(t)h +b(alue)25 b(of)g Fr(expression1)630 3305 y Fu(is)30 b(su\016cien)m(t)h (to)g(determine)g(the)f(return)g(v)-5 b(alue)31 b(of)f(the)h(en)m(tire) -g(conditional)h(expression.)150 2289 y Fk(3.2.5.3)63 -b(Grouping)43 b(Commands)150 2436 y Fu(Bash)30 b(pro)m(vides)g(t)m(w)m +g(conditional)h(expression.)150 3495 y Fk(3.2.5.3)63 +b(Grouping)43 b(Commands)150 3642 y Fu(Bash)30 b(pro)m(vides)g(t)m(w)m (o)h(w)m(a)m(ys)f(to)h(group)e(a)h(list)g(of)g(commands)f(to)i(b)s(e)e -(executed)h(as)g(a)h(unit.)40 b(When)29 b(com-)150 2545 +(executed)h(as)g(a)h(unit.)40 b(When)29 b(com-)150 3752 y(mands)h(are)i(group)s(ed,)f(redirections)h(ma)m(y)g(b)s(e)e(applied)i (to)g(the)f(en)m(tire)h(command)g(list.)44 b(F)-8 b(or)32 -b(example,)150 2655 y(the)f(output)f(of)g(all)h(the)g(commands)f(in)g +b(example,)150 3861 y(the)f(output)f(of)g(all)h(the)g(commands)f(in)g (the)h(list)g(ma)m(y)g(b)s(e)e(redirected)i(to)g(a)g(single)g(stream.) -150 2812 y Ft(\(\))870 2945 y(\()47 b Fj(list)g Ft(\))630 -3078 y Fu(Placing)30 b(a)f(list)g(of)g(commands)f(b)s(et)m(w)m(een)i -(paren)m(theses)e(causes)i(a)f(subshell)e(en)m(vironmen)m(t)630 -3188 y(to)k(b)s(e)e(created)j(\(see)f(Section)g(3.7.3)h([Command)d -(Execution)i(En)m(vironmen)m(t],)g(page)f(40\),)630 3297 -y(and)d(eac)m(h)h(of)g(the)f(commands)g(in)g Fr(list)j -Fu(to)f(b)s(e)d(executed)j(in)e(that)h(subshell.)38 b(Since)28 -b(the)f Fr(list)630 3407 y Fu(is)i(executed)g(in)f(a)h(subshell,)g(v)-5 -b(ariable)29 b(assignmen)m(ts)g(do)g(not)g(remain)f(in)g(e\013ect)j -(after)e(the)630 3516 y(subshell)g(completes.)150 3673 -y Ft({})870 3806 y({)47 b Fj(list)p Ft(;)g(})630 3939 -y Fu(Placing)30 b(a)g(list)g(of)g(commands)f(b)s(et)m(w)m(een)h(curly)f +150 4012 y Ft(\(\))870 4142 y(\()47 b Fj(list)g Ft(\))630 +4272 y Fu(Placing)42 b(a)g(list)g(of)f(commands)g(b)s(et)m(w)m(een)h +(paren)m(theses)f(forces)h(the)f(shell)h(to)g(create)h(a)630 +4381 y(subshell)33 b(\(see)h(Section)g(3.7.3)i([Command)c(Execution)j +(En)m(vironmen)m(t],)g(page)f(43\),)i(and)630 4491 y(eac)m(h)g(of)f +(the)h(commands)e(in)h Fr(list)i Fu(is)e(executed)h(in)f(that)h +(subshell)e(en)m(vironmen)m(t.)55 b(Since)630 4601 y(the)33 +b Fr(list)j Fu(is)e(executed)g(in)f(a)g(subshell,)h(v)-5 +b(ariable)34 b(assignmen)m(ts)g(do)f(not)g(remain)g(in)g(e\013ect)630 +4710 y(after)e(the)f(subshell)g(completes.)150 4861 y +Ft({})870 4991 y({)47 b Fj(list)p Ft(;)g(})630 5121 y +Fu(Placing)30 b(a)g(list)g(of)g(commands)f(b)s(et)m(w)m(een)h(curly)f (braces)g(causes)h(the)f(list)h(to)g(b)s(e)f(executed)630 -4049 y(in)d(the)h(curren)m(t)g(shell)f(con)m(text.)42 +5230 y(in)d(the)h(curren)m(t)g(shell)f(con)m(text.)42 b(No)27 b(subshell)f(is)g(created.)41 b(The)26 b(semicolon)i(\(or)f -(newline\))630 4159 y(follo)m(wing)32 b Fr(list)h Fu(is)d(required.)275 -4315 y(In)44 b(addition)h(to)h(the)f(creation)i(of)e(a)g(subshell,)j -(there)e(is)f(a)g(subtle)g(di\013erence)h(b)s(et)m(w)m(een)f(these)150 -4425 y(t)m(w)m(o)c(constructs)e(due)g(to)g(historical)i(reasons.)67 -b(The)39 b(braces)g(are)h Ft(reserved)28 b(words)p Fu(,)40 -b(so)g(they)f(m)m(ust)150 4535 y(b)s(e)d(separated)h(from)f(the)g -Fr(list)j Fu(b)m(y)e Ft(blank)p Fu(s)e(or)h(other)h(shell)f(metac)m -(haracters.)62 b(The)36 b(paren)m(theses)h(are)150 4644 -y Ft(operators)p Fu(,)23 b(and)h(are)g(recognized)i(as)e(separate)i -(tok)m(ens)f(b)m(y)f(the)g(shell)h(ev)m(en)g(if)f(they)g(are)h(not)f -(separated)150 4754 y(from)30 b(the)g Fr(list)j Fu(b)m(y)e(whitespace.) -275 4887 y(The)e(exit)j(status)e(of)h(b)s(oth)f(of)g(these)h -(constructs)g(is)f(the)h(exit)g(status)f(of)h Fr(list)p -Fu(.)150 5083 y Fk(3.2.6)63 b(Copro)s(cesses)150 5230 -y Fu(A)37 b Ft(coprocess)c Fu(is)k(a)g(shell)f(command)h(preceded)f(b)m -(y)g(the)h Ft(coproc)d Fu(reserv)m(ed)j(w)m(ord.)59 b(A)36 -b(copro)s(cess)h(is)150 5340 y(executed)g(async)m(hronously)g(in)f(a)h -(subshell,)g(as)g(if)g(the)f(command)h(had)f(b)s(een)f(terminated)i -(with)g(the)p eop end -%%Page: 16 22 -TeXDict begin 16 21 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(16)150 299 -y(`)p Ft(&)p Fu(')34 b(con)m(trol)h(op)s(erator,)g(with)f(a)g(t)m(w)m +(newline\))630 5340 y(follo)m(wing)32 b Fr(list)h Fu(is)d(required.)p +eop end +%%Page: 18 24 +TeXDict begin 18 23 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)275 299 +y(In)44 b(addition)h(to)h(the)f(creation)i(of)e(a)g(subshell,)j(there)e +(is)f(a)g(subtle)g(di\013erence)h(b)s(et)m(w)m(een)f(these)150 +408 y(t)m(w)m(o)f(constructs)f(due)g(to)g(historical)i(reasons.)78 +b(The)42 b(braces)i(are)f(reserv)m(ed)g(w)m(ords,)j(so)d(they)g(m)m +(ust)150 518 y(b)s(e)36 b(separated)h(from)f(the)g Fr(list)j +Fu(b)m(y)e Ft(blank)p Fu(s)e(or)h(other)h(shell)f(metac)m(haracters.)62 +b(The)36 b(paren)m(theses)h(are)150 628 y(op)s(erators,)29 +b(and)e(are)i(recognized)g(as)g(separate)g(tok)m(ens)g(b)m(y)f(the)g +(shell)g(ev)m(en)h(if)f(they)h(are)f(not)g(separated)150 +737 y(from)i(the)g Fr(list)j Fu(b)m(y)e(whitespace.)275 +865 y(The)e(exit)j(status)e(of)h(b)s(oth)f(of)g(these)h(constructs)g +(is)f(the)h(exit)g(status)f(of)h Fr(list)p Fu(.)150 1050 +y Fk(3.2.6)63 b(Copro)s(cesses)150 1197 y Fu(A)37 b Ft(coprocess)c +Fu(is)k(a)g(shell)f(command)h(preceded)f(b)m(y)g(the)h +Ft(coproc)d Fu(reserv)m(ed)j(w)m(ord.)59 b(A)36 b(copro)s(cess)h(is)150 +1307 y(executed)g(async)m(hronously)g(in)f(a)h(subshell,)g(as)g(if)g +(the)f(command)h(had)f(b)s(een)f(terminated)i(with)g(the)150 +1416 y(`)p Ft(&)p Fu(')d(con)m(trol)h(op)s(erator,)g(with)f(a)g(t)m(w)m (o-w)m(a)m(y)i(pip)s(e)d(established)h(b)s(et)m(w)m(een)h(the)f -(executing)h(shell)f(and)f(the)150 408 y(copro)s(cess.)275 -550 y(The)c(format)i(for)f(a)h(copro)s(cess)g(is:)390 -691 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g -Ft([)p Fj(redirections)p Ft(])150 833 y Fu(This)39 b(creates)j(a)e -(copro)s(cess)h(named)f Fr(NAME)p Fu(.)70 b(If)40 b Fr(NAME)46 -b Fu(is)40 b(not)g(supplied,)i(the)e(default)h(name)f(is)150 -942 y Fr(COPR)m(OC)p Fu(.)d Fr(NAME)28 b Fu(m)m(ust)23 -b(not)g(b)s(e)e(supplied)h(if)g Fr(command)k Fu(is)d(a)g(simple)f -(command)g(\(see)i(Section)f(3.2.2)150 1052 y([Simple)39 -b(Commands],)h(page)g(8\);)k(otherwise,)e(it)d(is)g(in)m(terpreted)h -(as)f(the)g(\014rst)f(w)m(ord)h(of)g(the)g(simple)150 -1162 y(command.)275 1303 y(When)j(the)i(copro)s(cess)f(is)g(executed,) -48 b(the)43 b(shell)g(creates)i(an)e(arra)m(y)g(v)-5 -b(ariable)44 b(\(see)g(Section)g(6.7)150 1413 y([Arra)m(ys],)32 -b(page)g(95\))h(named)e Ft(NAME)f Fu(in)h(the)h(con)m(text)h(of)e(the)h -(executing)g(shell.)44 b(The)31 b(standard)f(output)150 -1522 y(of)39 b Fr(command)j Fu(is)d(connected)g(via)g(a)g(pip)s(e)f(to) -i(a)f(\014le)f(descriptor)h(in)f(the)h(executing)h(shell,)h(and)d(that) -150 1632 y(\014le)i(descriptor)h(is)f(assigned)h(to)g -Ft(NAME)p Fu([0].)70 b(The)40 b(standard)f(input)h(of)g -Fr(command)k Fu(is)c(connected)h(via)150 1741 y(a)h(pip)s(e)f(to)i(a)f -(\014le)g(descriptor)g(in)f(the)h(executing)i(shell,)h(and)c(that)h -(\014le)g(descriptor)g(is)g(assigned)g(to)150 1851 y -Ft(NAME)p Fu([1].)69 b(This)39 b(pip)s(e)g(is)h(established)g(b)s -(efore)f(an)m(y)h(redirections)h(sp)s(eci\014ed)e(b)m(y)g(the)h -(command)g(\(see)150 1961 y(Section)45 b(3.6)h([Redirections],)k(page) -45 b(35\).)84 b(The)44 b(\014le)h(descriptors)f(can)h(b)s(e)f(utilized) -h(as)g(argumen)m(ts)150 2070 y(to)d(shell)g(commands)f(and)g +(executing)h(shell)f(and)f(the)150 1526 y(copro)s(cess.)275 +1653 y(The)c(syn)m(tax)i(for)f(a)h(copro)s(cess)g(is:)390 +1781 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g +Ft([)p Fj(redirections)p Ft(])150 1909 y Fu(This)33 b(creates)i(a)f +(copro)s(cess)g(named)f Fr(NAME)p Fu(.)51 b Fr(command)37 +b Fu(ma)m(y)d(b)s(e)f(either)h(a)g(simple)g(command)f(\(see)150 +2018 y(Section)44 b(3.2.2)i([Simple)d(Commands],)k(page)d(9\))g(or)g(a) +g(comp)s(ound)e(command)h(\(see)i(Section)f(3.2.5)150 +2128 y([Comp)s(ound)e(Commands],)47 b(page)e(11\).)83 +b Fr(NAME)50 b Fu(is)44 b(a)g(shell)g(v)-5 b(ariable)45 +b(name.)82 b(If)44 b Fr(NAME)50 b Fu(is)44 b(not)150 +2237 y(supplied,)29 b(the)i(default)f(name)h(is)f Ft(COPROC)p +Fu(.)275 2365 y(The)f(recommended)h(form)g(to)h(use)f(for)h(a)f(copro)s +(cess)h(is)390 2492 y Ft(coproc)46 b Fj(NAME)h Ft({)g +Fj(command)p Ft(;)f(})150 2620 y Fu(This)31 b(form)g(is)h(recommended)f +(b)s(ecause)h(simple)g(commands)f(result)h(in)f(the)h(copro)s(cess)g +(alw)m(a)m(ys)h(b)s(eing)150 2730 y(named)45 b Ft(COPROC)p +Fu(,)i(and)e(it)h(is)f(simpler)g(to)h(use)f(and)g(more)g(complete)i +(than)e(the)h(other)f(comp)s(ound)150 2839 y(commands.)275 +2967 y(There)29 b(are)i(other)g(forms)f(of)g(copro)s(cesses:)390 +3094 y Ft(coproc)46 b Fj(NAME)h(compound-command)390 +3204 y Ft(coproc)f Fj(compound-command)390 3313 y Ft(coproc)g +Fj(simple-command)150 3441 y Fu(If)41 b Fr(command)46 +b Fu(is)41 b(a)i(comp)s(ound)d(command,)45 b Fr(NAME)i +Fu(is)42 b(optional.)77 b(The)41 b(w)m(ord)g(follo)m(wing)j +Ft(coproc)150 3551 y Fu(determines)27 b(whether)f(that)i(w)m(ord)f(is)g +(in)m(terpreted)g(as)g(a)h(v)-5 b(ariable)28 b(name:)39 +b(it)27 b(is)g(in)m(terpreted)h(as)f Fr(NAME)150 3660 +y Fu(if)i(it)h(is)g(not)f(a)h(reserv)m(ed)f(w)m(ord)g(that)h(in)m(tro)s +(duces)f(a)h(comp)s(ound)e(command.)40 b(If)29 b Fr(command)k +Fu(is)c(a)h(simple)150 3770 y(command,)36 b Fr(NAME)k +Fu(is)35 b(not)f(allo)m(w)m(ed;)39 b(this)34 b(is)h(to)g(a)m(v)m(oid)h +(confusion)f(b)s(et)m(w)m(een)g Fr(NAME)40 b Fu(and)34 +b(the)h(\014rst)150 3879 y(w)m(ord)30 b(of)h(the)f(simple)g(command.) +275 4007 y(When)42 b(the)i(copro)s(cess)f(is)g(executed,)48 +b(the)43 b(shell)g(creates)i(an)e(arra)m(y)g(v)-5 b(ariable)44 +b(\(see)g(Section)g(6.7)150 4117 y([Arra)m(ys],)h(page)e(100\))g(named) +e Fr(NAME)48 b Fu(in)41 b(the)h(con)m(text)h(of)f(the)g(executing)h +(shell.)75 b(The)41 b(standard)150 4226 y(output)32 b(of)h +Fr(command)i Fu(is)e(connected)g(via)g(a)g(pip)s(e)f(to)h(a)g(\014le)f +(descriptor)h(in)f(the)g(executing)i(shell,)g(and)150 +4336 y(that)d(\014le)g(descriptor)g(is)g(assigned)f(to)i +Fr(NAME)5 b Fu([0].)43 b(The)31 b(standard)f(input)f(of)i +Fr(command)j Fu(is)d(connected)150 4445 y(via)40 b(a)g(pip)s(e)f(to)h +(a)g(\014le)g(descriptor)f(in)g(the)h(executing)h(shell,)h(and)d(that)h +(\014le)g(descriptor)f(is)h(assigned)150 4555 y(to)f +Fr(NAME)5 b Fu([1].)65 b(This)38 b(pip)s(e)f(is)h(established)g(b)s +(efore)g(an)m(y)g(redirections)h(sp)s(eci\014ed)e(b)m(y)h(the)g +(command)150 4664 y(\(see)33 b(Section)f(3.6)h([Redirections],)g(page)g +(38\).)45 b(The)31 b(\014le)h(descriptors)f(can)h(b)s(e)f(utilized)i +(as)f(argumen)m(ts)150 4774 y(to)42 b(shell)g(commands)f(and)g (redirections)h(using)f(standard)g(w)m(ord)g(expansions.)74 -b(Other)41 b(than)g(those)150 2180 y(created)27 b(to)g(execute)g +b(Other)41 b(than)g(those)150 4884 y(created)27 b(to)g(execute)g (command)f(and)f(pro)s(cess)h(substitutions,)h(the)f(\014le)g -(descriptors)g(are)g(not)h(a)m(v)-5 b(ailable)150 2289 -y(in)30 b(subshells.)275 2431 y(The)d(pro)s(cess)h(ID)h(of)f(the)h +(descriptors)g(are)g(not)h(a)m(v)-5 b(ailable)150 4993 +y(in)30 b(subshells.)275 5121 y(The)d(pro)s(cess)h(ID)h(of)f(the)h (shell)f(spa)m(wned)g(to)h(execute)h(the)e(copro)s(cess)h(is)f(a)m(v)-5 -b(ailable)31 b(as)d(the)h(v)-5 b(alue)29 b(of)150 2540 -y(the)k(v)-5 b(ariable)33 b Ft(NAME)p 850 2540 28 4 v -39 w Fu(PID.)g(The)f Ft(wait)f Fu(builtin)h(command)g(ma)m(y)h(b)s(e)f -(used)g(to)h(w)m(ait)h(for)e(the)h(copro)s(cess)150 2650 -y(to)e(terminate.)275 2791 y(Since)20 b(the)g(copro)s(cess)h(is)g -(created)g(as)g(an)f(async)m(hronous)g(command,)i(the)f -Ft(coproc)d Fu(command)i(alw)m(a)m(ys)150 2901 y(returns)29 -b(success.)41 b(The)30 b(return)f(status)i(of)f(a)h(copro)s(cess)g(is)f -(the)h(exit)g(status)g(of)f Fr(command)p Fu(.)150 3107 -y Fk(3.2.7)63 b(GNU)41 b(P)m(arallel)150 3254 y Fu(There)30 -b(are)h(w)m(a)m(ys)g(to)g(run)f(commands)g(in)g(parallel)h(that)h(are)e -(not)h(built)g(in)m(to)g(Bash.)41 b(GNU)31 b(P)m(arallel)i(is)150 -3364 y(a)e(to)s(ol)g(to)g(do)f(just)g(that.)275 3505 -y(GNU)e(P)m(arallel,)i(as)e(its)g(name)f(suggests,)j(can)d(b)s(e)g -(used)g(to)h(build)f(and)g(run)f(commands)h(in)h(parallel.)150 -3615 y(Y)-8 b(ou)41 b(ma)m(y)g(run)e(the)h(same)h(command)f(with)g -(di\013eren)m(t)h(argumen)m(ts,)j(whether)39 b(they)i(are)g -(\014lenames,)150 3724 y(usernames,)27 b(hostnames,)h(or)e(lines)h -(read)f(from)h(\014les.)39 b(GNU)27 b(P)m(arallel)i(pro)m(vides)d -(shorthand)g(references)150 3834 y(to)38 b(man)m(y)g(of)g(the)g(most)g -(common)g(op)s(erations)g(\(input)f(lines,)j(v)-5 b(arious)38 -b(p)s(ortions)f(of)h(the)g(input)e(line,)150 3943 y(di\013eren)m(t)f(w) -m(a)m(ys)h(to)f(sp)s(ecify)f(the)h(input)f(source,)i(and)e(so)h(on\).) -54 b(P)m(arallel)36 b(can)f(replace)h Ft(xargs)d Fu(or)i(feed)150 -4053 y(commands)30 b(from)g(its)h(input)e(sources)h(to)i(sev)m(eral)f -(di\013eren)m(t)g(instances)g(of)g(Bash.)275 4194 y(F)-8 -b(or)33 b(a)g(complete)h(description,)g(refer)e(to)i(the)f(GNU)g(P)m -(arallel)i(do)s(cumen)m(tation.)48 b(A)33 b(few)f(examples)150 -4304 y(should)d(pro)m(vide)i(a)g(brief)e(in)m(tro)s(duction)i(to)g(its) -g(use.)275 4445 y(F)-8 b(or)37 b(example,)i(it)e(is)f(easy)h(to)g -(replace)h Ft(xargs)d Fu(to)i(gzip)g(all)g(h)m(tml)g(\014les)f(in)h -(the)f(curren)m(t)g(directory)150 4555 y(and)30 b(its)h(sub)s -(directories:)390 4696 y Ft(find)47 b(.)g(-type)f(f)i(-name)e('*.html') -g(-print)g(|)h(parallel)f(gzip)150 4838 y Fu(If)30 b(y)m(ou)h(need)f -(to)h(protect)h(sp)s(ecial)f(c)m(haracters)g(suc)m(h)g(as)f(newlines)h -(in)f(\014le)g(names,)h(use)f(\014nd's)f Ft(-print0)150 -4948 y Fu(option)i(and)f(parallel's)h Ft(-0)f Fu(option.)275 -5089 y(Y)-8 b(ou)34 b(can)g(use)f(P)m(arallel)j(to)e(mo)m(v)m(e)h -(\014les)f(from)f(the)h(curren)m(t)f(directory)h(when)f(the)h(n)m(um)m -(b)s(er)e(of)i(\014les)150 5199 y(is)c(to)s(o)i(large)f(to)g(pro)s -(cess)f(with)g(one)h Ft(mv)f Fu(in)m(v)m(o)s(cation:)390 -5340 y Ft(printf)46 b('\045s\\n')g(*)i(|)f(parallel)f(mv)h({})g -(destdir)p eop end -%%Page: 17 23 -TeXDict begin 17 22 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)275 299 -y(As)28 b(y)m(ou)h(can)g(see,)g(the)g Fi({})g Fu(is)g(replaced)g(with)f -(eac)m(h)i(line)f(read)f(from)g(standard)g(input.)39 -b(While)29 b(using)150 408 y Ft(ls)34 b Fu(will)i(w)m(ork)f(in)g(most)g -(instances,)i(it)f(is)f(not)g(su\016cien)m(t)h(to)g(deal)f(with)g(all)h -(\014lenames.)55 b Ft(printf)33 b Fu(is)j(a)150 518 y(shell)31 -b(builtin,)f(and)g(therefore)h(is)g(not)g(sub)5 b(ject)30 -b(to)h(the)g(k)m(ernel's)g(limit)g(on)g(the)g(n)m(um)m(b)s(er)e(of)i -(argumen)m(ts)150 628 y(to)37 b(a)f(program,)h(so)g(y)m(ou)f(can)g(use) -g(`)p Ft(*)p Fu(')g(\(but)f(see)i(b)s(elo)m(w)f(ab)s(out)g(the)g -Ft(dotglob)e Fu(shell)i(option\).)58 b(If)36 b(y)m(ou)150 -737 y(need)30 b(to)h(accommo)s(date)h(sp)s(ecial)f(c)m(haracters)h(in)e -(\014lenames,)h(y)m(ou)g(can)f(use)390 877 y Ft(printf)46 -b('\045s\\0')g(*)i(|)f(parallel)f(-0)h(mv)g({})g(destdir)150 -1017 y Fu(as)31 b(alluded)f(to)h(ab)s(o)m(v)m(e.)275 -1157 y(This)e(will)i(run)e(as)h(man)m(y)h Ft(mv)e Fu(commands)h(as)h -(there)f(are)h(\014les)f(in)h(the)f(curren)m(t)g(directory)-8 -b(.)42 b(Y)-8 b(ou)31 b(can)150 1267 y(em)m(ulate)h(a)f(parallel)g -Ft(xargs)e Fu(b)m(y)h(adding)g(the)h Ft(-X)f Fu(option:)390 -1407 y Ft(printf)46 b('\045s\\0')g(*)i(|)f(parallel)f(-0)h(-X)g(mv)g -({})g(destdir)275 1547 y Fu(\(Y)-8 b(ou)31 b(ma)m(y)g(ha)m(v)m(e)g(to)g -(mo)s(dify)f(the)h(pattern)f(if)g(y)m(ou)h(ha)m(v)m(e)h(the)e -Ft(dotglob)f Fu(option)h(enabled.\))275 1687 y(GNU)h(P)m(arallel)i(can) -e(replace)h(certain)g(common)g(idioms)f(that)g(op)s(erate)h(on)f(lines) -g(read)g(from)f(a)i(\014le)150 1797 y(\(in)e(this)h(case,)g -(\014lenames)g(listed)g(one)f(p)s(er)g(line\):)390 1937 -y Ft(while)46 b(IFS=)h(read)g(-r)g(x;)g(do)390 2046 y(do-something1)d -("$x")j("config-$x")390 2156 y(do-something2)d(<)k("$x")390 -2265 y(done)f(<)g(file)g(|)g(process-output)150 2405 -y Fu(with)30 b(a)h(more)f(compact)i(syn)m(tax)f(reminiscen)m(t)g(of)g -(lam)m(b)s(das:)390 2545 y Ft(cat)47 b(list)g(|)g(parallel)f -("do-something1)d({})48 b(config-{})d(;)i(do-something2)e(<)i({}")g(|) -915 2655 y(process-output)275 2795 y Fu(P)m(arallel)31 -b(pro)m(vides)e(a)h(built-in)g(mec)m(hanism)g(to)g(remo)m(v)m(e)h -(\014lename)e(extensions,)i(whic)m(h)e(lends)g(itself)150 -2905 y(to)i(batc)m(h)g(\014le)g(transformations)f(or)g(renaming:)390 -3045 y Ft(ls)47 b(*.gz)g(|)g(parallel)f(-j+0)g("zcat)h({})g(|)g(bzip2)g -(>{.}.bz2)e(&&)j(rm)f({}")150 3185 y Fu(This)28 b(will)i(recompress)e -(all)i(\014les)f(in)g(the)g(curren)m(t)g(directory)g(with)g(names)g -(ending)f(in)h(.gz)h(using)f(bzip2,)150 3294 y(running)37 -b(one)i(job)f(p)s(er)f(CPU)h(\(-j)p Ft(+)p Fu(0\))i(in)e(parallel.)66 -b(\(W)-8 b(e)40 b(use)e Ft(ls)g Fu(for)h(brevit)m(y)g(here;)j(using)c -Ft(find)g Fu(as)150 3404 y(ab)s(o)m(v)m(e)e(is)g(more)f(robust)f(in)h -(the)h(face)g(of)f(\014lenames)h(con)m(taining)g(unexp)s(ected)f(c)m -(haracters.\))57 b(P)m(arallel)150 3513 y(can)31 b(tak)m(e)h(argumen)m -(ts)e(from)g(the)h(command)f(line;)h(the)f(ab)s(o)m(v)m(e)i(can)f(also) -g(b)s(e)f(written)g(as)390 3654 y Ft(parallel)46 b("zcat)g({})h(|)h -(bzip2)e(>{.}.bz2)f(&&)j(rm)f({}")g(:::)g(*.gz)275 3794 -y Fu(If)24 b(a)i(command)f(generates)h(output,)g(y)m(ou)g(ma)m(y)f(w)m -(an)m(t)h(to)g(preserv)m(e)g(the)f(input)f(order)h(in)g(the)g(output.) -150 3903 y(F)-8 b(or)31 b(instance,)g(the)g(follo)m(wing)h(command)390 -4043 y Ft({)581 4153 y(echo)47 b(foss.org.my)d(;)581 -4262 y(echo)j(debian.org)e(;)581 4372 y(echo)i(freenetproject.org)42 -b(;)390 4482 y(})47 b(|)h(parallel)d(traceroute)150 4622 -y Fu(will)31 b(displa)m(y)f(as)h(output)f(the)g(traceroute)i(in)m(v)m -(o)s(cation)h(that)e(\014nishes)e(\014rst.)40 b(Adding)30 -b(the)g Ft(-k)g Fu(option)390 4762 y Ft({)581 4871 y(echo)47 -b(foss.org.my)d(;)581 4981 y(echo)j(debian.org)e(;)581 -5090 y(echo)i(freenetproject.org)42 b(;)390 5200 y(})47 -b(|)h(parallel)d(-k)j(traceroute)150 5340 y Fu(will)31 -b(ensure)e(that)i(the)g(output)f(of)g Ft(traceroute)e(foss.org.my)f -Fu(is)k(displa)m(y)m(ed)g(\014rst.)p eop end -%%Page: 18 24 -TeXDict begin 18 23 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)275 299 -y(Finally)-8 b(,)31 b(P)m(arallel)h(can)e(b)s(e)f(used)g(to)i(run)d(a)i -(sequence)h(of)f(shell)g(commands)f(in)h(parallel,)h(similar)f(to)150 -408 y(`)p Ft(cat)g(file)f(|)h(bash)p Fu('.)53 b(It)35 -b(is)g(not)g(uncommon)f(to)i(tak)m(e)g(a)f(list)h(of)f(\014lenames,)h -(create)g(a)g(series)f(of)g(shell)150 518 y(commands)24 -b(to)h(op)s(erate)h(on)e(them,)i(and)e(feed)g(that)h(list)h(of)e -(commands)g(to)i(a)f(shell.)39 b(P)m(arallel)26 b(can)f(sp)s(eed)150 -628 y(this)30 b(up.)40 b(Assuming)30 b(that)h Ft(file)e -Fu(con)m(tains)i(a)g(list)g(of)g(shell)f(commands,)h(one)f(p)s(er)g -(line,)390 772 y Ft(parallel)46 b(-j)h(10)g(<)g(file)150 -917 y Fu(will)37 b(ev)-5 b(aluate)38 b(the)f(commands)f(using)g(the)h -(shell)g(\(since)g(no)f(explicit)i(command)e(is)h(supplied)e(as)i(an) -150 1027 y(argumen)m(t\),)31 b(in)f(blo)s(c)m(ks)h(of)g(ten)f(shell)h -(jobs)f(at)h(a)g(time.)150 1283 y Fs(3.3)68 b(Shell)45 -b(F)-11 b(unctions)150 1442 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m -(a)m(y)g(to)h(group)e(commands)g(for)h(later)g(execution)h(using)e(a)h -(single)g(name)g(for)150 1552 y(the)f(group.)55 b(They)35 -b(are)g(executed)h(just)f(lik)m(e)h(a)g Ft(")p Fu(regular)p -Ft(")f Fu(command.)54 b(When)35 b(the)h(name)f(of)g(a)h(shell)150 -1661 y(function)j(is)g(used)f(as)h(a)h(simple)f(command)g(name,)i(the)e -(list)h(of)f(commands)g(asso)s(ciated)i(with)d(that)150 -1771 y(function)25 b(name)h(is)g(executed.)40 b(Shell)25 -b(functions)g(are)i(executed)f(in)f(the)h(curren)m(t)g(shell)g(con)m -(text;)j(no)c(new)150 1881 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m -(terpret)g(them.)275 2025 y(F)-8 b(unctions)30 b(are)h(declared)g -(using)f(this)g(syn)m(tax:)390 2170 y Fj(fname)46 b Ft(\(\))i -Fj(compound-command)43 b Ft([)k Fj(redirections)e Ft(])275 -2315 y Fu(or)390 2460 y Ft(function)h Fj(fname)g Ft([\(\)])h -Fj(compound-command)c Ft([)k Fj(redirections)e Ft(])275 -2604 y Fu(This)37 b(de\014nes)h(a)h(shell)f(function)g(named)g -Fr(fname)p Fu(.)65 b(The)38 b(reserv)m(ed)h(w)m(ord)f -Ft(function)e Fu(is)j(optional.)150 2714 y(If)33 b(the)g -Ft(function)e Fu(reserv)m(ed)i(w)m(ord)g(is)g(supplied,)g(the)g(paren)m -(theses)h(are)f(optional.)50 b(The)33 b Fr(b)s(o)s(dy)39 -b Fu(of)34 b(the)150 2824 y(function)41 b(is)h(the)g(comp)s(ound)e -(command)h Fr(comp)s(ound-command)j Fu(\(see)e(Section)h(3.2.5)g([Comp) -s(ound)150 2933 y(Commands],)30 b(page)h(10\).)42 b(That)30 -b(command)g(is)g(usually)h(a)f Fr(list)j Fu(enclosed)e(b)s(et)m(w)m -(een)g Fi({)g Fu(and)f Fi(})p Fu(,)h(but)e(ma)m(y)150 -3043 y(b)s(e)39 b(an)m(y)h(comp)s(ound)e(command)i(listed)g(ab)s(o)m(v) -m(e,)j(with)d(one)g(exception:)60 b(If)39 b(the)h Ft(function)e -Fu(reserv)m(ed)150 3152 y(w)m(ord)g(is)g(used,)h(but)f(the)g(paren)m -(theses)h(are)f(not)h(supplied,)g(the)f(braces)g(are)h(required.)63 -b Fr(comp)s(ound-)150 3262 y(command)37 b Fu(is)d(executed)g(whenev)m -(er)f Fr(fname)39 b Fu(is)34 b(sp)s(eci\014ed)e(as)i(the)g(name)g(of)f -(a)h(command.)50 b(When)34 b(the)150 3371 y(shell)e(is)f(in)g -Fm(posix)f Fu(mo)s(de)h(\(see)i(Section)f(6.11)h([Bash)e(POSIX)g(Mo)s -(de],)h(page)g(101\),)h Fr(fname)k Fu(m)m(ust)31 b(b)s(e)g(a)150 -3481 y(v)-5 b(alid)37 b(shell)f Fr(name)42 b Fu(and)36 -b(ma)m(y)h(not)f(b)s(e)g(the)g(same)h(as)g(one)f(of)h(the)g(sp)s(ecial) -g(builtins)e(\(see)j(Section)f(4.4)150 3591 y([Sp)s(ecial)e(Builtins],) -h(page)e(72\).)54 b(In)33 b(default)h(mo)s(de,)h(a)g(function)f(name)g -(can)g(b)s(e)g(an)m(y)g(unquoted)g(shell)150 3700 y(w)m(ord)g(that)h -(do)s(es)e(not)i(con)m(tain)g(`)p Ft($)p Fu('.)53 b(An)m(y)34 -b(redirections)h(\(see)g(Section)g(3.6)g([Redirections],)i(page)e(35\)) -150 3810 y(asso)s(ciated)30 b(with)e(the)h(shell)f(function)g(are)h(p)s -(erformed)e(when)h(the)g(function)g(is)h(executed.)41 -b(A)28 b(function)150 3919 y(de\014nition)g(ma)m(y)h(b)s(e)f(deleted)h -(using)f(the)h Ft(-f)e Fu(option)i(to)g(the)g Ft(unset)e -Fu(builtin)h(\(see)h(Section)g(4.1)h([Bourne)150 4029 -y(Shell)g(Builtins],)h(page)h(44\).)275 4174 y(The)26 -b(exit)i(status)g(of)f(a)h(function)f(de\014nition)g(is)g(zero)h -(unless)f(a)g(syn)m(tax)h(error)f(o)s(ccurs)g(or)g(a)h(readonly)150 -4283 y(function)k(with)f(the)i(same)f(name)g(already)h(exists.)46 +b(ailable)31 b(as)d(the)h(v)-5 b(alue)29 b(of)150 5230 +y(the)k(v)-5 b(ariable)33 b Fj(NAME)p Ft(_PID)p Fu(.)44 +b(The)32 b Ft(wait)g Fu(builtin)f(command)i(ma)m(y)g(b)s(e)e(used)h(to) +h(w)m(ait)h(for)e(the)h(copro)s(cess)150 5340 y(to)e(terminate.)p +eop end +%%Page: 19 25 +TeXDict begin 19 24 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)275 299 +y(Since)20 b(the)g(copro)s(cess)h(is)g(created)g(as)g(an)f(async)m +(hronous)g(command,)i(the)f Ft(coproc)d Fu(command)i(alw)m(a)m(ys)150 +408 y(returns)29 b(success.)41 b(The)30 b(return)f(status)i(of)f(a)h +(copro)s(cess)g(is)f(the)h(exit)g(status)g(of)f Fr(command)p +Fu(.)150 609 y Fk(3.2.7)63 b(GNU)41 b(P)m(arallel)150 +756 y Fu(There)30 b(are)h(w)m(a)m(ys)g(to)g(run)f(commands)g(in)g +(parallel)h(that)h(are)e(not)h(built)g(in)m(to)g(Bash.)41 +b(GNU)31 b(P)m(arallel)i(is)150 866 y(a)e(to)s(ol)g(to)g(do)f(just)g +(that.)275 1001 y(GNU)e(P)m(arallel,)i(as)e(its)g(name)f(suggests,)j +(can)d(b)s(e)g(used)g(to)h(build)f(and)g(run)f(commands)h(in)h +(parallel.)150 1111 y(Y)-8 b(ou)41 b(ma)m(y)g(run)e(the)h(same)h +(command)f(with)g(di\013eren)m(t)h(argumen)m(ts,)j(whether)39 +b(they)i(are)g(\014lenames,)150 1221 y(usernames,)27 +b(hostnames,)h(or)e(lines)h(read)f(from)h(\014les.)39 +b(GNU)27 b(P)m(arallel)i(pro)m(vides)d(shorthand)g(references)150 +1330 y(to)38 b(man)m(y)g(of)g(the)g(most)g(common)g(op)s(erations)g +(\(input)f(lines,)j(v)-5 b(arious)38 b(p)s(ortions)f(of)h(the)g(input)e +(line,)150 1440 y(di\013eren)m(t)f(w)m(a)m(ys)h(to)f(sp)s(ecify)f(the)h +(input)f(source,)i(and)e(so)h(on\).)54 b(P)m(arallel)36 +b(can)f(replace)h Ft(xargs)d Fu(or)i(feed)150 1549 y(commands)30 +b(from)g(its)h(input)e(sources)h(to)i(sev)m(eral)f(di\013eren)m(t)g +(instances)g(of)g(Bash.)275 1685 y(F)-8 b(or)28 b(a)h(complete)g +(description,)g(refer)f(to)g(the)h(GNU)f(P)m(arallel)i(do)s(cumen)m +(tation,)g(whic)m(h)e(is)g(a)m(v)-5 b(ailable)150 1795 +y(at)31 b Ft(https://www.gnu.org/softw)o(are)o(/par)o(alle)o(l/p)o +(aral)o(lel_)o(tut)o(oria)o(l.ht)o(ml)p Fu(.)150 2038 +y Fs(3.3)68 b(Shell)45 b(F)-11 b(unctions)150 2197 y +Fu(Shell)35 b(functions)h(are)g(a)g(w)m(a)m(y)g(to)h(group)e(commands)g +(for)h(later)g(execution)h(using)e(a)h(single)g(name)g(for)150 +2307 y(the)f(group.)55 b(They)35 b(are)g(executed)h(just)f(lik)m(e)h(a) +g Ft(")p Fu(regular)p Ft(")f Fu(command.)54 b(When)35 +b(the)h(name)f(of)g(a)h(shell)150 2416 y(function)j(is)g(used)f(as)h(a) +h(simple)f(command)g(name,)i(the)e(list)h(of)f(commands)g(asso)s +(ciated)i(with)d(that)150 2526 y(function)25 b(name)h(is)g(executed.)40 +b(Shell)25 b(functions)g(are)i(executed)f(in)f(the)h(curren)m(t)g +(shell)g(con)m(text;)j(no)c(new)150 2635 y(pro)s(cess)30 +b(is)g(created)i(to)f(in)m(terpret)g(them.)275 2771 y(F)-8 +b(unctions)30 b(are)h(declared)g(using)f(this)g(syn)m(tax:)390 +2907 y Fj(fname)46 b Ft(\(\))i Fj(compound-command)43 +b Ft([)k Fj(redirections)e Ft(])275 3043 y Fu(or)390 +3179 y Ft(function)h Fj(fname)g Ft([\(\)])h Fj(compound-command)c +Ft([)k Fj(redirections)e Ft(])275 3315 y Fu(This)37 b(de\014nes)h(a)h +(shell)f(function)g(named)g Fr(fname)p Fu(.)65 b(The)38 +b(reserv)m(ed)h(w)m(ord)f Ft(function)e Fu(is)j(optional.)150 +3424 y(If)33 b(the)g Ft(function)e Fu(reserv)m(ed)i(w)m(ord)g(is)g +(supplied,)g(the)g(paren)m(theses)h(are)f(optional.)50 +b(The)33 b Fr(b)s(o)s(dy)39 b Fu(of)34 b(the)150 3534 +y(function)41 b(is)h(the)g(comp)s(ound)e(command)h Fr(comp)s +(ound-command)j Fu(\(see)e(Section)h(3.2.5)g([Comp)s(ound)150 +3644 y(Commands],)30 b(page)h(11\).)42 b(That)30 b(command)g(is)g +(usually)h(a)f Fr(list)j Fu(enclosed)e(b)s(et)m(w)m(een)g +Fi({)g Fu(and)f Fi(})p Fu(,)h(but)e(ma)m(y)150 3753 y(b)s(e)k(an)m(y)h +(comp)s(ound)f(command)g(listed)i(ab)s(o)m(v)m(e.)52 +b(If)33 b(the)i Ft(function)c Fu(reserv)m(ed)j(w)m(ord)g(is)f(used,)i +(but)e(the)150 3863 y(paren)m(theses)22 b(are)g(not)f(supplied,)h(the)g +(braces)g(are)f(recommended.)38 b Fr(comp)s(ound-command)24 +b Fu(is)d(executed)150 3972 y(whenev)m(er)29 b Fr(fname)35 +b Fu(is)29 b(sp)s(eci\014ed)g(as)g(the)h(name)f(of)h(a)f(simple)h +(command.)40 b(When)29 b(the)h(shell)f(is)h(in)f Fm(posix)150 +4082 y Fu(mo)s(de)i(\(see)h(Section)g(6.11)h([Bash)f(POSIX)e(Mo)s(de],) +i(page)g(106\),)i Fr(fname)i Fu(m)m(ust)31 b(b)s(e)g(a)h(v)-5 +b(alid)31 b(shell)h(name)150 4192 y(and)h(ma)m(y)h(not)f(b)s(e)g(the)h +(same)f(as)h(one)g(of)f(the)h(sp)s(ecial)g(builtins)e(\(see)j(Section)f +(4.4)g([Sp)s(ecial)g(Builtins],)150 4301 y(page)d(77\).)43 +b(In)29 b(default)i(mo)s(de,)g(a)f(function)h(name)f(can)h(b)s(e)f(an)m +(y)h(unquoted)e(shell)i(w)m(ord)f(that)h(do)s(es)g(not)150 +4411 y(con)m(tain)k(`)p Ft($)p Fu('.)52 b(An)m(y)34 b(redirections)g +(\(see)h(Section)g(3.6)g([Redirections],)h(page)f(38\))g(asso)s(ciated) +g(with)f(the)150 4520 y(shell)g(function)f(are)h(p)s(erformed)e(when)h +(the)g(function)h(is)f(executed.)51 b(A)34 b(function)f(de\014nition)g +(ma)m(y)i(b)s(e)150 4630 y(deleted)i(using)e(the)i Ft(-f)e +Fu(option)i(to)f(the)h Ft(unset)d Fu(builtin)i(\(see)h(Section)g(4.1)g +([Bourne)f(Shell)g(Builtins],)150 4739 y(page)31 b(48\).)275 +4875 y(The)26 b(exit)i(status)g(of)f(a)h(function)f(de\014nition)g(is)g +(zero)h(unless)f(a)g(syn)m(tax)h(error)f(o)s(ccurs)g(or)g(a)h(readonly) +150 4985 y(function)k(with)f(the)i(same)f(name)g(already)h(exists.)46 b(When)32 b(executed,)h(the)f(exit)h(status)g(of)f(a)g(function)150 -4393 y(is)e(the)h(exit)g(status)g(of)f(the)h(last)g(command)f(executed) -i(in)e(the)g(b)s(o)s(dy)-8 b(.)275 4538 y(Note)22 b(that)f(for)f +5095 y(is)e(the)h(exit)g(status)g(of)f(the)h(last)g(command)f(executed) +i(in)e(the)g(b)s(o)s(dy)-8 b(.)275 5230 y(Note)22 b(that)f(for)f (historical)i(reasons,)h(in)e(the)g(most)g(common)g(usage)g(the)g -(curly)f(braces)h(that)g(surround)150 4647 y(the)38 b(b)s(o)s(dy)d(of)j +(curly)f(braces)h(that)g(surround)150 5340 y(the)38 b(b)s(o)s(dy)d(of)j (the)f(function)g(m)m(ust)g(b)s(e)g(separated)h(from)f(the)g(b)s(o)s -(dy)f(b)m(y)h Ft(blank)p Fu(s)f(or)h(newlines.)62 b(This)150 -4757 y(is)38 b(b)s(ecause)g(the)h(braces)f(are)h(reserv)m(ed)f(w)m -(ords)g(and)f(are)i(only)f(recognized)i(as)e(suc)m(h)g(when)f(they)i -(are)150 4866 y(separated)26 b(from)f(the)h(command)f(list)i(b)m(y)e -(whitespace)h(or)g(another)g(shell)g(metac)m(haracter.)41 -b(Also,)28 b(when)150 4976 y(using)i(the)g(braces,)h(the)g -Fr(list)i Fu(m)m(ust)d(b)s(e)g(terminated)h(b)m(y)f(a)h(semicolon,)h(a) -e(`)p Ft(&)p Fu(',)h(or)g(a)f(newline.)275 5121 y(When)i(a)i(function)f -(is)g(executed,)i(the)e(argumen)m(ts)h(to)g(the)f(function)g(b)s(ecome) -g(the)h(p)s(ositional)g(pa-)150 5230 y(rameters)42 b(during)e(its)i +(dy)f(b)m(y)h Ft(blank)p Fu(s)f(or)h(newlines.)62 b(This)p +eop end +%%Page: 20 26 +TeXDict begin 20 25 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)150 299 +y(is)38 b(b)s(ecause)g(the)h(braces)f(are)h(reserv)m(ed)f(w)m(ords)g +(and)f(are)i(only)f(recognized)i(as)e(suc)m(h)g(when)f(they)i(are)150 +408 y(separated)26 b(from)f(the)h(command)f(list)i(b)m(y)e(whitespace)h +(or)g(another)g(shell)g(metac)m(haracter.)41 b(Also,)28 +b(when)150 518 y(using)i(the)g(braces,)h(the)g Fr(list)i +Fu(m)m(ust)d(b)s(e)g(terminated)h(b)m(y)f(a)h(semicolon,)h(a)e(`)p +Ft(&)p Fu(',)h(or)g(a)f(newline.)275 669 y(When)i(a)i(function)f(is)g +(executed,)i(the)e(argumen)m(ts)h(to)g(the)f(function)g(b)s(ecome)g +(the)h(p)s(ositional)g(pa-)150 778 y(rameters)42 b(during)e(its)i (execution)h(\(see)f(Section)g(3.4.1)h([P)m(ositional)h(P)m -(arameters],)i(page)c(21\).)75 b(The)150 5340 y(sp)s(ecial)37 +(arameters],)i(page)c(23\).)75 b(The)150 888 y(sp)s(ecial)37 b(parameter)f(`)p Ft(#)p Fu(')g(that)h(expands)e(to)i(the)f(n)m(um)m(b) -s(er)f(of)h(p)s(ositional)h(parameters)f(is)g(up)s(dated)f(to)p -eop end -%%Page: 19 25 -TeXDict begin 19 24 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)150 299 -y(re\015ect)36 b(the)f(c)m(hange.)56 b(Sp)s(ecial)35 +s(er)f(of)h(p)s(ositional)h(parameters)f(is)g(up)s(dated)f(to)150 +998 y(re\015ect)h(the)f(c)m(hange.)56 b(Sp)s(ecial)35 b(parameter)h Ft(0)f Fu(is)g(unc)m(hanged.)54 b(The)35 -b(\014rst)f(elemen)m(t)j(of)e(the)g Ft(FUNCNAME)150 408 +b(\014rst)f(elemen)m(t)j(of)e(the)g Ft(FUNCNAME)150 1107 y Fu(v)-5 b(ariable)31 b(is)g(set)f(to)i(the)e(name)h(of)f(the)h (function)f(while)g(the)h(function)f(is)g(executing.)275 -540 y(All)25 b(other)g(asp)s(ects)g(of)g(the)g(shell)g(execution)h(en)m -(vironmen)m(t)g(are)f(iden)m(tical)h(b)s(et)m(w)m(een)g(a)f(function)g -(and)150 650 y(its)35 b(caller)i(with)d(these)i(exceptions:)50 +1258 y(All)25 b(other)g(asp)s(ects)g(of)g(the)g(shell)g(execution)h(en) +m(vironmen)m(t)g(are)f(iden)m(tical)h(b)s(et)m(w)m(een)g(a)f(function)g +(and)150 1367 y(its)35 b(caller)i(with)d(these)i(exceptions:)50 b(the)36 b Ft(DEBUG)d Fu(and)h Ft(RETURN)g Fu(traps)g(are)i(not)f -(inherited)f(unless)h(the)150 759 y(function)26 b(has)g(b)s(een)f(giv)m -(en)i(the)g Ft(trace)d Fu(attribute)j(using)f(the)g Ft(declare)e -Fu(builtin)i(or)g(the)h Ft(-o)i(functrace)150 869 y Fu(option)f(has)e -(b)s(een)h(enabled)g(with)g(the)g Ft(set)f Fu(builtin,)i(\(in)f(whic)m -(h)f(case)j(all)f(functions)e(inherit)h(the)g Ft(DEBUG)150 -978 y Fu(and)33 b Ft(RETURN)f Fu(traps\),)j(and)e(the)h -Ft(ERR)f Fu(trap)h(is)g(not)g(inherited)f(unless)g(the)h -Ft(-o)c(errtrace)h Fu(shell)j(option)150 1088 y(has)h(b)s(een)f -(enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f(Shell)g(Builtins],)i -(page)f(44,)i(for)c(the)i(description)f(of)150 1198 y(the)c -Ft(trap)e Fu(builtin.)275 1329 y(The)38 b Ft(FUNCNEST)f -Fu(v)-5 b(ariable,)42 b(if)d(set)h(to)g(a)g(n)m(umeric)f(v)-5 -b(alue)39 b(greater)h(than)f(0,)j(de\014nes)d(a)g(maxim)m(um)150 -1439 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25 +(inherited)f(unless)h(the)150 1477 y(function)26 b(has)g(b)s(een)f(giv) +m(en)i(the)g Ft(trace)d Fu(attribute)j(using)f(the)g +Ft(declare)e Fu(builtin)i(or)g(the)h Ft(-o)i(functrace)150 +1587 y Fu(option)f(has)e(b)s(een)h(enabled)g(with)g(the)g +Ft(set)f Fu(builtin,)i(\(in)f(whic)m(h)f(case)j(all)f(functions)e +(inherit)h(the)g Ft(DEBUG)150 1696 y Fu(and)33 b Ft(RETURN)f +Fu(traps\),)j(and)e(the)h Ft(ERR)f Fu(trap)h(is)g(not)g(inherited)f +(unless)g(the)h Ft(-o)c(errtrace)h Fu(shell)j(option)150 +1806 y(has)h(b)s(een)f(enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f +(Shell)g(Builtins],)i(page)f(48,)i(for)c(the)i(description)f(of)150 +1915 y(the)c Ft(trap)e Fu(builtin.)275 2066 y(The)38 +b Ft(FUNCNEST)f Fu(v)-5 b(ariable,)42 b(if)d(set)h(to)g(a)g(n)m(umeric) +f(v)-5 b(alue)39 b(greater)h(than)f(0,)j(de\014nes)d(a)g(maxim)m(um)150 +2176 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25 b(in)m(v)m(o)s(cations)i(that)e(exceed)g(the)g(limit)g(cause)g(the)g -(en)m(tire)g(command)150 1548 y(to)31 b(ab)s(ort.)275 -1680 y(If)37 b(the)g(builtin)g(command)h Ft(return)d +(en)m(tire)g(command)150 2285 y(to)31 b(ab)s(ort.)275 +2436 y(If)37 b(the)g(builtin)g(command)h Ft(return)d Fu(is)j(executed)g(in)g(a)g(function,)h(the)e(function)h(completes)h -(and)150 1789 y(execution)25 b(resumes)e(with)h(the)g(next)g(command)f +(and)150 2545 y(execution)25 b(resumes)e(with)h(the)g(next)g(command)f (after)i(the)f(function)f(call.)40 b(An)m(y)24 b(command)f(asso)s -(ciated)150 1899 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed) +(ciated)150 2655 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed) g(b)s(efore)f(execution)i(resumes.)57 b(When)37 b(a)f(function)g -(completes,)150 2008 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s +(completes,)150 2765 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s (ositional)h(parameters)f(and)g(the)g(sp)s(ecial)h(parameter)f(`)p -Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 2118 y(v)-5 +Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 2874 y(v)-5 b(alues)26 b(they)f(had)g(prior)f(to)i(the)g(function's)f(execution.)40 b(If)25 b(a)h(n)m(umeric)f(argumen)m(t)h(is)f(giv)m(en)h(to)g -Ft(return)p Fu(,)150 2228 y(that)j(is)g(the)f(function's)h(return)e +Ft(return)p Fu(,)150 2984 y(that)j(is)g(the)f(function's)h(return)e (status;)j(otherwise)f(the)f(function's)h(return)e(status)i(is)f(the)h -(exit)h(status)150 2337 y(of)h(the)f(last)h(command)f(executed)i(b)s -(efore)e(the)g Ft(return)p Fu(.)275 2469 y(V)-8 b(ariables)31 -b(lo)s(cal)g(to)f(the)g(function)f(ma)m(y)i(b)s(e)e(declared)h(with)f -(the)h Ft(local)f Fu(builtin.)40 b(These)29 b(v)-5 b(ariables)150 -2578 y(are)25 b(visible)h(only)f(to)g(the)g(function)g(and)f(the)i -(commands)e(it)i(in)m(v)m(ok)m(es.)40 b(This)24 b(is)h(particularly)h -(imp)s(ortan)m(t)150 2688 y(when)j(a)i(shell)g(function)f(calls)h -(other)g(functions.)275 2819 y(Lo)s(cal)41 b(v)-5 b(ariables)42 -b Ft(")p Fu(shado)m(w)p Ft(")e Fu(v)-5 b(ariables)42 -b(with)f(the)g(same)g(name)g(declared)h(at)f(previous)g(scop)s(es.)150 -2929 y(F)-8 b(or)41 b(instance,)j(a)d(lo)s(cal)h(v)-5 +(exit)h(status)150 3093 y(of)h(the)f(last)h(command)f(executed)i(b)s +(efore)e(the)g Ft(return)p Fu(.)275 3244 y(V)-8 b(ariables)29 +b(lo)s(cal)h(to)g(the)e(function)g(ma)m(y)i(b)s(e)e(declared)h(with)f +(the)h Ft(local)e Fu(builtin)h(\()p Fr(lo)s(cal)i(v)-5 +b(ariables)t Fu(\).)150 3354 y(Ordinarily)d(,)35 b(v)-5 +b(ariables)35 b(and)f(their)g(v)-5 b(alues)35 b(are)g(shared)e(b)s(et)m +(w)m(een)i(a)g(function)f(and)g(its)g(caller.)54 b(These)150 +3463 y(v)-5 b(ariables)30 b(are)f(visible)g(only)g(to)h(the)f(function) +f(and)g(the)i(commands)e(it)h(in)m(v)m(ok)m(es.)42 b(This)28 +b(is)h(particularly)150 3573 y(imp)s(ortan)m(t)i(when)e(a)i(shell)f +(function)g(calls)i(other)e(functions.)275 3724 y(In)j(the)h(follo)m +(wing)i(description,)f(the)g Fr(curren)m(t)f(scop)s(e)39 +b Fu(is)34 b(a)h(curren)m(tly-)g(executing)g(function.)52 +b(Pre-)150 3833 y(vious)33 b(scop)s(es)g(consist)g(of)g(that)g +(function's)g(caller)h(and)e(so)h(on,)h(bac)m(k)g(to)f(the)g +Ft(")p Fu(global)p Ft(")h Fu(scop)s(e,)f(where)150 3943 +y(the)g(shell)g(is)g(not)g(executing)h(an)m(y)f(shell)g(function.)48 +b(Consequen)m(tly)-8 b(,)34 b(a)f(lo)s(cal)h(v)-5 b(ariable)34 +b(at)f(the)g(curren)m(t)150 4052 y(lo)s(cal)g(scop)s(e)f(is)f(a)h(v)-5 +b(ariable)33 b(declared)f(using)f(the)h Ft(local)e Fu(or)i +Ft(declare)e Fu(builtins)h(in)g(the)h(function)f(that)150 +4162 y(is)f(curren)m(tly)h(executing.)275 4313 y(Lo)s(cal)41 +b(v)-5 b(ariables)42 b Ft(")p Fu(shado)m(w)p Ft(")e Fu(v)-5 +b(ariables)42 b(with)f(the)g(same)g(name)g(declared)h(at)f(previous)g +(scop)s(es.)150 4422 y(F)-8 b(or)41 b(instance,)j(a)d(lo)s(cal)h(v)-5 b(ariable)41 b(declared)g(in)f(a)h(function)f(hides)g(a)h(global)h(v)-5 -b(ariable)41 b(of)g(the)g(same)150 3039 y(name:)59 b(references)40 +b(ariable)41 b(of)g(the)g(same)150 4532 y(name:)59 b(references)40 b(and)f(assignmen)m(ts)h(refer)f(to)i(the)f(lo)s(cal)g(v)-5 b(ariable,)43 b(lea)m(ving)f(the)d(global)i(v)-5 b(ariable)150 -3148 y(unmo)s(di\014ed.)39 b(When)30 b(the)g(function)g(returns,)g(the) +4641 y(unmo)s(di\014ed.)39 b(When)30 b(the)g(function)g(returns,)g(the) g(global)i(v)-5 b(ariable)31 b(is)g(once)g(again)g(visible.)275 -3280 y(The)f(shell)h(uses)g Fr(dynamic)g(scoping)39 b +4792 y(The)f(shell)h(uses)g Fr(dynamic)g(scoping)39 b Fu(to)32 b(con)m(trol)g(a)f(v)-5 b(ariable's)32 b(visibilit)m(y)h -(within)d(functions.)42 b(With)150 3389 y(dynamic)31 +(within)d(functions.)42 b(With)150 4902 y(dynamic)31 b(scoping,)i(visible)e(v)-5 b(ariables)32 b(and)f(their)h(v)-5 b(alues)32 b(are)f(a)h(result)g(of)f(the)h(sequence)g(of)f(function)150 -3499 y(calls)37 b(that)g(caused)g(execution)g(to)g(reac)m(h)g(the)g +5011 y(calls)37 b(that)g(caused)g(execution)g(to)g(reac)m(h)g(the)g (curren)m(t)f(function.)58 b(The)36 b(v)-5 b(alue)36 -b(of)h(a)g(v)-5 b(ariable)37 b(that)g(a)150 3608 y(function)24 +b(of)h(a)g(v)-5 b(ariable)37 b(that)g(a)150 5121 y(function)24 b(sees)g(dep)s(ends)f(on)h(its)g(v)-5 b(alue)25 b(within)e(its)i (caller,)i(if)d(an)m(y)-8 b(,)26 b(whether)e(that)g(caller)i(is)e(the)g -Ft(")p Fu(global)p Ft(")150 3718 y Fu(scop)s(e)41 b(or)g(another)g +Ft(")p Fu(global)p Ft(")150 5230 y Fu(scop)s(e)41 b(or)g(another)g (shell)g(function.)73 b(This)40 b(is)h(also)h(the)f(v)-5 b(alue)41 b(that)h(a)f(lo)s(cal)i(v)-5 b(ariable)41 b(declaration)150 -3828 y Ft(")p Fu(shado)m(ws)p Ft(")p Fu(,)30 b(and)g(the)g(v)-5 -b(alue)31 b(that)g(is)f(restored)h(when)e(the)i(function)f(returns.)275 -3959 y(F)-8 b(or)41 b(example,)j(if)d(a)g(v)-5 b(ariable)41 -b Fr(v)-5 b(ar)48 b Fu(is)40 b(declared)h(as)g(lo)s(cal)h(in)f -(function)f Fr(func1)p Fu(,)j(and)d Fr(func1)48 b Fu(calls)150 -4069 y(another)33 b(function)g Fr(func2)p Fu(,)g(references)g(to)h -Fr(v)-5 b(ar)39 b Fu(made)33 b(from)f(within)h Fr(func2)39 -b Fu(will)34 b(resolv)m(e)g(to)g(the)f(lo)s(cal)150 4178 -y(v)-5 b(ariable)31 b Fr(v)-5 b(ar)37 b Fu(from)30 b -Fr(func1)p Fu(,)g(shado)m(wing)h(an)m(y)f(global)i(v)-5 -b(ariable)31 b(named)f Fr(v)-5 b(ar)p Fu(.)275 4310 y(The)29 -b(follo)m(wing)j(script)f(demonstrates)f(this)h(b)s(eha)m(vior.)40 -b(When)31 b(executed,)g(the)g(script)f(displa)m(ys)390 -4441 y Ft(In)47 b(func2,)f(var)h(=)h(func1)e(local)390 -4573 y(func1\(\))390 4682 y({)581 4792 y(local)g(var='func1)f(local') -581 4902 y(func2)390 5011 y(})390 5230 y(func2\(\))390 -5340 y({)p eop end -%%Page: 20 26 -TeXDict begin 20 25 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)581 299 -y Ft(echo)47 b("In)f(func2,)h(var)f(=)i($var")390 408 -y(})390 628 y(var=global)390 737 y(func1)275 878 y Fu(The)32 -b Ft(unset)g Fu(builtin)g(also)i(acts)g(using)e(the)i(same)f(dynamic)g -(scop)s(e:)46 b(if)33 b(a)g(v)-5 b(ariable)34 b(is)f(lo)s(cal)h(to)g -(the)150 987 y(curren)m(t)i(scop)s(e,)h Ft(unset)e Fu(will)h(unset)g -(it;)j(otherwise)e(the)f(unset)f(will)h(refer)g(to)h(the)f(v)-5 -b(ariable)37 b(found)d(in)150 1097 y(an)m(y)j(calling)h(scop)s(e)f(as)g -(describ)s(ed)f(ab)s(o)m(v)m(e.)61 b(If)36 b(a)h(v)-5 -b(ariable)38 b(at)f(the)g(curren)m(t)g(lo)s(cal)h(scop)s(e)e(is)h -(unset,)h(it)150 1207 y(will)27 b(remain)h(so)f(un)m(til)g(it)h(is)f -(reset)h(in)f(that)g(scop)s(e)h(or)f(un)m(til)g(the)h(function)e -(returns.)39 b(Once)27 b(the)g(function)150 1316 y(returns,)34 -b(an)m(y)h(instance)g(of)f(the)g(v)-5 b(ariable)35 b(at)g(a)g(previous) -e(scop)s(e)i(will)f(b)s(ecome)h(visible.)52 b(If)34 b(the)g(unset)150 -1426 y(acts)e(on)f(a)h(v)-5 b(ariable)32 b(at)g(a)f(previous)g(scop)s -(e,)h(an)m(y)f(instance)h(of)f(a)h(v)-5 b(ariable)32 -b(with)f(that)h(name)f(that)h(had)150 1535 y(b)s(een)e(shado)m(w)m(ed)g -(will)h(b)s(ecome)g(visible.)275 1676 y(F)-8 b(unction)51 -b(names)f(and)g(de\014nitions)g(ma)m(y)i(b)s(e)e(listed)h(with)f(the)h -Ft(-f)f Fu(option)h(to)g(the)g Ft(declare)150 1786 y -Fu(\()p Ft(typeset)p Fu(\))35 b(builtin)g(command)h(\(see)h(Section)g -(4.2)g([Bash)f(Builtins],)i(page)f(51\).)59 b(The)35 -b Ft(-F)h Fu(option)g(to)150 1895 y Ft(declare)e Fu(or)i -Ft(typeset)e Fu(will)i(list)h(the)f(function)g(names)g(only)g(\(and)g -(optionally)h(the)f(source)g(\014le)h(and)150 2005 y(line)c(n)m(um)m(b) -s(er,)g(if)f(the)h Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled\).)49 -b(F)-8 b(unctions)33 b(ma)m(y)h(b)s(e)e(exp)s(orted)g(so)h(that)150 -2114 y(subshells)j(automatically)k(ha)m(v)m(e)f(them)e(de\014ned)f -(with)h(the)h Ft(-f)e Fu(option)i(to)g(the)g Ft(export)d -Fu(builtin)i(\(see)150 2224 y(Section)31 b(4.1)h([Bourne)e(Shell)g -(Builtins],)h(page)h(44\).)275 2365 y(F)-8 b(unctions)33 -b(ma)m(y)g(b)s(e)g(recursiv)m(e.)48 b(The)32 b Ft(FUNCNEST)f -Fu(v)-5 b(ariable)34 b(ma)m(y)f(b)s(e)f(used)g(to)i(limit)g(the)f -(depth)f(of)150 2474 y(the)27 b(function)f(call)i(stac)m(k)h(and)d -(restrict)h(the)g(n)m(um)m(b)s(er)f(of)h(function)f(in)m(v)m(o)s -(cations.)42 b(By)27 b(default,)g(no)g(limit)150 2584 -y(is)j(placed)h(on)g(the)f(n)m(um)m(b)s(er)f(of)i(recursiv)m(e)f -(calls.)150 2834 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150 -2993 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that) -f(stores)g(v)-5 b(alues.)39 b(It)23 b(can)h(b)s(e)f(a)g -Ft(name)p Fu(,)h(a)g(n)m(um)m(b)s(er,)f(or)h(one)f(of)h(the)f(sp)s -(ecial)150 3103 y(c)m(haracters)i(listed)e(b)s(elo)m(w.)39 -b(A)23 b Fr(v)-5 b(ariable)30 b Fu(is)23 b(a)g(parameter)h(denoted)f(b) -m(y)h(a)f Ft(name)p Fu(.)37 b(A)24 b(v)-5 b(ariable)24 -b(has)f(a)g Fr(v)-5 b(alue)150 3212 y Fu(and)33 b(zero)i(or)f(more)g -Fr(attributes)p Fu(.)52 b(A)m(ttributes)35 b(are)f(assigned)g(using)g -(the)g Ft(declare)e Fu(builtin)h(command)150 3322 y(\(see)e(the)g -(description)f(of)h(the)f Ft(declare)f Fu(builtin)h(in)g(Section)h(4.2) -g([Bash)g(Builtins],)g(page)g(51\).)275 3462 y(A)d(parameter)h(is)g -(set)g(if)f(it)h(has)f(b)s(een)g(assigned)h(a)g(v)-5 -b(alue.)40 b(The)28 b(n)m(ull)h(string)f(is)h(a)g(v)-5 -b(alid)28 b(v)-5 b(alue.)41 b(Once)150 3572 y(a)31 b(v)-5 -b(ariable)31 b(is)f(set,)i(it)e(ma)m(y)h(b)s(e)f(unset)g(only)h(b)m(y)f -(using)g(the)g Ft(unset)f Fu(builtin)h(command.)275 3713 -y(A)g(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)f(assigned)g(to)i(b)m(y)e(a)h -(statemen)m(t)h(of)e(the)h(form)390 3853 y Fj(name)p -Ft(=[)p Fj(value)p Ft(])150 3994 y Fu(If)j Fr(v)-5 b(alue)40 -b Fu(is)35 b(not)g(giv)m(en,)h(the)f(v)-5 b(ariable)35 -b(is)g(assigned)g(the)f(n)m(ull)h(string.)53 b(All)35 -b Fr(v)-5 b(alue)5 b Fu(s)35 b(undergo)f(tilde)h(ex-)150 -4103 y(pansion,)h(parameter)f(and)f(v)-5 b(ariable)36 -b(expansion,)f(command)g(substitution,)h(arithmetic)g(expansion,)150 -4213 y(and)k(quote)h(remo)m(v)-5 b(al)42 b(\(detailed)h(b)s(elo)m(w\).) -72 b(If)40 b(the)h(v)-5 b(ariable)41 b(has)g(its)g Ft(integer)e -Fu(attribute)i(set,)j(then)150 4323 y Fr(v)-5 b(alue)38 -b Fu(is)33 b(ev)-5 b(aluated)34 b(as)f(an)g(arithmetic)h(expression)f -(ev)m(en)h(if)e(the)h Ft($\(\(...)o(\)\))f Fu(expansion)h(is)g(not)g -(used)150 4432 y(\(see)e(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f -(page)h(31\).)42 b(W)-8 b(ord)31 b(splitting)g(is)g(not)f(p)s -(erformed,)f(with)150 4542 y(the)35 b(exception)h(of)f -Ft("$@")f Fu(as)h(explained)g(b)s(elo)m(w.)54 b(Filename)36 -b(expansion)f(is)g(not)g(p)s(erformed.)53 b(Assign-)150 -4651 y(men)m(t)33 b(statemen)m(ts)h(ma)m(y)f(also)g(app)s(ear)f(as)g -(argumen)m(ts)h(to)g(the)g Ft(alias)p Fu(,)e Ft(declare)p -Fu(,)g Ft(typeset)p Fu(,)g Ft(export)p Fu(,)150 4761 -y Ft(readonly)p Fu(,)38 b(and)g Ft(local)f Fu(builtin)h(commands)g(\()p -Fr(declaration)j Fu(commands\).)64 b(When)39 b(in)f Fm(posix)f -Fu(mo)s(de)150 4871 y(\(see)29 b(Section)h(6.11)g([Bash)f(POSIX)e(Mo)s -(de],)j(page)f(101\),)h(these)f(builtins)f(ma)m(y)h(app)s(ear)f(in)g(a) -h(command)150 4980 y(after)34 b(one)g(or)f(more)h(instances)g(of)f(the) -h Ft(command)d Fu(builtin)i(and)g(retain)h(these)g(assignmen)m(t)g -(statemen)m(t)150 5090 y(prop)s(erties.)275 5230 y(In)29 -b(the)h(con)m(text)i(where)d(an)h(assignmen)m(t)h(statemen)m(t)h(is)e -(assigning)g(a)h(v)-5 b(alue)30 b(to)h(a)f(shell)g(v)-5 -b(ariable)31 b(or)150 5340 y(arra)m(y)24 b(index)f(\(see)h(Section)g -(6.7)g([Arra)m(ys],)i(page)e(95\),)i(the)e(`)p Ft(+=)p -Fu(')f(op)s(erator)g(can)h(b)s(e)f(used)f(to)i(app)s(end)e(to)i(or)p +5340 y Ft(")p Fu(shado)m(ws)p Ft(")p Fu(,)30 b(and)g(the)g(v)-5 +b(alue)31 b(that)g(is)f(restored)h(when)e(the)i(function)f(returns.)p eop end %%Page: 21 27 TeXDict begin 21 26 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)150 299 -y(add)28 b(to)i(the)f(v)-5 b(ariable's)30 b(previous)e(v)-5 -b(alue.)41 b(This)28 b(includes)g(argumen)m(ts)i(to)f(builtin)g -(commands)f(suc)m(h)h(as)150 408 y Ft(declare)e Fu(that)i(accept)h -(assignmen)m(t)f(statemen)m(ts)h(\()p Fr(declaration)h -Fu(commands\).)40 b(When)28 b(`)p Ft(+=)p Fu(')h(is)f(applied)150 -518 y(to)d(a)f(v)-5 b(ariable)24 b(for)g(whic)m(h)f(the)h -Fr(in)m(teger)32 b Fu(attribute)24 b(has)g(b)s(een)f(set,)j -Fr(v)-5 b(alue)29 b Fu(is)24 b(ev)-5 b(aluated)25 b(as)f(an)g -(arithmetic)150 628 y(expression)30 b(and)f(added)g(to)i(the)f(v)-5 -b(ariable's)30 b(curren)m(t)g(v)-5 b(alue,)31 b(whic)m(h)e(is)h(also)h -(ev)-5 b(aluated.)42 b(When)29 b(`)p Ft(+=)p Fu(')h(is)150 -737 y(applied)25 b(to)h(an)f(arra)m(y)h(v)-5 b(ariable)26 -b(using)f(comp)s(ound)f(assignmen)m(t)i(\(see)g(Section)g(6.7)g([Arra)m -(ys],)h(page)f(95\),)150 847 y(the)33 b(v)-5 b(ariable's)33 -b(v)-5 b(alue)33 b(is)g(not)g(unset)f(\(as)h(it)g(is)g(when)e(using)i -(`)p Ft(=)p Fu('\),)g(and)f(new)g(v)-5 b(alues)33 b(are)g(app)s(ended)e -(to)150 956 y(the)26 b(arra)m(y)h(b)s(eginning)e(at)i(one)f(greater)h -(than)f(the)g(arra)m(y's)h(maxim)m(um)f(index)f(\(for)i(indexed)e(arra) -m(ys\),)j(or)150 1066 y(added)c(as)i(additional)g(k)m(ey-v)-5 -b(alue)26 b(pairs)f(in)g(an)g(asso)s(ciativ)m(e)j(arra)m(y)-8 -b(.)40 b(When)24 b(applied)h(to)h(a)g(string-v)-5 b(alued)150 -1176 y(v)g(ariable,)31 b Fr(v)-5 b(alue)36 b Fu(is)31 -b(expanded)e(and)h(app)s(ended)f(to)i(the)f(v)-5 b(ariable's)32 -b(v)-5 b(alue.)275 1319 y(A)28 b(v)-5 b(ariable)29 b(can)f(b)s(e)f -(assigned)i(the)f Fr(nameref)45 b Fu(attribute)29 b(using)f(the)g -Ft(-n)f Fu(option)i(to)g(the)f Ft(declare)e Fu(or)150 -1428 y Ft(local)f Fu(builtin)h(commands)g(\(see)i(Section)f(4.2)h -([Bash)f(Builtins],)h(page)f(51\))h(to)f(create)i(a)e -Fr(nameref)p Fu(,)g(or)g(a)150 1538 y(reference)f(to)g(another)f(v)-5 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)275 299 +y(F)-8 b(or)38 b(example,)h(if)f(a)f(v)-5 b(ariable)38 +b Ft(var)f Fu(is)g(declared)h(as)f(lo)s(cal)i(in)e(function)g +Ft(func1)p Fu(,)g(and)g Ft(func1)f Fu(calls)150 408 y(another)29 +b(function)g Ft(func2)p Fu(,)f(references)i(to)f Ft(var)g +Fu(made)g(from)f(within)h Ft(func2)f Fu(will)h(resolv)m(e)i(to)e(the)h +(lo)s(cal)150 518 y(v)-5 b(ariable)31 b Ft(var)f Fu(from)g +Ft(func1)p Fu(,)f(shado)m(wing)h(an)m(y)h(global)h(v)-5 +b(ariable)31 b(named)f Ft(var)p Fu(.)275 650 y(The)f(follo)m(wing)j +(script)f(demonstrates)f(this)h(b)s(eha)m(vior.)40 b(When)31 +b(executed,)g(the)g(script)f(displa)m(ys)390 781 y Ft(In)47 +b(func2,)f(var)h(=)h(func1)e(local)390 913 y(func1\(\))390 +1022 y({)581 1132 y(local)g(var='func1)f(local')581 1241 +y(func2)390 1351 y(})390 1570 y(func2\(\))390 1680 y({)581 +1789 y(echo)i("In)f(func2,)h(var)f(=)i($var")390 1899 +y(})390 2118 y(var=global)390 2228 y(func1)275 2359 y +Fu(The)32 b Ft(unset)g Fu(builtin)g(also)i(acts)g(using)e(the)i(same)f +(dynamic)g(scop)s(e:)46 b(if)33 b(a)g(v)-5 b(ariable)34 +b(is)f(lo)s(cal)h(to)g(the)150 2469 y(curren)m(t)i(scop)s(e,)h +Ft(unset)e Fu(will)h(unset)g(it;)j(otherwise)e(the)f(unset)f(will)h +(refer)g(to)h(the)f(v)-5 b(ariable)37 b(found)d(in)150 +2578 y(an)m(y)27 b(calling)i(scop)s(e)e(as)g(describ)s(ed)f(ab)s(o)m(v) +m(e.)41 b(If)26 b(a)h(v)-5 b(ariable)28 b(at)g(the)f(curren)m(t)g(lo)s +(cal)h(scop)s(e)f(is)g(unset,)g(it)h(will)150 2688 y(remain)k(so)g +(\(app)s(earing)g(as)h(unset\))e(un)m(til)i(it)f(is)g(reset)h(in)f +(that)g(scop)s(e)h(or)f(un)m(til)g(the)g(function)g(returns.)150 +2798 y(Once)39 b(the)h(function)f(returns,)h(an)m(y)g(instance)g(of)f +(the)h(v)-5 b(ariable)40 b(at)g(a)g(previous)f(scop)s(e)g(will)h(b)s +(ecome)150 2907 y(visible.)k(If)31 b(the)h(unset)f(acts)h(on)g(a)g(v)-5 +b(ariable)32 b(at)g(a)g(previous)f(scop)s(e,)h(an)m(y)f(instance)i(of)e +(a)h(v)-5 b(ariable)32 b(with)150 3017 y(that)23 b(name)g(that)h(had)e +(b)s(een)g(shado)m(w)m(ed)h(will)g(b)s(ecome)h(visible)f(\(see)h(b)s +(elo)m(w)f(ho)m(w)g Ft(localvar_unset)p Fu(shell)150 +3126 y(option)31 b(c)m(hanges)g(this)f(b)s(eha)m(vior\).)275 +3258 y(F)-8 b(unction)51 b(names)f(and)g(de\014nitions)g(ma)m(y)i(b)s +(e)e(listed)h(with)f(the)h Ft(-f)f Fu(option)h(to)g(the)g +Ft(declare)150 3368 y Fu(\()p Ft(typeset)p Fu(\))43 b(builtin)h +(command)g(\(see)h(Section)g(4.2)g([Bash)g(Builtins],)j(page)d(55\).)83 +b(The)44 b Ft(-F)f Fu(option)150 3477 y(to)e Ft(declare)e +Fu(or)i Ft(typeset)e Fu(will)i(list)g(the)g(function)f(names)h(only)g +(\(and)f(optionally)i(the)f(source)g(\014le)150 3587 +y(and)g(line)h(n)m(um)m(b)s(er,)h(if)f(the)g Ft(extdebug)d +Fu(shell)j(option)g(is)g(enabled\).)75 b(F)-8 b(unctions)42 +b(ma)m(y)g(b)s(e)f(exp)s(orted)150 3696 y(so)i(that)g(c)m(hild)g(shell) +g(pro)s(cesses)g(\(those)g(created)h(when)e(executing)i(a)f(separate)h +(shell)f(in)m(v)m(o)s(cation\))150 3806 y(automatically)34 +b(ha)m(v)m(e)e(them)e(de\014ned)g(with)g(the)h Ft(-f)f +Fu(option)i(to)f(the)g Ft(export)e Fu(builtin)i(\(see)g(Section)h(4.1) +150 3916 y([Bourne)e(Shell)h(Builtins],)g(page)g(48\).)275 +4047 y(F)-8 b(unctions)33 b(ma)m(y)g(b)s(e)g(recursiv)m(e.)48 +b(The)32 b Ft(FUNCNEST)f Fu(v)-5 b(ariable)34 b(ma)m(y)f(b)s(e)f(used)g +(to)i(limit)g(the)f(depth)f(of)150 4157 y(the)27 b(function)f(call)i +(stac)m(k)h(and)d(restrict)h(the)g(n)m(um)m(b)s(er)f(of)h(function)f +(in)m(v)m(o)s(cations.)42 b(By)27 b(default,)g(no)g(limit)150 +4266 y(is)j(placed)h(on)g(the)f(n)m(um)m(b)s(er)f(of)i(recursiv)m(e)f +(calls.)150 4501 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150 +4660 y Fu(A)39 b Fr(parameter)45 b Fu(is)39 b(an)g(en)m(tit)m(y)h(that) +f(stores)g(v)-5 b(alues.)66 b(It)39 b(can)g(b)s(e)f(a)h +Ft(name)p Fu(,)h(a)f(n)m(um)m(b)s(er,)g(or)g(one)g(of)g(the)150 +4770 y(sp)s(ecial)c(c)m(haracters)h(listed)g(b)s(elo)m(w.)53 +b(A)35 b Fr(v)-5 b(ariable)41 b Fu(is)34 b(a)h(parameter)h(denoted)e(b) +m(y)h(a)g Ft(name)p Fu(.)52 b(A)35 b(v)-5 b(ariable)150 +4880 y(has)41 b(a)h Ft(value)d Fu(and)i(zero)h(or)f(more)g +Ft(attributes)p Fu(.)71 b(A)m(ttributes)42 b(are)f(assigned)h(using)f +(the)g Ft(declare)150 4989 y Fu(builtin)29 b(command)g(\(see)h(the)g +(description)f(of)g(the)h Ft(declare)d Fu(builtin)i(in)g(Section)h(4.2) +g([Bash)g(Builtins],)150 5099 y(page)h(55\).)275 5230 +y(A)d(parameter)h(is)g(set)g(if)f(it)h(has)f(b)s(een)g(assigned)h(a)g +(v)-5 b(alue.)40 b(The)28 b(n)m(ull)h(string)f(is)h(a)g(v)-5 +b(alid)28 b(v)-5 b(alue.)41 b(Once)150 5340 y(a)31 b(v)-5 +b(ariable)31 b(is)f(set,)i(it)e(ma)m(y)h(b)s(e)f(unset)g(only)h(b)m(y)f +(using)g(the)g Ft(unset)f Fu(builtin)h(command.)p eop +end +%%Page: 22 28 +TeXDict begin 22 27 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)275 299 +y(A)30 b(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)f(assigned)g(to)i(b)m(y)e +(a)h(statemen)m(t)h(of)e(the)h(form)390 471 y Fj(name)p +Ft(=[)p Fj(value)p Ft(])150 643 y Fu(If)43 b Fr(v)-5 +b(alue)49 b Fu(is)43 b(not)h(giv)m(en,)k(the)c(v)-5 b(ariable)44 +b(is)f(assigned)h(the)f(n)m(ull)h(string.)80 b(All)44 +b Fr(v)-5 b(alue)5 b Fu(s)43 b(undergo)g(tilde)150 753 +y(expansion,)25 b(parameter)f(and)f(v)-5 b(ariable)25 +b(expansion,)g(command)e(substitution,)i(arithmetic)g(expansion,)150 +862 y(and)i(quote)i(remo)m(v)-5 b(al)29 b(\(see)g(Section)f(3.5.3)i +([Shell)e(P)m(arameter)h(Expansion],)f(page)h(26\).)41 +b(If)27 b(the)h(v)-5 b(ariable)150 972 y(has)35 b(its)h +Ft(integer)e Fu(attribute)i(set,)i(then)d Fr(v)-5 b(alue)42 +b Fu(is)35 b(ev)-5 b(aluated)37 b(as)f(an)f(arithmetic)i(expression)f +(ev)m(en)g(if)150 1082 y(the)i Ft($\(\(...)n(\)\))f Fu(expansion)g(is)g +(not)h(used)e(\(see)j(Section)f(3.5.5)h([Arithmetic)f(Expansion],)h +(page)f(34\).)150 1191 y(W)-8 b(ord)26 b(splitting)h(and)e(\014lename)h +(expansion)g(are)g(not)h(p)s(erformed.)37 b(Assignmen)m(t)27 +b(statemen)m(ts)g(ma)m(y)g(also)150 1301 y(app)s(ear)22 +b(as)h(argumen)m(ts)g(to)h(the)f Ft(alias)p Fu(,)g Ft(declare)p +Fu(,)f Ft(typeset)p Fu(,)h Ft(export)p Fu(,)g Ft(readonly)p +Fu(,)f(and)g Ft(local)f Fu(builtin)150 1410 y(commands)31 +b(\()p Fr(declaration)j Fu(commands\).)44 b(When)32 b(in)f +Fm(posix)g Fu(mo)s(de)g(\(see)h(Section)h(6.11)g([Bash)f(POSIX)150 +1520 y(Mo)s(de],)h(page)f(106\),)i(these)e(builtins)f(ma)m(y)h(app)s +(ear)f(in)g(a)h(command)f(after)h(one)g(or)g(more)g(instances)g(of)150 +1630 y(the)f Ft(command)d Fu(builtin)i(and)g(retain)h(these)f +(assignmen)m(t)i(statemen)m(t)g(prop)s(erties.)275 1802 +y(In)d(the)h(con)m(text)i(where)d(an)h(assignmen)m(t)h(statemen)m(t)h +(is)e(assigning)g(a)h(v)-5 b(alue)30 b(to)h(a)f(shell)g(v)-5 +b(ariable)31 b(or)150 1911 y(arra)m(y)k(index)f(\(see)h(Section)g(6.7)g +([Arra)m(ys],)h(page)f(100\),)i(the)e(`)p Ft(+=)p Fu(')f(op)s(erator)g +(can)h(b)s(e)e(used)h(to)h(app)s(end)150 2021 y(to)h(or)g(add)e(to)j +(the)e(v)-5 b(ariable's)36 b(previous)f(v)-5 b(alue.)57 +b(This)34 b(includes)h(argumen)m(ts)h(to)g(builtin)f(commands)150 +2131 y(suc)m(h)29 b(as)g Ft(declare)e Fu(that)i(accept)h(assignmen)m(t) +g(statemen)m(ts)h(\(declaration)f(commands\).)41 b(When)28 +b(`)p Ft(+=)p Fu(')h(is)150 2240 y(applied)36 b(to)h(a)f(v)-5 +b(ariable)37 b(for)f(whic)m(h)f(the)i Ft(integer)d Fu(attribute)i(has)g +(b)s(een)g(set,)i Fr(v)-5 b(alue)41 b Fu(is)36 b(ev)-5 +b(aluated)38 b(as)150 2350 y(an)28 b(arithmetic)h(expression)f(and)f +(added)h(to)h(the)f(v)-5 b(ariable's)29 b(curren)m(t)e(v)-5 +b(alue,)30 b(whic)m(h)d(is)i(also)f(ev)-5 b(aluated.)150 +2459 y(When)43 b(`)p Ft(+=)p Fu(')g(is)h(applied)f(to)h(an)f(arra)m(y)h +(v)-5 b(ariable)44 b(using)f(comp)s(ound)e(assignmen)m(t)j(\(see)h +(Section)f(6.7)150 2569 y([Arra)m(ys],)g(page)d(100\),)k(the)c(v)-5 +b(ariable's)42 b(v)-5 b(alue)41 b(is)g(not)f(unset)h(\(as)g(it)g(is)g +(when)e(using)h(`)p Ft(=)p Fu('\),)k(and)c(new)150 2679 +y(v)-5 b(alues)27 b(are)g(app)s(ended)f(to)h(the)g(arra)m(y)h(b)s +(eginning)e(at)h(one)g(greater)i(than)d(the)h(arra)m(y's)h(maxim)m(um)e +(index)150 2788 y(\(for)32 b(indexed)g(arra)m(ys\),)i(or)e(added)f(as)i +(additional)g(k)m(ey-v)-5 b(alue)34 b(pairs)d(in)h(an)g(asso)s(ciativ)m +(e)j(arra)m(y)-8 b(.)47 b(When)150 2898 y(applied)27 +b(to)h(a)f(string-v)-5 b(alued)28 b(v)-5 b(ariable,)29 +b Fr(v)-5 b(alue)32 b Fu(is)c(expanded)e(and)h(app)s(ended)e(to)j(the)f +(v)-5 b(ariable's)28 b(v)-5 b(alue.)275 3070 y(A)28 b(v)-5 +b(ariable)28 b(can)h(b)s(e)e(assigned)h(the)h Ft(nameref)d +Fu(attribute)i(using)g(the)g Ft(-n)f Fu(option)i(to)g(the)f +Ft(declare)e Fu(or)150 3180 y Ft(local)f Fu(builtin)h(commands)g(\(see) +i(Section)f(4.2)h([Bash)f(Builtins],)h(page)f(55\))h(to)f(create)i(a)e +Fr(nameref)p Fu(,)g(or)g(a)150 3289 y(reference)f(to)g(another)f(v)-5 b(ariable.)40 b(This)24 b(allo)m(ws)j(v)-5 b(ariables)26 b(to)g(b)s(e)e(manipulated)h(indirectly)-8 b(.)40 b(Whenev)m(er)150 -1647 y(the)31 b(nameref)g(v)-5 b(ariable)32 b(is)f(referenced,)g +3399 y(the)31 b(nameref)g(v)-5 b(ariable)32 b(is)f(referenced,)g (assigned)h(to,)g(unset,)f(or)g(has)f(its)i(attributes)f(mo)s(di\014ed) -f(\(other)150 1757 y(than)c(using)g(or)h(c)m(hanging)g(the)g(nameref)f +f(\(other)150 3508 y(than)c(using)g(or)h(c)m(hanging)g(the)g(nameref)f (attribute)i(itself)7 b(\),)29 b(the)d(op)s(eration)h(is)g(actually)h -(p)s(erformed)d(on)150 1867 y(the)31 b(v)-5 b(ariable)31 +(p)s(erformed)d(on)150 3618 y(the)31 b(v)-5 b(ariable)31 b(sp)s(eci\014ed)f(b)m(y)g(the)h(nameref)f(v)-5 b(ariable's)31 b(v)-5 b(alue.)42 b(A)30 b(nameref)g(is)h(commonly)g(used)e(within)150 -1976 y(shell)h(functions)g(to)h(refer)f(to)h(a)f(v)-5 +3727 y(shell)h(functions)g(to)h(refer)f(to)h(a)f(v)-5 b(ariable)31 b(whose)f(name)h(is)f(passed)g(as)g(an)g(argumen)m(t)h(to) -g(the)f(function.)150 2086 y(F)-8 b(or)31 b(instance,)g(if)g(a)g(v)-5 +g(the)f(function.)150 3837 y(F)-8 b(or)31 b(instance,)g(if)g(a)g(v)-5 b(ariable)31 b(name)f(is)h(passed)e(to)j(a)e(shell)h(function)f(as)h -(its)f(\014rst)g(argumen)m(t,)h(running)390 2229 y Ft(declare)46 -b(-n)h(ref=$1)150 2372 y Fu(inside)31 b(the)h(function)f(creates)i(a)g -(nameref)e(v)-5 b(ariable)32 b Fr(ref)49 b Fu(whose)32 -b(v)-5 b(alue)32 b(is)g(the)f(v)-5 b(ariable)33 b(name)e(passed)150 -2481 y(as)e(the)h(\014rst)e(argumen)m(t.)41 b(References)30 -b(and)e(assignmen)m(ts)i(to)g Fr(ref)p Fu(,)f(and)g(c)m(hanges)h(to)g -(its)f(attributes,)i(are)150 2591 y(treated)g(as)f(references,)g +(its)f(\014rst)g(argumen)m(t,)h(running)390 4009 y Ft(declare)46 +b(-n)h(ref=$1)150 4181 y Fu(inside)30 b(the)g(function)g(creates)h(a)g +(nameref)f(v)-5 b(ariable)30 b Ft(ref)g Fu(whose)g(v)-5 +b(alue)30 b(is)g(the)g(v)-5 b(ariable)31 b(name)f(passed)150 +4291 y(as)c(the)h(\014rst)e(argumen)m(t.)40 b(References)26 +b(and)g(assignmen)m(ts)h(to)g Ft(ref)p Fu(,)f(and)f(c)m(hanges)i(to)g +(its)g(attributes,)h(are)150 4401 y(treated)j(as)f(references,)g (assignmen)m(ts,)h(and)e(attribute)i(mo)s(di\014cations)f(to)h(the)f(v) --5 b(ariable)30 b(whose)g(name)150 2701 y(w)m(as)h(passed)f(as)g -Ft($1)p Fu(.)275 2844 y(If)h(the)g(con)m(trol)i(v)-5 +-5 b(ariable)30 b(whose)g(name)150 4510 y(w)m(as)h(passed)f(as)g +Ft($1)p Fu(.)275 4682 y(If)h(the)g(con)m(trol)i(v)-5 b(ariable)32 b(in)g(a)f Ft(for)g Fu(lo)s(op)h(has)f(the)g(nameref)h (attribute,)g(the)g(list)g(of)g(w)m(ords)f(can)h(b)s(e)150 -2953 y(a)h(list)h(of)f(shell)g(v)-5 b(ariables,)34 b(and)e(a)i(name)f +4792 y(a)h(list)h(of)f(shell)g(v)-5 b(ariables,)34 b(and)e(a)i(name)f (reference)g(will)g(b)s(e)f(established)h(for)g(eac)m(h)h(w)m(ord)e(in) -h(the)g(list,)150 3063 y(in)c(turn,)g(when)g(the)h(lo)s(op)g(is)g +h(the)g(list,)150 4902 y(in)c(turn,)g(when)g(the)h(lo)s(op)g(is)g (executed.)41 b(Arra)m(y)30 b(v)-5 b(ariables)30 b(cannot)h(b)s(e)e -(giv)m(en)h(the)g(nameref)g(attribute.)150 3172 y(Ho)m(w)m(ev)m(er,)39 +(giv)m(en)h(the)g(nameref)g(attribute.)150 5011 y(Ho)m(w)m(ev)m(er,)39 b(nameref)d(v)-5 b(ariables)36 b(can)g(reference)g(arra)m(y)g(v)-5 b(ariables)37 b(and)e(subscripted)f(arra)m(y)i(v)-5 b(ariables.)150 -3282 y(Namerefs)36 b(can)f(b)s(e)g(unset)g(using)g(the)h +5121 y(Namerefs)36 b(can)f(b)s(e)g(unset)g(using)g(the)h Ft(-n)e Fu(option)i(to)g(the)g Ft(unset)e Fu(builtin)h(\(see)h(Section) -g(4.1)h([Bourne)150 3392 y(Shell)43 b(Builtins],)j(page)e(44\).)79 +g(4.1)h([Bourne)150 5230 y(Shell)43 b(Builtins],)j(page)e(48\).)79 b(Otherwise,)45 b(if)e Ft(unset)e Fu(is)i(executed)h(with)e(the)h(name) -g(of)g(a)g(nameref)150 3501 y(v)-5 b(ariable)31 b(as)g(an)f(argumen)m +g(of)g(a)g(nameref)150 5340 y(v)-5 b(ariable)31 b(as)g(an)f(argumen)m (t,)h(the)g(v)-5 b(ariable)31 b(referenced)f(b)m(y)g(the)h(nameref)f(v) --5 b(ariable)31 b(will)g(b)s(e)f(unset.)150 3709 y Fk(3.4.1)63 -b(P)m(ositional)41 b(P)m(arameters)150 3856 y Fu(A)28 -b Fr(p)s(ositional)h(parameter)35 b Fu(is)28 b(a)g(parameter)g(denoted) -g(b)m(y)g(one)g(or)g(more)g(digits,)h(other)g(than)e(the)h(single)150 -3965 y(digit)34 b Ft(0)p Fu(.)48 b(P)m(ositional)36 b(parameters)d(are) -g(assigned)h(from)e(the)i(shell's)f(argumen)m(ts)g(when)f(it)i(is)f(in) -m(v)m(ok)m(ed,)150 4075 y(and)38 b(ma)m(y)i(b)s(e)e(reassigned)i(using) -e(the)h Ft(set)g Fu(builtin)f(command.)67 b(P)m(ositional)41 -b(parameter)e Ft(N)g Fu(ma)m(y)h(b)s(e)150 4185 y(referenced)34 +-5 b(ariable)31 b(will)g(b)s(e)f(unset.)p eop end +%%Page: 23 29 +TeXDict begin 23 28 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)150 299 +y Fk(3.4.1)63 b(P)m(ositional)41 b(P)m(arameters)150 +446 y Fu(A)28 b Fr(p)s(ositional)h(parameter)35 b Fu(is)28 +b(a)g(parameter)g(denoted)g(b)m(y)g(one)g(or)g(more)g(digits,)h(other)g +(than)e(the)h(single)150 555 y(digit)34 b Ft(0)p Fu(.)48 +b(P)m(ositional)36 b(parameters)d(are)g(assigned)h(from)e(the)i +(shell's)f(argumen)m(ts)g(when)f(it)i(is)f(in)m(v)m(ok)m(ed,)150 +665 y(and)38 b(ma)m(y)i(b)s(e)e(reassigned)i(using)e(the)h +Ft(set)g Fu(builtin)f(command.)67 b(P)m(ositional)41 +b(parameter)e Ft(N)g Fu(ma)m(y)h(b)s(e)150 775 y(referenced)34 b(as)h Ft(${N})p Fu(,)g(or)f(as)h Ft($N)e Fu(when)h Ft(N)g Fu(consists)h(of)f(a)h(single)g(digit.)54 b(P)m(ositional)37 -b(parameters)d(ma)m(y)150 4294 y(not)j(b)s(e)f(assigned)h(to)g(with)f +b(parameters)d(ma)m(y)150 884 y(not)j(b)s(e)f(assigned)h(to)g(with)f (assignmen)m(t)i(statemen)m(ts.)61 b(The)36 b Ft(set)g Fu(and)g Ft(shift)f Fu(builtins)h(are)h(used)f(to)150 -4404 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h -(Builtin)g(Commands],)h(page)f(44\).)68 b(The)39 b(p)s(ositional)150 -4513 y(parameters)44 b(are)g(temp)s(orarily)g(replaced)h(when)e(a)h +994 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h +(Builtin)g(Commands],)h(page)f(48\).)68 b(The)39 b(p)s(ositional)150 +1103 y(parameters)44 b(are)g(temp)s(orarily)g(replaced)h(when)e(a)h (shell)g(function)g(is)g(executed)g(\(see)h(Section)g(3.3)150 -4623 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(18\).)275 -4766 y(When)c(a)i(p)s(ositional)g(parameter)g(consisting)f(of)h(more)f +1213 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(19\).)275 +1344 y(When)c(a)i(p)s(ositional)g(parameter)g(consisting)f(of)h(more)f (than)g(a)g(single)h(digit)g(is)f(expanded,)g(it)h(m)m(ust)150 -4876 y(b)s(e)h(enclosed)h(in)f(braces.)150 5083 y Fk(3.4.2)63 -b(Sp)s(ecial)41 b(P)m(arameters)150 5230 y Fu(The)d(shell)g(treats)h +1454 y(b)s(e)h(enclosed)h(in)f(braces.)150 1646 y Fk(3.4.2)63 +b(Sp)s(ecial)41 b(P)m(arameters)150 1793 y Fu(The)d(shell)g(treats)h (sev)m(eral)g(parameters)f(sp)s(ecially)-8 b(.)65 b(These)38 b(parameters)h(ma)m(y)f(only)g(b)s(e)g(referenced;)150 -5340 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)p -eop end -%%Page: 22 28 -TeXDict begin 22 27 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)150 299 -y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)h +1903 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)150 +2056 y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)h (parameters,)h(starting)f(from)f(one.)59 b(When)36 b(the)g(ex-)630 -408 y(pansion)h(is)h(not)g(within)f(double)g(quotes,)j(eac)m(h)f(p)s -(ositional)f(parameter)g(expands)f(to)i(a)630 518 y(separate)23 +2165 y(pansion)h(is)h(not)g(within)f(double)g(quotes,)j(eac)m(h)f(p)s +(ositional)f(parameter)g(expands)f(to)i(a)630 2275 y(separate)23 b(w)m(ord.)38 b(In)21 b(con)m(texts)j(where)e(it)g(is)h(p)s(erformed,)f (those)h(w)m(ords)e(are)i(sub)5 b(ject)22 b(to)h(fur-)630 -628 y(ther)k(w)m(ord)g(splitting)i(and)e(\014lename)g(expansion.)40 +2384 y(ther)k(w)m(ord)g(splitting)i(and)e(\014lename)g(expansion.)40 b(When)27 b(the)h(expansion)f(o)s(ccurs)g(within)630 -737 y(double)37 b(quotes,)k(it)d(expands)f(to)h(a)g(single)h(w)m(ord)e +2494 y(double)37 b(quotes,)k(it)d(expands)f(to)h(a)g(single)h(w)m(ord)e (with)h(the)f(v)-5 b(alue)39 b(of)f(eac)m(h)g(parameter)630 -847 y(separated)g(b)m(y)g(the)f(\014rst)g(c)m(haracter)i(of)f(the)g +2604 y(separated)g(b)m(y)g(the)f(\014rst)g(c)m(haracter)i(of)f(the)g Ft(IFS)f Fu(sp)s(ecial)h(v)-5 b(ariable.)63 b(That)38 -b(is,)h Ft("$*")e Fu(is)630 956 y(equiv)-5 b(alen)m(t)39 +b(is,)h Ft("$*")e Fu(is)630 2713 y(equiv)-5 b(alen)m(t)39 b(to)g Ft("$1)p Fj(c)p Ft($2)p Fj(c)p Ft(...)m(")p Fu(,)h(where)d Fr(c)44 b Fu(is)38 b(the)g(\014rst)g(c)m(haracter)h(of)f(the)g(v)-5 -b(alue)39 b(of)f(the)630 1066 y Ft(IFS)29 b Fu(v)-5 b(ariable.)41 +b(alue)39 b(of)f(the)630 2823 y Ft(IFS)29 b Fu(v)-5 b(ariable.)41 b(If)29 b Ft(IFS)g Fu(is)h(unset,)f(the)h(parameters)g(are)g(separated) -g(b)m(y)g(spaces.)41 b(If)29 b Ft(IFS)g Fu(is)630 1176 +g(b)m(y)g(spaces.)41 b(If)29 b Ft(IFS)g Fu(is)630 2932 y(n)m(ull,)i(the)f(parameters)h(are)g(joined)f(without)g(in)m(terv)m -(ening)i(separators.)150 1334 y Ft(@)432 b Fu(\($@\))43 +(ening)i(separators.)150 3085 y Ft(@)432 b Fu(\($@\))43 b(Expands)f(to)h(the)g(p)s(ositional)g(parameters,)k(starting)c(from)f -(one.)78 b(In)42 b(con)m(texts)630 1444 y(where)35 b(w)m(ord)h +(one.)78 b(In)42 b(con)m(texts)630 3195 y(where)35 b(w)m(ord)h (splitting)g(is)g(p)s(erformed,)g(this)g(expands)e(eac)m(h)j(p)s -(ositional)g(parameter)f(to)630 1553 y(a)d(separate)h(w)m(ord;)g(if)f +(ositional)g(parameter)f(to)630 3304 y(a)d(separate)h(w)m(ord;)g(if)f (not)g(within)g(double)f(quotes,)j(these)e(w)m(ords)g(are)g(sub)5 -b(ject)33 b(to)g(w)m(ord)630 1663 y(splitting.)60 b(In)36 +b(ject)33 b(to)g(w)m(ord)630 3414 y(splitting.)60 b(In)36 b(con)m(texts)j(where)d(w)m(ord)g(splitting)h(is)g(not)g(p)s(erformed,) -g(this)f(expands)g(to)630 1773 y(a)c(single)h(w)m(ord)e(with)h(eac)m(h) +g(this)f(expands)g(to)630 3523 y(a)c(single)h(w)m(ord)e(with)h(eac)m(h) h(p)s(ositional)g(parameter)f(separated)g(b)m(y)g(a)g(space.)46 -b(When)32 b(the)630 1882 y(expansion)i(o)s(ccurs)h(within)e(double)i +b(When)32 b(the)630 3633 y(expansion)i(o)s(ccurs)h(within)e(double)i (quotes,)h(and)e(w)m(ord)g(splitting)h(is)g(p)s(erformed,)f(eac)m(h)630 -1992 y(parameter)23 b(expands)f(to)i(a)f(separate)h(w)m(ord.)37 +3743 y(parameter)23 b(expands)f(to)i(a)f(separate)h(w)m(ord.)37 b(That)23 b(is,)i Ft("$@")c Fu(is)i(equiv)-5 b(alen)m(t)24 -b(to)g Ft("$1")29 b("$2")630 2101 y(...)o Fu(.)39 b(If)26 +b(to)g Ft("$1")29 b("$2")630 3852 y(...)o Fu(.)39 b(If)26 b(the)g(double-quoted)g(expansion)f(o)s(ccurs)h(within)f(a)h(w)m(ord,)h -(the)f(expansion)g(of)g(the)630 2211 y(\014rst)31 b(parameter)h(is)g +(the)f(expansion)g(of)g(the)630 3962 y(\014rst)31 b(parameter)h(is)g (joined)f(with)g(the)h(b)s(eginning)f(part)h(of)f(the)h(original)h(w)m -(ord,)f(and)f(the)630 2321 y(expansion)25 b(of)g(the)h(last)g +(ord,)f(and)f(the)630 4071 y(expansion)25 b(of)g(the)h(last)g (parameter)f(is)h(joined)f(with)g(the)g(last)h(part)f(of)g(the)h -(original)g(w)m(ord.)630 2430 y(When)i(there)g(are)g(no)g(p)s +(original)g(w)m(ord.)630 4181 y(When)i(there)g(are)g(no)g(p)s (ositional)g(parameters,)h Ft("$@")e Fu(and)g Ft($@)h -Fu(expand)f(to)h(nothing)g(\(i.e.,)630 2540 y(they)j(are)f(remo)m(v)m -(ed\).)150 2698 y Ft(#)432 b Fu(\($#\))31 b(Expands)e(to)i(the)g(n)m +Fu(expand)f(to)h(nothing)g(\(i.e.,)630 4291 y(they)j(are)f(remo)m(v)m +(ed\).)150 4443 y Ft(#)432 b Fu(\($#\))31 b(Expands)e(to)i(the)g(n)m (um)m(b)s(er)e(of)h(p)s(ositional)i(parameters)e(in)g(decimal.)150 -2857 y Ft(?)432 b Fu(\($?\))88 b(Expands)45 b(to)h(the)g(exit)h(status) +4596 y Ft(?)432 b Fu(\($?\))88 b(Expands)45 b(to)h(the)g(exit)h(status) f(of)g(the)g(most)h(recen)m(tly)g(executed)g(foreground)630 -2967 y(pip)s(eline.)150 3125 y Ft(-)432 b Fu(\($-,)24 +4706 y(pip)s(eline.)150 4858 y Ft(-)432 b Fu(\($-,)24 b(a)e(h)m(yphen.\))37 b(Expands)20 b(to)i(the)f(curren)m(t)h(option)f (\015ags)h(as)f(sp)s(eci\014ed)g(up)s(on)f(in)m(v)m(o)s(cation,)630 -3235 y(b)m(y)38 b(the)h Ft(set)f Fu(builtin)g(command,)j(or)d(those)i +4968 y(b)m(y)38 b(the)h Ft(set)f Fu(builtin)g(command,)j(or)d(those)i (set)f(b)m(y)f(the)h(shell)g(itself)g(\(suc)m(h)g(as)g(the)g -Ft(-i)630 3344 y Fu(option\).)150 3503 y Ft($)432 b Fu(\($$\))31 -b(Expands)d(to)j(the)e(pro)s(cess)h Fm(id)f Fu(of)h(the)g(shell.)41 -b(In)28 b(a)i Ft(\(\))f Fu(subshell,)h(it)g(expands)e(to)j(the)630 -3613 y(pro)s(cess)f Fm(id)g Fu(of)h(the)g(in)m(v)m(oking)g(shell,)g -(not)g(the)f(subshell.)150 3771 y Ft(!)432 b Fu(\($!\))51 -b(Expands)32 b(to)i(the)g(pro)s(cess)f Fm(id)h Fu(of)f(the)h(job)f -(most)h(recen)m(tly)h(placed)f(in)m(to)g(the)g(bac)m(k-)630 -3881 y(ground,)26 b(whether)g(executed)g(as)h(an)f(async)m(hronous)f -(command)h(or)g(using)g(the)g Ft(bg)f Fu(builtin)630 -3990 y(\(see)31 b(Section)h(7.2)f([Job)f(Con)m(trol)h(Builtins],)g -(page)h(108\).)150 4149 y Ft(0)432 b Fu(\($0\))46 b(Expands)d(to)i(the) -g(name)g(of)f(the)h(shell)g(or)f(shell)h(script.)83 b(This)44 -b(is)g(set)h(at)h(shell)630 4259 y(initialization.)d(If)27 +Ft(-i)630 5078 y Fu(option\).)150 5230 y Ft($)432 b Fu(\($$\))39 +b(Expands)c(to)j(the)f(pro)s(cess)g Fm(id)g Fu(of)g(the)g(shell.)61 +b(In)36 b(a)h(subshell,)h(it)g(expands)e(to)i(the)630 +5340 y(pro)s(cess)30 b Fm(id)g Fu(of)h(the)g(in)m(v)m(oking)g(shell,)g +(not)g(the)f(subshell.)p eop end +%%Page: 24 30 +TeXDict begin 24 29 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(24)150 299 +y Ft(!)432 b Fu(\($!\))51 b(Expands)32 b(to)i(the)g(pro)s(cess)f +Fm(id)h Fu(of)f(the)h(job)f(most)h(recen)m(tly)h(placed)f(in)m(to)g +(the)g(bac)m(k-)630 408 y(ground,)26 b(whether)g(executed)g(as)h(an)f +(async)m(hronous)f(command)h(or)g(using)g(the)g Ft(bg)f +Fu(builtin)630 518 y(\(see)31 b(Section)h(7.2)f([Job)f(Con)m(trol)h +(Builtins],)g(page)h(114\).)150 675 y Ft(0)432 b Fu(\($0\))46 +b(Expands)d(to)i(the)g(name)g(of)f(the)h(shell)g(or)f(shell)h(script.) +83 b(This)44 b(is)g(set)h(at)h(shell)630 785 y(initialization.)d(If)27 b(Bash)h(is)g(in)m(v)m(ok)m(ed)h(with)e(a)i(\014le)e(of)h(commands)g -(\(see)g(Section)h(3.8)g([Shell)630 4368 y(Scripts],)g(page)g(42\),)h +(\(see)g(Section)h(3.8)g([Shell)630 894 y(Scripts],)g(page)g(46\),)h Ft($0)e Fu(is)h(set)g(to)g(the)f(name)h(of)f(that)h(\014le.)41 -b(If)28 b(Bash)g(is)h(started)g(with)f(the)630 4478 y +b(If)28 b(Bash)g(is)h(started)g(with)f(the)630 1004 y Ft(-c)i Fu(option)h(\(see)h(Section)g(6.1)f([In)m(v)m(oking)h(Bash],)g -(page)f(86\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the)f(\014rst)630 -4587 y(argumen)m(t)g(after)g(the)g(string)g(to)g(b)s(e)f(executed,)i +(page)f(91\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the)f(\014rst)630 +1113 y(argumen)m(t)g(after)g(the)g(string)g(to)g(b)s(e)f(executed,)i (if)f(one)g(is)f(presen)m(t.)42 b(Otherwise,)31 b(it)g(is)f(set)630 -4697 y(to)h(the)g(\014lename)f(used)g(to)h(in)m(v)m(ok)m(e)h(Bash,)f -(as)g(giv)m(en)g(b)m(y)f(argumen)m(t)h(zero.)150 4937 -y Fs(3.5)68 b(Shell)45 b(Expansions)150 5096 y Fu(Expansion)27 +1223 y(to)h(the)g(\014lename)f(used)g(to)h(in)m(v)m(ok)m(e)h(Bash,)f +(as)g(giv)m(en)g(b)m(y)f(argumen)m(t)h(zero.)150 1461 +y Fs(3.5)68 b(Shell)45 b(Expansions)150 1621 y Fu(Expansion)27 b(is)i(p)s(erformed)d(on)i(the)g(command)g(line)h(after)f(it)h(has)f(b) s(een)f(split)h(in)m(to)i Ft(token)p Fu(s.)38 b(There)28 -b(are)150 5206 y(sev)m(en)j(kinds)e(of)i(expansion)f(p)s(erformed:)225 -5340 y Fq(\017)60 b Fu(brace)31 b(expansion)p eop end -%%Page: 23 29 -TeXDict begin 23 28 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)225 299 -y Fq(\017)60 b Fu(tilde)31 b(expansion)225 436 y Fq(\017)60 +b(are)150 1730 y(sev)m(en)j(kinds)e(of)i(expansion)f(p)s(erformed:)225 +1863 y Fq(\017)60 b Fu(brace)31 b(expansion)225 1997 +y Fq(\017)60 b Fu(tilde)31 b(expansion)225 2130 y Fq(\017)60 b Fu(parameter)31 b(and)f(v)-5 b(ariable)31 b(expansion)225 -574 y Fq(\017)60 b Fu(command)30 b(substitution)225 711 -y Fq(\017)60 b Fu(arithmetic)32 b(expansion)225 849 y -Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 986 y Fq(\017)60 -b Fu(\014lename)31 b(expansion)275 1155 y(The)24 b(order)h(of)h -(expansions)f(is:)39 b(brace)25 b(expansion;)j(tilde)e(expansion,)g -(parameter)g(and)f(v)-5 b(ariable)26 b(ex-)150 1264 y(pansion,)j -(arithmetic)i(expansion,)f(and)f(command)g(substitution)g(\(done)g(in)h -(a)f(left-to-righ)m(t)k(fashion\);)150 1374 y(w)m(ord)d(splitting;)h -(and)f(\014lename)h(expansion.)275 1515 y(On)42 b(systems)h(that)h(can) -g(supp)s(ort)e(it,)47 b(there)d(is)f(an)h(additional)g(expansion)f(a)m -(v)-5 b(ailable:)69 b Fr(pro)s(cess)150 1624 y(substitution)p -Fu(.)50 b(This)33 b(is)h(p)s(erformed)e(at)j(the)f(same)g(time)g(as)g -(tilde,)i(parameter,)f(v)-5 b(ariable,)35 b(and)f(arith-)150 -1734 y(metic)d(expansion)g(and)e(command)i(substitution.)275 -1874 y(After)f(these)h(expansions)f(are)g(p)s(erformed,)f(quote)i(c)m +2263 y Fq(\017)60 b Fu(command)30 b(substitution)225 +2396 y Fq(\017)60 b Fu(arithmetic)32 b(expansion)225 +2529 y Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 2663 +y Fq(\017)60 b Fu(\014lename)31 b(expansion)275 2820 +y(The)24 b(order)h(of)h(expansions)f(is:)39 b(brace)25 +b(expansion;)j(tilde)e(expansion,)g(parameter)g(and)f(v)-5 +b(ariable)26 b(ex-)150 2929 y(pansion,)j(arithmetic)i(expansion,)f(and) +f(command)g(substitution)g(\(done)g(in)h(a)f(left-to-righ)m(t)k +(fashion\);)150 3039 y(w)m(ord)d(splitting;)h(and)f(\014lename)h +(expansion.)275 3172 y(On)c(systems)h(that)h(can)g(supp)s(ort)e(it,)i +(there)g(is)f(an)g(additional)i(expansion)e(a)m(v)-5 +b(ailable:)42 b Fr(pro)s(cess)28 b(sub-)150 3282 y(stitution)p +Fu(.)42 b(This)30 b(is)g(p)s(erformed)f(at)j(the)e(same)h(time)h(as)e +(tilde,)i(parameter,)f(v)-5 b(ariable,)32 b(and)e(arithmetic)150 +3391 y(expansion)g(and)g(command)g(substitution.)275 +3524 y(After)g(these)h(expansions)f(are)g(p)s(erformed,)f(quote)i(c)m (haracters)h(presen)m(t)e(in)g(the)g(original)i(w)m(ord)e(are)150 -1984 y(remo)m(v)m(ed)h(unless)f(they)h(ha)m(v)m(e)g(b)s(een)f(quoted)g +3634 y(remo)m(v)m(ed)h(unless)f(they)h(ha)m(v)m(e)g(b)s(een)f(quoted)g (themselv)m(es)i(\()p Fr(quote)f(remo)m(v)-5 b(al)t Fu(\).)275 -2124 y(Only)31 b(brace)i(expansion,)h(w)m(ord)e(splitting,)i(and)e +3767 y(Only)31 b(brace)i(expansion,)h(w)m(ord)e(splitting,)i(and)e (\014lename)h(expansion)f(can)h(increase)g(the)g(n)m(um)m(b)s(er)150 -2234 y(of)24 b(w)m(ords)g(of)g(the)h(expansion;)h(other)e(expansions)g +3877 y(of)24 b(w)m(ords)g(of)g(the)h(expansion;)h(other)e(expansions)g (expand)g(a)g(single)h(w)m(ord)f(to)h(a)f(single)h(w)m(ord.)38 -b(The)24 b(only)150 2344 y(exceptions)i(to)f(this)g(are)g(the)g +b(The)24 b(only)150 3986 y(exceptions)i(to)f(this)g(are)g(the)g (expansions)g(of)g Ft("$@")f Fu(and)g Ft($*)g Fu(\(see)i(Section)f -(3.4.2)i([Sp)s(ecial)e(P)m(arameters],)150 2453 y(page)31 -b(21\),)h(and)e Ft("${)p Fj(name)p Ft([@]}")d Fu(and)i +(3.4.2)i([Sp)s(ecial)e(P)m(arameters],)150 4096 y(page)31 +b(23\),)h(and)e Ft("${)p Fj(name)p Ft([@]}")d Fu(and)i Ft(${)p Fj(name)p Ft([*]})f Fu(\(see)j(Section)h(6.7)f([Arra)m(ys],)g -(page)g(95\).)275 2594 y(After)41 b(all)i(expansions,)h +(page)g(100\).)275 4229 y(After)41 b(all)i(expansions,)h Ft(quote)29 b(removal)40 b Fu(\(see)i(Section)h(3.5.9)g([Quote)f(Remo)m -(v)-5 b(al],)47 b(page)42 b(35\))h(is)150 2703 y(p)s(erformed.)150 -2908 y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 3055 y +(v)-5 b(al],)47 b(page)42 b(38\))h(is)150 4339 y(p)s(erformed.)150 +4535 y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 4682 y Fu(Brace)32 b(expansion)f(is)f(a)i(mec)m(hanism)f(b)m(y)f(whic)m(h)h (arbitrary)f(strings)h(ma)m(y)g(b)s(e)f(generated.)43 -b(This)30 b(mec)m(h-)150 3165 y(anism)35 b(is)h(similar)f(to)h +b(This)30 b(mec)m(h-)150 4792 y(anism)35 b(is)h(similar)f(to)h Fr(\014lename)g(expansion)f Fu(\(see)i(Section)f(3.5.8)h([Filename)g -(Expansion],)f(page)g(33\),)150 3275 y(but)26 b(the)h(\014lenames)g +(Expansion],)f(page)g(35\),)150 4902 y(but)26 b(the)h(\014lenames)g (generated)h(need)f(not)g(exist.)40 b(P)m(atterns)28 b(to)f(b)s(e)g(brace)g(expanded)f(tak)m(e)i(the)f(form)g(of)150 -3384 y(an)j(optional)h Fr(pream)m(ble)p Fu(,)g(follo)m(w)m(ed)g(b)m(y)f +5011 y(an)j(optional)h Fr(pream)m(ble)p Fu(,)g(follo)m(w)m(ed)g(b)m(y)f (either)g(a)h(series)f(of)g(comma-separated)i(strings)d(or)h(a)h -(sequence)150 3494 y(expression)36 b(b)s(et)m(w)m(een)g(a)h(pair)e(of)i +(sequence)150 5121 y(expression)36 b(b)s(et)m(w)m(een)g(a)h(pair)e(of)i (braces,)g(follo)m(w)m(ed)h(b)m(y)e(an)g(optional)h Fr(p)s(ostscript)p -Fu(.)57 b(The)36 b(pream)m(ble)g(is)150 3603 y(pre\014xed)28 +Fu(.)57 b(The)36 b(pream)m(ble)g(is)150 5230 y(pre\014xed)28 b(to)h(eac)m(h)h(string)f(con)m(tained)h(within)e(the)h(braces,)g(and)g (the)g(p)s(ostscript)f(is)h(then)f(app)s(ended)f(to)150 -3713 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ) -m(t.)275 3853 y(Brace)37 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)59 +5340 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ) +m(t.)p eop end +%%Page: 25 31 +TeXDict begin 25 30 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)275 299 +y(Brace)37 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)59 b(The)36 b(results)g(of)h(eac)m(h)g(expanded)f(string)g(are)h(not)g -(sorted;)150 3963 y(left)31 b(to)g(righ)m(t)g(order)f(is)g(preserv)m -(ed.)41 b(F)-8 b(or)31 b(example,)390 4104 y Ft(bash$)46 -b(echo)h(a{d,c,b}e)390 4213 y(ade)g(ace)g(abe)275 4354 +(sorted;)150 408 y(left)31 b(to)g(righ)m(t)g(order)f(is)g(preserv)m +(ed.)41 b(F)-8 b(or)31 b(example,)390 537 y Ft(bash$)46 +b(echo)h(a{d,c,b}e)390 647 y(ade)g(ace)g(abe)275 776 y Fu(A)23 b(sequence)g(expression)g(tak)m(es)i(the)e(form)g Ft({)p Fj(x)p Ft(..)p Fj(y)p Ft([..)p Fj(incr)p Ft(]})p Fu(,)e(where)i Fr(x)29 b Fu(and)23 b Fr(y)30 b Fu(are)24 -b(either)g(in)m(tegers)150 4463 y(or)42 b(single)h(c)m(haracters,)48 -b(and)41 b Fr(incr)p Fu(,)46 b(an)c(optional)i(incremen)m(t,)i(is)c(an) -h(in)m(teger.)78 b(When)42 b(in)m(tegers)i(are)150 4573 -y(supplied,)f(the)f(expression)f(expands)f(to)i(eac)m(h)h(n)m(um)m(b)s -(er)d(b)s(et)m(w)m(een)i Fr(x)47 b Fu(and)41 b Fr(y)p -Fu(,)j(inclusiv)m(e.)75 b(Supplied)150 4682 y(in)m(tegers)33 -b(ma)m(y)e(b)s(e)g(pre\014xed)f(with)h(`)p Ft(0)p Fu(')h(to)g(force)g -(eac)m(h)g(term)g(to)g(ha)m(v)m(e)g(the)g(same)g(width.)42 -b(When)31 b(either)150 4792 y Fr(x)43 b Fu(or)36 b Fr(y)44 -b Fu(b)s(egins)36 b(with)g(a)h(zero,)i(the)e(shell)g(attempts)g(to)g -(force)g(all)h(generated)f(terms)g(to)g(con)m(tain)h(the)150 -4902 y(same)e(n)m(um)m(b)s(er)e(of)i(digits,)i(zero-padding)d(where)h -(necessary)-8 b(.)57 b(When)35 b(c)m(haracters)i(are)f(supplied,)g(the) -150 5011 y(expression)24 b(expands)g(to)h(eac)m(h)h(c)m(haracter)g -(lexicographically)h(b)s(et)m(w)m(een)e Fr(x)30 b Fu(and)24 -b Fr(y)p Fu(,)i(inclusiv)m(e,)h(using)d(the)150 5121 -y(default)32 b(C)g(lo)s(cale.)48 b(Note)34 b(that)f(b)s(oth)e -Fr(x)39 b Fu(and)31 b Fr(y)40 b Fu(m)m(ust)32 b(b)s(e)g(of)g(the)h -(same)f(t)m(yp)s(e.)47 b(When)32 b(the)g(incremen)m(t)150 -5230 y(is)d(supplied,)g(it)h(is)f(used)f(as)i(the)f(di\013erence)h(b)s -(et)m(w)m(een)g(eac)m(h)g(term.)41 b(The)29 b(default)g(incremen)m(t)h -(is)f(1)h(or)f(-1)150 5340 y(as)i(appropriate.)p eop -end -%%Page: 24 30 -TeXDict begin 24 29 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(24)275 299 -y(Brace)36 b(expansion)g(is)f(p)s(erformed)f(b)s(efore)h(an)m(y)h -(other)g(expansions,)h(and)e(an)m(y)g(c)m(haracters)i(sp)s(ecial)150 -408 y(to)32 b(other)g(expansions)g(are)g(preserv)m(ed)f(in)h(the)f -(result.)45 b(It)32 b(is)g(strictly)g(textual.)46 b(Bash)32 -b(do)s(es)f(not)h(apply)150 518 y(an)m(y)27 b(syn)m(tactic)i(in)m -(terpretation)g(to)f(the)f(con)m(text)i(of)e(the)g(expansion)g(or)g -(the)h(text)g(b)s(et)m(w)m(een)f(the)h(braces.)275 656 -y(A)h(correctly-formed)i(brace)f(expansion)f(m)m(ust)h(con)m(tain)h -(unquoted)e(op)s(ening)g(and)g(closing)i(braces,)150 -766 y(and)h(at)i(least)g(one)f(unquoted)g(comma)g(or)g(a)h(v)-5 +b(either)g(in)m(tegers)150 886 y(or)34 b(letters,)i(and)d +Fr(incr)p Fu(,)h(an)g(optional)g(incremen)m(t,)i(is)d(an)h(in)m(teger.) +52 b(When)33 b(in)m(tegers)i(are)f(supplied,)g(the)150 +995 y(expression)f(expands)f(to)i(eac)m(h)g(n)m(um)m(b)s(er)e(b)s(et)m +(w)m(een)i Fr(x)39 b Fu(and)33 b Fr(y)p Fu(,)h(inclusiv)m(e.)50 +b(Supplied)31 b(in)m(tegers)k(ma)m(y)f(b)s(e)150 1105 +y(pre\014xed)h(with)h(`)p Ft(0)p Fu(')g(to)h(force)g(eac)m(h)h(term)e +(to)h(ha)m(v)m(e)g(the)g(same)g(width.)57 b(When)36 b(either)h +Fr(x)42 b Fu(or)37 b Fr(y)43 b Fu(b)s(egins)150 1214 +y(with)37 b(a)h(zero,)j(the)c(shell)h(attempts)h(to)f(force)g(all)g +(generated)h(terms)e(to)i(con)m(tain)g(the)e(same)h(n)m(um)m(b)s(er)150 +1324 y(of)30 b(digits,)h(zero-padding)f(where)f(necessary)-8 +b(.)41 b(When)30 b(letters)g(are)h(supplied,)d(the)i(expression)g +(expands)150 1433 y(to)k(eac)m(h)g(c)m(haracter)h(lexicographically)h +(b)s(et)m(w)m(een)e Fr(x)40 b Fu(and)32 b Fr(y)p Fu(,)i(inclusiv)m(e,)i +(using)c(the)i(default)f(C)g(lo)s(cale.)150 1543 y(Note)f(that)f(b)s +(oth)f Fr(x)37 b Fu(and)30 b Fr(y)38 b Fu(m)m(ust)31 +b(b)s(e)f(of)h(the)g(same)g(t)m(yp)s(e)g(\(in)m(teger)h(or)f(letter\).) +43 b(When)30 b(the)h(incremen)m(t)150 1653 y(is)e(supplied,)g(it)h(is)f +(used)f(as)i(the)f(di\013erence)h(b)s(et)m(w)m(een)g(eac)m(h)g(term.)41 +b(The)29 b(default)g(incremen)m(t)h(is)f(1)h(or)f(-1)150 +1762 y(as)i(appropriate.)275 1891 y(Brace)36 b(expansion)g(is)f(p)s +(erformed)f(b)s(efore)h(an)m(y)h(other)g(expansions,)h(and)e(an)m(y)g +(c)m(haracters)i(sp)s(ecial)150 2001 y(to)32 b(other)g(expansions)g +(are)g(preserv)m(ed)f(in)h(the)f(result.)45 b(It)32 b(is)g(strictly)g +(textual.)46 b(Bash)32 b(do)s(es)f(not)h(apply)150 2110 +y(an)m(y)27 b(syn)m(tactic)i(in)m(terpretation)g(to)f(the)f(con)m(text) +i(of)e(the)g(expansion)g(or)g(the)h(text)g(b)s(et)m(w)m(een)f(the)h +(braces.)275 2239 y(A)h(correctly-formed)i(brace)f(expansion)f(m)m(ust) +h(con)m(tain)h(unquoted)e(op)s(ening)g(and)g(closing)i(braces,)150 +2349 y(and)h(at)i(least)g(one)f(unquoted)g(comma)g(or)g(a)h(v)-5 b(alid)33 b(sequence)g(expression.)48 b(An)m(y)33 b(incorrectly)h -(formed)150 875 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275 -1013 y(A)25 b Fi({)h Fu(or)f(`)p Ft(,)p Fu(')g(ma)m(y)h(b)s(e)f(quoted) +(formed)150 2458 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275 +2587 y(A)25 b Fi({)h Fu(or)f(`)p Ft(,)p Fu(')g(ma)m(y)h(b)s(e)f(quoted) h(with)f(a)g(bac)m(kslash)h(to)g(prev)m(en)m(t)g(its)g(b)s(eing)f -(considered)g(part)g(of)h(a)g(brace)150 1123 y(expression.)51 +(considered)g(part)g(of)h(a)g(brace)150 2697 y(expression.)51 b(T)-8 b(o)34 b(a)m(v)m(oid)i(con\015icts)e(with)g(parameter)g (expansion,)h(the)f(string)g(`)p Ft(${)p Fu(')g(is)g(not)g(considered) -150 1232 y(eligible)e(for)e(brace)h(expansion,)f(and)g(inhibits)g +150 2807 y(eligible)e(for)e(brace)h(expansion,)f(and)g(inhibits)g (brace)h(expansion)f(un)m(til)g(the)h(closing)h(`)p Ft(})p -Fu('.)275 1370 y(This)e(construct)h(is)g(t)m(ypically)i(used)d(as)h +Fu('.)275 2936 y(This)e(construct)h(is)g(t)m(ypically)i(used)d(as)h (shorthand)f(when)g(the)h(common)g(pre\014x)f(of)h(the)g(strings)g(to) -150 1480 y(b)s(e)f(generated)h(is)g(longer)g(than)f(in)g(the)g(ab)s(o)m -(v)m(e)i(example:)390 1618 y Ft(mkdir)46 b(/usr/local/src/bash/{old,n)o -(ew,)o(dist)o(,bug)o(s})275 1756 y Fu(or)390 1894 y Ft(chown)g(root)h +150 3045 y(b)s(e)f(generated)h(is)g(longer)g(than)f(in)g(the)g(ab)s(o)m +(v)m(e)i(example:)390 3174 y Ft(mkdir)46 b(/usr/local/src/bash/{old,n)o +(ew,)o(dist)o(,bug)o(s})275 3303 y Fu(or)390 3432 y Ft(chown)g(root)h (/usr/{ucb/{ex,edit},lib/)o({ex?)o(.?*,)o(how)o(_ex})o(})150 -2097 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)150 2243 y +3620 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)150 3767 y Fu(If)29 b(a)h(w)m(ord)g(b)s(egins)f(with)g(an)h(unquoted)f(tilde)h(c)m (haracter)h(\(`)p Ft(~)p Fu('\),)g(all)g(of)f(the)g(c)m(haracters)h(up) -d(to)j(the)f(\014rst)150 2353 y(unquoted)24 b(slash)g(\(or)h(all)h(c)m +d(to)j(the)f(\014rst)150 3877 y(unquoted)24 b(slash)g(\(or)h(all)h(c)m (haracters,)h(if)e(there)g(is)f(no)h(unquoted)e(slash\))i(are)g -(considered)g(a)g Fr(tilde-pre\014x)p Fu(.)150 2463 y(If)38 +(considered)g(a)g Fr(tilde-pre\014x)p Fu(.)150 3986 y(If)38 b(none)g(of)g(the)h(c)m(haracters)g(in)f(the)h(tilde-pre\014x)f(are)h (quoted,)h(the)f(c)m(haracters)h(in)d(the)i(tilde-pre\014x)150 -2572 y(follo)m(wing)28 b(the)g(tilde)f(are)h(treated)g(as)f(a)g(p)s +4096 y(follo)m(wing)28 b(the)g(tilde)f(are)h(treated)g(as)f(a)g(p)s (ossible)g Fr(login)h(name)p Fu(.)39 b(If)27 b(this)g(login)h(name)f -(is)g(the)g(n)m(ull)g(string,)150 2682 y(the)35 b(tilde)g(is)g +(is)g(the)g(n)m(ull)g(string,)150 4205 y(the)35 b(tilde)g(is)g (replaced)g(with)f(the)h(v)-5 b(alue)35 b(of)g(the)g Ft(HOME)e Fu(shell)i(v)-5 b(ariable.)54 b(If)34 b Ft(HOME)g -Fu(is)h(unset,)g(the)g(home)150 2791 y(directory)e(of)g(the)f(user)g +Fu(is)h(unset,)g(the)g(home)150 4315 y(directory)e(of)g(the)f(user)g (executing)i(the)e(shell)h(is)f(substituted)g(instead.)47 -b(Otherwise,)33 b(the)g(tilde-pre\014x)150 2901 y(is)d(replaced)h(with) +b(Otherwise,)33 b(the)g(tilde-pre\014x)150 4425 y(is)d(replaced)h(with) f(the)h(home)f(directory)h(asso)s(ciated)h(with)e(the)h(sp)s(eci\014ed) -e(login)j(name.)275 3039 y(If)g(the)h(tilde-pre\014x)f(is)h(`)p +e(login)j(name.)275 4554 y(If)g(the)h(tilde-pre\014x)f(is)h(`)p Ft(~+)p Fu(',)g(the)g(v)-5 b(alue)33 b(of)g(the)g(shell)g(v)-5 b(ariable)34 b Ft(PWD)d Fu(replaces)j(the)f(tilde-pre\014x.)47 -b(If)150 3149 y(the)31 b(tilde-pre\014x)f(is)g(`)p Ft(~-)p +b(If)150 4663 y(the)31 b(tilde-pre\014x)f(is)g(`)p Ft(~-)p Fu(',)h(the)f(v)-5 b(alue)31 b(of)g(the)f(shell)h(v)-5 b(ariable)31 b Ft(OLDPWD)p Fu(,)e(if)h(it)h(is)g(set,)g(is)f -(substituted.)275 3287 y(If)f(the)h(c)m(haracters)h(follo)m(wing)h(the) +(substituted.)275 4792 y(If)f(the)h(c)m(haracters)h(follo)m(wing)h(the) e(tilde)g(in)g(the)g(tilde-pre\014x)g(consist)g(of)g(a)h(n)m(um)m(b)s -(er)d Fr(N)p Fu(,)j(optionally)150 3396 y(pre\014xed)22 +(er)d Fr(N)p Fu(,)j(optionally)150 4902 y(pre\014xed)22 b(b)m(y)h(a)h(`)p Ft(+)p Fu(')f(or)h(a)f(`)p Ft(-)p Fu(',)j(the)d (tilde-pre\014x)g(is)h(replaced)f(with)g(the)h(corresp)s(onding)e -(elemen)m(t)j(from)e(the)150 3506 y(directory)36 b(stac)m(k,)i(as)e(it) +(elemen)m(t)j(from)e(the)150 5011 y(directory)36 b(stac)m(k,)i(as)e(it) g(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m(y)g(the)f Ft(dirs)g Fu(builtin)g(in)m(v)m(ok)m(ed)i(with)e(the)g(c)m(haracters) -150 3615 y(follo)m(wing)40 b(tilde)f(in)g(the)f(tilde-pre\014x)h(as)g +150 5121 y(follo)m(wing)40 b(tilde)f(in)g(the)f(tilde-pre\014x)h(as)g (an)f(argumen)m(t)h(\(see)h(Section)f(6.8)h([The)e(Directory)i(Stac)m -(k],)150 3725 y(page)c(97\).)57 b(If)35 b(the)g(tilde-pre\014x,)i(sans) -e(the)h(tilde,)h(consists)f(of)g(a)f(n)m(um)m(b)s(er)f(without)i(a)f -(leading)h(`)p Ft(+)p Fu(')g(or)150 3834 y(`)p Ft(-)p -Fu(',)31 b(`)p Ft(+)p Fu(')f(is)h(assumed.)275 3972 y(If)e(the)i(login) -g(name)g(is)f(in)m(v)-5 b(alid,)31 b(or)g(the)f(tilde)h(expansion)f -(fails,)i(the)e(w)m(ord)g(is)h(left)g(unc)m(hanged.)275 -4110 y(Eac)m(h)38 b(v)-5 b(ariable)38 b(assignmen)m(t)h(is)e(c)m(hec)m -(k)m(ed)j(for)d(unquoted)g(tilde-pre\014xes)h(immediately)g(follo)m -(wing)150 4220 y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p -Ft(=)p Fu('.)54 b(In)34 b(these)h(cases,)i(tilde)e(expansion)g(is)g -(also)h(p)s(erformed.)52 b(Consequen)m(tly)-8 b(,)37 -b(one)150 4330 y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g -(assignmen)m(ts)g(to)h Ft(PATH)p Fu(,)f Ft(MAILPATH)p -Fu(,)e(and)h Ft(CDPATH)p Fu(,)g(and)h(the)g(shell)150 -4439 y(assigns)j(the)f(expanded)g(v)-5 b(alue.)275 4577 -y(The)29 b(follo)m(wing)j(table)g(sho)m(ws)e(ho)m(w)g(Bash)h(treats)g -(unquoted)e(tilde-pre\014xes:)150 4742 y Ft(~)432 b Fu(The)30 -b(v)-5 b(alue)31 b(of)f Ft($HOME)150 4905 y(~/foo)240 -b($HOME/foo)150 5068 y(~fred/foo)630 5177 y Fu(The)30 -b(sub)s(directory)f Ft(foo)h Fu(of)g(the)h(home)f(directory)h(of)g(the) -f(user)g Ft(fred)150 5340 y(~+/foo)192 b($PWD/foo)p eop -end -%%Page: 25 31 -TeXDict begin 25 30 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)150 299 -y Ft(~-/foo)192 b(${OLDPWD-'~-'}/foo)150 471 y(~)p Fj(N)384 -b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m -(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 644 y Ft(~+)p -Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m -(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 816 y -Ft(~-)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g -(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(-)p Fj(N)p Fu(')275 -995 y(Bash)40 b(also)h(p)s(erforms)e(tilde)h(expansion)g(on)h(w)m(ords) -e(satisfying)i(the)f(conditions)h(of)f(v)-5 b(ariable)41 -b(as-)150 1105 y(signmen)m(ts)f(\(see)h(Section)g(3.4)g([Shell)f(P)m -(arameters],)k(page)d(20\))g(when)e(they)h(app)s(ear)f(as)i(argumen)m -(ts)150 1215 y(to)c(simple)f(commands.)57 b(Bash)36 b(do)s(es)f(not)h -(do)g(this,)i(except)f(for)e(the)h Fr(declaration)i Fu(commands)d -(listed)150 1324 y(ab)s(o)m(v)m(e,)d(when)d(in)h Fm(posix)g -Fu(mo)s(de.)150 1536 y Fk(3.5.3)63 b(Shell)41 b(P)m(arameter)f -(Expansion)150 1683 y Fu(The)g(`)p Ft($)p Fu(')h(c)m(haracter)i(in)m -(tro)s(duces)d(parameter)h(expansion,)j(command)d(substitution,)i(or)e -(arithmetic)150 1793 y(expansion.)d(The)22 b(parameter)h(name)f(or)g -(sym)m(b)s(ol)h(to)g(b)s(e)e(expanded)h(ma)m(y)h(b)s(e)f(enclosed)h(in) -f(braces,)i(whic)m(h)150 1903 y(are)31 b(optional)g(but)f(serv)m(e)h -(to)h(protect)f(the)g(v)-5 b(ariable)31 b(to)g(b)s(e)f(expanded)g(from) -g(c)m(haracters)i(immediately)150 2012 y(follo)m(wing)g(it)f(whic)m(h)f -(could)g(b)s(e)g(in)m(terpreted)h(as)f(part)h(of)f(the)h(name.)275 -2160 y(When)44 b(braces)i(are)f(used,)j(the)e(matc)m(hing)g(ending)f -(brace)g(is)g(the)g(\014rst)g(`)p Ft(})p Fu(')g(not)g(escap)s(ed)h(b)m -(y)f(a)150 2269 y(bac)m(kslash)40 b(or)f(within)g(a)g(quoted)g(string,) -j(and)c(not)i(within)e(an)h(em)m(b)s(edded)f(arithmetic)j(expansion,) -150 2379 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)275 -2526 y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p +(k],)150 5230 y(page)34 b(102\).)50 b(If)32 b(the)h(tilde-pre\014x,)h +(sans)e(the)h(tilde,)i(consists)e(of)g(a)h(n)m(um)m(b)s(er)d(without)i +(a)g(leading)h(`)p Ft(+)p Fu(')f(or)150 5340 y(`)p Ft(-)p +Fu(',)e(`)p Ft(+)p Fu(')f(is)h(assumed.)p eop end +%%Page: 26 32 +TeXDict begin 26 31 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(26)275 299 +y(If)29 b(the)i(login)g(name)g(is)f(in)m(v)-5 b(alid,)31 +b(or)g(the)f(tilde)h(expansion)f(fails,)i(the)e(w)m(ord)g(is)h(left)g +(unc)m(hanged.)275 438 y(Eac)m(h)38 b(v)-5 b(ariable)38 +b(assignmen)m(t)h(is)e(c)m(hec)m(k)m(ed)j(for)d(unquoted)g +(tilde-pre\014xes)h(immediately)g(follo)m(wing)150 547 +y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p Ft(=)p +Fu('.)54 b(In)34 b(these)h(cases,)i(tilde)e(expansion)g(is)g(also)h(p)s +(erformed.)52 b(Consequen)m(tly)-8 b(,)37 b(one)150 657 +y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g(assignmen)m(ts)g +(to)h Ft(PATH)p Fu(,)f Ft(MAILPATH)p Fu(,)e(and)h Ft(CDPATH)p +Fu(,)g(and)h(the)g(shell)150 766 y(assigns)j(the)f(expanded)g(v)-5 +b(alue.)275 905 y(The)29 b(follo)m(wing)j(table)g(sho)m(ws)e(ho)m(w)g +(Bash)h(treats)g(unquoted)e(tilde-pre\014xes:)150 1071 +y Ft(~)432 b Fu(The)30 b(v)-5 b(alue)31 b(of)f Ft($HOME)150 +1234 y(~/foo)240 b($HOME/foo)150 1398 y(~fred/foo)630 +1508 y Fu(The)30 b(sub)s(directory)f Ft(foo)h Fu(of)g(the)h(home)f +(directory)h(of)g(the)f(user)g Ft(fred)150 1671 y(~+/foo)192 +b($PWD/foo)150 1835 y(~-/foo)g(${OLDPWD-'~-'}/foo)150 +1998 y(~)p Fj(N)384 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g +(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 +2162 y Ft(~+)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e) +g(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p +Fu(')150 2326 y Ft(~-)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m +(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(-)p +Fj(N)p Fu(')275 2491 y(Bash)40 b(also)h(p)s(erforms)e(tilde)h +(expansion)g(on)h(w)m(ords)e(satisfying)i(the)f(conditions)h(of)f(v)-5 +b(ariable)41 b(as-)150 2601 y(signmen)m(ts)f(\(see)h(Section)g(3.4)g +([Shell)f(P)m(arameters],)k(page)d(21\))g(when)e(they)h(app)s(ear)f(as) +i(argumen)m(ts)150 2710 y(to)c(simple)f(commands.)57 +b(Bash)36 b(do)s(es)f(not)h(do)g(this,)i(except)f(for)e(the)h +(declaration)i(commands)d(listed)150 2820 y(ab)s(o)m(v)m(e,)d(when)d +(in)h Fm(posix)g Fu(mo)s(de.)150 3024 y Fk(3.5.3)63 b(Shell)41 +b(P)m(arameter)f(Expansion)150 3170 y Fu(The)g(`)p Ft($)p +Fu(')h(c)m(haracter)i(in)m(tro)s(duces)d(parameter)h(expansion,)j +(command)d(substitution,)i(or)e(arithmetic)150 3280 y(expansion.)d(The) +22 b(parameter)h(name)f(or)g(sym)m(b)s(ol)h(to)g(b)s(e)e(expanded)h(ma) +m(y)h(b)s(e)f(enclosed)h(in)f(braces,)i(whic)m(h)150 +3390 y(are)31 b(optional)g(but)f(serv)m(e)h(to)h(protect)f(the)g(v)-5 +b(ariable)31 b(to)g(b)s(e)f(expanded)g(from)g(c)m(haracters)i +(immediately)150 3499 y(follo)m(wing)g(it)f(whic)m(h)f(could)g(b)s(e)g +(in)m(terpreted)h(as)f(part)h(of)f(the)h(name.)275 3638 +y(When)44 b(braces)i(are)f(used,)j(the)e(matc)m(hing)g(ending)f(brace)g +(is)g(the)g(\014rst)g(`)p Ft(})p Fu(')g(not)g(escap)s(ed)h(b)m(y)f(a) +150 3748 y(bac)m(kslash)40 b(or)f(within)g(a)g(quoted)g(string,)j(and)c +(not)i(within)e(an)h(em)m(b)s(edded)f(arithmetic)j(expansion,)150 +3857 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)275 +3996 y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p Fi({)p Fr(parameter)7 b Fi(})p Fu(.)74 b(The)41 b(v)-5 -b(alue)42 b(of)g Fr(parameter)48 b Fu(is)150 2636 y(substituted.)43 +b(alue)42 b(of)g Fr(parameter)48 b Fu(is)150 4105 y(substituted.)43 b(The)31 b Fr(parameter)39 b Fu(is)31 b(a)h(shell)f(parameter)h(as)g (describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)g(3.4)h([Shell)150 -2746 y(P)m(arameters],)e(page)f(20\))h(or)e(an)g(arra)m(y)h(reference)f -(\(see)i(Section)f(6.7)g([Arra)m(ys],)g(page)g(95\).)42 -b(The)29 b(braces)150 2855 y(are)j(required)g(when)f +4215 y(P)m(arameters],)28 b(page)f(21\))g(or)f(an)f(arra)m(y)h +(reference)h(\(see)f(Section)h(6.7)g([Arra)m(ys],)g(page)g(100\).)41 +b(The)25 b(braces)150 4325 y(are)32 b(required)g(when)f Fr(parameter)39 b Fu(is)32 b(a)h(p)s(ositional)f(parameter)h(with)f -(more)g(than)g(one)g(digit,)i(or)e(when)150 2965 y Fr(parameter)37 +(more)g(than)g(one)g(digit,)i(or)e(when)150 4434 y Fr(parameter)37 b Fu(is)31 b(follo)m(w)m(ed)h(b)m(y)e(a)h(c)m(haracter)h(that)f(is)f (not)h(to)g(b)s(e)f(in)m(terpreted)g(as)h(part)f(of)h(its)f(name.)275 -3112 y(If)k(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)42 +4573 y(If)k(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)42 b Fu(is)35 b(an)g(exclamation)i(p)s(oin)m(t)e(\(!\),)i(and)d -Fr(parameter)42 b Fu(is)34 b(not)i(a)150 3222 y Fr(nameref)p -Fu(,)c(it)f(in)m(tro)s(duces)h(a)f(lev)m(el)i(of)f(indirection.)44 -b(Bash)31 b(uses)g(the)g(v)-5 b(alue)32 b(formed)f(b)m(y)g(expanding)g -(the)150 3332 y(rest)c(of)f Fr(parameter)33 b Fu(as)27 -b(the)g(new)f Fr(parameter)7 b Fu(;)28 b(this)e(is)g(then)g(expanded)g -(and)g(that)h(v)-5 b(alue)27 b(is)f(used)g(in)g(the)150 -3441 y(rest)33 b(of)f(the)h(expansion,)g(rather)g(than)f(the)h -(expansion)f(of)h(the)g(original)g Fr(parameter)p Fu(.)48 -b(This)32 b(is)g(kno)m(wn)150 3551 y(as)42 b Ft(indirect)28 -b(expansion)p Fu(.)71 b(The)41 b(v)-5 b(alue)41 b(is)h(sub)5 -b(ject)41 b(to)h(tilde)g(expansion,)i(parameter)e(expansion,)150 -3660 y(command)31 b(substitution,)g(and)g(arithmetic)h(expansion.)43 -b(If)31 b Fr(parameter)38 b Fu(is)32 b(a)f(nameref,)h(this)f(expands) -150 3770 y(to)d(the)g(name)g(of)f(the)h(v)-5 b(ariable)28 -b(referenced)g(b)m(y)f Fr(parameter)35 b Fu(instead)27 -b(of)h(p)s(erforming)e(the)i(complete)h(in-)150 3880 -y(direct)e(expansion.)39 b(The)25 b(exceptions)i(to)g(this)f(are)h(the) -f(expansions)g(of)g($)p Fi({)p Fu(!)p Fr(pre\014x)6 b -Fu(*)p Fi(})28 b Fu(and)d($)p Fi({)p Fu(!)p Fr(name)5 -b Fu([@])p Fi(})150 3989 y Fu(describ)s(ed)28 b(b)s(elo)m(w.)41 -b(The)28 b(exclamation)j(p)s(oin)m(t)f(m)m(ust)f(immediately)h(follo)m -(w)g(the)g(left)f(brace)h(in)f(order)f(to)150 4099 y(in)m(tro)s(duce)i -(indirection.)275 4246 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m -(w,)i Fr(w)m(ord)h Fu(is)c(sub)5 b(ject)40 b(to)h(tilde)f(expansion,)j -(parameter)e(expansion,)150 4356 y(command)30 b(substitution,)g(and)g -(arithmetic)i(expansion.)275 4503 y(When)h(not)h(p)s(erforming)e +Fr(parameter)42 b Fu(is)34 b(not)i(a)150 4682 y(nameref,)c(it)f(in)m +(tro)s(duces)h(a)f(lev)m(el)i(of)f(indirection.)44 b(Bash)31 +b(uses)g(the)g(v)-5 b(alue)32 b(formed)f(b)m(y)g(expanding)g(the)150 +4792 y(rest)c(of)f Fr(parameter)33 b Fu(as)27 b(the)g(new)f +Fr(parameter)7 b Fu(;)28 b(this)e(is)g(then)g(expanded)g(and)g(that)h +(v)-5 b(alue)27 b(is)f(used)g(in)g(the)150 4902 y(rest)33 +b(of)f(the)h(expansion,)g(rather)g(than)f(the)h(expansion)f(of)h(the)g +(original)g Fr(parameter)p Fu(.)48 b(This)32 b(is)g(kno)m(wn)150 +5011 y(as)42 b Ft(indirect)28 b(expansion)p Fu(.)71 b(The)41 +b(v)-5 b(alue)41 b(is)h(sub)5 b(ject)41 b(to)h(tilde)g(expansion,)i +(parameter)e(expansion,)150 5121 y(command)31 b(substitution,)g(and)g +(arithmetic)h(expansion.)43 b(If)31 b Fr(parameter)38 +b Fu(is)32 b(a)f(nameref,)h(this)f(expands)150 5230 y(to)d(the)g(name)g +(of)f(the)h(v)-5 b(ariable)28 b(referenced)g(b)m(y)f +Fr(parameter)35 b Fu(instead)27 b(of)h(p)s(erforming)e(the)i(complete)h +(in-)150 5340 y(direct)e(expansion.)39 b(The)25 b(exceptions)i(to)g +(this)f(are)h(the)f(expansions)g(of)g($)p Fi({)p Fu(!)p +Fr(pre\014x)6 b Fu(*)p Fi(})28 b Fu(and)d($)p Fi({)p +Fu(!)p Fr(name)5 b Fu([@])p Fi(})p eop end +%%Page: 27 33 +TeXDict begin 27 32 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)150 299 +y(describ)s(ed)28 b(b)s(elo)m(w.)41 b(The)28 b(exclamation)j(p)s(oin)m +(t)f(m)m(ust)f(immediately)h(follo)m(w)g(the)g(left)f(brace)h(in)f +(order)f(to)150 408 y(in)m(tro)s(duce)i(indirection.)275 +547 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m(w,)i +Fr(w)m(ord)h Fu(is)c(sub)5 b(ject)40 b(to)h(tilde)f(expansion,)j +(parameter)e(expansion,)150 657 y(command)30 b(substitution,)g(and)g +(arithmetic)i(expansion.)275 795 y(When)h(not)h(p)s(erforming)e (substring)h(expansion,)h(using)g(the)f(form)h(describ)s(ed)e(b)s(elo)m -(w)i(\(e.g.,)i(`)p Ft(:-)p Fu('\),)150 4613 y(Bash)d(tests)h(for)e(a)i +(w)i(\(e.g.,)i(`)p Ft(:-)p Fu('\),)150 905 y(Bash)d(tests)h(for)e(a)i (parameter)f(that)h(is)e(unset)h(or)g(n)m(ull.)48 b(Omitting)33 -b(the)h(colon)f(results)g(in)g(a)g(test)h(only)150 4723 +b(the)h(colon)f(results)g(in)g(a)g(test)h(only)150 1015 y(for)c(a)i(parameter)f(that)g(is)g(unset.)41 b(Put)31 b(another)f(w)m(a)m(y)-8 b(,)33 b(if)e(the)f(colon)i(is)f(included,)f -(the)h(op)s(erator)g(tests)150 4832 y(for)36 b(b)s(oth)g +(the)h(op)s(erator)g(tests)150 1124 y(for)36 b(b)s(oth)g Fr(parameter)7 b Fu('s)37 b(existence)h(and)e(that)i(its)f(v)-5 b(alue)37 b(is)g(not)f(n)m(ull;)k(if)d(the)g(colon)h(is)e(omitted,)k -(the)150 4942 y(op)s(erator)31 b(tests)g(only)f(for)g(existence.)150 -5121 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p Fj(word)p -Ft(})630 5230 y Fu(If)g Fr(parameter)37 b Fu(is)30 b(unset)g(or)h(n)m +(the)150 1234 y(op)s(erator)31 b(tests)g(only)f(for)g(existence.)150 +1399 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p Fj(word)p +Ft(})630 1509 y Fu(If)g Fr(parameter)37 b Fu(is)30 b(unset)g(or)h(n)m (ull,)f(the)h(expansion)f(of)g Fr(w)m(ord)k Fu(is)c(substituted.)40 -b(Otherwise,)630 5340 y(the)31 b(v)-5 b(alue)30 b(of)h -Fr(parameter)37 b Fu(is)31 b(substituted.)p eop end -%%Page: 26 32 -TeXDict begin 26 31 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(26)150 299 -y Ft(${)p Fj(parameter)p Ft(:=)p Fj(word)p Ft(})630 408 -y Fu(If)33 b Fr(parameter)40 b Fu(is)33 b(unset)f(or)h(n)m(ull,)h(the)f -(expansion)g(of)g Fr(w)m(ord)j Fu(is)d(assigned)g(to)h -Fr(parameter)p Fu(.)630 518 y(The)c(v)-5 b(alue)32 b(of)f -Fr(parameter)38 b Fu(is)31 b(then)g(substituted.)42 b(P)m(ositional)33 -b(parameters)e(and)f(sp)s(ecial)630 628 y(parameters)h(ma)m(y)g(not)f -(b)s(e)g(assigned)h(to)g(in)f(this)g(w)m(a)m(y)-8 b(.)150 -786 y Ft(${)p Fj(parameter)p Ft(:?)p Fj(word)p Ft(})630 -896 y Fu(If)26 b Fr(parameter)33 b Fu(is)26 b(n)m(ull)g(or)g(unset,)h -(the)f(expansion)g(of)g Fr(w)m(ord)k Fu(\(or)c(a)h(message)g(to)g(that) -f(e\013ect)630 1005 y(if)i Fr(w)m(ord)j Fu(is)d(not)g(presen)m(t\))h -(is)f(written)g(to)h(the)f(standard)f(error)h(and)f(the)h(shell,)h(if)f -(it)h(is)f(not)630 1115 y(in)m(teractiv)m(e,)33 b(exits.)42 -b(Otherwise,)30 b(the)h(v)-5 b(alue)31 b(of)f Fr(parameter)38 -b Fu(is)30 b(substituted.)150 1273 y Ft(${)p Fj(parameter)p -Ft(:+)p Fj(word)p Ft(})630 1383 y Fu(If)35 b Fr(parameter)42 -b Fu(is)36 b(n)m(ull)f(or)h(unset,)g(nothing)g(is)f(substituted,)i -(otherwise)e(the)h(expansion)630 1492 y(of)31 b Fr(w)m(ord)i -Fu(is)e(substituted.)150 1650 y Ft(${)p Fj(parameter)p -Ft(:)p Fj(offset)p Ft(})150 1760 y(${)p Fj(parameter)p -Ft(:)p Fj(offset)p Ft(:)p Fj(lengt)o(h)p Ft(})630 1870 -y Fu(This)f(is)h(referred)f(to)h(as)g(Substring)f(Expansion.)41 -b(It)31 b(expands)f(to)h(up)f(to)h Fr(length)g Fu(c)m(harac-)630 -1979 y(ters)k(of)g(the)h(v)-5 b(alue)35 b(of)g Fr(parameter)42 -b Fu(starting)36 b(at)g(the)f(c)m(haracter)i(sp)s(eci\014ed)d(b)m(y)h -Fr(o\013set)p Fu(.)55 b(If)630 2089 y Fr(parameter)32 -b Fu(is)26 b(`)p Ft(@)p Fu(',)g(an)f(indexed)g(arra)m(y)h(subscripted)e -(b)m(y)h(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(or)g(an)f(asso)s -(ciativ)m(e)j(ar-)630 2198 y(ra)m(y)g(name,)h(the)f(results)g(di\013er) -g(as)g(describ)s(ed)f(b)s(elo)m(w.)40 b(If)28 b Fr(length)g -Fu(is)g(omitted,)i(it)f(expands)630 2308 y(to)e(the)g(substring)f(of)g -(the)h(v)-5 b(alue)27 b(of)g Fr(parameter)33 b Fu(starting)28 -b(at)f(the)g(c)m(haracter)h(sp)s(eci\014ed)e(b)m(y)630 -2418 y Fr(o\013set)37 b Fu(and)d(extending)g(to)h(the)f(end)g(of)g(the) -g(v)-5 b(alue.)53 b Fr(length)34 b Fu(and)g Fr(o\013set)j -Fu(are)e(arithmetic)630 2527 y(expressions)30 b(\(see)h(Section)g(6.5)h -([Shell)e(Arithmetic],)i(page)f(93\).)630 2661 y(If)39 -b Fr(o\013set)k Fu(ev)-5 b(aluates)41 b(to)f(a)g(n)m(um)m(b)s(er)f -(less)h(than)f(zero,)k(the)d(v)-5 b(alue)40 b(is)g(used)e(as)i(an)g -(o\013set)630 2771 y(in)33 b(c)m(haracters)i(from)f(the)f(end)g(of)h -(the)g(v)-5 b(alue)34 b(of)g Fr(parameter)p Fu(.)51 b(If)33 -b Fr(length)h Fu(ev)-5 b(aluates)35 b(to)g(a)630 2880 -y(n)m(um)m(b)s(er)23 b(less)h(than)g(zero,)j(it)d(is)h(in)m(terpreted)f -(as)g(an)h(o\013set)g(in)f(c)m(haracters)h(from)f(the)g(end)g(of)630 -2990 y(the)31 b(v)-5 b(alue)31 b(of)g Fr(parameter)38 -b Fu(rather)30 b(than)h(a)g(n)m(um)m(b)s(er)f(of)g(c)m(haracters,)j -(and)d(the)h(expansion)630 3099 y(is)39 b(the)g(c)m(haracters)i(b)s(et) -m(w)m(een)f Fr(o\013set)i Fu(and)c(that)i(result.)67 -b(Note)40 b(that)g(a)g(negativ)m(e)h(o\013set)630 3209 -y(m)m(ust)27 b(b)s(e)g(separated)g(from)g(the)g(colon)i(b)m(y)e(at)h -(least)g(one)f(space)h(to)g(a)m(v)m(oid)h(b)s(eing)e(confused)630 -3319 y(with)j(the)h(`)p Ft(:-)p Fu(')f(expansion.)630 -3453 y(Here)43 b(are)g(some)f(examples)h(illustrating)g(substring)f -(expansion)g(on)g(parameters)h(and)630 3562 y(subscripted)29 -b(arra)m(ys:)630 3696 y Ft($)47 b(string=01234567890abcdefgh)630 -3806 y($)g(echo)g(${string:7})630 3915 y(7890abcdefgh)630 -4025 y($)g(echo)g(${string:7:0})630 4244 y($)g(echo)g(${string:7:2})630 -4354 y(78)630 4463 y($)g(echo)g(${string:7:-2})630 4573 -y(7890abcdef)630 4682 y($)g(echo)g(${string:)e(-7})630 -4792 y(bcdefgh)630 4902 y($)i(echo)g(${string:)e(-7:0})630 -5121 y($)i(echo)g(${string:)e(-7:2})630 5230 y(bc)630 -5340 y($)i(echo)g(${string:)e(-7:-2})p eop end -%%Page: 27 33 -TeXDict begin 27 32 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)630 299 -y Ft(bcdef)630 408 y($)47 b(set)g(--)h(01234567890abcdefgh)630 -518 y($)f(echo)g(${1:7})630 628 y(7890abcdefgh)630 737 -y($)g(echo)g(${1:7:0})630 956 y($)g(echo)g(${1:7:2})630 -1066 y(78)630 1176 y($)g(echo)g(${1:7:-2})630 1285 y(7890abcdef)630 -1395 y($)g(echo)g(${1:)g(-7})630 1504 y(bcdefgh)630 1614 -y($)g(echo)g(${1:)g(-7:0})630 1833 y($)g(echo)g(${1:)g(-7:2})630 -1943 y(bc)630 2052 y($)g(echo)g(${1:)g(-7:-2})630 2162 -y(bcdef)630 2271 y($)g(array[0]=01234567890abcdef)o(gh)630 -2381 y($)g(echo)g(${array[0]:7})630 2491 y(7890abcdefgh)630 -2600 y($)g(echo)g(${array[0]:7:0})630 2819 y($)g(echo)g -(${array[0]:7:2})630 2929 y(78)630 3039 y($)g(echo)g(${array[0]:7:-2}) -630 3148 y(7890abcdef)630 3258 y($)g(echo)g(${array[0]:)e(-7})630 -3367 y(bcdefgh)630 3477 y($)i(echo)g(${array[0]:)e(-7:0})630 -3696 y($)i(echo)g(${array[0]:)e(-7:2})630 3806 y(bc)630 -3915 y($)i(echo)g(${array[0]:)e(-7:-2})630 4025 y(bcdef)630 -4171 y Fu(If)22 b Fr(parameter)30 b Fu(is)23 b(`)p Ft(@)p -Fu(',)i(the)e(result)g(is)g Fr(length)h Fu(p)s(ositional)f(parameters)h -(b)s(eginning)e(at)i Fr(o\013set)p Fu(.)630 4281 y(A)36 -b(negativ)m(e)j Fr(o\013set)g Fu(is)e(tak)m(en)g(relativ)m(e)i(to)e -(one)g(greater)g(than)f(the)h(greatest)h(p)s(ositional)630 -4390 y(parameter,)29 b(so)f(an)g(o\013set)h(of)f(-1)g(ev)-5 -b(aluates)30 b(to)e(the)g(last)h(p)s(ositional)g(parameter.)40 -b(It)28 b(is)g(an)630 4500 y(expansion)i(error)g(if)h -Fr(length)f Fu(ev)-5 b(aluates)32 b(to)f(a)g(n)m(um)m(b)s(er)e(less)i -(than)f(zero.)630 4646 y(The)i(follo)m(wing)i(examples)f(illustrate)h -(substring)d(expansion)i(using)f(p)s(ositional)h(param-)630 -4755 y(eters:)630 4902 y Ft($)47 b(set)g(--)h(1)f(2)g(3)h(4)f(5)h(6)f -(7)h(8)f(9)h(0)f(a)h(b)f(c)g(d)h(e)f(f)h(g)f(h)630 5011 -y($)g(echo)g(${@:7})630 5121 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h(e)f(f)h -(g)f(h)630 5230 y($)g(echo)g(${@:7:0})p eop end +b(Otherwise,)630 1619 y(the)31 b(v)-5 b(alue)30 b(of)h +Fr(parameter)37 b Fu(is)31 b(substituted.)870 1755 y +Ft($)47 b(v=123)870 1865 y($)g(echo)g(${v-unset})870 +1974 y(123)150 2138 y(${)p Fj(parameter)p Ft(:=)p Fj(word)p +Ft(})630 2248 y Fu(If)33 b Fr(parameter)40 b Fu(is)33 +b(unset)f(or)h(n)m(ull,)h(the)f(expansion)g(of)g Fr(w)m(ord)j +Fu(is)d(assigned)g(to)h Fr(parameter)p Fu(.)630 2357 +y(The)c(v)-5 b(alue)32 b(of)f Fr(parameter)38 b Fu(is)31 +b(then)g(substituted.)42 b(P)m(ositional)33 b(parameters)e(and)f(sp)s +(ecial)630 2467 y(parameters)h(ma)m(y)g(not)f(b)s(e)g(assigned)h(to)g +(in)f(this)g(w)m(a)m(y)-8 b(.)870 2603 y Ft($)47 b(var=)870 +2713 y($)g(:)h(${var:=DEFAULT})870 2823 y($)f(echo)g($var)870 +2932 y(DEFAULT)150 3096 y(${)p Fj(parameter)p Ft(:?)p +Fj(word)p Ft(})630 3205 y Fu(If)26 b Fr(parameter)33 +b Fu(is)26 b(n)m(ull)g(or)g(unset,)h(the)f(expansion)g(of)g +Fr(w)m(ord)k Fu(\(or)c(a)h(message)g(to)g(that)f(e\013ect)630 +3315 y(if)i Fr(w)m(ord)j Fu(is)d(not)g(presen)m(t\))h(is)f(written)g +(to)h(the)f(standard)f(error)h(and)f(the)h(shell,)h(if)f(it)h(is)f(not) +630 3425 y(in)m(teractiv)m(e,)33 b(exits.)42 b(Otherwise,)30 +b(the)h(v)-5 b(alue)31 b(of)f Fr(parameter)38 b Fu(is)30 +b(substituted.)870 3561 y Ft($)47 b(var=)870 3671 y($)g(:)h(${var:?var) +d(is)i(unset)f(or)i(null})870 3780 y(bash:)e(var:)h(var)g(is)g(unset)f +(or)i(null)150 3944 y(${)p Fj(parameter)p Ft(:+)p Fj(word)p +Ft(})630 4053 y Fu(If)35 b Fr(parameter)42 b Fu(is)36 +b(n)m(ull)f(or)h(unset,)g(nothing)g(is)f(substituted,)i(otherwise)e +(the)h(expansion)630 4163 y(of)31 b Fr(w)m(ord)i Fu(is)e(substituted.) +870 4300 y Ft($)47 b(var=123)870 4409 y($)g(echo)g(${var:+var)e(is)i +(set)g(and)g(not)g(null})870 4519 y(var)g(is)g(set)g(and)g(not)g(null) +150 4682 y(${)p Fj(parameter)p Ft(:)p Fj(offset)p Ft(})150 +4792 y(${)p Fj(parameter)p Ft(:)p Fj(offset)p Ft(:)p +Fj(lengt)o(h)p Ft(})630 4902 y Fu(This)30 b(is)h(referred)f(to)h(as)g +(Substring)f(Expansion.)41 b(It)31 b(expands)f(to)h(up)f(to)h +Fr(length)g Fu(c)m(harac-)630 5011 y(ters)k(of)g(the)h(v)-5 +b(alue)35 b(of)g Fr(parameter)42 b Fu(starting)36 b(at)g(the)f(c)m +(haracter)i(sp)s(eci\014ed)d(b)m(y)h Fr(o\013set)p Fu(.)55 +b(If)630 5121 y Fr(parameter)41 b Fu(is)35 b(`)p Ft(@)p +Fu(')f(or)h(`)p Ft(*)p Fu(',)g(an)g(indexed)f(arra)m(y)g(subscripted)g +(b)m(y)g(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(or)g(an)f(asso-)630 +5230 y(ciativ)m(e)i(arra)m(y)e(name,)h(the)f(results)f(di\013er)g(as)h +(describ)s(ed)e(b)s(elo)m(w.)51 b(If)33 b Fr(length)h +Fu(is)g(omitted,)630 5340 y(it)d(expands)f(to)h(the)g(substring)e(of)h +(the)h(v)-5 b(alue)31 b(of)g Fr(parameter)37 b Fu(starting)31 +b(at)h(the)e(c)m(haracter)p eop end %%Page: 28 34 TeXDict begin 28 33 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(28)630 299 -y Ft($)47 b(echo)g(${@:7:2})630 408 y(7)g(8)630 518 y($)g(echo)g -(${@:7:-2})630 628 y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630 -737 y($)g(echo)g(${@:)g(-7:2})630 847 y(b)g(c)630 956 -y($)g(echo)g(${@:0})630 1066 y(./bash)f(1)i(2)f(3)g(4)h(5)f(6)h(7)f(8)h -(9)f(0)h(a)f(b)h(c)f(d)g(e)h(f)f(g)h(h)630 1176 y($)f(echo)g(${@:0:2}) -630 1285 y(./bash)f(1)630 1395 y($)h(echo)g(${@:)g(-7:0})630 -1677 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y) +y(sp)s(eci\014ed)30 b(b)m(y)g Fr(o\013set)k Fu(and)c(extending)h(to)g +(the)g(end)f(of)g(the)h(v)-5 b(alue.)42 b Fr(length)31 +b Fu(and)f Fr(o\013set)k Fu(are)630 408 y(arithmetic)e(expressions)e +(\(see)h(Section)g(6.5)h([Shell)e(Arithmetic],)i(page)f(98\).)630 +555 y(If)39 b Fr(o\013set)k Fu(ev)-5 b(aluates)41 b(to)f(a)g(n)m(um)m +(b)s(er)f(less)h(than)f(zero,)k(the)d(v)-5 b(alue)40 +b(is)g(used)e(as)i(an)g(o\013set)630 664 y(in)33 b(c)m(haracters)i +(from)f(the)f(end)g(of)h(the)g(v)-5 b(alue)34 b(of)g +Fr(parameter)p Fu(.)51 b(If)33 b Fr(length)h Fu(ev)-5 +b(aluates)35 b(to)g(a)630 774 y(n)m(um)m(b)s(er)23 b(less)h(than)g +(zero,)j(it)d(is)h(in)m(terpreted)f(as)g(an)h(o\013set)g(in)f(c)m +(haracters)h(from)f(the)g(end)g(of)630 883 y(the)31 b(v)-5 +b(alue)31 b(of)g Fr(parameter)38 b Fu(rather)30 b(than)h(a)g(n)m(um)m +(b)s(er)f(of)g(c)m(haracters,)j(and)d(the)h(expansion)630 +993 y(is)39 b(the)g(c)m(haracters)i(b)s(et)m(w)m(een)f +Fr(o\013set)i Fu(and)c(that)i(result.)67 b(Note)40 b(that)g(a)g +(negativ)m(e)h(o\013set)630 1103 y(m)m(ust)27 b(b)s(e)g(separated)g +(from)g(the)g(colon)i(b)m(y)e(at)h(least)g(one)f(space)h(to)g(a)m(v)m +(oid)h(b)s(eing)e(confused)630 1212 y(with)j(the)h(`)p +Ft(:-)p Fu(')f(expansion.)630 1358 y(Here)43 b(are)g(some)f(examples)h +(illustrating)g(substring)f(expansion)g(on)g(parameters)h(and)630 +1468 y(subscripted)29 b(arra)m(ys:)630 1614 y Ft($)47 +b(string=01234567890abcdefgh)630 1724 y($)g(echo)g(${string:7})630 +1833 y(7890abcdefgh)630 1943 y($)g(echo)g(${string:7:0})630 +2162 y($)g(echo)g(${string:7:2})630 2271 y(78)630 2381 +y($)g(echo)g(${string:7:-2})630 2491 y(7890abcdef)630 +2600 y($)g(echo)g(${string:)e(-7})630 2710 y(bcdefgh)630 +2819 y($)i(echo)g(${string:)e(-7:0})630 3039 y($)i(echo)g(${string:)e +(-7:2})630 3148 y(bc)630 3258 y($)i(echo)g(${string:)e(-7:-2})630 +3367 y(bcdef)630 3477 y($)i(set)g(--)h(01234567890abcdefgh)630 +3587 y($)f(echo)g(${1:7})630 3696 y(7890abcdefgh)630 +3806 y($)g(echo)g(${1:7:0})630 4025 y($)g(echo)g(${1:7:2})630 +4134 y(78)630 4244 y($)g(echo)g(${1:7:-2})630 4354 y(7890abcdef)630 +4463 y($)g(echo)g(${1:)g(-7})630 4573 y(bcdefgh)630 4682 +y($)g(echo)g(${1:)g(-7:0})630 4902 y($)g(echo)g(${1:)g(-7:2})630 +5011 y(bc)630 5121 y($)g(echo)g(${1:)g(-7:-2})630 5230 +y(bcdef)630 5340 y($)g(array[0]=01234567890abcdef)o(gh)p +eop end +%%Page: 29 35 +TeXDict begin 29 34 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)630 299 +y Ft($)47 b(echo)g(${array[0]:7})630 408 y(7890abcdefgh)630 +518 y($)g(echo)g(${array[0]:7:0})630 737 y($)g(echo)g(${array[0]:7:2}) +630 847 y(78)630 956 y($)g(echo)g(${array[0]:7:-2})630 +1066 y(7890abcdef)630 1176 y($)g(echo)g(${array[0]:)e(-7})630 +1285 y(bcdefgh)630 1395 y($)i(echo)g(${array[0]:)e(-7:0})630 +1614 y($)i(echo)g(${array[0]:)e(-7:2})630 1724 y(bc)630 +1833 y($)i(echo)g(${array[0]:)e(-7:-2})630 1943 y(bcdef)630 +2071 y Fu(If)34 b Fr(parameter)41 b Fu(is)35 b(`)p Ft(@)p +Fu(')f(or)h(`)p Ft(*)p Fu(',)h(the)e(result)g(is)h Fr(length)g +Fu(p)s(ositional)g(parameters)g(b)s(eginning)630 2180 +y(at)27 b Fr(o\013set)p Fu(.)40 b(A)26 b(negativ)m(e)j +Fr(o\013set)g Fu(is)d(tak)m(en)h(relativ)m(e)h(to)f(one)g(greater)g +(than)f(the)g(greatest)i(p)s(o-)630 2290 y(sitional)i(parameter,)f(so)f +(an)g(o\013set)i(of)e(-1)h(ev)-5 b(aluates)30 b(to)f(the)f(last)h(p)s +(ositional)g(parameter.)630 2399 y(It)h(is)h(an)f(expansion)g(error)g +(if)h Fr(length)f Fu(ev)-5 b(aluates)32 b(to)g(a)e(n)m(um)m(b)s(er)f +(less)i(than)f(zero.)630 2527 y(The)i(follo)m(wing)i(examples)f +(illustrate)h(substring)d(expansion)i(using)f(p)s(ositional)h(param-) +630 2637 y(eters:)630 2765 y Ft($)47 b(set)g(--)h(1)f(2)g(3)h(4)f(5)h +(6)f(7)h(8)f(9)h(0)f(a)h(b)f(c)g(d)h(e)f(f)h(g)f(h)630 +2874 y($)g(echo)g(${@:7})630 2984 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h(e)f +(f)h(g)f(h)630 3093 y($)g(echo)g(${@:7:0})630 3313 y($)g(echo)g +(${@:7:2})630 3422 y(7)g(8)630 3532 y($)g(echo)g(${@:7:-2})630 +3641 y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630 +3751 y($)g(echo)g(${@:)g(-7:2})630 3861 y(b)g(c)630 3970 +y($)g(echo)g(${@:0})630 4080 y(./bash)f(1)i(2)f(3)g(4)h(5)f(6)h(7)f(8)h +(9)f(0)h(a)f(b)h(c)f(d)g(e)h(f)f(g)h(h)630 4189 y($)f(echo)g(${@:0:2}) +630 4299 y(./bash)f(1)630 4408 y($)h(echo)g(${@:)g(-7:0})630 +4646 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y) g(name)g(subscripted)f(b)m(y)h(`)p Ft(@)p Fu(')g(or)h(`)p -Ft(*)p Fu(',)h(the)e(result)g(is)630 1786 y(the)j Fr(length)g +Ft(*)p Fu(',)h(the)e(result)g(is)630 4755 y(the)j Fr(length)g Fu(mem)m(b)s(ers)f(of)h(the)f(arra)m(y)i(b)s(eginning)d(with)i Ft(${)p Fj(parameter)p Ft([)p Fj(offset)p Ft(]})p Fu(.)60 -b(A)630 1896 y(negativ)m(e)33 b Fr(o\013set)g Fu(is)e(tak)m(en)h +b(A)630 4865 y(negativ)m(e)33 b Fr(o\013set)g Fu(is)e(tak)m(en)h (relativ)m(e)g(to)g(one)f(greater)g(than)g(the)f(maxim)m(um)h(index)f -(of)h(the)630 2005 y(sp)s(eci\014ed)38 b(arra)m(y)-8 +(of)h(the)630 4975 y(sp)s(eci\014ed)38 b(arra)m(y)-8 b(.)65 b(It)38 b(is)g(an)h(expansion)f(error)f(if)i Fr(length)f Fu(ev)-5 b(aluates)40 b(to)f(a)g(n)m(um)m(b)s(er)e(less)630 -2115 y(than)30 b(zero.)630 2287 y(These)23 b(examples)i(sho)m(w)e(ho)m +5084 y(than)30 b(zero.)630 5212 y(These)23 b(examples)i(sho)m(w)e(ho)m (w)h(y)m(ou)g(can)g(use)f(substring)f(expansion)i(with)f(indexed)g -(arra)m(ys:)630 2459 y Ft($)47 b(array=\(0)f(1)h(2)h(3)f(4)h(5)f(6)h(7) -f(8)h(9)f(0)h(a)f(b)g(c)h(d)f(e)h(f)f(g)h(h\))630 2569 -y($)f(echo)g(${array[@]:7})630 2679 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h -(e)f(f)h(g)f(h)630 2788 y($)g(echo)g(${array[@]:7:2})630 -2898 y(7)g(8)630 3007 y($)g(echo)g(${array[@]:)e(-7:2})630 -3117 y(b)i(c)630 3226 y($)g(echo)g(${array[@]:)e(-7:-2})630 -3336 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630 -3446 y($)g(echo)g(${array[@]:0})630 3555 y(0)g(1)h(2)f(3)h(4)f(5)h(6)f -(7)h(8)f(9)h(0)f(a)g(b)h(c)f(d)h(e)f(f)h(g)f(h)630 3665 -y($)g(echo)g(${array[@]:0:2})630 3774 y(0)g(1)630 3884 -y($)g(echo)g(${array[@]:)e(-7:0})630 4166 y Fu(Substring)25 +(arra)m(ys:)630 5340 y Ft($)47 b(array=\(0)f(1)h(2)h(3)f(4)h(5)f(6)h(7) +f(8)h(9)f(0)h(a)f(b)g(c)h(d)f(e)h(f)f(g)h(h\))p eop end +%%Page: 30 36 +TeXDict begin 30 35 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)630 299 +y Ft($)47 b(echo)g(${array[@]:7})630 408 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f +(d)h(e)f(f)h(g)f(h)630 518 y($)g(echo)g(${array[@]:7:2})630 +628 y(7)g(8)630 737 y($)g(echo)g(${array[@]:)e(-7:2})630 +847 y(b)i(c)630 956 y($)g(echo)g(${array[@]:)e(-7:-2})630 +1066 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630 +1176 y($)g(echo)g(${array[@]:0})630 1285 y(0)g(1)h(2)f(3)h(4)f(5)h(6)f +(7)h(8)f(9)h(0)f(a)g(b)h(c)f(d)h(e)f(f)h(g)f(h)630 1395 +y($)g(echo)g(${array[@]:0:2})630 1504 y(0)g(1)630 1614 +y($)g(echo)g(${array[@]:)e(-7:0})630 1855 y Fu(Substring)25 b(expansion)g(applied)h(to)h(an)f(asso)s(ciativ)m(e)j(arra)m(y)d(pro)s -(duces)f(unde\014ned)f(results.)630 4338 y(Substring)32 +(duces)f(unde\014ned)f(results.)630 1987 y(Substring)32 b(indexing)i(is)f(zero-based)i(unless)e(the)h(p)s(ositional)g -(parameters)g(are)g(used,)g(in)630 4448 y(whic)m(h)29 +(parameters)g(are)g(used,)g(in)630 2096 y(whic)m(h)29 b(case)i(the)f(indexing)g(starts)g(at)g(1)g(b)m(y)g(default.)41 b(If)29 b Fr(o\013set)k Fu(is)d(0,)g(and)f(the)h(p)s(ositional)630 -4557 y(parameters)h(are)f(used,)g Ft($0)g Fu(is)g(pre\014xed)g(to)h -(the)f(list.)150 4792 y Ft(${!)p Fj(prefix)p Ft(*})150 -4902 y(${!)p Fj(prefix)p Ft(@})630 5011 y Fu(Expands)24 +2206 y(parameters)h(are)f(used,)g Ft($0)g Fu(is)g(pre\014xed)g(to)h +(the)f(list.)150 2359 y Ft(${!)p Fj(prefix)p Ft(*})150 +2469 y(${!)p Fj(prefix)p Ft(@})630 2578 y Fu(Expands)24 b(to)h(the)g(names)g(of)g(v)-5 b(ariables)26 b(whose)f(names)f(b)s (egin)h(with)f Fr(pre\014x)p Fu(,)i(separated)f(b)m(y)630 -5121 y(the)k(\014rst)f(c)m(haracter)j(of)e(the)g Ft(IFS)f +2688 y(the)k(\014rst)f(c)m(haracter)j(of)e(the)g Ft(IFS)f Fu(sp)s(ecial)i(v)-5 b(ariable.)41 b(When)29 b(`)p Ft(@)p -Fu(')g(is)g(used)f(and)h(the)g(expan-)630 5230 y(sion)35 +Fu(')g(is)g(used)f(and)h(the)g(expan-)630 2798 y(sion)35 b(app)s(ears)g(within)f(double)h(quotes,)i(eac)m(h)f(v)-5 b(ariable)36 b(name)f(expands)g(to)g(a)h(separate)630 -5340 y(w)m(ord.)p eop end -%%Page: 29 35 -TeXDict begin 29 34 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)150 299 -y Ft(${!)p Fj(name)p Ft([@]})150 408 y(${!)p Fj(name)p -Ft([*]})630 518 y Fu(If)26 b Fr(name)32 b Fu(is)27 b(an)f(arra)m(y)h(v) --5 b(ariable,)29 b(expands)d(to)h(the)g(list)g(of)g(arra)m(y)g(indices) -g(\(k)m(eys\))h(assigned)630 628 y(in)c Fr(name)p Fu(.)39 -b(If)24 b Fr(name)30 b Fu(is)24 b(not)h(an)f(arra)m(y)-8 -b(,)27 b(expands)c(to)j(0)f(if)f Fr(name)30 b Fu(is)24 -b(set)h(and)f(n)m(ull)g(otherwise.)630 737 y(When)39 -b(`)p Ft(@)p Fu(')h(is)f(used)g(and)f(the)i(expansion)f(app)s(ears)g -(within)f(double)h(quotes,)k(eac)m(h)d(k)m(ey)630 847 -y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150 1011 -y Ft(${#)p Fj(parameter)p Ft(})630 1121 y Fu(The)40 b(length)g(in)g(c)m -(haracters)i(of)e(the)h(expanded)e(v)-5 b(alue)41 b(of)f -Fr(parameter)47 b Fu(is)40 b(substituted.)630 1230 y(If)i -Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p +2907 y(w)m(ord.)150 3061 y Ft(${!)p Fj(name)p Ft([@]})150 +3170 y(${!)p Fj(name)p Ft([*]})630 3280 y Fu(If)26 b +Fr(name)32 b Fu(is)27 b(an)f(arra)m(y)h(v)-5 b(ariable,)29 +b(expands)d(to)h(the)g(list)g(of)g(arra)m(y)g(indices)g(\(k)m(eys\))h +(assigned)630 3389 y(in)c Fr(name)p Fu(.)39 b(If)24 b +Fr(name)30 b Fu(is)24 b(not)h(an)f(arra)m(y)-8 b(,)27 +b(expands)c(to)j(0)f(if)f Fr(name)30 b Fu(is)24 b(set)h(and)f(n)m(ull)g +(otherwise.)630 3499 y(When)39 b(`)p Ft(@)p Fu(')h(is)f(used)g(and)f +(the)i(expansion)f(app)s(ears)g(within)f(double)h(quotes,)k(eac)m(h)d +(k)m(ey)630 3608 y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150 +3762 y Ft(${#)p Fj(parameter)p Ft(})630 3871 y Fu(The)40 +b(length)g(in)g(c)m(haracters)i(of)e(the)h(expanded)e(v)-5 +b(alue)41 b(of)f Fr(parameter)47 b Fu(is)40 b(substituted.)630 +3981 y(If)i Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p Ft(@)p Fu(',)k(the)c(v)-5 b(alue)43 b(substituted)f(is)h(the)g(n)m(um)m -(b)s(er)f(of)h(p)s(ositional)630 1340 y(parameters.)i(If)32 +(b)s(er)f(of)h(p)s(ositional)630 4091 y(parameters.)i(If)32 b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(name)g(subscripted)f(b)m (y)g(`)p Ft(*)p Fu(')h(or)g(`)p Ft(@)p Fu(',)g(the)g(v)-5 -b(alue)630 1450 y(substituted)30 b(is)h(the)g(n)m(um)m(b)s(er)e(of)i +b(alue)630 4200 y(substituted)30 b(is)h(the)g(n)m(um)m(b)s(er)e(of)i (elemen)m(ts)i(in)d(the)h(arra)m(y)-8 b(.)43 b(If)30 -b Fr(parameter)38 b Fu(is)31 b(an)f(indexed)630 1559 +b Fr(parameter)38 b Fu(is)31 b(an)f(indexed)630 4310 y(arra)m(y)37 b(name)g(subscripted)f(b)m(y)h(a)g(negativ)m(e)i(n)m(um)m (b)s(er,)f(that)f(n)m(um)m(b)s(er)f(is)g(in)m(terpreted)i(as)630 -1669 y(relativ)m(e)47 b(to)g(one)e(greater)i(than)e(the)h(maxim)m(um)f +4419 y(relativ)m(e)47 b(to)g(one)e(greater)i(than)e(the)h(maxim)m(um)f (index)g(of)g Fr(parameter)p Fu(,)50 b(so)c(negativ)m(e)630 -1778 y(indices)30 b(coun)m(t)h(bac)m(k)g(from)f(the)h(end)e(of)i(the)f +4529 y(indices)30 b(coun)m(t)h(bac)m(k)g(from)f(the)h(end)e(of)i(the)f (arra)m(y)-8 b(,)32 b(and)e(an)g(index)g(of)g(-1)h(references)g(the)630 -1888 y(last)g(elemen)m(t.)150 2052 y Ft(${)p Fj(parameter)p -Ft(#)p Fj(word)p Ft(})150 2162 y(${)p Fj(parameter)p -Ft(##)p Fj(word)p Ft(})630 2271 y Fu(The)43 b Fr(w)m(ord)k +4639 y(last)g(elemen)m(t.)150 4792 y Ft(${)p Fj(parameter)p +Ft(#)p Fj(word)p Ft(})150 4902 y(${)p Fj(parameter)p +Ft(##)p Fj(word)p Ft(})630 5011 y Fu(The)43 b Fr(w)m(ord)k Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h(pattern)g(and)f(matc)m(hed)i -(according)f(to)h(the)630 2381 y(rules)31 b(describ)s(ed)g(b)s(elo)m(w) +(according)f(to)h(the)630 5121 y(rules)31 b(describ)s(ed)g(b)s(elo)m(w) h(\(see)h(Section)g(3.5.8.1)h([P)m(attern)g(Matc)m(hing],)g(page)f -(33\).)46 b(If)32 b(the)630 2491 y(pattern)37 b(matc)m(hes)h(the)f(b)s +(36\).)46 b(If)32 b(the)630 5230 y(pattern)37 b(matc)m(hes)h(the)f(b)s (eginning)f(of)h(the)g(expanded)f(v)-5 b(alue)38 b(of)f -Fr(parameter)p Fu(,)i(then)e(the)630 2600 y(result)f(of)h(the)f +Fr(parameter)p Fu(,)i(then)e(the)630 5340 y(result)f(of)h(the)f (expansion)h(is)f(the)h(expanded)e(v)-5 b(alue)37 b(of)g -Fr(parameter)43 b Fu(with)36 b(the)h(shortest)630 2710 +Fr(parameter)43 b Fu(with)36 b(the)h(shortest)p eop end +%%Page: 31 37 +TeXDict begin 31 36 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)630 299 y(matc)m(hing)31 b(pattern)e(\(the)h(`)p Ft(#)p Fu(')g(case\))h(or)e (the)h(longest)h(matc)m(hing)f(pattern)g(\(the)g(`)p -Ft(##)p Fu(')g(case\))630 2819 y(deleted.)49 b(If)32 +Ft(##)p Fu(')g(case\))630 408 y(deleted.)49 b(If)32 b +Fr(parameter)40 b Fu(is)33 b(`)p Ft(@)p Fu(')g(or)g(`)p +Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5 b(al)34 b(op)s(eration)g(is) +f(applied)f(to)630 518 y(eac)m(h)38 b(p)s(ositional)g(parameter)g(in)f +(turn,)h(and)e(the)h(expansion)g(is)h(the)f(resultan)m(t)h(list.)61 +b(If)630 628 y Fr(parameter)38 b Fu(is)32 b(an)f(arra)m(y)h(v)-5 +b(ariable)32 b(subscripted)e(with)h(`)p Ft(@)p Fu(')g(or)h(`)p +Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 b(al)630 737 +y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m(b)s(er)e(of)h +(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g(is)630 +847 y(the)h(resultan)m(t)g(list.)150 1019 y Ft(${)p Fj(parameter)p +Ft(\045)p Fj(word)p Ft(})150 1129 y(${)p Fj(parameter)p +Ft(\045\045)p Fj(word)p Ft(})630 1238 y Fu(The)43 b Fr(w)m(ord)k +Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h(pattern)g(and)f(matc)m(hed)i +(according)f(to)h(the)630 1348 y(rules)f(describ)s(ed)g(b)s(elo)m(w)h +(\(see)h(Section)g(3.5.8.1)h([P)m(attern)f(Matc)m(hing],)51 +b(page)45 b(36\).)85 b(If)630 1457 y(the)43 b(pattern)g(matc)m(hes)h(a) +g(trailing)g(p)s(ortion)e(of)h(the)g(expanded)g(v)-5 +b(alue)43 b(of)g Fr(parameter)p Fu(,)630 1567 y(then)c(the)g(result)g +(of)h(the)f(expansion)g(is)h(the)f(v)-5 b(alue)40 b(of)f +Fr(parameter)46 b Fu(with)39 b(the)h(shortest)630 1677 +y(matc)m(hing)31 b(pattern)e(\(the)h(`)p Ft(\045)p Fu(')g(case\))h(or)e +(the)h(longest)h(matc)m(hing)f(pattern)g(\(the)g(`)p +Ft(\045\045)p Fu(')g(case\))630 1786 y(deleted.)49 b(If)32 b Fr(parameter)40 b Fu(is)33 b(`)p Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5 b(al)34 b(op)s(eration)g(is) -f(applied)f(to)630 2929 y(eac)m(h)38 b(p)s(ositional)g(parameter)g(in)f +f(applied)f(to)630 1896 y(eac)m(h)38 b(p)s(ositional)g(parameter)g(in)f (turn,)h(and)e(the)h(expansion)g(is)h(the)f(resultan)m(t)h(list.)61 -b(If)630 3039 y Fr(parameter)38 b Fu(is)32 b(an)f(arra)m(y)h(v)-5 +b(If)630 2005 y Fr(parameter)38 b Fu(is)32 b(an)f(arra)m(y)h(v)-5 b(ariable)32 b(subscripted)e(with)h(`)p Ft(@)p Fu(')g(or)h(`)p -Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 b(al)630 3148 +Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 b(al)630 2115 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m(b)s(er)e(of)h (the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g(is)630 -3258 y(the)h(resultan)m(t)g(list.)150 3422 y Ft(${)p -Fj(parameter)p Ft(\045)p Fj(word)p Ft(})150 3532 y(${)p -Fj(parameter)p Ft(\045\045)p Fj(word)p Ft(})630 3641 -y Fu(The)43 b Fr(w)m(ord)k Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h -(pattern)g(and)f(matc)m(hed)i(according)f(to)h(the)630 -3751 y(rules)f(describ)s(ed)g(b)s(elo)m(w)h(\(see)h(Section)g(3.5.8.1)h -([P)m(attern)f(Matc)m(hing],)51 b(page)45 b(33\).)85 -b(If)630 3861 y(the)43 b(pattern)g(matc)m(hes)h(a)g(trailing)g(p)s -(ortion)e(of)h(the)g(expanded)g(v)-5 b(alue)43 b(of)g -Fr(parameter)p Fu(,)630 3970 y(then)c(the)g(result)g(of)h(the)f -(expansion)g(is)h(the)f(v)-5 b(alue)40 b(of)f Fr(parameter)46 -b Fu(with)39 b(the)h(shortest)630 4080 y(matc)m(hing)31 -b(pattern)e(\(the)h(`)p Ft(\045)p Fu(')g(case\))h(or)e(the)h(longest)h -(matc)m(hing)f(pattern)g(\(the)g(`)p Ft(\045\045)p Fu(')g(case\))630 -4189 y(deleted.)49 b(If)32 b Fr(parameter)40 b Fu(is)33 -b(`)p Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5 -b(al)34 b(op)s(eration)g(is)f(applied)f(to)630 4299 y(eac)m(h)38 -b(p)s(ositional)g(parameter)g(in)f(turn,)h(and)e(the)h(expansion)g(is)h -(the)f(resultan)m(t)h(list.)61 b(If)630 4408 y Fr(parameter)38 -b Fu(is)32 b(an)f(arra)m(y)h(v)-5 b(ariable)32 b(subscripted)e(with)h -(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 -b(al)630 4518 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m -(b)s(er)e(of)h(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g -(is)630 4628 y(the)h(resultan)m(t)g(list.)150 4792 y -Ft(${)p Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p Fj(stri)o(ng)p -Ft(})630 4902 y Fu(The)37 b Fr(pattern)g Fu(is)g(expanded)g(to)h(pro)s -(duce)e(a)h(pattern)g(just)g(as)h(in)e(\014lename)i(expansion.)630 -5011 y Fr(P)m(arameter)46 b Fu(is)38 b(expanded)f(and)g(the)i(longest)g -(matc)m(h)g(of)f Fr(pattern)g Fu(against)h(its)f(v)-5 -b(alue)39 b(is)630 5121 y(replaced)31 b(with)g Fr(string)p -Fu(.)42 b(The)30 b(matc)m(h)h(is)g(p)s(erformed)f(according)h(to)h(the) -f(rules)f(describ)s(ed)630 5230 y(b)s(elo)m(w)f(\(see)h(Section)g -(3.5.8.1)h([P)m(attern)g(Matc)m(hing],)g(page)f(33\).)41 -b(If)29 b Fr(pattern)g Fu(b)s(egins)f(with)630 5340 y(`)p -Ft(/)p Fu(',)43 b(all)e(matc)m(hes)g(of)f Fr(pattern)g -Fu(are)h(replaced)f(with)g Fr(string)p Fu(.)69 b(Normally)41 -b(only)f(the)h(\014rst)p eop end -%%Page: 30 36 -TeXDict begin 30 35 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)630 299 -y(matc)m(h)28 b(is)f(replaced.)40 b(If)26 b Fr(pattern)h -Fu(b)s(egins)f(with)h(`)p Ft(#)p Fu(',)h(it)f(m)m(ust)g(matc)m(h)h(at)g -(the)f(b)s(eginning)f(of)630 408 y(the)32 b(expanded)f(v)-5 -b(alue)32 b(of)g Fr(parameter)p Fu(.)45 b(If)31 b Fr(pattern)h -Fu(b)s(egins)f(with)g(`)p Ft(\045)p Fu(',)i(it)f(m)m(ust)g(matc)m(h)g -(at)630 518 y(the)24 b(end)f(of)h(the)h(expanded)e(v)-5 -b(alue)24 b(of)g Fr(parameter)p Fu(.)39 b(If)24 b Fr(string)31 -b Fu(is)24 b(n)m(ull,)i(matc)m(hes)f(of)f Fr(pattern)630 -628 y Fu(are)36 b(deleted)g(and)f(the)g Ft(/)g Fu(follo)m(wing)i -Fr(pattern)e Fu(ma)m(y)h(b)s(e)f(omitted.)57 b(If)34 -b(the)i Ft(nocasematch)630 737 y Fu(shell)31 b(option)h(\(see)g(the)g -(description)f(of)g Ft(shopt)f Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)f -(Builtin],)630 847 y(page)45 b(66\))h(is)f(enabled,)j(the)d(matc)m(h)g -(is)g(p)s(erformed)e(without)i(regard)f(to)h(the)g(case)h(of)630 -956 y(alphab)s(etic)36 b(c)m(haracters.)56 b(If)34 b -Fr(parameter)42 b Fu(is)36 b(`)p Ft(@)p Fu(')f(or)g(`)p -Ft(*)p Fu(',)h(the)g(substitution)e(op)s(eration)i(is)630 -1066 y(applied)26 b(to)g(eac)m(h)h(p)s(ositional)f(parameter)h(in)e -(turn,)h(and)f(the)h(expansion)g(is)f(the)h(resultan)m(t)630 -1176 y(list.)38 b(If)21 b Fr(parameter)28 b Fu(is)22 -b(an)f(arra)m(y)h(v)-5 b(ariable)22 b(subscripted)e(with)h(`)p -Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)j(the)d(substitution)630 -1285 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m(b)s(er)e -(of)h(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g(is)630 -1395 y(the)h(resultan)m(t)g(list.)150 1551 y Ft(${)p -Fj(parameter)p Ft(^)p Fj(pattern)p Ft(})150 1661 y(${)p -Fj(parameter)p Ft(^^)p Fj(pattern)p Ft(})150 1771 y(${)p -Fj(parameter)p Ft(,)p Fj(pattern)p Ft(})150 1880 y(${)p -Fj(parameter)p Ft(,,)p Fj(pattern)p Ft(})630 1990 y Fu(This)36 -b(expansion)g(mo)s(di\014es)g(the)g(case)i(of)f(alphab)s(etic)g(c)m -(haracters)h(in)e Fr(parameter)p Fu(.)59 b(The)630 2099 -y Fr(pattern)33 b Fu(is)g(expanded)e(to)j(pro)s(duce)d(a)j(pattern)e -(just)g(as)h(in)g(\014lename)g(expansion.)47 b(Eac)m(h)630 -2209 y(c)m(haracter)32 b(in)e(the)g(expanded)f(v)-5 b(alue)31 +2225 y(the)h(resultan)m(t)g(list.)150 2397 y Ft(${)p +Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p Fj(stri)o(ng)p +Ft(})150 2506 y(${)p Fj(parameter)p Ft(//)p Fj(pattern)p +Ft(/)p Fj(str)o(ing)p Ft(})150 2616 y(${)p Fj(parameter)p +Ft(/#)p Fj(pattern)p Ft(/)p Fj(str)o(ing)p Ft(})150 2725 +y(${)p Fj(parameter)p Ft(/\045)p Fj(pattern)p Ft(/)p +Fj(str)o(ing)p Ft(})630 2835 y Fu(The)37 b Fr(pattern)g +Fu(is)g(expanded)g(to)h(pro)s(duce)e(a)h(pattern)g(just)g(as)h(in)e +(\014lename)i(expansion.)630 2945 y Fr(P)m(arameter)46 +b Fu(is)38 b(expanded)f(and)g(the)i(longest)g(matc)m(h)g(of)f +Fr(pattern)g Fu(against)h(its)f(v)-5 b(alue)39 b(is)630 +3054 y(replaced)30 b(with)e Fr(string)p Fu(.)41 b Fr(string)c +Fu(undergo)s(es)28 b(tilde)i(expansion,)f(parameter)h(and)e(v)-5 +b(ariable)630 3164 y(expansion,)25 b(arithmetic)g(expansion,)g(command) +e(and)g(pro)s(cess)g(substitution,)i(and)e(quote)630 +3273 y(remo)m(v)-5 b(al.)54 b(The)33 b(matc)m(h)j(is)e(p)s(erformed)f +(according)i(to)g(the)f(rules)g(describ)s(ed)f(b)s(elo)m(w)i(\(see)630 +3383 y(Section)c(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)g(page)f(36\).) +630 3524 y(In)45 b(the)g(\014rst)g(form)g(ab)s(o)m(v)m(e,)50 +b(only)c(the)f(\014rst)g(matc)m(h)h(is)f(replaced.)86 +b(If)45 b(there)h(are)g(t)m(w)m(o)630 3634 y(slashes)28 +b(separating)g Fr(parameter)35 b Fu(and)27 b Fr(pattern)g +Fu(\(the)i(second)e(form)g(ab)s(o)m(v)m(e\),)j(all)f(matc)m(hes)630 +3743 y(of)d Fr(pattern)g Fu(are)g(replaced)g(with)f Fr(string)p +Fu(.)40 b(If)25 b Fr(pattern)h Fu(is)f(preceded)h(b)m(y)f(`)p +Ft(#)p Fu(')h(\(the)h(third)d(form)630 3853 y(ab)s(o)m(v)m(e\),)32 +b(it)e(m)m(ust)f(matc)m(h)i(at)f(the)g(b)s(eginning)e(of)i(the)g +(expanded)f(v)-5 b(alue)30 b(of)f Fr(parameter)p Fu(.)41 +b(If)630 3962 y Fr(pattern)28 b Fu(is)g(preceded)g(b)m(y)g(`)p +Ft(\045)p Fu(')g(\(the)h(fourth)e(form)h(ab)s(o)m(v)m(e\),)i(it)f(m)m +(ust)f(matc)m(h)h(at)g(the)f(end)g(of)630 4072 y(the)i(expanded)e(v)-5 +b(alue)30 b(of)g Fr(parameter)p Fu(.)41 b(If)28 b(the)i(expansion)f(of) +h Fr(string)37 b Fu(is)29 b(n)m(ull,)h(matc)m(hes)h(of)630 +4181 y Fr(pattern)d Fu(are)g(deleted.)41 b(If)28 b Fr(string)35 +b Fu(is)28 b(n)m(ull,)h(matc)m(hes)g(of)f Fr(pattern)g +Fu(are)h(deleted)f(and)g(the)g(`)p Ft(/)p Fu(')630 4291 +y(follo)m(wing)k Fr(pattern)e Fu(ma)m(y)h(b)s(e)f(omitted.)630 +4432 y(If)f(the)h Ft(patsub_replacement)25 b Fu(shell)30 +b(option)g(is)f(enabled)h(using)f Ft(shopt)p Fu(,)g(an)m(y)h(unquoted) +630 4542 y(instances)40 b(of)g(`)p Ft(&)p Fu(')g(in)f +Fr(string)48 b Fu(are)40 b(replaced)g(with)g(the)g(matc)m(hing)g(p)s +(ortion)g(of)g Fr(pattern)p Fu(.)630 4651 y(This)30 b(is)g(in)m(tended) +g(to)h(duplicate)g(a)g(common)g Ft(sed)e Fu(idiom.)630 +4792 y(Quoting)g(an)m(y)f(part)h(of)f Fr(string)36 b +Fu(inhibits)28 b(replacemen)m(t)i(in)e(the)g(expansion)h(of)f(the)h +(quoted)630 4902 y(p)s(ortion,)j(including)g(replacemen)m(t)h(strings)f +(stored)g(in)g(shell)g(v)-5 b(ariables.)46 b(Bac)m(kslash)34 +b(will)630 5011 y(escap)s(e)k(`)p Ft(&)p Fu(')g(in)f +Fr(string)8 b Fu(;)42 b(the)c(bac)m(kslash)g(is)g(remo)m(v)m(ed)g(in)g +(order)f(to)h(p)s(ermit)f(a)i(literal)g(`)p Ft(&)p Fu(')630 +5121 y(in)31 b(the)h(replacemen)m(t)h(string.)44 b(Users)32 +b(should)e(tak)m(e)k(care)e(if)g Fr(string)39 b Fu(is)32 +b(double-quoted)f(to)630 5230 y(a)m(v)m(oid)37 b(un)m(w)m(an)m(ted)f +(in)m(teractions)i(b)s(et)m(w)m(een)e(the)g(bac)m(kslash)h(and)e +(double-quoting,)j(since)630 5340 y(bac)m(kslash)31 b(has)f(sp)s(ecial) +h(meaning)f(within)g(double)f(quotes.)42 b(P)m(attern)31 +b(substitution)f(p)s(er-)p eop end +%%Page: 32 38 +TeXDict begin 32 37 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)630 299 +y(forms)28 b(the)h(c)m(hec)m(k)i(for)d(unquoted)g(`)p +Ft(&)p Fu(')h(after)g(expanding)g Fr(string)p Fu(,)g(so)g(users)f +(should)g(ensure)630 408 y(to)33 b(prop)s(erly)e(quote)i(an)m(y)f(o)s +(ccurrences)g(of)h(`)p Ft(&)p Fu(')f(they)g(w)m(an)m(t)h(to)g(b)s(e)f +(tak)m(en)h(literally)h(in)e(the)630 518 y(replacemen)m(t)k(and)e +(ensure)g(an)m(y)h(instances)g(of)g(`)p Ft(&)p Fu(')f(they)h(w)m(an)m +(t)g(to)h(b)s(e)e(replaced)h(are)g(un-)630 628 y(quoted.)630 +756 y(F)-8 b(or)31 b(instance,)870 883 y Ft(var=abcdef)870 +993 y(rep='&)46 b(')870 1103 y(echo)h(${var/abc/&)d(})870 +1212 y(echo)j("${var/abc/&)d(}")870 1322 y(echo)j(${var/abc/$rep})870 +1431 y(echo)g("${var/abc/$rep}")630 1559 y Fu(will)31 +b(displa)m(y)f(four)g(lines)h(of)f Ft(")p Fu(ab)s(c)g(def)p +Ft(")p Fu(,)g(while)870 1687 y Ft(var=abcdef)870 1797 +y(rep='&)46 b(')870 1906 y(echo)h(${var/abc/\\&)d(})870 +2016 y(echo)j("${var/abc/\\&)d(}")870 2125 y(echo)j(${var/abc/"&)d("}) +870 2235 y(echo)j(${var/abc/"$rep"})630 2363 y Fu(will)34 +b(displa)m(y)g(four)g(lines)g(of)g Ft(")p Fu(&)f(def)p +Ft(")p Fu(.)51 b(Lik)m(e)35 b(the)f(pattern)g(remo)m(v)-5 +b(al)35 b(op)s(erators,)g(double)630 2472 y(quotes)23 +b(surrounding)c(the)k(replacemen)m(t)g(string)f(quote)h(the)f(expanded) +f(c)m(haracters,)26 b(while)630 2582 y(double)43 b(quotes)i(enclosing)f +(the)g(en)m(tire)h(parameter)f(substitution)f(do)h(not,)k(since)c(the) +630 2692 y(expansion)e(is)h(p)s(erformed)e(in)h(a)h(con)m(text)h(that)f +(do)s(esn't)f(tak)m(e)i(an)m(y)f(enclosing)g(double)630 +2801 y(quotes)31 b(in)m(to)g(accoun)m(t.)630 2929 y(Since)24 +b(bac)m(kslash)i(can)e(escap)s(e)h(`)p Ft(&)p Fu(',)h(it)f(can)g(also)h +(escap)s(e)f(a)f(bac)m(kslash)i(in)e(the)g(replacemen)m(t)630 +3039 y(string.)39 b(This)26 b(means)g(that)h(`)p Ft(\\\\)p +Fu(')g(will)f(insert)h(a)f(literal)i(bac)m(kslash)f(in)m(to)h(the)e +(replacemen)m(t,)630 3148 y(so)31 b(these)f(t)m(w)m(o)i +Ft(echo)d Fu(commands)870 3276 y Ft(var=abcdef)870 3386 +y(rep='\\\\&xyz')870 3495 y(echo)47 b(${var/abc/\\\\&xyz})870 +3605 y(echo)g(${var/abc/$rep})630 3733 y Fu(will)31 b(b)s(oth)e(output) +h(`)p Ft(\\abcxyzdef)p Fu('.)630 3861 y(It)g(should)g(rarely)g(b)s(e)g +(necessary)h(to)g(enclose)h(only)e Fr(string)38 b Fu(in)30 +b(double)g(quotes.)630 3988 y(If)j(the)h Ft(nocasematch)d +Fu(shell)i(option)h(\(see)h(the)f(description)f(of)h +Ft(shopt)e Fu(in)i(Section)g(4.3.2)630 4098 y([The)23 +b(Shopt)g(Builtin],)j(page)e(71\))h(is)e(enabled,)i(the)f(matc)m(h)g +(is)g(p)s(erformed)e(without)h(regard)630 4208 y(to)31 +b(the)f(case)h(of)g(alphab)s(etic)f(c)m(haracters.)42 +b(If)30 b Fr(parameter)37 b Fu(is)30 b(`)p Ft(@)p Fu(')g(or)g(`)p +Ft(*)p Fu(',)h(the)f(substitution)630 4317 y(op)s(eration)g(is)f +(applied)g(to)h(eac)m(h)g(p)s(ositional)g(parameter)g(in)e(turn,)h(and) +g(the)g(expansion)g(is)630 4427 y(the)i(resultan)m(t)h(list.)45 +b(If)30 b Fr(parameter)39 b Fu(is)31 b(an)g(arra)m(y)h(v)-5 +b(ariable)32 b(subscripted)e(with)h(`)p Ft(@)p Fu(')g(or)h(`)p +Ft(*)p Fu(',)630 4536 y(the)e(substitution)g(op)s(eration)h(is)f +(applied)g(to)h(eac)m(h)h(mem)m(b)s(er)e(of)g(the)g(arra)m(y)h(in)f +(turn,)g(and)630 4646 y(the)h(expansion)f(is)g(the)h(resultan)m(t)g +(list.)150 4792 y Ft(${)p Fj(parameter)p Ft(^)p Fj(pattern)p +Ft(})150 4902 y(${)p Fj(parameter)p Ft(^^)p Fj(pattern)p +Ft(})150 5011 y(${)p Fj(parameter)p Ft(,)p Fj(pattern)p +Ft(})150 5121 y(${)p Fj(parameter)p Ft(,,)p Fj(pattern)p +Ft(})630 5230 y Fu(This)36 b(expansion)g(mo)s(di\014es)g(the)g(case)i +(of)f(alphab)s(etic)g(c)m(haracters)h(in)e Fr(parameter)p +Fu(.)59 b(The)630 5340 y Fr(pattern)33 b Fu(is)g(expanded)e(to)j(pro)s +(duce)d(a)j(pattern)e(just)g(as)h(in)g(\014lename)g(expansion.)47 +b(Eac)m(h)p eop end +%%Page: 33 39 +TeXDict begin 33 38 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)630 299 +y(c)m(haracter)32 b(in)e(the)g(expanded)f(v)-5 b(alue)31 b(of)f Fr(parameter)37 b Fu(is)30 b(tested)h(against)h -Fr(pattern)p Fu(,)e(and,)g(if)630 2318 y(it)j(matc)m(hes)h(the)g +Fr(pattern)p Fu(,)e(and,)g(if)630 408 y(it)j(matc)m(hes)h(the)g (pattern,)f(its)h(case)g(is)f(con)m(v)m(erted.)49 b(The)33 -b(pattern)g(should)f(not)h(attempt)630 2428 y(to)f(matc)m(h)g(more)f -(than)g(one)g(c)m(haracter.)44 b(The)30 b(`)p Ft(^)p -Fu(')i(op)s(erator)f(con)m(v)m(erts)h(lo)m(w)m(ercase)i(letters)630 -2538 y(matc)m(hing)i Fr(pattern)f Fu(to)h(upp)s(ercase;)h(the)e(`)p -Ft(,)p Fu(')g(op)s(erator)g(con)m(v)m(erts)i(matc)m(hing)f(upp)s -(ercase)630 2647 y(letters)e(to)f(lo)m(w)m(ercase.)50 -b(The)32 b(`)p Ft(^^)p Fu(')h(and)f(`)p Ft(,,)p Fu(')g(expansions)h -(con)m(v)m(ert)h(eac)m(h)g(matc)m(hed)f(c)m(har-)630 -2757 y(acter)c(in)f(the)h(expanded)e(v)-5 b(alue;)30 -b(the)e(`)p Ft(^)p Fu(')g(and)g(`)p Ft(,)p Fu(')g(expansions)g(matc)m -(h)h(and)f(con)m(v)m(ert)i(only)630 2866 y(the)37 b(\014rst)g(c)m -(haracter)i(in)e(the)g(expanded)g(v)-5 b(alue.)61 b(If)37 -b Fr(pattern)g Fu(is)h(omitted,)i(it)e(is)f(treated)630 -2976 y(lik)m(e)h(a)f(`)p Ft(?)p Fu(',)i(whic)m(h)d(matc)m(hes)i(ev)m -(ery)f(c)m(haracter.)61 b(If)37 b Fr(parameter)43 b Fu(is)37 -b(`)p Ft(@)p Fu(')g(or)f(`)p Ft(*)p Fu(',)j(the)e(case)630 -3086 y(mo)s(di\014cation)29 b(op)s(eration)f(is)g(applied)g(to)h(eac)m -(h)h(p)s(ositional)f(parameter)f(in)g(turn,)g(and)g(the)630 -3195 y(expansion)38 b(is)g(the)g(resultan)m(t)h(list.)65 -b(If)37 b Fr(parameter)46 b Fu(is)38 b(an)g(arra)m(y)g(v)-5 -b(ariable)39 b(subscripted)630 3305 y(with)26 b(`)p Ft(@)p -Fu(')f(or)h(`)p Ft(*)p Fu(',)h(the)f(case)h(mo)s(di\014cation)f(op)s -(eration)h(is)e(applied)h(to)h(eac)m(h)g(mem)m(b)s(er)e(of)h(the)630 -3414 y(arra)m(y)31 b(in)f(turn,)f(and)h(the)h(expansion)f(is)g(the)h -(resultan)m(t)g(list.)150 3571 y Ft(${)p Fj(parameter)p -Ft(@)p Fj(operator)p Ft(})630 3680 y Fu(The)d(expansion)h(is)f(either)h -(a)g(transformation)g(of)g(the)g(v)-5 b(alue)29 b(of)g -Fr(parameter)35 b Fu(or)29 b(informa-)630 3790 y(tion)e(ab)s(out)f -Fr(parameter)33 b Fu(itself,)28 b(dep)s(ending)c(on)i(the)h(v)-5 -b(alue)26 b(of)h Fr(op)s(erator)p Fu(.)39 b(Eac)m(h)27 -b Fr(op)s(erator)630 3900 y Fu(is)j(a)h(single)g(letter:)630 -4056 y Ft(U)432 b Fu(The)31 b(expansion)g(is)g(a)g(string)h(that)f(is)h -(the)f(v)-5 b(alue)32 b(of)f Fr(parameter)38 b Fu(with)31 -b(lo)m(w-)1110 4166 y(ercase)g(alphab)s(etic)g(c)m(haracters)h(con)m(v) -m(erted)g(to)f(upp)s(ercase.)630 4322 y Ft(u)432 b Fu(The)34 -b(expansion)g(is)g(a)h(string)f(that)h(is)g(the)f(v)-5 -b(alue)35 b(of)f Fr(parameter)42 b Fu(with)34 b(the)1110 -4432 y(\014rst)c(c)m(haracter)i(con)m(v)m(erted)f(to)h(upp)s(ercase,)d -(if)i(it)g(is)f(alphab)s(etic.)630 4589 y Ft(L)432 b -Fu(The)33 b(expansion)h(is)g(a)g(string)g(that)h(is)f(the)g(v)-5 -b(alue)34 b(of)g Fr(parameter)41 b Fu(with)34 b(up-)1110 -4698 y(p)s(ercase)c(alphab)s(etic)h(c)m(haracters)h(con)m(v)m(erted)g -(to)f(lo)m(w)m(ercase.)630 4855 y Ft(Q)432 b Fu(The)30 -b(expansion)h(is)g(a)g(string)f(that)i(is)f(the)g(v)-5 +b(pattern)g(should)f(not)h(attempt)630 518 y(to)e(matc)m(h)g(more)g +(than)f(one)h(c)m(haracter.)630 650 y(The)f(`)p Ft(^)p +Fu(')g(op)s(erator)g(con)m(v)m(erts)i(lo)m(w)m(ercase)g(letters)g(matc) +m(hing)f Fr(pattern)f Fu(to)h(upp)s(ercase;)f(the)630 +760 y(`)p Ft(,)p Fu(')25 b(op)s(erator)f(con)m(v)m(erts)i(matc)m(hing)g +(upp)s(ercase)d(letters)j(to)f(lo)m(w)m(ercase.)41 b(The)24 +b(`)p Ft(^^)p Fu(')g(and)g(`)p Ft(,,)p Fu(')630 870 y(expansions)31 +b(con)m(v)m(ert)i(eac)m(h)g(matc)m(hed)f(c)m(haracter)h(in)e(the)h +(expanded)f(v)-5 b(alue;)32 b(the)g(`)p Ft(^)p Fu(')g(and)630 +979 y(`)p Ft(,)p Fu(')24 b(expansions)f(matc)m(h)i(and)e(con)m(v)m(ert) +j(only)d(the)h(\014rst)f(c)m(haracter)j(in)d(the)h(expanded)f(v)-5 +b(alue.)630 1089 y(If)30 b Fr(pattern)g Fu(is)h(omitted,)g(it)g(is)g +(treated)g(lik)m(e)h(a)f(`)p Ft(?)p Fu(',)f(whic)m(h)g(matc)m(hes)i(ev) +m(ery)f(c)m(haracter.)630 1221 y(If)23 b Fr(parameter)31 +b Fu(is)24 b(`)p Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)h(the)f(case)h(mo) +s(di\014cation)f(op)s(eration)g(is)g(applied)g(to)g(eac)m(h)h(p)s(osi-) +630 1331 y(tional)h(parameter)e(in)h(turn,)f(and)g(the)h(expansion)f +(is)g(the)h(resultan)m(t)g(list.)40 b(If)23 b Fr(parameter)32 +b Fu(is)630 1440 y(an)e(arra)m(y)g(v)-5 b(ariable)31 +b(subscripted)d(with)i(`)p Ft(@)p Fu(')g(or)f(`)p Ft(*)p +Fu(',)i(the)f(case)g(mo)s(di\014cation)h(op)s(eration)f(is)630 +1550 y(applied)d(to)g(eac)m(h)h(mem)m(b)s(er)e(of)h(the)g(arra)m(y)g +(in)g(turn,)g(and)f(the)h(expansion)f(is)h(the)g(resultan)m(t)630 +1660 y(list.)150 1815 y Ft(${)p Fj(parameter)p Ft(@)p +Fj(operator)p Ft(})630 1924 y Fu(The)h(expansion)h(is)f(either)h(a)g +(transformation)g(of)g(the)g(v)-5 b(alue)29 b(of)g Fr(parameter)35 +b Fu(or)29 b(informa-)630 2034 y(tion)e(ab)s(out)f Fr(parameter)33 +b Fu(itself,)28 b(dep)s(ending)c(on)i(the)h(v)-5 b(alue)26 +b(of)h Fr(op)s(erator)p Fu(.)39 b(Eac)m(h)27 b Fr(op)s(erator)630 +2144 y Fu(is)j(a)h(single)g(letter:)630 2299 y Ft(U)432 +b Fu(The)31 b(expansion)g(is)g(a)g(string)h(that)f(is)h(the)f(v)-5 +b(alue)32 b(of)f Fr(parameter)38 b Fu(with)31 b(lo)m(w-)1110 +2408 y(ercase)g(alphab)s(etic)g(c)m(haracters)h(con)m(v)m(erted)g(to)f +(upp)s(ercase.)630 2564 y Ft(u)432 b Fu(The)34 b(expansion)g(is)g(a)h +(string)f(that)h(is)g(the)f(v)-5 b(alue)35 b(of)f Fr(parameter)42 +b Fu(with)34 b(the)1110 2673 y(\014rst)c(c)m(haracter)i(con)m(v)m +(erted)f(to)h(upp)s(ercase,)d(if)i(it)g(is)f(alphab)s(etic.)630 +2829 y Ft(L)432 b Fu(The)33 b(expansion)h(is)g(a)g(string)g(that)h(is)f +(the)g(v)-5 b(alue)34 b(of)g Fr(parameter)41 b Fu(with)34 +b(up-)1110 2938 y(p)s(ercase)c(alphab)s(etic)h(c)m(haracters)h(con)m(v) +m(erted)g(to)f(lo)m(w)m(ercase.)630 3093 y Ft(Q)432 b +Fu(The)30 b(expansion)h(is)g(a)g(string)f(that)i(is)f(the)g(v)-5 b(alue)31 b(of)g Fr(parameter)37 b Fu(quoted)31 b(in)1110 -4964 y(a)g(format)f(that)h(can)g(b)s(e)f(reused)f(as)i(input.)630 -5121 y Ft(E)432 b Fu(The)27 b(expansion)g(is)g(a)g(string)h(that)f(is)h +3203 y(a)g(format)f(that)h(can)g(b)s(e)f(reused)f(as)i(input.)630 +3358 y Ft(E)432 b Fu(The)27 b(expansion)g(is)g(a)g(string)h(that)f(is)h (the)f(v)-5 b(alue)28 b(of)f Fr(parameter)34 b Fu(with)27 -b(bac)m(k-)1110 5230 y(slash)e(escap)s(e)h(sequences)f(expanded)g(as)g +b(bac)m(k-)1110 3468 y(slash)e(escap)s(e)h(sequences)f(expanded)g(as)g (with)g(the)h Ft($'...)o(')e Fu(quoting)i(mec)m(h-)1110 -5340 y(anism.)p eop end -%%Page: 31 37 -TeXDict begin 31 36 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)630 299 -y Ft(P)432 b Fu(The)22 b(expansion)h(is)g(a)g(string)g(that)g(is)g(the) -g(result)g(of)g(expanding)f(the)h(v)-5 b(alue)24 b(of)1110 -408 y Fr(parameter)31 b Fu(as)24 b(if)f(it)h(w)m(ere)g(a)g(prompt)f -(string)h(\(see)g(Section)h(6.9)g([Con)m(trolling)1110 -518 y(the)31 b(Prompt],)f(page)h(98\).)630 676 y Ft(A)432 -b Fu(The)24 b(expansion)g(is)g(a)h(string)f(in)g(the)g(form)g(of)h(an)f -(assignmen)m(t)h(statemen)m(t)h(or)1110 785 y Ft(declare)h -Fu(command)i(that,)h(if)f(ev)-5 b(aluated,)31 b(will)e(recreate)i -Fr(parameter)36 b Fu(with)1110 895 y(its)31 b(attributes)g(and)e(v)-5 -b(alue.)630 1052 y Ft(K)432 b Fu(Pro)s(duces)33 b(a)i(p)s -(ossibly-quoted)e(v)m(ersion)i(of)f(the)h(v)-5 b(alue)34 -b(of)h Fr(parameter)p Fu(,)g(ex-)1110 1162 y(cept)46 -b(that)h(it)f(prin)m(ts)f(the)h(v)-5 b(alues)47 b(of)f(indexed)f(and)g -(asso)s(ciativ)m(e)k(arra)m(ys)1110 1271 y(as)37 b(a)g(sequence)f(of)h -(quoted)g(k)m(ey-v)-5 b(alue)38 b(pairs)e(\(see)h(Section)h(6.7)f -([Arra)m(ys],)1110 1381 y(page)31 b(95\).)630 1539 y -Ft(a)432 b Fu(The)30 b(expansion)g(is)g(a)h(string)f(consisting)h(of)g -(\015ag)g(v)-5 b(alues)30 b(represen)m(ting)h Fr(pa-)1110 -1648 y(rameter)7 b Fu('s)31 b(attributes.)630 1806 y(If)e -Fr(parameter)37 b Fu(is)30 b(`)p Ft(@)p Fu(')g(or)g(`)p +3577 y(anism.)630 3733 y Ft(P)432 b Fu(The)22 b(expansion)h(is)g(a)g +(string)g(that)g(is)g(the)g(result)g(of)g(expanding)f(the)h(v)-5 +b(alue)24 b(of)1110 3842 y Fr(parameter)31 b Fu(as)24 +b(if)f(it)h(w)m(ere)g(a)g(prompt)f(string)h(\(see)g(Section)h(6.9)g +([Con)m(trolling)1110 3952 y(the)31 b(Prompt],)f(page)h(104\).)630 +4107 y Ft(A)432 b Fu(The)24 b(expansion)g(is)g(a)h(string)f(in)g(the)g +(form)g(of)h(an)f(assignmen)m(t)h(statemen)m(t)h(or)1110 +4217 y Ft(declare)h Fu(command)i(that,)h(if)f(ev)-5 b(aluated,)31 +b(will)e(recreate)i Fr(parameter)36 b Fu(with)1110 4326 +y(its)31 b(attributes)g(and)e(v)-5 b(alue.)630 4482 y +Ft(K)432 b Fu(Pro)s(duces)33 b(a)i(p)s(ossibly-quoted)e(v)m(ersion)i +(of)f(the)h(v)-5 b(alue)34 b(of)h Fr(parameter)p Fu(,)g(ex-)1110 +4591 y(cept)46 b(that)h(it)f(prin)m(ts)f(the)h(v)-5 b(alues)47 +b(of)f(indexed)f(and)g(asso)s(ciativ)m(e)k(arra)m(ys)1110 +4701 y(as)37 b(a)g(sequence)f(of)h(quoted)g(k)m(ey-v)-5 +b(alue)38 b(pairs)e(\(see)h(Section)h(6.7)f([Arra)m(ys],)1110 +4810 y(page)31 b(100\).)630 4966 y Ft(a)432 b Fu(The)30 +b(expansion)g(is)g(a)h(string)f(consisting)h(of)g(\015ag)g(v)-5 +b(alues)30 b(represen)m(ting)h Fr(pa-)1110 5075 y(rameter)7 +b Fu('s)31 b(attributes.)630 5230 y Ft(k)432 b Fu(Lik)m(e)29 +b(the)g(`)p Ft(K)p Fu(')g(transformation,)g(but)f(expands)g(the)g(k)m +(eys)i(and)d(v)-5 b(alues)29 b(of)g(in-)1110 5340 y(dexed)c(and)f(asso) +s(ciativ)m(e)k(arra)m(ys)d(to)h(separate)f(w)m(ords)g(after)g(w)m(ord)g +(splitting.)p eop end +%%Page: 34 40 +TeXDict begin 34 39 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(34)630 299 +y(If)29 b Fr(parameter)37 b Fu(is)30 b(`)p Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)g(the)g(op)s(eration)g(is)g(applied)f(to)i(eac)m(h)g(p)s -(ositional)f(parameter)630 1915 y(in)24 b(turn,)g(and)f(the)h -(expansion)g(is)g(the)g(resultan)m(t)h(list.)39 b(If)23 -b Fr(parameter)31 b Fu(is)24 b(an)g(arra)m(y)g(v)-5 b(ariable)630 -2025 y(subscripted)24 b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p -Ft(*)p Fu(',)h(the)e(op)s(eration)h(is)g(applied)f(to)h(eac)m(h)h(mem)m -(b)s(er)e(of)h(the)f(arra)m(y)630 2134 y(in)30 b(turn,)g(and)f(the)i -(expansion)f(is)h(the)f(resultan)m(t)h(list.)630 2268 -y(The)c(result)h(of)g(the)f(expansion)h(is)g(sub)5 b(ject)27 -b(to)h(w)m(ord)g(splitting)g(and)f(\014lename)h(expansion)630 -2378 y(as)j(describ)s(ed)e(b)s(elo)m(w.)150 2575 y Fk(3.5.4)63 -b(Command)41 b(Substitution)150 2722 y Fu(Command)f(substitution)h +(ositional)f(parameter)630 408 y(in)24 b(turn,)g(and)f(the)h(expansion) +g(is)g(the)g(resultan)m(t)h(list.)39 b(If)23 b Fr(parameter)31 +b Fu(is)24 b(an)g(arra)m(y)g(v)-5 b(ariable)630 518 y(subscripted)24 +b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p Ft(*)p Fu(',)h(the)e(op)s(eration)h +(is)g(applied)f(to)h(eac)m(h)h(mem)m(b)s(er)e(of)h(the)f(arra)m(y)630 +628 y(in)30 b(turn,)g(and)f(the)i(expansion)f(is)h(the)f(resultan)m(t)h +(list.)630 761 y(The)c(result)h(of)g(the)f(expansion)h(is)g(sub)5 +b(ject)27 b(to)h(w)m(ord)g(splitting)g(and)f(\014lename)h(expansion)630 +870 y(as)j(describ)s(ed)e(b)s(elo)m(w.)150 1067 y Fk(3.5.4)63 +b(Command)41 b(Substitution)150 1214 y Fu(Command)f(substitution)h (allo)m(ws)i(the)e(output)g(of)h(a)f(command)g(to)h(replace)g(the)g -(command)f(itself.)150 2831 y(Command)29 b(substitution)h(o)s(ccurs)h +(command)f(itself.)150 1324 y(Command)29 b(substitution)h(o)s(ccurs)h (when)e(a)i(command)f(is)g(enclosed)h(as)g(follo)m(ws:)390 -2965 y Ft($\()p Fj(command)p Ft(\))150 3098 y Fu(or)390 -3232 y Ft(`)p Fj(command)p Ft(`)150 3366 y Fu(Bash)20 +1457 y Ft($\()p Fj(command)p Ft(\))150 1590 y Fu(or)390 +1724 y Ft(`)p Fj(command)p Ft(`)150 1857 y Fu(Bash)20 b(p)s(erforms)f(the)i(expansion)f(b)m(y)g(executing)i Fr(command)h Fu(in)d(a)h(subshell)e(en)m(vironmen)m(t)i(and)f -(replacing)150 3475 y(the)40 b(command)g(substitution)f(with)h(the)g +(replacing)150 1966 y(the)40 b(command)g(substitution)f(with)h(the)g (standard)f(output)g(of)h(the)g(command,)i(with)e(an)m(y)g(trailing)150 -3585 y(newlines)e(deleted.)64 b(Em)m(b)s(edded)37 b(newlines)h(are)g +2076 y(newlines)e(deleted.)64 b(Em)m(b)s(edded)37 b(newlines)h(are)g (not)g(deleted,)j(but)d(they)g(ma)m(y)h(b)s(e)e(remo)m(v)m(ed)i(during) -150 3694 y(w)m(ord)30 b(splitting.)42 b(The)30 b(command)g +150 2186 y(w)m(ord)30 b(splitting.)42 b(The)30 b(command)g (substitution)h Ft($\(cat)e Fj(file)p Ft(\))g Fu(can)h(b)s(e)g -(replaced)h(b)m(y)g(the)f(equiv)-5 b(alen)m(t)150 3804 +(replaced)h(b)m(y)g(the)f(equiv)-5 b(alen)m(t)150 2295 y(but)30 b(faster)g Ft($\(<)g Fj(file)p Ft(\))p Fu(.)275 -3937 y(When)j(the)i(old-st)m(yle)h(bac)m(kquote)f(form)f(of)g +2428 y(When)j(the)i(old-st)m(yle)h(bac)m(kquote)f(form)f(of)g (substitution)g(is)g(used,)h(bac)m(kslash)f(retains)h(its)f(literal)150 -4047 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e(`)p +2538 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e(`)p Ft($)p Fu(',)j(`)p Ft(`)p Fu(',)f(or)e(`)p Ft(\\)p Fu('.)64 b(The)38 b(\014rst)f(bac)m(kquote)j(not)e(preceded)g(b)m(y)g(a)150 -4157 y(bac)m(kslash)k(terminates)f(the)h(command)e(substitution.)72 +2648 y(bac)m(kslash)k(terminates)f(the)h(command)e(substitution.)72 b(When)41 b(using)f(the)i Ft($\()p Fj(command)p Ft(\))c -Fu(form,)43 b(all)150 4266 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the) +Fu(form,)43 b(all)150 2757 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the) f(paren)m(theses)h(mak)m(e)g(up)f(the)g(command;)h(none)f(are)h -(treated)g(sp)s(ecially)-8 b(.)275 4400 y(Command)22 +(treated)g(sp)s(ecially)-8 b(.)275 2890 y(Command)22 b(substitutions)g(ma)m(y)i(b)s(e)e(nested.)39 b(T)-8 b(o)23 b(nest)g(when)f(using)h(the)g(bac)m(kquoted)h(form,)g(escap)s(e) -150 4509 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m(kslashes.)275 -4643 y(If)e(the)i(substitution)e(app)s(ears)h(within)g(double)f +150 3000 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m(kslashes.)275 +3133 y(If)e(the)i(substitution)e(app)s(ears)h(within)g(double)f (quotes,)i(w)m(ord)f(splitting)h(and)f(\014lename)g(expansion)150 -4753 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150 -4950 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 5097 +3243 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150 +3440 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 3587 y Fu(Arithmetic)25 b(expansion)g(allo)m(ws)g(the)g(ev)-5 b(aluation)26 b(of)f(an)f(arithmetic)i(expression)e(and)g(the)g -(substitution)150 5206 y(of)31 b(the)f(result.)41 b(The)30 -b(format)g(for)g(arithmetic)i(expansion)e(is:)390 5340 -y Ft($\(\()47 b Fj(expression)e Ft(\)\))p eop end -%%Page: 32 38 -TeXDict begin 32 37 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)275 299 -y(The)33 b(expression)g(is)h(treated)g(as)g(if)g(it)g(w)m(ere)g(within) -f(double)h(quotes,)h(but)e(a)h(double)f(quote)h(inside)150 -408 y(the)k(paren)m(theses)g(is)g(not)g(treated)h(sp)s(ecially)-8 -b(.)65 b(All)38 b(tok)m(ens)h(in)f(the)g(expression)f(undergo)g -(parameter)150 518 y(and)26 b(v)-5 b(ariable)28 b(expansion,)g(command) -e(substitution,)i(and)e(quote)i(remo)m(v)-5 b(al.)41 -b(The)26 b(result)h(is)g(treated)h(as)150 628 y(the)j(arithmetic)g -(expression)f(to)h(b)s(e)f(ev)-5 b(aluated.)42 b(Arithmetic)31 -b(expansions)g(ma)m(y)g(b)s(e)e(nested.)275 761 y(The)34 -b(ev)-5 b(aluation)37 b(is)f(p)s(erformed)e(according)i(to)g(the)g -(rules)f(listed)h(b)s(elo)m(w)g(\(see)g(Section)g(6.5)h([Shell)150 -870 y(Arithmetic],)32 b(page)f(93\).)42 b(If)30 b(the)h(expression)f -(is)g(in)m(v)-5 b(alid,)32 b(Bash)e(prin)m(ts)g(a)h(message)g -(indicating)h(failure)150 980 y(to)f(the)g(standard)e(error)h(and)g(no) -g(substitution)g(o)s(ccurs.)150 1177 y Fk(3.5.6)63 b(Pro)s(cess)42 -b(Substitution)150 1324 y Fu(Pro)s(cess)33 b(substitution)g(allo)m(ws)i -(a)e(pro)s(cess's)g(input)f(or)h(output)g(to)h(b)s(e)f(referred)f(to)i -(using)f(a)g(\014lename.)150 1433 y(It)d(tak)m(es)i(the)f(form)f(of)390 -1567 y Ft(<\()p Fj(list)p Ft(\))150 1700 y Fu(or)390 -1833 y Ft(>\()p Fj(list)p Ft(\))150 1966 y Fu(The)e(pro)s(cess)h -Fr(list)j Fu(is)d(run)e(async)m(hronously)-8 b(,)30 b(and)e(its)i -(input)e(or)h(output)f(app)s(ears)h(as)g(a)g(\014lename.)41 -b(This)150 2076 y(\014lename)25 b(is)g(passed)g(as)g(an)g(argumen)m(t)h -(to)g(the)f(curren)m(t)g(command)g(as)g(the)g(result)g(of)g(the)h -(expansion.)38 b(If)150 2186 y(the)28 b Ft(>\()p Fj(list)p -Ft(\))d Fu(form)i(is)g(used,)h(writing)f(to)h(the)g(\014le)f(will)h -(pro)m(vide)g(input)e(for)h Fr(list)p Fu(.)41 b(If)26 -b(the)i Ft(<\()p Fj(list)p Ft(\))d Fu(form)150 2295 y(is)g(used,)g(the) -f(\014le)h(passed)f(as)h(an)f(argumen)m(t)h(should)e(b)s(e)h(read)h(to) -g(obtain)g(the)f(output)g(of)h Fr(list)p Fu(.)40 b(Note)25 -b(that)150 2405 y(no)33 b(space)g(ma)m(y)g(app)s(ear)f(b)s(et)m(w)m -(een)i(the)f Ft(<)f Fu(or)h Ft(>)f Fu(and)g(the)h(left)h(paren)m -(thesis,)f(otherwise)h(the)f(construct)150 2514 y(w)m(ould)j(b)s(e)g -(in)m(terpreted)g(as)h(a)f(redirection.)59 b(Pro)s(cess)36 -b(substitution)g(is)h(supp)s(orted)d(on)i(systems)g(that)150 -2624 y(supp)s(ort)29 b(named)h(pip)s(es)f(\()p Fm(fif)n(o)p -Fu(s\))h(or)h(the)f Ft(/dev/fd)f Fu(metho)s(d)h(of)g(naming)g(op)s(en)g -(\014les.)275 2757 y(When)36 b(a)m(v)-5 b(ailable,)40 -b(pro)s(cess)c(substitution)h(is)f(p)s(erformed)f(sim)m(ultaneously)i -(with)g(parameter)g(and)150 2867 y(v)-5 b(ariable)31 -b(expansion,)g(command)f(substitution,)g(and)g(arithmetic)i(expansion.) -150 3064 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150 -3210 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h(parameter)g -(expansion,)g(command)g(substitution,)g(and)f(arithmetic)150 -3320 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h -(quotes)h(for)f(w)m(ord)g(splitting.)275 3453 y(The)e(shell)g(treats)i +(substitution)150 3696 y(of)31 b(the)f(result.)41 b(The)30 +b(format)g(for)g(arithmetic)i(expansion)e(is:)390 3829 +y Ft($\(\()47 b Fj(expression)e Ft(\)\))275 3963 y Fu(The)34 +b Fr(expression)h Fu(undergo)s(es)f(the)h(same)h(expansions)e(as)i(if)f +(it)g(w)m(ere)h(within)e(double)h(quotes,)i(but)150 4072 +y(double)g(quote)g(c)m(haracters)i(in)d Fr(expression)h +Fu(are)g(not)g(treated)h(sp)s(ecially)g(and)f(are)g(remo)m(v)m(ed.)61 +b(All)38 b(to-)150 4182 y(k)m(ens)c(in)f(the)h(expression)f(undergo)g +(parameter)h(and)f(v)-5 b(ariable)34 b(expansion,)h(command)e +(substitution,)150 4291 y(and)41 b(quote)i(remo)m(v)-5 +b(al.)76 b(The)41 b(result)h(is)g(treated)h(as)f(the)g(arithmetic)h +(expression)f(to)g(b)s(e)f(ev)-5 b(aluated.)150 4401 +y(Arithmetic)31 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)275 +4534 y(The)k(ev)-5 b(aluation)37 b(is)f(p)s(erformed)e(according)i(to)g +(the)g(rules)f(listed)h(b)s(elo)m(w)g(\(see)g(Section)g(6.5)h([Shell) +150 4644 y(Arithmetic],)32 b(page)f(98\).)42 b(If)30 +b(the)h(expression)f(is)g(in)m(v)-5 b(alid,)32 b(Bash)e(prin)m(ts)g(a)h +(message)g(indicating)h(failure)150 4753 y(to)f(the)g(standard)e(error) +h(and)g(no)g(substitution)g(o)s(ccurs.)150 4950 y Fk(3.5.6)63 +b(Pro)s(cess)42 b(Substitution)150 5097 y Fu(Pro)s(cess)33 +b(substitution)g(allo)m(ws)i(a)e(pro)s(cess's)g(input)f(or)h(output)g +(to)h(b)s(e)f(referred)f(to)i(using)f(a)g(\014lename.)150 +5207 y(It)d(tak)m(es)i(the)f(form)f(of)390 5340 y Ft(<\()p +Fj(list)p Ft(\))p eop end +%%Page: 35 41 +TeXDict begin 35 40 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(35)150 299 +y(or)390 426 y Ft(>\()p Fj(list)p Ft(\))150 553 y Fu(The)28 +b(pro)s(cess)h Fr(list)j Fu(is)d(run)e(async)m(hronously)-8 +b(,)30 b(and)e(its)i(input)e(or)h(output)f(app)s(ears)h(as)g(a)g +(\014lename.)41 b(This)150 663 y(\014lename)25 b(is)g(passed)g(as)g(an) +g(argumen)m(t)h(to)g(the)f(curren)m(t)g(command)g(as)g(the)g(result)g +(of)g(the)h(expansion.)38 b(If)150 772 y(the)28 b Ft(>\()p +Fj(list)p Ft(\))d Fu(form)i(is)g(used,)h(writing)f(to)h(the)g(\014le)f +(will)h(pro)m(vide)g(input)e(for)h Fr(list)p Fu(.)41 +b(If)26 b(the)i Ft(<\()p Fj(list)p Ft(\))d Fu(form)150 +882 y(is)g(used,)g(the)f(\014le)h(passed)f(as)h(an)f(argumen)m(t)h +(should)e(b)s(e)h(read)h(to)g(obtain)g(the)f(output)g(of)h +Fr(list)p Fu(.)40 b(Note)25 b(that)150 991 y(no)33 b(space)g(ma)m(y)g +(app)s(ear)f(b)s(et)m(w)m(een)i(the)f Ft(<)f Fu(or)h +Ft(>)f Fu(and)g(the)h(left)h(paren)m(thesis,)f(otherwise)h(the)f +(construct)150 1101 y(w)m(ould)j(b)s(e)g(in)m(terpreted)g(as)h(a)f +(redirection.)59 b(Pro)s(cess)36 b(substitution)g(is)h(supp)s(orted)d +(on)i(systems)g(that)150 1210 y(supp)s(ort)29 b(named)h(pip)s(es)f(\()p +Fm(fif)n(o)p Fu(s\))h(or)h(the)f Ft(/dev/fd)f Fu(metho)s(d)h(of)g +(naming)g(op)s(en)g(\014les.)275 1337 y(When)36 b(a)m(v)-5 +b(ailable,)40 b(pro)s(cess)c(substitution)h(is)f(p)s(erformed)f(sim)m +(ultaneously)i(with)g(parameter)g(and)150 1447 y(v)-5 +b(ariable)31 b(expansion,)g(command)f(substitution,)g(and)g(arithmetic) +i(expansion.)150 1631 y Fk(3.5.7)63 b(W)-10 b(ord)41 +b(Splitting)150 1778 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h +(parameter)g(expansion,)g(command)g(substitution,)g(and)f(arithmetic) +150 1888 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h +(quotes)h(for)f(w)m(ord)g(splitting.)275 2015 y(The)e(shell)g(treats)i (eac)m(h)g(c)m(haracter)g(of)f Ft($IFS)e Fu(as)i(a)g(delimiter,)h(and)e -(splits)g(the)h(results)f(of)h(the)g(other)150 3563 y(expansions)22 +(splits)g(the)h(results)f(of)h(the)g(other)150 2125 y(expansions)22 b(in)m(to)i(w)m(ords)e(using)h(these)g(c)m(haracters)h(as)f(\014eld)f (terminators.)39 b(If)22 b Ft(IFS)g Fu(is)h(unset,)h(or)e(its)h(v)-5 -b(alue)150 3672 y(is)36 b(exactly)j Ft()p +b(alue)150 2234 y(is)36 b(exactly)j Ft()p Fu(,)32 b(the)37 b(default,)h(then)e(sequences)h(of)67 -b Ft()p Fu(,)36 b Ft()p Fu(,)h(and)150 3782 +b Ft()p Fu(,)36 b Ft()p Fu(,)h(and)150 2344 y Ft()28 b Fu(at)k(the)f(b)s(eginning)f(and)h(end)f(of)h(the)g (results)g(of)g(the)g(previous)g(expansions)f(are)i(ignored,)150 -3892 y(and)k(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f +2453 y(and)k(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f (at)h(the)f(b)s(eginning)f(or)h(end)f(serv)m(es)h(to)h(delimit)f(w)m -(ords.)150 4001 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5 +(ords.)150 2563 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5 b(alue)43 b(other)h(than)f(the)g(default,)k(then)c(sequences)h(of)f -(the)h(whitespace)f(c)m(haracters)150 4111 y Ft(space)p +(the)h(whitespace)f(c)m(haracters)150 2672 y Ft(space)p Fu(,)29 b Ft(tab)p Fu(,)h(and)g Ft(newline)e Fu(are)j(ignored)g(at)g (the)f(b)s(eginning)g(and)g(end)g(of)g(the)h(w)m(ord,)f(as)h(long)g(as) -g(the)150 4220 y(whitespace)c(c)m(haracter)h(is)f(in)f(the)g(v)-5 +g(the)150 2782 y(whitespace)c(c)m(haracter)h(is)f(in)f(the)g(v)-5 b(alue)27 b(of)g Ft(IFS)e Fu(\(an)i Ft(IFS)e Fu(whitespace)i(c)m -(haracter\).)42 b(An)m(y)26 b(c)m(haracter)i(in)150 4330 +(haracter\).)42 b(An)m(y)26 b(c)m(haracter)i(in)150 2892 y Ft(IFS)c Fu(that)h(is)g(not)f Ft(IFS)g Fu(whitespace,)j(along)f(with) e(an)m(y)h(adjacen)m(t)h Ft(IFS)e Fu(whitespace)h(c)m(haracters,)i -(delimits)150 4440 y(a)k(\014eld.)40 b(A)31 b(sequence)g(of)f +(delimits)150 3001 y(a)k(\014eld.)40 b(A)31 b(sequence)g(of)f Ft(IFS)g Fu(whitespace)h(c)m(haracters)h(is)e(also)h(treated)h(as)f(a)f -(delimiter.)42 b(If)30 b(the)g(v)-5 b(alue)150 4549 y(of)31 +(delimiter.)42 b(If)30 b(the)g(v)-5 b(alue)150 3111 y(of)31 b Ft(IFS)e Fu(is)h(n)m(ull,)h(no)f(w)m(ord)g(splitting)h(o)s(ccurs.)275 -4682 y(Explicit)21 b(n)m(ull)g(argumen)m(ts)g(\()p Ft("")g +3238 y(Explicit)21 b(n)m(ull)g(argumen)m(ts)g(\()p Ft("")g Fu(or)g Ft('')p Fu(\))f(are)h(retained)h(and)e(passed)g(to)i(commands)e -(as)i(empt)m(y)f(strings.)150 4792 y(Unquoted)37 b(implicit)i(n)m(ull)f +(as)i(empt)m(y)f(strings.)150 3347 y(Unquoted)37 b(implicit)i(n)m(ull)f (argumen)m(ts,)i(resulting)d(from)g(the)h(expansion)g(of)g(parameters)f -(that)i(ha)m(v)m(e)150 4902 y(no)32 b(v)-5 b(alues,)33 +(that)i(ha)m(v)m(e)150 3457 y(no)32 b(v)-5 b(alues,)33 b(are)f(remo)m(v)m(ed.)47 b(If)32 b(a)g(parameter)h(with)e(no)h(v)-5 b(alue)33 b(is)f(expanded)f(within)h(double)f(quotes,)j(a)150 -5011 y(n)m(ull)c(argumen)m(t)g(results)g(and)f(is)h(retained)g(and)f +3567 y(n)m(ull)c(argumen)m(t)g(results)g(and)f(is)h(retained)g(and)f (passed)g(to)i(a)f(command)g(as)g(an)f(empt)m(y)i(string.)40 -b(When)150 5121 y(a)f(quoted)f(n)m(ull)g(argumen)m(t)h(app)s(ears)e(as) +b(When)150 3676 y(a)f(quoted)f(n)m(ull)g(argumen)m(t)h(app)s(ears)e(as) i(part)f(of)g(a)g(w)m(ord)g(whose)g(expansion)g(is)h(non-n)m(ull,)h -(the)e(n)m(ull)150 5230 y(argumen)m(t)i(is)f(remo)m(v)m(ed.)69 +(the)e(n)m(ull)150 3786 y(argumen)m(t)i(is)f(remo)m(v)m(ed.)69 b(That)39 b(is,)j(the)e(w)m(ord)f Ft(-d'')f Fu(b)s(ecomes)i Ft(-d)e Fu(after)i(w)m(ord)f(splitting)h(and)f(n)m(ull)150 -5340 y(argumen)m(t)31 b(remo)m(v)-5 b(al.)p eop end -%%Page: 33 39 -TeXDict begin 33 38 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)275 299 -y(Note)31 b(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h(splitting)g -(is)f(p)s(erformed.)150 505 y Fk(3.5.8)63 b(Filename)41 -b(Expansion)150 652 y Fu(After)30 b(w)m(ord)f(splitting,)i(unless)d -(the)i Ft(-f)f Fu(option)h(has)f(b)s(een)g(set)h(\(see)g(Section)h -(4.3.1)g([The)e(Set)h(Builtin],)150 762 y(page)d(62\),)i(Bash)d(scans)h -(eac)m(h)h(w)m(ord)e(for)g(the)h(c)m(haracters)g(`)p -Ft(*)p Fu(',)h(`)p Ft(?)p Fu(',)g(and)e(`)p Ft([)p Fu('.)39 -b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 872 y(app)s(ears,)34 +3895 y(argumen)m(t)31 b(remo)m(v)-5 b(al.)275 4022 y(Note)31 +b(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h(splitting)g(is)f(p)s +(erformed.)150 4207 y Fk(3.5.8)63 b(Filename)41 b(Expansion)150 +4354 y Fu(After)30 b(w)m(ord)f(splitting,)i(unless)d(the)i +Ft(-f)f Fu(option)h(has)f(b)s(een)g(set)h(\(see)g(Section)h(4.3.1)g +([The)e(Set)h(Builtin],)150 4463 y(page)d(67\),)i(Bash)d(scans)h(eac)m +(h)h(w)m(ord)e(for)g(the)h(c)m(haracters)g(`)p Ft(*)p +Fu(',)h(`)p Ft(?)p Fu(',)g(and)e(`)p Ft([)p Fu('.)39 +b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 4573 y(app)s(ears,)34 b(and)f(is)g(not)h(quoted,)h(then)e(the)h(w)m(ord)f(is)h(regarded)f(as) h(a)g Fr(pattern)p Fu(,)h(and)e(replaced)h(with)f(an)150 -981 y(alphab)s(etically)41 b(sorted)e(list)h(of)g(\014lenames)f(matc)m +4682 y(alphab)s(etically)41 b(sorted)e(list)h(of)g(\014lenames)f(matc)m (hing)i(the)e(pattern)g(\(see)i(Section)f(3.5.8.1)i([P)m(attern)150 -1091 y(Matc)m(hing],)e(page)e(33\).)60 b(If)36 b(no)h(matc)m(hing)g +4792 y(Matc)m(hing],)e(page)e(36\).)60 b(If)36 b(no)h(matc)m(hing)g (\014lenames)g(are)g(found,)g(and)f(the)g(shell)h(option)g -Ft(nullglob)150 1200 y Fu(is)k(disabled,)i(the)f(w)m(ord)e(is)h(left)h +Ft(nullglob)150 4902 y Fu(is)k(disabled,)i(the)f(w)m(ord)e(is)h(left)h (unc)m(hanged.)72 b(If)40 b(the)h Ft(nullglob)e Fu(option)i(is)g(set,)k -(and)40 b(no)h(matc)m(hes)150 1310 y(are)c(found,)g(the)g(w)m(ord)f(is) +(and)40 b(no)h(matc)m(hes)150 5011 y(are)c(found,)g(the)g(w)m(ord)f(is) g(remo)m(v)m(ed.)60 b(If)36 b(the)h Ft(failglob)d Fu(shell)j(option)g -(is)g(set,)i(and)c(no)i(matc)m(hes)h(are)150 1420 y(found,)e(an)g +(is)g(set,)i(and)c(no)i(matc)m(hes)h(are)150 5121 y(found,)e(an)g (error)f(message)i(is)f(prin)m(ted)f(and)h(the)g(command)f(is)h(not)g -(executed.)58 b(If)35 b(the)h(shell)g(option)150 1529 +(executed.)58 b(If)35 b(the)h(shell)g(option)150 5230 y Ft(nocaseglob)e Fu(is)j(enabled,)i(the)e(matc)m(h)h(is)f(p)s (erformed)e(without)i(regard)g(to)h(the)f(case)h(of)f(alphab)s(etic)150 -1639 y(c)m(haracters.)275 1781 y(When)23 b(a)h(pattern)f(is)h(used)f -(for)g(\014lename)h(expansion,)h(the)e(c)m(haracter)i(`)p -Ft(.)p Fu(')f(at)g(the)g(start)g(of)g(a)g(\014lename)150 -1890 y(or)f(immediately)i(follo)m(wing)g(a)f(slash)f(m)m(ust)h(b)s(e)f -(matc)m(hed)h(explicitly)-8 b(,)27 b(unless)c(the)g(shell)h(option)g -Ft(dotglob)150 2000 y Fu(is)k(set.)41 b(The)28 b(\014lenames)g(`)p -Ft(.)p Fu(')g(and)g(`)p Ft(..)p Fu(')g(m)m(ust)g(alw)m(a)m(ys)i(b)s(e)e -(matc)m(hed)h(explicitly)-8 b(,)30 b(ev)m(en)f(if)g Ft(dotglob)d -Fu(is)i(set.)150 2109 y(In)i(other)g(cases,)i(the)e(`)p -Ft(.)p Fu(')h(c)m(haracter)h(is)e(not)h(treated)g(sp)s(ecially)-8 -b(.)275 2251 y(When)30 b(matc)m(hing)i(a)f(\014lename,)h(the)f(slash)f +5340 y(c)m(haracters.)p eop end +%%Page: 36 42 +TeXDict begin 36 41 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(36)275 299 +y(When)23 b(a)h(pattern)f(is)h(used)f(for)g(\014lename)h(expansion,)h +(the)e(c)m(haracter)i(`)p Ft(.)p Fu(')f(at)g(the)g(start)g(of)g(a)g +(\014lename)150 408 y(or)f(immediately)i(follo)m(wing)g(a)f(slash)f(m)m +(ust)h(b)s(e)f(matc)m(hed)h(explicitly)-8 b(,)27 b(unless)c(the)g +(shell)h(option)g Ft(dotglob)150 518 y Fu(is)36 b(set.)58 +b(In)35 b(order)g(to)i(matc)m(h)f(the)g(\014lenames)g(`)p +Ft(.)p Fu(')g(and)g(`)p Ft(..)p Fu(',)h(the)f(pattern)g(m)m(ust)g(b)s +(egin)f(with)h(`)p Ft(.)p Fu(')g(\(for)150 628 y(example,)42 +b(`)p Ft(.?)p Fu('\),)f(ev)m(en)f(if)f Ft(dotglob)d Fu(is)j(set.)67 +b(If)38 b(the)h Ft(globskipdots)d Fu(shell)j(option)g(is)g(enabled,)i +(the)150 737 y(\014lenames)33 b(`)p Ft(.)p Fu(')g(and)f(`)p +Ft(..)p Fu(')h(are)g(nev)m(er)g(matc)m(hed,)h(ev)m(en)g(if)e(the)h +(pattern)g(b)s(egins)f(with)h(a)g(`)p Ft(.)p Fu('.)48 +b(When)33 b(not)150 847 y(matc)m(hing)e(\014lenames,)g(the)g(`)p +Ft(.)p Fu(')f(c)m(haracter)i(is)f(not)f(treated)i(sp)s(ecially)-8 +b(.)275 985 y(When)30 b(matc)m(hing)i(a)f(\014lename,)h(the)f(slash)f (c)m(haracter)j(m)m(ust)d(alw)m(a)m(ys)j(b)s(e)d(matc)m(hed)h -(explicitly)i(b)m(y)e(a)150 2361 y(slash)d(in)f(the)h(pattern,)h(but)e +(explicitly)i(b)m(y)e(a)150 1095 y(slash)d(in)f(the)h(pattern,)h(but)e (in)h(other)g(matc)m(hing)h(con)m(texts)h(it)e(can)g(b)s(e)g(matc)m -(hed)g(b)m(y)g(a)g(sp)s(ecial)h(pattern)150 2470 y(c)m(haracter)j(as)f +(hed)g(b)m(y)g(a)g(sp)s(ecial)h(pattern)150 1205 y(c)m(haracter)j(as)f (describ)s(ed)e(b)s(elo)m(w)h(\(see)i(Section)f(3.5.8.1)i([P)m(attern)e -(Matc)m(hing],)i(page)e(33\).)275 2612 y(See)d(the)g(description)g(of)g +(Matc)m(hing],)i(page)e(36\).)275 1343 y(See)d(the)g(description)g(of)g Ft(shopt)e Fu(in)i(Section)g(4.3.2)i([The)e(Shopt)f(Builtin],)i(page)g -(66,)g(for)f(a)g(descrip-)150 2722 y(tion)j(of)f(the)h -Ft(nocaseglob)p Fu(,)d Ft(nullglob)p Fu(,)g Ft(failglob)p -Fu(,)h(and)g Ft(dotglob)g Fu(options.)275 2864 y(The)36 -b Ft(GLOBIGNORE)d Fu(shell)k(v)-5 b(ariable)37 b(ma)m(y)g(b)s(e)f(used) -g(to)h(restrict)g(the)g(set)g(of)g(\014le)f(names)h(matc)m(hing)150 -2973 y(a)42 b(pattern.)74 b(If)41 b Ft(GLOBIGNORE)e Fu(is)i(set,)k(eac) -m(h)e(matc)m(hing)f(\014le)g(name)f(that)h(also)h(matc)m(hes)f(one)g -(of)g(the)150 3083 y(patterns)34 b(in)g Ft(GLOBIGNORE)d -Fu(is)k(remo)m(v)m(ed)g(from)f(the)g(list)h(of)f(matc)m(hes.)54 -b(If)33 b(the)i Ft(nocaseglob)c Fu(option)k(is)150 3192 -y(set,)c(the)e(matc)m(hing)i(against)g(the)f(patterns)f(in)h -Ft(GLOBIGNORE)c Fu(is)k(p)s(erformed)e(without)i(regard)f(to)i(case.) -150 3302 y(The)d(\014lenames)h Ft(.)g Fu(and)f Ft(..)h -Fu(are)g(alw)m(a)m(ys)h(ignored)f(when)f Ft(GLOBIGNORE)f -Fu(is)i(set)g(and)f(not)h(n)m(ull.)41 b(Ho)m(w)m(ev)m(er,)150 -3412 y(setting)30 b Ft(GLOBIGNORE)d Fu(to)j(a)f(non-n)m(ull)g(v)-5 -b(alue)30 b(has)f(the)g(e\013ect)i(of)f(enabling)f(the)h -Ft(dotglob)d Fu(shell)i(option,)150 3521 y(so)j(all)h(other)f -(\014lenames)g(b)s(eginning)f(with)h(a)g(`)p Ft(.)p Fu(')g(will)h(matc) -m(h.)46 b(T)-8 b(o)32 b(get)h(the)f(old)g(b)s(eha)m(vior)g(of)h -(ignoring)150 3631 y(\014lenames)c(b)s(eginning)f(with)h(a)h(`)p -Ft(.)p Fu(',)f(mak)m(e)h(`)p Ft(.*)p Fu(')f(one)h(of)f(the)g(patterns)g -(in)g Ft(GLOBIGNORE)p Fu(.)37 b(The)29 b Ft(dotglob)150 -3740 y Fu(option)i(is)f(disabled)g(when)g Ft(GLOBIGNORE)d -Fu(is)k(unset.)150 3947 y Fk(3.5.8.1)63 b(P)m(attern)40 -b(Matc)m(hing)150 4094 y Fu(An)m(y)24 b(c)m(haracter)h(that)f(app)s -(ears)f(in)g(a)h(pattern,)i(other)e(than)f(the)h(sp)s(ecial)g(pattern)g -(c)m(haracters)h(describ)s(ed)150 4203 y(b)s(elo)m(w,)31 -b(matc)m(hes)g(itself.)42 b(The)29 b Fm(nul)h Fu(c)m(haracter)i(ma)m(y) -e(not)h(o)s(ccur)f(in)g(a)h(pattern.)40 b(A)31 b(bac)m(kslash)g(escap)s -(es)150 4313 y(the)38 b(follo)m(wing)g(c)m(haracter;)43 -b(the)37 b(escaping)i(bac)m(kslash)e(is)h(discarded)f(when)f(matc)m -(hing.)63 b(The)36 b(sp)s(ecial)150 4423 y(pattern)30 -b(c)m(haracters)i(m)m(ust)f(b)s(e)e(quoted)i(if)f(they)h(are)f(to)i(b)s -(e)d(matc)m(hed)i(literally)-8 b(.)275 4564 y(The)29 -b(sp)s(ecial)i(pattern)g(c)m(haracters)h(ha)m(v)m(e)f(the)g(follo)m -(wing)h(meanings:)150 4735 y Ft(*)432 b Fu(Matc)m(hes)31 -b(an)m(y)e(string,)h(including)f(the)g(n)m(ull)g(string.)41 -b(When)29 b(the)g Ft(globstar)e Fu(shell)i(option)630 -4844 y(is)37 b(enabled,)h(and)e(`)p Ft(*)p Fu(')h(is)g(used)f(in)g(a)h +(71,)g(for)f(a)g(descrip-)150 1453 y(tion)j(of)f(the)h +Ft(nocaseglob)p Fu(,)d Ft(nullglob)p Fu(,)g Ft(globskipdots)p +Fu(,)f Ft(failglob)p Fu(,)i(and)h Ft(dotglob)e Fu(options.)275 +1592 y(The)36 b Ft(GLOBIGNORE)d Fu(shell)k(v)-5 b(ariable)37 +b(ma)m(y)g(b)s(e)f(used)g(to)h(restrict)g(the)g(set)g(of)g(\014le)f +(names)h(matc)m(hing)150 1701 y(a)42 b(pattern.)74 b(If)41 +b Ft(GLOBIGNORE)e Fu(is)i(set,)k(eac)m(h)e(matc)m(hing)f(\014le)g(name) +f(that)h(also)h(matc)m(hes)f(one)g(of)g(the)150 1811 +y(patterns)34 b(in)g Ft(GLOBIGNORE)d Fu(is)k(remo)m(v)m(ed)g(from)f +(the)g(list)h(of)f(matc)m(hes.)54 b(If)33 b(the)i Ft(nocaseglob)c +Fu(option)k(is)150 1920 y(set,)c(the)e(matc)m(hing)i(against)g(the)f +(patterns)f(in)h Ft(GLOBIGNORE)c Fu(is)k(p)s(erformed)e(without)i +(regard)f(to)i(case.)150 2030 y(The)d(\014lenames)h Ft(.)g +Fu(and)f Ft(..)h Fu(are)g(alw)m(a)m(ys)h(ignored)f(when)f +Ft(GLOBIGNORE)f Fu(is)i(set)g(and)f(not)h(n)m(ull.)41 +b(Ho)m(w)m(ev)m(er,)150 2139 y(setting)30 b Ft(GLOBIGNORE)d +Fu(to)j(a)f(non-n)m(ull)g(v)-5 b(alue)30 b(has)f(the)g(e\013ect)i(of)f +(enabling)f(the)h Ft(dotglob)d Fu(shell)i(option,)150 +2249 y(so)j(all)h(other)f(\014lenames)g(b)s(eginning)f(with)h(a)g(`)p +Ft(.)p Fu(')g(will)h(matc)m(h.)46 b(T)-8 b(o)32 b(get)h(the)f(old)g(b)s +(eha)m(vior)g(of)h(ignoring)150 2359 y(\014lenames)c(b)s(eginning)f +(with)h(a)h(`)p Ft(.)p Fu(',)f(mak)m(e)h(`)p Ft(.*)p +Fu(')f(one)h(of)f(the)g(patterns)g(in)g Ft(GLOBIGNORE)p +Fu(.)37 b(The)29 b Ft(dotglob)150 2468 y Fu(option)i(is)f(disabled)g +(when)g Ft(GLOBIGNORE)d Fu(is)k(unset.)150 2672 y Fk(3.5.8.1)63 +b(P)m(attern)40 b(Matc)m(hing)150 2819 y Fu(An)m(y)24 +b(c)m(haracter)h(that)f(app)s(ears)f(in)g(a)h(pattern,)i(other)e(than)f +(the)h(sp)s(ecial)g(pattern)g(c)m(haracters)h(describ)s(ed)150 +2928 y(b)s(elo)m(w,)31 b(matc)m(hes)g(itself.)42 b(The)29 +b Fm(nul)h Fu(c)m(haracter)i(ma)m(y)e(not)h(o)s(ccur)f(in)g(a)h +(pattern.)40 b(A)31 b(bac)m(kslash)g(escap)s(es)150 3038 +y(the)38 b(follo)m(wing)g(c)m(haracter;)43 b(the)37 b(escaping)i(bac)m +(kslash)e(is)h(discarded)f(when)f(matc)m(hing.)63 b(The)36 +b(sp)s(ecial)150 3147 y(pattern)30 b(c)m(haracters)i(m)m(ust)f(b)s(e)e +(quoted)i(if)f(they)h(are)f(to)i(b)s(e)d(matc)m(hed)i(literally)-8 +b(.)275 3286 y(The)29 b(sp)s(ecial)i(pattern)g(c)m(haracters)h(ha)m(v)m +(e)f(the)g(follo)m(wing)h(meanings:)150 3452 y Ft(*)432 +b Fu(Matc)m(hes)31 b(an)m(y)e(string,)h(including)f(the)g(n)m(ull)g +(string.)41 b(When)29 b(the)g Ft(globstar)e Fu(shell)i(option)630 +3561 y(is)37 b(enabled,)h(and)e(`)p Ft(*)p Fu(')h(is)g(used)f(in)g(a)h (\014lename)g(expansion)g(con)m(text,)j(t)m(w)m(o)e(adjacen)m(t)g(`)p -Ft(*)p Fu('s)630 4954 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc) +Ft(*)p Fu('s)630 3671 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc) m(h)i(all)f(\014les)f(and)g(zero)h(or)g(more)f(directories)i(and)630 -5064 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p +3780 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p Ft(/)p Fu(',)h(t)m(w)m(o)g(adjacen)m(t)h(`)p Ft(*)p Fu('s)e(will)g -(matc)m(h)h(only)f(directories)630 5173 y(and)k(sub)s(directories.)150 -5340 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.)p -eop end -%%Page: 34 40 -TeXDict begin 34 39 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(34)150 299 -y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g(the)g -(enclosed)g(c)m(haracters.)41 b(A)25 b(pair)f(of)h(c)m(haracters)i -(separated)e(b)m(y)g(a)630 408 y(h)m(yphen)k(denotes)i(a)g +(matc)m(h)h(only)f(directories)630 3890 y(and)k(sub)s(directories.)150 +4054 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.) +150 4217 y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g +(the)g(enclosed)g(c)m(haracters.)41 b(A)25 b(pair)f(of)h(c)m(haracters) +i(separated)e(b)m(y)g(a)630 4327 y(h)m(yphen)k(denotes)i(a)g Fr(range)g(expression)p Fu(;)f(an)m(y)h(c)m(haracter)h(that)f(falls)g -(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 518 y(c)m(haracters,)d +(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 4436 y(c)m(haracters,)d (inclusiv)m(e,)f(using)d(the)h(curren)m(t)f(lo)s(cale's)j(collating)g -(sequence)e(and)f(c)m(haracter)630 628 y(set,)31 b(is)f(matc)m(hed.)42 +(sequence)e(and)f(c)m(haracter)630 4546 y(set,)31 b(is)f(matc)m(hed.)42 b(If)30 b(the)g(\014rst)g(c)m(haracter)i(follo)m(wing)g(the)e(`)p Ft([)p Fu(')h(is)f(a)h(`)p Ft(!)p Fu(')f(or)g(a)h(`)p -Ft(^)p Fu(')g(then)f(an)m(y)630 737 y(c)m(haracter)c(not)f(enclosed)g +Ft(^)p Fu(')g(then)f(an)m(y)630 4655 y(c)m(haracter)c(not)f(enclosed)g (is)g(matc)m(hed.)40 b(A)25 b(`)p Fq(\000)p Fu(')f(ma)m(y)i(b)s(e)e -(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)630 847 +(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)630 4765 y(\014rst)32 b(or)h(last)h(c)m(haracter)h(in)e(the)g(set.)50 b(A)33 b(`)p Ft(])p Fu(')g(ma)m(y)h(b)s(e)e(matc)m(hed)i(b)m(y)f -(including)g(it)g(as)h(the)630 956 y(\014rst)25 b(c)m(haracter)i(in)e -(the)h(set.)40 b(The)25 b(sorting)h(order)f(of)h(c)m(haracters)h(in)f -(range)g(expressions)f(is)630 1066 y(determined)h(b)m(y)h(the)g(curren) -m(t)f(lo)s(cale)j(and)d(the)h(v)-5 b(alues)27 b(of)g(the)g -Ft(LC_COLLATE)d Fu(and)i Ft(LC_ALL)630 1176 y Fu(shell)31 -b(v)-5 b(ariables,)31 b(if)f(set.)630 1312 y(F)-8 b(or)34 -b(example,)g(in)f(the)g(default)g(C)f(lo)s(cale,)k(`)p -Ft([a-dx-z])p Fu(')31 b(is)i(equiv)-5 b(alen)m(t)34 b(to)g(`)p -Ft([abcdxyz])p Fu('.)630 1422 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m -(haracters)h(in)e(dictionary)i(order,)76 b(and)67 b(in)g(these)h(lo)s -(cales)630 1531 y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e -(equiv)-5 b(alen)m(t)39 b(to)g(`)p Ft([abcdxyz])p Fu(';)g(it)g(migh)m -(t)f(b)s(e)f(equiv)-5 b(alen)m(t)630 1641 y(to)34 b(`)p -Ft([aBbCcDdxXyYz])p Fu(',)c(for)j(example.)49 b(T)-8 -b(o)33 b(obtain)h(the)f(traditional)h(in)m(terpretation)h(of)630 -1751 y(ranges)e(in)f(brac)m(k)m(et)i(expressions,)g(y)m(ou)f(can)g -(force)g(the)g(use)f(of)h(the)g(C)f(lo)s(cale)i(b)m(y)f(setting)630 -1860 y(the)c Ft(LC_COLLATE)e Fu(or)i Ft(LC_ALL)f Fu(en)m(vironmen)m(t)i -(v)-5 b(ariable)30 b(to)g(the)f(v)-5 b(alue)30 b(`)p -Ft(C)p Fu(',)g(or)f(enable)h(the)630 1970 y Ft(globasciiranges)c -Fu(shell)31 b(option.)630 2106 y(Within)23 b(`)p Ft([)p -Fu(')h(and)e(`)p Ft(])p Fu(',)j Fr(c)m(haracter)g(classes)j -Fu(can)c(b)s(e)e(sp)s(eci\014ed)h(using)f(the)i(syn)m(tax)f -Ft([:)p Fr(class)t Ft(:])p Fu(,)630 2216 y(where)30 b -Fr(class)35 b Fu(is)30 b(one)h(of)f(the)h(follo)m(wing)h(classes)f -(de\014ned)e(in)h(the)h Fm(posix)f Fu(standard:)870 2353 -y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g(digit)g(graph)g(lower) -870 2462 y(print)g(punct)g(space)f(upper)h(word)190 b(xdigit)630 -2599 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h(an)m(y)f(c)m -(haracter)h(b)s(elonging)f(to)g(that)g(class.)75 b(The)41 -b Ft(word)630 2709 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h +(including)g(it)g(as)h(the)630 4875 y(\014rst)c(c)m(haracter)j(in)d +(the)h(set.)43 b(The)31 b(sorting)g(order)g(of)g(c)m(haracters)h(in)f +(range)g(expressions,)630 4984 y(and)f(the)h(c)m(haracters)h(included)e +(in)h(the)f(range,)i(are)f(determined)f(b)m(y)h(the)g(curren)m(t)f(lo)s +(cale)630 5094 y(and)g(the)g(v)-5 b(alues)31 b(of)g(the)f +Ft(LC_COLLATE)e Fu(and)h Ft(LC_ALL)g Fu(shell)i(v)-5 +b(ariables,)31 b(if)f(set.)630 5230 y(F)-8 b(or)34 b(example,)g(in)f +(the)g(default)g(C)f(lo)s(cale,)k(`)p Ft([a-dx-z])p Fu(')31 +b(is)i(equiv)-5 b(alen)m(t)34 b(to)g(`)p Ft([abcdxyz])p +Fu('.)630 5340 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m(haracters)h(in)e +(dictionary)i(order,)76 b(and)67 b(in)g(these)h(lo)s(cales)p +eop end +%%Page: 37 43 +TeXDict begin 37 42 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)630 299 +y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e(equiv)-5 +b(alen)m(t)39 b(to)g(`)p Ft([abcdxyz])p Fu(';)g(it)g(migh)m(t)f(b)s(e)f +(equiv)-5 b(alen)m(t)630 408 y(to)34 b(`)p Ft([aBbCcDdxYyZz])p +Fu(',)c(for)j(example.)49 b(T)-8 b(o)33 b(obtain)h(the)f(traditional)h +(in)m(terpretation)h(of)630 518 y(ranges)e(in)f(brac)m(k)m(et)i +(expressions,)g(y)m(ou)f(can)g(force)g(the)g(use)f(of)h(the)g(C)f(lo)s +(cale)i(b)m(y)f(setting)630 628 y(the)c Ft(LC_COLLATE)e +Fu(or)i Ft(LC_ALL)f Fu(en)m(vironmen)m(t)i(v)-5 b(ariable)30 +b(to)g(the)f(v)-5 b(alue)30 b(`)p Ft(C)p Fu(',)g(or)f(enable)h(the)630 +737 y Ft(globasciiranges)c Fu(shell)31 b(option.)630 +873 y(Within)23 b(`)p Ft([)p Fu(')h(and)e(`)p Ft(])p +Fu(',)j Fr(c)m(haracter)g(classes)j Fu(can)c(b)s(e)e(sp)s(eci\014ed)h +(using)f(the)i(syn)m(tax)f Ft([:)p Fr(class)t Ft(:])p +Fu(,)630 982 y(where)30 b Fr(class)35 b Fu(is)30 b(one)h(of)f(the)h +(follo)m(wing)h(classes)f(de\014ned)e(in)h(the)h Fm(posix)f +Fu(standard:)870 1118 y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g +(digit)g(graph)g(lower)870 1227 y(print)g(punct)g(space)f(upper)h(word) +190 b(xdigit)630 1363 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h +(an)m(y)f(c)m(haracter)h(b)s(elonging)f(to)g(that)g(class.)75 +b(The)41 b Ft(word)630 1472 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h (letters,)f(digits,)h(and)d(the)i(c)m(haracter)h(`)p -Ft(_)p Fu('.)630 2845 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p +Ft(_)p Fu('.)630 1608 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p Ft(])p Fu(',)i(an)e Fr(equiv)-5 b(alence)26 b(class)j Fu(can)24 b(b)s(e)g(sp)s(eci\014ed)g(using)g(the)g(syn)m(tax)h -Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 2955 y(whic)m(h)29 +Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 1717 y(whic)m(h)29 b(matc)m(hes)i(all)f(c)m(haracters)h(with)e(the)h(same)g(collation)h(w) -m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 3064 +m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 1827 y(curren)m(t)g(lo)s(cale\))j(as)d(the)h(c)m(haracter)h -Fr(c)p Fu(.)630 3201 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p +Fr(c)p Fu(.)630 1962 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p Ft(])p Fu(',)j(the)d(syn)m(tax)h Ft([.)p Fr(sym)m(b)s(ol)t Ft(.])e Fu(matc)m(hes)i(the)g(collating)i(sym)m(b)s(ol)d -Fr(sym)m(b)s(ol)p Fu(.)275 3367 y(If)29 b(the)g Ft(extglob)f +Fr(sym)m(b)s(ol)p Fu(.)275 2125 y(If)i(the)g Ft(extglob)f Fu(shell)h(option)h(is)g(enabled)f(using)g(the)h Ft(shopt)e -Fu(builtin,)h(sev)m(eral)i(extended)f(pattern)150 3477 -y(matc)m(hing)37 b(op)s(erators)e(are)h(recognized.)58 -b(In)35 b(the)g(follo)m(wing)i(description,)g(a)f Fr(pattern-list)j -Fu(is)d(a)g(list)g(of)150 3586 y(one)d(or)f(more)h(patterns)f -(separated)h(b)m(y)f(a)h(`)p Ft(|)p Fu('.)47 b(Comp)s(osite)33 -b(patterns)f(ma)m(y)i(b)s(e)d(formed)h(using)g(one)h(or)150 -3696 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150 -3862 y Ft(?\()p Fj(pattern-list)p Ft(\))630 3971 y Fu(Matc)m(hes)h -(zero)f(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m(en)g(patterns.)150 -4135 y Ft(*\()p Fj(pattern-list)p Ft(\))630 4245 y Fu(Matc)m(hes)h +Fu(builtin,)i(the)g(shell)f(recognizes)j(sev)m(eral)150 +2234 y(extended)i(pattern)f(matc)m(hing)i(op)s(erators.)40 +b(In)26 b(the)i(follo)m(wing)h(description,)g(a)e Fr(pattern-list)k +Fu(is)d(a)g(list)g(of)150 2344 y(one)23 b(or)f(more)h(patterns)g +(separated)g(b)m(y)f(a)h(`)p Ft(|)p Fu('.)38 b(When)22 +b(matc)m(hing)i(\014lenames,)g(the)f Ft(dotglob)e Fu(shell)h(option)150 +2453 y(determines)h(the)h(set)g(of)g(\014lenames)f(that)h(are)g +(tested,)i(as)d(describ)s(ed)g(ab)s(o)m(v)m(e.)39 b(Comp)s(osite)24 +b(patterns)f(ma)m(y)150 2563 y(b)s(e)30 b(formed)g(using)f(one)i(or)f +(more)h(of)g(the)f(follo)m(wing)i(sub-patterns:)150 2725 +y Ft(?\()p Fj(pattern-list)p Ft(\))630 2835 y Fu(Matc)m(hes)g(zero)f +(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m(en)g(patterns.)150 +2996 y Ft(*\()p Fj(pattern-list)p Ft(\))630 3106 y Fu(Matc)m(hes)h (zero)f(or)g(more)f(o)s(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.) -150 4408 y Ft(+\()p Fj(pattern-list)p Ft(\))630 4518 +150 3267 y Ft(+\()p Fj(pattern-list)p Ft(\))630 3377 y Fu(Matc)m(hes)h(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m -(en)i(patterns.)150 4682 y Ft(@\()p Fj(pattern-list)p -Ft(\))630 4791 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.) -150 4955 y Ft(!\()p Fj(pattern-list)p Ft(\))630 5064 +(en)i(patterns.)150 3538 y Ft(@\()p Fj(pattern-list)p +Ft(\))630 3648 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.) +150 3809 y Ft(!\()p Fj(pattern-list)p Ft(\))630 3919 y Fu(Matc)m(hes)h(an)m(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g -(patterns.)275 5230 y(Complicated)41 b(extended)f(pattern)g(matc)m -(hing)h(against)h(long)f(strings)f(is)g(slo)m(w,)k(esp)s(ecially)d -(when)150 5340 y(the)29 b(patterns)g(con)m(tain)i(alternations)f(and)f -(the)g(strings)g(con)m(tain)h(m)m(ultiple)g(matc)m(hes.)42 -b(Using)29 b(separate)p eop end -%%Page: 35 41 -TeXDict begin 35 40 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(35)150 299 +(patterns.)275 4081 y(The)h Ft(extglob)f Fu(option)j(c)m(hanges)g(the)f +(b)s(eha)m(vior)g(of)h(the)f(parser,)g(since)h(the)f(paren)m(theses)h +(are)f(nor-)150 4190 y(mally)44 b(treated)g(as)f(op)s(erators)g(with)g +(syn)m(tactic)i(meaning.)79 b(T)-8 b(o)44 b(ensure)e(that)i(extended)f +(matc)m(hing)150 4300 y(patterns)30 b(are)g(parsed)f(correctly)-8 +b(,)32 b(mak)m(e)e(sure)g(that)g Ft(extglob)e Fu(is)h(enabled)h(b)s +(efore)f(parsing)h(constructs)150 4410 y(con)m(taining)i(the)e +(patterns,)h(including)f(shell)h(functions)f(and)f(command)h +(substitutions.)275 4546 y(When)c(matc)m(hing)i(\014lenames,)g(the)f +Ft(dotglob)e Fu(shell)i(option)h(determines)f(the)g(set)g(of)g +(\014lenames)g(that)150 4656 y(are)34 b(tested:)47 b(when)33 +b Ft(dotglob)e Fu(is)i(enabled,)i(the)e(set)h(of)g(\014lenames)f +(includes)g(all)h(\014les)g(b)s(eginning)e(with)150 4765 +y(`)p Ft(.)p Fu(',)d(but)e(the)g(\014lenames)h(`)p Ft(.)p +Fu(')g(and)f(`)p Ft(..)p Fu(')g(m)m(ust)h(b)s(e)f(matc)m(hed)h(b)m(y)g +(a)g(pattern)g(or)f(sub-pattern)g(that)h(b)s(egins)150 +4875 y(with)33 b(a)g(dot;)j(when)c(it)h(is)h(disabled,)f(the)h(set)g +(do)s(es)e(not)i(include)f(an)m(y)g(\014lenames)g(b)s(eginning)g(with)g +(\\.")150 4984 y(unless)24 b(the)g(pattern)h(or)f(sub-pattern)g(b)s +(egins)g(with)g(a)g(`)p Ft(.)p Fu('.)39 b(As)25 b(ab)s(o)m(v)m(e,)i(`)p +Ft(.)p Fu(')d(only)h(has)f(a)h(sp)s(ecial)g(meaning)150 +5094 y(when)k(matc)m(hing)j(\014lenames.)275 5230 y(Complicated)41 +b(extended)f(pattern)g(matc)m(hing)h(against)h(long)f(strings)f(is)g +(slo)m(w,)k(esp)s(ecially)d(when)150 5340 y(the)29 b(patterns)g(con)m +(tain)i(alternations)f(and)f(the)g(strings)g(con)m(tain)h(m)m(ultiple)g +(matc)m(hes.)42 b(Using)29 b(separate)p eop end +%%Page: 38 44 +TeXDict begin 38 43 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)150 299 y(matc)m(hes)38 b(against)g(shorter)e(strings,)i(or)f(using)f(arra)m (ys)h(of)g(strings)f(instead)h(of)g(a)g(single)g(long)h(string,)150 -408 y(ma)m(y)31 b(b)s(e)f(faster.)150 614 y Fk(3.5.9)63 -b(Quote)41 b(Remo)m(v)-7 b(al)150 760 y Fu(After)32 b(the)g(preceding)g +408 y(ma)m(y)31 b(b)s(e)f(faster.)150 603 y Fk(3.5.9)63 +b(Quote)41 b(Remo)m(v)-7 b(al)150 750 y Fu(After)32 b(the)g(preceding)g (expansions,)h(all)f(unquoted)f(o)s(ccurrences)h(of)g(the)h(c)m (haracters)g(`)p Ft(\\)p Fu(',)g(`)p Ft(')p Fu(',)f(and)g(`)p -Ft(")p Fu(')150 870 y(that)f(did)f(not)g(result)g(from)g(one)h(of)g +Ft(")p Fu(')150 860 y(that)f(did)f(not)g(result)g(from)g(one)h(of)g (the)f(ab)s(o)m(v)m(e)i(expansions)e(are)h(remo)m(v)m(ed.)150 -1120 y Fs(3.6)68 b(Redirections)150 1279 y Fu(Before)32 +1096 y Fs(3.6)68 b(Redirections)150 1255 y Fu(Before)32 b(a)f(command)f(is)h(executed,)h(its)f(input)e(and)h(output)h(ma)m(y)g (b)s(e)f Fr(redirected)k Fu(using)c(a)i(sp)s(ecial)f(no-)150 -1389 y(tation)d(in)m(terpreted)f(b)m(y)f(the)h(shell.)40 -b(Redirection)27 b(allo)m(ws)h(commands')f(\014le)f(handles)g(to)i(b)s -(e)e(duplicated,)150 1498 y(op)s(ened,)i(closed,)i(made)e(to)h(refer)f -(to)h(di\013eren)m(t)f(\014les,)h(and)f(can)g(c)m(hange)h(the)g -(\014les)f(the)g(command)g(reads)150 1608 y(from)39 b(and)g(writes)h +1365 y(tation)d(in)m(terpreted)f(b)m(y)f(the)h(shell.)40 +b Fr(Redirection)27 b Fu(allo)m(ws)h(commands')f(\014le)f(handles)g(to) +i(b)s(e)e(duplicated,)150 1475 y(op)s(ened,)i(closed,)i(made)e(to)h +(refer)f(to)h(di\013eren)m(t)f(\014les,)h(and)f(can)g(c)m(hange)h(the)g +(\014les)f(the)g(command)g(reads)150 1584 y(from)39 b(and)g(writes)h (to.)69 b(Redirection)40 b(ma)m(y)g(also)h(b)s(e)e(used)g(to)h(mo)s (dify)f(\014le)g(handles)g(in)g(the)h(curren)m(t)150 -1717 y(shell)e(execution)h(en)m(vironmen)m(t.)65 b(The)37 +1694 y(shell)e(execution)h(en)m(vironmen)m(t.)65 b(The)37 b(follo)m(wing)j(redirection)f(op)s(erators)f(ma)m(y)g(precede)h(or)f -(app)s(ear)150 1827 y(an)m(ywhere)30 b(within)f(a)h(simple)f(command)h +(app)s(ear)150 1803 y(an)m(ywhere)30 b(within)f(a)h(simple)f(command)h (or)f(ma)m(y)i(follo)m(w)g(a)f(command.)40 b(Redirections)30 -b(are)g(pro)s(cessed)150 1936 y(in)g(the)h(order)f(they)g(app)s(ear,)g -(from)g(left)h(to)g(righ)m(t.)275 2077 y(Eac)m(h)45 b(redirection)h +b(are)g(pro)s(cessed)150 1913 y(in)g(the)h(order)f(they)g(app)s(ear,)g +(from)g(left)h(to)g(righ)m(t.)275 2045 y(Eac)m(h)45 b(redirection)h (that)f(ma)m(y)h(b)s(e)e(preceded)g(b)m(y)h(a)h(\014le)f(descriptor)f -(n)m(um)m(b)s(er)g(ma)m(y)h(instead)h(b)s(e)150 2186 +(n)m(um)m(b)s(er)g(ma)m(y)h(instead)h(b)s(e)150 2155 y(preceded)41 b(b)m(y)g(a)h(w)m(ord)f(of)g(the)h(form)f Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(.)74 b(In)41 b(this)g(case,)k -(for)c(eac)m(h)i(redirection)f(op)s(erator)150 2296 y(except)37 +(for)c(eac)m(h)i(redirection)f(op)s(erator)150 2264 y(except)37 b Ft(>)p Fu(&-)e(and)g Ft(<)p Fu(&-,)i(the)f(shell)g(will)g(allo)s (cate)j(a)d(\014le)g(descriptor)f(greater)i(than)f(10)g(and)f(assign)h -(it)150 2406 y(to)e Fi({)p Fr(v)-5 b(arname)5 b Fi(})p +(it)150 2374 y(to)e Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(.)52 b(If)33 b Ft(>)p Fu(&-)g(or)h Ft(<)p Fu(&-)f(is)g(preceded)h(b) m(y)f Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(,)36 b(the)e(v)-5 b(alue)34 b(of)f Fr(v)-5 b(arname)39 b Fu(de\014nes)33 -b(the)150 2515 y(\014le)e(descriptor)g(to)h(close.)43 +b(the)150 2483 y(\014le)e(descriptor)g(to)h(close.)43 b(If)31 b Fi({)p Fr(v)-5 b(arname)5 b Fi(})32 b Fu(is)f(supplied,)f (the)h(redirection)g(p)s(ersists)f(b)s(ey)m(ond)h(the)g(scop)s(e)150 -2625 y(of)42 b(the)f(command,)j(allo)m(wing)f(the)f(shell)g(programmer) +2593 y(of)42 b(the)f(command,)j(allo)m(wing)f(the)f(shell)g(programmer) f(to)h(manage)g(the)g(\014le)f(descriptor's)h(lifetime)150 -2734 y(man)m(ually)-8 b(.)275 2875 y(In)27 b(the)i(follo)m(wing)h -(descriptions,)g(if)e(the)h(\014le)g(descriptor)f(n)m(um)m(b)s(er)g(is) -g(omitted,)i(and)f(the)f(\014rst)g(c)m(har-)150 2984 -y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g(is)g(`)p -Ft(<)p Fu(',)i(the)e(redirection)g(refers)g(to)g(the)g(standard)f -(input)f(\(\014le)150 3094 y(descriptor)33 b(0\).)49 -b(If)33 b(the)g(\014rst)f(c)m(haracter)i(of)g(the)f(redirection)g(op)s -(erator)h(is)f(`)p Ft(>)p Fu(',)h(the)f(redirection)g(refers)150 -3203 y(to)e(the)g(standard)e(output)h(\(\014le)h(descriptor)f(1\).)275 -3344 y(The)h(w)m(ord)h(follo)m(wing)i(the)f(redirection)g(op)s(erator)f -(in)g(the)h(follo)m(wing)h(descriptions,)f(unless)e(other-)150 -3453 y(wise)21 b(noted,)i(is)e(sub)5 b(jected)21 b(to)h(brace)f -(expansion,)i(tilde)f(expansion,)h(parameter)e(expansion,)i(command)150 -3563 y(substitution,)31 b(arithmetic)h(expansion,)f(quote)h(remo)m(v)-5 -b(al,)33 b(\014lename)e(expansion,)g(and)f(w)m(ord)h(splitting.)150 -3672 y(If)f(it)h(expands)e(to)i(more)g(than)f(one)h(w)m(ord,)f(Bash)h -(rep)s(orts)e(an)h(error.)275 3813 y(Note)h(that)g(the)g(order)f(of)g -(redirections)h(is)g(signi\014can)m(t.)41 b(F)-8 b(or)31 -b(example,)h(the)e(command)390 3953 y Ft(ls)47 b(>)h -Fj(dirlist)d Ft(2>&1)150 4093 y Fu(directs)28 b(b)s(oth)f(standard)g -(output)g(\(\014le)h(descriptor)f(1\))i(and)e(standard)f(error)i -(\(\014le)g(descriptor)f(2\))h(to)h(the)150 4203 y(\014le)h -Fr(dirlist)p Fu(,)h(while)f(the)h(command)390 4343 y -Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)150 4484 y Fu(directs)28 +2703 y(man)m(ually)-8 b(.)41 b(The)29 b Ft(varredir_close)c +Fu(shell)k(option)g(manages)h(this)f(b)s(eha)m(vior)g(\(see)h(Section)f +(4.3.2)i([The)150 2812 y(Shopt)f(Builtin],)h(page)g(71\).)275 +2944 y(In)c(the)i(follo)m(wing)h(descriptions,)g(if)e(the)h(\014le)g +(descriptor)f(n)m(um)m(b)s(er)g(is)g(omitted,)i(and)f(the)f(\014rst)g +(c)m(har-)150 3054 y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g +(is)g(`)p Ft(<)p Fu(',)i(the)e(redirection)g(refers)g(to)g(the)g +(standard)f(input)f(\(\014le)150 3164 y(descriptor)33 +b(0\).)49 b(If)33 b(the)g(\014rst)f(c)m(haracter)i(of)g(the)f +(redirection)g(op)s(erator)h(is)f(`)p Ft(>)p Fu(',)h(the)f(redirection) +g(refers)150 3273 y(to)e(the)g(standard)e(output)h(\(\014le)h +(descriptor)f(1\).)275 3405 y(The)h(w)m(ord)h(follo)m(wing)i(the)f +(redirection)g(op)s(erator)f(in)g(the)h(follo)m(wing)h(descriptions,)f +(unless)e(other-)150 3515 y(wise)21 b(noted,)i(is)e(sub)5 +b(jected)21 b(to)h(brace)f(expansion,)i(tilde)f(expansion,)h(parameter) +e(expansion,)i(command)150 3625 y(substitution,)31 b(arithmetic)h +(expansion,)f(quote)h(remo)m(v)-5 b(al,)33 b(\014lename)e(expansion,)g +(and)f(w)m(ord)h(splitting.)150 3734 y(If)f(it)h(expands)e(to)i(more)g +(than)f(one)h(w)m(ord,)f(Bash)h(rep)s(orts)e(an)h(error.)275 +3866 y(Note)h(that)g(the)g(order)f(of)g(redirections)h(is)g +(signi\014can)m(t.)41 b(F)-8 b(or)31 b(example,)h(the)e(command)390 +3999 y Ft(ls)47 b(>)h Fj(dirlist)d Ft(2>&1)150 4131 y +Fu(directs)28 b(b)s(oth)f(standard)g(output)g(\(\014le)h(descriptor)f +(1\))i(and)e(standard)f(error)i(\(\014le)g(descriptor)f(2\))h(to)h(the) +150 4240 y(\014le)h Fr(dirlist)p Fu(,)h(while)f(the)h(command)390 +4373 y Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)150 4505 y Fu(directs)28 b(only)f(the)h(standard)e(output)i(to)g(\014le)f Fr(dirlist)p Fu(,)h(b)s(ecause)g(the)f(standard)g(error)g(w)m(as)h(made)f(a)h(cop)m -(y)150 4593 y(of)j(the)f(standard)g(output)g(b)s(efore)g(the)g +(y)150 4615 y(of)j(the)f(standard)g(output)g(b)s(efore)g(the)g (standard)g(output)g(w)m(as)g(redirected)h(to)g Fr(dirlist)p -Fu(.)275 4733 y(Bash)26 b(handles)f(sev)m(eral)j(\014lenames)e(sp)s +Fu(.)275 4747 y(Bash)26 b(handles)f(sev)m(eral)j(\014lenames)e(sp)s (ecially)h(when)f(they)g(are)g(used)g(in)g(redirections,)i(as)e -(describ)s(ed)150 4843 y(in)38 b(the)h(follo)m(wing)h(table.)66 +(describ)s(ed)150 4856 y(in)38 b(the)h(follo)m(wing)h(table.)66 b(If)38 b(the)h(op)s(erating)g(system)f(on)h(whic)m(h)f(Bash)h(is)f -(running)f(pro)m(vides)h(these)150 4953 y(sp)s(ecial)27 +(running)f(pro)m(vides)h(these)150 4966 y(sp)s(ecial)27 b(\014les,)g(bash)e(will)i(use)f(them;)h(otherwise)g(it)f(will)h(em)m (ulate)h(them)e(in)m(ternally)h(with)f(the)g(b)s(eha)m(vior)150 -5062 y(describ)s(ed)j(b)s(elo)m(w.)150 5230 y Ft(/dev/fd/)p +5076 y(describ)s(ed)j(b)s(elo)m(w.)150 5230 y Ft(/dev/fd/)p Fj(fd)630 5340 y Fu(If)h Fr(fd)j Fu(is)d(a)h(v)-5 b(alid)31 b(in)m(teger,)h(\014le)e(descriptor)h Fr(fd)i Fu(is)d(duplicated.)p eop end -%%Page: 36 42 -TeXDict begin 36 41 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(36)150 299 +%%Page: 39 45 +TeXDict begin 39 44 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(39)150 299 y Ft(/dev/stdin)630 408 y Fu(File)32 b(descriptor)e(0)h(is)f (duplicated.)150 577 y Ft(/dev/stdout)630 687 y Fu(File)i(descriptor)e (1)h(is)f(duplicated.)150 856 y Ft(/dev/stderr)630 965 @@ -10782,9 +11036,9 @@ b Fu(to)e(b)s(e)e(op)s(ened)g(for)h(app)s(ending)e(on)i(\014le)g (is)f(created.)275 5196 y(The)f(general)j(format)e(for)h(app)s(ending)e (output)h(is:)390 5340 y Ft([)p Fj(n)p Ft(]>>)p Fj(word)p eop end -%%Page: 37 43 -TeXDict begin 37 42 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)150 299 +%%Page: 40 46 +TeXDict begin 40 45 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(40)150 299 y Fk(3.6.4)63 b(Redirecting)40 b(Standard)h(Output)g(and)g(Standard)g (Error)150 446 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s(oth)f(the)g (standard)g(output)f(\(\014le)i(descriptor)f(1\))h(and)f(the)g @@ -10844,9 +11098,9 @@ Fu(',)g(and)f(`)p Ft(`)p Fu('.)275 5121 y(If)21 b(the)i(redirection)g Fr(delimiter)p Fu(.)49 b(This)32 b(allo)m(ws)i(here-do)s(cumen)m(ts)f (within)f(shell)i(scripts)e(to)150 5340 y(b)s(e)e(inden)m(ted)g(in)g(a) h(natural)f(fashion.)p eop end -%%Page: 38 44 -TeXDict begin 38 43 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)150 299 +%%Page: 41 47 +TeXDict begin 41 46 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(41)150 299 y Fk(3.6.7)63 b(Here)41 b(Strings)150 446 y Fu(A)30 b(v)-5 b(arian)m(t)32 b(of)e(here)h(do)s(cumen)m(ts,)f(the)g(format)h(is:)390 600 y Ft([)p Fj(n)p Ft(]<<<)46 b Fj(word)275 753 y Fu(The)29 @@ -10909,9 +11163,9 @@ b(on)f(\014le)h(descriptor)f Fr(n)p Fu(,)h(or)g(on)f(\014le)h (descriptor)g(0)g(if)f Fr(n)g Fu(is)h(not)g(sp)s(eci\014ed.)47 b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 5340 y(exist,)e(it)g(is)g (created.)p eop end -%%Page: 39 45 -TeXDict begin 39 44 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(39)150 299 +%%Page: 42 48 +TeXDict begin 42 47 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(42)150 299 y Fs(3.7)68 b(Executing)46 b(Commands)150 523 y Fk(3.7.1)63 b(Simple)41 b(Command)h(Expansion)150 670 y Fu(When)33 b(a)g(simple)g(command)g(is)g(executed,)h(the)g(shell)f(p)s(erforms)e @@ -10924,12 +11178,12 @@ b(a)g(simple)g(command)g(is)g(executed,)h(the)g(shell)f(p)s(erforms)e 1157 y(2.)61 b(The)39 b(w)m(ords)g(that)i(are)f(not)g(v)-5 b(ariable)40 b(assignmen)m(ts)h(or)e(redirections)i(are)f(expanded)f (\(see)h(Sec-)330 1267 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g -(22\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h +(24\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h (the)e(\014rst)330 1376 y(w)m(ord)31 b(is)g(tak)m(en)h(to)g(b)s(e)f (the)g(name)h(of)f(the)h(command)f(and)f(the)i(remaining)f(w)m(ords)g (are)g(the)h(argu-)330 1486 y(men)m(ts.)199 1620 y(3.)61 b(Redirections)25 b(are)f(p)s(erformed)f(as)h(describ)s(ed)f(ab)s(o)m -(v)m(e)i(\(see)g(Section)g(3.6)g([Redirections],)i(page)d(35\).)199 +(v)m(e)i(\(see)g(Section)g(3.6)g([Redirections],)i(page)d(38\).)199 1754 y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Ft(=)p Fu(')h(in)e(eac)m(h)j(v)-5 b(ariable)25 b(assignmen)m(t)h(undergo)s(es) e(tilde)i(expansion,)g(parameter)330 1864 y(expansion,)49 @@ -10938,383 +11192,433 @@ b(quote)h(remo)m(v)-5 b(al)46 b(b)s(efore)330 1973 y(b)s(eing)30 b(assigned)h(to)g(the)f(v)-5 b(ariable.)275 2132 y(If)32 b(no)i(command)f(name)g(results,)h(the)g(v)-5 b(ariable)34 b(assignmen)m(ts)g(a\013ect)h(the)f(curren)m(t)f(shell)h(en)m(viron-) -150 2242 y(men)m(t.)39 b(Otherwise,)27 b(the)e(v)-5 b(ariables)26 -b(are)g(added)f(to)h(the)f(en)m(vironmen)m(t)h(of)g(the)f(executed)h -(command)g(and)150 2351 y(do)35 b(not)f(a\013ect)j(the)d(curren)m(t)h -(shell)g(en)m(vironmen)m(t.)54 b(If)34 b(an)m(y)h(of)g(the)f(assignmen) -m(ts)i(attempts)f(to)h(assign)150 2461 y(a)j(v)-5 b(alue)39 -b(to)g(a)g(readonly)f(v)-5 b(ariable,)42 b(an)c(error)g(o)s(ccurs,)j -(and)c(the)i(command)f(exits)h(with)g(a)f(non-zero)150 -2570 y(status.)275 2705 y(If)33 b(no)g(command)g(name)h(results,)g -(redirections)g(are)g(p)s(erformed,)f(but)g(do)h(not)f(a\013ect)i(the)f -(curren)m(t)150 2814 y(shell)d(en)m(vironmen)m(t.)41 -b(A)30 b(redirection)h(error)f(causes)h(the)g(command)f(to)h(exit)g -(with)f(a)h(non-zero)g(status.)275 2948 y(If)26 b(there)i(is)f(a)h -(command)f(name)h(left)g(after)g(expansion,)g(execution)h(pro)s(ceeds)e -(as)g(describ)s(ed)f(b)s(elo)m(w.)150 3058 y(Otherwise,)39 -b(the)e(command)g(exits.)62 b(If)37 b(one)g(of)g(the)h(expansions)f -(con)m(tained)h(a)g(command)f(substitu-)150 3167 y(tion,)i(the)d(exit)h -(status)g(of)f(the)h(command)f(is)h(the)f(exit)h(status)g(of)f(the)h -(last)g(command)f(substitution)150 3277 y(p)s(erformed.)55 -b(If)35 b(there)g(w)m(ere)h(no)g(command)f(substitutions,)i(the)e -(command)h(exits)g(with)f(a)h(status)g(of)150 3387 y(zero.)150 -3585 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h(Execution)150 -3732 y Fu(After)i(a)h(command)f(has)g(b)s(een)f(split)h(in)m(to)h(w)m -(ords,)j(if)c(it)g(results)g(in)g(a)h(simple)f(command)g(and)f(an)150 -3842 y(optional)32 b(list)f(of)f(argumen)m(ts,)h(the)g(follo)m(wing)g -(actions)h(are)f(tak)m(en.)199 3976 y(1.)61 b(If)24 b(the)g(command)g -(name)g(con)m(tains)i(no)e(slashes,)i(the)e(shell)h(attempts)g(to)g(lo) -s(cate)h(it.)39 b(If)24 b(there)g(exists)330 4085 y(a)h(shell)g -(function)f(b)m(y)g(that)h(name,)h(that)f(function)f(is)h(in)m(v)m(ok)m -(ed)h(as)e(describ)s(ed)g(in)g(Section)h(3.3)h([Shell)330 -4195 y(F)-8 b(unctions],)31 b(page)h(18.)199 4329 y(2.)61 -b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e(function,)j(the)e -(shell)f(searc)m(hes)i(for)e(it)h(in)f(the)g(list)h(of)g(shell)330 -4439 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g(that)h(builtin) -f(is)g(in)m(v)m(ok)m(ed.)199 4573 y(3.)61 b(If)40 b(the)g(name)h(is)f -(neither)h(a)f(shell)h(function)f(nor)g(a)g(builtin,)j(and)d(con)m -(tains)h(no)g(slashes,)i(Bash)330 4682 y(searc)m(hes)c(eac)m(h)g -(elemen)m(t)g(of)g Ft($PATH)d Fu(for)i(a)g(directory)h(con)m(taining)g -(an)f(executable)h(\014le)f(b)m(y)g(that)330 4792 y(name.)56 -b(Bash)36 b(uses)f(a)h(hash)e(table)j(to)f(remem)m(b)s(er)f(the)h(full) -f(pathnames)g(of)h(executable)h(\014les)e(to)330 4902 -y(a)m(v)m(oid)e(m)m(ultiple)f Ft(PATH)f Fu(searc)m(hes)i(\(see)f(the)g -(description)g(of)f Ft(hash)g Fu(in)g(Section)i(4.1)f([Bourne)g(Shell) -330 5011 y(Builtins],)37 b(page)f(44\).)55 b(A)35 b(full)g(searc)m(h)g -(of)g(the)g(directories)h(in)f Ft($PATH)e Fu(is)i(p)s(erformed)f(only)h -(if)g(the)330 5121 y(command)24 b(is)h(not)g(found)e(in)i(the)g(hash)f -(table.)39 b(If)25 b(the)f(searc)m(h)i(is)e(unsuccessful,)h(the)g -(shell)g(searc)m(hes)330 5230 y(for)e(a)h(de\014ned)e(shell)h(function) -h(named)e Ft(command_not_found_handle)p Fu(.)32 b(If)23 -b(that)h(function)f(exists,)330 5340 y(it)33 b(is)f(in)m(v)m(ok)m(ed)i -(in)e(a)h(separate)h(execution)f(en)m(vironmen)m(t)g(with)f(the)h -(original)h(command)e(and)g(the)p eop end -%%Page: 40 46 -TeXDict begin 40 45 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(40)330 299 -y(original)26 b(command's)e(argumen)m(ts)h(as)g(its)g(argumen)m(ts,)h -(and)e(the)h(function's)f(exit)i(status)f(b)s(ecomes)330 -408 y(the)j(exit)g(status)g(of)f(that)h(subshell.)39 +150 2242 y(men)m(t.)68 b(In)38 b(the)h(case)i(of)e(suc)m(h)g(a)g +(command)g(\(one)h(that)g(consists)g(only)f(of)g(assignmen)m(t)h +(statemen)m(ts)150 2351 y(and)27 b(redirections\),)i(assignmen)m(t)g +(statemen)m(ts)g(are)f(p)s(erformed)e(b)s(efore)h(redirections.)41 +b(Otherwise,)28 b(the)150 2461 y(v)-5 b(ariables)27 b(are)g(added)e(to) +i(the)g(en)m(vironmen)m(t)g(of)f(the)h(executed)g(command)f(and)g(do)g +(not)h(a\013ect)h(the)e(cur-)150 2570 y(ren)m(t)32 b(shell)f(en)m +(vironmen)m(t.)44 b(If)31 b(an)m(y)g(of)h(the)f(assignmen)m(ts)h +(attempts)g(to)g(assign)g(a)f(v)-5 b(alue)32 b(to)g(a)g(readonly)150 +2680 y(v)-5 b(ariable,)31 b(an)g(error)f(o)s(ccurs,)g(and)g(the)g +(command)g(exits)i(with)e(a)g(non-zero)h(status.)275 +2814 y(If)i(no)g(command)g(name)h(results,)g(redirections)g(are)g(p)s +(erformed,)f(but)g(do)h(not)f(a\013ect)i(the)f(curren)m(t)150 +2924 y(shell)d(en)m(vironmen)m(t.)41 b(A)30 b(redirection)h(error)f +(causes)h(the)g(command)f(to)h(exit)g(with)f(a)h(non-zero)g(status.)275 +3058 y(If)26 b(there)i(is)f(a)h(command)f(name)h(left)g(after)g +(expansion,)g(execution)h(pro)s(ceeds)e(as)g(describ)s(ed)f(b)s(elo)m +(w.)150 3167 y(Otherwise,)39 b(the)e(command)g(exits.)62 +b(If)37 b(one)g(of)g(the)h(expansions)f(con)m(tained)h(a)g(command)f +(substitu-)150 3277 y(tion,)i(the)d(exit)h(status)g(of)f(the)h(command) +f(is)h(the)f(exit)h(status)g(of)f(the)h(last)g(command)f(substitution) +150 3387 y(p)s(erformed.)55 b(If)35 b(there)g(w)m(ere)h(no)g(command)f +(substitutions,)i(the)e(command)h(exits)g(with)f(a)h(status)g(of)150 +3496 y(zero.)150 3695 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h +(Execution)150 3842 y Fu(After)i(a)h(command)f(has)g(b)s(een)f(split)h +(in)m(to)h(w)m(ords,)j(if)c(it)g(results)g(in)g(a)h(simple)f(command)g +(and)f(an)150 3951 y(optional)32 b(list)f(of)f(argumen)m(ts,)h(the)g +(follo)m(wing)g(actions)h(are)f(tak)m(en.)199 4085 y(1.)61 +b(If)24 b(the)g(command)g(name)g(con)m(tains)i(no)e(slashes,)i(the)e +(shell)h(attempts)g(to)g(lo)s(cate)h(it.)39 b(If)24 b(there)g(exists) +330 4195 y(a)h(shell)g(function)f(b)m(y)g(that)h(name,)h(that)f +(function)f(is)h(in)m(v)m(ok)m(ed)h(as)e(describ)s(ed)g(in)g(Section)h +(3.3)h([Shell)330 4305 y(F)-8 b(unctions],)31 b(page)h(19.)199 +4439 y(2.)61 b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e +(function,)j(the)e(shell)f(searc)m(hes)i(for)e(it)h(in)f(the)g(list)h +(of)g(shell)330 4548 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g +(that)h(builtin)f(is)g(in)m(v)m(ok)m(ed.)199 4682 y(3.)61 +b(If)40 b(the)g(name)h(is)f(neither)h(a)f(shell)h(function)f(nor)g(a)g +(builtin,)j(and)d(con)m(tains)h(no)g(slashes,)i(Bash)330 +4792 y(searc)m(hes)c(eac)m(h)g(elemen)m(t)g(of)g Ft($PATH)d +Fu(for)i(a)g(directory)h(con)m(taining)g(an)f(executable)h(\014le)f(b)m +(y)g(that)330 4902 y(name.)56 b(Bash)36 b(uses)f(a)h(hash)e(table)j(to) +f(remem)m(b)s(er)f(the)h(full)f(pathnames)g(of)h(executable)h(\014les)e +(to)330 5011 y(a)m(v)m(oid)e(m)m(ultiple)f Ft(PATH)f +Fu(searc)m(hes)i(\(see)f(the)g(description)g(of)f Ft(hash)g +Fu(in)g(Section)i(4.1)f([Bourne)g(Shell)330 5121 y(Builtins],)37 +b(page)f(48\).)55 b(A)35 b(full)g(searc)m(h)g(of)g(the)g(directories)h +(in)f Ft($PATH)e Fu(is)i(p)s(erformed)f(only)h(if)g(the)330 +5230 y(command)24 b(is)h(not)g(found)e(in)i(the)g(hash)f(table.)39 +b(If)25 b(the)f(searc)m(h)i(is)e(unsuccessful,)h(the)g(shell)g(searc)m +(hes)330 5340 y(for)e(a)h(de\014ned)e(shell)h(function)h(named)e +Ft(command_not_found_handle)p Fu(.)32 b(If)23 b(that)h(function)f +(exists,)p eop end +%%Page: 43 49 +TeXDict begin 43 48 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(43)330 299 +y(it)33 b(is)f(in)m(v)m(ok)m(ed)i(in)e(a)h(separate)h(execution)f(en)m +(vironmen)m(t)g(with)f(the)h(original)h(command)e(and)g(the)330 +408 y(original)26 b(command's)e(argumen)m(ts)h(as)g(its)g(argumen)m +(ts,)h(and)e(the)h(function's)f(exit)i(status)f(b)s(ecomes)330 +518 y(the)j(exit)g(status)g(of)f(that)h(subshell.)39 b(If)27 b(that)h(function)f(is)h(not)g(de\014ned,)f(the)g(shell)h(prin) -m(ts)f(an)g(error)330 518 y(message)k(and)f(returns)f(an)i(exit)g -(status)g(of)f(127.)199 654 y(4.)61 b(If)33 b(the)g(searc)m(h)h(is)g +m(ts)f(an)g(error)330 628 y(message)k(and)f(returns)f(an)i(exit)g +(status)g(of)f(127.)199 759 y(4.)61 b(If)33 b(the)g(searc)m(h)h(is)g (successful,)g(or)f(if)g(the)h(command)f(name)g(con)m(tains)i(one)f(or) -f(more)g(slashes,)i(the)330 763 y(shell)g(executes)h(the)f(named)f +f(more)g(slashes,)i(the)330 868 y(shell)g(executes)h(the)f(named)f (program)g(in)h(a)g(separate)h(execution)f(en)m(vironmen)m(t.)55 -b(Argumen)m(t)35 b(0)330 873 y(is)30 b(set)h(to)h(the)e(name)h(giv)m +b(Argumen)m(t)35 b(0)330 978 y(is)30 b(set)h(to)h(the)e(name)h(giv)m (en,)g(and)f(the)h(remaining)f(argumen)m(ts)h(to)g(the)g(command)f(are) -h(set)g(to)g(the)330 983 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8 -b(.)199 1118 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g +h(set)g(to)g(the)330 1087 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8 +b(.)199 1218 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g (the)f(\014le)h(is)g(not)g(in)f(executable)j(format,)f(and)e(the)h -(\014le)g(is)g(not)330 1228 y(a)d(directory)-8 b(,)34 +(\014le)g(is)g(not)330 1328 y(a)d(directory)-8 b(,)34 b(it)f(is)g(assumed)e(to)j(b)s(e)d(a)i Fr(shell)g(script)h Fu(and)e(the)h(shell)f(executes)i(it)f(as)g(describ)s(ed)e(in)330 -1338 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(42.)199 -1473 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async) +1438 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(46.)199 +1569 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async) m(hronously)-8 b(,)42 b(the)c(shell)h(w)m(aits)h(for)e(the)h(command)f -(to)330 1583 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150 -1785 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)150 -1932 y Fu(The)30 b(shell)g(has)h(an)f Fr(execution)h(en)m(vironmen)m(t) +(to)330 1678 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150 +1870 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)150 +2017 y Fu(The)30 b(shell)g(has)h(an)f Fr(execution)h(en)m(vironmen)m(t) p Fu(,)h(whic)m(h)e(consists)h(of)f(the)h(follo)m(wing:)225 -2069 y Fq(\017)60 b Fu(op)s(en)32 b(\014les)g(inherited)g(b)m(y)h(the)f +2148 y Fq(\017)60 b Fu(op)s(en)32 b(\014les)g(inherited)g(b)m(y)h(the)f (shell)h(at)g(in)m(v)m(o)s(cation,)j(as)c(mo)s(di\014ed)g(b)m(y)g -(redirections)h(supplied)e(to)330 2178 y(the)g Ft(exec)e -Fu(builtin)225 2314 y Fq(\017)60 b Fu(the)28 b(curren)m(t)g(w)m(orking) +(redirections)h(supplied)e(to)330 2258 y(the)g Ft(exec)e +Fu(builtin)225 2389 y Fq(\017)60 b Fu(the)28 b(curren)m(t)g(w)m(orking) h(directory)g(as)f(set)h(b)m(y)f Ft(cd)p Fu(,)g Ft(pushd)p Fu(,)g(or)g Ft(popd)p Fu(,)g(or)g(inherited)g(b)m(y)g(the)h(shell)f(at) -330 2424 y(in)m(v)m(o)s(cation)225 2560 y Fq(\017)60 +330 2498 y(in)m(v)m(o)s(cation)225 2629 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)g(as)h(set)g(b)m(y)f Ft(umask)f Fu(or)h(inherited)g(from)g(the)h(shell's)f(paren)m(t)225 -2695 y Fq(\017)60 b Fu(curren)m(t)30 b(traps)g(set)h(b)m(y)f -Ft(trap)225 2831 y Fq(\017)60 b Fu(shell)30 b(parameters)f(that)h(are)g +2760 y Fq(\017)60 b Fu(curren)m(t)30 b(traps)g(set)h(b)m(y)f +Ft(trap)225 2891 y Fq(\017)60 b Fu(shell)30 b(parameters)f(that)h(are)g (set)g(b)m(y)g(v)-5 b(ariable)30 b(assignmen)m(t)g(or)g(with)f -Ft(set)f Fu(or)i(inherited)f(from)g(the)330 2941 y(shell's)i(paren)m(t) -f(in)g(the)h(en)m(vironmen)m(t)225 3077 y Fq(\017)60 +Ft(set)f Fu(or)i(inherited)f(from)g(the)330 3001 y(shell's)i(paren)m(t) +f(in)g(the)h(en)m(vironmen)m(t)225 3132 y Fq(\017)60 b Fu(shell)44 b(functions)f(de\014ned)f(during)h(execution)i(or)e (inherited)h(from)f(the)h(shell's)g(paren)m(t)f(in)h(the)330 -3186 y(en)m(vironmen)m(t)225 3322 y Fq(\017)60 b Fu(options)33 +3242 y(en)m(vironmen)m(t)225 3373 y Fq(\017)60 b Fu(options)33 b(enabled)g(at)h(in)m(v)m(o)s(cation)h(\(either)f(b)m(y)f(default)g(or) -g(with)g(command-line)g(argumen)m(ts\))h(or)330 3432 -y(b)m(y)c Ft(set)225 3567 y Fq(\017)60 b Fu(options)31 +g(with)g(command-line)g(argumen)m(ts\))h(or)330 3482 +y(b)m(y)c Ft(set)225 3613 y Fq(\017)60 b Fu(options)31 b(enabled)f(b)m(y)g Ft(shopt)f Fu(\(see)j(Section)f(4.3.2)h([The)e -(Shopt)g(Builtin],)h(page)g(66\))225 3703 y Fq(\017)60 +(Shopt)g(Builtin],)h(page)g(71\))225 3744 y Fq(\017)60 b Fu(shell)31 b(aliases)g(de\014ned)f(with)g Ft(alias)f -Fu(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(94\))225 -3839 y Fq(\017)60 b Fu(v)-5 b(arious)50 b(pro)s(cess)f +Fu(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(100\))225 +3875 y Fq(\017)60 b Fu(v)-5 b(arious)50 b(pro)s(cess)f Fm(id)p Fu(s,)55 b(including)49 b(those)i(of)e(bac)m(kground)h(jobs)f -(\(see)i(Section)g(3.2.4)g([Lists],)330 3948 y(page)31 -b(9\),)g(the)g(v)-5 b(alue)31 b(of)f Ft($$)p Fu(,)g(and)g(the)h(v)-5 -b(alue)31 b(of)f Ft($PPID)275 4112 y Fu(When)k(a)g(simple)h(command)f +(\(see)i(Section)g(3.2.4)g([Lists],)330 3985 y(page)31 +b(10\),)h(the)f(v)-5 b(alue)30 b(of)h Ft($$)p Fu(,)f(and)g(the)g(v)-5 +b(alue)31 b(of)g Ft($PPID)275 4137 y Fu(When)j(a)g(simple)h(command)f (other)g(than)g(a)h(builtin)f(or)g(shell)h(function)f(is)g(to)h(b)s(e)f -(executed,)i(it)f(is)150 4221 y(in)m(v)m(ok)m(ed)25 b(in)f(a)g +(executed,)i(it)f(is)150 4247 y(in)m(v)m(ok)m(ed)25 b(in)f(a)g (separate)h(execution)g(en)m(vironmen)m(t)g(that)f(consists)g(of)h(the) -f(follo)m(wing.)40 b(Unless)24 b(otherwise)150 4331 y(noted,)31 +f(follo)m(wing.)40 b(Unless)24 b(otherwise)150 4356 y(noted,)31 b(the)f(v)-5 b(alues)31 b(are)g(inherited)f(from)g(the)g(shell.)225 -4468 y Fq(\017)60 b Fu(the)31 b(shell's)h(op)s(en)e(\014les,)i(plus)e +4487 y Fq(\017)60 b Fu(the)31 b(shell's)h(op)s(en)e(\014les,)i(plus)e (an)m(y)h(mo)s(di\014cations)h(and)e(additions)h(sp)s(eci\014ed)g(b)m -(y)g(redirections)g(to)330 4578 y(the)g(command)225 4713 +(y)g(redirections)g(to)330 4597 y(the)g(command)225 4728 y Fq(\017)60 b Fu(the)31 b(curren)m(t)f(w)m(orking)g(directory)225 -4849 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225 -4985 y Fq(\017)60 b Fu(shell)32 b(v)-5 b(ariables)33 +4859 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225 +4990 y Fq(\017)60 b Fu(shell)32 b(v)-5 b(ariables)33 b(and)e(functions)h(mark)m(ed)g(for)g(exp)s(ort,)g(along)h(with)f(v)-5 -b(ariables)32 b(exp)s(orted)g(for)g(the)330 5095 y(command,)e(passed)g +b(ariables)32 b(exp)s(orted)g(for)g(the)330 5099 y(command,)e(passed)g (in)g(the)h(en)m(vironmen)m(t)g(\(see)g(Section)g(3.7.4)i([En)m -(vironmen)m(t],)e(page)g(41\))225 5230 y Fq(\017)60 b +(vironmen)m(t],)e(page)g(44\))225 5230 y Fq(\017)60 b Fu(traps)31 b(caugh)m(t)h(b)m(y)f(the)g(shell)h(are)f(reset)h(to)g(the) f(v)-5 b(alues)32 b(inherited)e(from)h(the)g(shell's)h(paren)m(t,)g (and)330 5340 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored)p eop end -%%Page: 41 47 -TeXDict begin 41 46 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(41)275 299 +%%Page: 44 50 +TeXDict begin 44 49 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(44)275 299 y(A)41 b(command)g(in)m(v)m(ok)m(ed)i(in)e(this)h(separate)g(en)m (vironmen)m(t)g(cannot)g(a\013ect)h(the)f(shell's)g(execution)150 -408 y(en)m(vironmen)m(t.)275 552 y(Command)35 b(substitution,)j -(commands)e(group)s(ed)f(with)i(paren)m(theses,)h(and)e(async)m -(hronous)g(com-)150 662 y(mands)c(are)h(in)m(v)m(ok)m(ed)i(in)d(a)i -(subshell)e(en)m(vironmen)m(t)h(that)h(is)f(a)g(duplicate)h(of)f(the)g -(shell)g(en)m(vironmen)m(t,)150 772 y(except)i(that)g(traps)f(caugh)m -(t)h(b)m(y)f(the)h(shell)f(are)g(reset)h(to)g(the)f(v)-5 -b(alues)35 b(that)g(the)f(shell)h(inherited)e(from)150 -881 y(its)g(paren)m(t)f(at)h(in)m(v)m(o)s(cation.)49 +408 y(en)m(vironmen)m(t.)275 540 y(A)30 b Fr(subshell)j +Fu(is)d(a)h(cop)m(y)g(of)g(the)f(shell)h(pro)s(cess.)275 +671 y(Command)k(substitution,)j(commands)e(group)s(ed)f(with)i(paren)m +(theses,)h(and)e(async)m(hronous)g(com-)150 781 y(mands)c(are)h(in)m(v) +m(ok)m(ed)i(in)d(a)i(subshell)e(en)m(vironmen)m(t)h(that)h(is)f(a)g +(duplicate)h(of)f(the)g(shell)g(en)m(vironmen)m(t,)150 +891 y(except)i(that)g(traps)f(caugh)m(t)h(b)m(y)f(the)h(shell)f(are)g +(reset)h(to)g(the)f(v)-5 b(alues)35 b(that)g(the)f(shell)h(inherited)e +(from)150 1000 y(its)g(paren)m(t)f(at)h(in)m(v)m(o)s(cation.)49 b(Builtin)32 b(commands)g(that)h(are)g(in)m(v)m(ok)m(ed)h(as)e(part)g -(of)h(a)f(pip)s(eline)g(are)h(also)150 991 y(executed)41 +(of)h(a)f(pip)s(eline)g(are)h(also)150 1110 y(executed)41 b(in)f(a)h(subshell)e(en)m(vironmen)m(t.)72 b(Changes)40 b(made)g(to)h(the)g(subshell)e(en)m(vironmen)m(t)i(cannot)150 -1100 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275 -1244 y(Subshells)c(spa)m(wned)i(to)h(execute)g(command)f(substitutions) +1219 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275 +1351 y(Subshells)c(spa)m(wned)i(to)h(execute)g(command)f(substitutions) g(inherit)g(the)g(v)-5 b(alue)31 b(of)f(the)h Ft(-e)e -Fu(option)150 1354 y(from)23 b(the)i(paren)m(t)f(shell.)38 +Fu(option)150 1460 y(from)23 b(the)i(paren)m(t)f(shell.)38 b(When)24 b(not)g(in)g Fm(posix)f Fu(mo)s(de,)i(Bash)f(clears)h(the)f -Ft(-e)f Fu(option)i(in)e(suc)m(h)h(subshells.)275 1498 +Ft(-e)f Fu(option)i(in)e(suc)m(h)h(subshells.)275 1592 y(If)f(a)h(command)g(is)g(follo)m(w)m(ed)h(b)m(y)f(a)g(`)p Ft(&)p Fu(')g(and)f(job)h(con)m(trol)h(is)f(not)g(activ)m(e,)k(the)c -(default)g(standard)f(input)150 1607 y(for)35 b(the)g(command)g(is)g +(default)g(standard)f(input)150 1701 y(for)35 b(the)g(command)g(is)g (the)g(empt)m(y)h(\014le)f Ft(/dev/null)p Fu(.)52 b(Otherwise,)37 -b(the)e(in)m(v)m(ok)m(ed)h(command)f(inherits)150 1717 +b(the)e(in)m(v)m(ok)m(ed)h(command)f(inherits)150 1811 y(the)c(\014le)f(descriptors)g(of)h(the)f(calling)i(shell)f(as)f(mo)s -(di\014ed)g(b)m(y)g(redirections.)150 1926 y Fk(3.7.4)63 -b(En)m(vironmen)m(t)150 2073 y Fu(When)29 b(a)g(program)f(is)h(in)m(v)m +(di\014ed)g(b)m(y)g(redirections.)150 2004 y Fk(3.7.4)63 +b(En)m(vironmen)m(t)150 2151 y Fu(When)29 b(a)g(program)f(is)h(in)m(v)m (ok)m(ed)h(it)g(is)f(giv)m(en)g(an)g(arra)m(y)g(of)g(strings)g(called)h (the)f Fr(en)m(vironmen)m(t)p Fu(.)41 b(This)28 b(is)h(a)150 -2182 y(list)i(of)g(name-v)-5 b(alue)31 b(pairs,)f(of)h(the)f(form)g -Ft(name=value)p Fu(.)275 2326 y(Bash)39 b(pro)m(vides)g(sev)m(eral)i(w) +2261 y(list)i(of)g(name-v)-5 b(alue)31 b(pairs,)f(of)h(the)f(form)g +Ft(name=value)p Fu(.)275 2392 y(Bash)39 b(pro)m(vides)g(sev)m(eral)i(w) m(a)m(ys)g(to)f(manipulate)f(the)h(en)m(vironmen)m(t.)69 -b(On)38 b(in)m(v)m(o)s(cation,)44 b(the)c(shell)150 2436 +b(On)38 b(in)m(v)m(o)s(cation,)44 b(the)c(shell)150 2502 y(scans)g(its)h(o)m(wn)f(en)m(vironmen)m(t)h(and)f(creates)i(a)f (parameter)f(for)g(eac)m(h)i(name)e(found,)i(automatically)150 -2545 y(marking)26 b(it)g(for)g Fr(exp)s(ort)h Fu(to)g(c)m(hild)f(pro)s -(cesses.)39 b(Executed)26 b(commands)g(inherit)g(the)g(en)m(vironmen)m -(t.)39 b(The)150 2655 y Ft(export)c Fu(and)i(`)p Ft(declare)29 +2611 y(marking)23 b(it)h(for)f Ft(export)f Fu(to)i(c)m(hild)g(pro)s +(cesses.)38 b(Executed)24 b(commands)f(inherit)g(the)g(en)m(vironmen)m +(t.)39 b(The)150 2721 y Ft(export)c Fu(and)i(`)p Ft(declare)29 b(-x)p Fu(')36 b(commands)h(allo)m(w)i(parameters)e(and)g(functions)g -(to)h(b)s(e)e(added)h(to)h(and)150 2765 y(deleted)21 +(to)h(b)s(e)e(added)h(to)h(and)150 2830 y(deleted)21 b(from)f(the)h(en)m(vironmen)m(t.)38 b(If)20 b(the)h(v)-5 b(alue)21 b(of)g(a)g(parameter)g(in)f(the)g(en)m(vironmen)m(t)i(is)e -(mo)s(di\014ed,)i(the)150 2874 y(new)31 b(v)-5 b(alue)32 +(mo)s(di\014ed,)i(the)150 2940 y(new)31 b(v)-5 b(alue)32 b(b)s(ecomes)f(part)h(of)f(the)h(en)m(vironmen)m(t,)g(replacing)h(the)e (old.)44 b(The)31 b(en)m(vironmen)m(t)h(inherited)150 -2984 y(b)m(y)f(an)m(y)g(executed)h(command)f(consists)g(of)g(the)g +3050 y(b)m(y)f(an)m(y)g(executed)h(command)f(consists)g(of)g(the)g (shell's)h(initial)g(en)m(vironmen)m(t,)g(whose)f(v)-5 -b(alues)31 b(ma)m(y)h(b)s(e)150 3093 y(mo)s(di\014ed)26 +b(alues)31 b(ma)m(y)h(b)s(e)150 3159 y(mo)s(di\014ed)26 b(in)g(the)h(shell,)h(less)f(an)m(y)g(pairs)f(remo)m(v)m(ed)i(b)m(y)f (the)g Ft(unset)e Fu(and)h(`)p Ft(export)j(-n)p Fu(')e(commands,)g -(plus)150 3203 y(an)m(y)k(additions)f(via)h(the)g Ft(export)d -Fu(and)i(`)p Ft(declare)f(-x)p Fu(')h(commands.)275 3347 +(plus)150 3269 y(an)m(y)k(additions)f(via)h(the)g Ft(export)d +Fu(and)i(`)p Ft(declare)f(-x)p Fu(')h(commands.)275 3400 y(The)j(en)m(vironmen)m(t)i(for)f(an)m(y)g(simple)h(command)f(or)g (function)g(ma)m(y)g(b)s(e)g(augmen)m(ted)h(temp)s(orarily)150 -3457 y(b)m(y)c(pre\014xing)e(it)i(with)g(parameter)g(assignmen)m(ts,)h +3510 y(b)m(y)c(pre\014xing)e(it)i(with)g(parameter)g(assignmen)m(ts,)h (as)e(describ)s(ed)g(in)g(Section)i(3.4)g([Shell)e(P)m(arameters],)150 -3566 y(page)g(20.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g +3619 y(page)g(21.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g (a\013ect)f(only)g(the)f(en)m(vironmen)m(t)h(seen)g(b)m(y)f(that)h -(command.)275 3710 y(If)g(the)h Ft(-k)g Fu(option)g(is)g(set)h(\(see)g -(Section)g(4.3.1)g([The)f(Set)g(Builtin],)h(page)g(62\),)h(then)e(all)g -(parameter)150 3820 y(assignmen)m(ts)f(are)g(placed)h(in)e(the)h(en)m +(command.)275 3751 y(If)g(the)h Ft(-k)g Fu(option)g(is)g(set)h(\(see)g +(Section)g(4.3.1)g([The)f(Set)g(Builtin],)h(page)g(67\),)h(then)e(all)g +(parameter)150 3860 y(assignmen)m(ts)f(are)g(placed)h(in)e(the)h(en)m (vironmen)m(t)g(for)g(a)g(command,)f(not)h(just)f(those)i(that)f -(precede)g(the)150 3929 y(command)g(name.)275 4073 y(When)h(Bash)h(in)m +(precede)g(the)150 3970 y(command)g(name.)275 4101 y(When)h(Bash)h(in)m (v)m(ok)m(es)i(an)e(external)h(command,)f(the)g(v)-5 b(ariable)33 b(`)p Ft($_)p Fu(')f(is)g(set)h(to)f(the)g(full)g -(pathname)150 4183 y(of)f(the)f(command)g(and)g(passed)g(to)h(that)g -(command)f(in)g(its)h(en)m(vironmen)m(t.)150 4392 y Fk(3.7.5)63 -b(Exit)40 b(Status)150 4538 y Fu(The)26 b(exit)h(status)f(of)g(an)g -(executed)h(command)f(is)g(the)h(v)-5 b(alue)26 b(returned)f(b)m(y)h -(the)g Fr(w)m(aitpid)k Fu(system)d(call)g(or)150 4648 -y(equiv)-5 b(alen)m(t)33 b(function.)45 b(Exit)32 b(statuses)g(fall)g -(b)s(et)m(w)m(een)h(0)f(and)f(255,)i(though,)f(as)g(explained)g(b)s -(elo)m(w,)h(the)150 4758 y(shell)i(ma)m(y)g(use)f(v)-5 -b(alues)35 b(ab)s(o)m(v)m(e)g(125)h(sp)s(ecially)-8 b(.)54 -b(Exit)35 b(statuses)g(from)f(shell)h(builtins)f(and)f(comp)s(ound)150 -4867 y(commands)j(are)g(also)h(limited)g(to)g(this)f(range.)58 -b(Under)36 b(certain)h(circumstances,)h(the)e(shell)h(will)f(use)150 -4977 y(sp)s(ecial)31 b(v)-5 b(alues)31 b(to)g(indicate)g(sp)s(eci\014c) -f(failure)h(mo)s(des.)275 5121 y(F)-8 b(or)32 b(the)g(shell's)g(purp)s -(oses,)e(a)j(command)e(whic)m(h)h(exits)g(with)g(a)g(zero)g(exit)h -(status)f(has)f(succeeded.)150 5230 y(A)e(non-zero)h(exit)g(status)g -(indicates)g(failure.)40 b(This)28 b(seemingly)i(coun)m(ter-in)m -(tuitiv)m(e)i(sc)m(heme)e(is)f(used)g(so)150 5340 y(there)34 -b(is)g(one)g(w)m(ell-de\014ned)g(w)m(a)m(y)g(to)h(indicate)g(success)f -(and)f(a)h(v)-5 b(ariet)m(y)35 b(of)f(w)m(a)m(ys)h(to)f(indicate)h(v)-5 -b(arious)p eop end -%%Page: 42 48 -TeXDict begin 42 47 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(42)150 299 +(pathname)150 4211 y(of)f(the)f(command)g(and)g(passed)g(to)h(that)g +(command)f(in)g(its)h(en)m(vironmen)m(t.)150 4404 y Fk(3.7.5)63 +b(Exit)40 b(Status)150 4551 y Fu(The)23 b(exit)i(status)f(of)h(an)e +(executed)i(command)f(is)g(the)g(v)-5 b(alue)24 b(returned)f(b)m(y)h +(the)g Ft(waitpid)e Fu(system)i(call)h(or)150 4661 y(equiv)-5 +b(alen)m(t)33 b(function.)45 b(Exit)32 b(statuses)g(fall)g(b)s(et)m(w)m +(een)h(0)f(and)f(255,)i(though,)f(as)g(explained)g(b)s(elo)m(w,)h(the) +150 4770 y(shell)i(ma)m(y)g(use)f(v)-5 b(alues)35 b(ab)s(o)m(v)m(e)g +(125)h(sp)s(ecially)-8 b(.)54 b(Exit)35 b(statuses)g(from)f(shell)h +(builtins)f(and)f(comp)s(ound)150 4880 y(commands)j(are)g(also)h +(limited)g(to)g(this)f(range.)58 b(Under)36 b(certain)h(circumstances,) +h(the)e(shell)h(will)f(use)150 4989 y(sp)s(ecial)31 b(v)-5 +b(alues)31 b(to)g(indicate)g(sp)s(eci\014c)f(failure)h(mo)s(des.)275 +5121 y(F)-8 b(or)32 b(the)g(shell's)g(purp)s(oses,)e(a)j(command)e +(whic)m(h)h(exits)g(with)g(a)g(zero)g(exit)h(status)f(has)f(succeeded.) +150 5230 y(A)e(non-zero)h(exit)g(status)g(indicates)g(failure.)40 +b(This)28 b(seemingly)i(coun)m(ter-in)m(tuitiv)m(e)i(sc)m(heme)e(is)f +(used)g(so)150 5340 y(there)34 b(is)g(one)g(w)m(ell-de\014ned)g(w)m(a)m +(y)g(to)h(indicate)g(success)f(and)f(a)h(v)-5 b(ariet)m(y)35 +b(of)f(w)m(a)m(ys)h(to)f(indicate)h(v)-5 b(arious)p eop +end +%%Page: 45 51 +TeXDict begin 45 50 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(45)150 299 y(failure)38 b(mo)s(des.)62 b(When)37 b(a)h(command)f(terminates)i(on)e (a)h(fatal)h(signal)g(whose)e(n)m(um)m(b)s(er)f(is)i Fr(N)p Fu(,)i(Bash)150 408 y(uses)30 b(the)g(v)-5 b(alue)31 b(128)p Ft(+)p Fr(N)42 b Fu(as)30 b(the)h(exit)g(status.)275 -537 y(If)k(a)h(command)g(is)g(not)g(found,)g(the)g(c)m(hild)h(pro)s +549 y(If)k(a)h(command)g(is)g(not)g(found,)g(the)g(c)m(hild)h(pro)s (cess)e(created)i(to)g(execute)g(it)g(returns)d(a)j(status)f(of)150 -647 y(127.)42 b(If)30 b(a)h(command)f(is)g(found)f(but)h(is)g(not)h +658 y(127.)42 b(If)30 b(a)h(command)f(is)g(found)f(but)h(is)g(not)h (executable,)h(the)f(return)e(status)i(is)f(126.)275 -776 y(If)i(a)i(command)f(fails)g(b)s(ecause)g(of)h(an)f(error)f(during) +798 y(If)i(a)i(command)f(fails)g(b)s(ecause)g(of)h(an)f(error)f(during) g(expansion)h(or)g(redirection,)i(the)f(exit)g(status)150 -885 y(is)c(greater)i(than)e(zero.)275 1014 y(The)38 b(exit)h(status)g +908 y(is)c(greater)i(than)e(zero.)275 1048 y(The)38 b(exit)h(status)g (is)g(used)f(b)m(y)g(the)h(Bash)g(conditional)h(commands)e(\(see)h -(Section)h(3.2.5.2)h([Con-)150 1123 y(ditional)i(Constructs],)h(page)f -(11\))g(and)e(some)i(of)f(the)g(list)g(constructs)g(\(see)h(Section)f -(3.2.4)i([Lists],)150 1233 y(page)31 b(9\).)275 1362 +(Section)h(3.2.5.2)h([Con-)150 1158 y(ditional)i(Constructs],)h(page)f +(12\))g(and)e(some)i(of)f(the)g(list)g(constructs)g(\(see)h(Section)f +(3.2.4)i([Lists],)150 1267 y(page)31 b(10\).)275 1407 y(All)40 b(of)g(the)h(Bash)f(builtins)f(return)g(an)h(exit)h(status)g (of)f(zero)h(if)f(they)g(succeed)g(and)g(a)g(non-zero)150 -1471 y(status)34 b(on)f(failure,)i(so)f(they)g(ma)m(y)g(b)s(e)f(used)g +1517 y(status)34 b(on)f(failure,)i(so)f(they)g(ma)m(y)g(b)s(e)f(used)g (b)m(y)g(the)h(conditional)h(and)e(list)h(constructs.)50 -b(All)35 b(builtins)150 1581 y(return)e(an)i(exit)g(status)g(of)f(2)h +b(All)35 b(builtins)150 1627 y(return)e(an)i(exit)g(status)g(of)f(2)h (to)g(indicate)h(incorrect)f(usage,)h(generally)g(in)m(v)-5 -b(alid)35 b(options)g(or)f(missing)150 1691 y(argumen)m(ts.)150 -1878 y Fk(3.7.6)63 b(Signals)150 2025 y Fu(When)36 b(Bash)g(is)h(in)m -(teractiv)m(e,)j(in)c(the)h(absence)f(of)h(an)m(y)f(traps,)i(it)e -(ignores)h Ft(SIGTERM)d Fu(\(so)j(that)g(`)p Ft(kill)150 -2135 y(0)p Fu(')c(do)s(es)g(not)g(kill)g(an)g(in)m(teractiv)m(e)j -(shell\),)f(and)d Ft(SIGINT)f Fu(is)i(caugh)m(t)h(and)f(handled)f(\(so) -h(that)h(the)f Ft(wait)150 2244 y Fu(builtin)24 b(is)h(in)m -(terruptible\).)39 b(When)24 b(Bash)g(receiv)m(es)j(a)d -Ft(SIGINT)p Fu(,)h(it)g(breaks)f(out)h(of)f(an)m(y)h(executing)h(lo)s -(ops.)150 2354 y(In)31 b(all)h(cases,)h(Bash)f(ignores)g -Ft(SIGQUIT)p Fu(.)42 b(If)32 b(job)f(con)m(trol)i(is)e(in)h(e\013ect)h -(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 2464 y(page)f(107\),)h -(Bash)f(ignores)g Ft(SIGTTIN)p Fu(,)d Ft(SIGTTOU)p Fu(,)h(and)h -Ft(SIGTSTP)p Fu(.)275 2592 y(Non-builtin)h(commands)g(started)g(b)m(y)g -(Bash)h(ha)m(v)m(e)g(signal)g(handlers)e(set)i(to)g(the)g(v)-5 -b(alues)31 b(inherited)150 2702 y(b)m(y)37 b(the)h(shell)g(from)f(its)h -(paren)m(t.)62 b(When)38 b(job)f(con)m(trol)i(is)e(not)h(in)f -(e\013ect,)k(async)m(hronous)c(commands)150 2812 y(ignore)f -Ft(SIGINT)e Fu(and)h Ft(SIGQUIT)e Fu(in)j(addition)f(to)i(these)f -(inherited)f(handlers.)55 b(Commands)35 b(run)f(as)i(a)150 -2921 y(result)27 b(of)h(command)f(substitution)h(ignore)g(the)g(k)m -(eyb)s(oard-generated)g(job)g(con)m(trol)h(signals)f -Ft(SIGTTIN)p Fu(,)150 3031 y Ft(SIGTTOU)p Fu(,)h(and)g -Ft(SIGTSTP)p Fu(.)275 3160 y(The)h(shell)i(exits)g(b)m(y)f(default)g -(up)s(on)f(receipt)i(of)f(a)h Ft(SIGHUP)p Fu(.)42 b(Before)32 -b(exiting,)h(an)e(in)m(teractiv)m(e)j(shell)150 3269 -y(resends)41 b(the)i Ft(SIGHUP)e Fu(to)i(all)g(jobs,)i(running)c(or)h -(stopp)s(ed.)76 b(Stopp)s(ed)41 b(jobs)h(are)h(sen)m(t)g -Ft(SIGCONT)d Fu(to)150 3379 y(ensure)32 b(that)h(they)g(receiv)m(e)i -(the)e Ft(SIGHUP)p Fu(.)47 b(T)-8 b(o)33 b(prev)m(en)m(t)g(the)g(shell) -g(from)g(sending)f(the)h Ft(SIGHUP)e Fu(signal)150 3488 -y(to)i(a)g(particular)g(job,)g(it)g(should)f(b)s(e)g(remo)m(v)m(ed)h -(from)g(the)f(jobs)g(table)i(with)e(the)h Ft(disown)e -Fu(builtin)h(\(see)150 3598 y(Section)c(7.2)g([Job)e(Con)m(trol)i -(Builtins],)g(page)g(108\))h(or)e(mark)m(ed)g(to)g(not)g(receiv)m(e)i -Ft(SIGHUP)c Fu(using)i Ft(disown)150 3707 y(-h)p Fu(.)275 -3836 y(If)38 b(the)h Ft(huponexit)e Fu(shell)i(option)g(has)g(b)s(een)f -(set)i(with)f Ft(shopt)e Fu(\(see)j(Section)g(4.3.2)h([The)e(Shopt)150 -3946 y(Builtin],)31 b(page)g(66\),)h(Bash)f(sends)e(a)i +b(alid)35 b(options)g(or)f(missing)150 1736 y(argumen)m(ts.)275 +1876 y(The)f(exit)i(status)f(of)h(the)f(last)h(command)f(is)g(a)m(v)-5 +b(ailable)36 b(in)e(the)g(sp)s(ecial)h(parameter)f($?)52 +b(\(see)35 b(Sec-)150 1986 y(tion)c(3.4.2)h([Sp)s(ecial)f(P)m +(arameters],)h(page)f(23\).)150 2191 y Fk(3.7.6)63 b(Signals)150 +2338 y Fu(When)36 b(Bash)g(is)h(in)m(teractiv)m(e,)j(in)c(the)h +(absence)f(of)h(an)m(y)f(traps,)i(it)e(ignores)h Ft(SIGTERM)d +Fu(\(so)j(that)g(`)p Ft(kill)150 2447 y(0)p Fu(')c(do)s(es)g(not)g +(kill)g(an)g(in)m(teractiv)m(e)j(shell\),)f(and)d Ft(SIGINT)f +Fu(is)i(caugh)m(t)h(and)f(handled)f(\(so)h(that)h(the)f +Ft(wait)150 2557 y Fu(builtin)24 b(is)h(in)m(terruptible\).)39 +b(When)24 b(Bash)g(receiv)m(es)j(a)d Ft(SIGINT)p Fu(,)h(it)g(breaks)f +(out)h(of)f(an)m(y)h(executing)h(lo)s(ops.)150 2667 y(In)31 +b(all)h(cases,)h(Bash)f(ignores)g Ft(SIGQUIT)p Fu(.)42 +b(If)32 b(job)f(con)m(trol)i(is)e(in)h(e\013ect)h(\(see)f(Chapter)f(7)h +([Job)g(Con)m(trol],)150 2776 y(page)f(113\),)h(Bash)f(ignores)g +Ft(SIGTTIN)p Fu(,)d Ft(SIGTTOU)p Fu(,)h(and)h Ft(SIGTSTP)p +Fu(.)275 2916 y(Non-builtin)h(commands)g(started)g(b)m(y)g(Bash)h(ha)m +(v)m(e)g(signal)g(handlers)e(set)i(to)g(the)g(v)-5 b(alues)31 +b(inherited)150 3026 y(b)m(y)37 b(the)h(shell)g(from)f(its)h(paren)m +(t.)62 b(When)38 b(job)f(con)m(trol)i(is)e(not)h(in)f(e\013ect,)k +(async)m(hronous)c(commands)150 3136 y(ignore)f Ft(SIGINT)e +Fu(and)h Ft(SIGQUIT)e Fu(in)j(addition)f(to)i(these)f(inherited)f +(handlers.)55 b(Commands)35 b(run)f(as)i(a)150 3245 y(result)27 +b(of)h(command)f(substitution)h(ignore)g(the)g(k)m(eyb)s +(oard-generated)g(job)g(con)m(trol)h(signals)f Ft(SIGTTIN)p +Fu(,)150 3355 y Ft(SIGTTOU)p Fu(,)h(and)g Ft(SIGTSTP)p +Fu(.)275 3495 y(The)h(shell)i(exits)g(b)m(y)f(default)g(up)s(on)f +(receipt)i(of)f(a)h Ft(SIGHUP)p Fu(.)42 b(Before)32 b(exiting,)h(an)e +(in)m(teractiv)m(e)j(shell)150 3604 y(resends)41 b(the)i +Ft(SIGHUP)e Fu(to)i(all)g(jobs,)i(running)c(or)h(stopp)s(ed.)76 +b(Stopp)s(ed)41 b(jobs)h(are)h(sen)m(t)g Ft(SIGCONT)d +Fu(to)150 3714 y(ensure)32 b(that)h(they)g(receiv)m(e)i(the)e +Ft(SIGHUP)p Fu(.)47 b(T)-8 b(o)33 b(prev)m(en)m(t)g(the)g(shell)g(from) +g(sending)f(the)h Ft(SIGHUP)e Fu(signal)150 3824 y(to)i(a)g(particular) +g(job,)g(it)g(should)f(b)s(e)g(remo)m(v)m(ed)h(from)g(the)f(jobs)g +(table)i(with)e(the)h Ft(disown)e Fu(builtin)h(\(see)150 +3933 y(Section)c(7.2)g([Job)e(Con)m(trol)i(Builtins],)g(page)g(114\))h +(or)e(mark)m(ed)g(to)g(not)g(receiv)m(e)i Ft(SIGHUP)c +Fu(using)i Ft(disown)150 4043 y(-h)p Fu(.)275 4183 y(If)38 +b(the)h Ft(huponexit)e Fu(shell)i(option)g(has)g(b)s(een)f(set)i(with)f +Ft(shopt)e Fu(\(see)j(Section)g(4.3.2)h([The)e(Shopt)150 +4293 y(Builtin],)31 b(page)g(71\),)h(Bash)f(sends)e(a)i Ft(SIGHUP)e Fu(to)i(all)g(jobs)f(when)f(an)i(in)m(teractiv)m(e)i(login) -e(shell)g(exits.)275 4075 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g +e(shell)g(exits.)275 4433 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g (command)f(to)i(complete)g(and)e(receiv)m(es)j(a)e(signal)h(for)e(whic) -m(h)h(a)g(trap)150 4184 y(has)c(b)s(een)f(set,)i(the)f(trap)g(will)g +m(h)h(a)g(trap)150 4542 y(has)c(b)s(een)f(set,)i(the)f(trap)g(will)g (not)g(b)s(e)f(executed)i(un)m(til)f(the)g(command)f(completes.)55 -b(When)35 b(Bash)g(is)150 4294 y(w)m(aiting)j(for)f(an)g(async)m +b(When)35 b(Bash)g(is)150 4652 y(w)m(aiting)j(for)f(an)g(async)m (hronous)g(command)g(via)h(the)f Ft(wait)f Fu(builtin,)i(the)g -(reception)g(of)f(a)g(signal)h(for)150 4403 y(whic)m(h)d(a)g(trap)g +(reception)g(of)f(a)g(signal)h(for)150 4761 y(whic)m(h)d(a)g(trap)g (has)g(b)s(een)f(set)h(will)h(cause)f(the)g Ft(wait)f Fu(builtin)h(to)g(return)f(immediately)i(with)f(an)g(exit)150 -4513 y(status)c(greater)g(than)f(128,)i(immediately)g(after)f(whic)m(h) -f(the)h(trap)f(is)g(executed.)150 4742 y Fs(3.8)68 b(Shell)45 -b(Scripts)150 4902 y Fu(A)30 b(shell)f(script)h(is)f(a)h(text)h(\014le) -f(con)m(taining)h(shell)f(commands.)40 b(When)29 b(suc)m(h)g(a)h -(\014le)g(is)f(used)g(as)h(the)g(\014rst)150 5011 y(non-option)c -(argumen)m(t)h(when)e(in)m(v)m(oking)i(Bash,)g(and)f(neither)g(the)g -Ft(-c)g Fu(nor)f Ft(-s)h Fu(option)g(is)g(supplied)f(\(see)150 -5121 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(86\),)i -(Bash)d(reads)g(and)f(executes)i(commands)f(from)f(the)i(\014le,)150 -5230 y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s(eration)f +4871 y(status)c(greater)g(than)f(128,)i(immediately)g(after)f(whic)m(h) +f(the)h(trap)f(is)g(executed.)275 5011 y(When)41 b(job)g(con)m(trol)h +(is)g(not)f(enabled,)k(and)40 b(Bash)i(is)f(w)m(aiting)i(for)e(a)h +(foreground)e(command)h(to)150 5121 y(complete,)35 b(the)e(shell)h +(receiv)m(es)g(k)m(eyb)s(oard-generated)g(signals)g(suc)m(h)e(as)i +Ft(SIGINT)d Fu(\(usually)i(generated)150 5230 y(b)m(y)e(`)p +Ft(^C)p Fu('\))h(that)g(users)e(commonly)i(in)m(tend)g(to)g(send)e(to)j +(that)f(command.)43 b(This)31 b(happ)s(ens)e(b)s(ecause)j(the)150 +5340 y(shell)23 b(and)g(the)h(command)f(are)g(in)g(the)h(same)f(pro)s +(cess)g(group)g(as)h(the)f(terminal,)i(and)e(`)p Ft(^C)p +Fu(')g(sends)g Ft(SIGINT)p eop end +%%Page: 46 52 +TeXDict begin 46 51 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(46)150 299 +y(to)35 b(all)g(pro)s(cesses)f(in)g(that)g(pro)s(cess)g(group.)51 +b(See)35 b(Chapter)e(7)i([Job)f(Con)m(trol],)i(page)f(113,)h(for)e(a)h +(more)150 408 y(in-depth)30 b(discussion)f(of)i(pro)s(cess)f(groups.) +275 542 y(When)35 b(Bash)h(is)g(running)f(without)h(job)f(con)m(trol)i +(enabled)f(and)g(receiv)m(es)h Ft(SIGINT)e Fu(while)h(w)m(aiting)150 +651 y(for)g(a)h(foreground)f(command,)i(it)f(w)m(aits)g(un)m(til)g +(that)g(foreground)f(command)g(terminates)h(and)f(then)150 +761 y(decides)31 b(what)f(to)h(do)f(ab)s(out)g(the)h +Ft(SIGINT)p Fu(:)199 894 y(1.)61 b(If)29 b(the)h(command)f(terminates)i +(due)d(to)j(the)e Ft(SIGINT)p Fu(,)g(Bash)g(concludes)h(that)g(the)g +(user)f(mean)m(t)h(to)330 1004 y(end)25 b(the)h(en)m(tire)h(script,)g +(and)f(acts)h(on)e(the)i Ft(SIGINT)d Fu(\(e.g.,)k(b)m(y)e(running)f(a)h +Ft(SIGINT)e Fu(trap)i(or)g(exiting)330 1113 y(itself)7 +b(\);)199 1246 y(2.)61 b(If)39 b(the)g(pip)s(eline)g(do)s(es)g(not)h +(terminate)g(due)f(to)h Ft(SIGINT)p Fu(,)g(the)g(program)f(handled)f +(the)i Ft(SIGINT)330 1356 y Fu(itself)35 b(and)e(did)h(not)g(treat)h +(it)g(as)f(a)g(fatal)i(signal.)52 b(In)33 b(that)i(case,)h(Bash)e(do)s +(es)g(not)g(treat)i Ft(SIGINT)330 1466 y Fu(as)41 b(a)g(fatal)g +(signal,)j(either,)g(instead)d(assuming)f(that)h(the)g +Ft(SIGINT)d Fu(w)m(as)j(used)f(as)h(part)f(of)h(the)330 +1575 y(program's)32 b(normal)g(op)s(eration)h(\(e.g.,)h +Ft(emacs)d Fu(uses)g(it)i(to)g(ab)s(ort)f(editing)h(commands\))f(or)g +(delib-)330 1685 y(erately)41 b(discarded.)69 b(Ho)m(w)m(ev)m(er,)45 +b(Bash)40 b(will)h(run)d(an)m(y)j(trap)e(set)i(on)f Ft(SIGINT)p +Fu(,)h(as)f(it)h(do)s(es)e(with)330 1794 y(an)m(y)31 +b(other)f(trapp)s(ed)f(signal)i(it)g(receiv)m(es)h(while)e(it)h(is)f(w) +m(aiting)h(for)f(the)h(foreground)e(command)h(to)330 +1904 y(complete,)i(for)e(compatibilit)m(y)-8 b(.)150 +2142 y Fs(3.8)68 b(Shell)45 b(Scripts)150 2302 y Fu(A)30 +b(shell)f(script)h(is)f(a)h(text)h(\014le)f(con)m(taining)h(shell)f +(commands.)40 b(When)29 b(suc)m(h)g(a)h(\014le)g(is)f(used)g(as)h(the)g +(\014rst)150 2411 y(non-option)c(argumen)m(t)h(when)e(in)m(v)m(oking)i +(Bash,)g(and)f(neither)g(the)g Ft(-c)g Fu(nor)f Ft(-s)h +Fu(option)g(is)g(supplied)f(\(see)150 2521 y(Section)39 +b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(91\),)i(Bash)d(reads)g(and)f +(executes)i(commands)f(from)f(the)i(\014le,)150 2630 +y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s(eration)f (creates)i(a)e(non-in)m(teractiv)m(e)j(shell.)46 b(The)31 -b(shell)i(\014rst)e(searc)m(hes)150 5340 y(for)d(the)g(\014le)g(in)g +b(shell)i(\014rst)e(searc)m(hes)150 2740 y(for)d(the)g(\014le)g(in)g (the)g(curren)m(t)f(directory)-8 b(,)30 b(and)d(lo)s(oks)i(in)e(the)i -(directories)g(in)e Ft($PATH)g Fu(if)h(not)g(found)e(there.)p -eop end -%%Page: 43 49 -TeXDict begin 43 48 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(43)275 299 -y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f(sp)s -(ecial)i(parameter)f Ft(0)f Fu(to)h(the)g(name)g(of)g(the)g(\014le,)150 -408 y(rather)k(than)g(the)h(name)f(of)h(the)f(shell,)j(and)d(the)h(p)s -(ositional)g(parameters)f(are)h(set)g(to)g(the)g(remain-)150 -518 y(ing)f(argumen)m(ts,)j(if)d(an)m(y)g(are)g(giv)m(en.)67 -b(If)39 b(no)g(additional)g(argumen)m(ts)h(are)f(supplied,)h(the)f(p)s -(ositional)150 628 y(parameters)31 b(are)f(unset.)275 -762 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m +(directories)g(in)e Ft($PATH)g Fu(if)h(not)g(found)e(there.)275 +2873 y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f +(sp)s(ecial)i(parameter)f Ft(0)f Fu(to)h(the)g(name)g(of)g(the)g +(\014le,)150 2983 y(rather)k(than)g(the)h(name)f(of)h(the)f(shell,)j +(and)d(the)h(p)s(ositional)g(parameters)f(are)h(set)g(to)g(the)g +(remain-)150 3092 y(ing)f(argumen)m(ts,)j(if)d(an)m(y)g(are)g(giv)m +(en.)67 b(If)39 b(no)g(additional)g(argumen)m(ts)h(are)f(supplied,)h +(the)f(p)s(ositional)150 3202 y(parameters)31 b(are)f(unset.)275 +3335 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m (y)e(using)g(the)h Ft(chmod)e Fu(command)h(to)h(turn)e(on)i(the)150 -872 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h +3445 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h (\014le)f(while)g(searc)m(hing)h(the)f Ft($PATH)f Fu(for)h(a)h -(command,)h(it)150 981 y(spa)m(wns)30 b(a)g(subshell)g(to)h(execute)h -(it.)41 b(In)30 b(other)g(w)m(ords,)g(executing)390 1116 -y Ft(filename)46 b Fj(arguments)150 1250 y Fu(is)30 b(equiv)-5 -b(alen)m(t)32 b(to)f(executing)390 1385 y Ft(bash)47 -b(filename)e Fj(arguments)150 1519 y Fu(if)30 b Ft(filename)d -Fu(is)j(an)f(executable)j(shell)e(script.)40 b(This)29 -b(subshell)g(reinitializes)i(itself,)g(so)f(that)h(the)e(e\013ect)150 -1629 y(is)36 b(as)h(if)g(a)f(new)g(shell)h(had)f(b)s(een)g(in)m(v)m(ok) -m(ed)h(to)h(in)m(terpret)e(the)h(script,)h(with)e(the)h(exception)h -(that)f(the)150 1738 y(lo)s(cations)25 b(of)g(commands)e(remem)m(b)s -(ered)h(b)m(y)g(the)g(paren)m(t)g(\(see)h(the)f(description)g(of)g -Ft(hash)f Fu(in)h(Section)h(4.1)150 1848 y([Bourne)30 -b(Shell)h(Builtins],)g(page)g(44\))h(are)e(retained)h(b)m(y)f(the)h(c)m -(hild.)275 1983 y(Most)36 b(v)m(ersions)g(of)g(Unix)f(mak)m(e)h(this)g -(a)g(part)f(of)h(the)g(op)s(erating)g(system's)f(command)h(execution) -150 2092 y(mec)m(hanism.)50 b(If)33 b(the)g(\014rst)g(line)h(of)f(a)h -(script)f(b)s(egins)g(with)g(the)g(t)m(w)m(o)i(c)m(haracters)g(`)p -Ft(#!)p Fu(',)f(the)g(remainder)150 2202 y(of)27 b(the)g(line)g(sp)s -(eci\014es)g(an)g(in)m(terpreter)g(for)g(the)g(program)g(and,)g(dep)s -(ending)e(on)i(the)g(op)s(erating)h(system,)150 2311 -y(one)e(or)g(more)g(optional)h(argumen)m(ts)f(for)g(that)g(in)m -(terpreter.)40 b(Th)m(us,)26 b(y)m(ou)g(can)g(sp)s(ecify)g(Bash,)h -Ft(awk)p Fu(,)f(P)m(erl,)150 2421 y(or)k(some)h(other)g(in)m(terpreter) -g(and)e(write)i(the)f(rest)h(of)g(the)f(script)g(\014le)h(in)f(that)h -(language.)275 2555 y(The)k(argumen)m(ts)h(to)h(the)f(in)m(terpreter)h -(consist)f(of)h(one)f(or)g(more)g(optional)h(argumen)m(ts)f(follo)m -(wing)150 2665 y(the)e(in)m(terpreter)g(name)g(on)g(the)g(\014rst)g -(line)g(of)g(the)g(script)g(\014le,)h(follo)m(w)m(ed)h(b)m(y)e(the)g -(name)g(of)g(the)g(script)150 2775 y(\014le,)k(follo)m(w)m(ed)g(b)m(y)e -(the)g(rest)g(of)g(the)h(argumen)m(ts)f(supplied)f(to)i(the)f(script.) -58 b(The)35 b(details)i(of)g(ho)m(w)f(the)150 2884 y(in)m(terpreter)26 -b(line)g(is)g(split)g(in)m(to)h(an)f(in)m(terpreter)g(name)g(and)f(a)h -(set)h(of)e(argumen)m(ts)i(v)-5 b(ary)25 b(across)i(systems.)150 -2994 y(Bash)j(will)f(p)s(erform)g(this)g(action)i(on)e(op)s(erating)h -(systems)g(that)g(do)f(not)h(handle)f(it)h(themselv)m(es.)42 -b(Note)150 3103 y(that)e(some)g(older)g(v)m(ersions)g(of)g(Unix)f -(limit)i(the)f(in)m(terpreter)g(name)g(and)f(a)h(single)g(argumen)m(t)g -(to)h(a)150 3213 y(maxim)m(um)21 b(of)g(32)h(c)m(haracters,)j(so)c -(it's)h(not)g(p)s(ortable)f(to)h(assume)e(that)i(using)f(more)g(than)g -(one)g(argumen)m(t)150 3323 y(will)31 b(w)m(ork.)275 -3457 y(Bash)h(scripts)g(often)g(b)s(egin)g(with)g Ft(#!)e(/bin/bash)g -Fu(\(assuming)i(that)h(Bash)f(has)g(b)s(een)f(installed)i(in)150 -3567 y Ft(/bin)p Fu(\),)26 b(since)h(this)f(ensures)f(that)i(Bash)f -(will)h(b)s(e)f(used)f(to)i(in)m(terpret)f(the)h(script,)g(ev)m(en)g -(if)f(it)h(is)f(executed)150 3676 y(under)h(another)h(shell.)41 -b(It's)28 b(a)h(common)g(idiom)f(to)h(use)f Ft(env)g -Fu(to)h(\014nd)e Ft(bash)g Fu(ev)m(en)i(if)f(it's)i(b)s(een)d -(installed)150 3786 y(in)h(another)g(directory:)40 b -Ft(#!/usr/bin/env)27 b(bash)f Fu(will)j(\014nd)d(the)j(\014rst)e(o)s +(command,)h(it)150 3554 y(creates)32 b(a)f(new)e(instance)i(of)g +(itself)g(to)g(execute)h(it.)41 b(In)30 b(other)h(w)m(ords,)f +(executing)390 3688 y Ft(filename)46 b Fj(arguments)150 +3821 y Fu(is)30 b(equiv)-5 b(alen)m(t)32 b(to)f(executing)390 +3954 y Ft(bash)47 b(filename)e Fj(arguments)150 4087 +y Fu(if)30 b Ft(filename)d Fu(is)j(an)f(executable)j(shell)e(script.)40 +b(This)29 b(subshell)g(reinitializes)i(itself,)g(so)f(that)h(the)e +(e\013ect)150 4197 y(is)36 b(as)h(if)g(a)f(new)g(shell)h(had)f(b)s(een) +g(in)m(v)m(ok)m(ed)h(to)h(in)m(terpret)e(the)h(script,)h(with)e(the)h +(exception)h(that)f(the)150 4306 y(lo)s(cations)25 b(of)g(commands)e +(remem)m(b)s(ered)h(b)m(y)g(the)g(paren)m(t)g(\(see)h(the)f +(description)g(of)g Ft(hash)f Fu(in)h(Section)h(4.1)150 +4416 y([Bourne)30 b(Shell)h(Builtins],)g(page)g(48\))h(are)e(retained)h +(b)m(y)f(the)h(c)m(hild.)275 4549 y(Most)36 b(v)m(ersions)g(of)g(Unix)f +(mak)m(e)h(this)g(a)g(part)f(of)h(the)g(op)s(erating)g(system's)f +(command)h(execution)150 4659 y(mec)m(hanism.)50 b(If)33 +b(the)g(\014rst)g(line)h(of)f(a)h(script)f(b)s(egins)g(with)g(the)g(t)m +(w)m(o)i(c)m(haracters)g(`)p Ft(#!)p Fu(',)f(the)g(remainder)150 +4768 y(of)27 b(the)g(line)g(sp)s(eci\014es)g(an)g(in)m(terpreter)g(for) +g(the)g(program)g(and,)g(dep)s(ending)e(on)i(the)g(op)s(erating)h +(system,)150 4878 y(one)e(or)g(more)g(optional)h(argumen)m(ts)f(for)g +(that)g(in)m(terpreter.)40 b(Th)m(us,)26 b(y)m(ou)g(can)g(sp)s(ecify)g +(Bash,)h Ft(awk)p Fu(,)f(P)m(erl,)150 4988 y(or)k(some)h(other)g(in)m +(terpreter)g(and)e(write)i(the)f(rest)h(of)g(the)f(script)g(\014le)h +(in)f(that)h(language.)275 5121 y(The)k(argumen)m(ts)h(to)h(the)f(in)m +(terpreter)h(consist)f(of)h(one)f(or)g(more)g(optional)h(argumen)m(ts)f +(follo)m(wing)150 5230 y(the)e(in)m(terpreter)g(name)g(on)g(the)g +(\014rst)g(line)g(of)g(the)g(script)g(\014le,)h(follo)m(w)m(ed)h(b)m(y) +e(the)g(name)g(of)g(the)g(script)150 5340 y(\014le,)k(follo)m(w)m(ed)g +(b)m(y)e(the)g(rest)g(of)g(the)h(argumen)m(ts)f(supplied)f(to)i(the)f +(script.)58 b(The)35 b(details)i(of)g(ho)m(w)f(the)p +eop end +%%Page: 47 53 +TeXDict begin 47 52 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(47)150 299 +y(in)m(terpreter)26 b(line)g(is)g(split)g(in)m(to)h(an)f(in)m +(terpreter)g(name)g(and)f(a)h(set)h(of)e(argumen)m(ts)i(v)-5 +b(ary)25 b(across)i(systems.)150 408 y(Bash)j(will)f(p)s(erform)g(this) +g(action)i(on)e(op)s(erating)h(systems)g(that)g(do)f(not)h(handle)f(it) +h(themselv)m(es.)42 b(Note)150 518 y(that)e(some)g(older)g(v)m(ersions) +g(of)g(Unix)f(limit)i(the)f(in)m(terpreter)g(name)g(and)f(a)h(single)g +(argumen)m(t)g(to)h(a)150 628 y(maxim)m(um)21 b(of)g(32)h(c)m +(haracters,)j(so)c(it's)h(not)g(p)s(ortable)f(to)h(assume)e(that)i +(using)f(more)g(than)g(one)g(argumen)m(t)150 737 y(will)31 +b(w)m(ork.)275 872 y(Bash)h(scripts)g(often)g(b)s(egin)g(with)g +Ft(#!)e(/bin/bash)g Fu(\(assuming)i(that)h(Bash)f(has)g(b)s(een)f +(installed)i(in)150 981 y Ft(/bin)p Fu(\),)26 b(since)h(this)f(ensures) +f(that)i(Bash)f(will)h(b)s(e)f(used)f(to)i(in)m(terpret)f(the)h +(script,)g(ev)m(en)g(if)f(it)h(is)f(executed)150 1091 +y(under)h(another)h(shell.)41 b(It's)28 b(a)h(common)g(idiom)f(to)h +(use)f Ft(env)g Fu(to)h(\014nd)e Ft(bash)g Fu(ev)m(en)i(if)f(it's)i(b)s +(een)d(installed)150 1200 y(in)h(another)g(directory:)40 +b Ft(#!/usr/bin/env)27 b(bash)f Fu(will)j(\014nd)d(the)j(\014rst)e(o)s (ccurrence)h(of)g Ft(bash)f Fu(in)h Ft($PATH)p Fu(.)p eop end -%%Page: 44 50 -TeXDict begin 44 49 bop 3659 -116 a Fu(44)150 299 y Fp(4)80 +%%Page: 48 54 +TeXDict begin 48 53 bop 3659 -116 a Fu(48)150 299 y Fp(4)80 b(Shell)53 b(Builtin)f(Commands)150 499 y Fu(Builtin)34 b(commands)f(are)h(con)m(tained)g(within)f(the)h(shell)g(itself.)50 b(When)34 b(the)f(name)h(of)f(a)h(builtin)f(com-)150 608 y(mand)26 b(is)i(used)e(as)i(the)g(\014rst)e(w)m(ord)h(of)h(a)f (simple)h(command)f(\(see)h(Section)g(3.2.2)h([Simple)f(Commands],)150 -718 y(page)21 b(8\),)j(the)d(shell)g(executes)h(the)f(command)f +718 y(page)21 b(9\),)j(the)d(shell)g(executes)h(the)f(command)f (directly)-8 b(,)24 b(without)d(in)m(v)m(oking)h(another)f(program.)37 b(Builtin)150 828 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)g (functionalit)m(y)h(imp)s(ossible)e(or)h(incon)m(v)m(enien)m(t)h(to)f @@ -11327,12 +11631,12 @@ b(Builtin)150 828 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)g (other)g(c)m(hapters:)69 b(builtin)43 b(commands)h(whic)m(h)150 1412 y(pro)m(vide)23 b(the)h(Bash)f(in)m(terface)i(to)f(the)g(job)f (con)m(trol)i(facilities)g(\(see)f(Section)h(7.2)f([Job)f(Con)m(trol)h -(Builtins],)150 1521 y(page)37 b(108\),)i(the)d(directory)g(stac)m(k)h -(\(see)g(Section)g(6.8.1)g([Directory)h(Stac)m(k)f(Builtins],)h(page)e -(97\),)j(the)150 1631 y(command)23 b(history)h(\(see)g(Section)g(9.2)h -([Bash)f(History)g(Builtins],)h(page)g(146\),)h(and)d(the)h +(Builtins],)150 1521 y(page)33 b(114\),)i(the)e(directory)g(stac)m(k)h +(\(see)f(Section)h(6.8.1)g([Directory)g(Stac)m(k)g(Builtins],)g(page)f +(102\),)i(the)150 1631 y(command)23 b(history)h(\(see)g(Section)g(9.2)h +([Bash)f(History)g(Builtins],)h(page)g(152\),)h(and)d(the)h (programmable)150 1740 y(completion)32 b(facilities)g(\(see)g(Section)f -(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(139\).)275 +(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(146\).)275 1868 y(Man)m(y)f(of)f(the)h(builtins)e(ha)m(v)m(e)j(b)s(een)e(extended) g(b)m(y)g Fm(posix)g Fu(or)g(Bash.)275 1996 y(Unless)20 b(otherwise)h(noted,)h(eac)m(h)g(builtin)e(command)g(do)s(cumen)m(ted)g @@ -11368,1999 +11672,2061 @@ Fr(\014lename)39 b Fu(argumen)m(t)34 b(in)f(the)h(curren)m(t)g(shell) 630 4134 y(con)m(text.)45 b(If)31 b Fr(\014lename)37 b Fu(do)s(es)31 b(not)g(con)m(tain)i(a)e(slash,)h(the)g Ft(PATH)e Fu(v)-5 b(ariable)32 b(is)f(used)f(to)i(\014nd)630 -4244 y Fr(\014lename)p Fu(.)52 b(When)34 b(Bash)g(is)h(not)f(in)g -Fm(posix)f Fu(mo)s(de,)i(the)g(curren)m(t)f(directory)g(is)g(searc)m -(hed)630 4354 y(if)d Fr(\014lename)36 b Fu(is)31 b(not)h(found)d(in)i -Ft($PATH)p Fu(.)41 b(If)31 b(an)m(y)g Fr(argumen)m(ts)k -Fu(are)c(supplied,)f(they)i(b)s(ecome)630 4463 y(the)e(p)s(ositional)h -(parameters)g(when)e Fr(\014lename)35 b Fu(is)30 b(executed.)42 -b(Otherwise)30 b(the)g(p)s(ositional)630 4573 y(parameters)40 -b(are)f(unc)m(hanged.)67 b(If)39 b(the)g Ft(-T)g Fu(option)g(is)h -(enabled,)h Ft(source)d Fu(inherits)h(an)m(y)630 4682 -y(trap)31 b(on)g Ft(DEBUG)p Fu(;)f(if)i(it)f(is)g(not,)h(an)m(y)g -Ft(DEBUG)e Fu(trap)h(string)g(is)g(sa)m(v)m(ed)h(and)f(restored)g -(around)630 4792 y(the)41 b(call)i(to)e Ft(source)p Fu(,)i(and)d -Ft(source)f Fu(unsets)i(the)g Ft(DEBUG)f Fu(trap)h(while)g(it)g -(executes.)74 b(If)630 4902 y Ft(-T)39 b Fu(is)g(not)h(set,)j(and)c -(the)g(sourced)h(\014le)f(c)m(hanges)i(the)e Ft(DEBUG)f -Fu(trap,)k(the)e(new)f(v)-5 b(alue)40 b(is)630 5011 y(retained)e(when)e -Ft(source)g Fu(completes.)63 b(The)37 b(return)f(status)h(is)h(the)f -(exit)i(status)e(of)h(the)630 5121 y(last)g(command)e(executed,)j(or)e -(zero)h(if)e(no)h(commands)f(are)h(executed.)61 b(If)36 -b Fr(\014lename)42 b Fu(is)630 5230 y(not)f(found,)h(or)e(cannot)h(b)s -(e)f(read,)j(the)e(return)e(status)i(is)g(non-zero.)71 -b(This)40 b(builtin)g(is)630 5340 y(equiv)-5 b(alen)m(t)32 -b(to)f Ft(source)p Fu(.)p eop end -%%Page: 45 51 -TeXDict begin 45 50 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(45)150 299 y Ft(break)870 -428 y(break)46 b([)p Fj(n)p Ft(])630 558 y Fu(Exit)f(from)f(a)g +4244 y Fr(\014lename)p Fu(,)38 b(but)e Fr(\014lename)41 +b Fu(do)s(es)36 b(not)h(need)f(to)h(b)s(e)e(executable.)60 +b(When)36 b(Bash)g(is)h(not)f(in)630 4354 y Fm(posix)26 +b Fu(mo)s(de,)i(it)g(searc)m(hes)g(the)f(curren)m(t)g(directory)g(if)h +Fr(\014lename)k Fu(is)27 b(not)h(found)d(in)i Ft($PATH)p +Fu(.)630 4463 y(If)39 b(an)m(y)h Fr(argumen)m(ts)j Fu(are)d(supplied,)h +(they)e(b)s(ecome)h(the)g(p)s(ositional)g(parameters)g(when)630 +4573 y Fr(\014lename)i Fu(is)36 b(executed.)60 b(Otherwise)36 +b(the)h(p)s(ositional)g(parameters)g(are)g(unc)m(hanged.)58 +b(If)630 4682 y(the)33 b Ft(-T)g Fu(option)g(is)g(enabled,)h +Ft(.)f Fu(inherits)g(an)m(y)g(trap)g(on)g Ft(DEBUG)p +Fu(;)g(if)g(it)h(is)f(not,)h(an)m(y)f Ft(DEBUG)630 4792 +y Fu(trap)f(string)g(is)g(sa)m(v)m(ed)h(and)f(restored)g(around)f(the)i +(call)g(to)g Ft(.)p Fu(,)f(and)g Ft(.)g Fu(unsets)f(the)h +Ft(DEBUG)630 4902 y Fu(trap)f(while)h(it)g(executes.)46 +b(If)31 b Ft(-T)g Fu(is)g(not)h(set,)h(and)d(the)i(sourced)f(\014le)h +(c)m(hanges)h(the)e Ft(DEBUG)630 5011 y Fu(trap,)e(the)f(new)g(v)-5 +b(alue)29 b(is)f(retained)h(when)e Ft(.)h Fu(completes.)42 +b(The)27 b(return)h(status)g(is)h(the)f(exit)630 5121 +y(status)k(of)f(the)h(last)g(command)f(executed,)i(or)f(zero)g(if)f(no) +h(commands)f(are)h(executed.)44 b(If)630 5230 y Fr(\014lename)d +Fu(is)36 b(not)g(found,)h(or)e(cannot)i(b)s(e)e(read,)j(the)e(return)f +(status)h(is)g(non-zero.)58 b(This)630 5340 y(builtin)30 +b(is)g(equiv)-5 b(alen)m(t)32 b(to)f Ft(source)p Fu(.)p +eop end +%%Page: 49 55 +TeXDict begin 49 54 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(49)150 299 y Ft(break)870 +433 y(break)46 b([)p Fj(n)p Ft(])630 568 y Fu(Exit)f(from)f(a)g Ft(for)p Fu(,)k Ft(while)p Fu(,)e Ft(until)p Fu(,)h(or)d Ft(select)f Fu(lo)s(op.)83 b(If)44 b Fr(n)g Fu(is)g(supplied,)j(the)e -Fr(n)p Fu(th)630 667 y(enclosing)c(lo)s(op)f(is)h(exited.)70 +Fr(n)p Fu(th)630 677 y(enclosing)c(lo)s(op)f(is)h(exited.)70 b Fr(n)40 b Fu(m)m(ust)g(b)s(e)f(greater)j(than)d(or)i(equal)f(to)h(1.) -70 b(The)40 b(return)630 777 y(status)31 b(is)f(zero)h(unless)f +70 b(The)40 b(return)630 787 y(status)31 b(is)f(zero)h(unless)f Fr(n)g Fu(is)g(not)h(greater)g(than)g(or)f(equal)h(to)g(1.)150 -927 y Ft(cd)870 1056 y(cd)47 b([-L|[-P)f([-e]])g([-@])h([)p -Fj(directory)p Ft(])630 1186 y Fu(Change)27 b(the)g(curren)m(t)f(w)m +946 y Ft(cd)870 1081 y(cd)47 b([-L|[-P)f([-e]])g([-@])h([)p +Fj(directory)p Ft(])630 1215 y Fu(Change)27 b(the)g(curren)m(t)f(w)m (orking)h(directory)g(to)h Fr(directory)p Fu(.)40 b(If)26 -b Fr(directory)35 b Fu(is)27 b(not)g(supplied,)630 1295 -y(the)f(v)-5 b(alue)26 b(of)f(the)h Ft(HOME)e Fu(shell)i(v)-5 -b(ariable)26 b(is)g(used.)38 b(An)m(y)25 b(additional)i(argumen)m(ts)e -(follo)m(wing)630 1405 y Fr(directory)39 b Fu(are)31 -b(ignored.)41 b(If)30 b(the)h(shell)g(v)-5 b(ariable)31 -b Ft(CDPATH)e Fu(exists,)i(it)g(is)g(used)f(as)g(a)h(searc)m(h)630 -1514 y(path:)39 b(eac)m(h)29 b(directory)g(name)f(in)f -Ft(CDPATH)g Fu(is)h(searc)m(hed)g(for)g Fr(directory)p -Fu(,)h(with)f(alternativ)m(e)630 1624 y(directory)j(names)g(in)f -Ft(CDPATH)f Fu(separated)j(b)m(y)e(a)h(colon)h(\(`)p -Ft(:)p Fu('\).)43 b(If)30 b Fr(directory)39 b Fu(b)s(egins)30 -b(with)630 1733 y(a)h(slash,)f Ft(CDPATH)f Fu(is)h(not)h(used.)630 -1863 y(The)g Ft(-P)h Fu(option)g(means)g(to)h(not)f(follo)m(w)h(sym)m -(b)s(olic)g(links:)44 b(sym)m(b)s(olic)32 b(links)g(are)g(resolv)m(ed) -630 1973 y(while)41 b Ft(cd)f Fu(is)h(tra)m(v)m(ersing)h +b Fr(directory)35 b Fu(is)27 b(not)g(supplied,)630 1325 +y(the)k(v)-5 b(alue)31 b(of)g(the)g Ft(HOME)e Fu(shell)i(v)-5 +b(ariable)32 b(is)f(used.)40 b(If)31 b(the)g(shell)g(v)-5 +b(ariable)31 b Ft(CDPATH)e Fu(exists,)630 1435 y(it)44 +b(is)f(used)g(as)h(a)f(searc)m(h)h(path:)67 b(eac)m(h)45 +b(directory)f(name)f(in)g Ft(CDPATH)f Fu(is)h(searc)m(hed)h(for)630 +1544 y Fr(directory)p Fu(,)k(with)c(alternativ)m(e)i(directory)f(names) +e(in)h Ft(CDPATH)e Fu(separated)j(b)m(y)f(a)g(colon)630 +1654 y(\(`)p Ft(:)p Fu('\).)e(If)30 b Fr(directory)38 +b Fu(b)s(egins)30 b(with)g(a)h(slash,)f Ft(CDPATH)f Fu(is)h(not)h +(used.)630 1788 y(The)g Ft(-P)h Fu(option)g(means)g(to)h(not)f(follo)m +(w)h(sym)m(b)s(olic)g(links:)44 b(sym)m(b)s(olic)32 b(links)g(are)g +(resolv)m(ed)630 1898 y(while)41 b Ft(cd)f Fu(is)h(tra)m(v)m(ersing)h Fr(directory)49 b Fu(and)40 b(b)s(efore)g(pro)s(cessing)h(an)f -(instance)i(of)f(`)p Ft(..)p Fu(')f(in)630 2082 y Fr(directory)p -Fu(.)630 2212 y(By)34 b(default,)h(or)e(when)g(the)g +(instance)i(of)f(`)p Ft(..)p Fu(')f(in)630 2007 y Fr(directory)p +Fu(.)630 2142 y(By)34 b(default,)h(or)e(when)g(the)g Ft(-L)g Fu(option)h(is)g(supplied,)f(sym)m(b)s(olic)h(links)f(in)h -Fr(directory)42 b Fu(are)630 2321 y(resolv)m(ed)31 b(after)g +Fr(directory)42 b Fu(are)630 2252 y(resolv)m(ed)31 b(after)g Ft(cd)f Fu(pro)s(cesses)g(an)g(instance)h(of)g(`)p Ft(..)p -Fu(')f(in)g Fr(directory)p Fu(.)630 2451 y(If)35 b(`)p +Fu(')f(in)g Fr(directory)p Fu(.)630 2386 y(If)35 b(`)p Ft(..)p Fu(')f(app)s(ears)h(in)f Fr(directory)p Fu(,)j(it)f(is)f(pro)s (cessed)f(b)m(y)h(remo)m(ving)h(the)f(immediately)h(pre-)630 -2560 y(ceding)31 b(pathname)f(comp)s(onen)m(t,)h(bac)m(k)g(to)g(a)g +2496 y(ceding)31 b(pathname)f(comp)s(onen)m(t,)h(bac)m(k)g(to)g(a)g (slash)f(or)h(the)f(b)s(eginning)g(of)g Fr(directory)p -Fu(.)630 2690 y(If)i(the)i Ft(-e)e Fu(option)h(is)g(supplied)f(with)g +Fu(.)630 2630 y(If)i(the)i Ft(-e)e Fu(option)h(is)g(supplied)f(with)g Ft(-P)h Fu(and)f(the)h(curren)m(t)g(w)m(orking)g(directory)g(cannot)630 -2800 y(b)s(e)k(successfully)g(determined)g(after)i(a)e(successful)h +2740 y(b)s(e)k(successfully)g(determined)g(after)i(a)e(successful)h (directory)g(c)m(hange,)i Ft(cd)d Fu(will)h(return)630 -2909 y(an)30 b(unsuccessful)f(status.)630 3039 y(On)41 +2849 y(an)30 b(unsuccessful)f(status.)630 2984 y(On)41 b(systems)h(that)h(supp)s(ort)d(it,)46 b(the)c Ft(-@)g Fu(option)g(presen)m(ts)g(the)g(extended)g(attributes)630 -3148 y(asso)s(ciated)32 b(with)e(a)h(\014le)f(as)h(a)f(directory)-8 -b(.)630 3278 y(If)41 b Fr(directory)49 b Fu(is)41 b(`)p +3093 y(asso)s(ciated)32 b(with)e(a)h(\014le)f(as)h(a)f(directory)-8 +b(.)630 3228 y(If)41 b Fr(directory)49 b Fu(is)41 b(`)p Ft(-)p Fu(',)j(it)e(is)f(con)m(v)m(erted)h(to)g Ft($OLDPWD)d -Fu(b)s(efore)i(the)g(directory)h(c)m(hange)g(is)630 3387 -y(attempted.)630 3517 y(If)33 b(a)h(non-empt)m(y)g(directory)g(name)f +Fu(b)s(efore)i(the)g(directory)h(c)m(hange)g(is)630 3337 +y(attempted.)630 3472 y(If)33 b(a)h(non-empt)m(y)g(directory)g(name)f (from)g Ft(CDPATH)f Fu(is)h(used,)h(or)g(if)f(`)p Ft(-)p -Fu(')h(is)f(the)h(\014rst)f(argu-)630 3626 y(men)m(t,)28 +Fu(')h(is)f(the)h(\014rst)f(argu-)630 3582 y(men)m(t,)28 b(and)e(the)h(directory)g(c)m(hange)h(is)f(successful,)h(the)f -(absolute)g(pathname)g(of)f(the)h(new)630 3736 y(w)m(orking)k +(absolute)g(pathname)g(of)f(the)h(new)630 3691 y(w)m(orking)k (directory)g(is)f(written)g(to)i(the)e(standard)g(output.)630 -3866 y(The)f(return)g(status)h(is)f(zero)i(if)e(the)h(directory)g(is)g -(successfully)g(c)m(hanged,)g(non-zero)g(oth-)630 3975 -y(erwise.)150 4125 y Ft(continue)870 4254 y(continue)46 -b([)p Fj(n)p Ft(])630 4384 y Fu(Resume)32 b(the)g(next)g(iteration)i +3826 y(If)i(the)i(directory)f(c)m(hange)h(is)f(successful,)h +Ft(cd)e Fu(sets)h(the)h(v)-5 b(alue)33 b(of)g(the)g Ft(PWD)f +Fu(en)m(vironmen)m(t)630 3935 y(v)-5 b(ariable)32 b(to)g(the)f(new)g +(directory)g(name,)h(and)e(sets)i(the)f Ft(OLDPWD)e Fu(en)m(vironmen)m +(t)j(v)-5 b(ariable)630 4045 y(to)31 b(the)g(v)-5 b(alue)31 +b(of)f(the)h(curren)m(t)f(w)m(orking)g(directory)h(b)s(efore)f(the)h(c) +m(hange.)630 4179 y(The)e(return)g(status)h(is)f(zero)i(if)e(the)h +(directory)g(is)g(successfully)g(c)m(hanged,)g(non-zero)g(oth-)630 +4289 y(erwise.)150 4448 y Ft(continue)870 4583 y(continue)46 +b([)p Fj(n)p Ft(])630 4717 y Fu(Resume)32 b(the)g(next)g(iteration)i (of)e(an)g(enclosing)h Ft(for)p Fu(,)f Ft(while)p Fu(,)f -Ft(until)p Fu(,)g(or)h Ft(select)f Fu(lo)s(op.)630 4493 +Ft(until)p Fu(,)g(or)h Ft(select)f Fu(lo)s(op.)630 4827 y(If)f Fr(n)h Fu(is)g(supplied,)e(the)j(execution)g(of)f(the)g Fr(n)p Fu(th)f(enclosing)i(lo)s(op)f(is)f(resumed.)42 -b Fr(n)30 b Fu(m)m(ust)h(b)s(e)630 4603 y(greater)39 +b Fr(n)30 b Fu(m)m(ust)h(b)s(e)630 4936 y(greater)39 b(than)f(or)g(equal)g(to)h(1.)63 b(The)38 b(return)e(status)j(is)e -(zero)i(unless)e Fr(n)h Fu(is)g(not)g(greater)630 4712 -y(than)30 b(or)g(equal)h(to)g(1.)150 4862 y Ft(eval)870 -4991 y(eval)47 b([)p Fj(arguments)p Ft(])630 5121 y Fu(The)25 +(zero)i(unless)e Fr(n)h Fu(is)g(not)g(greater)630 5046 +y(than)30 b(or)g(equal)h(to)g(1.)150 5205 y Ft(eval)870 +5340 y(eval)47 b([)p Fj(arguments)p Ft(])p eop end +%%Page: 50 56 +TeXDict begin 50 55 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(50)630 299 y(The)25 b(argumen)m(ts)h(are)g(concatenated)i(together)f(in)m(to)f(a)g(single)h -(command,)f(whic)m(h)g(is)f(then)630 5230 y(read)35 b(and)g(executed,)j +(command,)f(whic)m(h)g(is)f(then)630 408 y(read)35 b(and)g(executed,)j (and)d(its)h(exit)g(status)g(returned)e(as)h(the)h(exit)g(status)g(of)g -Ft(eval)p Fu(.)54 b(If)630 5340 y(there)31 b(are)f(no)h(argumen)m(ts)f +Ft(eval)p Fu(.)54 b(If)630 518 y(there)31 b(are)f(no)h(argumen)m(ts)f (or)h(only)f(empt)m(y)h(argumen)m(ts,)g(the)f(return)g(status)g(is)h -(zero.)p eop end -%%Page: 46 52 -TeXDict begin 46 51 bop 150 -116 a Fu(Chapter)30 b(4:)h(Shell)f -(Builtin)h(Commands)2079 b(46)150 299 y Ft(exec)870 430 -y(exec)47 b([-cl])f([-a)h Fj(name)p Ft(])f([)p Fj(command)g -Ft([)p Fj(arguments)p Ft(]])630 562 y Fu(If)36 b Fr(command)k -Fu(is)c(supplied,)h(it)g(replaces)h(the)e(shell)h(without)f(creating)i -(a)f(new)f(pro)s(cess.)630 671 y(If)k(the)h Ft(-l)e Fu(option)i(is)g -(supplied,)h(the)e(shell)h(places)g(a)g(dash)f(at)h(the)f(b)s(eginning) -g(of)h(the)630 781 y(zeroth)36 b(argumen)m(t)h(passed)e(to)h -Fr(command)p Fu(.)57 b(This)35 b(is)h(what)f(the)h Ft(login)e -Fu(program)i(do)s(es.)630 891 y(The)i Ft(-c)g Fu(option)g(causes)h -Fr(command)j Fu(to)d(b)s(e)f(executed)h(with)f(an)g(empt)m(y)h(en)m -(vironmen)m(t.)630 1000 y(If)c Ft(-a)g Fu(is)h(supplied,)f(the)h(shell) -g(passes)f Fr(name)41 b Fu(as)36 b(the)f(zeroth)i(argumen)m(t)f(to)g -Fr(command)p Fu(.)630 1110 y(If)c Fr(command)j Fu(cannot)e(b)s(e)f +(zero.)150 679 y Ft(exec)870 815 y(exec)47 b([-cl])f([-a)h +Fj(name)p Ft(])f([)p Fj(command)g Ft([)p Fj(arguments)p +Ft(]])630 950 y Fu(If)36 b Fr(command)k Fu(is)c(supplied,)h(it)g +(replaces)h(the)e(shell)h(without)f(creating)i(a)f(new)f(pro)s(cess.) +630 1060 y(If)k(the)h Ft(-l)e Fu(option)i(is)g(supplied,)h(the)e(shell) +h(places)g(a)g(dash)f(at)h(the)f(b)s(eginning)g(of)h(the)630 +1169 y(zeroth)36 b(argumen)m(t)h(passed)e(to)h Fr(command)p +Fu(.)57 b(This)35 b(is)h(what)f(the)h Ft(login)e Fu(program)i(do)s(es.) +630 1279 y(The)i Ft(-c)g Fu(option)g(causes)h Fr(command)j +Fu(to)d(b)s(e)f(executed)h(with)f(an)g(empt)m(y)h(en)m(vironmen)m(t.) +630 1388 y(If)c Ft(-a)g Fu(is)h(supplied,)f(the)h(shell)g(passes)f +Fr(name)41 b Fu(as)36 b(the)f(zeroth)i(argumen)m(t)f(to)g +Fr(command)p Fu(.)630 1498 y(If)c Fr(command)j Fu(cannot)e(b)s(e)f (executed)h(for)f(some)g(reason,)h(a)g(non-in)m(teractiv)m(e)i(shell)d -(exits,)630 1219 y(unless)27 b(the)g Ft(execfail)e Fu(shell)i(option)h +(exits,)630 1608 y(unless)27 b(the)g Ft(execfail)e Fu(shell)i(option)h (is)f(enabled.)40 b(In)27 b(that)g(case,)j(it)d(returns)f(failure.)40 -b(An)630 1329 y(in)m(teractiv)m(e)35 b(shell)d(returns)f(failure)h(if)g +b(An)630 1717 y(in)m(teractiv)m(e)35 b(shell)d(returns)f(failure)h(if)g (the)g(\014le)g(cannot)h(b)s(e)e(executed.)47 b(A)32 -b(subshell)f(exits)630 1439 y(unconditionally)j(if)g +b(subshell)f(exits)630 1827 y(unconditionally)j(if)g Ft(exec)f Fu(fails.)52 b(If)33 b(no)h Fr(command)j Fu(is)d(sp)s -(eci\014ed,)h(redirections)f(ma)m(y)h(b)s(e)630 1548 +(eci\014ed,)h(redirections)f(ma)m(y)h(b)s(e)630 1936 y(used)30 b(to)i(a\013ect)g(the)f(curren)m(t)g(shell)g(en)m(vironmen)m (t.)43 b(If)30 b(there)i(are)f(no)g(redirection)g(errors,)630 -1658 y(the)g(return)e(status)i(is)f(zero;)h(otherwise)g(the)g(return)e -(status)i(is)f(non-zero.)150 1811 y Ft(exit)870 1943 -y(exit)47 b([)p Fj(n)p Ft(])630 2074 y Fu(Exit)30 b(the)g(shell,)h +2046 y(the)g(return)e(status)i(is)f(zero;)h(otherwise)g(the)g(return)e +(status)i(is)f(non-zero.)150 2207 y Ft(exit)870 2342 +y(exit)47 b([)p Fj(n)p Ft(])630 2478 y Fu(Exit)30 b(the)g(shell,)h (returning)d(a)j(status)f(of)g Fr(n)f Fu(to)h(the)g(shell's)g(paren)m -(t.)41 b(If)30 b Fr(n)f Fu(is)h(omitted,)h(the)630 2184 +(t.)41 b(If)30 b Fr(n)f Fu(is)h(omitted,)h(the)630 2587 y(exit)c(status)g(is)g(that)g(of)g(the)g(last)g(command)f(executed.)41 b(An)m(y)26 b(trap)h(on)f Ft(EXIT)f Fu(is)i(executed)630 -2293 y(b)s(efore)j(the)h(shell)f(terminates.)150 2447 -y Ft(export)870 2578 y(export)46 b([-fn])g([-p])h([)p -Fj(name)p Ft([=)p Fj(value)p Ft(]])630 2710 y Fu(Mark)40 +2697 y(b)s(efore)j(the)h(shell)f(terminates.)150 2858 +y Ft(export)870 2993 y(export)46 b([-fn])g([-p])h([)p +Fj(name)p Ft([=)p Fj(value)p Ft(]])630 3129 y Fu(Mark)40 b(eac)m(h)h Fr(name)k Fu(to)40 b(b)s(e)f(passed)g(to)i(c)m(hild)f(pro)s (cesses)f(in)g(the)h(en)m(vironmen)m(t.)70 b(If)39 b(the)630 -2819 y Ft(-f)33 b Fu(option)h(is)g(supplied,)f(the)h +3238 y Ft(-f)33 b Fu(option)h(is)g(supplied,)f(the)h Fr(name)5 b Fu(s)33 b(refer)g(to)i(shell)e(functions;)i(otherwise)f -(the)g(names)630 2929 y(refer)c(to)h(shell)g(v)-5 b(ariables.)41 +(the)g(names)630 3348 y(refer)c(to)h(shell)g(v)-5 b(ariables.)41 b(The)30 b Ft(-n)f Fu(option)i(means)f(to)h(no)f(longer)h(mark)f(eac)m -(h)i Fr(name)j Fu(for)630 3039 y(exp)s(ort.)52 b(If)33 -b(no)h Fr(names)k Fu(are)c(supplied,)g(or)g(if)g(the)g -Ft(-p)g Fu(option)g(is)g(giv)m(en,)j(a)d(list)h(of)f(names)630 -3148 y(of)d(all)h(exp)s(orted)e(v)-5 b(ariables)31 b(is)g(displa)m(y)m +(h)i Fr(name)j Fu(for)630 3458 y(exp)s(ort.)51 b(If)34 +b(no)g Fr(name)5 b Fu(s)34 b(are)g(supplied,)g(or)g(if)g(the)g +Ft(-p)f Fu(option)i(is)f(giv)m(en,)i(a)e(list)h(of)f(names)630 +3567 y(of)d(all)h(exp)s(orted)e(v)-5 b(ariables)31 b(is)g(displa)m(y)m (ed.)43 b(The)30 b Ft(-p)g Fu(option)i(displa)m(ys)e(output)h(in)f(a)h -(form)630 3258 y(that)25 b(ma)m(y)g(b)s(e)f(reused)g(as)h(input.)38 +(form)630 3677 y(that)25 b(ma)m(y)g(b)s(e)f(reused)g(as)h(input.)38 b(If)24 b(a)h(v)-5 b(ariable)25 b(name)g(is)g(follo)m(w)m(ed)h(b)m(y)e (=)p Fr(v)-5 b(alue)p Fu(,)27 b(the)d(v)-5 b(alue)630 -3367 y(of)31 b(the)f(v)-5 b(ariable)31 b(is)g(set)g(to)g -Fr(v)-5 b(alue)p Fu(.)630 3499 y(The)29 b(return)e(status)j(is)f(zero)h +3786 y(of)31 b(the)f(v)-5 b(ariable)31 b(is)g(set)g(to)g +Fr(v)-5 b(alue)p Fu(.)630 3922 y(The)29 b(return)e(status)j(is)f(zero)h (unless)e(an)h(in)m(v)-5 b(alid)29 b(option)h(is)f(supplied,)f(one)i -(of)f(the)g(names)630 3608 y(is)k(not)g(a)h(v)-5 b(alid)33 +(of)f(the)g(names)630 4031 y(is)k(not)g(a)h(v)-5 b(alid)33 b(shell)h(v)-5 b(ariable)33 b(name,)i(or)e Ft(-f)f Fu(is)h(supplied)f -(with)h(a)g(name)g(that)h(is)f(not)h(a)630 3718 y(shell)d(function.)150 -3871 y Ft(getopts)870 4003 y(getopts)46 b Fj(optstring)f(name)i -Ft([)p Fj(arg)f Ft(...])630 4134 y(getopts)28 b Fu(is)i(used)g(b)m(y)g +(with)h(a)g(name)g(that)h(is)f(not)h(a)630 4141 y(shell)d(function.)150 +4302 y Ft(getopts)870 4437 y(getopts)46 b Fj(optstring)f(name)i +Ft([)p Fj(arg)f Ft(...])630 4573 y(getopts)28 b Fu(is)i(used)g(b)m(y)g (shell)g(scripts)g(to)g(parse)g(p)s(ositional)h(parameters.)41 -b Fr(optstring)d Fu(con-)630 4244 y(tains)k(the)g(option)f(c)m +b Fr(optstring)d Fu(con-)630 4682 y(tains)k(the)g(option)f(c)m (haracters)i(to)g(b)s(e)d(recognized;)49 b(if)42 b(a)f(c)m(haracter)j -(is)d(follo)m(w)m(ed)i(b)m(y)f(a)630 4354 y(colon,)33 +(is)d(follo)m(w)m(ed)i(b)m(y)f(a)630 4792 y(colon,)33 b(the)f(option)g(is)g(exp)s(ected)g(to)h(ha)m(v)m(e)g(an)e(argumen)m -(t,)i(whic)m(h)f(should)e(b)s(e)h(separated)630 4463 +(t,)i(whic)m(h)f(should)e(b)s(e)h(separated)630 4902 y(from)40 b(it)g(b)m(y)g(whitespace.)70 b(The)40 b(colon)h(\(`)p Ft(:)p Fu('\))g(and)e(question)h(mark)g(\(`)p Ft(?)p -Fu('\))h(ma)m(y)f(not)h(b)s(e)630 4573 y(used)d(as)g(option)h(c)m +Fu('\))h(ma)m(y)f(not)h(b)s(e)630 5011 y(used)d(as)g(option)h(c)m (haracters.)67 b(Eac)m(h)39 b(time)g(it)g(is)f(in)m(v)m(ok)m(ed,)k -Ft(getopts)37 b Fu(places)i(the)g(next)630 4682 y(option)29 +Ft(getopts)37 b Fu(places)i(the)g(next)630 5121 y(option)29 b(in)f(the)h(shell)g(v)-5 b(ariable)30 b Fr(name)p Fu(,)f(initializing) i Fr(name)j Fu(if)28 b(it)h(do)s(es)g(not)g(exist,)h(and)e(the)630 -4792 y(index)33 b(of)g(the)h(next)f(argumen)m(t)h(to)g(b)s(e)e(pro)s +5230 y(index)33 b(of)g(the)h(next)f(argumen)m(t)h(to)g(b)s(e)e(pro)s (cessed)h(in)m(to)h(the)g(v)-5 b(ariable)34 b Ft(OPTIND)p -Fu(.)48 b Ft(OPTIND)630 4902 y Fu(is)41 b(initialized)i(to)f(1)f(eac)m +Fu(.)48 b Ft(OPTIND)630 5340 y Fu(is)41 b(initialized)i(to)f(1)f(eac)m (h)h(time)g(the)f(shell)g(or)g(a)g(shell)g(script)g(is)g(in)m(v)m(ok)m -(ed.)74 b(When)41 b(an)630 5011 y(option)36 b(requires)e(an)h(argumen)m -(t,)i Ft(getopts)c Fu(places)j(that)g(argumen)m(t)g(in)m(to)g(the)f(v) --5 b(ariable)630 5121 y Ft(OPTARG)p Fu(.)55 b(The)35 -b(shell)g(do)s(es)h(not)g(reset)g Ft(OPTIND)e Fu(automatically;)41 -b(it)36 b(m)m(ust)f(b)s(e)g(man)m(ually)630 5230 y(reset)i(b)s(et)m(w)m -(een)g(m)m(ultiple)h(calls)f(to)g Ft(getopts)e Fu(within)h(the)h(same)g -(shell)f(in)m(v)m(o)s(cation)j(if)e(a)630 5340 y(new)30 -b(set)h(of)f(parameters)h(is)f(to)i(b)s(e)d(used.)p eop -end -%%Page: 47 53 -TeXDict begin 47 52 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y(When)41 -b(the)h(end)e(of)i(options)g(is)f(encoun)m(tered,)k Ft(getopts)39 -b Fu(exits)j(with)f(a)h(return)e(v)-5 b(alue)630 408 -y(greater)32 b(than)e(zero.)41 b Ft(OPTIND)29 b Fu(is)h(set)h(to)g(the) -g(index)f(of)g(the)h(\014rst)f(non-option)g(argumen)m(t,)630 -518 y(and)g Fr(name)35 b Fu(is)c(set)g(to)g(`)p Ft(?)p -Fu('.)630 655 y Ft(getopts)c Fu(normally)j(parses)e(the)i(p)s +(ed.)74 b(When)41 b(an)p eop end +%%Page: 51 57 +TeXDict begin 51 56 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(51)630 299 y(option)36 +b(requires)e(an)h(argumen)m(t,)i Ft(getopts)c Fu(places)j(that)g +(argumen)m(t)g(in)m(to)g(the)f(v)-5 b(ariable)630 408 +y Ft(OPTARG)p Fu(.)55 b(The)35 b(shell)g(do)s(es)h(not)g(reset)g +Ft(OPTIND)e Fu(automatically;)41 b(it)36 b(m)m(ust)f(b)s(e)g(man)m +(ually)630 518 y(reset)i(b)s(et)m(w)m(een)g(m)m(ultiple)h(calls)f(to)g +Ft(getopts)e Fu(within)h(the)h(same)g(shell)f(in)m(v)m(o)s(cation)j(if) +e(a)630 628 y(new)30 b(set)h(of)f(parameters)h(is)f(to)i(b)s(e)d(used.) +630 771 y(When)41 b(the)h(end)e(of)i(options)g(is)f(encoun)m(tered,)k +Ft(getopts)39 b Fu(exits)j(with)f(a)h(return)e(v)-5 b(alue)630 +881 y(greater)32 b(than)e(zero.)41 b Ft(OPTIND)29 b Fu(is)h(set)h(to)g +(the)g(index)f(of)g(the)h(\014rst)f(non-option)g(argumen)m(t,)630 +990 y(and)g Fr(name)35 b Fu(is)c(set)g(to)g(`)p Ft(?)p +Fu('.)630 1133 y Ft(getopts)c Fu(normally)j(parses)e(the)i(p)s (ositional)g(parameters,)g(but)e(if)i(more)f(argumen)m(ts)h(are)630 -765 y(supplied)f(as)i Fr(arg)38 b Fu(v)-5 b(alues,)31 -b Ft(getopts)e Fu(parses)h(those)h(instead.)630 902 y -Ft(getopts)h Fu(can)h(rep)s(ort)g(errors)g(in)h(t)m(w)m(o)h(w)m(a)m +1243 y(supplied)f(as)i Fr(arg)38 b Fu(v)-5 b(alues,)31 +b Ft(getopts)e Fu(parses)h(those)h(instead.)630 1386 +y Ft(getopts)h Fu(can)h(rep)s(ort)g(errors)g(in)h(t)m(w)m(o)h(w)m(a)m (ys.)51 b(If)33 b(the)h(\014rst)e(c)m(haracter)k(of)d -Fr(optstring)42 b Fu(is)34 b(a)630 1011 y(colon,)g Fr(silen)m(t)h +Fr(optstring)42 b Fu(is)34 b(a)630 1496 y(colon,)g Fr(silen)m(t)h Fu(error)d(rep)s(orting)f(is)i(used.)45 b(In)31 b(normal)h(op)s -(eration,)h(diagnostic)h(messages)630 1121 y(are)c(prin)m(ted)e(when)g +(eration,)h(diagnostic)h(messages)630 1606 y(are)c(prin)m(ted)e(when)g (in)m(v)-5 b(alid)30 b(options)g(or)f(missing)g(option)g(argumen)m(ts)h -(are)f(encoun)m(tered.)630 1230 y(If)34 b(the)g(v)-5 +(are)f(encoun)m(tered.)630 1715 y(If)34 b(the)g(v)-5 b(ariable)35 b Ft(OPTERR)d Fu(is)i(set)h(to)f(0,)i(no)e(error)g (messages)h(will)f(b)s(e)f(displa)m(y)m(ed,)j(ev)m(en)f(if)630 -1340 y(the)c(\014rst)e(c)m(haracter)j(of)f Ft(optstring)d -Fu(is)i(not)h(a)f(colon.)630 1477 y(If)39 b(an)h(in)m(v)-5 +1825 y(the)c(\014rst)e(c)m(haracter)j(of)f Ft(optstring)d +Fu(is)i(not)h(a)f(colon.)630 1968 y(If)39 b(an)h(in)m(v)-5 b(alid)41 b(option)f(is)g(seen,)i Ft(getopts)c Fu(places)j(`)p Ft(?)p Fu(')f(in)m(to)h Fr(name)k Fu(and,)d(if)e(not)g(silen)m(t,)630 -1587 y(prin)m(ts)f(an)h(error)f(message)h(and)f(unsets)g +2078 y(prin)m(ts)f(an)h(error)f(message)h(and)f(unsets)g Ft(OPTARG)p Fu(.)67 b(If)39 b Ft(getopts)f Fu(is)i(silen)m(t,)j(the)c -(option)630 1696 y(c)m(haracter)32 b(found)d(is)h(placed)h(in)f +(option)630 2187 y(c)m(haracter)32 b(found)d(is)h(placed)h(in)f Ft(OPTARG)f Fu(and)h(no)g(diagnostic)i(message)f(is)g(prin)m(ted.)630 -1833 y(If)c(a)g(required)f(argumen)m(t)i(is)f(not)g(found,)g(and)f +2330 y(If)c(a)g(required)f(argumen)m(t)i(is)f(not)g(found,)g(and)f Ft(getopts)f Fu(is)i(not)h(silen)m(t,)h(a)e(question)g(mark)630 -1943 y(\(`)p Ft(?)p Fu('\))h(is)g(placed)g(in)f Fr(name)p +2440 y(\(`)p Ft(?)p Fu('\))h(is)g(placed)g(in)f Fr(name)p Fu(,)h Ft(OPTARG)e Fu(is)h(unset,)h(and)f(a)g(diagnostic)i(message)g -(is)e(prin)m(ted.)39 b(If)630 2052 y Ft(getopts)28 b +(is)e(prin)m(ted.)39 b(If)630 2550 y Ft(getopts)28 b Fu(is)h(silen)m(t,)i(then)e(a)h(colon)h(\(`)p Ft(:)p Fu('\))f(is)g(placed)g(in)f Fr(name)35 b Fu(and)29 b -Ft(OPTARG)f Fu(is)h(set)h(to)h(the)630 2162 y(option)g(c)m(haracter)h -(found.)150 2326 y Ft(hash)870 2463 y(hash)47 b([-r])f([-p)h -Fj(filename)p Ft(])e([-dt])i([)p Fj(name)p Ft(])630 2600 +Ft(OPTARG)f Fu(is)h(set)h(to)h(the)630 2659 y(option)g(c)m(haracter)h +(found.)150 2836 y Ft(hash)870 2980 y(hash)47 b([-r])f([-p)h +Fj(filename)p Ft(])e([-dt])i([)p Fj(name)p Ft(])630 3123 y Fu(Eac)m(h)32 b(time)g Ft(hash)e Fu(is)h(in)m(v)m(ok)m(ed,)j(it)d (remem)m(b)s(ers)g(the)g(full)g(pathnames)g(of)h(the)f(commands)630 -2710 y(sp)s(eci\014ed)i(as)i Fr(name)k Fu(argumen)m(ts,)c(so)g(they)f +3232 y(sp)s(eci\014ed)i(as)i Fr(name)k Fu(argumen)m(ts,)c(so)g(they)f (need)g(not)g(b)s(e)f(searc)m(hed)i(for)f(on)g(subsequen)m(t)630 -2819 y(in)m(v)m(o)s(cations.)79 b(The)41 b(commands)h(are)h(found)e(b)m -(y)h(searc)m(hing)i(through)d(the)i(directories)630 2929 +3342 y(in)m(v)m(o)s(cations.)79 b(The)41 b(commands)h(are)h(found)e(b)m +(y)h(searc)m(hing)i(through)d(the)i(directories)630 3452 y(listed)37 b(in)g Ft($PATH)p Fu(.)58 b(An)m(y)37 b(previously-remem)m (b)s(ered)f(pathname)h(is)g(discarded.)59 b(The)37 b -Ft(-p)630 3039 y Fu(option)d(inhibits)f(the)h(path)g(searc)m(h,)h(and)e +Ft(-p)630 3561 y Fu(option)d(inhibits)f(the)h(path)g(searc)m(h,)h(and)e Fr(\014lename)39 b Fu(is)34 b(used)f(as)h(the)f(lo)s(cation)j(of)e -Fr(name)p Fu(.)630 3148 y(The)42 b Ft(-r)g Fu(option)h(causes)f(the)h +Fr(name)p Fu(.)630 3671 y(The)42 b Ft(-r)g Fu(option)h(causes)f(the)h (shell)g(to)g(forget)g(all)h(remem)m(b)s(ered)d(lo)s(cations.)79 -b(The)42 b Ft(-d)630 3258 y Fu(option)31 b(causes)g(the)f(shell)h(to)g +b(The)42 b Ft(-d)630 3780 y Fu(option)31 b(causes)g(the)f(shell)h(to)g (forget)h(the)f(remem)m(b)s(ered)e(lo)s(cation)j(of)f(eac)m(h)h -Fr(name)p Fu(.)41 b(If)30 b(the)630 3367 y Ft(-t)39 b +Fr(name)p Fu(.)41 b(If)30 b(the)630 3890 y Ft(-t)39 b Fu(option)h(is)g(supplied,)g(the)g(full)f(pathname)h(to)g(whic)m(h)f -(eac)m(h)i Fr(name)k Fu(corresp)s(onds)38 b(is)630 3477 +(eac)m(h)i Fr(name)k Fu(corresp)s(onds)38 b(is)630 4000 y(prin)m(ted.)i(If)28 b(m)m(ultiple)h Fr(name)34 b Fu(argumen)m(ts)29 b(are)g(supplied)f(with)g Ft(-t)p Fu(,)h(the)g Fr(name)34 -b Fu(is)28 b(prin)m(ted)630 3587 y(b)s(efore)h(the)i(hashed)e(full)g +b Fu(is)28 b(prin)m(ted)630 4109 y(b)s(efore)h(the)i(hashed)e(full)g (pathname.)41 b(The)29 b Ft(-l)g Fu(option)i(causes)f(output)f(to)i(b)s -(e)e(displa)m(y)m(ed)630 3696 y(in)23 b(a)h(format)g(that)g(ma)m(y)g(b) +(e)e(displa)m(y)m(ed)630 4219 y(in)23 b(a)h(format)g(that)g(ma)m(y)g(b) s(e)f(reused)f(as)i(input.)37 b(If)23 b(no)h(argumen)m(ts)f(are)h(giv)m -(en,)i(or)e(if)f(only)h Ft(-l)630 3806 y Fu(is)35 b(supplied,)f +(en,)i(or)e(if)f(only)h Ft(-l)630 4328 y Fu(is)35 b(supplied,)f (information)h(ab)s(out)g(remem)m(b)s(ered)f(commands)g(is)h(prin)m -(ted.)53 b(The)34 b(return)630 3915 y(status)d(is)f(zero)h(unless)f(a)h +(ted.)53 b(The)34 b(return)630 4438 y(status)d(is)f(zero)h(unless)f(a)h Fr(name)k Fu(is)c(not)f(found)f(or)i(an)f(in)m(v)-5 b(alid)31 -b(option)g(is)f(supplied.)150 4080 y Ft(pwd)870 4217 -y(pwd)47 b([-LP])630 4354 y Fu(Prin)m(t)29 b(the)g(absolute)h(pathname) +b(option)g(is)f(supplied.)150 4615 y Ft(pwd)870 4758 +y(pwd)47 b([-LP])630 4902 y Fu(Prin)m(t)29 b(the)g(absolute)h(pathname) e(of)h(the)h(curren)m(t)e(w)m(orking)h(directory)-8 b(.)42 -b(If)28 b(the)h Ft(-P)f Fu(option)630 4463 y(is)39 b(supplied,)h(the)f +b(If)28 b(the)h Ft(-P)f Fu(option)630 5011 y(is)39 b(supplied,)h(the)f (pathname)g(prin)m(ted)g(will)g(not)h(con)m(tain)g(sym)m(b)s(olic)f -(links.)67 b(If)38 b(the)i Ft(-L)630 4573 y Fu(option)k(is)g(supplied,) +(links.)67 b(If)38 b(the)i Ft(-L)630 5121 y Fu(option)k(is)g(supplied,) i(the)e(pathname)f(prin)m(ted)h(ma)m(y)g(con)m(tain)h(sym)m(b)s(olic)f -(links.)80 b(The)630 4682 y(return)26 b(status)h(is)h(zero)g(unless)e +(links.)80 b(The)630 5230 y(return)26 b(status)h(is)h(zero)g(unless)e (an)h(error)g(is)g(encoun)m(tered)g(while)h(determining)f(the)g(name) -630 4792 y(of)k(the)f(curren)m(t)g(directory)h(or)f(an)h(in)m(v)-5 -b(alid)31 b(option)g(is)f(supplied.)150 4956 y Ft(readonly)870 -5093 y(readonly)46 b([-aAf])g([-p])g([)p Fj(name)p Ft([=)p -Fj(value)p Ft(]])e(...)630 5230 y Fu(Mark)33 b(eac)m(h)h +630 5340 y(of)k(the)f(curren)m(t)g(directory)h(or)f(an)h(in)m(v)-5 +b(alid)31 b(option)g(is)f(supplied.)p eop end +%%Page: 52 58 +TeXDict begin 52 57 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(52)150 299 y Ft(readonly)870 +432 y(readonly)46 b([-aAf])g([-p])g([)p Fj(name)p Ft([=)p +Fj(value)p Ft(]])e(...)630 565 y Fu(Mark)33 b(eac)m(h)h Fr(name)39 b Fu(as)33 b(readonly)-8 b(.)49 b(The)32 b(v)-5 b(alues)34 b(of)f(these)g(names)g(ma)m(y)h(not)f(b)s(e)f(c)m(hanged)630 -5340 y(b)m(y)38 b(subsequen)m(t)g(assignmen)m(t.)65 b(If)38 +675 y(b)m(y)38 b(subsequen)m(t)g(assignmen)m(t.)65 b(If)38 b(the)h Ft(-f)f Fu(option)g(is)h(supplied,)g(eac)m(h)h -Fr(name)j Fu(refers)38 b(to)p eop end -%%Page: 48 54 -TeXDict begin 48 53 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(48)630 299 y(a)37 -b(shell)g(function.)59 b(The)36 b Ft(-a)g Fu(option)h(means)f(eac)m(h)i -Fr(name)k Fu(refers)36 b(to)h(an)f(indexed)g(arra)m(y)630 -408 y(v)-5 b(ariable;)28 b(the)f Ft(-A)e Fu(option)h(means)g(eac)m(h)h +Fr(name)j Fu(refers)38 b(to)630 784 y(a)f(shell)g(function.)59 +b(The)36 b Ft(-a)g Fu(option)h(means)f(eac)m(h)i Fr(name)k +Fu(refers)36 b(to)h(an)f(indexed)g(arra)m(y)630 894 y(v)-5 +b(ariable;)28 b(the)f Ft(-A)e Fu(option)h(means)g(eac)m(h)h Fr(name)k Fu(refers)26 b(to)g(an)g(asso)s(ciativ)m(e)i(arra)m(y)f(v)-5 -b(ariable.)630 518 y(If)35 b(b)s(oth)g(options)h(are)h(supplied,)f +b(ariable.)630 1003 y(If)35 b(b)s(oth)g(options)h(are)h(supplied,)f Ft(-A)f Fu(tak)m(es)i(precedence.)58 b(If)35 b(no)h Fr(name)k -Fu(argumen)m(ts)d(are)630 628 y(giv)m(en,)k(or)c(if)h(the)g +Fu(argumen)m(ts)d(are)630 1113 y(giv)m(en,)k(or)c(if)h(the)g Ft(-p)f Fu(option)h(is)f(supplied,)i(a)f(list)g(of)g(all)g(readonly)g -(names)f(is)h(prin)m(ted.)630 737 y(The)32 b(other)g(options)g(ma)m(y)h -(b)s(e)f(used)f(to)i(restrict)g(the)f(output)g(to)h(a)f(subset)g(of)g -(the)g(set)h(of)630 847 y(readonly)c(names.)41 b(The)28 +(names)f(is)h(prin)m(ted.)630 1223 y(The)32 b(other)g(options)g(ma)m(y) +h(b)s(e)f(used)f(to)i(restrict)g(the)f(output)g(to)h(a)f(subset)g(of)g +(the)g(set)h(of)630 1332 y(readonly)c(names.)41 b(The)28 b Ft(-p)h Fu(option)h(causes)g(output)e(to)j(b)s(e)d(displa)m(y)m(ed)i -(in)f(a)h(format)f(that)630 956 y(ma)m(y)j(b)s(e)e(reused)g(as)i +(in)f(a)h(format)f(that)630 1442 y(ma)m(y)j(b)s(e)e(reused)g(as)i (input.)42 b(If)30 b(a)i(v)-5 b(ariable)31 b(name)h(is)f(follo)m(w)m (ed)h(b)m(y)f(=)p Fr(v)-5 b(alue)p Fu(,)32 b(the)f(v)-5 -b(alue)32 b(of)630 1066 y(the)i(v)-5 b(ariable)34 b(is)f(set)i(to)f +b(alue)32 b(of)630 1551 y(the)i(v)-5 b(ariable)34 b(is)f(set)i(to)f Fr(v)-5 b(alue)p Fu(.)50 b(The)33 b(return)g(status)g(is)h(zero)g -(unless)f(an)g(in)m(v)-5 b(alid)34 b(option)630 1176 +(unless)f(an)g(in)m(v)-5 b(alid)34 b(option)630 1661 y(is)c(supplied,)f(one)h(of)g(the)g Fr(name)35 b Fu(argumen)m(ts)30 b(is)g(not)g(a)g(v)-5 b(alid)31 b(shell)f(v)-5 b(ariable)30 -b(or)g(function)630 1285 y(name,)h(or)f(the)h Ft(-f)e +b(or)g(function)630 1771 y(name,)h(or)f(the)h Ft(-f)e Fu(option)i(is)g(supplied)e(with)h(a)h(name)f(that)h(is)f(not)h(a)g -(shell)f(function.)150 1462 y Ft(return)870 1606 y(return)46 -b([)p Fj(n)p Ft(])630 1749 y Fu(Cause)37 b(a)g(shell)h(function)f(to)g +(shell)f(function.)150 1927 y Ft(return)870 2060 y(return)46 +b([)p Fj(n)p Ft(])630 2193 y Fu(Cause)37 b(a)g(shell)h(function)f(to)g (stop)h(executing)g(and)e(return)h(the)g(v)-5 b(alue)37 -b Fr(n)g Fu(to)h(its)f(caller.)630 1858 y(If)h Fr(n)h +b Fr(n)g Fu(to)h(its)f(caller.)630 2303 y(If)h Fr(n)h Fu(is)g(not)g(supplied,)h(the)f(return)e(v)-5 b(alue)40 b(is)f(the)g(exit)g(status)g(of)g(the)g(last)h(command)630 -1968 y(executed)i(in)f(the)g(function.)72 b(If)41 b Ft(return)e +2412 y(executed)i(in)f(the)g(function.)72 b(If)41 b Ft(return)e Fu(is)i(executed)h(b)m(y)f(a)h(trap)f(handler,)i(the)e(last)630 -2078 y(command)d(used)f(to)i(determine)f(the)g(status)g(is)h(the)f -(last)h(command)e(executed)i(b)s(efore)630 2187 y(the)27 +2522 y(command)d(used)f(to)i(determine)f(the)g(status)g(is)h(the)f +(last)h(command)e(executed)i(b)s(efore)630 2632 y(the)27 b(trap)g(handler.)39 b(If)26 b Ft(return)g Fu(is)h(executed)h(during)d -(a)j Ft(DEBUG)d Fu(trap,)j(the)f(last)h(command)630 2297 +(a)j Ft(DEBUG)d Fu(trap,)j(the)f(last)h(command)630 2741 y(used)f(to)h(determine)g(the)f(status)h(is)g(the)f(last)i(command)e -(executed)h(b)m(y)g(the)f(trap)h(handler)630 2406 y(b)s(efore)e +(executed)h(b)m(y)g(the)f(trap)h(handler)630 2851 y(b)s(efore)e Ft(return)f Fu(w)m(as)i(in)m(v)m(ok)m(ed.)41 b Ft(return)25 b Fu(ma)m(y)i(also)g(b)s(e)f(used)g(to)h(terminate)h(execution)g(of)630 -2516 y(a)34 b(script)g(b)s(eing)g(executed)g(with)g(the)g +2960 y(a)34 b(script)g(b)s(eing)g(executed)g(with)g(the)g Ft(.)g Fu(\()p Ft(source)p Fu(\))f(builtin,)h(returning)f(either)i -Fr(n)e Fu(or)h(the)630 2626 y(exit)j(status)f(of)g(the)g(last)h +Fr(n)e Fu(or)h(the)630 3070 y(exit)j(status)f(of)g(the)g(last)h (command)e(executed)i(within)e(the)h(script)g(as)g(the)g(exit)h(status) -630 2735 y(of)i(the)g(script.)65 b(If)38 b Fr(n)g Fu(is)h(supplied,)h +630 3180 y(of)i(the)g(script.)65 b(If)38 b Fr(n)g Fu(is)h(supplied,)h (the)f(return)e(v)-5 b(alue)39 b(is)g(its)g(least)h(signi\014can)m(t)g -(8)f(bits.)630 2845 y(An)m(y)g(command)f(asso)s(ciated)j(with)d(the)h +(8)f(bits.)630 3289 y(An)m(y)g(command)f(asso)s(ciated)j(with)d(the)h Ft(RETURN)e Fu(trap)i(is)g(executed)g(b)s(efore)g(execution)630 -2954 y(resumes)29 b(after)h(the)g(function)g(or)g(script.)40 +3399 y(resumes)29 b(after)h(the)g(function)g(or)g(script.)40 b(The)29 b(return)g(status)h(is)g(non-zero)g(if)g Ft(return)e -Fu(is)630 3064 y(supplied)h(a)i(non-n)m(umeric)g(argumen)m(t)g(or)f(is) +Fu(is)630 3508 y(supplied)h(a)i(non-n)m(umeric)g(argumen)m(t)g(or)f(is) h(used)f(outside)h(a)g(function)f(and)g(not)h(during)630 -3173 y(the)g(execution)g(of)g(a)f(script)h(b)m(y)f Ft(.)g -Fu(or)g Ft(source)p Fu(.)150 3351 y Ft(shift)870 3494 -y(shift)46 b([)p Fj(n)p Ft(])630 3637 y Fu(Shift)41 b(the)g(p)s +3618 y(the)g(execution)g(of)g(a)f(script)h(b)m(y)f Ft(.)g +Fu(or)g Ft(source)p Fu(.)150 3774 y Ft(shift)870 3907 +y(shift)46 b([)p Fj(n)p Ft(])630 4041 y Fu(Shift)41 b(the)g(p)s (ositional)h(parameters)g(to)g(the)f(left)h(b)m(y)g Fr(n)p -Fu(.)73 b(The)40 b(p)s(ositional)j(parameters)630 3747 +Fu(.)73 b(The)40 b(p)s(ositional)j(parameters)630 4150 y(from)34 b Fr(n)p Ft(+)p Fu(1)39 b(.)22 b(.)h(.)45 b Ft($#)34 b Fu(are)g(renamed)g(to)h Ft($1)k Fu(.)22 b(.)g(.)46 b Ft($#)p Fu(-)p Fr(n)p Fu(.)51 b(P)m(arameters)36 b(represen)m(ted)e -(b)m(y)g(the)630 3856 y(n)m(um)m(b)s(ers)d Ft($#)i Fu(do)m(wn)f(to)i +(b)m(y)g(the)630 4260 y(n)m(um)m(b)s(ers)d Ft($#)i Fu(do)m(wn)f(to)i Ft($#)p Fu(-)p Fr(n)p Ft(+)p Fu(1)e(are)h(unset.)48 b Fr(n)32 b Fu(m)m(ust)h(b)s(e)f(a)h(non-negativ)m(e)i(n)m(um)m(b)s(er)d -(less)630 3966 y(than)g(or)g(equal)h(to)g Ft($#)p Fu(.)46 +(less)630 4369 y(than)g(or)g(equal)h(to)g Ft($#)p Fu(.)46 b(If)31 b Fr(n)h Fu(is)g(zero)h(or)f(greater)i(than)e -Ft($#)p Fu(,)g(the)h(p)s(ositional)g(parameters)630 4075 +Ft($#)p Fu(,)g(the)h(p)s(ositional)g(parameters)630 4479 y(are)e(not)h(c)m(hanged.)43 b(If)31 b Fr(n)g Fu(is)g(not)g(supplied,)f (it)i(is)f(assumed)f(to)i(b)s(e)f(1.)43 b(The)31 b(return)f(status)630 -4185 y(is)g(zero)i(unless)d Fr(n)h Fu(is)g(greater)i(than)e +4589 y(is)g(zero)i(unless)d Fr(n)h Fu(is)g(greater)i(than)e Ft($#)g Fu(or)g(less)h(than)f(zero,)i(non-zero)e(otherwise.)150 -4362 y Ft(test)150 4472 y([)870 4615 y(test)47 b Fj(expr)630 -4758 y Fu(Ev)-5 b(aluate)43 b(a)f(conditional)h(expression)f +4745 y Ft(test)150 4855 y([)870 4988 y(test)47 b Fj(expr)630 +5121 y Fu(Ev)-5 b(aluate)43 b(a)f(conditional)h(expression)f Fr(expr)48 b Fu(and)41 b(return)g(a)h(status)g(of)g(0)g(\(true\))h(or)f -(1)630 4868 y(\(false\).)g(Eac)m(h)31 b(op)s(erator)f(and)f(op)s(erand) +(1)630 5230 y(\(false\).)g(Eac)m(h)31 b(op)s(erator)f(and)f(op)s(erand) g(m)m(ust)h(b)s(e)f(a)i(separate)g(argumen)m(t.)41 b(Expressions)630 -4977 y(are)26 b(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s -(elo)m(w)h(in)g(Section)h(6.4)h([Bash)e(Conditional)630 -5087 y(Expressions],)39 b(page)g(91.)64 b Ft(test)37 -b Fu(do)s(es)g(not)h(accept)i(an)m(y)e(options,)i(nor)e(do)s(es)f(it)h -(accept)630 5197 y(and)30 b(ignore)h(an)f(argumen)m(t)h(of)f -Ft(--)g Fu(as)h(signifying)f(the)h(end)f(of)g(options.)630 -5340 y(When)g(the)h Ft([)f Fu(form)g(is)g(used,)g(the)g(last)i(argumen) -m(t)e(to)i(the)e(command)g(m)m(ust)h(b)s(e)e(a)i Ft(])p -Fu(.)p eop end -%%Page: 49 55 -TeXDict begin 49 54 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(49)630 299 y(Expressions)23 -b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h(follo)m(wing)h(op)s -(erators,)g(listed)f(in)f(decreasing)630 408 y(order)30 -b(of)h(precedence.)43 b(The)30 b(ev)-5 b(aluation)33 -b(dep)s(ends)28 b(on)j(the)g(n)m(um)m(b)s(er)f(of)h(argumen)m(ts;)g -(see)630 518 y(b)s(elo)m(w.)41 b(Op)s(erator)30 b(precedence)h(is)f -(used)g(when)f(there)i(are)f(\014v)m(e)h(or)f(more)h(argumen)m(ts.)630 -673 y Ft(!)f Fj(expr)210 b Fu(T)-8 b(rue)30 b(if)g Fr(expr)37 -b Fu(is)30 b(false.)630 829 y Ft(\()g Fj(expr)f Ft(\))133 -b Fu(Returns)23 b(the)i(v)-5 b(alue)25 b(of)f Fr(expr)p -Fu(.)38 b(This)24 b(ma)m(y)h(b)s(e)e(used)h(to)h(o)m(v)m(erride)g(the)g -(normal)1110 938 y(precedence)31 b(of)f(op)s(erators.)630 -1093 y Fj(expr1)f Ft(-a)h Fj(expr2)1110 1203 y Fu(T)-8 -b(rue)30 b(if)g(b)s(oth)g Fr(expr1)37 b Fu(and)30 b Fr(expr2)38 -b Fu(are)30 b(true.)630 1358 y Fj(expr1)f Ft(-o)h Fj(expr2)1110 -1468 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expr1)38 b -Fu(or)30 b Fr(expr2)37 b Fu(is)31 b(true.)630 1623 y(The)37 -b Ft(test)f Fu(and)g Ft([)h Fu(builtins)g(ev)-5 b(aluate)39 -b(conditional)f(expressions)f(using)g(a)g(set)h(of)f(rules)630 -1733 y(based)30 b(on)g(the)h(n)m(um)m(b)s(er)e(of)h(argumen)m(ts.)630 -1888 y(0)h(argumen)m(ts)1110 1998 y(The)f(expression)g(is)g(false.)630 -2153 y(1)h(argumen)m(t)1110 2262 y(The)f(expression)g(is)g(true)h(if,)f -(and)g(only)g(if,)h(the)g(argumen)m(t)f(is)h(not)f(n)m(ull.)630 -2418 y(2)h(argumen)m(ts)1110 2527 y(If)f(the)h(\014rst)f(argumen)m(t)h -(is)g(`)p Ft(!)p Fu(',)g(the)g(expression)g(is)g(true)f(if)h(and)f -(only)h(if)g(the)1110 2637 y(second)j(argumen)m(t)f(is)h(n)m(ull.)50 -b(If)33 b(the)h(\014rst)e(argumen)m(t)i(is)g(one)g(of)f(the)h(unary) -1110 2746 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f -([Bash)g(Conditional)g(Expres-)1110 2856 y(sions],)34 -b(page)f(91\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e -(test)j(is)f(true.)47 b(If)1110 2966 y(the)33 b(\014rst)g(argumen)m(t)h -(is)f(not)g(a)h(v)-5 b(alid)34 b(unary)e(op)s(erator,)i(the)g -(expression)f(is)1110 3075 y(false.)630 3230 y(3)e(argumen)m(ts)1110 -3340 y(The)f(follo)m(wing)i(conditions)f(are)f(applied)h(in)f(the)g -(order)g(listed.)1159 3472 y(1.)61 b(If)29 b(the)g(second)g(argumen)m -(t)h(is)f(one)h(of)f(the)h(binary)e(conditional)j(op)s(era-)1290 -3582 y(tors)c(\(see)h(Section)g(6.4)g([Bash)g(Conditional)f -(Expressions],)h(page)f(91\),)1290 3692 y(the)d(result)g(of)f(the)h -(expression)g(is)g(the)f(result)h(of)g(the)g(binary)f(test)h(using)1290 -3801 y(the)35 b(\014rst)e(and)h(third)g(argumen)m(ts)h(as)f(op)s -(erands.)52 b(The)34 b(`)p Ft(-a)p Fu(')g(and)g(`)p Ft(-o)p -Fu(')1290 3911 y(op)s(erators)24 b(are)g(considered)g(binary)f(op)s -(erators)h(when)f(there)h(are)h(three)1290 4020 y(argumen)m(ts.)1159 -4153 y(2.)61 b(If)41 b(the)h(\014rst)e(argumen)m(t)i(is)f(`)p +5340 y(are)26 b(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s +(elo)m(w)h(in)g(Section)h(6.4)h([Bash)e(Conditional)p +eop end +%%Page: 53 59 +TeXDict begin 53 58 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y(Expressions],)39 +b(page)g(96.)64 b Ft(test)37 b Fu(do)s(es)g(not)h(accept)i(an)m(y)e +(options,)i(nor)e(do)s(es)f(it)h(accept)630 408 y(and)30 +b(ignore)h(an)f(argumen)m(t)h(of)f Ft(--)g Fu(as)h(signifying)f(the)h +(end)f(of)g(options.)630 550 y(When)g(the)h Ft([)f Fu(form)g(is)g +(used,)g(the)g(last)i(argumen)m(t)e(to)i(the)e(command)g(m)m(ust)h(b)s +(e)e(a)i Ft(])p Fu(.)630 692 y(Expressions)23 b(ma)m(y)h(b)s(e)e(com)m +(bined)i(using)f(the)h(follo)m(wing)h(op)s(erators,)g(listed)f(in)f +(decreasing)630 801 y(order)30 b(of)h(precedence.)43 +b(The)30 b(ev)-5 b(aluation)33 b(dep)s(ends)28 b(on)j(the)g(n)m(um)m(b) +s(er)f(of)h(argumen)m(ts;)g(see)630 911 y(b)s(elo)m(w.)41 +b(Op)s(erator)30 b(precedence)h(is)f(used)g(when)f(there)i(are)f(\014v) +m(e)h(or)f(more)h(argumen)m(ts.)630 1084 y Ft(!)f Fj(expr)210 +b Fu(T)-8 b(rue)30 b(if)g Fr(expr)37 b Fu(is)30 b(false.)630 +1258 y Ft(\()g Fj(expr)f Ft(\))133 b Fu(Returns)23 b(the)i(v)-5 +b(alue)25 b(of)f Fr(expr)p Fu(.)38 b(This)24 b(ma)m(y)h(b)s(e)e(used)h +(to)h(o)m(v)m(erride)g(the)g(normal)1110 1367 y(precedence)31 +b(of)f(op)s(erators.)630 1541 y Fj(expr1)f Ft(-a)h Fj(expr2)1110 +1650 y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g Fr(expr1)37 +b Fu(and)30 b Fr(expr2)38 b Fu(are)30 b(true.)630 1824 +y Fj(expr1)f Ft(-o)h Fj(expr2)1110 1934 y Fu(T)-8 b(rue)30 +b(if)g(either)h Fr(expr1)38 b Fu(or)30 b Fr(expr2)37 +b Fu(is)31 b(true.)630 2107 y(The)37 b Ft(test)f Fu(and)g +Ft([)h Fu(builtins)g(ev)-5 b(aluate)39 b(conditional)f(expressions)f +(using)g(a)g(set)h(of)f(rules)630 2217 y(based)30 b(on)g(the)h(n)m(um)m +(b)s(er)e(of)h(argumen)m(ts.)630 2390 y(0)h(argumen)m(ts)1110 +2500 y(The)f(expression)g(is)g(false.)630 2673 y(1)h(argumen)m(t)1110 +2783 y(The)f(expression)g(is)g(true)h(if,)f(and)g(only)g(if,)h(the)g +(argumen)m(t)f(is)h(not)f(n)m(ull.)630 2956 y(2)h(argumen)m(ts)1110 +3066 y(If)f(the)h(\014rst)f(argumen)m(t)h(is)g(`)p Ft(!)p +Fu(',)g(the)g(expression)g(is)g(true)f(if)h(and)f(only)h(if)g(the)1110 +3176 y(second)j(argumen)m(t)f(is)h(n)m(ull.)50 b(If)33 +b(the)h(\014rst)e(argumen)m(t)i(is)g(one)g(of)f(the)h(unary)1110 +3285 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f([Bash)g +(Conditional)g(Expres-)1110 3395 y(sions],)34 b(page)f(96\),)i(the)e +(expression)f(is)h(true)g(if)g(the)g(unary)e(test)j(is)f(true.)47 +b(If)1110 3504 y(the)33 b(\014rst)g(argumen)m(t)h(is)f(not)g(a)h(v)-5 +b(alid)34 b(unary)e(op)s(erator,)i(the)g(expression)f(is)1110 +3614 y(false.)630 3787 y(3)e(argumen)m(ts)1110 3897 y(The)f(follo)m +(wing)i(conditions)f(are)f(applied)h(in)f(the)g(order)g(listed.)1159 +4039 y(1.)61 b(If)29 b(the)g(second)g(argumen)m(t)h(is)f(one)h(of)f +(the)h(binary)e(conditional)j(op)s(era-)1290 4148 y(tors)c(\(see)h +(Section)g(6.4)g([Bash)g(Conditional)f(Expressions],)h(page)f(96\),) +1290 4258 y(the)d(result)g(of)f(the)h(expression)g(is)g(the)f(result)h +(of)g(the)g(binary)f(test)h(using)1290 4367 y(the)35 +b(\014rst)e(and)h(third)g(argumen)m(ts)h(as)f(op)s(erands.)52 +b(The)34 b(`)p Ft(-a)p Fu(')g(and)g(`)p Ft(-o)p Fu(')1290 +4477 y(op)s(erators)24 b(are)g(considered)g(binary)f(op)s(erators)h +(when)f(there)h(are)h(three)1290 4587 y(argumen)m(ts.)1159 +4728 y(2.)61 b(If)41 b(the)h(\014rst)e(argumen)m(t)i(is)f(`)p Ft(!)p Fu(',)k(the)d(v)-5 b(alue)41 b(is)h(the)f(negation)i(of)f(the) -1290 4262 y(t)m(w)m(o-argumen)m(t)33 b(test)e(using)f(the)g(second)h -(and)e(third)h(argumen)m(ts.)1159 4395 y(3.)61 b(If)35 +1290 4838 y(t)m(w)m(o-argumen)m(t)33 b(test)e(using)f(the)g(second)h +(and)e(third)h(argumen)m(ts.)1159 4979 y(3.)61 b(If)35 b(the)h(\014rst)e(argumen)m(t)i(is)g(exactly)h(`)p Ft(\()p -Fu(')f(and)f(the)g(third)g(argumen)m(t)h(is)1290 4504 +Fu(')f(and)f(the)g(third)g(argumen)m(t)h(is)1290 5089 y(exactly)i(`)p Ft(\))p Fu(',)g(the)f(result)f(is)h(the)f(one-argumen)m -(t)i(test)f(of)f(the)h(second)1290 4614 y(argumen)m(t.)1159 -4746 y(4.)61 b(Otherwise,)30 b(the)h(expression)f(is)g(false.)630 -4902 y(4)h(argumen)m(ts)1110 5011 y(If)h(the)i(\014rst)e(argumen)m(t)h -(is)g(`)p Ft(!)p Fu(',)h(the)f(result)g(is)g(the)g(negation)h(of)f(the) -g(three-)1110 5121 y(argumen)m(t)h(expression)f(comp)s(osed)h(of)f(the) -h(remaining)g(argumen)m(ts.)50 b(Oth-)1110 5230 y(erwise,)34 -b(the)f(expression)g(is)g(parsed)g(and)f(ev)-5 b(aluated)34 -b(according)h(to)e(prece-)1110 5340 y(dence)e(using)e(the)i(rules)f -(listed)h(ab)s(o)m(v)m(e.)p eop end -%%Page: 50 56 -TeXDict begin 50 55 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(50)630 299 y(5)31 -b(or)f(more)h(argumen)m(ts)1110 408 y(The)43 b(expression)f(is)i -(parsed)e(and)g(ev)-5 b(aluated)45 b(according)f(to)f(precedence)1110 -518 y(using)30 b(the)g(rules)g(listed)h(ab)s(o)m(v)m(e.)630 -690 y(When)40 b(used)f(with)g Ft(test)g Fu(or)h(`)p Ft([)p -Fu(',)j(the)d(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s(erators)g -(sort)g(lexicographically)630 800 y(using)30 b(ASCI)s(I)f(ordering.)150 -972 y Ft(times)870 1113 y(times)630 1254 y Fu(Prin)m(t)37 -b(out)h(the)g(user)e(and)h(system)g(times)h(used)f(b)m(y)g(the)h(shell) -f(and)g(its)h(c)m(hildren.)61 b(The)630 1363 y(return)29 -b(status)i(is)f(zero.)150 1536 y Ft(trap)870 1677 y(trap)47 -b([-lp])f([)p Fj(arg)p Ft(])g([)p Fj(sigspec)g Ft(...)o(])630 -1817 y Fu(The)d(commands)f(in)h Fr(arg)51 b Fu(are)44 -b(to)g(b)s(e)e(read)h(and)g(executed)h(when)e(the)h(shell)g(receiv)m -(es)630 1927 y(signal)36 b Fr(sigsp)s(ec)p Fu(.)57 b(If)35 -b Fr(arg)44 b Fu(is)36 b(absen)m(t)g(\(and)f(there)h(is)g(a)f(single)i -Fr(sigsp)s(ec)6 b Fu(\))35 b(or)h(equal)g(to)h(`)p Ft(-)p -Fu(',)630 2037 y(eac)m(h)k(sp)s(eci\014ed)e(signal's)h(disp)s(osition)g -(is)f(reset)i(to)f(the)g(v)-5 b(alue)40 b(it)g(had)f(when)g(the)h -(shell)630 2146 y(w)m(as)33 b(started.)47 b(If)32 b Fr(arg)41 -b Fu(is)32 b(the)h(n)m(ull)f(string,)i(then)e(the)g(signal)i(sp)s -(eci\014ed)d(b)m(y)i(eac)m(h)g Fr(sigsp)s(ec)630 2256 -y Fu(is)g(ignored)h(b)m(y)f(the)g(shell)h(and)e(commands)h(it)h(in)m(v) -m(ok)m(es.)51 b(If)33 b Fr(arg)41 b Fu(is)33 b(not)h(presen)m(t)f(and)g -Ft(-p)630 2365 y Fu(has)g(b)s(een)g(supplied,)f(the)i(shell)f(displa)m -(ys)h(the)f(trap)g(commands)g(asso)s(ciated)i(with)e(eac)m(h)630 -2475 y Fr(sigsp)s(ec)p Fu(.)47 b(If)31 b(no)i(argumen)m(ts)f(are)h -(supplied,)e(or)i(only)f Ft(-p)g Fu(is)g(giv)m(en,)i -Ft(trap)d Fu(prin)m(ts)h(the)g(list)630 2585 y(of)c(commands)f(asso)s -(ciated)i(with)f(eac)m(h)h(signal)f(n)m(um)m(b)s(er)e(in)i(a)g(form)f -(that)h(ma)m(y)h(b)s(e)e(reused)630 2694 y(as)f(shell)h(input.)38 -b(The)26 b Ft(-l)f Fu(option)i(causes)f(the)g(shell)h(to)g(prin)m(t)e -(a)i(list)f(of)h(signal)g(names)f(and)630 2804 y(their)33 -b(corresp)s(onding)f(n)m(um)m(b)s(ers.)47 b(Eac)m(h)34 -b Fr(sigsp)s(ec)39 b Fu(is)33 b(either)g(a)h(signal)g(name)f(or)g(a)g -(signal)630 2913 y(n)m(um)m(b)s(er.)39 b(Signal)31 b(names)f(are)h -(case)h(insensitiv)m(e)f(and)f(the)g Ft(SIG)g Fu(pre\014x)f(is)i -(optional.)630 3054 y(If)k(a)g Fr(sigsp)s(ec)41 b Fu(is)35 -b Ft(0)g Fu(or)g Ft(EXIT)p Fu(,)g Fr(arg)43 b Fu(is)35 -b(executed)h(when)e(the)h(shell)h(exits.)55 b(If)35 b(a)g -Fr(sigsp)s(ec)41 b Fu(is)630 3164 y Ft(DEBUG)p Fu(,)32 -b(the)g(command)g Fr(arg)40 b Fu(is)33 b(executed)g(b)s(efore)f(ev)m -(ery)h(simple)f(command,)h Ft(for)e Fu(com-)630 3273 -y(mand,)d Ft(case)g Fu(command,)h Ft(select)e Fu(command,)i(ev)m(ery)h -(arithmetic)g Ft(for)d Fu(command,)j(and)630 3383 y(b)s(efore)22 -b(the)g(\014rst)f(command)h(executes)i(in)e(a)g(shell)h(function.)37 -b(Refer)22 b(to)h(the)g(description)f(of)630 3493 y(the)i -Ft(extdebug)d Fu(option)j(to)h(the)f Ft(shopt)e Fu(builtin)h(\(see)i -(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)630 3602 -y(page)33 b(66\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the)g -Ft(DEBUG)f Fu(trap.)46 b(If)31 b(a)i Fr(sigsp)s(ec)38 -b Fu(is)32 b Ft(RETURN)p Fu(,)f(the)630 3712 y(command)h +(t)i(test)f(of)f(the)h(second)1290 5198 y(argumen)m(t.)1159 +5340 y(4.)61 b(Otherwise,)30 b(the)h(expression)f(is)g(false.)p +eop end +%%Page: 54 60 +TeXDict begin 54 59 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(54)630 299 y(4)31 +b(argumen)m(ts)1110 408 y(The)f(follo)m(wing)i(conditions)f(are)f +(applied)h(in)f(the)g(order)g(listed.)1159 544 y(1.)61 +b(If)39 b(the)i(\014rst)e(argumen)m(t)h(is)g(`)p Ft(!)p +Fu(',)j(the)d(result)f(is)h(the)g(negation)i(of)e(the)1290 +653 y(three-argumen)m(t)k(expression)e(comp)s(osed)g(of)h(the)g +(remaining)g(argu-)1290 763 y(men)m(ts.)1159 898 y(2.)61 +b(If)31 b(the)g(\014rst)f(argumen)m(t)i(is)f(exactly)i(`)p +Ft(\()p Fu(')e(and)g(the)g(fourth)f(argumen)m(t)i(is)1290 +1008 y(exactly)38 b(`)p Ft(\))p Fu(',)f(the)f(result)g(is)g(the)g(t)m +(w)m(o-argumen)m(t)i(test)f(of)f(the)g(second)1290 1118 +y(and)30 b(third)f(argumen)m(ts.)1159 1253 y(3.)61 b(Otherwise,)26 +b(the)f(expression)f(is)h(parsed)f(and)g(ev)-5 b(aluated)26 +b(according)g(to)1290 1363 y(precedence)31 b(using)f(the)g(rules)g +(listed)h(ab)s(o)m(v)m(e.)630 1524 y(5)g(or)f(more)h(argumen)m(ts)1110 +1633 y(The)43 b(expression)f(is)i(parsed)e(and)g(ev)-5 +b(aluated)45 b(according)f(to)f(precedence)1110 1743 +y(using)30 b(the)g(rules)g(listed)h(ab)s(o)m(v)m(e.)630 +1904 y(When)40 b(used)f(with)g Ft(test)g Fu(or)h(`)p +Ft([)p Fu(',)j(the)d(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p +Fu(')h(op)s(erators)g(sort)g(lexicographically)630 2014 +y(using)30 b(ASCI)s(I)f(ordering.)150 2175 y Ft(times)870 +2310 y(times)630 2446 y Fu(Prin)m(t)37 b(out)h(the)g(user)e(and)h +(system)g(times)h(used)f(b)m(y)g(the)h(shell)f(and)g(its)h(c)m +(hildren.)61 b(The)630 2555 y(return)29 b(status)i(is)f(zero.)150 +2716 y Ft(trap)870 2852 y(trap)47 b([-lp])f([)p Fj(arg)p +Ft(])g([)p Fj(sigspec)g Ft(...)o(])630 2987 y Fu(The)d(commands)f(in)h +Fr(arg)51 b Fu(are)44 b(to)g(b)s(e)e(read)h(and)g(executed)h(when)e +(the)h(shell)g(receiv)m(es)630 3097 y(signal)36 b Fr(sigsp)s(ec)p +Fu(.)57 b(If)35 b Fr(arg)44 b Fu(is)36 b(absen)m(t)g(\(and)f(there)h +(is)g(a)f(single)i Fr(sigsp)s(ec)6 b Fu(\))35 b(or)h(equal)g(to)h(`)p +Ft(-)p Fu(',)630 3206 y(eac)m(h)k(sp)s(eci\014ed)e(signal's)h(disp)s +(osition)g(is)f(reset)i(to)f(the)g(v)-5 b(alue)40 b(it)g(had)f(when)g +(the)h(shell)630 3316 y(w)m(as)33 b(started.)47 b(If)32 +b Fr(arg)41 b Fu(is)32 b(the)h(n)m(ull)f(string,)i(then)e(the)g(signal) +i(sp)s(eci\014ed)d(b)m(y)i(eac)m(h)g Fr(sigsp)s(ec)630 +3425 y Fu(is)g(ignored)h(b)m(y)f(the)g(shell)h(and)e(commands)h(it)h +(in)m(v)m(ok)m(es.)51 b(If)33 b Fr(arg)41 b Fu(is)33 +b(not)h(presen)m(t)f(and)g Ft(-p)630 3535 y Fu(has)g(b)s(een)g +(supplied,)f(the)i(shell)f(displa)m(ys)h(the)f(trap)g(commands)g(asso)s +(ciated)i(with)e(eac)m(h)630 3645 y Fr(sigsp)s(ec)p Fu(.)47 +b(If)31 b(no)i(argumen)m(ts)f(are)h(supplied,)e(or)i(only)f +Ft(-p)g Fu(is)g(giv)m(en,)i Ft(trap)d Fu(prin)m(ts)h(the)g(list)630 +3754 y(of)c(commands)f(asso)s(ciated)i(with)f(eac)m(h)h(signal)f(n)m +(um)m(b)s(er)e(in)i(a)g(form)f(that)h(ma)m(y)h(b)s(e)e(reused)630 +3864 y(as)f(shell)h(input.)38 b(The)26 b Ft(-l)f Fu(option)i(causes)f +(the)g(shell)h(to)g(prin)m(t)e(a)i(list)f(of)h(signal)g(names)f(and)630 +3973 y(their)33 b(corresp)s(onding)f(n)m(um)m(b)s(ers.)47 +b(Eac)m(h)34 b Fr(sigsp)s(ec)39 b Fu(is)33 b(either)g(a)h(signal)g +(name)f(or)g(a)g(signal)630 4083 y(n)m(um)m(b)s(er.)39 +b(Signal)31 b(names)f(are)h(case)h(insensitiv)m(e)f(and)f(the)g +Ft(SIG)g Fu(pre\014x)f(is)i(optional.)630 4218 y(If)k(a)g +Fr(sigsp)s(ec)41 b Fu(is)35 b Ft(0)g Fu(or)g Ft(EXIT)p +Fu(,)g Fr(arg)43 b Fu(is)35 b(executed)h(when)e(the)h(shell)h(exits.)55 +b(If)35 b(a)g Fr(sigsp)s(ec)41 b Fu(is)630 4328 y Ft(DEBUG)p +Fu(,)32 b(the)g(command)g Fr(arg)40 b Fu(is)33 b(executed)g(b)s(efore)f +(ev)m(ery)h(simple)f(command,)h Ft(for)e Fu(com-)630 +4437 y(mand,)d Ft(case)g Fu(command,)h Ft(select)e Fu(command,)i(ev)m +(ery)h(arithmetic)g Ft(for)d Fu(command,)j(and)630 4547 +y(b)s(efore)22 b(the)g(\014rst)f(command)h(executes)i(in)e(a)g(shell)h +(function.)37 b(Refer)22 b(to)h(the)g(description)f(of)630 +4657 y(the)i Ft(extdebug)d Fu(option)j(to)h(the)f Ft(shopt)e +Fu(builtin)h(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)630 +4766 y(page)33 b(71\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the) +g Ft(DEBUG)f Fu(trap.)46 b(If)31 b(a)i Fr(sigsp)s(ec)38 +b Fu(is)32 b Ft(RETURN)p Fu(,)f(the)630 4876 y(command)h Fr(arg)41 b Fu(is)33 b(executed)g(eac)m(h)h(time)f(a)g(shell)g -(function)g(or)f(a)h(script)g(executed)g(with)630 3821 +(function)g(or)f(a)h(script)g(executed)g(with)630 4985 y(the)e Ft(.)f Fu(or)g Ft(source)f Fu(builtins)g(\014nishes)h -(executing.)630 3962 y(If)20 b(a)i Fr(sigsp)s(ec)27 b +(executing.)630 5121 y(If)20 b(a)i Fr(sigsp)s(ec)27 b Fu(is)21 b Ft(ERR)p Fu(,)h(the)f(command)g Fr(arg)29 b Fu(is)21 b(executed)h(whenev)m(er)e(a)i(pip)s(eline)e(\(whic)m(h)h -(ma)m(y)630 4072 y(consist)35 b(of)g(a)f(single)h(simple)g(command\),)h +(ma)m(y)630 5230 y(consist)35 b(of)g(a)f(single)h(simple)g(command\),)h (a)e(list,)j(or)d(a)h(comp)s(ound)e(command)h(returns)630 -4181 y(a)41 b(non-zero)g(exit)h(status,)h(sub)5 b(ject)41 +5340 y(a)41 b(non-zero)g(exit)h(status,)h(sub)5 b(ject)41 b(to)g(the)g(follo)m(wing)h(conditions.)72 b(The)40 b -Ft(ERR)f Fu(trap)i(is)630 4291 y(not)c(executed)h(if)f(the)h(failed)f -(command)g(is)g(part)g(of)h(the)f(command)g(list)h(immediately)630 -4401 y(follo)m(wing)30 b(an)e Ft(until)f Fu(or)i Ft(while)e -Fu(k)m(eyw)m(ord,)i(part)g(of)f(the)h(test)g(follo)m(wing)h(the)f -Ft(if)f Fu(or)g Ft(elif)630 4510 y Fu(reserv)m(ed)45 -b(w)m(ords,)j(part)c(of)h(a)g(command)g(executed)g(in)g(a)g -Ft(&&)f Fu(or)h Ft(||)f Fu(list)h(except)h(the)630 4620 -y(command)28 b(follo)m(wing)j(the)d(\014nal)h Ft(&&)f +Ft(ERR)f Fu(trap)i(is)p eop end +%%Page: 55 61 +TeXDict begin 55 60 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(55)630 299 y(not)37 +b(executed)h(if)f(the)h(failed)f(command)g(is)g(part)g(of)h(the)f +(command)g(list)h(immediately)630 408 y(follo)m(wing)30 +b(an)e Ft(until)f Fu(or)i Ft(while)e Fu(k)m(eyw)m(ord,)i(part)g(of)f +(the)h(test)g(follo)m(wing)h(the)f Ft(if)f Fu(or)g Ft(elif)630 +518 y Fu(reserv)m(ed)45 b(w)m(ords,)j(part)c(of)h(a)g(command)g +(executed)g(in)g(a)g Ft(&&)f Fu(or)h Ft(||)f Fu(list)h(except)h(the)630 +628 y(command)28 b(follo)m(wing)j(the)d(\014nal)h Ft(&&)f Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f(in)h(a)g(pip)s(eline)f(but)g -(the)h(last,)630 4729 y(or)d(if)g(the)f(command's)h(return)f(status)h +(the)h(last,)630 737 y(or)d(if)g(the)f(command's)h(return)f(status)h (is)g(b)s(eing)f(in)m(v)m(erted)i(using)e Ft(!)p Fu(.)39 -b(These)25 b(are)i(the)f(same)630 4839 y(conditions)31 +b(These)25 b(are)i(the)f(same)630 847 y(conditions)31 b(ob)s(ey)m(ed)f(b)m(y)h(the)f Ft(errexit)f Fu(\()p Ft(-e)p -Fu(\))h(option.)630 4980 y(Signals)37 b(ignored)f(up)s(on)f(en)m(try)i +Fu(\))h(option.)630 974 y(Signals)37 b(ignored)f(up)s(on)f(en)m(try)i (to)g(the)f(shell)h(cannot)g(b)s(e)f(trapp)s(ed)f(or)h(reset.)59 -b(T)-8 b(rapp)s(ed)630 5089 y(signals)28 b(that)f(are)h(not)f(b)s(eing) +b(T)-8 b(rapp)s(ed)630 1084 y(signals)28 b(that)f(are)h(not)f(b)s(eing) g(ignored)g(are)g(reset)h(to)g(their)f(original)h(v)-5 -b(alues)28 b(in)e(a)i(subshell)630 5199 y(or)i(subshell)g(en)m -(vironmen)m(t)h(when)e(one)i(is)f(created.)630 5340 y(The)g(return)f +b(alues)28 b(in)e(a)i(subshell)630 1194 y(or)i(subshell)g(en)m +(vironmen)m(t)h(when)e(one)i(is)f(created.)630 1321 y(The)g(return)f (status)i(is)f(zero)h(unless)f(a)h Fr(sigsp)s(ec)36 b Fu(do)s(es)30 b(not)h(sp)s(ecify)f(a)g(v)-5 b(alid)31 -b(signal.)p eop end -%%Page: 51 57 -TeXDict begin 51 56 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(51)150 299 y Ft(umask)870 -434 y(umask)46 b([-p])h([-S])g([)p Fj(mode)p Ft(])630 -570 y Fu(Set)30 b(the)f(shell)h(pro)s(cess's)f(\014le)h(creation)g -(mask)g(to)g Fr(mo)s(de)p Fu(.)40 b(If)29 b Fr(mo)s(de)34 -b Fu(b)s(egins)29 b(with)g(a)h(digit,)630 679 y(it)e(is)f(in)m -(terpreted)g(as)g(an)g(o)s(ctal)i(n)m(um)m(b)s(er;)e(if)g(not,)h(it)g -(is)f(in)m(terpreted)g(as)g(a)h(sym)m(b)s(olic)f(mo)s(de)630 -789 y(mask)i(similar)g(to)g(that)h(accepted)g(b)m(y)f(the)g -Ft(chmod)e Fu(command.)40 b(If)28 b Fr(mo)s(de)34 b Fu(is)28 -b(omitted,)j(the)630 899 y(curren)m(t)39 b(v)-5 b(alue)40 -b(of)f(the)g(mask)g(is)h(prin)m(ted.)66 b(If)39 b(the)g -Ft(-S)g Fu(option)g(is)h(supplied)d(without)j(a)630 1008 -y Fr(mo)s(de)d Fu(argumen)m(t,)d(the)e(mask)g(is)h(prin)m(ted)f(in)g(a) -g(sym)m(b)s(olic)h(format.)47 b(If)32 b(the)g Ft(-p)g -Fu(option)h(is)630 1118 y(supplied,)f(and)f Fr(mo)s(de)37 +b(signal.)150 1467 y Ft(umask)870 1595 y(umask)46 b([-p])h([-S])g([)p +Fj(mode)p Ft(])630 1722 y Fu(Set)30 b(the)f(shell)h(pro)s(cess's)f +(\014le)h(creation)g(mask)g(to)g Fr(mo)s(de)p Fu(.)40 +b(If)29 b Fr(mo)s(de)34 b Fu(b)s(egins)29 b(with)g(a)h(digit,)630 +1832 y(it)e(is)f(in)m(terpreted)g(as)g(an)g(o)s(ctal)i(n)m(um)m(b)s +(er;)e(if)g(not,)h(it)g(is)f(in)m(terpreted)g(as)g(a)h(sym)m(b)s(olic)f +(mo)s(de)630 1942 y(mask)i(similar)g(to)g(that)h(accepted)g(b)m(y)f +(the)g Ft(chmod)e Fu(command.)40 b(If)28 b Fr(mo)s(de)34 +b Fu(is)28 b(omitted,)j(the)630 2051 y(curren)m(t)39 +b(v)-5 b(alue)40 b(of)f(the)g(mask)g(is)h(prin)m(ted.)66 +b(If)39 b(the)g Ft(-S)g Fu(option)g(is)h(supplied)d(without)j(a)630 +2161 y Fr(mo)s(de)d Fu(argumen)m(t,)d(the)e(mask)g(is)h(prin)m(ted)f +(in)g(a)g(sym)m(b)s(olic)h(format.)47 b(If)32 b(the)g +Ft(-p)g Fu(option)h(is)630 2270 y(supplied,)f(and)f Fr(mo)s(de)37 b Fu(is)32 b(omitted,)i(the)f(output)f(is)g(in)g(a)g(form)g(that)h(ma)m -(y)g(b)s(e)e(reused)h(as)630 1227 y(input.)62 b(The)38 +(y)g(b)s(e)e(reused)h(as)630 2380 y(input.)62 b(The)38 b(return)f(status)h(is)g(zero)g(if)g(the)g(mo)s(de)g(is)g(successfully) -g(c)m(hanged)g(or)g(if)g(no)630 1337 y Fr(mo)s(de)d Fu(argumen)m(t)c -(is)f(supplied,)g(and)f(non-zero)i(otherwise.)630 1473 +g(c)m(hanged)g(or)g(if)g(no)630 2489 y Fr(mo)s(de)d Fu(argumen)m(t)c +(is)f(supplied,)g(and)f(non-zero)i(otherwise.)630 2617 y(Note)38 b(that)e(when)g(the)g(mo)s(de)g(is)g(in)m(terpreted)h(as)f (an)g(o)s(ctal)i(n)m(um)m(b)s(er,)e(eac)m(h)i(n)m(um)m(b)s(er)d(of)630 -1582 y(the)f(umask)g(is)h(subtracted)f(from)f Ft(7)p +2727 y(the)f(umask)g(is)h(subtracted)f(from)f Ft(7)p Fu(.)53 b(Th)m(us,)34 b(a)h(umask)e(of)i Ft(022)e Fu(results)h(in)g(p)s -(ermissions)630 1692 y(of)d Ft(755)p Fu(.)150 1853 y -Ft(unset)870 1989 y(unset)46 b([-fnv])g([)p Fj(name)p -Ft(])630 2124 y Fu(Remo)m(v)m(e)36 b(eac)m(h)f(v)-5 b(ariable)35 +(ermissions)630 2836 y(of)d Ft(755)p Fu(.)150 2982 y +Ft(unset)870 3110 y(unset)46 b([-fnv])g([)p Fj(name)p +Ft(])630 3237 y Fu(Remo)m(v)m(e)36 b(eac)m(h)f(v)-5 b(ariable)35 b(or)f(function)f Fr(name)p Fu(.)52 b(If)33 b(the)i Ft(-v)e -Fu(option)h(is)g(giv)m(en,)j(eac)m(h)e Fr(name)630 2234 +Fu(option)h(is)g(giv)m(en,)j(eac)m(h)e Fr(name)630 3347 y Fu(refers)27 b(to)h(a)g(shell)f(v)-5 b(ariable)28 b(and)f(that)h(v)-5 b(ariable)28 b(is)f(remo)m(v)m(ed.)41 b(If)27 b(the)g -Ft(-f)g Fu(option)g(is)h(giv)m(en,)630 2343 y(the)37 +Ft(-f)g Fu(option)g(is)h(giv)m(en,)630 3457 y(the)37 b Fr(name)5 b Fu(s)37 b(refer)f(to)i(shell)f(functions,)h(and)e(the)h (function)g(de\014nition)f(is)h(remo)m(v)m(ed.)61 b(If)630 -2453 y(the)34 b Ft(-n)e Fu(option)i(is)g(supplied,)f(and)g -Fr(name)38 b Fu(is)c(a)f(v)-5 b(ariable)34 b(with)g(the)f -Fr(nameref)51 b Fu(attribute,)630 2563 y Fr(name)42 b -Fu(will)37 b(b)s(e)f(unset)g(rather)g(than)h(the)g(v)-5 -b(ariable)37 b(it)g(references.)60 b Ft(-n)36 b Fu(has)g(no)h(e\013ect) -h(if)630 2672 y(the)h Ft(-f)g Fu(option)g(is)h(supplied.)65 -b(If)39 b(no)g(options)h(are)f(supplied,)h(eac)m(h)h -Fr(name)j Fu(refers)39 b(to)h(a)630 2782 y(v)-5 b(ariable;)45 -b(if)39 b(there)g(is)g(no)g(v)-5 b(ariable)40 b(b)m(y)f(that)h(name,)h -(a)f(function)f(with)g(that)g(name,)j(if)630 2891 y(an)m(y)-8 +3566 y(the)34 b Ft(-n)e Fu(option)i(is)f(supplied,)h(and)e +Fr(name)39 b Fu(is)33 b(a)h(v)-5 b(ariable)34 b(with)f(the)h +Ft(nameref)d Fu(attribute,)630 3676 y Fr(name)42 b Fu(will)37 +b(b)s(e)f(unset)g(rather)g(than)h(the)g(v)-5 b(ariable)37 +b(it)g(references.)60 b Ft(-n)36 b Fu(has)g(no)h(e\013ect)h(if)630 +3785 y(the)h Ft(-f)g Fu(option)g(is)h(supplied.)65 b(If)39 +b(no)g(options)h(are)f(supplied,)h(eac)m(h)h Fr(name)j +Fu(refers)39 b(to)h(a)630 3895 y(v)-5 b(ariable;)45 b(if)39 +b(there)g(is)g(no)g(v)-5 b(ariable)40 b(b)m(y)f(that)h(name,)h(a)f +(function)f(with)g(that)g(name,)j(if)630 4004 y(an)m(y)-8 b(,)34 b(is)e(unset.)46 b(Readonly)33 b(v)-5 b(ariables)33 b(and)f(functions)g(ma)m(y)h(not)f(b)s(e)g(unset.)46 -b(Some)33 b(shell)630 3001 y(v)-5 b(ariables)29 b(lose)h(their)e(sp)s +b(Some)33 b(shell)630 4114 y(v)-5 b(ariables)29 b(lose)h(their)e(sp)s (ecial)h(b)s(eha)m(vior)g(if)f(they)h(are)g(unset;)g(suc)m(h)f(b)s(eha) -m(vior)h(is)g(noted)f(in)630 3110 y(the)35 b(description)h(of)f(the)g +m(vior)h(is)g(noted)f(in)630 4224 y(the)35 b(description)h(of)f(the)g (individual)g(v)-5 b(ariables.)56 b(The)34 b(return)g(status)i(is)f -(zero)h(unless)f(a)630 3220 y Fr(name)h Fu(is)30 b(readonly)-8 -b(.)150 3464 y Fs(4.2)68 b(Bash)45 b(Builtin)g(Commands)150 -3623 y Fu(This)c(section)h(describ)s(es)f(builtin)f(commands)h(whic)m -(h)g(are)h(unique)e(to)j(or)e(ha)m(v)m(e)h(b)s(een)f(extended)g(in)150 -3733 y(Bash.)g(Some)30 b(of)h(these)g(commands)f(are)g(sp)s(eci\014ed)g -(in)g(the)h Fm(posix)e Fu(standard.)150 3895 y Ft(alias)870 -4031 y(alias)46 b([-p])h([)p Fj(name)p Ft([=)p Fj(value)p -Ft(])d(...)o(])630 4166 y Fu(Without)26 b(argumen)m(ts)f(or)g(with)f -(the)h Ft(-p)g Fu(option,)h Ft(alias)e Fu(prin)m(ts)g(the)h(list)h(of)f -(aliases)h(on)f(the)630 4276 y(standard)g(output)g(in)g(a)h(form)f +(zero)h(unless)f(a)630 4333 y Fr(name)h Fu(is)30 b(readonly)g(or)h(ma)m +(y)g(not)f(b)s(e)g(unset.)150 4560 y Fs(4.2)68 b(Bash)45 +b(Builtin)g(Commands)150 4720 y Fu(This)c(section)h(describ)s(es)f +(builtin)f(commands)h(whic)m(h)g(are)h(unique)e(to)j(or)e(ha)m(v)m(e)h +(b)s(een)f(extended)g(in)150 4829 y(Bash.)g(Some)30 b(of)h(these)g +(commands)f(are)g(sp)s(eci\014ed)g(in)g(the)h Fm(posix)e +Fu(standard.)150 4975 y Ft(alias)870 5103 y(alias)46 +b([-p])h([)p Fj(name)p Ft([=)p Fj(value)p Ft(])d(...)o(])630 +5230 y Fu(Without)26 b(argumen)m(ts)f(or)g(with)f(the)h +Ft(-p)g Fu(option,)h Ft(alias)e Fu(prin)m(ts)g(the)h(list)h(of)f +(aliases)h(on)f(the)630 5340 y(standard)g(output)g(in)g(a)h(form)f (that)h(allo)m(ws)h(them)e(to)h(b)s(e)f(reused)g(as)g(input.)39 -b(If)25 b(argumen)m(ts)630 4385 y(are)j(supplied,)e(an)i(alias)g(is)f -(de\014ned)f(for)h(eac)m(h)h Fr(name)33 b Fu(whose)27 -b Fr(v)-5 b(alue)33 b Fu(is)27 b(giv)m(en.)41 b(If)26 -b(no)h Fr(v)-5 b(alue)630 4495 y Fu(is)37 b(giv)m(en,)j(the)d(name)g -(and)g(v)-5 b(alue)37 b(of)h(the)f(alias)h(is)f(prin)m(ted.)61 -b(Aliases)38 b(are)f(describ)s(ed)f(in)630 4605 y(Section)31 -b(6.6)h([Aliases],)g(page)f(94.)150 4766 y Ft(bind)870 -4902 y(bind)47 b([-m)g Fj(keymap)p Ft(])e([-lpsvPSVX])870 -5011 y(bind)i([-m)g Fj(keymap)p Ft(])e([-q)i Fj(function)p -Ft(])f([-u)g Fj(function)p Ft(])g([-r)h Fj(keyseq)p Ft(])870 -5121 y(bind)g([-m)g Fj(keymap)p Ft(])e(-f)j Fj(filename)870 -5230 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e(-x)j Fj(keyseq:shell-command) -870 5340 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e Fj(keyseq:function-name)p -eop end -%%Page: 52 58 -TeXDict begin 52 57 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(52)870 299 y Ft(bind)47 -b([-m)g Fj(keymap)p Ft(])e Fj(keyseq:readline-command)630 -432 y Fu(Displa)m(y)22 b(curren)m(t)f(Readline)h(\(see)f(Chapter)g(8)g -([Command)f(Line)h(Editing],)j(page)e(111\))g(k)m(ey)630 -542 y(and)36 b(function)g(bindings,)i(bind)d(a)i(k)m(ey)g(sequence)g -(to)h(a)f(Readline)g(function)f(or)h(macro,)630 651 y(or)44 -b(set)h(a)g(Readline)f(v)-5 b(ariable.)83 b(Eac)m(h)45 +b(If)25 b(argumen)m(ts)p eop end +%%Page: 56 62 +TeXDict begin 56 61 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y(are)28 +b(supplied,)e(an)i(alias)g(is)f(de\014ned)f(for)h(eac)m(h)h +Fr(name)33 b Fu(whose)27 b Fr(v)-5 b(alue)33 b Fu(is)27 +b(giv)m(en.)41 b(If)26 b(no)h Fr(v)-5 b(alue)630 408 +y Fu(is)37 b(giv)m(en,)j(the)d(name)g(and)g(v)-5 b(alue)37 +b(of)h(the)f(alias)h(is)f(prin)m(ted.)61 b(Aliases)38 +b(are)f(describ)s(ed)f(in)630 518 y(Section)31 b(6.6)h([Aliases],)g +(page)f(100.)150 676 y Ft(bind)870 810 y(bind)47 b([-m)g +Fj(keymap)p Ft(])e([-lpsvPSVX])870 920 y(bind)i([-m)g +Fj(keymap)p Ft(])e([-q)i Fj(function)p Ft(])f([-u)g Fj(function)p +Ft(])g([-r)h Fj(keyseq)p Ft(])870 1029 y(bind)g([-m)g +Fj(keymap)p Ft(])e(-f)j Fj(filename)870 1139 y Ft(bind)f([-m)g +Fj(keymap)p Ft(])e(-x)j Fj(keyseq:shell-command)870 1249 +y Ft(bind)f([-m)g Fj(keymap)p Ft(])e Fj(keyseq:function-name)870 +1358 y Ft(bind)i([-m)g Fj(keymap)p Ft(])e Fj(keyseq:readline-command) +870 1468 y Ft(bind)i Fj(readline-command-line)630 1602 +y Fu(Displa)m(y)22 b(curren)m(t)f(Readline)h(\(see)f(Chapter)g(8)g +([Command)f(Line)h(Editing],)j(page)e(117\))g(k)m(ey)630 +1711 y(and)36 b(function)g(bindings,)i(bind)d(a)i(k)m(ey)g(sequence)g +(to)h(a)f(Readline)g(function)f(or)h(macro,)630 1821 +y(or)44 b(set)h(a)g(Readline)f(v)-5 b(ariable.)83 b(Eac)m(h)45 b(non-option)g(argumen)m(t)f(is)g(a)h(command)f(as)g(it)630 -761 y(w)m(ould)e(app)s(ear)f(in)h(a)h(Readline)g(initialization)i +1931 y(w)m(ould)e(app)s(ear)f(in)h(a)h(Readline)g(initialization)i (\014le)d(\(see)h(Section)g(8.3)g([Readline)g(Init)630 -870 y(File],)c(page)d(114\),)j(but)c(eac)m(h)h(binding)f(or)g(command)h -(m)m(ust)f(b)s(e)g(passed)g(as)h(a)g(separate)630 980 +2040 y(File],)c(page)d(120\),)j(but)c(eac)m(h)h(binding)f(or)g(command) +h(m)m(ust)f(b)s(e)g(passed)g(as)h(a)g(separate)630 2150 y(argumen)m(t;)31 b(e.g.,)h(`)p Ft("\\C-x\\C-r":re-read-init-f)o(ile)p -Fu('.)630 1113 y(Options,)e(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m -(wing)h(meanings:)630 1270 y Ft(-m)e Fj(keymap)66 b Fu(Use)54 +Fu('.)630 2284 y(Options,)e(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m +(wing)h(meanings:)630 2442 y Ft(-m)e Fj(keymap)66 b Fu(Use)54 b Fr(k)m(eymap)j Fu(as)d(the)g(k)m(eymap)g(to)h(b)s(e)e(a\013ected)i(b) -m(y)f(the)g(subsequen)m(t)1110 1379 y(bindings.)46 b(Acceptable)34 +m(y)f(the)g(subsequen)m(t)1110 2552 y(bindings.)46 b(Acceptable)34 b Fr(k)m(eymap)i Fu(names)c(are)h Ft(emacs)p Fu(,)f Ft(emacs-standard)p -Fu(,)1110 1489 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p +Fu(,)1110 2661 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p Fu(,)f Ft(vi)p Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p -Fu(,)f(and)1110 1598 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44 +Fu(,)f(and)1110 2771 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44 b Fu(is)h(equiv)-5 b(alen)m(t)46 b(to)g Ft(vi-command)c -Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 1708 y(synon)m(ym\);)30 +Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 2880 y(synon)m(ym\);)30 b Ft(emacs)f Fu(is)i(equiv)-5 b(alen)m(t)32 b(to)f Ft(emacs-standard)p -Fu(.)630 1864 y Ft(-l)384 b Fu(List)31 b(the)f(names)g(of)h(all)g -(Readline)g(functions.)630 2021 y Ft(-p)384 b Fu(Displa)m(y)34 +Fu(.)630 3039 y Ft(-l)384 b Fu(List)31 b(the)f(names)g(of)h(all)g +(Readline)g(functions.)630 3197 y Ft(-p)384 b Fu(Displa)m(y)34 b(Readline)f(function)g(names)g(and)f(bindings)f(in)i(suc)m(h)f(a)i(w)m -(a)m(y)f(that)1110 2131 y(they)e(can)f(b)s(e)g(used)g(as)g(input)g(or)g -(in)g(a)h(Readline)g(initialization)i(\014le.)630 2287 +(a)m(y)f(that)1110 3306 y(they)e(can)f(b)s(e)g(used)g(as)g(input)g(or)g +(in)g(a)h(Readline)g(initialization)i(\014le.)630 3465 y Ft(-P)384 b Fu(List)31 b(curren)m(t)f(Readline)h(function)f(names)g -(and)g(bindings.)630 2444 y Ft(-v)384 b Fu(Displa)m(y)25 +(and)g(bindings.)630 3623 y Ft(-v)384 b Fu(Displa)m(y)25 b(Readline)f(v)-5 b(ariable)25 b(names)f(and)f(v)-5 b(alues)24 -b(in)g(suc)m(h)f(a)i(w)m(a)m(y)f(that)h(they)1110 2553 +b(in)g(suc)m(h)f(a)i(w)m(a)m(y)f(that)h(they)1110 3733 y(can)31 b(b)s(e)e(used)h(as)h(input)e(or)h(in)g(a)h(Readline)g -(initialization)j(\014le.)630 2710 y Ft(-V)384 b Fu(List)31 +(initialization)j(\014le.)630 3891 y Ft(-V)384 b Fu(List)31 b(curren)m(t)f(Readline)h(v)-5 b(ariable)31 b(names)f(and)g(v)-5 -b(alues.)630 2866 y Ft(-s)384 b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g +b(alues.)630 4049 y Ft(-s)384 b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g (sequences)f(b)s(ound)f(to)i(macros)g(and)f(the)g(strings)1110 -2976 y(they)d(output)f(in)h(suc)m(h)f(a)h(w)m(a)m(y)h(that)f(they)g -(can)g(b)s(e)f(used)g(as)h(input)e(or)i(in)g(a)1110 3086 -y(Readline)d(initialization)i(\014le.)630 3242 y Ft(-S)384 +4159 y(they)d(output)f(in)h(suc)m(h)f(a)h(w)m(a)m(y)h(that)f(they)g +(can)g(b)s(e)f(used)g(as)h(input)e(or)i(in)g(a)1110 4268 +y(Readline)d(initialization)i(\014le.)630 4427 y Ft(-S)384 b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g(sequences)f(b)s(ound)f(to)i -(macros)g(and)f(the)g(strings)1110 3352 y(they)31 b(output.)630 -3508 y Ft(-f)f Fj(filename)1110 3618 y Fu(Read)h(k)m(ey)g(bindings)e -(from)h Fr(\014lename)p Fu(.)630 3774 y Ft(-q)g Fj(function)1110 -3884 y Fu(Query)g(ab)s(out)g(whic)m(h)g(k)m(eys)h(in)m(v)m(ok)m(e)h -(the)f(named)f Fr(function)p Fu(.)630 4041 y Ft(-u)g -Fj(function)1110 4150 y Fu(Un)m(bind)f(all)i(k)m(eys)g(b)s(ound)e(to)i -(the)f(named)g Fr(function)p Fu(.)630 4307 y Ft(-r)g -Fj(keyseq)66 b Fu(Remo)m(v)m(e)32 b(an)m(y)f(curren)m(t)f(binding)f -(for)h Fr(k)m(eyseq)p Fu(.)630 4463 y Ft(-x)g Fj(keyseq:shell-command) -1110 4573 y Fu(Cause)35 b Fr(shell-command)k Fu(to)d(b)s(e)f(executed)h +(macros)g(and)f(the)g(strings)1110 4536 y(they)31 b(output.)630 +4695 y Ft(-f)f Fj(filename)1110 4804 y Fu(Read)h(k)m(ey)g(bindings)e +(from)h Fr(\014lename)p Fu(.)630 4963 y Ft(-q)g Fj(function)1110 +5072 y Fu(Query)g(ab)s(out)g(whic)m(h)g(k)m(eys)h(in)m(v)m(ok)m(e)h +(the)f(named)f Fr(function)p Fu(.)630 5230 y Ft(-u)g +Fj(function)1110 5340 y Fu(Un)m(bind)f(all)i(k)m(eys)g(b)s(ound)e(to)i +(the)f(named)g Fr(function)p Fu(.)p eop end +%%Page: 57 63 +TeXDict begin 57 62 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 y Ft(-r)30 +b Fj(keyseq)66 b Fu(Remo)m(v)m(e)32 b(an)m(y)f(curren)m(t)f(binding)f +(for)h Fr(k)m(eyseq)p Fu(.)630 452 y Ft(-x)g Fj(keyseq:shell-command) +1110 562 y Fu(Cause)35 b Fr(shell-command)k Fu(to)d(b)s(e)f(executed)h (whenev)m(er)f Fr(k)m(eyseq)j Fu(is)d(en)m(tered.)1110 -4682 y(When)46 b Fr(shell-command)k Fu(is)c(executed,)51 -b(the)46 b(shell)g(sets)g(the)g Ft(READLINE_)1110 4792 +671 y(When)46 b Fr(shell-command)k Fu(is)c(executed,)51 +b(the)46 b(shell)g(sets)g(the)g Ft(READLINE_)1110 781 y(LINE)37 b Fu(v)-5 b(ariable)38 b(to)g(the)g(con)m(ten)m(ts)i(of)e -(the)g(Readline)g(line)g(bu\013er)f(and)g(the)1110 4902 -y Ft(READLINE_POINT)21 b Fu(and)k Ft(READLINE_MARK)c -Fu(v)-5 b(ariables)26 b(to)g(the)g(curren)m(t)f(lo)s(ca-)1110 -5011 y(tion)f(of)g(the)g(insertion)g(p)s(oin)m(t)g(and)f(the)h(sa)m(v)m -(ed)h(insertion)f(p)s(oin)m(t)g(\(the)g Fr(mark)6 b Fu(\),)1110 -5121 y(resp)s(ectiv)m(ely)-8 b(.)43 b(If)30 b(the)h(executed)g(command) -g(c)m(hanges)g(the)g(v)-5 b(alue)31 b(of)g(an)m(y)g(of)1110 -5230 y Ft(READLINE_LINE)p Fu(,)40 b Ft(READLINE_POINT)p -Fu(,)f(or)i Ft(READLINE_MARK)p Fu(,)e(those)i(new)1110 -5340 y(v)-5 b(alues)31 b(will)f(b)s(e)g(re\015ected)h(in)f(the)h -(editing)g(state.)p eop end -%%Page: 53 59 -TeXDict begin 53 58 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y Ft(-X)384 +(the)g(Readline)g(line)g(bu\013er)f(and)g(the)1110 891 +y Ft(READLINE_POINT)d Fu(and)j Ft(READLINE_MARK)d Fu(v)-5 +b(ariables)39 b(to)f(the)g(curren)m(t)g(lo-)1110 1000 +y(cation)46 b(of)f(the)g(insertion)g(p)s(oin)m(t)f(and)g(the)h(sa)m(v)m +(ed)h(insertion)f(p)s(oin)m(t)f(\(the)1110 1110 y Fr(mark)6 +b Fu(\),)38 b(resp)s(ectiv)m(ely)-8 b(.)62 b(The)36 b(shell)h(assigns)g +(an)m(y)g(n)m(umeric)g(argumen)m(t)g(the)1110 1219 y(user)43 +b(supplied)g(to)h(the)g Ft(READLINE_ARGUMENT)39 b Fu(v)-5 +b(ariable.)82 b(If)44 b(there)g(w)m(as)1110 1329 y(no)39 +b(argumen)m(t,)j(that)d(v)-5 b(ariable)40 b(is)f(not)g(set.)68 +b(If)38 b(the)h(executed)h(command)1110 1439 y(c)m(hanges)e(the)e(v)-5 +b(alue)37 b(of)g(an)m(y)g(of)g Ft(READLINE_LINE)p Fu(,)d +Ft(READLINE_POINT)p Fu(,)h(or)1110 1548 y Ft(READLINE_MARK)p +Fu(,)i(those)i(new)f(v)-5 b(alues)38 b(will)h(b)s(e)f(re\015ected)h(in) +f(the)g(editing)1110 1658 y(state.)630 1811 y Ft(-X)384 b Fu(List)27 b(all)i(k)m(ey)f(sequences)f(b)s(ound)e(to)j(shell)g -(commands)e(and)h(the)g(asso)s(ciated)1110 408 y(commands)j(in)g(a)h +(commands)e(and)h(the)g(asso)s(ciated)1110 1921 y(commands)j(in)g(a)h (format)g(that)f(can)h(b)s(e)f(reused)f(as)i(input.)630 -568 y(The)26 b(return)f(status)i(is)f(zero)i(unless)d(an)i(in)m(v)-5 +2074 y(The)26 b(return)f(status)i(is)f(zero)i(unless)d(an)i(in)m(v)-5 b(alid)27 b(option)g(is)f(supplied)f(or)i(an)f(error)g(o)s(ccurs.)150 -727 y Ft(builtin)870 862 y(builtin)46 b([)p Fj(shell-builtin)e -Ft([)p Fj(args)p Ft(]])630 996 y Fu(Run)35 b(a)i(shell)f(builtin,)i +2228 y Ft(builtin)870 2359 y(builtin)46 b([)p Fj(shell-builtin)e +Ft([)p Fj(args)p Ft(]])630 2491 y Fu(Run)35 b(a)i(shell)f(builtin,)i (passing)e(it)h Fr(args)p Fu(,)h(and)e(return)f(its)i(exit)g(status.)59 -b(This)35 b(is)i(useful)630 1106 y(when)29 b(de\014ning)h(a)g(shell)h +b(This)35 b(is)i(useful)630 2600 y(when)29 b(de\014ning)h(a)g(shell)h (function)f(with)g(the)g(same)h(name)f(as)h(a)g(shell)f(builtin,)g -(retaining)630 1215 y(the)k(functionalit)m(y)h(of)f(the)f(builtin)g +(retaining)630 2710 y(the)k(functionalit)m(y)h(of)f(the)f(builtin)g (within)g(the)h(function.)50 b(The)33 b(return)g(status)h(is)f(non-)630 -1325 y(zero)e(if)g Fr(shell-builtin)f Fu(is)g(not)h(a)g(shell)f -(builtin)g(command.)150 1484 y Ft(caller)870 1619 y(caller)46 -b([)p Fj(expr)p Ft(])630 1753 y Fu(Returns)34 b(the)g(con)m(text)j(of)e +2819 y(zero)e(if)g Fr(shell-builtin)f Fu(is)g(not)h(a)g(shell)f +(builtin)g(command.)150 2973 y Ft(caller)870 3104 y(caller)46 +b([)p Fj(expr)p Ft(])630 3236 y Fu(Returns)34 b(the)g(con)m(text)j(of)e (an)m(y)g(activ)m(e)i(subroutine)c(call)j(\(a)f(shell)g(function)f(or)h -(a)g(script)630 1863 y(executed)c(with)f(the)h Ft(.)f -Fu(or)g Ft(source)f Fu(builtins\).)630 1998 y(Without)45 +(a)g(script)630 3345 y(executed)c(with)f(the)h Ft(.)f +Fu(or)g Ft(source)f Fu(builtins\).)630 3477 y(Without)45 b Fr(expr)p Fu(,)j Ft(caller)43 b Fu(displa)m(ys)i(the)f(line)h(n)m(um) -m(b)s(er)f(and)g(source)g(\014lename)h(of)g(the)630 2107 +m(b)s(er)f(and)g(source)g(\014lename)h(of)g(the)630 3587 y(curren)m(t)35 b(subroutine)g(call.)58 b(If)35 b(a)h(non-negativ)m(e)i (in)m(teger)f(is)f(supplied)e(as)i Fr(expr)p Fu(,)h Ft(caller)630 -2217 y Fu(displa)m(ys)k(the)f(line)h(n)m(um)m(b)s(er,)h(subroutine)d +3696 y Fu(displa)m(ys)k(the)f(line)h(n)m(um)m(b)s(er,)h(subroutine)d (name,)44 b(and)c(source)g(\014le)h(corresp)s(onding)e(to)630 -2326 y(that)c(p)s(osition)g(in)f(the)h(curren)m(t)f(execution)i(call)g +3806 y(that)c(p)s(osition)g(in)f(the)h(curren)m(t)f(execution)i(call)g (stac)m(k.)54 b(This)34 b(extra)h(information)g(ma)m(y)630 -2436 y(b)s(e)30 b(used,)g(for)g(example,)h(to)g(prin)m(t)f(a)h(stac)m +3915 y(b)s(e)30 b(used,)g(for)g(example,)h(to)g(prin)m(t)f(a)h(stac)m (k)h(trace.)42 b(The)29 b(curren)m(t)i(frame)f(is)g(frame)h(0.)630 -2570 y(The)d(return)g(v)-5 b(alue)29 b(is)g(0)g(unless)f(the)h(shell)g +4047 y(The)d(return)g(v)-5 b(alue)29 b(is)g(0)g(unless)f(the)h(shell)g (is)g(not)g(executing)h(a)f(subroutine)e(call)j(or)f -Fr(expr)630 2680 y Fu(do)s(es)h(not)h(corresp)s(ond)e(to)i(a)g(v)-5 +Fr(expr)630 4156 y Fu(do)s(es)h(not)h(corresp)s(ond)e(to)i(a)g(v)-5 b(alid)30 b(p)s(osition)h(in)f(the)g(call)i(stac)m(k.)150 -2839 y Ft(command)870 2974 y(command)46 b([-pVv])g Fj(command)g -Ft([)p Fj(arguments)f Ft(...)o(])630 3108 y Fu(Runs)32 +4310 y Ft(command)870 4441 y(command)46 b([-pVv])g Fj(command)g +Ft([)p Fj(arguments)f Ft(...)o(])630 4573 y Fu(Runs)32 b Fr(command)k Fu(with)d Fr(argumen)m(ts)k Fu(ignoring)c(an)m(y)g -(shell)h(function)e(named)h Fr(command)p Fu(.)630 3218 +(shell)h(function)e(named)h Fr(command)p Fu(.)630 4682 y(Only)39 b(shell)i(builtin)e(commands)h(or)g(commands)f(found)g(b)m(y) -h(searc)m(hing)h(the)f Ft(PATH)f Fu(are)630 3328 y(executed.)59 +h(searc)m(hing)h(the)f Ft(PATH)f Fu(are)630 4792 y(executed.)59 b(If)36 b(there)h(is)f(a)h(shell)f(function)g(named)g Ft(ls)p Fu(,)h(running)e(`)p Ft(command)29 b(ls)p Fu(')35 -b(within)630 3437 y(the)c(function)f(will)h(execute)g(the)g(external)g +b(within)630 4902 y(the)c(function)f(will)h(execute)g(the)g(external)g (command)g Ft(ls)f Fu(instead)g(of)h(calling)h(the)f(func-)630 -3547 y(tion)36 b(recursiv)m(ely)-8 b(.)56 b(The)34 b +5011 y(tion)36 b(recursiv)m(ely)-8 b(.)56 b(The)34 b Ft(-p)h Fu(option)g(means)g(to)h(use)f(a)g(default)h(v)-5 -b(alue)35 b(for)g Ft(PATH)f Fu(that)i(is)630 3656 y(guaran)m(teed)f(to) +b(alue)35 b(for)g Ft(PATH)f Fu(that)i(is)630 5121 y(guaran)m(teed)f(to) f(\014nd)e(all)j(of)f(the)g(standard)f(utilities.)52 -b(The)33 b(return)g(status)h(in)f(this)h(case)630 3766 +b(The)33 b(return)g(status)h(in)f(this)h(case)630 5230 y(is)29 b(127)g(if)g Fr(command)j Fu(cannot)d(b)s(e)e(found)h(or)g(an)g (error)h(o)s(ccurred,)f(and)g(the)h(exit)g(status)g(of)630 -3875 y Fr(command)34 b Fu(otherwise.)630 4010 y(If)e(either)h(the)f -Ft(-V)g Fu(or)g Ft(-v)g Fu(option)h(is)f(supplied,)g(a)h(description)f -(of)h Fr(command)j Fu(is)c(prin)m(ted.)630 4120 y(The)f -Ft(-v)h Fu(option)g(causes)g(a)g(single)h(w)m(ord)f(indicating)g(the)g -(command)g(or)g(\014le)g(name)g(used)630 4229 y(to)40 -b(in)m(v)m(ok)m(e)h Fr(command)h Fu(to)e(b)s(e)e(displa)m(y)m(ed;)44 -b(the)39 b Ft(-V)f Fu(option)i(pro)s(duces)d(a)j(more)f(v)m(erb)s(ose) -630 4339 y(description.)61 b(In)36 b(this)h(case,)j(the)e(return)e -(status)h(is)g(zero)h(if)f Fr(command)k Fu(is)c(found,)h(and)630 -4448 y(non-zero)31 b(if)f(not.)150 4608 y Ft(declare)870 -4742 y(declare)46 b([-aAfFgiIlnrtux])d([-p])k([)p Fj(name)p -Ft([=)p Fj(value)p Ft(])d(...)o(])630 4877 y Fu(Declare)29 +5340 y Fr(command)34 b Fu(otherwise.)p eop end +%%Page: 58 64 +TeXDict begin 58 63 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(58)630 299 y(If)32 +b(either)h(the)f Ft(-V)g Fu(or)g Ft(-v)g Fu(option)h(is)f(supplied,)g +(a)h(description)f(of)h Fr(command)j Fu(is)c(prin)m(ted.)630 +408 y(The)f Ft(-v)h Fu(option)g(causes)g(a)g(single)h(w)m(ord)f +(indicating)g(the)g(command)g(or)g(\014le)g(name)g(used)630 +518 y(to)40 b(in)m(v)m(ok)m(e)h Fr(command)h Fu(to)e(b)s(e)e(displa)m +(y)m(ed;)44 b(the)39 b Ft(-V)f Fu(option)i(pro)s(duces)d(a)j(more)f(v)m +(erb)s(ose)630 628 y(description.)61 b(In)36 b(this)h(case,)j(the)e +(return)e(status)h(is)g(zero)h(if)f Fr(command)k Fu(is)c(found,)h(and) +630 737 y(non-zero)31 b(if)f(not.)150 897 y Ft(declare)870 +1031 y(declare)46 b([-aAfFgiIlnrtux])d([-p])k([)p Fj(name)p +Ft([=)p Fj(value)p Ft(])d(...)o(])630 1166 y Fu(Declare)29 b(v)-5 b(ariables)28 b(and)e(giv)m(e)j(them)e(attributes.)40 b(If)27 b(no)g Fr(name)5 b Fu(s)27 b(are)h(giv)m(en,)h(then)e(displa)m -(y)630 4986 y(the)k(v)-5 b(alues)30 b(of)h(v)-5 b(ariables)31 -b(instead.)630 5121 y(The)k Ft(-p)f Fu(option)i(will)g(displa)m(y)f +(y)630 1275 y(the)k(v)-5 b(alues)30 b(of)h(v)-5 b(ariables)31 +b(instead.)630 1410 y(The)k Ft(-p)f Fu(option)i(will)g(displa)m(y)f (the)h(attributes)g(and)e(v)-5 b(alues)36 b(of)f(eac)m(h)i -Fr(name)p Fu(.)55 b(When)36 b Ft(-p)630 5230 y Fu(is)i(used)g(with)g +Fr(name)p Fu(.)55 b(When)36 b Ft(-p)630 1519 y Fu(is)i(used)g(with)g Fr(name)43 b Fu(argumen)m(ts,)e(additional)e(options,)i(other)d(than)g -Ft(-f)g Fu(and)g Ft(-F)p Fu(,)i(are)630 5340 y(ignored.)p -eop end -%%Page: 54 60 -TeXDict begin 54 59 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(54)630 299 y(When)40 -b Ft(-p)g Fu(is)g(supplied)f(without)i Fr(name)k Fu(argumen)m(ts,)f -Ft(declare)38 b Fu(will)j(displa)m(y)f(the)h(at-)630 -408 y(tributes)31 b(and)f(v)-5 b(alues)31 b(of)g(all)h(v)-5 +Ft(-f)g Fu(and)g Ft(-F)p Fu(,)i(are)630 1629 y(ignored.)630 +1763 y(When)g Ft(-p)g Fu(is)g(supplied)f(without)i Fr(name)k +Fu(argumen)m(ts,)f Ft(declare)38 b Fu(will)j(displa)m(y)f(the)h(at-)630 +1873 y(tributes)31 b(and)f(v)-5 b(alues)31 b(of)g(all)h(v)-5 b(ariables)31 b(ha)m(ving)h(the)f(attributes)g(sp)s(eci\014ed)f(b)m(y)h -(the)g(addi-)630 518 y(tional)k(options.)52 b(If)34 b(no)g(other)g -(options)g(are)g(supplied)f(with)h Ft(-p)p Fu(,)g Ft(declare)e -Fu(will)j(displa)m(y)630 628 y(the)e(attributes)h(and)e(v)-5 -b(alues)33 b(of)g(all)h(shell)f(v)-5 b(ariables.)50 b(The)32 -b Ft(-f)g Fu(option)i(will)f(restrict)h(the)630 737 y(displa)m(y)d(to)g -(shell)f(functions.)630 877 y(The)41 b Ft(-F)f Fu(option)i(inhibits)e -(the)i(displa)m(y)f(of)g(function)g(de\014nitions;)47 -b(only)41 b(the)g(function)630 986 y(name)30 b(and)f(attributes)i(are)f -(prin)m(ted.)40 b(If)30 b(the)g Ft(extdebug)e Fu(shell)i(option)g(is)g -(enabled)g(using)630 1096 y Ft(shopt)24 b Fu(\(see)i(Section)g(4.3.2)i -([The)d(Shopt)f(Builtin],)k(page)e(66\),)i(the)d(source)h(\014le)f -(name)h(and)630 1205 y(line)31 b(n)m(um)m(b)s(er)e(where)h(eac)m(h)h +(the)g(addi-)630 1983 y(tional)k(options.)52 b(If)34 +b(no)g(other)g(options)g(are)g(supplied)f(with)h Ft(-p)p +Fu(,)g Ft(declare)e Fu(will)j(displa)m(y)630 2092 y(the)e(attributes)h +(and)e(v)-5 b(alues)33 b(of)g(all)h(shell)f(v)-5 b(ariables.)50 +b(The)32 b Ft(-f)g Fu(option)i(will)f(restrict)h(the)630 +2202 y(displa)m(y)d(to)g(shell)f(functions.)630 2336 +y(The)41 b Ft(-F)f Fu(option)i(inhibits)e(the)i(displa)m(y)f(of)g +(function)g(de\014nitions;)47 b(only)41 b(the)g(function)630 +2446 y(name)30 b(and)f(attributes)i(are)f(prin)m(ted.)40 +b(If)30 b(the)g Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled)g(using) +630 2555 y Ft(shopt)24 b Fu(\(see)i(Section)g(4.3.2)i([The)d(Shopt)f +(Builtin],)k(page)e(71\),)i(the)d(source)h(\014le)f(name)h(and)630 +2665 y(line)31 b(n)m(um)m(b)s(er)e(where)h(eac)m(h)h Fr(name)36 b Fu(is)30 b(de\014ned)f(are)i(displa)m(y)m(ed)g(as)g(w)m -(ell.)41 b Ft(-F)30 b Fu(implies)h Ft(-f)p Fu(.)630 1345 +(ell.)41 b Ft(-F)30 b Fu(implies)h Ft(-f)p Fu(.)630 2800 y(The)36 b Ft(-g)g Fu(option)h(forces)g(v)-5 b(ariables)37 b(to)g(b)s(e)f(created)i(or)e(mo)s(di\014ed)g(at)h(the)g(global)h(scop) -s(e,)630 1455 y(ev)m(en)g(when)e Ft(declare)f Fu(is)j(executed)g(in)f +s(e,)630 2909 y(ev)m(en)g(when)e Ft(declare)f Fu(is)j(executed)g(in)f (a)g(shell)h(function.)61 b(It)37 b(is)g(ignored)h(in)f(all)h(other)630 -1564 y(cases.)630 1704 y(The)50 b Ft(-I)h Fu(option)g(causes)h(lo)s +3019 y(cases.)630 3153 y(The)50 b Ft(-I)h Fu(option)g(causes)h(lo)s (cal)g(v)-5 b(ariables)51 b(to)h(inherit)f(the)g(attributes)g(\(except) -i(the)630 1813 y Fr(nameref)63 b Fu(attribute\))46 b(and)f(v)-5 -b(alue)45 b(of)h(an)m(y)f(existing)i(v)-5 b(ariable)46 -b(with)f(the)g(same)h Fr(name)630 1923 y Fu(at)40 b(a)f(surrounding)d +i(the)630 3263 y Ft(nameref)43 b Fu(attribute\))j(and)f(v)-5 +b(alue)46 b(of)f(an)m(y)h(existing)g(v)-5 b(ariable)46 +b(with)f(the)g(same)h Fr(name)630 3372 y Fu(at)40 b(a)f(surrounding)d (scop)s(e.)66 b(If)39 b(there)g(is)g(no)f(existing)i(v)-5 b(ariable,)42 b(the)d(lo)s(cal)h(v)-5 b(ariable)40 b(is)630 -2032 y(initially)32 b(unset.)630 2172 y(The)27 b(follo)m(wing)h +3482 y(initially)32 b(unset.)630 3616 y(The)27 b(follo)m(wing)h (options)g(can)f(b)s(e)g(used)f(to)i(restrict)g(output)e(to)i(v)-5 -b(ariables)28 b(with)f(the)g(sp)s(ec-)630 2281 y(i\014ed)j(attributes)h +b(ariables)28 b(with)f(the)g(sp)s(ec-)630 3726 y(i\014ed)j(attributes)h (or)f(to)h(giv)m(e)h(v)-5 b(ariables)31 b(attributes:)630 -2451 y Ft(-a)384 b Fu(Eac)m(h)36 b Fr(name)k Fu(is)34 +3885 y Ft(-a)384 b Fu(Eac)m(h)36 b Fr(name)k Fu(is)34 b(an)h(indexed)g(arra)m(y)g(v)-5 b(ariable)36 b(\(see)f(Section)h(6.7)g -([Arra)m(ys],)1110 2560 y(page)31 b(95\).)630 2730 y +([Arra)m(ys],)1110 3995 y(page)31 b(100\).)630 4154 y Ft(-A)384 b Fu(Eac)m(h)24 b Fr(name)k Fu(is)23 b(an)g(asso)s(ciativ)m (e)j(arra)m(y)e(v)-5 b(ariable)24 b(\(see)g(Section)g(6.7)g([Arra)m -(ys],)1110 2839 y(page)31 b(95\).)630 3009 y Ft(-f)384 -b Fu(Use)31 b(function)f(names)g(only)-8 b(.)630 3178 +(ys],)1110 4264 y(page)31 b(100\).)630 4423 y Ft(-f)384 +b Fu(Use)31 b(function)f(names)g(only)-8 b(.)630 4583 y Ft(-i)384 b Fu(The)36 b(v)-5 b(ariable)37 b(is)f(to)h(b)s(e)f (treated)h(as)g(an)f(in)m(teger;)41 b(arithmetic)c(ev)-5 -b(aluation)1110 3288 y(\(see)29 b(Section)f(6.5)h([Shell)f -(Arithmetic],)i(page)e(93\))h(is)f(p)s(erformed)e(when)h(the)1110 -3397 y(v)-5 b(ariable)31 b(is)g(assigned)f(a)h(v)-5 b(alue.)630 -3567 y Ft(-l)384 b Fu(When)26 b(the)g(v)-5 b(ariable)27 +b(aluation)1110 4692 y(\(see)29 b(Section)f(6.5)h([Shell)f +(Arithmetic],)i(page)e(98\))h(is)f(p)s(erformed)e(when)h(the)1110 +4802 y(v)-5 b(ariable)31 b(is)g(assigned)f(a)h(v)-5 b(alue.)630 +4961 y Ft(-l)384 b Fu(When)26 b(the)g(v)-5 b(ariable)27 b(is)f(assigned)g(a)g(v)-5 b(alue,)28 b(all)f(upp)s(er-case)e(c)m -(haracters)j(are)1110 3676 y(con)m(v)m(erted)k(to)f(lo)m(w)m(er-case.) +(haracters)j(are)1110 5071 y(con)m(v)m(erted)k(to)f(lo)m(w)m(er-case.) 43 b(The)30 b(upp)s(er-case)g(attribute)h(is)g(disabled.)630 -3846 y Ft(-n)384 b Fu(Giv)m(e)28 b(eac)m(h)g Fr(name)k -Fu(the)27 b Fr(nameref)44 b Fu(attribute,)28 b(making)f(it)h(a)f(name)f -(reference)1110 3955 y(to)32 b(another)g(v)-5 b(ariable.)46 +5230 y Ft(-n)384 b Fu(Giv)m(e)28 b(eac)m(h)g Fr(name)k +Fu(the)27 b Ft(nameref)d Fu(attribute,)29 b(making)e(it)g(a)g(name)f +(reference)1110 5340 y(to)32 b(another)g(v)-5 b(ariable.)46 b(That)31 b(other)h(v)-5 b(ariable)33 b(is)f(de\014ned)e(b)m(y)i(the)g -(v)-5 b(alue)32 b(of)1110 4065 y Fr(name)p Fu(.)54 b(All)35 -b(references,)h(assignmen)m(ts,)h(and)d(attribute)h(mo)s(di\014cations) -g(to)1110 4174 y Fr(name)p Fu(,)27 b(except)f(for)f(those)h(using)f(or) -g(c)m(hanging)h(the)f Ft(-n)g Fu(attribute)h(itself,)i(are)1110 -4284 y(p)s(erformed)22 b(on)h(the)g(v)-5 b(ariable)25 -b(referenced)e(b)m(y)g Fr(name)5 b Fu('s)23 b(v)-5 b(alue.)39 -b(The)23 b(nameref)1110 4394 y(attribute)31 b(cannot)g(b)s(e)f(applied) -g(to)h(arra)m(y)g(v)-5 b(ariables.)630 4563 y Ft(-r)384 -b Fu(Mak)m(e)25 b Fr(name)5 b Fu(s)23 b(readonly)-8 b(.)39 -b(These)24 b(names)f(cannot)h(then)f(b)s(e)g(assigned)h(v)-5 -b(alues)1110 4672 y(b)m(y)30 b(subsequen)m(t)g(assignmen)m(t)h -(statemen)m(ts)h(or)f(unset.)630 4842 y Ft(-t)384 b Fu(Giv)m(e)33 -b(eac)m(h)h Fr(name)j Fu(the)32 b Ft(trace)f Fu(attribute.)46 -b(T)-8 b(raced)32 b(functions)g(inherit)g(the)1110 4951 -y Ft(DEBUG)26 b Fu(and)h Ft(RETURN)f Fu(traps)h(from)g(the)h(calling)h -(shell.)40 b(The)27 b(trace)i(attribute)1110 5061 y(has)h(no)g(sp)s -(ecial)h(meaning)g(for)f(v)-5 b(ariables.)630 5230 y -Ft(-u)384 b Fu(When)28 b(the)h(v)-5 b(ariable)29 b(is)f(assigned)h(a)f -(v)-5 b(alue,)30 b(all)f(lo)m(w)m(er-case)i(c)m(haracters)f(are)1110 -5340 y(con)m(v)m(erted)i(to)f(upp)s(er-case.)40 b(The)30 -b(lo)m(w)m(er-case)j(attribute)e(is)g(disabled.)p eop -end -%%Page: 55 61 -TeXDict begin 55 60 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(55)630 299 y Ft(-x)384 -b Fu(Mark)30 b(eac)m(h)h Fr(name)k Fu(for)29 b(exp)s(ort)h(to)g -(subsequen)m(t)f(commands)h(via)g(the)g(en)m(vi-)1110 -408 y(ronmen)m(t.)630 560 y(Using)e(`)p Ft(+)p Fu(')h(instead)f(of)g(`) -p Ft(-)p Fu(')g(turns)f(o\013)i(the)f(attribute)h(instead,)g(with)f -(the)g(exceptions)h(that)630 670 y(`)p Ft(+a)p Fu(')23 +(v)-5 b(alue)32 b(of)p eop end +%%Page: 59 65 +TeXDict begin 59 64 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(59)1110 299 y +Fr(name)p Fu(.)54 b(All)35 b(references,)h(assignmen)m(ts,)h(and)d +(attribute)h(mo)s(di\014cations)g(to)1110 408 y Fr(name)p +Fu(,)27 b(except)f(for)f(those)h(using)f(or)g(c)m(hanging)h(the)f +Ft(-n)g Fu(attribute)h(itself,)i(are)1110 518 y(p)s(erformed)22 +b(on)h(the)g(v)-5 b(ariable)25 b(referenced)e(b)m(y)g +Fr(name)5 b Fu('s)23 b(v)-5 b(alue.)39 b(The)23 b(nameref)1110 +628 y(attribute)31 b(cannot)g(b)s(e)f(applied)g(to)h(arra)m(y)g(v)-5 +b(ariables.)630 785 y Ft(-r)384 b Fu(Mak)m(e)25 b Fr(name)5 +b Fu(s)23 b(readonly)-8 b(.)39 b(These)24 b(names)f(cannot)h(then)f(b)s +(e)g(assigned)h(v)-5 b(alues)1110 894 y(b)m(y)30 b(subsequen)m(t)g +(assignmen)m(t)h(statemen)m(ts)h(or)f(unset.)630 1052 +y Ft(-t)384 b Fu(Giv)m(e)33 b(eac)m(h)h Fr(name)j Fu(the)32 +b Ft(trace)f Fu(attribute.)46 b(T)-8 b(raced)32 b(functions)g(inherit)g +(the)1110 1161 y Ft(DEBUG)26 b Fu(and)h Ft(RETURN)f Fu(traps)h(from)g +(the)h(calling)h(shell.)40 b(The)27 b(trace)i(attribute)1110 +1271 y(has)h(no)g(sp)s(ecial)h(meaning)g(for)f(v)-5 b(ariables.)630 +1428 y Ft(-u)384 b Fu(When)28 b(the)h(v)-5 b(ariable)29 +b(is)f(assigned)h(a)f(v)-5 b(alue,)30 b(all)f(lo)m(w)m(er-case)i(c)m +(haracters)f(are)1110 1538 y(con)m(v)m(erted)i(to)f(upp)s(er-case.)40 +b(The)30 b(lo)m(w)m(er-case)j(attribute)e(is)g(disabled.)630 +1695 y Ft(-x)384 b Fu(Mark)30 b(eac)m(h)h Fr(name)k Fu(for)29 +b(exp)s(ort)h(to)g(subsequen)m(t)f(commands)h(via)g(the)g(en)m(vi-)1110 +1805 y(ronmen)m(t.)630 1962 y(Using)e(`)p Ft(+)p Fu(')h(instead)f(of)g +(`)p Ft(-)p Fu(')g(turns)f(o\013)i(the)f(attribute)h(instead,)g(with)f +(the)g(exceptions)h(that)630 2071 y(`)p Ft(+a)p Fu(')23 b(and)f(`)p Ft(+A)p Fu(')h(ma)m(y)h(not)f(b)s(e)f(used)g(to)i(destro)m (y)g(arra)m(y)f(v)-5 b(ariables)24 b(and)e(`)p Ft(+r)p -Fu(')h(will)g(not)g(remo)m(v)m(e)630 780 y(the)36 b(readonly)h +Fu(')h(will)g(not)g(remo)m(v)m(e)630 2181 y(the)36 b(readonly)h (attribute.)59 b(When)36 b(used)f(in)h(a)h(function,)g -Ft(declare)d Fu(mak)m(es)j(eac)m(h)h Fr(name)630 889 +Ft(declare)d Fu(mak)m(es)j(eac)m(h)h Fr(name)630 2291 y Fu(lo)s(cal,)e(as)d(with)h(the)f Ft(local)f Fu(command,)j(unless)d (the)i Ft(-g)f Fu(option)h(is)f(used.)49 b(If)33 b(a)h(v)-5 -b(ariable)630 999 y(name)30 b(is)h(follo)m(w)m(ed)h(b)m(y)e(=)p +b(ariable)630 2400 y(name)30 b(is)h(follo)m(w)m(ed)h(b)m(y)e(=)p Fr(v)-5 b(alue)p Fu(,)31 b(the)f(v)-5 b(alue)31 b(of)g(the)f(v)-5 b(ariable)32 b(is)e(set)h(to)g Fr(v)-5 b(alue)p Fu(.)630 -1130 y(When)41 b(using)g Ft(-a)g Fu(or)h Ft(-A)e Fu(and)h(the)h(comp)s +2534 y(When)41 b(using)g Ft(-a)g Fu(or)h Ft(-A)e Fu(and)h(the)h(comp)s (ound)e(assignmen)m(t)i(syn)m(tax)g(to)g(create)h(arra)m(y)630 -1239 y(v)-5 b(ariables,)28 b(additional)f(attributes)g(do)f(not)h(tak)m +2643 y(v)-5 b(ariables,)28 b(additional)f(attributes)g(do)f(not)h(tak)m (e)h(e\013ect)g(un)m(til)e(subsequen)m(t)g(assignmen)m(ts.)630 -1370 y(The)35 b(return)f(status)i(is)g(zero)g(unless)f(an)g(in)m(v)-5 +2777 y(The)35 b(return)f(status)i(is)g(zero)g(unless)f(an)g(in)m(v)-5 b(alid)36 b(option)g(is)g(encoun)m(tered,)h(an)f(attempt)630 -1480 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g(using)f(`)p +2886 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g(using)f(`)p Ft(-f)f(foo=bar)p Fu(',)h(an)h(attempt)g(is)g(made)g(to)h(assign)630 -1589 y(a)42 b(v)-5 b(alue)43 b(to)g(a)f(readonly)g(v)-5 +2996 y(a)42 b(v)-5 b(alue)43 b(to)g(a)f(readonly)g(v)-5 b(ariable,)47 b(an)42 b(attempt)h(is)f(made)g(to)h(assign)f(a)h(v)-5 -b(alue)42 b(to)h(an)630 1699 y(arra)m(y)30 b(v)-5 b(ariable)30 +b(alue)42 b(to)h(an)630 3105 y(arra)m(y)30 b(v)-5 b(ariable)30 b(without)g(using)e(the)i(comp)s(ound)e(assignmen)m(t)i(syn)m(tax)g -(\(see)h(Section)f(6.7)630 1808 y([Arra)m(ys],)47 b(page)c(95\),)48 -b(one)43 b(of)g(the)g Fr(names)k Fu(is)c(not)g(a)g(v)-5 -b(alid)43 b(shell)g(v)-5 b(ariable)44 b(name,)i(an)630 -1918 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g +(\(see)h(Section)f(6.7)630 3215 y([Arra)m(ys],)43 b(page)d(100\),)k +(one)c(of)g(the)g Fr(name)5 b Fu(s)40 b(is)f(not)h(a)g(v)-5 +b(alid)40 b(shell)g(v)-5 b(ariable)41 b(name,)h(an)630 +3324 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g (for)g(a)h(readonly)f(v)-5 b(ariable,)29 b(an)e(attempt)630 -2028 y(is)h(made)h(to)g(turn)e(o\013)i(arra)m(y)f(status)h(for)f(an)g +3434 y(is)h(made)h(to)g(turn)e(o\013)i(arra)m(y)f(status)h(for)f(an)g (arra)m(y)h(v)-5 b(ariable,)30 b(or)e(an)g(attempt)i(is)e(made)g(to)630 -2137 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g -Ft(-f)p Fu(.)150 2289 y Ft(echo)870 2420 y(echo)47 b([-neE])f([)p -Fj(arg)g Ft(...])630 2551 y Fu(Output)31 b(the)i Fr(arg)8 +3544 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g +Ft(-f)p Fu(.)150 3701 y Ft(echo)870 3834 y(echo)47 b([-neE])f([)p +Fj(arg)g Ft(...])630 3968 y Fu(Output)31 b(the)i Fr(arg)8 b Fu(s,)33 b(separated)g(b)m(y)g(spaces,)g(terminated)g(with)f(a)h -(newline.)47 b(The)32 b(return)630 2660 y(status)f(is)f(0)h(unless)f(a) +(newline.)47 b(The)32 b(return)630 4077 y(status)f(is)f(0)h(unless)f(a) h(write)g(error)f(o)s(ccurs.)41 b(If)30 b Ft(-n)g Fu(is)h(sp)s -(eci\014ed,)f(the)h(trailing)g(newline)g(is)630 2770 +(eci\014ed,)f(the)h(trailing)g(newline)g(is)630 4187 y(suppressed.)38 b(If)29 b(the)h Ft(-e)f Fu(option)h(is)f(giv)m(en,)i (in)m(terpretation)g(of)e(the)h(follo)m(wing)h(bac)m(kslash-)630 -2880 y(escap)s(ed)43 b(c)m(haracters)h(is)e(enabled.)78 +4296 y(escap)s(ed)43 b(c)m(haracters)h(is)e(enabled.)78 b(The)42 b Ft(-E)g Fu(option)h(disables)g(the)g(in)m(terpretation)h(of) -630 2989 y(these)27 b(escap)s(e)g(c)m(haracters,)i(ev)m(en)e(on)g +630 4406 y(these)27 b(escap)s(e)g(c)m(haracters,)i(ev)m(en)e(on)g (systems)f(where)g(they)h(are)g(in)m(terpreted)g(b)m(y)f(default.)630 -3099 y(The)32 b Ft(xpg_echo)f Fu(shell)i(option)g(ma)m(y)h(b)s(e)e +4516 y(The)32 b Ft(xpg_echo)f Fu(shell)i(option)g(ma)m(y)h(b)s(e)e (used)g(to)h(dynamically)h(determine)f(whether)f(or)630 -3208 y(not)h Ft(echo)f Fu(expands)g(these)h(escap)s(e)h(c)m(haracters)g +4625 y(not)h Ft(echo)f Fu(expands)g(these)h(escap)s(e)h(c)m(haracters)g (b)m(y)f(default.)48 b Ft(echo)32 b Fu(do)s(es)g(not)i(in)m(terpret)630 -3318 y Ft(--)c Fu(to)h(mean)f(the)h(end)f(of)g(options.)630 -3449 y Ft(echo)f Fu(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f -(sequences:)630 3601 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 -3753 y Ft(\\b)384 b Fu(bac)m(kspace)630 3905 y Ft(\\c)g -Fu(suppress)28 b(further)h(output)630 4057 y Ft(\\e)630 -4166 y(\\E)384 b Fu(escap)s(e)630 4318 y Ft(\\f)g Fu(form)30 -b(feed)630 4470 y Ft(\\n)384 b Fu(new)30 b(line)630 4622 -y Ft(\\r)384 b Fu(carriage)32 b(return)630 4774 y Ft(\\t)384 -b Fu(horizon)m(tal)32 b(tab)630 4926 y Ft(\\v)384 b Fu(v)m(ertical)32 -b(tab)630 5078 y Ft(\\\\)384 b Fu(bac)m(kslash)630 5230 +4735 y Ft(--)c Fu(to)h(mean)f(the)h(end)f(of)g(options.)630 +4868 y Ft(echo)f Fu(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f +(sequences:)630 5026 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 +5183 y Ft(\\b)384 b Fu(bac)m(kspace)630 5340 y Ft(\\c)g +Fu(suppress)28 b(further)h(output)p eop end +%%Page: 60 66 +TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(60)630 299 y Ft(\\e)630 +408 y(\\E)384 b Fu(escap)s(e)630 556 y Ft(\\f)g Fu(form)30 +b(feed)630 703 y Ft(\\n)384 b Fu(new)30 b(line)630 851 +y Ft(\\r)384 b Fu(carriage)32 b(return)630 998 y Ft(\\t)384 +b Fu(horizon)m(tal)32 b(tab)630 1145 y Ft(\\v)384 b Fu(v)m(ertical)32 +b(tab)630 1293 y Ft(\\\\)384 b Fu(bac)m(kslash)630 1440 y Ft(\\0)p Fj(nnn)240 b Fu(the)32 b(eigh)m(t-bit)i(c)m(haracter)g (whose)e(v)-5 b(alue)33 b(is)f(the)g(o)s(ctal)i(v)-5 -b(alue)32 b Fr(nnn)f Fu(\(zero)i(to)1110 5340 y(three)e(o)s(ctal)g -(digits\))p eop end -%%Page: 56 62 -TeXDict begin 56 61 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y Ft(\\x)p -Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e(v)-5 -b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39 b -Fr(HH)1110 408 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630 -563 y Ft(\\u)p Fj(HHHH)192 b Fu(the)41 b(Unico)s(de)g(\(ISO/IEC)f -(10646\))j(c)m(haracter)g(whose)e(v)-5 b(alue)41 b(is)g(the)g(hex-)1110 -673 y(adecimal)32 b(v)-5 b(alue)31 b Fr(HHHH)41 b Fu(\(one)31 -b(to)g(four)e(hex)h(digits\))630 828 y Ft(\\U)p Fj(HHHHHHHH)1110 -938 y Fu(the)41 b(Unico)s(de)g(\(ISO/IEC)f(10646\))j(c)m(haracter)g -(whose)e(v)-5 b(alue)41 b(is)g(the)g(hex-)1110 1047 y(adecimal)32 -b(v)-5 b(alue)31 b Fr(HHHHHHHH)41 b Fu(\(one)31 b(to)g(eigh)m(t)h(hex)e -(digits\))150 1202 y Ft(enable)870 1334 y(enable)46 b([-a])h([-dnps])f -([-f)g Fj(filename)p Ft(])g([)p Fj(name)g Ft(...)o(])630 -1467 y Fu(Enable)36 b(and)f(disable)h(builtin)g(shell)g(commands.)56 +b(alue)32 b Fr(nnn)f Fu(\(zero)i(to)1110 1550 y(three)e(o)s(ctal)g +(digits\))630 1697 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c) +m(haracter)g(whose)e(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 +b(alue)39 b Fr(HH)1110 1807 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e +(digits\))630 1954 y Ft(\\u)p Fj(HHHH)192 b Fu(the)41 +b(Unico)s(de)g(\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5 +b(alue)41 b(is)g(the)g(hex-)1110 2064 y(adecimal)32 b(v)-5 +b(alue)31 b Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)e(hex)h(digits\))630 +2211 y Ft(\\U)p Fj(HHHHHHHH)1110 2321 y Fu(the)41 b(Unico)s(de)g +(\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5 b(alue)41 +b(is)g(the)g(hex-)1110 2430 y(adecimal)32 b(v)-5 b(alue)31 +b Fr(HHHHHHHH)41 b Fu(\(one)31 b(to)g(eigh)m(t)h(hex)e(digits\))150 +2578 y Ft(enable)870 2706 y(enable)46 b([-a])h([-dnps])f([-f)g +Fj(filename)p Ft(])g([)p Fj(name)g Ft(...)o(])630 2835 +y Fu(Enable)36 b(and)f(disable)h(builtin)g(shell)g(commands.)56 b(Disabling)37 b(a)g(builtin)e(allo)m(ws)i(a)f(disk)630 -1576 y(command)e(whic)m(h)g(has)g(the)g(same)h(name)f(as)h(a)f(shell)h -(builtin)e(to)i(b)s(e)f(executed)h(without)630 1686 y(sp)s(ecifying)27 +2944 y(command)e(whic)m(h)g(has)g(the)g(same)h(name)f(as)h(a)f(shell)h +(builtin)e(to)i(b)s(e)f(executed)h(without)630 3054 y(sp)s(ecifying)27 b(a)g(full)g(pathname,)g(ev)m(en)h(though)f(the)g(shell)g(normally)g -(searc)m(hes)h(for)f(builtins)630 1795 y(b)s(efore)35 +(searc)m(hes)h(for)f(builtins)630 3163 y(b)s(efore)35 b(disk)g(commands.)55 b(If)35 b Ft(-n)g Fu(is)g(used,)h(the)g Fr(name)5 b Fu(s)35 b(b)s(ecome)h(disabled.)55 b(Otherwise)630 -1905 y Fr(name)5 b Fu(s)44 b(are)h(enabled.)82 b(F)-8 +3273 y Fr(name)5 b Fu(s)44 b(are)h(enabled.)82 b(F)-8 b(or)45 b(example,)k(to)c(use)f(the)g Ft(test)f Fu(binary)h(found)f -(via)h Ft($PATH)630 2015 y Fu(instead)31 b(of)f(the)h(shell)f(builtin)g +(via)h Ft($PATH)630 3382 y Fu(instead)31 b(of)f(the)h(shell)f(builtin)g (v)m(ersion,)h(t)m(yp)s(e)g(`)p Ft(enable)e(-n)h(test)p -Fu('.)630 2147 y(If)45 b(the)i Ft(-p)e Fu(option)h(is)g(supplied,)j(or) +Fu('.)630 3511 y(If)45 b(the)i Ft(-p)e Fu(option)h(is)g(supplied,)j(or) d(no)g Fr(name)51 b Fu(argumen)m(ts)46 b(app)s(ear,)k(a)c(list)h(of)f -(shell)630 2256 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38 +(shell)630 3621 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38 b(no)f(other)h(argumen)m(ts,)j(the)d(list)g(consists)g(of)g(all)h -(enabled)630 2366 y(shell)d(builtins.)57 b(The)35 b Ft(-a)h +(enabled)630 3730 y(shell)d(builtins.)57 b(The)35 b Ft(-a)h Fu(option)g(means)g(to)g(list)h(eac)m(h)g(builtin)f(with)f(an)h -(indication)h(of)630 2476 y(whether)30 b(or)g(not)h(it)g(is)f(enabled.) -630 2608 y(The)22 b Ft(-f)f Fu(option)h(means)g(to)h(load)g(the)f(new)g +(indication)h(of)630 3840 y(whether)30 b(or)g(not)h(it)g(is)f(enabled.) +630 3968 y(The)22 b Ft(-f)f Fu(option)h(means)g(to)h(load)g(the)f(new)g (builtin)f(command)h Fr(name)27 b Fu(from)22 b(shared)f(ob)5 -b(ject)630 2717 y Fr(\014lename)p Fu(,)33 b(on)e(systems)h(that)h(supp) -s(ort)d(dynamic)i(loading.)46 b(The)31 b Ft(-d)g Fu(option)h(will)h -(delete)630 2827 y(a)e(builtin)f(loaded)h(with)f Ft(-f)p -Fu(.)630 2959 y(If)j(there)i(are)f(no)g(options,)h(a)f(list)h(of)f(the) -g(shell)g(builtins)g(is)g(displa)m(y)m(ed.)52 b(The)33 -b Ft(-s)g Fu(option)630 3069 y(restricts)j Ft(enable)d -Fu(to)j(the)f Fm(posix)f Fu(sp)s(ecial)i(builtins.)54 +b(ject)630 4078 y Fr(\014lename)p Fu(,)31 b(on)f(systems)g(that)h(supp) +s(ort)e(dynamic)h(loading.)41 b(Bash)31 b(will)f(use)g(the)h(v)-5 +b(alue)31 b(of)630 4187 y(the)39 b Ft(BASH_LOADABLES_PATH)34 +b Fu(v)-5 b(ariable)40 b(as)f(a)h(colon-separated)h(list)f(of)f +(directories)h(in)630 4297 y(whic)m(h)31 b(to)h(searc)m(h)g(for)f +Fr(\014lename)p Fu(.)44 b(The)31 b(default)g(is)h(system-dep)s(enden)m +(t.)43 b(The)31 b Ft(-d)f Fu(option)630 4407 y(will)h(delete)g(a)g +(builtin)f(loaded)h(with)f Ft(-f)p Fu(.)630 4535 y(If)j(there)i(are)f +(no)g(options,)h(a)f(list)h(of)f(the)g(shell)g(builtins)g(is)g(displa)m +(y)m(ed.)52 b(The)33 b Ft(-s)g Fu(option)630 4645 y(restricts)j +Ft(enable)d Fu(to)j(the)f Fm(posix)f Fu(sp)s(ecial)i(builtins.)54 b(If)34 b Ft(-s)h Fu(is)g(used)f(with)g Ft(-f)p Fu(,)i(the)f(new)630 -3178 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i -(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(72\).)630 -3311 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i -Fr(name)k Fu(is)26 b(not)g(a)h(shell)f(builtin)g(or)g(there)g(is)g(an)g -(error)630 3420 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g -(ob)5 b(ject.)150 3575 y Ft(help)870 3707 y(help)47 b([-dms])f([)p -Fj(pattern)p Ft(])630 3840 y Fu(Displa)m(y)40 b(helpful)e(information)h -(ab)s(out)g(builtin)f(commands.)66 b(If)38 b Fr(pattern)h -Fu(is)g(sp)s(eci\014ed,)630 3949 y Ft(help)28 b Fu(giv)m(es)i(detailed) -g(help)e(on)h(all)h(commands)e(matc)m(hing)i Fr(pattern)p -Fu(,)g(otherwise)f(a)g(list)h(of)630 4059 y(the)h(builtins)e(is)i(prin) -m(ted.)630 4191 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo) -m(wing)h(meanings:)630 4346 y Ft(-d)384 b Fu(Displa)m(y)32 -b(a)e(short)g(description)h(of)f(eac)m(h)i Fr(pattern)630 -4501 y Ft(-m)384 b Fu(Displa)m(y)32 b(the)e(description)g(of)h(eac)m(h) -h Fr(pattern)e Fu(in)g(a)h(manpage-lik)m(e)h(format)630 -4656 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(a)h(short)f(usage)h -(synopsis)e(for)i(eac)m(h)g Fr(pattern)630 4811 y Fu(The)f(return)f -(status)i(is)f(zero)h(unless)f(no)g(command)h(matc)m(hes)g -Fr(pattern)p Fu(.)150 4966 y Ft(let)870 5098 y(let)47 -b Fj(expression)e Ft([)p Fj(expression)g Ft(...)o(])630 -5230 y Fu(The)c Ft(let)g Fu(builtin)g(allo)m(ws)i(arithmetic)f(to)h(b)s -(e)d(p)s(erformed)g(on)i(shell)g(v)-5 b(ariables.)74 -b(Eac)m(h)630 5340 y Fr(expression)31 b Fu(is)g(ev)-5 -b(aluated)32 b(according)f(to)h(the)f(rules)g(giv)m(en)h(b)s(elo)m(w)f -(in)f(Section)i(6.5)g([Shell)p eop end -%%Page: 57 63 -TeXDict begin 57 62 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 y(Arithmetic],)51 -b(page)46 b(93.)87 b(If)45 b(the)g(last)h Fr(expression)g -Fu(ev)-5 b(aluates)47 b(to)f(0,)k Ft(let)44 b Fu(returns)g(1;)630 -408 y(otherwise)31 b(0)g(is)f(returned.)150 568 y Ft(local)870 -702 y(local)46 b([)p Fj(option)p Ft(])g Fj(name)p Ft([=)p -Fj(value)p Ft(])e(...)630 836 y Fu(F)-8 b(or)27 b(eac)m(h)g(argumen)m -(t,)g(a)f(lo)s(cal)h(v)-5 b(ariable)27 b(named)e Fr(name)31 -b Fu(is)26 b(created,)i(and)d(assigned)h Fr(v)-5 b(alue)p -Fu(.)630 946 y(The)37 b Fr(option)h Fu(can)f(b)s(e)g(an)m(y)h(of)f(the) -h(options)g(accepted)g(b)m(y)g Ft(declare)p Fu(.)59 b -Ft(local)36 b Fu(can)i(only)630 1055 y(b)s(e)j(used)h(within)f(a)i -(function;)48 b(it)42 b(mak)m(es)h(the)f(v)-5 b(ariable)43 -b Fr(name)48 b Fu(ha)m(v)m(e)43 b(a)f(visible)h(scop)s(e)630 -1165 y(restricted)h(to)f(that)h(function)e(and)g(its)i(c)m(hildren.)78 -b(If)42 b Fr(name)48 b Fu(is)43 b(`)p Ft(-)p Fu(',)j(the)d(set)h(of)f -(shell)630 1275 y(options)34 b(is)f(made)g(lo)s(cal)i(to)f(the)f -(function)g(in)g(whic)m(h)g Ft(local)f Fu(is)h(in)m(v)m(ok)m(ed:)48 -b(shell)34 b(options)630 1384 y(c)m(hanged)e(using)e(the)i -Ft(set)e Fu(builtin)h(inside)g(the)g(function)g(are)g(restored)h(to)g -(their)f(original)630 1494 y(v)-5 b(alues)36 b(when)e(the)i(function)f +4754 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i +(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(77\).)630 +4883 y(If)24 b(no)g(options)h(are)g(supplied)e(and)h(a)h +Fr(name)k Fu(is)c(not)f(a)h(shell)g(builtin,)g Ft(enable)e +Fu(will)i(attempt)630 4992 y(to)c(load)g Fr(name)26 b +Fu(from)20 b(a)g(shared)g(ob)5 b(ject)21 b(named)f Fr(name)p +Fu(,)j(as)d(if)h(the)f(command)h(w)m(ere)f(`)p Ft(enable)630 +5102 y(-f)30 b Fj(name)f(name)p Fu('.)630 5230 y(The)d(return)f(status) +h(is)g(zero)h(unless)e(a)i Fr(name)k Fu(is)26 b(not)g(a)h(shell)f +(builtin)g(or)g(there)g(is)g(an)g(error)630 5340 y(loading)31 +b(a)g(new)f(builtin)g(from)g(a)g(shared)g(ob)5 b(ject.)p +eop end +%%Page: 61 67 +TeXDict begin 61 66 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(61)150 299 y Ft(help)870 +435 y(help)47 b([-dms])f([)p Fj(pattern)p Ft(])630 571 +y Fu(Displa)m(y)40 b(helpful)e(information)h(ab)s(out)g(builtin)f +(commands.)66 b(If)38 b Fr(pattern)h Fu(is)g(sp)s(eci\014ed,)630 +681 y Ft(help)28 b Fu(giv)m(es)i(detailed)g(help)e(on)h(all)h(commands) +e(matc)m(hing)i Fr(pattern)p Fu(,)g(otherwise)f(a)g(list)h(of)630 +790 y(the)h(builtins)e(is)i(prin)m(ted.)630 926 y(Options,)f(if)h +(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 +1089 y Ft(-d)384 b Fu(Displa)m(y)32 b(a)e(short)g(description)h(of)f +(eac)m(h)i Fr(pattern)630 1251 y Ft(-m)384 b Fu(Displa)m(y)32 +b(the)e(description)g(of)h(eac)m(h)h Fr(pattern)e Fu(in)g(a)h +(manpage-lik)m(e)h(format)630 1414 y Ft(-s)384 b Fu(Displa)m(y)32 +b(only)e(a)h(short)f(usage)h(synopsis)e(for)i(eac)m(h)g +Fr(pattern)630 1576 y Fu(The)f(return)f(status)i(is)f(zero)h(unless)f +(no)g(command)h(matc)m(hes)g Fr(pattern)p Fu(.)150 1739 +y Ft(let)870 1875 y(let)47 b Fj(expression)e Ft([)p Fj(expression)g +Ft(...)o(])630 2011 y Fu(The)c Ft(let)g Fu(builtin)g(allo)m(ws)i +(arithmetic)f(to)h(b)s(e)d(p)s(erformed)g(on)i(shell)g(v)-5 +b(ariables.)74 b(Eac)m(h)630 2120 y Fr(expression)31 +b Fu(is)g(ev)-5 b(aluated)32 b(according)f(to)h(the)f(rules)g(giv)m(en) +h(b)s(elo)m(w)f(in)f(Section)i(6.5)g([Shell)630 2230 +y(Arithmetic],)51 b(page)46 b(98.)87 b(If)45 b(the)g(last)h +Fr(expression)g Fu(ev)-5 b(aluates)47 b(to)f(0,)k Ft(let)44 +b Fu(returns)g(1;)630 2340 y(otherwise)31 b(0)g(is)f(returned.)150 +2502 y Ft(local)870 2638 y(local)46 b([)p Fj(option)p +Ft(])g Fj(name)p Ft([=)p Fj(value)p Ft(])e(...)630 2774 +y Fu(F)-8 b(or)27 b(eac)m(h)g(argumen)m(t,)g(a)f(lo)s(cal)h(v)-5 +b(ariable)27 b(named)e Fr(name)31 b Fu(is)26 b(created,)i(and)d +(assigned)h Fr(v)-5 b(alue)p Fu(.)630 2884 y(The)37 b +Fr(option)h Fu(can)f(b)s(e)g(an)m(y)h(of)f(the)h(options)g(accepted)g +(b)m(y)g Ft(declare)p Fu(.)59 b Ft(local)36 b Fu(can)i(only)630 +2993 y(b)s(e)j(used)h(within)f(a)i(function;)48 b(it)42 +b(mak)m(es)h(the)f(v)-5 b(ariable)43 b Fr(name)48 b Fu(ha)m(v)m(e)43 +b(a)f(visible)h(scop)s(e)630 3103 y(restricted)h(to)f(that)h(function)e +(and)g(its)i(c)m(hildren.)78 b(If)42 b Fr(name)48 b Fu(is)43 +b(`)p Ft(-)p Fu(',)j(the)d(set)h(of)f(shell)630 3212 +y(options)34 b(is)f(made)g(lo)s(cal)i(to)f(the)f(function)g(in)g(whic)m +(h)g Ft(local)f Fu(is)h(in)m(v)m(ok)m(ed:)48 b(shell)34 +b(options)630 3322 y(c)m(hanged)e(using)e(the)i Ft(set)e +Fu(builtin)h(inside)g(the)g(function)g(are)g(restored)h(to)g(their)f +(original)630 3432 y(v)-5 b(alues)36 b(when)e(the)i(function)f (returns.)54 b(The)35 b(restore)h(is)g(e\013ected)h(as)e(if)h(a)g -(series)f(of)h Ft(set)630 1603 y Fu(commands)j(w)m(ere)g(executed)h(to) +(series)f(of)h Ft(set)630 3541 y Fu(commands)j(w)m(ere)g(executed)h(to) f(restore)h(the)f(v)-5 b(alues)39 b(that)h(w)m(ere)f(in)f(place)i(b)s -(efore)f(the)630 1713 y(function.)j(The)30 b(return)g(status)h(is)g +(efore)f(the)630 3651 y(function.)j(The)30 b(return)g(status)h(is)g (zero)h(unless)e Ft(local)g Fu(is)h(used)f(outside)h(a)g(function,)g -(an)630 1823 y(in)m(v)-5 b(alid)31 b Fr(name)k Fu(is)c(supplied,)e(or)i +(an)630 3760 y(in)m(v)-5 b(alid)31 b Fr(name)k Fu(is)c(supplied,)e(or)i Fr(name)k Fu(is)c(a)f(readonly)h(v)-5 b(ariable.)150 -1982 y Ft(logout)870 2116 y(logout)46 b([)p Fj(n)p Ft(])630 -2250 y Fu(Exit)31 b(a)g(login)g(shell,)g(returning)e(a)i(status)g(of)f -Fr(n)g Fu(to)h(the)g(shell's)f(paren)m(t.)150 2409 y -Ft(mapfile)870 2544 y(mapfile)46 b([-d)h Fj(delim)p Ft(])f([-n)h +3923 y Ft(logout)870 4059 y(logout)46 b([)p Fj(n)p Ft(])630 +4195 y Fu(Exit)31 b(a)g(login)g(shell,)g(returning)e(a)i(status)g(of)f +Fr(n)g Fu(to)h(the)g(shell's)f(paren)m(t.)150 4357 y +Ft(mapfile)870 4493 y(mapfile)46 b([-d)h Fj(delim)p Ft(])f([-n)h Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)g Fj(count)p -Ft(])1061 2653 y([-t])h([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p +Ft(])1061 4603 y([-t])h([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p Ft(])f([-c)g Fj(quantum)p Ft(])g([)p Fj(array)p Ft(])630 -2788 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j +4739 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j (the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 b Fr(arra)m(y)p -Fu(,)i(or)630 2897 y(from)28 b(\014le)h(descriptor)f +Fu(,)i(or)630 4849 y(from)28 b(\014le)h(descriptor)f Fr(fd)k Fu(if)c(the)h Ft(-u)f Fu(option)h(is)g(supplied.)39 b(The)28 b(v)-5 b(ariable)29 b Ft(MAPFILE)e Fu(is)i(the)630 -3007 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30 +4958 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30 b(if)g(supplied,)g(ha)m(v)m(e)h(the)g(follo)m(wing)h(meanings:)630 -3166 y Ft(-d)384 b Fu(The)37 b(\014rst)g(c)m(haracter)i(of)f +5121 y Ft(-d)384 b Fu(The)37 b(\014rst)g(c)m(haracter)i(of)f Fr(delim)g Fu(is)f(used)g(to)h(terminate)h(eac)m(h)g(input)d(line,)1110 -3275 y(rather)41 b(than)h(newline.)74 b(If)41 b Fr(delim)h +5230 y(rather)41 b(than)h(newline.)74 b(If)41 b Fr(delim)h Fu(is)g(the)f(empt)m(y)h(string,)j Ft(mapfile)40 b Fu(will)1110 -3385 y(terminate)31 b(a)g(line)g(when)e(it)i(reads)f(a)h(NUL)g(c)m -(haracter.)630 3544 y Ft(-n)384 b Fu(Cop)m(y)30 b(at)h(most)g -Fr(coun)m(t)i Fu(lines.)41 b(If)30 b Fr(coun)m(t)j Fu(is)d(0,)h(all)h -(lines)e(are)h(copied.)630 3703 y Ft(-O)384 b Fu(Begin)31 -b(assigning)g(to)g Fr(arra)m(y)39 b Fu(at)31 b(index)f -Fr(origin)p Fu(.)41 b(The)30 b(default)h(index)f(is)g(0.)630 -3862 y Ft(-s)384 b Fu(Discard)31 b(the)f(\014rst)g Fr(coun)m(t)j -Fu(lines)e(read.)630 4021 y Ft(-t)384 b Fu(Remo)m(v)m(e)32 -b(a)f(trailing)g Fr(delim)g Fu(\(default)g(newline\))f(from)g(eac)m(h)i -(line)f(read.)630 4180 y Ft(-u)384 b Fu(Read)31 b(lines)f(from)g -(\014le)h(descriptor)f Fr(fd)j Fu(instead)e(of)f(the)h(standard)e -(input.)630 4340 y Ft(-C)384 b Fu(Ev)-5 b(aluate)26 b -Fr(callbac)m(k)33 b Fu(eac)m(h)26 b(time)g Fr(quan)m(tum)f -Fu(lines)g(are)g(read.)39 b(The)25 b Ft(-c)f Fu(option)1110 -4449 y(sp)s(eci\014es)30 b Fr(quan)m(tum)p Fu(.)630 4608 -y Ft(-c)384 b Fu(Sp)s(ecify)30 b(the)g(n)m(um)m(b)s(er)f(of)i(lines)f -(read)h(b)s(et)m(w)m(een)g(eac)m(h)g(call)h(to)f Fr(callbac)m(k)p -Fu(.)630 4767 y(If)36 b Ft(-C)g Fu(is)g(sp)s(eci\014ed)g(without)g -Ft(-c)p Fu(,)h(the)g(default)f(quan)m(tum)g(is)h(5000.)60 -b(When)36 b Fr(callbac)m(k)44 b Fu(is)630 4877 y(ev)-5 -b(aluated,)30 b(it)e(is)g(supplied)f(the)h(index)f(of)i(the)f(next)g -(arra)m(y)g(elemen)m(t)h(to)g(b)s(e)e(assigned)i(and)630 -4986 y(the)39 b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i -(as)e(additional)h(argumen)m(ts.)66 b Fr(callbac)m(k)47 -b Fu(is)630 5096 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read) -g(but)g(b)s(efore)g(the)h(arra)m(y)g(elemen)m(t)g(is)g(assigned.)630 -5230 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g +5340 y(terminate)31 b(a)g(line)g(when)e(it)i(reads)f(a)h(NUL)g(c)m +(haracter.)p eop end +%%Page: 62 68 +TeXDict begin 62 67 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(62)630 299 y Ft(-n)384 +b Fu(Cop)m(y)30 b(at)h(most)g Fr(coun)m(t)i Fu(lines.)41 +b(If)30 b Fr(coun)m(t)j Fu(is)d(0,)h(all)h(lines)e(are)h(copied.)630 +446 y Ft(-O)384 b Fu(Begin)31 b(assigning)g(to)g Fr(arra)m(y)39 +b Fu(at)31 b(index)f Fr(origin)p Fu(.)41 b(The)30 b(default)h(index)f +(is)g(0.)630 594 y Ft(-s)384 b Fu(Discard)31 b(the)f(\014rst)g +Fr(coun)m(t)j Fu(lines)e(read.)630 741 y Ft(-t)384 b +Fu(Remo)m(v)m(e)32 b(a)f(trailing)g Fr(delim)g Fu(\(default)g +(newline\))f(from)g(eac)m(h)i(line)f(read.)630 888 y +Ft(-u)384 b Fu(Read)31 b(lines)f(from)g(\014le)h(descriptor)f +Fr(fd)j Fu(instead)e(of)f(the)h(standard)e(input.)630 +1036 y Ft(-C)384 b Fu(Ev)-5 b(aluate)26 b Fr(callbac)m(k)33 +b Fu(eac)m(h)26 b(time)g Fr(quan)m(tum)f Fu(lines)g(are)g(read.)39 +b(The)25 b Ft(-c)f Fu(option)1110 1145 y(sp)s(eci\014es)30 +b Fr(quan)m(tum)p Fu(.)630 1293 y Ft(-c)384 b Fu(Sp)s(ecify)30 +b(the)g(n)m(um)m(b)s(er)f(of)i(lines)f(read)h(b)s(et)m(w)m(een)g(eac)m +(h)g(call)h(to)f Fr(callbac)m(k)p Fu(.)630 1440 y(If)36 +b Ft(-C)g Fu(is)g(sp)s(eci\014ed)g(without)g Ft(-c)p +Fu(,)h(the)g(default)f(quan)m(tum)g(is)h(5000.)60 b(When)36 +b Fr(callbac)m(k)44 b Fu(is)630 1550 y(ev)-5 b(aluated,)30 +b(it)e(is)g(supplied)f(the)h(index)f(of)i(the)f(next)g(arra)m(y)g +(elemen)m(t)h(to)g(b)s(e)e(assigned)i(and)630 1659 y(the)39 +b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i(as)e +(additional)h(argumen)m(ts.)66 b Fr(callbac)m(k)47 b +Fu(is)630 1769 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read)g +(but)g(b)s(efore)g(the)h(arra)m(y)g(elemen)m(t)g(is)g(assigned.)630 +1897 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g Ft(mapfile)c Fu(will)j(clear)g Fr(arra)m(y)34 b Fu(b)s(efore)24 -b(assigning)630 5340 y(to)31 b(it.)p eop end -%%Page: 58 64 -TeXDict begin 58 63 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(58)630 299 y Ft(mapfile)41 +b(assigning)630 2007 y(to)31 b(it.)630 2135 y Ft(mapfile)41 b Fu(returns)g(successfully)i(unless)e(an)i(in)m(v)-5 b(alid)43 b(option)g(or)g(option)g(argumen)m(t)g(is)630 -408 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5 +2245 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5 b(alid)31 b(or)g(unassignable,)f(or)h Fr(arra)m(y)38 b Fu(is)31 b(not)f(an)h(indexed)e(arra)m(y)-8 b(.)150 -564 y Ft(printf)870 697 y(printf)46 b([-v)h Fj(var)p -Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 830 +2392 y Ft(printf)870 2521 y(printf)46 b([-v)h Fj(var)p +Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 2649 y Fu(W)-8 b(rite)27 b(the)g(formatted)f Fr(argumen)m(ts)k Fu(to)d(the)f(standard)f(output)h(under)e(the)i(con)m(trol)i(of)e(the) -630 939 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g +630 2759 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g (the)g(output)g(to)g(b)s(e)f(assigned)h(to)h(the)f(v)-5 -b(ariable)39 b Fr(v)-5 b(ar)630 1049 y Fu(rather)30 b(than)g(b)s(eing)g -(prin)m(ted)g(to)h(the)g(standard)e(output.)630 1181 +b(ariable)39 b Fr(v)-5 b(ar)630 2869 y Fu(rather)30 b(than)g(b)s(eing)g +(prin)m(ted)g(to)h(the)g(standard)e(output.)630 2997 y(The)36 b Fr(format)i Fu(is)f(a)f(c)m(haracter)i(string)e(whic)m(h)g (con)m(tains)i(three)e(t)m(yp)s(es)g(of)h(ob)5 b(jects:)53 -b(plain)630 1291 y(c)m(haracters,)41 b(whic)m(h)c(are)h(simply)e +b(plain)630 3107 y(c)m(haracters,)41 b(whic)m(h)c(are)h(simply)e (copied)i(to)g(standard)f(output,)i(c)m(haracter)g(escap)s(e)e(se-)630 -1401 y(quences,)g(whic)m(h)f(are)g(con)m(v)m(erted)h(and)f(copied)g(to) -g(the)g(standard)f(output,)i(and)f(format)630 1510 y(sp)s +3216 y(quences,)g(whic)m(h)f(are)g(con)m(v)m(erted)h(and)f(copied)g(to) +g(the)g(standard)f(output,)i(and)f(format)630 3326 y(sp)s (eci\014cations,)j(eac)m(h)e(of)g(whic)m(h)f(causes)g(prin)m(ting)g(of) h(the)f(next)h(successiv)m(e)g Fr(argumen)m(t)p Fu(.)630 -1620 y(In)24 b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e +3435 y(In)24 b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e Fu(formats,)27 b Ft(printf)c Fu(in)m(terprets)i(the)f(follo)m(wing)630 -1729 y(extensions:)630 1885 y Ft(\045b)384 b Fu(Causes)38 +3545 y(extensions:)630 3692 y Ft(\045b)384 b Fu(Causes)38 b Ft(printf)f Fu(to)j(expand)e(bac)m(kslash)h(escap)s(e)g(sequences)g -(in)f(the)h(cor-)1110 1995 y(resp)s(onding)31 b Fr(argumen)m(t)j +(in)f(the)h(cor-)1110 3802 y(resp)s(onding)31 b Fr(argumen)m(t)j Fu(in)e(the)h(same)f(w)m(a)m(y)h(as)g Ft(echo)c(-e)j -Fu(\(see)h(Section)g(4.2)1110 2104 y([Bash)e(Builtins],)g(page)g(51\).) -630 2260 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e +Fu(\(see)h(Section)g(4.2)1110 3912 y([Bash)e(Builtins],)g(page)g(55\).) +630 4059 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e Fu(to)i(output)g(the)g(corresp)s(onding)f Fr(argumen)m(t)j -Fu(in)d(a)i(format)1110 2370 y(that)e(can)g(b)s(e)e(reused)h(as)h -(shell)f(input.)630 2525 y Ft(\045\()p Fj(datefmt)p Ft(\)T)1110 -2635 y Fu(Causes)f Ft(printf)e Fu(to)j(output)f(the)g(date-time)i -(string)e(resulting)h(from)e(using)1110 2744 y Fr(datefm)m(t)45 -b Fu(as)d(a)g(format)g(string)g(for)g Ft(strftime)p Fu(\(3\).)74 -b(The)41 b(corresp)s(onding)1110 2854 y Fr(argumen)m(t)h -Fu(is)e(an)g(in)m(teger)i(represen)m(ting)e(the)g(n)m(um)m(b)s(er)f(of) -h(seconds)g(since)1110 2964 y(the)24 b(ep)s(o)s(c)m(h.)38 -b(Tw)m(o)24 b(sp)s(ecial)h(argumen)m(t)f(v)-5 b(alues)24 -b(ma)m(y)h(b)s(e)e(used:)36 b(-1)25 b(represen)m(ts)1110 -3073 y(the)30 b(curren)m(t)g(time,)h(and)e(-2)i(represen)m(ts)f(the)g -(time)h(the)f(shell)g(w)m(as)g(in)m(v)m(ok)m(ed.)1110 -3183 y(If)38 b(no)g(argumen)m(t)h(is)f(sp)s(eci\014ed,)i(con)m(v)m +Fu(in)d(a)i(format)1110 4169 y(that)e(can)g(b)s(e)e(reused)h(as)h +(shell)f(input.)630 4316 y Ft(\045Q)384 b Fu(lik)m(e)34 +b Ft(\045q)p Fu(,)f(but)f(applies)g(an)m(y)h(supplied)e(precision)i(to) +h(the)e Fr(argumen)m(t)j Fu(b)s(efore)1110 4425 y(quoting)c(it.)630 +4573 y Ft(\045\()p Fj(datefmt)p Ft(\)T)1110 4682 y Fu(Causes)e +Ft(printf)e Fu(to)j(output)f(the)g(date-time)i(string)e(resulting)h +(from)e(using)1110 4792 y Fr(datefm)m(t)45 b Fu(as)d(a)g(format)g +(string)g(for)g Ft(strftime)p Fu(\(3\).)74 b(The)41 b(corresp)s(onding) +1110 4902 y Fr(argumen)m(t)h Fu(is)e(an)g(in)m(teger)i(represen)m(ting) +e(the)g(n)m(um)m(b)s(er)f(of)h(seconds)g(since)1110 5011 +y(the)24 b(ep)s(o)s(c)m(h.)38 b(Tw)m(o)24 b(sp)s(ecial)h(argumen)m(t)f +(v)-5 b(alues)24 b(ma)m(y)h(b)s(e)e(used:)36 b(-1)25 +b(represen)m(ts)1110 5121 y(the)30 b(curren)m(t)g(time,)h(and)e(-2)i +(represen)m(ts)f(the)g(time)h(the)f(shell)g(w)m(as)g(in)m(v)m(ok)m(ed.) +1110 5230 y(If)38 b(no)g(argumen)m(t)h(is)f(sp)s(eci\014ed,)i(con)m(v)m (ersion)f(b)s(eha)m(v)m(es)g(as)g(if)f(-1)h(had)f(b)s(een)1110 -3292 y(giv)m(en.)k(This)29 b(is)i(an)f(exception)i(to)f(the)f(usual)g -Ft(printf)f Fu(b)s(eha)m(vior.)630 3448 y(The)d(\045b,)h(\045q,)h(and)e -(\045T)g(directiv)m(es)j(all)e(use)g(the)g(\014eld)f(width)g(and)h -(precision)g(argumen)m(ts)630 3558 y(from)f(the)g(format)h(sp)s -(eci\014cation)g(and)e(write)i(that)f(man)m(y)h(b)m(ytes)f(from)g(\(or) -h(use)e(that)i(wide)630 3667 y(a)42 b(\014eld)g(for\))g(the)h(expanded) -e(argumen)m(t,)k(whic)m(h)d(usually)g(con)m(tains)h(more)f(c)m -(haracters)630 3777 y(than)30 b(the)h(original.)630 3910 -y(Argumen)m(ts)d(to)h(non-string)e(format)i(sp)s(eci\014ers)e(are)h -(treated)h(as)g(C)e(language)j(constan)m(ts,)630 4019 -y(except)22 b(that)g(a)g(leading)g(plus)e(or)h(min)m(us)f(sign)i(is)f -(allo)m(w)m(ed,)k(and)c(if)g(the)g(leading)h(c)m(haracter)h(is)630 -4129 y(a)i(single)g(or)f(double)h(quote,)h(the)f(v)-5 -b(alue)25 b(is)f(the)h(ASCI)s(I)e(v)-5 b(alue)25 b(of)f(the)h(follo)m -(wing)h(c)m(haracter.)630 4261 y(The)31 b Fr(format)i -Fu(is)f(reused)e(as)i(necessary)f(to)i(consume)e(all)h(of)f(the)h -Fr(argumen)m(ts)p Fu(.)44 b(If)30 b(the)i Fr(for-)630 -4371 y(mat)c Fu(requires)e(more)g Fr(argumen)m(ts)k Fu(than)25 -b(are)i(supplied,)e(the)h(extra)h(format)f(sp)s(eci\014cations)630 -4481 y(b)s(eha)m(v)m(e)j(as)g(if)f(a)h(zero)g(v)-5 b(alue)29 -b(or)g(n)m(ull)f(string,)h(as)g(appropriate,)g(had)f(b)s(een)g -(supplied.)38 b(The)630 4590 y(return)29 b(v)-5 b(alue)31 -b(is)g(zero)g(on)f(success,)h(non-zero)g(on)f(failure.)150 -4746 y Ft(read)870 4879 y(read)47 b([-ers])f([-a)h Fj(aname)p +5340 y(giv)m(en.)k(This)29 b(is)i(an)f(exception)i(to)f(the)f(usual)g +Ft(printf)f Fu(b)s(eha)m(vior.)p eop end +%%Page: 63 69 +TeXDict begin 63 68 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(63)630 299 y(The)26 +b(\045b,)h(\045q,)h(and)e(\045T)g(directiv)m(es)j(all)e(use)g(the)g +(\014eld)f(width)g(and)h(precision)g(argumen)m(ts)630 +408 y(from)f(the)g(format)h(sp)s(eci\014cation)g(and)e(write)i(that)f +(man)m(y)h(b)m(ytes)f(from)g(\(or)h(use)e(that)i(wide)630 +518 y(a)42 b(\014eld)g(for\))g(the)h(expanded)e(argumen)m(t,)k(whic)m +(h)d(usually)g(con)m(tains)h(more)f(c)m(haracters)630 +628 y(than)30 b(the)h(original.)630 760 y(Argumen)m(ts)d(to)h +(non-string)e(format)i(sp)s(eci\014ers)e(are)h(treated)h(as)g(C)e +(language)j(constan)m(ts,)630 870 y(except)22 b(that)g(a)g(leading)g +(plus)e(or)h(min)m(us)f(sign)i(is)f(allo)m(w)m(ed,)k(and)c(if)g(the)g +(leading)h(c)m(haracter)h(is)630 979 y(a)i(single)g(or)f(double)h +(quote,)h(the)f(v)-5 b(alue)25 b(is)f(the)h(ASCI)s(I)e(v)-5 +b(alue)25 b(of)f(the)h(follo)m(wing)h(c)m(haracter.)630 +1112 y(The)31 b Fr(format)i Fu(is)f(reused)e(as)i(necessary)f(to)i +(consume)e(all)h(of)f(the)h Fr(argumen)m(ts)p Fu(.)44 +b(If)30 b(the)i Fr(for-)630 1222 y(mat)c Fu(requires)e(more)g +Fr(argumen)m(ts)k Fu(than)25 b(are)i(supplied,)e(the)h(extra)h(format)f +(sp)s(eci\014cations)630 1331 y(b)s(eha)m(v)m(e)j(as)g(if)f(a)h(zero)g +(v)-5 b(alue)29 b(or)g(n)m(ull)f(string,)h(as)g(appropriate,)g(had)f(b) +s(een)g(supplied.)38 b(The)630 1441 y(return)29 b(v)-5 +b(alue)31 b(is)g(zero)g(on)f(success,)h(non-zero)g(on)f(failure.)150 +1597 y Ft(read)870 1729 y(read)47 b([-ers])f([-a)h Fj(aname)p Ft(])f([-d)h Fj(delim)p Ft(])f([-i)h Fj(text)p Ft(])f([-n)h -Fj(nchars)p Ft(])1061 4988 y([-N)g Fj(nchars)p Ft(])f([-p)h +Fj(nchars)p Ft(])1061 1839 y([-N)g Fj(nchars)p Ft(])f([-p)h Fj(prompt)p Ft(])e([-t)i Fj(timeout)p Ft(])f([-u)h Fj(fd)p -Ft(])g([)p Fj(name)f Ft(...)o(])630 5121 y Fu(One)38 +Ft(])g([)p Fj(name)f Ft(...)o(])630 1972 y Fu(One)38 b(line)g(is)g(read)g(from)g(the)g(standard)f(input,)j(or)e(from)f(the)i -(\014le)f(descriptor)g Fr(fd)j Fu(sup-)630 5230 y(plied)34 +(\014le)f(descriptor)g Fr(fd)j Fu(sup-)630 2081 y(plied)34 b(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(-u)g Fu(option,)i(split)f(in)m (to)g(w)m(ords)f(as)g(describ)s(ed)g(ab)s(o)m(v)m(e)h(in)630 -5340 y(Section)j(3.5.7)h([W)-8 b(ord)38 b(Splitting],)i(page)e(32,)j -(and)36 b(the)i(\014rst)f(w)m(ord)g(is)g(assigned)h(to)g(the)p -eop end -%%Page: 59 65 -TeXDict begin 59 64 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(59)630 299 y(\014rst)32 -b Fr(name)p Fu(,)h(the)g(second)g(w)m(ord)f(to)h(the)g(second)g -Fr(name)p Fu(,)g(and)f(so)h(on.)47 b(If)32 b(there)h(are)g(more)630 -408 y(w)m(ords)39 b(than)g(names,)j(the)e(remaining)f(w)m(ords)g(and)g -(their)h(in)m(terv)m(ening)g(delimiters)h(are)630 518 -y(assigned)29 b(to)h(the)g(last)g Fr(name)p Fu(.)40 b(If)29 -b(there)g(are)h(few)m(er)f(w)m(ords)g(read)g(from)g(the)g(input)g -(stream)630 628 y(than)35 b(names,)i(the)e(remaining)h(names)f(are)h -(assigned)f(empt)m(y)h(v)-5 b(alues.)56 b(The)34 b(c)m(haracters)630 -737 y(in)e(the)h(v)-5 b(alue)33 b(of)g(the)g Ft(IFS)f -Fu(v)-5 b(ariable)33 b(are)h(used)d(to)j(split)f(the)g(line)g(in)m(to)g -(w)m(ords)g(using)f(the)630 847 y(same)d(rules)f(the)g(shell)h(uses)f -(for)g(expansion)g(\(describ)s(ed)g(ab)s(o)m(v)m(e)i(in)e(Section)h -(3.5.7)h([W)-8 b(ord)630 956 y(Splitting],)38 b(page)f(32\).)60 -b(The)35 b(bac)m(kslash)i(c)m(haracter)h(`)p Ft(\\)p -Fu(')e(ma)m(y)h(b)s(e)f(used)f(to)i(remo)m(v)m(e)h(an)m(y)630 -1066 y(sp)s(ecial)31 b(meaning)g(for)f(the)g(next)h(c)m(haracter)h -(read)e(and)g(for)g(line)h(con)m(tin)m(uation.)630 1196 -y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h -(meanings:)630 1348 y Ft(-a)e Fj(aname)114 b Fu(The)34 +2191 y(Section)j(3.5.7)h([W)-8 b(ord)38 b(Splitting],)i(page)e(35,)j +(and)36 b(the)i(\014rst)f(w)m(ord)g(is)g(assigned)h(to)g(the)630 +2300 y(\014rst)32 b Fr(name)p Fu(,)h(the)g(second)g(w)m(ord)f(to)h(the) +g(second)g Fr(name)p Fu(,)g(and)f(so)h(on.)47 b(If)32 +b(there)h(are)g(more)630 2410 y(w)m(ords)39 b(than)g(names,)j(the)e +(remaining)f(w)m(ords)g(and)g(their)h(in)m(terv)m(ening)g(delimiters)h +(are)630 2519 y(assigned)29 b(to)h(the)g(last)g Fr(name)p +Fu(.)40 b(If)29 b(there)g(are)h(few)m(er)f(w)m(ords)g(read)g(from)g +(the)g(input)g(stream)630 2629 y(than)35 b(names,)i(the)e(remaining)h +(names)f(are)h(assigned)f(empt)m(y)h(v)-5 b(alues.)56 +b(The)34 b(c)m(haracters)630 2739 y(in)e(the)h(v)-5 b(alue)33 +b(of)g(the)g Ft(IFS)f Fu(v)-5 b(ariable)33 b(are)h(used)d(to)j(split)f +(the)g(line)g(in)m(to)g(w)m(ords)g(using)f(the)630 2848 +y(same)d(rules)f(the)g(shell)h(uses)f(for)g(expansion)g(\(describ)s(ed) +g(ab)s(o)m(v)m(e)i(in)e(Section)h(3.5.7)h([W)-8 b(ord)630 +2958 y(Splitting],)38 b(page)f(35\).)60 b(The)35 b(bac)m(kslash)i(c)m +(haracter)h(`)p Ft(\\)p Fu(')e(ma)m(y)h(b)s(e)f(used)f(to)i(remo)m(v)m +(e)h(an)m(y)630 3067 y(sp)s(ecial)31 b(meaning)g(for)f(the)g(next)h(c)m +(haracter)h(read)e(and)g(for)g(line)h(con)m(tin)m(uation.)630 +3200 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h +(meanings:)630 3356 y Ft(-a)e Fj(aname)114 b Fu(The)34 b(w)m(ords)f(are)i(assigned)f(to)h(sequen)m(tial)h(indices)e(of)g(the)g -(arra)m(y)h(v)-5 b(ariable)1110 1457 y Fr(aname)p Fu(,)29 +(arra)m(y)h(v)-5 b(ariable)1110 3465 y Fr(aname)p Fu(,)29 b(starting)h(at)f(0.)40 b(All)29 b(elemen)m(ts)h(are)e(remo)m(v)m(ed)i -(from)d Fr(aname)34 b Fu(b)s(efore)1110 1567 y(the)d(assignmen)m(t.)41 +(from)d Fr(aname)34 b Fu(b)s(efore)1110 3575 y(the)d(assignmen)m(t.)41 b(Other)30 b Fr(name)36 b Fu(argumen)m(ts)30 b(are)h(ignored.)630 -1718 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f +3731 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f Fr(delim)g Fu(is)g(used)g(to)g(terminate)h(the)f(input)f(line,)1110 -1828 y(rather)31 b(than)g(newline.)42 b(If)30 b Fr(delim)h +3840 y(rather)31 b(than)g(newline.)42 b(If)30 b Fr(delim)h Fu(is)g(the)h(empt)m(y)f(string,)g Ft(read)f Fu(will)h(termi-)1110 -1937 y(nate)g(a)g(line)f(when)g(it)h(reads)f(a)h(NUL)f(c)m(haracter.) -630 2089 y Ft(-e)384 b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command) -f(Line)h(Editing],)50 b(page)45 b(111\))i(is)1110 2198 +3950 y(nate)g(a)g(line)f(when)g(it)h(reads)f(a)h(NUL)f(c)m(haracter.) +630 4106 y Ft(-e)384 b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command) +f(Line)h(Editing],)50 b(page)45 b(117\))i(is)1110 4215 y(used)37 b(to)i(obtain)g(the)f(line.)65 b(Readline)39 b(uses)e(the)i(curren)m(t)f(\(or)g(default,)j(if)1110 -2308 y(line)h(editing)g(w)m(as)g(not)g(previously)f(activ)m(e\))k -(editing)d(settings,)j(but)c(uses)1110 2418 y(Readline's)31 -b(default)g(\014lename)f(completion.)630 2569 y Ft(-i)g +4325 y(line)h(editing)g(w)m(as)g(not)g(previously)f(activ)m(e\))k +(editing)d(settings,)j(but)c(uses)1110 4434 y(Readline's)31 +b(default)g(\014lename)f(completion.)630 4590 y Ft(-i)g Fj(text)162 b Fu(If)36 b(Readline)i(is)f(b)s(eing)g(used)f(to)h(read)g (the)g(line,)j Fr(text)f Fu(is)e(placed)h(in)m(to)g(the)1110 -2679 y(editing)31 b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630 -2830 y Ft(-n)f Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j +4700 y(editing)31 b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630 +4855 y Ft(-n)f Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j (reading)f Fr(nc)m(hars)j Fu(c)m(haracters)e(rather)f(than)g(w)m -(aiting)1110 2939 y(for)d(a)h(complete)h(line)f(of)g(input,)g(but)f -(honors)g(a)h(delimiter)g(if)f(few)m(er)h(than)1110 3049 +(aiting)1110 4965 y(for)d(a)h(complete)h(line)f(of)g(input,)g(but)f +(honors)g(a)h(delimiter)g(if)f(few)m(er)h(than)1110 5075 y Fr(nc)m(hars)d Fu(c)m(haracters)e(are)e(read)h(b)s(efore)f(the)g -(delimiter.)630 3200 y Ft(-N)g Fj(nchars)66 b Ft(read)39 +(delimiter.)630 5230 y Ft(-N)g Fj(nchars)66 b Ft(read)39 b Fu(returns)f(after)j(reading)e(exactly)j Fr(nc)m(hars)h -Fu(c)m(haracters)f(rather)d(than)1110 3310 y(w)m(aiting)32 +Fu(c)m(haracters)f(rather)d(than)1110 5340 y(w)m(aiting)32 b(for)f(a)g(complete)i(line)e(of)g(input,)g(unless)f(EOF)h(is)g(encoun) -m(tered)g(or)1110 3420 y Ft(read)f Fu(times)i(out.)43 -b(Delimiter)33 b(c)m(haracters)f(encoun)m(tered)g(in)f(the)g(input)g -(are)1110 3529 y(not)g(treated)h(sp)s(ecially)f(and)f(do)h(not)g(cause) -g Ft(read)e Fu(to)j(return)d(un)m(til)i Fr(nc)m(hars)1110 -3639 y Fu(c)m(haracters)26 b(are)f(read.)38 b(The)24 -b(result)g(is)h(not)f(split)h(on)f(the)h(c)m(haracters)h(in)e -Ft(IFS)p Fu(;)1110 3748 y(the)e(in)m(ten)m(t)i(is)e(that)h(the)f(v)-5 +m(tered)g(or)p eop end +%%Page: 64 70 +TeXDict begin 64 69 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(64)1110 299 y +Ft(read)30 b Fu(times)i(out.)43 b(Delimiter)33 b(c)m(haracters)f +(encoun)m(tered)g(in)f(the)g(input)g(are)1110 408 y(not)g(treated)h(sp) +s(ecially)f(and)f(do)h(not)g(cause)g Ft(read)e Fu(to)j(return)d(un)m +(til)i Fr(nc)m(hars)1110 518 y Fu(c)m(haracters)26 b(are)f(read.)38 +b(The)24 b(result)g(is)h(not)f(split)h(on)f(the)h(c)m(haracters)h(in)e +Ft(IFS)p Fu(;)1110 628 y(the)e(in)m(ten)m(t)i(is)e(that)h(the)f(v)-5 b(ariable)23 b(is)f(assigned)g(exactly)i(the)e(c)m(haracters)i(read) -1110 3858 y(\(with)30 b(the)h(exception)h(of)e(bac)m(kslash;)h(see)g -(the)g Ft(-r)f Fu(option)h(b)s(elo)m(w\).)630 4009 y -Ft(-p)f Fj(prompt)66 b Fu(Displa)m(y)38 b Fr(prompt)p -Fu(,)g(without)e(a)h(trailing)h(newline,)h(b)s(efore)d(attempting)i(to) -1110 4119 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m -(y)m(ed)h(only)f(if)g(input)g(is)g(coming)1110 4228 y(from)30 -b(a)h(terminal.)630 4380 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f +1110 737 y(\(with)30 b(the)h(exception)h(of)e(bac)m(kslash;)h(see)g +(the)g Ft(-r)f Fu(option)h(b)s(elo)m(w\).)630 894 y Ft(-p)f +Fj(prompt)66 b Fu(Displa)m(y)38 b Fr(prompt)p Fu(,)g(without)e(a)h +(trailing)h(newline,)h(b)s(efore)d(attempting)i(to)1110 +1004 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m(y)m +(ed)h(only)f(if)g(input)g(is)g(coming)1110 1114 y(from)30 +b(a)h(terminal.)630 1271 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f (giv)m(en,)k(bac)m(kslash)d(do)s(es)f(not)h(act)h(as)f(an)f(escap)s(e)h -(c)m(haracter.)1110 4489 y(The)30 b(bac)m(kslash)i(is)f(considered)g +(c)m(haracter.)1110 1380 y(The)30 b(bac)m(kslash)i(is)f(considered)g (to)h(b)s(e)e(part)h(of)g(the)g(line.)43 b(In)30 b(particular,)i(a)1110 -4599 y(bac)m(kslash-newline)26 b(pair)e(ma)m(y)h(not)g(then)g(b)s(e)f -(used)g(as)h(a)g(line)g(con)m(tin)m(uation.)630 4750 +1490 y(bac)m(kslash-newline)26 b(pair)e(ma)m(y)h(not)g(then)g(b)s(e)f +(used)g(as)h(a)g(line)g(con)m(tin)m(uation.)630 1647 y Ft(-s)384 b Fu(Silen)m(t)28 b(mo)s(de.)40 b(If)27 b(input)f(is)i (coming)g(from)f(a)h(terminal,)h(c)m(haracters)g(are)f(not)1110 -4860 y(ec)m(ho)s(ed.)630 5011 y Ft(-t)i Fj(timeout)1110 -5121 y Fu(Cause)42 b Ft(read)g Fu(to)h(time)h(out)f(and)f(return)f -(failure)i(if)g(a)g(complete)h(line)f(of)1110 5230 y(input)26 -b(\(or)h(a)g(sp)s(eci\014ed)f(n)m(um)m(b)s(er)g(of)h(c)m(haracters\))h -(is)f(not)g(read)g(within)f Fr(time-)1110 5340 y(out)37 -b Fu(seconds.)53 b Fr(timeout)38 b Fu(ma)m(y)d(b)s(e)f(a)h(decimal)h(n) -m(um)m(b)s(er)d(with)h(a)h(fractional)p eop end -%%Page: 60 66 -TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(60)1110 299 y(p)s(ortion)29 -b(follo)m(wing)h(the)f(decimal)h(p)s(oin)m(t.)40 b(This)29 -b(option)g(is)g(only)g(e\013ectiv)m(e)j(if)1110 408 y -Ft(read)j Fu(is)i(reading)g(input)e(from)h(a)h(terminal,)i(pip)s(e,)e -(or)g(other)f(sp)s(ecial)i(\014le;)1110 518 y(it)31 b(has)g(no)g -(e\013ect)h(when)e(reading)h(from)g(regular)g(\014les.)42 -b(If)30 b Ft(read)g Fu(times)h(out,)1110 628 y Ft(read)d -Fu(sa)m(v)m(es)j(an)m(y)f(partial)h(input)d(read)i(in)m(to)h(the)e(sp)s -(eci\014ed)g(v)-5 b(ariable)31 b Fr(name)p Fu(.)1110 -737 y(If)k Fr(timeout)j Fu(is)e(0,)h Ft(read)e Fu(returns)f -(immediately)-8 b(,)39 b(without)c(trying)h(to)g(read)1110 -847 y(an)m(y)c(data.)44 b(The)31 b(exit)h(status)f(is)h(0)f(if)h(input) -e(is)h(a)m(v)-5 b(ailable)34 b(on)d(the)h(sp)s(eci\014ed)1110 -956 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46 -b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 1066 -y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 1225 -y Ft(-u)g Fj(fd)258 b Fu(Read)31 b(input)e(from)h(\014le)g(descriptor)h -Fr(fd)p Fu(.)630 1385 y(If)h(no)g Fr(name)5 b Fu(s)33 -b(are)f(supplied,)g(the)h(line)g(read,)g(without)f(the)h(ending)f -(delimiter)h(but)e(oth-)630 1494 y(erwise)36 b(unmo)s(di\014ed,)e(is)i -(assigned)f(to)h(the)g(v)-5 b(ariable)36 b Ft(REPLY)p -Fu(.)55 b(The)34 b(exit)j(status)e(is)h(zero,)630 1604 -y(unless)i(end-of-\014le)h(is)f(encoun)m(tered,)j Ft(read)d -Fu(times)h(out)f(\(in)h(whic)m(h)f(case)h(the)g(status)g(is)630 -1714 y(greater)31 b(than)f(128\),)i(a)e(v)-5 b(ariable)30 +1757 y(ec)m(ho)s(ed.)630 1914 y Ft(-t)i Fj(timeout)1110 +2024 y Fu(Cause)23 b Ft(read)f Fu(to)i(time)f(out)h(and)e(return)g +(failure)h(if)g(a)h(complete)g(line)g(of)f(input)1110 +2133 y(\(or)h(a)f(sp)s(eci\014ed)g(n)m(um)m(b)s(er)f(of)i(c)m +(haracters\))h(is)e(not)h(read)f(within)g Fr(timeout)j +Fu(sec-)1110 2243 y(onds.)43 b Fr(timeout)34 b Fu(ma)m(y)e(b)s(e)e(a)i +(decimal)g(n)m(um)m(b)s(er)e(with)h(a)h(fractional)g(p)s(ortion)1110 +2352 y(follo)m(wing)39 b(the)f(decimal)g(p)s(oin)m(t.)63 +b(This)37 b(option)h(is)g(only)f(e\013ectiv)m(e)k(if)c +Ft(read)1110 2462 y Fu(is)c(reading)h(input)e(from)h(a)h(terminal,)h +(pip)s(e,)e(or)h(other)f(sp)s(ecial)h(\014le;)h(it)f(has)1110 +2572 y(no)f(e\013ect)i(when)d(reading)i(from)f(regular)g(\014les.)50 +b(If)33 b Ft(read)f Fu(times)i(out,)g Ft(read)1110 2681 +y Fu(sa)m(v)m(es)41 b(an)m(y)f(partial)h(input)e(read)g(in)m(to)i(the)f +(sp)s(eci\014ed)f(v)-5 b(ariable)40 b Fr(name)p Fu(.)69 +b(If)1110 2791 y Fr(timeout)31 b Fu(is)c(0,)i Ft(read)d +Fu(returns)h(immediately)-8 b(,)30 b(without)d(trying)h(to)g(read)g(an) +m(y)1110 2900 y(data.)49 b(The)33 b(exit)h(status)f(is)g(0)g(if)g +(input)f(is)h(a)m(v)-5 b(ailable)36 b(on)c(the)i(sp)s(eci\014ed)e +(\014le)1110 3010 y(descriptor,)37 b(or)e(the)h(read)f(will)h(return)e +(EOF,)h(non-zero)h(otherwise.)56 b(The)1110 3120 y(exit)31 +b(status)g(is)f(greater)i(than)e(128)i(if)e(the)h(timeout)g(is)f +(exceeded.)630 3277 y Ft(-u)g Fj(fd)258 b Fu(Read)31 +b(input)e(from)h(\014le)g(descriptor)h Fr(fd)p Fu(.)630 +3434 y(If)h(no)g Fr(name)5 b Fu(s)33 b(are)f(supplied,)g(the)h(line)g +(read,)g(without)f(the)h(ending)f(delimiter)h(but)e(oth-)630 +3544 y(erwise)36 b(unmo)s(di\014ed,)e(is)i(assigned)f(to)h(the)g(v)-5 +b(ariable)36 b Ft(REPLY)p Fu(.)55 b(The)34 b(exit)j(status)e(is)h +(zero,)630 3653 y(unless)i(end-of-\014le)h(is)f(encoun)m(tered,)j +Ft(read)d Fu(times)h(out)f(\(in)h(whic)m(h)f(case)h(the)g(status)g(is) +630 3763 y(greater)31 b(than)f(128\),)i(a)e(v)-5 b(ariable)30 b(assignmen)m(t)h(error)f(\(suc)m(h)f(as)i(assigning)f(to)h(a)f -(readonly)630 1823 y(v)-5 b(ariable\))30 b(o)s(ccurs,)f(or)f(an)h(in)m +(readonly)630 3872 y(v)-5 b(ariable\))30 b(o)s(ccurs,)f(or)f(an)h(in)m (v)-5 b(alid)29 b(\014le)g(descriptor)f(is)h(supplied)e(as)i(the)g -(argumen)m(t)g(to)g Ft(-u)p Fu(.)150 1983 y Ft(readarray)870 -2092 y(readarray)45 b([-d)i Fj(delim)p Ft(])f([-n)h Fj(count)p +(argumen)m(t)g(to)g Ft(-u)p Fu(.)150 4030 y Ft(readarray)870 +4139 y(readarray)45 b([-d)i Fj(delim)p Ft(])f([-n)h Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)h Fj(count)p Ft(])1061 -2202 y([-t])g([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p +4249 y([-t])g([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p Ft(])f([-c)g Fj(quantum)p Ft(])g([)p Fj(array)p Ft(])630 -2336 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j +4382 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j (the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 b Fr(arra)m(y)p -Fu(,)i(or)630 2446 y(from)30 b(\014le)g(descriptor)h +Fu(,)i(or)630 4492 y(from)30 b(\014le)g(descriptor)h Fr(fd)i Fu(if)d(the)h Ft(-u)e Fu(option)i(is)g(supplied.)630 -2580 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 2740 -y Ft(source)870 2874 y(source)46 b Fj(filename)630 3009 +4625 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 4783 +y Ft(source)870 4916 y(source)46 b Fj(filename)630 5049 y Fu(A)30 b(synon)m(ym)g(for)g Ft(.)g Fu(\(see)i(Section)f(4.1)g -([Bourne)g(Shell)f(Builtins],)h(page)g(44\).)150 3168 -y Ft(type)870 3303 y(type)47 b([-afptP])e([)p Fj(name)i -Ft(...)o(])630 3437 y Fu(F)-8 b(or)42 b(eac)m(h)g Fr(name)p -Fu(,)i(indicate)e(ho)m(w)g(it)f(w)m(ould)g(b)s(e)g(in)m(terpreted)g(if) -g(used)f(as)i(a)f(command)630 3547 y(name.)630 3681 y(If)g(the)g -Ft(-t)g Fu(option)h(is)f(used,)j Ft(type)c Fu(prin)m(ts)h(a)h(single)g -(w)m(ord)f(whic)m(h)g(is)g(one)h(of)g(`)p Ft(alias)p -Fu(',)630 3791 y(`)p Ft(function)p Fu(',)32 b(`)p Ft(builtin)p -Fu(',)g(`)p Ft(file)p Fu(')g(or)h(`)p Ft(keyword)p Fu(',)f(if)h -Fr(name)38 b Fu(is)33 b(an)f(alias,)j(shell)e(function,)630 -3900 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h(reserv)m(ed)g -(w)m(ord,)h(resp)s(ectiv)m(ely)-8 b(.)55 b(If)34 b(the)h -Fr(name)40 b Fu(is)35 b(not)630 4010 y(found,)29 b(then)h(nothing)h(is) -f(prin)m(ted,)g(and)g Ft(type)f Fu(returns)g(a)i(failure)g(status.)630 -4144 y(If)25 b(the)g Ft(-p)g Fu(option)h(is)f(used,)h -Ft(type)e Fu(either)h(returns)g(the)g(name)g(of)h(the)f(disk)g(\014le)g -(that)h(w)m(ould)630 4254 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g -Ft(-t)g Fu(w)m(ould)g(not)h(return)e(`)p Ft(file)p Fu('.)630 -4389 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g +([Bourne)g(Shell)f(Builtins],)h(page)g(48\).)150 5207 +y Ft(type)870 5340 y(type)47 b([-afptP])e([)p Fj(name)i +Ft(...)o(])p eop end +%%Page: 65 71 +TeXDict begin 65 70 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(65)630 299 y(F)-8 +b(or)42 b(eac)m(h)g Fr(name)p Fu(,)i(indicate)e(ho)m(w)g(it)f(w)m(ould) +g(b)s(e)g(in)m(terpreted)g(if)g(used)f(as)i(a)f(command)630 +408 y(name.)630 543 y(If)g(the)g Ft(-t)g Fu(option)h(is)f(used,)j +Ft(type)c Fu(prin)m(ts)h(a)h(single)g(w)m(ord)f(whic)m(h)g(is)g(one)h +(of)g(`)p Ft(alias)p Fu(',)630 653 y(`)p Ft(function)p +Fu(',)32 b(`)p Ft(builtin)p Fu(',)g(`)p Ft(file)p Fu(')g(or)h(`)p +Ft(keyword)p Fu(',)f(if)h Fr(name)38 b Fu(is)33 b(an)f(alias,)j(shell)e +(function,)630 762 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h +(reserv)m(ed)g(w)m(ord,)h(resp)s(ectiv)m(ely)-8 b(.)55 +b(If)34 b(the)h Fr(name)40 b Fu(is)35 b(not)630 872 y(found,)29 +b(then)h(nothing)h(is)f(prin)m(ted,)g(and)g Ft(type)f +Fu(returns)g(a)i(failure)g(status.)630 1007 y(If)25 b(the)g +Ft(-p)g Fu(option)h(is)f(used,)h Ft(type)e Fu(either)h(returns)g(the)g +(name)g(of)h(the)f(disk)g(\014le)g(that)h(w)m(ould)630 +1116 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g Ft(-t)g +Fu(w)m(ould)g(not)h(return)e(`)p Ft(file)p Fu('.)630 +1251 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g (eac)m(h)g Fr(name)p Fu(,)g(ev)m(en)g(if)g Ft(-t)f Fu(w)m(ould)g(not)h -(return)630 4498 y(`)p Ft(file)p Fu('.)630 4633 y(If)f(a)g(command)g +(return)630 1360 y(`)p Ft(file)p Fu('.)630 1495 y(If)f(a)g(command)g (is)g(hashed,)f Ft(-p)h Fu(and)f Ft(-P)g Fu(prin)m(t)h(the)g(hashed)f -(v)-5 b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 4742 +(v)-5 b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 1605 y(sarily)h(the)f(\014le)h(that)g(app)s(ears)e(\014rst)h(in)g -Ft($PATH)p Fu(.)630 4877 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g +Ft($PATH)p Fu(.)630 1739 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g (used,)h Ft(type)e Fu(returns)f(all)j(of)f(the)g(places)h(that)f(con)m -(tain)i(an)d(executable)630 4986 y(named)32 b Fr(\014le)p +(tain)i(an)d(executable)630 1849 y(named)32 b Fr(\014le)p Fu(.)49 b(This)32 b(includes)h(aliases)h(and)e(functions,)i(if)f(and)f -(only)h(if)g(the)g Ft(-p)f Fu(option)i(is)630 5096 y(not)d(also)g -(used.)630 5230 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e +(only)h(if)g(the)g Ft(-p)f Fu(option)i(is)630 1958 y(not)d(also)g +(used.)630 2093 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e Ft(type)g Fu(do)s(es)h(not)h(attempt)g(to)g(\014nd)d(shell)j -(functions,)f(as)g(with)630 5340 y(the)h Ft(command)d -Fu(builtin.)p eop end -%%Page: 61 67 -TeXDict begin 61 66 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(61)630 299 y(The)31 -b(return)f(status)h(is)g(zero)h(if)f(all)h(of)f(the)h -Fr(names)i Fu(are)e(found,)e(non-zero)i(if)f(an)m(y)g(are)h(not)630 -408 y(found.)150 566 y Ft(typeset)870 700 y(typeset)46 -b([-afFgrxilnrtux])d([-p])k([)p Fj(name)p Ft([=)p Fj(value)p -Ft(])d(...)o(])630 834 y Fu(The)31 b Ft(typeset)e Fu(command)i(is)g -(supplied)f(for)h(compatibilit)m(y)i(with)e(the)g(Korn)f(shell.)44 -b(It)31 b(is)630 943 y(a)g(synon)m(ym)f(for)g(the)g Ft(declare)f -Fu(builtin)h(command.)150 1101 y Ft(ulimit)870 1235 y(ulimit)46 -b([-HS])g(-a)870 1344 y(ulimit)g([-HS])g([-bcdefiklmnpqrstuvxPRT])c([)p -Fj(limit)p Ft(])630 1478 y(ulimit)25 b Fu(pro)m(vides)h(con)m(trol)i(o) +(functions,)f(as)g(with)630 2203 y(the)h Ft(command)d +Fu(builtin.)630 2337 y(The)j(return)e(status)j(is)f(zero)h(if)f(all)g +(of)h(the)f Fr(name)5 b Fu(s)31 b(are)g(found,)f(non-zero)i(if)f(an)m +(y)g(are)h(not)630 2447 y(found.)150 2607 y Ft(typeset)870 +2741 y(typeset)46 b([-afFgrxilnrtux])d([-p])k([)p Fj(name)p +Ft([=)p Fj(value)p Ft(])d(...)o(])630 2876 y Fu(The)31 +b Ft(typeset)e Fu(command)i(is)g(supplied)f(for)h(compatibilit)m(y)i +(with)e(the)g(Korn)f(shell.)44 b(It)31 b(is)630 2985 +y(a)g(synon)m(ym)f(for)g(the)g Ft(declare)f Fu(builtin)h(command.)150 +3145 y Ft(ulimit)870 3280 y(ulimit)46 b([-HS])g(-a)870 +3389 y(ulimit)g([-HS])g([-bcdefiklmnpqrstuvxPRT])c([)p +Fj(limit)p Ft(])630 3524 y(ulimit)25 b Fu(pro)m(vides)h(con)m(trol)i(o) m(v)m(er)g(the)f(resources)f(a)m(v)-5 b(ailable)29 b(to)e(pro)s(cesses) -f(started)h(b)m(y)g(the)630 1588 y(shell,)i(on)f(systems)g(that)h(allo) +f(started)h(b)m(y)g(the)630 3634 y(shell,)i(on)f(systems)g(that)h(allo) m(w)h(suc)m(h)e(con)m(trol.)41 b(If)28 b(an)g(option)h(is)f(giv)m(en,)i -(it)e(is)h(in)m(terpreted)630 1697 y(as)i(follo)m(ws:)630 -1855 y Ft(-S)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the)g(soft)h(limit) -g(asso)s(ciated)h(with)e(a)h(resource.)630 2013 y Ft(-H)384 +(it)e(is)h(in)m(terpreted)630 3743 y(as)i(follo)m(ws:)630 +3903 y Ft(-S)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the)g(soft)h(limit) +g(asso)s(ciated)h(with)e(a)h(resource.)630 4062 y Ft(-H)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the)g(hard)g(limit)h(asso)s(ciated)h -(with)e(a)h(resource.)630 2171 y Ft(-a)384 b Fu(All)31 +(with)e(a)h(resource.)630 4222 y Ft(-a)384 b Fu(All)31 b(curren)m(t)f(limits)h(are)g(rep)s(orted;)f(no)g(limits)h(are)g(set.) -630 2328 y Ft(-b)384 b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m(et)i -(bu\013er)e(size.)630 2486 y Ft(-c)384 b Fu(The)30 b(maxim)m(um)g(size) -h(of)g(core)g(\014les)f(created.)630 2644 y Ft(-d)384 +630 4382 y Ft(-b)384 b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m(et)i +(bu\013er)e(size.)630 4542 y Ft(-c)384 b Fu(The)30 b(maxim)m(um)g(size) +h(of)g(core)g(\014les)f(created.)630 4701 y Ft(-d)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g(a)g(pro)s(cess's)f(data)h -(segmen)m(t.)630 2802 y Ft(-e)384 b Fu(The)30 b(maxim)m(um)g(sc)m +(segmen)m(t.)630 4861 y Ft(-e)384 b Fu(The)30 b(maxim)m(um)g(sc)m (heduling)h(priorit)m(y)f(\()p Ft(")p Fu(nice)p Ft(")p -Fu(\).)630 2960 y Ft(-f)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g +Fu(\).)630 5021 y Ft(-f)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g (\014les)f(written)h(b)m(y)f(the)g(shell)h(and)f(its)h(c)m(hildren.)630 -3118 y Ft(-i)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s -(ending)e(signals.)630 3275 y Ft(-k)384 b Fu(The)30 b(maxim)m(um)g(n)m -(um)m(b)s(er)f(of)i(kqueues)f(that)h(ma)m(y)g(b)s(e)e(allo)s(cated.)630 -3433 y Ft(-l)384 b Fu(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s -(e)f(lo)s(c)m(k)m(ed)i(in)m(to)f(memory)-8 b(.)630 3591 -y Ft(-m)384 b Fu(The)36 b(maxim)m(um)g(residen)m(t)h(set)g(size)g -(\(man)m(y)g(systems)f(do)h(not)f(honor)g(this)1110 3701 -y(limit\).)630 3858 y Ft(-n)384 b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s -(er)e(of)i(op)s(en)f(\014le)h(descriptors)g(\(most)g(systems)g(do)1110 -3968 y(not)31 b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).) -630 4126 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630 -4284 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m -(ytes)g(in)f Fm(posix)f Fu(message)j(queues.)630 4441 +5180 y Ft(-i)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s +(ending)e(signals.)630 5340 y Ft(-k)384 b Fu(The)30 b(maxim)m(um)g(n)m +(um)m(b)s(er)f(of)i(kqueues)f(that)h(ma)m(y)g(b)s(e)e(allo)s(cated.)p +eop end +%%Page: 66 72 +TeXDict begin 66 71 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(66)630 299 y Ft(-l)384 +b Fu(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s(e)f(lo)s(c)m(k)m +(ed)i(in)m(to)f(memory)-8 b(.)630 467 y Ft(-m)384 b Fu(The)36 +b(maxim)m(um)g(residen)m(t)h(set)g(size)g(\(man)m(y)g(systems)f(do)h +(not)f(honor)g(this)1110 576 y(limit\).)630 744 y Ft(-n)384 +b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s(er)e(of)i(op)s(en)f(\014le)h +(descriptors)g(\(most)g(systems)g(do)1110 854 y(not)31 +b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).)630 +1022 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630 +1190 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m +(ytes)g(in)f Fm(posix)f Fu(message)j(queues.)630 1358 y Ft(-r)384 b Fu(The)30 b(maxim)m(um)g(real-time)i(sc)m(heduling)f -(priorit)m(y)-8 b(.)630 4599 y Ft(-s)384 b Fu(The)30 -b(maxim)m(um)g(stac)m(k)i(size.)630 4757 y Ft(-t)384 +(priorit)m(y)-8 b(.)630 1526 y Ft(-s)384 b Fu(The)30 +b(maxim)m(um)g(stac)m(k)i(size.)630 1694 y Ft(-t)384 b Fu(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g(time)h(in)f(seconds.) -630 4915 y Ft(-u)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i +630 1862 y Ft(-u)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i (pro)s(cesses)f(a)m(v)-5 b(ailable)33 b(to)e(a)f(single)i(user.)630 -5073 y Ft(-v)384 b Fu(The)41 b(maxim)m(um)h(amoun)m(t)g(of)h(virtual)f +2030 y Ft(-v)384 b Fu(The)41 b(maxim)m(um)h(amoun)m(t)g(of)h(virtual)f (memory)g(a)m(v)-5 b(ailable)44 b(to)e(the)g(shell,)1110 -5182 y(and,)30 b(on)g(some)h(systems,)g(to)g(its)g(c)m(hildren.)630 -5340 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i -(\014le)f(lo)s(c)m(ks.)p eop end -%%Page: 62 68 -TeXDict begin 62 67 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(62)630 299 y Ft(-P)384 -b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pseudoterminals.)630 -478 y Ft(-R)384 b Fu(The)27 b(maxim)m(um)h(time)h(a)f(real-time)i(pro)s -(cess)d(can)i(run)d(b)s(efore)i(blo)s(c)m(king,)h(in)1110 -587 y(microseconds.)630 766 y Ft(-T)384 b Fu(The)30 b(maxim)m(um)g(n)m -(um)m(b)s(er)f(of)i(threads.)630 945 y(If)36 b Fr(limit)k -Fu(is)c(giv)m(en,)k(and)c(the)h Ft(-a)f Fu(option)h(is)f(not)h(used,)h -Fr(limit)h Fu(is)e(the)g(new)f(v)-5 b(alue)37 b(of)g(the)630 -1055 y(sp)s(eci\014ed)c(resource.)51 b(The)34 b(sp)s(ecial)g -Fr(limit)j Fu(v)-5 b(alues)34 b Ft(hard)p Fu(,)g Ft(soft)p -Fu(,)g(and)f Ft(unlimited)e Fu(stand)630 1164 y(for)h(the)g(curren)m(t) -g(hard)f(limit,)i(the)g(curren)m(t)f(soft)g(limit,)h(and)f(no)g(limit,) -h(resp)s(ectiv)m(ely)-8 b(.)48 b(A)630 1274 y(hard)24 -b(limit)i(cannot)g(b)s(e)e(increased)h(b)m(y)g(a)h(non-ro)s(ot)f(user)f -(once)i(it)g(is)f(set;)j(a)d(soft)g(limit)h(ma)m(y)630 -1384 y(b)s(e)37 b(increased)h(up)e(to)j(the)f(v)-5 b(alue)38 -b(of)f(the)h(hard)f(limit.)63 b(Otherwise,)39 b(the)f(curren)m(t)f(v)-5 -b(alue)630 1493 y(of)39 b(the)g(soft)h(limit)g(for)f(the)g(sp)s -(eci\014ed)f(resource)h(is)g(prin)m(ted,)i(unless)e(the)g -Ft(-H)f Fu(option)i(is)630 1603 y(supplied.)47 b(When)33 -b(more)g(than)g(one)g(resource)g(is)g(sp)s(eci\014ed,)g(the)g(limit)h -(name)f(and)f(unit,)630 1712 y(if)27 b(appropriate,)h(are)f(prin)m(ted) -g(b)s(efore)g(the)g(v)-5 b(alue.)40 b(When)27 b(setting)h(new)e -(limits,)j(if)e(neither)630 1822 y Ft(-H)38 b Fu(nor)g -Ft(-S)g Fu(is)h(supplied,)h(b)s(oth)e(the)h(hard)f(and)g(soft)h(limits) -g(are)g(set.)67 b(If)38 b(no)h(option)g(is)630 1932 y(giv)m(en,)c(then) -f Ft(-f)e Fu(is)i(assumed.)49 b(V)-8 b(alues)35 b(are)e(in)h(1024-b)m -(yte)i(incremen)m(ts,)f(except)f(for)f Ft(-t)p Fu(,)630 -2041 y(whic)m(h)e(is)g(in)g(seconds;)h Ft(-R)p Fu(,)g(whic)m(h)f(is)g -(in)g(microseconds;)h Ft(-p)p Fu(,)g(whic)m(h)f(is)g(in)g(units)g(of)g -(512-)630 2151 y(b)m(yte)k(blo)s(c)m(ks;)j Ft(-P)p Fu(,)e -Ft(-T)p Fu(,)f Ft(-b)p Fu(,)h Ft(-k)p Fu(,)f Ft(-n)g -Fu(and)f Ft(-u)p Fu(,)h(whic)m(h)g(are)g(unscaled)g(v)-5 -b(alues;)37 b(and,)f(when)630 2260 y(in)g Fm(posix)f -Fu(Mo)s(de)h(\(see)g(Section)h(6.11)g([Bash)g(POSIX)d(Mo)s(de],)k(page) -f(101\),)i Ft(-c)c Fu(and)g Ft(-f)p Fu(,)630 2370 y(whic)m(h)30 -b(are)h(in)f(512-b)m(yte)j(incremen)m(ts.)630 2514 y(The)h(return)g -(status)h(is)f(zero)i(unless)e(an)g(in)m(v)-5 b(alid)36 -b(option)f(or)f(argumen)m(t)i(is)e(supplied,)h(or)630 -2624 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f(limit.) -150 2803 y Ft(unalias)870 2947 y(unalias)46 b([-a])g([)p -Fj(name)h Ft(...)g(])630 3091 y Fu(Remo)m(v)m(e)42 b(eac)m(h)f +2140 y(and,)30 b(on)g(some)h(systems,)g(to)g(its)g(c)m(hildren.)630 +2308 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i +(\014le)f(lo)s(c)m(ks.)630 2476 y Ft(-P)384 b Fu(The)30 +b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pseudoterminals.)630 +2643 y Ft(-R)384 b Fu(The)27 b(maxim)m(um)h(time)h(a)f(real-time)i(pro) +s(cess)d(can)i(run)d(b)s(efore)i(blo)s(c)m(king,)h(in)1110 +2753 y(microseconds.)630 2921 y Ft(-T)384 b Fu(The)30 +b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(threads.)630 3089 +y(If)36 b Fr(limit)k Fu(is)c(giv)m(en,)k(and)c(the)h +Ft(-a)f Fu(option)h(is)f(not)h(used,)h Fr(limit)h Fu(is)e(the)g(new)f +(v)-5 b(alue)37 b(of)g(the)630 3199 y(sp)s(eci\014ed)c(resource.)51 +b(The)34 b(sp)s(ecial)g Fr(limit)j Fu(v)-5 b(alues)34 +b Ft(hard)p Fu(,)g Ft(soft)p Fu(,)g(and)f Ft(unlimited)e +Fu(stand)630 3308 y(for)h(the)g(curren)m(t)g(hard)f(limit,)i(the)g +(curren)m(t)f(soft)g(limit,)h(and)f(no)g(limit,)h(resp)s(ectiv)m(ely)-8 +b(.)48 b(A)630 3418 y(hard)24 b(limit)i(cannot)g(b)s(e)e(increased)h(b) +m(y)g(a)h(non-ro)s(ot)f(user)f(once)i(it)g(is)f(set;)j(a)d(soft)g +(limit)h(ma)m(y)630 3527 y(b)s(e)37 b(increased)h(up)e(to)j(the)f(v)-5 +b(alue)38 b(of)f(the)h(hard)f(limit.)63 b(Otherwise,)39 +b(the)f(curren)m(t)f(v)-5 b(alue)630 3637 y(of)39 b(the)g(soft)h(limit) +g(for)f(the)g(sp)s(eci\014ed)f(resource)h(is)g(prin)m(ted,)i(unless)e +(the)g Ft(-H)f Fu(option)i(is)630 3747 y(supplied.)47 +b(When)33 b(more)g(than)g(one)g(resource)g(is)g(sp)s(eci\014ed,)g(the)g +(limit)h(name)f(and)f(unit,)630 3856 y(if)27 b(appropriate,)h(are)f +(prin)m(ted)g(b)s(efore)g(the)g(v)-5 b(alue.)40 b(When)27 +b(setting)h(new)e(limits,)j(if)e(neither)630 3966 y Ft(-H)38 +b Fu(nor)g Ft(-S)g Fu(is)h(supplied,)h(b)s(oth)e(the)h(hard)f(and)g +(soft)h(limits)g(are)g(set.)67 b(If)38 b(no)h(option)g(is)630 +4075 y(giv)m(en,)c(then)f Ft(-f)e Fu(is)i(assumed.)49 +b(V)-8 b(alues)35 b(are)e(in)h(1024-b)m(yte)i(incremen)m(ts,)f(except)f +(for)f Ft(-t)p Fu(,)630 4185 y(whic)m(h)e(is)g(in)g(seconds;)h +Ft(-R)p Fu(,)g(whic)m(h)f(is)g(in)g(microseconds;)h Ft(-p)p +Fu(,)g(whic)m(h)f(is)g(in)g(units)g(of)g(512-)630 4295 +y(b)m(yte)k(blo)s(c)m(ks;)j Ft(-P)p Fu(,)e Ft(-T)p Fu(,)f +Ft(-b)p Fu(,)h Ft(-k)p Fu(,)f Ft(-n)g Fu(and)f Ft(-u)p +Fu(,)h(whic)m(h)g(are)g(unscaled)g(v)-5 b(alues;)37 b(and,)f(when)630 +4404 y(in)g Fm(posix)f Fu(Mo)s(de)h(\(see)g(Section)h(6.11)g([Bash)g +(POSIX)d(Mo)s(de],)k(page)f(106\),)i Ft(-c)c Fu(and)g +Ft(-f)p Fu(,)630 4514 y(whic)m(h)30 b(are)h(in)f(512-b)m(yte)j +(incremen)m(ts.)630 4653 y(The)h(return)g(status)h(is)f(zero)i(unless)e +(an)g(in)m(v)-5 b(alid)36 b(option)f(or)f(argumen)m(t)i(is)e(supplied,) +h(or)630 4762 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f +(limit.)150 4930 y Ft(unalias)870 5069 y(unalias)46 b([-a])g([)p +Fj(name)h Ft(...)g(])630 5208 y Fu(Remo)m(v)m(e)42 b(eac)m(h)f Fr(name)k Fu(from)39 b(the)i(list)f(of)g(aliases.)71 b(If)40 b Ft(-a)f Fu(is)h(supplied,)h(all)g(aliases)h(are)630 -3201 y(remo)m(v)m(ed.)g(Aliases)31 b(are)g(describ)s(ed)e(in)h(Section) -i(6.6)f([Aliases],)h(page)f(94.)150 3471 y Fs(4.3)68 -b(Mo)t(difying)45 b(Shell)g(Beha)l(vior)150 3695 y Fk(4.3.1)63 -b(The)41 b(Set)g(Builtin)150 3842 y Fu(This)35 b(builtin)h(is)g(so)g +5317 y(remo)m(v)m(ed.)g(Aliases)31 b(are)g(describ)s(ed)e(in)h(Section) +i(6.6)f([Aliases],)h(page)f(100.)p eop end +%%Page: 67 73 +TeXDict begin 67 72 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(67)150 299 y Fs(4.3)68 +b(Mo)t(difying)45 b(Shell)g(Beha)l(vior)150 520 y Fk(4.3.1)63 +b(The)41 b(Set)g(Builtin)150 667 y Fu(This)35 b(builtin)h(is)g(so)g (complicated)i(that)f(it)f(deserv)m(es)h(its)f(o)m(wn)g(section.)59 b Ft(set)35 b Fu(allo)m(ws)j(y)m(ou)e(to)h(c)m(hange)150 -3951 y(the)c(v)-5 b(alues)34 b(of)f(shell)g(options)h(and)e(set)i(the)f +777 y(the)c(v)-5 b(alues)34 b(of)f(shell)g(options)h(and)e(set)i(the)f (p)s(ositional)h(parameters,)h(or)e(to)h(displa)m(y)f(the)g(names)h -(and)150 4061 y(v)-5 b(alues)31 b(of)f(shell)h(v)-5 b(ariables.)150 -4250 y Ft(set)870 4394 y(set)47 b([--abefhkmnptuvxBCEHPT])41 -b([-o)47 b Fj(option-name)p Ft(])e([)p Fj(argument)g -Ft(...)o(])870 4504 y(set)i([+abefhkmnptuvxBCEHPT])42 -b([+o)47 b Fj(option-name)p Ft(])d([)p Fj(argument)h -Ft(...)o(])630 4648 y Fu(If)22 b(no)h(options)g(or)g(argumen)m(ts)g +(and)150 886 y(v)-5 b(alues)31 b(of)f(shell)h(v)-5 b(ariables.)150 +1041 y Ft(set)870 1172 y(set)47 b([-abefhkmnptuvxBCEHPT])42 +b([-o)47 b Fj(option-name)p Ft(])d([--])j([-])g([)p Fj(argument)e +Ft(...)o(])870 1282 y(set)i([+abefhkmnptuvxBCEHPT])42 +b([+o)47 b Fj(option-name)p Ft(])d([--])j([-])g([)p Fj(argument)e +Ft(...)o(])630 1414 y Fu(If)22 b(no)h(options)g(or)g(argumen)m(ts)g (are)g(supplied,)g Ft(set)f Fu(displa)m(ys)g(the)h(names)g(and)f(v)-5 -b(alues)23 b(of)g(all)630 4757 y(shell)j(v)-5 b(ariables)27 +b(alues)23 b(of)g(all)630 1523 y(shell)j(v)-5 b(ariables)27 b(and)e(functions,)h(sorted)g(according)h(to)g(the)f(curren)m(t)f(lo)s -(cale,)k(in)c(a)i(format)630 4867 y(that)i(ma)m(y)h(b)s(e)e(reused)g +(cale,)k(in)c(a)i(format)630 1633 y(that)i(ma)m(y)h(b)s(e)e(reused)g (as)h(input)f(for)h(setting)h(or)e(resetting)i(the)f(curren)m(tly-set)h -(v)-5 b(ariables.)630 4977 y(Read-only)37 b(v)-5 b(ariables)37 +(v)-5 b(ariables.)630 1743 y(Read-only)37 b(v)-5 b(ariables)37 b(cannot)h(b)s(e)e(reset.)59 b(In)36 b Fm(posix)g Fu(mo)s(de,)i(only)f -(shell)f(v)-5 b(ariables)38 b(are)630 5086 y(listed.)630 -5230 y(When)29 b(options)g(are)g(supplied,)f(they)h(set)h(or)f(unset)f +(shell)f(v)-5 b(ariables)38 b(are)630 1852 y(listed.)630 +1984 y(When)29 b(options)g(are)g(supplied,)f(they)h(set)h(or)f(unset)f (shell)h(attributes.)41 b(Options,)29 b(if)g(sp)s(ec-)630 -5340 y(i\014ed,)h(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)p -eop end -%%Page: 63 69 -TeXDict begin 63 68 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(63)630 299 y Ft(-a)384 -b Fu(Eac)m(h)37 b(v)-5 b(ariable)36 b(or)g(function)g(that)g(is)g -(created)h(or)f(mo)s(di\014ed)f(is)h(giv)m(en)h(the)1110 -408 y(exp)s(ort)28 b(attribute)h(and)f(mark)m(ed)g(for)g(exp)s(ort)g -(to)h(the)g(en)m(vironmen)m(t)f(of)h(sub-)1110 518 y(sequen)m(t)i -(commands.)630 682 y Ft(-b)384 b Fu(Cause)44 b(the)h(status)g(of)f -(terminated)h(bac)m(kground)g(jobs)f(to)h(b)s(e)f(rep)s(orted)1110 -792 y(immediately)-8 b(,)30 b(rather)d(than)f(b)s(efore)h(prin)m(ting)g -(the)g(next)g(primary)g(prompt.)630 956 y Ft(-e)384 b -Fu(Exit)65 b(immediately)g(if)f(a)h(pip)s(eline)e(\(see)i(Section)g -(3.2.3)h([Pip)s(elines],)1110 1066 y(page)56 b(8\),)62 -b(whic)m(h)55 b(ma)m(y)h(consist)f(of)h(a)f(single)h(simple)f(command)g -(\(see)1110 1176 y(Section)30 b(3.2.2)i([Simple)d(Commands],)g(page)h -(8\),)h(a)f(list)g(\(see)h(Section)f(3.2.4)1110 1285 -y([Lists],)66 b(page)59 b(9\),)67 b(or)58 b(a)h(comp)s(ound)e(command)h -(\(see)h(Section)g(3.2.5)1110 1395 y([Comp)s(ound)h(Commands],)70 -b(page)63 b(10\))g(returns)e(a)i(non-zero)f(status.)1110 -1504 y(The)41 b(shell)g(do)s(es)g(not)g(exit)h(if)f(the)h(command)f -(that)h(fails)f(is)g(part)g(of)h(the)1110 1614 y(command)g(list)h +2094 y(i\014ed,)h(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)630 +2248 y Ft(-a)384 b Fu(Eac)m(h)37 b(v)-5 b(ariable)36 +b(or)g(function)g(that)g(is)g(created)h(or)f(mo)s(di\014ed)f(is)h(giv)m +(en)h(the)1110 2357 y(exp)s(ort)28 b(attribute)h(and)f(mark)m(ed)g(for) +g(exp)s(ort)g(to)h(the)g(en)m(vironmen)m(t)f(of)h(sub-)1110 +2467 y(sequen)m(t)i(commands.)630 2621 y Ft(-b)384 b +Fu(Cause)44 b(the)h(status)g(of)f(terminated)h(bac)m(kground)g(jobs)f +(to)h(b)s(e)f(rep)s(orted)1110 2730 y(immediately)-8 +b(,)30 b(rather)d(than)f(b)s(efore)h(prin)m(ting)g(the)g(next)g +(primary)g(prompt.)630 2885 y Ft(-e)384 b Fu(Exit)65 +b(immediately)g(if)f(a)h(pip)s(eline)e(\(see)i(Section)g(3.2.3)h([Pip)s +(elines],)1110 2994 y(page)51 b(10\),)58 b(whic)m(h)50 +b(ma)m(y)h(consist)h(of)e(a)i(single)f(simple)g(command)f(\(see)1110 +3104 y(Section)30 b(3.2.2)i([Simple)d(Commands],)g(page)h(9\),)h(a)f +(list)g(\(see)h(Section)f(3.2.4)1110 3213 y([Lists],)60 +b(page)55 b(10\),)60 b(or)54 b(a)g(comp)s(ound)e(command)h(\(see)i +(Section)f(3.2.5)1110 3323 y([Comp)s(ound)60 b(Commands],)70 +b(page)63 b(11\))g(returns)e(a)i(non-zero)f(status.)1110 +3432 y(The)41 b(shell)g(do)s(es)g(not)g(exit)h(if)f(the)h(command)f +(that)h(fails)f(is)g(part)g(of)h(the)1110 3542 y(command)g(list)h (immediately)g(follo)m(wing)g(a)g Ft(while)e Fu(or)h -Ft(until)e Fu(k)m(eyw)m(ord,)1110 1724 y(part)61 b(of)g(the)g(test)h +Ft(until)e Fu(k)m(eyw)m(ord,)1110 3652 y(part)61 b(of)g(the)g(test)h (in)e(an)h Ft(if)f Fu(statemen)m(t,)71 b(part)61 b(of)g(an)m(y)g -(command)1110 1833 y(executed)50 b(in)e(a)h Ft(&&)f Fu(or)h +(command)1110 3761 y(executed)50 b(in)e(a)h Ft(&&)f Fu(or)h Ft(||)f Fu(list)h(except)g(the)g(command)g(follo)m(wing)h(the)1110 -1943 y(\014nal)37 b Ft(&&)g Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f +3871 y(\014nal)37 b Ft(&&)g Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f (in)g(a)g(pip)s(eline)g(but)g(the)g(last,)j(or)e(if)f(the)1110 -2052 y(command's)c(return)f(status)h(is)g(b)s(eing)g(in)m(v)m(erted)h +3980 y(command's)c(return)f(status)h(is)g(b)s(eing)g(in)m(v)m(erted)h (with)e Ft(!)p Fu(.)48 b(If)33 b(a)g(comp)s(ound)1110 -2162 y(command)g(other)g(than)f(a)i(subshell)d(returns)h(a)h(non-zero)h -(status)f(b)s(ecause)1110 2271 y(a)k(command)g(failed)g(while)g +4090 y(command)g(other)g(than)f(a)i(subshell)d(returns)h(a)h(non-zero)h +(status)f(b)s(ecause)1110 4200 y(a)k(command)g(failed)g(while)g Ft(-e)f Fu(w)m(as)i(b)s(eing)e(ignored,)j(the)e(shell)g(do)s(es)g(not) -1110 2381 y(exit.)42 b(A)30 b(trap)g(on)h Ft(ERR)p Fu(,)e(if)i(set,)g +1110 4309 y(exit.)42 b(A)30 b(trap)g(on)h Ft(ERR)p Fu(,)e(if)i(set,)g (is)f(executed)i(b)s(efore)e(the)g(shell)h(exits.)1110 -2518 y(This)f(option)h(applies)f(to)h(the)g(shell)g(en)m(vironmen)m(t)g -(and)f(eac)m(h)h(subshell)f(en-)1110 2628 y(vironmen)m(t)j(separately)i +4441 y(This)f(option)h(applies)f(to)h(the)g(shell)g(en)m(vironmen)m(t)g +(and)f(eac)m(h)h(subshell)f(en-)1110 4551 y(vironmen)m(t)j(separately)i (\(see)f(Section)g(3.7.3)h([Command)d(Execution)i(En-)1110 -2737 y(vironmen)m(t],)i(page)f(40\),)i(and)d(ma)m(y)h(cause)f -(subshells)g(to)h(exit)g(b)s(efore)f(exe-)1110 2847 y(cuting)d(all)g -(the)g(commands)f(in)g(the)g(subshell.)1110 2984 y(If)41 +4660 y(vironmen)m(t],)i(page)f(43\),)i(and)d(ma)m(y)h(cause)f +(subshells)g(to)h(exit)g(b)s(efore)f(exe-)1110 4770 y(cuting)d(all)g +(the)g(commands)f(in)g(the)g(subshell.)1110 4902 y(If)41 b(a)g(comp)s(ound)e(command)i(or)g(shell)g(function)g(executes)h(in)f -(a)g(con)m(text)1110 3093 y(where)31 b Ft(-e)g Fu(is)g(b)s(eing)g +(a)g(con)m(text)1110 5011 y(where)31 b Ft(-e)g Fu(is)g(b)s(eing)g (ignored,)h(none)f(of)h(the)f(commands)g(executed)h(within)1110 -3203 y(the)j(comp)s(ound)f(command)h(or)g(function)f(b)s(o)s(dy)g(will) -h(b)s(e)f(a\013ected)j(b)m(y)e(the)1110 3313 y Ft(-e)25 +5121 y(the)j(comp)s(ound)f(command)h(or)g(function)f(b)s(o)s(dy)g(will) +h(b)s(e)f(a\013ected)j(b)m(y)e(the)1110 5230 y Ft(-e)25 b Fu(setting,)j(ev)m(en)e(if)g Ft(-e)f Fu(is)h(set)g(and)f(a)h(command) -g(returns)e(a)i(failure)g(status.)1110 3422 y(If)32 b(a)i(comp)s(ound)d +g(returns)e(a)i(failure)g(status.)1110 5340 y(If)32 b(a)i(comp)s(ound)d (command)i(or)g(shell)g(function)f(sets)i Ft(-e)e Fu(while)h(executing) -1110 3532 y(in)40 b(a)h(con)m(text)i(where)d Ft(-e)g -Fu(is)h(ignored,)j(that)d(setting)h(will)f(not)g(ha)m(v)m(e)h(an)m(y) -1110 3641 y(e\013ect)g(un)m(til)e(the)h(comp)s(ound)e(command)h(or)g -(the)g(command)g(con)m(taining)1110 3751 y(the)31 b(function)f(call)h -(completes.)630 3915 y Ft(-f)384 b Fu(Disable)31 b(\014lename)g -(expansion)f(\(globbing\).)630 4080 y Ft(-h)384 b Fu(Lo)s(cate)33 -b(and)e(remem)m(b)s(er)h(\(hash\))g(commands)f(as)h(they)g(are)g(lo)s -(ok)m(ed)h(up)e(for)1110 4189 y(execution.)42 b(This)29 -b(option)i(is)g(enabled)f(b)m(y)g(default.)630 4354 y -Ft(-k)384 b Fu(All)34 b(argumen)m(ts)g(in)f(the)h(form)f(of)g -(assignmen)m(t)h(statemen)m(ts)i(are)d(placed)h(in)1110 -4463 y(the)k(en)m(vironmen)m(t)g(for)g(a)g(command,)h(not)f(just)f -(those)i(that)f(precede)g(the)1110 4573 y(command)30 -b(name.)630 4737 y Ft(-m)384 b Fu(Job)28 b(con)m(trol)h(is)f(enabled)g -(\(see)h(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(107\).)41 -b(All)1110 4847 y(pro)s(cesses)27 b(run)f(in)i(a)g(separate)g(pro)s +p eop end +%%Page: 68 74 +TeXDict begin 68 73 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(68)1110 299 y(in)40 +b(a)h(con)m(text)i(where)d Ft(-e)g Fu(is)h(ignored,)j(that)d(setting)h +(will)f(not)g(ha)m(v)m(e)h(an)m(y)1110 408 y(e\013ect)g(un)m(til)e(the) +h(comp)s(ound)e(command)h(or)g(the)g(command)g(con)m(taining)1110 +518 y(the)31 b(function)f(call)h(completes.)630 682 y +Ft(-f)384 b Fu(Disable)31 b(\014lename)g(expansion)f(\(globbing\).)630 +847 y Ft(-h)384 b Fu(Lo)s(cate)33 b(and)e(remem)m(b)s(er)h(\(hash\))g +(commands)f(as)h(they)g(are)g(lo)s(ok)m(ed)h(up)e(for)1110 +956 y(execution.)42 b(This)29 b(option)i(is)g(enabled)f(b)m(y)g +(default.)630 1121 y Ft(-k)384 b Fu(All)34 b(argumen)m(ts)g(in)f(the)h +(form)f(of)g(assignmen)m(t)h(statemen)m(ts)i(are)d(placed)h(in)1110 +1230 y(the)k(en)m(vironmen)m(t)g(for)g(a)g(command,)h(not)f(just)f +(those)i(that)f(precede)g(the)1110 1340 y(command)30 +b(name.)630 1504 y Ft(-m)384 b Fu(Job)28 b(con)m(trol)h(is)f(enabled)g +(\(see)h(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(113\).)41 +b(All)1110 1614 y(pro)s(cesses)27 b(run)f(in)i(a)g(separate)g(pro)s (cess)f(group.)40 b(When)27 b(a)h(bac)m(kground)f(job)1110 -4956 y(completes,)32 b(the)f(shell)f(prin)m(ts)g(a)h(line)f(con)m -(taining)i(its)f(exit)g(status.)630 5121 y Ft(-n)384 +1724 y(completes,)32 b(the)f(shell)f(prin)m(ts)g(a)h(line)f(con)m +(taining)i(its)f(exit)g(status.)630 1888 y Ft(-n)384 b Fu(Read)38 b(commands)f(but)f(do)i(not)f(execute)i(them.)62 -b(This)37 b(ma)m(y)h(b)s(e)f(used)f(to)1110 5230 y(c)m(hec)m(k)d(a)e +b(This)37 b(ma)m(y)h(b)s(e)f(used)f(to)1110 1998 y(c)m(hec)m(k)d(a)e (script)g(for)g(syn)m(tax)h(errors.)42 b(This)30 b(option)i(is)f -(ignored)g(b)m(y)g(in)m(terac-)1110 5340 y(tiv)m(e)h(shells.)p -eop end -%%Page: 64 70 -TeXDict begin 64 69 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(64)630 299 y Ft(-o)30 -b Fj(option-name)1110 408 y Fu(Set)h(the)f(option)h(corresp)s(onding)e -(to)i Fr(option-name)5 b Fu(:)1110 575 y Ft(allexport)1590 -685 y Fu(Same)30 b(as)h Ft(-a)p Fu(.)1110 852 y Ft(braceexpand)1590 -962 y Fu(Same)f(as)h Ft(-B)p Fu(.)1110 1129 y Ft(emacs)240 -b Fu(Use)25 b(an)f Ft(emacs)p Fu(-st)m(yle)h(line)f(editing)h(in)m -(terface)h(\(see)g(Chapter)e(8)1590 1238 y([Command)33 -b(Line)g(Editing],)h(page)h(111\).)51 b(This)32 b(also)i(a\013ects)1590 -1348 y(the)d(editing)g(in)m(terface)h(used)d(for)h Ft(read)f(-e)p -Fu(.)1110 1515 y Ft(errexit)144 b Fu(Same)30 b(as)h Ft(-e)p -Fu(.)1110 1682 y Ft(errtrace)96 b Fu(Same)30 b(as)h Ft(-E)p -Fu(.)1110 1849 y Ft(functrace)1590 1958 y Fu(Same)f(as)h -Ft(-T)p Fu(.)1110 2125 y Ft(hashall)144 b Fu(Same)30 -b(as)h Ft(-h)p Fu(.)1110 2292 y Ft(histexpand)1590 2402 -y Fu(Same)f(as)h Ft(-H)p Fu(.)1110 2569 y Ft(history)144 -b Fu(Enable)39 b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h -(Section)h(9.1)1590 2679 y([Bash)d(History)g(F)-8 b(acilities],)41 -b(page)c(146.)60 b(This)36 b(option)h(is)f(on)1590 2788 -y(b)m(y)30 b(default)h(in)f(in)m(teractiv)m(e)j(shells.)1110 -2955 y Ft(ignoreeof)1590 3065 y Fu(An)d(in)m(teractiv)m(e)j(shell)e -(will)g(not)f(exit)h(up)s(on)e(reading)i(EOF.)1110 3232 -y Ft(keyword)144 b Fu(Same)30 b(as)h Ft(-k)p Fu(.)1110 -3399 y Ft(monitor)144 b Fu(Same)30 b(as)h Ft(-m)p Fu(.)1110 -3566 y Ft(noclobber)1590 3675 y Fu(Same)f(as)h Ft(-C)p -Fu(.)1110 3842 y Ft(noexec)192 b Fu(Same)30 b(as)h Ft(-n)p -Fu(.)1110 4009 y Ft(noglob)192 b Fu(Same)30 b(as)h Ft(-f)p -Fu(.)1110 4176 y Ft(nolog)240 b Fu(Curren)m(tly)30 b(ignored.)1110 -4343 y Ft(notify)192 b Fu(Same)30 b(as)h Ft(-b)p Fu(.)1110 -4510 y Ft(nounset)144 b Fu(Same)30 b(as)h Ft(-u)p Fu(.)1110 -4677 y Ft(onecmd)192 b Fu(Same)30 b(as)h Ft(-t)p Fu(.)1110 -4844 y Ft(physical)96 b Fu(Same)30 b(as)h Ft(-P)p Fu(.)1110 -5011 y Ft(pipefail)96 b Fu(If)44 b(set,)k(the)d(return)e(v)-5 +(ignored)g(b)m(y)g(in)m(terac-)1110 2107 y(tiv)m(e)h(shells.)630 +2271 y Ft(-o)e Fj(option-name)1110 2381 y Fu(Set)h(the)f(option)h +(corresp)s(onding)e(to)i Fr(option-name)5 b Fu(:)1110 +2545 y Ft(allexport)1590 2655 y Fu(Same)30 b(as)h Ft(-a)p +Fu(.)1110 2819 y Ft(braceexpand)1590 2929 y Fu(Same)f(as)h +Ft(-B)p Fu(.)1110 3093 y Ft(emacs)240 b Fu(Use)25 b(an)f +Ft(emacs)p Fu(-st)m(yle)h(line)f(editing)h(in)m(terface)h(\(see)g +(Chapter)e(8)1590 3203 y([Command)33 b(Line)g(Editing],)h(page)h +(117\).)51 b(This)32 b(also)i(a\013ects)1590 3313 y(the)d(editing)g(in) +m(terface)h(used)d(for)h Ft(read)f(-e)p Fu(.)1110 3477 +y Ft(errexit)144 b Fu(Same)30 b(as)h Ft(-e)p Fu(.)1110 +3641 y Ft(errtrace)96 b Fu(Same)30 b(as)h Ft(-E)p Fu(.)1110 +3806 y Ft(functrace)1590 3915 y Fu(Same)f(as)h Ft(-T)p +Fu(.)1110 4080 y Ft(hashall)144 b Fu(Same)30 b(as)h Ft(-h)p +Fu(.)1110 4244 y Ft(histexpand)1590 4354 y Fu(Same)f(as)h +Ft(-H)p Fu(.)1110 4518 y Ft(history)144 b Fu(Enable)39 +b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h(Section)h(9.1) +1590 4628 y([Bash)d(History)g(F)-8 b(acilities],)41 b(page)c(152.)60 +b(This)36 b(option)h(is)f(on)1590 4737 y(b)m(y)30 b(default)h(in)f(in)m +(teractiv)m(e)j(shells.)1110 4902 y Ft(ignoreeof)1590 +5011 y Fu(An)d(in)m(teractiv)m(e)j(shell)e(will)g(not)f(exit)h(up)s(on) +e(reading)i(EOF.)1110 5176 y Ft(keyword)144 b Fu(Same)30 +b(as)h Ft(-k)p Fu(.)1110 5340 y Ft(monitor)144 b Fu(Same)30 +b(as)h Ft(-m)p Fu(.)p eop end +%%Page: 69 75 +TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(69)1110 299 y +Ft(noclobber)1590 408 y Fu(Same)30 b(as)h Ft(-C)p Fu(.)1110 +570 y Ft(noexec)192 b Fu(Same)30 b(as)h Ft(-n)p Fu(.)1110 +731 y Ft(noglob)192 b Fu(Same)30 b(as)h Ft(-f)p Fu(.)1110 +892 y Ft(nolog)240 b Fu(Curren)m(tly)30 b(ignored.)1110 +1053 y Ft(notify)192 b Fu(Same)30 b(as)h Ft(-b)p Fu(.)1110 +1214 y Ft(nounset)144 b Fu(Same)30 b(as)h Ft(-u)p Fu(.)1110 +1375 y Ft(onecmd)192 b Fu(Same)30 b(as)h Ft(-t)p Fu(.)1110 +1537 y Ft(physical)96 b Fu(Same)30 b(as)h Ft(-P)p Fu(.)1110 +1698 y Ft(pipefail)96 b Fu(If)44 b(set,)k(the)d(return)e(v)-5 b(alue)45 b(of)f(a)h(pip)s(eline)e(is)i(the)f(v)-5 b(alue)45 -b(of)1590 5121 y(the)33 b(last)h(\(righ)m(tmost\))h(command)e(to)h -(exit)g(with)f(a)g(non-zero)1590 5230 y(status,)28 b(or)f(zero)g(if)f +b(of)1590 1807 y(the)33 b(last)h(\(righ)m(tmost\))h(command)e(to)h +(exit)g(with)f(a)g(non-zero)1590 1917 y(status,)28 b(or)f(zero)g(if)f (all)i(commands)e(in)g(the)h(pip)s(eline)f(exit)i(suc-)1590 -5340 y(cessfully)-8 b(.)41 b(This)30 b(option)h(is)f(disabled)g(b)m(y)h -(default.)p eop end -%%Page: 65 71 -TeXDict begin 65 70 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(65)1110 299 y -Ft(posix)240 b Fu(Change)30 b(the)g(b)s(eha)m(vior)h(of)f(Bash)g(where) -g(the)g(default)h(op)s(era-)1590 408 y(tion)25 b(di\013ers)f(from)g -(the)h Fm(posix)f Fu(standard)f(to)i(matc)m(h)h(the)f(stan-)1590 -518 y(dard)h(\(see)j(Section)f(6.11)h([Bash)f(POSIX)e(Mo)s(de],)j(page) -f(101\).)1590 628 y(This)37 b(is)g(in)m(tended)g(to)h(mak)m(e)g(Bash)g -(b)s(eha)m(v)m(e)g(as)g(a)f(strict)h(su-)1590 737 y(p)s(erset)30 -b(of)h(that)f(standard.)1110 911 y Ft(privileged)1590 -1020 y Fu(Same)g(as)h Ft(-p)p Fu(.)1110 1194 y Ft(verbose)144 -b Fu(Same)30 b(as)h Ft(-v)p Fu(.)1110 1367 y Ft(vi)384 -b Fu(Use)36 b(a)g Ft(vi)p Fu(-st)m(yle)g(line)g(editing)g(in)m -(terface.)58 b(This)35 b(also)h(a\013ects)1590 1477 y(the)31 -b(editing)g(in)m(terface)h(used)d(for)h Ft(read)f(-e)p -Fu(.)1110 1650 y Ft(xtrace)192 b Fu(Same)30 b(as)h Ft(-x)p -Fu(.)630 1824 y Ft(-p)384 b Fu(T)-8 b(urn)33 b(on)h(privileged)h(mo)s -(de.)51 b(In)34 b(this)g(mo)s(de,)h(the)f Ft($BASH_ENV)e -Fu(and)h Ft($ENV)1110 1934 y Fu(\014les)23 b(are)h(not)f(pro)s(cessed,) -h(shell)g(functions)e(are)i(not)f(inherited)g(from)f(the)i(en-)1110 -2043 y(vironmen)m(t,)h(and)e(the)g Ft(SHELLOPTS)p Fu(,)f +2027 y(cessfully)-8 b(.)41 b(This)30 b(option)h(is)f(disabled)g(b)m(y)h +(default.)1110 2188 y Ft(posix)240 b Fu(Change)30 b(the)g(b)s(eha)m +(vior)h(of)f(Bash)g(where)g(the)g(default)h(op)s(era-)1590 +2297 y(tion)25 b(di\013ers)f(from)g(the)h Fm(posix)f +Fu(standard)f(to)i(matc)m(h)h(the)f(stan-)1590 2407 y(dard)h(\(see)j +(Section)f(6.11)h([Bash)f(POSIX)e(Mo)s(de],)j(page)f(106\).)1590 +2516 y(This)37 b(is)g(in)m(tended)g(to)h(mak)m(e)g(Bash)g(b)s(eha)m(v)m +(e)g(as)g(a)f(strict)h(su-)1590 2626 y(p)s(erset)30 b(of)h(that)f +(standard.)1110 2787 y Ft(privileged)1590 2897 y Fu(Same)g(as)h +Ft(-p)p Fu(.)1110 3058 y Ft(verbose)144 b Fu(Same)30 +b(as)h Ft(-v)p Fu(.)1110 3219 y Ft(vi)384 b Fu(Use)36 +b(a)g Ft(vi)p Fu(-st)m(yle)g(line)g(editing)g(in)m(terface.)58 +b(This)35 b(also)h(a\013ects)1590 3329 y(the)31 b(editing)g(in)m +(terface)h(used)d(for)h Ft(read)f(-e)p Fu(.)1110 3490 +y Ft(xtrace)192 b Fu(Same)30 b(as)h Ft(-x)p Fu(.)630 +3651 y Ft(-p)384 b Fu(T)-8 b(urn)33 b(on)h(privileged)h(mo)s(de.)51 +b(In)34 b(this)g(mo)s(de,)h(the)f Ft($BASH_ENV)e Fu(and)h +Ft($ENV)1110 3761 y Fu(\014les)23 b(are)h(not)f(pro)s(cessed,)h(shell)g +(functions)e(are)i(not)f(inherited)g(from)f(the)i(en-)1110 +3870 y(vironmen)m(t,)h(and)e(the)g Ft(SHELLOPTS)p Fu(,)f Ft(BASHOPTS)p Fu(,)h Ft(CDPATH)e Fu(and)i Ft(GLOBIGNORE)1110 -2153 y Fu(v)-5 b(ariables,)23 b(if)e(they)g(app)s(ear)f(in)g(the)h(en)m +3980 y Fu(v)-5 b(ariables,)23 b(if)e(they)g(app)s(ear)f(in)g(the)h(en)m (vironmen)m(t,)i(are)e(ignored.)38 b(If)20 b(the)h(shell)1110 -2262 y(is)37 b(started)h(with)f(the)g(e\013ectiv)m(e)j(user)d +4089 y(is)37 b(started)h(with)f(the)g(e\013ectiv)m(e)j(user)d (\(group\))g(id)g(not)g(equal)h(to)g(the)f(real)1110 -2372 y(user)h(\(group\))h(id,)i(and)d(the)h Ft(-p)f Fu(option)i(is)e -(not)i(supplied,)f(these)h(actions)1110 2482 y(are)32 +4199 y(user)h(\(group\))h(id,)i(and)d(the)h Ft(-p)f Fu(option)i(is)e +(not)i(supplied,)f(these)h(actions)1110 4309 y(are)32 b(tak)m(en)i(and)d(the)h(e\013ectiv)m(e)j(user)c(id)h(is)g(set)h(to)f -(the)h(real)f(user)g(id.)45 b(If)32 b(the)1110 2591 y +(the)h(real)f(user)g(id.)45 b(If)32 b(the)1110 4418 y Ft(-p)i Fu(option)h(is)g(supplied)f(at)h(startup,)h(the)f(e\013ectiv)m -(e)i(user)d(id)g(is)h(not)g(reset.)1110 2701 y(T)-8 b(urning)35 +(e)i(user)d(id)g(is)h(not)g(reset.)1110 4528 y(T)-8 b(urning)35 b(this)i(option)g(o\013)g(causes)g(the)g(e\013ectiv)m(e)i(user)d(and)g -(group)g(ids)g(to)1110 2810 y(b)s(e)30 b(set)h(to)g(the)f(real)h(user)f -(and)g(group)g(ids.)630 2984 y Ft(-t)384 b Fu(Exit)31 -b(after)g(reading)f(and)g(executing)h(one)g(command.)630 -3157 y Ft(-u)384 b Fu(T)-8 b(reat)25 b(unset)e(v)-5 b(ariables)25 -b(and)e(parameters)h(other)h(than)e(the)h(sp)s(ecial)h(param-)1110 -3267 y(eters)35 b(`)p Ft(@)p Fu(')f(or)g(`)p Ft(*)p Fu(')h(as)f(an)g -(error)g(when)f(p)s(erforming)g(parameter)i(expansion.)1110 -3377 y(An)28 b(error)h(message)g(will)g(b)s(e)f(written)h(to)h(the)e -(standard)g(error,)h(and)f(a)h(non-)1110 3486 y(in)m(teractiv)m(e)k -(shell)e(will)g(exit.)630 3660 y Ft(-v)384 b Fu(Prin)m(t)30 +(group)g(ids)g(to)1110 4637 y(b)s(e)30 b(set)h(to)g(the)f(real)h(user)f +(and)g(group)g(ids.)630 4798 y Ft(-r)384 b Fu(Enable)32 +b(restricted)h(shell)f(mo)s(de.)45 b(This)31 b(option)i(cannot)g(b)s(e) +e(unset)h(once)g(it)1110 4908 y(has)e(b)s(een)g(set.)630 +5069 y Ft(-t)384 b Fu(Exit)31 b(after)g(reading)f(and)g(executing)h +(one)g(command.)630 5230 y Ft(-u)384 b Fu(T)-8 b(reat)25 +b(unset)e(v)-5 b(ariables)25 b(and)e(parameters)h(other)h(than)e(the)h +(sp)s(ecial)h(param-)1110 5340 y(eters)32 b(`)p Ft(@)p +Fu(')f(or)h(`)p Ft(*)p Fu(',)g(or)f(arra)m(y)h(v)-5 b(ariables)32 +b(subscripted)e(with)h(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p +Fu(',)f(as)h(an)p eop end +%%Page: 70 76 +TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(70)1110 299 y(error)24 +b(when)g(p)s(erforming)g(parameter)h(expansion.)39 b(An)24 +b(error)h(message)h(will)1110 408 y(b)s(e)37 b(written)h(to)h(the)f +(standard)f(error,)i(and)f(a)g(non-in)m(teractiv)m(e)j(shell)d(will) +1110 518 y(exit.)630 667 y Ft(-v)384 b Fu(Prin)m(t)30 b(shell)h(input)e(lines)i(as)g(they)f(are)h(read.)630 -3833 y Ft(-x)384 b Fu(Prin)m(t)21 b(a)h(trace)h(of)f(simple)f -(commands,)i Ft(for)e Fu(commands,)i Ft(case)d Fu(commands,)1110 -3943 y Ft(select)29 b Fu(commands,)j(and)e(arithmetic)j -Ft(for)d Fu(commands)h(and)f(their)i(argu-)1110 4052 +817 y Ft(-x)384 b Fu(Prin)m(t)21 b(a)h(trace)h(of)f(simple)f(commands,) +i Ft(for)e Fu(commands,)i Ft(case)d Fu(commands,)1110 +927 y Ft(select)29 b Fu(commands,)j(and)e(arithmetic)j +Ft(for)d Fu(commands)h(and)f(their)i(argu-)1110 1036 y(men)m(ts)h(or)f(asso)s(ciated)i(w)m(ord)e(lists)h(after)g(they)f(are) -h(expanded)f(and)f(b)s(efore)1110 4162 y(they)i(are)g(executed.)49 +h(expanded)f(and)f(b)s(efore)1110 1146 y(they)i(are)g(executed.)49 b(The)32 b(v)-5 b(alue)33 b(of)g(the)g Ft(PS4)f Fu(v)-5 -b(ariable)34 b(is)f(expanded)f(and)1110 4271 y(the)24 +b(ariable)34 b(is)f(expanded)f(and)1110 1255 y(the)24 b(resultan)m(t)h(v)-5 b(alue)24 b(is)g(prin)m(ted)g(b)s(efore)f(the)h -(command)g(and)f(its)i(expanded)1110 4381 y(argumen)m(ts.)630 -4555 y Ft(-B)384 b Fu(The)41 b(shell)g(will)g(p)s(erform)f(brace)h -(expansion)g(\(see)h(Section)g(3.5.1)g([Brace)1110 4664 -y(Expansion],)30 b(page)h(23\).)42 b(This)30 b(option)h(is)f(on)g(b)m -(y)h(default.)630 4838 y Ft(-C)384 b Fu(Prev)m(en)m(t)25 +(command)g(and)f(its)i(expanded)1110 1365 y(argumen)m(ts.)630 +1514 y Ft(-B)384 b Fu(The)41 b(shell)g(will)g(p)s(erform)f(brace)h +(expansion)g(\(see)h(Section)g(3.5.1)g([Brace)1110 1624 +y(Expansion],)30 b(page)h(24\).)42 b(This)30 b(option)h(is)f(on)g(b)m +(y)h(default.)630 1773 y Ft(-C)384 b Fu(Prev)m(en)m(t)25 b(output)e(redirection)h(using)f(`)p Ft(>)p Fu(',)i(`)p Ft(>&)p Fu(',)g(and)e(`)p Ft(<>)p Fu(')g(from)h(o)m(v)m(erwriting)1110 -4947 y(existing)31 b(\014les.)630 5121 y Ft(-E)384 b +1883 y(existing)31 b(\014les.)630 2032 y Ft(-E)384 b Fu(If)39 b(set,)j(an)m(y)e(trap)f(on)g Ft(ERR)g Fu(is)g(inherited)g(b)m -(y)g(shell)h(functions,)h(command)1110 5230 y(substitutions,)35 +(y)g(shell)h(functions,)h(command)1110 2142 y(substitutions,)35 b(and)e(commands)g(executed)i(in)f(a)g(subshell)f(en)m(vironmen)m(t.) -1110 5340 y(The)d Ft(ERR)f Fu(trap)i(is)f(normally)h(not)f(inherited)g -(in)g(suc)m(h)g(cases.)p eop end -%%Page: 66 72 -TeXDict begin 66 71 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(66)630 299 y Ft(-H)384 -b Fu(Enable)38 b(`)p Ft(!)p Fu(')h(st)m(yle)h(history)e(substitution)g -(\(see)h(Section)h(9.3)f([History)g(In-)1110 408 y(teraction],)g(page)d -(148\).)57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m -(teractiv)m(e)1110 518 y(shells.)630 670 y Ft(-P)384 +1110 2252 y(The)d Ft(ERR)f Fu(trap)i(is)f(normally)h(not)f(inherited)g +(in)g(suc)m(h)g(cases.)630 2401 y Ft(-H)384 b Fu(Enable)38 +b(`)p Ft(!)p Fu(')h(st)m(yle)h(history)e(substitution)g(\(see)h +(Section)h(9.3)f([History)g(In-)1110 2511 y(teraction],)g(page)d +(154\).)57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m +(teractiv)m(e)1110 2620 y(shells.)630 2770 y Ft(-P)384 b Fu(If)39 b(set,)j(do)d(not)g(resolv)m(e)i(sym)m(b)s(olic)e(links)g -(when)f(p)s(erforming)g(commands)1110 780 y(suc)m(h)29 +(when)f(p)s(erforming)g(commands)1110 2879 y(suc)m(h)29 b(as)h Ft(cd)f Fu(whic)m(h)g(c)m(hange)h(the)g(curren)m(t)f(directory) --8 b(.)42 b(The)28 b(ph)m(ysical)j(direc-)1110 890 y(tory)j(is)g(used)f -(instead.)52 b(By)34 b(default,)h(Bash)f(follo)m(ws)h(the)f(logical)i -(c)m(hain)f(of)1110 999 y(directories)j(when)d(p)s(erforming)h +-8 b(.)42 b(The)28 b(ph)m(ysical)j(direc-)1110 2989 y(tory)j(is)g(used) +f(instead.)52 b(By)34 b(default,)h(Bash)f(follo)m(ws)h(the)f(logical)i +(c)m(hain)f(of)1110 3098 y(directories)j(when)d(p)s(erforming)h (commands)g(whic)m(h)g(c)m(hange)i(the)f(curren)m(t)1110 -1109 y(directory)-8 b(.)1110 1240 y(F)g(or)42 b(example,)i(if)d +3208 y(directory)-8 b(.)1110 3337 y(F)g(or)42 b(example,)i(if)d Ft(/usr/sys)e Fu(is)i(a)g(sym)m(b)s(olic)g(link)g(to)h -Ft(/usr/local/sys)1110 1349 y Fu(then:)1350 1480 y Ft($)47 -b(cd)h(/usr/sys;)d(echo)i($PWD)1350 1590 y(/usr/sys)1350 -1700 y($)g(cd)h(..;)f(pwd)1350 1809 y(/usr)1110 1940 -y Fu(If)30 b Ft(set)f(-P)h Fu(is)h(on,)f(then:)1350 2071 -y Ft($)47 b(cd)h(/usr/sys;)d(echo)i($PWD)1350 2181 y(/usr/local/sys) -1350 2290 y($)g(cd)h(..;)f(pwd)1350 2400 y(/usr/local)630 -2552 y(-T)384 b Fu(If)34 b(set,)j(an)m(y)e(trap)g(on)g +Ft(/usr/local/sys)1110 3447 y Fu(then:)1350 3577 y Ft($)47 +b(cd)h(/usr/sys;)d(echo)i($PWD)1350 3686 y(/usr/sys)1350 +3796 y($)g(cd)h(..;)f(pwd)1350 3905 y(/usr)1110 4035 +y Fu(If)30 b Ft(set)f(-P)h Fu(is)h(on,)f(then:)1350 4164 +y Ft($)47 b(cd)h(/usr/sys;)d(echo)i($PWD)1350 4274 y(/usr/local/sys) +1350 4384 y($)g(cd)h(..;)f(pwd)1350 4493 y(/usr/local)630 +4643 y(-T)384 b Fu(If)34 b(set,)j(an)m(y)e(trap)g(on)g Ft(DEBUG)e Fu(and)i Ft(RETURN)e Fu(are)i(inherited)g(b)m(y)f(shell)i -(func-)1110 2662 y(tions,)k(command)d(substitutions,)h(and)f(commands)g -(executed)h(in)f(a)h(sub-)1110 2771 y(shell)33 b(en)m(vironmen)m(t.)49 +(func-)1110 4752 y(tions,)k(command)d(substitutions,)h(and)f(commands)g +(executed)h(in)f(a)h(sub-)1110 4862 y(shell)33 b(en)m(vironmen)m(t.)49 b(The)32 b Ft(DEBUG)g Fu(and)g Ft(RETURN)f Fu(traps)h(are)i(normally)f -(not)1110 2881 y(inherited)d(in)g(suc)m(h)g(cases.)630 -3033 y Ft(--)384 b Fu(If)44 b(no)g(argumen)m(ts)g(follo)m(w)i(this)e +(not)1110 4971 y(inherited)d(in)g(suc)m(h)g(cases.)630 +5121 y Ft(--)384 b Fu(If)44 b(no)g(argumen)m(ts)g(follo)m(w)i(this)e (option,)k(then)c(the)h(p)s(ositional)g(parame-)1110 -3143 y(ters)31 b(are)g(unset.)40 b(Otherwise,)31 b(the)f(p)s(ositional) -i(parameters)f(are)f(set)h(to)h(the)1110 3253 y Fr(argumen)m(ts)p +5230 y(ters)31 b(are)g(unset.)40 b(Otherwise,)31 b(the)f(p)s(ositional) +i(parameters)f(are)f(set)h(to)h(the)1110 5340 y Fr(argumen)m(ts)p Fu(,)f(ev)m(en)g(if)f(some)h(of)g(them)f(b)s(egin)g(with)g(a)h(`)p -Ft(-)p Fu('.)630 3405 y Ft(-)432 b Fu(Signal)45 b(the)g(end)f(of)h -(options,)k(cause)c(all)h(remaining)e Fr(argumen)m(ts)49 -b Fu(to)d(b)s(e)1110 3515 y(assigned)33 b(to)h(the)g(p)s(ositional)g -(parameters.)49 b(The)33 b Ft(-x)g Fu(and)f Ft(-v)h Fu(options)h(are) -1110 3624 y(turned)k(o\013.)68 b(If)38 b(there)i(are)f(no)g(argumen)m -(ts,)j(the)e(p)s(ositional)g(parameters)1110 3734 y(remain)30 -b(unc)m(hanged.)630 3886 y(Using)d(`)p Ft(+)p Fu(')h(rather)f(than)g(`) -p Ft(-)p Fu(')g(causes)h(these)f(options)h(to)g(b)s(e)e(turned)g -(o\013.)40 b(The)27 b(options)h(can)630 3996 y(also)36 -b(b)s(e)f(used)f(up)s(on)g(in)m(v)m(o)s(cation)j(of)e(the)g(shell.)56 -b(The)34 b(curren)m(t)h(set)h(of)f(options)h(ma)m(y)g(b)s(e)630 -4105 y(found)29 b(in)h Ft($-)p Fu(.)630 4236 y(The)43 +Ft(-)p Fu('.)p eop end +%%Page: 71 77 +TeXDict begin 71 76 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(71)630 299 y Ft(-)432 +b Fu(Signal)45 b(the)g(end)f(of)h(options,)k(cause)c(all)h(remaining)e +Fr(argumen)m(ts)49 b Fu(to)d(b)s(e)1110 408 y(assigned)33 +b(to)h(the)g(p)s(ositional)g(parameters.)49 b(The)33 +b Ft(-x)g Fu(and)f Ft(-v)h Fu(options)h(are)1110 518 +y(turned)k(o\013.)68 b(If)38 b(there)i(are)f(no)g(argumen)m(ts,)j(the)e +(p)s(ositional)g(parameters)1110 628 y(remain)30 b(unc)m(hanged.)630 +775 y(Using)d(`)p Ft(+)p Fu(')h(rather)f(than)g(`)p Ft(-)p +Fu(')g(causes)h(these)f(options)h(to)g(b)s(e)e(turned)g(o\013.)40 +b(The)27 b(options)h(can)630 884 y(also)36 b(b)s(e)f(used)f(up)s(on)g +(in)m(v)m(o)s(cation)j(of)e(the)g(shell.)56 b(The)34 +b(curren)m(t)h(set)h(of)f(options)h(ma)m(y)g(b)s(e)630 +994 y(found)29 b(in)h Ft($-)p Fu(.)630 1122 y(The)43 b(remaining)h(N)f Fr(argumen)m(ts)48 b Fu(are)c(p)s(ositional)g -(parameters)g(and)f(are)h(assigned,)j(in)630 4346 y(order,)30 +(parameters)g(and)f(are)h(assigned,)j(in)630 1232 y(order,)30 b(to)h Ft($1)p Fu(,)f Ft($2)p Fu(,)36 b(.)22 b(.)g(.)42 b Ft($N)p Fu(.)e(The)30 b(sp)s(ecial)h(parameter)g Ft(#)f -Fu(is)g(set)h(to)g(N.)630 4477 y(The)f(return)f(status)i(is)f(alw)m(a)m +Fu(is)g(set)h(to)g(N.)630 1360 y(The)f(return)f(status)i(is)f(alw)m(a)m (ys)i(zero)f(unless)f(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f -(supplied.)150 4669 y Fk(4.3.2)63 b(The)41 b(Shopt)h(Builtin)150 -4816 y Fu(This)30 b(builtin)g(allo)m(ws)h(y)m(ou)g(to)g(c)m(hange)h +(supplied.)150 1548 y Fk(4.3.2)63 b(The)41 b(Shopt)h(Builtin)150 +1695 y Fu(This)30 b(builtin)g(allo)m(ws)h(y)m(ou)g(to)g(c)m(hange)h (additional)f(shell)f(optional)i(b)s(eha)m(vior.)150 -4968 y Ft(shopt)870 5099 y(shopt)46 b([-pqsu])g([-o])h([)p -Fj(optname)e Ft(...])630 5230 y Fu(T)-8 b(oggle)37 b(the)e(v)-5 +1842 y Ft(shopt)870 1970 y(shopt)46 b([-pqsu])g([-o])h([)p +Fj(optname)e Ft(...])630 2099 y Fu(T)-8 b(oggle)37 b(the)e(v)-5 b(alues)35 b(of)g(settings)h(con)m(trolling)g(optional)g(shell)f(b)s -(eha)m(vior.)55 b(The)34 b(settings)630 5340 y(can)24 +(eha)m(vior.)55 b(The)34 b(settings)630 2208 y(can)24 b(b)s(e)g(either)h(those)f(listed)h(b)s(elo)m(w,)h(or,)f(if)g(the)f Ft(-o)f Fu(option)i(is)f(used,)h(those)g(a)m(v)-5 b(ailable)26 -b(with)p eop end -%%Page: 67 73 -TeXDict begin 67 72 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y(the)30 -b Ft(-o)f Fu(option)i(to)f(the)g Ft(set)f Fu(builtin)h(command)f(\(see) -i(Section)g(4.3.1)g([The)f(Set)g(Builtin],)630 408 y(page)i(62\).)45 -b(With)32 b(no)f(options,)h(or)g(with)f(the)g Ft(-p)g -Fu(option,)h(a)g(list)g(of)f(all)i(settable)g(options)630 -518 y(is)g(displa)m(y)m(ed,)i(with)e(an)g(indication)h(of)g(whether)e -(or)h(not)h(eac)m(h)g(is)g(set;)h(if)e Fr(optnames)38 -b Fu(are)630 628 y(supplied,)25 b(the)g(output)g(is)g(restricted)g(to)h -(those)g(options.)39 b(The)24 b Ft(-p)h Fu(option)g(causes)g(output)630 -737 y(to)30 b(b)s(e)f(displa)m(y)m(ed)g(in)g(a)h(form)f(that)g(ma)m(y)h -(b)s(e)f(reused)f(as)i(input.)39 b(Other)29 b(options)g(ha)m(v)m(e)i -(the)630 847 y(follo)m(wing)h(meanings:)630 1004 y Ft(-s)384 +b(with)630 2318 y(the)k Ft(-o)f Fu(option)i(to)f(the)g +Ft(set)f Fu(builtin)h(command)f(\(see)i(Section)g(4.3.1)g([The)f(Set)g +(Builtin],)630 2427 y(page)i(67\).)45 b(With)32 b(no)f(options,)h(or)g +(with)f(the)g Ft(-p)g Fu(option,)h(a)g(list)g(of)f(all)i(settable)g +(options)630 2537 y(is)g(displa)m(y)m(ed,)i(with)e(an)g(indication)h +(of)f(whether)g(or)g(not)g(eac)m(h)h(is)g(set;)h(if)e +Fr(optname)5 b Fu(s)34 b(are)630 2647 y(supplied,)25 +b(the)g(output)g(is)g(restricted)g(to)h(those)g(options.)39 +b(The)24 b Ft(-p)h Fu(option)g(causes)g(output)630 2756 +y(to)30 b(b)s(e)f(displa)m(y)m(ed)g(in)g(a)h(form)f(that)g(ma)m(y)h(b)s +(e)f(reused)f(as)i(input.)39 b(Other)29 b(options)g(ha)m(v)m(e)i(the) +630 2866 y(follo)m(wing)h(meanings:)630 3013 y Ft(-s)384 b Fu(Enable)30 b(\(set\))i(eac)m(h)f Fr(optname)p Fu(.)630 -1161 y Ft(-u)384 b Fu(Disable)31 b(\(unset\))g(eac)m(h)h -Fr(optname)p Fu(.)630 1319 y Ft(-q)384 b Fu(Suppresses)28 +3160 y Ft(-u)384 b Fu(Disable)31 b(\(unset\))g(eac)m(h)h +Fr(optname)p Fu(.)630 3307 y Ft(-q)384 b Fu(Suppresses)28 b(normal)h(output;)h(the)g(return)e(status)i(indicates)h(whether)e(the) -1110 1428 y Fr(optname)37 b Fu(is)31 b(set)h(or)f(unset.)43 +1110 3417 y Fr(optname)37 b Fu(is)31 b(set)h(or)f(unset.)43 b(If)31 b(m)m(ultiple)h Fr(optname)37 b Fu(argumen)m(ts)31 -b(are)h(giv)m(en)1110 1538 y(with)d Ft(-q)p Fu(,)g(the)g(return)f -(status)h(is)g(zero)h(if)f(all)h Fr(optnames)j Fu(are)d(enabled;)f -(non-)1110 1647 y(zero)i(otherwise.)630 1805 y Ft(-o)384 -b Fu(Restricts)22 b(the)f(v)-5 b(alues)22 b(of)f Fr(optname)27 -b Fu(to)22 b(b)s(e)e(those)i(de\014ned)e(for)h(the)g -Ft(-o)f Fu(option)1110 1914 y(to)31 b(the)g Ft(set)e +b(are)h(giv)m(en)1110 3527 y(with)d Ft(-q)p Fu(,)f(the)i(return)d +(status)j(is)f(zero)g(if)g(all)h Fr(optname)5 b Fu(s)29 +b(are)h(enabled;)f(non-)1110 3636 y(zero)i(otherwise.)630 +3784 y Ft(-o)384 b Fu(Restricts)22 b(the)f(v)-5 b(alues)22 +b(of)f Fr(optname)27 b Fu(to)22 b(b)s(e)e(those)i(de\014ned)e(for)h +(the)g Ft(-o)f Fu(option)1110 3893 y(to)31 b(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f -(62\).)630 2071 y(If)e(either)i Ft(-s)e Fu(or)h Ft(-u)f +(67\).)630 4040 y(If)e(either)i Ft(-s)e Fu(or)h Ft(-u)f Fu(is)h(used)f(with)g(no)h Fr(optname)35 b Fu(argumen)m(ts,)c -Ft(shopt)d Fu(sho)m(ws)h(only)h(those)630 2181 y(options)h(whic)m(h)f +Ft(shopt)d Fu(sho)m(ws)h(only)h(those)630 4150 y(options)h(whic)m(h)f (are)h(set)f(or)h(unset,)f(resp)s(ectiv)m(ely)-8 b(.)630 -2314 y(Unless)30 b(otherwise)h(noted,)g(the)g Ft(shopt)d +4278 y(Unless)30 b(otherwise)h(noted,)g(the)g Ft(shopt)d Fu(options)j(are)g(disabled)f(\(o\013)7 b(\))32 b(b)m(y)e(default.)630 -2448 y(The)d(return)f(status)i(when)f(listing)h(options)g(is)f(zero)i -(if)e(all)i Fr(optnames)i Fu(are)d(enabled,)g(non-)630 -2557 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f(unsetting)g -(options,)i(the)e(return)f(status)h(is)g(zero)630 2667 +4407 y(The)d(return)f(status)i(when)e(listing)j(options)e(is)h(zero)g +(if)f(all)i Fr(optname)5 b Fu(s)27 b(are)h(enabled,)g(non-)630 +4516 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f(unsetting)g +(options,)i(the)e(return)f(status)h(is)g(zero)630 4626 y(unless)30 b(an)g Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5 -b(alid)30 b(shell)h(option.)630 2800 y(The)f(list)h(of)f -Ft(shopt)f Fu(options)i(is:)630 2958 y Ft(assoc_expand_once)1110 -3067 y Fu(If)h(set,)i(the)e(shell)h(suppresses)e(m)m(ultiple)i(ev)-5 +b(alid)30 b(shell)h(option.)630 4754 y(The)f(list)h(of)f +Ft(shopt)f Fu(options)i(is:)630 4902 y Ft(assoc_expand_once)1110 +5011 y Fu(If)h(set,)i(the)e(shell)h(suppresses)e(m)m(ultiple)i(ev)-5 b(aluation)34 b(of)e(asso)s(ciativ)m(e)j(arra)m(y)1110 -3177 y(subscripts)24 b(during)h(arithmetic)h(expression)g(ev)-5 -b(aluation,)28 b(while)e(executing)1110 3286 y(builtins)c(that)i(can)f +5121 y(subscripts)24 b(during)h(arithmetic)h(expression)g(ev)-5 +b(aluation,)28 b(while)e(executing)1110 5230 y(builtins)c(that)i(can)f (p)s(erform)f(v)-5 b(ariable)24 b(assignmen)m(ts,)h(and)e(while)g -(executing)1110 3396 y(builtins)30 b(that)h(p)s(erform)e(arra)m(y)i -(dereferencing.)630 3553 y Ft(autocd)192 b Fu(If)27 b(set,)h(a)g -(command)f(name)g(that)h(is)f(the)g(name)g(of)h(a)f(directory)h(is)f -(executed)1110 3663 y(as)j(if)f(it)h(w)m(ere)f(the)h(argumen)m(t)g(to)g -(the)f Ft(cd)g Fu(command.)40 b(This)29 b(option)g(is)h(only)1110 -3772 y(used)g(b)m(y)g(in)m(teractiv)m(e)j(shells.)630 -3930 y Ft(cdable_vars)1110 4039 y Fu(If)h(this)h(is)g(set,)i(an)e -(argumen)m(t)g(to)h(the)f Ft(cd)f Fu(builtin)h(command)f(that)i(is)f -(not)1110 4149 y(a)c(directory)g(is)g(assumed)f(to)h(b)s(e)f(the)h +(executing)1110 5340 y(builtins)30 b(that)h(p)s(erform)e(arra)m(y)i +(dereferencing.)p eop end +%%Page: 72 78 +TeXDict begin 72 77 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(72)630 299 y Ft(autocd)192 +b Fu(If)27 b(set,)h(a)g(command)f(name)g(that)h(is)f(the)g(name)g(of)h +(a)f(directory)h(is)f(executed)1110 408 y(as)j(if)f(it)h(w)m(ere)f(the) +h(argumen)m(t)g(to)g(the)f Ft(cd)g Fu(command.)40 b(This)29 +b(option)g(is)h(only)1110 518 y(used)g(b)m(y)g(in)m(teractiv)m(e)j +(shells.)630 682 y Ft(cdable_vars)1110 792 y Fu(If)h(this)h(is)g(set,)i +(an)e(argumen)m(t)g(to)h(the)f Ft(cd)f Fu(builtin)h(command)f(that)i +(is)f(not)1110 902 y(a)c(directory)g(is)g(assumed)f(to)h(b)s(e)f(the)h (name)f(of)h(a)g(v)-5 b(ariable)31 b(whose)g(v)-5 b(alue)31 -b(is)1110 4258 y(the)g(directory)f(to)i(c)m(hange)f(to.)630 -4416 y Ft(cdspell)144 b Fu(If)27 b(set,)h(minor)f(errors)f(in)h(the)g +b(is)1110 1011 y(the)g(directory)f(to)i(c)m(hange)f(to.)630 +1176 y Ft(cdspell)144 b Fu(If)27 b(set,)h(minor)f(errors)f(in)h(the)g (sp)s(elling)h(of)f(a)g(directory)h(comp)s(onen)m(t)f(in)g(a)h -Ft(cd)1110 4525 y Fu(command)i(will)h(b)s(e)f(corrected.)43 +Ft(cd)1110 1285 y Fu(command)i(will)h(b)s(e)f(corrected.)43 b(The)30 b(errors)g(c)m(hec)m(k)m(ed)j(for)d(are)h(transp)s(osed)1110 -4635 y(c)m(haracters,)46 b(a)c(missing)f(c)m(haracter,)47 +1395 y(c)m(haracters,)46 b(a)c(missing)f(c)m(haracter,)47 b(and)40 b(a)i(c)m(haracter)h(to)s(o)g(man)m(y)-8 b(.)74 -b(If)42 b(a)1110 4744 y(correction)25 b(is)e(found,)g(the)h(corrected)g -(path)f(is)g(prin)m(ted,)h(and)f(the)g(command)1110 4854 +b(If)42 b(a)1110 1504 y(correction)25 b(is)e(found,)g(the)h(corrected)g +(path)f(is)g(prin)m(ted,)h(and)f(the)g(command)1110 1614 y(pro)s(ceeds.)40 b(This)30 b(option)h(is)f(only)h(used)e(b)m(y)h(in)m -(teractiv)m(e)k(shells.)630 5011 y Ft(checkhash)1110 -5121 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f -(command)f(found)g(in)g(the)h(hash)f(table)1110 5230 +(teractiv)m(e)k(shells.)630 1778 y Ft(checkhash)1110 +1888 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f +(command)f(found)g(in)g(the)h(hash)f(table)1110 1998 y(exists)k(b)s(efore)f(trying)h(to)h(execute)g(it.)48 -b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 5340 -y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)p -eop end -%%Page: 68 74 -TeXDict begin 68 73 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(68)630 299 y Ft(checkjobs)1110 -408 y Fu(If)28 b(set,)i(Bash)e(lists)h(the)g(status)g(of)f(an)m(y)h -(stopp)s(ed)f(and)g(running)e(jobs)i(b)s(efore)1110 518 -y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72 b(If)41 -b(an)m(y)g(jobs)f(are)i(running,)g(this)f(causes)1110 -628 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h -(exit)g(is)g(attempted)h(without)e(an)1110 737 y(in)m(terv)m(ening)d -(command)f(\(see)h(Chapter)e(7)h([Job)g(Con)m(trol],)i(page)f(107\).)40 -b(The)1110 847 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h -(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 1029 y Ft(checkwinsize)1110 -1139 y Fu(If)23 b(set,)j(Bash)e(c)m(hec)m(ks)h(the)f(windo)m(w)f(size)h -(after)h(eac)m(h)f(external)h(\(non-builtin\))1110 1249 +b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 2107 +y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)630 +2271 y Ft(checkjobs)1110 2381 y Fu(If)d(set,)i(Bash)e(lists)h(the)g +(status)g(of)f(an)m(y)h(stopp)s(ed)f(and)g(running)e(jobs)i(b)s(efore) +1110 2491 y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72 +b(If)41 b(an)m(y)g(jobs)f(are)i(running,)g(this)f(causes)1110 +2600 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h +(exit)g(is)g(attempted)h(without)e(an)1110 2710 y(in)m(terv)m(ening)d +(command)f(\(see)h(Chapter)e(7)h([Job)g(Con)m(trol],)i(page)f(113\).)40 +b(The)1110 2819 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h +(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 2984 y Ft(checkwinsize)1110 +3093 y Fu(If)23 b(set,)j(Bash)e(c)m(hec)m(ks)h(the)f(windo)m(w)f(size)h +(after)h(eac)m(h)f(external)h(\(non-builtin\))1110 3203 y(command)55 b(and,)60 b(if)55 b(necessary)-8 b(,)62 b(up)s(dates)54 b(the)h(v)-5 b(alues)55 b(of)g Ft(LINES)f -Fu(and)1110 1358 y Ft(COLUMNS)p Fu(.)39 b(This)29 b(option)i(is)g -(enabled)f(b)m(y)g(default.)630 1541 y Ft(cmdhist)144 +Fu(and)1110 3313 y Ft(COLUMNS)p Fu(.)39 b(This)29 b(option)i(is)g +(enabled)f(b)m(y)g(default.)630 3477 y Ft(cmdhist)144 b Fu(If)33 b(set,)j(Bash)e(attempts)h(to)g(sa)m(v)m(e)g(all)g(lines)f -(of)g(a)h(m)m(ultiple-line)g(command)1110 1650 y(in)c(the)g(same)g +(of)g(a)h(m)m(ultiple-line)g(command)1110 3587 y(in)c(the)g(same)g (history)g(en)m(try)-8 b(.)42 b(This)30 b(allo)m(ws)i(easy)g -(re-editing)g(of)f(m)m(ulti-line)1110 1760 y(commands.)79 +(re-editing)g(of)f(m)m(ulti-line)1110 3696 y(commands.)79 b(This)43 b(option)g(is)h(enabled)f(b)m(y)g(default,)k(but)c(only)g -(has)g(an)1110 1870 y(e\013ect)30 b(if)e(command)g(history)g(is)h +(has)g(an)1110 3806 y(e\013ect)30 b(if)e(command)g(history)g(is)h (enabled)f(\(see)h(Section)g(9.1)h([Bash)e(History)1110 -1979 y(F)-8 b(acilities],)34 b(page)d(146\).)630 2162 -y Ft(compat31)630 2271 y(compat32)630 2381 y(compat40)630 -2491 y(compat41)630 2600 y(compat42)630 2710 y(compat43)630 -2819 y(compat44)96 b Fu(These)39 b(con)m(trol)i(asp)s(ects)f(of)f(the)h +3915 y(F)-8 b(acilities],)34 b(page)d(152\).)630 4080 +y Ft(compat31)630 4189 y(compat32)630 4299 y(compat40)630 +4408 y(compat41)630 4518 y(compat42)630 4628 y(compat43)630 +4737 y(compat44)96 b Fu(These)39 b(con)m(trol)i(asp)s(ects)f(of)f(the)h (shell's)g(compatibilit)m(y)h(mo)s(de)e(\(see)h(Sec-)1110 -2929 y(tion)31 b(6.12)h([Shell)e(Compatibilit)m(y)i(Mo)s(de],)f(page)g -(104\).)630 3112 y Ft(complete_fullquote)1110 3221 y +4847 y(tion)31 b(6.12)h([Shell)e(Compatibilit)m(y)i(Mo)s(de],)f(page)g +(110\).)630 5011 y Ft(complete_fullquote)1110 5121 y Fu(If)g(set,)g(Bash)h(quotes)f(all)h(shell)f(metac)m(haracters)i(in)e -(\014lenames)g(and)g(direc-)1110 3331 y(tory)g(names)f(when)g(p)s +(\014lenames)g(and)g(direc-)1110 5230 y(tory)g(names)f(when)g(p)s (erforming)f(completion.)43 b(If)30 b(not)h(set,)g(Bash)g(remo)m(v)m -(es)1110 3440 y(metac)m(haracters)40 b(suc)m(h)d(as)h(the)g(dollar)g -(sign)g(from)f(the)h(set)g(of)f(c)m(haracters)1110 3550 -y(that)f(will)g(b)s(e)f(quoted)g(in)g(completed)i(\014lenames)e(when)f -(these)i(metac)m(har-)1110 3660 y(acters)29 b(app)s(ear)e(in)g(shell)h -(v)-5 b(ariable)28 b(references)g(in)f(w)m(ords)g(to)i(b)s(e)e -(completed.)1110 3769 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v) --5 b(ariable)33 b(names)g(that)f(expand)g(to)h(di-)1110 -3879 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,) -g(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 3988 +(es)1110 5340 y(metac)m(haracters)40 b(suc)m(h)d(as)h(the)g(dollar)g +(sign)g(from)f(the)h(set)g(of)f(c)m(haracters)p eop end +%%Page: 73 79 +TeXDict begin 73 78 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(73)1110 299 y(that)36 +b(will)g(b)s(e)f(quoted)g(in)g(completed)i(\014lenames)e(when)f(these)i +(metac)m(har-)1110 408 y(acters)29 b(app)s(ear)e(in)g(shell)h(v)-5 +b(ariable)28 b(references)g(in)f(w)m(ords)g(to)i(b)s(e)e(completed.) +1110 518 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v)-5 +b(ariable)33 b(names)g(that)f(expand)g(to)h(di-)1110 +628 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,)g +(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 737 y(\014lenames)j(will)h(not)f(b)s(e)g(quoted,)h(either.)41 b(This)28 b(is)i(activ)m(e)h(only)e(when)g(bash)1110 -4098 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f -(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 4208 +847 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f +(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 956 y(is)41 b(set)g(b)m(y)g(default,)j(whic)m(h)c(is)h(the)g(default)g -(Bash)g(b)s(eha)m(vior)g(in)g(v)m(ersions)1110 4317 y(through)30 -b(4.2.)630 4500 y Ft(direxpand)1110 4609 y Fu(If)k(set,)i(Bash)f +(Bash)g(b)s(eha)m(vior)g(in)g(v)m(ersions)1110 1066 y(through)30 +b(4.2.)630 1244 y Ft(direxpand)1110 1354 y Fu(If)k(set,)i(Bash)f (replaces)g(directory)g(names)g(with)f(the)g(results)h(of)f(w)m(ord)g -(ex-)1110 4719 y(pansion)k(when)g(p)s(erforming)f(\014lename)i -(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 4829 -y(con)m(ten)m(ts)29 b(of)e(the)g(readline)h(editing)g(bu\013er.)38 -b(If)27 b(not)g(set,)i(Bash)e(attempts)h(to)1110 4938 -y(preserv)m(e)j(what)f(the)g(user)g(t)m(yp)s(ed.)630 -5121 y Ft(dirspell)96 b Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s -(elling)g(correction)g(on)g(directory)g(names)f(during)1110 -5230 y(w)m(ord)36 b(completion)h(if)f(the)g(directory)g(name)g -(initially)h(supplied)e(do)s(es)h(not)1110 5340 y(exist.)p -eop end -%%Page: 69 75 -TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(69)630 299 y Ft(dotglob)144 -b Fu(If)36 b(set,)i(Bash)e(includes)g(\014lenames)g(b)s(eginning)f -(with)h(a)g(`.')58 b(in)36 b(the)g(results)1110 408 y(of)f(\014lename)f -(expansion.)53 b(The)33 b(\014lenames)i(`)p Ft(.)p Fu(')f(and)g(`)p -Ft(..)p Fu(')g(m)m(ust)h(alw)m(a)m(ys)h(b)s(e)1110 518 +(ex-)1110 1463 y(pansion)k(when)g(p)s(erforming)f(\014lename)i +(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 1573 +y(con)m(ten)m(ts)c(of)e(the)h(Readline)f(editing)h(bu\013er.)52 +b(If)33 b(not)i(set,)h(Bash)e(attempts)1110 1682 y(to)d(preserv)m(e)g +(what)f(the)g(user)g(t)m(yp)s(ed.)630 1861 y Ft(dirspell)96 +b Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s(elling)g(correction)g(on)g +(directory)g(names)f(during)1110 1970 y(w)m(ord)36 b(completion)h(if)f +(the)g(directory)g(name)g(initially)h(supplied)e(do)s(es)h(not)1110 +2080 y(exist.)630 2258 y Ft(dotglob)144 b Fu(If)36 b(set,)i(Bash)e +(includes)g(\014lenames)g(b)s(eginning)f(with)h(a)g(`.')58 +b(in)36 b(the)g(results)1110 2367 y(of)f(\014lename)f(expansion.)53 +b(The)33 b(\014lenames)i(`)p Ft(.)p Fu(')f(and)g(`)p +Ft(..)p Fu(')g(m)m(ust)h(alw)m(a)m(ys)h(b)s(e)1110 2477 y(matc)m(hed)31 b(explicitly)-8 b(,)33 b(ev)m(en)e(if)f -Ft(dotglob)f Fu(is)h(set.)630 682 y Ft(execfail)96 b +Ft(dotglob)f Fu(is)h(set.)630 2655 y Ft(execfail)96 b Fu(If)24 b(this)h(is)f(set,)j(a)e(non-in)m(teractiv)m(e)i(shell)e(will) -f(not)h(exit)h(if)e(it)h(cannot)h(execute)1110 792 y(the)i(\014le)g(sp) -s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to)h(the)f Ft(exec)f -Fu(builtin)h(command.)39 b(An)1110 902 y(in)m(teractiv)m(e)33 -b(shell)e(do)s(es)f(not)g(exit)i(if)e Ft(exec)f Fu(fails.)630 -1066 y Ft(expand_aliases)1110 1176 y Fu(If)j(set,)h(aliases)g(are)g +f(not)h(exit)h(if)e(it)h(cannot)h(execute)1110 2765 y(the)i(\014le)g +(sp)s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to)h(the)f +Ft(exec)f Fu(builtin)h(command.)39 b(An)1110 2874 y(in)m(teractiv)m(e) +33 b(shell)e(do)s(es)f(not)g(exit)i(if)e Ft(exec)f Fu(fails.)630 +3052 y Ft(expand_aliases)1110 3162 y Fu(If)j(set,)h(aliases)g(are)g (expanded)e(as)h(describ)s(ed)f(b)s(elo)m(w)h(under)f(Aliases,)i(Sec-) -1110 1285 y(tion)38 b(6.6)h([Aliases],)j(page)d(94.)64 -b(This)37 b(option)h(is)g(enabled)g(b)m(y)g(default)g(for)1110 -1395 y(in)m(teractiv)m(e)33 b(shells.)630 1559 y Ft(extdebug)96 +1110 3271 y(tion)i(6.6)h([Aliases],)h(page)e(100.)55 +b(This)33 b(option)i(is)g(enabled)f(b)m(y)h(default)f(for)1110 +3381 y(in)m(teractiv)m(e)f(shells.)630 3559 y Ft(extdebug)96 b Fu(If)35 b(set)i(at)f(shell)g(in)m(v)m(o)s(cation,)k(or)c(in)f(a)h (shell)h(startup)e(\014le,)i(arrange)g(to)f(ex-)1110 -1669 y(ecute)h(the)f(debugger)g(pro\014le)g(b)s(efore)g(the)g(shell)h -(starts,)h(iden)m(tical)g(to)f(the)1110 1778 y Ft(--debugger)32 +3669 y(ecute)h(the)f(debugger)g(pro\014le)g(b)s(efore)g(the)g(shell)h +(starts,)h(iden)m(tical)g(to)f(the)1110 3778 y Ft(--debugger)32 b Fu(option.)56 b(If)35 b(set)h(after)g(in)m(v)m(o)s(cation,)j(b)s(eha) -m(vior)c(in)m(tended)g(for)1110 1888 y(use)30 b(b)m(y)g(debuggers)g(is) -h(enabled:)1159 2025 y(1.)61 b(The)37 b Ft(-F)g Fu(option)h(to)g(the)g +m(vior)c(in)m(tended)g(for)1110 3888 y(use)30 b(b)m(y)g(debuggers)g(is) +h(enabled:)1159 4032 y(1.)61 b(The)37 b Ft(-F)g Fu(option)h(to)g(the)g Ft(declare)d Fu(builtin)i(\(see)i(Section)f(4.2)h([Bash)1290 -2134 y(Builtins],)29 b(page)g(51\))g(displa)m(ys)f(the)g(source)h -(\014le)f(name)g(and)f(line)h(n)m(um-)1290 2244 y(b)s(er)h(corresp)s +4141 y(Builtins],)29 b(page)g(55\))g(displa)m(ys)f(the)g(source)h +(\014le)f(name)g(and)f(line)h(n)m(um-)1290 4251 y(b)s(er)h(corresp)s (onding)g(to)i(eac)m(h)g(function)f(name)g(supplied)f(as)i(an)f(argu-) -1290 2354 y(men)m(t.)1159 2491 y(2.)61 b(If)20 b(the)h(command)g(run)e +1290 4361 y(men)m(t.)1159 4504 y(2.)61 b(If)20 b(the)h(command)g(run)e (b)m(y)i(the)f Ft(DEBUG)g Fu(trap)g(returns)g(a)h(non-zero)g(v)-5 -b(alue,)1290 2600 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g -(not)i(executed.)1159 2737 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m +b(alue,)1290 4614 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g +(not)i(executed.)1159 4758 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m (y)i(the)f Ft(DEBUG)f Fu(trap)h(returns)f(a)i(v)-5 b(alue)38 -b(of)f(2,)1290 2847 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h -(subroutine)e(\(a)i(shell)g(function)f(or)1290 2956 y(a)h(shell)g +b(of)f(2,)1290 4867 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h +(subroutine)e(\(a)i(shell)g(function)f(or)1290 4977 y(a)h(shell)g (script)f(executed)h(b)m(y)g(the)f Ft(.)h Fu(or)f Ft(source)f -Fu(builtins\),)i(the)g(shell)1290 3066 y(sim)m(ulates)d(a)g(call)h(to)f -Ft(return)p Fu(.)1159 3203 y(4.)61 b Ft(BASH_ARGC)34 +Fu(builtins\),)i(the)g(shell)1290 5087 y(sim)m(ulates)d(a)g(call)h(to)f +Ft(return)p Fu(.)1159 5230 y(4.)61 b Ft(BASH_ARGC)34 b Fu(and)i Ft(BASH_ARGV)e Fu(are)j(up)s(dated)e(as)h(describ)s(ed)g(in) -g(their)1290 3313 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g -(V)-8 b(ariables],)32 b(page)f(73\).)1159 3450 y(5.)61 +g(their)1290 5340 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g +(V)-8 b(ariables],)32 b(page)f(78\).)p eop end +%%Page: 74 80 +TeXDict begin 74 79 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(74)1159 299 y(5.)61 b(F)-8 b(unction)57 b(tracing)g(is)g(enabled:)93 b(command)56 -b(substitution,)63 b(shell)1290 3559 y(functions,)32 -b(and)e(subshells)h(in)m(v)m(ok)m(ed)i(with)e Ft(\()f -Fj(command)e Ft(\))j Fu(inherit)h(the)1290 3669 y Ft(DEBUG)d -Fu(and)h Ft(RETURN)e Fu(traps.)1159 3806 y(6.)61 b(Error)41 -b(tracing)i(is)f(enabled:)63 b(command)42 b(substitution,)i(shell)f -(func-)1290 3915 y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i -(with)e Ft(\()g Fj(command)f Ft(\))h Fu(inherit)h(the)g -Ft(ERR)1290 4025 y Fu(trap.)630 4189 y Ft(extglob)144 -b Fu(If)26 b(set,)i(the)f(extended)f(pattern)h(matc)m(hing)g(features)g -(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 4299 y(Section)j(3.5.8.1)i -([P)m(attern)f(Matc)m(hing],)g(page)f(33\))h(are)f(enabled.)630 -4463 y Ft(extquote)96 b Fu(If)51 b(set,)58 b Ft($')p -Fj(string)p Ft(')49 b Fu(and)i Ft($")p Fj(string)p Ft(")e -Fu(quoting)k(is)e(p)s(erformed)f(within)1110 4573 y Ft(${)p -Fj(parameter)p Ft(})31 b Fu(expansions)k(enclosed)g(in)g(double)f -(quotes.)55 b(This)33 b(option)1110 4682 y(is)d(enabled)h(b)m(y)f -(default.)630 4847 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d -(whic)m(h)g(fail)h(to)h(matc)m(h)f(\014lenames)f(during)g(\014lename)g -(ex-)1110 4956 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630 -5121 y Ft(force_fignore)1110 5230 y Fu(If)43 b(set,)k(the)d(su\016xes)f -(sp)s(eci\014ed)f(b)m(y)i(the)f Ft(FIGNORE)f Fu(shell)h(v)-5 -b(ariable)44 b(cause)1110 5340 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h -(when)f(p)s(erforming)f(w)m(ord)h(completion)i(ev)m(en)f(if)g(the)p -eop end -%%Page: 70 76 -TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(70)1110 299 y(ignored)37 -b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g(completions.)62 -b(See)37 b(Section)h(5.2)1110 408 y([Bash)24 b(V)-8 b(ariables],)27 -b(page)e(73,)h(for)d(a)h(description)g(of)g Ft(FIGNORE)p -Fu(.)37 b(This)22 b(option)1110 518 y(is)30 b(enabled)h(b)m(y)f -(default.)630 701 y Ft(globasciiranges)1110 810 y Fu(If)j(set,)h(range) -f(expressions)g(used)f(in)h(pattern)g(matc)m(hing)h(brac)m(k)m(et)h -(expres-)1110 920 y(sions)28 b(\(see)h(Section)h(3.5.8.1)g([P)m(attern) -g(Matc)m(hing],)h(page)e(33\))g(b)s(eha)m(v)m(e)g(as)g(if)1110 -1029 y(in)i(the)g(traditional)i(C)d(lo)s(cale)j(when)d(p)s(erforming)g -(comparisons.)44 b(That)31 b(is,)1110 1139 y(the)d(curren)m(t)g(lo)s -(cale's)i(collating)h(sequence)d(is)h(not)f(tak)m(en)h(in)m(to)g -(accoun)m(t,)i(so)1110 1249 y(`)p Ft(b)p Fu(')j(will)g(not)g(collate)i -(b)s(et)m(w)m(een)e(`)p Ft(A)p Fu(')g(and)f(`)p Ft(B)p -Fu(',)h(and)f(upp)s(er-case)g(and)g(lo)m(w)m(er-)1110 -1358 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i(together.)630 -1541 y Ft(globstar)96 b Fu(If)38 b(set,)j(the)e(pattern)f(`)p -Ft(**)p Fu(')h(used)e(in)i(a)f(\014lename)h(expansion)f(con)m(text)j -(will)1110 1650 y(matc)m(h)36 b(all)g(\014les)f(and)f(zero)i(or)f(more) -g(directories)h(and)e(sub)s(directories.)54 b(If)1110 -1760 y(the)30 b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p -Ft(/)p Fu(',)f(only)g(directories)h(and)f(sub)s(directories)1110 -1870 y(matc)m(h.)630 2052 y Ft(gnu_errfmt)1110 2162 y -Fu(If)35 b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)h(the)g -(standard)f Fm(gnu)g Fu(error)1110 2271 y(message)c(format.)630 -2454 y Ft(histappend)1110 2564 y Fu(If)c(set,)j(the)e(history)g(list)g +b(substitution,)63 b(shell)1290 408 y(functions,)32 b(and)e(subshells)h +(in)m(v)m(ok)m(ed)i(with)e Ft(\()f Fj(command)e Ft(\))j +Fu(inherit)h(the)1290 518 y Ft(DEBUG)d Fu(and)h Ft(RETURN)e +Fu(traps.)1159 662 y(6.)61 b(Error)41 b(tracing)i(is)f(enabled:)63 +b(command)42 b(substitution,)i(shell)f(func-)1290 772 +y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i(with)e +Ft(\()g Fj(command)f Ft(\))h Fu(inherit)h(the)g Ft(ERR)1290 +881 y Fu(trap.)630 1060 y Ft(extglob)144 b Fu(If)26 b(set,)i(the)f +(extended)f(pattern)h(matc)m(hing)g(features)g(describ)s(ed)e(ab)s(o)m +(v)m(e)j(\(see)1110 1170 y(Section)j(3.5.8.1)i([P)m(attern)f(Matc)m +(hing],)g(page)f(36\))h(are)f(enabled.)630 1349 y Ft(extquote)96 +b Fu(If)51 b(set,)58 b Ft($')p Fj(string)p Ft(')49 b +Fu(and)i Ft($")p Fj(string)p Ft(")e Fu(quoting)k(is)e(p)s(erformed)f +(within)1110 1458 y Ft(${)p Fj(parameter)p Ft(})31 b +Fu(expansions)k(enclosed)g(in)g(double)f(quotes.)55 b(This)33 +b(option)1110 1568 y(is)d(enabled)h(b)m(y)f(default.)630 +1747 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d(whic)m(h)g(fail)h +(to)h(matc)m(h)f(\014lenames)f(during)g(\014lename)g(ex-)1110 +1856 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630 +2035 y Ft(force_fignore)1110 2145 y Fu(If)43 b(set,)k(the)d(su\016xes)f +(sp)s(eci\014ed)f(b)m(y)i(the)f Ft(FIGNORE)f Fu(shell)h(v)-5 +b(ariable)44 b(cause)1110 2254 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h +(when)f(p)s(erforming)f(w)m(ord)h(completion)i(ev)m(en)f(if)g(the)1110 +2364 y(ignored)37 b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g +(completions.)62 b(See)37 b(Section)h(5.2)1110 2473 y([Bash)24 +b(V)-8 b(ariables],)27 b(page)e(78,)h(for)d(a)h(description)g(of)g +Ft(FIGNORE)p Fu(.)37 b(This)22 b(option)1110 2583 y(is)30 +b(enabled)h(b)m(y)f(default.)630 2762 y Ft(globasciiranges)1110 +2871 y Fu(If)j(set,)h(range)f(expressions)g(used)f(in)h(pattern)g(matc) +m(hing)h(brac)m(k)m(et)h(expres-)1110 2981 y(sions)28 +b(\(see)h(Section)h(3.5.8.1)g([P)m(attern)g(Matc)m(hing],)h(page)e +(36\))g(b)s(eha)m(v)m(e)g(as)g(if)1110 3091 y(in)i(the)g(traditional)i +(C)d(lo)s(cale)j(when)d(p)s(erforming)g(comparisons.)44 +b(That)31 b(is,)1110 3200 y(the)d(curren)m(t)g(lo)s(cale's)i(collating) +h(sequence)d(is)h(not)f(tak)m(en)h(in)m(to)g(accoun)m(t,)i(so)1110 +3310 y(`)p Ft(b)p Fu(')j(will)g(not)g(collate)i(b)s(et)m(w)m(een)e(`)p +Ft(A)p Fu(')g(and)f(`)p Ft(B)p Fu(',)h(and)f(upp)s(er-case)g(and)g(lo)m +(w)m(er-)1110 3419 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i +(together.)630 3598 y Ft(globskipdots)1110 3708 y Fu(If)38 +b(set,)k(\014lename)d(expansion)f(will)h(nev)m(er)g(matc)m(h)h(the)f +(\014lenames)g(`)p Ft(.)p Fu(')g(and)1110 3817 y(`)p +Ft(..)p Fu(',)c(ev)m(en)g(if)g(the)f(pattern)g(b)s(egins)g(with)g(a)h +(`)p Ft(.)p Fu('.)52 b(This)34 b(option)h(is)f(enabled)1110 +3927 y(b)m(y)c(default.)630 4106 y Ft(globstar)96 b Fu(If)38 +b(set,)j(the)e(pattern)f(`)p Ft(**)p Fu(')h(used)e(in)i(a)f(\014lename) +h(expansion)f(con)m(text)j(will)1110 4215 y(matc)m(h)36 +b(all)g(\014les)f(and)f(zero)i(or)f(more)g(directories)h(and)e(sub)s +(directories.)54 b(If)1110 4325 y(the)30 b(pattern)g(is)g(follo)m(w)m +(ed)i(b)m(y)d(a)i(`)p Ft(/)p Fu(',)f(only)g(directories)h(and)f(sub)s +(directories)1110 4434 y(matc)m(h.)630 4613 y Ft(gnu_errfmt)1110 +4723 y Fu(If)35 b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in) +h(the)g(standard)f Fm(gnu)g Fu(error)1110 4832 y(message)c(format.)630 +5011 y Ft(histappend)1110 5121 y Fu(If)c(set,)j(the)e(history)g(list)g (is)g(app)s(ended)e(to)j(the)f(\014le)g(named)f(b)m(y)h(the)g(v)-5 -b(alue)29 b(of)1110 2673 y(the)d Ft(HISTFILE)d Fu(v)-5 +b(alue)29 b(of)1110 5230 y(the)d Ft(HISTFILE)d Fu(v)-5 b(ariable)26 b(when)e(the)h(shell)h(exits,)h(rather)e(than)h(o)m(v)m -(erwriting)1110 2783 y(the)31 b(\014le.)630 2966 y Ft(histreedit)1110 -3075 y Fu(If)i(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g +(erwriting)1110 5340 y(the)31 b(\014le.)p eop end +%%Page: 75 81 +TeXDict begin 75 80 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(75)630 299 y Ft(histreedit)1110 +408 y Fu(If)33 b(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g (user)g(is)g(giv)m(en)h(the)g(opp)s(ortunit)m(y)1110 -3185 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630 -3367 y Ft(histverify)1110 3477 y Fu(If)35 b(set,)i(and)e(Readline)h(is) -f(b)s(eing)g(used,)h(the)f(results)g(of)g(history)h(substitu-)1110 -3587 y(tion)h(are)g(not)g(immediately)h(passed)e(to)h(the)g(shell)g -(parser.)59 b(Instead,)38 b(the)1110 3696 y(resulting)i(line)f(is)h +518 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630 +682 y Ft(histverify)1110 792 y Fu(If)35 b(set,)i(and)e(Readline)h(is)f +(b)s(eing)g(used,)h(the)f(results)g(of)g(history)h(substitu-)1110 +902 y(tion)h(are)g(not)g(immediately)h(passed)e(to)h(the)g(shell)g +(parser.)59 b(Instead,)38 b(the)1110 1011 y(resulting)i(line)f(is)h (loaded)g(in)m(to)g(the)g(Readline)g(editing)g(bu\013er,)h(allo)m(wing) -1110 3806 y(further)29 b(mo)s(di\014cation.)630 3988 -y Ft(hostcomplete)1110 4098 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f +1110 1121 y(further)29 b(mo)s(di\014cation.)630 1285 +y Ft(hostcomplete)1110 1395 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f (b)s(eing)g(used,)h(Bash)g(will)f(attempt)h(to)g(p)s(erform)1110 -4208 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f -(`)p Ft(@)p Fu(')g(is)g(b)s(eing)f(com-)1110 4317 y(pleted)g(\(see)h +1504 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f +(`)p Ft(@)p Fu(')g(is)g(b)s(eing)f(com-)1110 1614 y(pleted)g(\(see)h (Section)f(8.4.6)i([Commands)d(F)-8 b(or)36 b(Completion],)g(page)g -(133\).)1110 4427 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.) -630 4609 y Ft(huponexit)1110 4719 y Fu(If)i(set,)i(Bash)f(will)h(send)d +(139\).)1110 1724 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.) +630 1888 y Ft(huponexit)1110 1998 y Fu(If)i(set,)i(Bash)f(will)h(send)d Ft(SIGHUP)h Fu(to)h(all)h(jobs)e(when)g(an)g(in)m(teractiv)m(e)k(login) -1110 4829 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g -(page)f(42\).)630 5011 y Ft(inherit_errexit)1110 5121 +1110 2107 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g +(page)f(45\).)630 2271 y Ft(inherit_errexit)1110 2381 y Fu(If)e(set,)h(command)g(substitution)f(inherits)g(the)g(v)-5 -b(alue)30 b(of)g(the)f Ft(errexit)f Fu(op-)1110 5230 +b(alue)30 b(of)g(the)f Ft(errexit)f Fu(op-)1110 2491 y(tion,)33 b(instead)g(of)f(unsetting)g(it)h(in)f(the)g(subshell)f(en)m -(vironmen)m(t.)46 b(This)32 b(op-)1110 5340 y(tion)f(is)f(enabled)h -(when)e Fm(posix)h Fu(mo)s(de)g(is)g(enabled.)p eop end -%%Page: 71 77 -TeXDict begin 71 76 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(71)630 299 y Ft -(interactive_comments)1110 408 y Fu(Allo)m(w)27 b(a)g(w)m(ord)e(b)s +(vironmen)m(t.)46 b(This)32 b(op-)1110 2600 y(tion)f(is)f(enabled)h +(when)e Fm(posix)h Fu(mo)s(de)g(is)g(enabled.)630 2765 +y Ft(interactive_comments)1110 2874 y Fu(Allo)m(w)d(a)g(w)m(ord)e(b)s (eginning)g(with)h(`)p Ft(#)p Fu(')g(to)h(cause)f(that)h(w)m(ord)f(and) -f(all)i(remain-)1110 518 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g +f(all)i(remain-)1110 2984 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g (to)g(b)s(e)f(ignored)g(in)g(an)g(in)m(teractiv)m(e)j(shell.)1110 -628 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630 -777 y Ft(lastpipe)96 b Fu(If)24 b(set,)i(and)e(job)g(con)m(trol)i(is)f +3093 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630 +3258 y Ft(lastpipe)96 b Fu(If)24 b(set,)i(and)e(job)g(con)m(trol)i(is)f (not)f(activ)m(e,)k(the)d(shell)f(runs)f(the)i(last)g(command)1110 -887 y(of)37 b(a)h(pip)s(eline)e(not)h(executed)h(in)f(the)g(bac)m -(kground)g(in)g(the)g(curren)m(t)g(shell)1110 996 y(en)m(vironmen)m(t.) -630 1146 y Ft(lithist)144 b Fu(If)22 b(enabled,)i(and)d(the)h +3367 y(of)37 b(a)h(pip)s(eline)e(not)h(executed)h(in)f(the)g(bac)m +(kground)g(in)g(the)g(curren)m(t)g(shell)1110 3477 y(en)m(vironmen)m +(t.)630 3641 y Ft(lithist)144 b Fu(If)22 b(enabled,)i(and)d(the)h Ft(cmdhist)e Fu(option)j(is)f(enabled,)i(m)m(ulti-line)f(commands)1110 -1255 y(are)28 b(sa)m(v)m(ed)h(to)g(the)f(history)g(with)f(em)m(b)s -(edded)g(newlines)h(rather)g(than)f(using)1110 1365 y(semicolon)32 -b(separators)f(where)e(p)s(ossible.)630 1514 y Ft(localvar_inherit)1110 -1624 y Fu(If)j(set,)h(lo)s(cal)g(v)-5 b(ariables)33 b(inherit)f(the)g +3751 y(are)28 b(sa)m(v)m(ed)h(to)g(the)f(history)g(with)f(em)m(b)s +(edded)g(newlines)h(rather)g(than)f(using)1110 3861 y(semicolon)32 +b(separators)f(where)e(p)s(ossible.)630 4025 y Ft(localvar_inherit)1110 +4134 y Fu(If)j(set,)h(lo)s(cal)g(v)-5 b(ariables)33 b(inherit)f(the)g (v)-5 b(alue)32 b(and)g(attributes)h(of)f(a)g(v)-5 b(ariable)1110 -1733 y(of)36 b(the)g(same)g(name)g(that)h(exists)f(at)h(a)f(previous)g -(scop)s(e)g(b)s(efore)f(an)m(y)h(new)1110 1843 y(v)-5 -b(alue)31 b(is)f(assigned.)41 b(The)30 b Fr(nameref)48 -b Fu(attribute)31 b(is)f(not)h(inherited.)630 1993 y -Ft(localvar_unset)1110 2102 y Fu(If)i(set,)i(calling)g -Ft(unset)d Fu(on)i(lo)s(cal)g(v)-5 b(ariables)35 b(in)e(previous)g -(function)g(scop)s(es)1110 2212 y(marks)26 b(them)g(so)g(subsequen)m(t) -g(lo)s(okups)f(\014nd)g(them)h(unset)f(un)m(til)i(that)g(func-)1110 -2321 y(tion)40 b(returns.)68 b(This)39 b(is)g(iden)m(tical)j(to)e(the)g -(b)s(eha)m(vior)g(of)g(unsetting)g(lo)s(cal)1110 2431 -y(v)-5 b(ariables)31 b(at)g(the)g(curren)m(t)f(function)g(scop)s(e.)630 -2580 y Ft(login_shell)1110 2690 y Fu(The)35 b(shell)h(sets)g(this)f -(option)h(if)g(it)g(is)f(started)h(as)g(a)g(login)g(shell)g(\(see)g -(Sec-)1110 2800 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g -(86\).)41 b(The)28 b(v)-5 b(alue)29 b(ma)m(y)g(not)f(b)s(e)g(c)m -(hanged.)630 2949 y Ft(mailwarn)96 b Fu(If)34 b(set,)i(and)e(a)h -(\014le)g(that)g(Bash)f(is)h(c)m(hec)m(king)h(for)f(mail)g(has)f(b)s -(een)g(accessed)1110 3059 y(since)24 b(the)h(last)g(time)f(it)h(w)m(as) -f(c)m(hec)m(k)m(ed,)k(the)c(message)h Ft("The)k(mail)h(in)f -Fj(mail-)1110 3168 y(file)g Ft(has)h(been)f(read")g Fu(is)h(displa)m(y) -m(ed.)630 3318 y Ft(no_empty_cmd_completion)1110 3427 -y Fu(If)g(set,)g(and)g(Readline)g(is)h(b)s(eing)e(used,)h(Bash)g(will)g -(not)g(attempt)i(to)e(searc)m(h)1110 3537 y(the)25 b -Ft(PATH)f Fu(for)h(p)s(ossible)f(completions)j(when)d(completion)i(is)f -(attempted)h(on)1110 3646 y(an)k(empt)m(y)h(line.)630 -3796 y Ft(nocaseglob)1110 3905 y Fu(If)38 b(set,)k(Bash)d(matc)m(hes)g -(\014lenames)g(in)f(a)h(case-insensitiv)m(e)j(fashion)c(when)1110 -4015 y(p)s(erforming)29 b(\014lename)i(expansion.)630 -4164 y Ft(nocasematch)1110 4274 y Fu(If)42 b(set,)k(Bash)d(matc)m(hes)g -(patterns)g(in)f(a)h(case-insensitiv)m(e)i(fashion)d(when)1110 -4384 y(p)s(erforming)31 b(matc)m(hing)i(while)f(executing)i -Ft(case)d Fu(or)h Ft([[)g Fu(conditional)h(com-)1110 -4493 y(mands,)d(when)g(p)s(erforming)g(pattern)h(substitution)g(w)m -(ord)g(expansions,)g(or)1110 4603 y(when)g(\014ltering)i(p)s(ossible)f -(completions)h(as)g(part)f(of)h(programmable)f(com-)1110 -4712 y(pletion.)630 4862 y Ft(nullglob)96 b Fu(If)23 -b(set,)j(Bash)e(allo)m(ws)g(\014lename)g(patterns)g(whic)m(h)f(matc)m -(h)h(no)g(\014les)f(to)i(expand)1110 4971 y(to)31 b(a)g(n)m(ull)f -(string,)h(rather)f(than)g(themselv)m(es.)630 5121 y -Ft(progcomp)96 b Fu(If)25 b(set,)i(the)f(programmable)g(completion)g -(facilities)i(\(see)f(Section)f(8.6)h([Pro-)1110 5230 -y(grammable)45 b(Completion],)k(page)c(137\))h(are)f(enabled.)82 -b(This)44 b(option)h(is)1110 5340 y(enabled)30 b(b)m(y)h(default.)p +4244 y(of)36 b(the)g(same)g(name)g(that)h(exists)f(at)h(a)f(previous)g +(scop)s(e)g(b)s(efore)f(an)m(y)h(new)1110 4354 y(v)-5 +b(alue)31 b(is)f(assigned.)41 b(The)30 b Ft(nameref)e +Fu(attribute)k(is)e(not)h(inherited.)630 4518 y Ft(localvar_unset)1110 +4628 y Fu(If)i(set,)i(calling)g Ft(unset)d Fu(on)i(lo)s(cal)g(v)-5 +b(ariables)35 b(in)e(previous)g(function)g(scop)s(es)1110 +4737 y(marks)26 b(them)g(so)g(subsequen)m(t)g(lo)s(okups)f(\014nd)g +(them)h(unset)f(un)m(til)i(that)g(func-)1110 4847 y(tion)40 +b(returns.)68 b(This)39 b(is)g(iden)m(tical)j(to)e(the)g(b)s(eha)m +(vior)g(of)g(unsetting)g(lo)s(cal)1110 4956 y(v)-5 b(ariables)31 +b(at)g(the)g(curren)m(t)f(function)g(scop)s(e.)630 5121 +y Ft(login_shell)1110 5230 y Fu(The)35 b(shell)h(sets)g(this)f(option)h +(if)g(it)g(is)f(started)h(as)g(a)g(login)g(shell)g(\(see)g(Sec-)1110 +5340 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g(91\).)41 +b(The)28 b(v)-5 b(alue)29 b(ma)m(y)g(not)f(b)s(e)g(c)m(hanged.)p eop end -%%Page: 72 78 -TeXDict begin 72 77 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(72)630 299 y Ft(progcomp_alias) -1110 408 y Fu(If)23 b(set,)j(and)d(programmable)h(completion)h(is)f -(enabled,)h(Bash)f(treats)h(a)f(com-)1110 518 y(mand)34 +%%Page: 76 82 +TeXDict begin 76 81 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(76)630 299 y Ft(mailwarn)96 +b Fu(If)34 b(set,)i(and)e(a)h(\014le)g(that)g(Bash)f(is)h(c)m(hec)m +(king)h(for)f(mail)g(has)f(b)s(een)g(accessed)1110 408 +y(since)24 b(the)h(last)g(time)f(it)h(w)m(as)f(c)m(hec)m(k)m(ed,)k(the) +c(message)h Ft("The)k(mail)h(in)f Fj(mail-)1110 518 y(file)g +Ft(has)h(been)f(read")g Fu(is)h(displa)m(y)m(ed.)630 +701 y Ft(no_empty_cmd_completion)1110 810 y Fu(If)g(set,)g(and)g +(Readline)g(is)h(b)s(eing)e(used,)h(Bash)g(will)g(not)g(attempt)i(to)e +(searc)m(h)1110 920 y(the)25 b Ft(PATH)f Fu(for)h(p)s(ossible)f +(completions)j(when)d(completion)i(is)f(attempted)h(on)1110 +1029 y(an)k(empt)m(y)h(line.)630 1212 y Ft(nocaseglob)1110 +1322 y Fu(If)38 b(set,)k(Bash)d(matc)m(hes)g(\014lenames)g(in)f(a)h +(case-insensitiv)m(e)j(fashion)c(when)1110 1431 y(p)s(erforming)29 +b(\014lename)i(expansion.)630 1614 y Ft(nocasematch)1110 +1724 y Fu(If)42 b(set,)k(Bash)d(matc)m(hes)g(patterns)g(in)f(a)h +(case-insensitiv)m(e)i(fashion)d(when)1110 1833 y(p)s(erforming)31 +b(matc)m(hing)i(while)f(executing)i Ft(case)d Fu(or)h +Ft([[)g Fu(conditional)h(com-)1110 1943 y(mands)25 b(\(see)i(Section)f +(3.2.5.2)j([Conditional)e(Constructs],)f(page)h(12,)h(when)1110 +2052 y(p)s(erforming)e(pattern)i(substitution)f(w)m(ord)g(expansions,)h +(or)f(when)g(\014ltering)1110 2162 y(p)s(ossible)j(completions)h(as)g +(part)f(of)h(programmable)f(completion.)630 2345 y Ft +(noexpand_translation)1110 2454 y Fu(If)23 b(set,)j(Bash)d(encloses)i +(the)e(translated)h(results)g(of)f($)p Ft(")p Fu(...)p +Ft(")h Fu(quoting)g(in)f(single)1110 2564 y(quotes)k(instead)g(of)g +(double)f(quotes.)40 b(If)26 b(the)h(string)f(is)h(not)g(translated,)h +(this)1110 2673 y(has)i(no)g(e\013ect.)630 2856 y Ft(nullglob)96 +b Fu(If)23 b(set,)j(Bash)e(allo)m(ws)g(\014lename)g(patterns)g(whic)m +(h)f(matc)m(h)h(no)g(\014les)f(to)i(expand)1110 2966 +y(to)31 b(a)g(n)m(ull)f(string,)h(rather)f(than)g(themselv)m(es.)630 +3148 y Ft(patsub_replacement)1110 3258 y Fu(If)38 b(set,)k(Bash)d +(expands)e(o)s(ccurrences)i(of)g(`)p Ft(&)p Fu(')g(in)f(the)h +(replacemen)m(t)h(string)1110 3367 y(of)47 b(pattern)g(substitution)g +(to)h(the)f(text)h(matc)m(hed)g(b)m(y)f(the)g(pattern,)52 +b(as)1110 3477 y(describ)s(ed)45 b(ab)s(o)m(v)m(e)i(\(see)f(Section)h +(3.5.3)g([Shell)f(P)m(arameter)h(Expansion],)1110 3587 +y(page)31 b(26\).)42 b(This)30 b(option)g(is)h(enabled)f(b)m(y)g +(default.)630 3769 y Ft(progcomp)96 b Fu(If)25 b(set,)i(the)f +(programmable)g(completion)g(facilities)i(\(see)f(Section)f(8.6)h +([Pro-)1110 3879 y(grammable)45 b(Completion],)k(page)c(143\))h(are)f +(enabled.)82 b(This)44 b(option)h(is)1110 3988 y(enabled)30 +b(b)m(y)h(default.)630 4171 y Ft(progcomp_alias)1110 +4281 y Fu(If)23 b(set,)j(and)d(programmable)h(completion)h(is)f +(enabled,)h(Bash)f(treats)h(a)f(com-)1110 4390 y(mand)34 b(name)h(that)g(do)s(esn't)f(ha)m(v)m(e)i(an)m(y)g(completions)f(as)g -(a)g(p)s(ossible)g(alias)1110 628 y(and)40 b(attempts)i(alias)h +(a)g(p)s(ossible)g(alias)1110 4500 y(and)40 b(attempts)i(alias)h (expansion.)72 b(If)41 b(it)g(has)g(an)g(alias,)k(Bash)c(attempts)1110 -737 y(programmable)28 b(completion)h(using)e(the)h(command)f(w)m(ord)h -(resulting)f(from)1110 847 y(the)k(expanded)e(alias.)630 -1006 y Ft(promptvars)1110 1116 y Fu(If)50 b(set,)56 b(prompt)49 +4609 y(programmable)28 b(completion)h(using)e(the)h(command)f(w)m(ord)h +(resulting)f(from)1110 4719 y(the)k(expanded)e(alias.)630 +4902 y Ft(promptvars)1110 5011 y Fu(If)50 b(set,)56 b(prompt)49 b(strings)h(undergo)g(parameter)h(expansion,)k(command)1110 -1225 y(substitution,)35 b(arithmetic)g(expansion,)g(and)e(quote)i(remo) -m(v)-5 b(al)35 b(after)f(b)s(eing)1110 1335 y(expanded)53 +5121 y(substitution,)35 b(arithmetic)g(expansion,)g(and)e(quote)i(remo) +m(v)-5 b(al)35 b(after)f(b)s(eing)1110 5230 y(expanded)53 b(as)h(describ)s(ed)e(b)s(elo)m(w)i(\(see)h(Section)f(6.9)h([Con)m -(trolling)g(the)1110 1445 y(Prompt],)30 b(page)h(98\).)42 -b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)630 -1604 y Ft(restricted_shell)1110 1714 y Fu(The)40 b(shell)h(sets)g(this) -g(option)g(if)g(it)h(is)e(started)i(in)e(restricted)i(mo)s(de)e(\(see) -1110 1823 y(Section)32 b(6.10)h([The)d(Restricted)j(Shell],)e(page)h -(100\).)45 b(The)30 b(v)-5 b(alue)32 b(ma)m(y)g(not)1110 -1933 y(b)s(e)g(c)m(hanged.)49 b(This)32 b(is)h(not)h(reset)f(when)f -(the)h(startup)g(\014les)f(are)i(executed,)1110 2042 -y(allo)m(wing)k(the)e(startup)f(\014les)h(to)g(disco)m(v)m(er)h -(whether)f(or)f(not)i(a)f(shell)g(is)g(re-)1110 2152 -y(stricted.)630 2311 y Ft(shift_verbose)1110 2421 y Fu(If)g(this)g(is)g -(set,)j(the)d Ft(shift)f Fu(builtin)h(prin)m(ts)f(an)h(error)g(message) -i(when)d(the)1110 2531 y(shift)30 b(coun)m(t)h(exceeds)g(the)g(n)m(um)m -(b)s(er)e(of)h(p)s(ositional)i(parameters.)630 2690 y -Ft(sourcepath)1110 2800 y Fu(If)22 b(set,)j(the)e Ft(source)e -Fu(builtin)h(uses)g(the)h(v)-5 b(alue)23 b(of)g Ft(PATH)e -Fu(to)j(\014nd)d(the)h(directory)1110 2909 y(con)m(taining)29 -b(the)e(\014le)h(supplied)e(as)h(an)g(argumen)m(t.)40 -b(This)27 b(option)h(is)f(enabled)1110 3019 y(b)m(y)j(default.)630 -3178 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g Ft(echo)e -Fu(builtin)h(expands)f(bac)m(kslash-escap)s(e)j(sequences)f(b)m(y)f -(de-)1110 3288 y(fault.)150 3528 y Fs(4.4)68 b(Sp)t(ecial)45 -b(Builtins)150 3688 y Fu(F)-8 b(or)35 b(historical)h(reasons,)g(the)e -Fm(posix)g Fu(standard)f(has)i(classi\014ed)f(sev)m(eral)i(builtin)e -(commands)g(as)h Fl(sp)-5 b(e-)150 3797 y(cial)p Fu(.)47 -b(When)33 b(Bash)f(is)h(executing)g(in)f Fm(posix)g Fu(mo)s(de,)h(the)g -(sp)s(ecial)g(builtins)e(di\013er)i(from)f(other)g(builtin)150 -3907 y(commands)e(in)g(three)h(resp)s(ects:)199 4042 -y(1.)61 b(Sp)s(ecial)31 b(builtins)e(are)i(found)e(b)s(efore)h(shell)h -(functions)f(during)f(command)h(lo)s(okup.)199 4176 y(2.)61 -b(If)30 b(a)h(sp)s(ecial)g(builtin)f(returns)f(an)h(error)g(status,)h -(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199 4311 -y(3.)61 b(Assignmen)m(t)30 b(statemen)m(ts)h(preceding)f(the)f(command) -g(sta)m(y)i(in)e(e\013ect)i(in)e(the)h(shell)f(en)m(vironmen)m(t)330 -4420 y(after)i(the)f(command)h(completes.)275 4579 y(When)36 -b(Bash)g(is)h(not)f(executing)i(in)e Fm(posix)f Fu(mo)s(de,)j(these)f -(builtins)f(b)s(eha)m(v)m(e)h(no)f(di\013eren)m(tly)h(than)150 -4689 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e(commands.)41 -b(The)30 b(Bash)g Fm(posix)g Fu(mo)s(de)g(is)g(describ)s(ed)f(in)h -(Section)h(6.11)150 4799 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(101.)275 -4933 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h(builtins:)390 -5068 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f -(readonly)f(return)h(set)390 5177 y(shift)g(trap)h(unset)p +(trolling)g(the)1110 5340 y(Prompt],)30 b(page)h(104\).)43 +b(This)29 b(option)i(is)g(enabled)f(b)m(y)g(default.)p eop end -%%Page: 73 79 -TeXDict begin 73 78 bop 3659 -116 a Fu(73)150 299 y Fp(5)80 +%%Page: 77 83 +TeXDict begin 77 82 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(77)630 299 y Ft +(restricted_shell)1110 408 y Fu(The)40 b(shell)h(sets)g(this)g(option)g +(if)g(it)h(is)e(started)i(in)e(restricted)i(mo)s(de)e(\(see)1110 +518 y(Section)32 b(6.10)h([The)d(Restricted)j(Shell],)e(page)h(105\).) +45 b(The)30 b(v)-5 b(alue)32 b(ma)m(y)g(not)1110 628 +y(b)s(e)g(c)m(hanged.)49 b(This)32 b(is)h(not)h(reset)f(when)f(the)h +(startup)g(\014les)f(are)i(executed,)1110 737 y(allo)m(wing)k(the)e +(startup)f(\014les)h(to)g(disco)m(v)m(er)h(whether)f(or)f(not)i(a)f +(shell)g(is)g(re-)1110 847 y(stricted.)630 1006 y Ft(shift_verbose)1110 +1116 y Fu(If)g(this)g(is)g(set,)j(the)d Ft(shift)f Fu(builtin)h(prin)m +(ts)f(an)h(error)g(message)i(when)d(the)1110 1225 y(shift)30 +b(coun)m(t)h(exceeds)g(the)g(n)m(um)m(b)s(er)e(of)h(p)s(ositional)i +(parameters.)630 1385 y Ft(sourcepath)1110 1494 y Fu(If)40 +b(set,)45 b(the)c Ft(.)f Fu(\()p Ft(source)p Fu(\))g(builtin)g(uses)h +(the)g(v)-5 b(alue)41 b(of)g Ft(PATH)f Fu(to)h(\014nd)f(the)1110 +1604 y(directory)32 b(con)m(taining)g(the)g(\014le)f(supplied)f(as)h +(an)g(argumen)m(t.)44 b(This)30 b(option)1110 1714 y(is)g(enabled)h(b)m +(y)f(default.)630 1873 y Ft(varredir_close)1110 1983 +y Fu(If)i(set,)h(the)f(shell)h(automatically)i(closes)e(\014le)f +(descriptors)g(assigned)g(using)1110 2092 y(the)40 b +Ft({varname})c Fu(redirection)k(syn)m(tax)g(\(see)h(Section)f(3.6)g +([Redirections],)1110 2202 y(page)h(38\))f(instead)h(of)e(lea)m(ving)j +(them)e(op)s(en)f(when)g(the)h(command)f(com-)1110 2311 +y(pletes.)630 2471 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g +Ft(echo)e Fu(builtin)h(expands)f(bac)m(kslash-escap)s(e)j(sequences)f +(b)m(y)f(de-)1110 2580 y(fault.)150 2821 y Fs(4.4)68 +b(Sp)t(ecial)45 b(Builtins)150 2980 y Fu(F)-8 b(or)35 +b(historical)h(reasons,)g(the)e Fm(posix)g Fu(standard)f(has)i +(classi\014ed)f(sev)m(eral)i(builtin)e(commands)g(as)h +Fl(sp)-5 b(e-)150 3090 y(cial)p Fu(.)47 b(When)33 b(Bash)f(is)h +(executing)g(in)f Fm(posix)g Fu(mo)s(de,)h(the)g(sp)s(ecial)g(builtins) +e(di\013er)i(from)f(other)g(builtin)150 3200 y(commands)e(in)g(three)h +(resp)s(ects:)199 3334 y(1.)61 b(Sp)s(ecial)31 b(builtins)e(are)i +(found)e(b)s(efore)h(shell)h(functions)f(during)f(command)h(lo)s(okup.) +199 3469 y(2.)61 b(If)30 b(a)h(sp)s(ecial)g(builtin)f(returns)f(an)h +(error)g(status,)h(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199 +3603 y(3.)61 b(Assignmen)m(t)30 b(statemen)m(ts)h(preceding)f(the)f +(command)g(sta)m(y)i(in)e(e\013ect)i(in)e(the)h(shell)f(en)m(vironmen)m +(t)330 3713 y(after)i(the)f(command)h(completes.)275 +3872 y(When)36 b(Bash)g(is)h(not)f(executing)i(in)e Fm(posix)f +Fu(mo)s(de,)j(these)f(builtins)f(b)s(eha)m(v)m(e)h(no)f(di\013eren)m +(tly)h(than)150 3982 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e +(commands.)41 b(The)30 b(Bash)g Fm(posix)g Fu(mo)s(de)g(is)g(describ)s +(ed)f(in)h(Section)h(6.11)150 4091 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g +(106.)275 4226 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h +(builtins:)390 4360 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h +(exit)g(export)f(readonly)f(return)h(set)390 4470 y(shift)g(trap)h +(unset)p eop end +%%Page: 78 84 +TeXDict begin 78 83 bop 3659 -116 a Fu(78)150 299 y Fp(5)80 b(Shell)53 b(V)-13 b(ariables)150 504 y Fu(This)21 b(c)m(hapter)i (describ)s(es)e(the)i(shell)f(v)-5 b(ariables)23 b(that)f(Bash)h(uses.) 37 b(Bash)23 b(automatically)h(assigns)f(default)150 @@ -13377,7 +13743,7 @@ b Fu(The)23 b(curren)m(t)h(user's)f(home)g(directory;)k(the)d(default)g (for)f(the)h Ft(cd)f Fu(builtin)g(command.)38 b(The)630 1628 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 1737 y(Expansion],)30 b(page)h(24\).)150 +(3.5.2)h([Tilde)630 1737 y(Expansion],)30 b(page)h(25\).)150 1885 y Ft(IFS)336 b Fu(A)25 b(list)i(of)e(c)m(haracters)i(that)f (separate)g(\014elds;)h(used)e(when)f(the)i(shell)f(splits)h(w)m(ords)e (as)i(part)630 1995 y(of)31 b(expansion.)150 2143 y Ft(MAIL)288 @@ -13408,10 +13774,10 @@ Fu(builtin.)150 3392 y Ft(PATH)288 b Fu(A)32 b(colon-separated)i(list)f (colons,)g(or)f(as)g(an)630 3721 y(initial)f(or)e(trailing)h(colon.)150 3869 y Ft(PS1)336 b Fu(The)35 b(primary)f(prompt)h(string.)55 b(The)35 b(default)h(v)-5 b(alue)35 b(is)h(`)p Ft(\\s-\\v\\$)28 -b Fu('.)56 b(See)36 b(Section)g(6.9)630 3979 y([Con)m(trolling)42 -b(the)e(Prompt],)j(page)e(98,)j(for)c(the)g(complete)i(list)f(of)f -(escap)s(e)h(sequences)630 4088 y(that)31 b(are)g(expanded)e(b)s(efore) -h Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4236 y Ft(PS2)336 +b Fu('.)56 b(See)36 b(Section)g(6.9)630 3979 y([Con)m(trolling)i(the)e +(Prompt],)i(page)f(104,)i(for)d(the)h(complete)h(list)e(of)h(escap)s(e) +g(sequences)630 4088 y(that)31 b(are)g(expanded)e(b)s(efore)h +Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4236 y Ft(PS2)336 b Fu(The)28 b(secondary)g(prompt)g(string.)40 b(The)28 b(default)g(v)-5 b(alue)29 b(is)g(`)p Ft(>)h Fu('.)40 b Ft(PS2)28 b Fu(is)g(expanded)g(in)g(the)630 4346 y(same)j(w)m(a)m(y)g @@ -13424,15 +13790,15 @@ 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 5082 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(110\).)150 5230 y Ft(_)432 b +b(ariables],)32 b(page)g(116\).)150 5230 y Ft(_)432 b Fu(\($)p 716 5230 28 4 v 41 w(,)34 b(an)g(underscore.\))49 b(A)m(t)35 b(shell)f(startup,)g(set)g(to)g(the)g(pathname)f(used)g(to)h (in)m(v)m(ok)m(e)i(the)630 5340 y(shell)e(or)g(shell)h(script)f(b)s (eing)f(executed)j(as)e(passed)g(in)f(the)i(en)m(vironmen)m(t)f(or)g (argumen)m(t)p eop end -%%Page: 74 80 -TeXDict begin 74 79 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(74)630 299 y(list.)55 +%%Page: 79 85 +TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(79)630 299 y(list.)55 b(Subsequen)m(tly)-8 b(,)35 b(expands)f(to)i(the)f(last)g(argumen)m(t)h (to)f(the)g(previous)f(simple)h(com-)630 408 y(mand)21 b(executed)i(in)e(the)i(foreground,)g(after)f(expansion.)38 @@ -13448,7 +13814,7 @@ b(full)g(pathname)g(used)g(to)h(execute)h(the)e(curren)m(t)g(instance)h b(w)m(ord)f(in)g(the)h(list)g(is)g(a)g(v)-5 b(alid)630 1212 y(argumen)m(t)37 b(for)g(the)g Ft(-s)f Fu(option)i(to)f(the)g Ft(shopt)f Fu(builtin)g(command)h(\(see)g(Section)h(4.3.2)630 -1322 y([The)e(Shopt)g(Builtin],)i(page)f(66\).)60 b(The)36 +1322 y([The)e(Shopt)g(Builtin],)i(page)f(71\).)60 b(The)36 b(options)h(app)s(earing)f(in)g Ft(BASHOPTS)e Fu(are)i(those)630 1431 y(rep)s(orted)e(as)h(`)p Ft(on)p Fu(')f(b)m(y)h(`)p Ft(shopt)p Fu('.)53 b(If)34 b(this)g(v)-5 b(ariable)36 @@ -13469,7 +13835,7 @@ b(its)g(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g 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 2564 y(of)c(aliases)h(as)f(main)m(tained)g(b)m(y)g (the)g Ft(alias)e Fu(builtin.)59 b(\(see)37 b(Section)h(4.1)f([Bourne)g -(Shell)630 2673 y(Builtins],)31 b(page)g(44\).)42 b(Elemen)m(ts)31 +(Shell)630 2673 y(Builtins],)31 b(page)g(48\).)42 b(Elemen)m(ts)31 b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)g(the)g(alias)h(list;)h (ho)m(w-)630 2783 y(ev)m(er,)k(unsetting)f(arra)m(y)g(elemen)m(ts)g (curren)m(tly)g(do)s(es)f(not)g(cause)h(aliases)h(to)f(b)s(e)f(remo)m @@ -13488,7 +13854,7 @@ b(a)g(subroutine)f(is)h(executed,)i(the)e(n)m(um)m(b)s(er)f(of)h (parameters)630 3733 y(passed)44 b(is)h(pushed)e(on)m(to)j Ft(BASH_ARGC)p Fu(.)81 b(The)44 b(shell)h(sets)g Ft(BASH_ARGC)e Fu(only)i(when)e(in)630 3842 y(extended)34 b(debugging)f(mo)s(de)g -(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g(66,)g(for) +(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g(71,)g(for) 630 3952 y(a)e(description)g(of)f(the)h Ft(extdebug)d Fu(option)j(to)h(the)e Ft(shopt)g Fu(builtin\).)47 b(Setting)33 b Ft(extdebug)630 4061 y Fu(after)c(the)g(shell)g(has)g(started)g(to)g @@ -13506,20 +13872,20 @@ y(is)40 b(executed,)j(the)d(parameters)h(supplied)d(are)i(pushed)f(on)m (to)i Ft(BASH_ARGV)p Fu(.)66 b(The)40 b(shell)630 4902 y(sets)28 b Ft(BASH_ARGV)e Fu(only)i(when)f(in)h(extended)g(debugging)g (mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 5011 y(Shopt)g(Builtin],) -h(page)g(66,)g(for)g(a)f(description)h(of)f(the)h Ft(extdebug)d +h(page)g(71,)g(for)g(a)f(description)h(of)f(the)h Ft(extdebug)d Fu(option)j(to)g(the)f Ft(shopt)630 5121 y Fu(builtin\).)64 b(Setting)38 b Ft(extdebug)e Fu(after)j(the)f(shell)g(has)g(started)g (to)h(execute)g(a)g(script,)h(or)630 5230 y(referencing)35 b(this)f(v)-5 b(ariable)35 b(when)e Ft(extdebug)f Fu(is)j(not)f(set,)j (ma)m(y)e(result)f(in)g(inconsisten)m(t)630 5340 y(v)-5 b(alues.)p eop end -%%Page: 75 81 -TeXDict begin 75 80 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(75)150 299 y Ft(BASH_ARGV0)630 +%%Page: 80 86 +TeXDict begin 80 85 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(80)150 299 y Ft(BASH_ARGV0)630 408 y Fu(When)31 b(referenced,)g(this)g(v)-5 b(ariable)32 b(expands)e(to)h(the)h(name)f(of)g(the)g(shell)g(or)g(shell)g(script) 630 518 y(\(iden)m(tical)42 b(to)e Ft($0)p Fu(;)j(See)d(Section)g -(3.4.2)i([Sp)s(ecial)e(P)m(arameters],)j(page)d(21,)j(for)c(the)h(de-) +(3.4.2)i([Sp)s(ecial)e(P)m(arameters],)j(page)d(23,)j(for)c(the)h(de-) 630 628 y(scription)32 b(of)g(sp)s(ecial)g(parameter)g(0\).)45 b(Assignmen)m(t)32 b(to)h Ft(BASH_ARGV0)c Fu(causes)j(the)f(v)-5 b(alue)630 737 y(assigned)34 b(to)h(also)g(b)s(e)e(assigned)h(to)g @@ -13530,7 +13896,7 @@ Ft($0)p Fu(.)51 b(If)33 b Ft(BASH_ARGV0)f Fu(is)h(unset,)i(it)f(loses)h b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f(in)m(ternal)h (hash)630 1267 y(table)c(of)g(commands)f(as)g(main)m(tained)h(b)m(y)g (the)f Ft(hash)f Fu(builtin)h(\(see)h(Section)g(4.1)h([Bourne)630 -1377 y(Shell)42 b(Builtins],)k(page)d(44\).)77 b(Elemen)m(ts)43 +1377 y(Shell)42 b(Builtins],)k(page)d(48\).)77 b(Elemen)m(ts)43 b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)f(the)i(hash)630 1486 y(table;)k(ho)m(w)m(ev)m(er,)e(unsetting)c(arra)m(y)g(elemen)m(ts) i(curren)m(tly)d(do)s(es)h(not)g(cause)g(command)630 @@ -13548,7 +13914,7 @@ b(If)30 b Ft(BASH_COMMAND)e Fu(is)i(unset,)h(it)g(loses)630 (subsequen)m(tly)g(reset.)150 2545 y Ft(BASH_COMPAT)630 2655 y Fu(The)i(v)-5 b(alue)33 b(is)g(used)f(to)h(set)g(the)g(shell's)g (compatibilit)m(y)i(lev)m(el.)49 b(See)33 b(Section)h(6.12)g([Shell)630 -2765 y(Compatibilit)m(y)j(Mo)s(de],)h(page)e(104,)i(for)e(a)g +2765 y(Compatibilit)m(y)j(Mo)s(de],)h(page)e(110,)i(for)e(a)g (description)g(of)f(the)h(v)-5 b(arious)36 b(compatibilit)m(y)630 2874 y(lev)m(els)g(and)f(their)g(e\013ects.)55 b(The)34 b(v)-5 b(alue)36 b(ma)m(y)f(b)s(e)f(a)i(decimal)f(n)m(um)m(b)s(er)f @@ -13565,7 +13931,7 @@ b(alid)31 b(compatibilit)m(y)i(lev)m(els,)f(the)f(shell)f(prin)m(ts)g 47 b(The)31 b(v)-5 b(alid)33 b(v)-5 b(alues)630 3532 y(corresp)s(ond)31 b(to)i(the)g(compatibilit)m(y)i(lev)m(els)f(describ) s(ed)d(b)s(elo)m(w)i(\(see)g(Section)h(6.12)g([Shell)630 -3641 y(Compatibilit)m(y)d(Mo)s(de],)f(page)g(104\).)42 +3641 y(Compatibilit)m(y)d(Mo)s(de],)f(page)g(110\).)42 b(F)-8 b(or)30 b(example,)h(4.2)f(and)f(42)h(are)g(v)-5 b(alid)30 b(v)-5 b(alues)29 b(that)630 3751 y(corresp)s(ond)d(to)i(the) f Ft(compat42)e(shopt)g Fu(option)j(and)e(set)i(the)f(compatibilit)m(y) @@ -13576,24 +13942,23 @@ b(is)e(set)h(when)f(Bash)g(is)h(in)m(v)m(ok)m(ed)h(to)f(execute)h(a)e (shell)h(script,)g(its)g(v)-5 b(alue)29 b(is)630 4171 y(expanded)k(and)h(used)g(as)g(the)h(name)f(of)g(a)h(startup)f(\014le)g (to)h(read)f(b)s(efore)g(executing)i(the)630 4281 y(script.)41 -b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(88.)150 +b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(93.)150 4482 y Ft(BASH_EXECUTION_STRING)630 4591 y Fu(The)f(command)g(argumen)m (t)h(to)g(the)g Ft(-c)e Fu(in)m(v)m(o)s(cation)k(option.)150 -4792 y Ft(BASH_LINENO)630 4902 y Fu(An)62 b(arra)m(y)i(v)-5 -b(ariable)63 b(whose)g(mem)m(b)s(ers)e(are)j(the)e(line)h(n)m(um)m(b)s -(ers)f(in)g(source)h(\014les)630 5011 y(where)46 b(eac)m(h)i(corresp)s -(onding)d(mem)m(b)s(er)h(of)h Fr(FUNCNAME)53 b Fu(w)m(as)47 -b(in)m(v)m(ok)m(ed.)91 b Ft(${BASH_)630 5121 y(LINENO[$i]})39 -b Fu(is)i(the)h(line)g(n)m(um)m(b)s(er)e(in)i(the)f(source)h(\014le)g -(\()p Ft(${BASH_SOURCE[$i+1]})p Fu(\))630 5230 y(where)d -Ft(${FUNCNAME[$i]})c Fu(w)m(as)k(called)i(\(or)e Ft -(${BASH_LINENO[$i-1]})34 b Fu(if)39 b(referenced)630 -5340 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31 -b Ft(LINENO)d Fu(to)j(obtain)g(the)g(curren)m(t)f(line)h(n)m(um)m(b)s -(er.)p eop end -%%Page: 76 82 -TeXDict begin 76 81 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(76)150 299 y Ft +4792 y Ft(BASH_LINENO)630 4902 y Fu(An)38 b(arra)m(y)g(v)-5 +b(ariable)39 b(whose)f(mem)m(b)s(ers)f(are)i(the)f(line)h(n)m(um)m(b)s +(ers)d(in)i(source)g(\014les)g(where)630 5011 y(eac)m(h)h(corresp)s +(onding)e(mem)m(b)s(er)g(of)h Ft(FUNCNAME)d Fu(w)m(as)k(in)m(v)m(ok)m +(ed.)64 b Ft(${BASH_LINENO[$i]})630 5121 y Fu(is)74 b(the)g(line)h(n)m +(um)m(b)s(er)e(in)g(the)i(source)f(\014le)g(\()p Ft +(${BASH_SOURCE[$i+1]})p Fu(\))69 b(where)630 5230 y Ft(${FUNCNAME[$i]}) +32 b Fu(w)m(as)37 b(called)g(\(or)g Ft(${BASH_LINENO[$i-1]})31 +b Fu(if)36 b(referenced)g(within)630 5340 y(another)31 +b(shell)f(function\).)41 b(Use)31 b Ft(LINENO)d Fu(to)j(obtain)g(the)g +(curren)m(t)f(line)h(n)m(um)m(b)s(er.)p eop end +%%Page: 81 87 +TeXDict begin 81 86 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(81)150 299 y Ft (BASH_LOADABLES_PATH)630 408 y Fu(A)39 b(colon-separated)i(list)f(of)f (directories)h(in)f(whic)m(h)g(the)g(shell)h(lo)s(oks)f(for)g (dynamically)630 518 y(loadable)32 b(builtins)d(sp)s(eci\014ed)h(b)m(y) @@ -13602,7 +13967,7 @@ g(the)h Ft(enable)e Fu(command.)150 673 y Ft(BASH_REMATCH)630 (are)h(assigned)g(b)m(y)f(the)h(`)p Ft(=~)p Fu(')g(binary)f(op)s (erator)630 892 y(to)37 b(the)f Ft([[)g Fu(conditional)i(command)e (\(see)h(Section)g(3.2.5.2)i([Conditional)e(Constructs],)630 -1002 y(page)e(11\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f +1002 y(page)e(12\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f (the)g(p)s(ortion)f(of)h(the)g(string)g(matc)m(hing)h(the)630 1112 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27 b(elemen)m(t)j(with)d(index)h Fr(n)f Fu(is)h(the)g(p)s(ortion)g(of)g @@ -13622,9 +13987,9 @@ b(b)m(y)f(one)h(within)f(eac)m(h)i(subshell)d(or)i(subshell)e(en)m b(alue)28 b(is)f(0.)40 b(If)28 b Ft(BASH_SUBSHELL)630 2299 y Fu(is)i(unset,)h(it)g(loses)g(its)f(sp)s(ecial)h(prop)s(erties,) f(ev)m(en)h(if)g(it)g(is)f(subsequen)m(tly)g(reset.)150 -2454 y Ft(BASH_VERSINFO)630 2564 y Fu(A)36 b(readonly)g(arra)m(y)g(v)-5 -b(ariable)37 b(\(see)f(Section)h(6.7)g([Arra)m(ys],)h(page)e(95\))h -(whose)f(mem)m(b)s(ers)630 2673 y(hold)c(v)m(ersion)h(information)f +2454 y Ft(BASH_VERSINFO)630 2564 y Fu(A)i(readonly)g(arra)m(y)g(v)-5 +b(ariable)32 b(\(see)h(Section)g(6.7)f([Arra)m(ys],)h(page)g(100\))g +(whose)f(mem)m(b)s(ers)630 2673 y(hold)g(v)m(ersion)h(information)f (for)g(this)g(instance)h(of)g(Bash.)46 b(The)32 b(v)-5 b(alues)32 b(assigned)h(to)g(the)630 2783 y(arra)m(y)e(mem)m(b)s(ers)e (are)i(as)g(follo)m(ws:)630 2938 y Ft(BASH_VERSINFO[0])1110 @@ -13635,10 +14000,10 @@ Fr(v)m(ersion)p Fu(\).)630 3468 y Ft(BASH_VERSINFO[2])1110 3577 y Fu(The)f(patc)m(h)h(lev)m(el.)630 3733 y Ft(BASH_VERSINFO[3]) 1110 3842 y Fu(The)f(build)f(v)m(ersion.)630 3998 y Ft (BASH_VERSINFO[4])1110 4107 y Fu(The)h(release)i(status)e(\(e.g.,)j -Fr(b)s(eta1)7 b Fu(\).)630 4262 y Ft(BASH_VERSINFO[5])1110 -4372 y Fu(The)30 b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p -Fu(.)150 4527 y Ft(BASH_VERSION)630 4637 y Fu(The)g(v)m(ersion)h(n)m -(um)m(b)s(er)e(of)h(the)h(curren)m(t)f(instance)h(of)g(Bash.)150 +Ft(beta1)p Fu(\).)630 4262 y Ft(BASH_VERSINFO[5])1110 +4372 y Fu(The)d(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p Fu(.)150 +4527 y Ft(BASH_VERSION)630 4637 y Fu(The)g(v)m(ersion)h(n)m(um)m(b)s +(er)e(of)h(the)h(curren)m(t)f(instance)h(of)g(Bash.)150 4792 y Ft(BASH_XTRACEFD)630 4902 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i (corresp)s(onding)e(to)h(a)g(v)-5 b(alid)31 b(\014le)g(descriptor,)g (Bash)g(will)g(write)g(the)630 5011 y(trace)37 b(output)f(generated)h @@ -13650,9 +14015,9 @@ b(tracing)h(output)d(to)i(b)s(e)f(separated)g(from)g(diagnostic)h(and)f (new)f(v)-5 b(alue.)630 5340 y(Unsetting)45 b Ft(BASH_XTRACEFD)40 b Fu(or)k(assigning)g(it)g(the)g(empt)m(y)h(string)e(causes)i(the)f (trace)p eop end -%%Page: 77 83 -TeXDict begin 77 82 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(77)630 299 y(output)33 +%%Page: 82 88 +TeXDict begin 82 87 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(82)630 299 y(output)33 b(to)i(b)s(e)d(sen)m(t)j(to)f(the)g(standard)e(error.)50 b(Note)35 b(that)g(setting)f Ft(BASH_XTRACEFD)c Fu(to)630 408 y(2)39 b(\(the)h(standard)e(error)g(\014le)h(descriptor\))h(and)e @@ -13671,7 +14036,7 @@ Ft(select)e Fu(command)h(to)i(determine)f(the)f(terminal)i(width)d (when)h(prin)m(ting)630 1358 y(selection)39 b(lists.)63 b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d Fu(option)j(is)f(enabled)h(\(see)630 1468 y(Section)44 -b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(66\),)k(or)43 +b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(71\),)k(or)43 b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 1577 y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 1724 y Ft(COMP_CWORD)630 1833 y Fu(An)38 b(index)g(in)m(to)h @@ -13680,13 +14045,13 @@ Ft(${COMP_WORDS})c Fu(of)k(the)g(w)m(ord)f(con)m(taining)i(the)e b(v)-5 b(ariable)41 b(is)f(a)m(v)-5 b(ailable)43 b(only)e(in)f(shell)h (functions)f(in)m(v)m(ok)m(ed)i(b)m(y)e(the)h(pro-)630 2052 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g -([Programmable)g(Completion],)630 2162 y(page)31 b(137\).)150 +([Programmable)g(Completion],)630 2162 y(page)31 b(143\).)150 2308 y Ft(COMP_LINE)630 2418 y Fu(The)38 b(curren)m(t)h(command)f (line.)66 b(This)37 b(v)-5 b(ariable)40 b(is)f(a)m(v)-5 b(ailable)41 b(only)d(in)h(shell)f(functions)630 2527 y(and)25 b(external)h(commands)f(in)m(v)m(ok)m(ed)h(b)m(y)f(the)h (programmable)f(completion)i(facilities)g(\(see)630 2637 -y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(137\).)150 +y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(143\).)150 2783 y Ft(COMP_POINT)630 2892 y Fu(The)25 b(index)g(of)h(the)g(curren)m (t)f(cursor)g(p)s(osition)h(relativ)m(e)i(to)e(the)g(b)s(eginning)f(of) g(the)h(curren)m(t)630 3002 y(command.)40 b(If)27 b(the)h(curren)m(t)g @@ -13697,22 +14062,21 @@ b(This)29 b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630 3221 y(only)36 b(in)f(shell)h(functions)f(and)g(external)h(commands)g (in)m(v)m(ok)m(ed)h(b)m(y)e(the)h(programmable)630 3331 y(completion)c(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g -(Completion],)h(page)f(137\).)150 3477 y Ft(COMP_TYPE)630 +(Completion],)h(page)f(143\).)150 3477 y Ft(COMP_TYPE)630 3587 y Fu(Set)c(to)h(an)f(in)m(teger)h(v)-5 b(alue)28 b(corresp)s(onding)e(to)h(the)h(t)m(yp)s(e)f(of)g(completion)h -(attempted)g(that)630 3696 y(caused)e(a)h(completion)h(function)e(to)h -(b)s(e)f(called:)40 b Fr(T)-8 b(AB)p Fu(,)27 b(for)g(normal)f -(completion,)j(`)p Ft(?)p Fu(',)e(for)630 3806 y(listing)35 -b(completions)h(after)f(successiv)m(e)g(tabs,)h(`)p Ft(!)p -Fu(',)g(for)e(listing)h(alternativ)m(es)i(on)d(partial)630 -3915 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p Fu(',)f(to)e(list)g -(completions)h(if)f(the)g(w)m(ord)f(is)h(not)g(unmo)s(di\014ed,)f(or)h -(`)p Ft(\045)p Fu(',)h(for)630 4025 y(men)m(u)i(completion.)41 -b(This)25 b(v)-5 b(ariable)27 b(is)g(a)m(v)-5 b(ailable)28 -b(only)f(in)f(shell)g(functions)g(and)g(external)630 -4134 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g(programmable)h -(completion)g(facilities)i(\(see)e(Section)g(8.6)630 -4244 y([Programmable)e(Completion],)h(page)f(137\).)150 +(attempted)g(that)630 3696 y(caused)j(a)g(completion)h(function)e(to)h +(b)s(e)f(called:)43 b Ft(TAB)p Fu(,)30 b(for)g(normal)h(completion,)h +(`)p Ft(?)p Fu(',)f(for)630 3806 y(listing)k(completions)h(after)f +(successiv)m(e)g(tabs,)h(`)p Ft(!)p Fu(',)g(for)e(listing)h(alternativ) +m(es)i(on)d(partial)630 3915 y(w)m(ord)22 b(completion,)k(`)p +Ft(@)p Fu(',)f(to)e(list)g(completions)h(if)f(the)g(w)m(ord)f(is)h(not) +g(unmo)s(di\014ed,)f(or)h(`)p Ft(\045)p Fu(',)h(for)630 +4025 y(men)m(u)i(completion.)41 b(This)25 b(v)-5 b(ariable)27 +b(is)g(a)m(v)-5 b(ailable)28 b(only)f(in)f(shell)g(functions)g(and)g +(external)630 4134 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g +(programmable)h(completion)g(facilities)i(\(see)e(Section)g(8.6)630 +4244 y([Programmable)e(Completion],)h(page)f(143\).)150 4390 y Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i (of)f(a)g(k)m(ey)h(sequence\))g(used)e(to)i(in)m(v)m(ok)m(e)h(the)e (curren)m(t)g(completion)630 4500 y(function.)150 4646 @@ -13727,25 +14091,25 @@ g(individual)f(w)m(ords)h(in)f(the)h(curren)m(t)g(command)630 5340 y(line.)94 b(The)47 b(line)i(is)f(split)g(in)m(to)h(w)m(ords)e(as) h(Readline)h(w)m(ould)f(split)g(it,)53 b(using)47 b Ft(COMP_)p eop end -%%Page: 78 84 -TeXDict begin 78 83 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(78)630 299 y Ft(WORDBREAKS)34 +%%Page: 83 89 +TeXDict begin 83 88 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(83)630 299 y Ft(WORDBREAKS)34 b Fu(as)i(describ)s(ed)g(ab)s(o)m(v)m(e.)60 b(This)36 b(v)-5 b(ariable)37 b(is)f(a)m(v)-5 b(ailable)39 b(only)e(in)f(shell)h (func-)630 408 y(tions)32 b(in)m(v)m(ok)m(ed)i(b)m(y)d(the)i (programmable)f(completion)h(facilities)h(\(see)f(Section)g(8.6)g -([Pro-)630 518 y(grammable)e(Completion],)g(page)g(137\).)150 +([Pro-)630 518 y(grammable)e(Completion],)g(page)g(143\).)150 676 y Ft(COMPREPLY)630 786 y Fu(An)37 b(arra)m(y)h(v)-5 b(ariable)38 b(from)f(whic)m(h)g(Bash)g(reads)g(the)h(p)s(ossible)e (completions)j(generated)630 896 y(b)m(y)33 b(a)g(shell)h(function)f (in)m(v)m(ok)m(ed)h(b)m(y)f(the)g(programmable)h(completion)g(facilit)m (y)h(\(see)f(Sec-)630 1005 y(tion)g(8.6)g([Programmable)g(Completion],) -h(page)f(137\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains) +h(page)f(143\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains) 630 1115 y(one)c(p)s(ossible)f(completion.)150 1273 y Ft(COPROC)192 b Fu(An)27 b(arra)m(y)g(v)-5 b(ariable)28 b(created)g(to)f(hold)g(the)g(\014le)g(descriptors)g(for)g(output)f (from)h(and)f(input)630 1383 y(to)31 b(an)f(unnamed)f(copro)s(cess)i -(\(see)g(Section)h(3.2.6)g([Copro)s(cesses],)f(page)g(15\).)150 +(\(see)g(Section)h(3.2.6)g([Copro)s(cesses],)f(page)g(18\).)150 1541 y Ft(DIRSTACK)96 b Fu(An)26 b(arra)m(y)h(v)-5 b(ariable)28 b(con)m(taining)g(the)f(curren)m(t)f(con)m(ten)m(ts)j(of)e(the)f (directory)i(stac)m(k.)41 b(Direc-)630 1650 y(tories)33 @@ -13766,40 +14130,39 @@ 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 2466 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h (the)g(shell)f(is)h(running)e(in)h(an)g(Emacs)h(shell)g(bu\013er)e(and) h(disables)630 2576 y(line)d(editing.)150 2734 y Ft(ENV)336 -b Fu(Expanded)30 b(and)h(executed)h(similarlt)m(y)g(to)g -Ft(BASH_ENV)d Fu(\(see)k(Section)f(6.2)g([Bash)g(Startup)630 -2844 y(Files],)39 b(page)e(88\))h(when)d(an)h(in)m(teractiv)m(e)j -(shell)d(is)h(in)m(v)m(ok)m(ed)g(in)f Fm(posix)g Fu(Mo)s(de)g(\(see)h -(Sec-)630 2953 y(tion)31 b(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g -(101\).)150 3112 y Ft(EPOCHREALTIME)630 3221 y Fu(Eac)m(h)38 -b(time)f(this)g(parameter)h(is)f(referenced,)i(it)f(expands)e(to)i(the) -f(n)m(um)m(b)s(er)f(of)h(seconds)630 3331 y(since)f(the)g(Unix)f(Ep)s -(o)s(c)m(h)g(as)h(a)g(\015oating)h(p)s(oin)m(t)f(v)-5 -b(alue)36 b(with)f(micro-second)i(gran)m(ularit)m(y)630 -3440 y(\(see)42 b(the)g(do)s(cumen)m(tation)g(for)f(the)g(C)g(library)g -(function)g Fr(time)47 b Fu(for)41 b(the)h(de\014nition)f(of)630 -3550 y(Ep)s(o)s(c)m(h\).)82 b(Assignmen)m(ts)44 b(to)h -Ft(EPOCHREALTIME)c Fu(are)j(ignored.)83 b(If)43 b Ft(EPOCHREALTIME)e -Fu(is)630 3660 y(unset,)30 b(it)h(loses)g(its)g(sp)s(ecial)g(prop)s -(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)150 -3818 y Ft(EPOCHSECONDS)630 3927 y Fu(Eac)m(h)38 b(time)f(this)g +b Fu(Expanded)33 b(and)h(executed)i(similarly)f(to)g +Ft(BASH_ENV)d Fu(\(see)k(Section)f(6.2)h([Bash)f(Startup)630 +2844 y(Files],)k(page)e(93\))h(when)d(an)h(in)m(teractiv)m(e)j(shell)d +(is)h(in)m(v)m(ok)m(ed)g(in)f Fm(posix)g Fu(Mo)s(de)g(\(see)h(Sec-)630 +2953 y(tion)31 b(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(106\).)150 +3112 y Ft(EPOCHREALTIME)630 3221 y Fu(Eac)m(h)38 b(time)f(this)g (parameter)h(is)f(referenced,)i(it)f(expands)e(to)i(the)f(n)m(um)m(b)s -(er)f(of)h(seconds)630 4037 y(since)e(the)g(Unix)f(Ep)s(o)s(c)m(h)g -(\(see)i(the)f(do)s(cumen)m(tation)g(for)g(the)f(C)h(library)f -(function)g Fr(time)630 4147 y Fu(for)41 b(the)g(de\014nition)g(of)h -(Ep)s(o)s(c)m(h\).)73 b(Assignmen)m(ts)41 b(to)h Ft(EPOCHSECONDS)c -Fu(are)k(ignored.)73 b(If)630 4256 y Ft(EPOCHSECONDS)27 -b Fu(is)j(unset,)g(it)g(loses)h(its)g(sp)s(ecial)f(prop)s(erties,)g(ev) -m(en)h(if)f(it)g(is)g(subsequen)m(tly)630 4366 y(reset.)150 -4524 y Ft(EUID)288 b Fu(The)30 b(n)m(umeric)g(e\013ectiv)m(e)j(user)d -(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 -b(ariable)31 b(is)f(readonly)-8 b(.)150 4682 y Ft(EXECIGNORE)630 -4792 y Fu(A)29 b(colon-separated)h(list)f(of)g(shell)g(patterns)f -(\(see)i(Section)f(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)630 -4902 y(page)j(33\))g(de\014ning)e(the)h(list)g(of)g(\014lenames)g(to)g -(b)s(e)g(ignored)g(b)m(y)f(command)h(searc)m(h)g(using)630 -5011 y Ft(PATH)p Fu(.)k(Files)22 b(whose)f(full)g(pathnames)g(matc)m(h) -h(one)f(of)g(these)h(patterns)e(are)i(not)f(considered)630 +(er)f(of)h(seconds)630 3331 y(since)f(the)g(Unix)f(Ep)s(o)s(c)m(h)g(as) +h(a)g(\015oating)h(p)s(oin)m(t)f(v)-5 b(alue)36 b(with)f(micro-second)i +(gran)m(ularit)m(y)630 3440 y(\(see)k(the)g(do)s(cumen)m(tation)h(for)e +(the)h(C)f(library)g(function)g Ft(time)g Fu(for)g(the)h(de\014nition)f +(of)630 3550 y(Ep)s(o)s(c)m(h\).)82 b(Assignmen)m(ts)44 +b(to)h Ft(EPOCHREALTIME)c Fu(are)j(ignored.)83 b(If)43 +b Ft(EPOCHREALTIME)e Fu(is)630 3660 y(unset,)30 b(it)h(loses)g(its)g +(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m +(tly)f(reset.)150 3818 y Ft(EPOCHSECONDS)630 3927 y Fu(Eac)m(h)38 +b(time)f(this)g(parameter)h(is)f(referenced,)i(it)f(expands)e(to)i(the) +f(n)m(um)m(b)s(er)f(of)h(seconds)630 4037 y(since)d(the)g(Unix)g(Ep)s +(o)s(c)m(h)f(\(see)i(the)f(do)s(cumen)m(tation)h(for)e(the)i(C)e +(library)h(function)f Ft(time)630 4147 y Fu(for)41 b(the)g +(de\014nition)g(of)h(Ep)s(o)s(c)m(h\).)73 b(Assignmen)m(ts)41 +b(to)h Ft(EPOCHSECONDS)c Fu(are)k(ignored.)73 b(If)630 +4256 y Ft(EPOCHSECONDS)27 b Fu(is)j(unset,)g(it)g(loses)h(its)g(sp)s +(ecial)f(prop)s(erties,)g(ev)m(en)h(if)f(it)g(is)g(subsequen)m(tly)630 +4366 y(reset.)150 4524 y Ft(EUID)288 b Fu(The)30 b(n)m(umeric)g +(e\013ectiv)m(e)j(user)d(id)g(of)g(the)h(curren)m(t)f(user.)40 +b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)150 +4682 y Ft(EXECIGNORE)630 4792 y Fu(A)29 b(colon-separated)h(list)f(of)g +(shell)g(patterns)f(\(see)i(Section)f(3.5.8.1)i([P)m(attern)f(Matc)m +(hing],)630 4902 y(page)j(36\))g(de\014ning)e(the)h(list)g(of)g +(\014lenames)g(to)g(b)s(e)g(ignored)g(b)m(y)f(command)h(searc)m(h)g +(using)630 5011 y Ft(PATH)p Fu(.)k(Files)22 b(whose)f(full)g(pathnames) +g(matc)m(h)h(one)f(of)g(these)h(patterns)e(are)i(not)f(considered)630 5121 y(executable)j(\014les)e(for)g(the)h(purp)s(oses)d(of)j (completion)h(and)d(command)i(execution)g(via)g Ft(PATH)630 5230 y Fu(lo)s(okup.)56 b(This)35 b(do)s(es)g(not)h(a\013ect)i(the)d(b) @@ -13807,9 +14170,9 @@ s(eha)m(vior)h(of)g(the)g Ft([)p Fu(,)h Ft(test)p Fu(,)f(and)f Ft([[)g Fu(commands.)630 5340 y(F)-8 b(ull)42 b(pathnames)e(in)h(the)g (command)g(hash)f(table)i(are)g(not)f(sub)5 b(ject)41 b(to)g Ft(EXECIGNORE)p Fu(.)p eop end -%%Page: 79 85 -TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(79)630 299 y(Use)30 +%%Page: 84 90 +TeXDict begin 84 89 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(84)630 299 y(Use)30 b(this)f(v)-5 b(ariable)30 b(to)g(ignore)g(shared)f(library)g(\014les)g (that)h(ha)m(v)m(e)h(the)f(executable)h(bit)e(set,)630 408 y(but)36 b(are)h(not)g(executable)i(\014les.)60 b(The)36 @@ -13869,7 +14232,7 @@ Fu(is)i(unset,)f(it)h(loses)h(its)630 3703 y(sp)s(ecial)f(prop)s 3864 y Ft(histchars)630 3973 y Fu(Up)c(to)g(three)g(c)m(haracters)i (whic)m(h)d(con)m(trol)j(history)d(expansion,)i(quic)m(k)g (substitution,)g(and)630 4083 y(tok)m(enization)k(\(see)f(Section)f -(9.3)h([History)f(In)m(teraction],)i(page)f(148\).)41 +(9.3)h([History)f(In)m(teraction],)i(page)f(154\).)41 b(The)29 b(\014rst)e(c)m(harac-)630 4193 y(ter)j(is)f(the)g Fr(history)g(expansion)g Fu(c)m(haracter,)j(that)e(is,)f(the)h(c)m (haracter)h(whic)m(h)d(signi\014es)i(the)630 4302 y(start)25 @@ -13894,9 +14257,9 @@ Fu(are)j(ignored.)61 b(If)37 b Ft(HISTCMD)e Fu(is)i(unset,)h(it)g (loses)g(its)f(sp)s(ecial)630 5340 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)p eop end -%%Page: 80 86 -TeXDict begin 80 85 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(80)150 299 y Ft(HISTCONTROL)630 +%%Page: 85 91 +TeXDict begin 85 90 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(85)150 299 y Ft(HISTCONTROL)630 408 y Fu(A)40 b(colon-separated)i(list)f(of)f(v)-5 b(alues)40 b(con)m(trolling)i(ho)m(w)e(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)630 518 y(history)29 b(list.)41 b(If)28 b(the)h(list)h(of)f(v)-5 @@ -13979,12 +14342,12 @@ b(v)-5 b(alues)26 b(less)g(than)630 4862 y(zero)i(result)e(in)h(ev)m (startup)f(\014les.)150 5121 y Ft(HISTTIMEFORMAT)630 5230 y Fu(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m (ull,)k(its)d(v)-5 b(alue)44 b(is)g(used)g(as)g(a)h(format)f(string)g -(for)630 5340 y Fr(strftime)c Fu(to)35 b(prin)m(t)f(the)h(time)g(stamp) -f(asso)s(ciated)i(with)f(eac)m(h)g(history)g(en)m(try)f(displa)m(y)m +(for)630 5340 y Ft(strftime)26 b Fu(to)k(prin)m(t)e(the)g(time)i(stamp) +e(asso)s(ciated)i(with)e(eac)m(h)i(history)f(en)m(try)f(displa)m(y)m (ed)p eop end -%%Page: 81 87 -TeXDict begin 81 86 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(81)630 299 y(b)m(y)34 +%%Page: 86 92 +TeXDict begin 86 91 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(86)630 299 y(b)m(y)34 b(the)f Ft(history)f Fu(builtin.)50 b(If)33 b(this)h(v)-5 b(ariable)34 b(is)g(set,)h(time)f(stamps)g(are)g(written)f(to)i(the)630 408 y(history)26 b(\014le)g(so)g(they)g(ma)m(y)h(b)s(e)e(preserv)m(ed)g @@ -14044,20 +14407,20 @@ y(a)i(lo)s(cale)h(category)-8 b(.)150 4125 y Ft(LC_COLLATE)630 (vior)f(of)g(range)h(expressions,)h(equiv-)630 4453 y(alence)e (classes,)h(and)e(collating)i(sequences)e(within)f(\014lename)h (expansion)g(and)f(pattern)630 4563 y(matc)m(hing)d(\(see)h(Section)f -(3.5.8)h([Filename)g(Expansion],)e(page)h(33\).)150 4732 +(3.5.8)h([Filename)g(Expansion],)e(page)h(35\).)150 4732 y Ft(LC_CTYPE)96 b Fu(This)36 b(v)-5 b(ariable)37 b(determines)f(the)h (in)m(terpretation)h(of)f(c)m(haracters)h(and)e(the)g(b)s(eha)m(vior)h (of)630 4842 y(c)m(haracter)46 b(classes)g(within)e(\014lename)h (expansion)g(and)f(pattern)h(matc)m(hing)h(\(see)f(Sec-)630 -4951 y(tion)31 b(3.5.8)h([Filename)g(Expansion],)e(page)h(33\).)150 +4951 y(tion)31 b(3.5.8)h([Filename)g(Expansion],)e(page)h(35\).)150 5121 y Ft(LC_MESSAGES)630 5230 y Fu(This)25 b(v)-5 b(ariable)27 b(determines)f(the)g(lo)s(cale)i(used)d(to)i(translate)g(double-quoted) f(strings)g(pre-)630 5340 y(ceded)31 b(b)m(y)f(a)h(`)p Ft($)p Fu(')f(\(see)h(Section)h(3.1.2.5)g([Lo)s(cale)g(T)-8 b(ranslation],)32 b(page)f(7\).)p eop end -%%Page: 82 88 -TeXDict begin 82 87 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(82)150 299 y Ft(LC_NUMERIC)630 +%%Page: 87 93 +TeXDict begin 87 92 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(87)150 299 y Ft(LC_NUMERIC)630 408 y Fu(This)30 b(v)-5 b(ariable)31 b(determines)f(the)h(lo)s(cale)h (category)g(used)e(for)g(n)m(um)m(b)s(er)f(formatting.)150 573 y Ft(LC_TIME)144 b Fu(This)25 b(v)-5 b(ariable)26 @@ -14072,7 +14435,7 @@ Fu(command)i(to)g(determine)g(the)g(column)g(length)g(for)g(prin)m (ting)630 1121 y(selection)c(lists.)63 b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d Fu(option)j(is)f(enabled)h(\(see) 630 1230 y(Section)44 b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d -(66\),)k(or)43 b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 +(71\),)k(or)43 b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 1340 y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 1504 y Ft(MACHTYPE)96 b Fu(A)26 b(string)g(that)h(fully)f(describ)s(es)f (the)h(system)g(t)m(yp)s(e)h(on)f(whic)m(h)f(Bash)i(is)f(executing,)i @@ -14099,16 +14462,16 @@ Fu(If)35 b(set)i(to)f(the)h(v)-5 b(alue)36 b(1,)i(Bash)e(displa)m(ys)g 3039 y Fu(builtin)30 b(command.)150 3203 y Ft(OSTYPE)192 b Fu(A)30 b(string)h(describing)f(the)g(op)s(erating)h(system)g(Bash)f (is)h(running)d(on.)150 3367 y Ft(PIPESTATUS)630 3477 -y Fu(An)23 b(arra)m(y)h(v)-5 b(ariable)24 b(\(see)h(Section)f(6.7)h -([Arra)m(ys],)g(page)f(95\))h(con)m(taining)g(a)f(list)g(of)g(exit)g -(sta-)630 3587 y(tus)h(v)-5 b(alues)27 b(from)e(the)h(pro)s(cesses)g -(in)f(the)h(most-recen)m(tly-executed)j(foreground)c(pip)s(eline)630 -3696 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h -(command\).)150 3861 y Ft(POSIXLY_CORRECT)630 3970 y -Fu(If)h(this)g(v)-5 b(ariable)34 b(is)e(in)g(the)h(en)m(vironmen)m(t)g -(when)e(Bash)i(starts,)g(the)g(shell)g(en)m(ters)g Fm(posix)630 -4080 y Fu(mo)s(de)46 b(\(see)h(Section)g(6.11)g([Bash)g(POSIX)e(Mo)s -(de],)50 b(page)d(101\))h(b)s(efore)e(reading)g(the)630 +y Fu(An)48 b(arra)m(y)g(v)-5 b(ariable)49 b(\(see)g(Section)g(6.7)g +([Arra)m(ys],)k(page)c(100\))g(con)m(taining)h(a)e(list)h(of)630 +3587 y(exit)32 b(status)f(v)-5 b(alues)31 b(from)f(the)h(pro)s(cesses)g +(in)g(the)g(most-recen)m(tly-executed)j(foreground)630 +3696 y(pip)s(eline)c(\(whic)m(h)g(ma)m(y)h(con)m(tain)h(only)f(a)f +(single)h(command\).)150 3861 y Ft(POSIXLY_CORRECT)630 +3970 y Fu(If)h(this)g(v)-5 b(ariable)34 b(is)e(in)g(the)h(en)m +(vironmen)m(t)g(when)e(Bash)i(starts,)g(the)g(shell)g(en)m(ters)g +Fm(posix)630 4080 y Fu(mo)s(de)46 b(\(see)h(Section)g(6.11)g([Bash)g +(POSIX)e(Mo)s(de],)50 b(page)d(106\))h(b)s(efore)e(reading)g(the)630 4189 y(startup)38 b(\014les,)j(as)e(if)g(the)g Ft(--posix)d Fu(in)m(v)m(o)s(cation)41 b(option)e(had)f(b)s(een)g(supplied.)64 b(If)39 b(it)g(is)630 4299 y(set)31 b(while)f(the)h(shell)f(is)h @@ -14128,16 +14491,16 @@ b(alue)24 b(of)g(eac)m(h)g(set)h(elemen)m(t)g(is)f(in)m(terpreted)630 b(this)h(is)630 5340 y(set)c(but)f(not)g(an)h(arra)m(y)g(v)-5 b(ariable,)26 b(its)f(v)-5 b(alue)25 b(is)f(used)g(as)h(a)f(command)g (to)i(execute)f(instead.)p eop end -%%Page: 83 89 -TeXDict begin 83 88 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(83)150 299 y Ft(PROMPT_DIRTRIM)630 +%%Page: 88 94 +TeXDict begin 88 93 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(88)150 299 y Ft(PROMPT_DIRTRIM)630 408 y Fu(If)27 b(set)g(to)h(a)g(n)m(um)m(b)s(er)e(greater)i(than)f (zero,)i(the)e(v)-5 b(alue)28 b(is)f(used)g(as)g(the)h(n)m(um)m(b)s(er) -e(of)h(trailing)630 518 y(directory)35 b(comp)s(onen)m(ts)g(to)h -(retain)f(when)f(expanding)g(the)h Ft(\\w)f Fu(and)g -Ft(\\W)g Fu(prompt)g(string)630 628 y(escap)s(es)21 b(\(see)h(Section)f -(6.9)h([Con)m(trolling)g(the)f(Prompt],)h(page)f(98\).)39 -b(Characters)21 b(remo)m(v)m(ed)630 737 y(are)31 b(replaced)g(with)f +e(of)h(trailing)630 518 y(directory)c(comp)s(onen)m(ts)h(to)f(retain)h +(when)e(expanding)g(the)h Ft(\\w)g Fu(and)f Ft(\\W)g +Fu(prompt)h(string)f(es-)630 628 y(cap)s(es)i(\(see)h(Section)g(6.9)g +([Con)m(trolling)g(the)f(Prompt],)i(page)e(104\).)41 +b(Characters)24 b(remo)m(v)m(ed)630 737 y(are)31 b(replaced)g(with)f (an)g(ellipsis.)150 892 y Ft(PS0)336 b Fu(The)32 b(v)-5 b(alue)33 b(of)g(this)g(parameter)g(is)g(expanded)e(lik)m(e)j Ft(PS1)e Fu(and)g(displa)m(y)m(ed)i(b)m(y)e(in)m(teractiv)m(e)630 @@ -14147,13 +14510,13 @@ b(v)-5 b(alue)35 b(of)f(this)g(v)-5 b(ariable)35 b(is)g(used)e(as)i (the)f(prompt)g(for)g(the)g Ft(select)f Fu(command.)52 b(If)630 1267 y(this)30 b(v)-5 b(ariable)31 b(is)g(not)f(set,)i(the)e Ft(select)f Fu(command)h(prompts)f(with)h(`)p Ft(#?)g -Fu(')150 1422 y Ft(PS4)336 b Fu(The)37 b(v)-5 b(alue)37 -b(of)g(this)g(parameter)h(is)f(expanded)f(lik)m(e)i Fr(PS1)44 -b Fu(and)37 b(the)g(expanded)f(v)-5 b(alue)38 b(is)630 -1532 y(the)d(prompt)f(prin)m(ted)g(b)s(efore)g(the)h(command)f(line)h -(is)g(ec)m(ho)s(ed)g(when)f(the)h Ft(-x)f Fu(option)h(is)630 +Fu(')150 1422 y Ft(PS4)336 b Fu(The)38 b(v)-5 b(alue)39 +b(of)g(this)g(parameter)g(is)g(expanded)f(lik)m(e)i Ft(PS1)e +Fu(and)g(the)h(expanded)f(v)-5 b(alue)39 b(is)630 1532 +y(the)c(prompt)f(prin)m(ted)g(b)s(efore)g(the)h(command)f(line)h(is)g +(ec)m(ho)s(ed)g(when)f(the)h Ft(-x)f Fu(option)h(is)630 1641 y(set)k(\(see)h(Section)g(4.3.1)g([The)f(Set)g(Builtin],)j(page)e -(62\).)67 b(The)38 b(\014rst)g(c)m(haracter)j(of)e(the)630 +(67\).)67 b(The)38 b(\014rst)g(c)m(haracter)j(of)e(the)630 1751 y(expanded)33 b(v)-5 b(alue)33 b(is)h(replicated)g(m)m(ultiple)g (times,)h(as)f(necessary)-8 b(,)35 b(to)f(indicate)g(m)m(ultiple)630 1861 y(lev)m(els)e(of)e(indirection.)42 b(The)29 b(default)i(is)f(`)p @@ -14166,141 +14529,145 @@ b(Assigning)25 b(a)f(v)-5 b(alue)25 b(to)g(this)f(v)-5 b(ariable)25 b(seeds)f(the)h(random)e(n)m(um)m(b)s(er)g(gener-)630 2390 y(ator.)41 b(If)27 b Ft(RANDOM)f Fu(is)h(unset,)h(it)g(loses)h (its)f(sp)s(ecial)g(prop)s(erties,)g(ev)m(en)g(if)g(it)g(is)f -(subsequen)m(tly)630 2500 y(reset.)150 2655 y Ft(READLINE_LINE)630 -2765 y Fu(The)g(con)m(ten)m(ts)i(of)f(the)g(Readline)g(line)g -(bu\013er,)f(for)h(use)f(with)g(`)p Ft(bind)j(-x)p Fu(')d(\(see)h -(Section)h(4.2)630 2874 y([Bash)i(Builtins],)g(page)g(51\).)150 -3029 y Ft(READLINE_MARK)630 3139 y Fu(The)26 b(p)s(osition)h(of)g(the)g -Fr(mark)32 b Fu(\(sa)m(v)m(ed)c(insertion)f(p)s(oin)m(t\))g(in)g(the)g -(Readline)g(line)g(bu\013er,)g(for)630 3249 y(use)36 -b(with)f(`)p Ft(bind)30 b(-x)p Fu(')35 b(\(see)i(Section)g(4.2)g([Bash) -f(Builtins],)i(page)f(51\).)58 b(The)35 b(c)m(haracters)630 -3358 y(b)s(et)m(w)m(een)c(the)g(insertion)f(p)s(oin)m(t)g(and)g(the)h -(mark)f(are)h(often)f(called)i(the)f Fr(region)p Fu(.)150 -3513 y Ft(READLINE_POINT)630 3623 y Fu(The)23 b(p)s(osition)g(of)g(the) -h(insertion)f(p)s(oin)m(t)g(in)g(the)g(Readline)h(line)f(bu\013er,)h -(for)f(use)g(with)g(`)p Ft(bind)630 3733 y(-x)p Fu(')30 -b(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(51\).)150 -3888 y Ft(REPLY)240 b Fu(The)30 b(default)g(v)-5 b(ariable)32 -b(for)e(the)g Ft(read)g Fu(builtin.)150 4043 y Ft(SECONDS)144 -b Fu(This)40 b(v)-5 b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s -(er)e(of)i(seconds)g(since)g(the)f(shell)h(w)m(as)g(started.)630 -4153 y(Assignmen)m(t)i(to)g(this)g(v)-5 b(ariable)43 +(subsequen)m(tly)630 2500 y(reset.)150 2655 y Ft(READLINE_ARGUMENT)630 +2765 y Fu(An)m(y)37 b(n)m(umeric)f(argumen)m(t)h(giv)m(en)g(to)g(a)g +(Readline)g(command)f(that)h(w)m(as)g(de\014ned)e(using)630 +2874 y(`)p Ft(bind)29 b(-x)p Fu(')h(\(see)i(Section)f(4.2)g([Bash)g +(Builtins],)g(page)h(55,)f(when)e(it)i(w)m(as)g(in)m(v)m(ok)m(ed.)150 +3029 y Ft(READLINE_LINE)630 3139 y Fu(The)c(con)m(ten)m(ts)i(of)f(the)g +(Readline)g(line)g(bu\013er,)f(for)h(use)f(with)g(`)p +Ft(bind)j(-x)p Fu(')d(\(see)h(Section)h(4.2)630 3249 +y([Bash)i(Builtins],)g(page)g(55\).)150 3404 y Ft(READLINE_MARK)630 +3513 y Fu(The)26 b(p)s(osition)h(of)g(the)g Fr(mark)32 +b Fu(\(sa)m(v)m(ed)c(insertion)f(p)s(oin)m(t\))g(in)g(the)g(Readline)g +(line)g(bu\013er,)g(for)630 3623 y(use)36 b(with)f(`)p +Ft(bind)30 b(-x)p Fu(')35 b(\(see)i(Section)g(4.2)g([Bash)f(Builtins],) +i(page)f(55\).)58 b(The)35 b(c)m(haracters)630 3733 y(b)s(et)m(w)m(een) +c(the)g(insertion)f(p)s(oin)m(t)g(and)g(the)h(mark)f(are)h(often)f +(called)i(the)f Fr(region)p Fu(.)150 3888 y Ft(READLINE_POINT)630 +3998 y Fu(The)23 b(p)s(osition)g(of)g(the)h(insertion)f(p)s(oin)m(t)g +(in)g(the)g(Readline)h(line)f(bu\013er,)h(for)f(use)g(with)g(`)p +Ft(bind)630 4107 y(-x)p Fu(')30 b(\(see)h(Section)h(4.2)f([Bash)g +(Builtins],)g(page)g(55\).)150 4262 y Ft(REPLY)240 b +Fu(The)30 b(default)g(v)-5 b(ariable)32 b(for)e(the)g +Ft(read)g Fu(builtin.)150 4418 y Ft(SECONDS)144 b Fu(This)40 +b(v)-5 b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s(er)e(of)i +(seconds)g(since)g(the)f(shell)h(w)m(as)g(started.)630 +4527 y(Assignmen)m(t)i(to)g(this)g(v)-5 b(ariable)43 b(resets)g(the)g(coun)m(t)g(to)g(the)g(v)-5 b(alue)43 -b(assigned,)j(and)c(the)630 4262 y(expanded)35 b(v)-5 +b(assigned,)j(and)c(the)630 4637 y(expanded)35 b(v)-5 b(alue)36 b(b)s(ecomes)h(the)f(v)-5 b(alue)36 b(assigned)g(plus)f(the)h -(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630 4372 y(the)24 -b(assignmen)m(t.)39 b(The)23 b(n)m(um)m(b)s(er)g(of)h(seconds)f(at)i -(shell)f(in)m(v)m(o)s(cation)i(and)d(the)h(curren)m(t)f(time)630 -4482 y(is)j(alw)m(a)m(ys)i(determined)e(b)m(y)g(querying)g(the)h -(system)f(clo)s(c)m(k.)41 b(If)26 b Ft(SECONDS)e Fu(is)i(unset,)h(it)g -(loses)630 4591 y(its)k(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f -(it)h(is)f(subsequen)m(tly)g(reset.)150 4746 y Ft(SHELL)240 -b Fu(This)24 b(en)m(vironmen)m(t)i(v)-5 b(ariable)26 -b(expands)e(to)i(the)g(full)f(pathname)g(to)h(the)f(shell.)39 -b(If)25 b(it)g(is)h(not)630 4856 y(set)36 b(when)f(the)h(shell)g -(starts,)i(Bash)e(assigns)h(to)f(it)h(the)f(full)f(pathname)h(of)g(the) -g(curren)m(t)630 4966 y(user's)30 b(login)h(shell.)150 -5121 y Ft(SHELLOPTS)630 5230 y Fu(A)g(colon-separated)h(list)f(of)g -(enabled)f(shell)h(options.)41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h -(list)g(is)g(a)g(v)-5 b(alid)630 5340 y(argumen)m(t)28 -b(for)f(the)h Ft(-o)e Fu(option)i(to)g(the)g Ft(set)e -Fu(builtin)h(command)g(\(see)i(Section)f(4.3.1)h([The)p -eop end -%%Page: 84 90 -TeXDict begin 84 89 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(84)630 299 y(Set)29 -b(Builtin],)h(page)f(62\).)42 b(The)28 b(options)h(app)s(earing)f(in)g -Ft(SHELLOPTS)e Fu(are)j(those)h(rep)s(orted)630 408 y(as)g(`)p -Ft(on)p Fu(')f(b)m(y)h(`)p Ft(set)g(-o)p Fu('.)40 b(If)29 -b(this)h(v)-5 b(ariable)30 b(is)g(in)f(the)h(en)m(vironmen)m(t)g(when)f -(Bash)h(starts)g(up,)630 518 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h -(list)g(will)f(b)s(e)g(enabled)h(b)s(efore)f(reading)g(an)m(y)h -(startup)f(\014les.)630 628 y(This)30 b(v)-5 b(ariable)31 -b(is)f(readonly)-8 b(.)150 790 y Ft(SHLVL)240 b Fu(Incremen)m(ted)21 -b(b)m(y)g(one)g(eac)m(h)h(time)f(a)h(new)e(instance)h(of)g(Bash)g(is)g -(started.)38 b(This)20 b(is)h(in)m(tended)630 899 y(to)31 -b(b)s(e)f(a)h(coun)m(t)g(of)f(ho)m(w)h(deeply)f(y)m(our)g(Bash)h -(shells)f(are)h(nested.)150 1062 y Ft(SRANDOM)144 b Fu(This)36 -b(v)-5 b(ariable)37 b(expands)f(to)h(a)g(32-bit)h(pseudo-random)d(n)m -(um)m(b)s(er)g(eac)m(h)j(time)f(it)g(is)g(ref-)630 1171 -y(erenced.)47 b(The)32 b(random)g(n)m(um)m(b)s(er)f(generator)j(is)e -(not)h(linear)g(on)f(systems)h(that)g(supp)s(ort)630 -1281 y Ft(/dev/urandom)26 b Fu(or)k Ft(arc4random)p Fu(,)d(so)j(eac)m -(h)g(returned)f(n)m(um)m(b)s(er)f(has)h(no)g(relationship)h(to)630 -1390 y(the)39 b(n)m(um)m(b)s(ers)e(preceding)i(it.)66 -b(The)38 b(random)g(n)m(um)m(b)s(er)f(generator)j(cannot)g(b)s(e)e -(seeded,)630 1500 y(so)c(assignmen)m(ts)g(to)g(this)f(v)-5 -b(ariable)34 b(ha)m(v)m(e)h(no)e(e\013ect.)51 b(If)33 -b Ft(SRANDOM)e Fu(is)j(unset,)g(it)f(loses)i(its)630 -1610 y(sp)s(ecial)c(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g -(subsequen)m(tly)f(reset.)150 1772 y Ft(TIMEFORMAT)630 -1881 y Fu(The)g(v)-5 b(alue)32 b(of)f(this)g(parameter)g(is)g(used)f -(as)h(a)g(format)h(string)f(sp)s(ecifying)f(ho)m(w)h(the)g(tim-)630 -1991 y(ing)37 b(information)f(for)h(pip)s(elines)f(pre\014xed)f(with)h -(the)h Ft(time)e Fu(reserv)m(ed)i(w)m(ord)f(should)g(b)s(e)630 -2101 y(displa)m(y)m(ed.)k(The)27 b(`)p Ft(\045)p Fu(')h(c)m(haracter)h -(in)m(tro)s(duces)e(an)h(escap)s(e)g(sequence)g(that)g(is)f(expanded)g -(to)630 2210 y(a)37 b(time)g(v)-5 b(alue)36 b(or)h(other)f -(information.)59 b(The)36 b(escap)s(e)g(sequences)h(and)e(their)i -(meanings)630 2320 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote) -h(optional)h(p)s(ortions.)630 2482 y Ft(\045\045)384 -b Fu(A)30 b(literal)i(`)p Ft(\045)p Fu('.)630 2644 y -Ft(\045[)p Fj(p)p Ft(][l]R)96 b Fu(The)30 b(elapsed)h(time)g(in)f -(seconds.)630 2806 y Ft(\045[)p Fj(p)p Ft(][l]U)96 b -Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g -(user)f(mo)s(de.)630 2968 y Ft(\045[)p Fj(p)p Ft(][l]S)96 -b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g -(system)g(mo)s(de.)630 3131 y Ft(\045P)384 b Fu(The)30 -b(CPU)g(p)s(ercen)m(tage,)i(computed)e(as)h(\(\045U)f -Ft(+)g Fu(\045S\))g(/)h(\045R.)630 3293 y(The)23 b(optional)j -Fr(p)g Fu(is)e(a)g(digit)h(sp)s(ecifying)e(the)h(precision,)i(the)e(n)m -(um)m(b)s(er)f(of)h(fractional)h(digits)630 3402 y(after)36 -b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35 b(v)-5 b(alue)36 -b(of)f(0)h(causes)g(no)f(decimal)h(p)s(oin)m(t)f(or)h(fraction)g(to)g -(b)s(e)630 3512 y(output.)48 b(A)m(t)34 b(most)f(three)g(places)h -(after)f(the)g(decimal)h(p)s(oin)m(t)f(ma)m(y)h(b)s(e)e(sp)s -(eci\014ed;)i(v)-5 b(alues)630 3622 y(of)31 b Fr(p)h -Fu(greater)g(than)e(3)h(are)f(c)m(hanged)h(to)g(3.)42 +(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630 4746 y(the)41 +b(assignmen)m(t.)72 b(The)40 b(n)m(um)m(b)s(er)f(of)i(seconds)f(at)h +(shell)g(in)m(v)m(o)s(cation)i(and)c(the)i(curren)m(t)630 +4856 y(time)30 b(are)g(alw)m(a)m(ys)g(determined)f(b)m(y)g(querying)g +(the)h(system)f(clo)s(c)m(k.)42 b(If)29 b Ft(SECONDS)e +Fu(is)i(unset,)630 4966 y(it)i(loses)g(its)g(sp)s(ecial)g(prop)s +(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)e(reset.)150 +5121 y Ft(SHELL)240 b Fu(This)24 b(en)m(vironmen)m(t)i(v)-5 +b(ariable)26 b(expands)e(to)i(the)g(full)f(pathname)g(to)h(the)f +(shell.)39 b(If)25 b(it)g(is)h(not)630 5230 y(set)36 +b(when)f(the)h(shell)g(starts,)i(Bash)e(assigns)h(to)f(it)h(the)f(full) +f(pathname)h(of)g(the)g(curren)m(t)630 5340 y(user's)30 +b(login)h(shell.)p eop end +%%Page: 89 95 +TeXDict begin 89 94 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(89)150 299 y Ft(SHELLOPTS)630 +408 y Fu(A)31 b(colon-separated)h(list)f(of)g(enabled)f(shell)h +(options.)41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h(list)g(is)g(a)g(v)-5 +b(alid)630 518 y(argumen)m(t)28 b(for)f(the)h Ft(-o)e +Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)h(command)g(\(see)i(Section) +f(4.3.1)h([The)630 628 y(Set)g(Builtin],)h(page)f(67\).)42 +b(The)28 b(options)h(app)s(earing)f(in)g Ft(SHELLOPTS)e +Fu(are)j(those)h(rep)s(orted)630 737 y(as)g(`)p Ft(on)p +Fu(')f(b)m(y)h(`)p Ft(set)g(-o)p Fu('.)40 b(If)29 b(this)h(v)-5 +b(ariable)30 b(is)g(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)h +(starts)g(up,)630 847 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h(list)g +(will)f(b)s(e)g(enabled)h(b)s(efore)f(reading)g(an)m(y)h(startup)f +(\014les.)630 956 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 +b(.)150 1121 y Ft(SHLVL)240 b Fu(Incremen)m(ted)21 b(b)m(y)g(one)g(eac) +m(h)h(time)f(a)h(new)e(instance)h(of)g(Bash)g(is)g(started.)38 +b(This)20 b(is)h(in)m(tended)630 1230 y(to)31 b(b)s(e)f(a)h(coun)m(t)g +(of)f(ho)m(w)h(deeply)f(y)m(our)g(Bash)h(shells)f(are)h(nested.)150 +1395 y Ft(SRANDOM)144 b Fu(This)36 b(v)-5 b(ariable)37 +b(expands)f(to)h(a)g(32-bit)h(pseudo-random)d(n)m(um)m(b)s(er)g(eac)m +(h)j(time)f(it)g(is)g(ref-)630 1504 y(erenced.)47 b(The)32 +b(random)g(n)m(um)m(b)s(er)f(generator)j(is)e(not)h(linear)g(on)f +(systems)h(that)g(supp)s(ort)630 1614 y Ft(/dev/urandom)26 +b Fu(or)k Ft(arc4random)p Fu(,)d(so)j(eac)m(h)g(returned)f(n)m(um)m(b)s +(er)f(has)h(no)g(relationship)h(to)630 1724 y(the)39 +b(n)m(um)m(b)s(ers)e(preceding)i(it.)66 b(The)38 b(random)g(n)m(um)m(b) +s(er)f(generator)j(cannot)g(b)s(e)e(seeded,)630 1833 +y(so)c(assignmen)m(ts)g(to)g(this)f(v)-5 b(ariable)34 +b(ha)m(v)m(e)h(no)e(e\013ect.)51 b(If)33 b Ft(SRANDOM)e +Fu(is)j(unset,)g(it)f(loses)i(its)630 1943 y(sp)s(ecial)c(prop)s +(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)150 +2107 y Ft(TIMEFORMAT)630 2217 y Fu(The)g(v)-5 b(alue)32 +b(of)f(this)g(parameter)g(is)g(used)f(as)h(a)g(format)h(string)f(sp)s +(ecifying)f(ho)m(w)h(the)g(tim-)630 2326 y(ing)37 b(information)f(for)h +(pip)s(elines)f(pre\014xed)f(with)h(the)h Ft(time)e Fu(reserv)m(ed)i(w) +m(ord)f(should)g(b)s(e)630 2436 y(displa)m(y)m(ed.)k(The)27 +b(`)p Ft(\045)p Fu(')h(c)m(haracter)h(in)m(tro)s(duces)e(an)h(escap)s +(e)g(sequence)g(that)g(is)f(expanded)g(to)630 2545 y(a)37 +b(time)g(v)-5 b(alue)36 b(or)h(other)f(information.)59 +b(The)36 b(escap)s(e)g(sequences)h(and)e(their)i(meanings)630 +2655 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h +(p)s(ortions.)630 2819 y Ft(\045\045)384 b Fu(A)30 b(literal)i(`)p +Ft(\045)p Fu('.)630 2984 y Ft(\045[)p Fj(p)p Ft(][l]R)96 +b Fu(The)30 b(elapsed)h(time)g(in)f(seconds.)630 3148 +y Ft(\045[)p Fj(p)p Ft(][l]U)96 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h +(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(user)f(mo)s(de.)630 +3313 y Ft(\045[)p Fj(p)p Ft(][l]S)96 b Fu(The)30 b(n)m(um)m(b)s(er)f +(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(system)g(mo)s(de.)630 +3477 y Ft(\045P)384 b Fu(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e +(as)h(\(\045U)f Ft(+)g Fu(\045S\))g(/)h(\045R.)630 3641 +y(The)23 b(optional)j Fr(p)g Fu(is)e(a)g(digit)h(sp)s(ecifying)e(the)h +(precision,)i(the)e(n)m(um)m(b)s(er)f(of)h(fractional)h(digits)630 +3751 y(after)36 b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35 +b(v)-5 b(alue)36 b(of)f(0)h(causes)g(no)f(decimal)h(p)s(oin)m(t)f(or)h +(fraction)g(to)g(b)s(e)630 3861 y(output.)48 b(A)m(t)34 +b(most)f(three)g(places)h(after)f(the)g(decimal)h(p)s(oin)m(t)f(ma)m(y) +h(b)s(e)e(sp)s(eci\014ed;)i(v)-5 b(alues)630 3970 y(of)31 +b Fr(p)h Fu(greater)g(than)e(3)h(are)f(c)m(hanged)h(to)g(3.)42 b(If)29 b Fr(p)k Fu(is)d(not)h(sp)s(eci\014ed,)f(the)h(v)-5 -b(alue)30 b(3)h(is)g(used.)630 3758 y(The)54 b(optional)h +b(alue)30 b(3)h(is)g(used.)630 4107 y(The)54 b(optional)h Ft(l)f Fu(sp)s(eci\014es)g(a)h(longer)f(format,)61 b(including)54 -b(min)m(utes,)61 b(of)54 b(the)g(form)630 3867 y Fr(MM)10 +b(min)m(utes,)61 b(of)54 b(the)g(form)630 4217 y Fr(MM)10 b Fu(m)p Fr(SS)p Fu(.)p Fr(FF)d Fu(s.)103 b(The)50 b(v)-5 b(alue)52 b(of)f Fr(p)j Fu(determines)d(whether)f(or)h(not)h(the)f -(fraction)h(is)630 3977 y(included.)630 4113 y(If)30 +(fraction)h(is)630 4326 y(included.)630 4463 y(If)30 b(this)g(v)-5 b(ariable)31 b(is)g(not)f(set,)i(Bash)e(acts)h(as)g(if)f -(it)h(had)f(the)h(v)-5 b(alue)870 4248 y Ft +(it)h(had)f(the)h(v)-5 b(alue)870 4600 y Ft ($'\\nreal\\t\0453lR\\nuser\\t\0453)o(lU\\n)o(sys\\)o(t\0453)o(lS')630 -4384 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f +4737 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f (information)h(is)f(displa)m(y)m(ed.)62 b(A)37 b(trailing)i(newline)e -(is)630 4494 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m -(y)m(ed.)150 4656 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5 +(is)630 4847 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m +(y)m(ed.)150 5011 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5 b(alue)23 b(greater)h(than)e(zero,)j Ft(TMOUT)d Fu(is)g(treated)i(as)e -(the)h(default)g(timeout)g(for)g(the)630 4766 y Ft(read)31 +(the)h(default)g(timeout)g(for)g(the)630 5121 y Ft(read)31 b Fu(builtin)h(\(see)h(Section)f(4.2)i([Bash)e(Builtins],)h(page)g -(51\).)47 b(The)32 b Ft(select)e Fu(command)630 4875 +(55\).)47 b(The)32 b Ft(select)e Fu(command)630 5230 y(\(see)f(Section)h(3.2.5.2)g([Conditional)g(Constructs],)e(page)i -(11\))f(terminates)g(if)g(input)e(do)s(es)630 4985 y(not)k(arriv)m(e)g +(12\))f(terminates)g(if)g(input)e(do)s(es)630 5340 y(not)k(arriv)m(e)g (after)g Ft(TMOUT)e Fu(seconds)h(when)f(input)h(is)g(coming)h(from)f(a) -h(terminal.)630 5121 y(In)40 b(an)h(in)m(teractiv)m(e)i(shell,)h(the)d -(v)-5 b(alue)41 b(is)g(in)m(terpreted)g(as)f(the)h(n)m(um)m(b)s(er)f -(of)h(seconds)f(to)630 5230 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input) -e(after)i(issuing)f(the)h(primary)e(prompt.)39 b(Bash)26 -b(terminates)h(after)630 5340 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m -(b)s(er)e(of)h(seconds)h(if)f(a)h(complete)h(line)e(of)h(input)e(do)s -(es)h(not)h(arriv)m(e.)p eop end -%%Page: 85 91 -TeXDict begin 85 90 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(85)150 299 y Ft(TMPDIR)192 -b Fu(If)39 b(set,)j(Bash)e(uses)f(its)h(v)-5 b(alue)40 -b(as)f(the)h(name)f(of)h(a)g(directory)g(in)f(whic)m(h)g(Bash)h -(creates)630 408 y(temp)s(orary)30 b(\014les)g(for)g(the)h(shell's)g -(use.)150 568 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h(user)f(id) -g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 b(ariable)31 -b(is)f(readonly)-8 b(.)p eop end -%%Page: 86 92 -TeXDict begin 86 91 bop 3659 -116 a Fu(86)150 299 y Fp(6)80 +h(terminal.)p eop end +%%Page: 90 96 +TeXDict begin 90 95 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(90)630 299 y(In)40 +b(an)h(in)m(teractiv)m(e)i(shell,)h(the)d(v)-5 b(alue)41 +b(is)g(in)m(terpreted)g(as)f(the)h(n)m(um)m(b)s(er)f(of)h(seconds)f(to) +630 408 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input)e(after)i(issuing)f +(the)h(primary)e(prompt.)39 b(Bash)26 b(terminates)h(after)630 +518 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m(b)s(er)e(of)h(seconds)h(if) +f(a)h(complete)h(line)e(of)h(input)e(do)s(es)h(not)h(arriv)m(e.)150 +677 y Ft(TMPDIR)192 b Fu(If)39 b(set,)j(Bash)e(uses)f(its)h(v)-5 +b(alue)40 b(as)f(the)h(name)f(of)h(a)g(directory)g(in)f(whic)m(h)g +(Bash)h(creates)630 787 y(temp)s(orary)30 b(\014les)g(for)g(the)h +(shell's)g(use.)150 946 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h +(user)f(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 +b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)p eop end +%%Page: 91 97 +TeXDict begin 91 96 bop 3659 -116 a Fu(91)150 299 y Fp(6)80 b(Bash)54 b(F)-13 b(eatures)150 502 y Fu(This)30 b(c)m(hapter)h (describ)s(es)e(features)i(unique)e(to)i(Bash.)150 731 y Fs(6.1)68 b(In)l(v)l(oking)46 b(Bash)390 890 y Ft(bash)h([long-opt])e @@ -14314,7 +14681,7 @@ b([-o)k Fj(option)p Ft(])581 1438 y([-O)h Fj(shopt_option)p Ft(])d([)p Fj(argument)h Ft(...)o(])275 1567 y Fu(All)31 b(of)g(the)f(single-c)m(haracter)k(options)d(used)f(with)g(the)h Ft(set)f Fu(builtin)g(\(see)h(Section)h(4.3.1)g([The)f(Set)150 -1676 y(Builtin],)45 b(page)c(62\))i(can)e(b)s(e)f(used)h(as)g(options)g +1676 y(Builtin],)45 b(page)c(67\))i(can)e(b)s(e)f(used)h(as)g(options)g (when)f(the)i(shell)f(is)g(in)m(v)m(ok)m(ed.)74 b(In)41 b(addition,)j(there)150 1786 y(are)38 b(sev)m(eral)h(m)m(ulti-c)m (haracter)h(options)d(that)h(y)m(ou)g(can)g(use.)61 b(These)38 @@ -14324,7 +14691,7 @@ b(line)h(b)s(efore)f(the)g(single-c)m(haracter)j(options)e(to)g(b)s(e)f (the)g(debugger)g(pro\014le)g(to)h(b)s(e)e(executed)i(b)s(efore)f(the)g (shell)g(starts.)49 b(T)-8 b(urns)630 2262 y(on)35 b(extended)g (debugging)f(mo)s(de)h(\(see)g(Section)h(4.3.2)h([The)d(Shopt)g -(Builtin],)j(page)f(66,)630 2371 y(for)30 b(a)h(description)f(of)h(the) +(Builtin],)j(page)f(71,)630 2371 y(for)30 b(a)h(description)f(of)h(the) f Ft(extdebug)f Fu(option)h(to)h(the)g Ft(shopt)e Fu(builtin\).)150 2519 y Ft(--dump-po-strings)630 2628 y Fu(A)37 b(list)g(of)f(all)i (double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p Ft($)p @@ -14342,7 +14709,7 @@ b(of)g Ft(~/.bashrc)p Fu(\))e(in)h(an)h(in)m(teractiv)m(e)i(shell.)150 3765 y Ft(--login)144 b Fu(Equiv)-5 b(alen)m(t)31 b(to)g Ft(-l)p Fu(.)150 3912 y Ft(--noediting)630 4022 y Fu(Do)h(not)e(use)h (the)g Fm(gnu)f Fu(Readline)i(library)e(\(see)h(Chapter)g(8)g([Command) -f(Line)g(Editing],)630 4131 y(page)h(111\))h(to)f(read)g(command)f +f(Line)g(Editing],)630 4131 y(page)h(117\))h(to)f(read)g(command)f (lines)g(when)g(the)g(shell)h(is)f(in)m(teractiv)m(e.)150 4278 y Ft(--noprofile)630 4388 y Fu(Don't)22 b(load)g(the)g (system-wide)f(startup)g(\014le)h Ft(/etc/profile)c Fu(or)j(an)m(y)h @@ -14359,15 +14726,15 @@ b(the)h(b)s(eha)m(vior)f(of)g(Bash)h(where)e(the)i(default)f(op)s y Fu(standard)35 b(to)h(matc)m(h)g(the)g(standard.)55 b(This)35 b(is)h(in)m(tended)f(to)h(mak)m(e)h(Bash)f(b)s(eha)m(v)m(e)g (as)g(a)630 5230 y(strict)22 b(sup)s(erset)e(of)h(that)g(standard.)37 -b(See)21 b(Section)h(6.11)g([Bash)f(POSIX)f(Mo)s(de],)k(page)d(101,)630 +b(See)21 b(Section)h(6.11)g([Bash)f(POSIX)f(Mo)s(de],)k(page)d(106,)630 5340 y(for)30 b(a)h(description)f(of)h(the)f(Bash)h Fm(posix)f Fu(mo)s(de.)p eop end -%%Page: 87 93 -TeXDict begin 87 92 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(87)150 299 y Ft(--restricted)630 +%%Page: 92 98 +TeXDict begin 92 97 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(92)150 299 y Ft(--restricted)630 408 y Fu(Mak)m(e)54 b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h (Section)g(6.10)h([The)d(Restricted)j(Shell],)630 518 -y(page)31 b(100\).)150 677 y Ft(--verbose)630 787 y Fu(Equiv)-5 +y(page)31 b(105\).)150 677 y Ft(--verbose)630 787 y Fu(Equiv)-5 b(alen)m(t)31 b(to)g Ft(-v)p Fu(.)41 b(Prin)m(t)30 b(shell)g(input)g (lines)g(as)h(they're)g(read.)150 946 y Ft(--version)630 1056 y Fu(Sho)m(w)d(v)m(ersion)g(information)g(for)g(this)g(instance)h @@ -14389,7 +14756,7 @@ b(assignmen)m(t)i(to)g Ft($0)f Fu(sets)g(the)h(name)f(of)g(the)g (error)g(messages.)150 2192 y Ft(-i)384 b Fu(F)-8 b(orce)22 b(the)g(shell)f(to)g(run)f(in)m(teractiv)m(ely)-8 b(.)41 b(In)m(teractiv)m(e)23 b(shells)e(are)h(describ)s(ed)d(in)i(Section)h -(6.3)630 2301 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(89.)150 +(6.3)630 2301 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(94.)150 2461 y Ft(-l)384 b Fu(Mak)m(e)33 b(this)e(shell)h(act)g(as)g(if)f(it)h (had)f(b)s(een)f(directly)i(in)m(v)m(ok)m(ed)h(b)m(y)f(login.)44 b(When)31 b(the)h(shell)630 2570 y(is)37 b(in)m(teractiv)m(e,)43 @@ -14400,11 +14767,11 @@ b(this)37 b(is)g(equiv)-5 b(alen)m(t)39 b(to)f(starting)h(a)e(login)i 2790 y(`)p Ft(exec)e(bash)h(-l)p Fu(')43 b(or)h(`)p Ft(exec)29 b(bash)g(--login)p Fu(')42 b(will)i(replace)h(the)f(curren)m(t)f(shell) h(with)g(a)630 2899 y(Bash)26 b(login)g(shell.)39 b(See)26 -b(Section)g(6.2)h([Bash)e(Startup)g(Files],)j(page)e(88,)i(for)d(a)h +b(Section)g(6.2)h([Bash)e(Startup)g(Files],)j(page)e(93,)i(for)d(a)h (description)630 3009 y(of)31 b(the)f(sp)s(ecial)h(b)s(eha)m(vior)g(of) f(a)h(login)g(shell.)150 3168 y Ft(-r)384 b Fu(Mak)m(e)54 b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h(Section)g(6.10)h([The) -d(Restricted)j(Shell],)630 3278 y(page)31 b(100\).)150 +d(Restricted)j(Shell],)630 3278 y(page)31 b(105\).)150 3437 y Ft(-s)384 b Fu(If)24 b(this)h(option)h(is)f(presen)m(t,)h(or)f (if)g(no)f(argumen)m(ts)i(remain)e(after)i(option)f(pro)s(cessing,)h (then)630 3547 y(commands)i(are)h(read)g(from)f(the)h(standard)f @@ -14424,7 +14791,7 @@ b(implies)i(the)f Ft(-n)g Fu(option;)h(no)f(commands)g(will)h(b)s(e)f Ft(])630 4523 y Fr(shopt)p 854 4523 V 40 w(option)44 b Fu(is)g(one)h(of)f(the)g(shell)h(options)f(accepted)h(b)m(y)f(the)h Ft(shopt)d Fu(builtin)i(\(see)630 4633 y(Section)32 b(4.3.2)h([The)e -(Shopt)f(Builtin],)i(page)g(66\).)44 b(If)31 b Fr(shopt)p +(Shopt)f(Builtin],)i(page)g(71\).)44 b(If)31 b Fr(shopt)p 2724 4633 V 40 w(option)g Fu(is)g(presen)m(t,)h Ft(-O)f Fu(sets)630 4742 y(the)24 b(v)-5 b(alue)24 b(of)g(that)h(option;)h Ft(+O)e Fu(unsets)f(it.)39 b(If)23 b Fr(shopt)p 2423 @@ -14439,9 +14806,9 @@ f(a)h(format)f(that)630 5071 y(ma)m(y)i(b)s(e)f(reused)f(as)i(input.) b(An)m(y)630 5340 y(argumen)m(ts)31 b(after)g(the)f Ft(--)g Fu(are)h(treated)g(as)g(\014lenames)f(and)g(argumen)m(ts.)p eop end -%%Page: 88 94 -TeXDict begin 88 93 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(88)275 299 y(A)27 b +%%Page: 93 99 +TeXDict begin 93 98 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(93)275 299 y(A)27 b Fl(lo)-5 b(gin)35 b Fu(shell)27 b(is)g(one)h(whose)f(\014rst)f(c)m (haracter)j(of)e(argumen)m(t)h(zero)f(is)h(`)p Ft(-)p Fu(',)g(or)f(one)g(in)m(v)m(ok)m(ed)i(with)e(the)150 @@ -14453,13 +14820,13 @@ g(input)g(and)f(output)h(are)h(b)s(oth)f(connected)h(to)g(ter-)150 774 y(minals)g(\(as)g(determined)f(b)m(y)h Ft(isatty\(3\))p Fu(\),)e(or)i(one)g(started)g(with)f(the)h Ft(-i)f Fu(option.)51 b(See)33 b(Section)i(6.3)150 884 y([In)m(teractiv)m(e)e(Shells],)e -(page)g(89,)g(for)f(more)h(information.)275 1031 y(If)i(argumen)m(ts)h +(page)g(94,)g(for)f(more)h(information.)275 1031 y(If)i(argumen)m(ts)h (remain)g(after)h(option)f(pro)s(cessing,)h(and)e(neither)h(the)g Ft(-c)g Fu(nor)f(the)h Ft(-s)g Fu(option)g(has)150 1140 y(b)s(een)44 b(supplied,)j(the)d(\014rst)g(argumen)m(t)h(is)g(assumed)e (to)j(b)s(e)d(the)i(name)g(of)f(a)h(\014le)g(con)m(taining)h(shell)150 1250 y(commands)30 b(\(see)g(Section)h(3.8)g([Shell)f(Scripts],)g(page) -h(42\).)41 b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h +h(46\).)41 b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h (fashion,)150 1359 y Ft($0)37 b Fu(is)g(set)h(to)h(the)e(name)h(of)f (the)h(\014le,)i(and)c(the)i(p)s(ositional)g(parameters)g(are)g(set)g (to)g(the)g(remaining)150 1469 y(argumen)m(ts.)h(Bash)26 @@ -14473,9 +14840,9 @@ b(If)26 b(no)g(commands)g(are)h(executed,)150 1688 y(the)k(exit)g (exist)h(but)e(cannot)150 2216 y(b)s(e)29 b(read,)i(Bash)f(rep)s(orts)f (an)h(error.)40 b(Tildes)30 b(are)g(expanded)f(in)h(\014lenames)g(as)g (describ)s(ed)f(ab)s(o)m(v)m(e)i(under)150 2326 y(Tilde)f(Expansion)g -(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(24\).)275 +(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(25\).)275 2473 y(In)m(teractiv)m(e)h(shells)f(are)g(describ)s(ed)e(in)h(Section)h -(6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(89.)150 +(6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(94.)150 2684 y Fk(In)m(v)m(ok)m(ed)40 b(as)h(an)f(in)m(teractiv)m(e)f(login)j (shell,)g(or)g(with)e Fh(--login)150 2831 y Fu(When)c(Bash)f(is)h(in)m (v)m(ok)m(ed)h(as)f(an)g(in)m(teractiv)m(e)j(login)d(shell,)i(or)e(as)g @@ -14514,9 +14881,9 @@ b(the)f(line)390 4725 y Ft(if)47 b([)h(-f)f(~/.bashrc)e(];)i(then)g(.)g 5340 y(v)-5 b(ariable)35 b Ft(BASH_ENV)d Fu(in)i(the)h(en)m(vironmen)m (t,)h(expands)e(its)g(v)-5 b(alue)35 b(if)g(it)g(app)s(ears)e(there,)j (and)e(uses)g(the)p eop end -%%Page: 89 95 -TeXDict begin 89 94 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(89)150 299 y(expanded)30 +%%Page: 94 100 +TeXDict begin 94 99 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(94)150 299 y(expanded)30 b(v)-5 b(alue)30 b(as)h(the)g(name)f(of)h(a)f(\014le)h(to)g(read)f(and) g(execute.)42 b(Bash)31 b(b)s(eha)m(v)m(es)g(as)g(if)f(the)g(follo)m (wing)150 408 y(command)g(w)m(ere)h(executed:)390 552 @@ -14566,47 +14933,47 @@ Fu(v)-5 b(ariable)150 3044 y(and)30 b(commands)g(are)g(read)h(and)e (read.)150 3362 y Fk(In)m(v)m(ok)m(ed)40 b(b)m(y)g(remote)h(shell)h (daemon)150 3509 y Fu(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 3618 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 Ft(rshd)p -Fu(,)h(or)g(the)150 3728 y(secure)c(shell)f(daemon)h -Ft(sshd)p Fu(.)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 3837 -y(executes)29 b(commands)e(from)g Ft(~/.bashrc)p Fu(,)e(if)j(that)g -(\014le)f(exists)h(and)f(is)g(readable.)41 b(It)27 b(will)h(not)f(do)h -(this)f(if)150 3947 y(in)m(v)m(ok)m(ed)k(as)f Ft(sh)p -Fu(.)40 b(The)29 b Ft(--norc)f Fu(option)i(ma)m(y)g(b)s(e)f(used)f(to)j -(inhibit)e(this)g(b)s(eha)m(vior,)h(and)f(the)h Ft(--rcfile)150 -4057 y Fu(option)36 b(ma)m(y)g(b)s(e)e(used)h(to)h(force)g(another)f -(\014le)h(to)g(b)s(e)e(read,)j(but)d(neither)i Ft(rshd)e -Fu(nor)h Ft(sshd)f Fu(generally)150 4166 y(in)m(v)m(ok)m(e)e(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 4375 y Fk(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 Fk(s)150 -4522 y Fu(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 Ft(-p)e Fu(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 4741 y(from)41 -b(the)g(en)m(vironmen)m(t,)j(the)d Ft(SHELLOPTS)p Fu(,)h -Ft(BASHOPTS)p Fu(,)g Ft(CDPATH)p Fu(,)g(and)e Ft(GLOBIGNORE)e -Fu(v)-5 b(ariables,)45 b(if)150 4850 y(they)28 b(app)s(ear)f(in)h(the)g -(en)m(vironmen)m(t,)i(are)e(ignored,)h(and)e(the)h(e\013ectiv)m(e)j -(user)c(id)h(is)g(set)g(to)h(the)f(real)h(user)150 4960 -y(id.)62 b(If)38 b(the)f Ft(-p)h Fu(option)g(is)f(supplied)g(at)h(in)m -(v)m(o)s(cation,)k(the)c(startup)f(b)s(eha)m(vior)h(is)g(the)g(same,)i -(but)d(the)150 5070 y(e\013ectiv)m(e)c(user)d(id)g(is)g(not)h(reset.) -150 5324 y Fs(6.3)68 b(In)l(teractiv)l(e)47 b(Shells)p -eop end -%%Page: 90 96 -TeXDict begin 90 95 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(90)150 299 y Fk(6.3.1)63 +(a)150 3618 y(net)m(w)m(ork)29 b(connection,)g(as)f(when)f(executed)i +(b)m(y)e(the)h(historical)h(remote)g(shell)f(daemon,)g(usually)g +Ft(rshd)p Fu(,)150 3728 y(or)e(the)g(secure)g(shell)g(daemon)f +Ft(sshd)p Fu(.)38 b(If)26 b(Bash)g(determines)f(it)i(is)e(b)s(eing)h +(run)e(non-in)m(teractiv)m(ely)29 b(in)c(this)150 3837 +y(fashion,)i(it)g(reads)e(and)h(executes)h(commands)f(from)f +Ft(~/.bashrc)p Fu(,)g(if)h(that)h(\014le)f(exists)h(and)e(is)h +(readable.)150 3947 y(It)g(will)f(not)h(do)g(this)f(if)g(in)m(v)m(ok)m +(ed)i(as)f Ft(sh)p Fu(.)39 b(The)25 b Ft(--norc)e Fu(option)j(ma)m(y)g +(b)s(e)f(used)g(to)h(inhibit)f(this)h(b)s(eha)m(vior,)150 +4057 y(and)g(the)h Ft(--rcfile)e Fu(option)j(ma)m(y)f(b)s(e)f(used)g +(to)i(force)g(another)f(\014le)g(to)g(b)s(e)g(read,)h(but)e(neither)h +Ft(rshd)e Fu(nor)150 4166 y Ft(sshd)k Fu(generally)j(in)m(v)m(ok)m(e)g +(the)f(shell)f(with)g(those)h(options)g(or)f(allo)m(w)i(them)e(to)i(b)s +(e)d(sp)s(eci\014ed.)150 4375 y Fk(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 +Fk(s)150 4522 y Fu(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 +Ft(-p)e Fu(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 +4741 y(from)41 b(the)g(en)m(vironmen)m(t,)j(the)d Ft(SHELLOPTS)p +Fu(,)h Ft(BASHOPTS)p Fu(,)g Ft(CDPATH)p Fu(,)g(and)e +Ft(GLOBIGNORE)e Fu(v)-5 b(ariables,)45 b(if)150 4850 +y(they)28 b(app)s(ear)f(in)h(the)g(en)m(vironmen)m(t,)i(are)e(ignored,) +h(and)e(the)h(e\013ectiv)m(e)j(user)c(id)h(is)g(set)g(to)h(the)f(real)h +(user)150 4960 y(id.)62 b(If)38 b(the)f Ft(-p)h Fu(option)g(is)f +(supplied)g(at)h(in)m(v)m(o)s(cation,)k(the)c(startup)f(b)s(eha)m(vior) +h(is)g(the)g(same,)i(but)d(the)150 5070 y(e\013ectiv)m(e)c(user)d(id)g +(is)g(not)h(reset.)150 5324 y Fs(6.3)68 b(In)l(teractiv)l(e)47 +b(Shells)p eop end +%%Page: 95 101 +TeXDict begin 95 100 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(95)150 299 y Fk(6.3.1)63 b(What)40 b(is)h(an)g(In)m(teractiv)m(e)e(Shell?)150 -446 y Fu(An)g(in)m(teractiv)m(e)k(shell)d(is)g(one)g(started)g(without) -g(non-option)g(argumen)m(ts,)j(unless)c Ft(-s)h Fu(is)f(sp)s -(eci\014ed,)150 555 y(without)30 b(sp)s(ecifying)g(the)g -Ft(-c)f Fu(option,)h(and)g(whose)f(input)g(and)g(error)h(output)f(are)h -(b)s(oth)f(connected)i(to)150 665 y(terminals)g(\(as)g(determined)f(b)m -(y)g Ft(isatty\(3\))p Fu(\),)e(or)j(one)f(started)h(with)f(the)h +446 y Fu(An)f(in)m(teractiv)m(e)j(shell)e(is)f(one)h(started)g(without) +f(non-option)g(argumen)m(ts)h(\(unless)f Ft(-s)g Fu(is)g(sp)s +(eci\014ed\))150 555 y(and)29 b(without)h(sp)s(ecifying)g(the)g +Ft(-c)f Fu(option,)i(whose)e(input)g(and)g(error)h(output)f(are)h(b)s +(oth)f(connected)i(to)150 665 y(terminals)g(\(as)g(determined)f(b)m(y)g +Ft(isatty\(3\))p Fu(\),)e(or)j(one)f(started)h(with)f(the)h Ft(-i)f Fu(option.)275 808 y(An)g(in)m(teractiv)m(e)j(shell)d (generally)i(reads)e(from)g(and)g(writes)g(to)h(a)g(user's)f(terminal.) 275 952 y(The)i Ft(-s)g Fu(in)m(v)m(o)s(cation)j(option)f(ma)m(y)f(b)s @@ -14634,8 +15001,8 @@ b(Shell)k(Beha)m(vior)150 3187 y Fu(When)30 b(the)h(shell)f(is)h (eha)m(vior)f(in)g(sev)m(eral)i(w)m(a)m(ys.)199 3330 y(1.)61 b(Startup)37 b(\014les)g(are)h(read)f(and)g(executed)h(as)f (describ)s(ed)g(in)g(Section)h(6.2)g([Bash)g(Startup)e(Files],)330 -3440 y(page)31 b(88.)199 3579 y(2.)61 b(Job)32 b(Con)m(trol)h(\(see)g -(Chapter)e(7)i([Job)f(Con)m(trol],)i(page)f(107\))h(is)e(enabled)g(b)m +3440 y(page)31 b(93.)199 3579 y(2.)61 b(Job)32 b(Con)m(trol)h(\(see)g +(Chapter)e(7)i([Job)f(Con)m(trol],)i(page)f(113\))h(is)e(enabled)g(b)m (y)g(default.)46 b(When)32 b(job)330 3689 y(con)m(trol)j(is)f(in)f (e\013ect,)k(Bash)d(ignores)g(the)g(k)m(eyb)s(oard-generated)h(job)e (con)m(trol)i(signals)g Ft(SIGTTIN)p Fu(,)330 3798 y @@ -14646,1260 +15013,1377 @@ Fu(b)s(efore)h(reading)h(the)f(\014rst)g(line)h(of)f(a)h(command,)h Fu(b)s(efore)h(reading)g(the)g(second)g(and)f(subsequen)m(t)g(lines)i (of)f(a)g(m)m(ulti-line)h(com-)330 4156 y(mand.)42 b(Bash)31 b(expands)f(and)h(displa)m(ys)g Ft(PS0)f Fu(after)h(it)h(reads)f(a)g -(command)g(but)f(b)s(efore)h(executing)330 4266 y(it.)62 -b(See)38 b(Section)g(6.9)h([Con)m(trolling)g(the)e(Prompt],)j(page)e -(98,)i(for)d(a)h(complete)h(list)f(of)g(prompt)330 4375 +(command)g(but)f(b)s(efore)h(executing)330 4266 y(it.)54 +b(See)35 b(Section)h(6.9)f([Con)m(trolling)i(the)d(Prompt],)i(page)g +(104,)h(for)d(a)h(complete)i(list)e(of)g(prompt)330 4375 y(string)30 b(escap)s(e)h(sequences.)199 4514 y(4.)61 -b(Bash)28 b(executes)h(the)e(v)-5 b(alues)28 b(of)g(the)g(set)g(elemen) -m(ts)h(of)f(the)g Ft(PROMPT_COMMANDS)23 b Fu(arra)m(y)28 -b(v)-5 b(ariable)29 b(as)330 4624 y(commands)e(b)s(efore)f(prin)m(ting) -h(the)g(primary)g(prompt,)g Ft($PS1)f Fu(\(see)i(Section)f(5.2)i([Bash) -e(V)-8 b(ariables],)330 4733 y(page)31 b(73\).)199 4872 +b(Bash)31 b(executes)i(the)e(v)-5 b(alues)32 b(of)g(the)f(set)h(elemen) +m(ts)g(of)g(the)f Ft(PROMPT_COMMAND)d Fu(arra)m(y)k(v)-5 +b(ariable)32 b(as)330 4624 y(commands)27 b(b)s(efore)f(prin)m(ting)h +(the)g(primary)g(prompt,)g Ft($PS1)f Fu(\(see)i(Section)f(5.2)i([Bash)e +(V)-8 b(ariables],)330 4733 y(page)31 b(78\).)199 4872 y(5.)61 b(Readline)27 b(\(see)g(Chapter)e(8)h([Command)g(Line)g -(Editing],)h(page)g(111\))g(is)f(used)g(to)g(read)g(commands)330 +(Editing],)h(page)g(117\))g(is)f(used)g(to)g(read)g(commands)330 4982 y(from)k(the)g(user's)g(terminal.)199 5121 y(6.)61 b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37 b(of)f(the)g Ft(ignoreeof)e Fu(option)j(to)g Ft(set)29 b(-o)36 b Fu(instead)h(of)f (exiting)i(imme-)330 5230 y(diately)f(when)e(it)i(receiv)m(es)h(an)e Ft(EOF)f Fu(on)h(its)g(standard)f(input)g(when)h(reading)g(a)g(command) g(\(see)330 5340 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g -(62\).)p eop end -%%Page: 91 97 -TeXDict begin 91 96 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(91)199 299 y(7.)61 +(67\).)p eop end +%%Page: 96 102 +TeXDict begin 96 101 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(96)199 299 y(7.)61 b(Command)43 b(history)h(\(see)h(Section)g(9.1)g([Bash)f(History)h(F)-8 -b(acilities],)51 b(page)45 b(146\))h(and)d(history)330 +b(acilities],)51 b(page)45 b(152\))h(and)d(history)330 408 y(expansion)h(\(see)i(Section)f(9.3)h([History)g(In)m(teraction],)k -(page)45 b(148\))h(are)f(enabled)g(b)m(y)f(default.)330 +(page)45 b(154\))h(are)f(enabled)g(b)m(y)f(default.)330 518 y(Bash)28 b(will)g(sa)m(v)m(e)h(the)f(command)f(history)h(to)g(the) g(\014le)g(named)f(b)m(y)h Ft($HISTFILE)d Fu(when)h(a)i(shell)g(with) 330 628 y(history)i(enabled)h(exits.)199 762 y(8.)61 b(Alias)31 b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e -(94\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 896 +(100\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 896 y(9.)61 b(In)24 b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g (ignores)f Ft(SIGTERM)f Fu(\(see)i(Section)g(3.7.6)h([Signals],)g(page) -f(42\).)154 1030 y(10.)61 b(In)29 b(the)g(absence)h(of)g(an)m(y)g +f(45\).)154 1030 y(10.)61 b(In)29 b(the)g(absence)h(of)g(an)m(y)g (traps,)f Ft(SIGINT)f Fu(is)h(caugh)m(t)i(and)e(handled)f(\(see)j -(Section)f(3.7.6)h([Signals],)330 1140 y(page)g(42\).)42 +(Section)f(3.7.6)h([Signals],)330 1140 y(page)g(45\).)42 b Ft(SIGINT)29 b Fu(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154 1274 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i Ft(SIGHUP)d Fu(to)j(all)g(jobs)f(on)g(exit)h(if)g(the)f Ft(huponexit)e Fu(shell)330 1383 y(option)31 b(has)f(b)s(een)g(enabled) -g(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(42\).)154 +g(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(45\).)154 1517 y(12.)61 b(The)29 b Ft(-n)g Fu(in)m(v)m(o)s(cation)j(option)e(is)g (ignored,)g(and)f(`)p Ft(set)h(-n)p Fu(')f(has)h(no)f(e\013ect)j(\(see) -e(Section)h(4.3.1)g([The)330 1627 y(Set)g(Builtin],)g(page)g(62\).)154 +e(Section)h(4.3.1)g([The)330 1627 y(Set)g(Builtin],)g(page)g(67\).)154 1761 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s (dically)-8 b(,)34 b(dep)s(ending)c(on)i(the)g(v)-5 b(alues)32 b(of)g(the)h Ft(MAIL)p Fu(,)e Ft(MAILPATH)p Fu(,)330 1871 y(and)f Ft(MAILCHECK)e Fu(shell)i(v)-5 b(ariables)31 b(\(see)h(Section)f(5.2)g([Bash)g(V)-8 b(ariables],)32 -b(page)f(73\).)154 2005 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i +b(page)f(78\).)154 2005 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i (references)f(to)h(un)m(b)s(ound)c(shell)j(v)-5 b(ariables)34 b(after)g(`)p Ft(set)29 b(-u)p Fu(')k(has)g(b)s(een)330 2114 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g -(Section)h(4.3.1)g([The)e(Set)h(Builtin],)g(page)g(62\).)154 +(Section)h(4.3.1)g([The)e(Set)h(Builtin],)g(page)g(67\).)154 2248 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f (errors)g(caused)g(b)m(y)h Fr(v)-5 b(ar)54 b Fu(b)s(eing)48 b(unset)g(or)h(n)m(ull)f(in)330 2358 y Ft(${)p Fj(var)p Ft(:?)p Fj(word)p Ft(})27 b Fu(expansions)j(\(see)h(Section)h(3.5.3)g -([Shell)e(P)m(arameter)i(Expansion],)e(page)h(25\).)154 +([Shell)e(P)m(arameter)i(Expansion],)e(page)h(26\).)154 2492 y(16.)61 b(Redirection)31 b(errors)f(encoun)m(tered)h(b)m(y)f (shell)h(builtins)f(will)g(not)h(cause)g(the)f(shell)h(to)g(exit.)154 2626 y(17.)61 b(When)26 b(running)f(in)i Fm(posix)e Fu(mo)s(de,)j(a)f (sp)s(ecial)g(builtin)f(returning)g(an)g(error)h(status)g(will)g(not)f (cause)330 2736 y(the)31 b(shell)f(to)h(exit)h(\(see)f(Section)g(6.11)h -([Bash)f(POSIX)e(Mo)s(de],)i(page)g(101\).)154 2870 y(18.)61 +([Bash)f(POSIX)e(Mo)s(de],)i(page)g(106\).)154 2870 y(18.)61 b(A)34 b(failed)g Ft(exec)f Fu(will)h(not)g(cause)g(the)g(shell)g(to)g (exit)h(\(see)f(Section)h(4.1)g([Bourne)f(Shell)f(Builtins],)330 -2980 y(page)e(44\).)154 3114 y(19.)61 b(P)m(arser)31 +2980 y(page)e(48\).)154 3114 y(19.)61 b(P)m(arser)31 b(syn)m(tax)f(errors)g(will)h(not)g(cause)g(the)f(shell)h(to)g(exit.) -154 3248 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g -(directory)g(argumen)m(ts)f(to)i(the)e Ft(cd)g Fu(builtin)g(is)h -(enabled)f(b)m(y)h(default)330 3357 y(\(see)35 b(the)g(description)f -(of)h(the)f Ft(cdspell)f Fu(option)h(to)i(the)e Ft(shopt)f -Fu(builtin)h(in)g(Section)h(4.3.2)h([The)330 3467 y(Shopt)30 -b(Builtin],)h(page)g(66\).)154 3601 y(21.)61 b(The)42 -b(shell)h(will)g(c)m(hec)m(k)h(the)f(v)-5 b(alue)43 b(of)f(the)h -Ft(TMOUT)e Fu(v)-5 b(ariable)44 b(and)e(exit)h(if)g(a)g(command)f(is)h -(not)330 3711 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s -(er)g(of)i(seconds)f(after)g(prin)m(ting)g Ft($PS1)f -Fu(\(see)i(Section)g(5.2)h([Bash)330 3820 y(V)-8 b(ariables],)32 -b(page)f(73\).)150 4060 y Fs(6.4)68 b(Bash)45 b(Conditional)h -(Expressions)150 4220 y Fu(Conditional)26 b(expressions)g(are)g(used)f -(b)m(y)g(the)h Ft([[)f Fu(comp)s(ound)g(command)g(and)g(the)h -Ft(test)f Fu(and)g Ft([)g Fu(builtin)150 4329 y(commands.)50 -b(The)33 b Ft(test)g Fu(and)f Ft([)i Fu(commands)f(determine)h(their)f -(b)s(eha)m(vior)h(based)f(on)h(the)f(n)m(um)m(b)s(er)g(of)150 -4439 y(argumen)m(ts;)28 b(see)f(the)f(descriptions)g(of)g(those)g -(commands)g(for)g(an)m(y)g(other)h(command-sp)s(eci\014c)e(actions.)275 -4573 y(Expressions)d(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8 +154 3248 y(20.)61 b(If)28 b(the)g Ft(cdspell)f Fu(shell)h(option)h(is)g +(enabled,)g(the)f(shell)h(will)f(attempt)i(simple)e(sp)s(elling)h +(correction)330 3357 y(for)f(directory)h(argumen)m(ts)g(to)g(the)g +Ft(cd)e Fu(builtin)h(\(see)i(the)e(description)h(of)f(the)h +Ft(cdspell)d Fu(option)j(to)330 3467 y(the)j Ft(shopt)e +Fu(builtin)h(in)h(Section)g(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g +(71\).)46 b(The)31 b Ft(cdspell)e Fu(option)330 3576 +y(is)h(only)h(e\013ectiv)m(e)i(in)d(in)m(teractiv)m(e)j(shells.)154 +3711 y(21.)61 b(The)42 b(shell)h(will)g(c)m(hec)m(k)h(the)f(v)-5 +b(alue)43 b(of)f(the)h Ft(TMOUT)e Fu(v)-5 b(ariable)44 +b(and)e(exit)h(if)g(a)g(command)f(is)h(not)330 3820 y(read)30 +b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s(er)g(of)i(seconds)f +(after)g(prin)m(ting)g Ft($PS1)f Fu(\(see)i(Section)g(5.2)h([Bash)330 +3930 y(V)-8 b(ariables],)32 b(page)f(78\).)150 4170 y +Fs(6.4)68 b(Bash)45 b(Conditional)h(Expressions)150 4329 +y Fu(Conditional)25 b(expressions)f(are)g(used)g(b)m(y)g(the)g +Ft([[)g Fu(comp)s(ound)e(command)i(\(see)h(Section)g(3.2.5.2)i([Condi-) +150 4439 y(tional)h(Constructs],)g(page)f(12\))h(and)e(the)h +Ft(test)f Fu(and)g Ft([)h Fu(builtin)f(commands)h(\(see)g(Section)h +(4.1)g([Bourne)150 4548 y(Shell)37 b(Builtins],)j(page)e(48\).)63 +b(The)36 b Ft(test)g Fu(and)h Ft([)g Fu(commands)g(determine)g(their)h +(b)s(eha)m(vior)f(based)g(on)150 4658 y(the)29 b(n)m(um)m(b)s(er)f(of)h +(argumen)m(ts;)h(see)f(the)h(descriptions)e(of)i(those)f(commands)g +(for)f(an)m(y)i(other)f(command-)150 4768 y(sp)s(eci\014c)h(actions.) +275 4902 y(Expressions)22 b(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8 b(,)24 b(and)f(are)g(formed)g(from)g(the)g(follo)m(wing)h(primaries.)38 -b(Unary)150 4682 y(expressions)c(are)g(often)g(used)g(to)g(examine)h +b(Unary)150 5011 y(expressions)c(are)g(often)g(used)g(to)g(examine)h (the)f(status)g(of)h(a)f(\014le.)52 b(There)33 b(are)h(string)g(op)s -(erators)h(and)150 4792 y(n)m(umeric)c(comparison)g(op)s(erators)h(as)f +(erators)h(and)150 5121 y(n)m(umeric)c(comparison)g(op)s(erators)h(as)f (w)m(ell.)44 b(Bash)31 b(handles)g(sev)m(eral)h(\014lenames)g(sp)s -(ecially)g(when)e(they)150 4902 y(are)35 b(used)e(in)i(expressions.)52 +(ecially)g(when)e(they)150 5230 y(are)35 b(used)e(in)i(expressions.)52 b(If)34 b(the)h(op)s(erating)f(system)h(on)f(whic)m(h)g(Bash)h(is)f -(running)f(pro)m(vides)h(these)150 5011 y(sp)s(ecial)22 +(running)f(pro)m(vides)h(these)150 5340 y(sp)s(ecial)22 b(\014les,)i(Bash)e(will)g(use)f(them;)k(otherwise)d(it)g(will)g(em)m -(ulate)h(them)f(in)m(ternally)h(with)e(this)h(b)s(eha)m(vior:)150 -5121 y(If)27 b(the)g Fr(\014le)33 b Fu(argumen)m(t)27 -b(to)h(one)g(of)f(the)h(primaries)f(is)g(of)h(the)f(form)g -Ft(/dev/fd/)p Fj(N)p Fu(,)e(then)i(\014le)h(descriptor)f -Fr(N)150 5230 y Fu(is)g(c)m(hec)m(k)m(ed.)42 b(If)26 -b(the)h Fr(\014le)32 b Fu(argumen)m(t)c(to)f(one)h(of)f(the)g -(primaries)f(is)h(one)h(of)f Ft(/dev/stdin)p Fu(,)e Ft(/dev/stdout)p -Fu(,)150 5340 y(or)30 b Ft(/dev/stderr)p Fu(,)e(\014le)i(descriptor)h -(0,)g(1,)g(or)f(2,)h(resp)s(ectiv)m(ely)-8 b(,)32 b(is)f(c)m(hec)m(k)m -(ed.)p eop end -%%Page: 92 98 -TeXDict begin 92 97 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(92)275 299 y(When)37 -b(used)g(with)g Ft([[)p Fu(,)i(the)f(`)p Ft(<)p Fu(')g(and)f(`)p -Ft(>)p Fu(')h(op)s(erators)g(sort)g(lexicographically)i(using)d(the)h -(curren)m(t)150 408 y(lo)s(cale.)k(The)30 b Ft(test)f -Fu(command)i(uses)f(ASCI)s(I)e(ordering.)275 542 y(Unless)44 -b(otherwise)h(sp)s(eci\014ed,)j(primaries)c(that)h(op)s(erate)g(on)g -(\014les)f(follo)m(w)i(sym)m(b)s(olic)f(links)g(and)150 -651 y(op)s(erate)31 b(on)f(the)h(target)h(of)e(the)h(link,)f(rather)h -(than)f(the)g(link)h(itself.)150 808 y Ft(-a)f Fj(file)162 -b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists.)150 -965 y Ft(-b)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g -(\014le.)150 1122 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30 -b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s -(ecial)f(\014le.)150 1279 y Ft(-d)f Fj(file)162 b Fu(T)-8 -b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(directory) --8 b(.)150 1436 y Ft(-e)30 b Fj(file)162 b Fu(T)-8 b(rue)30 -b(if)g Fr(\014le)36 b Fu(exists.)150 1592 y Ft(-f)30 +(ulate)h(them)f(in)m(ternally)h(with)e(this)h(b)s(eha)m(vior:)p +eop end +%%Page: 97 103 +TeXDict begin 97 102 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(97)150 299 y(If)27 +b(the)g Fr(\014le)33 b Fu(argumen)m(t)27 b(to)h(one)g(of)f(the)h +(primaries)f(is)g(of)h(the)f(form)g Ft(/dev/fd/)p Fj(N)p +Fu(,)e(then)i(\014le)h(descriptor)f Fr(N)150 408 y Fu(is)g(c)m(hec)m(k) +m(ed.)42 b(If)26 b(the)h Fr(\014le)32 b Fu(argumen)m(t)c(to)f(one)h(of) +f(the)g(primaries)f(is)h(one)h(of)f Ft(/dev/stdin)p Fu(,)e +Ft(/dev/stdout)p Fu(,)150 518 y(or)30 b Ft(/dev/stderr)p +Fu(,)e(\014le)i(descriptor)h(0,)g(1,)g(or)f(2,)h(resp)s(ectiv)m(ely)-8 +b(,)32 b(is)f(c)m(hec)m(k)m(ed.)275 655 y(When)37 b(used)g(with)g +Ft([[)p Fu(,)i(the)f(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p +Fu(')h(op)s(erators)g(sort)g(lexicographically)i(using)d(the)h(curren)m +(t)150 765 y(lo)s(cale.)k(The)30 b Ft(test)f Fu(command)i(uses)f(ASCI)s +(I)e(ordering.)275 902 y(Unless)44 b(otherwise)h(sp)s(eci\014ed,)j +(primaries)c(that)h(op)s(erate)g(on)g(\014les)f(follo)m(w)i(sym)m(b)s +(olic)f(links)g(and)150 1011 y(op)s(erate)31 b(on)f(the)h(target)h(of)e +(the)h(link,)f(rather)h(than)f(the)g(link)h(itself.)150 +1175 y Ft(-a)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists.)150 1337 y Ft(-b)30 b Fj(file)162 +b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 +b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g(\014le.)150 +1499 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s(ecial) +f(\014le.)150 1661 y Ft(-d)f Fj(file)162 b Fu(T)-8 b(rue)30 +b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(directory)-8 +b(.)150 1823 y Ft(-e)30 b Fj(file)162 b Fu(T)-8 b(rue)30 +b(if)g Fr(\014le)36 b Fu(exists.)150 1985 y Ft(-f)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(regular)f(\014le.)150 -1749 y Ft(-g)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +2147 y Ft(-g)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(its)g(set-group-id)h(bit)g(is)f -(set.)150 1906 y Ft(-h)g Fj(file)162 b Fu(T)-8 b(rue)30 +(set.)150 2309 y Ft(-h)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g -(link.)150 2063 y Ft(-k)f Fj(file)162 b Fu(T)-8 b(rue)30 +(link.)150 2471 y Ft(-k)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(its)g Ft(")p -Fu(stic)m(ky)p Ft(")h Fu(bit)g(is)f(set.)150 2220 y Ft(-p)g +Fu(stic)m(ky)p Ft(")h Fu(bit)g(is)f(set.)150 2633 y Ft(-p)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(named)f(pip)s(e)f(\(FIF)m(O\).)150 -2377 y Ft(-r)h Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +2795 y Ft(-r)h Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(readable.)150 -2534 y Ft(-s)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +2957 y Ft(-s)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(has)g(a)g(size)i(greater)f(than)f -(zero.)150 2690 y Ft(-t)g Fj(fd)258 b Fu(T)-8 b(rue)30 +(zero.)150 3119 y Ft(-t)g Fj(fd)258 b Fu(T)-8 b(rue)30 b(if)g(\014le)h(descriptor)f Fr(fd)j Fu(is)e(op)s(en)e(and)h(refers)g -(to)h(a)g(terminal.)150 2847 y Ft(-u)f Fj(file)162 b +(to)h(a)g(terminal.)150 3281 y Ft(-u)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(its)g -(set-user-id)h(bit)f(is)h(set.)150 3004 y Ft(-w)f Fj(file)162 +(set-user-id)h(bit)f(is)h(set.)150 3443 y Ft(-w)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 -b(and)f(is)g(writable.)150 3161 y Ft(-x)g Fj(file)162 +b(and)f(is)g(writable.)150 3605 y Ft(-x)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 -b(and)f(is)g(executable.)150 3318 y Ft(-G)g Fj(file)162 +b(and)f(is)g(executable.)150 3767 y Ft(-G)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f(e\013ectiv)m(e)j(group)d(id.)150 -3475 y Ft(-L)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +3929 y Ft(-L)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 -3632 y Ft(-N)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +4091 y Ft(-N)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(has)g(b)s(een)f(mo)s(di\014ed)h -(since)g(it)h(w)m(as)g(last)g(read.)150 3789 y Ft(-O)f +(since)g(it)h(w)m(as)g(last)g(read.)150 4253 y Ft(-O)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f(e\013ectiv)m(e)j -(user)d(id.)150 3945 y Ft(-S)g Fj(file)162 b Fu(T)-8 +(user)d(id.)150 4416 y Ft(-S)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(so)s(c)m -(k)m(et.)150 4102 y Fj(file1)e Ft(-ef)g Fj(file2)630 -4212 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(and)30 +(k)m(et.)150 4578 y Fj(file1)e Ft(-ef)g Fj(file2)630 +4687 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(and)30 b Fr(\014le2)38 b Fu(refer)30 b(to)i(the)e(same)h(device)g(and)f(ino)s -(de)g(n)m(um)m(b)s(ers.)150 4369 y Fj(file1)f Ft(-nt)g -Fj(file2)630 4478 y Fu(T)-8 b(rue)23 b(if)h Fr(\014le1)32 +(de)g(n)m(um)m(b)s(ers.)150 4849 y Fj(file1)f Ft(-nt)g +Fj(file2)630 4959 y Fu(T)-8 b(rue)23 b(if)h Fr(\014le1)32 b Fu(is)24 b(new)m(er)g(\(according)h(to)g(mo)s(di\014cation)f(date\))h (than)f Fr(\014le2)p Fu(,)i(or)e(if)g Fr(\014le1)31 b -Fu(exists)630 4588 y(and)f Fr(\014le2)38 b Fu(do)s(es)30 -b(not.)150 4745 y Fj(file1)f Ft(-ot)g Fj(file2)630 4854 +Fu(exists)630 5068 y(and)f Fr(\014le2)38 b Fu(do)s(es)30 +b(not.)150 5230 y Fj(file1)f Ft(-ot)g Fj(file2)630 5340 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(is)31 b(older)f(than)g Fr(\014le2)p Fu(,)i(or)e(if)g Fr(\014le2)38 b Fu(exists)31 -b(and)f Fr(\014le1)38 b Fu(do)s(es)30 b(not.)150 5011 -y Ft(-o)g Fj(optname)630 5121 y Fu(T)-8 b(rue)41 b(if)g(the)g(shell)h -(option)f Fr(optname)47 b Fu(is)41 b(enabled.)73 b(The)41 -b(list)h(of)f(options)h(app)s(ears)e(in)630 5230 y(the)33 -b(description)h(of)f(the)g Ft(-o)g Fu(option)g(to)h(the)g -Ft(set)e Fu(builtin)h(\(see)h(Section)g(4.3.1)h([The)e(Set)630 -5340 y(Builtin],)e(page)g(62\).)p eop end -%%Page: 93 99 -TeXDict begin 93 98 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(93)150 299 y Ft(-v)30 -b Fj(varname)630 408 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 -b(ariable)32 b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(\(has)g(b)s(een)e -(assigned)i(a)g(v)-5 b(alue\).)150 565 y Ft(-R)30 b Fj(varname)630 -674 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 b(ariable)32 -b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(and)f(is)h(a)f(name)h -(reference.)150 830 y Ft(-z)f Fj(string)66 b Fu(T)-8 -b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38 b Fu(is)31 -b(zero.)150 987 y Ft(-n)f Fj(string)150 1096 y(string)192 -b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38 -b Fu(is)31 b(non-zero.)150 1252 y Fj(string1)d Ft(==)i -Fj(string2)150 1362 y(string1)e Ft(=)i Fj(string2)630 -1472 y Fu(T)-8 b(rue)43 b(if)h(the)g(strings)g(are)g(equal.)82 -b(When)44 b(used)f(with)g(the)h Ft([[)g Fu(command,)j(this)d(p)s(er-) -630 1581 y(forms)d(pattern)g(matc)m(hing)i(as)f(describ)s(ed)e(ab)s(o)m -(v)m(e)j(\(see)f(Section)g(3.2.5.2)i([Conditional)630 -1691 y(Constructs],)30 b(page)h(11\).)630 1824 y(`)p -Ft(=)p Fu(')g(should)e(b)s(e)h(used)f(with)h(the)h Ft(test)e -Fu(command)h(for)g Fm(posix)g Fu(conformance.)150 1980 -y Fj(string1)e Ft(!=)i Fj(string2)630 2089 y Fu(T)-8 +b(and)f Fr(\014le1)38 b Fu(do)s(es)30 b(not.)p eop end +%%Page: 98 104 +TeXDict begin 98 103 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(98)150 299 y Ft(-o)30 +b Fj(optname)630 408 y Fu(T)-8 b(rue)41 b(if)g(the)g(shell)h(option)f +Fr(optname)47 b Fu(is)41 b(enabled.)73 b(The)41 b(list)h(of)f(options)h +(app)s(ears)e(in)630 518 y(the)33 b(description)h(of)f(the)g +Ft(-o)g Fu(option)g(to)h(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)g +(4.3.1)h([The)e(Set)630 628 y(Builtin],)e(page)g(67\).)150 +783 y Ft(-v)f Fj(varname)630 892 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell) +f(v)-5 b(ariable)32 b Fr(v)-5 b(arname)35 b Fu(is)30 +b(set)h(\(has)g(b)s(een)e(assigned)i(a)g(v)-5 b(alue\).)150 +1047 y Ft(-R)30 b Fj(varname)630 1157 y Fu(T)-8 b(rue)30 +b(if)g(the)h(shell)f(v)-5 b(ariable)32 b Fr(v)-5 b(arname)35 +b Fu(is)30 b(set)h(and)f(is)h(a)f(name)h(reference.)150 +1312 y Ft(-z)f Fj(string)66 b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g +(of)f Fr(string)38 b Fu(is)31 b(zero.)150 1467 y Ft(-n)f +Fj(string)150 1576 y(string)192 b Fu(T)-8 b(rue)30 b(if)g(the)h(length) +g(of)f Fr(string)38 b Fu(is)31 b(non-zero.)150 1731 y +Fj(string1)d Ft(==)i Fj(string2)150 1841 y(string1)e +Ft(=)i Fj(string2)630 1951 y Fu(T)-8 b(rue)43 b(if)h(the)g(strings)g +(are)g(equal.)82 b(When)44 b(used)f(with)g(the)h Ft([[)g +Fu(command,)j(this)d(p)s(er-)630 2060 y(forms)d(pattern)g(matc)m(hing)i +(as)f(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)g(3.2.5.2)i +([Conditional)630 2170 y(Constructs],)30 b(page)h(12\).)630 +2302 y(`)p Ft(=)p Fu(')g(should)e(b)s(e)h(used)f(with)h(the)h +Ft(test)e Fu(command)h(for)g Fm(posix)g Fu(conformance.)150 +2457 y Fj(string1)e Ft(!=)i Fj(string2)630 2567 y Fu(T)-8 b(rue)30 b(if)g(the)h(strings)f(are)h(not)f(equal.)150 -2246 y Fj(string1)e Ft(<)i Fj(string2)630 2355 y Fu(T)-8 +2722 y Fj(string1)e Ft(<)i Fj(string2)630 2831 y Fu(T)-8 b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(b)s(efore)f -Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2511 -y Fj(string1)28 b Ft(>)i Fj(string2)630 2621 y Fu(T)-8 +Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2986 +y Fj(string1)28 b Ft(>)i Fj(string2)630 3096 y Fu(T)-8 b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(after)g -Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2777 -y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 2887 y Ft(OP)j Fu(is)h(one)g(of)h(`) +Fr(string2)38 b Fu(lexicographically)-8 b(.)150 3251 +y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 3361 y Ft(OP)j Fu(is)h(one)g(of)h(`) p Ft(-eq)p Fu(',)f(`)p Ft(-ne)p Fu(',)h(`)p Ft(-lt)p Fu(',)g(`)p Ft(-le)p Fu(',)f(`)p Ft(-gt)p Fu(',)h(or)f(`)p Ft(-ge)p Fu('.)51 b(These)34 b(arithmetic)h(binary)630 -2996 y(op)s(erators)h(return)e(true)i(if)f Fr(arg1)44 +3470 y(op)s(erators)h(return)e(true)i(if)f Fr(arg1)44 b Fu(is)36 b(equal)g(to,)i(not)e(equal)g(to,)i(less)e(than,)h(less)f -(than)f(or)630 3106 y(equal)29 b(to,)g(greater)h(than,)e(or)g(greater)i +(than)f(or)630 3580 y(equal)29 b(to,)g(greater)h(than,)e(or)g(greater)i (than)d(or)i(equal)f(to)h Fr(arg2)p Fu(,)h(resp)s(ectiv)m(ely)-8 -b(.)42 b Fr(Arg1)36 b Fu(and)630 3215 y Fr(arg2)41 b +b(.)42 b Fr(Arg1)36 b Fu(and)630 3689 y Fr(arg2)41 b Fu(ma)m(y)34 b(b)s(e)f(p)s(ositiv)m(e)h(or)f(negativ)m(e)j(in)m (tegers.)50 b(When)33 b(used)g(with)g(the)g Ft([[)g Fu(command,)630 -3325 y Fr(Arg1)41 b Fu(and)33 b Fr(Arg2)41 b Fu(are)33 +3799 y Fr(Arg1)41 b Fu(and)33 b Fr(Arg2)41 b Fu(are)33 b(ev)-5 b(aluated)35 b(as)e(arithmetic)i(expressions)d(\(see)j(Section) -f(6.5)g([Shell)630 3435 y(Arithmetic],)e(page)f(93\).)150 -3672 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 3832 y Fu(The)26 +f(6.5)g([Shell)630 3908 y(Arithmetic],)e(page)f(98\).)150 +4145 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 4304 y Fu(The)26 b(shell)h(allo)m(ws)h(arithmetic)f(expressions)g(to)g(b)s(e)f(ev)-5 b(aluated,)29 b(as)d(one)h(of)g(the)g(shell)f(expansions)h(or)f(b)m(y) -150 3941 y(using)h(the)g Ft(\(\()g Fu(comp)s(ound)e(command,)j(the)g +150 4414 y(using)h(the)g Ft(\(\()g Fu(comp)s(ound)e(command,)j(the)g Ft(let)e Fu(builtin,)i(or)f(the)g Ft(-i)g Fu(option)h(to)f(the)h -Ft(declare)d Fu(builtin.)275 4074 y(Ev)-5 b(aluation)27 +Ft(declare)d Fu(builtin.)275 4546 y(Ev)-5 b(aluation)27 b(is)g(done)f(in)g(\014xed-width)g(in)m(tegers)i(with)e(no)h(c)m(hec)m (k)h(for)e(o)m(v)m(er\015o)m(w,)j(though)d(division)h(b)m(y)150 -4184 y(0)g(is)g(trapp)s(ed)f(and)h(\015agged)g(as)h(an)f(error.)39 +4656 y(0)g(is)g(trapp)s(ed)f(and)h(\015agged)g(as)h(an)f(error.)39 b(The)26 b(op)s(erators)h(and)g(their)g(precedence,)h(asso)s(ciativit)m -(y)-8 b(,)32 b(and)150 4293 y(v)-5 b(alues)35 b(are)h(the)f(same)g(as)h +(y)-8 b(,)32 b(and)150 4765 y(v)-5 b(alues)35 b(are)h(the)f(same)g(as)h (in)e(the)h(C)g(language.)56 b(The)35 b(follo)m(wing)h(list)g(of)f(op)s -(erators)g(is)g(group)s(ed)f(in)m(to)150 4403 y(lev)m(els)27 +(erators)g(is)g(group)s(ed)f(in)m(to)150 4875 y(lev)m(els)27 b(of)f(equal-precedence)i(op)s(erators.)39 b(The)25 b(lev)m(els)j(are)e (listed)h(in)e(order)h(of)g(decreasing)g(precedence.)150 -4559 y Fj(id)p Ft(++)j Fj(id)p Ft(--)67 b Fu(v)-5 b(ariable)31 +5030 y Fj(id)p Ft(++)j Fj(id)p Ft(--)67 b Fu(v)-5 b(ariable)31 b(p)s(ost-incremen)m(t)g(and)f(p)s(ost-decremen)m(t)150 -4715 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31 -b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 4871 -y Ft(-)g(+)354 b Fu(unary)29 b(min)m(us)h(and)g(plus)150 -5028 y Ft(!)g(~)354 b Fu(logical)33 b(and)d(bit)m(wise)h(negation)150 -5184 y Ft(**)384 b Fu(exp)s(onen)m(tiation)150 5340 y -Ft(*)30 b(/)g(\045)276 b Fu(m)m(ultiplication,)33 b(division,)d -(remainder)p eop end -%%Page: 94 100 -TeXDict begin 94 99 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(94)150 299 y Ft(+)30 -b(-)354 b Fu(addition,)31 b(subtraction)150 460 y Ft(<<)f(>>)258 -b Fu(left)31 b(and)f(righ)m(t)h(bit)m(wise)g(shifts)150 -620 y Ft(<=)f(>=)g(<)g(>)102 b Fu(comparison)150 781 -y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32 b(and)e(inequalit)m(y)150 -942 y Ft(&)432 b Fu(bit)m(wise)31 b(AND)150 1103 y Ft(^)432 -b Fu(bit)m(wise)31 b(exclusiv)m(e)h(OR)150 1263 y Ft(|)432 -b Fu(bit)m(wise)31 b(OR)150 1424 y Ft(&&)384 b Fu(logical)33 -b(AND)150 1585 y Ft(||)384 b Fu(logical)33 b(OR)150 1746 -y Ft(expr)c(?)h(expr)f(:)h(expr)630 1855 y Fu(conditional)i(op)s -(erator)150 2016 y Ft(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g -(^=)f(|=)630 2126 y Fu(assignmen)m(t)150 2287 y Ft(expr1)g(,)h(expr2) -630 2396 y Fu(comma)275 2558 y(Shell)38 b(v)-5 b(ariables)39 +5185 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31 +b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 5340 +y Ft(-)g(+)354 b Fu(unary)29 b(min)m(us)h(and)g(plus)p +eop end +%%Page: 99 105 +TeXDict begin 99 104 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(99)150 299 y Ft(!)30 +b(~)354 b Fu(logical)33 b(and)d(bit)m(wise)h(negation)150 +482 y Ft(**)384 b Fu(exp)s(onen)m(tiation)150 664 y Ft(*)30 +b(/)g(\045)276 b Fu(m)m(ultiplication,)33 b(division,)d(remainder)150 +847 y Ft(+)g(-)354 b Fu(addition,)31 b(subtraction)150 +1030 y Ft(<<)f(>>)258 b Fu(left)31 b(and)f(righ)m(t)h(bit)m(wise)g +(shifts)150 1213 y Ft(<=)f(>=)g(<)g(>)102 b Fu(comparison)150 +1395 y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32 b(and)e(inequalit)m(y)150 +1578 y Ft(&)432 b Fu(bit)m(wise)31 b(AND)150 1761 y Ft(^)432 +b Fu(bit)m(wise)31 b(exclusiv)m(e)h(OR)150 1944 y Ft(|)432 +b Fu(bit)m(wise)31 b(OR)150 2126 y Ft(&&)384 b Fu(logical)33 +b(AND)150 2309 y Ft(||)384 b Fu(logical)33 b(OR)150 2492 +y Ft(expr)c(?)h(expr)f(:)h(expr)630 2601 y Fu(conditional)i(op)s +(erator)150 2784 y Ft(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g +(^=)f(|=)630 2894 y Fu(assignmen)m(t)150 3076 y Ft(expr1)g(,)h(expr2) +630 3186 y Fu(comma)275 3380 y(Shell)38 b(v)-5 b(ariables)39 b(are)g(allo)m(w)m(ed)i(as)e(op)s(erands;)i(parameter)e(expansion)g(is) -f(p)s(erformed)g(b)s(efore)g(the)150 2667 y(expression)g(is)g(ev)-5 +f(p)s(erformed)g(b)s(efore)g(the)150 3490 y(expression)g(is)g(ev)-5 b(aluated.)66 b(Within)38 b(an)h(expression,)h(shell)e(v)-5 b(ariables)39 b(ma)m(y)g(also)g(b)s(e)f(referenced)g(b)m(y)150 -2777 y(name)31 b(without)f(using)g(the)h(parameter)g(expansion)f(syn)m +3600 y(name)31 b(without)f(using)g(the)h(parameter)g(expansion)f(syn)m (tax.)42 b(A)31 b(shell)f(v)-5 b(ariable)32 b(that)f(is)f(n)m(ull)h(or) -f(unset)150 2886 y(ev)-5 b(aluates)41 b(to)f(0)g(when)e(referenced)h(b) +f(unset)150 3709 y(ev)-5 b(aluates)41 b(to)f(0)g(when)e(referenced)h(b) m(y)g(name)h(without)f(using)g(the)g(parameter)h(expansion)f(syn)m -(tax.)150 2996 y(The)c(v)-5 b(alue)37 b(of)f(a)h(v)-5 +(tax.)150 3819 y(The)c(v)-5 b(alue)37 b(of)f(a)h(v)-5 b(ariable)36 b(is)g(ev)-5 b(aluated)38 b(as)e(an)g(arithmetic)h -(expression)f(when)f(it)h(is)g(referenced,)i(or)150 3106 -y(when)31 b(a)i(v)-5 b(ariable)33 b(whic)m(h)f(has)g(b)s(een)f(giv)m -(en)j(the)e Fr(in)m(teger)40 b Fu(attribute)33 b(using)f(`)p -Ft(declare)d(-i)p Fu(')i(is)i(assigned)150 3215 y(a)j(v)-5 -b(alue.)58 b(A)36 b(n)m(ull)f(v)-5 b(alue)37 b(ev)-5 -b(aluates)37 b(to)g(0.)57 b(A)36 b(shell)g(v)-5 b(ariable)37 -b(need)e(not)h(ha)m(v)m(e)h(its)f Fr(in)m(teger)44 b -Fu(attribute)150 3325 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)g(an)g -(expression.)275 3461 y(In)m(teger)41 b(constan)m(ts)g(follo)m(w)h(the) -e(C)g(language)i(de\014nition,)g(without)f(su\016xes)e(or)h(c)m -(haracter)i(con-)150 3570 y(stan)m(ts.)f(Constan)m(ts)31 -b(with)f(a)g(leading)h(0)f(are)h(in)m(terpreted)f(as)g(o)s(ctal)i(n)m -(um)m(b)s(ers.)39 b(A)30 b(leading)h(`)p Ft(0x)p Fu(')f(or)g(`)p -Ft(0X)p Fu(')150 3680 y(denotes)g(hexadecimal.)42 b(Otherwise,)30 -b(n)m(um)m(b)s(ers)f(tak)m(e)i(the)f(form)g([)p Fr(base)5 -b Ft(#)p Fu(])p Fr(n)p Fu(,)30 b(where)f(the)i(optional)g -Fr(base)150 3789 y Fu(is)e(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m -(een)h(2)h(and)e(64)i(represen)m(ting)g(the)f(arithmetic)i(base,)e(and) -g Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 3899 y(in)g(that)i(base.)40 +(expression)f(when)f(it)h(is)g(referenced,)i(or)150 3928 +y(when)27 b(a)h(v)-5 b(ariable)29 b(whic)m(h)e(has)h(b)s(een)f(giv)m +(en)i(the)f Ft(integer)e Fu(attribute)i(using)g(`)p Ft(declare)g(-i)p +Fu(')g(is)g(assigned)150 4038 y(a)33 b(v)-5 b(alue.)49 +b(A)33 b(n)m(ull)g(v)-5 b(alue)34 b(ev)-5 b(aluates)34 +b(to)g(0.)49 b(A)33 b(shell)g(v)-5 b(ariable)34 b(need)e(not)i(ha)m(v)m +(e)g(its)f Ft(integer)e Fu(attribute)150 4148 y(turned)e(on)h(to)i(b)s +(e)d(used)h(in)g(an)g(expression.)275 4305 y(In)m(teger)41 +b(constan)m(ts)g(follo)m(w)h(the)e(C)g(language)i(de\014nition,)g +(without)f(su\016xes)e(or)h(c)m(haracter)i(con-)150 4415 +y(stan)m(ts.)f(Constan)m(ts)31 b(with)f(a)g(leading)h(0)f(are)h(in)m +(terpreted)f(as)g(o)s(ctal)i(n)m(um)m(b)s(ers.)39 b(A)30 +b(leading)h(`)p Ft(0x)p Fu(')f(or)g(`)p Ft(0X)p Fu(')150 +4525 y(denotes)g(hexadecimal.)42 b(Otherwise,)30 b(n)m(um)m(b)s(ers)f +(tak)m(e)i(the)f(form)g([)p Fr(base)5 b Ft(#)p Fu(])p +Fr(n)p Fu(,)30 b(where)f(the)i(optional)g Fr(base)150 +4634 y Fu(is)e(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m(een)h(2)h +(and)e(64)i(represen)m(ting)g(the)f(arithmetic)i(base,)e(and)g +Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 4744 y(in)g(that)i(base.)40 b(If)30 b Fr(base)5 b Ft(#)30 b Fu(is)f(omitted,)i(then)f(base)g(10)g (is)g(used.)40 b(When)30 b(sp)s(ecifying)f Fr(n)p Fu(,)h(if)f(a)i -(non-digit)f(is)150 4008 y(required,)k(the)g(digits)h(greater)g(than)e +(non-digit)f(is)150 4853 y(required,)k(the)g(digits)h(greater)g(than)e (9)i(are)f(represen)m(ted)g(b)m(y)f(the)h(lo)m(w)m(ercase)j(letters,)f -(the)e(upp)s(ercase)150 4118 y(letters,)26 b(`)p Ft(@)p +(the)e(upp)s(ercase)150 4963 y(letters,)26 b(`)p Ft(@)p Fu(',)g(and)d(`)p Ft(_)p Fu(',)i(in)e(that)i(order.)38 b(If)23 b Fr(base)29 b Fu(is)23 b(less)h(than)g(or)f(equal)h(to)h(36,)h -(lo)m(w)m(ercase)g(and)d(upp)s(ercase)150 4228 y(letters)32 +(lo)m(w)m(ercase)g(and)d(upp)s(ercase)150 5073 y(letters)32 b(ma)m(y)f(b)s(e)e(used)h(in)m(terc)m(hangeably)i(to)f(represen)m(t)g (n)m(um)m(b)s(ers)e(b)s(et)m(w)m(een)i(10)g(and)f(35.)275 -4364 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)46 b(in)f(order)f(of)h +5230 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 -4473 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 4716 -y Fs(6.6)68 b(Aliases)150 4875 y Fr(Aliases)41 b Fu(allo)m(w)d(a)f -(string)f(to)h(b)s(e)f(substituted)g(for)g(a)g(w)m(ord)g(when)g(it)h -(is)f(used)f(as)i(the)g(\014rst)e(w)m(ord)h(of)h(a)150 -4985 y(simple)32 b(command.)45 b(The)31 b(shell)i(main)m(tains)f(a)h -(list)f(of)g(aliases)i(that)e(ma)m(y)h(b)s(e)e(set)h(and)g(unset)f -(with)h(the)150 5095 y Ft(alias)d Fu(and)h Ft(unalias)e -Fu(builtin)i(commands.)275 5230 y(The)f(\014rst)f(w)m(ord)i(of)f(eac)m -(h)i(simple)f(command,)g(if)f(unquoted,)g(is)h(c)m(hec)m(k)m(ed)h(to)g -(see)f(if)g(it)g(has)f(an)g(alias.)150 5340 y(If)24 b(so,)i(that)g(w)m -(ord)e(is)h(replaced)g(b)m(y)f(the)h(text)h(of)e(the)h(alias.)40 -b(The)24 b(c)m(haracters)i(`)p Ft(/)p Fu(',)h(`)p Ft($)p -Fu(',)f(`)p Ft(`)p Fu(',)g(`)p Ft(=)p Fu(')f(and)f(an)m(y)h(of)p -eop end -%%Page: 95 101 -TeXDict begin 95 100 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(95)150 299 y(the)23 -b(shell)g(metac)m(haracters)i(or)e(quoting)g(c)m(haracters)h(listed)g -(ab)s(o)m(v)m(e)g(ma)m(y)f(not)g(app)s(ear)f(in)h(an)g(alias)h(name.) -150 408 y(The)e(replacemen)m(t)h(text)g(ma)m(y)g(con)m(tain)h(an)m(y)e -(v)-5 b(alid)23 b(shell)f(input,)h(including)f(shell)g(metac)m -(haracters.)40 b(The)150 518 y(\014rst)35 b(w)m(ord)g(of)h(the)g -(replacemen)m(t)i(text)e(is)g(tested)h(for)e(aliases,)k(but)c(a)h(w)m -(ord)g(that)g(is)g(iden)m(tical)i(to)e(an)150 628 y(alias)c(b)s(eing)f -(expanded)f(is)h(not)g(expanded)f(a)h(second)g(time.)43 -b(This)30 b(means)h(that)g(one)g(ma)m(y)h(alias)g Ft(ls)e -Fu(to)150 737 y Ft("ls)f(-F")p Fu(,)f(for)f(instance,)i(and)d(Bash)i -(do)s(es)f(not)h(try)f(to)h(recursiv)m(ely)g(expand)e(the)i(replacemen) -m(t)h(text.)40 b(If)150 847 y(the)31 b(last)h(c)m(haracter)h(of)e(the)h -(alias)g(v)-5 b(alue)31 b(is)h(a)f Fr(blank)p Fu(,)g(then)g(the)g(next) -h(command)e(w)m(ord)h(follo)m(wing)i(the)150 956 y(alias)f(is)e(also)h -(c)m(hec)m(k)m(ed)i(for)d(alias)h(expansion.)275 1096 -y(Aliases)e(are)f(created)i(and)d(listed)i(with)f(the)g -Ft(alias)f Fu(command,)h(and)g(remo)m(v)m(ed)h(with)f(the)g -Ft(unalias)150 1206 y Fu(command.)275 1345 y(There)44 -b(is)h(no)g(mec)m(hanism)g(for)f(using)h(argumen)m(ts)g(in)f(the)h -(replacemen)m(t)i(text,)i(as)d(in)e Ft(csh)p Fu(.)83 -b(If)150 1455 y(argumen)m(ts)37 b(are)h(needed,)g(a)g(shell)f(function) -f(should)g(b)s(e)h(used)f(\(see)i(Section)g(3.3)g([Shell)f(F)-8 -b(unctions],)150 1564 y(page)31 b(18\).)275 1704 y(Aliases)i(are)h(not) -e(expanded)g(when)g(the)h(shell)g(is)g(not)g(in)m(teractiv)m(e,)j -(unless)c(the)h Ft(expand_aliases)150 1813 y Fu(shell)e(option)f(is)h +5340 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.)p eop end +%%Page: 100 106 +TeXDict begin 100 105 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(100)150 299 y Fs(6.6)68 +b(Aliases)150 458 y Fr(Aliases)41 b Fu(allo)m(w)d(a)f(string)f(to)h(b)s +(e)f(substituted)g(for)g(a)g(w)m(ord)g(when)g(it)h(is)f(used)f(as)i +(the)g(\014rst)e(w)m(ord)h(of)h(a)150 568 y(simple)32 +b(command.)45 b(The)31 b(shell)i(main)m(tains)f(a)h(list)f(of)g +(aliases)i(that)e(ma)m(y)h(b)s(e)e(set)h(and)g(unset)f(with)h(the)150 +677 y Ft(alias)d Fu(and)h Ft(unalias)e Fu(builtin)i(commands.)275 +810 y(The)f(\014rst)f(w)m(ord)i(of)f(eac)m(h)i(simple)f(command,)g(if)f +(unquoted,)g(is)h(c)m(hec)m(k)m(ed)h(to)g(see)f(if)g(it)g(has)f(an)g +(alias.)150 920 y(If)24 b(so,)i(that)g(w)m(ord)e(is)h(replaced)g(b)m(y) +f(the)h(text)h(of)e(the)h(alias.)40 b(The)24 b(c)m(haracters)i(`)p +Ft(/)p Fu(',)h(`)p Ft($)p Fu(',)f(`)p Ft(`)p Fu(',)g(`)p +Ft(=)p Fu(')f(and)f(an)m(y)h(of)150 1030 y(the)e(shell)g(metac)m +(haracters)i(or)e(quoting)g(c)m(haracters)h(listed)g(ab)s(o)m(v)m(e)g +(ma)m(y)f(not)g(app)s(ear)f(in)h(an)g(alias)h(name.)150 +1139 y(The)e(replacemen)m(t)h(text)g(ma)m(y)g(con)m(tain)h(an)m(y)e(v) +-5 b(alid)23 b(shell)f(input,)h(including)f(shell)g(metac)m(haracters.) +40 b(The)150 1249 y(\014rst)35 b(w)m(ord)g(of)h(the)g(replacemen)m(t)i +(text)e(is)g(tested)h(for)e(aliases,)k(but)c(a)h(w)m(ord)g(that)g(is)g +(iden)m(tical)i(to)e(an)150 1358 y(alias)c(b)s(eing)f(expanded)f(is)h +(not)g(expanded)f(a)h(second)g(time.)43 b(This)30 b(means)h(that)g(one) +g(ma)m(y)h(alias)g Ft(ls)e Fu(to)150 1468 y Ft("ls)f(-F")p +Fu(,)f(for)f(instance,)i(and)d(Bash)i(do)s(es)f(not)h(try)f(to)h +(recursiv)m(ely)g(expand)e(the)i(replacemen)m(t)h(text.)40 +b(If)150 1578 y(the)30 b(last)h(c)m(haracter)g(of)g(the)f(alias)h(v)-5 +b(alue)30 b(is)g(a)g Ft(blank)p Fu(,)f(then)h(the)g(next)g(command)g(w) +m(ord)f(follo)m(wing)j(the)150 1687 y(alias)g(is)e(also)h(c)m(hec)m(k)m +(ed)i(for)d(alias)h(expansion.)275 1820 y(Aliases)e(are)f(created)i +(and)d(listed)i(with)f(the)g Ft(alias)f Fu(command,)h(and)g(remo)m(v)m +(ed)h(with)f(the)g Ft(unalias)150 1930 y Fu(command.)275 +2063 y(There)44 b(is)h(no)g(mec)m(hanism)g(for)f(using)h(argumen)m(ts)g +(in)f(the)h(replacemen)m(t)i(text,)i(as)d(in)e Ft(csh)p +Fu(.)83 b(If)150 2172 y(argumen)m(ts)31 b(are)f(needed,)h(use)f(a)h +(shell)f(function)g(\(see)i(Section)f(3.3)g([Shell)g(F)-8 +b(unctions],)31 b(page)g(19\).)275 2305 y(Aliases)i(are)h(not)e +(expanded)g(when)g(the)h(shell)g(is)g(not)g(in)m(teractiv)m(e,)j +(unless)c(the)h Ft(expand_aliases)150 2415 y Fu(shell)e(option)f(is)h (set)g(using)f Ft(shopt)f Fu(\(see)i(Section)g(4.3.2)h([The)e(Shopt)g -(Builtin],)h(page)g(66\).)275 1953 y(The)38 b(rules)h(concerning)h(the) +(Builtin],)h(page)g(71\).)275 2548 y(The)38 b(rules)h(concerning)h(the) f(de\014nition)g(and)g(use)g(of)g(aliases)i(are)e(somewhat)h -(confusing.)67 b(Bash)150 2063 y(alw)m(a)m(ys)37 b(reads)f(at)h(least)g +(confusing.)67 b(Bash)150 2657 y(alw)m(a)m(ys)37 b(reads)f(at)h(least)g (one)f(complete)i(line)e(of)g(input,)h(and)e(all)i(lines)f(that)g(mak)m -(e)h(up)e(a)h(comp)s(ound)150 2172 y(command,)29 b(b)s(efore)g +(e)h(up)e(a)h(comp)s(ound)150 2767 y(command,)29 b(b)s(efore)g (executing)i(an)m(y)e(of)h(the)f(commands)g(on)g(that)h(line)f(or)h -(the)f(comp)s(ound)f(command.)150 2282 y(Aliases)g(are)g(expanded)e +(the)f(comp)s(ound)f(command.)150 2877 y(Aliases)g(are)g(expanded)e (when)g(a)i(command)f(is)g(read,)h(not)f(when)f(it)i(is)f(executed.)41 -b(Therefore,)28 b(an)f(alias)150 2391 y(de\014nition)36 +b(Therefore,)28 b(an)f(alias)150 2986 y(de\014nition)36 b(app)s(earing)h(on)f(the)h(same)g(line)g(as)g(another)g(command)f(do)s -(es)g(not)h(tak)m(e)i(e\013ect)f(un)m(til)f(the)150 2501 +(es)g(not)h(tak)m(e)i(e\013ect)f(un)m(til)f(the)150 3096 y(next)i(line)g(of)g(input)f(is)h(read.)66 b(The)38 b(commands)h(follo) m(wing)h(the)f(alias)h(de\014nition)e(on)h(that)g(line)h(are)150 -2610 y(not)33 b(a\013ected)h(b)m(y)f(the)g(new)f(alias.)49 +3205 y(not)33 b(a\013ected)h(b)m(y)f(the)g(new)f(alias.)49 b(This)32 b(b)s(eha)m(vior)h(is)g(also)g(an)g(issue)g(when)e(functions) -i(are)g(executed.)150 2720 y(Aliases)c(are)g(expanded)e(when)g(a)i +i(are)g(executed.)150 3315 y(Aliases)c(are)g(expanded)e(when)g(a)i (function)e(de\014nition)h(is)g(read,)h(not)f(when)g(the)g(function)g -(is)g(executed,)150 2830 y(b)s(ecause)36 b(a)h(function)f(de\014nition) +(is)g(executed,)150 3425 y(b)s(ecause)36 b(a)h(function)f(de\014nition) f(is)i(itself)g(a)f(command.)58 b(As)36 b(a)h(consequence,)h(aliases)g -(de\014ned)d(in)h(a)150 2939 y(function)28 b(are)h(not)g(a)m(v)-5 +(de\014ned)d(in)h(a)150 3534 y(function)28 b(are)h(not)g(a)m(v)-5 b(ailable)31 b(un)m(til)e(after)g(that)g(function)f(is)g(executed.)41 b(T)-8 b(o)29 b(b)s(e)f(safe,)i(alw)m(a)m(ys)g(put)e(alias)150 -3049 y(de\014nitions)i(on)g(a)h(separate)g(line,)g(and)f(do)g(not)h +3644 y(de\014nitions)i(on)g(a)h(separate)g(line,)g(and)f(do)g(not)h (use)f Ft(alias)f Fu(in)h(comp)s(ound)f(commands.)275 -3188 y(F)-8 b(or)31 b(almost)g(ev)m(ery)g(purp)s(ose,)e(shell)i +3777 y(F)-8 b(or)31 b(almost)g(ev)m(ery)g(purp)s(ose,)e(shell)i (functions)f(are)g(preferred)g(o)m(v)m(er)h(aliases.)150 -3437 y Fs(6.7)68 b(Arra)l(ys)150 3596 y Fu(Bash)33 b(pro)m(vides)g +4014 y Fs(6.7)68 b(Arra)l(ys)150 4174 y Fu(Bash)33 b(pro)m(vides)g (one-dimensional)g(indexed)f(and)h(asso)s(ciativ)m(e)i(arra)m(y)e(v)-5 b(ariables.)49 b(An)m(y)33 b(v)-5 b(ariable)33 b(ma)m(y)150 -3706 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e +4283 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e Ft(declare)e Fu(builtin)h(will)i(explicitly)g(declare)g(an)f(arra)m(y) --8 b(.)46 b(There)32 b(is)150 3815 y(no)h(maxim)m(um)g(limit)h(on)f +-8 b(.)46 b(There)32 b(is)150 4393 y(no)h(maxim)m(um)g(limit)h(on)f (the)g(size)h(of)g(an)f(arra)m(y)-8 b(,)35 b(nor)d(an)m(y)i(requiremen) -m(t)f(that)h(mem)m(b)s(ers)e(b)s(e)g(indexed)150 3925 +m(t)f(that)h(mem)m(b)s(ers)e(b)s(e)g(indexed)150 4503 y(or)26 b(assigned)h(con)m(tiguously)-8 b(.)41 b(Indexed)25 b(arra)m(ys)i(are)f(referenced)g(using)g(in)m(tegers)i(\(including)e -(arithmetic)150 4034 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell) -e(Arithmetic],)k(page)d(93\)\))h(and)d(are)i(zero-based;)k(asso)s -(ciativ)m(e)150 4144 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59 +(arithmetic)150 4612 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell) +e(Arithmetic],)k(page)d(98\)\))h(and)d(are)i(zero-based;)k(asso)s +(ciativ)m(e)150 4722 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59 b(Unless)36 b(otherwise)h(noted,)h(indexed)e(arra)m(y)h(indices)f(m)m -(ust)g(b)s(e)g(non-)150 4254 y(negativ)m(e)d(in)m(tegers.)275 -4393 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c +(ust)g(b)s(e)g(non-)150 4831 y(negativ)m(e)d(in)m(tegers.)275 +4964 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c (an)m(y)g(v)-5 b(ariable)28 b(is)g(assigned)f(to)h(using)f(the)g(syn)m -(tax)390 4533 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p -Fj(value)150 4672 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g +(tax)390 5097 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p +Fj(value)150 5230 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g (an)f(arithmetic)i(expression)e(that)h(m)m(ust)g(ev)-5 b(aluate)36 b(to)f(a)g(n)m(um)m(b)s(er.)51 b(T)-8 b(o)150 -4782 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31 -b(use)390 4921 y Ft(declare)46 b(-a)h Fj(name)150 5061 -y Fu(The)30 b(syn)m(tax)390 5200 y Ft(declare)46 b(-a)h -Fj(name)p Ft([)p Fj(subscript)p Ft(])150 5340 y Fu(is)30 -b(also)i(accepted;)g(the)e Fr(subscript)h Fu(is)g(ignored.)p -eop end -%%Page: 96 102 -TeXDict begin 96 101 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(96)150 299 y(Asso)s(ciativ)m(e)33 -b(arra)m(ys)d(are)h(created)h(using)390 427 y Ft(declare)46 -b(-A)h Fj(name)275 555 y Fu(A)m(ttributes)f(ma)m(y)h(b)s(e)e(sp)s -(eci\014ed)g(for)h(an)g(arra)m(y)g(v)-5 b(ariable)47 -b(using)e(the)h Ft(declare)e Fu(and)h Ft(readonly)150 -664 y Fu(builtins.)40 b(Eac)m(h)31 b(attribute)g(applies)g(to)g(all)g -(mem)m(b)s(ers)f(of)g(an)h(arra)m(y)-8 b(.)275 792 y(Arra)m(ys)30 -b(are)h(assigned)f(to)h(using)f(comp)s(ound)f(assignmen)m(ts)i(of)g -(the)f(form)390 920 y Fj(name)p Ft(=\()p Fj(value1)44 -b(value2)j Ft(...)f(\))150 1048 y Fu(where)33 b(eac)m(h)i -Fr(v)-5 b(alue)40 b Fu(ma)m(y)34 b(b)s(e)g(of)g(the)g(form)f -Ft([)p Fj(subscript)p Ft(]=)p Fr(string)p Fu(.)48 b(Indexed)33 -b(arra)m(y)h(assignmen)m(ts)h(do)150 1157 y(not)26 b(require)f(an)m -(ything)g(but)g Fr(string)p Fu(.)39 b(When)25 b(assigning)h(to)g -(indexed)f(arra)m(ys,)i(if)e(the)h(optional)g(subscript)150 -1267 y(is)h(supplied,)f(that)h(index)g(is)f(assigned)h(to;)i(otherwise) -e(the)g(index)g(of)f(the)h(elemen)m(t)i(assigned)d(is)h(the)g(last)150 -1377 y(index)j(assigned)h(to)g(b)m(y)f(the)g(statemen)m(t)j(plus)c -(one.)41 b(Indexing)30 b(starts)h(at)g(zero.)275 1504 -y(Eac)m(h)26 b Fr(v)-5 b(alue)32 b Fu(in)26 b(the)h(list)g(undergo)s -(es)e(all)i(the)g(shell)f(expansions)g(describ)s(ed)f(ab)s(o)m(v)m(e)j -(\(see)f(Section)g(3.5)150 1614 y([Shell)j(Expansions],)h(page)g(22\).) -275 1742 y(When)k(assigning)i(to)g(an)f(asso)s(ciativ)m(e)i(arra)m(y)-8 -b(,)39 b(the)d(w)m(ords)f(in)h(a)h(comp)s(ound)d(assignmen)m(t)j(ma)m -(y)g(b)s(e)150 1851 y(either)31 b(assignmen)m(t)h(statemen)m(ts,)h(for) -e(whic)m(h)g(the)g(subscript)f(is)h(required,)g(or)g(a)g(list)h(of)f(w) -m(ords)f(that)i(is)150 1961 y(in)m(terpreted)g(as)g(a)g(sequence)f(of)h +5340 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31 +b(use)p eop end +%%Page: 101 107 +TeXDict begin 101 106 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(101)390 299 y Ft(declare)46 +b(-a)h Fj(name)150 438 y Fu(The)30 b(syn)m(tax)390 577 +y Ft(declare)46 b(-a)h Fj(name)p Ft([)p Fj(subscript)p +Ft(])150 715 y Fu(is)30 b(also)i(accepted;)g(the)e Fr(subscript)h +Fu(is)g(ignored.)150 854 y(Asso)s(ciativ)m(e)i(arra)m(ys)d(are)h +(created)h(using)390 993 y Ft(declare)46 b(-A)h Fj(name)275 +1132 y Fu(A)m(ttributes)f(ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(for)h(an)g +(arra)m(y)g(v)-5 b(ariable)47 b(using)e(the)h Ft(declare)e +Fu(and)h Ft(readonly)150 1241 y Fu(builtins.)40 b(Eac)m(h)31 +b(attribute)g(applies)g(to)g(all)g(mem)m(b)s(ers)f(of)g(an)h(arra)m(y) +-8 b(.)275 1380 y(Arra)m(ys)30 b(are)h(assigned)f(to)h(using)f(comp)s +(ound)f(assignmen)m(ts)i(of)g(the)f(form)390 1519 y Fj(name)p +Ft(=\()p Fj(value1)44 b(value2)j Ft(...)f(\))150 1658 +y Fu(where)33 b(eac)m(h)i Fr(v)-5 b(alue)40 b Fu(ma)m(y)34 +b(b)s(e)g(of)g(the)g(form)f Ft([)p Fj(subscript)p Ft(]=)p +Fr(string)p Fu(.)48 b(Indexed)33 b(arra)m(y)h(assignmen)m(ts)h(do)150 +1767 y(not)26 b(require)f(an)m(ything)g(but)g Fr(string)p +Fu(.)39 b(When)25 b(assigning)h(to)g(indexed)f(arra)m(ys,)i(if)e(the)h +(optional)g(subscript)150 1877 y(is)h(supplied,)f(that)h(index)g(is)f +(assigned)h(to;)i(otherwise)e(the)g(index)g(of)f(the)h(elemen)m(t)i +(assigned)d(is)h(the)g(last)150 1987 y(index)j(assigned)h(to)g(b)m(y)f +(the)g(statemen)m(t)j(plus)c(one.)41 b(Indexing)30 b(starts)h(at)g +(zero.)275 2125 y(Eac)m(h)26 b Fr(v)-5 b(alue)32 b Fu(in)26 +b(the)h(list)g(undergo)s(es)e(all)i(the)g(shell)f(expansions)g(describ) +s(ed)f(ab)s(o)m(v)m(e)j(\(see)f(Section)g(3.5)150 2235 +y([Shell)j(Expansions],)h(page)g(24\).)275 2374 y(When)k(assigning)i +(to)g(an)f(asso)s(ciativ)m(e)i(arra)m(y)-8 b(,)39 b(the)d(w)m(ords)f +(in)h(a)h(comp)s(ound)d(assignmen)m(t)j(ma)m(y)g(b)s(e)150 +2483 y(either)31 b(assignmen)m(t)h(statemen)m(ts,)h(for)e(whic)m(h)g +(the)g(subscript)f(is)h(required,)g(or)g(a)g(list)h(of)f(w)m(ords)f +(that)i(is)150 2593 y(in)m(terpreted)g(as)g(a)g(sequence)f(of)h (alternating)h(k)m(eys)f(and)f(v)-5 b(alues:)44 b Fr(name)5 b Fu(=\()p Fr(k)m(ey1)40 b(v)-5 b(alue1)40 b(k)m(ey2)g(v)-5 -b(alue2)156 2071 y Fu(.)22 b(.)g(.)47 b(\).)57 b(These)35 +b(alue2)156 2703 y Fu(.)22 b(.)g(.)47 b(\).)57 b(These)35 b(are)i(treated)f(iden)m(tically)i(to)e Fr(name)5 b Fu(=\()36 b([)p Fr(k)m(ey1)7 b Fu(]=)p Fr(v)-5 b(alue1)46 b Fu([)p Fr(k)m(ey2)7 b Fu(]=)p Fr(v)-5 b(alue2)51 b Fu(.)22 b(.)h(.)46 -b(\).)57 b(The)150 2180 y(\014rst)25 b(w)m(ord)f(in)h(the)h(list)g +b(\).)57 b(The)150 2812 y(\014rst)25 b(w)m(ord)f(in)h(the)h(list)g (determines)f(ho)m(w)g(the)h(remaining)f(w)m(ords)g(are)h(in)m -(terpreted;)h(all)f(assignmen)m(ts)g(in)150 2290 y(a)31 +(terpreted;)h(all)f(assignmen)m(ts)g(in)150 2922 y(a)31 b(list)f(m)m(ust)h(b)s(e)e(of)h(the)h(same)f(t)m(yp)s(e.)41 b(When)30 b(using)g(k)m(ey/v)-5 b(alue)32 b(pairs,)e(the)g(k)m(eys)h -(ma)m(y)g(not)f(b)s(e)g(missing)150 2399 y(or)g(empt)m(y;)h(a)g +(ma)m(y)g(not)f(b)s(e)g(missing)150 3031 y(or)g(empt)m(y;)h(a)g (\014nal)f(missing)g(v)-5 b(alue)31 b(is)g(treated)g(lik)m(e)h(the)e -(empt)m(y)h(string.)275 2527 y(This)f(syn)m(tax)j(is)e(also)i(accepted) +(empt)m(y)h(string.)275 3170 y(This)f(syn)m(tax)j(is)e(also)i(accepted) g(b)m(y)f(the)f Ft(declare)f Fu(builtin.)44 b(Individual)31 -b(arra)m(y)h(elemen)m(ts)h(ma)m(y)g(b)s(e)150 2637 y(assigned)e(to)g +b(arra)m(y)h(elemen)m(ts)h(ma)m(y)g(b)s(e)150 3280 y(assigned)e(to)g (using)f(the)g Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p Fj(value)25 b Fu(syn)m(tax)31 b(in)m(tro)s(duced)e(ab)s(o)m(v)m(e.)275 -2765 y(When)h(assigning)h(to)h(an)e(indexed)g(arra)m(y)-8 +3419 y(When)h(assigning)h(to)h(an)e(indexed)g(arra)m(y)-8 b(,)32 b(if)f Fr(name)36 b Fu(is)31 b(subscripted)e(b)m(y)i(a)g -(negativ)m(e)i(n)m(um)m(b)s(er,)c(that)150 2874 y(n)m(um)m(b)s(er)43 +(negativ)m(e)i(n)m(um)m(b)s(er,)c(that)150 3528 y(n)m(um)m(b)s(er)43 b(is)h(in)m(terpreted)h(as)f(relativ)m(e)j(to)e(one)f(greater)i(than)e (the)g(maxim)m(um)g(index)g(of)h Fr(name)p Fu(,)j(so)150 -2984 y(negativ)m(e)30 b(indices)d(coun)m(t)h(bac)m(k)g(from)f(the)g +3638 y(negativ)m(e)30 b(indices)d(coun)m(t)h(bac)m(k)g(from)f(the)g (end)g(of)g(the)h(arra)m(y)-8 b(,)29 b(and)e(an)g(index)g(of)g(-1)h -(references)g(the)f(last)150 3093 y(elemen)m(t.)275 3221 -y(An)m(y)h(elemen)m(t)h(of)g(an)f(arra)m(y)g(ma)m(y)h(b)s(e)f +(references)g(the)f(last)150 3747 y(elemen)m(t.)275 3886 +y(The)j(`)p Ft(+=)p Fu(')g(op)s(erator)h(will)g(app)s(end)e(to)i(an)g +(arra)m(y)g(v)-5 b(ariable)32 b(when)d(assigning)i(using)g(the)f(comp)s +(ound)150 3996 y(assignmen)m(t)h(syn)m(tax;)g(see)g(Section)g(3.4)h +([Shell)e(P)m(arameters],)i(page)g(21,)f(ab)s(o)m(v)m(e.)275 +4134 y(An)m(y)d(elemen)m(t)h(of)g(an)f(arra)m(y)g(ma)m(y)h(b)s(e)f (referenced)g(using)g Ft(${)p Fj(name)p Ft([)p Fj(subscript)p -Ft(]})p Fu(.)35 b(The)27 b(braces)i(are)150 3331 y(required)f(to)j(a)m +Ft(]})p Fu(.)35 b(The)27 b(braces)i(are)150 4244 y(required)f(to)j(a)m (v)m(oid)f(con\015icts)g(with)f(the)h(shell's)f(\014lename)h(expansion) f(op)s(erators.)41 b(If)28 b(the)i Fr(subscript)g Fu(is)150 -3440 y(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f +4354 y(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f (expands)f(to)i(all)g(mem)m(b)s(ers)e(of)i(the)f(arra)m(y)h Fr(name)p Fu(.)40 b(These)29 b(subscripts)f(di\013er)h(only)150 -3550 y(when)36 b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g +4463 y(when)36 b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g (quotes.)60 b(If)36 b(the)h(w)m(ord)f(is)g(double-quoted,)j -Ft(${)p Fj(name)p Ft([*]})150 3660 y Fu(expands)25 b(to)h(a)g(single)h +Ft(${)p Fj(name)p Ft([*]})150 4573 y Fu(expands)25 b(to)h(a)g(single)h (w)m(ord)e(with)g(the)h(v)-5 b(alue)26 b(of)g(eac)m(h)h(arra)m(y)f(mem) m(b)s(er)f(separated)h(b)m(y)g(the)f(\014rst)g(c)m(harac-)150 -3769 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29 +4682 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29 b(and)f Ft(${)p Fj(name)p Ft([@]})d Fu(expands)i(eac)m(h)i(elemen)m(t)h (of)e Fr(name)33 b Fu(to)c(a)f(separate)h(w)m(ord.)150 -3879 y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f +4792 y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f Ft(${)p Fj(name)p Ft([@]})e Fu(expands)h(to)i(nothing.)47 -b(If)31 b(the)i(double-quoted)150 3988 y(expansion)39 +b(If)31 b(the)i(double-quoted)150 4902 y(expansion)39 b(o)s(ccurs)h(within)f(a)h(w)m(ord,)i(the)d(expansion)h(of)g(the)f -(\014rst)g(parameter)h(is)g(joined)f(with)h(the)150 4098 +(\014rst)g(parameter)h(is)g(joined)f(with)h(the)150 5011 y(b)s(eginning)29 b(part)g(of)h(the)f(original)i(w)m(ord,)e(and)g(the)h (expansion)f(of)h(the)f(last)i(parameter)e(is)h(joined)f(with)150 -4208 y(the)g(last)h(part)f(of)g(the)g(original)h(w)m(ord.)40 +5121 y(the)g(last)h(part)f(of)g(the)g(original)h(w)m(ord.)40 b(This)28 b(is)h(analogous)h(to)f(the)h(expansion)e(of)h(the)g(sp)s -(ecial)h(param-)150 4317 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p +(ecial)h(param-)150 5230 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p Ft(*)p Fu('.)41 b Ft(${#)p Fj(name)p Ft([)p Fj(subscript)p Ft(]})24 b Fu(expands)k(to)i(the)g(length)g(of)f Ft(${)p Fj(name)p Ft([)p Fj(subscript)p Ft(]})p Fu(.)35 b(If)150 -4427 y Fr(subscript)28 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p +5340 y Fr(subscript)28 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)g(the)g(expansion)f(is)g(the)h(n)m(um)m(b)s(er)e(of)i (elemen)m(ts)g(in)f(the)h(arra)m(y)-8 b(.)41 b(If)27 -b(the)g Fr(subscript)150 4536 y Fu(used)34 b(to)h(reference)g(an)f -(elemen)m(t)i(of)f(an)f(indexed)g(arra)m(y)h(ev)-5 b(aluates)36 -b(to)f(a)g(n)m(um)m(b)s(er)e(less)i(than)f(zero,)i(it)150 -4646 y(is)c(in)m(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h +b(the)g Fr(subscript)p eop end +%%Page: 102 108 +TeXDict begin 102 107 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(102)150 299 y(used)34 +b(to)h(reference)g(an)f(elemen)m(t)i(of)f(an)f(indexed)g(arra)m(y)h(ev) +-5 b(aluates)36 b(to)f(a)g(n)m(um)m(b)s(er)e(less)i(than)f(zero,)i(it) +150 408 y(is)c(in)m(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h (than)f(the)h(maxim)m(um)f(index)f(of)h(the)h(arra)m(y)-8 -b(,)33 b(so)g(negativ)m(e)150 4756 y(indices)d(coun)m(t)h(bac)m(k)h +b(,)33 b(so)g(negativ)m(e)150 518 y(indices)d(coun)m(t)h(bac)m(k)h (from)e(the)g(end)g(of)g(the)h(arra)m(y)-8 b(,)31 b(and)f(an)g(index)g (of)h(-1)g(refers)f(to)h(the)g(last)g(elemen)m(t.)275 -4883 y(Referencing)41 b(an)f(arra)m(y)h(v)-5 b(ariable)42 +675 y(Referencing)41 b(an)f(arra)m(y)h(v)-5 b(ariable)42 b(without)e(a)h(subscript)e(is)i(equiv)-5 b(alen)m(t)42 -b(to)f(referencing)g(with)g(a)150 4993 y(subscript)35 +b(to)f(referencing)g(with)g(a)150 785 y(subscript)35 b(of)h(0.)57 b(An)m(y)36 b(reference)g(to)h(a)f(v)-5 b(ariable)36 b(using)g(a)g(v)-5 b(alid)36 b(subscript)f(is)h(legal,)j -(and)c Ft(bash)g Fu(will)150 5103 y(create)d(an)e(arra)m(y)h(if)f -(necessary)-8 b(.)275 5230 y(An)35 b(arra)m(y)i(v)-5 +(and)c Ft(bash)g Fu(will)150 894 y(create)d(an)e(arra)m(y)h(if)f +(necessary)-8 b(.)275 1051 y(An)35 b(arra)m(y)i(v)-5 b(ariable)37 b(is)g(considered)f(set)h(if)f(a)h(subscript)e(has)h(b)s (een)g(assigned)g(a)h(v)-5 b(alue.)59 b(The)36 b(n)m(ull)150 -5340 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)p -eop end -%%Page: 97 103 -TeXDict begin 97 102 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(97)275 299 y(It)29 -b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i(\(indices\))f(of)f -(an)h(arra)m(y)g(as)f(w)m(ell)i(as)f(the)f(v)-5 b(alues.)41 -b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([@])p Fi(})150 408 -y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([*])p -Fi(})43 b Fu(expand)c(to)i(the)f(indices)h(assigned)f(in)g(arra)m(y)g -(v)-5 b(ariable)41 b Fr(name)p Fu(.)70 b(The)39 b(treatmen)m(t)150 -518 y(when)i(in)g(double)g(quotes)h(is)f(similar)h(to)h(the)e -(expansion)h(of)f(the)h(sp)s(ecial)g(parameters)g(`)p -Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 628 y(within)30 -b(double)g(quotes.)275 759 y(The)25 b Ft(unset)g Fu(builtin)g(is)h +1161 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)275 +1317 y(It)29 b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i +(\(indices\))f(of)f(an)h(arra)m(y)g(as)f(w)m(ell)i(as)f(the)f(v)-5 +b(alues.)41 b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([@])p +Fi(})150 1427 y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5 +b Fu([*])p Fi(})43 b Fu(expand)c(to)i(the)f(indices)h(assigned)f(in)g +(arra)m(y)g(v)-5 b(ariable)41 b Fr(name)p Fu(.)70 b(The)39 +b(treatmen)m(t)150 1537 y(when)i(in)g(double)g(quotes)h(is)f(similar)h +(to)h(the)e(expansion)h(of)f(the)h(sp)s(ecial)g(parameters)g(`)p +Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 1646 y(within)30 +b(double)g(quotes.)275 1803 y(The)25 b Ft(unset)g Fu(builtin)g(is)h (used)f(to)i(destro)m(y)f(arra)m(ys.)40 b Ft(unset)29 b Fj(name)p Ft([)p Fj(subscript)p Ft(])22 b Fu(destro)m(ys)k(the)g -(arra)m(y)150 868 y(elemen)m(t)40 b(at)e(index)g Fr(subscript)p +(arra)m(y)150 1913 y(elemen)m(t)40 b(at)e(index)g Fr(subscript)p Fu(.)62 b(Negativ)m(e)41 b(subscripts)c(to)i(indexed)e(arra)m(ys)i(are) -f(in)m(terpreted)h(as)f(de-)150 978 y(scrib)s(ed)30 b(ab)s(o)m(v)m(e.) -42 b(Unsetting)31 b(the)g(last)g(elemen)m(t)h(of)f(an)g(arra)m(y)g(v)-5 -b(ariable)31 b(do)s(es)f(not)h(unset)f(the)h(v)-5 b(ariable.)150 -1087 y Ft(unset)29 b Fj(name)p Fu(,)e(where)h Fr(name)33 -b Fu(is)28 b(an)g(arra)m(y)-8 b(,)30 b(remo)m(v)m(es)f(the)f(en)m(tire) -h(arra)m(y)-8 b(.)41 b(A)28 b(subscript)f(of)h(`)p Ft(*)p -Fu(')g(or)g(`)p Ft(@)p Fu(')g(also)150 1197 y(remo)m(v)m(es)k(the)e(en) -m(tire)i(arra)m(y)-8 b(.)275 1328 y(When)35 b(using)g(a)i(v)-5 -b(ariable)36 b(name)g(with)g(a)g(subscript)e(as)i(an)g(argumen)m(t)g -(to)h(a)f(command,)h(suc)m(h)f(as)150 1438 y(with)k Ft(unset)p -Fu(,)h(without)e(using)h(the)g(w)m(ord)f(expansion)h(syn)m(tax)g -(describ)s(ed)f(ab)s(o)m(v)m(e,)44 b(the)c(argumen)m(t)g(is)150 -1547 y(sub)5 b(ject)25 b(to)h(the)g(shell's)g(\014lename)f(expansion.) -39 b(If)25 b(\014lename)h(expansion)f(is)g(not)h(desired,)g(the)f -(argumen)m(t)150 1657 y(should)k(b)s(e)h(quoted.)275 -1788 y(The)20 b Ft(declare)p Fu(,)h Ft(local)p Fu(,)h(and)e -Ft(readonly)f Fu(builtins)h(eac)m(h)i(accept)g(a)g Ft(-a)e -Fu(option)h(to)h(sp)s(ecify)f(an)f(indexed)150 1897 y(arra)m(y)28 -b(and)f(a)h Ft(-A)e Fu(option)i(to)g(sp)s(ecify)f(an)h(asso)s(ciativ)m -(e)i(arra)m(y)-8 b(.)40 b(If)27 b(b)s(oth)g(options)h(are)g(supplied,)f -Ft(-A)f Fu(tak)m(es)150 2007 y(precedence.)55 b(The)35 -b Ft(read)f Fu(builtin)h(accepts)h(a)g Ft(-a)e Fu(option)i(to)g(assign) -f(a)g(list)h(of)f(w)m(ords)g(read)g(from)g(the)150 2116 -y(standard)h(input)g(to)i(an)f(arra)m(y)-8 b(,)40 b(and)c(can)h(read)g -(v)-5 b(alues)38 b(from)e(the)h(standard)g(input)f(in)m(to)i -(individual)150 2226 y(arra)m(y)f(elemen)m(ts.)62 b(The)36 -b Ft(set)g Fu(and)h Ft(declare)d Fu(builtins)j(displa)m(y)g(arra)m(y)g -(v)-5 b(alues)37 b(in)g(a)g(w)m(a)m(y)h(that)g(allo)m(ws)150 -2336 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)150 -2569 y Fs(6.8)68 b(The)45 b(Directory)g(Stac)l(k)150 -2729 y Fu(The)21 b(directory)h(stac)m(k)h(is)e(a)h(list)g(of)f(recen)m +f(in)m(terpreted)h(as)f(de-)150 2022 y(scrib)s(ed)30 +b(ab)s(o)m(v)m(e.)42 b(Unsetting)31 b(the)g(last)g(elemen)m(t)h(of)f +(an)g(arra)m(y)g(v)-5 b(ariable)31 b(do)s(es)f(not)h(unset)f(the)h(v)-5 +b(ariable.)150 2132 y Ft(unset)29 b Fj(name)p Fu(,)39 +b(where)e Fr(name)43 b Fu(is)37 b(an)h(arra)m(y)-8 b(,)41 +b(remo)m(v)m(es)e(the)f(en)m(tire)g(arra)m(y)-8 b(.)64 +b Ft(unset)29 b Fj(name)p Ft([)p Fj(subscript)p Ft(])150 +2241 y Fu(b)s(eha)m(v)m(es)h(di\013eren)m(tly)g(dep)s(ending)d(on)j +(the)f(arra)m(y)h(t)m(yp)s(e)f(when)g(giv)m(en)h(a)f(subscript)g(of)g +(`)p Ft(*)p Fu(')g(or)h(`)p Ft(@)p Fu('.)40 b(When)150 +2351 y Fr(name)46 b Fu(is)40 b(an)h(asso)s(ciativ)m(e)i(arra)m(y)-8 +b(,)44 b(it)d(remo)m(v)m(es)h(the)f(elemen)m(t)h(with)e(k)m(ey)h(`)p +Ft(*)p Fu(')g(or)f(`)p Ft(@)p Fu('.)72 b(If)40 b Fr(name)45 +b Fu(is)c(an)150 2461 y(indexed)30 b(arra)m(y)-8 b(,)31 +b Ft(unset)e Fu(remo)m(v)m(es)j(all)f(of)g(the)f(elemen)m(ts,)i(but)e +(do)s(es)g(not)h(remo)m(v)m(e)h(the)e(arra)m(y)h(itself.)275 +2617 y(When)k(using)g(a)i(v)-5 b(ariable)36 b(name)g(with)g(a)g +(subscript)e(as)i(an)g(argumen)m(t)g(to)h(a)f(command,)h(suc)m(h)f(as) +150 2727 y(with)k Ft(unset)p Fu(,)h(without)e(using)h(the)g(w)m(ord)f +(expansion)h(syn)m(tax)g(describ)s(ed)f(ab)s(o)m(v)m(e,)44 +b(the)c(argumen)m(t)g(is)150 2837 y(sub)5 b(ject)25 b(to)h(the)g +(shell's)g(\014lename)f(expansion.)39 b(If)25 b(\014lename)h(expansion) +f(is)g(not)h(desired,)g(the)f(argumen)m(t)150 2946 y(should)k(b)s(e)h +(quoted.)275 3103 y(The)20 b Ft(declare)p Fu(,)h Ft(local)p +Fu(,)h(and)e Ft(readonly)f Fu(builtins)h(eac)m(h)i(accept)g(a)g +Ft(-a)e Fu(option)h(to)h(sp)s(ecify)f(an)f(indexed)150 +3213 y(arra)m(y)28 b(and)f(a)h Ft(-A)e Fu(option)i(to)g(sp)s(ecify)f +(an)h(asso)s(ciativ)m(e)i(arra)m(y)-8 b(.)40 b(If)27 +b(b)s(oth)g(options)h(are)g(supplied,)f Ft(-A)f Fu(tak)m(es)150 +3322 y(precedence.)55 b(The)35 b Ft(read)f Fu(builtin)h(accepts)h(a)g +Ft(-a)e Fu(option)i(to)g(assign)f(a)g(list)h(of)f(w)m(ords)g(read)g +(from)g(the)150 3432 y(standard)h(input)g(to)i(an)f(arra)m(y)-8 +b(,)40 b(and)c(can)h(read)g(v)-5 b(alues)38 b(from)e(the)h(standard)g +(input)f(in)m(to)i(individual)150 3541 y(arra)m(y)f(elemen)m(ts.)62 +b(The)36 b Ft(set)g Fu(and)h Ft(declare)d Fu(builtins)j(displa)m(y)g +(arra)m(y)g(v)-5 b(alues)37 b(in)g(a)g(w)m(a)m(y)h(that)g(allo)m(ws)150 +3651 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)150 +3925 y Fs(6.8)68 b(The)45 b(Directory)g(Stac)l(k)150 +4085 y Fu(The)21 b(directory)h(stac)m(k)h(is)e(a)h(list)g(of)f(recen)m (tly-visited)j(directories.)39 b(The)20 b Ft(pushd)g -Fu(builtin)h(adds)g(directories)150 2838 y(to)42 b(the)f(stac)m(k)i(as) +Fu(builtin)h(adds)g(directories)150 4194 y(to)42 b(the)f(stac)m(k)i(as) e(it)h(c)m(hanges)g(the)f(curren)m(t)g(directory)-8 b(,)45 b(and)40 b(the)i Ft(popd)e Fu(builtin)g(remo)m(v)m(es)j(sp)s(eci\014ed) -150 2948 y(directories)29 b(from)f(the)h(stac)m(k)h(and)d(c)m(hanges)j +150 4304 y(directories)29 b(from)f(the)h(stac)m(k)h(and)d(c)m(hanges)j (the)e(curren)m(t)g(directory)h(to)g(the)g(directory)f(remo)m(v)m(ed.) -41 b(The)150 3058 y Ft(dirs)34 b Fu(builtin)g(displa)m(ys)h(the)g(con)m +41 b(The)150 4414 y Ft(dirs)34 b Fu(builtin)g(displa)m(ys)h(the)g(con)m (ten)m(ts)i(of)e(the)g(directory)h(stac)m(k.)56 b(The)34 -b(curren)m(t)h(directory)g(is)g(alw)m(a)m(ys)150 3167 +b(curren)m(t)h(directory)g(is)g(alw)m(a)m(ys)150 4523 y(the)c Ft(")p Fu(top)p Ft(")f Fu(of)g(the)h(directory)g(stac)m(k.)275 -3298 y(The)k(con)m(ten)m(ts)i(of)f(the)h(directory)f(stac)m(k)h(are)f +4680 y(The)k(con)m(ten)m(ts)i(of)f(the)h(directory)f(stac)m(k)h(are)f (also)h(visible)g(as)f(the)g(v)-5 b(alue)36 b(of)g(the)g -Ft(DIRSTACK)e Fu(shell)150 3408 y(v)-5 b(ariable.)150 -3600 y Fk(6.8.1)63 b(Directory)40 b(Stac)m(k)g(Builtins)150 -3768 y Ft(dirs)870 3899 y(dirs)47 b([-clpv])e([+)p Fj(N)i -Ft(|)h(-)p Fj(N)p Ft(])630 4030 y Fu(Displa)m(y)35 b(the)f(list)g(of)g -(curren)m(tly)g(remem)m(b)s(ered)f(directories.)51 b(Directories)36 -b(are)e(added)f(to)630 4140 y(the)28 b(list)h(with)f(the)g -Ft(pushd)f Fu(command;)i(the)f Ft(popd)f Fu(command)h(remo)m(v)m(es)h -(directories)g(from)630 4249 y(the)i(list.)41 b(The)30 -b(curren)m(t)g(directory)h(is)f(alw)m(a)m(ys)i(the)f(\014rst)e -(directory)i(in)f(the)h(stac)m(k.)630 4402 y Ft(-c)384 -b Fu(Clears)31 b(the)f(directory)h(stac)m(k)h(b)m(y)e(deleting)h(all)h -(of)e(the)h(elemen)m(ts.)630 4554 y Ft(-l)384 b Fu(Pro)s(duces)31 -b(a)h(listing)h(using)e(full)h(pathnames;)h(the)f(default)g(listing)h -(format)1110 4664 y(uses)d(a)h(tilde)g(to)g(denote)g(the)f(home)h -(directory)-8 b(.)630 4816 y Ft(-p)384 b Fu(Causes)30 -b Ft(dirs)f Fu(to)i(prin)m(t)f(the)h(directory)g(stac)m(k)h(with)e(one) -g(en)m(try)h(p)s(er)e(line.)630 4968 y Ft(-v)384 b Fu(Causes)36 -b Ft(dirs)f Fu(to)i(prin)m(t)f(the)g(directory)h(stac)m(k)h(with)e(one) -h(en)m(try)f(p)s(er)f(line,)1110 5078 y(pre\014xing)30 -b(eac)m(h)h(en)m(try)g(with)f(its)h(index)e(in)i(the)f(stac)m(k.)630 -5230 y Ft(+)p Fj(N)384 b Fu(Displa)m(ys)23 b(the)f Fr(N)10 -b Fu(th)21 b(directory)h(\(coun)m(ting)h(from)e(the)h(left)g(of)g(the)g -(list)g(prin)m(ted)1110 5340 y(b)m(y)30 b Ft(dirs)f Fu(when)h(in)m(v)m -(ok)m(ed)i(without)e(options\),)h(starting)g(with)g(zero.)p -eop end -%%Page: 98 104 -TeXDict begin 98 103 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(98)630 299 y Ft(-)p -Fj(N)384 b Fu(Displa)m(ys)47 b(the)g Fr(N)10 b Fu(th)46 -b(directory)h(\(coun)m(ting)g(from)f(the)g(righ)m(t)h(of)g(the)f(list) -1110 408 y(prin)m(ted)25 b(b)m(y)g Ft(dirs)g Fu(when)f(in)m(v)m(ok)m -(ed)j(without)f(options\),)h(starting)g(with)e(zero.)150 -583 y Ft(popd)870 725 y(popd)47 b([-n])f([+)p Fj(N)h -Ft(|)h(-)p Fj(N)p Ft(])630 867 y Fu(When)32 b(no)g(argumen)m(ts)h(are)g +Ft(DIRSTACK)e Fu(shell)150 4790 y(v)-5 b(ariable.)150 +5011 y Fk(6.8.1)63 b(Directory)40 b(Stac)m(k)g(Builtins)150 +5194 y Ft(dirs)870 5340 y(dirs)47 b([-clpv])e([+)p Fj(N)i +Ft(|)h(-)p Fj(N)p Ft(])p eop end +%%Page: 103 109 +TeXDict begin 103 108 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(103)630 299 y(Displa)m(y)35 +b(the)f(list)g(of)g(curren)m(tly)g(remem)m(b)s(ered)f(directories.)51 +b(Directories)36 b(are)e(added)f(to)630 408 y(the)28 +b(list)h(with)f(the)g Ft(pushd)f Fu(command;)i(the)f +Ft(popd)f Fu(command)h(remo)m(v)m(es)h(directories)g(from)630 +518 y(the)i(list.)41 b(The)30 b(curren)m(t)g(directory)h(is)f(alw)m(a)m +(ys)i(the)f(\014rst)e(directory)i(in)f(the)h(stac)m(k.)630 +676 y Ft(-c)384 b Fu(Clears)31 b(the)f(directory)h(stac)m(k)h(b)m(y)e +(deleting)h(all)h(of)e(the)h(elemen)m(ts.)630 833 y Ft(-l)384 +b Fu(Pro)s(duces)31 b(a)h(listing)h(using)e(full)h(pathnames;)h(the)f +(default)g(listing)h(format)1110 943 y(uses)d(a)h(tilde)g(to)g(denote)g +(the)f(home)h(directory)-8 b(.)630 1100 y Ft(-p)384 b +Fu(Causes)30 b Ft(dirs)f Fu(to)i(prin)m(t)f(the)h(directory)g(stac)m(k) +h(with)e(one)g(en)m(try)h(p)s(er)e(line.)630 1258 y Ft(-v)384 +b Fu(Causes)36 b Ft(dirs)f Fu(to)i(prin)m(t)f(the)g(directory)h(stac)m +(k)h(with)e(one)h(en)m(try)f(p)s(er)f(line,)1110 1367 +y(pre\014xing)30 b(eac)m(h)h(en)m(try)g(with)f(its)h(index)e(in)i(the)f +(stac)m(k.)630 1525 y Ft(+)p Fj(N)384 b Fu(Displa)m(ys)23 +b(the)f Fr(N)10 b Fu(th)21 b(directory)h(\(coun)m(ting)h(from)e(the)h +(left)g(of)g(the)g(list)g(prin)m(ted)1110 1634 y(b)m(y)30 +b Ft(dirs)f Fu(when)h(in)m(v)m(ok)m(ed)i(without)e(options\),)h +(starting)g(with)g(zero.)630 1792 y Ft(-)p Fj(N)384 b +Fu(Displa)m(ys)47 b(the)g Fr(N)10 b Fu(th)46 b(directory)h(\(coun)m +(ting)g(from)f(the)g(righ)m(t)h(of)g(the)f(list)1110 +1902 y(prin)m(ted)25 b(b)m(y)g Ft(dirs)g Fu(when)f(in)m(v)m(ok)m(ed)j +(without)f(options\),)h(starting)g(with)e(zero.)150 2059 +y Ft(popd)870 2193 y(popd)47 b([-n])f([+)p Fj(N)h Ft(|)h(-)p +Fj(N)p Ft(])630 2326 y Fu(Remo)m(v)m(es)34 b(elemen)m(ts)g(from)e(the)h +(directory)g(stac)m(k.)49 b(The)32 b(elemen)m(ts)i(are)f(n)m(um)m(b)s +(ered)e(from)630 2436 y(0)38 b(starting)h(at)f(the)g(\014rst)f +(directory)h(listed)g(b)m(y)g Ft(dirs)p Fu(;)j(that)d(is,)i +Ft(popd)c Fu(is)i(equiv)-5 b(alen)m(t)39 b(to)630 2545 +y Ft(popd)29 b(+0)p Fu(.)630 2679 y(When)j(no)g(argumen)m(ts)h(are)g (giv)m(en,)h Ft(popd)d Fu(remo)m(v)m(es)j(the)f(top)f(directory)h(from) -f(the)g(stac)m(k)630 977 y(and)f(p)s(erforms)e(a)j Ft(cd)f -Fu(to)h(the)f(new)g(top)h(directory)-8 b(.)44 b(The)31 -b(elemen)m(ts)i(are)e(n)m(um)m(b)s(ered)f(from)630 1086 -y(0)j(starting)g(at)g(the)f(\014rst)g(directory)g(listed)h(with)f -Ft(dirs)p Fu(;)g(that)h(is,)g Ft(popd)e Fu(is)i(equiv)-5 -b(alen)m(t)33 b(to)630 1196 y Ft(popd)c(+0)p Fu(.)630 -1370 y Ft(-n)384 b Fu(Suppresses)27 b(the)j(normal)g(c)m(hange)g(of)g -(directory)g(when)e(remo)m(ving)j(directo-)1110 1480 -y(ries)f(from)g(the)h(stac)m(k,)h(so)f(that)g(only)f(the)h(stac)m(k)g -(is)g(manipulated.)630 1655 y Ft(+)p Fj(N)384 b Fu(Remo)m(v)m(es)22 -b(the)f Fr(N)10 b Fu(th)20 b(directory)g(\(coun)m(ting)i(from)e(the)g -(left)h(of)g(the)f(list)h(prin)m(ted)1110 1764 y(b)m(y)30 -b Ft(dirs)p Fu(\),)g(starting)h(with)f(zero.)630 1939 -y Ft(-)p Fj(N)384 b Fu(Remo)m(v)m(es)46 b(the)g Fr(N)10 -b Fu(th)44 b(directory)h(\(coun)m(ting)h(from)f(the)g(righ)m(t)g(of)g -(the)g(list)1110 2048 y(prin)m(ted)30 b(b)m(y)g Ft(dirs)p -Fu(\),)g(starting)h(with)f(zero.)150 2223 y Ft(pushd)870 -2365 y(pushd)46 b([-n])h([+)p Fj(N)g Ft(|)g Fj(-N)h Ft(|)f -Fj(dir)p Ft(])630 2507 y Fu(Sa)m(v)m(e)30 b(the)e(curren)m(t)g -(directory)h(on)f(the)h(top)f(of)h(the)f(directory)h(stac)m(k)h(and)e -(then)g Ft(cd)f Fu(to)i Fr(dir)p Fu(.)630 2617 y(With)39 -b(no)f(argumen)m(ts,)j Ft(pushd)c Fu(exc)m(hanges)j(the)f(top)f(t)m(w)m -(o)i(directories)g(and)d(mak)m(es)j(the)630 2726 y(new)30 -b(top)g(the)h(curren)m(t)f(directory)-8 b(.)630 2901 -y Ft(-n)384 b Fu(Suppresses)24 b(the)j(normal)f(c)m(hange)h(of)g -(directory)f(when)g(rotating)h(or)f(adding)1110 3010 -y(directories)31 b(to)h(the)e(stac)m(k,)i(so)f(that)g(only)f(the)h -(stac)m(k)h(is)e(manipulated.)630 3185 y Ft(+)p Fj(N)384 -b Fu(Brings)29 b(the)f Fr(N)10 b Fu(th)29 b(directory)g(\(coun)m(ting)h -(from)e(the)g(left)i(of)e(the)h(list)g(prin)m(ted)1110 -3295 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the) -f(top)g(of)h(the)f(list)h(b)m(y)f(rotating)i(the)1110 -3404 y(stac)m(k.)630 3579 y Ft(-)p Fj(N)384 b Fu(Brings)23 -b(the)g Fr(N)10 b Fu(th)23 b(directory)h(\(coun)m(ting)g(from)e(the)i -(righ)m(t)f(of)g(the)h(list)f(prin)m(ted)1110 3688 y(b)m(y)34 +f(the)g(stac)m(k)630 2789 y(and)e(c)m(hanges)h(to)g(the)g(new)f(top)g +(directory)-8 b(.)630 2922 y(Argumen)m(ts,)31 b(if)f(supplied,)f(ha)m +(v)m(e)j(the)e(follo)m(wing)i(meanings:)630 3080 y Ft(-n)384 +b Fu(Suppresses)27 b(the)j(normal)g(c)m(hange)g(of)g(directory)g(when)e +(remo)m(ving)j(directo-)1110 3189 y(ries)f(from)g(the)h(stac)m(k,)h(so) +f(that)g(only)f(the)h(stac)m(k)g(is)g(manipulated.)630 +3347 y Ft(+)p Fj(N)384 b Fu(Remo)m(v)m(es)22 b(the)f +Fr(N)10 b Fu(th)20 b(directory)g(\(coun)m(ting)i(from)e(the)g(left)h +(of)g(the)f(list)h(prin)m(ted)1110 3456 y(b)m(y)30 b +Ft(dirs)p Fu(\),)g(starting)h(with)f(zero,)i(from)e(the)g(stac)m(k.)630 +3614 y Ft(-)p Fj(N)384 b Fu(Remo)m(v)m(es)46 b(the)g +Fr(N)10 b Fu(th)44 b(directory)h(\(coun)m(ting)h(from)f(the)g(righ)m(t) +g(of)g(the)g(list)1110 3724 y(prin)m(ted)30 b(b)m(y)g +Ft(dirs)p Fu(\),)g(starting)h(with)f(zero,)i(from)e(the)g(stac)m(k.)630 +3881 y(If)d(the)h(top)g(elemen)m(t)h(of)f(the)g(directory)g(stac)m(k)h +(is)e(mo)s(di\014ed,)h(and)f(the)h Ft(-n)f Fu(option)h(w)m(as)g(not)630 +3991 y(supplied,)j Ft(popd)g Fu(uses)g(the)h Ft(cd)f +Fu(builtin)g(to)i(c)m(hange)g(to)f(the)g(directory)g(at)h(the)f(top)g +(of)g(the)630 4100 y(stac)m(k.)42 b(If)30 b(the)h Ft(cd)e +Fu(fails,)j Ft(popd)d Fu(returns)g(a)i(non-zero)g(v)-5 +b(alue.)630 4234 y(Otherwise,)34 b Ft(popd)f Fu(returns)f(an)h +(unsuccessful)g(status)g(if)h(an)f(in)m(v)-5 b(alid)34 +b(option)g(is)g(encoun-)630 4343 y(tered,)39 b(the)d(directory)h(stac)m +(k)i(is)d(empt)m(y)-8 b(,)39 b(or)e(a)g(non-existen)m(t)h(directory)f +(stac)m(k)h(en)m(try)f(is)630 4453 y(sp)s(eci\014ed.)630 +4587 y(If)32 b(the)h Ft(popd)f Fu(command)h(is)g(successful,)g(Bash)g +(runs)f Ft(dirs)f Fu(to)j(sho)m(w)f(the)g(\014nal)f(con)m(ten)m(ts)630 +4696 y(of)f(the)f(directory)h(stac)m(k,)h(and)e(the)g(return)g(status)g +(is)h(0.)150 4854 y Ft(pushd)870 4987 y(pushd)46 b([-n])h([+)p +Fj(N)g Ft(|)g Fj(-N)h Ft(|)f Fj(dir)p Ft(])630 5121 y +Fu(Adds)27 b(a)h(directory)h(to)g(the)f(top)g(of)g(the)g(directory)h +(stac)m(k,)h(or)e(rotates)h(the)f(stac)m(k,)j(making)630 +5230 y(the)37 b(new)g(top)g(of)g(the)g(stac)m(k)i(the)e(curren)m(t)f(w) +m(orking)i(directory)-8 b(.)61 b(With)38 b(no)e(argumen)m(ts,)630 +5340 y Ft(pushd)29 b Fu(exc)m(hanges)j(the)e(top)h(t)m(w)m(o)h(elemen)m +(ts)f(of)g(the)f(directory)h(stac)m(k.)p eop end +%%Page: 104 110 +TeXDict begin 104 109 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(104)630 299 y(Argumen)m(ts,)31 +b(if)f(supplied,)f(ha)m(v)m(e)j(the)e(follo)m(wing)i(meanings:)630 +455 y Ft(-n)384 b Fu(Suppresses)24 b(the)j(normal)f(c)m(hange)h(of)g +(directory)f(when)g(rotating)h(or)f(adding)1110 564 y(directories)31 +b(to)h(the)e(stac)m(k,)i(so)f(that)g(only)f(the)h(stac)m(k)h(is)e +(manipulated.)630 720 y Ft(+)p Fj(N)384 b Fu(Brings)29 +b(the)f Fr(N)10 b Fu(th)29 b(directory)g(\(coun)m(ting)h(from)e(the)g +(left)i(of)e(the)h(list)g(prin)m(ted)1110 830 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the)f(top)g(of)h -(the)f(list)h(b)m(y)f(rotating)i(the)1110 3798 y(stac)m(k.)630 -3972 y Fj(dir)336 b Fu(Mak)m(es)28 b Fr(dir)33 b Fu(b)s(e)27 -b(the)g(top)g(of)g(the)h(stac)m(k,)h(making)e(it)h(the)f(new)g(curren)m -(t)g(direc-)1110 4082 y(tory)k(as)f(if)h(it)g(had)e(b)s(een)h(supplied) -f(as)i(an)f(argumen)m(t)h(to)g(the)f Ft(cd)g Fu(builtin.)150 -4345 y Fs(6.9)68 b(Con)l(trolling)47 b(the)e(Prompt)150 -4505 y Fu(Bash)33 b(examines)h(the)f(v)-5 b(alue)33 b(of)h(the)f(arra)m -(y)g(v)-5 b(ariable)34 b Ft(PROMPT_COMMANDS)29 b Fu(just)j(b)s(efore)h -(prin)m(ting)g(eac)m(h)150 4614 y(primary)c(prompt.)40 -b(If)30 b(an)m(y)g(elemen)m(ts)i(in)e Ft(PROMPT_COMMANDS)c -Fu(are)31 b(set)f(and)g(non-n)m(ull,)g(Bash)h(executes)150 -4724 y(eac)m(h)h(v)-5 b(alue,)31 b(in)f(n)m(umeric)g(order,)g(just)g +(the)f(list)h(b)m(y)f(rotating)i(the)1110 939 y(stac)m(k.)630 +1095 y Ft(-)p Fj(N)384 b Fu(Brings)23 b(the)g Fr(N)10 +b Fu(th)23 b(directory)h(\(coun)m(ting)g(from)e(the)i(righ)m(t)f(of)g +(the)h(list)f(prin)m(ted)1110 1205 y(b)m(y)34 b Ft(dirs)p +Fu(,)g(starting)h(with)f(zero\))i(to)f(the)f(top)g(of)h(the)f(list)h(b) +m(y)f(rotating)i(the)1110 1314 y(stac)m(k.)630 1470 y +Fj(dir)336 b Fu(Mak)m(es)32 b Fr(dir)k Fu(b)s(e)30 b(the)g(top)h(of)f +(the)h(stac)m(k.)630 1626 y(After)39 b(the)g(stac)m(k)h(has)e(b)s(een)g +(mo)s(di\014ed,)i(if)f(the)g Ft(-n)f Fu(option)h(w)m(as)g(not)g +(supplied,)g Ft(pushd)630 1735 y Fu(uses)29 b(the)h Ft(cd)f +Fu(builtin)g(to)h(c)m(hange)g(to)h(the)e(directory)h(at)g(the)g(top)g +(of)f(the)h(stac)m(k.)42 b(If)29 b(the)h Ft(cd)630 1845 +y Fu(fails,)h Ft(pushd)e Fu(returns)g(a)i(non-zero)g(v)-5 +b(alue.)630 1978 y(Otherwise,)34 b(if)g(no)f(argumen)m(ts)h(are)g +(supplied,)f Ft(pushd)f Fu(returns)g(0)i(unless)f(the)g(directory)630 +2087 y(stac)m(k)g(is)f(empt)m(y)-8 b(.)46 b(When)32 b(rotating)h(the)f +(directory)g(stac)m(k,)i Ft(pushd)d Fu(returns)f(0)j(unless)e(the)630 +2197 y(directory)g(stac)m(k)h(is)e(empt)m(y)h(or)f(a)h(non-existen)m(t) +h(directory)f(stac)m(k)g(elemen)m(t)h(is)f(sp)s(eci\014ed.)630 +2330 y(If)e(the)g Ft(pushd)f Fu(command)h(is)g(successful,)h(Bash)f +(runs)f Ft(dirs)g Fu(to)i(sho)m(w)f(the)g(\014nal)g(con)m(ten)m(ts)630 +2439 y(of)i(the)f(directory)h(stac)m(k.)150 2676 y Fs(6.9)68 +b(Con)l(trolling)47 b(the)e(Prompt)150 2836 y Fu(Bash)37 +b(examines)h(the)f(v)-5 b(alue)37 b(of)g(the)h(arra)m(y)f(v)-5 +b(ariable)38 b Ft(PROMPT_COMMAND)33 b Fu(just)j(b)s(efore)h(prin)m +(ting)g(eac)m(h)150 2945 y(primary)c(prompt.)49 b(If)33 +b(an)m(y)h(elemen)m(ts)h(in)f Ft(PROMPT_COMMAND)29 b +Fu(are)34 b(set)h(and)e(non-n)m(ull,)h(Bash)g(executes)150 +3055 y(eac)m(h)e(v)-5 b(alue,)31 b(in)f(n)m(umeric)g(order,)g(just)g (as)g(if)h(it)g(had)e(b)s(een)h(t)m(yp)s(ed)g(on)g(the)h(command)f -(line.)275 4874 y(In)d(addition,)j(the)f(follo)m(wing)h(table)f +(line.)275 3188 y(In)d(addition,)j(the)f(follo)m(wing)h(table)f (describ)s(es)f(the)h(sp)s(ecial)g(c)m(haracters)h(whic)m(h)f(can)f -(app)s(ear)g(in)h(the)150 4983 y(prompt)g(v)-5 b(ariables)32 +(app)s(ear)g(in)h(the)150 3297 y(prompt)g(v)-5 b(ariables)32 b Ft(PS0)p Fu(,)d Ft(PS1)p Fu(,)h Ft(PS2)p Fu(,)g(and)f -Ft(PS4)p Fu(:)150 5165 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m -(haracter.)150 5340 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f +Ft(PS4)p Fu(:)150 3453 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m +(haracter.)150 3609 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f Ft(")p Fu(W)-8 b(eekda)m(y)32 b(Mon)m(th)f(Date)p Ft(")h Fu(format)f(\(e.g.,)h Ft(")p Fu(T)-8 b(ue)30 b(Ma)m(y)h(26)p -Ft(")p Fu(\).)p eop end -%%Page: 99 105 -TeXDict begin 99 104 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(99)150 299 y Ft(\\D{)p -Fj(format)p Ft(})630 408 y Fu(The)27 b Fr(format)i Fu(is)f(passed)e(to) -i Ft(strftime)p Fu(\(3\))f(and)f(the)i(result)f(is)g(inserted)g(in)m -(to)h(the)g(prompt)630 518 y(string;)42 b(an)d(empt)m(y)f -Fr(format)j Fu(results)d(in)g(a)h(lo)s(cale-sp)s(eci\014c)h(time)f -(represen)m(tation.)65 b(The)630 628 y(braces)31 b(are)f(required.)150 -790 y Ft(\\e)384 b Fu(An)30 b(escap)s(e)h(c)m(haracter.)150 -952 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e -(`.'.)150 1114 y Ft(\\H)384 b Fu(The)30 b(hostname.)150 -1276 y Ft(\\j)384 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m -(tly)h(managed)g(b)m(y)f(the)g(shell.)150 1438 y Ft(\\l)384 +Ft(")p Fu(\).)150 3765 y Ft(\\D{)p Fj(format)p Ft(})630 +3874 y Fu(The)c Fr(format)i Fu(is)f(passed)e(to)i Ft(strftime)p +Fu(\(3\))f(and)f(the)i(result)f(is)g(inserted)g(in)m(to)h(the)g(prompt) +630 3984 y(string;)42 b(an)d(empt)m(y)f Fr(format)j Fu(results)d(in)g +(a)h(lo)s(cale-sp)s(eci\014c)h(time)f(represen)m(tation.)65 +b(The)630 4093 y(braces)31 b(are)f(required.)150 4249 +y Ft(\\e)384 b Fu(An)30 b(escap)s(e)h(c)m(haracter.)150 +4405 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e +(`.'.)150 4561 y Ft(\\H)384 b Fu(The)30 b(hostname.)150 +4717 y Ft(\\j)384 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m +(tly)h(managed)g(b)m(y)f(the)g(shell.)150 4873 y Ft(\\l)384 b Fu(The)30 b(basename)h(of)f(the)h(shell's)f(terminal)h(device)g -(name.)150 1600 y Ft(\\n)384 b Fu(A)30 b(newline.)150 -1763 y Ft(\\r)384 b Fu(A)30 b(carriage)i(return.)150 -1925 y Ft(\\s)384 b Fu(The)22 b(name)g(of)h(the)f(shell,)i(the)f +(name.)150 5028 y Ft(\\n)384 b Fu(A)30 b(newline.)150 +5184 y Ft(\\r)384 b Fu(A)30 b(carriage)i(return.)150 +5340 y Ft(\\s)384 b Fu(The)22 b(name)g(of)h(the)f(shell,)i(the)f (basename)f(of)h Ft($0)f Fu(\(the)g(p)s(ortion)g(follo)m(wing)i(the)f -(\014nal)e(slash\).)150 2087 y Ft(\\t)384 b Fu(The)30 -b(time,)h(in)f(24-hour)h(HH:MM:SS)g(format.)150 2249 -y Ft(\\T)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.) -150 2411 y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(am/pm)f -(format.)150 2573 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f(24-hour)h -(HH:MM)g(format.)150 2735 y Ft(\\u)384 b Fu(The)30 b(username)g(of)g -(the)h(curren)m(t)f(user.)150 2898 y Ft(\\v)384 b Fu(The)30 -b(v)m(ersion)h(of)f(Bash)h(\(e.g.,)h(2.00\))150 3060 -y Ft(\\V)384 b Fu(The)30 b(release)i(of)e(Bash,)h(v)m(ersion)g -Ft(+)f Fu(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\))150 3222 -y Ft(\\w)384 b Fu(The)34 b(curren)m(t)h(w)m(orking)g(directory)-8 -b(,)37 b(with)e Ft($HOME)e Fu(abbreviated)j(with)e(a)h(tilde)h(\(uses)f -(the)630 3331 y Ft($PROMPT_DIRTRIM)26 b Fu(v)-5 b(ariable\).)150 -3494 y Ft(\\W)384 b Fu(The)30 b(basename)h(of)f Ft($PWD)p -Fu(,)g(with)g Ft($HOME)f Fu(abbreviated)h(with)g(a)h(tilde.)150 -3656 y Ft(\\!)384 b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f -(command.)150 3818 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m(b)s -(er)f(of)i(this)f(command.)150 3980 y Ft(\\$)384 b Fu(If)30 -b(the)g(e\013ectiv)m(e)j(uid)d(is)g(0,)h Ft(#)p Fu(,)g(otherwise)g -Ft($)p Fu(.)150 4142 y Ft(\\)p Fj(nnn)288 b Fu(The)30 -b(c)m(haracter)i(whose)e(ASCI)s(I)f(co)s(de)h(is)h(the)f(o)s(ctal)i(v) --5 b(alue)31 b Fr(nnn)p Fu(.)150 4304 y Ft(\\\\)384 b -Fu(A)30 b(bac)m(kslash.)150 4466 y Ft(\\[)384 b Fu(Begin)38 +(\014nal)e(slash\).)p eop end +%%Page: 105 111 +TeXDict begin 105 110 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(105)150 299 y Ft(\\t)384 +b Fu(The)30 b(time,)h(in)f(24-hour)h(HH:MM:SS)g(format.)150 +459 y Ft(\\T)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(HH:MM:SS)g +(format.)150 619 y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h +(am/pm)f(format.)150 780 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f +(24-hour)h(HH:MM)g(format.)150 940 y Ft(\\u)384 b Fu(The)30 +b(username)g(of)g(the)h(curren)m(t)f(user.)150 1100 y +Ft(\\v)384 b Fu(The)30 b(v)m(ersion)h(of)f(Bash)h(\(e.g.,)h(2.00\))150 +1261 y Ft(\\V)384 b Fu(The)30 b(release)i(of)e(Bash,)h(v)m(ersion)g +Ft(+)f Fu(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\))150 1421 +y Ft(\\w)384 b Fu(The)27 b(v)-5 b(alue)28 b(of)g(the)g +Ft(PWD)f Fu(shell)h(v)-5 b(ariable)28 b(\()p Ft($PWD)p +Fu(\),)g(with)g Ft($HOME)e Fu(abbreviated)i(with)f(a)h(tilde)630 +1530 y(\(uses)i(the)h Ft($PROMPT_DIRTRIM)26 b Fu(v)-5 +b(ariable\).)150 1691 y Ft(\\W)384 b Fu(The)30 b(basename)h(of)f +Ft($PWD)p Fu(,)g(with)g Ft($HOME)f Fu(abbreviated)h(with)g(a)h(tilde.) +150 1851 y Ft(\\!)384 b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i +(this)f(command.)150 2011 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m +(b)s(er)f(of)i(this)f(command.)150 2171 y Ft(\\$)384 +b Fu(If)30 b(the)g(e\013ectiv)m(e)j(uid)d(is)g(0,)h Ft(#)p +Fu(,)g(otherwise)g Ft($)p Fu(.)150 2332 y Ft(\\)p Fj(nnn)288 +b Fu(The)30 b(c)m(haracter)i(whose)e(ASCI)s(I)f(co)s(de)h(is)h(the)f(o) +s(ctal)i(v)-5 b(alue)31 b Fr(nnn)p Fu(.)150 2492 y Ft(\\\\)384 +b Fu(A)30 b(bac)m(kslash.)150 2652 y Ft(\\[)384 b Fu(Begin)38 b(a)f(sequence)g(of)g(non-prin)m(ting)g(c)m(haracters.)61 b(This)36 b(could)h(b)s(e)g(used)f(to)h(em)m(b)s(ed)g(a)630 -4576 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e(prompt.) -150 4738 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f(non-prin)m -(ting)g(c)m(haracters.)275 4902 y(The)25 b(command)h(n)m(um)m(b)s(er)f +2762 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e(prompt.) +150 2922 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f(non-prin)m +(ting)g(c)m(haracters.)275 3083 y(The)25 b(command)h(n)m(um)m(b)s(er)f (and)h(the)g(history)g(n)m(um)m(b)s(er)f(are)i(usually)f(di\013eren)m -(t:)39 b(the)26 b(history)g(n)m(um)m(b)s(er)150 5011 +(t:)39 b(the)26 b(history)g(n)m(um)m(b)s(er)150 3192 y(of)h(a)f(command)h(is)f(its)h(p)s(osition)f(in)g(the)h(history)f (list,)i(whic)m(h)f(ma)m(y)g(include)f(commands)g(restored)g(from)150 -5121 y(the)39 b(history)h(\014le)f(\(see)h(Section)g(9.1)h([Bash)e -(History)h(F)-8 b(acilities],)45 b(page)40 b(146\),)j(while)d(the)f -(command)150 5230 y(n)m(um)m(b)s(er)j(is)h(the)h(p)s(osition)f(in)g +3302 y(the)39 b(history)h(\014le)f(\(see)h(Section)g(9.1)h([Bash)e +(History)h(F)-8 b(acilities],)45 b(page)40 b(152\),)j(while)d(the)f +(command)150 3412 y(n)m(um)m(b)s(er)j(is)h(the)h(p)s(osition)f(in)g (the)g(sequence)h(of)f(commands)g(executed)h(during)e(the)i(curren)m(t) -f(shell)150 5340 y(session.)p eop end -%%Page: 100 106 -TeXDict begin 100 105 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2439 b(100)275 299 y(After)28 -b(the)g(string)g(is)g(deco)s(ded,)g(it)g(is)g(expanded)f(via)i -(parameter)f(expansion,)h(command)f(substitu-)150 408 -y(tion,)g(arithmetic)f(expansion,)g(and)e(quote)i(remo)m(v)-5 -b(al,)29 b(sub)5 b(ject)25 b(to)i(the)f(v)-5 b(alue)27 -b(of)f(the)g Ft(promptvars)e Fu(shell)150 518 y(option)i(\(see)h -(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)j(page)e(66\).)41 -b(This)25 b(can)h(ha)m(v)m(e)h(un)m(w)m(an)m(ted)f(side)g(e\013ects)150 -628 y(if)i(escap)s(ed)f(p)s(ortions)g(of)h(the)g(string)f(app)s(ear)g -(within)g(command)h(substitution)f(or)h(con)m(tain)g(c)m(haracters)150 -737 y(sp)s(ecial)j(to)g(w)m(ord)f(expansion.)150 1015 -y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150 1174 y -Fu(If)34 b(Bash)g(is)g(started)g(with)g(the)g(name)h +f(shell)150 3521 y(session.)275 3657 y(After)28 b(the)g(string)g(is)g +(deco)s(ded,)g(it)g(is)g(expanded)f(via)i(parameter)f(expansion,)h +(command)f(substitu-)150 3766 y(tion,)g(arithmetic)f(expansion,)g(and)e +(quote)i(remo)m(v)-5 b(al,)29 b(sub)5 b(ject)25 b(to)i(the)f(v)-5 +b(alue)27 b(of)f(the)g Ft(promptvars)e Fu(shell)150 3876 +y(option)i(\(see)h(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)j(page)e +(71\).)41 b(This)25 b(can)h(ha)m(v)m(e)h(un)m(w)m(an)m(ted)f(side)g +(e\013ects)150 3985 y(if)i(escap)s(ed)f(p)s(ortions)g(of)h(the)g +(string)f(app)s(ear)g(within)g(command)h(substitution)f(or)h(con)m +(tain)g(c)m(haracters)150 4095 y(sp)s(ecial)j(to)g(w)m(ord)f +(expansion.)150 4337 y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150 +4496 y Fu(If)34 b(Bash)g(is)g(started)g(with)g(the)g(name)h Ft(rbash)p Fu(,)e(or)h(the)h Ft(--restricted)30 b Fu(or)k -Ft(-r)g Fu(option)g(is)g(supplied)f(at)150 1284 y(in)m(v)m(o)s(cation,) +Ft(-r)g Fu(option)g(is)g(supplied)f(at)150 4606 y(in)m(v)m(o)s(cation,) d(the)d(shell)g(b)s(ecomes)h(restricted.)40 b(A)27 b(restricted)h (shell)f(is)g(used)f(to)i(set)f(up)f(an)h(en)m(vironmen)m(t)150 -1393 y(more)g(con)m(trolled)i(than)e(the)g(standard)g(shell.)40 +4716 y(more)g(con)m(trolled)i(than)e(the)g(standard)g(shell.)40 b(A)27 b(restricted)h(shell)f(b)s(eha)m(v)m(es)h(iden)m(tically)h(to)f -Ft(bash)e Fu(with)150 1503 y(the)31 b(exception)g(that)g(the)g(follo)m +Ft(bash)e Fu(with)150 4825 y(the)31 b(exception)g(that)g(the)g(follo)m (wing)h(are)e(disallo)m(w)m(ed)i(or)e(not)h(p)s(erformed:)225 -1662 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g(the)f -Ft(cd)g Fu(builtin.)225 1809 y Fq(\017)60 b Fu(Setting)33 +4961 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g(the)f +Ft(cd)g Fu(builtin.)225 5095 y Fq(\017)60 b Fu(Setting)33 b(or)g(unsetting)f(the)h(v)-5 b(alues)33 b(of)f(the)h Ft(SHELL)p Fu(,)f Ft(PATH)p Fu(,)g Ft(HISTFILE)p Fu(,)f Ft(ENV)p Fu(,)h(or)g Ft(BASH_ENV)e Fu(v)-5 b(ari-)330 -1919 y(ables.)225 2065 y Fq(\017)60 b Fu(Sp)s(ecifying)30 -b(command)g(names)g(con)m(taining)i(slashes.)225 2212 -y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m(taining)i -(a)f(slash)f(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(.)h -Fu(builtin)e(command.)225 2359 y Fq(\017)60 b Fu(Sp)s(ecifying)33 -b(a)i(\014lename)f(con)m(taining)h(a)g(slash)e(as)i(an)e(argumen)m(t)i -(to)g(the)f Ft(history)e Fu(builtin)h(com-)330 2469 y(mand.)225 -2615 y Fq(\017)60 b Fu(Sp)s(ecifying)32 b(a)g(\014lename)h(con)m -(taining)h(a)e(slash)g(as)h(an)f(argumen)m(t)h(to)g(the)f -Ft(-p)g Fu(option)h(to)g(the)f Ft(hash)330 2725 y Fu(builtin)e -(command.)225 2872 y Fq(\017)60 b Fu(Imp)s(orting)30 -b(function)g(de\014nitions)g(from)f(the)i(shell)g(en)m(vironmen)m(t)g -(at)g(startup.)225 3018 y Fq(\017)60 b Fu(P)m(arsing)31 -b(the)f(v)-5 b(alue)31 b(of)g Ft(SHELLOPTS)d Fu(from)h(the)i(shell)g -(en)m(vironmen)m(t)g(at)g(startup.)225 3165 y Fq(\017)60 -b Fu(Redirecting)31 b(output)f(using)g(the)h(`)p Ft(>)p -Fu(',)g(`)p Ft(>|)p Fu(',)f(`)p Ft(<>)p Fu(',)h(`)p Ft(>&)p -Fu(',)f(`)p Ft(&>)p Fu(',)h(and)e(`)p Ft(>>)p Fu(')i(redirection)g(op)s -(erators.)225 3312 y Fq(\017)60 b Fu(Using)31 b(the)f -Ft(exec)f Fu(builtin)h(to)h(replace)h(the)e(shell)h(with)f(another)h -(command.)225 3459 y Fq(\017)60 b Fu(Adding)24 b(or)g(deleting)i -(builtin)e(commands)g(with)h(the)f Ft(-f)g Fu(and)g Ft(-d)g -Fu(options)h(to)h(the)e Ft(enable)f Fu(builtin.)225 3606 -y Fq(\017)60 b Fu(Using)31 b(the)f Ft(enable)f Fu(builtin)h(command)g -(to)h(enable)g(disabled)f(shell)g(builtins.)225 3752 -y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(the)g Ft(-p)g Fu(option)h(to)g -(the)g Ft(command)d Fu(builtin.)225 3899 y Fq(\017)60 -b Fu(T)-8 b(urning)29 b(o\013)i(restricted)g(mo)s(de)f(with)g(`)p -Ft(set)g(+r)p Fu(')g(or)g(`)p Ft(set)g(+o)g(restricted)p -Fu('.)275 4096 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m -(y)g(startup)f(\014les)g(are)h(read.)275 4255 y(When)j(a)i(command)e -(that)i(is)f(found)f(to)h(b)s(e)g(a)g(shell)g(script)g(is)g(executed)h -(\(see)g(Section)g(3.8)g([Shell)150 4364 y(Scripts],)25 -b(page)e(42\),)j Ft(rbash)c Fu(turns)g(o\013)i(an)m(y)f(restrictions)h -(in)f(the)g(shell)h(spa)m(wned)e(to)i(execute)g(the)g(script.)275 -4523 y(The)42 b(restricted)h(shell)g(mo)s(de)f(is)g(only)h(one)g(comp)s -(onen)m(t)f(of)h(a)g(useful)f(restricted)h(en)m(vironmen)m(t.)150 -4633 y(It)36 b(should)g(b)s(e)f(accompanied)j(b)m(y)e(setting)h -Ft(PATH)e Fu(to)i(a)g(v)-5 b(alue)37 b(that)g(allo)m(ws)g(execution)h -(of)e(only)h(a)f(few)150 4743 y(v)m(eri\014ed)26 b(commands)g -(\(commands)g(that)h(allo)m(w)h(shell)f(escap)s(es)f(are)h -(particularly)g(vulnerable\),)g(lea)m(ving)150 4852 y(the)i(user)f(in)h -(a)g(non-writable)h(directory)f(other)g(than)g(his)g(home)g(directory)g -(after)h(login,)g(not)f(allo)m(wing)150 4962 y(the)j(restricted)g -(shell)g(to)g(execute)h(shell)e(scripts,)h(and)f(cleaning)i(the)e(en)m -(vironmen)m(t)i(of)e(v)-5 b(ariables)32 b(that)150 5071 -y(cause)f(some)g(commands)f(to)h(mo)s(dify)e(their)i(b)s(eha)m(vior)f -(\(e.g.,)j Ft(VISUAL)28 b Fu(or)j Ft(PAGER)p Fu(\).)275 -5230 y(Mo)s(dern)e(systems)g(pro)m(vide)h(more)g(secure)g(w)m(a)m(ys)g -(to)h(implemen)m(t)f(a)g(restricted)h(en)m(vironmen)m(t,)f(suc)m(h)150 -5340 y(as)h Ft(jails)p Fu(,)e Ft(zones)p Fu(,)g(or)h -Ft(containers)p Fu(.)p eop end -%%Page: 101 107 -TeXDict begin 101 106 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2439 b(101)150 299 y Fs(6.11)68 -b(Bash)45 b(POSIX)f(Mo)t(de)150 458 y Fu(Starting)39 -b(Bash)f(with)g(the)h Ft(--posix)d Fu(command-line)j(option)g(or)f -(executing)h(`)p Ft(set)30 b(-o)g(posix)p Fu(')37 b(while)150 -568 y(Bash)26 b(is)g(running)e(will)j(cause)f(Bash)g(to)h(conform)f -(more)g(closely)h(to)g(the)f Fm(posix)f Fu(standard)g(b)m(y)h(c)m -(hanging)150 677 y(the)31 b(b)s(eha)m(vior)f(to)h(matc)m(h)g(that)g(sp) -s(eci\014ed)f(b)m(y)g Fm(posix)g Fu(in)g(areas)h(where)f(the)h(Bash)f -(default)h(di\013ers.)275 810 y(When)f(in)m(v)m(ok)m(ed)h(as)g +5205 y(ables.)225 5340 y Fq(\017)60 b Fu(Sp)s(ecifying)30 +b(command)g(names)g(con)m(taining)i(slashes.)p eop end +%%Page: 106 112 +TeXDict begin 106 111 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(106)225 299 y Fq(\017)60 +b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m(taining)i(a)f(slash)f +(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(.)h Fu(builtin)e(command.)225 +434 y Fq(\017)60 b Fu(Sp)s(ecifying)33 b(a)i(\014lename)f(con)m +(taining)h(a)g(slash)e(as)i(an)e(argumen)m(t)i(to)g(the)f +Ft(history)e Fu(builtin)h(com-)330 543 y(mand.)225 678 +y Fq(\017)60 b Fu(Sp)s(ecifying)32 b(a)g(\014lename)h(con)m(taining)h +(a)e(slash)g(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(-p)g +Fu(option)h(to)g(the)f Ft(hash)330 788 y Fu(builtin)e(command.)225 +923 y Fq(\017)60 b Fu(Imp)s(orting)30 b(function)g(de\014nitions)g +(from)f(the)i(shell)g(en)m(vironmen)m(t)g(at)g(startup.)225 +1058 y Fq(\017)60 b Fu(P)m(arsing)31 b(the)f(v)-5 b(alue)31 +b(of)g Ft(SHELLOPTS)d Fu(from)h(the)i(shell)g(en)m(vironmen)m(t)g(at)g +(startup.)225 1193 y Fq(\017)60 b Fu(Redirecting)31 b(output)f(using)g +(the)h(`)p Ft(>)p Fu(',)g(`)p Ft(>|)p Fu(',)f(`)p Ft(<>)p +Fu(',)h(`)p Ft(>&)p Fu(',)f(`)p Ft(&>)p Fu(',)h(and)e(`)p +Ft(>>)p Fu(')i(redirection)g(op)s(erators.)225 1327 y +Fq(\017)60 b Fu(Using)31 b(the)f Ft(exec)f Fu(builtin)h(to)h(replace)h +(the)e(shell)h(with)f(another)h(command.)225 1462 y Fq(\017)60 +b Fu(Adding)24 b(or)g(deleting)i(builtin)e(commands)g(with)h(the)f +Ft(-f)g Fu(and)g Ft(-d)g Fu(options)h(to)h(the)e Ft(enable)f +Fu(builtin.)225 1597 y Fq(\017)60 b Fu(Using)31 b(the)f +Ft(enable)f Fu(builtin)h(command)g(to)h(enable)g(disabled)f(shell)g +(builtins.)225 1732 y Fq(\017)60 b Fu(Sp)s(ecifying)30 +b(the)g Ft(-p)g Fu(option)h(to)g(the)g Ft(command)d Fu(builtin.)225 +1867 y Fq(\017)60 b Fu(T)-8 b(urning)29 b(o\013)i(restricted)g(mo)s(de) +f(with)g(`)p Ft(set)g(+r)p Fu(')g(or)g(`)p Ft(shopt)f(-u)h +(restricted_shell)p Fu('.)275 2028 y(These)g(restrictions)h(are)g +(enforced)f(after)h(an)m(y)g(startup)f(\014les)g(are)h(read.)275 +2163 y(When)j(a)i(command)e(that)i(is)f(found)f(to)h(b)s(e)g(a)g(shell) +g(script)g(is)g(executed)h(\(see)g(Section)g(3.8)g([Shell)150 +2273 y(Scripts],)25 b(page)e(46\),)j Ft(rbash)c Fu(turns)g(o\013)i(an)m +(y)f(restrictions)h(in)f(the)g(shell)h(spa)m(wned)e(to)i(execute)g(the) +g(script.)275 2408 y(The)32 b(restricted)h(shell)g(mo)s(de)g(is)g(only) +g(one)g(comp)s(onen)m(t)g(of)g(a)g(useful)f(restricted)i(en)m(vironmen) +m(t.)49 b(It)150 2517 y(should)22 b(b)s(e)f(accompanied)j(b)m(y)e +(setting)i Ft(PATH)d Fu(to)j(a)f(v)-5 b(alue)23 b(that)g(allo)m(ws)h +(execution)f(of)g(only)g(a)g(few)f(v)m(eri\014ed)150 +2627 y(commands)35 b(\(commands)g(that)h(allo)m(w)g(shell)f(escap)s(es) +h(are)f(particularly)h(vulnerable\),)h(c)m(hanging)f(the)150 +2737 y(curren)m(t)28 b(directory)g(to)h(a)f(non-writable)g(directory)g +(other)g(than)g Ft($HOME)e Fu(after)j(login,)g(not)f(allo)m(wing)i(the) +150 2846 y(restricted)25 b(shell)g(to)h(execute)g(shell)f(scripts,)h +(and)e(cleaning)i(the)f(en)m(vironmen)m(t)h(of)f(v)-5 +b(ariables)25 b(that)g(cause)150 2956 y(some)31 b(commands)f(to)h(mo)s +(dify)e(their)i(b)s(eha)m(vior)f(\(e.g.,)j Ft(VISUAL)28 +b Fu(or)j Ft(PAGER)p Fu(\).)275 3091 y(Mo)s(dern)e(systems)g(pro)m +(vide)h(more)g(secure)g(w)m(a)m(ys)g(to)h(implemen)m(t)f(a)g +(restricted)h(en)m(vironmen)m(t,)f(suc)m(h)150 3201 y(as)h +Ft(jails)p Fu(,)e Ft(zones)p Fu(,)g(or)h Ft(containers)p +Fu(.)150 3443 y Fs(6.11)68 b(Bash)45 b(POSIX)f(Mo)t(de)150 +3602 y Fu(Starting)39 b(Bash)f(with)g(the)h Ft(--posix)d +Fu(command-line)j(option)g(or)f(executing)h(`)p Ft(set)30 +b(-o)g(posix)p Fu(')37 b(while)150 3712 y(Bash)26 b(is)g(running)e +(will)j(cause)f(Bash)g(to)h(conform)f(more)g(closely)h(to)g(the)f +Fm(posix)f Fu(standard)g(b)m(y)h(c)m(hanging)150 3821 +y(the)31 b(b)s(eha)m(vior)f(to)h(matc)m(h)g(that)g(sp)s(eci\014ed)f(b)m +(y)g Fm(posix)g Fu(in)g(areas)h(where)f(the)h(Bash)f(default)h +(di\013ers.)275 3957 y(When)f(in)m(v)m(ok)m(ed)h(as)g Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g Fm(posix)e Fu(mo)s(de)h(after)h -(reading)g(the)f(startup)g(\014les.)275 942 y(The)f(follo)m(wing)j +(reading)g(the)f(startup)g(\014les.)275 4092 y(The)f(follo)m(wing)j (list)f(is)g(what's)f(c)m(hanged)h(when)e(`)p Fm(posix)h -Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 1074 y(1.)61 b(Bash)31 +Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 4227 y(1.)61 b(Bash)31 b(ensures)e(that)i(the)f Ft(POSIXLY_CORRECT)d Fu(v)-5 -b(ariable)31 b(is)f(set.)199 1206 y(2.)61 b(When)28 b(a)i(command)e(in) +b(ariable)31 b(is)f(set.)199 4362 y(2.)61 b(When)28 b(a)i(command)e(in) g(the)h(hash)f(table)i(no)e(longer)h(exists,)h(Bash)f(will)g(re-searc)m -(h)h Ft($PATH)d Fu(to)i(\014nd)330 1316 y(the)i(new)e(lo)s(cation.)43 +(h)h Ft($PATH)d Fu(to)i(\014nd)330 4472 y(the)i(new)e(lo)s(cation.)43 b(This)29 b(is)i(also)g(a)m(v)-5 b(ailable)33 b(with)d(`)p -Ft(shopt)f(-s)h(checkhash)p Fu('.)199 1448 y(3.)61 b(Bash)36 +Ft(shopt)f(-s)h(checkhash)p Fu('.)199 4607 y(3.)61 b(Bash)36 b(will)g(not)g(insert)g(a)g(command)f(without)h(the)g(execute)h(bit)f -(set)g(in)m(to)h(the)f(command)g(hash)330 1558 y(table,)c(ev)m(en)f(if) +(set)g(in)m(to)h(the)f(command)g(hash)330 4716 y(table,)c(ev)m(en)f(if) f(it)h(returns)e(it)i(as)g(a)f(\(last-ditc)m(h\))j(result)d(from)g(a)h -Ft($PATH)e Fu(searc)m(h.)199 1690 y(4.)61 b(The)42 b(message)h(prin)m +Ft($PATH)e Fu(searc)m(h.)199 4851 y(4.)61 b(The)42 b(message)h(prin)m (ted)e(b)m(y)h(the)g(job)g(con)m(trol)i(co)s(de)e(and)f(builtins)h -(when)f(a)h(job)g(exits)h(with)f(a)330 1800 y(non-zero)31 -b(status)g(is)f(`Done\(status\)'.)199 1932 y(5.)61 b(The)40 +(when)f(a)h(job)g(exits)h(with)f(a)330 4961 y(non-zero)31 +b(status)g(is)f(`Done\(status\)'.)199 5095 y(5.)61 b(The)40 b(message)h(prin)m(ted)f(b)m(y)g(the)h(job)f(con)m(trol)h(co)s(de)g (and)f(builtins)f(when)h(a)g(job)g(is)h(stopp)s(ed)e(is)330 -2041 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31 b(where)f +5205 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31 b(where)f Fr(signame)36 b Fu(is,)31 b(for)f(example,)h Ft(SIGTSTP)p -Fu(.)199 2174 y(6.)61 b(Alias)31 b(expansion)g(is)f(alw)m(a)m(ys)i -(enabled,)e(ev)m(en)i(in)e(non-in)m(teractiv)m(e)j(shells.)199 -2306 y(7.)61 b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con) -m(text)i(where)d(reserv)m(ed)h(w)m(ords)f(are)i(recognized)g(do)f(not) -330 2415 y(undergo)30 b(alias)h(expansion.)199 2548 y(8.)61 -b(The)38 b Fm(posix)h Ft(PS1)f Fu(and)g Ft(PS2)g Fu(expansions)g(of)i -(`)p Ft(!)p Fu(')f(to)g(the)g(history)g(n)m(um)m(b)s(er)f(and)g(`)p -Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 2657 y(enabled,)26 -b(and)f(parameter)g(expansion)g(is)g(p)s(erformed)e(on)i(the)g(v)-5 -b(alues)25 b(of)g Ft(PS1)f Fu(and)h Ft(PS2)f Fu(regardless)330 -2767 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c -Fu(option.)199 2899 y(9.)61 b(The)30 b Fm(posix)g Fu(startup)f(\014les) -i(are)g(executed)g(\()p Ft($ENV)p Fu(\))f(rather)g(than)g(the)h(normal) -f(Bash)g(\014les.)154 3031 y(10.)61 b(Tilde)30 b(expansion)g(is)f(only) -h(p)s(erformed)f(on)h(assignmen)m(ts)g(preceding)g(a)g(command)g(name,) -g(rather)330 3141 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h -(on)e(the)h(line.)154 3273 y(11.)61 b(The)30 b(default)g(history)h -(\014le)f(is)h Ft(~/.sh_history)26 b Fu(\(this)31 b(is)f(the)h(default) -g(v)-5 b(alue)30 b(of)h Ft($HISTFILE)p Fu(\).)154 3405 -y(12.)61 b(Redirection)25 b(op)s(erators)f(do)g(not)g(p)s(erform)f -(\014lename)h(expansion)g(on)g(the)g(w)m(ord)f(in)h(the)g(redirection) -330 3515 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154 -3647 y(13.)61 b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e +Fu(.)199 5340 y(6.)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.)p +eop end +%%Page: 107 113 +TeXDict begin 107 112 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(107)199 299 y(7.)61 +b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con)m(text)i +(where)d(reserv)m(ed)h(w)m(ords)f(are)i(recognized)g(do)f(not)330 +408 y(undergo)30 b(alias)h(expansion.)199 536 y(8.)61 +b(Alias)45 b(expansion)e(is)h(p)s(erformed)f(when)f(initially)k +(parsing)d(a)h(command)g(substitution.)80 b(The)330 646 +y(default)44 b(mo)s(de)g(generally)h(defers)f(it,)k(when)43 +b(enabled,)48 b(un)m(til)c(the)g(command)g(substitution)g(is)330 +756 y(executed.)77 b(This)42 b(means)g(that)h(command)f(substitution)f +(will)i(not)g(expand)e(aliases)j(that)f(are)330 865 y(de\014ned)34 +b(after)h(the)g(command)f(substitution)h(is)g(initially)h(parsed)e +(\(e.g.,)k(as)d(part)f(of)h(a)g(function)330 975 y(de\014nition\).)199 +1103 y(9.)61 b(The)38 b Fm(posix)h Ft(PS1)f Fu(and)g +Ft(PS2)g Fu(expansions)g(of)i(`)p Ft(!)p Fu(')f(to)g(the)g(history)g(n) +m(um)m(b)s(er)f(and)g(`)p Ft(!!)p Fu(')h(to)g(`)p Ft(!)p +Fu(')h(are)330 1212 y(enabled,)26 b(and)f(parameter)g(expansion)g(is)g +(p)s(erformed)e(on)i(the)g(v)-5 b(alues)25 b(of)g Ft(PS1)f +Fu(and)h Ft(PS2)f Fu(regardless)330 1322 y(of)31 b(the)f(setting)i(of)e +(the)h Ft(promptvars)c Fu(option.)154 1450 y(10.)61 b(The)30 +b Fm(posix)g Fu(startup)f(\014les)i(are)g(executed)g(\()p +Ft($ENV)p Fu(\))f(rather)g(than)g(the)h(normal)f(Bash)g(\014les.)154 +1577 y(11.)61 b(Tilde)30 b(expansion)g(is)f(only)h(p)s(erformed)f(on)h +(assignmen)m(ts)g(preceding)g(a)g(command)g(name,)g(rather)330 +1687 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h(on)e(the)h +(line.)154 1815 y(12.)61 b(The)30 b(default)g(history)h(\014le)f(is)h +Ft(~/.sh_history)26 b Fu(\(this)31 b(is)f(the)h(default)g(v)-5 +b(alue)30 b(of)h Ft($HISTFILE)p Fu(\).)154 1943 y(13.)61 +b(Redirection)25 b(op)s(erators)f(do)g(not)g(p)s(erform)f(\014lename)h +(expansion)g(on)g(the)g(w)m(ord)f(in)h(the)g(redirection)330 +2052 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154 +2180 y(14.)61 b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e (w)m(ord)h(splitting)h(on)f(the)h(w)m(ord)f(in)g(the)g(redirection.)154 -3779 y(14.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5 +2308 y(15.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5 b(alid)35 b(shell)f Ft(name)p Fu(s.)52 b(That)34 b(is,)i(they)f(ma)m(y) -g(not)g(con)m(tain)g(c)m(haracters)330 3889 y(other)e(than)g(letters,)h +g(not)g(con)m(tain)g(c)m(haracters)330 2418 y(other)e(than)g(letters,)h (digits,)h(and)d(underscores,)h(and)f(ma)m(y)h(not)g(start)h(with)e(a)h -(digit.)49 b(Declaring)330 3999 y(a)31 b(function)f(with)g(an)g(in)m(v) +(digit.)49 b(Declaring)330 2527 y(a)31 b(function)f(with)g(an)g(in)m(v) -5 b(alid)31 b(name)g(causes)f(a)h(fatal)h(syn)m(tax)f(error)f(in)g -(non-in)m(teractiv)m(e)j(shells.)154 4131 y(15.)61 b(F)-8 +(non-in)m(teractiv)m(e)j(shells.)154 2655 y(16.)61 b(F)-8 b(unction)31 b(names)f(ma)m(y)h(not)g(b)s(e)f(the)g(same)h(as)g(one)f (of)h(the)f Fm(posix)g Fu(sp)s(ecial)h(builtins.)154 -4263 y(16.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e +2783 y(17.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e (b)s(efore)h(shell)h(functions)f(during)f(command)h(lo)s(okup.)154 -4395 y(17.)61 b(When)48 b(prin)m(ting)g(shell)h(function)f +2911 y(18.)61 b(When)48 b(prin)m(ting)g(shell)h(function)f (de\014nitions)g(\(e.g.,)55 b(b)m(y)48 b Ft(type)p Fu(\),)k(Bash)d(do)s -(es)f(not)h(prin)m(t)f(the)330 4505 y Ft(function)28 -b Fu(k)m(eyw)m(ord.)154 4637 y(18.)61 b(Literal)28 b(tildes)g(that)f +(es)f(not)h(prin)m(t)f(the)330 3020 y Ft(function)28 +b Fu(k)m(eyw)m(ord.)154 3148 y(19.)61 b(Literal)28 b(tildes)g(that)f (app)s(ear)f(as)i(the)f(\014rst)f(c)m(haracter)j(in)d(elemen)m(ts)j(of) e(the)g Ft(PATH)f Fu(v)-5 b(ariable)27 b(are)h(not)330 -4747 y(expanded)i(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section) -i(3.5.2)h([Tilde)f(Expansion],)f(page)h(24.)154 4879 -y(19.)61 b(The)29 b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g(b)s +3258 y(expanded)i(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section) +i(3.5.2)h([Tilde)f(Expansion],)f(page)h(25.)154 3386 +y(20.)61 b(The)29 b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g(b)s (e)g(used)f(b)m(y)h(itself)g(as)g(a)h(command.)40 b(When)30 -b(used)f(in)g(this)h(w)m(a)m(y)-8 b(,)330 4989 y(it)33 +b(used)f(in)g(this)h(w)m(a)m(y)-8 b(,)330 3495 y(it)33 b(displa)m(ys)g(timing)g(statistics)h(for)e(the)h(shell)g(and)f(its)g (completed)i(c)m(hildren.)47 b(The)32 b Ft(TIMEFORMAT)330 -5098 y Fu(v)-5 b(ariable)31 b(con)m(trols)h(the)e(format)h(of)g(the)f -(timing)h(information.)154 5230 y(20.)61 b(When)33 b(parsing)g(and)f +3605 y Fu(v)-5 b(ariable)31 b(con)m(trols)h(the)e(format)h(of)g(the)f +(timing)h(information.)154 3733 y(21.)61 b(When)33 b(parsing)g(and)f (expanding)h(a)h($)p Fi({)6 b Fu(.)22 b(.)h(.)11 b Fi(})33 b Fu(expansion)g(that)h(app)s(ears)f(within)f(double)h(quotes,)330 -5340 y(single)42 b(quotes)g(are)g(no)g(longer)g(sp)s(ecial)g(and)f -(cannot)i(b)s(e)e(used)g(to)h(quote)g(a)g(closing)h(brace)f(or)p -eop end -%%Page: 102 108 -TeXDict begin 102 107 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2439 b(102)330 299 y(other)31 -b(sp)s(ecial)h(c)m(haracter,)i(unless)c(the)i(op)s(erator)f(is)g(one)h -(of)f(those)h(de\014ned)e(to)i(p)s(erform)e(pattern)330 -408 y(remo)m(v)-5 b(al.)42 b(In)30 b(this)g(case,)i(they)e(do)g(not)h -(ha)m(v)m(e)h(to)f(app)s(ear)e(as)i(matc)m(hed)g(pairs.)154 -547 y(21.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h +3842 y(single)42 b(quotes)g(are)g(no)g(longer)g(sp)s(ecial)g(and)f +(cannot)i(b)s(e)e(used)g(to)h(quote)g(a)g(closing)h(brace)f(or)330 +3952 y(other)31 b(sp)s(ecial)h(c)m(haracter,)i(unless)c(the)i(op)s +(erator)f(is)g(one)h(of)f(those)h(de\014ned)e(to)i(p)s(erform)e +(pattern)330 4061 y(remo)m(v)-5 b(al.)42 b(In)30 b(this)g(case,)i(they) +e(do)g(not)h(ha)m(v)m(e)h(to)f(app)s(ear)e(as)i(matc)m(hed)g(pairs.)154 +4189 y(22.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h Ft(time)d Fu(as)i(a)g(reserv)m(ed)f(w)m(ord)g(if)h(the)f(next)h(tok)m -(en)h(b)s(egins)d(with)i(a)330 656 y(`)p Ft(-)p Fu('.)154 -795 y(22.)61 b(The)30 b(`)p Ft(!)p Fu(')h(c)m(haracter)h(do)s(es)e(not) -h(in)m(tro)s(duce)g(history)f(expansion)h(within)f(a)h(double-quoted)g -(string,)330 905 y(ev)m(en)g(if)f(the)h Ft(histexpand)d -Fu(option)i(is)h(enabled.)154 1043 y(23.)61 b(If)24 b(a)g -Fm(posix)g Fu(sp)s(ecial)h(builtin)f(returns)f(an)h(error)g(status,)i -(a)e(non-in)m(teractiv)m(e)j(shell)e(exits.)39 b(The)24 -b(fatal)330 1153 y(errors)30 b(are)h(those)f(listed)h(in)f(the)h -Fm(posix)e Fu(standard,)h(and)g(include)g(things)g(lik)m(e)i(passing)e -(incorrect)330 1262 y(options,)43 b(redirection)d(errors,)i(v)-5 -b(ariable)41 b(assignmen)m(t)g(errors)e(for)g(assignmen)m(ts)i -(preceding)f(the)330 1372 y(command)30 b(name,)h(and)f(so)g(on.)154 -1510 y(24.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e +(en)h(b)s(egins)d(with)i(a)330 4299 y(`)p Ft(-)p Fu('.)154 +4427 y(23.)61 b(The)30 b(`)p Ft(!)p Fu(')h(c)m(haracter)h(do)s(es)e +(not)h(in)m(tro)s(duce)g(history)f(expansion)h(within)f(a)h +(double-quoted)g(string,)330 4536 y(ev)m(en)g(if)f(the)h +Ft(histexpand)d Fu(option)i(is)h(enabled.)154 4664 y(24.)61 +b(If)24 b(a)g Fm(posix)g Fu(sp)s(ecial)h(builtin)f(returns)f(an)h +(error)g(status,)i(a)e(non-in)m(teractiv)m(e)j(shell)e(exits.)39 +b(The)24 b(fatal)330 4774 y(errors)30 b(are)h(those)f(listed)h(in)f +(the)h Fm(posix)e Fu(standard,)h(and)g(include)g(things)g(lik)m(e)i +(passing)e(incorrect)330 4883 y(options,)43 b(redirection)d(errors,)i +(v)-5 b(ariable)41 b(assignmen)m(t)g(errors)e(for)g(assignmen)m(ts)i +(preceding)f(the)330 4993 y(command)30 b(name,)h(and)f(so)g(on.)154 +5121 y(25.)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 1620 y(when)38 b(no)h(command)g(name)g(follo)m +(error)e(o)s(ccurs)330 5230 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 1729 y(error)30 +b(v)-5 b(ariable)40 b(assignmen)m(t)330 5340 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 1868 -y(25.)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 1977 y(in)g(an)g(assignmen)m(t)i(statemen)m(t)g -(preceding)e(a)h(sp)s(ecial)g(builtin,)f(but)g(not)g(with)h(an)m(y)f -(other)h(simple)330 2087 y(command.)154 2225 y(26.)61 -b(A)43 b(non-in)m(teractiv)m(e)i(shell)e(exits)h(with)f(an)f(error)h -(status)g(if)g(the)g(iteration)h(v)-5 b(ariable)44 b(in)f(a)g -Ft(for)330 2335 y Fu(statemen)m(t)32 b(or)f(the)f(selection)i(v)-5 -b(ariable)32 b(in)e(a)g Ft(select)f Fu(statemen)m(t)j(is)f(a)f -(readonly)h(v)-5 b(ariable.)154 2473 y(27.)61 b(Non-in)m(teractiv)m(e) -34 b(shells)c(exit)h(if)g Fr(\014lename)k Fu(in)30 b -Ft(.)g Fr(\014lename)36 b Fu(is)31 b(not)f(found.)154 -2612 y(28.)61 b(Non-in)m(teractiv)m(e)41 b(shells)d(exit)h(if)f(a)g -(syn)m(tax)g(error)g(in)f(an)h(arithmetic)h(expansion)f(results)f(in)h -(an)330 2721 y(in)m(v)-5 b(alid)31 b(expression.)154 -2860 y(29.)61 b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g(a)f -(parameter)h(expansion)g(error)f(o)s(ccurs.)154 2998 -y(30.)61 b(Non-in)m(teractiv)m(e)27 b(shells)c(exit)i(if)e(there)h(is)f -(a)h(syn)m(tax)g(error)f(in)g(a)h(script)f(read)g(with)h(the)f -Ft(.)g Fu(or)h Ft(source)330 3108 y Fu(builtins,)30 b(or)g(in)g(a)h -(string)g(pro)s(cessed)e(b)m(y)i(the)f Ft(eval)f Fu(builtin.)154 -3246 y(31.)61 b(While)32 b(v)-5 b(ariable)32 b(indirection)f(is)g(a)m -(v)-5 b(ailable,)34 b(it)d(ma)m(y)h(not)f(b)s(e)g(applied)g(to)g(the)h -(`)p Ft(#)p Fu(')f(and)f(`)p Ft(?)p Fu(')h(sp)s(ecial)330 -3356 y(parameters.)154 3494 y(32.)61 b(When)28 b(expanding)g(the)g(`)p -Ft(*)p Fu(')g(sp)s(ecial)h(parameter)f(in)g(a)h(pattern)f(con)m(text)i -(where)e(the)g(expansion)g(is)330 3604 y(double-quoted)i(do)s(es)g(not) -h(treat)h(the)e Ft($*)g Fu(as)h(if)f(it)h(w)m(ere)g(double-quoted.)154 -3742 y(33.)61 b(Assignmen)m(t)23 b(statemen)m(ts)h(preceding)e -Fm(posix)f Fu(sp)s(ecial)i(builtins)f(p)s(ersist)g(in)f(the)i(shell)f -(en)m(vironmen)m(t)330 3852 y(after)31 b(the)f(builtin)g(completes.)154 -3990 y(34.)61 b(The)31 b Ft(command)e Fu(builtin)i(do)s(es)g(not)h -(prev)m(en)m(t)f(builtins)g(that)h(tak)m(e)h(assignmen)m(t)f(statemen)m -(ts)h(as)f(ar-)330 4100 y(gumen)m(ts)40 b(from)e(expanding)h(them)g(as) -h(assignmen)m(t)g(statemen)m(ts;)46 b(when)38 b(not)i(in)f -Fm(posix)f Fu(mo)s(de,)330 4209 y(assignmen)m(t)k(builtins)e(lose)h -(their)g(assignmen)m(t)h(statemen)m(t)h(expansion)d(prop)s(erties)g -(when)g(pre-)330 4319 y(ceded)31 b(b)m(y)f Ft(command)p -Fu(.)154 4457 y(35.)61 b(The)27 b Ft(bg)g Fu(builtin)g(uses)g(the)h -(required)f(format)h(to)g(describ)s(e)f(eac)m(h)i(job)e(placed)h(in)f -(the)h(bac)m(kground,)330 4567 y(whic)m(h)h(do)s(es)g(not)g(include)g -(an)g(indication)h(of)f(whether)f(the)h(job)g(is)g(the)h(curren)m(t)e -(or)h(previous)g(job.)154 4706 y(36.)61 b(The)23 b(output)f(of)i(`)p +b(alue)31 b(to)g(a)g(readonly)f(v)-5 b(ariable.)p eop +end +%%Page: 108 114 +TeXDict begin 108 113 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(108)154 299 y(26.)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(in)g(an)g(assignmen)m(t)i(statemen)m(t)g(preceding)e +(a)h(sp)s(ecial)g(builtin,)f(but)g(not)g(with)h(an)m(y)f(other)h +(simple)330 518 y(command.)38 b(F)-8 b(or)23 b(an)m(y)g(other)g(simple) +g(command,)h(the)f(shell)g(ab)s(orts)f(execution)i(of)f(that)g +(command,)330 628 y(and)44 b(execution)i(con)m(tin)m(ues)g(at)g(the)f +(top)g(lev)m(el)h(\()p Ft(")p Fu(the)f(shell)h(shall)f(not)g(p)s +(erform)e(an)m(y)i(further)330 737 y(pro)s(cessing)30 +b(of)h(the)f(command)g(in)g(whic)m(h)h(the)f(error)g(o)s(ccurred)p +Ft(")p Fu(\).)154 871 y(27.)61 b(A)43 b(non-in)m(teractiv)m(e)i(shell)e +(exits)h(with)f(an)f(error)h(status)g(if)g(the)g(iteration)h(v)-5 +b(ariable)44 b(in)f(a)g Ft(for)330 981 y Fu(statemen)m(t)32 +b(or)f(the)f(selection)i(v)-5 b(ariable)32 b(in)e(a)g +Ft(select)f Fu(statemen)m(t)j(is)f(a)f(readonly)h(v)-5 +b(ariable.)154 1115 y(28.)61 b(Non-in)m(teractiv)m(e)34 +b(shells)c(exit)h(if)g Fr(\014lename)k Fu(in)30 b Ft(.)g +Fr(\014lename)36 b Fu(is)31 b(not)f(found.)154 1249 y(29.)61 +b(Non-in)m(teractiv)m(e)41 b(shells)d(exit)h(if)f(a)g(syn)m(tax)g +(error)g(in)f(an)h(arithmetic)h(expansion)f(results)f(in)h(an)330 +1358 y(in)m(v)-5 b(alid)31 b(expression.)154 1492 y(30.)61 +b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g(a)f(parameter)h +(expansion)g(error)f(o)s(ccurs.)154 1626 y(31.)61 b(Non-in)m(teractiv)m +(e)27 b(shells)c(exit)i(if)e(there)h(is)f(a)h(syn)m(tax)g(error)f(in)g +(a)h(script)f(read)g(with)h(the)f Ft(.)g Fu(or)h Ft(source)330 +1736 y Fu(builtins,)30 b(or)g(in)g(a)h(string)g(pro)s(cessed)e(b)m(y)i +(the)f Ft(eval)f Fu(builtin.)154 1870 y(32.)61 b(While)32 +b(v)-5 b(ariable)32 b(indirection)f(is)g(a)m(v)-5 b(ailable,)34 +b(it)d(ma)m(y)h(not)f(b)s(e)g(applied)g(to)g(the)h(`)p +Ft(#)p Fu(')f(and)f(`)p Ft(?)p Fu(')h(sp)s(ecial)330 +1979 y(parameters.)154 2113 y(33.)61 b(Expanding)21 b(the)h(`)p +Ft(*)p Fu(')g(sp)s(ecial)h(parameter)f(in)g(a)g(pattern)h(con)m(text)g +(where)f(the)g(expansion)g(is)g(double-)330 2223 y(quoted)31 +b(do)s(es)f(not)g(treat)i(the)e Ft($*)g Fu(as)h(if)f(it)h(w)m(ere)g +(double-quoted.)154 2357 y(34.)61 b(Assignmen)m(t)23 +b(statemen)m(ts)h(preceding)e Fm(posix)f Fu(sp)s(ecial)i(builtins)f(p)s +(ersist)g(in)f(the)i(shell)f(en)m(vironmen)m(t)330 2466 +y(after)31 b(the)f(builtin)g(completes.)154 2600 y(35.)61 +b(The)31 b Ft(command)e Fu(builtin)i(do)s(es)g(not)h(prev)m(en)m(t)f +(builtins)g(that)h(tak)m(e)h(assignmen)m(t)f(statemen)m(ts)h(as)f(ar-) +330 2710 y(gumen)m(ts)40 b(from)e(expanding)h(them)g(as)h(assignmen)m +(t)g(statemen)m(ts;)46 b(when)38 b(not)i(in)f Fm(posix)f +Fu(mo)s(de,)330 2819 y(assignmen)m(t)k(builtins)e(lose)h(their)g +(assignmen)m(t)h(statemen)m(t)h(expansion)d(prop)s(erties)g(when)g +(pre-)330 2929 y(ceded)31 b(b)m(y)f Ft(command)p Fu(.)154 +3063 y(36.)61 b(The)27 b Ft(bg)g Fu(builtin)g(uses)g(the)h(required)f +(format)h(to)g(describ)s(e)f(eac)m(h)i(job)e(placed)h(in)f(the)h(bac)m +(kground,)330 3173 y(whic)m(h)h(do)s(es)g(not)g(include)g(an)g +(indication)h(of)f(whether)f(the)h(job)g(is)g(the)h(curren)m(t)e(or)h +(previous)g(job.)154 3306 y(37.)61 b(The)23 b(output)f(of)i(`)p Ft(kill)29 b(-l)p Fu(')23 b(prin)m(ts)f(all)i(the)g(signal)f(names)g (on)g(a)h(single)g(line,)h(separated)e(b)m(y)g(spaces,)330 -4815 y(without)30 b(the)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 -4954 y(37.)61 b(The)30 b Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept) +3416 y(without)30 b(the)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 +3550 y(38.)61 b(The)30 b Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept) h(signal)f(names)f(with)g(a)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 -5092 y(38.)61 b(The)38 b Ft(export)f Fu(and)g Ft(readonly)f +3684 y(39.)61 b(The)38 b Ft(export)f Fu(and)g Ft(readonly)f Fu(builtin)i(commands)g(displa)m(y)h(their)f(output)g(in)g(the)h -(format)g(re-)330 5202 y(quired)30 b(b)m(y)g Fm(posix)p -Fu(.)154 5340 y(39.)61 b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g +(format)g(re-)330 3794 y(quired)30 b(b)m(y)g Fm(posix)p +Fu(.)154 3927 y(40.)61 b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g (signal)i(names)e(without)g(the)h(leading)g Ft(SIG)p -Fu(.)p eop end -%%Page: 103 109 -TeXDict begin 103 108 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2439 b(103)154 299 y(40.)61 -b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g(c)m(hec)m(k)h(the)g -(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e(signal)i(sp)s -(eci\014cation)330 408 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 518 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 -628 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s +Fu(.)154 4061 y(41.)61 b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g +(c)m(hec)m(k)h(the)g(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e +(signal)i(sp)s(eci\014cation)330 4171 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 4281 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 +4390 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s (osition,)f(they)g(should)f(use)h(`)p Ft(-)p Fu(')g(as)g(the)g(\014rst) -f(argumen)m(t.)154 765 y(41.)61 b Ft(trap)29 b(-p)35 +f(argumen)m(t.)154 4524 y(42.)61 b Ft(trap)29 b(-p)35 b Fu(displa)m(ys)h(signals)h(whose)f(disp)s(ositions)f(are)h(set)h(to)f -(SIG)p 2687 765 28 4 v 40 w(DFL)g(and)g(those)g(that)g(w)m(ere)330 -874 y(ignored)30 b(when)g(the)g(shell)h(started.)154 -1011 y(42.)61 b(The)21 b Ft(.)h Fu(and)f Ft(source)f +(SIG)p 2687 4524 28 4 v 40 w(DFL)g(and)g(those)g(that)g(w)m(ere)330 +4634 y(ignored)30 b(when)g(the)g(shell)h(started.)154 +4768 y(43.)61 b(The)21 b Ft(.)h Fu(and)f Ft(source)f Fu(builtins)h(do)g(not)h(searc)m(h)h(the)f(curren)m(t)f(directory)h -(for)g(the)g(\014lename)f(argumen)m(t)330 1121 y(if)30 +(for)g(the)g(\014lename)f(argumen)m(t)330 4877 y(if)30 b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g Ft(PATH)p -Fu(.)154 1258 y(43.)61 b(Enabling)21 b Fm(posix)g Fu(mo)s(de)g(has)g +Fu(.)154 5011 y(44.)61 b(Enabling)21 b Fm(posix)g Fu(mo)s(de)g(has)g (the)g(e\013ect)i(of)e(setting)i(the)e Ft(inherit_errexit)d -Fu(option,)23 b(so)f(subshells)330 1367 y(spa)m(wned)27 +Fu(option,)23 b(so)f(subshells)330 5121 y(spa)m(wned)27 b(to)i(execute)g(command)e(substitutions)h(inherit)f(the)h(v)-5 b(alue)28 b(of)g(the)g Ft(-e)f Fu(option)h(from)g(the)330 -1477 y(paren)m(t)37 b(shell.)62 b(When)37 b(the)g Ft(inherit_errexit)c +5230 y(paren)m(t)37 b(shell.)62 b(When)37 b(the)g Ft(inherit_errexit)c Fu(option)38 b(is)f(not)h(enabled,)h(Bash)e(clears)h(the)g -Ft(-e)330 1587 y Fu(option)31 b(in)f(suc)m(h)g(subshells.)154 -1724 y(44.)61 b(Enabling)32 b Fm(posix)f Fu(mo)s(de)h(has)g(the)h -(e\013ect)g(of)g(setting)g(the)g Ft(shift_verbose)28 -b Fu(option,)34 b(so)e(n)m(umeric)330 1833 y(argumen)m(ts)f(to)g -Ft(shift)f Fu(that)h(exceed)h(the)e(n)m(um)m(b)s(er)g(of)h(p)s -(ositional)g(parameters)g(will)g(result)g(in)f(an)330 -1943 y(error)g(message.)154 2080 y(45.)61 b(When)43 b(the)g -Ft(alias)f Fu(builtin)g(displa)m(ys)i(alias)g(de\014nitions,)i(it)d(do) -s(es)g(not)g(displa)m(y)h(them)f(with)g(a)330 2189 y(leading)31 -b(`)p Ft(alias)e Fu(')i(unless)f(the)g Ft(-p)g Fu(option)h(is)f -(supplied.)154 2326 y(46.)61 b(When)40 b(the)g Ft(set)f -Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)h(without)f(options,)j(it)e(do)s(es) -f(not)g(displa)m(y)g(shell)g(function)330 2436 y(names)30 -b(and)g(de\014nitions.)154 2573 y(47.)61 b(When)36 b(the)g -Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok)m(ed)i(without)e(options,)i(it)f -(displa)m(ys)f(v)-5 b(ariable)37 b(v)-5 b(alues)37 b(without)330 -2682 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 2792 y(c)m(haracters.)154 2929 y(48.)61 b(When)35 -b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)i(in)d -Fr(logical)41 b Fu(mo)s(de,)36 b(and)f(the)g(pathname)g(constructed)g -(from)330 3039 y Ft($PWD)i Fu(and)h(the)h(directory)f(name)h(supplied)e +Ft(-e)330 5340 y Fu(option)31 b(in)f(suc)m(h)g(subshells.)p +eop end +%%Page: 109 115 +TeXDict begin 109 114 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(109)154 299 y(45.)61 +b(Enabling)32 b Fm(posix)f Fu(mo)s(de)h(has)g(the)h(e\013ect)g(of)g +(setting)g(the)g Ft(shift_verbose)28 b Fu(option,)34 +b(so)e(n)m(umeric)330 408 y(argumen)m(ts)f(to)g Ft(shift)f +Fu(that)h(exceed)h(the)e(n)m(um)m(b)s(er)g(of)h(p)s(ositional)g +(parameters)g(will)g(result)g(in)f(an)330 518 y(error)g(message.)154 +662 y(46.)61 b(When)43 b(the)g Ft(alias)f Fu(builtin)g(displa)m(ys)i +(alias)g(de\014nitions,)i(it)d(do)s(es)g(not)g(displa)m(y)h(them)f +(with)g(a)330 771 y(leading)31 b(`)p Ft(alias)e Fu(')i(unless)f(the)g +Ft(-p)g Fu(option)h(is)f(supplied.)154 915 y(47.)61 b(When)40 +b(the)g Ft(set)f Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)h(without)f +(options,)j(it)e(do)s(es)f(not)g(displa)m(y)g(shell)g(function)330 +1025 y(names)30 b(and)g(de\014nitions.)154 1169 y(48.)61 +b(When)36 b(the)g Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok)m(ed)i +(without)e(options,)i(it)f(displa)m(ys)f(v)-5 b(ariable)37 +b(v)-5 b(alues)37 b(without)330 1278 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 1388 y(c)m(haracters.)154 +1532 y(49.)61 b(When)35 b(the)h Ft(cd)e Fu(builtin)h(is)h(in)m(v)m(ok)m +(ed)g(in)f(logical)j(mo)s(de,)e(and)f(the)h(pathname)f(constructed)g +(from)330 1641 y Ft($PWD)i Fu(and)h(the)h(directory)f(name)h(supplied)e (as)i(an)f(argumen)m(t)h(do)s(es)f(not)g(refer)h(to)g(an)f(existing)330 -3148 y(directory)-8 b(,)32 b Ft(cd)d Fu(will)i(fail)g(instead)g(of)f -(falling)h(bac)m(k)h(to)f Fr(ph)m(ysical)j Fu(mo)s(de.)154 -3285 y(49.)61 b(When)37 b(the)h Ft(cd)f Fu(builtin)g(cannot)h(c)m +1751 y(directory)-8 b(,)32 b Ft(cd)d Fu(will)i(fail)g(instead)g(of)f +(falling)h(bac)m(k)h(to)f(ph)m(ysical)g(mo)s(de.)154 +1895 y(50.)61 b(When)37 b(the)h Ft(cd)f Fu(builtin)g(cannot)h(c)m (hange)h(a)f(directory)g(b)s(ecause)g(the)g(length)g(of)f(the)h -(pathname)330 3395 y(constructed)52 b(from)f Ft($PWD)f -Fu(and)g(the)i(directory)g(name)f(supplied)f(as)i(an)f(argumen)m(t)h -(exceeds)330 3504 y Fr(P)-8 b(A)g(TH)p 584 3504 V 41 -w(MAX)42 b Fu(when)31 b(all)j(sym)m(b)s(olic)e(links)h(are)f(expanded,) -h Ft(cd)f Fu(will)g(fail)h(instead)g(of)g(attempting)330 -3614 y(to)e(use)f(only)h(the)f(supplied)f(directory)i(name.)154 -3751 y(50.)61 b(The)36 b Ft(pwd)f Fu(builtin)h(v)m(eri\014es)h(that)g -(the)f(v)-5 b(alue)37 b(it)g(prin)m(ts)e(is)i(the)f(same)h(as)f(the)h -(curren)m(t)f(directory)-8 b(,)330 3861 y(ev)m(en)31 -b(if)f(it)h(is)g(not)f(ask)m(ed)h(to)g(c)m(hec)m(k)h(the)f(\014le)f -(system)h(with)f(the)h Ft(-P)e Fu(option.)154 3998 y(51.)61 -b(When)35 b(listing)g(the)g(history)-8 b(,)36 b(the)f -Ft(fc)g Fu(builtin)f(do)s(es)g(not)h(include)g(an)f(indication)i(of)f -(whether)f(or)330 4107 y(not)d(a)f(history)h(en)m(try)f(has)g(b)s(een)g -(mo)s(di\014ed.)154 4244 y(52.)61 b(The)30 b(default)g(editor)h(used)f -(b)m(y)g Ft(fc)g Fu(is)g Ft(ed)p Fu(.)154 4381 y(53.)61 -b(The)37 b Ft(type)g Fu(and)g Ft(command)f Fu(builtins)i(will)g(not)g -(rep)s(ort)f(a)i(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330 -4491 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g +(pathname)330 2004 y(constructed)27 b(from)g Ft($PWD)f +Fu(and)h(the)g(directory)h(name)f(supplied)f(as)i(an)f(argumen)m(t)g +(exceeds)h Ft(PATH_)330 2114 y(MAX)d Fu(when)g(all)h(sym)m(b)s(olic)g +(links)g(are)g(expanded,)g Ft(cd)f Fu(will)h(fail)h(instead)f(of)g +(attempting)h(to)f(use)g(only)330 2224 y(the)31 b(supplied)e(directory) +i(name.)154 2367 y(51.)61 b(The)36 b Ft(pwd)f Fu(builtin)h(v)m +(eri\014es)h(that)g(the)f(v)-5 b(alue)37 b(it)g(prin)m(ts)e(is)i(the)f +(same)h(as)f(the)h(curren)m(t)f(directory)-8 b(,)330 +2477 y(ev)m(en)31 b(if)f(it)h(is)g(not)f(ask)m(ed)h(to)g(c)m(hec)m(k)h +(the)f(\014le)f(system)h(with)f(the)h Ft(-P)e Fu(option.)154 +2621 y(52.)61 b(When)35 b(listing)g(the)g(history)-8 +b(,)36 b(the)f Ft(fc)g Fu(builtin)f(do)s(es)g(not)h(include)g(an)f +(indication)i(of)f(whether)f(or)330 2730 y(not)d(a)f(history)h(en)m +(try)f(has)g(b)s(een)g(mo)s(di\014ed.)154 2874 y(53.)61 +b(The)30 b(default)g(editor)h(used)f(b)m(y)g Ft(fc)g +Fu(is)g Ft(ed)p Fu(.)154 3018 y(54.)61 b(The)37 b Ft(type)g +Fu(and)g Ft(command)f Fu(builtins)i(will)g(not)g(rep)s(ort)f(a)i +(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330 +3128 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 4600 y(found)i(in)h Ft($PATH)p Fu(.)154 -4737 y(54.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m +g(\014le)330 3237 y(found)i(in)h Ft($PATH)p Fu(.)154 +3381 y(55.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m (ok)m(e)i(the)e Ft(vi)g Fu(editor)h(directly)f(when)f(the)i(`)p -Ft(v)p Fu(')f(command)g(is)g(run,)330 4847 y(instead)e(of)f(c)m(hec)m -(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 4984 -y(55.)61 b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j +Ft(v)p Fu(')f(command)g(is)g(run,)330 3491 y(instead)e(of)f(c)m(hec)m +(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 3634 +y(56.)61 b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j (Bash)d(do)s(es)g(not)g(attempt)h(to)g(in)m(terpret)f(an)m(y)h(ar-)330 -5093 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54 +3744 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54 b(Eac)m(h)35 b(argumen)m(t)g(is)f(displa)m(y)m(ed,)j(after)e(escap)s(e) -g(c)m(haracters)h(are)330 5203 y(con)m(v)m(erted.)154 -5340 y(56.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m +g(c)m(haracters)h(are)330 3854 y(con)m(v)m(erted.)154 +3998 y(57.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m (k)g(size)g(of)g(512)g(b)m(ytes)g(for)f(the)h Ft(-c)f -Fu(and)g Ft(-f)f Fu(options.)p eop end -%%Page: 104 110 -TeXDict begin 104 109 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2439 b(104)154 299 y(57.)61 -b(The)39 b(arriv)-5 b(al)41 b(of)f Ft(SIGCHLD)e Fu(when)h(a)h(trap)g -(is)g(set)h(on)f Ft(SIGCHLD)e Fu(do)s(es)h(not)h(in)m(terrupt)g(the)g -Ft(wait)330 408 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f +Fu(and)g Ft(-f)f Fu(options.)154 4141 y(58.)61 b(The)39 +b(arriv)-5 b(al)41 b(of)f Ft(SIGCHLD)e Fu(when)h(a)h(trap)g(is)g(set)h +(on)f Ft(SIGCHLD)e Fu(do)s(es)h(not)h(in)m(terrupt)g(the)g +Ft(wait)330 4251 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f (immediately)-8 b(.)62 b(The)37 b(trap)f(command)h(is)g(run)e(once)j -(for)f(eac)m(h)330 518 y(c)m(hild)31 b(that)g(exits.)154 -654 y(58.)61 b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m +(for)f(eac)m(h)330 4361 y(c)m(hild)31 b(that)g(exits.)154 +4504 y(59.)61 b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m (terrupted)h(b)m(y)g(a)h(signal)f(for)g(whic)m(h)g(a)h(trap)f(has)g(b)s -(een)f(set.)40 b(If)27 b(Bash)330 764 y(receiv)m(es)41 +(een)f(set.)40 b(If)27 b(Bash)330 4614 y(receiv)m(es)41 b(a)f(trapp)s(ed)e(signal)i(while)f(executing)h Ft(read)p Fu(,)h(the)e(trap)h(handler)e(executes)i(and)f Ft(read)330 -874 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)154 -1010 y(59.)61 b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i(bac)m(kground)e -(pro)s(cess's)h(status)g(from)f(the)h(list)g(of)g(suc)m(h)f(statuses)h -(after)330 1119 y(the)k Ft(wait)e Fu(builtin)h(is)g(used)g(to)h(obtain) -g(it.)275 1284 y(There)j(is)g(other)h Fm(posix)f Fu(b)s(eha)m(vior)h -(that)g(Bash)g(do)s(es)f(not)h(implemen)m(t)g(b)m(y)g(default)f(ev)m -(en)i(when)d(in)150 1394 y Fm(posix)d Fu(mo)s(de.)40 -b(Sp)s(eci\014cally:)199 1532 y(1.)61 b(The)30 b Ft(fc)f -Fu(builtin)h(c)m(hec)m(ks)i Ft($EDITOR)c Fu(as)j(a)f(program)g(to)h -(edit)g(history)f(en)m(tries)h(if)f Ft(FCEDIT)f Fu(is)h(unset,)330 -1641 y(rather)g(than)g(defaulting)h(directly)g(to)g Ft(ed)p -Fu(.)40 b Ft(fc)30 b Fu(uses)g Ft(ed)g Fu(if)g Ft(EDITOR)f -Fu(is)h(unset.)199 1778 y(2.)61 b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i -(Bash)e(requires)g(the)g Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e -(enabled)h(for)g(the)g Ft(echo)f Fu(builtin)330 1887 -y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 2052 y(Bash)c(can)g(b)s(e)f -(con\014gured)h(to)g(b)s(e)g Fm(posix)p Fu(-conforman)m(t)g(b)m(y)g -(default,)h(b)m(y)f(sp)s(ecifying)g(the)g Ft(--enable-)150 -2162 y(strict-posix-default)c Fu(to)27 b Ft(configure)e -Fu(when)h(building)h(\(see)h(Section)g(10.8)g([Optional)g(F)-8 -b(eatures],)150 2271 y(page)31 b(155\).)150 2518 y Fs(6.12)68 -b(Shell)46 b(Compatibilit)l(y)h(Mo)t(de)150 2677 y Fu(Bash-4.0)30 -b(in)m(tro)s(duced)d(the)i(concept)g(of)f(a)h(`shell)f(compatibilit)m -(y)i(lev)m(el',)h(sp)s(eci\014ed)d(as)g(a)h(set)f(of)h(options)150 -2786 y(to)i(the)f(shopt)g(builtin)g(\()p Ft(compat31)p -Fu(,)e Ft(compat32)p Fu(,)h Ft(compat40)p Fu(,)f Ft(compat41)p -Fu(,)g(and)i(so)g(on\).)41 b(There)30 b(is)g(only)150 -2896 y(one)f(curren)m(t)f(compatibilit)m(y)j(lev)m(el)f({)f(eac)m(h)h -(option)f(is)g(m)m(utually)g(exclusiv)m(e.)41 b(The)28 -b(compatibilit)m(y)j(lev)m(el)150 3006 y(is)39 b(in)m(tended)g(to)h -(allo)m(w)g(users)e(to)i(select)h(b)s(eha)m(vior)e(from)f(previous)h(v) -m(ersions)g(that)h(is)f(incompatible)150 3115 y(with)d(new)m(er)g(v)m -(ersions)g(while)g(they)g(migrate)h(scripts)f(to)h(use)f(curren)m(t)f -(features)i(and)e(b)s(eha)m(vior.)58 b(It's)150 3225 -y(in)m(tended)30 b(to)h(b)s(e)f(a)h(temp)s(orary)f(solution.)275 -3363 y(This)k(section)j(do)s(es)e(not)h(men)m(tion)g(b)s(eha)m(vior)g -(that)g(is)f(standard)g(for)g(a)h(particular)g(v)m(ersion)g(\(e.g.,)150 -3473 y(setting)24 b Ft(compat32)e Fu(means)h(that)h(quoting)g(the)f -(rhs)g(of)g(the)h(regexp)f(matc)m(hing)i(op)s(erator)e(quotes)h(sp)s -(ecial)150 3582 y(regexp)31 b(c)m(haracters)g(in)g(the)f(w)m(ord,)g -(whic)m(h)g(is)h(default)f(b)s(eha)m(vior)h(in)f(bash-3.2)h(and)f(ab)s -(o)m(v)m(e\).)275 3720 y(If)f(a)h(user)f(enables,)h(sa)m(y)-8 -b(,)31 b Ft(compat32)p Fu(,)d(it)i(ma)m(y)g(a\013ect)h(the)f(b)s(eha)m -(vior)g(of)g(other)g(compatibilit)m(y)h(lev)m(els)150 -3830 y(up)23 b(to)h(and)f(including)h(the)g(curren)m(t)f(compatibilit)m -(y)j(lev)m(el.)41 b(The)23 b(idea)h(is)g(that)g(eac)m(h)h(compatibilit) -m(y)h(lev)m(el)150 3939 y(con)m(trols)35 b(b)s(eha)m(vior)f(that)g(c)m -(hanged)g(in)f(that)h(v)m(ersion)g(of)g(Bash,)h(but)e(that)h(b)s(eha)m -(vior)g(ma)m(y)g(ha)m(v)m(e)h(b)s(een)150 4049 y(presen)m(t)f(in)g -(earlier)g(v)m(ersions.)52 b(F)-8 b(or)35 b(instance,)g(the)f(c)m -(hange)h(to)g(use)f(lo)s(cale-based)h(comparisons)f(with)150 -4159 y(the)e Ft([[)f Fu(command)g(came)h(in)g(bash-4.1,)h(and)d -(earlier)j(v)m(ersions)f(used)f(ASCI)s(I-based)f(comparisons,)i(so)150 -4268 y(enabling)27 b Ft(compat32)e Fu(will)i(enable)g(ASCI)s(I-based)e -(comparisons)i(as)g(w)m(ell.)41 b(That)26 b(gran)m(ularit)m(y)i(ma)m(y) -g(not)150 4378 y(b)s(e)i(su\016cien)m(t)i(for)f(all)g(uses,)g(and)g(as) -g(a)g(result)g(users)f(should)g(emplo)m(y)i(compatibilit)m(y)h(lev)m -(els)g(carefully)-8 b(.)150 4487 y(Read)31 b(the)f(do)s(cumen)m(tation) -h(for)g(a)f(particular)h(feature)g(to)g(\014nd)e(out)h(the)h(curren)m -(t)f(b)s(eha)m(vior.)275 4625 y(Bash-4.3)44 b(in)m(tro)s(duced)e(a)h -(new)f(shell)h(v)-5 b(ariable:)65 b Ft(BASH_COMPAT)p -Fu(.)75 b(The)42 b(v)-5 b(alue)43 b(assigned)g(to)g(this)150 -4735 y(v)-5 b(ariable)32 b(\(a)g(decimal)h(v)m(ersion)e(n)m(um)m(b)s +4724 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)154 +4867 y(60.)61 b(The)33 b Ft(printf)f Fu(builtin)i(uses)f +Ft(double)f Fu(\(via)j Ft(strtod)p Fu(\))d(to)j(con)m(v)m(ert)g +(argumen)m(ts)f(corresp)s(onding)f(to)330 4977 y(\015oating)40 +b(p)s(oin)m(t)f(con)m(v)m(ersion)h(sp)s(eci\014ers,)h(instead)e(of)g +Ft(long)29 b(double)38 b Fu(if)h(it's)g(a)m(v)-5 b(ailable.)69 +b(The)39 b(`)p Ft(L)p Fu(')330 5087 y(length)31 b(mo)s(di\014er)e +(forces)i Ft(printf)e Fu(to)i(use)f Ft(long)f(double)g +Fu(if)h(it's)h(a)m(v)-5 b(ailable.)154 5230 y(61.)61 +b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i(bac)m(kground)e(pro)s(cess's) +h(status)g(from)f(the)h(list)g(of)g(suc)m(h)f(statuses)h(after)330 +5340 y(the)k Ft(wait)e Fu(builtin)h(is)g(used)g(to)h(obtain)g(it.)p +eop end +%%Page: 110 116 +TeXDict begin 110 115 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(110)275 299 y(There)34 +b(is)g(other)h Fm(posix)f Fu(b)s(eha)m(vior)h(that)g(Bash)g(do)s(es)f +(not)h(implemen)m(t)g(b)m(y)g(default)f(ev)m(en)i(when)d(in)150 +408 y Fm(posix)d Fu(mo)s(de.)40 b(Sp)s(eci\014cally:)199 +549 y(1.)61 b(The)30 b Ft(fc)f Fu(builtin)h(c)m(hec)m(ks)i +Ft($EDITOR)c Fu(as)j(a)f(program)g(to)h(edit)g(history)f(en)m(tries)h +(if)f Ft(FCEDIT)f Fu(is)h(unset,)330 658 y(rather)g(than)g(defaulting)h +(directly)g(to)g Ft(ed)p Fu(.)40 b Ft(fc)30 b Fu(uses)g +Ft(ed)g Fu(if)g Ft(EDITOR)f Fu(is)h(unset.)199 796 y(2.)61 +b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i(Bash)e(requires)g(the)g +Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e(enabled)h(for)g(the)g +Ft(echo)f Fu(builtin)330 905 y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 +1073 y(Bash)c(can)g(b)s(e)f(con\014gured)h(to)g(b)s(e)g +Fm(posix)p Fu(-conforman)m(t)g(b)m(y)g(default,)h(b)m(y)f(sp)s +(ecifying)g(the)g Ft(--enable-)150 1183 y(strict-posix-default)c +Fu(to)27 b Ft(configure)e Fu(when)h(building)h(\(see)h(Section)g(10.8)g +([Optional)g(F)-8 b(eatures],)150 1292 y(page)31 b(161\).)150 +1542 y Fs(6.12)68 b(Shell)46 b(Compatibilit)l(y)h(Mo)t(de)150 +1701 y Fu(Bash-4.0)33 b(in)m(tro)s(duced)f(the)f(concept)i(of)f(a)g +Fr(shell)g(compatibilit)m(y)i(lev)m(el)p Fu(,)g(sp)s(eci\014ed)d(as)h +(a)g(set)h(of)f(options)150 1811 y(to)f(the)f(shopt)g(builtin)g(\()p +Ft(compat31)p Fu(,)e Ft(compat32)p Fu(,)h Ft(compat40)p +Fu(,)f Ft(compat41)p Fu(,)g(and)i(so)g(on\).)41 b(There)30 +b(is)g(only)150 1920 y(one)f(curren)m(t)f(compatibilit)m(y)j(lev)m(el)f +({)f(eac)m(h)h(option)f(is)g(m)m(utually)g(exclusiv)m(e.)41 +b(The)28 b(compatibilit)m(y)j(lev)m(el)150 2030 y(is)39 +b(in)m(tended)g(to)h(allo)m(w)g(users)e(to)i(select)h(b)s(eha)m(vior)e +(from)f(previous)h(v)m(ersions)g(that)h(is)f(incompatible)150 +2139 y(with)d(new)m(er)g(v)m(ersions)g(while)g(they)g(migrate)h +(scripts)f(to)h(use)f(curren)m(t)f(features)i(and)e(b)s(eha)m(vior.)58 +b(It's)150 2249 y(in)m(tended)30 b(to)h(b)s(e)f(a)h(temp)s(orary)f +(solution.)275 2389 y(This)k(section)j(do)s(es)e(not)h(men)m(tion)g(b)s +(eha)m(vior)g(that)g(is)f(standard)g(for)g(a)h(particular)g(v)m(ersion) +g(\(e.g.,)150 2499 y(setting)d Ft(compat32)c Fu(means)i(that)i(quoting) +e(the)h(rhs)f(of)g(the)h(regexp)g(matc)m(hing)h(op)s(erator)e(quotes)h +(sp)s(e-)150 2608 y(cial)39 b(regexp)e(c)m(haracters)i(in)e(the)g(w)m +(ord,)i(whic)m(h)e(is)g(default)h(b)s(eha)m(vior)f(in)g(bash-3.2)h(and) +f(subsequen)m(t)150 2718 y(v)m(ersions\).)275 2858 y(If)29 +b(a)h(user)f(enables,)h(sa)m(y)-8 b(,)31 b Ft(compat32)p +Fu(,)d(it)i(ma)m(y)g(a\013ect)h(the)f(b)s(eha)m(vior)g(of)g(other)g +(compatibilit)m(y)h(lev)m(els)150 2968 y(up)23 b(to)h(and)f(including)h +(the)g(curren)m(t)f(compatibilit)m(y)j(lev)m(el.)41 b(The)23 +b(idea)h(is)g(that)g(eac)m(h)h(compatibilit)m(y)h(lev)m(el)150 +3077 y(con)m(trols)35 b(b)s(eha)m(vior)f(that)g(c)m(hanged)g(in)f(that) +h(v)m(ersion)g(of)g(Bash,)h(but)e(that)h(b)s(eha)m(vior)g(ma)m(y)g(ha)m +(v)m(e)h(b)s(een)150 3187 y(presen)m(t)f(in)g(earlier)g(v)m(ersions.)52 +b(F)-8 b(or)35 b(instance,)g(the)f(c)m(hange)h(to)g(use)f(lo)s +(cale-based)h(comparisons)f(with)150 3296 y(the)e Ft([[)f +Fu(command)g(came)h(in)g(bash-4.1,)h(and)d(earlier)j(v)m(ersions)f +(used)f(ASCI)s(I-based)f(comparisons,)i(so)150 3406 y(enabling)27 +b Ft(compat32)e Fu(will)i(enable)g(ASCI)s(I-based)e(comparisons)i(as)g +(w)m(ell.)41 b(That)26 b(gran)m(ularit)m(y)i(ma)m(y)g(not)150 +3515 y(b)s(e)i(su\016cien)m(t)i(for)f(all)g(uses,)g(and)g(as)g(a)g +(result)g(users)f(should)g(emplo)m(y)i(compatibilit)m(y)h(lev)m(els)g +(carefully)-8 b(.)150 3625 y(Read)31 b(the)f(do)s(cumen)m(tation)h(for) +g(a)f(particular)h(feature)g(to)g(\014nd)e(out)h(the)h(curren)m(t)f(b)s +(eha)m(vior.)275 3765 y(Bash-4.3)44 b(in)m(tro)s(duced)e(a)h(new)f +(shell)h(v)-5 b(ariable:)65 b Ft(BASH_COMPAT)p Fu(.)75 +b(The)42 b(v)-5 b(alue)43 b(assigned)g(to)g(this)150 +3875 y(v)-5 b(ariable)32 b(\(a)g(decimal)h(v)m(ersion)e(n)m(um)m(b)s (er)f(lik)m(e)j(4.2,)g(or)e(an)h(in)m(teger)g(corresp)s(onding)f(to)h -(the)f Ft(compat)p Fr(NN)150 4845 y Fu(option,)g(lik)m(e)h(42\))f +(the)f Ft(compat)p Fr(NN)150 3984 y Fu(option,)g(lik)m(e)h(42\))f (determines)g(the)f(compatibilit)m(y)j(lev)m(el.)275 -4983 y(Starting)e(with)g(bash-4.4,)h(Bash)f(has)g(b)s(egun)f +4125 y(Starting)e(with)g(bash-4.4,)h(Bash)f(has)g(b)s(egun)f (deprecating)h(older)h(compatibilit)m(y)h(lev)m(els.)44 -b(Ev)m(en)m(tu-)150 5092 y(ally)-8 b(,)32 b(the)e(options)h(will)g(b)s +b(Ev)m(en)m(tu-)150 4234 y(ally)-8 b(,)32 b(the)e(options)h(will)g(b)s (e)f(remo)m(v)m(ed)h(in)f(fa)m(v)m(or)i(of)e Ft(BASH_COMPAT)p -Fu(.)275 5230 y(Bash-5.0)36 b(is)f(the)g(\014nal)f(v)m(ersion)i(for)e +Fu(.)275 4374 y(Bash-5.0)36 b(is)f(the)g(\014nal)f(v)m(ersion)i(for)e (whic)m(h)h(there)g(will)g(b)s(e)f(an)h(individual)f(shopt)h(option)g -(for)g(the)150 5340 y(previous)30 b(v)m(ersion.)41 b(Users)30 +(for)g(the)150 4484 y(previous)30 b(v)m(ersion.)41 b(Users)30 b(should)g(use)g Ft(BASH_COMPAT)d Fu(on)j(bash-5.0)h(and)f(later)i(v)m -(ersions.)p eop end -%%Page: 105 111 -TeXDict begin 105 110 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2439 b(105)275 299 y(The)24 -b(follo)m(wing)i(table)g(describ)s(es)e(the)i(b)s(eha)m(vior)f(c)m -(hanges)h(con)m(trolled)g(b)m(y)f(eac)m(h)h(compatibilit)m(y)h(lev)m -(el)150 408 y(setting.)43 b(The)30 b Ft(compat)p Fr(NN)39 -b Fu(tag)32 b(is)f(used)f(as)h(shorthand)e(for)h(setting)i(the)f -(compatibilit)m(y)i(lev)m(el)f(to)g Fr(NN)150 518 y Fu(using)37 -b(one)h(of)g(the)g(follo)m(wing)h(mec)m(hanisms.)63 b(F)-8 -b(or)39 b(v)m(ersions)f(prior)f(to)h(bash-5.0,)j(the)d(compatibilit)m -(y)150 628 y(lev)m(el)d(ma)m(y)f(b)s(e)e(set)i(using)e(the)i(corresp)s -(onding)e Ft(compat)p Fr(NN)41 b Fu(shopt)33 b(option.)50 -b(F)-8 b(or)34 b(bash-4.3)f(and)g(later)150 737 y(v)m(ersions,)40 -b(the)e Ft(BASH_COMPAT)d Fu(v)-5 b(ariable)39 b(is)e(preferred,)i(and)e -(it)i(is)f(required)f(for)g(bash-5.1)i(and)e(later)150 -847 y(v)m(ersions.)150 1025 y Ft(compat31)705 1165 y -Fq(\017)60 b Fu(quoting)34 b(the)g(rhs)e(of)i(the)f Ft([[)g -Fu(command's)h(regexp)f(matc)m(hing)i(op)s(erator)f(\(=)p -Ft(~)p Fu(\))f(has)810 1275 y(no)d(sp)s(ecial)h(e\013ect)150 -1446 y Ft(compat32)705 1587 y Fq(\017)60 b Fu(in)m(terrupting)28 -b(a)g(command)g(list)h(suc)m(h)f(as)g Ft(")p Fu(a)g(;)h(b)f(;)h(c)p -Ft(")f Fu(causes)h(the)f(execution)h(of)g(the)810 1697 -y(next)j(command)f(in)g(the)h(list)g(\(in)f(bash-4.0)h(and)f(later)i(v) -m(ersions,)f(the)g(shell)f(acts)i(as)810 1806 y(if)i(it)i(receiv)m(ed)f -(the)g(in)m(terrupt,)h(so)f(in)m(terrupting)f(one)h(command)f(in)g(a)h -(list)g(ab)s(orts)810 1916 y(the)31 b(execution)g(of)g(the)f(en)m(tire) -i(list\))150 2087 y Ft(compat40)705 2228 y Fq(\017)60 -b Fu(the)35 b(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')g(op)s(erators)h -(to)g(the)g Ft([[)f Fu(command)h(do)f(not)h(consider)f(the)h(curren)m -(t)810 2338 y(lo)s(cale)41 b(when)d(comparing)i(strings;)k(they)c(use)f -(ASCI)s(I)f(ordering.)67 b(Bash)40 b(v)m(ersions)810 -2447 y(prior)f(to)i(bash-4.1)f(use)g(ASCI)s(I)e(collation)k(and)d -(strcmp\(3\);)45 b(bash-4.1)c(and)e(later)810 2557 y(use)30 -b(the)h(curren)m(t)f(lo)s(cale's)i(collation)h(sequence)d(and)g -(strcoll\(3\).)150 2728 y Ft(compat41)705 2869 y Fq(\017)60 -b Fu(in)29 b(p)s(osix)f(mo)s(de,)i Ft(time)e Fu(ma)m(y)h(b)s(e)g(follo) -m(w)m(ed)i(b)m(y)e(options)g(and)g(still)h(b)s(e)e(recognized)j(as)810 -2979 y(a)g(reserv)m(ed)f(w)m(ord)g(\(this)h(is)f Fm(posix)g -Fu(in)m(terpretation)i(267\))705 3119 y Fq(\017)60 b -Fu(in)37 b(p)s(osix)f(mo)s(de,)i(the)g(parser)e(requires)g(that)i(an)f -(ev)m(en)g(n)m(um)m(b)s(er)f(of)h(single)g(quotes)810 -3229 y(o)s(ccur)28 b(in)g(the)h Fr(w)m(ord)i Fu(p)s(ortion)d(of)h(a)g -(double-quoted)f($)p Fi({)6 b Fu(.)23 b(.)f(.)11 b Fi(})29 -b Fu(parameter)g(expansion)810 3338 y(and)34 b(treats)h(them)f(sp)s -(ecially)-8 b(,)37 b(so)e(that)g(c)m(haracters)g(within)f(the)h(single) -g(quotes)g(are)810 3448 y(considered)30 b(quoted)h(\(this)f(is)h -Fm(posix)e Fu(in)m(terpretation)j(221\))150 3620 y Ft(compat42)705 -3760 y Fq(\017)60 b Fu(the)29 b(replacemen)m(t)i(string)e(in)g +(ersions.)275 4624 y(The)24 b(follo)m(wing)i(table)g(describ)s(es)e +(the)i(b)s(eha)m(vior)f(c)m(hanges)h(con)m(trolled)g(b)m(y)f(eac)m(h)h +(compatibilit)m(y)h(lev)m(el)150 4734 y(setting.)43 b(The)30 +b Ft(compat)p Fr(NN)39 b Fu(tag)32 b(is)f(used)f(as)h(shorthand)e(for)h +(setting)i(the)f(compatibilit)m(y)i(lev)m(el)f(to)g Fr(NN)150 +4843 y Fu(using)37 b(one)h(of)g(the)g(follo)m(wing)h(mec)m(hanisms.)63 +b(F)-8 b(or)39 b(v)m(ersions)f(prior)f(to)h(bash-5.0,)j(the)d +(compatibilit)m(y)150 4953 y(lev)m(el)d(ma)m(y)f(b)s(e)e(set)i(using)e +(the)i(corresp)s(onding)e Ft(compat)p Fr(NN)41 b Fu(shopt)33 +b(option.)50 b(F)-8 b(or)34 b(bash-4.3)f(and)g(later)150 +5062 y(v)m(ersions,)40 b(the)e Ft(BASH_COMPAT)d Fu(v)-5 +b(ariable)39 b(is)e(preferred,)i(and)e(it)i(is)f(required)f(for)g +(bash-5.1)i(and)e(later)150 5172 y(v)m(ersions.)150 5340 +y Ft(compat31)p eop end +%%Page: 111 117 +TeXDict begin 111 116 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(111)705 299 y Fq(\017)60 +b Fu(quoting)34 b(the)g(rhs)e(of)i(the)f Ft([[)g Fu(command's)h(regexp) +f(matc)m(hing)i(op)s(erator)f(\(=)p Ft(~)p Fu(\))f(has)810 +408 y(no)d(sp)s(ecial)h(e\013ect)150 568 y Ft(compat32)705 +702 y Fq(\017)60 b Fu(in)m(terrupting)28 b(a)g(command)g(list)h(suc)m +(h)f(as)g Ft(")p Fu(a)g(;)h(b)f(;)h(c)p Ft(")f Fu(causes)h(the)f +(execution)h(of)g(the)810 812 y(next)j(command)f(in)g(the)h(list)g +(\(in)f(bash-4.0)h(and)f(later)i(v)m(ersions,)f(the)g(shell)f(acts)i +(as)810 922 y(if)i(it)i(receiv)m(ed)f(the)g(in)m(terrupt,)h(so)f(in)m +(terrupting)f(one)h(command)f(in)g(a)h(list)g(ab)s(orts)810 +1031 y(the)31 b(execution)g(of)g(the)f(en)m(tire)i(list\))150 +1191 y Ft(compat40)705 1325 y Fq(\017)60 b Fu(the)35 +b(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')g(op)s(erators)h(to)g(the)g +Ft([[)f Fu(command)h(do)f(not)h(consider)f(the)h(curren)m(t)810 +1435 y(lo)s(cale)41 b(when)d(comparing)i(strings;)k(they)c(use)f(ASCI)s +(I)f(ordering.)67 b(Bash)40 b(v)m(ersions)810 1544 y(prior)f(to)i +(bash-4.1)f(use)g(ASCI)s(I)e(collation)k(and)d(strcmp\(3\);)45 +b(bash-4.1)c(and)e(later)810 1654 y(use)30 b(the)h(curren)m(t)f(lo)s +(cale's)i(collation)h(sequence)d(and)g(strcoll\(3\).)150 +1813 y Ft(compat41)705 1948 y Fq(\017)60 b Fu(in)29 b(p)s(osix)f(mo)s +(de,)i Ft(time)e Fu(ma)m(y)h(b)s(e)g(follo)m(w)m(ed)i(b)m(y)e(options)g +(and)g(still)h(b)s(e)e(recognized)j(as)810 2057 y(a)g(reserv)m(ed)f(w)m +(ord)g(\(this)h(is)f Fm(posix)g Fu(in)m(terpretation)i(267\))705 +2192 y Fq(\017)60 b Fu(in)37 b(p)s(osix)f(mo)s(de,)i(the)g(parser)e +(requires)g(that)i(an)f(ev)m(en)g(n)m(um)m(b)s(er)f(of)h(single)g +(quotes)810 2301 y(o)s(ccur)28 b(in)g(the)h Fr(w)m(ord)i +Fu(p)s(ortion)d(of)h(a)g(double-quoted)f($)p Fi({)6 b +Fu(.)23 b(.)f(.)11 b Fi(})29 b Fu(parameter)g(expansion)810 +2411 y(and)34 b(treats)h(them)f(sp)s(ecially)-8 b(,)37 +b(so)e(that)g(c)m(haracters)g(within)f(the)h(single)g(quotes)g(are)810 +2521 y(considered)30 b(quoted)h(\(this)f(is)h Fm(posix)e +Fu(in)m(terpretation)j(221\))150 2680 y Ft(compat42)705 +2814 y Fq(\017)60 b Fu(the)29 b(replacemen)m(t)i(string)e(in)g (double-quoted)h(pattern)f(substitution)g(do)s(es)g(not)h(un-)810 -3870 y(dergo)h(quote)g(remo)m(v)-5 b(al,)32 b(as)e(it)h(do)s(es)f(in)g -(v)m(ersions)h(after)g(bash-4.2)705 4010 y Fq(\017)60 +2924 y(dergo)h(quote)g(remo)m(v)-5 b(al,)32 b(as)e(it)h(do)s(es)f(in)g +(v)m(ersions)h(after)g(bash-4.2)705 3059 y Fq(\017)60 b Fu(in)39 b(p)s(osix)g(mo)s(de,)j(single)e(quotes)g(are)g(considered)f -(sp)s(ecial)h(when)f(expanding)g(the)810 4120 y Fr(w)m(ord)d +(sp)s(ecial)h(when)f(expanding)g(the)810 3168 y Fr(w)m(ord)d Fu(p)s(ortion)c(of)g(a)h(double-quoted)g($)p Fi({)6 b Fu(.)22 b(.)h(.)11 b Fi(})33 b Fu(parameter)g(expansion)f(and)g(can)h -(b)s(e)810 4230 y(used)40 b(to)i(quote)g(a)f(closing)h(brace)f(or)g +(b)s(e)810 3278 y(used)40 b(to)i(quote)g(a)f(closing)h(brace)f(or)g (other)h(sp)s(ecial)f(c)m(haracter)i(\(this)e(is)g(part)g(of)810 -4339 y Fm(posix)36 b Fu(in)m(terpretation)h(221\);)42 +3387 y Fm(posix)36 b Fu(in)m(terpretation)h(221\);)42 b(in)36 b(later)h(v)m(ersions,)h(single)f(quotes)g(are)g(not)f(sp)s -(ecial)810 4449 y(within)30 b(double-quoted)g(w)m(ord)g(expansions)150 -4620 y Ft(compat43)705 4761 y Fq(\017)60 b Fu(the)31 +(ecial)810 3497 y(within)30 b(double-quoted)g(w)m(ord)g(expansions)150 +3656 y Ft(compat43)705 3791 y Fq(\017)60 b Fu(the)31 b(shell)g(do)s(es)g(not)g(prin)m(t)f(a)h(w)m(arning)g(message)h(if)f -(an)g(attempt)h(is)f(made)f(to)i(use)f(a)810 4871 y(quoted)22 -b(comp)s(ound)f(assignmen)m(t)i(as)f(an)g(argumen)m(t)h(to)g(declare)g -(\(declare)g(-a)g(fo)s(o='\(1)810 4980 y(2\)'\).)42 b(Later)31 -b(v)m(ersions)g(w)m(arn)f(that)h(this)f(usage)h(is)f(deprecated)705 -5121 y Fq(\017)60 b Fu(w)m(ord)21 b(expansion)g(errors)g(are)h -(considered)f(non-fatal)h(errors)f(that)h(cause)g(the)f(curren)m(t)810 -5230 y(command)k(to)g(fail,)i(ev)m(en)e(in)g(p)s(osix)f(mo)s(de)h -(\(the)g(default)g(b)s(eha)m(vior)g(is)g(to)g(mak)m(e)h(them)810 -5340 y(fatal)32 b(errors)d(that)i(cause)g(the)g(shell)f(to)i(exit\))p -eop end -%%Page: 106 112 -TeXDict begin 106 111 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2439 b(106)705 299 y Fq(\017)60 -b Fu(when)37 b(executing)i(a)g(shell)f(function,)i(the)f(lo)s(op)f -(state)h(\(while/un)m(til/etc.\))68 b(is)38 b(not)810 -408 y(reset,)c(so)g Ft(break)d Fu(or)i Ft(continue)e +(an)g(attempt)h(is)f(made)f(to)i(use)f(a)810 3900 y(quoted)36 +b(comp)s(ound)e(assignmen)m(t)i(as)g(an)g(argumen)m(t)g(to)g(declare)h +(\(e.g.,)i(declare)d(-a)810 4010 y(fo)s(o='\(1)31 b(2\)'\).)42 +b(Later)31 b(v)m(ersions)g(w)m(arn)f(that)h(this)f(usage)h(is)g +(deprecated)705 4144 y Fq(\017)60 b Fu(w)m(ord)21 b(expansion)g(errors) +g(are)h(considered)f(non-fatal)h(errors)f(that)h(cause)g(the)f(curren)m +(t)810 4254 y(command)k(to)g(fail,)i(ev)m(en)e(in)g(p)s(osix)f(mo)s(de) +h(\(the)g(default)g(b)s(eha)m(vior)g(is)g(to)g(mak)m(e)h(them)810 +4364 y(fatal)32 b(errors)d(that)i(cause)g(the)g(shell)f(to)i(exit\))705 +4498 y Fq(\017)60 b Fu(when)37 b(executing)i(a)g(shell)f(function,)i +(the)f(lo)s(op)f(state)h(\(while/un)m(til/etc.\))68 b(is)38 +b(not)810 4608 y(reset,)c(so)g Ft(break)d Fu(or)i Ft(continue)e Fu(in)h(that)i(function)f(will)g(break)g(or)g(con)m(tin)m(ue)h(lo)s -(ops)810 518 y(in)h(the)g(calling)h(con)m(text.)57 b(Bash-4.4)37 +(ops)810 4717 y(in)h(the)g(calling)h(con)m(text.)57 b(Bash-4.4)37 b(and)d(later)i(reset)g(the)f(lo)s(op)g(state)i(to)e(prev)m(en)m(t)810 -628 y(this)150 787 y Ft(compat44)705 922 y Fq(\017)60 +4827 y(this)150 4986 y Ft(compat44)705 5121 y Fq(\017)60 b Fu(the)41 b(shell)g(sets)g(up)e(the)i(v)-5 b(alues)41 b(used)f(b)m(y)h Ft(BASH_ARGV)d Fu(and)i Ft(BASH_ARGC)e -Fu(so)j(they)810 1031 y(can)26 b(expand)f(to)h(the)g(shell's)g(p)s +Fu(so)j(they)810 5230 y(can)26 b(expand)f(to)h(the)g(shell's)g(p)s (ositional)g(parameters)g(ev)m(en)h(if)e(extended)h(debugging)810 -1141 y(mo)s(de)k(is)g(not)h(enabled)705 1275 y Fq(\017)60 +5340 y(mo)s(de)k(is)g(not)h(enabled)p eop end +%%Page: 112 118 +TeXDict begin 112 117 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(112)705 299 y Fq(\017)60 b Fu(a)40 b(subshell)f(inherits)g(lo)s(ops)h(from)g(its)g(paren)m(t)g (con)m(text,)k(so)c Ft(break)e Fu(or)i Ft(continue)810 -1385 y Fu(will)35 b(cause)g(the)f(subshell)f(to)i(exit.)54 +408 y Fu(will)35 b(cause)g(the)f(subshell)f(to)i(exit.)54 b(Bash-5.0)36 b(and)d(later)j(reset)f(the)f(lo)s(op)h(state)g(to)810 -1494 y(prev)m(en)m(t)c(the)g(exit)705 1629 y Fq(\017)60 +518 y(prev)m(en)m(t)c(the)g(exit)705 653 y Fq(\017)60 b Fu(v)-5 b(ariable)28 b(assignmen)m(ts)h(preceding)f(builtins)f(lik)m (e)i Ft(export)d Fu(and)h Ft(readonly)e Fu(that)j(set)810 -1738 y(attributes)37 b(con)m(tin)m(ue)h(to)g(a\013ect)g(v)-5 +762 y(attributes)37 b(con)m(tin)m(ue)h(to)g(a\013ect)g(v)-5 b(ariables)37 b(with)g(the)f(same)h(name)g(in)g(the)f(calling)810 -1848 y(en)m(vironmen)m(t)31 b(ev)m(en)g(if)f(the)h(shell)g(is)f(not)h -(in)f(p)s(osix)f(mo)s(de)150 2007 y Ft(compat50)f(\(set)h(using)g -(BASH_COMPAT\))705 2117 y Fq(\017)60 b Fu(Bash-5.1)29 +872 y(en)m(vironmen)m(t)31 b(ev)m(en)g(if)f(the)h(shell)g(is)f(not)h +(in)f(p)s(osix)f(mo)s(de)150 1031 y Ft(compat50)f(\(set)h(using)g +(BASH_COMPAT\))705 1141 y Fq(\017)60 b Fu(Bash-5.1)29 b(c)m(hanged)g(the)f(w)m(a)m(y)g Ft($RANDOM)e Fu(is)i(generated)h(to)f -(in)m(tro)s(duce)g(sligh)m(tly)h(more)810 2227 y(randomness.)39 +(in)m(tro)s(duce)g(sligh)m(tly)h(more)810 1250 y(randomness.)39 b(If)30 b(the)f(shell)h(compatibilit)m(y)i(lev)m(el)f(is)f(set)g(to)h -(50)f(or)g(lo)m(w)m(er,)h(it)f(rev)m(erts)810 2336 y(to)e(the)g(metho)s +(50)f(or)g(lo)m(w)m(er,)h(it)f(rev)m(erts)810 1360 y(to)e(the)g(metho)s (d)f(from)g(bash-5.0)h(and)f(previous)g(v)m(ersions,)i(so)e(seeding)h -(the)g(random)810 2446 y(n)m(um)m(b)s(er)36 b(generator)j(b)m(y)e +(the)g(random)810 1469 y(n)m(um)m(b)s(er)36 b(generator)j(b)m(y)e (assigning)h(a)g(v)-5 b(alue)38 b(to)g Ft(RANDOM)e Fu(will)i(pro)s -(duce)e(the)i(same)810 2555 y(sequence)31 b(as)f(in)g(bash-5.0)705 -2690 y Fq(\017)60 b Fu(If)22 b(the)g(command)g(hash)f(table)i(is)f +(duce)e(the)i(same)810 1579 y(sequence)31 b(as)f(in)g(bash-5.0)705 +1714 y Fq(\017)60 b Fu(If)22 b(the)g(command)g(hash)f(table)i(is)f (empt)m(y)-8 b(,)25 b(Bash)d(v)m(ersions)g(prior)g(to)h(bash-5.1)f -(prin)m(ted)810 2800 y(an)29 b(informational)i(message)g(to)f(that)g +(prin)m(ted)810 1823 y(an)29 b(informational)i(message)g(to)f(that)g (e\013ect,)h(ev)m(en)g(when)d(pro)s(ducing)g(output)h(that)810 -2909 y(can)40 b(b)s(e)g(reused)f(as)h(input.)69 b(Bash-5.1)42 +1933 y(can)40 b(b)s(e)g(reused)f(as)h(input.)69 b(Bash-5.1)42 b(suppresses)c(that)j(message)g(when)e(the)i Ft(-l)810 -3019 y Fu(option)31 b(is)f(supplied.)p eop end -%%Page: 107 113 -TeXDict begin 107 112 bop 3614 -116 a Fu(107)150 299 +2042 y Fu(option)31 b(is)f(supplied.)150 2202 y Ft(compat51)e(\(set)h +(using)g(BASH_COMPAT\))705 2311 y Fq(\017)60 b Fu(The)38 +b Ft(unset)g Fu(builtin)g(will)h(unset)f(the)h(arra)m(y)g +Ft(a)g Fu(giv)m(en)g(an)g(argumen)m(t)g(lik)m(e)h(`)p +Ft(a[@])p Fu('.)810 2421 y(Bash-5.2)32 b(will)f(unset)f(an)g(elemen)m +(t)i(with)e(k)m(ey)i(`)p Ft(@)p Fu(')e(\(asso)s(ciativ)m(e)k(arra)m +(ys\))d(or)f(remo)m(v)m(e)810 2531 y(all)h(the)g(elemen)m(ts)h(without) +e(unsetting)g(the)h(arra)m(y)g(\(indexed)f(arra)m(ys\))705 +2665 y Fq(\017)60 b Fu(arithmetic)36 b(commands)e(\()h(\(\(...\)\))55 +b(\))f(and)34 b(the)g(expressions)h(in)f(an)g(arithmetic)i(for)810 +2775 y(statemen)m(t)c(can)f(b)s(e)f(expanded)f(more)i(than)f(once)705 +2909 y Fq(\017)60 b Fu(expressions)22 b(used)g(as)h(argumen)m(ts)g(to)h +(arithmetic)f(op)s(erators)g(in)g(the)g Ft([[)f Fu(conditional)810 +3019 y(command)30 b(can)h(b)s(e)f(expanded)f(more)i(than)f(once)705 +3153 y Fq(\017)60 b Fu(the)35 b(expressions)g(in)g(substring)e +(parameter)j(brace)f(expansion)g(can)g(b)s(e)g(expanded)810 +3263 y(more)c(than)f(once)705 3397 y Fq(\017)60 b Fu(the)39 +b(expressions)f(in)g(the)h($\(\()h(...)66 b(\)\))f(w)m(ord)39 +b(expansion)f(can)h(b)s(e)f(expanded)g(more)810 3507 +y(than)30 b(once)705 3641 y Fq(\017)60 b Fu(arithmetic)36 +b(expressions)f(used)f(as)h(indexed)f(arra)m(y)i(subscripts)d(can)i(b)s +(e)g(expanded)810 3751 y(more)c(than)f(once)705 3885 +y Fq(\017)60 b Ft(test)29 b(-v)p Fu(,)35 b(when)f(giv)m(en)h(an)g +(argumen)m(t)g(of)f(`)p Ft(A[@])p Fu(',)h(where)f Fr(A)h +Fu(is)f(an)h(existing)g(asso-)810 3995 y(ciativ)m(e)h(arra)m(y)-8 +b(,)37 b(will)d(return)f(true)g(if)h(the)h(arra)m(y)f(has)g(an)m(y)g +(set)g(elemen)m(ts.)53 b(Bash-5.2)810 4105 y(will)31 +b(lo)s(ok)g(for)f(and)g(rep)s(ort)f(on)i(a)f(k)m(ey)i(named)d(`)p +Ft(@)p Fu(')705 4239 y Fq(\017)60 b Fu(the)40 b($)p Fi({)p +Fr(parameter)7 b Fu([:]=)p Fr(v)-5 b(alue)5 b Fi(})42 +b Fu(w)m(ord)e(expansion)f(will)i(return)d Fr(v)-5 b(alue)p +Fu(,)43 b(b)s(efore)d(an)m(y)810 4349 y(v)-5 b(ariable-sp)s(eci\014c)34 +b(transformations)f(ha)m(v)m(e)h(b)s(een)e(p)s(erformed)f(\(e.g.,)36 +b(con)m(v)m(erting)e(to)810 4458 y(lo)m(w)m(ercase\).)43 +b(Bash-5.2)32 b(will)f(return)e(the)i(\014nal)f(v)-5 +b(alue)31 b(assigned)f(to)i(the)e(v)-5 b(ariable.)705 +4593 y Fq(\017)60 b Fu(P)m(arsing)37 b(command)f(substitutions)g(will)g +(b)s(eha)m(v)m(e)h(as)g(if)f(extended)g(glob)h(\(see)g(Sec-)810 +4702 y(tion)30 b(4.3.2)h([The)f(Shopt)f(Builtin],)h(page)h(71\))f(is)g +(enabled,)g(so)g(that)g(parsing)f(a)h(com-)810 4812 y(mand)38 +b(substitution)g(con)m(taining)i(an)f(extglob)h(pattern)f(\(sa)m(y)-8 +b(,)42 b(as)d(part)g(of)g(a)g(shell)810 4922 y(function\))30 +b(will)h(not)g(fail.)41 b(This)30 b(assumes)g(the)h(in)m(ten)m(t)g(is)g +(to)g(enable)g(extglob)g(b)s(efore)810 5031 y(the)i(command)f(is)g +(executed)h(and)f(w)m(ord)g(expansions)g(are)h(p)s(erformed.)45 +b(It)33 b(will)f(fail)810 5141 y(at)42 b(w)m(ord)f(expansion)h(time)g +(if)f(extglob)i(hasn't)e(b)s(een)g(enabled)h(b)m(y)f(the)h(time)g(the) +810 5250 y(command)30 b(is)h(executed.)p eop end +%%Page: 113 119 +TeXDict begin 113 118 bop 3614 -116 a Fu(113)150 299 y Fp(7)80 b(Job)54 b(Con)l(trol)150 518 y Fu(This)25 b(c)m(hapter)i(discusses)f(what)g(job)f(con)m(trol)j(is,)f(ho)m(w)f(it) h(w)m(orks,)g(and)f(ho)m(w)g(Bash)g(allo)m(ws)h(y)m(ou)g(to)g(access) @@ -15991,9 +16475,9 @@ h Ft(jobs)e Fu(command\),)k(the)d(curren)m(t)h(job)f(is)g(alw)m(a)m(ys) i(\015agged)f(with)f(a)h(`)p Ft(+)p Fu(',)i(and)d(the)150 5340 y(previous)30 b(job)g(with)g(a)h(`)p Ft(-)p Fu('.)p eop end -%%Page: 108 114 -TeXDict begin 108 113 bop 150 -116 a Fu(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2526 b(108)275 299 y(A)38 b(job)g(ma)m(y)h(also)g +%%Page: 114 120 +TeXDict begin 114 119 bop 150 -116 a Fu(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2526 b(114)275 299 y(A)38 b(job)g(ma)m(y)h(also)g (b)s(e)f(referred)f(to)j(using)d(a)i(pre\014x)e(of)i(the)f(name)h(used) e(to)i(start)g(it,)i(or)e(using)f(a)150 408 y(substring)g(that)j(app)s (ears)e(in)g(its)h(command)f(line.)69 b(F)-8 b(or)41 @@ -16019,13 +16503,13 @@ g(to)g(not)g(in)m(terrupt)150 1439 y(an)m(y)k(other)f(output.)40 b(If)28 b(the)g Ft(-b)g Fu(option)g(to)h(the)g Ft(set)e Fu(builtin)h(is)g(enabled,)h(Bash)g(rep)s(orts)e(suc)m(h)h(c)m(hanges) 150 1548 y(immediately)d(\(see)g(Section)g(4.3.1)g([The)f(Set)g -(Builtin],)i(page)f(62\).)40 b(An)m(y)24 b(trap)f(on)h +(Builtin],)i(page)f(67\).)40 b(An)m(y)24 b(trap)f(on)h Ft(SIGCHLD)e Fu(is)i(executed)150 1658 y(for)30 b(eac)m(h)i(c)m(hild)e (pro)s(cess)g(that)h(exits.)275 1789 y(If)25 b(an)h(attempt)h(to)g (exit)g(Bash)f(is)h(made)f(while)g(jobs)f(are)i(stopp)s(ed,)f(\(or)h (running,)e(if)h(the)g Ft(checkjobs)150 1899 y Fu(option)e(is)f (enabled)h({)g(see)g(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)j(page) -e(66\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150 +e(71\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150 2009 y(message,)k(and)c(if)i(the)f Ft(checkjobs)e Fu(option)j(is)f (enabled,)i(lists)e(the)h(jobs)f(and)f(their)i(statuses.)39 b(The)25 b Ft(jobs)150 2118 y Fu(command)36 b(ma)m(y)h(then)f(b)s(e)f @@ -16071,151 +16555,162 @@ b(The)30 b(options)g(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)630 5340 y Ft(-l)384 b Fu(List)31 b(pro)s(cess)f Fm(id)p Fu(s)g(in)g(addition)h(to)g(the)f(normal)h(information.)p eop end -%%Page: 109 115 -TeXDict begin 109 114 bop 150 -116 a Fu(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2526 b(109)630 299 y Ft(-n)384 +%%Page: 115 121 +TeXDict begin 115 120 bop 150 -116 a Fu(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2526 b(115)630 299 y Ft(-n)384 b Fu(Displa)m(y)26 b(information)f(only)h(ab)s(out)e(jobs)h(that)g(ha)m (v)m(e)i(c)m(hanged)e(status)h(since)1110 408 y(the)31 b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f(status.)630 -583 y Ft(-p)384 b Fu(List)31 b(only)f(the)h(pro)s(cess)f +570 y Ft(-p)384 b Fu(List)31 b(only)f(the)h(pro)s(cess)f Fm(id)g Fu(of)h(the)f(job's)g(pro)s(cess)g(group)g(leader.)630 -757 y Ft(-r)384 b Fu(Displa)m(y)32 b(only)e(running)f(jobs.)630 -931 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630 -1105 y(If)23 b Fr(jobsp)s(ec)28 b Fu(is)23 b(giv)m(en,)i(output)e(is)g +731 y Ft(-r)384 b Fu(Displa)m(y)32 b(only)e(running)f(jobs.)630 +892 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630 +1053 y(If)23 b Fr(jobsp)s(ec)28 b Fu(is)23 b(giv)m(en,)i(output)e(is)g (restricted)h(to)g(information)f(ab)s(out)g(that)h(job.)37 -b(If)23 b Fr(jobsp)s(ec)630 1214 y Fu(is)30 b(not)h(supplied,)e(the)i -(status)g(of)f(all)h(jobs)f(is)h(listed.)630 1356 y(If)k(the)g +b(If)23 b Fr(jobsp)s(ec)630 1163 y Fu(is)30 b(not)h(supplied,)e(the)i +(status)g(of)f(all)h(jobs)f(is)h(listed.)630 1298 y(If)k(the)g Ft(-x)f Fu(option)i(is)f(supplied,)g Ft(jobs)f Fu(replaces)i(an)m(y)f Fr(jobsp)s(ec)40 b Fu(found)34 b(in)h Fr(command)j Fu(or)630 -1466 y Fr(argumen)m(ts)j Fu(with)c(the)h(corresp)s(onding)e(pro)s(cess) +1408 y Fr(argumen)m(ts)j Fu(with)c(the)h(corresp)s(onding)e(pro)s(cess) h(group)f Fm(id)p Fu(,)k(and)c(executes)j Fr(command)p -Fu(,)630 1575 y(passing)30 b(it)h Fr(argumen)m(t)r Fu(s,)g(returning)f -(its)g(exit)i(status.)150 1749 y Ft(kill)870 1891 y(kill)47 +Fu(,)630 1517 y(passing)30 b(it)h Fr(argumen)m(t)r Fu(s,)g(returning)f +(its)g(exit)i(status.)150 1678 y Ft(kill)870 1814 y(kill)47 b([-s)g Fj(sigspec)p Ft(])e([-n)i Fj(signum)p Ft(])f([-)p -Fj(sigspec)p Ft(])f Fj(jobspec)h Ft(or)h Fj(pid)870 2001 -y Ft(kill)g(-l|-L)f([)p Fj(exit_status)p Ft(])630 2143 +Fj(sigspec)p Ft(])f Fj(jobspec)h Ft(or)h Fj(pid)870 1923 +y Ft(kill)g(-l|-L)f([)p Fj(exit_status)p Ft(])630 2059 y Fu(Send)22 b(a)i(signal)g(sp)s(eci\014ed)f(b)m(y)g Fr(sigsp)s(ec)29 b Fu(or)24 b Fr(sign)m(um)f Fu(to)h(the)g(pro)s(cess)f -(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 2252 y(cation)k +(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 2168 y(cation)k Fr(jobsp)s(ec)j Fu(or)25 b(pro)s(cess)g Fm(id)h Fr(pid)p Fu(.)38 b Fr(sigsp)s(ec)31 b Fu(is)25 b(either)h(a)g(case-insensitiv)m -(e)i(signal)e(name)630 2362 y(suc)m(h)37 b(as)g Ft(SIGINT)f +(e)i(signal)e(name)630 2278 y(suc)m(h)37 b(as)g Ft(SIGINT)f Fu(\(with)h(or)g(without)g(the)g Ft(SIG)g Fu(pre\014x\))f(or)h(a)h -(signal)g(n)m(um)m(b)s(er;)h Fr(sign)m(um)630 2471 y +(signal)g(n)m(um)m(b)s(er;)h Fr(sign)m(um)630 2388 y Fu(is)g(a)f(signal)i(n)m(um)m(b)s(er.)63 b(If)39 b Fr(sigsp)s(ec)44 b Fu(and)38 b Fr(sign)m(um)g Fu(are)h(not)g(presen)m(t,)h -Ft(SIGTERM)d Fu(is)h(used.)630 2581 y(The)27 b Ft(-l)h +Ft(SIGTERM)d Fu(is)h(used.)630 2497 y(The)27 b Ft(-l)h Fu(option)g(lists)h(the)f(signal)h(names.)39 b(If)28 b(an)m(y)g(argumen)m(ts)h(are)f(supplied)f(when)g Ft(-l)g -Fu(is)630 2690 y(giv)m(en,)32 b(the)g(names)e(of)i(the)f(signals)g +Fu(is)630 2607 y(giv)m(en,)32 b(the)g(names)e(of)i(the)f(signals)g (corresp)s(onding)f(to)i(the)f(argumen)m(ts)g(are)h(listed,)g(and)630 -2800 y(the)c(return)f(status)h(is)g(zero.)41 b Fr(exit)p -1796 2800 28 4 v 41 w(status)32 b Fu(is)c(a)g(n)m(um)m(b)s(er)f(sp)s -(ecifying)g(a)i(signal)f(n)m(um)m(b)s(er)f(or)630 2910 +2716 y(the)c(return)f(status)h(is)g(zero.)41 b Fr(exit)p +1796 2716 28 4 v 41 w(status)32 b Fu(is)c(a)g(n)m(um)m(b)s(er)f(sp)s +(ecifying)g(a)i(signal)f(n)m(um)m(b)s(er)f(or)630 2826 y(the)h(exit)h(status)g(of)f(a)h(pro)s(cess)e(terminated)i(b)m(y)f(a)h (signal.)40 b(The)28 b Ft(-L)g Fu(option)g(is)g(equiv)-5 -b(alen)m(t)630 3019 y(to)34 b Ft(-l)p Fu(.)47 b(The)32 +b(alen)m(t)630 2935 y(to)34 b Ft(-l)p Fu(.)47 b(The)32 b(return)g(status)h(is)g(zero)g(if)g(at)g(least)h(one)f(signal)h(w)m -(as)f(successfully)g(sen)m(t,)h(or)630 3129 y(non-zero)d(if)f(an)h +(as)f(successfully)g(sen)m(t,)h(or)630 3045 y(non-zero)d(if)f(an)h (error)f(o)s(ccurs)g(or)g(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f -(encoun)m(tered.)150 3303 y Ft(wait)870 3445 y(wait)47 +(encoun)m(tered.)150 3206 y Ft(wait)870 3342 y(wait)47 b([-fn])f([-p)h Fj(varname)p Ft(])e([)p Fj(jobspec)h -Ft(or)h Fj(pid)g Ft(...)o(])630 3587 y Fu(W)-8 b(ait)28 +Ft(or)h Fj(pid)g Ft(...)o(])630 3477 y Fu(W)-8 b(ait)28 b(un)m(til)f(the)f(c)m(hild)h(pro)s(cess)f(sp)s(eci\014ed)g(b)m(y)g (eac)m(h)h(pro)s(cess)f Fm(id)h Fr(pid)i Fu(or)d(job)g(sp)s -(eci\014cation)630 3696 y Fr(jobsp)s(ec)40 b Fu(exits)35 +(eci\014cation)630 3587 y Fr(jobsp)s(ec)40 b Fu(exits)35 b(and)f(return)g(the)g(exit)i(status)f(of)g(the)g(last)g(command)f(w)m -(aited)i(for.)53 b(If)35 b(a)630 3806 y(job)g(sp)s(ec)f(is)h(giv)m(en,) +(aited)i(for.)53 b(If)35 b(a)630 3696 y(job)g(sp)s(ec)f(is)h(giv)m(en,) i(all)f(pro)s(cesses)f(in)f(the)h(job)g(are)g(w)m(aited)h(for.)54 -b(If)35 b(no)f(argumen)m(ts)i(are)630 3915 y(giv)m(en,)28 +b(If)35 b(no)f(argumen)m(ts)i(are)630 3806 y(giv)m(en,)28 b Ft(wait)c Fu(w)m(aits)j(for)e(all)i(running)c(bac)m(kground)j(jobs)f -(and)g(the)h(last-executed)h(pro)s(cess)630 4025 y(substitution,)37 +(and)g(the)h(last-executed)h(pro)s(cess)630 3915 y(substitution,)37 b(if)f(its)g(pro)s(cess)f(id)h(is)f(the)h(same)g(as)g Fr($!)p Fu(,)i(and)d(the)h(return)f(status)h(is)g(zero.)630 -4134 y(If)h(the)h Ft(-n)f Fu(option)h(is)f(supplied,)i -Ft(wait)d Fu(w)m(aits)j(for)e(a)h(single)g(job)f(from)g(the)h(list)g -(of)g Fr(pids)630 4244 y Fu(or)31 b Fr(jobsp)s(ecs)k -Fu(or,)d(if)f(no)g(argumen)m(ts)h(are)g(supplied,)e(an)m(y)i(job,)f(to) -i(complete)f(and)f(returns)630 4354 y(its)36 b(exit)h(status.)56 -b(If)35 b(none)h(of)g(the)g(supplied)e(argumen)m(ts)i(is)f(a)h(c)m -(hild)g(of)g(the)g(shell,)h(or)f(if)630 4463 y(no)31 -b(argumen)m(ts)g(are)g(supplied)f(and)g(the)h(shell)g(has)g(no)f(un)m -(w)m(aited-for)i(c)m(hildren,)f(the)g(exit)630 4573 y(status)k(is)g -(127.)55 b(If)34 b(the)h Ft(-p)g Fu(option)g(is)g(supplied,)f(the)h -(pro)s(cess)g(or)f(job)h(iden)m(ti\014er)g(of)g(the)630 -4682 y(job)j(for)g(whic)m(h)f(the)i(exit)g(status)f(is)g(returned)f(is) -h(assigned)h(to)g(the)f(v)-5 b(ariable)39 b Fr(v)-5 b(arname)630 -4792 y Fu(named)29 b(b)m(y)f(the)i(option)f(argumen)m(t.)41 -b(The)28 b(v)-5 b(ariable)30 b(will)g(b)s(e)e(unset)h(initially)-8 -b(,)31 b(b)s(efore)e(an)m(y)630 4902 y(assignmen)m(t.)76 -b(This)41 b(is)h(useful)f(only)h(when)f(the)h Ft(-n)f -Fu(option)i(is)f(supplied.)74 b(Supplying)630 5011 y(the)39 -b Ft(-f)f Fu(option,)k(when)37 b(job)i(con)m(trol)h(is)f(enabled,)i -(forces)e Ft(wait)e Fu(to)j(w)m(ait)g(for)e(eac)m(h)i -Fr(pid)630 5121 y Fu(or)29 b Fr(jobsp)s(ec)34 b Fu(to)c(terminate)g(b)s -(efore)f(returning)f(its)h(status,)h(in)m(tead)g(of)f(returning)f(when) -g(it)630 5230 y(c)m(hanges)37 b(status.)58 b(If)35 b(neither)h -Fr(jobsp)s(ec)41 b Fu(nor)36 b Fr(pid)i Fu(sp)s(eci\014es)e(an)g(activ) -m(e)i(c)m(hild)e(pro)s(cess)g(of)630 5340 y(the)31 b(shell,)f(the)h -(return)e(status)i(is)f(127.)p eop end -%%Page: 110 116 -TeXDict begin 110 115 bop 150 -116 a Fu(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2526 b(110)150 299 y Ft(disown)870 -433 y(disown)46 b([-ar])g([-h])h([)p Fj(jobspec)f Ft(...)h(|)g -Fj(pid)g Ft(...)g(])630 568 y Fu(Without)33 b(options,)h(remo)m(v)m(e)g -(eac)m(h)f Fr(jobsp)s(ec)38 b Fu(from)32 b(the)h(table)g(of)g(activ)m -(e)h(jobs.)47 b(If)32 b(the)h Ft(-h)630 677 y Fu(option)j(is)f(giv)m -(en,)i(the)f(job)f(is)g(not)g(remo)m(v)m(ed)h(from)f(the)g(table,)j -(but)c(is)i(mark)m(ed)f(so)g(that)630 787 y Ft(SIGHUP)e -Fu(is)j(not)f(sen)m(t)h(to)g(the)f(job)g(if)g(the)g(shell)h(receiv)m -(es)h(a)e Ft(SIGHUP)p Fu(.)54 b(If)34 b Fr(jobsp)s(ec)40 -b Fu(is)c(not)630 897 y(presen)m(t,)41 b(and)d(neither)h(the)g -Ft(-a)f Fu(nor)g(the)h Ft(-r)f Fu(option)h(is)g(supplied,)g(the)g -(curren)m(t)g(job)f(is)630 1006 y(used.)g(If)25 b(no)h -Fr(jobsp)s(ec)k Fu(is)c(supplied,)f(the)h Ft(-a)f Fu(option)h(means)g -(to)g(remo)m(v)m(e)h(or)e(mark)h(all)g(jobs;)630 1116 -y(the)31 b Ft(-r)e Fu(option)i(without)g(a)f Fr(jobsp)s(ec)36 -b Fu(argumen)m(t)30 b(restricts)h(op)s(eration)g(to)g(running)e(jobs.) -150 1275 y Ft(suspend)870 1410 y(suspend)46 b([-f])630 -1544 y Fu(Susp)s(end)31 b(the)i(execution)h(of)g(this)f(shell)g(un)m -(til)h(it)g(receiv)m(es)h(a)e Ft(SIGCONT)f Fu(signal.)50 -b(A)33 b(login)630 1654 y(shell)28 b(cannot)g(b)s(e)f(susp)s(ended;)g -(the)g Ft(-f)g Fu(option)i(can)f(b)s(e)f(used)g(to)h(o)m(v)m(erride)h -(this)e(and)g(force)630 1763 y(the)k(susp)s(ension.)275 -1923 y(When)f(job)f(con)m(trol)j(is)e(not)h(activ)m(e,)i(the)d +4025 y(If)h(the)h Ft(-n)f Fu(option)h(is)f(supplied,)i +Ft(wait)d Fu(w)m(aits)j(for)e(a)h(single)g(job)f(from)h(the)f(list)i +(of)e Fr(pid)t Fu(s)630 4134 y(or)31 b Fr(jobsp)s(ec)6 +b Fu(s)30 b(or,)i(if)f(no)g(argumen)m(ts)h(are)f(supplied,)g(an)m(y)g +(job,)h(to)g(complete)h(and)d(returns)630 4244 y(its)36 +b(exit)h(status.)56 b(If)35 b(none)h(of)g(the)g(supplied)e(argumen)m +(ts)i(is)f(a)h(c)m(hild)g(of)g(the)g(shell,)h(or)f(if)630 +4354 y(no)31 b(argumen)m(ts)g(are)g(supplied)f(and)g(the)h(shell)g(has) +g(no)f(un)m(w)m(aited-for)i(c)m(hildren,)f(the)g(exit)630 +4463 y(status)k(is)g(127.)55 b(If)34 b(the)h Ft(-p)g +Fu(option)g(is)g(supplied,)f(the)h(pro)s(cess)g(or)f(job)h(iden)m +(ti\014er)g(of)g(the)630 4573 y(job)j(for)g(whic)m(h)f(the)i(exit)g +(status)f(is)g(returned)f(is)h(assigned)h(to)g(the)f(v)-5 +b(ariable)39 b Fr(v)-5 b(arname)630 4682 y Fu(named)29 +b(b)m(y)f(the)i(option)f(argumen)m(t.)41 b(The)28 b(v)-5 +b(ariable)30 b(will)g(b)s(e)e(unset)h(initially)-8 b(,)31 +b(b)s(efore)e(an)m(y)630 4792 y(assignmen)m(t.)76 b(This)41 +b(is)h(useful)f(only)h(when)f(the)h Ft(-n)f Fu(option)i(is)f(supplied.) +74 b(Supplying)630 4902 y(the)31 b Ft(-f)g Fu(option,)g(when)f(job)h +(con)m(trol)i(is)e(enabled,)g(forces)g Ft(wait)f Fu(to)i(w)m(ait)g(for) +f(eac)m(h)h Fr(pid)i Fu(or)630 5011 y Fr(jobsp)s(ec)40 +b Fu(to)d(terminate)f(b)s(efore)f(returning)g(its)h(status,)h(instead)f +(of)f(returning)g(when)f(it)630 5121 y(c)m(hanges)j(status.)58 +b(If)35 b(neither)h Fr(jobsp)s(ec)41 b Fu(nor)36 b Fr(pid)i +Fu(sp)s(eci\014es)e(an)g(activ)m(e)i(c)m(hild)e(pro)s(cess)g(of)630 +5230 y(the)28 b(shell,)h(the)e(return)g(status)h(is)g(127.)41 +b(If)27 b Ft(wait)g Fu(is)g(in)m(terrupted)g(b)m(y)h(a)g(signal,)h(the) +f(return)630 5340 y(status)j(will)f(b)s(e)g(greater)i(than)e(128,)i(as) +e(describ)s(ed)g(ab)s(o)m(v)m(e)h(\(see)h(Section)f(3.7.6)h([Signals],) +p eop end +%%Page: 116 122 +TeXDict begin 116 121 bop 150 -116 a Fu(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2526 b(116)630 299 y(page)33 b(45\).)48 +b(Otherwise,)32 b(the)h(return)e(status)i(is)f(the)g(exit)i(status)e +(of)h(the)f(last)h(pro)s(cess)f(or)630 408 y(job)e(w)m(aited)h(for.)150 +568 y Ft(disown)870 702 y(disown)46 b([-ar])g([-h])h([)p +Fj(jobspec)f Ft(...)h(|)g Fj(pid)g Ft(...)g(])630 837 +y Fu(Without)33 b(options,)h(remo)m(v)m(e)g(eac)m(h)f +Fr(jobsp)s(ec)38 b Fu(from)32 b(the)h(table)g(of)g(activ)m(e)h(jobs.)47 +b(If)32 b(the)h Ft(-h)630 946 y Fu(option)j(is)f(giv)m(en,)i(the)f(job) +f(is)g(not)g(remo)m(v)m(ed)h(from)f(the)g(table,)j(but)c(is)i(mark)m +(ed)f(so)g(that)630 1056 y Ft(SIGHUP)e Fu(is)j(not)f(sen)m(t)h(to)g +(the)f(job)g(if)g(the)g(shell)h(receiv)m(es)h(a)e Ft(SIGHUP)p +Fu(.)54 b(If)34 b Fr(jobsp)s(ec)40 b Fu(is)c(not)630 +1166 y(presen)m(t,)41 b(and)d(neither)h(the)g Ft(-a)f +Fu(nor)g(the)h Ft(-r)f Fu(option)h(is)g(supplied,)g(the)g(curren)m(t)g +(job)f(is)630 1275 y(used.)g(If)25 b(no)h Fr(jobsp)s(ec)k +Fu(is)c(supplied,)f(the)h Ft(-a)f Fu(option)h(means)g(to)g(remo)m(v)m +(e)h(or)e(mark)h(all)g(jobs;)630 1385 y(the)31 b Ft(-r)e +Fu(option)i(without)g(a)f Fr(jobsp)s(ec)36 b Fu(argumen)m(t)30 +b(restricts)h(op)s(eration)g(to)g(running)e(jobs.)150 +1544 y Ft(suspend)870 1679 y(suspend)46 b([-f])630 1813 +y Fu(Susp)s(end)31 b(the)i(execution)h(of)g(this)f(shell)g(un)m(til)h +(it)g(receiv)m(es)h(a)e Ft(SIGCONT)f Fu(signal.)50 b(A)33 +b(login)630 1923 y(shell,)25 b(or)f(a)g(shell)f(without)h(job)f(con)m +(trol)i(enabled,)g(cannot)f(b)s(e)f(susp)s(ended;)h(the)g +Ft(-f)e Fu(option)630 2032 y(can)35 b(b)s(e)g(used)f(to)i(o)m(v)m +(erride)g(this)f(and)f(force)i(the)f(susp)s(ension.)53 +b(The)34 b(return)g(status)h(is)h(0)630 2142 y(unless)43 +b(the)g(shell)h(is)f(a)h(login)g(shell)g(or)f(job)g(con)m(trol)i(is)e +(not)h(enabled)f(and)g Ft(-f)f Fu(is)i(not)630 2252 y(supplied.)275 +2411 y(When)30 b(job)f(con)m(trol)j(is)e(not)h(activ)m(e,)i(the)d Ft(kill)f Fu(and)h Ft(wait)f Fu(builtins)g(do)h(not)h(accept)h -Fr(jobsp)s(ec)j Fu(argu-)150 2032 y(men)m(ts.)41 b(They)30 +Fr(jobsp)s(ec)j Fu(argu-)150 2521 y(men)m(ts.)41 b(They)30 b(m)m(ust)g(b)s(e)g(supplied)f(pro)s(cess)h Fm(id)p Fu(s.)150 -2273 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11 b(ariables)150 -2457 y Ft(auto_resume)630 2567 y Fu(This)31 b(v)-5 b(ariable)32 +2761 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11 b(ariables)150 +2946 y Ft(auto_resume)630 3055 y Fu(This)31 b(v)-5 b(ariable)32 b(con)m(trols)g(ho)m(w)g(the)f(shell)h(in)m(teracts)h(with)e(the)h -(user)e(and)h(job)g(con)m(trol.)45 b(If)630 2677 y(this)28 +(user)e(and)h(job)g(con)m(trol.)45 b(If)630 3165 y(this)28 b(v)-5 b(ariable)30 b(exists)f(then)f(single)h(w)m(ord)f(simple)h -(commands)f(without)g(redirections)i(are)630 2786 y(treated)h(as)g +(commands)f(without)g(redirections)i(are)630 3274 y(treated)h(as)g (candidates)f(for)g(resumption)g(of)g(an)g(existing)h(job.)41 -b(There)29 b(is)h(no)h(am)m(biguit)m(y)630 2896 y(allo)m(w)m(ed;)f(if)d +b(There)29 b(is)h(no)h(am)m(biguit)m(y)630 3384 y(allo)m(w)m(ed;)f(if)d (there)g(is)g(more)g(than)f(one)h(job)g(b)s(eginning)f(with)g(the)h -(string)g(t)m(yp)s(ed,)g(then)g(the)630 3005 y(most)j(recen)m(tly)h +(string)g(t)m(yp)s(ed,)g(then)g(the)630 3494 y(most)j(recen)m(tly)h (accessed)f(job)f(will)h(b)s(e)f(selected.)42 b(The)29 -b(name)g(of)h(a)g(stopp)s(ed)e(job,)i(in)f(this)630 3115 +b(name)g(of)h(a)g(stopp)s(ed)e(job,)i(in)f(this)630 3603 y(con)m(text,)h(is)e(the)g(command)g(line)g(used)f(to)h(start)g(it.)41 b(If)27 b(this)h(v)-5 b(ariable)28 b(is)g(set)g(to)h(the)e(v)-5 -b(alue)630 3225 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f +b(alue)630 3713 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f (m)m(ust)h(matc)m(h)g(the)h(name)f(of)g(a)g(stopp)s(ed)f(job)h -(exactly;)j(if)630 3334 y(set)29 b(to)h(`)p Ft(substring)p +(exactly;)j(if)630 3822 y(set)29 b(to)h(`)p Ft(substring)p Fu(',)d(the)i(string)g(supplied)e(needs)i(to)g(matc)m(h)h(a)f -(substring)f(of)h(the)g(name)630 3444 y(of)38 b(a)f(stopp)s(ed)g(job.) +(substring)f(of)h(the)g(name)630 3932 y(of)38 b(a)f(stopp)s(ed)g(job.) 62 b(The)37 b(`)p Ft(substring)p Fu(')e(v)-5 b(alue)38 b(pro)m(vides)f(functionalit)m(y)i(analogous)g(to)630 -3553 y(the)c(`)p Ft(\045?)p Fu(')g(job)g Fm(id)g Fu(\(see)h(Section)g -(7.1)g([Job)e(Con)m(trol)i(Basics],)i(page)e(107\).)56 -b(If)34 b(set)i(to)g(an)m(y)630 3663 y(other)c(v)-5 b(alue,)32 +4042 y(the)c(`)p Ft(\045?)p Fu(')g(job)g Fm(id)g Fu(\(see)h(Section)g +(7.1)g([Job)e(Con)m(trol)i(Basics],)i(page)e(113\).)56 +b(If)34 b(set)i(to)g(an)m(y)630 4151 y(other)c(v)-5 b(alue,)32 b(the)g(supplied)e(string)i(m)m(ust)f(b)s(e)g(a)h(pre\014x)f(of)h(a)g -(stopp)s(ed)e(job's)i(name;)g(this)630 3773 y(pro)m(vides)e +(stopp)s(ed)e(job's)i(name;)g(this)630 4261 y(pro)m(vides)e (functionalit)m(y)i(analogous)g(to)f(the)g(`)p Ft(\045)p Fu(')f(job)g Fm(id)p Fu(.)p eop end -%%Page: 111 117 -TeXDict begin 111 116 bop 3614 -116 a Fu(111)150 299 +%%Page: 117 123 +TeXDict begin 117 122 bop 3614 -116 a Fu(117)150 299 y Fp(8)80 b(Command)54 b(Line)f(Editing)150 635 y Fu(This)28 b(c)m(hapter)i(describ)s(es)e(the)h(basic)g(features)h(of)f(the)g Fm(gnu)f Fu(command)h(line)g(editing)h(in)m(terface.)42 @@ -16228,7 +16723,7 @@ b(Com-)150 745 y(mand)c(line)i(editing)f(is)g(pro)m(vided)g(b)m(y)g (shell)f(in)m(v)m(o)s(cation.)45 b(Line)31 b(editing)150 1074 y(is)g(also)h(used)f(when)f(using)h(the)g Ft(-e)g Fu(option)h(to)g(the)f Ft(read)f Fu(builtin)h(command)g(\(see)h -(Section)g(4.2)h([Bash)150 1183 y(Builtins],)j(page)f(51\).)52 +(Section)g(4.2)h([Bash)150 1183 y(Builtins],)j(page)f(55\).)52 b(By)35 b(default,)g(the)f(line)h(editing)f(commands)g(are)h(similar)f (to)h(those)f(of)g(Emacs.)150 1293 y(A)h(vi-st)m(yle)h(line)f(editing)g (in)m(terface)h(is)e(also)i(a)m(v)-5 b(ailable.)55 b(Line)34 @@ -16236,7 +16731,7 @@ b(editing)h(can)g(b)s(e)f(enabled)g(at)h(an)m(y)g(time)150 1402 y(using)h(the)g Ft(-o)30 b(emacs)35 b Fu(or)h Ft(-o)30 b(vi)35 b Fu(options)i(to)g(the)f Ft(set)f Fu(builtin)h(command)g (\(see)h(Section)g(4.3.1)h([The)150 1512 y(Set)31 b(Builtin],)g(page)g -(62\),)h(or)e(disabled)g(using)g(the)h Ft(+o)e(emacs)g +(67\),)h(or)e(disabled)g(using)g(the)h Ft(+o)e(emacs)g Fu(or)i Ft(+o)e(vi)h Fu(options)h(to)g Ft(set)p Fu(.)150 1804 y Fs(8.1)68 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)150 1963 y Fu(The)30 b(follo)m(wing)i(paragraphs)d(describ)s(e)h(the)h @@ -16275,7 +16770,7 @@ b Ft(DEL)p Fu(,)f Ft(ESC)p Fu(,)g Ft(LFD)p Fu(,)g Ft(SPC)p Fu(,)g Ft(RET)p Fu(,)150 3902 y(and)d Ft(TAB)f Fu(all)j(stand)e(for)g (themselv)m(es)i(when)d(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init) h(\014le)f(\(see)i(Section)f(8.3)150 4012 y([Readline)f(Init)g(File],)i -(page)e(114\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g +(page)e(120\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g Ft(LFD)f Fu(k)m(ey)-8 b(,)36 b(t)m(yping)e Ft(C-j)e Fu(will)i(pro)s (duce)150 4122 y(the)d(desired)e(c)m(haracter.)43 b(The)30 b Ft(RET)f Fu(k)m(ey)i(ma)m(y)g(b)s(e)f(lab)s(eled)h @@ -16299,9 +16794,9 @@ Ft(RET)p Fu(.)39 b(Y)-8 b(ou)25 b(do)g(not)g(ha)m(v)m(e)h(to)g(b)s(e)e Ft(RET)p Fu(;)i(the)g(en)m(tire)g(line)f(is)h(accepted)g(regardless)g (of)f(the)h(lo)s(cation)h(of)e(the)h(cursor)150 5340 y(within)c(the)g(line.)p eop end -%%Page: 112 118 -TeXDict begin 112 117 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(112)150 299 y Fk(8.2.1)63 +%%Page: 118 124 +TeXDict begin 118 123 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(118)150 299 y Fk(8.2.1)63 b(Readline)40 b(Bare)h(Essen)m(tials)150 446 y Fu(In)31 b(order)h(to)h(en)m(ter)g(c)m(haracters)g(in)m(to)g(the)g(line,)g (simply)e(t)m(yp)s(e)i(them.)46 b(The)31 b(t)m(yp)s(ed)h(c)m(haracter)i @@ -16338,39 +16833,39 @@ h(c)m(haracter.)150 2108 y Ft(DEL)e Fu(or)i Ft(Backspace)630 (cursor.)150 2826 y Fj(C-_)e Fu(or)i Fj(C-x)e(C-u)630 2936 y Fu(Undo)k(the)h(last)g(editing)g(command.)50 b(Y)-8 b(ou)34 b(can)f(undo)g(all)h(the)f(w)m(a)m(y)i(bac)m(k)f(to)g(an)g -(empt)m(y)630 3045 y(line.)150 3215 y(\(Dep)s(ending)29 -b(on)h(y)m(our)f(con\014guration,)i(the)e Ft(Backspace)e -Fu(k)m(ey)k(b)s(e)d(set)j(to)f(delete)h(the)e(c)m(haracter)i(to)g(the) -150 3324 y(left)37 b(of)f(the)h(cursor)e(and)h(the)g -Ft(DEL)g Fu(k)m(ey)h(set)f(to)h(delete)h(the)e(c)m(haracter)i -(underneath)d(the)h(cursor,)i(lik)m(e)150 3434 y Fj(C-d)p -Fu(,)30 b(rather)g(than)g(the)h(c)m(haracter)h(to)f(the)f(left)h(of)g -(the)f(cursor.\))150 3640 y Fk(8.2.2)63 b(Readline)40 -b(Mo)m(v)m(emen)m(t)h(Commands)150 3787 y Fu(The)27 b(ab)s(o)m(v)m(e)i -(table)g(describ)s(es)e(the)g(most)i(basic)f(k)m(eystrok)m(es)h(that)f -(y)m(ou)g(need)g(in)f(order)g(to)i(do)e(editing)i(of)150 -3897 y(the)k(input)f(line.)49 b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m -(enience,)j(man)m(y)d(other)g(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g -(in)h(addition)150 4006 y(to)j Fj(C-b)p Fu(,)f Fj(C-f)p -Fu(,)g Fj(C-d)p Fu(,)h(and)e Ft(DEL)p Fu(.)54 b(Here)35 -b(are)g(some)h(commands)e(for)h(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h -(the)150 4116 y(line.)150 4286 y Fj(C-a)336 b Fu(Mo)m(v)m(e)32 -b(to)g(the)e(start)h(of)g(the)f(line.)150 4452 y Fj(C-e)336 -b Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 -4618 y Fj(M-f)336 b Fu(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f -(where)g(a)h(w)m(ord)f(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.) -150 4785 y Fj(M-b)336 b Fu(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m -(ord.)150 4951 y Fj(C-l)336 b Fu(Clear)31 b(the)f(screen,)h(reprin)m -(ting)f(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275 -5121 y(Notice)c(ho)m(w)f Fj(C-f)e Fu(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m -(haracter,)j(while)d Fj(M-f)e Fu(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m -(ord.)39 b(It)24 b(is)h(a)g(lo)s(ose)150 5230 y(con)m(v)m(en)m(tion)32 +(empt)m(y)630 3045 y(line.)150 3215 y(\(Dep)s(ending)c(on)g(y)m(our)g +(con\014guration,)h(the)f Ft(Backspace)d Fu(k)m(ey)k(migh)m(t)g(b)s(e)e +(set)i(to)g(delete)g(the)f(c)m(haracter)150 3324 y(to)h(the)f(left)h +(of)f(the)g(cursor)f(and)h(the)g Ft(DEL)f Fu(k)m(ey)i(set)g(to)f +(delete)i(the)e(c)m(haracter)h(underneath)e(the)h(cursor,)150 +3434 y(lik)m(e)i Fj(C-d)p Fu(,)d(rather)i(than)f(the)g(c)m(haracter)i +(to)f(the)g(left)g(of)g(the)f(cursor.\))150 3640 y Fk(8.2.2)63 +b(Readline)40 b(Mo)m(v)m(emen)m(t)h(Commands)150 3787 +y Fu(The)27 b(ab)s(o)m(v)m(e)i(table)g(describ)s(es)e(the)g(most)i +(basic)f(k)m(eystrok)m(es)h(that)f(y)m(ou)g(need)g(in)f(order)g(to)i +(do)e(editing)i(of)150 3897 y(the)k(input)f(line.)49 +b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m(enience,)j(man)m(y)d(other)g +(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g(in)h(addition)150 +4006 y(to)j Fj(C-b)p Fu(,)f Fj(C-f)p Fu(,)g Fj(C-d)p +Fu(,)h(and)e Ft(DEL)p Fu(.)54 b(Here)35 b(are)g(some)h(commands)e(for)h +(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h(the)150 4116 +y(line.)150 4286 y Fj(C-a)336 b Fu(Mo)m(v)m(e)32 b(to)g(the)e(start)h +(of)g(the)f(line.)150 4452 y Fj(C-e)336 b Fu(Mo)m(v)m(e)32 +b(to)g(the)e(end)g(of)g(the)h(line.)150 4618 y Fj(M-f)336 +b Fu(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f(where)g(a)h(w)m(ord)f +(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.)150 +4785 y Fj(M-b)336 b Fu(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m(ord.) +150 4951 y Fj(C-l)336 b Fu(Clear)31 b(the)f(screen,)h(reprin)m(ting)f +(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275 5121 y(Notice)c(ho)m(w)f +Fj(C-f)e Fu(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m(haracter,)j(while)d +Fj(M-f)e Fu(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m(ord.)39 +b(It)24 b(is)h(a)g(lo)s(ose)150 5230 y(con)m(v)m(en)m(tion)32 b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m (haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150 5340 y(w)m(ords.)p eop end -%%Page: 113 119 -TeXDict begin 113 118 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(113)150 299 y Fk(8.2.3)63 +%%Page: 119 125 +TeXDict begin 119 124 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(119)150 299 y Fk(8.2.3)63 b(Readline)40 b(Killing)i(Commands)150 446 y Fr(Killing)35 b Fu(text)28 b(means)e(to)h(delete)h(the)f(text)g(from)g(the)f(line,)i (but)e(to)h(sa)m(v)m(e)h(it)g(a)m(w)m(a)m(y)g(for)e(later)i(use,)f @@ -16398,14 +16893,14 @@ y Fj(M-d)336 b Fu(Kill)27 b(from)f(the)g(cursor)g(to)h(the)f(end)g(of)h (the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m(ords,) g(to)g(the)630 1946 y(end)j(of)g(the)h(next)f(w)m(ord.)41 b(W)-8 b(ord)30 b(b)s(oundaries)f(are)i(the)g(same)f(as)h(those)g(used) -f(b)m(y)g Fj(M-f)p Fu(.)150 2107 y Fj(M-DEL)240 b Fu(Kill)31 -b(from)f(the)h(cursor)f(the)g(start)h(of)g(the)g(curren)m(t)f(w)m(ord,) -h(or,)f(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)i(the)630 -2217 y(start)39 b(of)f(the)h(previous)f(w)m(ord.)64 b(W)-8 -b(ord)39 b(b)s(oundaries)e(are)i(the)f(same)h(as)g(those)f(used)g(b)m -(y)630 2326 y Fj(M-b)p Fu(.)150 2487 y Fj(C-w)336 b Fu(Kill)35 -b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.)55 -b(This)34 b(is)h(di\013eren)m(t)h(than)e Fj(M-DEL)630 +f(b)m(y)g Fj(M-f)p Fu(.)150 2107 y Fj(M-DEL)240 b Fu(Kill)34 +b(from)f(the)g(cursor)g(to)h(the)g(start)g(of)g(the)f(curren)m(t)g(w)m +(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m(ords,)g(to)630 +2217 y(the)28 b(start)g(of)g(the)g(previous)f(w)m(ord.)39 +b(W)-8 b(ord)28 b(b)s(oundaries)e(are)i(the)g(same)g(as)g(those)g(used) +f(b)m(y)630 2326 y Fj(M-b)p Fu(.)150 2487 y Fj(C-w)336 +b Fu(Kill)35 b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.) +55 b(This)34 b(is)h(di\013eren)m(t)h(than)e Fj(M-DEL)630 2597 y Fu(b)s(ecause)c(the)h(w)m(ord)f(b)s(oundaries)f(di\013er.)275 2759 y(Here)42 b(is)f(ho)m(w)h(to)g Fr(y)m(ank)47 b Fu(the)42 b(text)g(bac)m(k)h(in)m(to)f(the)g(line.)74 b(Y)-8 b(anking)43 @@ -16444,13 +16939,13 @@ b(on)e(the)h(input)e(line.)150 4974 y Fk(8.2.5)63 b(Searc)m(hing)40 b(for)i(Commands)g(in)f(the)g(History)150 5121 y Fu(Readline)35 b(pro)m(vides)f(commands)g(for)g(searc)m(hing)h(through)e(the)i (command)f(history)g(\(see)h(Section)g(9.1)150 5230 y([Bash)i(History)h -(F)-8 b(acilities],)42 b(page)37 b(146\))i(for)d(lines)h(con)m(taining) +(F)-8 b(acilities],)42 b(page)37 b(152\))i(for)d(lines)h(con)m(taining) i(a)e(sp)s(eci\014ed)f(string.)60 b(There)36 b(are)i(t)m(w)m(o)150 5340 y(searc)m(h)31 b(mo)s(des:)40 b Fr(incremen)m(tal)35 b Fu(and)30 b Fr(non-incremen)m(tal)p Fu(.)p eop end -%%Page: 114 120 -TeXDict begin 114 119 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(114)275 299 y(Incremen)m(tal)26 +%%Page: 120 126 +TeXDict begin 120 125 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(120)275 299 y(Incremen)m(tal)26 b(searc)m(hes)h(b)s(egin)e(b)s(efore)g(the)h(user)f(has)h(\014nished)e (t)m(yping)i(the)g(searc)m(h)g(string.)39 b(As)26 b(eac)m(h)150 408 y(c)m(haracter)37 b(of)e(the)h(searc)m(h)g(string)f(is)h(t)m(yp)s @@ -16504,8 +16999,8 @@ b(Readline)47 b(Init)e(File)150 3055 y Fu(Although)f(the)g(Readline)g (eybindings)f(installed)g(b)m(y)150 3165 y(default,)26 b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren)m(t)f(set)g(of)g(k) m(eybindings.)38 b(An)m(y)25 b(user)f(can)h(customize)h(programs)150 -3274 y(that)45 b(use)f(Readline)h(b)m(y)f(putting)g(commands)g(in)g(an) -g Fr(inputrc)49 b Fu(\014le,)g(con)m(v)m(en)m(tionally)e(in)d(his)g +3274 y(that)39 b(use)g(Readline)g(b)m(y)f(putting)h(commands)f(in)g(an) +h Fr(inputrc)k Fu(\014le,)e(con)m(v)m(en)m(tionally)h(in)c(their)h (home)150 3384 y(directory)-8 b(.)59 b(The)35 b(name)i(of)f(this)g (\014le)g(is)g(tak)m(en)h(from)f(the)g(v)-5 b(alue)37 b(of)f(the)g(shell)h(v)-5 b(ariable)36 b Ft(INPUTRC)p @@ -16516,7 +17011,7 @@ b(that)g(\014le)h(do)s(es)e(not)i(exist)g(or)f(cannot)h(b)s(e)150 Fu(.)47 b(The)33 b Ft(bind)g Fu(builtin)g(command)h(can)g(also)h(b)s(e) e(used)150 3713 y(to)e(set)g(Readline)g(k)m(eybindings)f(and)g(v)-5 b(ariables.)41 b(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page)g -(51.)275 3843 y(When)e(a)h(program)f(whic)m(h)h(uses)f(the)h(Readline)g +(55.)275 3843 y(When)e(a)h(program)f(whic)m(h)h(uses)f(the)h(Readline)g (library)f(starts)h(up,)f(the)h(init)g(\014le)f(is)h(read,)g(and)f(the) 150 3953 y(k)m(ey)i(bindings)e(are)i(set.)275 4083 y(In)26 b(addition,)i(the)f Ft(C-x)i(C-r)d Fu(command)h(re-reads)g(this)f(init) @@ -16529,7 +17024,7 @@ b(lines)h(are)150 4641 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h (a)g(`)p Ft(#)p Fu(')g(are)h(commen)m(ts.)73 b(Lines)41 b(b)s(eginning)f(with)g(a)i(`)p Ft($)p Fu(')f(indicate)150 4750 y(conditional)e(constructs)f(\(see)g(Section)h(8.3.2)g -([Conditional)g(Init)e(Constructs],)j(page)e(122\).)64 +([Conditional)g(Init)e(Constructs],)j(page)e(129\).)64 b(Other)150 4860 y(lines)31 b(denote)g(v)-5 b(ariable)31 b(settings)g(and)f(k)m(ey)h(bindings.)150 5011 y(V)-8 b(ariable)32 b(Settings)630 5121 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e @@ -16538,632 +17033,707 @@ b(ariable)32 b(Settings)630 5121 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e b(in)f(Readline)i(using)e(the)g Ft(set)g Fu(command)g(within)g(the)h (init)g(\014le.)50 b(The)33 b(syn)m(tax)630 5340 y(is)d(simple:)p eop end -%%Page: 115 121 -TeXDict begin 115 120 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(115)870 299 y Ft(set)47 -b Fj(variable)e(value)630 436 y Fu(Here,)29 b(for)e(example,)h(is)g(ho) +%%Page: 121 127 +TeXDict begin 121 126 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(121)870 299 y Ft(set)47 +b Fj(variable)e(value)630 432 y Fu(Here,)29 b(for)e(example,)h(is)g(ho) m(w)f(to)h(c)m(hange)g(from)f(the)g(default)h(Emacs-lik)m(e)h(k)m(ey)f -(binding)e(to)630 545 y(use)k Ft(vi)g Fu(line)h(editing)g(commands:)870 -682 y Ft(set)47 b(editing-mode)d(vi)630 819 y Fu(V)-8 +(binding)e(to)630 542 y(use)k Ft(vi)g Fu(line)h(editing)g(commands:)870 +675 y Ft(set)47 b(editing-mode)d(vi)630 808 y Fu(V)-8 b(ariable)36 b(names)f(and)g(v)-5 b(alues,)36 b(where)f(appropriate,)h -(are)g(recognized)g(without)f(regard)630 929 y(to)c(case.)42 +(are)g(recognized)g(without)f(regard)630 917 y(to)c(case.)42 b(Unrecognized)31 b(v)-5 b(ariable)31 b(names)g(are)f(ignored.)630 -1066 y(Bo)s(olean)c(v)-5 b(ariables)26 b(\(those)g(that)g(can)f(b)s(e)f +1050 y(Bo)s(olean)c(v)-5 b(ariables)26 b(\(those)g(that)g(can)f(b)s(e)f (set)i(to)g(on)f(or)g(o\013)7 b(\))25 b(are)h(set)f(to)h(on)f(if)g(the) -g(v)-5 b(alue)26 b(is)630 1176 y(n)m(ull)e(or)g(empt)m(y)-8 +g(v)-5 b(alue)26 b(is)630 1160 y(n)m(ull)e(or)g(empt)m(y)-8 b(,)27 b Fr(on)d Fu(\(case-insensitiv)m(e\),)29 b(or)24 b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v) --5 b(ariable)630 1285 y(b)s(eing)30 b(set)h(to)g(o\013.)630 -1422 y(The)37 b Ft(bind)30 b(-V)37 b Fu(command)g(lists)i(the)f(curren) +-5 b(ariable)630 1270 y(b)s(eing)30 b(set)h(to)g(o\013.)630 +1403 y(The)37 b Ft(bind)30 b(-V)37 b Fu(command)g(lists)i(the)f(curren) m(t)f(Readline)i(v)-5 b(ariable)38 b(names)g(and)f(v)-5 -b(alues.)630 1532 y(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page) -g(51.)630 1669 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g +b(alues.)630 1512 y(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page) +g(55.)630 1645 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g (is)g(c)m(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 -b(ariables.)630 1833 y Ft(bell-style)1110 1943 y Fu(Con)m(trols)44 -b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)m(ts)f(to)h(ring)e(the)h -(termi-)1110 2052 y(nal)37 b(b)s(ell.)61 b(If)37 b(set)h(to)g(`)p -Ft(none)p Fu(',)g(Readline)g(nev)m(er)g(rings)e(the)i(b)s(ell.)61 -b(If)36 b(set)i(to)1110 2162 y(`)p Ft(visible)p Fu(',)32 -b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g(one)g(is)g(a)m(v)-5 -b(ailable.)51 b(If)33 b(set)g(to)1110 2271 y(`)p Ft(audible)p -Fu(')j(\(the)i(default\),)i(Readline)e(attempts)g(to)h(ring)e(the)g -(terminal's)1110 2381 y(b)s(ell.)630 2545 y Ft(bind-tty-special-chars) -1110 2655 y Fu(If)e(set)g(to)h(`)p Ft(on)p Fu(')f(\(the)g(default\),)i -(Readline)f(attempts)g(to)g(bind)d(the)i(con)m(trol)1110 -2765 y(c)m(haracters)30 b(treated)g(sp)s(ecially)g(b)m(y)f(the)g(k)m -(ernel's)h(terminal)f(driv)m(er)g(to)h(their)1110 2874 -y(Readline)h(equiv)-5 b(alen)m(ts.)630 3039 y Ft(blink-matching-paren) -1110 3148 y Fu(If)36 b(set)g(to)h(`)p Ft(on)p Fu(',)h(Readline)f -(attempts)g(to)g(brie\015y)e(mo)m(v)m(e)j(the)f(cursor)e(to)i(an)1110 -3258 y(op)s(ening)k(paren)m(thesis)h(when)f(a)h(closing)h(paren)m -(thesis)e(is)h(inserted.)74 b(The)1110 3367 y(default)31 -b(is)f(`)p Ft(off)p Fu('.)630 3532 y Ft(colored-completion-prefi)o(x) -1110 3641 y Fu(If)f(set)h(to)g(`)p Ft(on)p Fu(',)g(when)e(listing)i -(completions,)h(Readline)f(displa)m(ys)g(the)f(com-)1110 -3751 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s(ossible)f -(completions)h(using)f(a)h(di\013eren)m(t)g(color.)1110 -3861 y(The)39 b(color)i(de\014nitions)f(are)g(tak)m(en)h(from)f(the)g -(v)-5 b(alue)40 b(of)g(the)g Ft(LS_COLORS)1110 3970 y -Fu(en)m(vironmen)m(t)31 b(v)-5 b(ariable.)41 b(The)30 -b(default)h(is)f(`)p Ft(off)p Fu('.)630 4134 y Ft(colored-stats)1110 -4244 y Fu(If)c(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(displa)m(ys)g -(p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110 -4354 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67 +b(ariables.)630 1802 y Ft(active-region-start-colo)o(r)1110 +1911 y Fu(A)27 b(string)f(v)-5 b(ariable)27 b(that)g(con)m(trols)h(the) +f(text)g(color)h(and)e(bac)m(kground)g(when)1110 2021 +y(displa)m(ying)50 b(the)f(text)h(in)f(the)h(activ)m(e)h(region)f +(\(see)g(the)g(description)f(of)1110 2131 y Ft(enable-active-region)25 +b Fu(b)s(elo)m(w\).)43 b(This)30 b(string)h(m)m(ust)f(not)h(tak)m(e)i +(up)d(an)m(y)1110 2240 y(ph)m(ysical)25 b(c)m(haracter)h(p)s(ositions)f +(on)g(the)f(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(consist)h(only) +1110 2350 y(of)37 b(terminal)g(escap)s(e)g(sequences.)61 +b(It)36 b(is)h(output)g(to)g(the)g(terminal)g(b)s(efore)1110 +2459 y(displa)m(ying)h(the)f(text)i(in)e(the)h(activ)m(e)h(region.)63 +b(This)37 b(v)-5 b(ariable)38 b(is)f(reset)h(to)1110 +2569 y(the)29 b(default)g(v)-5 b(alue)29 b(whenev)m(er)f(the)h +(terminal)g(t)m(yp)s(e)g(c)m(hanges.)41 b(The)28 b(default)1110 +2679 y(v)-5 b(alue)30 b(is)f(the)g(string)g(that)h(puts)e(the)i +(terminal)f(in)g(standout)g(mo)s(de,)g(as)h(ob-)1110 +2788 y(tained)40 b(from)f(the)h(terminal's)g(terminfo)g(description.)68 +b(A)40 b(sample)f(v)-5 b(alue)1110 2898 y(migh)m(t)31 +b(b)s(e)f(`)p Ft(\\e[01;33m)p Fu('.)630 3054 y Ft +(active-region-end-color)1110 3164 y Fu(A)48 b(string)g(v)-5 +b(ariable)48 b(that)h Ft(")p Fu(undo)s(es)p Ft(")d Fu(the)i(e\013ects)h +(of)f Ft(active-region-)1110 3273 y(start-color)36 b +Fu(and)i(restores)h Ft(")p Fu(normal)p Ft(")f Fu(terminal)h(displa)m(y) +g(app)s(earance)1110 3383 y(after)26 b(displa)m(ying)h(text)f(in)g(the) +g(activ)m(e)i(region.)40 b(This)25 b(string)h(m)m(ust)f(not)h(tak)m(e) +1110 3493 y(up)e(an)m(y)h(ph)m(ysical)h(c)m(haracter)h(p)s(ositions)d +(on)h(the)h(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(con-)1110 +3602 y(sist)29 b(only)h(of)f(terminal)h(escap)s(e)f(sequences.)41 +b(It)29 b(is)g(output)g(to)h(the)f(terminal)1110 3712 +y(after)36 b(displa)m(ying)g(the)g(text)h(in)e(the)h(activ)m(e)i +(region.)58 b(This)34 b(v)-5 b(ariable)37 b(is)f(re-)1110 +3821 y(set)e(to)g(the)g(default)g(v)-5 b(alue)34 b(whenev)m(er)f(the)h +(terminal)g(t)m(yp)s(e)f(c)m(hanges.)51 b(The)1110 3931 +y(default)38 b(v)-5 b(alue)39 b(is)f(the)h(string)f(that)h(restores)f +(the)h(terminal)f(from)g(stand-)1110 4041 y(out)30 b(mo)s(de,)f(as)g +(obtained)h(from)f(the)g(terminal's)h(terminfo)f(description.)41 +b(A)1110 4150 y(sample)31 b(v)-5 b(alue)30 b(migh)m(t)h(b)s(e)f(`)p +Ft(\\e[0m)p Fu('.)630 4307 y Ft(bell-style)1110 4416 +y Fu(Con)m(trols)44 b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)m +(ts)f(to)h(ring)e(the)h(termi-)1110 4526 y(nal)37 b(b)s(ell.)61 +b(If)37 b(set)h(to)g(`)p Ft(none)p Fu(',)g(Readline)g(nev)m(er)g(rings) +e(the)i(b)s(ell.)61 b(If)36 b(set)i(to)1110 4635 y(`)p +Ft(visible)p Fu(',)32 b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g +(one)g(is)g(a)m(v)-5 b(ailable.)51 b(If)33 b(set)g(to)1110 +4745 y(`)p Ft(audible)p Fu(')j(\(the)i(default\),)i(Readline)e +(attempts)g(to)h(ring)e(the)g(terminal's)1110 4855 y(b)s(ell.)630 +5011 y Ft(bind-tty-special-chars)1110 5121 y Fu(If)e(set)g(to)h(`)p +Ft(on)p Fu(')f(\(the)g(default\),)i(Readline)f(attempts)g(to)g(bind)d +(the)i(con)m(trol)1110 5230 y(c)m(haracters)30 b(treated)g(sp)s +(ecially)g(b)m(y)f(the)g(k)m(ernel's)h(terminal)f(driv)m(er)g(to)h +(their)1110 5340 y(Readline)h(equiv)-5 b(alen)m(ts.)p +eop end +%%Page: 122 128 +TeXDict begin 122 127 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(122)630 299 y Ft +(blink-matching-paren)1110 408 y Fu(If)36 b(set)g(to)h(`)p +Ft(on)p Fu(',)h(Readline)f(attempts)g(to)g(brie\015y)e(mo)m(v)m(e)j +(the)f(cursor)e(to)i(an)1110 518 y(op)s(ening)k(paren)m(thesis)h(when)f +(a)h(closing)h(paren)m(thesis)e(is)h(inserted.)74 b(The)1110 +628 y(default)31 b(is)f(`)p Ft(off)p Fu('.)630 792 y +Ft(colored-completion-prefi)o(x)1110 902 y Fu(If)f(set)h(to)g(`)p +Ft(on)p Fu(',)g(when)e(listing)i(completions,)h(Readline)f(displa)m(ys) +g(the)f(com-)1110 1011 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s +(ossible)f(completions)h(using)f(a)h(di\013eren)m(t)g(color.)1110 +1121 y(The)f(color)h(de\014nitions)f(are)h(tak)m(en)g(from)f(the)g(v)-5 +b(alue)26 b(of)g(the)f Ft(LS_COLORS)e Fu(en-)1110 1230 +y(vironmen)m(t)34 b(v)-5 b(ariable.)50 b(If)33 b(there)h(is)g(a)f +(color)i(de\014nition)e(in)g Ft(LS_COLORS)e Fu(for)1110 +1340 y(the)22 b(custom)g(su\016x)f(`)p Ft(readline-colored-complet)o +(ion)o(-pre)o(fix)p Fu(',)c(Read-)1110 1450 y(line)24 +b(uses)e(this)i(color)g(for)f(the)h(common)f(pre\014x)f(instead)i(of)f +(its)h(default.)38 b(The)1110 1559 y(default)31 b(is)f(`)p +Ft(off)p Fu('.)630 1724 y Ft(colored-stats)1110 1833 +y Fu(If)c(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(displa)m(ys)g(p)s +(ossible)f(completions)h(using)f(di\013eren)m(t)1110 +1943 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67 b(The)38 b(color)j(de\014nitions)d(are)i(tak)m(en)1110 -4463 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Ft(LS_COLORS)d +2052 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Ft(LS_COLORS)d Fu(en)m(vironmen)m(t)j(v)-5 b(ariable.)40 b(The)24 b(default)1110 -4573 y(is)30 b(`)p Ft(off)p Fu('.)630 4737 y Ft(comment-begin)1110 -4847 y Fu(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of) -h(the)h(line)f(when)g(the)1110 4956 y Ft(insert-comment)26 +2162 y(is)30 b(`)p Ft(off)p Fu('.)630 2326 y Ft(comment-begin)1110 +2436 y Fu(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of) +h(the)h(line)f(when)g(the)1110 2545 y Ft(insert-comment)26 b Fu(command)31 b(is)f(executed.)42 b(The)30 b(default)g(v)-5 -b(alue)31 b(is)f Ft("#")p Fu(.)630 5121 y Ft(completion-display-width) -1110 5230 y Fu(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used) -g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 5340 +b(alue)31 b(is)f Ft("#")p Fu(.)630 2710 y Ft(completion-display-width) +1110 2819 y Fu(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used) +g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 2929 y(when)28 b(p)s(erforming)g(completion.)41 b(The)29 b(v)-5 -b(alue)29 b(is)g(ignored)g(if)g(it)h(is)f(less)g(than)p -eop end -%%Page: 116 122 -TeXDict begin 116 121 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(116)1110 299 y(0)27 -b(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39 +b(alue)29 b(is)g(ignored)g(if)g(it)h(is)f(less)g(than)1110 +3039 y(0)e(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39 b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110 -408 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e +3148 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e (line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)630 -587 y Ft(completion-ignore-case)1110 696 y Fu(If)d(set)h(to)g(`)p +3313 y Ft(completion-ignore-case)1110 3422 y Fu(If)d(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i -(and)e(completion)1110 806 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)40 -b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Ft(off)p -Fu('.)630 984 y Ft(completion-map-case)1110 1093 y Fu(If)22 +(and)e(completion)1110 3532 y(in)j(a)h(case-insensitiv)m(e)i(fashion.) +40 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Ft(off)p +Fu('.)630 3696 y Ft(completion-map-case)1110 3806 y Fu(If)22 b(set)g(to)h(`)p Ft(on)p Fu(',)h(and)e Fr(completion-ignore-case)31 -b Fu(is)22 b(enabled,)i(Readline)f(treats)1110 1203 y(h)m(yphens)29 +b Fu(is)22 b(enabled,)i(Readline)f(treats)1110 3915 y(h)m(yphens)29 b(\(`)p Ft(-)p Fu('\))j(and)e(underscores)g(\(`)p Ft(_)p Fu('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110 -1313 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f -(completion.)85 b(The)44 b(default)1110 1422 y(v)-5 b(alue)31 -b(is)f(`)p Ft(off)p Fu('.)630 1600 y Ft(completion-prefix-displa)o -(y-le)o(ngth)1110 1710 y Fu(The)h(length)g(in)g(c)m(haracters)i(of)f +4025 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f +(completion.)85 b(The)44 b(default)1110 4134 y(v)-5 b(alue)31 +b(is)f(`)p Ft(off)p Fu('.)630 4299 y Ft(completion-prefix-displa)o +(y-le)o(ngth)1110 4408 y Fu(The)h(length)g(in)g(c)m(haracters)i(of)f (the)f(common)h(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110 -1819 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s -(di\014cation.)41 b(When)29 b(set)h(to)h(a)1110 1929 +4518 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s +(di\014cation.)41 b(When)29 b(set)h(to)h(a)1110 4628 y(v)-5 b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e -(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 2039 +(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 4737 y(replaced)k(with)f(an)g(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible) -f(completions.)630 2217 y Ft(completion-query-items)1110 -2326 y Fu(The)c(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g(completions)h -(that)g(determines)f(when)f(the)i(user)1110 2436 y(is)43 +f(completions.)630 4902 y Ft(completion-query-items)1110 +5011 y Fu(The)c(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g(completions)h +(that)g(determines)f(when)f(the)i(user)1110 5121 y(is)43 b(ask)m(ed)g(whether)f(the)g(list)h(of)g(p)s(ossibilities)g(should)f(b) -s(e)g(displa)m(y)m(ed.)77 b(If)1110 2545 y(the)29 b(n)m(um)m(b)s(er)f +s(e)g(displa)m(y)m(ed.)77 b(If)1110 5230 y(the)29 b(n)m(um)m(b)s(er)f (of)h(p)s(ossible)g(completions)h(is)f(greater)h(than)f(or)g(equal)g -(to)h(this)1110 2655 y(v)-5 b(alue,)45 b(Readline)e(will)f(ask)g -(whether)f(or)h(not)g(the)g(user)f(wishes)g(to)i(view)1110 -2765 y(them;)33 b(otherwise,)f(they)g(are)g(simply)g(listed.)45 -b(This)31 b(v)-5 b(ariable)33 b(m)m(ust)e(b)s(e)g(set)1110 -2874 y(to)39 b(an)f(in)m(teger)i(v)-5 b(alue)39 b(greater)g(than)f(or)h -(equal)g(to)g(0.)65 b(A)38 b(negativ)m(e)i(v)-5 b(alue)1110 -2984 y(means)30 b(Readline)h(should)f(nev)m(er)g(ask.)41 -b(The)30 b(default)h(limit)g(is)f Ft(100)p Fu(.)630 3162 -y Ft(convert-meta)1110 3271 y Fu(If)22 b(set)g(to)h(`)p +(to)h(this)1110 5340 y(v)-5 b(alue,)45 b(Readline)e(will)f(ask)g +(whether)f(or)h(not)g(the)g(user)f(wishes)g(to)i(view)p +eop end +%%Page: 123 129 +TeXDict begin 123 128 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(123)1110 299 y(them;)33 +b(otherwise,)f(they)g(are)g(simply)g(listed.)45 b(This)31 +b(v)-5 b(ariable)33 b(m)m(ust)e(b)s(e)g(set)1110 408 +y(to)43 b(an)e(in)m(teger)j(v)-5 b(alue)42 b(greater)h(than)f(or)g +(equal)g(to)h(zero.)76 b(A)42 b(zero)g(v)-5 b(alue)1110 +518 y(means)40 b(Readline)h(should)f(nev)m(er)g(ask;)46 +b(negativ)m(e)d(v)-5 b(alues)41 b(are)f(treated)i(as)1110 +628 y(zero.)g(The)29 b(default)i(limit)g(is)g Ft(100)p +Fu(.)630 774 y Ft(convert-meta)1110 883 y Fu(If)22 b(set)g(to)h(`)p Ft(on)p Fu(',)h(Readline)f(will)f(con)m(v)m(ert)i(c)m(haracters)f(with) -f(the)g(eigh)m(th)h(bit)f(set)1110 3381 y(to)33 b(an)e +f(the)g(eigh)m(th)h(bit)f(set)1110 993 y(to)33 b(an)e Fm(asci)r(i)h Fu(k)m(ey)h(sequence)f(b)m(y)g(stripping)f(the)h(eigh)m -(th)h(bit)f(and)f(pre\014xing)1110 3491 y(an)24 b Ft(ESC)g +(th)h(bit)f(and)f(pre\014xing)1110 1103 y(an)24 b Ft(ESC)g Fu(c)m(haracter,)j(con)m(v)m(erting)f(them)f(to)g(a)g(meta-pre\014xed)f -(k)m(ey)h(sequence.)1110 3600 y(The)i(default)h(v)-5 +(k)m(ey)h(sequence.)1110 1212 y(The)i(default)h(v)-5 b(alue)28 b(is)f(`)p Ft(on)p Fu(',)i(but)d(will)i(b)s(e)f(set)h(to)g(`) p Ft(off)p Fu(')g(if)f(the)h(lo)s(cale)h(is)f(one)1110 -3710 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630 -3888 y Ft(disable-completion)1110 3998 y Fu(If)k(set)h(to)h(`)p -Ft(On)p Fu(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h(completion.)60 -b(Completion)1110 4107 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h -(in)m(to)h(the)g(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110 -4217 y(to)31 b Ft(self-insert)p Fu(.)38 b(The)30 b(default)g(is)h(`)p -Ft(off)p Fu('.)630 4395 y Ft(echo-control-characters)1110 -4504 y Fu(When)f(set)h(to)g(`)p Ft(on)p Fu(',)f(on)g(op)s(erating)h -(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 4614 -y(it,)i(readline)e(ec)m(ho)s(es)i(a)f(c)m(haracter)h(corresp)s(onding)d -(to)j(a)f(signal)g(generated)1110 4724 y(from)e(the)g(k)m(eyb)s(oard.) -41 b(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 4902 -y Ft(editing-mode)1110 5011 y Fu(The)d Ft(editing-mode)e -Fu(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k) -m(ey)i(bind-)1110 5121 y(ings)25 b(is)g(used.)38 b(By)26 -b(default,)g(Readline)g(starts)f(up)f(in)h(Emacs)g(editing)h(mo)s(de,) -1110 5230 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to) -h(Emacs.)40 b(This)29 b(v)-5 b(ariable)30 b(can)1110 -5340 y(b)s(e)g(set)h(to)g(either)g(`)p Ft(emacs)p Fu(')e(or)h(`)p -Ft(vi)p Fu('.)p eop end -%%Page: 117 123 -TeXDict begin 117 122 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(117)630 299 y Ft -(emacs-mode-string)1110 408 y Fu(If)33 b(the)h Fr(sho)m(w-mo)s +1322 y(that)21 b(con)m(tains)h(eigh)m(t-bit)h(c)m(haracters.)39 +b(This)20 b(v)-5 b(ariable)21 b(is)g(dep)s(enden)m(t)f(on)h(the)1110 +1431 y Ft(LC_CTYPE)26 b Fu(lo)s(cale)31 b(category)-8 +b(,)31 b(and)d(ma)m(y)h(c)m(hange)h(if)e(the)h(lo)s(cale)h(is)f(c)m +(hanged.)630 1577 y Ft(disable-completion)1110 1687 y +Fu(If)36 b(set)h(to)h(`)p Ft(On)p Fu(',)g(Readline)f(will)g(inhibit)f +(w)m(ord)h(completion.)60 b(Completion)1110 1797 y(c)m(haracters)28 +b(will)e(b)s(e)f(inserted)h(in)m(to)h(the)g(line)f(as)g(if)g(they)h +(had)e(b)s(een)g(mapp)s(ed)1110 1906 y(to)31 b Ft(self-insert)p +Fu(.)38 b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630 +2052 y Ft(echo-control-characters)1110 2162 y Fu(When)f(set)h(to)g(`)p +Ft(on)p Fu(',)f(on)g(op)s(erating)h(systems)f(that)h(indicate)g(they)g +(supp)s(ort)1110 2271 y(it,)e(Readline)g(ec)m(ho)s(es)g(a)f(c)m +(haracter)i(corresp)s(onding)d(to)i(a)f(signal)h(generated)1110 +2381 y(from)h(the)g(k)m(eyb)s(oard.)41 b(The)30 b(default)g(is)h(`)p +Ft(on)p Fu('.)630 2527 y Ft(editing-mode)1110 2637 y +Fu(The)d Ft(editing-mode)e Fu(v)-5 b(ariable)29 b(con)m(trols)h(whic)m +(h)e(default)h(set)h(of)e(k)m(ey)i(bind-)1110 2746 y(ings)25 +b(is)g(used.)38 b(By)26 b(default,)g(Readline)g(starts)f(up)f(in)h +(Emacs)g(editing)h(mo)s(de,)1110 2856 y(where)j(the)g(k)m(eystrok)m(es) +i(are)e(most)h(similar)f(to)h(Emacs.)40 b(This)29 b(v)-5 +b(ariable)30 b(can)1110 2966 y(b)s(e)g(set)h(to)g(either)g(`)p +Ft(emacs)p Fu(')e(or)h(`)p Ft(vi)p Fu('.)630 3112 y Ft +(emacs-mode-string)1110 3221 y Fu(If)j(the)h Fr(sho)m(w-mo)s (de-in-prompt)h Fu(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f -(is)h(dis-)1110 518 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g -(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110 -628 y(emacs)g(editing)h(mo)s(de)e(is)h(activ)m(e.)40 +(is)h(dis-)1110 3331 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the) +g(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110 +3440 y(emacs)g(editing)h(mo)s(de)e(is)h(activ)m(e.)40 b(The)21 b(v)-5 b(alue)22 b(is)g(expanded)f(lik)m(e)h(a)h(k)m(ey)f -(bind-)1110 737 y(ing,)27 b(so)f(the)f(standard)g(set)h(of)f(meta-)i +(bind-)1110 3550 y(ing,)27 b(so)f(the)f(standard)g(set)h(of)f(meta-)i (and)e(con)m(trol)i(pre\014xes)d(and)h(bac)m(kslash)1110 -847 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5 b(ailable.)41 +3660 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5 b(ailable.)41 b(Use)25 b(the)f(`)p Ft(\\1)p Fu(')f(and)h(`)p Ft(\\2)p -Fu(')g(escap)s(es)g(to)g(b)s(egin)1110 956 y(and)37 b(end)g(sequences)h -(of)f(non-prin)m(ting)h(c)m(haracters,)j(whic)m(h)c(can)h(b)s(e)f(used) -1110 1066 y(to)h(em)m(b)s(ed)f(a)g(terminal)h(con)m(trol)h(sequence)f -(in)m(to)g(the)f(mo)s(de)g(string.)61 b(The)1110 1176 -y(default)31 b(is)f(`)p Ft(@)p Fu('.)630 1332 y Ft -(enable-bracketed-paste)1110 1442 y Fu(When)24 b(set)h(to)h(`)p -Ft(On)p Fu(',)g(Readline)f(will)g(con\014gure)f(the)h(terminal)g(in)f -(a)h(w)m(a)m(y)g(that)1110 1551 y(will)k(enable)f(it)h(to)g(insert)g -(eac)m(h)g(paste)g(in)m(to)g(the)g(editing)g(bu\013er)e(as)i(a)f -(single)1110 1661 y(string)33 b(of)f(c)m(haracters,)j(instead)e(of)g -(treating)h(eac)m(h)g(c)m(haracter)g(as)f(if)f(it)i(had)1110 -1771 y(b)s(een)e(read)i(from)e(the)i(k)m(eyb)s(oard.)49 -b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c)m(haracters)1110 -1880 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f(editing)h(commands.)41 -b(The)29 b(default)i(is)f(`)p Ft(On)p Fu('.)630 2037 -y Ft(enable-keypad)1110 2146 y Fu(When)23 b(set)h(to)g(`)p -Ft(on)p Fu(',)h(Readline)f(will)g(try)f(to)h(enable)g(the)f -(application)i(k)m(eypad)1110 2256 y(when)h(it)h(is)f(called.)41 -b(Some)27 b(systems)f(need)h(this)f(to)h(enable)g(the)g(arro)m(w)g(k)m -(eys.)1110 2365 y(The)j(default)g(is)h(`)p Ft(off)p Fu('.)630 -2522 y Ft(enable-meta-key)1110 2632 y Fu(When)40 b(set)g(to)g(`)p -Ft(on)p Fu(',)j(Readline)d(will)g(try)g(to)g(enable)g(an)m(y)g(meta)h -(mo)s(di\014er)1110 2741 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h -(supp)s(ort)d(when)h(it)h(is)g(called.)76 b(On)41 b(man)m(y)1110 -2851 y(terminals,)c(the)e(meta)h(k)m(ey)g(is)f(used)g(to)h(send)e(eigh) -m(t-bit)j(c)m(haracters.)56 b(The)1110 2960 y(default)31 -b(is)f(`)p Ft(on)p Fu('.)630 3117 y Ft(expand-tilde)1110 -3226 y Fu(If)d(set)h(to)h(`)p Ft(on)p Fu(',)f(tilde)g(expansion)g(is)f -(p)s(erformed)f(when)h(Readline)h(attempts)1110 3336 -y(w)m(ord)i(completion.)42 b(The)30 b(default)g(is)h(`)p -Ft(off)p Fu('.)630 3493 y Ft(history-preserve-point)1110 -3602 y Fu(If)41 b(set)h(to)h(`)p Ft(on)p Fu(',)i(the)c(history)h(co)s -(de)g(attempts)h(to)f(place)h(the)f(p)s(oin)m(t)f(\(the)1110 -3712 y(curren)m(t)35 b(cursor)g(p)s(osition\))g(at)h(the)g(same)f(lo)s -(cation)i(on)e(eac)m(h)h(history)g(line)1110 3821 y(retriev)m(ed)h -(with)f Ft(previous-history)c Fu(or)37 b Ft(next-history)p -Fu(.)55 b(The)36 b(default)1110 3931 y(is)30 b(`)p Ft(off)p -Fu('.)630 4088 y Ft(history-size)1110 4197 y Fu(Set)39 -b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g(en)m(tries)h(sa)m -(v)m(ed)g(in)f(the)g(history)1110 4307 y(list.)51 b(If)34 -b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f(en)m(tries)g(are)g -(deleted)h(and)e(no)1110 4416 y(new)e(en)m(tries)i(are)f(sa)m(v)m(ed.) -46 b(If)31 b(set)h(to)h(a)f(v)-5 b(alue)32 b(less)g(than)f(zero,)i(the) -f(n)m(um)m(b)s(er)1110 4526 y(of)f(history)f(en)m(tries)h(is)g(not)g -(limited.)42 b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history) -1110 4635 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 -b(an)h(attempt)h(is)f(made)g(to)h(set)f Fr(history-size)39 -b Fu(to)1110 4745 y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 -b(the)g(maxim)m(um)f(n)m(um)m(b)s(er)f(of)h(history)h(en)m(tries)g -(will)1110 4855 y(b)s(e)c(set)h(to)g(500.)630 5011 y -Ft(horizontal-scroll-mode)1110 5121 y Fu(This)k(v)-5 -b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f(`)p -Ft(on)p Fu(')g(or)g(`)p Ft(off)p Fu('.)57 b(Setting)36 -b(it)g(to)h(`)p Ft(on)p Fu(')1110 5230 y(means)26 b(that)h(the)f(text)h +Fu(')g(escap)s(es)g(to)g(b)s(egin)1110 3769 y(and)37 +b(end)g(sequences)h(of)f(non-prin)m(ting)h(c)m(haracters,)j(whic)m(h)c +(can)h(b)s(e)f(used)1110 3879 y(to)h(em)m(b)s(ed)f(a)g(terminal)h(con)m +(trol)h(sequence)f(in)m(to)g(the)f(mo)s(de)g(string.)61 +b(The)1110 3988 y(default)31 b(is)f(`)p Ft(@)p Fu('.)630 +4134 y Ft(enable-active-region)1110 4244 y Fu(The)46 +b Fr(p)s(oin)m(t)j Fu(is)e(the)g(curren)m(t)f(cursor)g(p)s(osition,)52 +b(and)46 b Fr(mark)52 b Fu(refers)46 b(to)i(a)1110 4354 +y(sa)m(v)m(ed)37 b(cursor)f(p)s(osition)g(\(see)i(Section)f(8.4.1)h +([Commands)d(F)-8 b(or)37 b(Mo)m(ving],)1110 4463 y(page)d(133\).)50 +b(The)33 b(text)h(b)s(et)m(w)m(een)f(the)g(p)s(oin)m(t)g(and)g(mark)g +(is)g(referred)f(to)i(as)1110 4573 y(the)h Fr(region)p +Fu(.)53 b(When)34 b(this)g(v)-5 b(ariable)36 b(is)e(set)h(to)g(`)p +Ft(On)p Fu(',)h(Readline)f(allo)m(ws)g(cer-)1110 4682 +y(tain)30 b(commands)f(to)g(designate)i(the)e(region)h(as)f +Fr(activ)m(e)p Fu(.)43 b(When)29 b(the)g(region)1110 +4792 y(is)g(activ)m(e,)j(Readline)e(highligh)m(ts)g(the)g(text)g(in)f +(the)g(region)h(using)f(the)g(v)-5 b(alue)1110 4902 y(of)35 +b(the)g Ft(active-region-start-color)p Fu(,)30 b(whic)m(h)35 +b(defaults)g(to)h(the)f(string)1110 5011 y(that)23 b(enables)f(the)g +(terminal's)h(standout)e(mo)s(de.)38 b(The)21 b(activ)m(e)k(region)d +(sho)m(ws)1110 5121 y(the)32 b(text)h(inserted)f(b)m(y)g(brac)m(k)m +(eted-paste)i(and)e(an)m(y)g(matc)m(hing)h(text)g(found)1110 +5230 y(b)m(y)f(incremen)m(tal)i(and)e(non-incremen)m(tal)i(history)e +(searc)m(hes.)48 b(The)32 b(default)1110 5340 y(is)e(`)p +Ft(On)p Fu('.)p eop end +%%Page: 124 130 +TeXDict begin 124 129 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(124)630 299 y Ft +(enable-bracketed-paste)1110 408 y Fu(When)36 b(set)h(to)g(`)p +Ft(On)p Fu(',)h(Readline)f(con\014gures)f(the)h(terminal)f(to)i(insert) +e(eac)m(h)1110 518 y(paste)27 b(in)m(to)g(the)f(editing)h(bu\013er)e +(as)h(a)h(single)g(string)f(of)g(c)m(haracters,)j(instead)1110 +628 y(of)d(treating)i(eac)m(h)g(c)m(haracter)f(as)g(if)f(it)h(had)f(b)s +(een)f(read)i(from)e(the)i(k)m(eyb)s(oard.)1110 737 y(This)36 +b(is)h(called)h(putting)f(the)h(terminal)f(in)m(to)h +Fr(brac)m(k)m(eted)h(paste)e(mo)s(de)5 b Fu(;)40 b(it)1110 +847 y(prev)m(en)m(ts)30 b(Readline)h(from)e(executing)i(an)m(y)f +(editing)h(commands)e(b)s(ound)f(to)1110 956 y(k)m(ey)j(sequences)g +(app)s(earing)f(in)g(the)g(pasted)h(text.)42 b(The)29 +b(default)i(is)f(`)p Ft(On)p Fu('.)630 1113 y Ft(enable-keypad)1110 +1223 y Fu(When)23 b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g +(try)f(to)h(enable)g(the)f(application)i(k)m(eypad)1110 +1332 y(when)h(it)h(is)f(called.)41 b(Some)27 b(systems)f(need)h(this)f +(to)h(enable)g(the)g(arro)m(w)g(k)m(eys.)1110 1442 y(The)j(default)g +(is)h(`)p Ft(off)p Fu('.)630 1598 y Ft(enable-meta-key)1110 +1708 y Fu(When)40 b(set)g(to)g(`)p Ft(on)p Fu(',)j(Readline)d(will)g +(try)g(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110 +1817 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h +(is)g(called.)76 b(On)41 b(man)m(y)1110 1927 y(terminals,)c(the)e(meta) +h(k)m(ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56 +b(The)1110 2037 y(default)31 b(is)f(`)p Ft(on)p Fu('.)630 +2193 y Ft(expand-tilde)1110 2303 y Fu(If)d(set)h(to)h(`)p +Ft(on)p Fu(',)f(tilde)g(expansion)g(is)f(p)s(erformed)f(when)h +(Readline)h(attempts)1110 2412 y(w)m(ord)i(completion.)42 +b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630 2569 +y Ft(history-preserve-point)1110 2679 y Fu(If)41 b(set)h(to)h(`)p +Ft(on)p Fu(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f +(p)s(oin)m(t)f(\(the)1110 2788 y(curren)m(t)35 b(cursor)g(p)s +(osition\))g(at)h(the)g(same)f(lo)s(cation)i(on)e(eac)m(h)h(history)g +(line)1110 2898 y(retriev)m(ed)h(with)f Ft(previous-history)c +Fu(or)37 b Ft(next-history)p Fu(.)55 b(The)36 b(default)1110 +3007 y(is)30 b(`)p Ft(off)p Fu('.)630 3164 y Ft(history-size)1110 +3273 y Fu(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g +(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 3383 +y(list.)51 b(If)34 b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f +(en)m(tries)g(are)g(deleted)h(and)e(no)1110 3493 y(new)e(en)m(tries)i +(are)f(sa)m(v)m(ed.)46 b(If)31 b(set)h(to)h(a)f(v)-5 +b(alue)32 b(less)g(than)f(zero,)i(the)f(n)m(um)m(b)s(er)1110 +3602 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42 +b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)1110 +3712 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is) +f(made)g(to)h(set)f Fr(history-size)39 b Fu(to)1110 3821 +y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 b(the)g(maxim)m(um)f(n)m(um)m +(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 3931 +y(b)s(e)c(set)h(to)g(500.)630 4088 y Ft(horizontal-scroll-mode)1110 +4197 y Fu(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f +(`)p Ft(on)p Fu(')g(or)g(`)p Ft(off)p Fu('.)57 b(Setting)36 +b(it)g(to)h(`)p Ft(on)p Fu(')1110 4307 y(means)26 b(that)h(the)f(text)h (of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m -(tally)1110 5340 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i -(are)g(longer)h(than)e(the)h(width)f(of)h(the)p eop end -%%Page: 118 124 -TeXDict begin 118 123 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(118)1110 299 y(screen,)28 -b(instead)g(of)f(wrapping)f(on)m(to)i(a)g(new)e(screen)i(line.)40 -b(This)26 b(v)-5 b(ariable)28 b(is)1110 408 y(automatically)k(set)e(to) -g(`)p Ft(on)p Fu(')f(for)g(terminals)g(of)h(heigh)m(t)g(1.)41 -b(By)29 b(default,)h(this)1110 518 y(v)-5 b(ariable)31 -b(is)g(set)f(to)i(`)p Ft(off)p Fu('.)630 719 y Ft(input-meta)1110 -829 y Fu(If)f(set)g(to)h(`)p Ft(on)p Fu(',)g(Readline)g(will)f(enable)h -(eigh)m(t-bit)h(input)d(\(it)i(will)f(not)h(clear)1110 -938 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h(c)m(haracters)h(it)f -(reads\),)j(regardless)c(of)h(what)g(the)1110 1048 y(terminal)k(claims) -h(it)f(can)g(supp)s(ort.)79 b(The)44 b(default)g(v)-5 -b(alue)44 b(is)g(`)p Ft(off)p Fu(',)j(but)1110 1157 y(Readline)24 -b(will)h(set)f(it)g(to)h(`)p Ft(on)p Fu(')e(if)h(the)g(lo)s(cale)i(con) -m(tains)f(eigh)m(t-bit)g(c)m(haracters.)1110 1267 y(The)30 -b(name)g Ft(meta-flag)e Fu(is)j(a)f(synon)m(ym)g(for)g(this)h(v)-5 -b(ariable.)630 1468 y Ft(isearch-terminators)1110 1577 -y Fu(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e(terminate)j -(an)f(incremen)m(tal)1110 1687 y(searc)m(h)25 b(without)g(subsequen)m -(tly)g(executing)h(the)f(c)m(haracter)h(as)f(a)g(command)1110 -1797 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h(page)e(113\).)62 -b(If)37 b(this)g(v)-5 b(ariable)38 b(has)f(not)1110 1906 -y(b)s(een)e(giv)m(en)h(a)g(v)-5 b(alue,)37 b(the)f(c)m(haracters)h -Ft(ESC)d Fu(and)h Fj(C-J)g Fu(will)h(terminate)g(an)1110 -2016 y(incremen)m(tal)c(searc)m(h.)630 2217 y Ft(keymap)192 -b Fu(Sets)64 b(Readline's)i(idea)f(of)f(the)h(curren)m(t)f(k)m(eymap)h -(for)f(k)m(ey)h(binding)1110 2326 y(commands.)71 b(Built-in)41 -b Ft(keymap)e Fu(names)h(are)h Ft(emacs)p Fu(,)h Ft(emacs-standard)p -Fu(,)1110 2436 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p -Fu(,)f Ft(vi)p Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p -Fu(,)f(and)1110 2545 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44 -b Fu(is)h(equiv)-5 b(alen)m(t)46 b(to)g Ft(vi-command)c -Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 2655 y(synon)m(ym\);)41 -b Ft(emacs)c Fu(is)h(equiv)-5 b(alen)m(t)39 b(to)f Ft(emacs-standard)p -Fu(.)59 b(Applications)1110 2765 y(ma)m(y)32 b(add)e(additional)i +(tally)1110 4416 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i +(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 4526 +y(screen,)c(instead)g(of)f(wrapping)f(on)m(to)i(a)g(new)e(screen)i +(line.)40 b(This)26 b(v)-5 b(ariable)28 b(is)1110 4635 +y(automatically)k(set)e(to)g(`)p Ft(on)p Fu(')f(for)g(terminals)g(of)h +(heigh)m(t)g(1.)41 b(By)29 b(default,)h(this)1110 4745 +y(v)-5 b(ariable)31 b(is)g(set)f(to)i(`)p Ft(off)p Fu('.)630 +4902 y Ft(input-meta)1110 5011 y Fu(If)f(set)g(to)h(`)p +Ft(on)p Fu(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it) +i(will)f(not)h(clear)1110 5121 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h +(c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)1110 +5230 y(terminal)k(claims)h(it)f(can)g(supp)s(ort.)79 +b(The)44 b(default)g(v)-5 b(alue)44 b(is)g(`)p Ft(off)p +Fu(',)j(but)1110 5340 y(Readline)24 b(will)h(set)f(it)g(to)h(`)p +Ft(on)p Fu(')e(if)h(the)g(lo)s(cale)i(con)m(tains)f(eigh)m(t-bit)g(c)m +(haracters.)p eop end +%%Page: 125 131 +TeXDict begin 125 130 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(125)1110 299 y(The)29 +b(name)g Ft(meta-flag)e Fu(is)i(a)h(synon)m(ym)f(for)g(this)g(v)-5 +b(ariable.)42 b(This)28 b(v)-5 b(ariable)1110 408 y(is)35 +b(dep)s(enden)m(t)f(on)h(the)g Ft(LC_CTYPE)e Fu(lo)s(cale)k(category)-8 +b(,)39 b(and)34 b(ma)m(y)i(c)m(hange)g(if)1110 518 y(the)31 +b(lo)s(cale)h(is)e(c)m(hanged.)630 675 y Ft(isearch-terminators)1110 +784 y Fu(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e +(terminate)j(an)f(incremen)m(tal)1110 894 y(searc)m(h)25 +b(without)g(subsequen)m(tly)g(executing)h(the)f(c)m(haracter)h(as)f(a)g +(command)1110 1003 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h +(page)e(119\).)62 b(If)37 b(this)g(v)-5 b(ariable)38 +b(has)f(not)1110 1113 y(b)s(een)e(giv)m(en)h(a)g(v)-5 +b(alue,)37 b(the)f(c)m(haracters)h Ft(ESC)d Fu(and)h +Fj(C-J)g Fu(will)h(terminate)g(an)1110 1223 y(incremen)m(tal)c(searc)m +(h.)630 1379 y Ft(keymap)192 b Fu(Sets)64 b(Readline's)i(idea)f(of)f +(the)h(curren)m(t)f(k)m(eymap)h(for)f(k)m(ey)h(binding)1110 +1489 y(commands.)71 b(Built-in)41 b Ft(keymap)e Fu(names)h(are)h +Ft(emacs)p Fu(,)h Ft(emacs-standard)p Fu(,)1110 1598 +y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p Fu(,)f Ft(vi)p +Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p Fu(,)f(and)1110 +1708 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44 b Fu(is)h(equiv)-5 +b(alen)m(t)46 b(to)g Ft(vi-command)c Fu(\()p Ft(vi-move)h +Fu(is)i(also)h(a)1110 1817 y(synon)m(ym\);)41 b Ft(emacs)c +Fu(is)h(equiv)-5 b(alen)m(t)39 b(to)f Ft(emacs-standard)p +Fu(.)59 b(Applications)1110 1927 y(ma)m(y)32 b(add)e(additional)i (names.)43 b(The)30 b(default)h(v)-5 b(alue)32 b(is)f -Ft(emacs)p Fu(.)41 b(The)30 b(v)-5 b(alue)1110 2874 y(of)31 +Ft(emacs)p Fu(.)41 b(The)30 b(v)-5 b(alue)1110 2037 y(of)31 b(the)f Ft(editing-mode)d Fu(v)-5 b(ariable)31 b(also)h(a\013ects)f -(the)g(default)g(k)m(eymap.)630 3075 y Ft(keyseq-timeout)1110 -3185 y Fu(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m -(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 3294 +(the)g(default)g(k)m(eymap.)630 2193 y Ft(keyseq-timeout)1110 +2303 y Fu(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m +(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 2412 y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f -(form)g(a)g(complete)h(k)m(ey)1110 3404 y(sequence)j(using)e(the)i +(form)g(a)g(complete)h(k)m(ey)1110 2522 y(sequence)j(using)e(the)i (input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input) -1110 3513 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49 +1110 2632 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49 b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110 -3623 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter) -g(but)f(complete)j(k)m(ey)e(se-)1110 3733 y(quence.)c(Readline)26 +2741 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter) +g(but)f(complete)j(k)m(ey)e(se-)1110 2851 y(quence.)c(Readline)26 b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h -(input)1110 3842 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m +(input)1110 2960 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m (t)f(input)g(source)h(\()p Ft(rl_instream)d Fu(b)m(y)i(default\).)1110 -3952 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h +3070 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h (milliseconds,)j(so)d(a)h(v)-5 b(alue)26 b(of)f(1000)i(means)e(that) -1110 4061 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g +1110 3180 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g (additional)i(input.)37 b(If)22 b(this)g(v)-5 b(ariable)23 -b(is)1110 4171 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f +b(is)1110 3289 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f (equal)i(to)f(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5 -b(alue,)1110 4281 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h +b(alue,)1110 3399 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h (k)m(ey)g(is)f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110 -4390 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5 -b(alue)31 b(is)g Ft(500)p Fu(.)630 4591 y Ft(mark-directories)1110 -4701 y Fu(If)38 b(set)g(to)h(`)p Ft(on)p Fu(',)i(completed)e(directory) +3508 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5 +b(alue)31 b(is)g Ft(500)p Fu(.)630 3665 y Ft(mark-directories)1110 +3774 y Fu(If)38 b(set)g(to)h(`)p Ft(on)p Fu(',)i(completed)e(directory) f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110 -4810 y(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 -5011 y Ft(mark-modified-lines)1110 5121 y Fu(This)k(v)-5 +3884 y(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 +4041 y Ft(mark-modified-lines)1110 4150 y Fu(This)k(v)-5 b(ariable,)38 b(when)d(set)h(to)h(`)p Ft(on)p Fu(',)g(causes)g -(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 5230 y(terisk)f(\(`)p +(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 4260 y(terisk)f(\(`)p Ft(*)p Fu('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f -(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 5340 y(This)d(v)-5 -b(ariable)31 b(is)f(`)p Ft(off)p Fu(')g(b)m(y)g(default.)p +(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 4369 y(This)d(v)-5 +b(ariable)31 b(is)f(`)p Ft(off)p Fu(')g(b)m(y)g(default.)630 +4526 y Ft(mark-symlinked-directori)o(es)1110 4635 y Fu(If)59 +b(set)h(to)g(`)p Ft(on)p Fu(',)67 b(completed)60 b(names)f(whic)m(h)g +(are)h(sym)m(b)s(olic)g(links)f(to)1110 4745 y(directories)71 +b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5 b(ject)70 +b(to)g(the)g(v)-5 b(alue)70 b(of)1110 4855 y Ft(mark-directories)p +Fu(\).)37 b(The)30 b(default)g(is)g(`)p Ft(off)p Fu('.)630 +5011 y Ft(match-hidden-files)1110 5121 y Fu(This)21 b(v)-5 +b(ariable,)25 b(when)d(set)g(to)h(`)p Ft(on)p Fu(',)h(causes)f +(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 5230 +y(names)44 b(b)s(egin)g(with)g(a)g(`)p Ft(.)p Fu(')g(\(hidden)f +(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 5340 +y(completion.)75 b(If)41 b(set)g(to)h(`)p Ft(off)p Fu(',)i(the)e +(leading)g(`)p Ft(.)p Fu(')f(m)m(ust)g(b)s(e)g(supplied)f(b)m(y)p eop end -%%Page: 119 125 -TeXDict begin 119 124 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(119)630 299 y Ft -(mark-symlinked-directori)o(es)1110 408 y Fu(If)59 b(set)h(to)g(`)p -Ft(on)p Fu(',)67 b(completed)60 b(names)f(whic)m(h)g(are)h(sym)m(b)s -(olic)g(links)f(to)1110 518 y(directories)71 b(ha)m(v)m(e)f(a)g(slash)f -(app)s(ended)f(\(sub)5 b(ject)70 b(to)g(the)g(v)-5 b(alue)70 -b(of)1110 628 y Ft(mark-directories)p Fu(\).)37 b(The)30 -b(default)g(is)g(`)p Ft(off)p Fu('.)630 778 y Ft(match-hidden-files) -1110 888 y Fu(This)21 b(v)-5 b(ariable,)25 b(when)d(set)g(to)h(`)p -Ft(on)p Fu(',)h(causes)f(Readline)g(to)g(matc)m(h)g(\014les)f(whose) -1110 998 y(names)44 b(b)s(egin)g(with)g(a)g(`)p Ft(.)p -Fu(')g(\(hidden)f(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 -1107 y(completion.)75 b(If)41 b(set)g(to)h(`)p Ft(off)p -Fu(',)i(the)e(leading)g(`)p Ft(.)p Fu(')f(m)m(ust)g(b)s(e)g(supplied)f -(b)m(y)1110 1217 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f -(completed.)53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p -Ft(on)p Fu(')g(b)m(y)1110 1326 y(default.)630 1477 y -Ft(menu-complete-display-pr)o(efix)1110 1587 y Fu(If)f(set)h(to)g(`)p -Ft(on)p Fu(',)h(men)m(u)e(completion)i(displa)m(ys)e(the)h(common)g -(pre\014x)e(of)i(the)1110 1696 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 -1806 y(through)30 b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p -Ft(off)p Fu('.)630 1956 y Ft(output-meta)1110 2066 y -Fu(If)35 b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(displa)m(y) -f(c)m(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 2176 -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 2285 y(default)26 b(is)f(`)p -Ft(off)p Fu(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p -Ft(on)p Fu(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110 -2395 y(eigh)m(t-bit)k(c)m(haracters.)630 2545 y Ft(page-completions) -1110 2655 y Fu(If)h(set)i(to)f(`)p Ft(on)p Fu(',)h(Readline)g(uses)e -(an)h(in)m(ternal)h Ft(more)p Fu(-lik)m(e)f(pager)g(to)h(displa)m(y) -1110 2765 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g -(time.)47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Ft(on)p -Fu(')1110 2874 y(b)m(y)e(default.)630 3025 y Ft -(print-completions-horizo)o(ntal)o(ly)1110 3134 y Fu(If)23 -b(set)i(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)f(displa)m(y)g -(completions)h(with)f(matc)m(hes)h(sorted)1110 3244 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 3354 y(The)30 b(default)g(is)h(`)p Ft(off)p -Fu('.)630 3504 y Ft(revert-all-at-newline)1110 3614 y -Fu(If)e(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)g(undo)f(all)h -(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110 3724 -y(returning)f(when)f Ft(accept-line)f Fu(is)j(executed.)41 -b(By)29 b(default,)g(history)g(lines)1110 3833 y(ma)m(y)42 +%%Page: 126 132 +TeXDict begin 126 131 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(126)1110 299 y(the)34 +b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.)53 +b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p Ft(on)p Fu(')g(b)m(y)1110 +408 y(default.)630 587 y Ft(menu-complete-display-pr)o(efix)1110 +696 y Fu(If)f(set)h(to)g(`)p Ft(on)p Fu(',)h(men)m(u)e(completion)i +(displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110 +806 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 915 y(through)30 +b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Ft(off)p +Fu('.)630 1093 y Ft(output-meta)1110 1203 y Fu(If)35 +b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(displa)m(y)f(c)m +(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 1313 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 1422 y(default)26 b(is)f(`)p Ft(off)p Fu(',)i(but)e +(Readline)h(will)g(set)g(it)g(to)h(`)p Ft(on)p Fu(')e(if)h(the)f(lo)s +(cale)j(con)m(tains)1110 1532 y(eigh)m(t-bit)38 b(c)m(haracters.)61 +b(This)36 b(v)-5 b(ariable)37 b(is)g(dep)s(enden)m(t)e(on)h(the)h +Ft(LC_CTYPE)1110 1641 y Fu(lo)s(cale)32 b(category)-8 +b(,)33 b(and)d(ma)m(y)h(c)m(hange)g(if)g(the)f(lo)s(cale)i(is)f(c)m +(hanged.)630 1819 y Ft(page-completions)1110 1929 y Fu(If)i(set)i(to)f +(`)p Ft(on)p Fu(',)h(Readline)g(uses)e(an)h(in)m(ternal)h +Ft(more)p Fu(-lik)m(e)f(pager)g(to)h(displa)m(y)1110 +2039 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.) +47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Ft(on)p Fu(')1110 +2148 y(b)m(y)e(default.)630 2326 y Ft(print-completions-horizo)o(ntal)o +(ly)1110 2436 y Fu(If)23 b(set)i(to)g(`)p Ft(on)p Fu(',)g(Readline)g +(will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110 +2545 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 2655 y(The)30 b(default)g(is)h(`)p +Ft(off)p Fu('.)630 2833 y Ft(revert-all-at-newline)1110 +2943 y Fu(If)e(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)g(undo)f +(all)h(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110 +3052 y(returning)f(when)f Ft(accept-line)f Fu(is)j(executed.)41 +b(By)29 b(default,)g(history)g(lines)1110 3162 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 3943 y Ft(readline)p Fu(.)38 -b(The)30 b(default)h(is)f(`)p Ft(off)p Fu('.)630 4093 -y Ft(show-all-if-ambiguous)1110 4203 y Fu(This)f(alters)i(the)f +(across)g(calls)h(to)1110 3271 y Ft(readline\(\))p Fu(.)38 +b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630 3450 +y Ft(show-all-if-ambiguous)1110 3559 y Fu(This)e(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 4313 y(to)f(`)p Ft(on)p Fu(',)g(w)m(ords)f(whic)m(h) +b(If)29 b(set)1110 3669 y(to)f(`)p Ft(on)p Fu(',)g(w)m(ords)f(whic)m(h) g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause) -1110 4422 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 4532 y(The)30 +1110 3778 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 3888 y(The)30 b(default)g(v)-5 b(alue)31 b(is)g(`)p Ft(off)p Fu('.)630 -4682 y Ft(show-all-if-unmodified)1110 4792 y Fu(This)38 +4066 y Ft(show-all-if-unmodified)1110 4176 y Fu(This)38 b(alters)h(the)g(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h -(functions)e(in)h(a)1110 4902 y(fashion)25 b(similar)h(to)g +(functions)e(in)h(a)1110 4285 y(fashion)25 b(similar)h(to)g Fr(sho)m(w-all-if-am)m(biguous)p Fu(.)41 b(If)25 b(set)h(to)h(`)p -Ft(on)p Fu(',)f(w)m(ords)f(whic)m(h)1110 5011 y(ha)m(v)m(e)32 +Ft(on)p Fu(',)f(w)m(ords)f(whic)m(h)1110 4395 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 5121 y(tial)43 b(completion)h(\(the)f(p)s(ossible) -f(completions)h(don't)f(share)g(a)h(common)1110 5230 +(ossible)f(par-)1110 4504 y(tial)43 b(completion)h(\(the)f(p)s(ossible) +f(completions)h(don't)f(share)g(a)h(common)1110 4614 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 5340 y(ing)g(the)f(b)s(ell.)41 +(immediately)i(instead)e(of)h(ring-)1110 4724 y(ing)g(the)f(b)s(ell.)41 b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Ft(off)p -Fu('.)p eop end -%%Page: 120 126 -TeXDict begin 120 125 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(120)630 299 y Ft -(show-mode-in-prompt)1110 408 y Fu(If)24 b(set)h(to)g(`)p -Ft(on)p Fu(',)g(add)f(a)h(string)f(to)h(the)f(b)s(eginning)g(of)g(the)h -(prompt)e(indicating)1110 518 y(the)33 b(editing)h(mo)s(de:)46 -b(emacs,)35 b(vi)e(command,)h(or)f(vi)h(insertion.)49 -b(The)32 b(mo)s(de)1110 628 y(strings)45 b(are)h(user-settable)g -(\(e.g.,)51 b Fr(emacs-mo)s(de-string)8 b Fu(\).)87 b(The)45 -b(default)1110 737 y(v)-5 b(alue)31 b(is)f(`)p Ft(off)p -Fu('.)630 887 y Ft(skip-completed-text)1110 996 y Fu(If)i(set)i(to)f(`) -p Ft(on)p Fu(',)h(this)f(alters)g(the)g(default)g(completion)h(b)s(eha) -m(vior)f(when)f(in-)1110 1106 y(serting)d(a)h(single)g(matc)m(h)f(in)m +Fu('.)630 4902 y Ft(show-mode-in-prompt)1110 5011 y Fu(If)24 +b(set)h(to)g(`)p Ft(on)p Fu(',)g(add)f(a)h(string)f(to)h(the)f(b)s +(eginning)g(of)g(the)h(prompt)e(indicating)1110 5121 +y(the)33 b(editing)h(mo)s(de:)46 b(emacs,)35 b(vi)e(command,)h(or)f(vi) +h(insertion.)49 b(The)32 b(mo)s(de)1110 5230 y(strings)45 +b(are)h(user-settable)g(\(e.g.,)51 b Fr(emacs-mo)s(de-string)8 +b Fu(\).)87 b(The)45 b(default)1110 5340 y(v)-5 b(alue)31 +b(is)f(`)p Ft(off)p Fu('.)p eop end +%%Page: 127 133 +TeXDict begin 127 132 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(127)630 299 y Ft +(skip-completed-text)1110 408 y Fu(If)32 b(set)i(to)f(`)p +Ft(on)p Fu(',)h(this)f(alters)g(the)g(default)g(completion)h(b)s(eha)m +(vior)f(when)f(in-)1110 518 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 1215 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 -1325 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 1435 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 1544 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 -1654 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g -(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 1763 y(`)p Ft(Makefile)p +1110 628 y(ing)k(completion)i(in)e(the)g(middle)g(of)g(a)h(w)m(ord.)46 +b(If)32 b(enabled,)g(Readline)h(do)s(es)1110 737 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 847 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 +956 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 +1066 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g +(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 1176 y(`)p Ft(Makefile)p Fu(')c(will)i(result)f(in)g(`)p Ft(Makefile)p Fu(')f(rather)h(than)h(`) -p Ft(Makefilefile)p Fu(',)1110 1873 y(assuming)d(there)g(is)h(a)f +p Ft(Makefilefile)p Fu(',)1110 1285 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 1983 y(is)30 b(`)p Ft(off)p Fu('.)630 2132 -y Ft(vi-cmd-mode-string)1110 2242 y Fu(If)j(the)h Fr(sho)m(w-mo)s +b(alue)1110 1395 y(is)30 b(`)p Ft(off)p Fu('.)630 1548 +y Ft(vi-cmd-mode-string)1110 1658 y Fu(If)j(the)h Fr(sho)m(w-mo)s (de-in-prompt)h Fu(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f -(is)h(dis-)1110 2351 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the) +(is)h(dis-)1110 1767 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the) g(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110 -2461 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command) +1877 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command) g(mo)s(de.)46 b(The)31 b(v)-5 b(alue)33 b(is)f(ex-)1110 -2570 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f +1987 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f (standard)f(set)h(of)g(meta-)h(and)e(con)m(trol)1110 -2680 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is) +2096 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is) g(a)m(v)-5 b(ailable.)57 b(Use)35 b(the)g(`)p Ft(\\1)p -Fu(')1110 2790 y(and)23 b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s +Fu(')1110 2206 y(and)23 b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s (egin)g(and)f(end)g(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 -2899 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a) -h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 3009 +2315 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a) +h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 2425 y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p -Ft(\(cmd\))p Fu('.)630 3158 y Ft(vi-ins-mode-string)1110 -3268 y Fu(If)j(the)h Fr(sho)m(w-mo)s(de-in-prompt)h Fu(v)-5 +Ft(\(cmd\))p Fu('.)630 2578 y Ft(vi-ins-mode-string)1110 +2688 y Fu(If)j(the)h Fr(sho)m(w-mo)s(de-in-prompt)h Fu(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110 -3377 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f -(of)h(the)f(primary)f(prompt)g(when)1110 3487 y(vi)35 +2798 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f +(of)h(the)f(primary)f(prompt)g(when)1110 2907 y(vi)35 b(editing)h(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.) -54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 3597 y(panded)26 +54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 3017 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f(standard)f(set)h(of)g -(meta-)h(and)e(con)m(trol)1110 3706 y(pre\014xes)34 b(and)g(bac)m +(meta-)h(and)e(con)m(trol)1110 3126 y(pre\014xes)34 b(and)g(bac)m (kslash)i(escap)s(e)g(sequences)f(is)g(a)m(v)-5 b(ailable.)57 -b(Use)35 b(the)g(`)p Ft(\\1)p Fu(')1110 3816 y(and)23 +b(Use)35 b(the)g(`)p Ft(\\1)p Fu(')1110 3236 y(and)23 b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s(egin)g(and)f(end)g -(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 3925 +(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 3345 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)h -(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 4035 +(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 3455 y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p -Ft(\(ins\))p Fu('.)630 4184 y Ft(visible-stats)1110 4294 +Ft(\(ins\))p Fu('.)630 3608 y Ft(visible-stats)1110 3718 y Fu(If)h(set)i(to)f(`)p Ft(on)p Fu(',)h(a)f(c)m(haracter)i(denoting)e (a)g(\014le's)g(t)m(yp)s(e)g(is)g(app)s(ended)e(to)j(the)1110 -4403 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42 -b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)150 4553 -y(Key)f(Bindings)630 4663 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h +3828 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42 +b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)150 3981 +y(Key)f(Bindings)630 4091 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 4772 y(need)27 b(to)i(\014nd)d(the)i(name)f(of) +b(First)43 b(y)m(ou)630 4200 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 4882 y(sections)37 b(con)m(tain)g(tables)g +b(The)27 b(follo)m(wing)630 4310 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 4991 y(and)30 b(a)h(short)f(description)g(of)h(what)f -(the)g(command)h(do)s(es.)630 5121 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g +m(y)-8 b(,)630 4419 y(and)30 b(a)h(short)f(description)g(of)h(what)f +(the)g(command)h(do)s(es.)630 4551 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 5230 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m +(the)g(init)630 4661 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 5340 y(the)f(name)h(of)f(the)g(command.)46 b(There)32 +630 4770 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)p eop end -%%Page: 121 127 -TeXDict begin 121 126 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(121)630 299 y(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 408 -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 -518 y(comfortable.)630 650 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 759 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f -(pressed)g(\(a)h Fr(macro)5 b Fu(\).)630 891 y(The)42 +(and)630 4880 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 4989 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 5099 y(comfortable.)630 +5230 y(In)g(addition)h(to)g(command)g(names,)g(Readline)g(allo)m(ws)h +(k)m(eys)g(to)f(b)s(e)f(b)s(ound)f(to)i(a)g(string)630 +5340 y(that)d(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g(\(a) +h Fr(macro)5 b Fu(\).)p eop end +%%Page: 128 134 +TeXDict begin 128 133 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(128)630 299 y(The)42 b Ft(bind)30 b(-p)42 b Fu(command)h(displa)m(ys)g(Readline)g(function)g -(names)g(and)f(bindings)g(in)h(a)630 1000 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 1110 -y(Builtins],)31 b(page)g(51.)630 1263 y Fr(k)m(eyname)5 -b Fu(:)42 b Fr(function-name)35 b Fu(or)c Fr(macro)1110 -1373 y(k)m(eyname)k Fu(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s +(names)g(and)f(bindings)g(in)h(a)630 408 y(format)28 +b(that)h(can)f(b)s(e)f(put)g(directly)i(in)m(to)f(an)g(initialization)j +(\014le.)40 b(See)28 b(Section)h(4.2)g([Bash)630 518 +y(Builtins],)i(page)g(55.)630 673 y Fr(k)m(eyname)5 b +Fu(:)42 b Fr(function-name)35 b Fu(or)c Fr(macro)1110 +783 y(k)m(eyname)k Fu(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s (elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350 -1504 y Ft(Control-u:)45 b(universal-argument)1350 1614 -y(Meta-Rubout:)f(backward-kill-word)1350 1724 y(Control-o:)h(">)i -(output")1110 1855 y Fu(In)94 b(the)g(example)h(ab)s(o)m(v)m(e,)112 +915 y Ft(Control-u:)45 b(universal-argument)1350 1024 +y(Meta-Rubout:)f(backward-kill-word)1350 1134 y(Control-o:)h(">)i +(output")1110 1266 y Fu(In)94 b(the)g(example)h(ab)s(o)m(v)m(e,)112 b Fj(C-u)94 b Fu(is)g(b)s(ound)f(to)i(the)f(function)1110 -1965 y Ft(universal-argument)p Fu(,)124 b Fj(M-DEL)107 -b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110 2074 y +1376 y Ft(universal-argument)p Fu(,)124 b Fj(M-DEL)107 +b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110 1485 y Ft(backward-kill-word)p Fu(,)75 b(and)69 b Fj(C-o)g Fu(is)h(b)s(ound)e -(to)j(run)d(the)i(macro)1110 2184 y(expressed)45 b(on)h(the)g(righ)m(t) +(to)j(run)d(the)i(macro)1110 1595 y(expressed)45 b(on)h(the)g(righ)m(t) g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p -Ft(>)1110 2293 y(output)p Fu(')29 b(in)m(to)i(the)g(line\).)1110 -2425 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g -(names)f(are)g(recognized)h(while)1110 2534 y(pro)s(cessing)40 +Ft(>)1110 1705 y(output)p Fu(')29 b(in)m(to)i(the)g(line\).)1110 +1837 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g +(names)f(are)g(recognized)h(while)1110 1946 y(pro)s(cessing)40 b(this)f(k)m(ey)i(binding)e(syn)m(tax:)60 b Fr(DEL)p Fu(,)42 b Fr(ESC)p Fu(,)g Fr(ESCAPE)p Fu(,)f Fr(LFD)p -Fu(,)1110 2644 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p Fu(,)f +Fu(,)1110 2056 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p Fu(,)f Fr(RETURN)p Fu(,)g Fr(R)m(UBOUT)p Fu(,)h Fr(SP)-8 b(A)m(CE)p Fu(,)31 b Fr(SPC)p Fu(,)e(and)h Fr(T)-8 b(AB)p Fu(.)630 -2798 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41 b Fr(function-name)36 -b Fu(or)30 b Fr(macro)1110 2907 y(k)m(eyseq)k Fu(di\013ers)d(from)f +2211 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41 b Fr(function-name)36 +b Fu(or)30 b Fr(macro)1110 2321 y(k)m(eyseq)k Fu(di\013ers)d(from)f Fr(k)m(eyname)37 b Fu(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f -(denoting)g(an)g(en-)1110 3017 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s +(denoting)g(an)g(en-)1110 2430 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 3126 y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h +1110 2540 y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h Fu(Emacs)f(st)m(yle)i(k)m(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as) -1110 3236 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 3345 y(recognized.)1350 -3477 y Ft("\\C-u":)46 b(universal-argument)1350 3587 -y("\\C-x\\C-r":)f(re-read-init-file)1350 3696 y("\\e[11~":)g("Function) -h(Key)g(1")1110 3828 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 +1110 2649 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 2759 y(recognized.)1350 +2891 y Ft("\\C-u":)46 b(universal-argument)1350 3001 +y("\\C-x\\C-r":)f(re-read-init-file)1350 3110 y("\\e[11~":)g("Function) +h(Key)g(1")1110 3243 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 b Fj(C-u)64 b Fu(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110 -3937 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g -(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 4047 +3352 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g +(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 3462 y(C-r)p Fu(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f Ft(re-read-init-file)p Fu(,)c(and)j(`)p Ft(ESC)h([)g(1)g(1)1110 -4156 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p -Ft(Function)e(Key)g(1)p Fu('.)630 4310 y(The)g(follo)m(wing)i +3571 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p +Ft(Function)e(Key)g(1)p Fu('.)630 3726 y(The)g(follo)m(wing)i Fm(gnu)f Fu(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5 -b(ailable)32 b(when)d(sp)s(ecifying)630 4419 y(k)m(ey)i(sequences:)630 -4573 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630 -4726 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 4880 y +b(ailable)32 b(when)d(sp)s(ecifying)630 3836 y(k)m(ey)i(sequences:)630 +3991 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630 +4146 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 4301 y Fj(\\e)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)630 -5033 y Fj(\\\\)384 b Fu(bac)m(kslash)630 5187 y Fj(\\)p +4456 y Fj(\\\\)384 b Fu(bac)m(kslash)630 4611 y Fj(\\)p Ft(")g(")p Fu(,)30 b(a)h(double)f(quotation)i(mark)630 -5340 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s -(ostrophe)p eop end -%%Page: 122 128 -TeXDict begin 122 127 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(122)630 299 y(In)27 -b(addition)h(to)g(the)g Fm(gnu)f Fu(Emacs)h(st)m(yle)h(escap)s(e)f -(sequences,)h(a)f(second)f(set)h(of)g(bac)m(kslash)630 -408 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 570 y -Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 731 y Ft(\\b)384 -b Fu(bac)m(kspace)630 892 y Ft(\\d)g Fu(delete)630 1053 -y Ft(\\f)g Fu(form)30 b(feed)630 1214 y Ft(\\n)384 b -Fu(newline)630 1375 y Ft(\\r)g Fu(carriage)32 b(return)630 -1536 y Ft(\\t)384 b Fu(horizon)m(tal)32 b(tab)630 1697 -y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)630 1858 y Ft(\\)p -Fj(nnn)288 b Fu(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5 -b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 b Fr(nnn)e -Fu(\(one)i(to)1110 1968 y(three)c(digits\))630 2129 y -Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e -(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39 -b Fr(HH)1110 2239 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630 -2400 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 -2509 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 2619 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 2729 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 +4766 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s +(ostrophe)630 4921 y(In)d(addition)h(to)g(the)g Fm(gnu)f +Fu(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g +(bac)m(kslash)630 5030 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 +5185 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 5340 +y Ft(\\b)384 b Fu(bac)m(kspace)p eop end +%%Page: 129 135 +TeXDict begin 129 134 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(129)630 299 y Ft(\\d)384 +b Fu(delete)630 460 y Ft(\\f)g Fu(form)30 b(feed)630 +620 y Ft(\\n)384 b Fu(newline)630 781 y Ft(\\r)g Fu(carriage)32 +b(return)630 941 y Ft(\\t)384 b Fu(horizon)m(tal)32 b(tab)630 +1102 y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)630 1263 +y Ft(\\)p Fj(nnn)288 b Fu(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose) +e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 +b Fr(nnn)e Fu(\(one)i(to)1110 1372 y(three)c(digits\))630 +1533 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g +(whose)e(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 +b(alue)39 b Fr(HH)1110 1643 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e +(digits\))630 1803 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 1913 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 2022 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 2132 y(will)j(quote)h(an)m +(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39 b(`)p Ft(")p Fu(')h(and)g(`)p Ft(')p Fu('.)69 b(F)-8 -b(or)630 2838 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i +b(or)630 2242 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i (mak)m(e)h(`)p Fj(C-x)j Ft(\\)p Fu(')c(insert)f(a)h(single)h(`)p -Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 2974 y Ft("\\C-x\\\\":)45 -b("\\\\")150 3175 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs) -150 3322 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f +Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 2377 y Ft("\\C-x\\\\":)45 +b("\\\\")150 2577 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs) +150 2724 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f (in)g(spirit)f(to)i(the)f(conditional)h(compilation)g(features)f(of)150 -3431 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g +2834 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 3541 y(result)f(of)h(tests.)41 +(erformed)f(as)i(the)150 2943 y(result)f(of)h(tests.)41 b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150 -3703 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(construct)i(allo)m(ws)h +3105 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(construct)i(allo)m(ws)h (bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g -(the)630 3812 y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h +(the)630 3214 y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h (application)g(using)f(Readline.)59 b(The)36 b(text)h(of)f(the)h(test,) -630 3922 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f +630 3324 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f (to)h(the)g(end)f(of)h(the)f(line;)i(unless)e(otherwise)630 -4031 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i -(it.)630 4193 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e +3433 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i +(it.)630 3594 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e Fu(form)i(of)g(the)h Ft($if)e Fu(directiv)m(e)j(is)e(used)f(to)i(test)g -(whether)e(Read-)1110 4302 y(line)44 b(is)f(in)g Ft(emacs)f +(whether)e(Read-)1110 3704 y(line)44 b(is)f(in)g Ft(emacs)f Fu(or)h Ft(vi)g Fu(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g -(conjunction)1110 4412 y(with)c(the)h(`)p Ft(set)29 b(keymap)p +(conjunction)1110 3813 y(with)c(the)h(`)p Ft(set)29 b(keymap)p Fu(')38 b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110 -4521 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d -Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 4631 y(starting)f(out)g -(in)f Ft(emacs)f Fu(mo)s(de.)630 4792 y Ft(term)288 b +3923 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d +Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 4032 y(starting)f(out)g +(in)f Ft(emacs)f Fu(mo)s(de.)630 4193 y Ft(term)288 b Fu(The)26 b Ft(term=)g Fu(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f -(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 4902 y(ings,)38 +(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 4303 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 5011 y(function)24 b(k)m(eys.)39 +(the)g(terminal's)1110 4412 y(function)24 b(k)m(eys.)39 b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g(the)g(`)p -Ft(=)p Fu(')g(is)g(tested)h(against)1110 5121 y(b)s(oth)k(the)h(full)g +Ft(=)p Fu(')g(is)g(tested)h(against)1110 4522 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 5230 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p +(terminal)1110 4631 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p Ft(-)p Fu('.)50 b(This)33 b(allo)m(ws)i Ft(sun)e Fu(to)h(matc)m(h)g(b)s -(oth)f Ft(sun)g Fu(and)1110 5340 y Ft(sun-cmd)p Fu(,)c(for)h(instance.) -p eop end -%%Page: 123 129 -TeXDict begin 123 128 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(123)630 299 y Ft(version)144 -b Fu(The)44 b Ft(version)f Fu(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s -(erform)d(comparisons)i(against)1110 408 y(sp)s(eci\014c)c(Readline)i -(v)m(ersions.)74 b(The)42 b Ft(version)d Fu(expands)i(to)h(the)g -(curren)m(t)1110 518 y(Readline)25 b(v)m(ersion.)39 b(The)23 -b(set)h(of)g(comparison)h(op)s(erators)f(includes)f(`)p -Ft(=)p Fu(')h(\(and)1110 628 y(`)p Ft(==)p Fu('\),)33 -b(`)p Ft(!=)p Fu(',)f(`)p Ft(<=)p Fu(',)h(`)p Ft(>=)p -Fu(',)f(`)p Ft(<)p Fu(',)h(and)e(`)p Ft(>)p Fu('.)46 -b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h(on)1110 -737 y(the)j(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g(consists)h(of)f -(a)g(ma)5 b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)1110 -847 y(an)45 b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44 -b(an)i(optional)g(minor)f(v)m(ersion)h(\(e.g.,)1110 956 -y(`)p Ft(7.1)p Fu('\).)40 b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g -(omitted,)h(it)f(is)g(assumed)f(to)h(b)s(e)f(`)p Ft(0)p -Fu('.)40 b(The)1110 1066 y(op)s(erator)34 b(ma)m(y)g(b)s(e)f(separated) -g(from)g(the)h(string)f Ft(version)f Fu(and)h(from)g(the)1110 -1176 y(v)m(ersion)39 b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f -(whitespace.)67 b(The)38 b(follo)m(wing)i(example)1110 -1285 y(sets)31 b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m -(ersion)f(b)s(eing)g(used)g(is)g(7.0)i(or)e(new)m(er:)1350 -1440 y Ft($if)47 b(version)f(>=)h(7.0)1350 1550 y(set)g -(show-mode-in-prompt)42 b(on)1350 1659 y($endif)630 1860 -y(application)1110 1970 y Fu(The)21 b Fr(application)j -Fu(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h -(set-)1110 2079 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h -(Readline)g(library)g(sets)g(the)g Fr(application)1110 -2189 y(name)p Fu(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h -(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110 -2298 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 2408 -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 2518 y(the)e(curren)m(t)f(or)g(previous) -g(w)m(ord)g(in)g(Bash:)1350 2673 y Ft($if)47 b(Bash)1350 -2782 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350 -2892 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 3002 y($endif)630 -3202 y(variable)96 b Fu(The)33 b Fr(v)-5 b(ariable)39 +(oth)f Ft(sun)g Fu(and)1110 4741 y Ft(sun-cmd)p Fu(,)c(for)h(instance.) +630 4902 y Ft(version)144 b Fu(The)44 b Ft(version)f +Fu(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s(erform)d(comparisons)i +(against)1110 5011 y(sp)s(eci\014c)c(Readline)i(v)m(ersions.)74 +b(The)42 b Ft(version)d Fu(expands)i(to)h(the)g(curren)m(t)1110 +5121 y(Readline)25 b(v)m(ersion.)39 b(The)23 b(set)h(of)g(comparison)h +(op)s(erators)f(includes)f(`)p Ft(=)p Fu(')h(\(and)1110 +5230 y(`)p Ft(==)p Fu('\),)33 b(`)p Ft(!=)p Fu(',)f(`)p +Ft(<=)p Fu(',)h(`)p Ft(>=)p Fu(',)f(`)p Ft(<)p Fu(',)h(and)e(`)p +Ft(>)p Fu('.)46 b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h +(on)1110 5340 y(the)j(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g +(consists)h(of)f(a)g(ma)5 b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)p +eop end +%%Page: 130 136 +TeXDict begin 130 135 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(130)1110 299 y(an)45 +b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44 b(an)i(optional)g(minor)f +(v)m(ersion)h(\(e.g.,)1110 408 y(`)p Ft(7.1)p Fu('\).)40 +b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g(omitted,)h(it)f(is)g(assumed) +f(to)h(b)s(e)f(`)p Ft(0)p Fu('.)40 b(The)1110 518 y(op)s(erator)34 +b(ma)m(y)g(b)s(e)f(separated)g(from)g(the)h(string)f +Ft(version)f Fu(and)h(from)g(the)1110 628 y(v)m(ersion)39 +b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f(whitespace.)67 +b(The)38 b(follo)m(wing)i(example)1110 737 y(sets)31 +b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m(ersion)f(b)s(eing)g +(used)g(is)g(7.0)i(or)e(new)m(er:)1350 872 y Ft($if)47 +b(version)f(>=)h(7.0)1350 981 y(set)g(show-mode-in-prompt)42 +b(on)1350 1091 y($endif)630 1250 y(application)1110 1360 +y Fu(The)21 b Fr(application)j Fu(construct)e(is)g(used)f(to)i(include) +f(application-sp)s(eci\014c)h(set-)1110 1469 y(tings.)39 +b(Eac)m(h)26 b(program)e(using)g(the)h(Readline)g(library)g(sets)g(the) +g Fr(application)1110 1579 y(name)p Fu(,)g(and)e(y)m(ou)g(can)h(test)g +(for)f(a)g(particular)h(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g +(used)f(to)1110 1689 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 1798 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 1908 y(the)e(curren)m(t)f +(or)g(previous)g(w)m(ord)g(in)g(Bash:)1350 2042 y Ft($if)47 +b(Bash)1350 2152 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word) +1350 2262 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 2371 y($endif)630 +2531 y(variable)96 b Fu(The)33 b Fr(v)-5 b(ariable)39 b Fu(construct)33 b(pro)m(vides)g(simple)g(equalit)m(y)i(tests)e(for)g -(Readline)1110 3312 y(v)-5 b(ariables)32 b(and)f(v)-5 +(Readline)1110 2640 y(v)-5 b(ariables)32 b(and)f(v)-5 b(alues.)45 b(The)32 b(p)s(ermitted)f(comparison)h(op)s(erators)f(are)i -(`)p Ft(=)p Fu(',)1110 3421 y(`)p Ft(==)p Fu(',)49 b(and)44 +(`)p Ft(=)p Fu(',)1110 2750 y(`)p Ft(==)p Fu(',)49 b(and)44 b(`)p Ft(!=)p Fu('.)85 b(The)44 b(v)-5 b(ariable)46 b(name)f(m)m(ust)g -(b)s(e)g(separated)g(from)g(the)1110 3531 y(comparison)25 +(b)s(e)g(separated)g(from)g(the)1110 2859 y(comparison)25 b(op)s(erator)g(b)m(y)g(whitespace;)j(the)d(op)s(erator)g(ma)m(y)g(b)s -(e)f(separated)1110 3641 y(from)33 b(the)h(v)-5 b(alue)35 +(e)f(separated)1110 2969 y(from)33 b(the)h(v)-5 b(alue)35 b(on)f(the)g(righ)m(t)g(hand)f(side)h(b)m(y)f(whitespace.)52 -b(Both)35 b(string)1110 3750 y(and)i(b)s(o)s(olean)g(v)-5 +b(Both)35 b(string)1110 3078 y(and)i(b)s(o)s(olean)g(v)-5 b(ariables)38 b(ma)m(y)h(b)s(e)d(tested.)63 b(Bo)s(olean)39 -b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 3860 y(tested)46 +b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 3188 y(tested)46 b(against)g(the)f(v)-5 b(alues)46 b Fr(on)f Fu(and)f Fr(o\013)p Fu(.)85 b(The)45 b(follo)m(wing)h(example)g(is)1110 -3969 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Ft(mode=emacs)e -Fu(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 4124 y -Ft($if)47 b(editing-mode)d(==)k(emacs)1350 4234 y(set)f -(show-mode-in-prompt)42 b(on)1350 4344 y($endif)150 4544 +3298 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Ft(mode=emacs)e +Fu(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 3432 y +Ft($if)47 b(editing-mode)d(==)k(emacs)1350 3542 y(set)f +(show-mode-in-prompt)42 b(on)1350 3651 y($endif)150 3811 y($endif)192 b Fu(This)29 b(command,)i(as)f(seen)h(in)f(the)g(previous) g(example,)h(terminates)g(an)g Ft($if)e Fu(command.)150 -4745 y Ft($else)240 b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i +3970 y Ft($else)240 b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i (the)f Ft($if)g Fu(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g -(fails.)150 4945 y Ft($include)96 b Fu(This)43 b(directiv)m(e)i(tak)m +(fails.)150 4130 y Ft($include)96 b Fu(This)43 b(directiv)m(e)i(tak)m (es)g(a)e(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g -(commands)630 5055 y(and)38 b(bindings)f(from)h(that)i(\014le.)65 +(commands)630 4239 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 5165 y Ft(/etc/inputrc)p Fu(:)870 5320 y Ft($include)46 -b(/etc/inputrc)p eop end -%%Page: 124 130 -TeXDict begin 124 129 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(124)150 299 y Fk(8.3.3)63 -b(Sample)41 b(Init)g(File)150 446 y Fu(Here)27 b(is)f(an)h(example)g -(of)f(an)h Fr(inputrc)k Fu(\014le.)39 b(This)26 b(illustrates)h(k)m(ey) -h(binding,)e(v)-5 b(ariable)27 b(assignmen)m(t,)i(and)150 -555 y(conditional)j(syn)m(tax.)p eop end -%%Page: 125 131 -TeXDict begin 125 130 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(125)390 408 y Ft(#)47 +(from)630 4349 y Ft(/etc/inputrc)p Fu(:)870 4483 y Ft($include)46 +b(/etc/inputrc)150 4682 y Fk(8.3.3)63 b(Sample)41 b(Init)g(File)150 +4829 y Fu(Here)27 b(is)f(an)h(example)g(of)f(an)h Fr(inputrc)k +Fu(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5 +b(ariable)27 b(assignmen)m(t,)i(and)150 4939 y(conditional)j(syn)m +(tax.)p eop end +%%Page: 131 137 +TeXDict begin 131 136 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(131)390 408 y Ft(#)47 b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h (editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h (Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include) @@ -17192,9 +17762,9 @@ y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode)390 4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode) 390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390 5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end -%%Page: 126 132 -TeXDict begin 126 131 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(126)390 299 y Ft(#"\\M-\\C-[A":) +%%Page: 132 138 +TeXDict begin 132 137 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(132)390 299 y Ft(#"\\M-\\C-[A":) 331 b(previous-history)390 408 y(#"\\M-\\C-[B":)g(next-history)390 628 y(C-q:)47 b(quoted-insert)390 847 y($endif)390 1066 y(#)g(An)h(old-style)d(binding.)93 b(This)47 b(happens)f(to)h(be)g(the) @@ -17227,9 +17797,9 @@ y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h g(for)i(a)g(word,)390 5121 y(#)g(ask)g(whether)f(or)h(not)g(the)g(user) g(wants)f(to)h(see)g(all)g(of)g(them)390 5230 y(set)g (completion-query-items)42 b(150)p eop end -%%Page: 127 133 -TeXDict begin 127 132 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(127)390 299 y Ft(#)47 +%%Page: 133 139 +TeXDict begin 133 138 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(133)390 299 y Ft(#)47 b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390 628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390 847 y($endif)150 1089 y Fs(8.4)68 b(Bindable)45 b(Readline)i(Commands) @@ -17239,7 +17809,7 @@ b(Y)-8 b(ou)33 b(can)150 1358 y(list)40 b(y)m(our)f(k)m(ey)i(bindings)d (b)m(y)h(executing)i Ft(bind)29 b(-P)39 b Fu(or,)j(for)d(a)h(more)g (terse)g(format,)i(suitable)e(for)f(an)150 1468 y Fr(inputrc)34 b Fu(\014le,)29 b Ft(bind)g(-p)p Fu(.)40 b(\(See)30 b(Section)f(4.2)h -([Bash)g(Builtins],)g(page)g(51.\))41 b(Command)28 b(names)h(without) +([Bash)g(Builtins],)g(page)g(55.\))41 b(Command)28 b(names)h(without) 150 1577 y(an)h(accompan)m(ying)i(k)m(ey)f(sequence)g(are)g(un)m(b)s (ound)d(b)m(y)i(default.)275 1713 y(In)25 b(the)h(follo)m(wing)i (descriptions,)f Fr(p)s(oin)m(t)h Fu(refers)e(to)h(the)f(curren)m(t)g @@ -17279,9 +17849,9 @@ b(screen)f(line.)39 b(This)24 b(will)i(not)f(ha)m(v)m(e)h(the)f (ysical)h(line)g(or)f(if)g(p)s(oin)m(t)h(is)f(not)h(greater)g(than)630 5340 y(the)j(length)f(of)h(the)f(prompt)g(plus)f(the)i(screen)f(width.) p eop end -%%Page: 128 134 -TeXDict begin 128 133 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(128)150 299 y Ft(next-screen-line) +%%Page: 134 140 +TeXDict begin 134 139 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(134)150 299 y Ft(next-screen-line) 26 b(\(\))630 408 y Fu(A)m(ttempt)g(to)f(mo)m(v)m(e)i(p)s(oin)m(t)d(to) i(the)e(same)i(ph)m(ysical)f(screen)g(column)f(on)h(the)f(next)h(ph)m (ysical)630 518 y(screen)e(line.)39 b(This)23 b(will)g(not)h(ha)m(v)m @@ -17339,9 +17909,9 @@ b(\(M-p\))630 5121 y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g (tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630 5340 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m (ywhere)g(in)f(a)h(history)f(line.)p eop end -%%Page: 129 135 -TeXDict begin 129 134 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(129)150 299 y Ft +%%Page: 135 141 +TeXDict begin 135 140 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(135)150 299 y Ft (non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24 b(\(M-n\))630 408 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h(the) e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the)630 @@ -17415,1094 +17985,1109 @@ b(the)g(curren)m(t)e(line)i(for)f(return)f(to)h(the)h(calling)g b(en)m(tered,)k(and)d(fetc)m(h)h(the)f(next)g(line)h(relativ)m(e)h(to)f (the)f(curren)m(t)g(line)h(from)f(the)g(history)p eop end -%%Page: 130 136 -TeXDict begin 130 135 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(130)630 299 y(for)31 +%%Page: 136 142 +TeXDict begin 136 141 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(136)630 299 y(for)31 b(editing.)43 b(A)31 b(n)m(umeric)f(argumen)m(t,)i(if)f(supplied,)f(sp) s(eci\014es)h(the)g(history)f(en)m(try)i(to)f(use)630 -408 y(instead)g(of)f(the)h(curren)m(t)f(line.)150 605 -y Fk(8.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10 -b(ext)150 775 y Fj(end-of-file)27 b Ft(\(usually)h(C-d\))630 -885 y Fu(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g +408 y(instead)g(of)f(the)h(curren)m(t)f(line.)150 565 +y Ft(fetch-history)d(\(\))630 675 y Fu(With)e(a)f(n)m(umeric)g(argumen) +m(t,)i(fetc)m(h)f(that)g(en)m(try)f(from)g(the)g(history)g(list)h(and)e +(mak)m(e)i(it)g(the)630 784 y(curren)m(t)30 b(line.)41 +b(Without)30 b(an)g(argumen)m(t,)h(mo)m(v)m(e)g(bac)m(k)g(to)f(the)g +(\014rst)f(en)m(try)h(in)g(the)g(history)630 894 y(list.)150 +1090 y Fk(8.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10 +b(ext)150 1261 y Fj(end-of-file)27 b Ft(\(usually)h(C-d\))630 +1370 y Fu(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g (for)f(example,)i(b)m(y)e Ft(stty)p Fu(.)39 b(If)25 b(this)h(c)m -(harac-)630 995 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m +(harac-)630 1480 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m (haracters)j(on)d(the)h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s -(eginning)630 1104 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g +(eginning)630 1590 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g (it)g(as)f(the)h(end)f(of)g(input)f(and)h(returns)f Fm(eof)p -Fu(.)150 1261 y Ft(delete-char)e(\(C-d\))630 1370 y Fu(Delete)35 +Fu(.)150 1746 y Ft(delete-char)e(\(C-d\))630 1856 y Fu(Delete)35 b(the)f(c)m(haracter)h(at)f(p)s(oin)m(t.)49 b(If)33 b(this)g(function)g -(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 1480 +(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 1966 y(as)e(the)f(tt)m(y)i Fm(eof)d Fu(c)m(haracter,)j(as)f Fj(C-d)e Fu(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g -(e\013ects.)150 1637 y Ft(backward-delete-char)25 b(\(Rubout\))630 -1746 y Fu(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 +(e\013ects.)150 2122 y Ft(backward-delete-char)25 b(\(Rubout\))630 +2232 y Fu(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 b(A)30 b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630 -1856 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 -2013 y Ft(forward-backward-delete-)o(char)24 b(\(\))630 -2122 y Fu(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h +2341 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 +2498 y Ft(forward-backward-delete-)o(char)24 b(\(\))630 +2608 y Fu(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h (unless)d(the)i(cursor)e(is)h(at)h(the)g(end)e(of)i(the)630 -2232 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s +2717 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s (ehind)d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630 -2341 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 -2498 y Ft(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 2608 +2827 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 +2983 y Ft(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 3093 y Fu(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)h (v)m(erbatim.)53 b(This)33 b(is)i(ho)m(w)f(to)h(insert)f(k)m(ey)630 -2717 y(sequences)d(lik)m(e)g Fj(C-q)p Fu(,)f(for)g(example.)150 -2874 y Ft(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630 -2983 y Fu(Insert)g(y)m(ourself.)150 3140 y Ft(bracketed-paste-begin)25 -b(\(\))630 3250 y Fu(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e +3203 y(sequences)d(lik)m(e)g Fj(C-q)p Fu(,)f(for)g(example.)150 +3359 y Ft(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630 +3469 y Fu(Insert)g(y)m(ourself.)150 3626 y Ft(bracketed-paste-begin)25 +b(\(\))630 3735 y Fu(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e (b)s(ound)f(to)i(the)g Ft(")p Fu(brac)m(k)m(eted)h(paste)p -Ft(")f Fu(escap)s(e)h(sequence)630 3359 y(sen)m(t)38 +Ft(")f Fu(escap)s(e)h(sequence)630 3845 y(sen)m(t)38 b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i (assigned)f(b)m(y)h(default.)62 b(It)38 b(allo)m(ws)630 -3469 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g +3954 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g (single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630 -3578 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k) +4064 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k) m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630 -3688 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j +4173 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j Ft(self-insert)c Fu(instead)j(of)h(executing)g(an)m(y)f(editing)630 -3798 y(commands.)630 3931 y(Brac)m(k)m(eted)38 b(paste)f(sets)f(the)h +4283 y(commands.)630 4416 y(Brac)m(k)m(eted)38 b(paste)f(sets)f(the)h (region)f(\(the)h(c)m(haracters)g(b)s(et)m(w)m(een)g(p)s(oin)m(t)f(and) -g(the)g(mark\))630 4040 y(to)j(the)g(inserted)f(text.)65 +g(the)g(mark\))630 4526 y(to)j(the)g(inserted)f(text.)65 b(It)39 b(uses)f(the)g(concept)h(of)g(an)f Fl(active)i(mark)10 -b Fu(:)57 b(when)38 b(the)g(mark)630 4150 y(is)d(activ)m(e,)k(Readline) +b Fu(:)57 b(when)38 b(the)g(mark)630 4635 y(is)d(activ)m(e,)k(Readline) c(redispla)m(y)h(uses)e(the)h(terminal's)h(standout)f(mo)s(de)f(to)i -(denote)g(the)630 4260 y(region.)150 4416 y Ft(transpose-chars)26 -b(\(C-t\))630 4526 y Fu(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the) +(denote)g(the)630 4745 y(region.)150 4902 y Ft(transpose-chars)26 +b(\(C-t\))630 5011 y Fu(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the) g(cursor)f(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g -(cursor,)630 4635 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m +(cursor,)630 5121 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m (ell.)57 b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end) -g(of)h(the)630 4745 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h +g(of)h(the)630 5230 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h (last)h(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38 -b(Negativ)m(e)25 b(argumen)m(ts)630 4855 y(ha)m(v)m(e)32 -b(no)e(e\013ect.)150 5011 y Ft(transpose-words)c(\(M-t\))630 -5121 y Fu(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g -(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past) -g(that)630 5230 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 -b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i(the)f -(line,)i(this)e(transp)s(oses)g(the)630 5340 y(last)j(t)m(w)m(o)h(w)m -(ords)e(on)g(the)h(line.)p eop end -%%Page: 131 137 -TeXDict begin 131 136 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(131)150 299 y Ft(upcase-word)27 -b(\(M-u\))630 408 y Fu(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g -(follo)m(wing\))i(w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m -(t,)e(upp)s(er-)630 518 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g -(not)h(mo)m(v)m(e)h(the)e(cursor.)150 665 y Ft(downcase-word)d(\(M-l\)) -630 775 y Fu(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m -(wing\))i(w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m -(w)m(ercase)630 884 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f -(mo)m(v)m(e)i(the)f(cursor.)150 1032 y Ft(capitalize-word)26 -b(\(M-c\))630 1141 y Fu(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m +b(Negativ)m(e)25 b(argumen)m(ts)630 5340 y(ha)m(v)m(e)32 +b(no)e(e\013ect.)p eop end +%%Page: 137 143 +TeXDict begin 137 142 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(137)150 299 y Ft(transpose-words) +26 b(\(M-t\))630 408 y Fu(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s +(oin)m(t)g(past)g(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p) +s(oin)m(t)f(past)g(that)630 518 y(w)m(ord)c(as)h(w)m(ell.)41 +b(If)27 b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i +(the)f(line,)i(this)e(transp)s(oses)g(the)630 628 y(last)j(t)m(w)m(o)h +(w)m(ords)e(on)g(the)h(line.)150 797 y Ft(upcase-word)c(\(M-u\))630 +907 y Fu(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i +(w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630 +1016 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h +(the)e(cursor.)150 1186 y Ft(downcase-word)d(\(M-l\))630 +1296 y Fu(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i +(w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m +(ercase)630 1405 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m +(v)m(e)i(the)f(cursor.)150 1575 y Ft(capitalize-word)26 +b(\(M-c\))630 1684 y Fu(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m (wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h -(capitalize)630 1251 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f -(mo)m(v)m(e)i(the)f(cursor.)150 1398 y Ft(overwrite-mode)26 -b(\(\))630 1508 y Fu(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48 +(capitalize)630 1794 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f +(mo)m(v)m(e)i(the)f(cursor.)150 1964 y Ft(overwrite-mode)26 +b(\(\))630 2073 y Fu(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48 b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,) -h(switc)m(hes)630 1617 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37 +h(switc)m(hes)630 2183 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37 b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m -(t,)i(switc)m(hes)e(to)630 1727 y(insert)30 b(mo)s(de.)41 +(t,)i(switc)m(hes)e(to)630 2292 y(insert)30 b(mo)s(de.)41 b(This)30 b(command)h(a\013ects)h(only)e Ft(emacs)f Fu(mo)s(de;)i -Ft(vi)f Fu(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 1837 +Ft(vi)f Fu(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 2402 y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f Ft(readline\(\))c Fu(starts)k(in)f(insert)g(mo)s(de.)630 -1965 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s +2541 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s (ound)c(to)j Ft(self-insert)c Fu(replace)k(the)g(text)g(at)630 -2075 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h +2651 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h (the)f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 -2184 y Ft(backward-delete-char)25 b Fu(replace)31 b(the)g(c)m(haracter) -h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 2313 +2761 y Ft(backward-delete-char)25 b Fu(replace)31 b(the)g(c)m(haracter) +h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 2900 y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150 -2500 y Fk(8.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150 -2665 y Ft(kill-line)28 b(\(C-k\))630 2775 y Fu(Kill)k(the)f(text)i +3110 y Fk(8.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150 +3287 y Ft(kill-line)28 b(\(C-k\))630 3396 y Fu(Kill)k(the)f(text)i (from)d(p)s(oin)m(t)i(to)g(the)f(end)g(of)g(the)h(line.)44 b(With)31 b(a)h(negativ)m(e)i(n)m(umeric)d(argu-)630 -2885 y(men)m(t,)g(kill)g(bac)m(kw)m(ard)g(from)f(the)g(cursor)g(to)h +3506 y(men)m(t,)g(kill)g(bac)m(kw)m(ard)g(from)f(the)g(cursor)g(to)h (the)g(b)s(eginning)e(of)i(the)g(curren)m(t)f(line.)150 -3032 y Ft(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630 -3141 y Fu(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h(cursor)g(to)g(the)g +3675 y Ft(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630 +3785 y Fu(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h(cursor)g(to)g(the)g (b)s(eginning)g(of)g(the)g(curren)m(t)f(line.)70 b(With)41 -b(a)630 3251 y(negativ)m(e)47 b(n)m(umeric)e(argumen)m(t,)50 +b(a)630 3895 y(negativ)m(e)47 b(n)m(umeric)e(argumen)m(t,)50 b(kill)c(forw)m(ard)e(from)h(the)g(cursor)g(to)h(the)f(end)f(of)i(the) -630 3361 y(curren)m(t)30 b(line.)150 3508 y Ft(unix-line-discard)c -(\(C-u\))630 3617 y Fu(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f +630 4004 y(curren)m(t)30 b(line.)150 4174 y Ft(unix-line-discard)c +(\(C-u\))630 4283 y Fu(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f (to)h(the)f(b)s(eginning)g(of)h(the)f(curren)m(t)g(line.)150 -3765 y Ft(kill-whole-line)c(\(\))630 3874 y Fu(Kill)37 +4453 y Ft(kill-whole-line)c(\(\))630 4562 y Fu(Kill)37 b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h(line,)h(no)f(matter)g (where)f(p)s(oin)m(t)h(is.)59 b(By)36 b(default,)630 -3984 y(this)30 b(is)h(un)m(b)s(ound.)150 4131 y Ft(kill-word)d(\(M-d\)) -630 4241 y Fu(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f +4672 y(this)30 b(is)h(un)m(b)s(ound.)150 4842 y Ft(kill-word)d(\(M-d\)) +630 4951 y Fu(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f (curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h -(the)g(end)630 4350 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 +(the)g(end)630 5061 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Ft(forward-word)p -Fu(.)150 4498 y Ft(backward-kill-word)25 b(\(M-DEL\))630 -4607 y Fu(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40 +Fu(.)150 5230 y Ft(backward-kill-word)25 b(\(M-DEL\))630 +5340 y Fu(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40 b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g -Ft(backward-word)p Fu(.)150 4754 y Ft(shell-kill-word)d(\(M-C-d\))630 -4864 y Fu(Kill)k(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f -(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h -(the)g(end)630 4974 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 -b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Ft -(shell-forward-word)p Fu(.)150 5121 y Ft(shell-backward-kill-word)24 -b(\(\))630 5230 y Fu(Kill)e(the)h(w)m(ord)e(b)s(ehind)g(p)s(oin)m(t.)38 +Ft(backward-word)p Fu(.)p eop end +%%Page: 138 144 +TeXDict begin 138 143 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(138)150 299 y Ft(shell-kill-word) +26 b(\(M-C-d\))630 408 y Fu(Kill)k(from)f(p)s(oin)m(t)g(to)h(the)g(end) +e(of)i(the)f(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m +(ords,)f(to)h(the)g(end)630 518 y(of)h(the)f(next)h(w)m(ord.)40 +b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f +Ft(shell-forward-word)p Fu(.)150 692 y Ft(shell-backward-kill-word)24 +b(\(\))630 801 y Fu(Kill)e(the)h(w)m(ord)e(b)s(ehind)g(p)s(oin)m(t.)38 b(W)-8 b(ord)22 b(b)s(oundaries)f(are)h(the)g(same)h(as)f -Ft(shell-backward-)630 5340 y(word)p Fu(.)p eop end -%%Page: 132 138 -TeXDict begin 132 137 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(132)150 299 y Ft -(shell-transpose-words)25 b(\(M-C-t\))630 408 y Fu(Drag)33 +Ft(shell-backward-)630 911 y(word)p Fu(.)150 1084 y Ft +(shell-transpose-words)j(\(M-C-t\))630 1194 y Fu(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g(the)h(w)m(ord)f (after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)g(that)630 -518 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m +1304 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m (t)h(is)f(at)h(the)g(end)e(of)i(the)f(line,)i(this)e(transp)s(oses)g -(the)630 628 y(last)j(t)m(w)m(o)h(w)m(ords)d(on)i(the)f(line.)41 +(the)630 1413 y(last)j(t)m(w)m(o)h(w)m(ords)d(on)i(the)f(line.)41 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)f(as)h -Ft(shell-forward-)630 737 y(word)e Fu(and)h Ft(shell-backward-word)p -Fu(.)150 897 y Ft(unix-word-rubout)c(\(C-w\))630 1007 +Ft(shell-forward-)630 1523 y(word)e Fu(and)h Ft(shell-backward-word)p +Fu(.)150 1696 y Ft(unix-word-rubout)c(\(C-w\))630 1806 y Fu(Kill)32 b(the)g(w)m(ord)f(b)s(ehind)f(p)s(oin)m(t,)i(using)f (white)h(space)g(as)g(a)g(w)m(ord)f(b)s(oundary)-8 b(.)43 -b(The)31 b(killed)630 1116 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f -(kill-ring.)150 1277 y Ft(unix-filename-rubout)25 b(\(\))630 -1386 y Fu(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e +b(The)31 b(killed)630 1915 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f +(kill-ring.)150 2089 y Ft(unix-filename-rubout)25 b(\(\))630 +2199 y Fu(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e (white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f(the)630 -1496 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g -(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 1656 y Ft -(delete-horizontal-space)24 b(\(\))630 1765 y Fu(Delete)33 +2308 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g +(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 2482 y Ft +(delete-horizontal-space)24 b(\(\))630 2591 y Fu(Delete)33 b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41 -b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 1925 -y Ft(kill-region)d(\(\))630 2035 y Fu(Kill)k(the)f(text)i(in)e(the)g +b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 2765 +y Ft(kill-region)d(\(\))630 2874 y Fu(Kill)k(the)f(text)i(in)e(the)g (curren)m(t)h(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un) -m(b)s(ound.)150 2195 y Ft(copy-region-as-kill)25 b(\(\))630 -2305 y Fu(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f +m(b)s(ound.)150 3048 y Ft(copy-region-as-kill)25 b(\(\))630 +3158 y Fu(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f (kill)h(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f -(a)m(w)m(a)m(y)-8 b(.)630 2414 y(By)31 b(default,)f(this)h(command)f -(is)g(un)m(b)s(ound.)150 2574 y Ft(copy-backward-word)25 -b(\(\))630 2684 y Fu(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m +(a)m(w)m(a)m(y)-8 b(.)630 3267 y(By)31 b(default,)f(this)h(command)f +(is)g(un)m(b)s(ound.)150 3441 y Ft(copy-backward-word)25 +b(\(\))630 3550 y Fu(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m (t)g(to)i(the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries) -f(are)i(the)630 2793 y(same)31 b(as)f Ft(backward-word)p +f(are)i(the)630 3660 y(same)31 b(as)f Ft(backward-word)p Fu(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150 -2953 y Ft(copy-forward-word)26 b(\(\))630 3063 y Fu(Cop)m(y)31 +3833 y Ft(copy-forward-word)26 b(\(\))630 3943 y Fu(Cop)m(y)31 b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h (bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630 -3173 y(same)f(as)f Ft(forward-word)p Fu(.)38 b(By)30 +4053 y(same)f(as)f Ft(forward-word)p Fu(.)38 b(By)30 b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150 -3333 y Ft(yank)f(\(C-y\))630 3442 y Fu(Y)-8 b(ank)31 +4226 y Ft(yank)f(\(C-y\))630 4336 y Fu(Y)-8 b(ank)31 b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h -(p)s(oin)m(t.)150 3602 y Ft(yank-pop)d(\(M-y\))630 3712 +(p)s(oin)m(t.)150 4509 y Ft(yank-pop)d(\(M-y\))630 4619 y Fu(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54 b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630 -3822 y(command)30 b(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p -Fu(.)150 4021 y Fk(8.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m -(ts)150 4194 y Ft(digit-argument)26 b(\()p Fj(M-0)p Ft(,)j -Fj(M-1)p Ft(,)h(...)f Fj(M--)p Ft(\))630 4303 y Fu(Add)d(this)h(digit)g +4728 y(command)30 b(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p +Fu(.)150 4942 y Fk(8.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m +(ts)150 5121 y Ft(digit-argument)26 b(\()p Fj(M-0)p Ft(,)j +Fj(M-1)p Ft(,)h(...)f Fj(M--)p Ft(\))630 5230 y Fu(Add)d(this)h(digit)g (to)h(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f -(new)f(argumen)m(t.)630 4413 y Fj(M--)j Fu(starts)i(a)g(negativ)m(e)i -(argumen)m(t.)150 4573 y Ft(universal-argument)25 b(\(\))630 -4682 y Fu(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g -(argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m -(y)f(one)630 4792 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h -(leading)h(min)m(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630 -4902 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b) -m(y)f(digits,)i(executing)f Ft(universal-argument)630 -5011 y Fu(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h +(new)f(argumen)m(t.)630 5340 y Fj(M--)j Fu(starts)i(a)g(negativ)m(e)i +(argumen)m(t.)p eop end +%%Page: 139 145 +TeXDict begin 139 144 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(139)150 299 y Ft +(universal-argument)25 b(\(\))630 408 y Fu(This)g(is)g(another)h(w)m(a) +m(y)g(to)h(sp)s(ecify)e(an)g(argumen)m(t.)40 b(If)25 +b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m(y)f(one)630 +518 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h(leading)h(min)m(us) +e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630 628 +y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)m(y)f +(digits,)i(executing)f Ft(universal-argument)630 737 +y Fu(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h (otherwise)g(ignored.)45 b(As)32 b(a)g(sp)s(ecial)h(case,)630 -5121 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y) -d(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630 -5230 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f +847 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)d +(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630 +956 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f (the)h(next)f(command)g(is)g(m)m(ultiplied)h(b)m(y)630 -5340 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h -(one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)p -eop end -%%Page: 133 139 -TeXDict begin 133 138 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(133)630 299 y(time)29 -b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h(second)g(time)g -(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630 408 y(sixteen,)i(and)f(so) -h(on.)40 b(By)31 b(default,)g(this)f(is)g(not)h(b)s(ound)d(to)k(a)e(k)m -(ey)-8 b(.)150 603 y Fk(8.4.6)63 b(Letting)40 b(Readline)h(T)m(yp)s(e)g -(F)-10 b(or)42 b(Y)-10 b(ou)150 772 y Ft(complete)28 -b(\(TAB\))630 882 y Fu(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f -(the)g(text)g(b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i -(completion)630 991 y(p)s(erformed)33 b(is)h(application-sp)s -(eci\014c.)53 b(Bash)35 b(attempts)g(completion)g(treating)h(the)e -(text)630 1101 y(as)39 b(a)h(v)-5 b(ariable)39 b(\(if)h(the)f(text)h(b) -s(egins)e(with)h(`)p Ft($)p Fu('\),)j(username)c(\(if)i(the)f(text)h(b) -s(egins)e(with)630 1210 y(`)p Ft(~)p Fu('\),)31 b(hostname)f(\(if)g -(the)g(text)h(b)s(egins)e(with)h(`)p Ft(@)p Fu('\),)h(or)f(command)f -(\(including)h(aliases)i(and)630 1320 y(functions\))j(in)f(turn.)53 +1066 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h +(one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)630 +1176 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h +(second)g(time)g(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630 +1285 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g +(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 1468 y Fk(8.4.6)63 +b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42 +b(Y)-10 b(ou)150 1632 y Ft(complete)28 b(\(TAB\))630 +1741 y Fu(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g +(b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630 +1851 y(p)s(erformed)33 b(is)h(application-sp)s(eci\014c.)53 +b(Bash)35 b(attempts)g(completion)g(treating)h(the)e(text)630 +1961 y(as)39 b(a)h(v)-5 b(ariable)39 b(\(if)h(the)f(text)h(b)s(egins)e +(with)h(`)p Ft($)p Fu('\),)j(username)c(\(if)i(the)f(text)h(b)s(egins)e +(with)630 2070 y(`)p Ft(~)p Fu('\),)31 b(hostname)f(\(if)g(the)g(text)h +(b)s(egins)e(with)h(`)p Ft(@)p Fu('\),)h(or)f(command)f(\(including)h +(aliases)i(and)630 2180 y(functions\))j(in)f(turn.)53 b(If)34 b(none)g(of)h(these)h(pro)s(duces)d(a)i(matc)m(h,)i(\014lename) -e(completion)h(is)630 1430 y(attempted.)150 1584 y Ft -(possible-completions)25 b(\(M-?\))630 1694 y Fu(List)35 +e(completion)h(is)630 2289 y(attempted.)150 2433 y Ft +(possible-completions)25 b(\(M-?\))630 2542 y Fu(List)35 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s(efore)e(p)s -(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 1803 +(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 2652 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i(columns)f (used)f(for)i(displa)m(y)f(to)h(the)g(v)-5 b(alue)33 -b(of)630 1913 y Ft(completion-display-width)o Fu(,)g(the)j(v)-5 +b(of)630 2761 y Ft(completion-display-width)o Fu(,)g(the)j(v)-5 b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)38 -b Ft(COLUMNS)p Fu(,)630 2022 y(or)30 b(the)h(screen)f(width,)g(in)g -(that)h(order.)150 2177 y Ft(insert-completions)25 b(\(M-*\))630 -2286 y Fu(Insert)30 b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f +b Ft(COLUMNS)p Fu(,)630 2871 y(or)30 b(the)h(screen)f(width,)g(in)g +(that)h(order.)150 3014 y Ft(insert-completions)25 b(\(M-*\))630 +3124 y Fu(Insert)30 b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f (p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s(een)e(generated)630 -2396 y(b)m(y)g Ft(possible-completions)p Fu(.)150 2550 -y Ft(menu-complete)d(\(\))630 2660 y Fu(Similar)d(to)g +3233 y(b)m(y)g Ft(possible-completions)p Fu(.)150 3376 +y Ft(menu-complete)d(\(\))630 3486 y Fu(Similar)d(to)g Ft(complete)p Fu(,)f(but)h(replaces)g(the)g(w)m(ord)g(to)g(b)s(e)f -(completed)i(with)e(a)i(single)f(matc)m(h)630 2770 y(from)37 +(completed)i(with)e(a)i(single)f(matc)m(h)630 3596 y(from)37 b(the)h(list)h(of)f(p)s(ossible)f(completions.)64 b(Rep)s(eated)39 -b(execution)g(of)f Ft(menu-complete)630 2879 y Fu(steps)i(through)g +b(execution)g(of)f Ft(menu-complete)630 3705 y Fu(steps)i(through)g (the)g(list)h(of)f(p)s(ossible)g(completions,)k(inserting)c(eac)m(h)i -(matc)m(h)f(in)f(turn.)630 2989 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g +(matc)m(h)f(in)f(turn.)630 3815 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g (of)g(completions,)i(the)e(b)s(ell)g(is)g(rung)f(\(sub)5 -b(ject)36 b(to)i(the)f(setting)630 3098 y(of)f Ft(bell-style)p +b(ject)36 b(to)i(the)f(setting)630 3924 y(of)f Ft(bell-style)p Fu(\))e(and)h(the)h(original)i(text)f(is)f(restored.)57 b(An)36 b(argumen)m(t)h(of)f Fr(n)f Fu(mo)m(v)m(es)i -Fr(n)630 3208 y Fu(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e +Fr(n)630 4034 y Fu(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e (matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f -(used)g(to)630 3318 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g +(used)g(to)630 4143 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g (list.)65 b(This)38 b(command)g(is)g(in)m(tended)g(to)h(b)s(e)f(b)s -(ound)e(to)630 3427 y Ft(TAB)p Fu(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m -(y)i(default.)150 3582 y Ft(menu-complete-backward)24 -b(\(\))630 3691 y Fu(Iden)m(tical)36 b(to)g Ft(menu-complete)p +(ound)e(to)630 4253 y Ft(TAB)p Fu(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m +(y)i(default.)150 4396 y Ft(menu-complete-backward)24 +b(\(\))630 4506 y Fu(Iden)m(tical)36 b(to)g Ft(menu-complete)p Fu(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g -(p)s(ossible)630 3801 y(completions,)d(as)e(if)h Ft(menu-complete)26 +(p)s(ossible)630 4615 y(completions,)d(as)e(if)h Ft(menu-complete)26 b Fu(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150 -3955 y Ft(delete-char-or-list)25 b(\(\))630 4065 y Fu(Deletes)41 +4758 y Ft(delete-char-or-list)25 b(\(\))630 4868 y Fu(Deletes)41 b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s -(eginning)e(or)h(end)f(of)h(the)630 4174 y(line)50 b(\(lik)m(e)h +(eginning)e(or)h(end)f(of)h(the)630 4978 y(line)50 b(\(lik)m(e)h Ft(delete-char)p Fu(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,) -55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 4284 +55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 5087 y Ft(possible-completions)p Fu(.)35 b(This)30 b(command)g(is)g(un)m(b)s -(ound)e(b)m(y)i(default.)150 4438 y Ft(complete-filename)c(\(M-/\))630 -4548 y Fu(A)m(ttempt)32 b(\014lename)e(completion)i(on)e(the)h(text)g -(b)s(efore)f(p)s(oin)m(t.)150 4702 y Ft(possible-filename-comple)o -(tion)o(s)24 b(\(C-x)30 b(/\))630 4812 y Fu(List)f(the)g(p)s(ossible)f -(completions)h(of)g(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)g(treating)h -(it)f(as)g(a)f(\014lename.)150 4966 y Ft(complete-username)e(\(M-~\)) -630 5076 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore) -e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(username.)150 -5230 y Ft(possible-username-comple)o(tion)o(s)24 b(\(C-x)30 -b(~\))630 5340 y Fu(List)25 b(the)g(p)s(ossible)g(completions)h(of)f -(the)g(text)h(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)f(a)g -(username.)p eop end -%%Page: 134 140 -TeXDict begin 134 139 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(134)150 299 y Ft -(complete-variable)26 b(\(M-$\))630 408 y Fu(A)m(ttempt)32 +(ound)e(b)m(y)i(default.)150 5230 y Ft(complete-filename)c(\(M-/\))630 +5340 y Fu(A)m(ttempt)32 b(\014lename)e(completion)i(on)e(the)h(text)g +(b)s(efore)f(p)s(oin)m(t.)p eop end +%%Page: 140 146 +TeXDict begin 140 145 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(140)150 299 y Ft +(possible-filename-comple)o(tion)o(s)24 b(\(C-x)30 b(/\))630 +408 y Fu(List)f(the)g(p)s(ossible)f(completions)h(of)g(the)g(text)g(b)s +(efore)g(p)s(oin)m(t,)g(treating)h(it)f(as)g(a)f(\014lename.)150 +577 y Ft(complete-username)e(\(M-~\))630 687 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)e(p)s(oin)m(t,)g(treating)i -(it)f(as)f(a)h(shell)g(v)-5 b(ariable.)150 589 y Ft -(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30 b($\))630 -699 y Fu(List)42 b(the)g(p)s(ossible)g(completions)h(of)f(the)g(text)h -(b)s(efore)e(p)s(oin)m(t,)46 b(treating)d(it)f(as)g(a)h(shell)630 -809 y(v)-5 b(ariable.)150 989 y Ft(complete-hostname)26 -b(\(M-@\))630 1099 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i +(it)f(as)f(a)h(username.)150 856 y Ft(possible-username-comple)o(tion)o +(s)24 b(\(C-x)30 b(~\))630 965 y Fu(List)25 b(the)g(p)s(ossible)g +(completions)h(of)f(the)g(text)h(b)s(efore)f(p)s(oin)m(t,)h(treating)g +(it)g(as)f(a)g(username.)150 1134 y Ft(complete-variable)h(\(M-$\))630 +1244 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)e(p) +s(oin)m(t,)g(treating)i(it)f(as)f(a)h(shell)g(v)-5 b(ariable.)150 +1412 y Ft(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30 +b($\))630 1522 y Fu(List)42 b(the)g(p)s(ossible)g(completions)h(of)f +(the)g(text)h(b)s(efore)e(p)s(oin)m(t,)46 b(treating)d(it)f(as)g(a)h +(shell)630 1632 y(v)-5 b(ariable.)150 1800 y Ft(complete-hostname)26 +b(\(M-@\))630 1910 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i (b)s(efore)e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(hostname.)150 -1280 y Ft(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30 -b(@\))630 1390 y Fu(List)25 b(the)g(p)s(ossible)f(completions)h(of)g +2079 y Ft(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30 +b(@\))630 2188 y Fu(List)25 b(the)g(p)s(ossible)f(completions)h(of)g (the)g(text)g(b)s(efore)g(p)s(oin)m(t,)h(treating)g(it)f(as)f(a)h -(hostname.)150 1570 y Ft(complete-command)h(\(M-!\))630 -1680 y Fu(A)m(ttempt)32 b(completion)g(on)f(the)g(text)h(b)s(efore)e(p) +(hostname.)150 2357 y Ft(complete-command)h(\(M-!\))630 +2467 y Fu(A)m(ttempt)32 b(completion)g(on)f(the)g(text)h(b)s(efore)e(p) s(oin)m(t,)h(treating)h(it)g(as)f(a)g(command)g(name.)630 -1790 y(Command)46 b(completion)i(attempts)g(to)f(matc)m(h)h(the)f(text) -h(against)g(aliases,)53 b(reserv)m(ed)630 1899 y(w)m(ords,)36 +2576 y(Command)46 b(completion)i(attempts)g(to)f(matc)m(h)h(the)f(text) +h(against)g(aliases,)53 b(reserv)m(ed)630 2686 y(w)m(ords,)36 b(shell)g(functions,)h(shell)e(builtins,)i(and)e(\014nally)g -(executable)i(\014lenames,)g(in)e(that)630 2009 y(order.)150 -2190 y Ft(possible-command-complet)o(ions)24 b(\(C-x)29 -b(!\))630 2299 y Fu(List)d(the)h(p)s(ossible)f(completions)h(of)f(the)h +(executable)i(\014lenames,)g(in)e(that)630 2796 y(order.)150 +2964 y Ft(possible-command-complet)o(ions)24 b(\(C-x)29 +b(!\))630 3074 y Fu(List)d(the)h(p)s(ossible)f(completions)h(of)f(the)h (text)g(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)g(a)f(command)630 -2409 y(name.)150 2590 y Ft(dynamic-complete-history)e(\(M-TAB\))630 -2699 y Fu(A)m(ttempt)31 b(completion)h(on)e(the)g(text)h(b)s(efore)f(p) +3184 y(name.)150 3352 y Ft(dynamic-complete-history)e(\(M-TAB\))630 +3462 y Fu(A)m(ttempt)31 b(completion)h(on)e(the)g(text)h(b)s(efore)f(p) s(oin)m(t,)g(comparing)h(the)f(text)h(against)h(lines)630 -2809 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i -(matc)m(hes.)150 2990 y Ft(dabbrev-expand)26 b(\(\))630 -3099 y Fu(A)m(ttempt)i(men)m(u)e(completion)i(on)f(the)g(text)g(b)s +3572 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i +(matc)m(hes.)150 3740 y Ft(dabbrev-expand)26 b(\(\))630 +3850 y Fu(A)m(ttempt)i(men)m(u)e(completion)i(on)f(the)g(text)g(b)s (efore)f(p)s(oin)m(t,)i(comparing)f(the)g(text)h(against)630 -3209 y(lines)j(from)e(the)i(history)f(list)h(for)g(p)s(ossible)e -(completion)j(matc)m(hes.)150 3390 y Ft(complete-into-braces)25 -b(\(M-{\))630 3500 y Fu(P)m(erform)f(\014lename)f(completion)i(and)f +3960 y(lines)j(from)e(the)i(history)f(list)h(for)g(p)s(ossible)e +(completion)j(matc)m(hes.)150 4128 y Ft(complete-into-braces)25 +b(\(M-{\))630 4238 y Fu(P)m(erform)f(\014lename)f(completion)i(and)f (insert)f(the)h(list)g(of)g(p)s(ossible)f(completions)i(enclosed)630 -3609 y(within)34 b(braces)h(so)f(the)h(list)g(is)g(a)m(v)-5 +4348 y(within)34 b(braces)h(so)f(the)h(list)g(is)g(a)m(v)-5 b(ailable)37 b(to)e(the)g(shell)g(\(see)g(Section)h(3.5.1)g([Brace)g -(Ex-)630 3719 y(pansion],)30 b(page)h(23\).)150 3939 -y Fk(8.4.7)63 b(Keyb)s(oard)41 b(Macros)150 4122 y Ft(start-kbd-macro) -26 b(\(C-x)j(\(\))630 4232 y Fu(Begin)i(sa)m(ving)h(the)e(c)m +(Ex-)630 4457 y(pansion],)30 b(page)h(24\).)150 4666 +y Fk(8.4.7)63 b(Keyb)s(oard)41 b(Macros)150 4842 y Ft(start-kbd-macro) +26 b(\(C-x)j(\(\))630 4952 y Fu(Begin)i(sa)m(ving)h(the)e(c)m (haracters)i(t)m(yp)s(ed)e(in)m(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard) -g(macro.)150 4413 y Ft(end-kbd-macro)d(\(C-x)i(\)\))630 -4522 y Fu(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m +g(macro.)150 5121 y Ft(end-kbd-macro)d(\(C-x)i(\)\))630 +5230 y Fu(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m (to)i(the)e(curren)m(t)g(k)m(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i -(the)630 4632 y(de\014nition.)150 4813 y Ft(call-last-kbd-macro)c -(\(C-x)k(e\))630 4922 y Fu(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard) -f(macro)h(de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the) -630 5032 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m -(eyb)s(oard.)150 5213 y Ft(print-last-kbd-macro)25 b(\(\))630 -5322 y Fu(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned) -e(in)i(a)f(format)h(suitable)g(for)f(the)h Fr(inputrc)k -Fu(\014le.)p eop end -%%Page: 135 141 -TeXDict begin 135 140 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(135)150 299 y Fk(8.4.8)63 -b(Some)41 b(Miscellaneous)i(Commands)150 478 y Ft(re-read-init-file)26 -b(\(C-x)j(C-r\))630 587 y Fu(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f -(the)g Fr(inputrc)27 b Fu(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h -(bindings)d(or)i(v)-5 b(ariable)630 697 y(assignmen)m(ts)31 -b(found)e(there.)150 870 y Ft(abort)g(\(C-g\))630 979 -y Fu(Ab)s(ort)d(the)h(curren)m(t)f(editing)h(command)f(and)g(ring)h -(the)f(terminal's)h(b)s(ell)g(\(sub)5 b(ject)26 b(to)i(the)630 -1089 y(setting)j(of)g Ft(bell-style)p Fu(\).)150 1262 -y Ft(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p Fj(x)p -Ft(,)g(...)o(\))630 1372 y Fu(If)35 b(the)g(meta\014ed)g(c)m(haracter)i -Fr(x)k Fu(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g(that)g(is)g -(b)s(ound)e(to)630 1481 y(the)g(corresp)s(onding)f(meta\014ed)h(lo)m(w) -m(er)i(case)f(c)m(haracter.)50 b(The)32 b(b)s(eha)m(vior)h(is)g -(unde\014ned)e(if)630 1591 y Fr(x)37 b Fu(is)30 b(already)h(lo)m(w)m -(er)h(case.)150 1764 y Ft(prefix-meta)27 b(\(ESC\))630 -1873 y Fu(Metafy)39 b(the)e(next)h(c)m(haracter)h(t)m(yp)s(ed.)62 -b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f(without)g(a)h(meta)g(k)m(ey)-8 -b(.)630 1983 y(T)m(yping)30 b(`)p Ft(ESC)g(f)p Fu(')g(is)h(equiv)-5 -b(alen)m(t)31 b(to)g(t)m(yping)g Fj(M-f)p Fu(.)150 2156 -y Ft(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 2266 y Fu(Incremen)m(tal)h -(undo,)f(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150 -2439 y Ft(revert-line)27 b(\(M-r\))630 2548 y Fu(Undo)33 -b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 b(This)32 -b(is)h(lik)m(e)i(executing)f(the)f Ft(undo)f Fu(command)630 -2658 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.) -150 2831 y Ft(tilde-expand)d(\(M-&\))630 2940 y Fu(P)m(erform)j(tilde)h -(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 3114 -y Ft(set-mark)d(\(C-@\))630 3223 y Fu(Set)33 b(the)g(mark)f(to)i(the)f -(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g -(supplied,)f(the)h(mark)g(is)f(set)630 3333 y(to)f(that)g(p)s(osition.) -150 3506 y Ft(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630 -3615 y Fu(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43 -b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f(set)h(to)f(the)h -(sa)m(v)m(ed)630 3725 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s -(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 3898 -y Ft(character-search)26 b(\(C-]\))630 4008 y Fu(A)f(c)m(haracter)h(is) -f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g(o)s -(ccurrence)g(of)g(that)g(c)m(haracter.)630 4117 y(A)30 -b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s -(ccurrences.)150 4290 y Ft(character-search-backwar)o(d)24 -b(\(M-C-]\))630 4400 y Fu(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s +(the)630 5340 y(de\014nition.)p eop end +%%Page: 141 147 +TeXDict begin 141 146 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(141)150 299 y Ft +(call-last-kbd-macro)25 b(\(C-x)k(e\))630 408 y Fu(Re-execute)37 +b(the)e(last)h(k)m(eyb)s(oard)f(macro)h(de\014ned,)f(b)m(y)h(making)f +(the)g(c)m(haracters)i(in)e(the)630 518 y(macro)c(app)s(ear)f(as)g(if)h +(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s(oard.)150 671 y Ft +(print-last-kbd-macro)25 b(\(\))630 780 y Fu(Prin)m(t)30 +b(the)g(last)h(k)m(eyb)s(oard)f(macro)h(de\014ned)e(in)h(a)g(format)h +(suitable)g(for)f(the)g Fr(inputrc)35 b Fu(\014le.)150 +973 y Fk(8.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)150 +1141 y Ft(re-read-init-file)26 b(\(C-x)j(C-r\))630 1251 +y Fu(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g +Fr(inputrc)27 b Fu(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d +(or)i(v)-5 b(ariable)630 1360 y(assignmen)m(ts)31 b(found)e(there.)150 +1513 y Ft(abort)g(\(C-g\))630 1622 y Fu(Ab)s(ort)d(the)h(curren)m(t)f +(editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5 +b(ject)26 b(to)i(the)630 1732 y(setting)j(of)g Ft(bell-style)p +Fu(\).)150 1885 y Ft(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p +Fj(x)p Ft(,)g(...)o(\))630 1994 y Fu(If)35 b(the)g(meta\014ed)g(c)m +(haracter)i Fr(x)k Fu(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g +(that)g(is)g(b)s(ound)e(to)630 2104 y(the)g(corresp)s(onding)f +(meta\014ed)h(lo)m(w)m(er)i(case)f(c)m(haracter.)50 b(The)32 +b(b)s(eha)m(vior)h(is)g(unde\014ned)e(if)630 2213 y Fr(x)37 +b Fu(is)30 b(already)h(lo)m(w)m(er)h(case.)150 2366 y +Ft(prefix-meta)27 b(\(ESC\))630 2476 y Fu(Metafy)39 b(the)e(next)h(c)m +(haracter)h(t)m(yp)s(ed.)62 b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f +(without)g(a)h(meta)g(k)m(ey)-8 b(.)630 2585 y(T)m(yping)30 +b(`)p Ft(ESC)g(f)p Fu(')g(is)h(equiv)-5 b(alen)m(t)31 +b(to)g(t)m(yping)g Fj(M-f)p Fu(.)150 2738 y Ft(undo)e(\(C-_)g(or)h(C-x) +g(C-u\))630 2847 y Fu(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s +(ered)f(for)g(eac)m(h)i(line.)150 3000 y Ft(revert-line)27 +b(\(M-r\))630 3109 y Fu(Undo)33 b(all)h(c)m(hanges)g(made)f(to)h(this)f +(line.)49 b(This)32 b(is)h(lik)m(e)i(executing)f(the)f +Ft(undo)f Fu(command)630 3219 y(enough)e(times)h(to)g(get)h(bac)m(k)f +(to)g(the)f(b)s(eginning.)150 3372 y Ft(tilde-expand)d(\(M-&\))630 +3481 y Fu(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m +(ord.)150 3634 y Ft(set-mark)d(\(C-@\))630 3743 y Fu(Set)33 +b(the)g(mark)f(to)i(the)f(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g +(argumen)m(t)g(is)g(supplied,)f(the)h(mark)g(is)f(set)630 +3853 y(to)f(that)g(p)s(osition.)150 4006 y Ft(exchange-point-and-mark) +24 b(\(C-x)29 b(C-x\))630 4115 y Fu(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with) +g(the)g(mark.)43 b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f +(set)h(to)f(the)h(sa)m(v)m(ed)630 4225 y(p)s(osition,)f(and)e(the)i +(old)g(cursor)e(p)s(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 +4377 y Ft(character-search)26 b(\(C-]\))630 4487 y Fu(A)f(c)m(haracter) +h(is)f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g +(o)s(ccurrence)g(of)g(that)g(c)m(haracter.)630 4596 y(A)30 +b(negativ)m(e)j(argumen)m(t)e(searc)m(hes)g(for)f(previous)g(o)s +(ccurrences.)150 4749 y Ft(character-search-backwar)o(d)24 +b(\(M-C-]\))630 4859 y Fu(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s (oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of) -g(that)630 4509 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f -(searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)150 -4682 y Ft(skip-csi-sequence)d(\(\))630 4792 y Fu(Read)i(enough)f(c)m +g(that)630 4968 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(argumen)m(t)f +(searc)m(hes)g(for)g(subsequen)m(t)e(o)s(ccurrences.)150 +5121 y Ft(skip-csi-sequence)d(\(\))630 5230 y Fu(Read)i(enough)f(c)m (haracters)h(to)g(consume)f(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f -(as)g(those)h(de\014ned)630 4902 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g +(as)g(those)h(de\014ned)630 5340 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g (and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m -(trol)g(Sequence)630 5011 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59 -b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Ft("\\)p -Fu(e[)p Ft(")p Fu(,)g(k)m(eys)f(pro-)630 5121 y(ducing)31 -b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e -(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 5230 y(command,)f -(instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f -(editing)h(bu\013er.)44 b(This)31 b(is)630 5340 y(un)m(b)s(ound)d(b)m -(y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)p -eop end -%%Page: 136 142 -TeXDict begin 136 141 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(136)150 299 y Ft(insert-comment)26 -b(\(M-#\))630 408 y Fu(Without)36 b(a)g(n)m(umeric)g(argumen)m(t,)h -(the)f(v)-5 b(alue)36 b(of)g(the)g Ft(comment-begin)c -Fu(v)-5 b(ariable)36 b(is)g(in-)630 518 y(serted)c(at)g(the)g(b)s -(eginning)f(of)h(the)f(curren)m(t)h(line.)45 b(If)31 -b(a)h(n)m(umeric)f(argumen)m(t)h(is)g(supplied,)630 628 -y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 b(if)37 -b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g(line)630 -737 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 b(alue)31 b(of)f -Ft(comment-begin)p Fu(,)e(the)i(v)-5 b(alue)31 b(is)g(inserted,)g -(otherwise)g(the)630 847 y(c)m(haracters)42 b(in)d Ft(comment-begin)e -Fu(are)j(deleted)h(from)f(the)g(b)s(eginning)g(of)g(the)g(line.)71 -b(In)630 956 y(either)37 b(case,)j(the)e(line)f(is)g(accepted)i(as)e -(if)g(a)g(newline)g(had)g(b)s(een)f(t)m(yp)s(ed.)60 b(The)37 -b(default)630 1066 y(v)-5 b(alue)32 b(of)g Ft(comment-begin)c -Fu(causes)k(this)f(command)h(to)g(mak)m(e)h(the)e(curren)m(t)h(line)g -(a)g(shell)630 1176 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f -(argumen)m(t)h(causes)g(the)f(commen)m(t)i(c)m(haracter)g(to)f(b)s(e)f -(remo)m(v)m(ed,)630 1285 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b) -m(y)f(the)h(shell.)150 1443 y Ft(dump-functions)26 b(\(\))630 -1553 y Fu(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g(their)g(k)m(ey) -h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630 -1663 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h +(trol)g(Sequence)p eop end +%%Page: 142 148 +TeXDict begin 142 147 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(142)630 299 y(Indicator)37 +b(\(CSI\),)f(usually)h(ESC-[.)59 b(If)36 b(this)g(sequence)h(is)g(b)s +(ound)d(to)k Ft("\\)p Fu(e[)p Ft(")p Fu(,)g(k)m(eys)f(pro-)630 +408 y(ducing)29 b(suc)m(h)g(sequences)g(will)h(ha)m(v)m(e)h(no)e +(e\013ect)i(unless)d(explicitly)j(b)s(ound)d(to)i(a)f(Readline)630 +518 y(command,)j(instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g +(in)m(to)g(the)f(editing)h(bu\013er.)44 b(This)31 b(is)630 +628 y(un)m(b)s(ound)d(b)m(y)i(default,)h(but)f(usually)g(b)s(ound)e(to) +j(ESC-[.)150 792 y Ft(insert-comment)26 b(\(M-#\))630 +902 y Fu(Without)36 b(a)g(n)m(umeric)g(argumen)m(t,)h(the)f(v)-5 +b(alue)36 b(of)g(the)g Ft(comment-begin)c Fu(v)-5 b(ariable)36 +b(is)g(in-)630 1011 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f +(curren)m(t)h(line.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g +(supplied,)630 1121 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 +b(if)37 b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g +(line)630 1230 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 +b(alue)31 b(of)f Ft(comment-begin)p Fu(,)e(the)i(v)-5 +b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 1340 +y(c)m(haracters)42 b(in)d Ft(comment-begin)e Fu(are)j(deleted)h(from)f +(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 1450 +y(either)37 b(case,)j(the)e(line)f(is)g(accepted)i(as)e(if)g(a)g +(newline)g(had)g(b)s(een)f(t)m(yp)s(ed.)60 b(The)37 b(default)630 +1559 y(v)-5 b(alue)32 b(of)g Ft(comment-begin)c Fu(causes)k(this)f +(command)h(to)g(mak)m(e)h(the)e(curren)m(t)h(line)g(a)g(shell)630 +1669 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f(argumen)m(t)h(causes)g +(the)f(commen)m(t)i(c)m(haracter)g(to)f(b)s(e)f(remo)m(v)m(ed,)630 +1778 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b)m(y)f(the)h(shell.) +150 1943 y Ft(dump-functions)26 b(\(\))630 2052 y Fu(Prin)m(t)g(all)i +(of)e(the)h(functions)f(and)g(their)g(k)m(ey)h(bindings)e(to)j(the)e +(Readline)h(output)f(stream.)630 2162 y(If)31 b(a)h(n)m(umeric)g +(argumen)m(t)g(is)g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f +(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 2271 y(it)f(can)g(b)s(e)e(made)i +(part)f(of)g(an)h Fr(inputrc)k Fu(\014le.)41 b(This)29 +b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k(default.)150 +2436 y Ft(dump-variables)26 b(\(\))630 2545 y Fu(Prin)m(t)21 +b(all)h(of)g(the)f(settable)i(v)-5 b(ariables)22 b(and)f(their)g(v)-5 +b(alues)22 b(to)g(the)f(Readline)h(output)f(stream.)630 +2655 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h (output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 -1772 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fr(inputrc)k +2765 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fr(inputrc)k Fu(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k -(default.)150 1931 y Ft(dump-variables)26 b(\(\))630 -2040 y Fu(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5 -b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h -(output)f(stream.)630 2150 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is) -g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a) -m(y)g(that)630 2259 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h -Fr(inputrc)k Fu(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c -(b)m(y)k(default.)150 2418 y Ft(dump-macros)c(\(\))630 -2527 y Fu(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences) -f(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630 -2637 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e +(default.)150 2929 y Ft(dump-macros)c(\(\))630 3039 y +Fu(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences)f(b)s +(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630 +3148 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e (supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630 -2746 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e +3258 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e Fr(inputrc)35 b Fu(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound) -d(b)m(y)630 2856 y(default.)150 3014 y Ft(glob-complete-word)e(\(M-g\)) -630 3124 y Fu(The)i(w)m(ord)h(b)s(efore)f(p)s(oin)m(t)h(is)g(treated)h -(as)f(a)h(pattern)f(for)f(pathname)h(expansion,)g(with)g(an)630 -3233 y(asterisk)d(implicitly)h(app)s(ended.)37 b(This)23 +d(b)m(y)630 3367 y(default.)150 3532 y Ft(spell-correct-word)e(\(C-x)30 +b(s\))630 3641 y Fu(P)m(erform)36 b(sp)s(elling)h(correction)h(on)e +(the)h(curren)m(t)f(w)m(ord,)i(treating)f(it)g(as)g(a)g(directory)g(or) +630 3751 y(\014lename,)g(in)e(the)h(same)f(w)m(a)m(y)i(as)e(the)h +Ft(cdspell)d Fu(shell)j(option.)56 b(W)-8 b(ord)36 b(b)s(oundaries)e +(are)630 3861 y(the)d(same)f(as)h(those)g(used)e(b)m(y)i +Ft(shell-forward-word)p Fu(.)150 4025 y Ft(glob-complete-word)25 +b(\(M-g\))630 4134 y Fu(The)i(w)m(ord)h(b)s(efore)f(p)s(oin)m(t)h(is)g +(treated)h(as)f(a)h(pattern)f(for)f(pathname)h(expansion,)g(with)g(an) +630 4244 y(asterisk)d(implicitly)h(app)s(ended.)37 b(This)23 b(pattern)i(is)f(used)g(to)h(generate)h(a)e(list)h(of)g(matc)m(hing)630 -3343 y(\014le)30 b(names)h(for)f(p)s(ossible)g(completions.)150 -3501 y Ft(glob-expand-word)c(\(C-x)j(*\))630 3611 y Fu(The)40 +4354 y(\014le)30 b(names)h(for)f(p)s(ossible)g(completions.)150 +4518 y Ft(glob-expand-word)c(\(C-x)j(*\))630 4628 y Fu(The)40 b(w)m(ord)g(b)s(efore)g(p)s(oin)m(t)h(is)g(treated)g(as)g(a)g(pattern)g -(for)f(pathname)g(expansion,)k(and)630 3720 y(the)c(list)g(of)f(matc)m +(for)f(pathname)g(expansion,)k(and)630 4737 y(the)c(list)g(of)f(matc)m (hing)i(\014le)e(names)g(is)h(inserted,)h(replacing)g(the)e(w)m(ord.)67 -b(If)39 b(a)h(n)m(umeric)630 3830 y(argumen)m(t)31 b(is)f(supplied,)g +b(If)39 b(a)h(n)m(umeric)630 4847 y(argumen)m(t)31 b(is)f(supplied,)g (a)g(`)p Ft(*)p Fu(')h(is)f(app)s(ended)f(b)s(efore)h(pathname)g -(expansion.)150 3988 y Ft(glob-list-expansions)25 b(\(C-x)k(g\))630 -4098 y Fu(The)k(list)h(of)f(expansions)g(that)h(w)m(ould)f(ha)m(v)m(e)h +(expansion.)150 5011 y Ft(glob-list-expansions)25 b(\(C-x)k(g\))630 +5121 y Fu(The)k(list)h(of)f(expansions)g(that)h(w)m(ould)f(ha)m(v)m(e)h (b)s(een)f(generated)h(b)m(y)f Ft(glob-expand-word)630 -4208 y Fu(is)h(displa)m(y)m(ed,)h(and)e(the)h(line)g(is)f(redra)m(wn.) +5230 y Fu(is)h(displa)m(y)m(ed,)h(and)e(the)h(line)g(is)f(redra)m(wn.) 50 b(If)33 b(a)h(n)m(umeric)g(argumen)m(t)g(is)f(supplied,)h(a)g(`)p -Ft(*)p Fu(')630 4317 y(is)c(app)s(ended)f(b)s(efore)h(pathname)g -(expansion.)150 4475 y Ft(display-shell-version)25 b(\(C-x)k(C-v\))630 -4585 y Fu(Displa)m(y)j(v)m(ersion)e(information)h(ab)s(out)f(the)h -(curren)m(t)f(instance)h(of)f(Bash.)150 4743 y Ft(shell-expand-line)c -(\(M-C-e\))630 4853 y Fu(Expand)34 b(the)h(line)h(as)g(the)f(shell)h -(do)s(es.)55 b(This)34 b(p)s(erforms)g(alias)i(and)f(history)g -(expansion)630 4963 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m -(ord)f(expansions)g(\(see)i(Section)f(3.5)h([Shell)e(Expansions],)630 -5072 y(page)e(22\).)150 5230 y Ft(history-expand-line)25 -b(\(M-^\))630 5340 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the) -h(curren)m(t)f(line.)p eop end -%%Page: 137 143 -TeXDict begin 137 142 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(137)150 299 y Ft(magic-space)27 -b(\(\))630 408 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g -(curren)m(t)g(line)g(and)g(insert)g(a)g(space)h(\(see)g(Section)g(9.3) -630 518 y([History)31 b(In)m(teraction],)i(page)e(148\).)150 -663 y Ft(alias-expand-line)26 b(\(\))630 773 y Fu(P)m(erform)i(alias)i -(expansion)e(on)g(the)h(curren)m(t)f(line)h(\(see)g(Section)g(6.6)h -([Aliases],)g(page)f(94\).)150 918 y Ft(history-and-alias-expand)o -(-lin)o(e)24 b(\(\))630 1028 y Fu(P)m(erform)30 b(history)h(and)e -(alias)j(expansion)e(on)g(the)h(curren)m(t)f(line.)150 -1173 y Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630 -1283 y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150 -1428 y Ft(edit-and-execute-command)24 b(\(C-x)29 b(C-e\))630 -1538 y Fu(In)m(v)m(ok)m(e)34 b(an)f(editor)g(on)g(the)g(curren)m(t)f +Ft(*)p Fu(')630 5340 y(is)c(app)s(ended)f(b)s(efore)h(pathname)g +(expansion.)p eop end +%%Page: 143 149 +TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(143)150 299 y Ft +(display-shell-version)25 b(\(C-x)k(C-v\))630 408 y Fu(Displa)m(y)j(v)m +(ersion)e(information)h(ab)s(out)f(the)h(curren)m(t)f(instance)h(of)f +(Bash.)150 566 y Ft(shell-expand-line)c(\(M-C-e\))630 +676 y Fu(Expand)34 b(the)h(line)h(as)g(the)f(shell)h(do)s(es.)55 +b(This)34 b(p)s(erforms)g(alias)i(and)f(history)g(expansion)630 +785 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m(ord)f +(expansions)g(\(see)i(Section)f(3.5)h([Shell)e(Expansions],)630 +895 y(page)e(24\).)150 1053 y Ft(history-expand-line)25 +b(\(M-^\))630 1162 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the) +h(curren)m(t)f(line.)150 1320 y Ft(magic-space)d(\(\))630 +1429 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g(curren)m(t)g +(line)g(and)g(insert)g(a)g(space)h(\(see)g(Section)g(9.3)630 +1539 y([History)31 b(In)m(teraction],)i(page)e(154\).)150 +1697 y Ft(alias-expand-line)26 b(\(\))630 1806 y Fu(P)m(erform)e(alias) +i(expansion)e(on)h(the)g(curren)m(t)f(line)h(\(see)g(Section)h(6.6)f +([Aliases],)j(page)d(100\).)150 1964 y Ft(history-and-alias-expand)o +(-lin)o(e)f(\(\))630 2073 y Fu(P)m(erform)30 b(history)h(and)e(alias)j +(expansion)e(on)g(the)h(curren)m(t)f(line.)150 2231 y +Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630 2341 +y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150 +2498 y Ft(edit-and-execute-command)24 b(\(C-x)29 b(C-e\))630 +2608 y Fu(In)m(v)m(ok)m(e)34 b(an)f(editor)g(on)g(the)g(curren)m(t)f (command)h(line,)h(and)e(execute)i(the)f(result)g(as)g(shell)630 -1647 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h +2718 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h Ft($VISUAL)p Fu(,)f Ft($EDITOR)p Fu(,)h(and)d Ft(emacs)g -Fu(as)h(the)630 1757 y(editor,)31 b(in)f(that)h(order.)150 -1983 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 2143 +Fu(as)h(the)630 2827 y(editor,)31 b(in)f(that)h(order.)150 +3066 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 3226 y Fu(While)32 b(the)g(Readline)g(library)f(do)s(es)g(not)h(ha)m(v)m(e)h (a)f(full)f(set)h(of)g Ft(vi)f Fu(editing)h(functions,)f(it)h(do)s(es)g -(con)m(tain)150 2252 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f +(con)m(tain)150 3335 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f (the)g(line.)52 b(The)34 b(Readline)g Ft(vi)g Fu(mo)s(de)f(b)s(eha)m(v) -m(es)i(as)f(sp)s(eci\014ed)f(in)150 2362 y(the)e Fm(posix)e -Fu(standard.)275 2489 y(In)35 b(order)g(to)i(switc)m(h)f(in)m(teractiv) +m(es)i(as)f(sp)s(eci\014ed)f(in)150 3445 y(the)e Fm(posix)e +Fu(standard.)275 3578 y(In)35 b(order)g(to)i(switc)m(h)f(in)m(teractiv) m(ely)j(b)s(et)m(w)m(een)d Ft(emacs)f Fu(and)g Ft(vi)g Fu(editing)h(mo)s(des,)h(use)f(the)g(`)p Ft(set)30 b(-o)150 -2599 y(emacs)p Fu(')43 b(and)h(`)p Ft(set)30 b(-o)f(vi)p +3688 y(emacs)p Fu(')43 b(and)h(`)p Ft(set)30 b(-o)f(vi)p Fu(')44 b(commands)g(\(see)i(Section)f(4.3.1)h([The)e(Set)h(Builtin],)j -(page)e(62\).)83 b(The)150 2709 y(Readline)31 b(default)g(is)f -Ft(emacs)f Fu(mo)s(de.)275 2836 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f +(page)e(67\).)83 b(The)150 3798 y(Readline)31 b(default)g(is)f +Ft(emacs)f Fu(mo)s(de.)275 3931 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f (in)g Ft(vi)f Fu(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g -(`insertion')g(mo)s(de,)g(as)h(if)f(y)m(ou)150 2946 y(had)f(t)m(yp)s +(`insertion')g(mo)s(de,)g(as)h(if)f(y)m(ou)150 4041 y(had)f(t)m(yp)s (ed)g(an)g(`)p Ft(i)p Fu('.)41 b(Pressing)29 b Ft(ESC)f Fu(switc)m(hes)i(y)m(ou)g(in)m(to)h(`command')e(mo)s(de,)h(where)e(y)m -(ou)i(can)g(edit)g(the)150 3055 y(text)35 b(of)f(the)g(line)g(with)f +(ou)i(can)g(edit)g(the)150 4150 y(text)35 b(of)f(the)g(line)g(with)f (the)h(standard)f Ft(vi)g Fu(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e) -f(to)f(previous)g(history)f(lines)h(with)150 3165 y(`)p +f(to)f(previous)g(history)f(lines)h(with)150 4260 y(`)p Ft(k)p Fu(')d(and)e(subsequen)m(t)h(lines)h(with)f(`)p -Ft(j)p Fu(',)g(and)g(so)h(forth.)150 3391 y Fs(8.6)68 -b(Programmable)47 b(Completion)150 3551 y Fu(When)25 +Ft(j)p Fu(',)g(and)g(so)h(forth.)150 4499 y Fs(8.6)68 +b(Programmable)47 b(Completion)150 4658 y Fu(When)25 b(w)m(ord)g(completion)i(is)f(attempted)g(for)g(an)f(argumen)m(t)h(to)g -(a)g(command)f(for)h(whic)m(h)f(a)h(completion)150 3660 +(a)g(command)f(for)h(whic)m(h)f(a)h(completion)150 4768 y(sp)s(eci\014cation)40 b(\(a)h Fr(compsp)s(ec)6 b Fu(\))39 b(has)h(b)s(een)f(de\014ned)f(using)h(the)h Ft(complete)d -Fu(builtin)j(\(see)g(Section)h(8.7)150 3770 y([Programmable)h -(Completion)f(Builtins],)k(page)d(139\),)j(the)c(programmable)g -(completion)i(facilities)150 3880 y(are)31 b(in)m(v)m(ok)m(ed.)275 -4007 y(First,)23 b(the)e(command)g(name)g(is)h(iden)m(ti\014ed.)37 +Fu(builtin)j(\(see)g(Section)h(8.7)150 4878 y([Programmable)h +(Completion)f(Builtins],)k(page)d(146\),)j(the)c(programmable)g +(completion)i(facilities)150 4987 y(are)31 b(in)m(v)m(ok)m(ed.)275 +5121 y(First,)23 b(the)e(command)g(name)g(is)h(iden)m(ti\014ed.)37 b(If)21 b(a)g(compsp)s(ec)g(has)g(b)s(een)f(de\014ned)g(for)h(that)h -(command,)150 4117 y(the)44 b(compsp)s(ec)g(is)g(used)f(to)h(generate)i +(command,)150 5230 y(the)44 b(compsp)s(ec)g(is)g(used)f(to)h(generate)i (the)e(list)g(of)g(p)s(ossible)g(completions)h(for)e(the)h(w)m(ord.)81 -b(If)44 b(the)150 4226 y(command)36 b(w)m(ord)g(is)g(the)g(empt)m(y)h +b(If)44 b(the)150 5340 y(command)36 b(w)m(ord)g(is)g(the)g(empt)m(y)h (string)f(\(completion)i(attempted)f(at)g(the)g(b)s(eginning)e(of)h(an) -h(empt)m(y)150 4336 y(line\),)30 b(an)m(y)g(compsp)s(ec)f(de\014ned)f -(with)h(the)h Ft(-E)e Fu(option)i(to)g Ft(complete)d -Fu(is)i(used.)40 b(If)29 b(the)g(command)g(w)m(ord)150 -4445 y(is)e(a)h(full)e(pathname,)i(a)g(compsp)s(ec)e(for)h(the)g(full)g -(pathname)g(is)g(searc)m(hed)h(for)f(\014rst.)39 b(If)26 -b(no)h(compsp)s(ec)g(is)150 4555 y(found)22 b(for)g(the)h(full)g -(pathname,)h(an)f(attempt)h(is)f(made)g(to)g(\014nd)f(a)h(compsp)s(ec)f -(for)h(the)g(p)s(ortion)f(follo)m(wing)150 4665 y(the)34 -b(\014nal)g(slash.)53 b(If)34 b(those)g(searc)m(hes)i(do)e(not)g -(result)h(in)f(a)g(compsp)s(ec,)h(an)m(y)g(compsp)s(ec)f(de\014ned)f -(with)150 4774 y(the)k Ft(-D)g Fu(option)g(to)h Ft(complete)d -Fu(is)i(used)g(as)g(the)g(default.)61 b(If)37 b(there)g(is)h(no)f -(default)g(compsp)s(ec,)i(Bash)150 4884 y(attempts)e(alias)h(expansion) -e(on)g(the)h(command)f(w)m(ord)g(as)h(a)f(\014nal)g(resort,)j(and)c -(attempts)j(to)f(\014nd)e(a)150 4993 y(compsp)s(ec)30 -b(for)g(the)h(command)f(w)m(ord)g(from)g(an)m(y)h(successful)f -(expansion)275 5121 y(Once)k(a)g(compsp)s(ec)g(has)g(b)s(een)f(found,)h -(it)h(is)f(used)f(to)i(generate)h(the)e(list)h(of)f(matc)m(hing)h(w)m -(ords.)51 b(If)150 5230 y(a)37 b(compsp)s(ec)f(is)g(not)h(found,)f(the) -h(default)f(Bash)h(completion)g(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f -(Section)g(8.4.6)150 5340 y([Commands)30 b(F)-8 b(or)31 -b(Completion],)g(page)g(133\))h(is)f(p)s(erformed.)p -eop end -%%Page: 138 144 -TeXDict begin 138 143 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(138)275 299 y(First,)31 -b(the)g(actions)g(sp)s(eci\014ed)f(b)m(y)h(the)f(compsp)s(ec)h(are)g -(used.)40 b(Only)30 b(matc)m(hes)i(whic)m(h)e(are)h(pre\014xed)150 -408 y(b)m(y)h(the)f(w)m(ord)h(b)s(eing)f(completed)h(are)g(returned.)44 -b(When)31 b(the)h Ft(-f)f Fu(or)h Ft(-d)f Fu(option)h(is)f(used)g(for)h -(\014lename)150 518 y(or)e(directory)h(name)f(completion,)i(the)e -(shell)h(v)-5 b(ariable)31 b Ft(FIGNORE)d Fu(is)i(used)f(to)i(\014lter) -g(the)f(matc)m(hes.)42 b(See)150 628 y(Section)31 b(5.2)h([Bash)e(V)-8 -b(ariables],)33 b(page)e(73,)g(for)f(a)h(description)g(of)f -Ft(FIGNORE)p Fu(.)275 769 y(An)m(y)22 b(completions)h(sp)s(eci\014ed)f +h(empt)m(y)p eop end +%%Page: 144 150 +TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(144)150 299 y(line\),)30 +b(an)m(y)g(compsp)s(ec)f(de\014ned)f(with)h(the)h Ft(-E)e +Fu(option)i(to)g Ft(complete)d Fu(is)i(used.)40 b(If)29 +b(the)g(command)g(w)m(ord)150 408 y(is)e(a)h(full)e(pathname,)i(a)g +(compsp)s(ec)e(for)h(the)g(full)g(pathname)g(is)g(searc)m(hed)h(for)f +(\014rst.)39 b(If)26 b(no)h(compsp)s(ec)g(is)150 518 +y(found)22 b(for)g(the)h(full)g(pathname,)h(an)f(attempt)h(is)f(made)g +(to)g(\014nd)f(a)h(compsp)s(ec)f(for)h(the)g(p)s(ortion)f(follo)m(wing) +150 628 y(the)34 b(\014nal)g(slash.)53 b(If)34 b(those)g(searc)m(hes)i +(do)e(not)g(result)h(in)f(a)g(compsp)s(ec,)h(an)m(y)g(compsp)s(ec)f +(de\014ned)f(with)150 737 y(the)k Ft(-D)g Fu(option)g(to)h +Ft(complete)d Fu(is)i(used)g(as)g(the)g(default.)61 b(If)37 +b(there)g(is)h(no)f(default)g(compsp)s(ec,)i(Bash)150 +847 y(attempts)e(alias)h(expansion)e(on)g(the)h(command)f(w)m(ord)g(as) +h(a)f(\014nal)g(resort,)j(and)c(attempts)j(to)f(\014nd)e(a)150 +956 y(compsp)s(ec)30 b(for)g(the)h(command)f(w)m(ord)g(from)g(an)m(y)h +(successful)f(expansion)275 1113 y(Once)k(a)g(compsp)s(ec)g(has)g(b)s +(een)f(found,)h(it)h(is)f(used)f(to)i(generate)h(the)e(list)h(of)f +(matc)m(hing)h(w)m(ords.)51 b(If)150 1223 y(a)37 b(compsp)s(ec)f(is)g +(not)h(found,)f(the)h(default)f(Bash)h(completion)g(describ)s(ed)e(ab)s +(o)m(v)m(e)j(\(see)f(Section)g(8.4.6)150 1332 y([Commands)30 +b(F)-8 b(or)31 b(Completion],)g(page)g(139\))h(is)f(p)s(erformed.)275 +1489 y(First,)g(the)g(actions)g(sp)s(eci\014ed)f(b)m(y)h(the)f(compsp)s +(ec)h(are)g(used.)40 b(Only)30 b(matc)m(hes)i(whic)m(h)e(are)h +(pre\014xed)150 1598 y(b)m(y)h(the)f(w)m(ord)h(b)s(eing)f(completed)h +(are)g(returned.)44 b(When)31 b(the)h Ft(-f)f Fu(or)h +Ft(-d)f Fu(option)h(is)f(used)g(for)h(\014lename)150 +1708 y(or)e(directory)h(name)f(completion,)i(the)e(shell)h(v)-5 +b(ariable)31 b Ft(FIGNORE)d Fu(is)i(used)f(to)i(\014lter)g(the)f(matc)m +(hes.)42 b(See)150 1817 y(Section)31 b(5.2)h([Bash)e(V)-8 +b(ariables],)33 b(page)e(78,)g(for)f(a)h(description)g(of)f +Ft(FIGNORE)p Fu(.)275 1974 y(An)m(y)22 b(completions)h(sp)s(eci\014ed)f (b)m(y)g(a)h(\014lename)f(expansion)h(pattern)f(to)h(the)g -Ft(-G)e Fu(option)i(are)g(generated)150 878 y(next.)41 +Ft(-G)e Fu(option)i(are)g(generated)150 2084 y(next.)41 b(The)29 b(w)m(ords)g(generated)h(b)m(y)g(the)g(pattern)f(need)h(not)f (matc)m(h)i(the)f(w)m(ord)f(b)s(eing)g(completed.)41 -b(The)150 988 y Ft(GLOBIGNORE)29 b Fu(shell)i(v)-5 b(ariable)32 +b(The)150 2193 y Ft(GLOBIGNORE)29 b Fu(shell)i(v)-5 b(ariable)32 b(is)g(not)g(used)e(to)i(\014lter)g(the)g(matc)m(hes,)h(but)d(the)i -Ft(FIGNORE)e Fu(shell)h(v)-5 b(ariable)150 1097 y(is)30 -b(used.)275 1238 y(Next,)39 b(the)f(string)f(sp)s(eci\014ed)f(as)h(the) +Ft(FIGNORE)e Fu(shell)h(v)-5 b(ariable)150 2303 y(is)30 +b(used.)275 2459 y(Next,)39 b(the)f(string)f(sp)s(eci\014ed)f(as)h(the) g(argumen)m(t)h(to)g(the)f Ft(-W)f Fu(option)i(is)f(considered.)60 -b(The)37 b(string)150 1348 y(is)c(\014rst)e(split)i(using)f(the)h(c)m +b(The)37 b(string)150 2569 y(is)c(\014rst)e(split)i(using)f(the)h(c)m (haracters)h(in)e(the)h Ft(IFS)e Fu(sp)s(ecial)j(v)-5 b(ariable)33 b(as)g(delimiters.)48 b(Shell)32 b(quoting)h(is)150 -1457 y(honored)f(within)h(the)g(string,)h(in)f(order)f(to)i(pro)m(vide) +2679 y(honored)f(within)h(the)g(string,)h(in)f(order)f(to)i(pro)m(vide) f(a)h(mec)m(hanism)f(for)g(the)g(w)m(ords)g(to)g(con)m(tain)i(shell)150 -1567 y(metac)m(haracters)e(or)e(c)m(haracters)i(in)e(the)g(v)-5 +2788 y(metac)m(haracters)e(or)e(c)m(haracters)i(in)e(the)g(v)-5 b(alue)31 b(of)g Ft(IFS)p Fu(.)42 b(Eac)m(h)32 b(w)m(ord)e(is)h(then)g -(expanded)f(using)h(brace)150 1677 y(expansion,)g(tilde)h(expansion,)f +(expanded)f(using)h(brace)150 2898 y(expansion,)g(tilde)h(expansion,)f (parameter)g(and)g(v)-5 b(ariable)32 b(expansion,)f(command)f -(substitution,)i(and)150 1786 y(arithmetic)c(expansion,)f(as)g(describ) +(substitution,)i(and)150 3007 y(arithmetic)c(expansion,)f(as)g(describ) s(ed)e(ab)s(o)m(v)m(e)i(\(see)h(Section)f(3.5)g([Shell)g(Expansions],)g -(page)g(22\).)40 b(The)150 1896 y(results)23 b(are)h(split)g(using)f +(page)g(24\).)40 b(The)150 3117 y(results)23 b(are)h(split)g(using)f (the)h(rules)f(describ)s(ed)f(ab)s(o)m(v)m(e)j(\(see)g(Section)f(3.5.7) -h([W)-8 b(ord)24 b(Splitting],)i(page)e(32\).)150 2005 +h([W)-8 b(ord)24 b(Splitting],)i(page)e(35\).)150 3226 y(The)j(results)h(of)f(the)h(expansion)g(are)g(pre\014x-matc)m(hed)g (against)h(the)f(w)m(ord)f(b)s(eing)g(completed,)j(and)d(the)150 -2115 y(matc)m(hing)k(w)m(ords)f(b)s(ecome)h(the)g(p)s(ossible)f -(completions.)275 2256 y(After)f(these)g(matc)m(hes)i(ha)m(v)m(e)f(b)s +3336 y(matc)m(hing)k(w)m(ords)f(b)s(ecome)h(the)g(p)s(ossible)f +(completions.)275 3493 y(After)f(these)g(matc)m(hes)i(ha)m(v)m(e)f(b)s (een)f(generated,)h(an)m(y)g(shell)f(function)g(or)g(command)g(sp)s -(eci\014ed)f(with)150 2365 y(the)36 b Ft(-F)f Fu(and)g +(eci\014ed)f(with)150 3602 y(the)36 b Ft(-F)f Fu(and)g Ft(-C)g Fu(options)h(is)g(in)m(v)m(ok)m(ed.)59 b(When)35 b(the)h(command)g(or)f(function)h(is)g(in)m(v)m(ok)m(ed,)i(the)e -Ft(COMP_)150 2475 y(LINE)p Fu(,)42 b Ft(COMP_POINT)p +Ft(COMP_)150 3712 y(LINE)p Fu(,)42 b Ft(COMP_POINT)p Fu(,)d Ft(COMP_KEY)p Fu(,)i(and)e Ft(COMP_TYPE)f Fu(v)-5 b(ariables)41 b(are)f(assigned)g(v)-5 b(alues)41 b(as)f(describ)s(ed) -150 2585 y(ab)s(o)m(v)m(e)34 b(\(see)g(Section)g(5.2)g([Bash)f(V)-8 -b(ariables],)36 b(page)d(73\).)50 b(If)33 b(a)g(shell)g(function)g(is)g -(b)s(eing)f(in)m(v)m(ok)m(ed,)k(the)150 2694 y Ft(COMP_WORDS)j +150 3821 y(ab)s(o)m(v)m(e)34 b(\(see)g(Section)g(5.2)g([Bash)f(V)-8 +b(ariables],)36 b(page)d(78\).)50 b(If)33 b(a)g(shell)g(function)g(is)g +(b)s(eing)f(in)m(v)m(ok)m(ed,)k(the)150 3931 y Ft(COMP_WORDS)j Fu(and)i Ft(COMP_CWORD)d Fu(v)-5 b(ariables)42 b(are)g(also)h(set.)74 -b(When)41 b(the)h(function)f(or)h(command)f(is)150 2804 +b(When)41 b(the)h(function)f(or)h(command)f(is)150 4041 y(in)m(v)m(ok)m(ed,)c(the)e(\014rst)f(argumen)m(t)h(\($1\))h(is)e(the)h (name)g(of)f(the)h(command)f(whose)h(argumen)m(ts)f(are)h(b)s(eing)150 -2913 y(completed,)30 b(the)f(second)f(argumen)m(t)h(\($2\))h(is)f(the)g +4150 y(completed,)30 b(the)f(second)f(argumen)m(t)h(\($2\))h(is)f(the)g (w)m(ord)f(b)s(eing)g(completed,)i(and)e(the)h(third)e(argumen)m(t)150 -3023 y(\($3\))40 b(is)f(the)f(w)m(ord)h(preceding)f(the)h(w)m(ord)f(b)s +4260 y(\($3\))40 b(is)f(the)f(w)m(ord)h(preceding)f(the)h(w)m(ord)f(b)s (eing)g(completed)i(on)e(the)h(curren)m(t)f(command)h(line.)65 -b(No)150 3133 y(\014ltering)33 b(of)h(the)f(generated)h(completions)g +b(No)150 4369 y(\014ltering)33 b(of)h(the)f(generated)h(completions)g (against)h(the)e(w)m(ord)g(b)s(eing)f(completed)i(is)g(p)s(erformed;)f -(the)150 3242 y(function)d(or)g(command)h(has)f(complete)i(freedom)e -(in)g(generating)h(the)g(matc)m(hes.)275 3383 y(An)m(y)j(function)h(sp) +(the)150 4479 y(function)d(or)g(command)h(has)f(complete)i(freedom)e +(in)g(generating)h(the)g(matc)m(hes.)275 4635 y(An)m(y)j(function)h(sp) s(eci\014ed)f(with)g Ft(-F)g Fu(is)h(in)m(v)m(ok)m(ed)h(\014rst.)53 b(The)35 b(function)f(ma)m(y)h(use)g(an)m(y)g(of)g(the)g(shell)150 -3493 y(facilities,)50 b(including)44 b(the)h Ft(compgen)d +4745 y(facilities,)50 b(including)44 b(the)h Ft(compgen)d Fu(and)i Ft(compopt)e Fu(builtins)i(describ)s(ed)f(b)s(elo)m(w)h(\(see) -i(Section)f(8.7)150 3602 y([Programmable)31 b(Completion)h(Builtins],)f -(page)h(139\),)g(to)g(generate)g(the)f(matc)m(hes.)42 -b(It)31 b(m)m(ust)g(put)f(the)150 3712 y(p)s(ossible)g(completions)h +i(Section)f(8.7)150 4855 y([Programmable)31 b(Completion)h(Builtins],)f +(page)h(146\),)g(to)g(generate)g(the)f(matc)m(hes.)42 +b(It)31 b(m)m(ust)g(put)f(the)150 4964 y(p)s(ossible)g(completions)h (in)f(the)h Ft(COMPREPLY)d Fu(arra)m(y)j(v)-5 b(ariable,)31 -b(one)g(p)s(er)e(arra)m(y)i(elemen)m(t.)275 3853 y(Next,)26 +b(one)g(p)s(er)e(arra)m(y)i(elemen)m(t.)275 5121 y(Next,)26 b(an)m(y)f(command)f(sp)s(eci\014ed)g(with)g(the)h Ft(-C)f Fu(option)h(is)f(in)m(v)m(ok)m(ed)i(in)e(an)g(en)m(vironmen)m(t)h -(equiv)-5 b(alen)m(t)150 3962 y(to)26 b(command)e(substitution.)39 +(equiv)-5 b(alen)m(t)150 5230 y(to)26 b(command)e(substitution.)39 b(It)25 b(should)f(prin)m(t)h(a)g(list)h(of)f(completions,)i(one)e(p)s -(er)f(line,)j(to)f(the)f(standard)150 4072 y(output.)40 +(er)f(line,)j(to)f(the)f(standard)150 5340 y(output.)40 b(Bac)m(kslash)32 b(ma)m(y)f(b)s(e)f(used)g(to)h(escap)s(e)g(a)f -(newline,)h(if)f(necessary)-8 b(.)275 4213 y(After)24 +(newline,)h(if)f(necessary)-8 b(.)p eop end +%%Page: 145 151 +TeXDict begin 145 150 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(145)275 299 y(After)24 b(all)i(of)f(the)f(p)s(ossible)g(completions)i(are)f(generated,)i(an)m (y)e(\014lter)g(sp)s(eci\014ed)e(with)i(the)g Ft(-X)e -Fu(option)150 4322 y(is)34 b(applied)g(to)g(the)h(list.)52 +Fu(option)150 408 y(is)34 b(applied)g(to)g(the)h(list.)52 b(The)33 b(\014lter)h(is)g(a)h(pattern)f(as)g(used)f(for)h(pathname)g -(expansion;)i(a)e(`)p Ft(&)p Fu(')g(in)g(the)150 4432 +(expansion;)i(a)e(`)p Ft(&)p Fu(')g(in)g(the)150 518 y(pattern)28 b(is)f(replaced)h(with)g(the)f(text)i(of)f(the)f(w)m(ord)h (b)s(eing)f(completed.)40 b(A)28 b(literal)h(`)p Ft(&)p -Fu(')f(ma)m(y)g(b)s(e)f(escap)s(ed)150 4542 y(with)38 +Fu(')f(ma)m(y)g(b)s(e)f(escap)s(ed)150 628 y(with)38 b(a)h(bac)m(kslash;)k(the)38 b(bac)m(kslash)h(is)g(remo)m(v)m(ed)g(b)s (efore)f(attempting)h(a)g(matc)m(h.)65 b(An)m(y)39 b(completion)150 -4651 y(that)32 b(matc)m(hes)g(the)g(pattern)g(will)f(b)s(e)g(remo)m(v)m +737 y(that)32 b(matc)m(hes)g(the)g(pattern)g(will)f(b)s(e)g(remo)m(v)m (ed)h(from)f(the)h(list.)44 b(A)32 b(leading)g(`)p Ft(!)p -Fu(')f(negates)i(the)f(pattern;)150 4761 y(in)d(this)g(case)h(an)m(y)g +Fu(')f(negates)i(the)f(pattern;)150 847 y(in)d(this)g(case)h(an)m(y)g (completion)h(not)e(matc)m(hing)h(the)g(pattern)f(will)h(b)s(e)e(remo)m -(v)m(ed.)42 b(If)29 b(the)g Ft(nocasematch)150 4870 y +(v)m(ed.)42 b(If)29 b(the)g Ft(nocasematch)150 956 y Fu(shell)k(option)f(\(see)i(the)e(description)g(of)h Ft(shopt)e Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g -(66\))h(is)150 4980 y(enabled,)d(the)f(matc)m(h)h(is)g(p)s(erformed)e +(71\))h(is)150 1066 y(enabled,)d(the)f(matc)m(h)h(is)g(p)s(erformed)e (without)h(regard)g(to)h(the)g(case)g(of)g(alphab)s(etic)g(c)m -(haracters.)275 5121 y(Finally)-8 b(,)42 b(an)m(y)c(pre\014x)g(and)f +(haracters.)275 1203 y(Finally)-8 b(,)42 b(an)m(y)c(pre\014x)g(and)f (su\016x)h(sp)s(eci\014ed)f(with)i(the)f Ft(-P)g Fu(and)g -Ft(-S)f Fu(options)i(are)g(added)f(to)h(eac)m(h)150 5230 +Ft(-S)f Fu(options)i(are)g(added)f(to)h(eac)m(h)150 1313 y(mem)m(b)s(er)31 b(of)g(the)h(completion)h(list,)f(and)f(the)h(result) f(is)h(returned)e(to)i(the)g(Readline)g(completion)h(co)s(de)150 -5340 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)p -eop end -%%Page: 139 145 -TeXDict begin 139 144 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(139)275 299 y(If)27 -b(the)h(previously-applied)f(actions)i(do)f(not)g(generate)h(an)m(y)f -(matc)m(hes,)i(and)d(the)h Ft(-o)h(dirnames)d Fu(op-)150 -408 y(tion)j(w)m(as)f(supplied)f(to)i Ft(complete)d Fu(when)h(the)h -(compsp)s(ec)g(w)m(as)g(de\014ned,)g(directory)g(name)h(completion)150 -518 y(is)h(attempted.)275 653 y(If)35 b(the)g Ft(-o)30 -b(plusdirs)j Fu(option)j(w)m(as)g(supplied)e(to)i Ft(complete)e -Fu(when)g(the)i(compsp)s(ec)f(w)m(as)h(de\014ned,)150 -763 y(directory)g(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h +1422 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)275 +1559 y(If)d(the)h(previously-applied)f(actions)i(do)f(not)g(generate)h +(an)m(y)f(matc)m(hes,)i(and)d(the)h Ft(-o)h(dirnames)d +Fu(op-)150 1669 y(tion)j(w)m(as)f(supplied)f(to)i Ft(complete)d +Fu(when)h(the)h(compsp)s(ec)g(w)m(as)g(de\014ned,)g(directory)g(name)h +(completion)150 1778 y(is)h(attempted.)275 1915 y(If)35 +b(the)g Ft(-o)30 b(plusdirs)j Fu(option)j(w)m(as)g(supplied)e(to)i +Ft(complete)e Fu(when)g(the)i(compsp)s(ec)f(w)m(as)h(de\014ned,)150 +2025 y(directory)g(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h (matc)m(hes)g(are)g(added)f(to)h(the)f(results)g(of)h(the)150 -873 y(other)31 b(actions.)275 1008 y(By)g(default,)i(if)e(a)h(compsp)s +2134 y(other)31 b(actions.)275 2271 y(By)g(default,)i(if)e(a)h(compsp)s (ec)f(is)h(found,)f(whatev)m(er)h(it)g(generates)h(is)e(returned)g(to)h -(the)g(completion)150 1117 y(co)s(de)21 b(as)g(the)g(full)g(set)g(of)g +(the)g(completion)150 2381 y(co)s(de)21 b(as)g(the)g(full)g(set)g(of)g (p)s(ossible)f(completions.)39 b(The)20 b(default)h(Bash)g(completions) -h(are)g(not)f(attempted,)150 1227 y(and)30 b(the)g(Readline)h(default)f +h(are)g(not)f(attempted,)150 2491 y(and)30 b(the)g(Readline)h(default)f (of)g(\014lename)h(completion)g(is)f(disabled.)41 b(If)29 -b(the)i Ft(-o)e(bashdefault)e Fu(option)150 1337 y(w)m(as)d(supplied)e +b(the)i Ft(-o)e(bashdefault)e Fu(option)150 2600 y(w)m(as)d(supplied)e (to)j Ft(complete)c Fu(when)i(the)g(compsp)s(ec)h(w)m(as)g(de\014ned,)g -(the)f(default)h(Bash)g(completions)h(are)150 1446 y(attempted)j(if)f +(the)f(default)h(Bash)g(completions)h(are)150 2710 y(attempted)j(if)f (the)h(compsp)s(ec)f(generates)h(no)f(matc)m(hes.)41 b(If)27 b(the)g Ft(-o)j(default)25 b Fu(option)j(w)m(as)f(supplied)f -(to)150 1556 y Ft(complete)f Fu(when)h(the)h(compsp)s(ec)f(w)m(as)i +(to)150 2819 y Ft(complete)f Fu(when)h(the)h(compsp)s(ec)f(w)m(as)i (de\014ned,)e(Readline's)i(default)f(completion)h(will)f(b)s(e)f(p)s -(erformed)150 1665 y(if)k(the)h(compsp)s(ec)f(\(and,)g(if)h(attempted,) +(erformed)150 2929 y(if)k(the)h(compsp)s(ec)f(\(and,)g(if)h(attempted,) g(the)g(default)f(Bash)h(completions\))h(generate)g(no)e(matc)m(hes.) -275 1801 y(When)20 b(a)i(compsp)s(ec)e(indicates)i(that)g(directory)g +275 3066 y(When)20 b(a)i(compsp)s(ec)e(indicates)i(that)g(directory)g (name)f(completion)h(is)f(desired,)i(the)e(programmable)150 -1910 y(completion)31 b(functions)e(force)i(Readline)f(to)h(app)s(end)d +3176 y(completion)31 b(functions)e(force)i(Readline)f(to)h(app)s(end)d (a)i(slash)g(to)g(completed)h(names)e(whic)m(h)h(are)g(sym-)150 -2020 y(b)s(olic)40 b(links)g(to)h(directories,)j(sub)5 +3285 y(b)s(olic)40 b(links)g(to)h(directories,)j(sub)5 b(ject)40 b(to)h(the)f(v)-5 b(alue)41 b(of)f(the)g Fr(mark-directories) -45 b Fu(Readline)c(v)-5 b(ariable,)150 2130 y(regardless)31 +45 b Fu(Readline)c(v)-5 b(ariable,)150 3395 y(regardless)31 b(of)f(the)h(setting)g(of)g(the)f Fr(mark-symlink)m(ed-directories)36 -b Fu(Readline)31 b(v)-5 b(ariable.)275 2265 y(There)25 +b Fu(Readline)31 b(v)-5 b(ariable.)275 3532 y(There)25 b(is)i(some)g(supp)s(ort)e(for)h(dynamically)h(mo)s(difying)f (completions.)40 b(This)26 b(is)g(most)h(useful)f(when)150 -2374 y(used)40 b(in)h(com)m(bination)i(with)e(a)g(default)h(completion) +3641 y(used)40 b(in)h(com)m(bination)i(with)e(a)g(default)h(completion) g(sp)s(eci\014ed)f(with)g Ft(-D)p Fu(.)72 b(It's)42 b(p)s(ossible)f -(for)g(shell)150 2484 y(functions)28 b(executed)h(as)f(completion)i +(for)g(shell)150 3751 y(functions)28 b(executed)h(as)f(completion)i (handlers)d(to)i(indicate)g(that)g(completion)g(should)e(b)s(e)h -(retried)g(b)m(y)150 2594 y(returning)j(an)i(exit)g(status)f(of)h(124.) +(retried)g(b)m(y)150 3861 y(returning)j(an)i(exit)g(status)f(of)h(124.) 48 b(If)31 b(a)i(shell)f(function)g(returns)f(124,)k(and)c(c)m(hanges)j -(the)e(compsp)s(ec)150 2703 y(asso)s(ciated)43 b(with)e(the)g(command)g +(the)e(compsp)s(ec)150 3970 y(asso)s(ciated)43 b(with)e(the)g(command)g (on)g(whic)m(h)g(completion)i(is)e(b)s(eing)g(attempted)h(\(supplied)e -(as)i(the)150 2813 y(\014rst)29 b(argumen)m(t)h(when)e(the)i(function)f +(as)i(the)150 4080 y(\014rst)29 b(argumen)m(t)h(when)e(the)i(function)f (is)g(executed\),)j(programmable)d(completion)i(restarts)f(from)f(the) -150 2922 y(b)s(eginning,)e(with)g(an)h(attempt)g(to)g(\014nd)e(a)i(new) +150 4189 y(b)s(eginning,)e(with)g(an)h(attempt)g(to)g(\014nd)e(a)i(new) e(compsp)s(ec)i(for)f(that)h(command.)39 b(This)27 b(allo)m(ws)h(a)g -(set)g(of)150 3032 y(completions)33 b(to)f(b)s(e)g(built)f(dynamically) +(set)g(of)150 4299 y(completions)33 b(to)f(b)s(e)g(built)f(dynamically) i(as)f(completion)h(is)f(attempted,)h(rather)f(than)f(b)s(eing)g -(loaded)150 3142 y(all)g(at)g(once.)275 3277 y(F)-8 b(or)38 +(loaded)150 4408 y(all)g(at)g(once.)275 4545 y(F)-8 b(or)38 b(instance,)h(assuming)e(that)h(there)f(is)h(a)f(library)g(of)g(compsp) s(ecs,)i(eac)m(h)g(k)m(ept)e(in)g(a)h(\014le)f(corre-)150 -3386 y(sp)s(onding)g(to)j(the)f(name)f(of)h(the)g(command,)i(the)e +4655 y(sp)s(onding)g(to)j(the)f(name)f(of)h(the)g(command,)i(the)e (follo)m(wing)h(default)f(completion)h(function)e(w)m(ould)150 -3496 y(load)31 b(completions)g(dynamically:)390 3631 -y Ft(_completion_loader\(\))390 3741 y({)581 3851 y(.)47 +4765 y(load)31 b(completions)g(dynamically:)390 4902 +y Ft(_completion_loader\(\))390 5011 y({)581 5121 y(.)47 b("/etc/bash_completion.d/$1)o(.sh)o(")42 b(>/dev/null)j(2>&1)i(&&)g -(return)f(124)390 3960 y(})390 4070 y(complete)g(-D)h(-F)g -(_completion_loader)c(-o)k(bashdefault)e(-o)i(default)150 -4312 y Fs(8.7)68 b(Programmable)47 b(Completion)f(Builtins)150 -4471 y Fu(Three)21 b(builtin)g(commands)f(are)i(a)m(v)-5 -b(ailable)24 b(to)e(manipulate)f(the)h(programmable)f(completion)h -(facilities:)150 4581 y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f -(argumen)m(ts)h(to)g(a)g(particular)g(command)f(are)h(to)g(b)s(e)f -(completed,)j(and)d(t)m(w)m(o)150 4690 y(to)e(mo)s(dify)f(the)g -(completion)i(as)e(it)h(is)g(happ)s(ening.)150 4851 y -Ft(compgen)870 4986 y(compgen)46 b([)p Fj(option)p Ft(])f([)p -Fj(word)p Ft(])630 5121 y Fu(Generate)27 b(p)s(ossible)e(completion)i -(matc)m(hes)g(for)e Fr(w)m(ord)k Fu(according)e(to)f(the)g -Fr(option)p Fu(s,)h(whic)m(h)630 5230 y(ma)m(y)32 b(b)s(e)f(an)m(y)h -(option)g(accepted)g(b)m(y)g(the)f Ft(complete)f Fu(builtin)h(with)g -(the)g(exception)i(of)f Ft(-p)630 5340 y Fu(and)39 b -Ft(-r)p Fu(,)i(and)e(write)h(the)g(matc)m(hes)g(to)g(the)g(standard)f -(output.)68 b(When)39 b(using)g(the)h Ft(-F)p eop end -%%Page: 140 146 -TeXDict begin 140 145 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(140)630 299 y(or)33 -b Ft(-C)f Fu(options,)i(the)e(v)-5 b(arious)33 b(shell)g(v)-5 -b(ariables)33 b(set)g(b)m(y)g(the)g(programmable)g(completion)630 -408 y(facilities,)g(while)d(a)m(v)-5 b(ailable,)33 b(will)e(not)g(ha)m -(v)m(e)g(useful)f(v)-5 b(alues.)630 555 y(The)34 b(matc)m(hes)h(will)g -(b)s(e)f(generated)h(in)f(the)h(same)g(w)m(a)m(y)g(as)g(if)f(the)h -(programmable)f(com-)630 664 y(pletion)d(co)s(de)g(had)f(generated)i -(them)e(directly)i(from)e(a)h(completion)h(sp)s(eci\014cation)f(with) -630 774 y(the)e(same)h(\015ags.)40 b(If)29 b Fr(w)m(ord)j -Fu(is)d(sp)s(eci\014ed,)g(only)g(those)h(completions)g(matc)m(hing)g -Fr(w)m(ord)j Fu(will)630 883 y(b)s(e)d(displa)m(y)m(ed.)630 -1029 y(The)24 b(return)g(v)-5 b(alue)25 b(is)g(true)f(unless)g(an)h(in) +(return)f(124)390 5230 y(})390 5340 y(complete)g(-D)h(-F)g +(_completion_loader)c(-o)k(bashdefault)e(-o)i(default)p +eop end +%%Page: 146 152 +TeXDict begin 146 151 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(146)150 299 y Fs(8.7)68 +b(Programmable)47 b(Completion)f(Builtins)150 458 y Fu(Three)21 +b(builtin)g(commands)f(are)i(a)m(v)-5 b(ailable)24 b(to)e(manipulate)f +(the)h(programmable)f(completion)h(facilities:)150 568 +y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f(argumen)m(ts)h(to)g(a)g +(particular)g(command)f(are)h(to)g(b)s(e)f(completed,)j(and)d(t)m(w)m +(o)150 677 y(to)e(mo)s(dify)f(the)g(completion)i(as)e(it)h(is)g(happ)s +(ening.)150 893 y Ft(compgen)870 1046 y(compgen)46 b([)p +Fj(option)p Ft(])f([)p Fj(word)p Ft(])630 1199 y Fu(Generate)27 +b(p)s(ossible)e(completion)i(matc)m(hes)g(for)e Fr(w)m(ord)k +Fu(according)e(to)f(the)g Fr(option)p Fu(s,)h(whic)m(h)630 +1309 y(ma)m(y)32 b(b)s(e)f(an)m(y)h(option)g(accepted)g(b)m(y)g(the)f +Ft(complete)f Fu(builtin)h(with)g(the)g(exception)i(of)f +Ft(-p)630 1418 y Fu(and)39 b Ft(-r)p Fu(,)i(and)e(write)h(the)g(matc)m +(hes)g(to)g(the)g(standard)f(output.)68 b(When)39 b(using)g(the)h +Ft(-F)630 1528 y Fu(or)33 b Ft(-C)f Fu(options,)i(the)e(v)-5 +b(arious)33 b(shell)g(v)-5 b(ariables)33 b(set)g(b)m(y)g(the)g +(programmable)g(completion)630 1638 y(facilities,)g(while)d(a)m(v)-5 +b(ailable,)33 b(will)e(not)g(ha)m(v)m(e)g(useful)f(v)-5 +b(alues.)630 1791 y(The)34 b(matc)m(hes)h(will)g(b)s(e)f(generated)h +(in)f(the)h(same)g(w)m(a)m(y)g(as)g(if)f(the)h(programmable)f(com-)630 +1900 y(pletion)d(co)s(de)g(had)f(generated)i(them)e(directly)i(from)e +(a)h(completion)h(sp)s(eci\014cation)f(with)630 2010 +y(the)e(same)h(\015ags.)40 b(If)29 b Fr(w)m(ord)j Fu(is)d(sp)s +(eci\014ed,)g(only)g(those)h(completions)g(matc)m(hing)g +Fr(w)m(ord)j Fu(will)630 2120 y(b)s(e)d(displa)m(y)m(ed.)630 +2273 y(The)24 b(return)g(v)-5 b(alue)25 b(is)g(true)f(unless)g(an)h(in) m(v)-5 b(alid)25 b(option)g(is)g(supplied,)f(or)h(no)g(matc)m(hes)g(w)m -(ere)630 1139 y(generated.)150 1322 y Ft(complete)870 -1468 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p -Ft(])e([-DEI])h([-A)h Fj(action)p Ft(])e([-)870 1577 -y(G)i Fj(globpat)p Ft(])870 1687 y([-W)g Fj(wordlist)p +(ere)630 2382 y(generated.)150 2579 y Ft(complete)870 +2732 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p +Ft(])e([-DEI])h([-A)h Fj(action)p Ft(])e([-)870 2842 +y(G)i Fj(globpat)p Ft(])870 2951 y([-W)g Fj(wordlist)p Ft(])e([-F)i Fj(function)p Ft(])e([-C)i Fj(command)p -Ft(])f([-X)h Fj(filterpat)p Ft(])870 1797 y([-P)g Fj(prefix)p +Ft(])f([-X)h Fj(filterpat)p Ft(])870 3061 y([-P)g Fj(prefix)p Ft(])f([-S)h Fj(suffix)p Ft(])e Fj(name)i Ft([)p Fj(name)f -Ft(...])870 1906 y(complete)g(-pr)g([-DEI])h([)p Fj(name)f -Ft(...)o(])630 2052 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i +Ft(...])870 3171 y(complete)g(-pr)g([-DEI])h([)p Fj(name)f +Ft(...)o(])630 3324 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i (eac)m(h)g Fr(name)j Fu(should)37 b(b)s(e)g(completed.)63 -b(If)38 b(the)f Ft(-p)g Fu(option)630 2162 y(is)30 b(supplied,)e(or)i +b(If)38 b(the)f Ft(-p)g Fu(option)630 3433 y(is)30 b(supplied,)e(or)i (if)g(no)f(options)h(are)g(supplied,)f(existing)h(completion)h(sp)s -(eci\014cations)g(are)630 2271 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g +(eci\014cations)g(are)630 3543 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g (that)h(allo)m(ws)g(them)e(to)i(b)s(e)e(reused)f(as)i(input.)38 -b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 2381 +b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 3653 y(a)i(completion)h(sp)s(eci\014cation)f(for)g(eac)m(h)h Fr(name)p Fu(,)f(or,)h(if)e(no)h Fr(name)5 b Fu(s)27 -b(are)h(supplied,)g(all)g(com-)630 2491 y(pletion)i(sp)s +b(are)h(supplied,)g(all)g(com-)630 3762 y(pletion)i(sp)s (eci\014cations.)42 b(The)29 b Ft(-D)g Fu(option)h(indicates)h(that)f -(other)g(supplied)e(options)j(and)630 2600 y(actions)c(should)e(apply)g +(other)g(supplied)e(options)j(and)630 3872 y(actions)c(should)e(apply)g (to)i(the)f(\\default")h(command)e(completion;)k(that)e(is,)g -(completion)630 2710 y(attempted)g(on)f(a)h(command)f(for)g(whic)m(h)g +(completion)630 3981 y(attempted)g(on)f(a)h(command)f(for)g(whic)m(h)g (no)g(completion)i(has)d(previously)h(b)s(een)g(de\014ned.)630 -2819 y(The)e Ft(-E)g Fu(option)h(indicates)g(that)g(other)g(supplied)e -(options)h(and)g(actions)i(should)d(apply)h(to)630 2929 +4091 y(The)e Ft(-E)g Fu(option)h(indicates)g(that)g(other)g(supplied)e +(options)h(and)g(actions)i(should)d(apply)h(to)630 4200 y(\\empt)m(y")33 b(command)e(completion;)i(that)f(is,)g(completion)h -(attempted)f(on)g(a)f(blank)g(line.)630 3039 y(The)24 +(attempted)f(on)g(a)f(blank)g(line.)630 4310 y(The)24 b Ft(-I)g Fu(option)h(indicates)g(that)g(other)g(supplied)e(options)h -(and)g(actions)i(should)d(apply)h(to)630 3148 y(completion)29 +(and)g(actions)i(should)d(apply)h(to)630 4420 y(completion)29 b(on)g(the)f(initial)h(non-assignmen)m(t)g(w)m(ord)f(on)g(the)g(line,)i -(or)e(after)h(a)f(command)630 3258 y(delimiter)41 b(suc)m(h)g(as)f(`)p +(or)e(after)h(a)f(command)630 4529 y(delimiter)41 b(suc)m(h)g(as)f(`)p Ft(;)p Fu(')h(or)g(`)p Ft(|)p Fu(',)i(whic)m(h)e(is)f(usually)h -(command)f(name)h(completion.)72 b(If)630 3367 y(m)m(ultiple)26 +(command)f(name)h(completion.)72 b(If)630 4639 y(m)m(ultiple)26 b(options)g(are)g(supplied,)g(the)f Ft(-D)g Fu(option)h(tak)m(es)i (precedence)e(o)m(v)m(er)g Ft(-E)p Fu(,)h(and)e(b)s(oth)630 -3477 y(tak)m(e)34 b(precedence)f(o)m(v)m(er)h Ft(-I)p +4748 y(tak)m(e)34 b(precedence)f(o)m(v)m(er)h Ft(-I)p Fu(.)47 b(If)32 b(an)m(y)h(of)g Ft(-D)p Fu(,)g Ft(-E)p Fu(,)f(or)h Ft(-I)f Fu(are)h(supplied,)f(an)m(y)h(other)g -Fr(name)630 3587 y Fu(argumen)m(ts)k(are)g(ignored;)j(these)d +Fr(name)630 4858 y Fu(argumen)m(ts)k(are)g(ignored;)j(these)d (completions)h(only)e(apply)g(to)i(the)f(case)g(sp)s(eci\014ed)f(b)m(y) -630 3696 y(the)31 b(option.)630 3842 y(The)e(pro)s(cess)g(of)h +630 4968 y(the)31 b(option.)630 5121 y(The)e(pro)s(cess)g(of)h (applying)g(these)g(completion)g(sp)s(eci\014cations)h(when)d(w)m(ord)i -(completion)630 3952 y(is)35 b(attempted)h(is)f(describ)s(ed)f(ab)s(o)m +(completion)630 5230 y(is)35 b(attempted)h(is)f(describ)s(ed)f(ab)s(o)m (v)m(e)j(\(see)f(Section)g(8.6)g([Programmable)g(Completion],)630 -4061 y(page)31 b(137\).)630 4208 y(Other)d(options,)i(if)f(sp)s -(eci\014ed,)g(ha)m(v)m(e)h(the)f(follo)m(wing)i(meanings.)40 -b(The)29 b(argumen)m(ts)g(to)h(the)630 4317 y Ft(-G)p -Fu(,)41 b Ft(-W)p Fu(,)h(and)c Ft(-X)h Fu(options)h(\(and,)h(if)f -(necessary)-8 b(,)42 b(the)e Ft(-P)f Fu(and)f Ft(-S)h -Fu(options\))h(should)f(b)s(e)630 4427 y(quoted)28 b(to)h(protect)g -(them)f(from)f(expansion)h(b)s(efore)g(the)g Ft(complete)e -Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)630 4609 y Ft(-o)i -Fj(comp-option)1110 4719 y Fu(The)c Fr(comp-option)i +5340 y(page)31 b(143\).)p eop end +%%Page: 147 153 +TeXDict begin 147 152 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(147)630 299 y(Other)28 +b(options,)i(if)f(sp)s(eci\014ed,)g(ha)m(v)m(e)h(the)f(follo)m(wing)i +(meanings.)40 b(The)29 b(argumen)m(ts)g(to)h(the)630 +408 y Ft(-G)p Fu(,)41 b Ft(-W)p Fu(,)h(and)c Ft(-X)h +Fu(options)h(\(and,)h(if)f(necessary)-8 b(,)42 b(the)e +Ft(-P)f Fu(and)f Ft(-S)h Fu(options\))h(should)f(b)s(e)630 +518 y(quoted)28 b(to)h(protect)g(them)f(from)f(expansion)h(b)s(efore)g +(the)g Ft(complete)e Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)630 +669 y Ft(-o)i Fj(comp-option)1110 778 y Fu(The)c Fr(comp-option)i Fu(con)m(trols)g(sev)m(eral)h(asp)s(ects)e(of)g(the)g(compsp)s(ec's)g -(b)s(eha)m(v-)1110 4829 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h +(b)s(eha)m(v-)1110 888 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h (generation)h(of)e(completions.)41 b Fr(comp-option)27 -b Fu(ma)m(y)1110 4938 y(b)s(e)j(one)g(of:)1110 5121 y -Ft(bashdefault)1590 5230 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g -(default)f(Bash)h(completions)g(if)g(the)1590 5340 y(compsp)s(ec)i -(generates)i(no)e(matc)m(hes.)p eop end -%%Page: 141 147 -TeXDict begin 141 146 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(141)1110 299 y Ft(default)144 +b Fu(ma)m(y)1110 998 y(b)s(e)j(one)g(of:)1110 1148 y +Ft(bashdefault)1590 1258 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g +(default)f(Bash)h(completions)g(if)g(the)1590 1367 y(compsp)s(ec)i +(generates)i(no)e(matc)m(hes.)1110 1518 y Ft(default)144 b Fu(Use)22 b(Readline's)g(default)g(\014lename)g(completion)g(if)g -(the)g(comp-)1590 408 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110 -570 y Ft(dirnames)96 b Fu(P)m(erform)46 b(directory)g(name)h -(completion)g(if)f(the)g(compsp)s(ec)1590 680 y(generates)32 -b(no)e(matc)m(hes.)1110 841 y Ft(filenames)1590 951 y -Fu(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f(generates)j -(\014lenames,)1590 1060 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h +(the)g(comp-)1590 1628 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110 +1778 y Ft(dirnames)96 b Fu(P)m(erform)46 b(directory)g(name)h +(completion)g(if)f(the)g(compsp)s(ec)1590 1888 y(generates)32 +b(no)e(matc)m(hes.)1110 2039 y Ft(filenames)1590 2148 +y Fu(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f(generates)j +(\014lenames,)1590 2258 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h (\014lename-sp)s(eci\014c)h(pro)s(cessing)e(\(lik)m(e)1590 -1170 y(adding)22 b(a)g(slash)g(to)h(directory)f(names,)i(quoting)f(sp)s -(ecial)f(c)m(har-)1590 1279 y(acters,)39 b(or)d(suppressing)f(trailing) -i(spaces\).)59 b(This)35 b(option)i(is)1590 1389 y(in)m(tended)30 +2367 y(adding)22 b(a)g(slash)g(to)h(directory)f(names,)i(quoting)f(sp)s +(ecial)f(c)m(har-)1590 2477 y(acters,)39 b(or)d(suppressing)f(trailing) +i(spaces\).)59 b(This)35 b(option)i(is)1590 2587 y(in)m(tended)30 b(to)g(b)s(e)g(used)f(with)g(shell)i(functions)e(sp)s(eci\014ed)g(with) -1590 1499 y Ft(-F)p Fu(.)1110 1660 y Ft(noquote)144 b +1590 2696 y Ft(-F)p Fu(.)1110 2847 y Ft(noquote)144 b Fu(T)-8 b(ell)28 b(Readline)g(not)g(to)g(quote)g(the)g(completed)g(w)m -(ords)f(if)h(they)1590 1770 y(are)j(\014lenames)f(\(quoting)h -(\014lenames)g(is)f(the)h(default\).)1110 1931 y Ft(nosort)192 +(ords)f(if)h(they)1590 2956 y(are)j(\014lenames)f(\(quoting)h +(\014lenames)g(is)f(the)h(default\).)1110 3107 y Ft(nosort)192 b Fu(T)-8 b(ell)23 b(Readline)g(not)f(to)h(sort)g(the)f(list)h(of)f(p)s -(ossible)g(completions)1590 2041 y(alphab)s(etically)-8 -b(.)1110 2202 y Ft(nospace)144 b Fu(T)-8 b(ell)40 b(Readline)g(not)g +(ossible)g(completions)1590 3217 y(alphab)s(etically)-8 +b(.)1110 3367 y Ft(nospace)144 b Fu(T)-8 b(ell)40 b(Readline)g(not)g (to)g(app)s(end)d(a)j(space)g(\(the)f(default\))h(to)1590 -2312 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)1110 -2473 y Ft(plusdirs)96 b Fu(After)30 b(an)m(y)h(matc)m(hes)g(de\014ned)d -(b)m(y)i(the)g(compsp)s(ec)g(are)g(gener-)1590 2583 y(ated,)g +3477 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)1110 +3628 y Ft(plusdirs)96 b Fu(After)30 b(an)m(y)h(matc)m(hes)g(de\014ned)d +(b)m(y)i(the)g(compsp)s(ec)g(are)g(gener-)1590 3737 y(ated,)g (directory)f(name)g(completion)i(is)d(attempted)i(and)f(an)m(y)1590 -2693 y(matc)m(hes)j(are)e(added)g(to)h(the)g(results)f(of)g(the)h -(other)g(actions.)630 2854 y Ft(-A)f Fj(action)66 b Fu(The)25 +3847 y(matc)m(hes)j(are)e(added)g(to)h(the)g(results)f(of)g(the)h +(other)g(actions.)630 3998 y Ft(-A)f Fj(action)66 b Fu(The)25 b Fr(action)h Fu(ma)m(y)g(b)s(e)e(one)h(of)h(the)f(follo)m(wing)i(to)e -(generate)i(a)e(list)h(of)f(p)s(ossible)1110 2964 y(completions:)1110 -3125 y Ft(alias)240 b Fu(Alias)31 b(names.)41 b(Ma)m(y)31 +(generate)i(a)e(list)h(of)f(p)s(ossible)1110 4107 y(completions:)1110 +4258 y Ft(alias)240 b Fu(Alias)31 b(names.)41 b(Ma)m(y)31 b(also)h(b)s(e)e(sp)s(eci\014ed)f(as)i Ft(-a)p Fu(.)1110 -3287 y Ft(arrayvar)96 b Fu(Arra)m(y)31 b(v)-5 b(ariable)31 -b(names.)1110 3448 y Ft(binding)144 b Fu(Readline)30 +4408 y Ft(arrayvar)96 b Fu(Arra)m(y)31 b(v)-5 b(ariable)31 +b(names.)1110 4559 y Ft(binding)144 b Fu(Readline)30 b(k)m(ey)f(binding)f(names)h(\(see)h(Section)f(8.4)h([Bindable)1590 -3558 y(Readline)h(Commands],)f(page)h(127\).)1110 3719 +4669 y(Readline)h(Commands],)f(page)h(133\).)1110 4819 y Ft(builtin)144 b Fu(Names)21 b(of)g(shell)f(builtin)h(commands.)37 -b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 3829 -y(as)31 b Ft(-b)p Fu(.)1110 3990 y Ft(command)144 b Fu(Command)29 +b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 4929 +y(as)31 b Ft(-b)p Fu(.)1110 5080 y Ft(command)144 b Fu(Command)29 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i -Ft(-c)p Fu(.)1110 4152 y Ft(directory)1590 4261 y Fu(Directory)h +Ft(-c)p Fu(.)1110 5230 y Ft(directory)1590 5340 y Fu(Directory)h (names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g -Ft(-d)p Fu(.)1110 4423 y Ft(disabled)96 b Fu(Names)31 -b(of)g(disabled)f(shell)g(builtins.)1110 4584 y Ft(enabled)144 -b Fu(Names)31 b(of)g(enabled)f(shell)g(builtins.)1110 -4746 y Ft(export)192 b Fu(Names)34 b(of)f(exp)s(orted)f(shell)h(v)-5 -b(ariables.)49 b(Ma)m(y)35 b(also)e(b)s(e)g(sp)s(eci-)1590 -4855 y(\014ed)d(as)g Ft(-e)p Fu(.)1110 5017 y Ft(file)288 +Ft(-d)p Fu(.)p eop end +%%Page: 148 154 +TeXDict begin 148 153 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(148)1110 299 y Ft(disabled)96 +b Fu(Names)31 b(of)g(disabled)f(shell)g(builtins.)1110 +455 y Ft(enabled)144 b Fu(Names)31 b(of)g(enabled)f(shell)g(builtins.) +1110 610 y Ft(export)192 b Fu(Names)34 b(of)f(exp)s(orted)f(shell)h(v) +-5 b(ariables.)49 b(Ma)m(y)35 b(also)e(b)s(e)g(sp)s(eci-)1590 +720 y(\014ed)d(as)g Ft(-e)p Fu(.)1110 876 y Ft(file)288 b Fu(File)32 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f -(as)i Ft(-f)p Fu(.)1110 5178 y Ft(function)96 b Fu(Names)31 -b(of)g(shell)f(functions.)1110 5340 y Ft(group)240 b +(as)i Ft(-f)p Fu(.)1110 1031 y Ft(function)96 b Fu(Names)31 +b(of)g(shell)f(functions.)1110 1187 y Ft(group)240 b Fu(Group)30 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g -(as)g Ft(-g)p Fu(.)p eop end -%%Page: 142 148 -TeXDict begin 142 147 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(142)1110 299 y Ft(helptopic)1590 -408 y Fu(Help)37 b(topics)g(as)g(accepted)h(b)m(y)e(the)h -Ft(help)f Fu(builtin)g(\(see)h(Sec-)1590 518 y(tion)31 -b(4.2)g([Bash)g(Builtins],)g(page)g(51\).)1110 689 y +(as)g Ft(-g)p Fu(.)1110 1343 y Ft(helptopic)1590 1452 +y Fu(Help)37 b(topics)g(as)g(accepted)h(b)m(y)e(the)h +Ft(help)f Fu(builtin)g(\(see)h(Sec-)1590 1562 y(tion)31 +b(4.2)g([Bash)g(Builtins],)g(page)g(55\).)1110 1718 y Ft(hostname)96 b Fu(Hostnames,)89 b(as)76 b(tak)m(en)h(from)f(the)g -(\014le)h(sp)s(eci\014ed)e(b)m(y)1590 799 y(the)55 b +(\014le)h(sp)s(eci\014ed)e(b)m(y)1590 1827 y(the)55 b Ft(HOSTFILE)e Fu(shell)j(v)-5 b(ariable)56 b(\(see)g(Section)g(5.2)h -([Bash)1590 908 y(V)-8 b(ariables],)32 b(page)f(73\).)1110 -1080 y Ft(job)336 b Fu(Job)31 b(names,)h(if)g(job)f(con)m(trol)i(is)f +([Bash)1590 1937 y(V)-8 b(ariables],)32 b(page)f(78\).)1110 +2093 y Ft(job)336 b Fu(Job)31 b(names,)h(if)g(job)f(con)m(trol)i(is)f (activ)m(e.)46 b(Ma)m(y)33 b(also)g(b)s(e)e(sp)s(eci-)1590 -1189 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 1361 y Ft(keyword)144 +2202 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 2358 y Ft(keyword)144 b Fu(Shell)30 b(reserv)m(ed)h(w)m(ords.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-k)p Fu(.)1110 -1532 y Ft(running)144 b Fu(Names)31 b(of)g(running)d(jobs,)i(if)h(job)f -(con)m(trol)h(is)g(activ)m(e.)1110 1703 y Ft(service)144 +2514 y Ft(running)144 b Fu(Names)31 b(of)g(running)d(jobs,)i(if)h(job)f +(con)m(trol)h(is)g(activ)m(e.)1110 2669 y Ft(service)144 b Fu(Service)31 b(names.)41 b(Ma)m(y)31 b(also)g(b)s(e)f(sp)s -(eci\014ed)g(as)g Ft(-s)p Fu(.)1110 1874 y Ft(setopt)192 +(eci\014ed)g(as)g Ft(-s)p Fu(.)1110 2825 y Ft(setopt)192 b Fu(V)-8 b(alid)39 b(argumen)m(ts)g(for)f(the)h Ft(-o)e -Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)1590 1984 -y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f(62\).) -1110 2155 y Ft(shopt)240 b Fu(Shell)40 b(option)g(names)g(as)g +Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)1590 2935 +y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f(67\).) +1110 3091 y Ft(shopt)240 b Fu(Shell)40 b(option)g(names)g(as)g (accepted)i(b)m(y)e(the)g Ft(shopt)e Fu(builtin)1590 -2265 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(51\).) -1110 2436 y Ft(signal)192 b Fu(Signal)31 b(names.)1110 -2607 y Ft(stopped)144 b Fu(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)g -(job)g(con)m(trol)i(is)f(activ)m(e.)1110 2778 y Ft(user)288 +3200 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(55\).) +1110 3356 y Ft(signal)192 b Fu(Signal)31 b(names.)1110 +3512 y Ft(stopped)144 b Fu(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)g +(job)g(con)m(trol)i(is)f(activ)m(e.)1110 3667 y Ft(user)288 b Fu(User)30 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f -(as)i Ft(-u)p Fu(.)1110 2950 y Ft(variable)96 b Fu(Names)36 +(as)i Ft(-u)p Fu(.)1110 3823 y Ft(variable)96 b Fu(Names)36 b(of)g(all)g(shell)g(v)-5 b(ariables.)56 b(Ma)m(y)37 -b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)1590 3059 y Ft(-v)p -Fu(.)630 3230 y Ft(-C)30 b Fj(command)1110 3340 y Fr(command)35 +b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)1590 3933 y Ft(-v)p +Fu(.)630 4088 y Ft(-C)30 b Fj(command)1110 4198 y Fr(command)35 b Fu(is)e(executed)g(in)e(a)i(subshell)e(en)m(vironmen)m(t,)i(and)f -(its)g(output)g(is)1110 3450 y(used)e(as)g(the)h(p)s(ossible)f -(completions.)630 3621 y Ft(-F)g Fj(function)1110 3730 -y Fu(The)39 b(shell)g(function)g Fr(function)g Fu(is)g(executed)h(in)f -(the)g(curren)m(t)g(shell)g(en)m(vi-)1110 3840 y(ronmen)m(t.)72 -b(When)41 b(it)g(is)g(executed,)k($1)c(is)g(the)g(name)g(of)g(the)g -(command)1110 3950 y(whose)34 b(argumen)m(ts)h(are)g(b)s(eing)f -(completed,)j($2)e(is)f(the)h(w)m(ord)f(b)s(eing)g(com-)1110 -4059 y(pleted,)44 b(and)c($3)i(is)e(the)h(w)m(ord)g(preceding)f(the)h -(w)m(ord)f(b)s(eing)h(completed,)1110 4169 y(as)g(describ)s(ed)f(ab)s -(o)m(v)m(e)i(\(see)g(Section)f(8.6)h([Programmable)g(Completion],)1110 -4278 y(page)30 b(137\).)42 b(When)29 b(it)h(\014nishes,)e(the)h(p)s -(ossible)g(completions)h(are)g(retriev)m(ed)1110 4388 -y(from)g(the)g(v)-5 b(alue)31 b(of)g(the)f Ft(COMPREPLY)e -Fu(arra)m(y)j(v)-5 b(ariable.)630 4559 y Ft(-G)30 b Fj(globpat)1110 -4669 y Fu(The)39 b(\014lename)h(expansion)g(pattern)g -Fr(globpat)j Fu(is)d(expanded)f(to)h(generate)1110 4778 -y(the)31 b(p)s(ossible)e(completions.)630 4950 y Ft(-P)h +(its)g(output)g(is)1110 4308 y(used)38 b(as)h(the)g(p)s(ossible)f +(completions.)67 b(Argumen)m(ts)39 b(are)g(passed)f(as)h(with)1110 +4417 y(the)31 b Ft(-F)e Fu(option.)630 4573 y Ft(-F)h +Fj(function)1110 4682 y Fu(The)39 b(shell)g(function)g +Fr(function)g Fu(is)g(executed)h(in)f(the)g(curren)m(t)g(shell)g(en)m +(vi-)1110 4792 y(ronmen)m(t.)72 b(When)41 b(it)g(is)g(executed,)k($1)c +(is)g(the)g(name)g(of)g(the)g(command)1110 4902 y(whose)34 +b(argumen)m(ts)h(are)g(b)s(eing)f(completed,)j($2)e(is)f(the)h(w)m(ord) +f(b)s(eing)g(com-)1110 5011 y(pleted,)44 b(and)c($3)i(is)e(the)h(w)m +(ord)g(preceding)f(the)h(w)m(ord)f(b)s(eing)h(completed,)1110 +5121 y(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)i(\(see)g(Section)f(8.6)h +([Programmable)g(Completion],)1110 5230 y(page)30 b(143\).)42 +b(When)29 b(it)h(\014nishes,)e(the)h(p)s(ossible)g(completions)h(are)g +(retriev)m(ed)1110 5340 y(from)g(the)g(v)-5 b(alue)31 +b(of)g(the)f Ft(COMPREPLY)e Fu(arra)m(y)j(v)-5 b(ariable.)p +eop end +%%Page: 149 155 +TeXDict begin 149 154 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(149)630 299 y Ft(-G)30 +b Fj(globpat)1110 408 y Fu(The)39 b(\014lename)h(expansion)g(pattern)g +Fr(globpat)j Fu(is)d(expanded)f(to)h(generate)1110 518 +y(the)31 b(p)s(ossible)e(completions.)630 708 y Ft(-P)h Fj(prefix)66 b Fr(pre\014x)39 b Fu(is)34 b(added)f(at)i(the)f(b)s (eginning)f(of)i(eac)m(h)g(p)s(ossible)e(completion)i(after)1110 -5059 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630 -5230 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20 +817 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630 +1007 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20 b(app)s(ended)f(to)i(eac)m(h)h(p)s(ossible)e(completion)i(after)f(all)g -(other)g(options)1110 5340 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)p -eop end -%%Page: 143 149 -TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(143)630 299 y Ft(-W)30 -b Fj(wordlist)1110 408 y Fu(The)24 b Fr(w)m(ordlist)k +(other)g(options)1110 1116 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630 +1306 y Ft(-W)h Fj(wordlist)1110 1416 y Fu(The)24 b Fr(w)m(ordlist)k Fu(is)d(split)g(using)f(the)h(c)m(haracters)i(in)d(the)i -Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 518 y(as)36 +Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 1525 y(as)36 b(delimiters,)i(and)e(eac)m(h)h(resultan)m(t)g(w)m(ord)e(is)h -(expanded.)57 b(The)35 b(p)s(ossible)1110 628 y(completions)c(are)e +(expanded.)57 b(The)35 b(p)s(ossible)1110 1635 y(completions)c(are)e (the)h(mem)m(b)s(ers)f(of)g(the)h(resultan)m(t)g(list)g(whic)m(h)f -(matc)m(h)i(the)1110 737 y(w)m(ord)f(b)s(eing)g(completed.)630 -909 y Ft(-X)g Fj(filterpat)1110 1019 y Fr(\014lterpat)d +(matc)m(h)i(the)1110 1744 y(w)m(ord)f(b)s(eing)g(completed.)630 +1934 y Ft(-X)g Fj(filterpat)1110 2043 y Fr(\014lterpat)d Fu(is)e(a)g(pattern)g(as)f(used)g(for)h(\014lename)g(expansion.)38 -b(It)25 b(is)g(applied)f(to)1110 1128 y(the)30 b(list)f(of)h(p)s +b(It)25 b(is)g(applied)f(to)1110 2153 y(the)30 b(list)f(of)h(p)s (ossible)f(completions)h(generated)h(b)m(y)e(the)g(preceding)h(options) -1110 1238 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m -(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 1347 +1110 2263 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m +(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 2372 y(from)i(the)h(list.)42 b(A)30 b(leading)i(`)p Ft(!)p Fu(')e(in)g Fr(\014lterpat)j Fu(negates)f(the)f(pattern;)g(in)f(this) -1110 1457 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g -Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)630 1629 y(The)35 +1110 2482 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g +Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)630 2671 y(The)35 b(return)g(v)-5 b(alue)37 b(is)f(true)f(unless)h(an)f(in)m(v)-5 b(alid)37 b(option)f(is)g(supplied,)g(an)g(option)h(other)630 -1738 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f +2781 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f Fr(name)44 b Fu(argumen)m(t,)c(an)e(attempt)i(is)e(made)g(to)630 -1848 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a) +2891 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a) h Fr(name)k Fu(for)30 b(whic)m(h)g(no)g(sp)s(eci\014cation)h(exists,) -630 1958 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s -(eci\014cation.)150 2129 y Ft(compopt)870 2270 y(compopt)46 +630 3000 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s +(eci\014cation.)150 3190 y Ft(compopt)870 3339 y(compopt)46 b([-o)h Fj(option)p Ft(])f([-DEI])g([+o)h Fj(option)p -Ft(])e([)p Fj(name)p Ft(])630 2411 y Fu(Mo)s(dify)33 +Ft(])e([)p Fj(name)p Ft(])630 3489 y Fu(Mo)s(dify)33 b(completion)h(options)g(for)f(eac)m(h)h Fr(name)39 b Fu(according)34 b(to)g(the)f Fr(option)p Fu(s,)i(or)e(for)g(the)630 -2520 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f +3598 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f Fr(name)5 b Fu(s)44 b(are)h(supplied.)80 b(If)43 b(no)h -Fr(option)p Fu(s)h(are)630 2630 y(giv)m(en,)30 b(displa)m(y)e(the)g +Fr(option)p Fu(s)h(are)630 3708 y(giv)m(en,)30 b(displa)m(y)e(the)g (completion)h(options)g(for)e(eac)m(h)i Fr(name)34 b -Fu(or)27 b(the)i(curren)m(t)e(completion.)630 2740 y(The)f(p)s(ossible) +Fu(or)27 b(the)i(curren)m(t)e(completion.)630 3818 y(The)f(p)s(ossible) g(v)-5 b(alues)27 b(of)f Fr(option)h Fu(are)g(those)g(v)-5 b(alid)26 b(for)g(the)h Ft(complete)d Fu(builtin)i(describ)s(ed)630 -2849 y(ab)s(o)m(v)m(e.)41 b(The)27 b Ft(-D)f Fu(option)i(indicates)g +3927 y(ab)s(o)m(v)m(e.)41 b(The)27 b Ft(-D)f Fu(option)i(indicates)g (that)g(other)f(supplied)f(options)i(should)e(apply)h(to)h(the)630 -2959 y(\\default")33 b(command)f(completion;)i(that)f(is,)g(completion) -g(attempted)g(on)f(a)g(command)630 3068 y(for)g(whic)m(h)g(no)g +4037 y(\\default")33 b(command)f(completion;)i(that)f(is,)g(completion) +g(attempted)g(on)f(a)g(command)630 4146 y(for)g(whic)m(h)g(no)g (completion)i(has)e(previously)g(b)s(een)g(de\014ned.)45 -b(The)32 b Ft(-E)f Fu(option)i(indicates)630 3178 y(that)23 +b(The)32 b Ft(-E)f Fu(option)i(indicates)630 4256 y(that)23 b(other)f(supplied)e(options)j(should)e(apply)g(to)i(\\empt)m(y")g -(command)f(completion;)k(that)630 3287 y(is,)36 b(completion)g +(command)f(completion;)k(that)630 4366 y(is,)36 b(completion)g (attempted)g(on)e(a)h(blank)g(line.)54 b(The)34 b Ft(-I)g -Fu(option)h(indicates)g(that)h(other)630 3397 y(supplied)23 +Fu(option)h(indicates)g(that)h(other)630 4475 y(supplied)23 b(options)i(should)f(apply)g(to)i(completion)g(on)e(the)h(initial)h -(non-assignmen)m(t)f(w)m(ord)630 3507 y(on)37 b(the)f(line,)j(or)e +(non-assignmen)m(t)f(w)m(ord)630 4585 y(on)37 b(the)f(line,)j(or)e (after)g(a)g(command)f(delimiter)i(suc)m(h)e(as)h(`)p Ft(;)p Fu(')g(or)f(`)p Ft(|)p Fu(',)j(whic)m(h)e(is)f(usually)630 -3616 y(command)30 b(name)h(completion.)630 3757 y(If)k(m)m(ultiple)i +4694 y(command)30 b(name)h(completion.)630 4844 y(If)k(m)m(ultiple)i (options)f(are)g(supplied,)g(the)g Ft(-D)g Fu(option)g(tak)m(es)h -(precedence)g(o)m(v)m(er)g Ft(-E)p Fu(,)g(and)630 3867 +(precedence)g(o)m(v)m(er)g Ft(-E)p Fu(,)g(and)630 4954 y(b)s(oth)30 b(tak)m(e)i(precedence)e(o)m(v)m(er)i Ft(-I)630 -4007 y Fu(The)23 b(return)g(v)-5 b(alue)25 b(is)f(true)g(unless)f(an)h +5103 y Fu(The)23 b(return)g(v)-5 b(alue)25 b(is)f(true)g(unless)f(an)h (in)m(v)-5 b(alid)24 b(option)h(is)f(supplied,)g(an)g(attempt)h(is)f -(made)630 4117 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h +(made)630 5213 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h Fr(name)k Fu(for)31 b(whic)m(h)g(no)g(completion)i(sp)s(eci\014cation)f -(exists,)630 4226 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150 -4486 y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150 -4645 y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h -(additional)g(completion)g(functionalit)m(y)h(b)s(ey)m(ond)d(the)i -(default)150 4755 y(actions)29 b Ft(complete)d Fu(and)i -Ft(compgen)e Fu(pro)m(vide)i(is)h(to)f(use)g(a)h(shell)f(function)g -(and)g(bind)e(it)j(to)g(a)g(particular)150 4864 y(command)h(using)g -Ft(complete)e(-F)p Fu(.)275 5011 y(The)j(follo)m(wing)j(function)e(pro) -m(vides)g(completions)i(for)e(the)g Ft(cd)g Fu(builtin.)46 -b(It)32 b(is)h(a)f(reasonably)h(go)s(o)s(d)150 5121 y(example)41 +(exists,)630 5322 y(or)e(an)h(output)f(error)g(o)s(ccurs.)p +eop end +%%Page: 150 156 +TeXDict begin 150 155 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(150)150 299 y Fs(8.8)68 +b(A)44 b(Programmable)j(Completion)f(Example)150 458 +y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h(additional)g +(completion)g(functionalit)m(y)h(b)s(ey)m(ond)d(the)i(default)150 +568 y(actions)29 b Ft(complete)d Fu(and)i Ft(compgen)e +Fu(pro)m(vide)i(is)h(to)f(use)g(a)h(shell)f(function)g(and)g(bind)e(it) +j(to)g(a)g(particular)150 677 y(command)h(using)g Ft(complete)e(-F)p +Fu(.)275 829 y(The)j(follo)m(wing)j(function)e(pro)m(vides)g +(completions)i(for)e(the)g Ft(cd)g Fu(builtin.)46 b(It)32 +b(is)h(a)f(reasonably)h(go)s(o)s(d)150 939 y(example)41 b(of)g(what)f(shell)h(functions)f(m)m(ust)g(do)h(when)e(used)h(for)g -(completion.)73 b(This)39 b(function)h(uses)150 5230 +(completion.)73 b(This)39 b(function)h(uses)150 1049 y(the)32 b(w)m(ord)f(passed)g(as)h Ft($2)f Fu(to)h(determine)g(the)f (directory)h(name)g(to)g(complete.)46 b(Y)-8 b(ou)32 -b(can)g(also)g(use)g(the)150 5340 y Ft(COMP_WORDS)c Fu(arra)m(y)i(v)-5 +b(can)g(also)g(use)g(the)150 1158 y Ft(COMP_WORDS)c Fu(arra)m(y)i(v)-5 b(ariable;)32 b(the)e(curren)m(t)h(w)m(ord)f(is)g(indexed)g(b)m(y)g -(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)p eop end -%%Page: 144 150 -TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(144)275 299 y(The)42 +(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)275 1310 y(The)42 b(function)h(relies)h(on)e(the)i Ft(complete)c Fu(and)j Ft(compgen)e Fu(builtins)h(to)i(do)f(m)m(uc)m(h)g(of)g(the)h(w)m(ork,) -150 408 y(adding)25 b(only)h(the)g(things)g(that)g(the)g(Bash)g +150 1420 y(adding)25 b(only)h(the)g(things)g(that)g(the)g(Bash)g Ft(cd)f Fu(do)s(es)g(b)s(ey)m(ond)g(accepting)j(basic)e(directory)g -(names:)38 b(tilde)150 518 y(expansion)22 b(\(see)h(Section)g(3.5.2)g -([Tilde)g(Expansion],)g(page)g(24\),)i(searc)m(hing)e(directories)g(in) -e Fr($CDP)-8 b(A)g(TH)p Fu(,)150 628 y(whic)m(h)21 b(is)h(describ)s(ed) -e(ab)s(o)m(v)m(e)j(\(see)f(Section)h(4.1)f([Bourne)g(Shell)f -(Builtins],)j(page)e(44\),)j(and)c(basic)h(supp)s(ort)150 -737 y(for)31 b(the)h Ft(cdable_vars)d Fu(shell)i(option)h(\(see)h -(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)f(66\).)46 -b Ft(_comp_)150 847 y(cd)30 b Fu(mo)s(di\014es)g(the)h(v)-5 +(names:)38 b(tilde)150 1529 y(expansion)22 b(\(see)h(Section)g(3.5.2)g +([Tilde)g(Expansion],)g(page)g(25\),)i(searc)m(hing)e(directories)g(in) +e Fr($CDP)-8 b(A)g(TH)p Fu(,)150 1639 y(whic)m(h)21 b(is)h(describ)s +(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)h(4.1)f([Bourne)g(Shell)f +(Builtins],)j(page)e(48\),)j(and)c(basic)h(supp)s(ort)150 +1748 y(for)31 b(the)h Ft(cdable_vars)d Fu(shell)i(option)h(\(see)h +(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)f(71\).)46 +b Ft(_comp_)150 1858 y(cd)30 b Fu(mo)s(di\014es)g(the)h(v)-5 b(alue)31 b(of)g Fr(IFS)36 b Fu(so)31 b(that)g(it)g(con)m(tains)h(only) f(a)g(newline)g(to)h(accommo)s(date)g(\014le)f(names)150 -956 y(con)m(taining)i(spaces)g(and)e(tabs)h({)g Ft(compgen)e +1968 y(con)m(taining)i(spaces)g(and)e(tabs)h({)g Ft(compgen)e Fu(prin)m(ts)h(the)h(p)s(ossible)f(completions)i(it)g(generates)g(one)f -(p)s(er)150 1066 y(line.)275 1230 y(P)m(ossible)24 b(completions)h(go)g +(p)s(er)150 2077 y(line.)275 2229 y(P)m(ossible)24 b(completions)h(go)g (in)m(to)g(the)f Fr(COMPREPL)-8 b(Y)36 b Fu(arra)m(y)24 b(v)-5 b(ariable,)26 b(one)e(completion)i(p)s(er)c(arra)m(y)150 -1340 y(elemen)m(t.)42 b(The)30 b(programmable)g(completion)i(system)e +2339 y(elemen)m(t.)42 b(The)30 b(programmable)g(completion)i(system)e (retriev)m(es)h(the)g(completions)g(from)f(there)g(when)150 -1450 y(the)h(function)f(returns.)390 1614 y Ft(#)47 b(A)h(completion)d -(function)g(for)i(the)g(cd)g(builtin)390 1724 y(#)g(based)g(on)g(the)g +2448 y(the)h(function)f(returns.)390 2600 y Ft(#)47 b(A)h(completion)d +(function)g(for)i(the)g(cd)g(builtin)390 2710 y(#)g(based)g(on)g(the)g (cd)g(completion)e(function)h(from)g(the)h(bash_completion)d(package) -390 1833 y(_comp_cd\(\))390 1943 y({)581 2052 y(local)i(IFS=$')g -(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 2162 y(local)g(cur)h -(_skipdot)f(_cdpath)581 2271 y(local)g(i)i(j)f(k)581 -2491 y(#)g(Tilde)g(expansion,)e(which)h(also)h(expands)f(tilde)g(to)h -(full)g(pathname)581 2600 y(case)g("$2")f(in)581 2710 -y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)581 2819 y(*\))286 -b(cur=$2)46 b(;;)581 2929 y(esac)581 3148 y(#)h(no)h(cdpath)e(or)h +390 2819 y(_comp_cd\(\))390 2929 y({)581 3039 y(local)i(IFS=$')g +(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 3148 y(local)g(cur)h +(_skipdot)f(_cdpath)581 3258 y(local)g(i)i(j)f(k)581 +3477 y(#)g(Tilde)g(expansion,)e(which)h(also)h(expands)f(tilde)g(to)h +(full)g(pathname)581 3587 y(case)g("$2")f(in)581 3696 +y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)581 3806 y(*\))286 +b(cur=$2)46 b(;;)581 3915 y(esac)581 4134 y(#)h(no)h(cdpath)e(or)h (absolute)e(pathname)h(--)h(straight)f(directory)f(completion)581 -3258 y(if)i([[)g(-z)g("${CDPATH:-}")e(]])i(||)g([[)g("$cur")f(==)h -(@\(./*|../*|/*\))d(]];)j(then)772 3367 y(#)g(compgen)f(prints)g(paths) +4244 y(if)i([[)g(-z)g("${CDPATH:-}")e(]])i(||)g([[)g("$cur")f(==)h +(@\(./*|../*|/*\))d(]];)j(then)772 4354 y(#)g(compgen)f(prints)g(paths) h(one)f(per)h(line;)g(could)f(also)h(use)g(while)f(loop)772 -3477 y(IFS=$'\\n')772 3587 y(COMPREPLY=\()f($\(compgen)g(-d)i(--)g -("$cur"\))f(\))772 3696 y(IFS=$')g(\\t\\n')581 3806 y(#)h +4463 y(IFS=$'\\n')772 4573 y(COMPREPLY=\()f($\(compgen)g(-d)i(--)g +("$cur"\))f(\))772 4682 y(IFS=$')g(\\t\\n')581 4792 y(#)h (CDPATH+directories)c(in)k(the)g(current)f(directory)f(if)j(not)e(in)i -(CDPATH)581 3915 y(else)772 4025 y(IFS=$'\\n')772 4134 -y(_skipdot=false)772 4244 y(#)f(preprocess)e(CDPATH)h(to)i(convert)d -(null)i(directory)e(names)i(to)g(.)772 4354 y(_cdpath=${CDPATH/#:/.:}) -772 4463 y(_cdpath=${_cdpath//::/:.)o(:})772 4573 y -(_cdpath=${_cdpath/\045:/:.})772 4682 y(for)g(i)g(in)g -(${_cdpath//:/$'\\n'};)c(do)963 4792 y(if)k([[)g($i)g(-ef)g(.)h(]];)f -(then)f(_skipdot=true;)e(fi)963 4902 y(k="${#COMPREPLY[@]}")963 -5011 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do) -1154 5121 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory) -963 5230 y(done)772 5340 y(done)p eop end -%%Page: 145 151 -TeXDict begin 145 150 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(145)772 299 y Ft($_skipdot)45 -b(||)i(COMPREPLY+=\()e($\(compgen)g(-d)i(--)g("$cur"\))f(\))772 -408 y(IFS=$')g(\\t\\n')581 518 y(fi)581 737 y(#)h(variable)f(names)g -(if)h(appropriate)e(shell)i(option)f(set)h(and)f(no)i(completions)581 -847 y(if)f(shopt)f(-q)i(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c(-eq) -k(0)g(]];)g(then)772 956 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g -("$cur"\))f(\))581 1066 y(fi)581 1285 y(return)g(0)390 -1395 y(})275 1529 y Fu(W)-8 b(e)31 b(install)g(the)g(completion)h -(function)e(using)f(the)i Ft(-F)f Fu(option)h(to)g Ft(complete)p -Fu(:)390 1664 y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f -(and)i(append)f(slashes)g(to)h(directories;)390 1773 -y(#)g(use)g(the)g(bash)g(default)f(completion)f(for)i(other)f -(arguments)390 1883 y(complete)g(-o)h(filenames)e(-o)i(nospace)f(-o)h -(bashdefault)e(-F)i(_comp_cd)f(cd)150 2017 y Fu(Since)33 -b(w)m(e'd)g(lik)m(e)i(Bash)e(and)f(Readline)i(to)g(tak)m(e)g(care)g(of) -f(some)h(of)f(the)g(other)h(details)g(for)e(us,)i(w)m(e)f(use)150 -2127 y(sev)m(eral)43 b(other)g(options)f(to)h(tell)g(Bash)f(and)f -(Readline)i(what)f(to)g(do.)76 b(The)41 b Ft(-o)30 b(filenames)39 -b Fu(option)150 2237 y(tells)j(Readline)g(that)g(the)f(p)s(ossible)g -(completions)h(should)f(b)s(e)f(treated)i(as)g(\014lenames,)i(and)d -(quoted)150 2346 y(appropriately)-8 b(.)53 b(That)34 -b(option)h(will)g(also)g(cause)g(Readline)g(to)g(app)s(end)e(a)h(slash) -g(to)h(\014lenames)g(it)g(can)150 2456 y(determine)i(are)g(directories) -h(\(whic)m(h)g(is)f(wh)m(y)f(w)m(e)i(migh)m(t)f(w)m(an)m(t)h(to)g -(extend)f Ft(_comp_cd)e Fu(to)i(app)s(end)f(a)150 2565 -y(slash)22 b(if)g(w)m(e're)h(using)f(directories)h(found)e(via)i -Fr(CDP)-8 b(A)g(TH)10 b Fu(:)37 b(Readline)23 b(can't)g(tell)g(those)g -(completions)h(are)150 2675 y(directories\).)45 b(The)31 -b Ft(-o)f(nospace)f Fu(option)j(tells)g(Readline)g(to)h(not)e(app)s -(end)f(a)i(space)g(c)m(haracter)h(to)f(the)150 2785 y(directory)c -(name,)h(in)f(case)h(w)m(e)f(w)m(an)m(t)h(to)f(app)s(end)f(to)h(it.)41 -b(The)27 b Ft(-o)j(bashdefault)25 b Fu(option)j(brings)f(in)h(the)150 -2894 y(rest)h(of)f(the)h Ft(")p Fu(Bash)f(default)p Ft(")h -Fu(completions)g({)g(p)s(ossible)f(completion)i(that)f(Bash)f(adds)g -(to)h(the)g(default)150 3004 y(Readline)f(set.)40 b(These)28 +(CDPATH)581 4902 y(else)772 5011 y(IFS=$'\\n')772 5121 +y(_skipdot=false)772 5230 y(#)f(preprocess)e(CDPATH)h(to)i(convert)d +(null)i(directory)e(names)i(to)g(.)772 5340 y(_cdpath=${CDPATH/#:/.:})p +eop end +%%Page: 151 157 +TeXDict begin 151 156 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(151)772 299 y Ft +(_cdpath=${_cdpath//::/:.)o(:})772 408 y(_cdpath=${_cdpath/\045:/:.}) +772 518 y(for)47 b(i)g(in)g(${_cdpath//:/$'\\n'};)c(do)963 +628 y(if)k([[)g($i)g(-ef)g(.)h(]];)f(then)f(_skipdot=true;)e(fi)963 +737 y(k="${#COMPREPLY[@]}")963 847 y(for)j(j)g(in)g($\()g(compgen)f(-d) +h(--)h("$i/$cur")d(\);)i(do)1154 956 y(COMPREPLY[k++]=${j#$i/})375 +b(#)48 b(cut)f(off)f(directory)963 1066 y(done)772 1176 +y(done)772 1285 y($_skipdot)f(||)i(COMPREPLY+=\()e($\(compgen)g(-d)i +(--)g("$cur"\))f(\))772 1395 y(IFS=$')g(\\t\\n')581 1504 +y(fi)581 1724 y(#)h(variable)f(names)g(if)h(appropriate)e(shell)i +(option)f(set)h(and)f(no)i(completions)581 1833 y(if)f(shopt)f(-q)i +(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c(-eq)k(0)g(]];)g(then)772 +1943 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g("$cur"\))f(\))581 +2052 y(fi)581 2271 y(return)g(0)390 2381 y(})275 2516 +y Fu(W)-8 b(e)31 b(install)g(the)g(completion)h(function)e(using)f(the) +i Ft(-F)f Fu(option)h(to)g Ft(complete)p Fu(:)390 2650 +y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f(and)i(append)f +(slashes)g(to)h(directories;)390 2760 y(#)g(use)g(the)g(bash)g(default) +f(completion)f(for)i(other)f(arguments)390 2869 y(complete)g(-o)h +(filenames)e(-o)i(nospace)f(-o)h(bashdefault)e(-F)i(_comp_cd)f(cd)150 +3004 y Fu(Since)33 b(w)m(e'd)g(lik)m(e)i(Bash)e(and)f(Readline)i(to)g +(tak)m(e)g(care)g(of)f(some)h(of)f(the)g(other)h(details)g(for)e(us,)i +(w)m(e)f(use)150 3113 y(sev)m(eral)43 b(other)g(options)f(to)h(tell)g +(Bash)f(and)f(Readline)i(what)f(to)g(do.)76 b(The)41 +b Ft(-o)30 b(filenames)39 b Fu(option)150 3223 y(tells)j(Readline)g +(that)g(the)f(p)s(ossible)g(completions)h(should)f(b)s(e)f(treated)i +(as)g(\014lenames,)i(and)d(quoted)150 3333 y(appropriately)-8 +b(.)53 b(That)34 b(option)h(will)g(also)g(cause)g(Readline)g(to)g(app)s +(end)e(a)h(slash)g(to)h(\014lenames)g(it)g(can)150 3442 +y(determine)i(are)g(directories)h(\(whic)m(h)g(is)f(wh)m(y)f(w)m(e)i +(migh)m(t)f(w)m(an)m(t)h(to)g(extend)f Ft(_comp_cd)e +Fu(to)i(app)s(end)f(a)150 3552 y(slash)22 b(if)g(w)m(e're)h(using)f +(directories)h(found)e(via)i Fr(CDP)-8 b(A)g(TH)10 b +Fu(:)37 b(Readline)23 b(can't)g(tell)g(those)g(completions)h(are)150 +3661 y(directories\).)45 b(The)31 b Ft(-o)f(nospace)f +Fu(option)j(tells)g(Readline)g(to)h(not)e(app)s(end)f(a)i(space)g(c)m +(haracter)h(to)f(the)150 3771 y(directory)c(name,)h(in)f(case)h(w)m(e)f +(w)m(an)m(t)h(to)f(app)s(end)f(to)h(it.)41 b(The)27 b +Ft(-o)j(bashdefault)25 b Fu(option)j(brings)f(in)h(the)150 +3880 y(rest)e(of)g(the)g Ft(")p Fu(Bash)g(default)p Ft(")g +Fu(completions)h({)f(p)s(ossible)f(completions)i(that)g(Bash)f(adds)f +(to)i(the)f(default)150 3990 y(Readline)i(set.)40 b(These)28 b(include)f(things)g(lik)m(e)i(command)e(name)h(completion,)h(v)-5 -b(ariable)28 b(completion)h(for)150 3113 y(w)m(ords)e(b)s(eginning)h +b(ariable)28 b(completion)h(for)150 4100 y(w)m(ords)e(b)s(eginning)h (with)f(`)p Ft($)p Fu(')h(or)g(`)p Ft(${)p Fu(',)h(completions)g(con)m (taining)g(pathname)f(expansion)g(patterns)g(\(see)150 -3223 y(Section)j(3.5.8)h([Filename)g(Expansion],)e(page)i(33\),)f(and)f -(so)h(on.)275 3357 y(Once)39 b(installed)i(using)e Ft(complete)p +4209 y(Section)j(3.5.8)h([Filename)g(Expansion],)e(page)i(35\),)f(and)f +(so)h(on.)275 4344 y(Once)39 b(installed)i(using)e Ft(complete)p Fu(,)h Ft(_comp_cd)d Fu(will)j(b)s(e)g(called)g(ev)m(ery)h(time)f(w)m -(e)g(attempt)h(w)m(ord)150 3467 y(completion)32 b(for)e(a)h -Ft(cd)e Fu(command.)275 3601 y(Man)m(y)34 b(more)g(examples)g({)g(an)g +(e)g(attempt)h(w)m(ord)150 4453 y(completion)32 b(for)e(a)h +Ft(cd)e Fu(command.)275 4588 y(Man)m(y)34 b(more)g(examples)g({)g(an)g (extensiv)m(e)h(collection)i(of)c(completions)i(for)f(most)g(of)g(the)g -(common)150 3711 y(GNU,)g(Unix,)h(and)d(Lin)m(ux)h(commands)g({)h(are)g +(common)150 4697 y(GNU,)g(Unix,)h(and)d(Lin)m(ux)h(commands)g({)h(are)g (a)m(v)-5 b(ailable)36 b(as)e(part)f(of)h(the)f(bash)p -2943 3711 28 4 v 39 w(completion)i(pro)5 b(ject.)150 -3821 y(This)33 b(is)h(installed)h(b)m(y)f(default)g(on)g(man)m(y)h +2943 4697 28 4 v 39 w(completion)i(pro)5 b(ject.)150 +4807 y(This)33 b(is)h(installed)h(b)m(y)f(default)g(on)g(man)m(y)h (GNU/Lin)m(ux)f(distributions.)51 b(Originally)35 b(written)f(b)m(y)g -(Ian)150 3930 y(Macdonald,)48 b(the)c(pro)5 b(ject)44 +(Ian)150 4917 y(Macdonald,)48 b(the)c(pro)5 b(ject)44 b(no)m(w)g(liv)m(es)h(at)f Ft(https:)11 b(/)g(/)g(github)g(.)g(com)g(/) g(sc)o(op)g(/)f(bash)o(-co)o(mple)o(tion)g(/)h Fu(.)150 -4040 y(There)30 b(are)h(p)s(orts)e(for)h(other)h(systems)f(suc)m(h)g -(as)h(Solaris)g(and)f(Mac)h(OS)f(X.)275 4174 y(An)54 -b(older)h(v)m(ersion)h(of)f(the)g(bash)p 1532 4174 V +5026 y(There)30 b(are)h(p)s(orts)e(for)h(other)h(systems)f(suc)m(h)g +(as)h(Solaris)g(and)f(Mac)h(OS)f(X.)275 5161 y(An)54 +b(older)h(v)m(ersion)h(of)f(the)g(bash)p 1532 5161 V 40 w(completion)h(pac)m(k)-5 b(age)57 b(is)e(distributed)f(with)h(bash) -f(in)h(the)150 4284 y Ft(examples/complete)26 b Fu(sub)s(directory)-8 +f(in)h(the)150 5270 y Ft(examples/complete)26 b Fu(sub)s(directory)-8 b(.)p eop end -%%Page: 146 152 -TeXDict begin 146 151 bop 3614 -116 a Fu(146)150 299 +%%Page: 152 158 +TeXDict begin 152 157 bop 3614 -116 a Fu(152)150 299 y Fp(9)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)150 554 y Fu(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the) f Fm(gnu)h Fu(History)g(Library)e(in)m(teractiv)m(ely)-8 @@ -18514,7 +19099,7 @@ Fm(gnu)f Fu(Readline)h(Library)f(Man)m(ual.)150 1025 y Fs(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)150 1184 y Fu(When)44 b(the)g Ft(-o)30 b(history)42 b Fu(option)i(to)h(the) f Ft(set)f Fu(builtin)h(is)g(enabled)g(\(see)g(Section)h(4.3.1)h([The)e -(Set)150 1294 y(Builtin],)32 b(page)g(62\),)h(the)e(shell)h(pro)m +(Set)150 1294 y(Builtin],)32 b(page)g(67\),)h(the)e(shell)h(pro)m (vides)f(access)h(to)g(the)f Fr(command)g(history)p Fu(,)h(the)f(list)h (of)f(commands)150 1404 y(previously)h(t)m(yp)s(ed.)47 b(The)33 b(v)-5 b(alue)33 b(of)f(the)h Ft(HISTSIZE)e @@ -18541,7 +19126,7 @@ h Ft($HISTSIZE)c Fu(lines)150 2422 y(are)35 b(copied)g(from)g(the)g (history)f(list)i(to)f(the)g(\014le)g(named)f(b)m(y)h Ft($HISTFILE)p Fu(.)51 b(If)35 b(the)g Ft(histappend)d Fu(shell)150 2532 y(option)26 b(is)g(set)g(\(see)h(Section)f(4.2)h -([Bash)f(Builtins],)h(page)g(51\),)h(the)e(lines)g(are)g(app)s(ended)e +([Bash)f(Builtins],)h(page)g(55\),)h(the)e(lines)g(are)g(app)s(ended)e (to)i(the)g(history)150 2641 y(\014le,)36 b(otherwise)f(the)g(history)f (\014le)h(is)f(o)m(v)m(erwritten.)55 b(If)34 b Ft(HISTFILE)e Fu(is)j(unset,)g(or)g(if)f(the)h(history)f(\014le)h(is)150 @@ -18570,7 +19155,7 @@ Fu(builtin)i(ma)m(y)h(b)s(e)e(used)g(to)i(displa)m(y)g(or)f(mo)s(dify)f (commands)g(are)g(a)m(v)-5 b(ailable)33 b(in)e(eac)m(h)150 3911 y(editing)45 b(mo)s(de)g(that)g(pro)m(vide)g(access)h(to)f(the)g (history)f(list)i(\(see)f(Section)h(8.4.2)g([Commands)e(F)-8 -b(or)150 4020 y(History],)31 b(page)h(128\).)275 4162 +b(or)150 4020 y(History],)31 b(page)h(134\).)275 4162 y(The)47 b(shell)i(allo)m(ws)h(con)m(trol)f(o)m(v)m(er)h(whic)m(h)e (commands)g(are)h(sa)m(v)m(ed)g(on)f(the)h(history)f(list.)95 b(The)150 4272 y Ft(HISTCONTROL)25 b Fu(and)j Ft(HISTIGNORE)e @@ -18587,14 +19172,14 @@ b Ft(lithist)e Fu(shell)i(option)h(causes)g(the)f(shell)g(to)150 (newlines)h(instead)g(of)g(semicolons.)68 b(The)39 b Ft(shopt)e Fu(builtin)i(is)150 4820 y(used)30 b(to)i(set)g(these)g (options.)43 b(See)32 b(Section)g(4.3.2)h([The)e(Shopt)f(Builtin],)j -(page)f(66,)g(for)f(a)h(description)150 4929 y(of)f Ft(shopt)p +(page)f(71,)g(for)f(a)h(description)150 4929 y(of)f Ft(shopt)p Fu(.)150 5181 y Fs(9.2)68 b(Bash)45 b(History)h(Builtins)150 5340 y Fu(Bash)31 b(pro)m(vides)f(t)m(w)m(o)i(builtin)e(commands)g (whic)m(h)g(manipulate)g(the)h(history)f(list)h(and)f(history)g (\014le.)p eop end -%%Page: 147 153 -TeXDict begin 147 152 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(147)150 +%%Page: 153 159 +TeXDict begin 153 158 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(153)150 299 y Ft(fc)870 430 y(fc)47 b([-e)g Fj(ename)p Ft(])f([-lnr])g([)p Fj(first)p Ft(])g([)p Fj(last)p Ft(])870 540 y(fc)h(-s)g([)p Fj(pat)p Ft(=)p Fj(rep)p Ft(])f([)p Fj(command)p Ft(])630 @@ -18645,7 +19230,7 @@ Fu(,)h(so)h(that)h(t)m(yping)f(`)p Ft(r)f(cc)p Fu(')630 3061 y(runs)35 b(the)h(last)h(command)f(b)s(eginning)g(with)g Ft(cc)f Fu(and)h(t)m(yping)g(`)p Ft(r)p Fu(')h(re-executes)h(the)e (last)630 3170 y(command)30 b(\(see)h(Section)h(6.6)f([Aliases],)h -(page)g(94\).)150 3324 y Ft(history)870 3455 y(history)46 +(page)g(100\).)150 3324 y Ft(history)870 3455 y(history)46 b([)p Fj(n)p Ft(])870 3565 y(history)g(-c)870 3674 y(history)g(-d)h Fj(offset)870 3784 y Ft(history)f(-d)h Fj(start)p Ft(-)p Fj(end)870 3893 y Ft(history)f([-anrw])g([)p Fj(filename)p @@ -18672,823 +19257,903 @@ Fr(o\013set)p Fu(.)59 b(If)36 b Fr(o\013set)j Fu(is)d(p)s(ositiv)m(e,)j (it)1110 5340 y(should)32 b(b)s(e)h(sp)s(eci\014ed)f(as)i(it)g(app)s (ears)e(when)g(the)i(history)f(is)g(displa)m(y)m(ed.)50 b(If)p eop end -%%Page: 148 154 -TeXDict begin 148 153 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(148)1110 +%%Page: 154 160 +TeXDict begin 154 159 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(154)1110 299 y Fr(o\013set)26 b Fu(is)d(negativ)m(e,)k(it)c(is)g(in)m(terpreted) h(as)f(relativ)m(e)i(to)f(one)f(greater)h(than)f(the)1110 408 y(last)36 b(history)f(p)s(osition,)h(so)f(negativ)m(e)i(indices)e (coun)m(t)h(bac)m(k)f(from)g(the)g(end)1110 518 y(of)h(the)g(history)-8 b(,)37 b(and)e(an)h(index)f(of)h(`)p Ft(-1)p Fu(')f(refers)g(to)i(the)f (curren)m(t)f Ft(history)1110 628 y(-d)30 b Fu(command.)630 -785 y Ft(-d)g Fj(start)p Ft(-)p Fj(end)1110 895 y Fu(Delete)23 -b(the)d(history)h(en)m(tries)g(b)s(et)m(w)m(een)g(p)s(ositions)g -Fr(start)i Fu(and)d Fr(end)p Fu(,)i(inclusiv)m(e.)1110 -1004 y(P)m(ositiv)m(e)41 b(and)c(negativ)m(e)k(v)-5 b(alues)38 -b(for)h Fr(start)h Fu(and)e Fr(end)j Fu(are)e(in)m(terpreted)g(as)1110 -1114 y(describ)s(ed)29 b(ab)s(o)m(v)m(e.)630 1271 y Ft(-a)384 -b Fu(App)s(end)28 b(the)i(new)f(history)g(lines)h(to)h(the)e(history)h -(\014le.)41 b(These)29 b(are)h(history)1110 1381 y(lines)36 -b(en)m(tered)g(since)f(the)h(b)s(eginning)f(of)g(the)h(curren)m(t)f -(Bash)h(session,)h(but)1110 1490 y(not)31 b(already)g(app)s(ended)d(to) -j(the)g(history)f(\014le.)630 1648 y Ft(-n)384 b Fu(App)s(end)32 -b(the)i(history)f(lines)h(not)g(already)g(read)g(from)f(the)h(history)f -(\014le)h(to)1110 1758 y(the)26 b(curren)m(t)f(history)g(list.)40 -b(These)25 b(are)h(lines)g(app)s(ended)e(to)i(the)f(history)h(\014le) -1110 1867 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f -(Bash)h(session.)630 2025 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g -(\014le)h(and)f(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f -(list.)630 2182 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m -(t)f(history)g(list)h(to)h(the)e(history)g(\014le.)630 -2339 y Ft(-p)384 b Fu(P)m(erform)31 b(history)f(substitution)h(on)f -(the)h Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110 +785 y Ft(-d)g Fj(start)p Ft(-)p Fj(end)1110 895 y Fu(Delete)e(the)e +(range)h(of)f(history)g(en)m(tries)h(b)s(et)m(w)m(een)f(p)s(ositions)g +Fr(start)j Fu(and)c Fr(end)p Fu(,)1110 1004 y(inclusiv)m(e.)44 +b(P)m(ositiv)m(e)33 b(and)e(negativ)m(e)i(v)-5 b(alues)31 +b(for)g Fr(start)j Fu(and)d Fr(end)j Fu(are)d(in)m(ter-)1110 +1114 y(preted)f(as)h(describ)s(ed)e(ab)s(o)m(v)m(e.)630 +1271 y Ft(-a)384 b Fu(App)s(end)28 b(the)i(new)f(history)g(lines)h(to)h +(the)e(history)h(\014le.)41 b(These)29 b(are)h(history)1110 +1381 y(lines)36 b(en)m(tered)g(since)f(the)h(b)s(eginning)f(of)g(the)h +(curren)m(t)f(Bash)h(session,)h(but)1110 1490 y(not)31 +b(already)g(app)s(ended)d(to)j(the)g(history)f(\014le.)630 +1648 y Ft(-n)384 b Fu(App)s(end)32 b(the)i(history)f(lines)h(not)g +(already)g(read)g(from)f(the)h(history)f(\014le)h(to)1110 +1758 y(the)26 b(curren)m(t)f(history)g(list.)40 b(These)25 +b(are)h(lines)g(app)s(ended)e(to)i(the)f(history)h(\014le)1110 +1867 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f(Bash)h +(session.)630 2025 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g(\014le)h +(and)f(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f(list.) +630 2182 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m(t)f +(history)g(list)h(to)h(the)e(history)g(\014le.)630 2339 +y Ft(-p)384 b Fu(P)m(erform)31 b(history)f(substitution)h(on)f(the)h +Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110 2449 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g (in)g(the)g(history)g(list.)630 2606 y Ft(-s)384 b Fu(The)30 b Fr(arg)8 b Fu(s)30 b(are)h(added)f(to)h(the)f(end)g(of)h(the)f (history)h(list)g(as)f(a)h(single)g(en)m(try)-8 b(.)630 -2764 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p -Fu(,)g Ft(-a)p Fu(,)g(or)f Ft(-n)f Fu(options)i(is)f(used,)h(if)f -Fr(\014lename)32 b Fu(is)26 b(giv)m(en,)i(then)e(it)h(is)630 -2873 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28 -b(not,)i(then)e(the)g(v)-5 b(alue)29 b(of)g(the)g Ft(HISTFILE)d -Fu(v)-5 b(ariable)29 b(is)f(used.)150 3112 y Fs(9.3)68 -b(History)46 b(Expansion)150 3272 y Fu(The)f(History)h(library)e(pro)m -(vides)i(a)f(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g -(the)f(history)150 3381 y(expansion)g(pro)m(vided)f(b)m(y)h +2764 y(If)35 b(a)h Fr(\014lename)41 b Fu(argumen)m(t)c(is)e(supplied)g +(when)g(an)m(y)h(of)g(the)g Ft(-w)p Fu(,)g Ft(-r)p Fu(,)h +Ft(-a)p Fu(,)g(or)e Ft(-n)h Fu(options)630 2873 y(is)j(used,)i(Bash)e +(uses)f Fr(\014lename)44 b Fu(as)c(the)f(history)g(\014le.)66 +b(If)39 b(not,)i(then)e(the)g(v)-5 b(alue)40 b(of)f(the)630 +2983 y Ft(HISTFILE)28 b Fu(v)-5 b(ariable)31 b(is)g(used.)630 +3117 y(The)j(return)g(v)-5 b(alue)35 b(is)g(0)g(unless)f(an)h(in)m(v)-5 +b(alid)35 b(option)g(is)g(encoun)m(tered,)h(an)f(error)f(o)s(ccurs)630 +3226 y(while)h(reading)g(or)g(writing)f(the)h(history)g(\014le,)h(an)f +(in)m(v)-5 b(alid)36 b Fr(o\013set)h Fu(or)e(range)g(is)g(supplied)630 +3336 y(as)c(an)g(argumen)m(t)g(to)h Ft(-d)p Fu(,)e(or)h(the)g(history)g +(expansion)f(supplied)g(as)h(an)g(argumen)m(t)g(to)h +Ft(-p)630 3445 y Fu(fails.)150 3684 y Fs(9.3)68 b(History)46 +b(Expansion)150 3844 y Fu(The)f(History)h(library)e(pro)m(vides)i(a)f +(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g(the)f +(history)150 3953 y(expansion)g(pro)m(vided)f(b)m(y)h Ft(csh)p Fu(.)83 b(This)44 b(section)i(describ)s(es)e(the)h(syn)m(tax)h -(used)e(to)i(manipulate)f(the)150 3491 y(history)30 b(information.)275 -3624 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 4063 y(history)30 b(information.)275 +4196 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 -3734 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen) +4306 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 -3844 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g -(quic)m(kly)-8 b(.)275 3977 y(History)24 b(expansion)f(is)h(p)s +4415 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g +(quic)m(kly)-8 b(.)275 4549 y(History)24 b(expansion)f(is)h(p)s (erformed)e(immediately)j(after)f(a)g(complete)h(line)f(is)g(read,)h(b) -s(efore)e(the)h(shell)150 4087 y(breaks)32 b(it)i(in)m(to)f(w)m(ords,)g +s(efore)e(the)h(shell)150 4659 y(breaks)32 b(it)i(in)m(to)f(w)m(ords,)g (and)f(is)h(p)s(erformed)e(on)h(eac)m(h)i(line)f(individually)-8 -b(.)48 b(Bash)33 b(attempts)g(to)h(inform)150 4196 y(the)d(history)f +b(.)48 b(Bash)33 b(attempts)g(to)h(inform)150 4768 y(the)d(history)f (expansion)g(functions)g(ab)s(out)g(quoting)h(still)g(in)f(e\013ect)i -(from)e(previous)g(lines.)275 4330 y(History)37 b(expansion)f(tak)m(es) +(from)e(previous)g(lines.)275 4902 y(History)37 b(expansion)f(tak)m(es) i(place)g(in)e(t)m(w)m(o)i(parts.)59 b(The)36 b(\014rst)g(is)h(to)g -(determine)g(whic)m(h)f(line)h(from)150 4439 y(the)42 +(determine)g(whic)m(h)f(line)h(from)150 5011 y(the)42 b(history)f(list)h(should)e(b)s(e)h(used)f(during)g(substitution.)74 b(The)40 b(second)i(is)f(to)h(select)h(p)s(ortions)e(of)150 -4549 y(that)31 b(line)g(for)f(inclusion)h(in)m(to)g(the)g(curren)m(t)f +5121 y(that)31 b(line)g(for)f(inclusion)h(in)m(to)g(the)g(curren)m(t)f (one.)42 b(The)30 b(line)h(selected)h(from)e(the)h(history)f(is)h -(called)h(the)150 4659 y Fr(ev)m(en)m(t)p Fu(,)e(and)c(the)i(p)s +(called)h(the)150 5230 y Fr(ev)m(en)m(t)p Fu(,)e(and)c(the)i(p)s (ortions)e(of)i(that)f(line)h(that)g(are)f(acted)i(up)s(on)c(are)j (called)g Fr(w)m(ords)p Fu(.)39 b(V)-8 b(arious)28 b -Fr(mo)s(di\014ers)150 4768 y Fu(are)33 b(a)m(v)-5 b(ailable)36 +Fr(mo)s(di\014ers)150 5340 y Fu(are)33 b(a)m(v)-5 b(ailable)36 b(to)d(manipulate)h(the)f(selected)h(w)m(ords.)48 b(The)32 -b(line)i(is)f(brok)m(en)f(in)m(to)i(w)m(ords)f(in)f(the)i(same)150 -4878 y(fashion)23 b(that)g(Bash)g(do)s(es,)h(so)f(that)h(sev)m(eral)g -(w)m(ords)e(surrounded)e(b)m(y)j(quotes)g(are)g(considered)g(one)g(w)m -(ord.)150 4987 y(History)37 b(expansions)g(are)g(in)m(tro)s(duced)f(b)m +b(line)i(is)f(brok)m(en)f(in)m(to)i(w)m(ords)f(in)f(the)i(same)p +eop end +%%Page: 155 161 +TeXDict begin 155 160 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(155)150 +299 y(fashion)23 b(that)g(Bash)g(do)s(es,)h(so)f(that)h(sev)m(eral)g(w) +m(ords)e(surrounded)e(b)m(y)j(quotes)g(are)g(considered)g(one)g(w)m +(ord.)150 408 y(History)37 b(expansions)g(are)g(in)m(tro)s(duced)f(b)m (y)h(the)g(app)s(earance)g(of)g(the)g(history)f(expansion)h(c)m -(haracter,)150 5097 y(whic)m(h)30 b(is)h(`)p Ft(!)p Fu(')f(b)m(y)g -(default.)275 5230 y(History)c(expansion)g(implemen)m(ts)h(shell-lik)m +(haracter,)150 518 y(whic)m(h)30 b(is)h(`)p Ft(!)p Fu(')f(b)m(y)g +(default.)275 655 y(History)c(expansion)g(implemen)m(ts)h(shell-lik)m (e)h(quoting)f(con)m(v)m(en)m(tions:)40 b(a)27 b(bac)m(kslash)g(can)f -(b)s(e)g(used)f(to)150 5340 y(remo)m(v)m(e)h(the)e(sp)s(ecial)g +(b)s(e)g(used)f(to)150 764 y(remo)m(v)m(e)h(the)e(sp)s(ecial)g (handling)g(for)g(the)g(next)g(c)m(haracter;)k(single)d(quotes)g -(enclose)g(v)m(erbatim)g(sequences)p eop end -%%Page: 149 155 -TeXDict begin 149 154 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(149)150 -299 y(of)29 b(c)m(haracters,)i(and)e(can)g(b)s(e)g(used)f(to)i(inhibit) -f(history)g(expansion;)g(and)g(c)m(haracters)i(enclosed)e(within)150 -408 y(double)h(quotes)i(ma)m(y)f(b)s(e)f(sub)5 b(ject)31 -b(to)h(history)f(expansion,)g(since)g(bac)m(kslash)g(can)h(escap)s(e)f -(the)g(history)150 518 y(expansion)e(c)m(haracter,)j(but)d(single)h -(quotes)g(ma)m(y)h(not,)f(since)g(they)g(are)g(not)f(treated)i(sp)s -(ecially)f(within)150 628 y(double)g(quotes.)275 765 -y(When)41 b(using)g(the)h(shell,)i(only)e(`)p Ft(\\)p -Fu(')g(and)e(`)p Ft(')p Fu(')i(ma)m(y)g(b)s(e)f(used)g(to)h(escap)s(e)g -(the)g(history)f(expansion)150 875 y(c)m(haracter,)e(but)34 -b(the)i(history)g(expansion)f(c)m(haracter)i(is)f(also)g(treated)h(as)e -(quoted)h(if)g(it)g(immediately)150 984 y(precedes)30 +(enclose)g(v)m(erbatim)g(sequences)150 874 y(of)k(c)m(haracters,)i(and) +e(can)g(b)s(e)g(used)f(to)i(inhibit)f(history)g(expansion;)g(and)g(c)m +(haracters)i(enclosed)e(within)150 983 y(double)h(quotes)i(ma)m(y)f(b)s +(e)f(sub)5 b(ject)31 b(to)h(history)f(expansion,)g(since)g(bac)m +(kslash)g(can)h(escap)s(e)f(the)g(history)150 1093 y(expansion)e(c)m +(haracter,)j(but)d(single)h(quotes)g(ma)m(y)h(not,)f(since)g(they)g +(are)g(not)f(treated)i(sp)s(ecially)f(within)150 1202 +y(double)g(quotes.)275 1339 y(When)41 b(using)g(the)h(shell,)i(only)e +(`)p Ft(\\)p Fu(')g(and)e(`)p Ft(')p Fu(')i(ma)m(y)g(b)s(e)f(used)g(to) +h(escap)s(e)g(the)g(history)f(expansion)150 1448 y(c)m(haracter,)e(but) +34 b(the)i(history)g(expansion)f(c)m(haracter)i(is)f(also)g(treated)h +(as)e(quoted)h(if)g(it)g(immediately)150 1558 y(precedes)30 b(the)h(closing)g(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275 -1122 y(Sev)m(eral)48 b(shell)g(options)h(settable)g(with)e(the)h +1695 y(Sev)m(eral)48 b(shell)g(options)h(settable)g(with)e(the)h Ft(shopt)f Fu(builtin)g(\(see)i(Section)f(4.3.2)i([The)e(Shopt)150 -1232 y(Builtin],)24 b(page)e(66\))h(ma)m(y)e(b)s(e)g(used)g(to)h +1804 y(Builtin],)24 b(page)e(71\))h(ma)m(y)e(b)s(e)g(used)g(to)h (tailor)g(the)g(b)s(eha)m(vior)f(of)h(history)f(expansion.)37 -b(If)21 b(the)h Ft(histverify)150 1341 y Fu(shell)35 +b(If)21 b(the)h Ft(histverify)150 1914 y Fu(shell)35 b(option)f(is)h(enabled,)g(and)f(Readline)h(is)f(b)s(eing)g(used,)h -(history)g(substitutions)e(are)i(not)g(immedi-)150 1451 +(history)g(substitutions)e(are)i(not)g(immedi-)150 2023 y(ately)i(passed)d(to)i(the)g(shell)f(parser.)55 b(Instead,)37 b(the)e(expanded)g(line)g(is)h(reloaded)g(in)m(to)g(the)f(Readline)150 -1561 y(editing)29 b(bu\013er)f(for)h(further)e(mo)s(di\014cation.)41 +2133 y(editing)29 b(bu\013er)f(for)h(further)e(mo)s(di\014cation.)41 b(If)28 b(Readline)h(is)g(b)s(eing)f(used,)h(and)f(the)h -Ft(histreedit)d Fu(shell)150 1670 y(option)e(is)g(enabled,)h(a)g +Ft(histreedit)d Fu(shell)150 2242 y(option)e(is)g(enabled,)h(a)g (failed)f(history)g(expansion)g(will)g(b)s(e)f(reloaded)h(in)m(to)h -(the)f(Readline)g(editing)h(bu\013er)150 1780 y(for)31 +(the)f(Readline)g(editing)h(bu\013er)150 2352 y(for)31 b(correction.)43 b(The)30 b Ft(-p)g Fu(option)h(to)h(the)f Ft(history)e Fu(builtin)h(command)h(ma)m(y)g(b)s(e)f(used)g(to)i(see)f -(what)g(a)150 1889 y(history)25 b(expansion)g(will)g(do)g(b)s(efore)g +(what)g(a)150 2462 y(history)25 b(expansion)g(will)g(do)g(b)s(efore)g (using)f(it.)40 b(The)24 b Ft(-s)h Fu(option)g(to)h(the)f -Ft(history)e Fu(builtin)i(ma)m(y)g(b)s(e)g(used)150 1999 +Ft(history)e Fu(builtin)i(ma)m(y)g(b)s(e)g(used)150 2571 y(to)36 b(add)f(commands)g(to)h(the)g(end)f(of)g(the)h(history)f(list)i (without)e(actually)i(executing)g(them,)g(so)e(that)150 -2108 y(they)c(are)f(a)m(v)-5 b(ailable)33 b(for)d(subsequen)m(t)g +2681 y(they)c(are)f(a)m(v)-5 b(ailable)33 b(for)d(subsequen)m(t)g (recall.)42 b(This)29 b(is)i(most)g(useful)e(in)h(conjunction)h(with)f -(Readline.)275 2246 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g +(Readline.)275 2817 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g (v)-5 b(arious)34 b(c)m(haracters)h(used)f(b)m(y)f(the)h(history)g -(expansion)g(mec)m(h-)150 2356 y(anism)h(with)g(the)g +(expansion)g(mec)m(h-)150 2927 y(anism)h(with)g(the)g Ft(histchars)d Fu(v)-5 b(ariable,)38 b(as)d(explained)g(ab)s(o)m(v)m(e) i(\(see)f(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 -2465 y(page)32 b(73\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g +3036 y(page)32 b(78\).)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 2575 y(writing)e(the)h(history)f(\014le.)150 2777 -y Fk(9.3.1)63 b(Ev)m(en)m(t)39 b(Designators)150 2924 +150 3146 y(writing)e(the)h(history)f(\014le.)150 3347 +y Fk(9.3.1)63 b(Ev)m(en)m(t)39 b(Designators)150 3494 y Fu(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g(reference)g(to)h(a)f (command)f(line)h(en)m(try)g(in)g(the)g(history)g(list.)48 -b(Unless)33 b(the)150 3034 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts) +b(Unless)33 b(the)150 3604 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts) f(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h -(history)f(list.)150 3198 y Ft(!)432 b Fu(Start)34 b(a)f(history)h +(history)f(list.)150 3766 y Ft(!)432 b Fu(Start)34 b(a)f(history)h (substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h -(tab,)f(the)g(end)f(of)630 3308 y(the)i(line,)g(`)p Ft(=)p +(tab,)f(the)g(end)f(of)630 3876 y(the)i(line,)g(`)p Ft(=)p Fu(')g(or)f(`)p Ft(\()p Fu(')h(\(when)e(the)i Ft(extglob)d Fu(shell)j(option)f(is)h(enabled)f(using)g(the)g Ft(shopt)630 -3417 y Fu(builtin\).)150 3580 y Ft(!)p Fj(n)384 b Fu(Refer)30 -b(to)i(command)e(line)g Fr(n)p Fu(.)150 3742 y Ft(!-)p +3985 y Fu(builtin\).)150 4147 y Ft(!)p Fj(n)384 b Fu(Refer)30 +b(to)i(command)e(line)g Fr(n)p Fu(.)150 4308 y Ft(!-)p Fj(n)336 b Fu(Refer)30 b(to)i(the)e(command)g Fr(n)g -Fu(lines)h(bac)m(k.)150 3905 y Ft(!!)384 b Fu(Refer)30 +Fu(lines)h(bac)m(k.)150 4469 y Ft(!!)384 b Fu(Refer)30 b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f -(for)g(`)p Ft(!-1)p Fu('.)150 4067 y Ft(!)p Fj(string)144 +(for)g(`)p Ft(!-1)p Fu('.)150 4631 y Ft(!)p Fj(string)144 b Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g (the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630 -4177 y(list)31 b(starting)g(with)f Fr(string)p Fu(.)150 -4340 y Ft(!?)p Fj(string)p Ft([?])630 4449 y Fu(Refer)25 +4740 y(list)31 b(starting)g(with)f Fr(string)p Fu(.)150 +4902 y Ft(!?)p Fj(string)p Ft([?])630 5011 y Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t) -g(p)s(osition)g(in)g(the)g(history)630 4559 y(list)32 +g(p)s(osition)g(in)g(the)g(history)630 5121 y(list)32 b(con)m(taining)i Fr(string)p Fu(.)45 b(The)31 b(trailing)i(`)p Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f(the)g Fr(string)39 -b Fu(is)32 b(follo)m(w)m(ed)630 4668 y(immediately)f(b)m(y)e(a)h +b Fu(is)32 b(follo)m(w)m(ed)630 5230 y(immediately)f(b)m(y)e(a)h (newline.)40 b(If)29 b Fr(string)38 b Fu(is)29 b(missing,)h(the)g -(string)f(from)g(the)h(most)g(recen)m(t)630 4778 y(searc)m(h)h(is)f +(string)f(from)g(the)h(most)g(recen)m(t)630 5340 y(searc)m(h)h(is)f (used;)g(it)h(is)g(an)f(error)g(if)g(there)h(is)f(no)g(previous)g -(searc)m(h)h(string.)150 4941 y Ft(^)p Fj(string1)p Ft(^)p -Fj(string2)p Ft(^)630 5050 y Fu(Quic)m(k)h(Substitution.)44 -b(Rep)s(eat)32 b(the)g(last)h(command,)f(replacing)g -Fr(string1)40 b Fu(with)31 b Fr(string2)p Fu(.)630 5160 -y(Equiv)-5 b(alen)m(t)31 b(to)g Ft(!!:s^)p Fj(string1)p -Ft(^)p Fj(string2)p Ft(^)p Fu(.)150 5322 y Ft(!#)384 -b Fu(The)30 b(en)m(tire)h(command)f(line)h(t)m(yp)s(ed)f(so)h(far.)p -eop end -%%Page: 150 156 -TeXDict begin 150 155 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(150)150 -299 y Fk(9.3.2)63 b(W)-10 b(ord)41 b(Designators)150 -446 y Fu(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h -(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41 b(A)27 -b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150 -555 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61 +(searc)m(h)h(string.)p eop end +%%Page: 156 162 +TeXDict begin 156 161 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(156)150 +299 y Ft(^)p Fj(string1)p Ft(^)p Fj(string2)p Ft(^)630 +408 y Fu(Quic)m(k)32 b(Substitution.)44 b(Rep)s(eat)32 +b(the)g(last)h(command,)f(replacing)g Fr(string1)40 b +Fu(with)31 b Fr(string2)p Fu(.)630 518 y(Equiv)-5 b(alen)m(t)31 +b(to)g Ft(!!:s^)p Fj(string1)p Ft(^)p Fj(string2)p Ft(^)p +Fu(.)150 673 y Ft(!#)384 b Fu(The)30 b(en)m(tire)h(command)f(line)h(t)m +(yp)s(ed)f(so)h(far.)150 867 y Fk(9.3.2)63 b(W)-10 b(ord)41 +b(Designators)150 1014 y Fu(W)-8 b(ord)27 b(designators)h(are)g(used)e +(to)i(select)h(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41 +b(A)27 b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150 +1124 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 665 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p +(b)s(egins)150 1233 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p Ft($)p Fu(',)g(`)p Ft(*)p Fu(',)h(`)p Ft(-)p Fu(',)f(or)g(`)p Ft(\045)p Fu('.)41 b(W)-8 b(ords)30 b(are)g(n)m(um)m(b)s(ered)e(from)i (the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)150 -775 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 884 y(single)h(spaces.)275 1019 -y(F)-8 b(or)31 b(example,)150 1179 y Ft(!!)384 b Fu(designates)37 -b(the)f(preceding)g(command.)57 b(When)35 b(y)m(ou)i(t)m(yp)s(e)f -(this,)h(the)f(preceding)g(com-)630 1289 y(mand)30 b(is)g(rep)s(eated)g -(in)g(toto.)150 1449 y Ft(!!:$)288 b Fu(designates)23 -b(the)g(last)g(argumen)m(t)g(of)f(the)h(preceding)f(command.)38 -b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 1558 y(to)31 -b Ft(!$)p Fu(.)150 1718 y Ft(!fi:2)240 b Fu(designates)30 -b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f(recen)m(t)i(command)e -(starting)h(with)f(the)630 1828 y(letters)j Ft(fi)p Fu(.)275 -1988 y(Here)e(are)h(the)g(w)m(ord)f(designators:)150 -2148 y Ft(0)g(\(zero\))114 b Fu(The)30 b Ft(0)p Fu(th)g(w)m(ord.)40 -b(F)-8 b(or)31 b(man)m(y)g(applications,)h(this)e(is)g(the)h(command)f -(w)m(ord.)150 2308 y Fj(n)432 b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150 -2467 y Ft(^)432 b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m -(ord)g(1.)150 2627 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150 -2787 y Ft(\045)432 b Fu(The)40 b(\014rst)h(w)m(ord)f(matc)m(hed)i(b)m +1343 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 1452 y(single)h(spaces.)275 +1584 y(F)-8 b(or)31 b(example,)150 1739 y Ft(!!)384 b +Fu(designates)37 b(the)f(preceding)g(command.)57 b(When)35 +b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630 +1849 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 2003 +y Ft(!!:$)288 b Fu(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the) +h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 +2113 y(to)31 b Ft(!$)p Fu(.)150 2267 y Ft(!fi:2)240 b +Fu(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f +(recen)m(t)i(command)e(starting)h(with)f(the)630 2377 +y(letters)j Ft(fi)p Fu(.)275 2531 y(Here)e(are)h(the)g(w)m(ord)f +(designators:)150 2686 y Ft(0)g(\(zero\))114 b Fu(The)30 +b Ft(0)p Fu(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)h +(this)e(is)g(the)h(command)f(w)m(ord.)150 2840 y Fj(n)432 +b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150 2995 y Ft(^)432 +b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150 +3150 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150 +3304 y Ft(\045)432 b Fu(The)40 b(\014rst)h(w)m(ord)f(matc)m(hed)i(b)m (y)f(the)g(most)g(recen)m(t)h(`)p Ft(?)p Fj(string)p Ft(?)p Fu(')d(searc)m(h,)44 b(if)d(the)g(searc)m(h)630 -2897 y(string)30 b(b)s(egins)g(with)g(a)h(c)m(haracter)h(that)f(is)f -(part)h(of)f(a)h(w)m(ord.)150 3057 y Fj(x)p Ft(-)p Fj(y)336 +3414 y(string)30 b(b)s(egins)g(with)g(a)h(c)m(haracter)h(that)f(is)f +(part)h(of)f(a)h(w)m(ord.)150 3568 y Fj(x)p Ft(-)p Fj(y)336 b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p Ft(-)p Fj(y)p -Fu(')g(abbreviates)h(`)p Ft(0-)p Fj(y)p Fu('.)150 3216 +Fu(')g(abbreviates)h(`)p Ft(0-)p Fj(y)p Fu('.)150 3723 y Ft(*)432 b Fu(All)28 b(of)g(the)g(w)m(ords,)g(except)h(the)e Ft(0)p Fu(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p Ft(1-$)p Fu('.)39 b(It)28 b(is)g(not)g(an)f(error)630 -3326 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m +3832 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m (ord)f(in)g(the)h(ev)m(en)m(t;)i(the)d(empt)m(y)i(string)e(is)h -(returned)e(in)630 3436 y(that)j(case.)150 3595 y Fj(x)p +(returned)e(in)630 3942 y(that)j(case.)150 4097 y Fj(x)p Ft(*)384 b Fu(Abbreviates)31 b(`)p Fj(x)p Ft(-$)p Fu(')150 -3755 y Fj(x)p Ft(-)384 b Fu(Abbreviates)27 b(`)p Fj(x)p +4251 y Fj(x)p Ft(-)384 b Fu(Abbreviates)27 b(`)p Fj(x)p Ft(-$)p Fu(')g(lik)m(e)h(`)p Fj(x)p Ft(*)p Fu(',)g(but)e(omits)i(the)f (last)h(w)m(ord.)39 b(If)27 b(`)p Ft(x)p Fu(')g(is)g(missing,)g(it)h -(defaults)630 3865 y(to)j(0.)275 4025 y(If)i(a)h(w)m(ord)g(designator)g +(defaults)630 4361 y(to)j(0.)275 4515 y(If)i(a)h(w)m(ord)g(designator)g (is)g(supplied)f(without)h(an)g(ev)m(en)m(t)h(sp)s(eci\014cation,)h -(the)e(previous)f(command)150 4135 y(is)d(used)g(as)h(the)f(ev)m(en)m -(t.)150 4334 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 4481 +(the)e(previous)f(command)150 4625 y(is)d(used)g(as)h(the)f(ev)m(en)m +(t.)150 4819 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 4966 y Fu(After)29 b(the)g(optional)g(w)m(ord)g(designator,)g(y)m(ou)g(can)g (add)f(a)h(sequence)g(of)g(one)g(or)f(more)h(of)g(the)f(follo)m(wing) -150 4591 y(mo)s(di\014ers,)33 b(eac)m(h)h(preceded)f(b)m(y)g(a)h(`)p +150 5076 y(mo)s(di\014ers,)33 b(eac)m(h)h(preceded)f(b)m(y)g(a)h(`)p Ft(:)p Fu('.)50 b(These)33 b(mo)s(dify)-8 b(,)33 b(or)h(edit,)g(the)g -(w)m(ord)f(or)g(w)m(ords)g(selected)h(from)150 4700 y(the)d(history)f -(ev)m(en)m(t.)150 4860 y Ft(h)432 b Fu(Remo)m(v)m(e)32 +(w)m(ord)f(or)g(w)m(ords)g(selected)h(from)150 5185 y(the)d(history)f +(ev)m(en)m(t.)150 5340 y Ft(h)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(pathname)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e(the) -h(head.)150 5020 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h -(pathname)e(comp)s(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150 -5180 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g -(the)h(form)f(`)p Ft(.)p Fj(suffix)p Fu(',)f(lea)m(ving)j(the)f -(basename.)150 5340 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h -(trailing)g(su\016x.)p eop end -%%Page: 151 157 -TeXDict begin 151 156 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(151)150 -299 y Ft(p)432 b Fu(Prin)m(t)30 b(the)h(new)f(command)g(but)g(do)g(not) -g(execute)i(it.)150 458 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g -(w)m(ords,)g(escaping)h(further)e(substitutions.)150 -618 y Ft(x)432 b Fu(Quote)32 b(the)f(substituted)g(w)m(ords)f(as)i -(with)f(`)p Ft(q)p Fu(',)h(but)e(break)h(in)m(to)i(w)m(ords)d(at)i -(spaces,)h(tabs,)630 727 y(and)38 b(newlines.)66 b(The)39 -b(`)p Ft(q)p Fu(')g(and)f(`)p Ft(x)p Fu(')h(mo)s(di\014ers)f(are)h(m)m -(utually)g(exclusiv)m(e;)45 b(the)39 b(last)h(one)630 -837 y(supplied)29 b(is)i(used.)150 996 y Ft(s/)p Fj(old)p -Ft(/)p Fj(new)p Ft(/)630 1106 y Fu(Substitute)g Fr(new)39 +h(head.)p eop end +%%Page: 157 163 +TeXDict begin 157 162 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(157)150 +299 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h(pathname)e(comp)s +(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150 458 y Ft(r)432 +b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g(the)h(form)f(`)p +Ft(.)p Fj(suffix)p Fu(',)f(lea)m(ving)j(the)f(basename.)150 +618 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h(trailing)g +(su\016x.)150 777 y Ft(p)432 b Fu(Prin)m(t)30 b(the)h(new)f(command)g +(but)g(do)g(not)g(execute)i(it.)150 936 y Ft(q)432 b +Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g(escaping)h(further)e +(substitutions.)150 1096 y Ft(x)432 b Fu(Quote)32 b(the)f(substituted)g +(w)m(ords)f(as)i(with)f(`)p Ft(q)p Fu(',)h(but)e(break)h(in)m(to)i(w)m +(ords)d(at)i(spaces,)h(tabs,)630 1205 y(and)38 b(newlines.)66 +b(The)39 b(`)p Ft(q)p Fu(')g(and)f(`)p Ft(x)p Fu(')h(mo)s(di\014ers)f +(are)h(m)m(utually)g(exclusiv)m(e;)45 b(the)39 b(last)h(one)630 +1315 y(supplied)29 b(is)i(used.)150 1474 y Ft(s/)p Fj(old)p +Ft(/)p Fj(new)p Ft(/)630 1584 y Fu(Substitute)g Fr(new)39 b Fu(for)32 b(the)g(\014rst)f(o)s(ccurrence)h(of)f Fr(old)36 b Fu(in)31 b(the)h(ev)m(en)m(t)h(line.)46 b(An)m(y)31 -b(c)m(haracter)630 1215 y(ma)m(y)k(b)s(e)e(used)h(as)g(the)h(delimiter) +b(c)m(haracter)630 1694 y(ma)m(y)k(b)s(e)e(used)h(as)g(the)h(delimiter) g(in)f(place)h(of)f(`)p Ft(/)p Fu('.)53 b(The)33 b(delimiter)i(ma)m(y)g -(b)s(e)f(quoted)g(in)630 1325 y Fr(old)40 b Fu(and)c +(b)s(e)f(quoted)g(in)630 1803 y Fr(old)40 b Fu(and)c Fr(new)44 b Fu(with)36 b(a)h(single)g(bac)m(kslash.)60 b(If)36 b(`)p Ft(&)p Fu(')h(app)s(ears)e(in)i Fr(new)p -Fu(,)g(it)h(is)e(replaced)h(b)m(y)630 1435 y Fr(old)p +Fu(,)g(it)h(is)e(replaced)h(b)m(y)630 1913 y Fr(old)p Fu(.)k(A)31 b(single)g(bac)m(kslash)g(will)g(quote)g(the)g(`)p Ft(&)p Fu('.)41 b(If)31 b Fr(old)j Fu(is)c(n)m(ull,)h(it)g(is)g(set)g -(to)g(the)g(last)g Fr(old)630 1544 y Fu(substituted,)j(or,)g(if)f(no)g +(to)g(the)g(last)g Fr(old)630 2022 y Fu(substituted,)j(or,)g(if)f(no)g (previous)g(history)g(substitutions)g(to)s(ok)h(place,)h(the)e(last)h -Fr(string)630 1654 y Fu(in)j(a)g(!?)p Fr(string)8 b Ft([?])37 -b Fu(searc)m(h.)61 b(If)37 b Fr(new)45 b Fu(is)37 b(is)g(n)m(ull,)i -(eac)m(h)f(matc)m(hing)h Fr(old)h Fu(is)e(deleted.)61 -b(The)630 1763 y(\014nal)30 b(delimiter)h(is)g(optional)g(if)f(it)h(is) -g(the)f(last)i(c)m(haracter)f(on)g(the)f(input)g(line.)150 -1923 y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150 -2082 y Ft(g)150 2192 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f +Fr(string)630 2132 y Fu(in)d(a)g(!?)p Fr(string)8 b Ft([?])30 +b Fu(searc)m(h.)44 b(If)31 b Fr(new)38 b Fu(is)31 b(n)m(ull,)h(eac)m(h) +g(matc)m(hing)g Fr(old)j Fu(is)c(deleted.)44 b(The)30 +b(\014nal)630 2242 y(delimiter)h(is)g(optional)g(if)f(it)h(is)g(the)f +(last)h(c)m(haracter)h(on)f(the)f(input)g(line.)150 2401 +y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150 +2560 y Ft(g)150 2670 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f (applied)h(o)m(v)m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66 -b(Used)39 b(in)f(conjunction)630 2301 y(with)30 b(`)p +b(Used)39 b(in)f(conjunction)630 2780 y(with)30 b(`)p Ft(s)p Fu(',)h(as)f(in)h Ft(gs/)p Fj(old)p Ft(/)p Fj(new)p -Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 2461 y +Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 2939 y Ft(G)432 b Fu(Apply)30 b(the)g(follo)m(wing)i(`)p Ft(s)p Fu(')f(or)f(`)p Ft(&)p Fu(')h(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m (ord)e(in)g(the)g(ev)m(en)m(t.)p eop end -%%Page: 152 158 -TeXDict begin 152 157 bop 3614 -116 a Fu(152)150 299 -y Fp(10)80 b(Installing)52 b(Bash)150 534 y Fu(This)31 +%%Page: 158 164 +TeXDict begin 158 163 bop 3614 -116 a Fu(158)150 299 +y Fp(10)80 b(Installing)52 b(Bash)150 539 y Fu(This)31 b(c)m(hapter)h(pro)m(vides)g(basic)g(instructions)f(for)g(installing)i (Bash)f(on)f(the)h(v)-5 b(arious)31 b(supp)s(orted)f(plat-)150 -643 y(forms.)40 b(The)28 b(distribution)h(supp)s(orts)e(the)j +648 y(forms.)40 b(The)28 b(distribution)h(supp)s(orts)e(the)j Fm(gnu)f Fu(op)s(erating)h(systems,)f(nearly)h(ev)m(ery)g(v)m(ersion)f -(of)h(Unix,)150 753 y(and)d(sev)m(eral)j(non-Unix)d(systems)h(suc)m(h)g +(of)h(Unix,)150 758 y(and)d(sev)m(eral)j(non-Unix)d(systems)h(suc)m(h)g (as)g(BeOS)g(and)f(In)m(terix.)40 b(Other)28 b(indep)s(enden)m(t)e(p)s -(orts)h(exist)i(for)150 862 y Fm(ms-dos)p Fu(,)h Fm(os/2)p -Fu(,)g(and)g(Windo)m(ws)g(platforms.)150 1103 y Fs(10.1)68 -b(Basic)45 b(Installation)150 1263 y Fu(These)30 b(are)h(installation)h -(instructions)e(for)h(Bash.)275 1398 y(The)e(simplest)i(w)m(a)m(y)g(to) -g(compile)h(Bash)e(is:)199 1532 y(1.)61 b Ft(cd)38 b +(orts)h(exist)i(for)150 867 y Fm(ms-dos)p Fu(,)h Fm(os/2)p +Fu(,)g(and)g(Windo)m(ws)g(platforms.)150 1111 y Fs(10.1)68 +b(Basic)45 b(Installation)150 1270 y Fu(These)30 b(are)h(installation)h +(instructions)e(for)h(Bash.)275 1407 y(The)e(simplest)i(w)m(a)m(y)g(to) +g(compile)h(Bash)e(is:)199 1543 y(1.)61 b Ft(cd)38 b Fu(to)h(the)f(directory)h(con)m(taining)h(the)f(source)f(co)s(de)h(and) f(t)m(yp)s(e)g(`)p Ft(./configure)p Fu(')e(to)j(con\014gure)330 -1642 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f +1653 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f Ft(csh)g Fu(on)g(an)h(old)g(v)m(ersion)g(of)g(System)f(V,)h(y)m(ou)g -(migh)m(t)330 1751 y(need)21 b(to)g(t)m(yp)s(e)g(`)p +(migh)m(t)330 1762 y(need)21 b(to)g(t)m(yp)s(e)g(`)p Ft(sh)30 b(./configure)p Fu(')18 b(instead)j(to)g(prev)m(en)m(t)h Ft(csh)e Fu(from)g(trying)h(to)g(execute)h Ft(configure)330 -1861 y Fu(itself.)330 1996 y(Running)30 b Ft(configure)f +1872 y Fu(itself.)330 2007 y(Running)30 b Ft(configure)f Fu(tak)m(es)k(some)e(time.)45 b(While)32 b(running,)e(it)i(prin)m(ts)f -(messages)h(telling)h(whic)m(h)330 2105 y(features)e(it)g(is)f(c)m(hec) -m(king)i(for.)199 2240 y(2.)61 b(T)m(yp)s(e)30 b(`)p +(messages)h(telling)h(whic)m(h)330 2117 y(features)e(it)g(is)f(c)m(hec) +m(king)i(for.)199 2252 y(2.)61 b(T)m(yp)s(e)30 b(`)p Ft(make)p Fu(')g(to)h(compile)g(Bash)g(and)e(build)h(the)g -Ft(bashbug)f Fu(bug)g(rep)s(orting)h(script.)199 2374 +Ft(bashbug)f Fu(bug)g(rep)s(orting)h(script.)199 2388 y(3.)61 b(Optionally)-8 b(,)32 b(t)m(yp)s(e)e(`)p Ft(make)g(tests)p -Fu(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2509 -y(4.)61 b(T)m(yp)s(e)36 b(`)p Ft(make)29 b(install)p -Fu(')35 b(to)i(install)h Ft(bash)d Fu(and)h Ft(bashbug)p -Fu(.)57 b(This)35 b(will)i(also)h(install)f(the)g(man)m(ual)330 -2619 y(pages)31 b(and)f(Info)g(\014le.)275 2778 y(The)20 -b Ft(configure)f Fu(shell)i(script)g(attempts)h(to)g(guess)f(correct)i -(v)-5 b(alues)21 b(for)g(v)-5 b(arious)21 b(system-dep)s(enden)m(t)150 -2888 y(v)-5 b(ariables)31 b(used)e(during)g(compilation.)42 -b(It)31 b(uses)e(those)i(v)-5 b(alues)30 b(to)h(create)h(a)e -Ft(Makefile)e Fu(in)i(eac)m(h)i(direc-)150 2998 y(tory)k(of)g(the)g -(pac)m(k)-5 b(age)38 b(\(the)e(top)g(directory)-8 b(,)38 -b(the)e Ft(builtins)p Fu(,)f Ft(doc)p Fu(,)i(and)e Ft(support)e -Fu(directories,)39 b(eac)m(h)150 3107 y(directory)29 -b(under)d Ft(lib)p Fu(,)j(and)e(sev)m(eral)j(others\).)40 -b(It)29 b(also)g(creates)h(a)e Ft(config.h)e Fu(\014le)j(con)m(taining) -g(system-)150 3217 y(dep)s(enden)m(t)e(de\014nitions.)40 -b(Finally)-8 b(,)31 b(it)d(creates)i(a)f(shell)g(script)f(named)g -Ft(config.status)d Fu(that)k(y)m(ou)g(can)150 3326 y(run)h(in)h(the)h -(future)f(to)h(recreate)h(the)f(curren)m(t)f(con\014guration,)i(a)f -(\014le)f Ft(config.cache)e Fu(that)j(sa)m(v)m(es)h(the)150 -3436 y(results)39 b(of)g(its)h(tests)g(to)g(sp)s(eed)e(up)g -(recon\014guring,)j(and)e(a)g(\014le)g Ft(config.log)e -Fu(con)m(taining)j(compiler)150 3545 y(output)30 b(\(useful)h(mainly)g -(for)f(debugging)h Ft(configure)p Fu(\).)40 b(If)30 b(at)h(some)h(p)s -(oin)m(t)e Ft(config.cache)e Fu(con)m(tains)150 3655 -y(results)i(y)m(ou)h(don't)f(w)m(an)m(t)h(to)h(k)m(eep,)f(y)m(ou)g(ma)m -(y)g(remo)m(v)m(e)g(or)g(edit)g(it.)275 3790 y(T)-8 b(o)37 -b(\014nd)f(out)i(more)f(ab)s(out)h(the)f(options)h(and)f(argumen)m(ts)g -(that)h(the)g Ft(configure)d Fu(script)i(under-)150 3899 -y(stands,)30 b(t)m(yp)s(e)390 4034 y Ft(bash-4.2$)45 -b(./configure)g(--help)150 4169 y Fu(at)31 b(the)g(Bash)f(prompt)g(in)g -(y)m(our)g(Bash)h(source)f(directory)-8 b(.)275 4303 -y(If)34 b(y)m(ou)h(w)m(an)m(t)g(to)g(build)f(Bash)g(in)h(a)g(directory) -g(separate)g(from)f(the)h(source)g(directory)g({)g(to)g(build)150 -4413 y(for)30 b(m)m(ultiple)i(arc)m(hitectures,)g(for)e(example)h({)g -(just)f(use)h(the)f(full)h(path)f(to)h(the)g(con\014gure)f(script.)41 -b(The)150 4523 y(follo)m(wing)24 b(commands)f(will)g(build)f(bash)g(in) -g(a)h(directory)h(under)d Ft(/usr/local/build)d Fu(from)23 -b(the)g(source)150 4632 y(co)s(de)31 b(in)f Ft(/usr/local/src/bash-4.4) -o Fu(:)390 4767 y Ft(mkdir)46 b(/usr/local/build/bash-4.4)390 -4877 y(cd)h(/usr/local/build/bash-4.4)390 4986 y(bash)g -(/usr/local/src/bash-4.4)o(/con)o(fig)o(ure)390 5096 -y(make)275 5230 y Fu(See)27 b(Section)h(10.3)g([Compiling)g(F)-8 -b(or)27 b(Multiple)h(Arc)m(hitectures],)i(page)d(153,)j(for)c(more)i -(information)150 5340 y(ab)s(out)i(building)g(in)g(a)g(directory)h -(separate)h(from)e(the)g(source.)p eop end -%%Page: 153 159 -TeXDict begin 153 158 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(153)275 299 y(If)53 b(y)m(ou)h(need)f(to) -i(do)e(un)m(usual)g(things)g(to)i(compile)g(Bash,)k(please)c(try)e(to)i -(\014gure)e(out)h(ho)m(w)150 408 y Ft(configure)47 b -Fu(could)j(c)m(hec)m(k)h(whether)e(or)g(not)h(to)h(do)e(them,)55 -b(and)49 b(mail)h(di\013s)f(or)h(instructions)f(to)150 -518 y Ft(bash-maintainers@gnu.org)24 b Fu(so)30 b(they)h(can)g(b)s(e)e -(considered)i(for)f(the)g(next)h(release.)275 658 y(The)e(\014le)g -Ft(configure.ac)d Fu(is)k(used)e(to)j(create)g Ft(configure)c -Fu(b)m(y)i(a)h(program)f(called)i(Auto)s(conf.)40 b(Y)-8 -b(ou)150 768 y(only)34 b(need)g Ft(configure.ac)d Fu(if)i(y)m(ou)i(w)m -(an)m(t)g(to)f(c)m(hange)i(it)e(or)g(regenerate)i Ft(configure)31 -b Fu(using)j(a)g(new)m(er)150 878 y(v)m(ersion)25 b(of)f(Auto)s(conf.) -39 b(If)24 b(y)m(ou)h(do)f(this,)i(mak)m(e)f(sure)f(y)m(ou)h(are)f -(using)g(Auto)s(conf)h(v)m(ersion)f(2.50)i(or)f(new)m(er.)275 -1018 y(Y)-8 b(ou)29 b(can)f(remo)m(v)m(e)i(the)f(program)g(binaries)f -(and)g(ob)5 b(ject)29 b(\014les)g(from)f(the)h(source)f(co)s(de)h -(directory)g(b)m(y)150 1127 y(t)m(yping)j(`)p Ft(make)d(clean)p -Fu('.)42 b(T)-8 b(o)32 b(also)g(remo)m(v)m(e)g(the)g(\014les)f(that)g +Fu(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2523 +y(4.)61 b(T)m(yp)s(e)42 b(`)p Ft(make)30 b(install)p +Fu(')41 b(to)i(install)h Ft(bash)d Fu(and)i Ft(bashbug)p +Fu(.)76 b(This)42 b(will)h(also)g(install)h(the)f(man-)330 +2633 y(ual)30 b(pages)g(and)g(Info)f(\014le,)h(message)h(translation)g +(\014les,)f(some)g(supplemen)m(tal)h(do)s(cumen)m(tation,)g(a)330 +2742 y(n)m(um)m(b)s(er)c(of)h(example)h(loadable)g(builtin)f(commands,) +g(and)g(a)g(set)h(of)f(header)g(\014les)g(for)g(dev)m(eloping)330 +2852 y(loadable)36 b(builtins.)55 b(Y)-8 b(ou)36 b(ma)m(y)f(need)g +(additional)h(privileges)g(to)g(install)g Ft(bash)e Fu(to)i(y)m(our)f +(desired)330 2962 y(destination,)f(so)f(`)p Ft(sudo)d(make)f(install)p +Fu(')i(migh)m(t)i(b)s(e)f(required.)47 b(More)33 b(information)g(ab)s +(out)f(con-)330 3071 y(trolling)c(the)g(lo)s(cations)g(where)f +Ft(bash)f Fu(and)h(other)g(\014les)g(are)h(installed)g(is)f(b)s(elo)m +(w)g(\(see)h(Section)g(10.4)330 3181 y([Installation)k(Names],)g(page)f +(160\).)275 3343 y(The)20 b Ft(configure)f Fu(shell)i(script)g +(attempts)h(to)g(guess)f(correct)i(v)-5 b(alues)21 b(for)g(v)-5 +b(arious)21 b(system-dep)s(enden)m(t)150 3453 y(v)-5 +b(ariables)38 b(used)f(during)f(compilation.)64 b(It)37 +b(uses)g(those)h(v)-5 b(alues)38 b(to)g(create)h(a)f +Ft(Makefile)d Fu(in)i(eac)m(h)i(di-)150 3562 y(rectory)32 +b(of)f(the)h(pac)m(k)-5 b(age)33 b(\(the)f(top)f(directory)-8 +b(,)33 b(the)e Ft(builtins)p Fu(,)f Ft(doc)p Fu(,)h Ft(po)p +Fu(,)g(and)f Ft(support)g Fu(directories,)150 3672 y(eac)m(h)38 +b(directory)g(under)d Ft(lib)p Fu(,)j(and)f(sev)m(eral)h(others\).)61 +b(It)38 b(also)g(creates)g(a)f Ft(config.h)e Fu(\014le)i(con)m(taining) +150 3781 y(system-dep)s(enden)m(t)31 b(de\014nitions.)44 +b(Finally)-8 b(,)34 b(it)e(creates)h(a)f(shell)g(script)f(named)g +Ft(config.status)d Fu(that)150 3891 y(y)m(ou)35 b(can)h(run)d(in)i(the) +g(future)f(to)i(recreate)g(the)g(curren)m(t)e(con\014guration,)j(a)f +(\014le)f Ft(config.cache)c Fu(that)150 4001 y(sa)m(v)m(es)39 +b(the)e(results)g(of)g(its)h(tests)g(to)g(sp)s(eed)e(up)h +(recon\014guring,)h(and)f(a)h(\014le)f Ft(config.log)d +Fu(con)m(taining)150 4110 y(compiler)c(output)g(\(useful)f(mainly)h +(for)f(debugging)h Ft(configure)p Fu(\).)38 b(If)29 b(at)i(some)f(p)s +(oin)m(t)f Ft(config.cache)150 4220 y Fu(con)m(tains)j(results)e(y)m +(ou)g(don't)h(w)m(an)m(t)g(to)g(k)m(eep,)g(y)m(ou)g(ma)m(y)g(remo)m(v)m +(e)h(or)e(edit)h(it.)275 4356 y(T)-8 b(o)37 b(\014nd)f(out)i(more)f(ab) +s(out)h(the)f(options)h(and)f(argumen)m(ts)g(that)h(the)g +Ft(configure)d Fu(script)i(under-)150 4466 y(stands,)30 +b(t)m(yp)s(e)390 4602 y Ft(bash-4.2$)45 b(./configure)g(--help)150 +4738 y Fu(at)31 b(the)g(Bash)f(prompt)g(in)g(y)m(our)g(Bash)h(source)f +(directory)-8 b(.)275 4875 y(If)34 b(y)m(ou)h(w)m(an)m(t)g(to)g(build)f +(Bash)g(in)h(a)g(directory)g(separate)g(from)f(the)h(source)g +(directory)g({)g(to)g(build)150 4984 y(for)30 b(m)m(ultiple)i(arc)m +(hitectures,)g(for)e(example)h({)g(just)f(use)h(the)f(full)h(path)f(to) +h(the)g(con\014gure)f(script.)41 b(The)150 5094 y(follo)m(wing)24 +b(commands)f(will)g(build)f(bash)g(in)g(a)h(directory)h(under)d +Ft(/usr/local/build)d Fu(from)23 b(the)g(source)150 5204 +y(co)s(de)31 b(in)f Ft(/usr/local/src/bash-4.4)o Fu(:)390 +5340 y Ft(mkdir)46 b(/usr/local/build/bash-4.4)p eop +end +%%Page: 159 165 +TeXDict begin 159 164 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(159)390 299 y Ft(cd)47 +b(/usr/local/build/bash-4.4)390 408 y(bash)g(/usr/local/src/bash-4.4)o +(/con)o(fig)o(ure)390 518 y(make)275 652 y Fu(See)27 +b(Section)h(10.3)g([Compiling)g(F)-8 b(or)27 b(Multiple)h(Arc)m +(hitectures],)i(page)d(159,)j(for)c(more)i(information)150 +762 y(ab)s(out)i(building)g(in)g(a)g(directory)h(separate)h(from)e(the) +g(source.)275 896 y(If)53 b(y)m(ou)h(need)f(to)i(do)e(un)m(usual)g +(things)g(to)i(compile)g(Bash,)k(please)c(try)e(to)i(\014gure)e(out)h +(ho)m(w)150 1006 y Ft(configure)47 b Fu(could)j(c)m(hec)m(k)h(whether)e +(or)g(not)h(to)h(do)e(them,)55 b(and)49 b(mail)h(di\013s)f(or)h +(instructions)f(to)150 1115 y Ft(bash-maintainers@gnu.org)24 +b Fu(so)30 b(they)h(can)g(b)s(e)e(considered)i(for)f(the)g(next)h +(release.)275 1250 y(The)e(\014le)g Ft(configure.ac)d +Fu(is)k(used)e(to)j(create)g Ft(configure)c Fu(b)m(y)i(a)h(program)f +(called)i(Auto)s(conf.)40 b(Y)-8 b(ou)150 1359 y(only)34 +b(need)g Ft(configure.ac)d Fu(if)i(y)m(ou)i(w)m(an)m(t)g(to)f(c)m +(hange)i(it)e(or)g(regenerate)i Ft(configure)31 b Fu(using)j(a)g(new)m +(er)150 1469 y(v)m(ersion)25 b(of)f(Auto)s(conf.)39 b(If)24 +b(y)m(ou)h(do)f(this,)i(mak)m(e)f(sure)f(y)m(ou)h(are)f(using)g(Auto)s +(conf)h(v)m(ersion)f(2.69)i(or)f(new)m(er.)275 1603 y(Y)-8 +b(ou)29 b(can)f(remo)m(v)m(e)i(the)f(program)g(binaries)f(and)g(ob)5 +b(ject)29 b(\014les)g(from)f(the)h(source)f(co)s(de)h(directory)g(b)m +(y)150 1713 y(t)m(yping)j(`)p Ft(make)d(clean)p Fu('.)42 +b(T)-8 b(o)32 b(also)g(remo)m(v)m(e)g(the)g(\014les)f(that)g Ft(configure)e Fu(created)j(\(so)g(y)m(ou)g(can)f(compile)150 -1237 y(Bash)g(for)f(a)g(di\013eren)m(t)h(kind)f(of)g(computer\),)h(t)m -(yp)s(e)g(`)p Ft(make)e(distclean)p Fu('.)150 1487 y -Fs(10.2)68 b(Compilers)46 b(and)f(Options)150 1646 y +1822 y(Bash)g(for)f(a)g(di\013eren)m(t)h(kind)f(of)g(computer\),)h(t)m +(yp)s(e)g(`)p Ft(make)e(distclean)p Fu('.)150 2063 y +Fs(10.2)68 b(Compilers)46 b(and)f(Options)150 2222 y Fu(Some)28 b(systems)h(require)f(un)m(usual)f(options)i(for)f (compilation)i(or)f(linking)f(that)h(the)g Ft(configure)d -Fu(script)150 1756 y(do)s(es)32 b(not)g(kno)m(w)g(ab)s(out.)44 +Fu(script)150 2332 y(do)s(es)32 b(not)g(kno)m(w)g(ab)s(out.)44 b(Y)-8 b(ou)33 b(can)f(giv)m(e)h Ft(configure)d Fu(initial)j(v)-5 b(alues)32 b(for)g(v)-5 b(ariables)32 b(b)m(y)g(setting)h(them)150 -1865 y(in)k(the)g(en)m(vironmen)m(t.)62 b(Using)38 b(a)f +2441 y(in)k(the)g(en)m(vironmen)m(t.)62 b(Using)38 b(a)f (Bourne-compatible)i(shell,)g(y)m(ou)f(can)g(do)f(that)h(on)f(the)g -(command)150 1975 y(line)31 b(lik)m(e)g(this:)390 2115 +(command)150 2551 y(line)31 b(lik)m(e)g(this:)390 2685 y Ft(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g(./configure)275 -2255 y Fu(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f +2819 y Fu(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f Ft(env)e Fu(program,)h(y)m(ou)h(can)g(do)f(it)h(lik)m(e)h(this:)390 -2396 y Ft(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42 -b(LDFLAGS=-s)j(./configure)275 2536 y Fu(The)29 b(con\014guration)i +2954 y Ft(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42 +b(LDFLAGS=-s)j(./configure)275 3088 y Fu(The)29 b(con\014guration)i (pro)s(cess)f(uses)g(GCC)g(to)h(build)e(Bash)i(if)f(it)h(is)g(a)m(v)-5 -b(ailable.)150 2786 y Fs(10.3)68 b(Compiling)46 b(F)-11 -b(or)45 b(Multiple)g(Arc)l(hitectures)150 2945 y Fu(Y)-8 +b(ailable.)150 3328 y Fs(10.3)68 b(Compiling)46 b(F)-11 +b(or)45 b(Multiple)g(Arc)l(hitectures)150 3488 y Fu(Y)-8 b(ou)27 b(can)g(compile)g(Bash)g(for)f(more)h(than)f(one)h(kind)f(of)g (computer)h(at)g(the)g(same)g(time,)h(b)m(y)e(placing)i(the)150 -3055 y(ob)5 b(ject)31 b(\014les)f(for)g(eac)m(h)i(arc)m(hitecture)f(in) +3597 y(ob)5 b(ject)31 b(\014les)f(for)g(eac)m(h)i(arc)m(hitecture)f(in) f(their)g(o)m(wn)h(directory)-8 b(.)41 b(T)-8 b(o)31 b(do)f(this,)g(y)m(ou)h(m)m(ust)f(use)g(a)g(v)m(ersion)150 -3164 y(of)36 b Ft(make)e Fu(that)i(supp)s(orts)e(the)i +3707 y(of)36 b Ft(make)e Fu(that)i(supp)s(orts)e(the)i Ft(VPATH)e Fu(v)-5 b(ariable,)38 b(suc)m(h)d(as)h(GNU)g Ft(make)p Fu(.)55 b Ft(cd)35 b Fu(to)i(the)e(directory)h(where)150 -3274 y(y)m(ou)k(w)m(an)m(t)h(the)g(ob)5 b(ject)41 b(\014les)f(and)f +3817 y(y)m(ou)k(w)m(an)m(t)h(the)g(ob)5 b(ject)41 b(\014les)f(and)f (executables)j(to)e(go)h(and)f(run)e(the)j Ft(configure)c -Fu(script)j(from)g(the)150 3383 y(source)32 b(directory)h(\(see)g -(Section)f(10.1)i([Basic)f(Installation],)i(page)e(152\).)47 -b(Y)-8 b(ou)32 b(ma)m(y)h(need)f(to)g(supply)150 3493 +Fu(script)j(from)g(the)150 3926 y(source)32 b(directory)h(\(see)g +(Section)f(10.1)i([Basic)f(Installation],)i(page)e(158\).)47 +b(Y)-8 b(ou)32 b(ma)m(y)h(need)f(to)g(supply)150 4036 y(the)43 b Ft(--srcdir=PATH)c Fu(argumen)m(t)k(to)h(tell)g Ft(configure)c Fu(where)i(the)h(source)g(\014les)g(are.)78 -b Ft(configure)150 3603 y Fu(automatically)33 b(c)m(hec)m(ks)f(for)e +b Ft(configure)150 4145 y Fu(automatically)33 b(c)m(hec)m(ks)f(for)e (the)h(source)f(co)s(de)h(in)f(the)h(directory)f(that)h -Ft(configure)d Fu(is)j(in)f(and)f(in)h(`..'.)275 3743 -y(If)20 b(y)m(ou)h(ha)m(v)m(e)i(to)e(use)g(a)g Ft(make)f -Fu(that)i(do)s(es)e(not)i(supp)s(orts)d(the)i Ft(VPATH)e -Fu(v)-5 b(ariable,)24 b(y)m(ou)e(can)f(compile)h(Bash)150 -3853 y(for)33 b(one)h(arc)m(hitecture)h(at)f(a)g(time)g(in)f(the)h +Ft(configure)d Fu(is)j(in)f(and)f(in)h(`..'.)275 4280 +y(If)22 b(y)m(ou)i(ha)m(v)m(e)g(to)g(use)f(a)g Ft(make)f +Fu(that)i(do)s(es)f(not)g(supp)s(ort)e(the)j Ft(VPATH)d +Fu(v)-5 b(ariable,)26 b(y)m(ou)d(can)h(compile)g(Bash)150 +4389 y(for)33 b(one)h(arc)m(hitecture)h(at)f(a)g(time)g(in)f(the)h (source)g(co)s(de)f(directory)-8 b(.)51 b(After)34 b(y)m(ou)g(ha)m(v)m -(e)h(installed)f(Bash)150 3962 y(for)c(one)h(arc)m(hitecture,)h(use)e +(e)h(installed)f(Bash)150 4499 y(for)c(one)h(arc)m(hitecture,)h(use)e (`)p Ft(make)g(distclean)p Fu(')e(b)s(efore)i(recon\014guring)g(for)g -(another)g(arc)m(hitecture.)275 4102 y(Alternativ)m(ely)-8 +(another)g(arc)m(hitecture.)275 4633 y(Alternativ)m(ely)-8 b(,)30 b(if)c(y)m(our)g(system)h(supp)s(orts)d(sym)m(b)s(olic)j(links,) -g(y)m(ou)g(can)g(use)f(the)g Ft(support/mkclone)150 4212 +g(y)m(ou)g(can)g(use)f(the)g Ft(support/mkclone)150 4743 y Fu(script)d(to)h(create)g(a)f(build)f(tree)i(whic)m(h)f(has)f(sym)m (b)s(olic)i(links)e(bac)m(k)i(to)g(eac)m(h)g(\014le)f(in)g(the)g -(source)g(directory)-8 b(.)150 4322 y(Here's)41 b(an)f(example)i(that)f +(source)g(directory)-8 b(.)150 4852 y(Here's)41 b(an)f(example)i(that)f (creates)h(a)e(build)g(directory)h(in)f(the)h(curren)m(t)f(directory)h -(from)f(a)h(source)150 4431 y(directory)31 b Ft(/usr/gnu/src/bash-2.0)p -Fu(:)390 4572 y Ft(bash)47 b(/usr/gnu/src/bash-2.0/s)o(uppo)o(rt/)o +(from)f(a)h(source)150 4962 y(directory)31 b Ft(/usr/gnu/src/bash-2.0)p +Fu(:)390 5096 y Ft(bash)47 b(/usr/gnu/src/bash-2.0/s)o(uppo)o(rt/)o (mkcl)o(one)41 b(-s)47 b(/usr/gnu/src/bash-2.0)42 b(.)150 -4712 y Fu(The)c Ft(mkclone)e Fu(script)i(requires)g(Bash,)i(so)f(y)m +5230 y Fu(The)c Ft(mkclone)e Fu(script)i(requires)g(Bash,)i(so)f(y)m (ou)f(m)m(ust)h(ha)m(v)m(e)g(already)g(built)f(Bash)g(for)g(at)h(least) -h(one)150 4821 y(arc)m(hitecture)32 b(b)s(efore)e(y)m(ou)h(can)f -(create)i(build)e(directories)h(for)f(other)h(arc)m(hitectures.)150 -5071 y Fs(10.4)68 b(Installation)47 b(Names)150 5230 -y Fu(By)37 b(default,)i(`)p Ft(make)29 b(install)p Fu(')35 -b(will)j(install)f(in)m(to)h Ft(/usr/local/bin)p Fu(,)d -Ft(/usr/local/man)p Fu(,)f(etc.)61 b(Y)-8 b(ou)150 5340 -y(can)35 b(sp)s(ecify)f(an)h(installation)i(pre\014x)c(other)j(than)e -Ft(/usr/local)e Fu(b)m(y)j(giving)g Ft(configure)e Fu(the)h(option)p +h(one)150 5340 y(arc)m(hitecture)32 b(b)s(efore)e(y)m(ou)h(can)f +(create)i(build)e(directories)h(for)f(other)h(arc)m(hitectures.)p eop end -%%Page: 154 160 -TeXDict begin 154 159 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(154)150 299 y Ft(--prefix=)p -Fj(PATH)p Fu(,)41 b(or)g(b)m(y)g(sp)s(ecifying)h(a)f(v)-5 -b(alue)42 b(for)f(the)h Ft(DESTDIR)d Fu(`)p Ft(make)p -Fu(')i(v)-5 b(ariable)42 b(when)f(running)150 408 y(`)p -Ft(make)29 b(install)p Fu('.)275 566 y(Y)-8 b(ou)71 b(can)h(sp)s(ecify) -f(separate)h(installation)h(pre\014xes)d(for)h(arc)m(hitecture-sp)s -(eci\014c)i(\014les)f(and)150 676 y(arc)m(hitecture-indep)s(enden)m(t) -44 b(\014les.)80 b(If)43 b(y)m(ou)h(giv)m(e)h Ft(configure)c -Fu(the)j(option)g Ft(--exec-prefix=)p Fj(PATH)p Fu(,)150 -785 y(`)p Ft(make)29 b(install)p Fu(')63 b(will)h(use)f -Fr(P)-8 b(A)g(TH)75 b Fu(as)64 b(the)g(pre\014x)e(for)i(installing)h -(programs)e(and)h(libraries.)150 895 y(Do)s(cumen)m(tation)32 -b(and)e(other)h(data)g(\014les)f(will)h(still)g(use)f(the)h(regular)f -(pre\014x.)150 1171 y Fs(10.5)68 b(Sp)t(ecifying)45 b(the)g(System)h(T) -l(yp)t(e)150 1330 y Fu(There)f(ma)m(y)g(b)s(e)f(some)i(features)f -Ft(configure)e Fu(can)i(not)g(\014gure)g(out)g(automatically)-8 -b(,)52 b(but)44 b(need)h(to)150 1440 y(determine)26 b(b)m(y)g(the)g(t)m -(yp)s(e)g(of)g(host)g(Bash)g(will)g(run)f(on.)39 b(Usually)26 +%%Page: 160 166 +TeXDict begin 160 165 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(160)150 299 y Fs(10.4)68 +b(Installation)47 b(Names)150 458 y Fu(By)36 b(default,)g(`)p +Ft(make)30 b(install)p Fu(')j(will)j(install)g(in)m(to)g +Ft(/usr/local/bin)p Fu(,)d Ft(/usr/local/man)p Fu(,)g(etc.;)39 +b(that)150 568 y(is,)i(the)d Fr(installation)i(pre\014x)k +Fu(defaults)38 b(to)h Ft(/usr/local)p Fu(.)62 b(Y)-8 +b(ou)39 b(can)g(sp)s(ecify)f(an)g(installation)i(pre\014x)150 +677 y(other)34 b(than)g Ft(/usr/local)d Fu(b)m(y)j(giving)h +Ft(configure)d Fu(the)i(option)g Ft(--prefix=)p Fj(PATH)p +Fu(,)e(or)i(b)m(y)g(sp)s(ecifying)150 787 y(a)h(v)-5 +b(alue)34 b(for)h(the)f Ft(prefix)f Fu(`)p Ft(make)p +Fu(')g(v)-5 b(ariable)35 b(when)f(running)e(`)p Ft(make)e(install)p +Fu(')i(\(e.g.,)37 b(`)p Ft(make)30 b(install)150 897 +y(prefix=)p Fj(PATH)p Fu('\).)35 b(The)21 b Ft(prefix)f +Fu(v)-5 b(ariable)22 b(pro)m(vides)g(a)f(default)h(for)f +Ft(exec_prefix)e Fu(and)i(other)g(v)-5 b(ariables)150 +1006 y(used)30 b(when)f(installing)i(bash.)275 1159 y(Y)-8 +b(ou)71 b(can)h(sp)s(ecify)f(separate)h(installation)h(pre\014xes)d +(for)h(arc)m(hitecture-sp)s(eci\014c)i(\014les)f(and)150 +1268 y(arc)m(hitecture-indep)s(enden)m(t)44 b(\014les.)80 +b(If)43 b(y)m(ou)h(giv)m(e)h Ft(configure)c Fu(the)j(option)g +Ft(--exec-prefix=)p Fj(PATH)p Fu(,)150 1378 y(`)p Ft(make)29 +b(install)p Fu(')63 b(will)h(use)f Fr(P)-8 b(A)g(TH)75 +b Fu(as)64 b(the)g(pre\014x)e(for)i(installing)h(programs)e(and)h +(libraries.)150 1488 y(Do)s(cumen)m(tation)32 b(and)e(other)h(data)g +(\014les)f(will)h(still)g(use)f(the)h(regular)f(pre\014x.)275 +1640 y(If)35 b(y)m(ou)i(w)m(ould)e(lik)m(e)j(to)e(c)m(hange)i(the)e +(installation)i(lo)s(cations)f(for)f(a)h(single)f(run,)h(y)m(ou)f(can)g +(sp)s(ecify)150 1750 y(these)28 b(v)-5 b(ariables)27 +b(as)h(argumen)m(ts)f(to)h Ft(make)p Fu(:)38 b(`)p Ft(make)29 +b(install)g(exec_prefix=/)p Fu(')23 b(will)28 b(install)g +Ft(bash)e Fu(and)150 1859 y Ft(bashbug)i Fu(in)m(to)k +Ft(/bin)d Fu(instead)i(of)f(the)h(default)f Ft(/usr/local/bin)p +Fu(.)275 2012 y(If)43 b(y)m(ou)i(w)m(an)m(t)g(to)g(see)f(the)h(\014les) +f(bash)f(will)i(install)g(and)e(where)h(it)g(will)h(install)g(them)f +(without)150 2122 y(c)m(hanging)35 b(an)m(ything)f(on)f(y)m(our)h +(system,)h(sp)s(ecify)e(the)h(v)-5 b(ariable)35 b Ft(DESTDIR)d +Fu(as)i(an)f(argumen)m(t)h(to)h Ft(make)p Fu(.)150 2231 +y(Its)29 b(v)-5 b(alue)29 b(should)f(b)s(e)g(the)h(absolute)h +(directory)f(path)g(y)m(ou'd)g(lik)m(e)h(to)g(use)e(as)i(the)f(ro)s(ot) +g(of)g(y)m(our)g(sample)150 2341 y(installation)j(tree.)42 +b(F)-8 b(or)31 b(example,)390 2493 y Ft(mkdir)46 b(/fs1/bash-install) +390 2603 y(make)h(install)e(DESTDIR=/fs1/bash-install)150 +2756 y Fu(will)37 b(install)g Ft(bash)e Fu(in)m(to)j +Ft(/fs1/bash-install/usr/l)o(ocal)o(/bin)o(/ba)o(sh)p +Fu(,)32 b(the)37 b(do)s(cumen)m(tation)g(in)m(to)150 +2865 y(directories)44 b(within)e Ft(/fs1/bash-install/usr/l)o(ocal)o +(/sha)o(re)p Fu(,)e(the)i(example)i(loadable)g(builtins)150 +2975 y(in)m(to)35 b Ft(/fs1/bash-install/usr/loc)o(al/l)o(ib/b)o(ash)o +Fu(,)30 b(and)k(so)g(on.)53 b(Y)-8 b(ou)34 b(can)h(use)f(the)h(usual)e +Ft(exec_)150 3084 y(prefix)c Fu(and)g Ft(prefix)g Fu(v)-5 +b(ariables)31 b(to)g(alter)h(the)e(directory)h(paths)f(b)s(eneath)g +(the)h(v)-5 b(alue)30 b(of)h Ft(DESTDIR)p Fu(.)275 3237 +y(The)24 b(GNU)i(Mak)m(e\014le)h(standards)d(pro)m(vide)i(a)f(more)h +(complete)g(description)g(of)f(these)h(v)-5 b(ariables)26 +b(and)150 3346 y(their)k(e\013ects.)150 3614 y Fs(10.5)68 +b(Sp)t(ecifying)45 b(the)g(System)h(T)l(yp)t(e)150 3774 +y Fu(There)c(ma)m(y)h(b)s(e)e(some)i(features)g Ft(configure)c +Fu(can)k(not)g(\014gure)e(out)i(automatically)-8 b(,)49 +b(but)41 b(needs)h(to)150 3883 y(determine)26 b(b)m(y)g(the)g(t)m(yp)s +(e)g(of)g(host)g(Bash)g(will)g(run)f(on.)39 b(Usually)26 b Ft(configure)d Fu(can)k(\014gure)e(that)h(out,)i(but)150 -1549 y(if)g(it)g(prin)m(ts)f(a)h(message)g(sa)m(ying)h(it)f(can)g(not)f +3993 y(if)g(it)g(prin)m(ts)f(a)h(message)g(sa)m(ying)h(it)f(can)g(not)f (guess)h(the)g(host)f(t)m(yp)s(e,)i(giv)m(e)g(it)f(the)g -Ft(--host=TYPE)c Fu(option.)150 1659 y(`)p Ft(TYPE)p +Ft(--host=TYPE)c Fu(option.)150 4103 y(`)p Ft(TYPE)p Fu(')29 b(can)h(either)g(b)s(e)g(a)g(short)f(name)h(for)f(the)h(system) g(t)m(yp)s(e,)h(suc)m(h)e(as)h(`)p Ft(sun4)p Fu(',)g(or)f(a)h -(canonical)i(name)150 1768 y(with)e(three)h(\014elds:)40 +(canonical)i(name)150 4212 y(with)e(three)h(\014elds:)40 b(`)p Ft(CPU-COMPANY-SYSTEM)p Fu(')26 b(\(e.g.,)32 b(`)p -Ft(i386-unknown-freebsd4.2)p Fu('\).)275 1926 y(See)e(the)h(\014le)f +Ft(i386-unknown-freebsd4.2)p Fu('\).)275 4365 y(See)e(the)h(\014le)f Ft(support/config.sub)c Fu(for)k(the)g(p)s(ossible)g(v)-5 -b(alues)31 b(of)f(eac)m(h)i(\014eld.)150 2202 y Fs(10.6)68 -b(Sharing)45 b(Defaults)150 2361 y Fu(If)d(y)m(ou)i(w)m(an)m(t)g(to)f +b(alues)31 b(of)f(eac)m(h)i(\014eld.)150 4633 y Fs(10.6)68 +b(Sharing)45 b(Defaults)150 4792 y Fu(If)d(y)m(ou)i(w)m(an)m(t)g(to)f (set)h(default)f(v)-5 b(alues)43 b(for)g Ft(configure)d Fu(scripts)j(to)h(share,)i(y)m(ou)d(can)g(create)i(a)e(site)150 -2471 y(shell)48 b(script)f(called)i Ft(config.site)44 +4902 y(shell)48 b(script)f(called)i Ft(config.site)44 b Fu(that)k(giv)m(es)h(default)f(v)-5 b(alues)48 b(for)f(v)-5 b(ariables)48 b(lik)m(e)h Ft(CC)p Fu(,)j Ft(cache_)150 -2580 y(file)p Fu(,)c(and)d Ft(prefix)p Fu(.)85 b Ft(configure)43 +5011 y(file)p Fu(,)c(and)d Ft(prefix)p Fu(.)85 b Ft(configure)43 b Fu(lo)s(oks)j(for)f Ft(PREFIX/share/config.site)39 -b Fu(if)46 b(it)g(exists,)k(then)150 2690 y Ft(PREFIX/etc/config.site) +b Fu(if)46 b(it)g(exists,)k(then)150 5121 y Ft(PREFIX/etc/config.site) 24 b Fu(if)31 b(it)g(exists.)42 b(Or,)30 b(y)m(ou)h(can)g(set)g(the)g Ft(CONFIG_SITE)c Fu(en)m(vironmen)m(t)k(v)-5 b(ari-)150 -2800 y(able)40 b(to)g(the)g(lo)s(cation)h(of)e(the)h(site)g(script.)67 +5230 y(able)40 b(to)g(the)g(lo)s(cation)h(of)e(the)h(site)g(script.)67 b(A)40 b(w)m(arning:)58 b(the)40 b(Bash)g Ft(configure)c -Fu(lo)s(oks)k(for)f(a)h(site)150 2909 y(script,)31 b(but)e(not)i(all)g -Ft(configure)d Fu(scripts)i(do.)150 3185 y Fs(10.7)68 -b(Op)t(eration)46 b(Con)l(trols)150 3344 y Ft(configure)28 +Fu(lo)s(oks)k(for)f(a)h(site)150 5340 y(script,)31 b(but)e(not)i(all)g +Ft(configure)d Fu(scripts)i(do.)p eop end +%%Page: 161 167 +TeXDict begin 161 166 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(161)150 299 y Fs(10.7)68 +b(Op)t(eration)46 b(Con)l(trols)150 458 y Ft(configure)28 b Fu(recognizes)k(the)e(follo)m(wing)i(options)f(to)g(con)m(trol)h(ho)m -(w)e(it)h(op)s(erates.)150 3538 y Ft(--cache-file=)p -Fj(file)630 3648 y Fu(Use)d(and)g(sa)m(v)m(e)h(the)f(results)g(of)g -(the)h(tests)f(in)g Fr(\014le)33 b Fu(instead)28 b(of)h -Ft(./config.cache)p Fu(.)36 b(Set)28 b Fr(\014le)630 -3758 y Fu(to)j Ft(/dev/null)d Fu(to)j(disable)g(cac)m(hing,)h(for)e -(debugging)g Ft(configure)p Fu(.)150 3940 y Ft(--help)192 -b Fu(Prin)m(t)30 b(a)h(summary)e(of)i(the)f(options)h(to)g -Ft(configure)p Fu(,)d(and)i(exit.)150 4123 y Ft(--quiet)150 -4232 y(--silent)150 4342 y(-q)384 b Fu(Do)31 b(not)g(prin)m(t)f -(messages)h(sa)m(ying)g(whic)m(h)g(c)m(hec)m(ks)g(are)g(b)s(eing)f -(made.)150 4525 y Ft(--srcdir=)p Fj(dir)630 4634 y Fu(Lo)s(ok)i(for)g -(the)g(Bash)g(source)h(co)s(de)f(in)g(directory)g Fr(dir)p -Fu(.)45 b(Usually)33 b Ft(configure)c Fu(can)j(deter-)630 -4744 y(mine)e(that)h(directory)g(automatically)-8 b(.)150 -4927 y Ft(--version)630 5036 y Fu(Prin)m(t)29 b(the)h(v)m(ersion)g(of)g -(Auto)s(conf)f(used)g(to)h(generate)h(the)f Ft(configure)d -Fu(script,)j(and)f(exit.)275 5230 y Ft(configure)34 b -Fu(also)k(accepts)g(some)g(other,)h(not)e(widely)g(used,)h(b)s -(oilerplate)g(options.)61 b(`)p Ft(configure)150 5340 -y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)p -eop end -%%Page: 155 161 -TeXDict begin 155 160 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(155)150 299 y Fs(10.8)68 -b(Optional)46 b(F)-11 b(eatures)150 458 y Fu(The)29 b(Bash)h -Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f(of)h Ft(--enable-)p -Fj(feature)25 b Fu(options,)30 b(where)g Fr(feature)35 -b Fu(indicates)150 568 y(an)e(optional)i(part)e(of)h(Bash.)50 -b(There)33 b(are)g(also)i(sev)m(eral)g Ft(--with-)p Fj(package)29 -b Fu(options,)35 b(where)e Fr(pac)m(k)-5 b(age)150 677 -y Fu(is)32 b(something)h(lik)m(e)h(`)p Ft(bash-malloc)p -Fu(')c(or)i(`)p Ft(purify)p Fu('.)45 b(T)-8 b(o)33 b(turn)e(o\013)i -(the)f(default)h(use)f(of)g(a)h(pac)m(k)-5 b(age,)35 -b(use)150 787 y Ft(--without-)p Fj(package)p Fu(.)46 -b(T)-8 b(o)34 b(con\014gure)g(Bash)g(without)f(a)i(feature)f(that)g(is) -g(enabled)g(b)m(y)f(default,)i(use)150 897 y Ft(--disable-)p -Fj(feature)p Fu(.)275 1033 y(Here)28 b(is)g(a)h(complete)g(list)g(of)f -(the)h Ft(--enable-)c Fu(and)j Ft(--with-)e Fu(options)i(that)h(the)f -(Bash)g Ft(configure)150 1143 y Fu(recognizes.)150 1306 -y Ft(--with-afs)630 1415 y Fu(De\014ne)j(if)f(y)m(ou)h(are)f(using)g -(the)h(Andrew)e(File)j(System)e(from)g(T)-8 b(ransarc.)150 -1577 y Ft(--with-bash-malloc)630 1686 y Fu(Use)34 b(the)g(Bash)h(v)m -(ersion)f(of)g Ft(malloc)e Fu(in)i(the)g(directory)h -Ft(lib/malloc)p Fu(.)48 b(This)34 b(is)g(not)g(the)630 -1796 y(same)e Ft(malloc)e Fu(that)j(app)s(ears)e(in)g -Fm(gnu)h Fu(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i(originally)g -(deriv)m(ed)630 1905 y(from)f(the)h(4.2)g Fm(bsd)f Ft(malloc)p -Fu(.)45 b(This)31 b Ft(malloc)g Fu(is)i(v)m(ery)f(fast,)i(but)e(w)m -(astes)h(some)g(space)g(on)630 2015 y(eac)m(h)j(allo)s(cation.)58 -b(This)34 b(option)i(is)f(enabled)g(b)m(y)g(default.)56 -b(The)34 b Ft(NOTES)g Fu(\014le)h(con)m(tains)i(a)630 -2125 y(list)29 b(of)f(systems)f(for)h(whic)m(h)g(this)g(should)e(b)s(e) -i(turned)e(o\013,)j(and)f Ft(configure)d Fu(disables)j(this)630 -2234 y(option)j(automatically)i(for)d(a)h(n)m(um)m(b)s(er)e(of)i -(systems.)150 2396 y Ft(--with-curses)630 2505 y Fu(Use)h(the)h(curses) +(w)e(it)h(op)s(erates.)150 606 y Ft(--cache-file=)p Fj(file)630 +716 y Fu(Use)d(and)g(sa)m(v)m(e)h(the)f(results)g(of)g(the)h(tests)f +(in)g Fr(\014le)33 b Fu(instead)28 b(of)h Ft(./config.cache)p +Fu(.)36 b(Set)28 b Fr(\014le)630 825 y Fu(to)j Ft(/dev/null)d +Fu(to)j(disable)g(cac)m(hing,)h(for)e(debugging)g Ft(configure)p +Fu(.)150 973 y Ft(--help)192 b Fu(Prin)m(t)30 b(a)h(summary)e(of)i(the) +f(options)h(to)g Ft(configure)p Fu(,)d(and)i(exit.)150 +1121 y Ft(--quiet)150 1230 y(--silent)150 1340 y(-q)384 +b Fu(Do)31 b(not)g(prin)m(t)f(messages)h(sa)m(ying)g(whic)m(h)g(c)m +(hec)m(ks)g(are)g(b)s(eing)f(made.)150 1487 y Ft(--srcdir=)p +Fj(dir)630 1597 y Fu(Lo)s(ok)i(for)g(the)g(Bash)g(source)h(co)s(de)f +(in)g(directory)g Fr(dir)p Fu(.)45 b(Usually)33 b Ft(configure)c +Fu(can)j(deter-)630 1707 y(mine)e(that)h(directory)g(automatically)-8 +b(.)150 1854 y Ft(--version)630 1964 y Fu(Prin)m(t)29 +b(the)h(v)m(ersion)g(of)g(Auto)s(conf)f(used)g(to)h(generate)h(the)f +Ft(configure)d Fu(script,)j(and)f(exit.)275 2112 y Ft(configure)34 +b Fu(also)k(accepts)g(some)g(other,)h(not)e(widely)g(used,)h(b)s +(oilerplate)g(options.)61 b(`)p Ft(configure)150 2221 +y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)150 +2450 y Fs(10.8)68 b(Optional)46 b(F)-11 b(eatures)150 +2610 y Fu(The)29 b(Bash)h Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f +(of)h Ft(--enable-)p Fj(feature)25 b Fu(options,)30 b(where)g +Fr(feature)35 b Fu(indicates)150 2719 y(an)e(optional)i(part)e(of)h +(Bash.)50 b(There)33 b(are)g(also)i(sev)m(eral)g Ft(--with-)p +Fj(package)29 b Fu(options,)35 b(where)e Fr(pac)m(k)-5 +b(age)150 2829 y Fu(is)32 b(something)h(lik)m(e)h(`)p +Ft(bash-malloc)p Fu(')c(or)i(`)p Ft(purify)p Fu('.)45 +b(T)-8 b(o)33 b(turn)e(o\013)i(the)f(default)h(use)f(of)g(a)h(pac)m(k) +-5 b(age,)35 b(use)150 2939 y Ft(--without-)p Fj(package)p +Fu(.)46 b(T)-8 b(o)34 b(con\014gure)g(Bash)g(without)f(a)i(feature)f +(that)g(is)g(enabled)g(b)m(y)f(default,)i(use)150 3048 +y Ft(--disable-)p Fj(feature)p Fu(.)275 3177 y(Here)28 +b(is)g(a)h(complete)g(list)g(of)f(the)h Ft(--enable-)c +Fu(and)j Ft(--with-)e Fu(options)i(that)h(the)f(Bash)g +Ft(configure)150 3286 y Fu(recognizes.)150 3434 y Ft(--with-afs)630 +3544 y Fu(De\014ne)j(if)f(y)m(ou)h(are)f(using)g(the)h(Andrew)e(File)j +(System)e(from)g(T)-8 b(ransarc.)150 3691 y Ft(--with-bash-malloc)630 +3801 y Fu(Use)34 b(the)g(Bash)h(v)m(ersion)f(of)g Ft(malloc)e +Fu(in)i(the)g(directory)h Ft(lib/malloc)p Fu(.)48 b(This)34 +b(is)g(not)g(the)630 3911 y(same)e Ft(malloc)e Fu(that)j(app)s(ears)e +(in)g Fm(gnu)h Fu(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i +(originally)g(deriv)m(ed)630 4020 y(from)f(the)h(4.2)g +Fm(bsd)f Ft(malloc)p Fu(.)45 b(This)31 b Ft(malloc)g +Fu(is)i(v)m(ery)f(fast,)i(but)e(w)m(astes)h(some)g(space)g(on)630 +4130 y(eac)m(h)j(allo)s(cation.)58 b(This)34 b(option)i(is)f(enabled)g +(b)m(y)g(default.)56 b(The)34 b Ft(NOTES)g Fu(\014le)h(con)m(tains)i(a) +630 4239 y(list)29 b(of)f(systems)f(for)h(whic)m(h)g(this)g(should)e(b) +s(e)i(turned)e(o\013,)j(and)f Ft(configure)d Fu(disables)j(this)630 +4349 y(option)j(automatically)i(for)d(a)h(n)m(um)m(b)s(er)e(of)i +(systems.)150 4497 y Ft(--with-curses)630 4606 y Fu(Use)h(the)h(curses) e(library)h(instead)g(of)h(the)f(termcap)g(library)-8 -b(.)46 b(This)32 b(should)f(b)s(e)g(supplied)630 2615 +b(.)46 b(This)32 b(should)f(b)s(e)g(supplied)630 4716 y(if)f(y)m(our)h(system)f(has)g(an)h(inadequate)g(or)f(incomplete)i -(termcap)e(database.)150 2777 y Ft(--with-gnu-malloc)630 -2886 y Fu(A)g(synon)m(ym)g(for)g Ft(--with-bash-malloc)p -Fu(.)150 3048 y Ft(--with-installed-readlin)o(e[=)p Fj(P)o(REFI)o(X)p -Ft(])630 3157 y Fu(De\014ne)c(this)f(to)h(mak)m(e)h(Bash)f(link)f(with) +(termcap)e(database.)150 4863 y Ft(--with-gnu-malloc)630 +4973 y Fu(A)g(synon)m(ym)g(for)g Ft(--with-bash-malloc)p +Fu(.)150 5121 y Ft(--with-installed-readlin)o(e[=)p Fj(P)o(REFI)o(X)p +Ft(])630 5230 y Fu(De\014ne)c(this)f(to)h(mak)m(e)h(Bash)f(link)f(with) g(a)h(lo)s(cally-installed)i(v)m(ersion)e(of)g(Readline)g(rather)630 -3267 y(than)f(the)h(v)m(ersion)g(in)f Ft(lib/readline)p +5340 y(than)f(the)h(v)m(ersion)g(in)f Ft(lib/readline)p Fu(.)36 b(This)25 b(w)m(orks)g(only)h(with)f(Readline)h(5.0)h(and)e -(later)630 3376 y(v)m(ersions.)46 b(If)32 b Fr(PREFIX)41 -b Fu(is)32 b Ft(yes)f Fu(or)i(not)f(supplied,)f Ft(configure)f -Fu(uses)i(the)g(v)-5 b(alues)32 b(of)h(the)630 3486 y(mak)m(e)28 -b(v)-5 b(ariables)29 b Ft(includedir)24 b Fu(and)j Ft(libdir)p -Fu(,)g(whic)m(h)g(are)h(sub)s(directories)f(of)g Ft(prefix)f -Fu(b)m(y)630 3596 y(default,)44 b(to)d(\014nd)f(the)h(installed)g(v)m -(ersion)h(of)f(Readline)g(if)g(it)g(is)g(not)g(in)g(the)g(standard)630 -3705 y(system)35 b(include)f(and)g(library)g(directories.)54 -b(If)34 b Fr(PREFIX)43 b Fu(is)35 b Ft(no)p Fu(,)g(Bash)f(links)h(with) -f(the)630 3815 y(v)m(ersion)42 b(in)e Ft(lib/readline)p -Fu(.)70 b(If)40 b Fr(PREFIX)51 b Fu(is)41 b(set)g(to)h(an)m(y)g(other)f -(v)-5 b(alue,)44 b Ft(configure)630 3924 y Fu(treats)27 -b(it)g(as)f(a)h(directory)g(pathname)f(and)f(lo)s(oks)i(for)f(the)g -(installed)h(v)m(ersion)g(of)f(Readline)630 4034 y(in)34 -b(sub)s(directories)f(of)h(that)h(directory)g(\(include)f(\014les)g(in) -g Fr(PREFIX)9 b Fu(/)p Ft(include)32 b Fu(and)i(the)630 -4144 y(library)c(in)g Fr(PREFIX)9 b Fu(/)p Ft(lib)p Fu(\).)150 -4305 y Ft(--with-purify)630 4415 y Fu(De\014ne)23 b(this)g(to)h(use)f -(the)g(Purify)f(memory)h(allo)s(cation)i(c)m(hec)m(k)m(er)g(from)e -(Rational)i(Soft)m(w)m(are.)150 4576 y Ft(--enable-minimal-config)630 -4686 y Fu(This)e(pro)s(duces)f(a)i(shell)g(with)f(minimal)h(features,)h -(close)g(to)f(the)g(historical)h(Bourne)e(shell.)275 -4849 y(There)k(are)i(sev)m(eral)g Ft(--enable-)d Fu(options)i(that)h -(alter)g(ho)m(w)f(Bash)g(is)g(compiled)h(and)e(link)m(ed,)i(rather)150 -4958 y(than)h(c)m(hanging)h(run-time)f(features.)150 -5121 y Ft(--enable-largefile)630 5230 y Fu(Enable)36 +(later)p eop end +%%Page: 162 168 +TeXDict begin 162 167 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(162)630 299 y(v)m(ersions.)46 +b(If)32 b Fr(PREFIX)41 b Fu(is)32 b Ft(yes)f Fu(or)i(not)f(supplied,)f +Ft(configure)f Fu(uses)i(the)g(v)-5 b(alues)32 b(of)h(the)630 +408 y(mak)m(e)28 b(v)-5 b(ariables)29 b Ft(includedir)24 +b Fu(and)j Ft(libdir)p Fu(,)g(whic)m(h)g(are)h(sub)s(directories)f(of)g +Ft(prefix)f Fu(b)m(y)630 518 y(default,)44 b(to)d(\014nd)f(the)h +(installed)g(v)m(ersion)h(of)f(Readline)g(if)g(it)g(is)g(not)g(in)g +(the)g(standard)630 628 y(system)35 b(include)f(and)g(library)g +(directories.)54 b(If)34 b Fr(PREFIX)43 b Fu(is)35 b +Ft(no)p Fu(,)g(Bash)f(links)h(with)f(the)630 737 y(v)m(ersion)42 +b(in)e Ft(lib/readline)p Fu(.)70 b(If)40 b Fr(PREFIX)51 +b Fu(is)41 b(set)g(to)h(an)m(y)g(other)f(v)-5 b(alue,)44 +b Ft(configure)630 847 y Fu(treats)27 b(it)g(as)f(a)h(directory)g +(pathname)f(and)f(lo)s(oks)i(for)f(the)g(installed)h(v)m(ersion)g(of)f +(Readline)630 956 y(in)34 b(sub)s(directories)f(of)h(that)h(directory)g +(\(include)f(\014les)g(in)g Fr(PREFIX)9 b Fu(/)p Ft(include)32 +b Fu(and)i(the)630 1066 y(library)c(in)g Fr(PREFIX)9 +b Fu(/)p Ft(lib)p Fu(\).)150 1236 y Ft(--with-libintl-prefix[=)p +Fj(P)o(REFI)o(X)p Ft(])630 1345 y Fu(De\014ne)45 b(this)f(to)h(mak)m(e) +g(Bash)g(link)f(with)g(a)h(lo)s(cally-installed)i(v)m(ersion)e(of)g +(the)f(libin)m(tl)630 1455 y(library)30 b(instead)h(of)f(the)h(v)m +(ersion)g(in)f Ft(lib/intl)p Fu(.)150 1625 y Ft +(--with-libiconv-prefix[=)o Fj(PREF)o(IX)p Ft(])630 1734 +y Fu(De\014ne)g(this)g(to)g(mak)m(e)h(Bash)f(lo)s(ok)g(for)g(libicon)m +(v)h(in)e Fr(PREFIX)39 b Fu(instead)30 b(of)g(the)g(standard)630 +1844 y(system)h(lo)s(cations.)42 b(There)30 b(is)g(no)g(v)m(ersion)h +(included)f(with)g(Bash.)150 2014 y Ft(--enable-minimal-config)630 +2123 y Fu(This)23 b(pro)s(duces)f(a)i(shell)g(with)f(minimal)h +(features,)h(close)g(to)f(the)g(historical)h(Bourne)e(shell.)275 +2298 y(There)35 b(are)i(sev)m(eral)h Ft(--enable-)c Fu(options)j(that)g +(alter)g(ho)m(w)g(Bash)f(is)h(compiled,)i(link)m(ed,)f(and)e(in-)150 +2408 y(stalled,)c(rather)e(than)g(c)m(hanging)h(run-time)f(features.) +150 2583 y Ft(--enable-largefile)630 2692 y Fu(Enable)36 b(supp)s(ort)f(for)g(large)j(\014les)e(\()p Ft(http:)5 b(/)g(/)g(www)g(.)g(unix)g(.)g(org)t(/)g(v)o(ersi)o(on2)t(/)g(w)o(hats) -o(new)t(/)630 5340 y(lfs20mar)h(.)g(html)p Fu(\))35 b(if)j(the)g(op)s -(erating)g(system)g(requires)f(sp)s(ecial)i(compiler)f(options)g(to)p -eop end -%%Page: 156 162 -TeXDict begin 156 161 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(156)630 299 y(build)33 -b(programs)g(whic)m(h)h(can)g(access)h(large)g(\014les.)51 -b(This)33 b(is)h(enabled)g(b)m(y)g(default,)h(if)f(the)630 -408 y(op)s(erating)d(system)f(pro)m(vides)h(large)g(\014le)g(supp)s -(ort.)150 570 y Ft(--enable-profiling)630 680 y Fu(This)g(builds)f(a)i -(Bash)g(binary)f(that)h(pro)s(duces)e(pro\014ling)h(information)h(to)h -(b)s(e)d(pro)s(cessed)630 790 y(b)m(y)g Ft(gprof)f Fu(eac)m(h)j(time)f -(it)g(is)f(executed.)150 951 y Ft(--enable-static-link)630 -1061 y Fu(This)37 b(causes)h(Bash)f(to)h(b)s(e)f(link)m(ed)h -(statically)-8 b(,)43 b(if)37 b Ft(gcc)g Fu(is)g(b)s(eing)g(used.)61 -b(This)37 b(could)h(b)s(e)630 1171 y(used)30 b(to)h(build)e(a)i(v)m -(ersion)g(to)g(use)f(as)g(ro)s(ot's)h(shell.)275 1334 +o(new)t(/)630 2802 y(lfs20mar)h(.)g(html)p Fu(\))35 b(if)j(the)g(op)s +(erating)g(system)g(requires)f(sp)s(ecial)i(compiler)f(options)g(to)630 +2911 y(build)33 b(programs)g(whic)m(h)h(can)g(access)h(large)g +(\014les.)51 b(This)33 b(is)h(enabled)g(b)m(y)g(default,)h(if)f(the)630 +3021 y(op)s(erating)d(system)f(pro)m(vides)h(large)g(\014le)g(supp)s +(ort.)150 3191 y Ft(--enable-profiling)630 3300 y Fu(This)g(builds)f(a) +i(Bash)g(binary)f(that)h(pro)s(duces)e(pro\014ling)h(information)h(to)h +(b)s(e)d(pro)s(cessed)630 3410 y(b)m(y)g Ft(gprof)f Fu(eac)m(h)j(time)f +(it)g(is)f(executed.)150 3580 y Ft(--enable-separate-helpfi)o(les)630 +3689 y Fu(Use)i(external)h(\014les)f(for)g(the)g(do)s(cumen)m(tation)h +(displa)m(y)m(ed)f(b)m(y)g(the)g Ft(help)f Fu(builtin)h(instead)630 +3799 y(of)f(storing)f(the)h(text)g(in)m(ternally)-8 b(.)150 +3969 y Ft(--enable-static-link)630 4078 y Fu(This)37 +b(causes)h(Bash)f(to)h(b)s(e)f(link)m(ed)h(statically)-8 +b(,)43 b(if)37 b Ft(gcc)g Fu(is)g(b)s(eing)g(used.)61 +b(This)37 b(could)h(b)s(e)630 4188 y(used)30 b(to)h(build)e(a)i(v)m +(ersion)g(to)g(use)f(as)g(ro)s(ot's)h(shell.)275 4363 y(The)f(`)p Ft(minimal-config)p Fu(')d(option)k(can)g(b)s(e)f(used)f (to)j(disable)e(all)i(of)f(the)f(follo)m(wing)i(options,)g(but)d(it)150 -1443 y(is)h(pro)s(cessed)g(\014rst,)g(so)h(individual)f(options)g(ma)m +4472 y(is)h(pro)s(cessed)g(\014rst,)g(so)h(individual)f(options)g(ma)m (y)h(b)s(e)f(enabled)g(using)g(`)p Ft(enable-)p Fj(feature)p -Fu('.)275 1580 y(All)c(of)f(the)h(follo)m(wing)h(options)f(except)g -(for)g(`)p Ft(disabled-builtins)p Fu(',)c(`)p Ft(direxpand-default)p -Fu(',)h(and)150 1690 y(`)p Ft(xpg-echo-default)p Fu(')28 -b(are)33 b(enabled)f(b)m(y)g(default,)h(unless)e(the)i(op)s(erating)f -(system)h(do)s(es)e(not)i(pro)m(vide)150 1800 y(the)e(necessary)f(supp) -s(ort.)150 1963 y Ft(--enable-alias)630 2072 y Fu(Allo)m(w)41 -b(alias)g(expansion)f(and)f(include)g(the)h Ft(alias)f -Fu(and)g Ft(unalias)e Fu(builtins)j(\(see)g(Sec-)630 -2182 y(tion)31 b(6.6)g([Aliases],)i(page)e(94\).)150 -2344 y Ft(--enable-arith-for-comma)o(nd)630 2453 y Fu(Include)21 +Fu('.)275 4617 y(All)133 b(of)g(the)g(follo)m(wing)i(options)e(except)h +(for)f(`)p Ft(alt-array-implementation)o Fu(',)150 4727 +y(`)p Ft(disabled-builtins)p Fu(',)212 b(`)p Ft(direxpand-default)p +Fu(',)h(`)p Ft(strict-posix-default)p Fu(',)f(and)150 +4836 y(`)p Ft(xpg-echo-default)p Fu(')28 b(are)33 b(enabled)f(b)m(y)g +(default,)h(unless)e(the)i(op)s(erating)f(system)h(do)s(es)e(not)i(pro) +m(vide)150 4946 y(the)e(necessary)f(supp)s(ort.)150 5121 +y Ft(--enable-alias)630 5230 y Fu(Allo)m(w)41 b(alias)g(expansion)f +(and)f(include)g(the)h Ft(alias)f Fu(and)g Ft(unalias)e +Fu(builtins)j(\(see)g(Sec-)630 5340 y(tion)31 b(6.6)g([Aliases],)i +(page)e(100\).)p eop end +%%Page: 163 169 +TeXDict begin 163 168 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(163)150 299 y Ft +(--enable-alt-array-imple)o(ment)o(atio)o(n)630 408 y +Fu(This)33 b(builds)g(bash)g(using)h(an)g(alternate)i(implemen)m +(tation)f(of)g(arra)m(ys)f(\(see)h(Section)g(6.7)630 +518 y([Arra)m(ys],)43 b(page)d(100\))h(that)f(pro)m(vides)g(faster)g +(access)h(at)f(the)g(exp)s(ense)f(of)h(using)f(more)630 +628 y(memory)30 b(\(sometimes)i(man)m(y)e(times)h(more,)g(dep)s(ending) +e(on)h(ho)m(w)h(sparse)f(an)g(arra)m(y)h(is\).)150 774 +y Ft(--enable-arith-for-comma)o(nd)630 883 y Fu(Include)21 b(supp)s(ort)g(for)g(the)i(alternate)g(form)f(of)g(the)g Ft(for)f Fu(command)h(that)h(b)s(eha)m(v)m(es)f(lik)m(e)i(the)630 -2563 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f -(3.2.5.1)i([Lo)s(oping)d(Constructs],)h(page)g(10\).)150 -2725 y Ft(--enable-array-variables)630 2834 y Fu(Include)h(supp)s(ort)g +993 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f +(3.2.5.1)i([Lo)s(oping)d(Constructs],)h(page)g(11\).)150 +1139 y Ft(--enable-array-variables)630 1249 y Fu(Include)h(supp)s(ort)g (for)h(one-dimensional)h(arra)m(y)f(shell)h(v)-5 b(ariables)33 -b(\(see)h(Section)g(6.7)h([Ar-)630 2944 y(ra)m(ys],)c(page)g(95\).)150 -3106 y Ft(--enable-bang-history)630 3215 y Fu(Include)36 +b(\(see)h(Section)g(6.7)h([Ar-)630 1358 y(ra)m(ys],)c(page)g(100\).)150 +1504 y Ft(--enable-bang-history)630 1614 y Fu(Include)36 b(supp)s(ort)f(for)h Ft(csh)p Fu(-lik)m(e)h(history)g(substitution)f -(\(see)h(Section)g(9.3)h([History)f(In-)630 3325 y(teraction],)c(page)e -(148\).)150 3487 y Ft(--enable-brace-expansion)630 3597 +(\(see)h(Section)g(9.3)h([History)f(In-)630 1724 y(teraction],)c(page)e +(154\).)150 1870 y Ft(--enable-brace-expansion)630 1979 y Fu(Include)40 b Ft(csh)p Fu(-lik)m(e)h(brace)f(expansion)g(\()h Ft(b{a,b}c)d Fq(7!)i Ft(bac)30 b(bbc)39 b Fu(\).)71 b(See)40 -b(Section)h(3.5.1)630 3706 y([Brace)32 b(Expansion],)e(page)h(23,)h -(for)e(a)g(complete)i(description.)150 3868 y Ft -(--enable-casemod-attribu)o(tes)630 3978 y Fu(Include)37 +b(Section)h(3.5.1)630 2089 y([Brace)32 b(Expansion],)e(page)h(24,)h +(for)e(a)g(complete)i(description.)150 2235 y Ft +(--enable-casemod-attribu)o(tes)630 2345 y Fu(Include)37 b(supp)s(ort)g(for)g(case-mo)s(difying)i(attributes)g(in)e(the)h -Ft(declare)e Fu(builtin)i(and)f(as-)630 4087 y(signmen)m(t)29 -b(statemen)m(ts.)41 b(V)-8 b(ariables)30 b(with)e(the)g -Fr(upp)s(ercase)k Fu(attribute,)e(for)e(example,)i(will)630 -4197 y(ha)m(v)m(e)i(their)e(v)-5 b(alues)31 b(con)m(v)m(erted)h(to)f -(upp)s(ercase)e(up)s(on)g(assignmen)m(t.)150 4359 y Ft -(--enable-casemod-expansi)o(on)630 4468 y Fu(Include)h(supp)s(ort)e -(for)i(case-mo)s(difying)i(w)m(ord)e(expansions.)150 -4630 y Ft(--enable-command-timing)630 4740 y Fu(Include)43 +Ft(declare)e Fu(builtin)i(and)f(as-)630 2454 y(signmen)m(t)43 +b(statemen)m(ts.)78 b(V)-8 b(ariables)44 b(with)e(the)g +Ft(uppercase)e Fu(attribute,)46 b(for)c(example,)630 +2564 y(will)31 b(ha)m(v)m(e)g(their)g(v)-5 b(alues)30 +b(con)m(v)m(erted)i(to)f(upp)s(ercase)f(up)s(on)f(assignmen)m(t.)150 +2710 y Ft(--enable-casemod-expansi)o(on)630 2819 y Fu(Include)h(supp)s +(ort)e(for)i(case-mo)s(difying)i(w)m(ord)e(expansions.)150 +2966 y Ft(--enable-command-timing)630 3075 y Fu(Include)43 b(supp)s(ort)f(for)h(recognizing)i Ft(time)e Fu(as)g(a)h(reserv)m(ed)g -(w)m(ord)f(and)g(for)h(displa)m(ying)630 4849 y(timing)37 +(w)m(ord)f(and)g(for)h(displa)m(ying)630 3185 y(timing)37 b(statistics)h(for)e(the)g(pip)s(eline)g(follo)m(wing)i Ft(time)d Fu(\(see)i(Section)g(3.2.3)h([Pip)s(elines],)630 -4959 y(page)24 b(8\).)39 b(This)23 b(allo)m(ws)h(pip)s(elines)f(as)h(w) -m(ell)g(as)g(shell)f(builtins)g(and)g(functions)g(to)h(b)s(e)e(timed.) -150 5121 y Ft(--enable-cond-command)630 5230 y Fu(Include)33 -b(supp)s(ort)f(for)i(the)g Ft([[)f Fu(conditional)i(command.)51 -b(\(see)34 b(Section)h(3.2.5.2)h([Condi-)630 5340 y(tional)c -(Constructs],)e(page)h(11\).)p eop end -%%Page: 157 163 -TeXDict begin 157 162 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(157)150 299 y Ft(--enable-cond-regexp)630 -408 y Fu(Include)35 b(supp)s(ort)f(for)i(matc)m(hing)h -Fm(posix)e Fu(regular)h(expressions)g(using)f(the)h(`)p -Ft(=~)p Fu(')g(binary)630 518 y(op)s(erator)25 b(in)f(the)h +3294 y(page)j(10\).)70 b(This)40 b(allo)m(ws)h(pip)s(elines)e(as)h(w)m +(ell)h(as)f(shell)h(builtins)e(and)g(functions)h(to)h(b)s(e)630 +3404 y(timed.)150 3550 y Ft(--enable-cond-command)630 +3660 y Fu(Include)33 b(supp)s(ort)f(for)i(the)g Ft([[)f +Fu(conditional)i(command.)51 b(\(see)34 b(Section)h(3.2.5.2)h([Condi-) +630 3769 y(tional)c(Constructs],)e(page)h(12\).)150 3915 +y Ft(--enable-cond-regexp)630 4025 y Fu(Include)k(supp)s(ort)f(for)i +(matc)m(hing)h Fm(posix)e Fu(regular)h(expressions)g(using)f(the)h(`)p +Ft(=~)p Fu(')g(binary)630 4134 y(op)s(erator)25 b(in)f(the)h Ft([[)f Fu(conditional)h(command.)39 b(\(see)25 b(Section)h(3.2.5.2)h -([Conditional)e(Con-)630 628 y(structs],)31 b(page)g(11\).)150 -774 y Ft(--enable-coprocesses)630 883 y Fu(Include)23 +([Conditional)e(Con-)630 4244 y(structs],)31 b(page)g(12\).)150 +4390 y Ft(--enable-coprocesses)630 4500 y Fu(Include)23 b(supp)s(ort)f(for)i(copro)s(cesses)g(and)f(the)h Ft(coproc)e Fu(reserv)m(ed)i(w)m(ord)g(\(see)h(Section)f(3.2.3)630 -993 y([Pip)s(elines],)31 b(page)g(8\).)150 1139 y Ft(--enable-debugger) -630 1249 y Fu(Include)f(supp)s(ort)e(for)i(the)h(bash)f(debugger)g -(\(distributed)g(separately\).)150 1395 y Ft(--enable-dev-fd-stat-bro)o -(ken)630 1504 y Fu(If)c(calling)j Ft(stat)d Fu(on)g(/dev/fd/)p -Fr(N)38 b Fu(returns)25 b(di\013eren)m(t)j(results)f(than)f(calling)j -Ft(fstat)c Fu(on)i(\014le)630 1614 y(descriptor)g Fr(N)p -Fu(,)i(supply)c(this)j(option)g(to)g(enable)f(a)h(w)m(ork)-5 -b(around.)39 b(This)27 b(has)g(implications)630 1724 -y(for)j(conditional)i(commands)e(that)h(test)g(\014le)g(attributes.)150 -1870 y Ft(--enable-direxpand-defau)o(lt)630 1979 y Fu(Cause)53 +4609 y([Pip)s(elines],)31 b(page)g(10\).)150 4756 y Ft +(--enable-debugger)630 4865 y Fu(Include)f(supp)s(ort)e(for)i(the)h +(bash)f(debugger)g(\(distributed)g(separately\).)150 +5011 y Ft(--enable-dev-fd-stat-bro)o(ken)630 5121 y Fu(If)c(calling)j +Ft(stat)d Fu(on)g(/dev/fd/)p Fr(N)38 b Fu(returns)25 +b(di\013eren)m(t)j(results)f(than)f(calling)j Ft(fstat)c +Fu(on)i(\014le)630 5230 y(descriptor)g Fr(N)p Fu(,)i(supply)c(this)j +(option)g(to)g(enable)f(a)h(w)m(ork)-5 b(around.)39 b(This)27 +b(has)g(implications)630 5340 y(for)j(conditional)i(commands)e(that)h +(test)g(\014le)g(attributes.)p eop end +%%Page: 164 170 +TeXDict begin 164 169 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(164)150 299 y Ft +(--enable-direxpand-defau)o(lt)630 408 y Fu(Cause)53 b(the)g Ft(direxpand)d Fu(shell)j(option)h(\(see)g(Section)f(4.3.2)i -([The)e(Shopt)f(Builtin],)630 2089 y(page)29 b(66\))g(to)f(b)s(e)f +([The)e(Shopt)f(Builtin],)630 518 y(page)29 b(71\))g(to)f(b)s(e)f (enabled)h(b)m(y)g(default)g(when)e(the)i(shell)g(starts.)41 -b(It)27 b(is)h(normally)g(disabled)630 2198 y(b)m(y)i(default.)150 -2345 y Ft(--enable-directory-stack)630 2454 y Fu(Include)j(supp)s(ort)g +b(It)27 b(is)h(normally)g(disabled)630 628 y(b)m(y)i(default.)150 +807 y Ft(--enable-directory-stack)630 917 y Fu(Include)j(supp)s(ort)g (for)h(a)g Ft(csh)p Fu(-lik)m(e)h(directory)f(stac)m(k)i(and)d(the)i Ft(pushd)p Fu(,)f Ft(popd)p Fu(,)g(and)f Ft(dirs)630 -2564 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m -(k],)g(page)f(97\).)150 2710 y Ft(--enable-disabled-builti)o(ns)630 -2819 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m +1026 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m +(k],)g(page)f(102\).)150 1205 y Ft(--enable-disabled-builti)o(ns)630 +1315 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m (ed)i(via)f(`)p Ft(builtin)29 b(xxx)p Fu(')37 b(ev)m(en)j(after)f -Ft(xxx)e Fu(has)630 2929 y(b)s(een)31 b(disabled)g(using)g(`)p +Ft(xxx)e Fu(has)630 1425 y(b)s(een)31 b(disabled)g(using)g(`)p Ft(enable)d(-n)i(xxx)p Fu('.)43 b(See)32 b(Section)g(4.2)h([Bash)e -(Builtins],)i(page)f(51,)630 3039 y(for)e(details)i(of)e(the)h +(Builtins],)i(page)f(55,)630 1534 y(for)e(details)i(of)e(the)h Ft(builtin)d Fu(and)i Ft(enable)e Fu(builtin)i(commands.)150 -3185 y Ft(--enable-dparen-arithmet)o(ic)630 3294 y Fu(Include)42 +1714 y Ft(--enable-dparen-arithmet)o(ic)630 1823 y Fu(Include)42 b(supp)s(ort)f(for)h(the)h Ft(\(\(...)o(\)\))f Fu(command)g(\(see)i -(Section)f(3.2.5.2)i([Conditional)630 3404 y(Constructs],)30 -b(page)h(11\).)150 3550 y Ft(--enable-extended-glob)630 -3660 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h +(Section)f(3.2.5.2)i([Conditional)630 1933 y(Constructs],)30 +b(page)h(12\).)150 2112 y Ft(--enable-extended-glob)630 +2222 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h (matc)m(hing)g(features)g(describ)s(ed)e(ab)s(o)m(v)m(e)630 -3769 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i -(page)e(33.)150 3915 y Ft(--enable-extended-glob-d)o(efau)o(lt)630 -4025 y Fu(Set)40 b(the)g(default)g(v)-5 b(alue)41 b(of)f(the)g -Fr(extglob)j Fu(shell)d(option)g(describ)s(ed)f(ab)s(o)m(v)m(e)i(under) -d(Sec-)630 4134 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g -(66,)h(to)f(b)s(e)f(enabled.)150 4281 y Ft(--enable-function-import)630 -4390 y Fu(Include)23 b(supp)s(ort)g(for)g(imp)s(orting)h(function)g +2331 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i +(page)e(36.)150 2511 y Ft(--enable-extended-glob-d)o(efau)o(lt)630 +2620 y Fu(Set)37 b(the)f(default)h(v)-5 b(alue)37 b(of)f(the)h +Ft(extglob)d Fu(shell)j(option)g(describ)s(ed)e(ab)s(o)m(v)m(e)j(under) +c(Sec-)630 2730 y(tion)d(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g(71,) +h(to)f(b)s(e)f(enabled.)150 2909 y Ft(--enable-function-import)630 +3019 y Fu(Include)23 b(supp)s(ort)g(for)g(imp)s(orting)h(function)g (de\014nitions)f(exp)s(orted)h(b)m(y)g(another)g(instance)630 -4500 y(of)31 b(the)f(shell)h(from)f(the)g(en)m(vironmen)m(t.)41 +3128 y(of)31 b(the)f(shell)h(from)f(the)g(en)m(vironmen)m(t.)41 b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)150 -4646 y Ft(--enable-glob-asciirange)o(-def)o(ault)630 -4756 y Fu(Set)h(the)g(default)f(v)-5 b(alue)31 b(of)g(the)g -Fr(globasciiranges)36 b Fu(shell)31 b(option)g(describ)s(ed)f(ab)s(o)m -(v)m(e)h(under)630 4865 y(Section)39 b(4.3.2)h([The)e(Shopt)g -(Builtin],)j(page)e(66,)i(to)f(b)s(e)d(enabled.)65 b(This)37 -b(con)m(trols)j(the)630 4975 y(b)s(eha)m(vior)21 b(of)g(c)m(haracter)h -(ranges)f(when)f(used)g(in)g(pattern)h(matc)m(hing)h(brac)m(k)m(et)g -(expressions.)150 5121 y Ft(--enable-help-builtin)630 -5230 y Fu(Include)i(the)h Ft(help)f Fu(builtin,)h(whic)m(h)g(displa)m -(ys)f(help)h(on)f(shell)h(builtins)f(and)h(v)-5 b(ariables)25 -b(\(see)630 5340 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f -(51\).)p eop end -%%Page: 158 164 -TeXDict begin 158 163 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(158)150 299 y Ft(--enable-history)630 -408 y Fu(Include)29 b(command)g(history)h(and)f(the)h -Ft(fc)f Fu(and)g Ft(history)e Fu(builtin)j(commands)f(\(see)h(Sec-)630 -518 y(tion)h(9.1)g([Bash)g(History)g(F)-8 b(acilities],)34 -b(page)d(146\).)150 664 y Ft(--enable-job-control)630 -774 y Fu(This)h(enables)i(the)f(job)g(con)m(trol)i(features)e(\(see)i -(Chapter)d(7)i([Job)f(Con)m(trol],)i(page)f(107\),)630 -883 y(if)c(the)h(op)s(erating)g(system)f(supp)s(orts)f(them.)150 -1029 y Ft(--enable-multibyte)630 1139 y Fu(This)g(enables)i(supp)s(ort) -d(for)i(m)m(ultib)m(yte)h(c)m(haracters)g(if)f(the)g(op)s(erating)h -(system)f(pro)m(vides)630 1249 y(the)h(necessary)f(supp)s(ort.)150 -1395 y Ft(--enable-net-redirection)o(s)630 1504 y Fu(This)23 -b(enables)h(the)g(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g -(form)g Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 1614 -y Fu(and)31 b Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)26 -b Fu(when)31 b(used)g(in)g(redirections)h(\(see)g(Section)g(3.6)h -([Redirec-)630 1724 y(tions],)e(page)g(35\).)150 1870 -y Ft(--enable-process-substit)o(utio)o(n)630 1979 y Fu(This)49 -b(enables)i(pro)s(cess)f(substitution)g(\(see)h(Section)g(3.5.6)h([Pro) -s(cess)e(Substitution],)630 2089 y(page)31 b(32\))h(if)e(the)h(op)s -(erating)f(system)h(pro)m(vides)f(the)h(necessary)g(supp)s(ort.)150 -2235 y Ft(--enable-progcomp)630 2345 y Fu(Enable)d(the)g(programmable)g -(completion)i(facilities)g(\(see)f(Section)g(8.6)g([Programmable)630 -2454 y(Completion],)i(page)h(137\).)42 b(If)30 b(Readline)h(is)f(not)h -(enabled,)f(this)h(option)g(has)f(no)g(e\013ect.)150 -2600 y Ft(--enable-prompt-string-d)o(ecod)o(ing)630 2710 -y Fu(T)-8 b(urn)30 b(on)i(the)f(in)m(terpretation)i(of)f(a)g(n)m(um)m -(b)s(er)e(of)i(bac)m(kslash-escap)s(ed)g(c)m(haracters)i(in)d(the)630 -2819 y Ft($PS0)p Fu(,)36 b Ft($PS1)p Fu(,)g Ft($PS2)p -Fu(,)h(and)e Ft($PS4)f Fu(prompt)h(strings.)57 b(See)36 -b(Section)h(6.9)g([Con)m(trolling)g(the)630 2929 y(Prompt],)30 -b(page)h(98,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g -(escap)s(e)h(sequences.)150 3075 y Ft(--enable-readline)630 -3185 y Fu(Include)d(supp)s(ort)f(for)h(command-line)h(editing)g(and)f -(history)g(with)g(the)h(Bash)g(v)m(ersion)g(of)630 3294 -y(the)i(Readline)g(library)f(\(see)h(Chapter)f(8)g([Command)g(Line)g -(Editing],)h(page)g(111\).)150 3440 y Ft(--enable-restricted)630 -3550 y Fu(Include)41 b(supp)s(ort)f(for)i(a)g Fr(restricted)g(shell)p -Fu(.)75 b(If)42 b(this)f(is)h(enabled,)j(Bash,)g(when)c(called)630 -3660 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a)g(restricted)h(mo)s(de.)68 -b(See)40 b(Section)h(6.10)g([The)f(Restricted)h(Shell],)630 -3769 y(page)31 b(100,)h(for)e(a)h(description)f(of)h(restricted)g(mo)s -(de.)150 3915 y Ft(--enable-select)630 4025 y Fu(Include)25 -b(the)h Ft(select)f Fu(comp)s(ound)f(command,)j(whic)m(h)e(allo)m(ws)j -(the)e(generation)h(of)f(simple)630 4134 y(men)m(us)k(\(see)h(Section)g -(3.2.5.2)i([Conditional)e(Constructs],)g(page)g(11\).)150 -4281 y Ft(--enable-separate-helpfi)o(les)630 4390 y Fu(Use)h(external)h -(\014les)f(for)g(the)g(do)s(cumen)m(tation)h(displa)m(y)m(ed)f(b)m(y)g -(the)g Ft(help)f Fu(builtin)h(instead)630 4500 y(of)f(storing)f(the)h -(text)g(in)m(ternally)-8 b(.)150 4646 y Ft(--enable-single-help-str)o -(ings)630 4756 y Fu(Store)40 b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e -(the)i Ft(help)d Fu(builtin)i(as)g(a)g(single)h(string)f(for)f(eac)m(h) -i(help)630 4865 y(topic.)54 b(This)33 b(aids)i(in)f(translating)h(the)g -(text)g(to)g(di\013eren)m(t)g(languages.)54 b(Y)-8 b(ou)35 -b(ma)m(y)g(need)630 4975 y(to)c(disable)g(this)f(if)g(y)m(our)h -(compiler)g(cannot)f(handle)g(v)m(ery)h(long)g(string)f(literals.)150 -5121 y Ft(--enable-strict-posix-de)o(faul)o(t)630 5230 -y Fu(Mak)m(e)c(Bash)f Fm(posix)p Fu(-conforman)m(t)g(b)m(y)f(default)h -(\(see)g(Section)h(6.11)g([Bash)f(POSIX)e(Mo)s(de],)630 -5340 y(page)31 b(101\).)p eop end -%%Page: 159 165 -TeXDict begin 159 164 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(159)150 299 y Ft -(--enable-usg-echo-defaul)o(t)630 408 y Fu(A)30 b(synon)m(ym)g(for)g -Ft(--enable-xpg-echo-default)p Fu(.)150 568 y Ft -(--enable-xpg-echo-defaul)o(t)630 677 y Fu(Mak)m(e)c(the)f +3308 y Ft(--enable-glob-asciirange)o(-def)o(ault)630 +3417 y Fu(Set)f(the)f(default)h(v)-5 b(alue)29 b(of)f(the)h +Ft(globasciiranges)24 b Fu(shell)29 b(option)g(describ)s(ed)e(ab)s(o)m +(v)m(e)j(un-)630 3527 y(der)c(Section)i(4.3.2)h([The)d(Shopt)g +(Builtin],)j(page)f(71,)g(to)g(b)s(e)e(enabled.)40 b(This)26 +b(con)m(trols)i(the)630 3636 y(b)s(eha)m(vior)40 b(of)f(c)m(haracter)i +(ranges)f(when)f(used)f(in)i(pattern)f(matc)m(hing)i(brac)m(k)m(et)g +(expres-)630 3746 y(sions.)150 3925 y Ft(--enable-help-builtin)630 +4035 y Fu(Include)24 b(the)h Ft(help)f Fu(builtin,)h(whic)m(h)g(displa) +m(ys)f(help)h(on)f(shell)h(builtins)f(and)h(v)-5 b(ariables)25 +b(\(see)630 4144 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f +(55\).)150 4324 y Ft(--enable-history)630 4433 y Fu(Include)e(command)g +(history)h(and)f(the)h Ft(fc)f Fu(and)g Ft(history)e +Fu(builtin)j(commands)f(\(see)h(Sec-)630 4543 y(tion)h(9.1)g([Bash)g +(History)g(F)-8 b(acilities],)34 b(page)d(152\).)150 +4722 y Ft(--enable-job-control)630 4832 y Fu(This)h(enables)i(the)f +(job)g(con)m(trol)i(features)e(\(see)i(Chapter)d(7)i([Job)f(Con)m +(trol],)i(page)f(113\),)630 4941 y(if)c(the)h(op)s(erating)g(system)f +(supp)s(orts)f(them.)150 5121 y Ft(--enable-multibyte)630 +5230 y Fu(This)g(enables)i(supp)s(ort)d(for)i(m)m(ultib)m(yte)h(c)m +(haracters)g(if)f(the)g(op)s(erating)h(system)f(pro)m(vides)630 +5340 y(the)h(necessary)f(supp)s(ort.)p eop end +%%Page: 165 171 +TeXDict begin 165 170 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(165)150 299 y Ft +(--enable-net-redirection)o(s)630 408 y Fu(This)23 b(enables)h(the)g +(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g(form)g +Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 518 y Fu(and)31 +b Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)26 b Fu(when)31 +b(used)g(in)g(redirections)h(\(see)g(Section)g(3.6)h([Redirec-)630 +628 y(tions],)e(page)g(38\).)150 787 y Ft(--enable-process-substit)o +(utio)o(n)630 897 y Fu(This)49 b(enables)i(pro)s(cess)f(substitution)g +(\(see)h(Section)g(3.5.6)h([Pro)s(cess)e(Substitution],)630 +1006 y(page)31 b(34\))h(if)e(the)h(op)s(erating)f(system)h(pro)m(vides) +f(the)h(necessary)g(supp)s(ort.)150 1166 y Ft(--enable-progcomp)630 +1275 y Fu(Enable)d(the)g(programmable)g(completion)i(facilities)g +(\(see)f(Section)g(8.6)g([Programmable)630 1385 y(Completion],)i(page)h +(143\).)42 b(If)30 b(Readline)h(is)f(not)h(enabled,)f(this)h(option)g +(has)f(no)g(e\013ect.)150 1544 y Ft(--enable-prompt-string-d)o(ecod)o +(ing)630 1654 y Fu(T)-8 b(urn)30 b(on)i(the)f(in)m(terpretation)i(of)f +(a)g(n)m(um)m(b)s(er)e(of)i(bac)m(kslash-escap)s(ed)g(c)m(haracters)i +(in)d(the)630 1763 y Ft($PS0)p Fu(,)36 b Ft($PS1)p Fu(,)g +Ft($PS2)p Fu(,)h(and)e Ft($PS4)f Fu(prompt)h(strings.)57 +b(See)36 b(Section)h(6.9)g([Con)m(trolling)g(the)630 +1873 y(Prompt],)30 b(page)h(104,)h(for)f(a)f(complete)i(list)f(of)g +(prompt)e(string)i(escap)s(e)f(sequences.)150 2032 y +Ft(--enable-readline)630 2142 y Fu(Include)e(supp)s(ort)f(for)h +(command-line)h(editing)g(and)f(history)g(with)g(the)h(Bash)g(v)m +(ersion)g(of)630 2252 y(the)i(Readline)g(library)f(\(see)h(Chapter)f(8) +g([Command)g(Line)g(Editing],)h(page)g(117\).)150 2411 +y Ft(--enable-restricted)630 2521 y Fu(Include)41 b(supp)s(ort)f(for)i +(a)g Fr(restricted)g(shell)p Fu(.)75 b(If)42 b(this)f(is)h(enabled,)j +(Bash,)g(when)c(called)630 2630 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a) +g(restricted)h(mo)s(de.)68 b(See)40 b(Section)h(6.10)g([The)f +(Restricted)h(Shell],)630 2740 y(page)31 b(105,)h(for)e(a)h +(description)f(of)h(restricted)g(mo)s(de.)150 2899 y +Ft(--enable-select)630 3009 y Fu(Include)25 b(the)h Ft(select)f +Fu(comp)s(ound)f(command,)j(whic)m(h)e(allo)m(ws)j(the)e(generation)h +(of)f(simple)630 3118 y(men)m(us)k(\(see)h(Section)g(3.2.5.2)i +([Conditional)e(Constructs],)g(page)g(12\).)150 3278 +y Ft(--enable-single-help-str)o(ings)630 3387 y Fu(Store)40 +b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e(the)i Ft(help)d +Fu(builtin)i(as)g(a)g(single)h(string)f(for)f(eac)m(h)i(help)630 +3497 y(topic.)54 b(This)33 b(aids)i(in)f(translating)h(the)g(text)g(to) +g(di\013eren)m(t)g(languages.)54 b(Y)-8 b(ou)35 b(ma)m(y)g(need)630 +3606 y(to)c(disable)g(this)f(if)g(y)m(our)h(compiler)g(cannot)f(handle) +g(v)m(ery)h(long)g(string)f(literals.)150 3766 y Ft +(--enable-strict-posix-de)o(faul)o(t)630 3875 y Fu(Mak)m(e)c(Bash)f +Fm(posix)p Fu(-conforman)m(t)g(b)m(y)f(default)h(\(see)g(Section)h +(6.11)g([Bash)f(POSIX)e(Mo)s(de],)630 3985 y(page)31 +b(106\).)150 4144 y Ft(--enable-translatable-st)o(ring)o(s)630 +4254 y Fu(Enable)h(supp)s(ort)e(for)i Ft($")p Fj(string)p +Ft(")e Fu(translatable)j(strings)f(\(see)h(Section)g(3.1.2.5)h([Lo)s +(cale)630 4364 y(T)-8 b(ranslation],)32 b(page)f(7\).)150 +4523 y Ft(--enable-usg-echo-defaul)o(t)630 4633 y Fu(A)f(synon)m(ym)g +(for)g Ft(--enable-xpg-echo-default)p Fu(.)150 4792 y +Ft(--enable-xpg-echo-defaul)o(t)630 4902 y Fu(Mak)m(e)c(the)f Ft(echo)e Fu(builtin)i(expand)f(bac)m(kslash-escap)s(ed)h(c)m -(haracters)h(b)m(y)f(default,)h(without)630 787 y(requiring)d(the)h +(haracters)h(b)m(y)f(default,)h(without)630 5011 y(requiring)d(the)h Ft(-e)f Fu(option.)39 b(This)23 b(sets)h(the)g(default)g(v)-5 b(alue)24 b(of)g(the)g Ft(xpg_echo)e Fu(shell)h(option)630 -897 y(to)28 b Ft(on)p Fu(,)g(whic)m(h)f(mak)m(es)h(the)g(Bash)f +5121 y(to)28 b Ft(on)p Fu(,)g(whic)m(h)f(mak)m(es)h(the)g(Bash)f Ft(echo)f Fu(b)s(eha)m(v)m(e)i(more)g(lik)m(e)h(the)e(v)m(ersion)h(sp)s -(eci\014ed)f(in)g(the)630 1006 y(Single)35 b(Unix)f(Sp)s +(eci\014ed)f(in)g(the)630 5230 y(Single)35 b(Unix)f(Sp)s (eci\014cation,)i(v)m(ersion)e(3.)53 b(See)35 b(Section)g(4.2)g([Bash)g -(Builtins],)h(page)f(51,)630 1116 y(for)30 b(a)h(description)f(of)h -(the)f(escap)s(e)h(sequences)g(that)g Ft(echo)e Fu(recognizes.)275 -1275 y(The)f(\014le)i Ft(config-top.h)c Fu(con)m(tains)31 -b(C)d(Prepro)s(cessor)h(`)p Ft(#define)p Fu(')f(statemen)m(ts)j(for)f -(options)f(whic)m(h)150 1385 y(are)35 b(not)g(settable)i(from)d -Ft(configure)p Fu(.)51 b(Some)35 b(of)g(these)g(are)h(not)f(mean)m(t)g -(to)h(b)s(e)e(c)m(hanged;)k(b)s(ew)m(are)d(of)150 1494 -y(the)h(consequences)g(if)f(y)m(ou)h(do.)55 b(Read)36 -b(the)g(commen)m(ts)g(asso)s(ciated)h(with)e(eac)m(h)i(de\014nition)e -(for)g(more)150 1604 y(information)c(ab)s(out)f(its)h(e\013ect.)p +(Builtins],)h(page)f(55,)630 5340 y(for)30 b(a)h(description)f(of)h +(the)f(escap)s(e)h(sequences)g(that)g Ft(echo)e Fu(recognizes.)p eop end -%%Page: 160 166 -TeXDict begin 160 165 bop 3614 -116 a Fu(160)150 299 +%%Page: 166 172 +TeXDict begin 166 171 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(166)275 299 y(The)28 b(\014le)i +Ft(config-top.h)c Fu(con)m(tains)31 b(C)d(Prepro)s(cessor)h(`)p +Ft(#define)p Fu(')f(statemen)m(ts)j(for)f(options)f(whic)m(h)150 +408 y(are)35 b(not)g(settable)i(from)d Ft(configure)p +Fu(.)51 b(Some)35 b(of)g(these)g(are)h(not)f(mean)m(t)g(to)h(b)s(e)e(c) +m(hanged;)k(b)s(ew)m(are)d(of)150 518 y(the)h(consequences)g(if)f(y)m +(ou)h(do.)55 b(Read)36 b(the)g(commen)m(ts)g(asso)s(ciated)h(with)e +(eac)m(h)i(de\014nition)e(for)g(more)150 628 y(information)c(ab)s(out)f +(its)h(e\013ect.)p eop end +%%Page: 167 173 +TeXDict begin 167 172 bop 3614 -116 a Fu(167)150 299 y Fp(App)t(endix)52 b(A)81 b(Rep)t(orting)53 b(Bugs)150 533 y Fu(Please)33 b(rep)s(ort)e(all)h(bugs)f(y)m(ou)h(\014nd)e(in)i (Bash.)44 b(But)32 b(\014rst,)g(y)m(ou)g(should)e(mak)m(e)j(sure)e (that)h(it)g(really)h(is)f(a)150 643 y(bug,)d(and)g(that)h(it)g(app)s (ears)f(in)g(the)h(latest)h(v)m(ersion)f(of)g(Bash.)40 b(The)29 b(latest)j(v)m(ersion)e(of)f(Bash)h(is)f(alw)m(a)m(ys)150 -752 y(a)m(v)-5 b(ailable)33 b(for)d(FTP)g(from)g Ft -(ftp://ftp.gnu.org/pub/gn)o(u/ba)o(sh/)o Fu(.)275 887 -y(Once)41 b(y)m(ou)g(ha)m(v)m(e)h(determined)f(that)h(a)f(bug)g -(actually)h(exists,)j(use)c(the)g Ft(bashbug)e Fu(command)i(to)150 -996 y(submit)25 b(a)h(bug)g(rep)s(ort.)38 b(If)26 b(y)m(ou)g(ha)m(v)m -(e)h(a)f(\014x,)h(y)m(ou)f(are)g(encouraged)h(to)f(mail)h(that)f(as)g -(w)m(ell!)40 b(Suggestions)150 1106 y(and)j(`philosophical')i(bug)e -(rep)s(orts)f(ma)m(y)j(b)s(e)e(mailed)h(to)g Ft(bug-bash@gnu)11 -b(.)g(org)39 b Fu(or)k(p)s(osted)g(to)i(the)150 1215 -y(Usenet)31 b(newsgroup)e Ft(gnu.bash.bug)p Fu(.)275 -1350 y(All)i(bug)e(rep)s(orts)h(should)f(include:)225 -1484 y Fq(\017)60 b Fu(The)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h -(Bash.)225 1619 y Fq(\017)60 b Fu(The)30 b(hardw)m(are)g(and)g(op)s -(erating)g(system.)225 1753 y Fq(\017)60 b Fu(The)30 -b(compiler)h(used)e(to)i(compile)h(Bash.)225 1888 y Fq(\017)60 +752 y(a)m(v)-5 b(ailable)43 b(for)d(FTP)g(from)g Ft(ftp:)8 +b(/)g(/)g(ftp)g(.)g(gnu)g(.)g(org)g(/)g(pub)g(/)g(gnu)g(/)g(bash)g(/)45 +b Fu(and)40 b(from)g Ft(http:)8 b(/)g(/)g(git)g(.)150 +862 y(savannah.gnu.org/cgit/ba)o(sh.g)o(it/s)o(nap)o(shot)o(/bas)o(h-m) +o(aste)o(r.ta)o(r.g)o(z)p Fu(.)275 996 y(Once)41 b(y)m(ou)g(ha)m(v)m(e) +h(determined)f(that)h(a)f(bug)g(actually)h(exists,)j(use)c(the)g +Ft(bashbug)e Fu(command)i(to)150 1106 y(submit)25 b(a)h(bug)g(rep)s +(ort.)38 b(If)26 b(y)m(ou)g(ha)m(v)m(e)h(a)f(\014x,)h(y)m(ou)f(are)g +(encouraged)h(to)f(mail)h(that)f(as)g(w)m(ell!)40 b(Suggestions)150 +1215 y(and)j(`philosophical')i(bug)e(rep)s(orts)f(ma)m(y)j(b)s(e)e +(mailed)h(to)g Ft(bug-bash@gnu)11 b(.)g(org)39 b Fu(or)k(p)s(osted)g +(to)i(the)150 1325 y(Usenet)31 b(newsgroup)e Ft(gnu.bash.bug)p +Fu(.)275 1460 y(All)i(bug)e(rep)s(orts)h(should)f(include:)225 +1594 y Fq(\017)60 b Fu(The)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h +(Bash.)225 1729 y Fq(\017)60 b Fu(The)30 b(hardw)m(are)g(and)g(op)s +(erating)g(system.)225 1863 y Fq(\017)60 b Fu(The)30 +b(compiler)h(used)e(to)i(compile)h(Bash.)225 1998 y Fq(\017)60 b Fu(A)30 b(description)h(of)f(the)h(bug)f(b)s(eha)m(viour.)225 -2022 y Fq(\017)60 b Fu(A)30 b(short)h(script)f(or)g(`recip)s(e')h(whic) +2132 y Fq(\017)60 b Fu(A)30 b(short)h(script)f(or)g(`recip)s(e')h(whic) m(h)f(exercises)i(the)e(bug)g(and)g(ma)m(y)h(b)s(e)f(used)f(to)i(repro) -s(duce)e(it.)150 2182 y Ft(bashbug)d Fu(inserts)i(the)h(\014rst)f +s(duce)e(it.)150 2291 y Ft(bashbug)d Fu(inserts)i(the)h(\014rst)f (three)g(items)h(automatically)i(in)m(to)f(the)e(template)i(it)f(pro)m -(vides)f(for)g(\014ling)h(a)150 2291 y(bug)h(rep)s(ort.)275 -2426 y(Please)h(send)f(all)h(rep)s(orts)f(concerning)g(this)h(man)m +(vides)f(for)g(\014ling)h(a)150 2401 y(bug)h(rep)s(ort.)275 +2535 y(Please)h(send)f(all)h(rep)s(orts)f(concerning)g(this)h(man)m (ual)f(to)h Ft(bug-bash@gnu.org)p Fu(.)p eop end -%%Page: 161 167 -TeXDict begin 161 166 bop 3614 -116 a Fu(161)150 141 +%%Page: 168 174 +TeXDict begin 168 173 bop 3614 -116 a Fu(168)150 141 y Fp(App)t(endix)58 b(B)81 b(Ma)9 b(jor)54 b(Di\013erences)d(F)-13 b(rom)54 b(The)g(Bourne)1088 299 y(Shell)150 530 y Fu(Bash)26 b(implemen)m(ts)h(essen)m(tially)g(the)g(same)f(grammar,)h(parameter)f @@ -19509,20 +20174,20 @@ Ft(sh)f Fu(included)g(in)h(SVR4.2)h(\(the)f(last)h(v)m(ersion)f(of)g Fm(posix)p Fu(-conforman)m(t,)g(ev)m(en)g(where)f(the)g Fm(posix)g Fu(sp)s(eci\014cation)h(di\013ers)f(from)g(traditional)330 1431 y Ft(sh)e Fu(b)s(eha)m(vior)g(\(see)i(Section)f(6.11)h([Bash)e -(POSIX)g(Mo)s(de],)h(page)g(101\).)225 1565 y Fq(\017)60 +(POSIX)g(Mo)s(de],)h(page)g(106\).)225 1565 y Fq(\017)60 b Fu(Bash)26 b(has)g(m)m(ulti-c)m(haracter)i(in)m(v)m(o)s(cation)g (options)f(\(see)f(Section)h(6.1)g([In)m(v)m(oking)g(Bash],)h(page)e -(86\).)225 1699 y Fq(\017)60 b Fu(Bash)40 b(has)f(command-line)h +(91\).)225 1699 y Fq(\017)60 b Fu(Bash)40 b(has)f(command-line)h (editing)g(\(see)h(Chapter)e(8)h([Command)f(Line)g(Editing],)k(page)d -(111\))330 1809 y(and)30 b(the)g Ft(bind)g Fu(builtin.)225 +(117\))330 1809 y(and)30 b(the)g Ft(bind)g Fu(builtin.)225 1943 y Fq(\017)60 b Fu(Bash)46 b(pro)m(vides)g(a)g(programmable)g(w)m (ord)f(completion)i(mec)m(hanism)f(\(see)h(Section)g(8.6)g([Pro-)330 -2052 y(grammable)39 b(Completion],)i(page)e(137\),)i(and)d(builtin)g +2052 y(grammable)39 b(Completion],)i(page)e(143\),)i(and)d(builtin)g (commands)f Ft(complete)p Fu(,)h Ft(compgen)p Fu(,)h(and)330 2162 y Ft(compopt)p Fu(,)29 b(to)i(manipulate)g(it.)225 2296 y Fq(\017)60 b Fu(Bash)26 b(has)f(command)h(history)f(\(see)i (Section)f(9.1)h([Bash)f(History)h(F)-8 b(acilities],)30 -b(page)c(146\))i(and)d(the)330 2405 y Ft(history)k Fu(and)h +b(page)c(152\))i(and)d(the)330 2405 y Ft(history)k Fu(and)h Ft(fc)g Fu(builtins)g(to)h(manipulate)g(it.)42 b(The)30 b(Bash)h(history)g(list)g(main)m(tains)g(timestamp)330 2515 y(information)g(and)e(uses)h(the)h(v)-5 b(alue)31 @@ -19530,9 +20195,9 @@ b(of)f(the)h Ft(HISTTIMEFORMAT)26 b Fu(v)-5 b(ariable)32 b(to)f(displa)m(y)f(it.)225 2649 y Fq(\017)60 b Fu(Bash)48 b(implemen)m(ts)h Ft(csh)p Fu(-lik)m(e)g(history)f(expansion)g(\(see)h (Section)g(9.3)h([History)f(In)m(teraction],)330 2759 -y(page)31 b(148\).)225 2892 y Fq(\017)60 b Fu(Bash)33 -b(has)g(one-dimensional)h(arra)m(y)f(v)-5 b(ariables)34 -b(\(see)g(Section)g(6.7)g([Arra)m(ys],)g(page)g(95\),)h(and)e(the)330 +y(page)31 b(154\).)225 2892 y Fq(\017)60 b Fu(Bash)29 +b(has)h(one-dimensional)g(arra)m(y)f(v)-5 b(ariables)30 +b(\(see)h(Section)f(6.7)g([Arra)m(ys],)h(page)f(100\),)h(and)e(the)330 3002 y(appropriate)39 b(v)-5 b(ariable)40 b(expansions)f(and)g (assignmen)m(t)h(syn)m(tax)g(to)g(use)f(them.)67 b(Sev)m(eral)40 b(of)g(the)330 3112 y(Bash)32 b(builtins)f(tak)m(e)j(options)e(to)h @@ -19554,49 +20219,49 @@ i(strings)f(found)e(in)h(a)h(script)g(\(see)g(Section)g(3.1.2.5)330 4171 y Fq(\017)60 b Fu(Bash)44 b(implemen)m(ts)g(the)f Ft(!)h Fu(k)m(eyw)m(ord)g(to)g(negate)h(the)f(return)e(v)-5 b(alue)44 b(of)g(a)g(pip)s(eline)f(\(see)h(Sec-)330 4281 -y(tion)33 b(3.2.3)i([Pip)s(elines],)f(page)g(8\).)49 -b(V)-8 b(ery)33 b(useful)f(when)g(an)h Ft(if)f Fu(statemen)m(t)j(needs) -d(to)i(act)g(only)f(if)330 4390 y(a)k(test)h(fails.)60 -b(The)36 b(Bash)g(`)p Ft(-o)30 b(pipefail)p Fu(')35 b(option)i(to)h -Ft(set)d Fu(will)i(cause)g(a)g(pip)s(eline)g(to)g(return)f(a)330 -4500 y(failure)31 b(status)f(if)h(an)m(y)f(command)g(fails.)225 +y(tion)36 b(3.2.3)h([Pip)s(elines],)g(page)f(10\).)57 +b(V)-8 b(ery)36 b(useful)f(when)f(an)h Ft(if)g Fu(statemen)m(t)i(needs) +e(to)h(act)h(only)330 4390 y(if)32 b(a)g(test)g(fails.)45 +b(The)31 b(Bash)h(`)p Ft(-o)e(pipefail)p Fu(')g(option)i(to)g +Ft(set)f Fu(will)h(cause)g(a)g(pip)s(eline)g(to)g(return)f(a)330 +4500 y(failure)g(status)f(if)h(an)m(y)f(command)g(fails.)225 4634 y Fq(\017)60 b Fu(Bash)34 b(has)g(the)g Ft(time)f Fu(reserv)m(ed)h(w)m(ord)g(and)f(command)h(timing)h(\(see)g(Section)g -(3.2.3)g([Pip)s(elines],)330 4743 y(page)g(8\).)52 b(The)33 -b(displa)m(y)i(of)f(the)g(timing)g(statistics)i(ma)m(y)f(b)s(e)e(con)m +(3.2.3)g([Pip)s(elines],)330 4743 y(page)d(10\).)43 b(The)31 +b(displa)m(y)g(of)g(the)g(timing)h(statistics)h(ma)m(y)e(b)s(e)f(con)m (trolled)j(with)e(the)g Ft(TIMEFORMAT)330 4853 y Fu(v)-5 b(ariable.)225 4987 y Fq(\017)60 b Fu(Bash)28 b(implemen)m(ts)g(the)f Ft(for)j(\(\()g Fj(expr1)f Ft(;)h Fj(expr2)f Ft(;)h Fj(expr3)f Ft(\)\))e Fu(arithmetic)h(for)g(command,)g(sim-)330 5096 y(ilar)j(to)g(the)g(C)f(language)h(\(see)h(Section)f(3.2.5.1)i([Lo)s -(oping)d(Constructs],)h(page)g(10\).)225 5230 y Fq(\017)60 +(oping)d(Constructs],)h(page)g(11\).)225 5230 y Fq(\017)60 b Fu(Bash)31 b(includes)f(the)g Ft(select)f Fu(comp)s(ound)g(command,)i (whic)m(h)f(allo)m(ws)i(the)f(generation)g(of)g(simple)330 5340 y(men)m(us)f(\(see)h(Section)g(3.2.5.2)i([Conditional)e -(Constructs],)g(page)g(11\).)p eop end -%%Page: 162 168 -TeXDict begin 162 167 bop 150 -116 a Fu(App)s(endix)29 +(Constructs],)g(page)g(12\).)p eop end +%%Page: 169 175 +TeXDict begin 169 174 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(162)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(169)225 299 y Fq(\017)60 b Fu(Bash)40 b(includes)g(the)g Ft([[)g Fu(comp)s(ound)e(command,)43 b(whic)m(h)c(mak)m(es)i(conditional)h(testing)f(part)f(of)330 408 y(the)f(shell)g(grammar)g(\(see)h(Section)f(3.2.5.2)j([Conditional) -d(Constructs],)i(page)f(11\),)i(including)330 518 y(optional)32 +d(Constructs],)i(page)f(12\),)i(including)330 518 y(optional)32 b(regular)e(expression)g(matc)m(hing.)225 653 y Fq(\017)60 b Fu(Bash)31 b(pro)m(vides)f(optional)h(case-insensitiv)m(e)i(matc)m (hing)f(for)e(the)g Ft(case)g Fu(and)f Ft([[)h Fu(constructs.)225 789 y Fq(\017)60 b Fu(Bash)27 b(includes)g(brace)h(expansion)f(\(see)h -(Section)g(3.5.1)i([Brace)e(Expansion],)g(page)g(23\))h(and)d(tilde)330 +(Section)g(3.5.1)i([Brace)e(Expansion],)g(page)g(24\))h(and)d(tilde)330 898 y(expansion)k(\(see)i(Section)f(3.5.2)h([Tilde)f(Expansion],)f -(page)h(24\).)225 1034 y Fq(\017)60 b Fu(Bash)24 b(implemen)m(ts)h +(page)h(25\).)225 1034 y Fq(\017)60 b Fu(Bash)24 b(implemen)m(ts)h (command)e(aliases)j(and)d(the)i Ft(alias)d Fu(and)i Ft(unalias)e Fu(builtins)h(\(see)i(Section)g(6.6)330 -1143 y([Aliases],)32 b(page)f(94\).)225 1279 y Fq(\017)60 +1143 y([Aliases],)32 b(page)f(100\).)225 1279 y Fq(\017)60 b Fu(Bash)32 b(pro)m(vides)g(shell)g(arithmetic,)i(the)e Ft(\(\()g Fu(comp)s(ound)e(command)i(\(see)h(Section)f(3.2.5.2)j([Con-) -330 1388 y(ditional)d(Constructs],)e(page)i(11\),)g(and)e(arithmetic)i +330 1388 y(ditional)d(Constructs],)e(page)i(12\),)g(and)e(arithmetic)i (expansion)e(\(see)i(Section)f(6.5)h([Shell)f(Arith-)330 -1498 y(metic],)h(page)f(93\).)225 1633 y Fq(\017)60 b +1498 y(metic],)h(page)f(98\).)225 1633 y Fq(\017)60 b Fu(V)-8 b(ariables)31 b(presen)m(t)e(in)g(the)g(shell's)h(initial)g(en) m(vironmen)m(t)g(are)g(automatically)i(exp)s(orted)d(to)h(c)m(hild)330 1743 y(pro)s(cesses.)38 b(The)23 b(Bourne)g(shell)g(do)s(es)g(not)g @@ -19612,103 +20277,101 @@ Ft(#)p Fu(',)g(`)p Ft(\045\045)p Fu(')e(and)f(`)p Ft(##)p Fu(')h(expansions)g(to)g(remo)m(v)m(e)330 2342 y(leading)f(or)f (trailing)h(substrings)e(from)g(v)-5 b(ariable)35 b(v)-5 b(alues)35 b(\(see)g(Section)g(3.5.3)g([Shell)g(P)m(arameter)330 -2452 y(Expansion],)30 b(page)h(25\).)225 2587 y Fq(\017)60 +2452 y(Expansion],)30 b(page)h(26\).)225 2587 y Fq(\017)60 b Fu(The)46 b(expansion)g Ft(${#xx})p Fu(,)j(whic)m(h)d(returns)f(the)i (length)f(of)h Ft(${xx})p Fu(,)i(is)e(supp)s(orted)d(\(see)j(Sec-)330 2697 y(tion)31 b(3.5.3)h([Shell)f(P)m(arameter)g(Expansion],)f(page)i -(25\).)225 2832 y Fq(\017)60 b Fu(The)30 b(expansion)g +(26\).)225 2832 y Fq(\017)60 b Fu(The)30 b(expansion)g Ft(${var:)p Fr(o\013set)r Ft([:)p Fr(length)p Ft(]})p Fu(,)g(whic)m(h)g(expands)g(to)h(the)g(substring)e(of)i Ft(var)p Fu('s)e(v)-5 b(alue)330 2942 y(of)43 b(length)g Fr(length)p Fu(,)k(b)s(eginning)42 b(at)i Fr(o\013set)p Fu(,)j(is)c(presen)m(t)g(\(see)g(Section)h(3.5.3)h([Shell)e(P)m -(arameter)330 3051 y(Expansion],)30 b(page)h(25\).)225 -3187 y Fq(\017)60 b Fu(The)21 b(expansion)f Ft(${var/[/])p -Fr(pattern)p Ft([/)p Fr(replacemen)m(t)r Ft(]})p Fu(,)i(whic)m(h)e -(matc)m(hes)j Fr(pattern)e Fu(and)f(replaces)330 3296 -y(it)29 b(with)e Fr(replacemen)m(t)32 b Fu(in)c(the)g(v)-5 -b(alue)29 b(of)f Ft(var)p Fu(,)g(is)g(a)m(v)-5 b(ailable)31 -b(\(see)e(Section)f(3.5.3)i([Shell)f(P)m(arameter)330 -3406 y(Expansion],)h(page)h(25\).)225 3541 y Fq(\017)60 +(arameter)330 3051 y(Expansion],)30 b(page)h(26\).)225 +3187 y Fq(\017)60 b Fu(The)21 b(expansion)f Ft(${)p Fj(var)p +Ft(/[/])p Fr(pattern)p Ft([/)p Fr(replacemen)m(t)r Ft(]})p +Fu(,)i(whic)m(h)e(matc)m(hes)j Fr(pattern)e Fu(and)f(replaces)330 +3296 y(it)30 b(with)f Fr(replacemen)m(t)k Fu(in)c(the)h(v)-5 +b(alue)30 b(of)g Fr(v)-5 b(ar)p Fu(,)30 b(is)f(a)m(v)-5 +b(ailable)32 b(\(see)e(Section)h(3.5.3)g([Shell)f(P)m(arameter)330 +3406 y(Expansion],)g(page)h(26\).)225 3541 y Fq(\017)60 b Fu(The)33 b(expansion)g Ft(${!)p Fj(prefix)p Ft(*})d Fu(expansion,)k(whic)m(h)e(expands)h(to)h(the)f(names)g(of)g(all)h (shell)f(v)-5 b(ari-)330 3651 y(ables)36 b(whose)g(names)g(b)s(egin)g (with)g Fr(pre\014x)p Fu(,)g(is)g(a)m(v)-5 b(ailable)39 b(\(see)e(Section)g(3.5.3)g([Shell)g(P)m(arameter)330 -3761 y(Expansion],)30 b(page)h(25\).)225 3896 y Fq(\017)60 -b Fu(Bash)22 b(has)f Fr(indirect)j Fu(v)-5 b(ariable)22 -b(expansion)g(using)f Ft(${!word})e Fu(\(see)k(Section)f(3.5.3)i -([Shell)e(P)m(arameter)330 4006 y(Expansion],)30 b(page)h(25\).)225 -4141 y Fq(\017)60 b Fu(Bash)31 b(can)f(expand)g(p)s(ositional)h -(parameters)g(b)s(ey)m(ond)e Ft($9)h Fu(using)g Ft(${)p -Fj(num)p Ft(})p Fu(.)225 4276 y Fq(\017)60 b Fu(The)27 -b Fm(posix)g Ft($\(\))g Fu(form)g(of)h(command)g(substitution)f(is)h -(implemen)m(ted)g(\(see)h(Section)f(3.5.4)i([Com-)330 -4386 y(mand)38 b(Substitution],)k(page)e(31\),)j(and)38 -b(preferred)g(to)i(the)g(Bourne)f(shell's)h Ft(``)e Fu(\(whic)m(h)i(is) -f(also)330 4495 y(implemen)m(ted)31 b(for)f(bac)m(kw)m(ards)h -(compatibilit)m(y\).)225 4631 y Fq(\017)60 b Fu(Bash)31 -b(has)f(pro)s(cess)g(substitution)g(\(see)h(Section)g(3.5.6)h([Pro)s -(cess)f(Substitution],)f(page)h(32\).)225 4766 y Fq(\017)60 -b Fu(Bash)55 b(automatically)j(assigns)e(v)-5 b(ariables)55 -b(that)h(pro)m(vide)f(information)h(ab)s(out)f(the)g(curren)m(t)330 -4876 y(user)40 b(\()p Ft(UID)p Fu(,)i Ft(EUID)p Fu(,)g(and)e -Ft(GROUPS)p Fu(\),)h(the)g(curren)m(t)f(host)g(\()p Ft(HOSTTYPE)p -Fu(,)h Ft(OSTYPE)p Fu(,)h Ft(MACHTYPE)p Fu(,)f(and)330 -4985 y Ft(HOSTNAME)p Fu(\),)55 b(and)c(the)g(instance)h(of)g(Bash)f -(that)h(is)f(running)f(\()p Ft(BASH)p Fu(,)56 b Ft(BASH_VERSION)p -Fu(,)e(and)330 5095 y Ft(BASH_VERSINFO)p Fu(\).)37 b(See)31 -b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(73,)g(for)f -(details.)225 5230 y Fq(\017)60 b Fu(The)44 b Ft(IFS)f -Fu(v)-5 b(ariable)45 b(is)f(used)f(to)i(split)f(only)g(the)g(results)g -(of)h(expansion,)i(not)d(all)h(w)m(ords)f(\(see)330 5340 -y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(32\).)41 -b(This)28 b(closes)h(a)g(longstanding)g(shell)f(securit)m(y)h(hole.)p -eop end -%%Page: 163 169 -TeXDict begin 163 168 bop 150 -116 a Fu(App)s(endix)29 +3761 y(Expansion],)30 b(page)h(26\).)225 3896 y Fq(\017)60 +b Fu(Bash)22 b(has)g(indirect)g(v)-5 b(ariable)22 b(expansion)g(using)f +Ft(${!word})f Fu(\(see)i(Section)h(3.5.3)h([Shell)e(P)m(arameter)330 +4006 y(Expansion],)30 b(page)h(26\).)225 4141 y Fq(\017)60 +b Fu(Bash)31 b(can)f(expand)g(p)s(ositional)h(parameters)g(b)s(ey)m +(ond)e Ft($9)h Fu(using)g Ft(${)p Fj(num)p Ft(})p Fu(.)225 +4276 y Fq(\017)60 b Fu(The)27 b Fm(posix)g Ft($\(\))g +Fu(form)g(of)h(command)g(substitution)f(is)h(implemen)m(ted)g(\(see)h +(Section)f(3.5.4)i([Com-)330 4386 y(mand)38 b(Substitution],)k(page)e +(34\),)j(and)38 b(preferred)g(to)i(the)g(Bourne)f(shell's)h +Ft(``)e Fu(\(whic)m(h)i(is)f(also)330 4495 y(implemen)m(ted)31 +b(for)f(bac)m(kw)m(ards)h(compatibilit)m(y\).)225 4631 +y Fq(\017)60 b Fu(Bash)31 b(has)f(pro)s(cess)g(substitution)g(\(see)h +(Section)g(3.5.6)h([Pro)s(cess)f(Substitution],)f(page)h(34\).)225 +4766 y Fq(\017)60 b Fu(Bash)55 b(automatically)j(assigns)e(v)-5 +b(ariables)55 b(that)h(pro)m(vide)f(information)h(ab)s(out)f(the)g +(curren)m(t)330 4876 y(user)40 b(\()p Ft(UID)p Fu(,)i +Ft(EUID)p Fu(,)g(and)e Ft(GROUPS)p Fu(\),)h(the)g(curren)m(t)f(host)g +(\()p Ft(HOSTTYPE)p Fu(,)h Ft(OSTYPE)p Fu(,)h Ft(MACHTYPE)p +Fu(,)f(and)330 4985 y Ft(HOSTNAME)p Fu(\),)55 b(and)c(the)g(instance)h +(of)g(Bash)f(that)h(is)f(running)f(\()p Ft(BASH)p Fu(,)56 +b Ft(BASH_VERSION)p Fu(,)e(and)330 5095 y Ft(BASH_VERSINFO)p +Fu(\).)37 b(See)31 b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 +b(page)e(78,)g(for)f(details.)225 5230 y Fq(\017)60 b +Fu(The)44 b Ft(IFS)f Fu(v)-5 b(ariable)45 b(is)f(used)f(to)i(split)f +(only)g(the)g(results)g(of)h(expansion,)i(not)d(all)h(w)m(ords)f(\(see) +330 5340 y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f +(35\).)41 b(This)28 b(closes)h(a)g(longstanding)g(shell)f(securit)m(y)h +(hole.)p eop end +%%Page: 170 176 +TeXDict begin 170 175 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(163)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(170)225 299 y Fq(\017)60 b Fu(The)36 b(\014lename)h(expansion)f(brac)m(k)m(et)i(expression)f(co) s(de)f(uses)g(`)p Ft(!)p Fu(')h(and)f(`)p Ft(^)p Fu(')h(to)g(negate)h (the)f(set)g(of)330 408 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the)f (brac)m(k)m(ets.)43 b(The)29 b(Bourne)i(shell)f(uses)g(only)h(`)p Ft(!)p Fu('.)225 536 y Fq(\017)60 b Fu(Bash)38 b(implemen)m(ts)g(the)g (full)g(set)g(of)g Fm(posix)f Fu(\014lename)h(expansion)g(op)s -(erators,)i(including)d Fr(c)m(har-)330 646 y(acter)i(classes)p -Fu(,)j Fr(equiv)-5 b(alence)39 b(classes)p Fu(,)j(and)37 -b Fr(collating)k(sym)m(b)s(ols)g Fu(\(see)e(Section)g(3.5.8)h -([Filename)330 756 y(Expansion],)30 b(page)h(33\).)225 -883 y Fq(\017)60 b Fu(Bash)35 b(implemen)m(ts)g(extended)g(pattern)g -(matc)m(hing)h(features)f(when)f(the)h Ft(extglob)d Fu(shell)j(option) -330 993 y(is)30 b(enabled)h(\(see)g(Section)g(3.5.8.1)i([P)m(attern)f -(Matc)m(hing],)g(page)f(33\).)225 1121 y Fq(\017)60 b -Fu(It)22 b(is)g(p)s(ossible)g(to)h(ha)m(v)m(e)g(a)f(v)-5 -b(ariable)23 b(and)f(a)g(function)g(with)g(the)g(same)g(name;)j +(erators,)i(including)d(c)m(har-)330 646 y(acter)j(classes,)i(equiv)-5 +b(alence)39 b(classes,)j(and)c(collating)j(sym)m(b)s(ols)d(\(see)i +(Section)f(3.5.8)h([Filename)330 756 y(Expansion],)30 +b(page)h(35\).)225 883 y Fq(\017)60 b Fu(Bash)35 b(implemen)m(ts)g +(extended)g(pattern)g(matc)m(hing)h(features)f(when)f(the)h +Ft(extglob)d Fu(shell)j(option)330 993 y(is)30 b(enabled)h(\(see)g +(Section)g(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)g(page)f(36\).)225 +1121 y Fq(\017)60 b Fu(It)22 b(is)g(p)s(ossible)g(to)h(ha)m(v)m(e)g(a)f +(v)-5 b(ariable)23 b(and)f(a)g(function)g(with)g(the)g(same)g(name;)j Ft(sh)d Fu(do)s(es)g(not)g(separate)330 1230 y(the)31 b(t)m(w)m(o)g(name)g(spaces.)225 1358 y Fq(\017)60 b Fu(Bash)30 b(functions)e(are)i(p)s(ermitted)f(to)h(ha)m(v)m(e)h(lo)s (cal)g(v)-5 b(ariables)30 b(using)f(the)g Ft(local)f Fu(builtin,)i(and)e(th)m(us)330 1468 y(useful)i(recursiv)m(e)g (functions)g(ma)m(y)h(b)s(e)f(written)g(\(see)i(Section)f(4.2)g([Bash)g -(Builtins],)g(page)h(51\).)225 1596 y Fq(\017)60 b Fu(V)-8 +(Builtins],)g(page)h(55\).)225 1596 y Fq(\017)60 b Fu(V)-8 b(ariable)25 b(assignmen)m(ts)g(preceding)e(commands)h(a\013ect)h(only) f(that)g(command,)h(ev)m(en)f(builtins)g(and)330 1705 y(functions)36 b(\(see)h(Section)g(3.7.4)h([En)m(vironmen)m(t],)h(page) -e(41\).)60 b(In)35 b Ft(sh)p Fu(,)j(all)f(v)-5 b(ariable)37 +e(44\).)60 b(In)35 b Ft(sh)p Fu(,)j(all)f(v)-5 b(ariable)37 b(assignmen)m(ts)330 1815 y(preceding)30 b(commands)g(are)h(global)h (unless)d(the)i(command)f(is)h(executed)g(from)f(the)g(\014le)h (system.)225 1943 y Fq(\017)60 b Fu(Bash)44 b(p)s(erforms)e(\014lename) i(expansion)f(on)h(\014lenames)g(sp)s(eci\014ed)f(as)h(op)s(erands)e (to)j(input)e(and)330 2052 y(output)30 b(redirection)h(op)s(erators)g -(\(see)g(Section)g(3.6)h([Redirections],)g(page)f(35\).)225 +(\(see)g(Section)g(3.6)h([Redirections],)g(page)f(38\).)225 2180 y Fq(\017)60 b Fu(Bash)29 b(con)m(tains)h(the)f(`)p Ft(<>)p Fu(')f(redirection)i(op)s(erator,)f(allo)m(wing)i(a)e(\014le)g (to)g(b)s(e)f(op)s(ened)g(for)h(b)s(oth)f(read-)330 2290 y(ing)35 b(and)f(writing,)i(and)e(the)h(`)p Ft(&>)p Fu(')g(redirection) g(op)s(erator,)h(for)f(directing)g(standard)f(output)h(and)330 2399 y(standard)30 b(error)g(to)h(the)f(same)h(\014le)f(\(see)i -(Section)f(3.6)g([Redirections],)h(page)g(35\).)225 2527 +(Section)f(3.6)g([Redirections],)h(page)g(38\).)225 2527 y Fq(\017)60 b Fu(Bash)21 b(includes)f(the)h(`)p Ft(<<<)p Fu(')g(redirection)g(op)s(erator,)i(allo)m(wing)g(a)e(string)f(to)i(b)s (e)e(used)g(as)h(the)g(standard)330 2637 y(input)29 b(to)j(a)e @@ -19719,20 +20382,20 @@ Fu(')e(redirection)j(op)s(erators,)g(whic)m(h)f(mo)m(v)m(e)330 3002 y Fq(\017)60 b Fu(Bash)25 b(treats)h(a)f(n)m(um)m(b)s(er)e(of)i (\014lenames)g(sp)s(ecially)g(when)f(they)h(are)g(used)f(in)g (redirection)i(op)s(erators)330 3112 y(\(see)31 b(Section)h(3.6)f -([Redirections],)h(page)f(35\).)225 3240 y Fq(\017)60 +([Redirections],)h(page)f(38\).)225 3240 y Fq(\017)60 b Fu(Bash)33 b(can)f(op)s(en)g(net)m(w)m(ork)i(connections)f(to)h (arbitrary)e(mac)m(hines)h(and)f(services)h(with)f(the)h(redi-)330 3349 y(rection)e(op)s(erators)g(\(see)g(Section)g(3.6)h -([Redirections],)g(page)f(35\).)225 3477 y Fq(\017)60 +([Redirections],)g(page)f(38\).)225 3477 y Fq(\017)60 b Fu(The)29 b Ft(noclobber)e Fu(option)j(is)g(a)m(v)-5 b(ailable)32 b(to)e(a)m(v)m(oid)h(o)m(v)m(erwriting)g(existing)g (\014les)e(with)h(output)f(redi-)330 3587 y(rection)39 -b(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)i(page)e(62\).)66 +b(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)i(page)e(67\).)66 b(The)38 b(`)p Ft(>|)p Fu(')h(redirection)g(op)s(erator)330 3696 y(ma)m(y)31 b(b)s(e)f(used)f(to)i(o)m(v)m(erride)h Ft(noclobber)p Fu(.)225 3824 y Fq(\017)60 b Fu(The)34 b(Bash)g Ft(cd)g Fu(and)f Ft(pwd)g Fu(builtins)h(\(see)h(Section)g(4.1) -g([Bourne)g(Shell)f(Builtins],)h(page)g(44\))h(eac)m(h)330 +g([Bourne)g(Shell)f(Builtins],)h(page)g(48\))h(eac)m(h)330 3934 y(tak)m(e)c Ft(-L)e Fu(and)f Ft(-P)h Fu(options)h(to)g(switc)m(h)g (b)s(et)m(w)m(een)g(logical)i(and)c(ph)m(ysical)i(mo)s(des.)225 4061 y Fq(\017)60 b Fu(Bash)25 b(allo)m(ws)h(a)g(function)e(to)i(o)m(v) @@ -19740,28 +20403,28 @@ m(erride)g(a)g(builtin)e(with)h(the)g(same)g(name,)i(and)d(pro)m(vides) h(access)h(to)330 4171 y(that)34 b(builtin's)f(functionalit)m(y)h (within)f(the)g(function)g(via)h(the)f Ft(builtin)f Fu(and)g Ft(command)g Fu(builtins)330 4281 y(\(see)f(Section)h(4.2)f([Bash)g -(Builtins],)g(page)g(51\).)225 4408 y Fq(\017)60 b Fu(The)35 +(Builtins],)g(page)g(55\).)225 4408 y Fq(\017)60 b Fu(The)35 b Ft(command)e Fu(builtin)i(allo)m(ws)i(selectiv)m(e)h(disabling)e(of)f (functions)g(when)g(command)g(lo)s(okup)g(is)330 4518 y(p)s(erformed)29 b(\(see)i(Section)g(4.2)h([Bash)f(Builtins],)g(page)g -(51\).)225 4646 y Fq(\017)60 b Fu(Individual)23 b(builtins)g(ma)m(y)i +(55\).)225 4646 y Fq(\017)60 b Fu(Individual)23 b(builtins)g(ma)m(y)i (b)s(e)e(enabled)h(or)g(disabled)g(using)f(the)h Ft(enable)f Fu(builtin)g(\(see)i(Section)g(4.2)330 4756 y([Bash)31 -b(Builtins],)g(page)g(51\).)225 4883 y Fq(\017)60 b Fu(The)26 +b(Builtins],)g(page)g(55\).)225 4883 y Fq(\017)60 b Fu(The)26 b(Bash)h Ft(exec)e Fu(builtin)h(tak)m(es)i(additional)f(options)g(that) g(allo)m(w)h(users)d(to)j(con)m(trol)g(the)e(con)m(ten)m(ts)330 4993 y(of)35 b(the)f(en)m(vironmen)m(t)h(passed)f(to)h(the)g(executed)g (command,)h(and)d(what)i(the)f(zeroth)h(argumen)m(t)330 5103 y(to)c(the)g(command)f(is)g(to)h(b)s(e)f(\(see)h(Section)h(4.1)f -([Bourne)f(Shell)h(Builtins],)g(page)g(44\).)225 5230 +([Bourne)f(Shell)h(Builtins],)g(page)g(48\).)225 5230 y Fq(\017)60 b Fu(Shell)29 b(functions)g(ma)m(y)h(b)s(e)f(exp)s(orted)g (to)h(c)m(hildren)f(via)h(the)g(en)m(vironmen)m(t)g(using)f Ft(export)f(-f)h Fu(\(see)330 5340 y(Section)i(3.3)h([Shell)e(F)-8 -b(unctions],)32 b(page)f(18\).)p eop end -%%Page: 164 170 -TeXDict begin 164 169 bop 150 -116 a Fu(App)s(endix)29 +b(unctions],)32 b(page)f(19\).)p eop end +%%Page: 171 177 +TeXDict begin 171 176 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(164)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(171)225 299 y Fq(\017)60 b Fu(The)40 b(Bash)h Ft(export)p Fu(,)h Ft(readonly)p Fu(,)f(and)g Ft(declare)d Fu(builtins)j(can)g(tak)m(e)h(a)f Ft(-f)f Fu(option)i(to)f(act)h(on)330 408 y(shell)30 @@ -19777,15 +20440,15 @@ Fu(builtin)g(allo)m(ws)j(a)e(name)g(to)g(b)s(e)f(asso)s(ciated)j(with)d (an)h(arbitrary)f(\014lename,)330 874 y(ev)m(en)30 b(when)e(that)h (\014lename)g(cannot)h(b)s(e)e(found)g(b)m(y)h(searc)m(hing)g(the)g Ft($PATH)p Fu(,)g(using)f(`)p Ft(hash)h(-p)p Fu(')g(\(see)330 -984 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(44\).)225 +984 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(48\).)225 1121 y Fq(\017)60 b Fu(Bash)27 b(includes)f(a)i Ft(help)d Fu(builtin)i(for)f(quic)m(k)h(reference)h(to)f(shell)g(facilities)i -(\(see)f(Section)g(4.2)g([Bash)330 1230 y(Builtins],)j(page)g(51\).)225 +(\(see)f(Section)g(4.2)g([Bash)330 1230 y(Builtins],)j(page)g(55\).)225 1367 y Fq(\017)60 b Fu(The)42 b Ft(printf)g Fu(builtin)g(is)h(a)m(v)-5 b(ailable)45 b(to)f(displa)m(y)f(formatted)g(output)g(\(see)h(Section)g -(4.2)g([Bash)330 1477 y(Builtins],)31 b(page)g(51\).)225 +(4.2)g([Bash)330 1477 y(Builtins],)31 b(page)g(55\).)225 1614 y Fq(\017)60 b Fu(The)26 b(Bash)h Ft(read)f Fu(builtin)g(\(see)i -(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(51\))g(will)f(read)g(a)g +(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(55\))g(will)f(read)g(a)g (line)g(ending)330 1724 y(in)i(`)p Ft(\\)p Fu(')h(with)f(the)g Ft(-r)g Fu(option,)i(and)d(will)i(use)f(the)h Ft(REPLY)e Fu(v)-5 b(ariable)30 b(as)g(a)f(default)h(if)f(no)h(non-option)330 @@ -19808,23 +20471,23 @@ Fu(option)h(will)330 2491 y(read)30 b(un)m(til)h(a)g(particular)f(c)m b Fu(The)33 b Ft(return)e Fu(builtin)i(ma)m(y)g(b)s(e)g(used)f(to)i(ab) s(ort)f(execution)h(of)f(scripts)g(executed)h(with)f(the)g Ft(.)g Fu(or)330 2737 y Ft(source)c Fu(builtins)g(\(see)j(Section)f -(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(44\).)225 +(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(48\).)225 2874 y Fq(\017)60 b Fu(Bash)43 b(includes)g(the)g Ft(shopt)f Fu(builtin,)k(for)d(\014ner)f(con)m(trol)j(of)e(shell)h(optional)g (capabilities)h(\(see)330 2984 y(Section)c(4.3.2)g([The)f(Shopt)f -(Builtin],)k(page)d(66\),)k(and)39 b(allo)m(ws)i(these)f(options)h(to)f +(Builtin],)k(page)d(71\),)k(and)39 b(allo)m(ws)i(these)f(options)h(to)f (b)s(e)f(set)i(and)330 3093 y(unset)30 b(at)h(shell)g(in)m(v)m(o)s (cation)h(\(see)f(Section)h(6.1)f([In)m(v)m(oking)g(Bash],)g(page)h -(86\).)225 3230 y Fq(\017)60 b Fu(Bash)45 b(has)f(m)m(uc)m(h)g(more)h +(91\).)225 3230 y Fq(\017)60 b Fu(Bash)45 b(has)f(m)m(uc)m(h)g(more)h (optional)h(b)s(eha)m(vior)e(con)m(trollable)j(with)e(the)f Ft(set)g Fu(builtin)g(\(see)h(Sec-)330 3340 y(tion)31 -b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(62\).)225 3477 +b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(67\).)225 3477 y Fq(\017)60 b Fu(The)31 b(`)p Ft(-x)p Fu(')g(\()p Ft(xtrace)p Fu(\))g(option)h(displa)m(ys)f(commands)h(other)f(than)h(simple)f (commands)g(when)g(p)s(er-)330 3587 y(forming)f(an)g(execution)i(trace) -f(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(62\).)225 +f(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(67\).)225 3724 y Fq(\017)60 b Fu(The)28 b Ft(test)g Fu(builtin)h(\(see)h(Section) -f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(44\))g(is)f(sligh)m(tly)h +f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(48\))g(is)f(sligh)m(tly)h (di\013eren)m(t,)330 3833 y(as)23 b(it)g(implemen)m(ts)f(the)h Fm(posix)f Fu(algorithm,)j(whic)m(h)d(sp)s(eci\014es)g(the)h(b)s(eha)m (vior)f(based)g(on)h(the)f(n)m(um)m(b)s(er)330 3943 y(of)31 @@ -19833,9 +20496,9 @@ Ft(caller)d Fu(builtin,)j(whic)m(h)f(displa)m(ys)g(the)g(con)m(text)i (of)f(an)m(y)g(activ)m(e)h(subroutine)330 4189 y(call)28 b(\(a)f(shell)f(function)h(or)f(a)h(script)f(executed)h(with)f(the)h Ft(.)f Fu(or)g Ft(source)f Fu(builtins\).)39 b(This)26 -b(supp)s(orts)330 4299 y(the)31 b(bash)e(debugger.)225 +b(supp)s(orts)330 4299 y(the)31 b(Bash)f(debugger.)225 4436 y Fq(\017)60 b Fu(The)42 b Ft(trap)f Fu(builtin)h(\(see)i(Section) -f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(44\))h(allo)m(ws)g(a)e +f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(48\))h(allo)m(ws)g(a)e Ft(DEBUG)330 4545 y Fu(pseudo-signal)c(sp)s(eci\014cation,)i(similar)e (to)g Ft(EXIT)p Fu(.)62 b(Commands)36 b(sp)s(eci\014ed)h(with)g(a)h Ft(DEBUG)e Fu(trap)330 4655 y(are)k(executed)g(b)s(efore)f(ev)m(ery)h @@ -19851,58 +20514,58 @@ Ft(functrace)d Fu(option)j(has)f(b)s(een)g(enabled)g(using)330 Ft(extdebug)f Fu(shell)i(option)g(has)f(additional)h(e\013ects)h(on)f (the)g Ft(DEBUG)e Fu(trap.)330 5230 y(The)21 b Ft(trap)e Fu(builtin)i(\(see)h(Section)g(4.1)g([Bourne)f(Shell)g(Builtins],)j -(page)e(44\))g(allo)m(ws)g(an)f Ft(ERR)f Fu(pseudo-)330 +(page)e(48\))g(allo)m(ws)g(an)f Ft(ERR)f Fu(pseudo-)330 5340 y(signal)30 b(sp)s(eci\014cation,)h(similar)f(to)g Ft(EXIT)f Fu(and)g Ft(DEBUG)p Fu(.)39 b(Commands)28 b(sp)s(eci\014ed)h (with)g(an)g Ft(ERR)g Fu(trap)p eop end -%%Page: 165 171 -TeXDict begin 165 170 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 172 178 +TeXDict begin 172 177 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(165)330 299 y(are)40 b(executed)g(after)g +b(The)f(Bourne)g(Shell)1258 b(172)330 299 y(are)40 b(executed)g(after)g (a)f(simple)h(command)f(fails,)j(with)d(a)h(few)f(exceptions.)68 b(The)39 b Ft(ERR)g Fu(trap)g(is)330 408 y(not)g(inherited)f(b)m(y)h (shell)g(functions)f(unless)g(the)h Ft(-o)29 b(errtrace)37 b Fu(option)i(to)g(the)g Ft(set)f Fu(builtin)g(is)330 518 y(enabled.)330 650 y(The)g Ft(trap)g Fu(builtin)h(\(see)g(Section)h -(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(44\))g(allo)m(ws)g(a)g -Ft(RETURN)330 759 y Fu(pseudo-signal)35 b(sp)s(eci\014cation,)j -(similar)d(to)h Ft(EXIT)e Fu(and)g Ft(DEBUG)p Fu(.)54 -b(Commands)34 b(sp)s(eci\014ed)g(with)h(an)330 869 y -Ft(RETURN)k Fu(trap)i(are)g(executed)h(b)s(efore)e(execution)i(resumes) -e(after)h(a)g(shell)g(function)g(or)g(a)g(shell)330 978 -y(script)36 b(executed)g(with)g Ft(.)f Fu(or)h Ft(source)e -Fu(returns.)56 b(The)35 b Ft(RETURN)f Fu(trap)i(is)g(not)g(inherited)f -(b)m(y)h(shell)330 1088 y(functions)k(unless)h(the)g(function)f(has)h -(b)s(een)f(giv)m(en)i(the)f Ft(trace)e Fu(attribute)j(or)e(the)h -Ft(functrace)330 1198 y Fu(option)31 b(has)f(b)s(een)g(enabled)g(using) -g(the)g Ft(shopt)f Fu(builtin.)225 1329 y Fq(\017)60 -b Fu(The)30 b(Bash)g Ft(type)f Fu(builtin)h(is)g(more)g(extensiv)m(e)i -(and)d(giv)m(es)j(more)e(information)h(ab)s(out)f(the)g(names)330 +(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(48\))g(allo)m(ws)g(a)g +Ft(RETURN)330 759 y Fu(pseudo-signal)f(sp)s(eci\014cation,)k(similar)d +(to)g Ft(EXIT)e Fu(and)g Ft(DEBUG)p Fu(.)66 b(Commands)38 +b(sp)s(eci\014ed)h(with)g(a)330 869 y Ft(RETURN)g Fu(trap)i(are)g +(executed)h(b)s(efore)e(execution)i(resumes)e(after)h(a)g(shell)g +(function)g(or)g(a)g(shell)330 978 y(script)36 b(executed)g(with)g +Ft(.)f Fu(or)h Ft(source)e Fu(returns.)56 b(The)35 b +Ft(RETURN)f Fu(trap)i(is)g(not)g(inherited)f(b)m(y)h(shell)330 +1088 y(functions)k(unless)h(the)g(function)f(has)h(b)s(een)f(giv)m(en)i +(the)f Ft(trace)e Fu(attribute)j(or)e(the)h Ft(functrace)330 +1198 y Fu(option)31 b(has)f(b)s(een)g(enabled)g(using)g(the)g +Ft(shopt)f Fu(builtin.)225 1329 y Fq(\017)60 b Fu(The)30 +b(Bash)g Ft(type)f Fu(builtin)h(is)g(more)g(extensiv)m(e)i(and)d(giv)m +(es)j(more)e(information)h(ab)s(out)f(the)g(names)330 1439 y(it)h(\014nds)e(\(see)i(Section)g(4.2)h([Bash)e(Builtins],)i -(page)f(51\).)225 1570 y Fq(\017)60 b Fu(The)27 b(Bash)h +(page)f(55\).)225 1570 y Fq(\017)60 b Fu(The)27 b(Bash)h Ft(umask)e Fu(builtin)h(p)s(ermits)g(a)h Ft(-p)f Fu(option)h(to)h (cause)f(the)g(output)f(to)h(b)s(e)f(displa)m(y)m(ed)h(in)g(the)330 1680 y(form)i(of)h(a)g Ft(umask)f Fu(command)g(that)i(ma)m(y)f(b)s(e)f (reused)g(as)h(input)f(\(see)i(Section)f(4.1)h([Bourne)f(Shell)330 -1789 y(Builtins],)g(page)g(44\).)225 1921 y Fq(\017)60 +1789 y(Builtins],)g(page)g(48\).)225 1921 y Fq(\017)60 b Fu(Bash)34 b(implemen)m(ts)h(a)g Ft(csh)p Fu(-lik)m(e)g(directory)f (stac)m(k,)j(and)d(pro)m(vides)g(the)g Ft(pushd)p Fu(,)g -Ft(popd)p Fu(,)g(and)g Ft(dirs)330 2030 y Fu(builtins)g(to)i -(manipulate)f(it)h(\(see)f(Section)h(6.8)g([The)f(Directory)h(Stac)m -(k],)i(page)d(97\).)56 b(Bash)35 b(also)330 2140 y(mak)m(es)c(the)g +Ft(popd)p Fu(,)g(and)g Ft(dirs)330 2030 y Fu(builtins)d(to)i +(manipulate)f(it)h(\(see)g(Section)f(6.8)h([The)f(Directory)h(Stac)m +(k],)h(page)f(102\).)47 b(Bash)32 b(also)330 2140 y(mak)m(es)f(the)g (directory)g(stac)m(k)g(visible)g(as)g(the)f(v)-5 b(alue)31 b(of)g(the)f Ft(DIRSTACK)f Fu(shell)h(v)-5 b(ariable.)225 2272 y Fq(\017)60 b Fu(Bash)28 b(in)m(terprets)h(sp)s(ecial)g(bac)m (kslash-escap)s(ed)g(c)m(haracters)g(in)f(the)h(prompt)e(strings)h (when)f(in)m(ter-)330 2381 y(activ)m(e)33 b(\(see)e(Section)g(6.9)h -([Con)m(trolling)f(the)g(Prompt],)f(page)h(98\).)225 +([Con)m(trolling)f(the)g(Prompt],)f(page)h(104\).)225 2513 y Fq(\017)60 b Fu(The)46 b(Bash)h(restricted)g(mo)s(de)f(is)h (more)f(useful)g(\(see)h(Section)h(6.10)g([The)e(Restricted)i(Shell],) -330 2622 y(page)31 b(100\);)h(the)f(SVR4.2)g(shell)g(restricted)g(mo)s +330 2622 y(page)31 b(105\);)h(the)f(SVR4.2)g(shell)g(restricted)g(mo)s (de)f(is)g(to)s(o)h(limited.)225 2754 y Fq(\017)60 b Fu(The)30 b Ft(disown)f Fu(builtin)h(can)h(remo)m(v)m(e)h(a)f(job)f (from)g(the)h(in)m(ternal)g(shell)g(job)f(table)i(\(see)f(Section)h -(7.2)330 2863 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(108\))g(or)g +(7.2)330 2863 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(114\))g(or)g (suppress)d(the)i(sending)g(of)g Ft(SIGHUP)e Fu(to)j(a)g(job)f(when)f (the)330 2973 y(shell)i(exits)g(as)f(the)h(result)f(of)h(a)f Ft(SIGHUP)p Fu(.)225 3104 y Fq(\017)60 b Fu(Bash)31 b(includes)f(a)g(n) @@ -19919,7 +20582,7 @@ Fq(\017)60 b Fu(The)30 b(SVR4.2)h Ft(sh)f Fu(uses)g(a)g Ft(TIMEOUT)f Fu(v)-5 b(ariable)31 b(lik)m(e)h(Bash)e(uses)g Ft(TMOUT)p Fu(.)150 3894 y(More)h(features)g(unique)e(to)i(Bash)g(ma)m (y)g(b)s(e)f(found)f(in)h(Chapter)f(6)i([Bash)g(F)-8 -b(eatures],)32 b(page)f(86.)150 4128 y Fs(B.1)67 b(Implemen)l(tation)48 +b(eatures],)32 b(page)f(91.)150 4128 y Fs(B.1)67 b(Implemen)l(tation)48 b(Di\013erences)e(F)-11 b(rom)44 b(The)h(SVR4.2)g(Shell)150 4288 y Fu(Since)33 b(Bash)h(is)f(a)g(completely)i(new)e(implemen)m (tation,)j(it)e(do)s(es)e(not)i(su\013er)e(from)h(man)m(y)g(of)h(the)f @@ -19940,10 +20603,10 @@ Fu(.)57 b(If)35 b(the)i(shell)f(is)h(started)g(from)e(a)i(pro)s(cess)f (with)g Ft(SIGSEGV)e Fu(blo)s(c)m(k)m(ed)k(\(e.g.,)h(b)m(y)d(using)330 5340 y(the)31 b Ft(system\(\))d Fu(C)i(library)g(function)g(call\),)i (it)f(misb)s(eha)m(v)m(es)g(badly)-8 b(.)p eop end -%%Page: 166 172 -TeXDict begin 166 171 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 173 179 +TeXDict begin 173 178 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(166)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(173)225 299 y Fq(\017)60 b Fu(In)30 b(a)i(questionable)g(attempt)g(at)g(securit)m(y)-8 b(,)33 b(the)e(SVR4.2)h(shell,)g(when)e(in)m(v)m(ok)m(ed)j(without)e (the)h Ft(-p)330 408 y Fu(option,)39 b(will)d(alter)i(its)e(real)h(and) @@ -19974,8 +20637,8 @@ Fm(posix)330 1738 y Fu(standard.)225 1873 y Fq(\017)60 b Fu(The)30 b(SVR4.2)h(shell)g(b)s(eha)m(v)m(es)f(di\013eren)m(tly)h (when)f(in)m(v)m(ok)m(ed)i(as)e Ft(jsh)g Fu(\(it)h(turns)e(on)h(job)g (con)m(trol\).)p eop end -%%Page: 167 173 -TeXDict begin 167 172 bop 3614 -116 a Fu(167)150 299 +%%Page: 174 180 +TeXDict begin 174 179 bop 3614 -116 a Fu(174)150 299 y Fp(App)t(endix)52 b(C)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359 502 y Fu(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 635 y(Cop)m(yrigh)m(t)842 @@ -20056,10 +20719,10 @@ b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g 5340 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27 b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s (cumen)m(t)g(is)g(released)p eop end -%%Page: 168 174 -TeXDict begin 168 173 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 175 181 +TeXDict begin 175 180 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(168)330 299 y(under)26 b(this)i(License.)40 b(If)27 +b(175)330 299 y(under)26 b(this)i(License.)40 b(If)27 b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h (de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 408 y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5 @@ -20150,10 +20813,10 @@ b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330 5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199 5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end -%%Page: 169 175 -TeXDict begin 169 174 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 176 182 +TeXDict begin 176 181 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(169)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h +b(176)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h (the)g(Do)s(cumen)m(t)h(in)f(an)m(y)g(medium,)h(either)g(commercially)h (or)330 408 y(noncommercially)-8 b(,)48 b(pro)m(vided)42 b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j @@ -20243,10 +20906,10 @@ b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e 5340 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m (ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8 b(,)p eop end -%%Page: 170 176 -TeXDict begin 170 175 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 177 183 +TeXDict begin 177 182 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(170)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g +b(177)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g (the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same) h(title)h(as)510 408 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original) i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360 @@ -20325,10 +20988,10 @@ b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g (designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e(in)m(v)-5 b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p eop end -%%Page: 171 177 -TeXDict begin 171 176 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 178 184 +TeXDict begin 178 183 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(171)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 +b(178)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8 b(ersion's)36 b(license)g(notice.)57 b(These)330 408 y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g @@ -20413,10 +21076,10 @@ b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h 5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g (other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330 5340 y(that)d(do)s(cumen)m(t.)p eop end -%%Page: 172 178 -TeXDict begin 172 177 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 179 185 +TeXDict begin 179 184 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(172)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h +b(179)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h (W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f (its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep) s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h @@ -20501,10 +21164,10 @@ b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g (reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f (the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f (an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end -%%Page: 173 179 -TeXDict begin 173 178 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 180 186 +TeXDict begin 180 185 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(173)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE) +b(180)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE) 330 433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8 b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g (the)g(GNU)g(F)-8 b(ree)330 543 y(Do)s(cumen)m(tation)34 @@ -20568,10 +21231,10 @@ f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g (time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is) 330 4005 y(eligible)h(for)e(relicensing.)p eop end -%%Page: 174 180 -TeXDict begin 174 179 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 181 187 +TeXDict begin 181 186 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(174)150 299 y Fs(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f +b(181)150 299 y Fs(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f (for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Fu(T)-8 b(o)35 b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e) i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150 @@ -20606,1230 +21269,1246 @@ y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s (ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p eop end -%%Page: 175 181 -TeXDict begin 175 180 bop 3614 -116 a Fu(175)150 299 +%%Page: 182 188 +TeXDict begin 182 187 bop 3614 -116 a Fu(182)150 299 y Fp(App)t(endix)52 b(D)81 b(Indexes)150 639 y Fs(D.1)68 b(Index)45 b(of)g(Shell)g(Builtin)g(Commands)146 806 y(.)150 923 y Fe(.)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)33 b Fb(44)146 1163 y Fs(:)150 1280 y Fe(:)19 b Fc(:)13 +(:)33 b Fb(48)146 1163 y Fs(:)150 1280 y Fe(:)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(44)146 +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(48)146 1523 y Fs([)150 1640 y Fe([)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)33 b Fb(48)146 1881 y Fs(A)150 1998 y Fe(alias)9 +(:)g(:)g(:)33 b Fb(52)146 1881 y Fs(A)150 1998 y Fe(alias)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(51)146 2239 y +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(55)146 2239 y Fs(B)150 2356 y Fe(bg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)29 -b Fb(108)150 2443 y Fe(bind)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(114)150 2443 y Fe(bind)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(51)150 2531 y Fe(break)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(56)150 2531 y Fe(break)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 -b Fb(45)150 2618 y Fe(builtin)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(49)150 2618 y Fe(builtin)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 -b Fb(53)146 2859 y Fs(C)150 2976 y Fe(caller)6 b Fc(:)15 +b Fb(57)146 2859 y Fs(C)150 2976 y Fe(caller)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)20 b Fb(53)150 3063 y Fe(cd)c Fc(:)e(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)20 b Fb(57)150 3063 y Fe(cd)c Fc(:)e(:)f(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)31 b Fb(45)150 3151 y Fe(command)22 +g(:)g(:)g(:)g(:)g(:)31 b Fb(49)150 3151 y Fe(command)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)35 b Fb(53)150 3238 y Fe(compgen)18 +h(:)f(:)g(:)g(:)g(:)35 b Fb(57)150 3238 y Fe(compgen)18 b Fc(:)d(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)33 b Fb(139)150 3326 y Fe(complete)16 +(:)h(:)f(:)g(:)33 b Fb(146)150 3326 y Fe(complete)16 b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)31 b Fb(140)150 3413 y Fe(compopt)18 b Fc(:)d(:)e(:)g(:)h(:) +(:)g(:)g(:)31 b Fb(146)150 3413 y Fe(compopt)18 b Fc(:)d(:)e(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 -b Fb(143)150 3501 y Fe(continue)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(149)150 3501 y Fe(continue)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b -Fb(45)146 3741 y Fs(D)150 3858 y Fe(declare)22 b Fc(:)13 +Fb(49)146 3741 y Fs(D)150 3858 y Fe(declare)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)35 b Fb(53)150 3946 y Fe(dirs)11 b Fc(:)j(:)f(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)25 b Fb(97)150 4033 y Fe(disown)d Fc(:)13 -b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)36 b Fb(110)146 4274 y Fs(E)150 4391 y Fe(echo)11 -b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(55)150 4478 -y Fe(enable)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(56)150 -4566 y Fe(eval)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(45)150 4653 y Fe(exec)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +g(:)g(:)g(:)35 b Fb(58)150 3946 y Fe(dirs)9 b Fc(:)14 +b(:)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(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(102)150 4033 y Fe(disown)e +Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)36 b Fb(116)146 4274 y Fs(E)150 4391 +y Fe(echo)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b +Fb(59)150 4478 y Fe(enable)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 +b Fb(60)150 4566 y Fe(eval)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(49)150 4653 y Fe(exec)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(46)150 4741 y Fe(exit)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(50)150 4741 y Fe(exit)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(46)150 4828 y Fe(export)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g +b Fb(50)150 4828 y Fe(export)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 -b Fb(46)146 5080 y Fs(F)150 5197 y Fe(fc)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) +b Fb(50)146 5080 y Fs(F)150 5197 y Fe(fc)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)29 b Fb(147)150 5284 y Fe(fg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)29 b Fb(153)150 5284 y Fe(fg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)29 b Fb(108)2021 871 y Fs(G)2025 988 y Fe(getopts)22 +g(:)g(:)g(:)29 b Fb(114)2021 871 y Fs(G)2025 988 y Fe(getopts)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)35 b Fb(46)2021 1250 y Fs(H)2025 +g(:)g(:)h(:)f(:)g(:)35 b Fb(50)2021 1250 y Fs(H)2025 1369 y Fe(hash)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 -b Fb(47)2025 1457 y Fe(help)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g +b Fb(51)2025 1457 y Fe(help)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 -b Fb(56)2025 1544 y Fe(history)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(61)2025 1544 y Fe(history)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b -Fb(147)2021 1806 y Fs(J)2025 1924 y Fe(jobs)9 b Fc(:)14 +Fb(153)2021 1806 y Fs(J)2025 1924 y Fe(jobs)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(108)2021 2186 y Fs(K)2025 +g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(114)2021 2186 y Fs(K)2025 2303 y Fe(kill)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 -b Fb(109)2021 2554 y Fs(L)2025 2672 y Fe(let)14 b Fc(:)f(:)g(:)h(:)f(:) +b Fb(115)2021 2554 y Fs(L)2025 2672 y Fe(let)14 b Fc(:)f(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)28 b Fb(56)2025 2760 y Fe(local)9 b Fc(:)14 +g(:)g(:)h(:)f(:)28 b Fb(61)2025 2760 y Fe(local)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(57)2025 2848 y Fe(logout)6 +g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(61)2025 2848 y Fe(logout)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(57)2021 3110 y Fs(M)2025 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(61)2021 3110 y Fs(M)2025 3227 y Fe(mapfile)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(57)2021 -3489 y Fs(P)2025 3608 y Fe(popd)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 -b Fb(98)2025 3696 y Fe(printf)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(58)2025 3784 y Fe(pushd)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 -b Fb(98)2025 3871 y Fe(pwd)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(61)2021 +3489 y Fs(P)2025 3608 y Fe(popd)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 +b Fb(103)2025 3696 y Fe(printf)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 +b Fb(62)2025 3784 y Fe(pushd)6 b Fc(:)14 b(:)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(:)g(:)h(:)21 +b Fb(103)2025 3871 y Fe(pwd)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 -b Fb(47)2021 4133 y Fs(R)2025 4251 y Fe(read)11 b Fc(:)j(:)f(:)g(:)g(:) +b Fb(51)2021 4133 y Fs(R)2025 4251 y Fe(read)11 b Fc(:)j(:)f(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)26 b Fb(58)2025 4339 y Fe(readarray)15 b +g(:)g(:)g(:)26 b Fb(63)2025 4339 y Fe(readarray)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)30 b Fb(60)2025 4427 y Fe(readonly)18 b Fc(:)d(:)e(:)g(:)g(:)g +g(:)g(:)30 b Fb(64)2025 4427 y Fe(readonly)18 b Fc(:)d(:)e(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 -b Fb(47)2025 4515 y Fe(return)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(52)2025 4515 y Fe(return)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(48)2021 4765 y Fs(S)2025 4884 y Fe(set)14 b Fc(:)f(:)g(:)h(:)f(:)g +b Fb(52)2021 4765 y Fs(S)2025 4884 y Fe(set)14 b Fc(:)f(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)28 b Fb(62)2025 4972 y Fe(shift)9 b Fc(:)14 +(:)g(:)h(:)f(:)28 b Fb(67)2025 4972 y Fe(shift)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(48)2025 5060 y Fe(shopt)9 +g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(52)2025 5060 y Fe(shopt)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(66)2025 5148 +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(71)2025 5148 y Fe(source)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(60)2025 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(64)2025 5235 y Fe(suspend)d Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(110)p eop end -%%Page: 176 182 -TeXDict begin 176 181 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(176)146 294 y Fs(T)150 410 y Fe(test)11 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(116)p eop end +%%Page: 183 189 +TeXDict begin 183 188 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(183)146 294 y Fs(T)150 410 y Fe(test)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(48)150 497 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(52)150 497 y Fe(times)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(50)150 +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(54)150 584 y Fe(trap)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(50)150 671 y Fe(type)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(54)150 671 y Fe(type)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(60)150 758 y Fe(typeset)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +b Fb(64)150 758 y Fe(typeset)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 -b Fb(61)146 1003 y Fs(U)150 1119 y Fe(ulimit)6 b Fc(:)15 +b Fb(65)146 1003 y Fs(U)150 1119 y Fe(ulimit)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)20 b Fb(61)150 1206 y Fe(umask)9 +g(:)g(:)g(:)h(:)f(:)20 b Fb(65)150 1206 y Fe(umask)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(51)150 1293 y +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(55)150 1293 y Fe(unalias)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(62)150 1380 y +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(66)150 1380 y Fe(unset)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(51)2021 +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(55)2021 294 y Fs(W)2025 433 y Fe(wait)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 -b Fb(109)150 2133 y Fs(D.2)68 b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h -(W)-11 b(ords)146 2704 y(!)150 2820 y Fe(!)21 b Fc(:)13 -b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(8)146 +b Fb(115)150 2133 y Fs(D.2)68 b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h +(W)-11 b(ords)146 2704 y(!)150 2820 y Fe(!)19 b Fc(:)13 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(10)146 3056 y Fs([)150 3172 y Fe([[)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)31 b Fb(13)146 3414 y Fs(])150 3530 y Fe(]])16 b +g(:)31 b Fb(14)146 3414 y Fs(])150 3530 y Fe(]])16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(13)146 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(14)146 3770 y Fa({)150 3886 y Fe({)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)33 b Fb(15)146 4125 y Fa(})150 4241 y Fe(})19 +(:)g(:)g(:)33 b Fb(17)146 4125 y Fa(})150 4241 y Fe(})19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b -Fb(15)146 4475 y Fs(C)150 4591 y Fe(case)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) +Fb(17)146 4475 y Fs(C)150 4591 y Fe(case)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)25 b Fb(11)146 4825 y Fs(D)150 4941 y Fe(do)16 +g(:)h(:)25 b Fb(13)146 4825 y Fs(D)150 4941 y Fe(do)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(10)150 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(11)150 5028 y Fe(done)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(10)146 5261 y Fs(E)150 5377 y Fe(elif)11 b Fc(:)j(:)f(:)g(:)h(:)f +b Fb(11)146 5261 y Fs(E)150 5377 y Fe(elif)11 b Fc(:)j(:)f(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)25 b Fb(11)150 5465 y Fe(else)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) +(:)g(:)h(:)25 b Fb(12)150 5465 y Fe(else)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)25 b Fb(11)150 5552 y Fe(esac)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g +g(:)h(:)25 b Fb(12)150 5552 y Fe(esac)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)25 b Fb(11)2021 2703 y Fs(F)2025 2836 y Fe(fi)16 +(:)h(:)25 b Fb(13)2021 2703 y Fs(F)2025 2836 y Fe(fi)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(11)2025 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(12)2025 2928 y Fe(for)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 -b Fb(10)2025 3015 y Fe(function)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f +b Fb(12)2025 3015 y Fe(function)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b -Fb(18)2021 3359 y Fs(I)2025 3491 y Fe(if)16 b Fc(:)e(:)f(:)g(:)g(:)g(:) +Fb(19)2021 3359 y Fs(I)2025 3491 y Fe(if)16 b Fc(:)e(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)31 b Fb(11)2025 3578 y Fe(in)16 b Fc(:)e(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)31 b Fb(12)2025 3578 y Fe(in)16 b Fc(:)e(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)31 b Fb(11)2021 3921 y Fs(S)2025 +f(:)g(:)g(:)g(:)g(:)31 b Fb(13)2021 3921 y Fs(S)2025 4048 y Fe(select)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b -Fb(12)2021 4392 y Fs(T)2025 4524 y Fe(then)11 b Fc(:)j(:)f(:)g(:)g(:)g +Fb(13)2021 4392 y Fs(T)2025 4524 y Fe(then)11 b Fc(:)j(:)f(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)26 b Fb(11)2025 4611 y Fe(time)13 b Fc(:)h(:)f(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)28 b Fb(8)2021 4954 y Fs(U)2025 5081 y -Fe(until)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(10)2021 -5425 y Fs(W)2025 5552 y Fe(while)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 -b Fb(10)p eop end -%%Page: 177 183 -TeXDict begin 177 182 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(177)150 299 y Fs(D.3)68 b(P)l(arameter)47 -b(and)d(V)-11 b(ariable)46 b(Index)146 955 y(!)150 1073 +(:)g(:)g(:)26 b Fb(12)2025 4611 y Fe(time)11 b Fc(:)j(:)f(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)26 b Fb(10)2021 4954 y Fs(U)2025 5081 y Fe(until)9 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(11)2021 5425 +y Fs(W)2025 5552 y Fe(while)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 +b Fb(12)p eop end +%%Page: 184 190 +TeXDict begin 184 189 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(184)150 299 y Fs(D.3)68 b(P)l(arameter)47 +b(and)d(V)-11 b(ariable)46 b(Index)146 955 y(!)150 1072 y Fe(!)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 -b Fb(22)146 1327 y Fs(#)150 1445 y Fe(#)19 b Fc(:)13 +b Fb(24)146 1314 y Fs(#)150 1431 y Fe(#)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(22)146 -1701 y Fs($)150 1820 y Fe($)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(23)146 +1676 y Fs($)150 1794 y Fe($)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)33 b Fb(22)150 1909 y Fe($!)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)33 b Fb(23)150 1881 y Fe($!)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)31 b Fb(22)150 1997 y Fe($#)16 b Fc(:)e(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)31 b Fb(24)150 1969 y Fe($#)16 b Fc(:)e(:)f(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)31 b Fb(22)150 2085 y Fe($$)16 b Fc(:)e(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)31 b Fb(23)150 2057 y Fe($$)16 b Fc(:)e(:)f(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(22)150 2173 y Fe($*)16 +(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(23)150 2144 y Fe($*)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(22)150 -2261 y Fe($-)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(23)150 +2232 y Fe($-)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 -b Fb(22)150 2350 y Fe($?)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +b Fb(23)150 2320 y Fe($?)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -31 b Fb(22)150 2438 y Fe($@)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g +31 b Fb(23)150 2407 y Fe($@)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)31 b Fb(22)150 2526 y Fe($_)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f +(:)31 b Fb(23)150 2495 y Fe($_)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)31 b Fb(73)150 2613 y Fe($0)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h +(:)g(:)31 b Fb(78)150 2582 y Fe($0)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)31 b Fb(22)146 2876 y Fs(*)150 2994 y Fe(*)19 +(:)g(:)g(:)31 b Fb(24)146 2834 y Fs(*)150 2950 y Fe(*)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b -Fb(22)146 3248 y Fs({)150 3366 y Fe(-)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:) +Fb(23)146 3193 y Fs({)150 3310 y Fe(-)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)33 b Fb(22)146 3620 y Fs(?)150 3738 +g(:)h(:)f(:)g(:)g(:)33 b Fb(23)146 3553 y Fs(?)150 3670 y Fe(?)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 -b Fb(22)146 3992 y Fs(@)150 4110 y Fe(@)19 b Fc(:)13 +b Fb(23)146 3912 y Fs(@)150 4029 y Fe(@)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(22)p -156 4364 41 6 v 150 4482 a Fe(_)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(23)p +156 4272 41 6 v 150 4389 a Fe(_)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)33 b Fb(73)146 4736 y Fs(0)150 4854 y +(:)f(:)g(:)g(:)33 b Fb(78)146 4631 y Fs(0)150 4748 y Fe(0)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 -b Fb(22)146 5108 y Fs(A)150 5226 y Fe(auto_resume)8 b +b Fb(24)146 4991 y Fs(A)150 5108 y Fe(active-region-end-color)12 +b Fc(:)18 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)26 b Fb(121)150 5196 y Fe(active-region-start-color) +7 b Fc(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)21 b Fb(121)150 5283 y Fe(auto_resume)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -23 b Fb(110)2021 954 y Fs(B)2025 1074 y Fe(BASH)11 b +23 b Fb(116)2021 954 y Fs(B)2025 1074 y Fe(BASH)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(74)2025 1163 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(79)2025 1163 y Fe(BASH_ALIASES)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)22 b Fb(74)2025 1251 y Fe(BASH_ARGC)15 +g(:)g(:)g(:)g(:)h(:)22 b Fb(79)2025 1251 y Fe(BASH_ARGC)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)30 b Fb(74)2025 1340 y Fe(BASH_ARGV)15 b Fc(:)g(:)f(:)f(:)g +(:)g(:)g(:)30 b Fb(79)2025 1340 y Fe(BASH_ARGV)15 b Fc(:)g(:)f(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 -b Fb(74)2025 1429 y Fe(BASH_ARGV0)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g +b Fb(79)2025 1429 y Fe(BASH_ARGV0)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(75)2025 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(80)2025 1517 y Fe(BASH_CMDS)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(75)2025 1606 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(80)2025 1606 y Fe(BASH_COMMAND)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)22 b Fb(75)2025 1695 y Fe(BASH_COMPAT)10 +g(:)g(:)g(:)g(:)h(:)22 b Fb(80)2025 1695 y Fe(BASH_COMPAT)10 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)25 b Fb(75)2025 1783 y Fe(BASH_ENV)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g +g(:)25 b Fb(80)2025 1783 y Fe(BASH_ENV)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 -b Fb(75)2025 1872 y Fe(BASH_EXECUTION_STRING)24 b Fc(:)13 +b Fb(80)2025 1872 y Fe(BASH_EXECUTION_STRING)24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)34 b Fb(75)2025 1960 y Fe(BASH_LINENO)10 +(:)g(:)g(:)g(:)g(:)34 b Fb(80)2025 1960 y Fe(BASH_LINENO)10 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)25 b Fb(75)2025 2049 y Fe(BASH_LOADABLES_PATH)7 b +g(:)25 b Fb(80)2025 2049 y Fe(BASH_LOADABLES_PATH)7 b Fc(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(76)2025 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(81)2025 2138 y Fe(BASH_REMATCH)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(76)2025 2226 y Fe(BASH_SOURCE)10 +(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(81)2025 2226 y Fe(BASH_SOURCE)10 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)25 b Fb(76)2025 2315 y Fe(BASH_SUBSHELL)g Fc(:)13 +g(:)25 b Fb(81)2025 2315 y Fe(BASH_SUBSHELL)g Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(76)2025 2403 y Fe(BASH_VERSINFO)25 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g +b Fb(81)2025 2403 y Fe(BASH_VERSINFO)25 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(76)2025 2492 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(81)2025 2492 y Fe(BASH_VERSION)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)22 b Fb(76)2025 2581 y Fe(BASH_XTRACEFD)j +g(:)g(:)g(:)g(:)h(:)22 b Fb(81)2025 2581 y Fe(BASH_XTRACEFD)j Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(76)2025 2669 y Fe(BASHOPTS)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f +b Fb(81)2025 2669 y Fe(BASHOPTS)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b -Fb(74)2025 2758 y Fe(BASHPID)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g +Fb(79)2025 2758 y Fe(BASHPID)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 -b Fb(74)2025 2847 y Fe(bell-style)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f +b Fb(79)2025 2847 y Fe(bell-style)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(115)2025 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(121)2025 2935 y Fe(bind-tty-special-chars)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 -b Fb(115)2025 3022 y Fe(blink-matching-paren)24 b Fc(:)13 +b Fb(121)2025 3022 y Fe(blink-matching-paren)24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)34 b Fb(115)2021 3297 y Fs(C)2025 +(:)g(:)g(:)g(:)h(:)34 b Fb(122)2021 3297 y Fs(C)2025 3417 y Fe(CDPATH)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b -Fb(73)2025 3506 y Fe(CHILD_MAX)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g +Fb(78)2025 3506 y Fe(CHILD_MAX)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(77)2025 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(82)2025 3595 y Fe(colored-completion-prefix)7 b Fc(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 -b Fb(115)2025 3683 y Fe(colored-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +b Fb(122)2025 3683 y Fe(colored-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(115)2025 3772 y Fe(COLUMNS)22 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(122)2025 3772 y Fe(COLUMNS)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)35 b Fb(77)2025 3860 y Fe(comment-begin)23 +g(:)g(:)h(:)f(:)g(:)35 b Fb(82)2025 3860 y Fe(comment-begin)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 -b Fb(115)2025 3949 y Fe(COMP_CWORD)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g +b Fb(122)2025 3949 y Fe(COMP_CWORD)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(77)2025 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(82)2025 4038 y Fe(COMP_KEY)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(77)2025 4126 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(82)2025 4126 y Fe(COMP_LINE)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(77)2025 4215 y Fe(COMP_POINT)13 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(82)2025 4215 y Fe(COMP_POINT)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)27 b Fb(77)2025 4303 y Fe(COMP_TYPE)15 b Fc(:)g(:)f(:)f(:)g(:)g +(:)h(:)27 b Fb(82)2025 4303 y Fe(COMP_TYPE)15 b Fc(:)g(:)f(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 -b Fb(77)2025 4392 y Fe(COMP_WORDBREAKS)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g +b Fb(82)2025 4392 y Fe(COMP_WORDBREAKS)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(77)2025 4481 y Fe(COMP_WORDS)13 +h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(82)2025 4481 y Fe(COMP_WORDS)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)27 b Fb(77)2025 4569 y Fe(completion-display-width)9 +(:)h(:)27 b Fb(82)2025 4569 y Fe(completion-display-width)9 b Fc(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)24 b Fb(115)2025 4658 y Fe(completion-ignore-case)14 +(:)h(:)f(:)g(:)24 b Fb(122)2025 4658 y Fe(completion-ignore-case)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)29 b Fb(116)2025 4747 y Fe(completion-map-case)d +(:)g(:)g(:)h(:)f(:)29 b Fb(122)2025 4747 y Fe(completion-map-case)d Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(116)2025 4835 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(122)2025 4835 y Fe(completion-prefix-display-leng)q(th)29 b Fc(:)13 -b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(116)2025 4924 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(122)2025 4924 y Fe(completion-query-items)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 -b Fb(116)2025 5012 y Fe(COMPREPLY)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g +b Fb(122)2025 5012 y Fe(COMPREPLY)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b -Fb(78)2025 5101 y Fe(convert-meta)25 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:) +Fb(83)2025 5101 y Fe(convert-meta)25 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(116)2025 5188 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(123)2025 5188 y Fe(COPROC)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(78)p +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(83)p eop end -%%Page: 178 184 -TeXDict begin 178 183 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(178)146 294 y Fs(D)150 416 y Fe(DIRSTACK)18 +%%Page: 185 191 +TeXDict begin 185 190 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(185)146 294 y Fs(D)150 415 y Fe(DIRSTACK)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)32 b Fb(78)150 503 y Fe(disable-completion)7 +(:)g(:)h(:)f(:)32 b Fb(83)150 502 y Fe(disable-completion)7 b Fc(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(116)146 -791 y Fs(E)150 913 y Fe(echo-control-characters)12 b +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(123)146 +782 y Fs(E)150 903 y Fe(echo-control-characters)12 b Fc(:)18 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)26 b Fb(116)150 1002 y Fe(editing-mode)f +g(:)g(:)g(:)h(:)26 b Fb(123)150 991 y Fe(editing-mode)f Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37 -b Fb(116)150 1092 y Fe(emacs-mode-string)10 b Fc(:)17 +b Fb(123)150 1080 y Fe(emacs-mode-string)10 b Fc(:)17 b(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(117)150 1181 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(123)150 1169 y Fe(EMACS)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(78)150 -1270 y Fe(enable-bracketed-paste)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 -b Fb(117)150 1359 y Fe(enable-keypad)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(83)150 +1258 y Fe(enable-active-region)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 +b Fb(123)150 1347 y Fe(enable-bracketed-paste)14 b Fc(:)k(:)c(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 +b Fb(124)150 1436 y Fe(enable-keypad)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(117)150 1449 y Fe(ENV)14 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(124)150 1525 y Fe(ENV)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(78)150 -1538 y Fe(EPOCHREALTIME)d Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(83)150 +1613 y Fe(EPOCHREALTIME)d Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)37 b Fb(78)150 1627 y Fe(EPOCHSECONDS)8 +g(:)g(:)g(:)g(:)37 b Fb(83)150 1702 y Fe(EPOCHSECONDS)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -22 b Fb(78)150 1716 y Fe(EUID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g +22 b Fb(83)150 1791 y Fe(EUID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(78)150 1806 y Fe(EXECIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:) +b Fb(83)150 1880 y Fe(EXECIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(78)150 -1893 y Fe(expand-tilde)e Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(83)150 +1967 y Fe(expand-tilde)e Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)37 b Fb(117)146 2180 y Fs(F)150 2303 +g(:)g(:)g(:)h(:)37 b Fb(124)146 2247 y Fs(F)150 2368 y Fe(FCEDIT)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(79)150 -2392 y Fe(FIGNORE)i Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(84)150 +2457 y Fe(FIGNORE)i Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(79)150 -2481 y Fe(FUNCNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(84)150 +2545 y Fe(FUNCNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(79)150 2568 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(84)150 2633 y Fe(FUNCNEST)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(79)146 2844 y -Fs(G)150 2967 y Fe(GLOBIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(84)146 2901 y +Fs(G)150 3022 y Fe(GLOBIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(79)150 -3054 y Fe(GROUPS)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(84)150 +3109 y Fe(GROUPS)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b -Fb(79)146 3330 y Fs(H)150 3452 y Fe(histchars)15 b Fc(:)h(:)d(:)g(:)g +Fb(84)146 3377 y Fs(H)150 3498 y Fe(histchars)15 b Fc(:)h(:)d(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 -b Fb(79)150 3542 y Fe(HISTCMD)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:) +b Fb(84)150 3587 y Fe(HISTCMD)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 -b Fb(79)150 3631 y Fe(HISTCONTROL)10 b Fc(:)16 b(:)d(:)g(:)g(:)h(:)f(:) +b Fb(84)150 3676 y Fe(HISTCONTROL)10 b Fc(:)16 b(:)d(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(80)150 -3720 y Fe(HISTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(85)150 +3765 y Fe(HISTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(80)150 3809 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(85)150 3854 y Fe(HISTFILESIZE)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)22 b Fb(80)150 3899 y Fe(HISTIGNORE)13 +g(:)g(:)h(:)f(:)g(:)22 b Fb(85)150 3942 y Fe(HISTIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)27 b Fb(80)150 3988 y Fe(history-preserve-point)14 +(:)g(:)27 b Fb(85)150 4031 y Fe(history-preserve-point)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)29 b Fb(117)150 4077 y Fe(history-size)c +h(:)f(:)g(:)g(:)29 b Fb(124)150 4120 y Fe(history-size)c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37 -b Fb(117)150 4166 y Fe(HISTSIZE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(124)150 4209 y Fe(HISTSIZE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b -Fb(80)150 4256 y Fe(HISTTIMEFORMAT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +Fb(85)150 4298 y Fe(HISTTIMEFORMAT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(80)150 4345 y Fe(HOME)11 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(85)150 4387 y Fe(HOME)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(73)150 4434 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(78)150 4475 y Fe(horizontal-scroll-mode)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(117)150 -4523 y Fe(HOSTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(124)150 +4564 y Fe(HOSTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(81)150 4613 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(86)150 4653 y Fe(HOSTNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(81)150 4700 y +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(86)150 4740 y Fe(HOSTTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(81)2021 294 y Fs(I)2025 +g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(86)2021 294 y Fs(I)2025 420 y Fe(IFS)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 -b Fb(73)2025 510 y Fe(IGNOREEOF)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g +b Fb(78)2025 510 y Fe(IGNOREEOF)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(81)2025 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(86)2025 600 y Fe(input-meta)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(118)2025 691 y Fe(INPUTRC)c +h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(124)2025 691 y Fe(INPUTRC)c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)35 b Fb(81)2025 781 y Fe(INSIDE_EMACS)8 +g(:)g(:)h(:)f(:)g(:)35 b Fb(86)2025 781 y Fe(INSIDE_EMACS)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -22 b Fb(81)2025 868 y Fe(isearch-terminators)k Fc(:)13 +22 b Fb(86)2025 868 y Fe(isearch-terminators)k Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(118)2021 1167 y Fs(K)2025 +(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(125)2021 1167 y Fs(K)2025 1290 y Fe(keymap)22 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(118)2021 -1601 y Fs(L)2025 1727 y Fe(LANG)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 -b Fb(81)2025 1817 y Fe(LC_ALL)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(81)2025 1907 y Fe(LC_COLLATE)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(125)2021 +1601 y Fs(L)2025 1727 y Fe(LANG)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35 +b Fb(8,)26 b(86)2025 1817 y Fe(LC_ALL)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 +b Fb(86)2025 1907 y Fe(LC_COLLATE)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(81)2025 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(86)2025 1998 y Fe(LC_CTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(81)2025 2088 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(86)2025 2088 y Fe(LC_MESSAGES)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)34 b Fb(7,)26 b(81)2025 2178 y Fe(LC_NUMERIC)13 +g(:)g(:)g(:)34 b Fb(8,)26 b(86)2025 2178 y Fe(LC_NUMERIC)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)27 b Fb(82)2025 2269 y Fe(LC_TIME)22 b Fc(:)13 +(:)h(:)27 b Fb(87)2025 2269 y Fe(LC_TIME)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)35 b Fb(82)2025 2359 y Fe(LINENO)6 b Fc(:)14 +h(:)f(:)g(:)35 b Fb(87)2025 2359 y Fe(LINENO)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 2446 y Fe(LINES)9 +g(:)g(:)g(:)g(:)g(:)21 b Fb(87)2025 2446 y Fe(LINES)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(82)2021 2746 +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(87)2021 2746 y Fs(M)2025 2872 y Fe(MACHTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b -Fb(82)2025 2962 y Fe(MAIL)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g +Fb(87)2025 2962 y Fe(MAIL)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 -b Fb(73)2025 3052 y Fe(MAILCHECK)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:) +b Fb(78)2025 3052 y Fe(MAILCHECK)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(82)2025 +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(87)2025 3143 y Fe(MAILPATH)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(73)2025 3233 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(78)2025 3233 y Fe(MAPFILE)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(82)2025 3323 +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(87)2025 3323 y Fe(mark-modified-lines)26 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(118)2025 3414 y Fe(mark-symlinked-directories)27 +b Fb(125)2025 3414 y Fe(mark-symlinked-directories)27 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -36 b Fb(119)2025 3504 y Fe(match-hidden-files)7 b Fc(:)17 +36 b Fb(125)2025 3504 y Fe(match-hidden-files)7 b Fc(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(119)2025 3594 +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(125)2025 3594 y Fe(menu-complete-display-prefix)17 b Fc(:)h(:)13 b(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(119)2025 3681 y Fe(meta-flag)13 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(126)2025 3681 y Fe(meta-flag)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)28 b Fb(118)2021 3992 y Fs(O)2025 4118 y Fe(OLDPWD)6 +(:)f(:)28 b Fb(124)2021 3992 y Fs(O)2025 4118 y Fe(OLDPWD)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4208 y Fe(OPTARG)6 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(87)2025 4208 y Fe(OPTARG)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(73)2025 4299 y Fe(OPTERR)6 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(78)2025 4299 y Fe(OPTERR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4389 y Fe(OPTIND)6 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(87)2025 4389 y Fe(OPTIND)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(73)2025 4480 y Fe(OSTYPE)6 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(78)2025 4480 y Fe(OSTYPE)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4567 y Fe(output-meta)8 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(87)2025 4567 y Fe(output-meta)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -23 b Fb(119)p eop end -%%Page: 179 185 -TeXDict begin 179 184 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(179)146 294 y Fs(P)150 410 y Fe(page-completions) +23 b Fb(126)p eop end +%%Page: 186 192 +TeXDict begin 186 191 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(186)146 294 y Fs(P)150 410 y Fe(page-completions) 13 b Fc(:)j(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(119)150 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(126)150 497 y Fe(PATH)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(73)150 584 y Fe(PIPESTATUS)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(78)150 584 y Fe(PIPESTATUS)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(82)150 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(87)150 671 y Fe(POSIXLY_CORRECT)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)32 b Fb(82)150 758 y Fe(PPID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g +(:)g(:)g(:)32 b Fb(87)150 758 y Fe(PPID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)25 b Fb(82)150 846 y Fe(PROMPT_COMMAND)e Fc(:)13 +(:)h(:)25 b Fb(87)150 846 y Fe(PROMPT_COMMAND)e Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 -b Fb(82)150 933 y Fe(PROMPT_DIRTRIM)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +b Fb(87)150 933 y Fe(PROMPT_DIRTRIM)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(83)150 1020 y Fe(PS0)14 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(88)150 1020 y Fe(PS0)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(83)150 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(88)150 1107 y Fe(PS1)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 -b Fb(73)150 1194 y Fe(PS2)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(78)150 1194 y Fe(PS2)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 -b Fb(73)150 1281 y Fe(PS3)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(78)150 1281 y Fe(PS3)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 -b Fb(83)150 1369 y Fe(PS4)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(88)150 1369 y Fe(PS4)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 -b Fb(83)150 1456 y Fe(PWD)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(88)150 1456 y Fe(PWD)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 -b Fb(83)146 1689 y Fs(R)150 1804 y Fe(RANDOM)6 b Fc(:)15 +b Fb(88)146 1689 y Fs(R)150 1804 y Fe(RANDOM)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)20 b Fb(83)150 1892 y Fe(READLINE_LINE)25 +g(:)g(:)g(:)h(:)f(:)20 b Fb(88)150 1892 y Fe(READLINE_ARGUMENT)12 +b Fc(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(88)150 +1979 y Fe(READLINE_LINE)f Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)37 b Fb(88)150 2066 y Fe(READLINE_MARK)25 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 -b Fb(83)150 1979 y Fe(READLINE_MARK)25 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g +b Fb(88)150 2153 y Fe(READLINE_POINT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(88)150 2240 y Fe(REPLY)9 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(88)150 2327 y +Fe(revert-all-at-newline)17 b Fc(:)h(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 +b Fb(126)146 2560 y Fs(S)150 2676 y Fe(SECONDS)22 b Fc(:)13 +b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)35 b Fb(88)150 2763 y Fe(SHELL)9 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(83)150 2066 y -Fe(READLINE_POINT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)34 b Fb(83)150 2153 y Fe(REPLY)9 b Fc(:)14 +g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(88)150 2851 y Fe(SHELLOPTS)15 +b Fc(:)h(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)30 b Fb(89)150 2938 y Fe(SHLVL)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(83)150 2240 y Fe(revert-all-at-newline) +g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(89)150 3025 y Fe(show-all-if-ambiguous) 17 b Fc(:)h(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(119)146 2473 y Fs(S)150 -2589 y Fe(SECONDS)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(83)150 -2676 y Fe(SHELL)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 -b Fb(83)150 2763 y Fe(SHELLOPTS)15 b Fc(:)h(:)d(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 b Fb(83)150 -2851 y Fe(SHLVL)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 -b Fb(84)150 2938 y Fe(show-all-if-ambiguous)17 b Fc(:)h(:)13 -b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)32 b Fb(119)150 3025 y Fe(show-all-if-unmodified)14 -b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)29 b Fb(119)150 3112 y Fe(show-mode-in-prompt)d -Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(120)2025 260 y -Fe(skip-completed-text)26 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(120)2025 347 y Fe(SRANDOM)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 -b Fb(84)2021 669 y Fs(T)2025 798 y Fe(TEXTDOMAIN)15 b -Fc(:)g(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)30 b Fb(7)2025 889 y Fe(TEXTDOMAINDIR)7 b Fc(:)16 -b(:)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(:)23 -b Fb(7)2025 981 y Fe(TIMEFORMAT)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g +(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(126)150 3112 y Fe +(show-all-if-unmodified)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(126)150 +3199 y Fe(show-mode-in-prompt)d Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 +b Fb(126)2025 260 y Fe(skip-completed-text)26 b Fc(:)13 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(127)2025 347 y Fe(SRANDOM)22 +b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(84)2025 -1072 y Fe(TMOUT)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +g(:)g(:)h(:)f(:)g(:)35 b Fb(89)2021 673 y Fs(T)2025 803 +y Fe(TEXTDOMAIN)15 b Fc(:)g(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(8)2025 895 y Fe(TEXTDOMAINDIR)7 +b Fc(:)16 b(:)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(:) +23 b Fb(8)2025 986 y Fe(TIMEFORMAT)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(89)2025 +1078 y Fe(TMOUT)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 -b Fb(84)2025 1159 y Fe(TMPDIR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(89)2025 1165 y Fe(TMPDIR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(85)2021 1481 y Fs(U)2025 1606 y Fe(UID)14 b Fc(:)f(:)g(:)h(:)f(:)g +b Fb(90)2021 1492 y Fs(U)2025 1617 y Fe(UID)14 b Fc(:)f(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)28 b Fb(85)2021 1928 y Fs(V)2025 2057 +(:)g(:)h(:)f(:)28 b Fb(90)2021 1943 y Fs(V)2025 2073 y Fe(vi-cmd-mode-string)7 b Fc(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 -b Fb(120)2025 2148 y Fe(vi-ins-mode-string)7 b Fc(:)17 +b Fb(127)2025 2165 y Fe(vi-ins-mode-string)7 b Fc(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(120)2025 2235 +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(127)2025 2252 y Fe(visible-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)35 b Fb(120)150 3751 y Fs(D.4)68 b(F)-11 b(unction)44 -b(Index)146 4237 y(A)150 4354 y Fe(abort)27 b(\(C-g\))15 +f(:)g(:)35 b Fb(127)150 3845 y Fs(D.4)68 b(F)-11 b(unction)44 +b(Index)146 4330 y(A)150 4447 y Fe(abort)27 b(\(C-g\))15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 -b Fb(135)150 4442 y Fe(accept-line)e(\(Newline)g(or)e(Return\))12 +b Fb(141)150 4535 y Fe(accept-line)e(\(Newline)g(or)e(Return\))12 b Fc(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)27 -b Fb(128)150 4529 y Fe(alias-expand-line)i(\(\))9 b Fc(:)14 +b Fb(134)150 4622 y Fe(alias-expand-line)i(\(\))9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(137)146 4784 y Fs(B)150 -4902 y Fe(backward-char)29 b(\(C-b\))12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:) +(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(143)146 4873 y Fs(B)150 +4990 y Fe(backward-char)29 b(\(C-b\))12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)26 b Fb(127)150 4989 y Fe(backward-delete-char)k(\(Rubout\))22 +(:)26 b Fb(133)150 5077 y Fe(backward-delete-char)k(\(Rubout\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 -b Fb(130)150 5077 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))e +b Fb(136)150 5165 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))e Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b -Fb(131)150 5165 y Fe(backward-kill-word)30 b(\(M-DEL\))11 +Fb(137)150 5252 y Fe(backward-kill-word)30 b(\(M-DEL\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -26 b Fb(131)150 5252 y Fe(backward-word)j(\(M-b\))12 +26 b Fb(137)150 5340 y Fe(backward-word)j(\(M-b\))12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(127)150 5340 -y Fe(beginning-of-history)k(\(M-<\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(128)2025 -4206 y Fe(beginning-of-line)j(\(C-a\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(133)2025 4300 +y Fe(beginning-of-history)k(\(M-<\))11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(134)2025 +4389 y Fe(beginning-of-line)j(\(C-a\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 -b Fb(127)2025 4294 y Fe(bracketed-paste-begin)c(\(\))16 +b Fb(133)2025 4477 y Fe(bracketed-paste-begin)c(\(\))16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)31 b Fb(130)2021 4589 y Fs(C)2025 4713 y Fe +g(:)g(:)31 b Fb(136)2021 4769 y Fs(C)2025 4893 y Fe (call-last-kbd-macro)f(\(C-x)c(e\))15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(134)2025 4802 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(141)2025 4982 y Fe(capitalize-word)f(\(M-c\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 -b Fb(131)2025 4892 y Fe(character-search)29 b(\(C-]\))22 +b Fb(137)2025 5072 y Fe(character-search)29 b(\(C-]\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)36 b Fb(135)2025 4982 y Fe +(:)h(:)f(:)g(:)g(:)36 b Fb(141)2025 5161 y Fe (character-search-backward)31 b(\(M-C-]\))10 b Fc(:)15 -b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(135)2025 5071 +b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(141)2025 5250 y Fe(clear-display)j(\(M-C-l\))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(:)22 -b Fb(128)2025 5161 y Fe(clear-screen)28 b(\(C-l\))14 +b Fb(134)2025 5340 y Fe(clear-screen)28 b(\(C-l\))14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(128)2025 -5250 y Fe(complete)e(\(TAB\))7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)22 b Fb(133)2025 5340 y Fe(complete-command)29 -b(\(M-!\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(134)p eop end -%%Page: 180 186 -TeXDict begin 180 185 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(180)150 264 y Fe(complete-filename)29 +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(134)p eop +end +%%Page: 187 193 +TeXDict begin 187 192 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(187)150 264 y Fe(complete)27 b(\(TAB\))7 +b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 +b Fb(139)150 352 y Fe(complete-command)29 b(\(M-!\))23 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)36 b Fb(140)150 440 y Fe(complete-filename)29 b(\(M-/\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(133)150 353 y Fe(complete-hostname) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(139)150 528 y Fe(complete-hostname) c(\(M-@\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(134)150 442 y Fe +g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(140)150 616 y Fe (complete-into-braces)d(\(M-{\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(134)150 531 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(140)150 704 y Fe(complete-username)j(\(M-~\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 -b Fb(133)150 621 y Fe(complete-variable)c(\(M-$\))20 +b Fb(140)150 792 y Fe(complete-variable)c(\(M-$\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)33 b Fb(134)150 710 y Fe(copy-backward-word)d(\(\))7 +(:)g(:)h(:)f(:)33 b Fb(140)150 880 y Fe(copy-backward-word)d(\(\))7 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(132)150 799 y Fe(copy-forward-word) +(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(138)150 968 y Fe(copy-forward-word) 29 b(\(\))9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(132)150 -887 y Fe(copy-region-as-kill)30 b(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 -b Fb(132)146 1175 y Fs(D)150 1298 y Fe(dabbrev-expand)29 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(138)150 +1056 y Fe(copy-region-as-kill)30 b(\(\))22 b Fc(:)13 +b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)36 b Fb(138)146 1320 y Fs(D)150 1438 y Fe(dabbrev-expand)29 b(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(134)150 1387 y Fe(delete-char)c(\(C-d\))17 b Fc(:)d(:)f(:)g(:)h(:) +b Fb(140)150 1527 y Fe(delete-char)c(\(C-d\))17 b Fc(:)d(:)f(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)32 b Fb(130)150 1476 y Fe(delete-char-or-list)e +(:)g(:)g(:)g(:)g(:)32 b Fb(136)150 1615 y Fe(delete-char-or-list)e (\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(133)150 1566 y Fe +g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(139)150 1703 y Fe (delete-horizontal-space)31 b(\(\))11 b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(132)150 -1655 y Fe(digit-argument)j(\()p Fd(M-0)p Fe(,)e Fd(M-1)p +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(138)150 +1791 y Fe(digit-argument)j(\()p Fd(M-0)p Fe(,)e Fd(M-1)p Fe(,)f(...)g Fd(M--)p Fe(\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:) -26 b Fb(132)150 1744 y Fe(display-shell-version)k(\(C-x)d(C-v\))c +26 b Fb(138)150 1879 y Fe(display-shell-version)k(\(C-x)d(C-v\))c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b -Fb(136)150 1825 y Fe(do-lowercase-version)30 b(\(M-A,)227 -1912 y(M-B,)c(M-)p Fd(x)p Fe(,)h(...\))10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g +Fb(143)150 1958 y Fe(do-lowercase-version)30 b(\(M-A,)227 +2046 y(M-B,)c(M-)p Fd(x)p Fe(,)h(...\))10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)25 b Fb(135)150 2001 y Fe(downcase-word)k(\(M-l\)) +g(:)g(:)g(:)g(:)g(:)25 b Fb(141)150 2134 y Fe(downcase-word)k(\(M-l\)) 12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(131)150 2090 +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(137)150 2222 y Fe(dump-functions)j(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -32 b Fb(136)150 2180 y Fe(dump-macros)c(\(\))7 b Fc(:)14 +32 b Fb(142)150 2310 y Fe(dump-macros)c(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 -b Fb(136)150 2269 y Fe(dump-variables)29 b(\(\))17 b +b Fb(142)150 2398 y Fe(dump-variables)29 b(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(136)150 -2356 y Fe(dynamic-complete-history)f(\(M-TAB\))13 b Fc(:)i(:)e(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(134)146 2645 y Fs(E)150 -2767 y Fe(edit-and-execute-command)k(\(C-x)c(C-e\))14 -b Fc(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(137)150 2857 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(142)150 +2485 y Fe(dynamic-complete-history)f(\(M-TAB\))13 b Fc(:)i(:)e(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(140)146 2749 y Fs(E)150 +2868 y Fe(edit-and-execute-command)k(\(C-x)c(C-e\))14 +b Fc(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(143)150 2956 y Fe(end-kbd-macro)g(\(C-x)d(\)\))13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 -b Fb(134)150 2946 y Fd(end-of-file)g Fe(\(usually)g(C-d\))21 +b Fb(140)150 3044 y Fd(end-of-file)g Fe(\(usually)g(C-d\))21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)35 b Fb(130)150 3035 y Fe(end-of-history)29 b(\(M->\))9 +(:)g(:)35 b Fb(136)150 3132 y Fe(end-of-history)29 b(\(M->\))9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(128)150 3124 y +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(134)150 3220 y Fe(end-of-line)k(\(C-e\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(127)150 3212 y Fe(exchange-point-and-mark)f(\(C-x)26 +b Fb(133)150 3308 y Fe(exchange-point-and-mark)f(\(C-x)26 b(C-x\))17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(135)146 3500 y Fs(F)150 3623 y Fe(forward-backward-delete-char)g -(\(\))15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 -b Fb(130)150 3712 y Fe(forward-char)e(\(C-f\))14 b Fc(:)h(:)e(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)29 b Fb(127)150 3801 y Fe(forward-search-history)i -(\(C-s\))24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)38 b Fb(128)150 3889 y Fe(forward-word)28 b(\(M-f\))14 -b Fc(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(127)146 4167 -y Fs(G)150 4289 y Fe(glob-complete-word)h(\(M-g\))16 +b Fb(141)146 3571 y Fs(F)150 3690 y Fe(fetch-history)d(\(\))19 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(136)150 +3778 y Fe(forward-backward-delete-char)e(\(\))15 b Fc(:)f(:)f(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(136)150 3867 y Fe(forward-char)e +(\(C-f\))14 b Fc(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b +Fb(133)150 3955 y Fe(forward-search-history)i(\(C-s\))24 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 +b Fb(134)150 4042 y Fe(forward-word)28 b(\(M-f\))14 b +Fc(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(133)146 4295 +y Fs(G)150 4414 y Fe(glob-complete-word)h(\(M-g\))16 b Fc(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)31 b Fb(136)150 4379 y Fe(glob-expand-word)e(\(C-x)e(*\))c +g(:)g(:)31 b Fb(142)150 4502 y Fe(glob-expand-word)e(\(C-x)e(*\))c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)38 b Fb(136)150 4466 y Fe(glob-list-expansions)30 +(:)g(:)g(:)38 b Fb(142)150 4590 y Fe(glob-list-expansions)30 b(\(C-x)d(g\))13 b Fc(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)27 b Fb(136)2021 294 y Fs(H)2025 422 y Fe +(:)g(:)h(:)27 b Fb(142)2021 294 y Fs(H)2025 422 y Fe (history-and-alias-expand-line)32 b(\(\))13 b Fc(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)28 b Fb(137)2025 513 y Fe(history-expand-line)i +g(:)g(:)g(:)g(:)28 b Fb(143)2025 513 y Fe(history-expand-line)i (\(M-^\))13 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)28 b Fb(136)2025 604 y Fe(history-search-backward)j +g(:)g(:)g(:)h(:)28 b Fb(143)2025 604 y Fe(history-search-backward)j (\(\))11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)26 b Fb(129)2025 695 y Fe(history-search-forward)k(\(\))13 +(:)g(:)g(:)26 b Fb(135)2025 695 y Fe(history-search-forward)k(\(\))13 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)28 b Fb(129)2025 786 y Fe(history-substring-search-backw)q(ard)k -(\(\))20 b Fc(:)13 b(:)g(:)g(:)g(:)35 b Fb(129)2025 874 +h(:)28 b Fb(135)2025 786 y Fe(history-substring-search-backw)q(ard)k +(\(\))20 b Fc(:)13 b(:)g(:)g(:)g(:)35 b Fb(135)2025 874 y Fe(history-substring-search-forwa)q(rd)d(\(\))22 b -Fc(:)13 b(:)h(:)f(:)g(:)g(:)37 b Fb(129)2021 1200 y Fs(I)2025 +Fc(:)13 b(:)h(:)f(:)g(:)g(:)37 b Fb(135)2021 1200 y Fs(I)2025 1329 y Fe(insert-comment)29 b(\(M-#\))9 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -24 b Fb(136)2025 1420 y Fe(insert-completions)29 b(\(M-*\))16 +24 b Fb(142)2025 1420 y Fe(insert-completions)29 b(\(M-*\))16 b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)31 b Fb(133)2025 1507 y Fe(insert-last-argument)f(\(M-.)c(or)g +g(:)g(:)31 b Fb(139)2025 1507 y Fe(insert-last-argument)f(\(M-.)c(or)g (M-_\))7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 -b Fb(137)2021 1834 y Fs(K)2025 1962 y Fe(kill-line)27 +b Fb(143)2021 1834 y Fs(K)2025 1962 y Fe(kill-line)27 b(\(C-k\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(131)2025 2053 y Fe(kill-region)28 b(\(\))7 b Fc(:)14 +b Fb(137)2025 2053 y Fe(kill-region)28 b(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 -b Fb(132)2025 2144 y Fe(kill-whole-line)29 b(\(\))14 +b Fb(138)2025 2144 y Fe(kill-whole-line)29 b(\(\))14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(131)2025 +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(137)2025 2231 y Fe(kill-word)e(\(M-d\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)37 b Fb(131)2021 2548 y Fs(M)2025 2676 y +g(:)g(:)g(:)37 b Fb(137)2021 2548 y Fs(M)2025 2676 y Fe(magic-space)28 b(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)22 b Fb(137)2025 2767 y Fe(menu-complete)28 +g(:)g(:)h(:)f(:)22 b Fb(143)2025 2767 y Fe(menu-complete)28 b(\(\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 -b Fb(133)2025 2854 y Fe(menu-complete-backward)c(\(\))13 +b Fb(139)2025 2854 y Fe(menu-complete-backward)c(\(\))13 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)28 b Fb(133)2021 3181 y Fs(N)2025 3309 y Fe(next-history)g(\(C-n\)) +h(:)28 b Fb(139)2021 3181 y Fs(N)2025 3309 y Fe(next-history)g(\(C-n\)) 14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(128)2025 +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(134)2025 3401 y Fe(next-screen-line)g(\(\))12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -27 b Fb(128)2025 3472 y Fe(non-incremental-forward-)2102 +27 b Fb(134)2025 3472 y Fe(non-incremental-forward-)2102 3560 y(search-history)h(\(M-n\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(129)2025 3647 y Fe(non-incremental-reverse-)2102 +b Fb(135)2025 3647 y Fe(non-incremental-reverse-)2102 3734 y(search-history)28 b(\(M-p\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(128)2021 4070 y Fs(O)2025 4198 y Fe(operate-and-get-next)30 +b Fb(134)2021 4070 y Fs(O)2025 4198 y Fe(operate-and-get-next)30 b(\(C-o\))11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)26 b Fb(129)2025 4285 y Fe(overwrite-mode)j(\(\))17 +(:)g(:)g(:)g(:)26 b Fb(135)2025 4285 y Fe(overwrite-mode)j(\(\))17 b Fc(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(131)p +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(137)p eop end -%%Page: 181 187 -TeXDict begin 181 186 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(181)146 294 y Fs(P)150 411 y Fe +%%Page: 188 194 +TeXDict begin 188 193 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(188)146 294 y Fs(P)150 411 y Fe (possible-command-completions)32 b(\(C-x)26 b(!\))9 b -Fc(:)14 b(:)g(:)f(:)g(:)g(:)24 b Fb(134)150 499 y Fe +Fc(:)14 b(:)g(:)f(:)g(:)g(:)24 b Fb(140)150 499 y Fe (possible-completions)30 b(\(M-?\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(133)150 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(139)150 586 y Fe(possible-filename-completions)32 b(\(C-x)27 -b(/\))7 b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(133)150 674 +b(/\))7 b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(140)150 674 y Fe(possible-hostname-completions)32 b(\(C-x)27 b(@\))7 -b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(134)150 762 y Fe +b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(140)150 762 y Fe (possible-username-completions)32 b(\(C-x)27 b(~\))7 -b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(133)150 849 y Fe +b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(140)150 849 y Fe (possible-variable-completions)32 b(\(C-x)27 b($\))7 -b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(134)150 937 y Fe(prefix-meta)28 +b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(140)150 937 y Fe(prefix-meta)28 b(\(ESC\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(135)150 1025 y Fe(previous-history)d(\(C-p\))23 +b Fb(141)150 1025 y Fe(previous-history)d(\(C-p\))23 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)36 b Fb(128)150 1112 y Fe(previous-screen-line)30 +(:)f(:)g(:)g(:)g(:)36 b Fb(134)150 1112 y Fe(previous-screen-line)30 b(\(\))19 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(127)150 1199 y Fe +(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(133)150 1200 y Fe (print-last-kbd-macro)d(\(\))19 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(134)146 -1453 y Fs(Q)150 1570 y Fe(quoted-insert)c(\(C-q)d(or)g(C-v\))8 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(141)146 +1454 y Fs(Q)150 1571 y Fe(quoted-insert)c(\(C-q)d(or)g(C-v\))8 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)22 b Fb(130)146 1824 y Fs(R)150 1941 y Fe(re-read-init-file)29 +(:)g(:)22 b Fb(136)146 1825 y Fs(R)150 1943 y Fe(re-read-init-file)29 b(\(C-x)e(C-r\))15 b Fc(:)f(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)30 b Fb(135)150 2029 y Fe(redraw-current-line)g(\(\))22 +(:)g(:)g(:)g(:)30 b Fb(141)150 2030 y Fe(redraw-current-line)g(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)36 b Fb(128)150 2117 y Fe(reverse-search-history)31 +(:)f(:)g(:)g(:)g(:)36 b Fb(134)150 2118 y Fe(reverse-search-history)31 b(\(C-r\))24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)38 b Fb(128)150 2204 y Fe(revert-line)28 b(\(M-r\))17 +g(:)38 b Fb(134)150 2205 y Fe(revert-line)28 b(\(M-r\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(135)146 -2447 y Fs(S)150 2565 y Fe(self-insert)c(\(a,)e(b,)g(A,)g(1,)h(!,)f +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(141)146 +2449 y Fs(S)150 2567 y Fe(self-insert)c(\(a,)e(b,)g(A,)g(1,)h(!,)f (...\))13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 -b Fb(130)150 2652 y Fe(set-mark)g(\(C-@\))7 b Fc(:)15 +b Fb(136)150 2654 y Fe(set-mark)g(\(C-@\))7 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 -b Fb(135)150 2740 y Fe(shell-backward-kill-word)31 b(\(\))8 +b Fb(141)150 2742 y Fe(shell-backward-kill-word)31 b(\(\))8 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -23 b Fb(131)150 2828 y Fe(shell-backward-word)30 b(\(M-C-b\))8 +23 b Fb(138)150 2830 y Fe(shell-backward-word)30 b(\(M-C-b\))8 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -23 b Fb(127)150 2915 y Fe(shell-expand-line)29 b(\(M-C-e\))13 +23 b Fb(133)150 2917 y Fe(shell-expand-line)29 b(\(M-C-e\))13 b Fc(:)j(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)28 b Fb(136)150 3003 y Fe(shell-forward-word)i(\(M-C-f\))11 +g(:)28 b Fb(143)150 3005 y Fe(shell-forward-word)i(\(M-C-f\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -26 b Fb(127)150 3091 y Fe(shell-kill-word)j(\(M-C-d\))20 +26 b Fb(133)150 3093 y Fe(shell-kill-word)j(\(M-C-d\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)33 b Fb(131)150 3178 y Fe(shell-transpose-words)d +(:)g(:)h(:)f(:)33 b Fb(138)150 3180 y Fe(shell-transpose-words)d (\(M-C-t\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)35 b Fb(132)2025 264 y Fe(skip-csi-sequence)29 b(\(\))9 +(:)35 b Fb(138)2025 264 y Fe(skip-csi-sequence)29 b(\(\))9 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(135)2025 351 y -Fe(start-kbd-macro)29 b(\(C-x)d(\(\))8 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 -b Fb(134)2021 819 y Fs(T)2025 970 y Fe(tilde-expand)28 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(141)2025 361 y +Fe(spell-correct-word)29 b(\(C-x)e(s\))18 b Fc(:)13 b(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33 b Fb(142)2025 +448 y Fe(start-kbd-macro)c(\(C-x)d(\(\))8 b Fc(:)14 b(:)f(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 +b Fb(140)2021 891 y Fs(T)2025 1038 y Fe(tilde-expand)28 b(\(M-&\))14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 -b Fb(135)2025 1068 y Fe(transpose-chars)g(\(C-t\))7 b +b Fb(141)2025 1135 y Fe(transpose-chars)g(\(C-t\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(130)2025 1155 y Fe(transpose-words) +(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(136)2025 1222 y Fe(transpose-words) 29 b(\(M-t\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(130)2021 -1634 y Fs(U)2025 1784 y Fe(undo)k(\(C-_)h(or)f(C-x)g(C-u\))10 +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(137)2021 +1676 y Fs(U)2025 1823 y Fe(undo)k(\(C-_)h(or)f(C-x)g(C-u\))10 b Fc(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(135)2025 1883 y Fe +g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(141)2025 1920 y Fe (universal-argument)k(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 -b Fb(132)2025 1981 y Fe(unix-filename-rubout)30 b(\(\))19 +b Fb(139)2025 2017 y Fe(unix-filename-rubout)30 b(\(\))19 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)34 b Fb(132)2025 2080 y Fe(unix-line-discard)29 +(:)g(:)g(:)g(:)34 b Fb(138)2025 2114 y Fe(unix-line-discard)29 b(\(C-u\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(131)2025 2178 y Fe +f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(137)2025 2211 y Fe (unix-word-rubout)29 b(\(C-w\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 -b Fb(132)2025 2265 y Fe(upcase-word)28 b(\(M-u\))17 b +b Fb(138)2025 2298 y Fe(upcase-word)28 b(\(M-u\))17 b Fc(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(131)2021 -2744 y Fs(Y)2025 2894 y Fe(yank)26 b(\(C-y\))18 b Fc(:)c(:)f(:)g(:)h(:) +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(137)2021 +2752 y Fs(Y)2025 2899 y Fe(yank)26 b(\(C-y\))18 b Fc(:)c(:)f(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 -b Fb(132)2025 2993 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))8 +b Fb(138)2025 2996 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))8 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)22 b Fb(129)2025 3091 y Fe(yank-nth-arg)28 b(\(M-C-y\))9 +(:)h(:)22 b Fb(135)2025 3093 y Fe(yank-nth-arg)28 b(\(M-C-y\))9 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(129)2025 3178 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(135)2025 3180 y Fe(yank-pop)j(\(M-y\))7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)22 b Fb(132)150 3927 y Fs(D.5)68 b(Concept)45 -b(Index)146 4520 y(A)150 4646 y Fb(alias)27 b(expansion)7 -b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 -b Fb(94)150 4736 y(arithmetic)26 b(ev)l(aluation)d Fc(:)13 +g(:)g(:)h(:)f(:)22 b Fb(138)150 3929 y Fs(D.5)68 b(Concept)45 +b(Index)146 4523 y(A)150 4648 y Fb(alias)27 b(expansion)22 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 +b Fb(100)150 4738 y(arithmetic)26 b(ev)l(aluation)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(93)150 4826 y(arithmetic)26 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(98)150 4828 y(arithmetic)26 b(expansion)11 b Fc(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 -b Fb(31)150 4917 y(arithmetic,)h(shell)6 b Fc(:)14 b(:)f(:)g(:)g(:)g(:) +b Fb(34)150 4919 y(arithmetic,)h(shell)6 b Fc(:)14 b(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Fb(93)150 5004 -y(arra)n(ys)h Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(95)2021 -4520 y Fs(B)2025 4644 y Fb(bac)n(kground)13 b Fc(:)f(:)h(:)g(:)g(:)h(:) +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Fb(98)150 5006 +y(arra)n(ys)f Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(100)2021 +4523 y Fs(B)2025 4646 y Fb(bac)n(kground)13 b Fc(:)f(:)h(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(107)2025 -4733 y(Bash)e(con\014guration)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(113)2025 +4735 y(Bash)e(con\014guration)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)26 b Fb(152)2025 4823 y(Bash)g(installation)9 +g(:)g(:)26 b Fb(158)2025 4825 y(Bash)g(installation)9 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 -b Fb(152)2025 4913 y(Bourne)i(shell)20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +b Fb(158)2025 4914 y(Bourne)i(shell)20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35 b -Fb(5)2025 5002 y(brace)26 b(expansion)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:) +Fb(5)2025 5004 y(brace)26 b(expansion)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(23)2025 5089 y(builtin)15 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(24)2025 5091 y(builtin)15 b Fc(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(3)p eop end -%%Page: 182 188 -TeXDict begin 182 187 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(182)146 294 y Fs(C)150 415 y Fb(command)26 +%%Page: 189 195 +TeXDict begin 189 194 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(189)146 294 y Fs(C)150 415 y Fb(command)26 b(editing)19 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34 -b Fb(112)150 503 y(command)26 b(execution)12 b Fc(:)h(:)g(:)g(:)g(:)g +b Fb(118)150 503 y(command)26 b(execution)12 b Fc(:)h(:)g(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)26 b Fb(39)150 592 y(command)g(expansion)c +g(:)h(:)f(:)g(:)g(:)26 b Fb(42)150 592 y(command)g(expansion)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(39)150 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(42)150 681 y(command)26 b(history)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)33 b Fb(146)150 770 y(command)26 b(searc)n(h)16 +g(:)g(:)g(:)33 b Fb(152)150 770 y(command)26 b(searc)n(h)16 b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 -b Fb(39)150 859 y(command)c(substitution)21 b Fc(:)13 +b Fb(42)150 859 y(command)c(substitution)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(31)150 947 y(command)26 -b(timing)13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)28 b Fb(8)150 1036 y(commands,)e(comp)r(ound)c Fc(:)13 +(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(34)150 947 y(command)26 +b(timing)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(:)h(:)f(:)g(:)g(:)25 +b Fb(10)150 1036 y(commands,)h(comp)r(ound)c 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(:)37 b Fb(10)150 1125 y(commands,)26 +(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(11)150 1125 y(commands,)26 b(conditional)10 b Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 -b Fb(11)150 1214 y(commands,)h(grouping)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g +b Fb(12)150 1214 y(commands,)h(grouping)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)29 b Fb(15)150 1302 y(commands,)d(lists)12 -b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)27 -b Fb(9)150 1391 y(commands,)f(lo)r(oping)e Fc(:)13 b(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)37 b Fb(10)150 1480 y(commands,)26 -b(pip)r(elines)18 b Fc(:)c(:)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(:)33 -b Fb(8)150 1569 y(commands,)26 b(shell)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(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(8)150 1657 y(commands,)26 +g(:)g(:)g(:)29 b Fb(17)150 1302 y(commands,)d(lists)10 +b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)24 +b Fb(10)150 1391 y(commands,)i(lo)r(oping)e Fc(:)13 b(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)37 b Fb(11)150 1480 y(commands,)26 +b(pip)r(elines)16 b Fc(:)e(:)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(:)30 +b Fb(10)150 1569 y(commands,)c(shell)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(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(9)150 1657 y(commands,)26 b(simple)e 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(:)38 -b Fb(8)150 1746 y(commen)n(ts,)26 b(shell)13 b Fc(:)i(:)e(:)g(:)g(:)g +b Fb(9)150 1746 y(commen)n(ts,)26 b(shell)13 b Fc(:)i(:)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(:)28 b Fb(7)150 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(9)150 1835 y(Compatibilit)n(y)f(Lev)n(el)10 b Fc(:)j(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)25 b Fb(104)150 1924 y(Compatibilit)n(y)i(Mo)r(de)22 +g(:)g(:)25 b Fb(110)150 1924 y(Compatibilit)n(y)i(Mo)r(de)22 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(:)36 b Fb(104)150 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(110)150 2013 y(completion)27 b(builtins)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)36 b Fb(139)150 2101 y(con\014guration)22 b Fc(:)13 +g(:)g(:)36 b Fb(146)150 2101 y(con\014guration)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 -b Fb(152)150 2190 y(con)n(trol)26 b(op)r(erator)8 b Fc(:)15 +b Fb(158)150 2190 y(con)n(trol)26 b(op)r(erator)8 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(3)150 2277 y(copro)r(cess)18 b Fc(:)c(:)f(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)32 b -Fb(15)146 2553 y Fs(D)150 2672 y Fb(directory)26 b(stac)n(k)11 -b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 -b Fb(97)146 2948 y Fs(E)150 3069 y Fb(editing)g(command)g(lines)17 +Fb(18)146 2553 y Fs(D)150 2672 y Fb(directory)26 b(stac)n(k)9 +b Fc(:)k(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 +b Fb(102)146 2948 y Fs(E)150 3069 y Fb(editing)i(command)g(lines)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(112)150 3158 y(en)n(vironmen)n(t)18 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(118)150 3158 y(en)n(vironmen)n(t)18 b Fc(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)32 b Fb(41)150 3247 y(ev)l(aluation,)26 b(arithmetic)12 +f(:)32 b Fb(44)150 3247 y(ev)l(aluation,)26 b(arithmetic)12 b Fc(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(93)150 3335 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(98)150 3335 y(ev)n(en)n(t)f(designators)c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)34 b Fb(149)150 3424 y(execution)26 b(en)n(vironmen)n(t)17 +g(:)h(:)34 b Fb(155)150 3424 y(execution)26 b(en)n(vironmen)n(t)17 b Fc(:)12 b(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31 b Fb(40)150 3513 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31 b Fb(43)150 3513 y(exit)25 b(status)7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(3,)k(41)150 3602 y(expansion)9 +(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(3,)k(44)150 3602 y(expansion)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)24 b Fb(22)150 3691 y(expansion,)i(arithmetic)18 +g(:)g(:)g(:)g(:)24 b Fb(24)150 3691 y(expansion,)i(arithmetic)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(31)150 3779 +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(34)150 3779 y(expansion,)26 b(brace)16 b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)30 b Fb(23)150 3868 y(expansion,)c(\014lename)18 +f(:)g(:)g(:)30 b Fb(24)150 3868 y(expansion,)c(\014lename)18 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(33)150 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(35)150 3957 y(expansion,)26 b(parameter)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)34 b Fb(25)150 4046 y(expansion,)26 b(pathname)7 +g(:)34 b Fb(26)150 4046 y(expansion,)26 b(pathname)7 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(33)150 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(35)150 4134 y(expansion,)k(tilde)14 b Fc(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)28 b Fb(24)150 4223 y(expressions,)f(arithmetic)13 +h(:)f(:)g(:)g(:)g(:)28 b Fb(25)150 4223 y(expressions,)f(arithmetic)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(93)150 4310 y(expressions,)g +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(98)150 4310 y(expressions,)g (conditional)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(91)2021 -294 y Fs(F)2025 415 y Fb(\014eld)21 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(96)2021 +294 y Fs(F)2025 414 y Fb(\014eld)21 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)36 b Fb(3)2025 504 y(\014lename)21 b Fc(:)14 b(:)f(:)g(:)g(:)g +(:)h(:)36 b Fb(3)2025 503 y(\014lename)21 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(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 -b Fb(3)2025 593 y(\014lename)26 b(expansion)11 b Fc(:)i(:)h(:)f(:)g(:)g +b Fb(3)2025 591 y(\014lename)26 b(expansion)11 b Fc(:)i(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)26 b Fb(33)2025 682 y(foreground)9 +g(:)g(:)h(:)f(:)g(:)g(:)26 b Fb(35)2025 680 y(foreground)9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)24 b Fb(107)2025 769 y(functions,)i(shell)9 b +h(:)f(:)24 b Fb(113)2025 767 y(functions,)i(shell)9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 -b Fb(18)2021 1048 y Fs(H)2025 1170 y Fb(history)h(builtins)20 +b Fb(19)2021 1038 y Fs(H)2025 1158 y Fb(history)h(builtins)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)35 -b Fb(146)2025 1259 y(history)25 b(ev)n(en)n(ts)8 b Fc(:)13 +b Fb(152)2025 1247 y(history)25 b(ev)n(en)n(ts)8 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 -b Fb(149)2025 1347 y(history)i(expansion)14 b Fc(:)g(:)f(:)g(:)g(:)h(:) +b Fb(155)2025 1335 y(history)i(expansion)14 b Fc(:)g(:)f(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(148)2025 1436 y(history)c(list)9 +(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(154)2025 1424 y(history)c(list)9 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)24 b Fb(146)2025 1524 y(History)-6 b(,)25 b(ho)n(w)h(to)g(use) +g(:)g(:)24 b Fb(152)2025 1511 y(History)-6 b(,)25 b(ho)n(w)h(to)g(use) 19 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(145)2021 -1803 y Fs(I)2025 1924 y Fb(iden)n(ti\014er)12 b Fc(:)g(:)h(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(151)2021 +1782 y Fs(I)2025 1903 y Fb(iden)n(ti\014er)12 b Fc(:)g(:)h(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)27 -b Fb(3)2025 2013 y(initialization)h(\014le,)e(readline)17 +b Fb(3)2025 1991 y(initialization)h(\014le,)e(readline)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)32 b Fb(114)2025 2102 y(installation)21 +f(:)g(:)g(:)g(:)32 b Fb(120)2025 2080 y(installation)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)34 b Fb(152)2025 2191 y(in)n(teraction,)26 b(readline)7 +g(:)34 b Fb(158)2025 2168 y(in)n(teraction,)26 b(readline)7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(111)2025 -2280 y(in)n(teractiv)n(e)k(shell)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(117)2025 +2257 y(in)n(teractiv)n(e)k(shell)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)34 b Fb(88,)27 b(89)2025 2367 y(in)n(ternationalization)22 +h(:)f(:)g(:)34 b Fb(93,)27 b(94)2025 2346 y(in)n(ternationalization)22 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 -b Fb(7)2021 2637 y Fs(J)2025 2758 y Fb(job)23 b Fc(:)13 -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(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(3)2025 2845 -y(job)26 b(con)n(trol)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(7)2025 2433 y(in)n(ternationalized)27 b(scripts)13 +b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)28 b Fb(7)2021 2704 y +Fs(J)2025 2824 y Fb(job)23 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(:)31 b Fb(3,)c(107)2021 3124 y Fs(K)2025 -3246 y Fb(kill)f(ring)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(113)2025 -3333 y(killing)k(text)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(113)2021 3612 -y Fs(L)2025 3733 y Fb(lo)r(calization)i Fc(:)13 b(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 -b Fb(7)2025 3821 y(login)26 b(shell)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 -b Fb(88)2021 4100 y Fs(M)2025 4221 y Fb(matc)n(hing,)26 -b(pattern)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 -b Fb(33)2025 4308 y(metac)n(haracter)7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)38 b Fb(3)2025 2911 y(job)26 b(con)n(trol)17 b Fc(:)d(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(3,)c(113)2021 +3183 y Fs(K)2025 3303 y Fb(kill)f(ring)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 +b Fb(119)2025 3390 y(killing)k(text)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(3)p -eop end -%%Page: 183 189 -TeXDict begin 183 188 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(183)146 294 y Fs(N)150 410 y Fb(name)19 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b +Fb(119)2021 3661 y Fs(L)2025 3782 y Fb(lo)r(calization)i +Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)35 b Fb(7)2025 3869 y(login)26 b(shell)6 +b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)21 b Fb(93)2021 4140 y Fs(M)2025 4260 +y Fb(matc)n(hing,)26 b(pattern)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)24 b Fb(36)2025 4347 y(metac)n(haracter)7 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)22 b Fb(3)p eop end +%%Page: 190 196 +TeXDict begin 190 195 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(190)146 294 y Fs(N)150 410 y Fb(name)19 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(3)150 497 @@ -21838,121 +22517,124 @@ y(nativ)n(e)25 b(languages)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g h(:)f(:)g(:)g(:)g(:)34 b Fb(7)150 584 y(notation,)27 b(readline)13 b Fc(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 -b Fb(112)146 828 y Fs(O)150 944 y Fb(op)r(erator,)g(shell)c +b Fb(118)146 826 y Fs(O)150 942 y Fb(op)r(erator,)g(shell)c Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -37 b Fb(3)146 1187 y Fs(P)150 1303 y Fb(parameter)26 +37 b Fb(3)146 1184 y Fs(P)150 1300 y Fb(parameter)26 b(expansion)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 -b Fb(25)150 1390 y(parameters)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g +b Fb(26)150 1388 y(parameters)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(20)150 -1478 y(parameters,)27 b(p)r(ositional)7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(21)150 +1475 y(parameters,)27 b(p)r(ositional)7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)21 b Fb(21)150 1565 y(parameters,)27 b(sp)r(ecial)7 +f(:)g(:)21 b Fb(23)150 1562 y(parameters,)27 b(sp)r(ecial)7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)21 -b Fb(21)150 1652 y(pathname)k(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g +b Fb(23)150 1649 y(pathname)k(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)32 b Fb(33)150 1739 y(pattern)25 b(matc)n(hing)c +h(:)f(:)g(:)32 b Fb(35)150 1736 y(pattern)25 b(matc)n(hing)c Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34 -b Fb(33)150 1827 y(pip)r(eline)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 -b Fb(8)150 1914 y(POSIX)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 -b Fb(3)150 2001 y(POSIX)25 b(Mo)r(de)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:) +b Fb(36)150 1824 y(pip)r(eline)10 b Fc(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 +b Fb(10)150 1911 y(POSIX)e 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(:)38 +b Fb(3)150 1998 y(POSIX)25 b(Mo)r(de)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(101)150 2088 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(106)150 2085 y(pro)r(cess)e(group)15 b Fc(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(3)150 2176 y(pro)r(cess)d(group)e +(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(3)150 2172 y(pro)r(cess)d(group)e (ID)11 b Fc(:)i(:)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(:)g(:)26 -b Fb(3)150 2263 y(pro)r(cess)h(substitution)11 b Fc(:)h(:)i(:)f(:)g(:)g +b Fb(3)150 2259 y(pro)r(cess)h(substitution)11 b Fc(:)h(:)i(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)25 b Fb(32)150 2350 y(programmable)i(completion)8 +g(:)h(:)f(:)g(:)g(:)25 b Fb(34)150 2347 y(programmable)i(completion)8 b Fc(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)23 b Fb(137)150 2437 y(prompting)17 -b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)31 b Fb(98)146 2681 y Fs(Q)150 2797 y Fb(quoting)16 +(:)h(:)f(:)g(:)g(:)23 b Fb(143)150 2434 y(prompting)15 +b Fc(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)30 b Fb(104)146 2676 y Fs(Q)150 2792 y Fb(quoting)16 b Fc(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(6)150 2884 y(quoting,)26 +(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(6)150 2879 y(quoting,)26 b(ANSI)18 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(:)34 b Fb(6)146 3127 y Fs(R)150 3243 y Fb(Readline,)26 +h(:)f(:)g(:)34 b Fb(6)146 3121 y Fs(R)150 3237 y Fb(Readline,)26 b(ho)n(w)g(to)g(use)11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 -b Fb(110)150 3331 y(redirection)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +b Fb(116)150 3325 y(redirection)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fb(35)150 -3418 y(reserv)n(ed)f(w)n(ord)13 b Fc(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fb(38)150 +3412 y(reserv)n(ed)f(w)n(ord)13 b Fc(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(3)150 3505 +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(3)150 3499 y(reserv)n(ed)e(w)n(ords)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(:)30 b Fb(8)150 3592 y(restricted)c(shell)12 +(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(9)150 3586 y(restricted)c(shell)12 b Fc(:)i(:)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(:)27 -b Fb(100)150 3679 y(return)e(status)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g +b Fb(105)150 3673 y(return)e(status)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(4)2021 -294 y Fs(S)2025 430 y Fb(shell)h(arithmetic)17 b Fc(:)d(:)f(:)g(:)g(:)g +294 y Fs(S)2025 427 y Fb(shell)h(arithmetic)17 b Fc(:)d(:)f(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(93)2025 524 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(98)2025 520 y(shell)26 b(function)18 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)32 b Fb(18)2025 617 y(shell)26 +(:)g(:)g(:)g(:)g(:)g(:)h(:)32 b Fb(19)2025 613 y(shell)26 b(script)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(42)2025 711 y(shell)h(v)l(ariable)7 +(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(46)2025 706 y(shell)h(v)l(ariable)7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)22 b Fb(20)2025 805 y(shell,)k(in)n(teractiv)n(e)21 +g(:)22 b Fb(21)2025 798 y(shell,)k(in)n(teractiv)n(e)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34 -b Fb(89)2025 899 y(signal)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g +b Fb(94)2025 891 y(signal)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 -b Fb(4)2025 992 y(signal)f(handling)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g +b Fb(4)2025 984 y(signal)f(handling)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(42)2025 1086 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(45)2025 1077 y(sp)r(ecial)27 b(builtin)16 b Fc(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)31 b Fb(4,)26 b(72)2025 1180 y(startup)f(\014les)10 +g(:)g(:)g(:)g(:)31 b Fb(4,)26 b(77)2025 1170 y(startup)f(\014les)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)25 b Fb(88)2025 1267 y(susp)r(ending)g(jobs)10 -b Fc(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 -b Fb(107)2021 1647 y Fs(T)2025 1783 y Fb(tilde)h(expansion)7 -b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22 -b Fb(24)2025 1877 y(tok)n(en)17 b Fc(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 -b Fb(4)2025 1964 y(translation,)27 b(nativ)n(e)e(languages)c -Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)34 b Fb(7)2021 2344 y Fs(V)2025 2480 y -Fb(v)l(ariable,)26 b(shell)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(20)2025 2567 y(v)l(ariables,)f -(readline)7 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22 -b Fb(115)2021 2947 y Fs(W)2025 3083 y Fb(w)n(ord)10 b +(:)g(:)25 b Fb(93)2025 1262 y(string)h(translations)8 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 +b Fb(7)2025 1350 y(susp)r(ending)i(jobs)10 b Fc(:)k(:)f(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(113)2021 1710 y Fs(T)2025 +1843 y Fb(tilde)h(expansion)7 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Fb(25)2025 1936 y(tok)n(en)17 +b Fc(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(4)2025 2023 +y(translation,)27 b(nativ)n(e)e(languages)c Fc(:)13 b(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34 +b Fb(7)2021 2384 y Fs(V)2025 2517 y Fb(v)l(ariable,)26 +b(shell)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)28 b Fb(21)2025 2604 y(v)l(ariables,)f(readline)7 +b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22 +b Fb(121)2021 2965 y Fs(W)2025 3098 y Fb(w)n(ord)10 b Fc(:)j(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(4)2025 3170 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(4)2025 3185 y(w)n(ord)h(splitting)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(32)2021 3550 y Fs(Y)2025 -3679 y Fb(y)n(anking)h(text)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g +g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(35)2021 3545 y Fs(Y)2025 +3673 y Fb(y)n(anking)h(text)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 b Fb(113)p eop end +g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 b Fb(119)p eop end %%Trailer userdict /end-hook known{end-hook}if diff --git a/doc/bashref.texi b/doc/bashref.texi index 9e23f5867..b0dc2fad1 100644 --- a/doc/bashref.texi +++ b/doc/bashref.texi @@ -14,7 +14,7 @@ This is Edition @value{EDITION}, last updated @value{UPDATED}, of @cite{The GNU Bash Reference Manual}, for @code{Bash}, Version @value{VERSION}. -Copyright @copyright{} 1988--2020 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2022 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -420,12 +420,12 @@ has special meaning to the shell and must be quoted if it is to represent itself. When the command history expansion facilities are being used (@pxref{History Interaction}), the -@var{history expansion} character, usually @samp{!}, must be quoted +@dfn{history expansion} character, usually @samp{!}, must be quoted to prevent history expansion. @xref{Bash History Facilities}, for more details concerning history expansion. There are three quoting mechanisms: the -@var{escape character}, single quotes, and double quotes. +@dfn{escape character}, single quotes, and double quotes. @node Escape Character @subsubsection Escape Character @@ -475,10 +475,11 @@ when in double quotes (@pxref{Shell Parameter Expansion}). @subsubsection ANSI-C Quoting @cindex quoting, ANSI -Words of the form @code{$'@var{string}'} are treated specially. The -word expands to @var{string}, with backslash-escaped characters replaced -as specified by the ANSI C standard. Backslash escape sequences, if -present, are decoded as follows: +Character sequences of the form $'@var{string}' are treated as a special +kind of single quotes. +The sequence expands to @var{string}, with backslash-escaped characters +in @var{string} replaced as specified by the ANSI C standard. +Backslash escape sequences, if present, are decoded as follows: @table @code @item \a @@ -532,30 +533,139 @@ been present. @cindex internationalization @cindex native languages @cindex translation, native languages +@menu +* Creating Internationalized Scripts:: How to use translations and different + languages in your scripts. +@end menu -A double-quoted string preceded by a dollar sign (@samp{$}) +Prefixing a double-quoted string with a dollar sign (@samp{$}), such +as @verb{|$"hello, world"|}, will cause the string to be translated according to the current locale. -The @var{gettext} infrastructure performs the message catalog lookup and -translation, using the @code{LC_MESSAGES} and @code{TEXTDOMAIN} shell -variables, as explained below. See the gettext documentation for additional -details. +The @code{gettext} infrastructure performs the lookup and +translation, using the @code{LC_MESSAGES}, @code{TEXTDOMAINDIR}, +and @code{TEXTDOMAIN} shell variables, as explained below. +See the gettext documentation for additional details not covered here. If the current locale is @code{C} or @code{POSIX}, -or if there are no translations available, +if there are no translations available, +of if the string is not translated, the dollar sign is ignored. -If the string is translated and replaced, the replacement is -double-quoted. +Since this is a form of double quoting, the string remains double-quoted +by default, whether or not it is translated and replaced. +If the @code{noexpand_translation} option is enabled +using the @code{shopt} builtin (@pxref{The Shopt Builtin}), +translated strings are single-quoted instead of double-quoted. + +The rest of this section is a brief overview of how you use gettext to +create translations for strings in a shell script named @var{scriptname}. +There are more details in the gettext documentation. + +@node Creating Internationalized Scripts +@cindex internationalized scripts +@cindex string translations +Once you've marked the strings in your script +that you want to translate using $"...", +you create a gettext "template" file using the command + +@example +bash --dump-po-strings @var{scriptname} > @var{domain}.pot +@end example + +@noindent +The @var{domain} is your @dfn{message domain}. +It's just an arbitrary string that's used to identify the files gettext +needs, like a package or script name. +It needs to be unique among all +the message domains on systems where you install the translations, so +gettext knows which translations correspond to your script. +You'll use the template file to create translations for each target language. +The template file conventionally has the suffix @samp{.pot}. + +You copy this template file to a separate file for each target language +you want to support (called "PO" files, which use the suffix @samp{.po}). +PO files use various naming conventions, but +when you are working to translate a template file into a particular +language, you first copy the template file to a file whose name is the +language you want to target, with the @samp{.po} suffix. +For instance, the Spanish translations of your strings would be +in a file named @samp{es.po}, and to get started using a message +domain named "example," you would run + +@example +cp example.pot es.po +@end example + +@noindent +Ultimately, PO files are often named @var{domain}.po and installed in +directories that contain multiple translation files for a particular language. + +Whichever naming convention you choose, you will need to translate the +strings in the PO files into the appropriate languages. +This has to be done manually. + +When you have the translations and PO files complete, you'll use the +gettext tools to produce what are called "MO" files, which are compiled +versions of the PO files the gettext tools use to look up translations +efficiently. +MO files are also called "message catalog" files. +You use the @command{msgfmt} program to do this. +For instance, if you had a file with Spanish translations, you could run +@example +msgfmt -o es.mo es.po +@end example + +@noindent +to produce the corresponding MO file. + +Once you have the MO files, you decide where to install them and use the +@code{TEXTDOMAINDIR} shell variable to tell the gettext tools where they are. +Make sure to use the same message domain to name the MO files +as you did for the PO files when you install them. + +@vindex LANG @vindex LC_MESSAGES @vindex TEXTDOMAIN @vindex TEXTDOMAINDIR -Some systems use the message catalog selected by the @env{LC_MESSAGES} -shell variable. Others create the name of the message catalog from the -value of the @env{TEXTDOMAIN} shell variable, possibly adding a -suffix of @samp{.mo}. If you use the @env{TEXTDOMAIN} variable, you -may need to set the @env{TEXTDOMAINDIR} variable to the location of -the message catalog files. Still others use both variables in this -fashion: -@env{TEXTDOMAINDIR}/@env{LC_MESSAGES}/LC_MESSAGES/@env{TEXTDOMAIN}.mo. +Your users will use the @env{LANG} or @env{LC_MESSAGES} shell variables to +select the desired language. + +You set the @env{TEXTDOMAIN} variable to the script's message domain. +As above, you use the message domain to name your translation files. + +You, or possibly your users, set the @env{TEXTDOMAINDIR} variable to the +name of a directory where the message catalog files are stored. +If you install the message files into the system's standard message catalog +directory, you don't need to worry about this variable. + +The directory where the message catalog files are stored varies between +systems. +Some use the message catalog selected by the @env{LC_MESSAGES} +shell variable. +Others create the name of the message catalog from the value of the +@env{TEXTDOMAIN} shell variable, possibly adding the @samp{.mo} suffix. +If you use the @env{TEXTDOMAIN} variable, you may need to set the +@env{TEXTDOMAINDIR} variable to the location of the message catalog files, +as above. +It's common to use both variables in this fashion: +@env{$TEXTDOMAINDIR}/@env{$LC_MESSAGES}/LC_MESSAGES/@env{$TEXTDOMAIN}.mo. + +If you used that last convention, and you wanted to store the message +catalog files with Spanish (es) and Esperanto (eo) translations into a +local directory you use for custom translation files, you could run + +@example +TEXTDOMAIN=example +TEXTDOMAINDIR=/usr/local/share/locale + +cp es.mo $@{TEXTDOMAINDIR@}/es/LC_MESSAGES/$@{TEXTDOMAIN@}.mo +cp eo.mo $@{TEXTDOMAINDIR@}/eo/LC_MESSAGES/$@{TEXTDOMAIN@}.mo +@end example + +When all of this is done, and the message catalog files containing the +compiled translations are installed in the correct location, +your users will be able to see translated strings +in any of the supported languages by setting the @env{LANG} or +@env{LC_MESSAGES} environment variables before running your script. @node Comments @subsection Comments @@ -656,15 +766,15 @@ The format for a pipeline is The output of each command in the pipeline is connected via a pipe to the input of the next command. That is, each command reads the previous command's output. This -connection is performed before any redirections specified by the -command. +connection is performed before any redirections specified by +@var{command1}. If @samp{|&} is used, @var{command1}'s standard error, in addition to its standard output, is connected to @var{command2}'s standard input through the pipe; it is shorthand for @code{2>&1 |}. This implicit redirection of the standard error to the standard output is -performed after any redirections specified by the command. +performed after any redirections specified by @var{command1}. The reserved word @code{time} causes timing statistics to be printed for the pipeline once it finishes. @@ -691,11 +801,14 @@ the time information. If the pipeline is not executed asynchronously (@pxref{Lists}), the shell waits for all commands in the pipeline to complete. -Each command in a pipeline is executed in its own subshell, which is a +Each command in a multi-command pipeline, +where pipes are created, +is executed in its own @dfn{subshell}, which is a separate process (@pxref{Command Execution Environment}). If the @code{lastpipe} option is enabled using the @code{shopt} builtin (@pxref{The Shopt Builtin}), -the last element of a pipeline may be run by the shell process. +the last element of a pipeline may be run by the shell process +when job control is not active. The exit status of a pipeline is the exit status of the last command in the @@ -728,8 +841,8 @@ to delimit commands, equivalent to a semicolon. If a command is terminated by the control operator @samp{&}, the shell executes the command asynchronously in a subshell. -This is known as executing the command in the @var{background}, -and these are referred to as @var{asynchronous} commands. +This is known as executing the command in the @dfn{background}, +and these are referred to as @dfn{asynchronous} commands. The shell does not wait for the command to finish, and the return status is 0 (true). When job control is not active (@pxref{Job Control}), @@ -931,9 +1044,10 @@ Each clause must be terminated with @samp{;;}, @samp{;&}, or @samp{;;&}. The @var{word} undergoes tilde expansion, parameter expansion, command substitution, arithmetic expansion, and quote removal (@pxref{Shell Parameter Expansion}) -before matching is -attempted. Each @var{pattern} undergoes tilde expansion, parameter -expansion, command substitution, and arithmetic expansion. +before matching is attempted. +Each @var{pattern} undergoes tilde expansion, parameter expansion, +command substitution, arithmetic expansion, process substitution, and +quote removal. There may be an arbitrary number of @code{case} clauses, each terminated by a @samp{;;}, @samp{;&}, or @samp{;;&}. @@ -982,16 +1096,16 @@ select @var{name} [in @var{words} @dots{}]; do @var{commands}; done @end example The list of words following @code{in} is expanded, generating a list -of items. The set of expanded words is printed on the standard +of items, and the set of expanded words is printed on the standard error output stream, each preceded by a number. If the @samp{in @var{words}} is omitted, the positional parameters are printed, as if @samp{in "$@@"} had been specified. -The @env{PS3} prompt is then displayed and a line is read from the -standard input. +@code{select} then displays the @env{PS3} +prompt and reads a line from the standard input. If the line consists of a number corresponding to one of the displayed words, then the value of @var{name} is set to that word. If the line is empty, the words and prompt are displayed again. -If @code{EOF} is read, the @code{select} command completes. +If @code{EOF} is read, the @code{select} command completes and returns 1. Any other value read causes @var{name} to be set to null. The line read is saved in the variable @env{REPLY}. @@ -1018,13 +1132,13 @@ done The arithmetic @var{expression} is evaluated according to the rules described below (@pxref{Shell Arithmetic}). +The @var{expression} undergoes the same expansions +as if it were within double quotes, +but double quote characters in @var{expression} are not treated specially +are removed. If the value of the expression is non-zero, the return status is 0; -otherwise the return status is 1. This is exactly equivalent to -@example -let "@var{expression}" -@end example -@noindent -@xref{Bash Builtins}, for a full description of the @code{let} builtin. +otherwise the return status is 1. + @item [[@dots{}]] @rwindex [[ @@ -1037,10 +1151,12 @@ Return a status of 0 or 1 depending on the evaluation of the conditional expression @var{expression}. Expressions are composed of the primaries described below in @ref{Bash Conditional Expressions}. -Word splitting and filename expansion are not performed on the words -between the @code{[[} and @code{]]}; tilde expansion, parameter and +The words between the @code{[[} and @code{]]} do not undergo word splitting +and filename expansion. +The shell performs tilde expansion, parameter and variable expansion, arithmetic expansion, command substitution, process -substitution, and quote removal are performed. +substitution, and quote removal on those words +(the expansions that would occur if the words were enclosed in double quotes). Conditional operators such as @samp{-f} must be unquoted to be recognized as primaries. @@ -1058,79 +1174,112 @@ is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches (@samp{==}) or does not match (@samp{!=}) the pattern, and 1 otherwise. -Any part of the pattern may be quoted to force the quoted portion -to be matched as a string. + +If you quote any part of the pattern, +using any of the shell's quoting mechanisms, +the quoted portion is matched literally. +This means every character in the quoted portion matches itself, +instead of having any special pattern matching meaning. An additional binary operator, @samp{=~}, is available, with the same precedence as @samp{==} and @samp{!=}. -When it is used, the string to the right of the operator is considered -a @sc{posix} extended regular expression and matched accordingly +When you use @samp{=~}, the string to the right of the operator is considered +a @sc{posix} extended regular expression pattern and matched accordingly (using the @sc{posix} @code{regcomp} and @code{regexec} interfaces usually described in @i{regex}(3)). -The return value is 0 if the string matches -the pattern, and 1 otherwise. +The return value is 0 if the string matches the pattern, and 1 if it does not. If the regular expression is syntactically incorrect, the conditional -expression's return value is 2. +expression returns 2. If the @code{nocasematch} shell option (see the description of @code{shopt} in @ref{The Shopt Builtin}) is enabled, the match is performed without regard to the case of alphabetic characters. -Any part of the pattern may be quoted to force the quoted portion -to be matched as a string. -Bracket expressions in regular expressions must be treated carefully, -since normal quoting characters lose their meanings between brackets. + +You can quote any part of the pattern +to force the quoted portion to be matched literally +instead of as a regular expression (see above). If the pattern is stored in a shell variable, quoting the variable -expansion forces the entire pattern to be matched as a string. +expansion forces the entire pattern to be matched literally. The pattern will match if it matches any part of the string. -Anchor the pattern using the @samp{^} and @samp{$} regular expression -operators to force it to match the entire string. -The array variable @code{BASH_REMATCH} records which parts of the string -matched the pattern. -The element of @code{BASH_REMATCH} with index 0 contains the portion of -the string matching the entire regular expression. -Substrings matched by parenthesized subexpressions within the regular -expression are saved in the remaining @code{BASH_REMATCH} indices. -The element of @code{BASH_REMATCH} with index @var{n} is the portion of the -string matching the @var{n}th parenthesized subexpression. +If you want to force the pattern to match the entire string, +anchor the pattern using the @samp{^} and @samp{$} regular expression +operators. For example, the following will match a line -(stored in the shell variable @var{line}) +(stored in the shell variable @code{line}) if there is a sequence of characters anywhere in the value consisting of any number, including zero, of characters in the @code{space} character class, -zero or one instances of @samp{a}, then a @samp{b}: +immediately followed by zero or one instances of @samp{a}, +then a @samp{b}: + @example [[ $line =~ [[:space:]]*(a)?b ]] @end example @noindent -That means values like @samp{aab} and @samp{ aaaaaab} will match, as -will a line containing a @samp{b} anywhere in its value. +That means values for @code{line} like +@samp{aab}, @samp{ aaaaaab}, @samp{xaby}, and @samp{ ab} +will all match, +as will a line containing a @samp{b} anywhere in its value. + +If you want to match a character that's special to the regular expression +grammar (@samp{^$|[]()\.*+?}), it has to be quoted to remove its special +meaning. +This means that in the pattern @samp{xxx.txt}, the @samp{.} matches any +character in the string (its usual regular expression meaning), but in the +pattern @samp{"xxx.txt"}, it can only match a literal @samp{.}. + +Likewise, if you want to include a character in your pattern that has a +special meaning to the regular expression grammar, you must make sure it's +not quoted. +If you want to anchor a pattern at the beginning or end of the string, +for instance, you cannot quote the @samp{^} or @samp{$} +characters using any form of shell quoting. + +If you want to match @samp{initial string} at the start of a line, +the following will work: +@example +[[ $line =~ ^"initial string" ]] +@end example +@noindent +but this will not: +@example +[[ $line =~ "^initial string" ]] +@end example +@noindent +because in the second example the @samp{^} is quoted and doesn't have its +usual special meaning. +It is sometimes difficult to specify a regular expression properly +without using quotes, or to keep track of the quoting used by regular +expressions while paying attention to +shell quoting and the shell's quote removal. Storing the regular expression in a shell variable is often a useful way to avoid problems with quoting characters that are special to the shell. -It is sometimes difficult to specify a regular expression literally -without using quotes, or to keep track of the quoting used by regular -expressions while paying attention to the shell's quote removal. -Using a shell variable to store the pattern decreases these problems. -For example, the following is equivalent to the above: +For example, the following is equivalent to the pattern used above: + @example pattern='[[:space:]]*(a)?b' [[ $line =~ $pattern ]] @end example -@noindent -If you want to match a character that's special to the regular expression -grammar, it has to be quoted to remove its special meaning. -This means that in the pattern @samp{xxx.txt}, the @samp{.} matches any -character in the string (its usual regular expression meaning), but in the -pattern @samp{"xxx.txt"} it can only match a literal @samp{.}. -Shell programmers should take special care with backslashes, since backslashes -are used both by the shell and regular expressions to remove the special -meaning from the following character. +Shell programmers should take special care with backslashes, since +backslashes are used by both the shell and regular expressions to remove +the special meaning from the following character. +This means that after the shell's word expansions complete +(@pxref{Shell Expansions}), +any backslashes remaining in parts of the pattern +that were originally not quoted can remove the +special meaning of pattern characters. +If any part of the pattern is quoted, the shell does its best to ensure that +the regular expression treats those remaining backslashes as literal, +if they appeared in a quoted portion. + The following two sets of commands are @emph{not} equivalent: + @example pattern='\.' @@ -1144,12 +1293,53 @@ pattern='\.' @noindent The first two matches will succeed, but the second two will not, because in the second two the backslash will be part of the pattern to be matched. -In the first two examples, the backslash removes the special meaning from +In the first two examples, the pattern passed to the regular expression +parser is @samp{\.}. The backslash removes the special meaning from @samp{.}, so the literal @samp{.} matches. +In the second two examples, the pattern passed to the regular expression +parser has the backslash quoted (e.g., @samp{\\\.}), which will not match +the string, since it does not contain a backslash. If the string in the first examples were anything other than @samp{.}, say @samp{a}, the pattern would not match, because the quoted @samp{.} in the pattern loses its special meaning of matching any single character. +Bracket expressions in regular expressions can be sources of errors as well, +since characters that are normally special in regular expressions +lose their special meanings between brackets. +However, you can use bracket expressions to match special pattern characters +without quoting them, so they are sometimes useful for this purpose. + +Though it might seem like a strange way to write it, the following pattern +will match a @samp{.} in the string: + +@example +[[ . =~ [.] ]] +@end example + +The shell performs any word expansions before passing the pattern +to the regular expression functions, +so you can assume that the shell's quoting takes precedence. +As noted above, the regular expression parser will interpret any +unquoted backslashes remaining in the pattern after shell expansion +according to its own rules. +The intention is to avoid making shell programmers quote things twice +as much as possible, so shell quoting should be sufficient to quote +special pattern characters where that's necessary. + +The array variable @code{BASH_REMATCH} records which parts of the string +matched the pattern. +The element of @code{BASH_REMATCH} with index 0 contains the portion of +the string matching the entire regular expression. +Substrings matched by parenthesized subexpressions within the regular +expression are saved in the remaining @code{BASH_REMATCH} indices. +The element of @code{BASH_REMATCH} with index @var{n} is the portion of the +string matching the @var{n}th parenthesized subexpression. + +Bash sets +@code{BASH_REMATCH} +in the global scope; declaring it as a local variable will lead to +unexpected results. + Expressions may be combined using the following operators, listed in decreasing order of precedence: @@ -1189,11 +1379,11 @@ commands in the list may be redirected to a single stream. ( @var{list} ) @end example -Placing a list of commands between parentheses causes a subshell -environment to be created (@pxref{Command Execution Environment}), and each -of the commands in @var{list} to be executed in that subshell. Since the -@var{list} is executed in a subshell, variable assignments do not remain in -effect after the subshell completes. +Placing a list of commands between parentheses forces the shell to create +a subshell (@pxref{Command Execution Environment}), and each +of the commands in @var{list} is executed in that subshell environment. +Since the @var{list} is executed in a subshell, variable assignments do not +remain in effect after the subshell completes. @item @{@} @rwindex @{ @@ -1209,9 +1399,9 @@ The semicolon (or newline) following @var{list} is required. In addition to the creation of a subshell, there is a subtle difference between these two constructs due to historical reasons. The braces -are @code{reserved words}, so they must be separated from the @var{list} +are reserved words, so they must be separated from the @var{list} by @code{blank}s or other shell metacharacters. -The parentheses are @code{operators}, and are +The parentheses are operators, and are recognized as separate tokens by the shell even if they are not separated from the @var{list} by whitespace. @@ -1228,27 +1418,56 @@ A coprocess is executed asynchronously in a subshell, as if the command had been terminated with the @samp{&} control operator, with a two-way pipe established between the executing shell and the coprocess. -The format for a coprocess is: +The syntax for a coprocess is: + @example coproc [@var{NAME}] @var{command} [@var{redirections}] @end example @noindent This creates a coprocess named @var{NAME}. -If @var{NAME} is not supplied, the default name is @var{COPROC}. -@var{NAME} must not be supplied if @var{command} is a simple -command (@pxref{Simple Commands}); otherwise, it is interpreted as -the first word of the simple command. +@var{command} may be either a simple command (@pxref{Simple Commands}) +or a compound command (@pxref{Compound Commands}). +@var{NAME} is a shell variable name. +If @var{NAME} is not supplied, the default name is @code{COPROC}. + +The recommended form to use for a coprocess is + +@example +coproc @var{NAME} @{ @var{command}; @} +@end example + +@noindent +This form is recommended because simple commands result in the coprocess +always being named @code{COPROC}, and it is simpler to use and more complete +than the other compound commands. + +There are other forms of coprocesses: + +@example +coproc @var{NAME} @var{compound-command} +coproc @var{compound-command} +coproc @var{simple-command} +@end example + +@noindent +If @var{command} is a compound command, @var{NAME} is optional. The +word following @code{coproc} determines whether that word is interpreted +as a variable name: it is interpreted as @var{NAME} if it is not a +reserved word that introduces a compound command. +If @var{command} is a simple command, @var{NAME} is not allowed; this +is to avoid confusion between @var{NAME} and the first word of the simple +command. When the coprocess is executed, the shell creates an array variable (@pxref{Arrays}) -named @env{NAME} in the context of the executing shell. +named @var{NAME} in the context of the executing shell. The standard output of @var{command} is connected via a pipe to a file descriptor in the executing shell, -and that file descriptor is assigned to @env{NAME}[0]. +and that file descriptor is assigned to @var{NAME}[0]. The standard input of @var{command} is connected via a pipe to a file descriptor in the executing shell, -and that file descriptor is assigned to @env{NAME}[1]. +and that file descriptor is assigned to @var{NAME}[1]. This pipe is established before any redirections specified by the command (@pxref{Redirections}). The file descriptors can be utilized as arguments to shell commands @@ -1257,7 +1476,7 @@ Other than those created to execute command and process substitutions, the file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is -available as the value of the variable @env{NAME}_PID. +available as the value of the variable @env{@var{NAME}_PID}. The @code{wait} builtin command may be used to wait for the coprocess to terminate. @@ -1279,117 +1498,9 @@ Parallel provides shorthand references to many of the most common operations the input source, and so on). Parallel can replace @code{xargs} or feed commands from its input sources to several different instances of Bash. -For a complete description, refer to the GNU Parallel documentation. A few -examples should provide a brief introduction to its use. - -For example, it is easy to replace @code{xargs} to gzip all html files in the -current directory and its subdirectories: -@example -find . -type f -name '*.html' -print | parallel gzip -@end example -@noindent -If you need to protect special characters such as newlines in file names, -use find's @option{-print0} option and parallel's @option{-0} option. - -You can use Parallel to move files from the current directory when the -number of files is too large to process with one @code{mv} invocation: -@example -printf '%s\n' * | parallel mv @{@} destdir -@end example - -As you can see, the @{@} is replaced with each line read from standard input. -While using @code{ls} will work in most instances, it is not sufficient to -deal with all filenames. @code{printf} is a shell builtin, and therefore is -not subject to the kernel's limit on the number of arguments to a program, -so you can use @samp{*} (but see below about the @code{dotglob} shell option). -If you need to accommodate special characters in filenames, you can use - -@example -printf '%s\0' * | parallel -0 mv @{@} destdir -@end example - -@noindent -as alluded to above. - -This will run as many @code{mv} commands as there are files in the current -directory. -You can emulate a parallel @code{xargs} by adding the @option{-X} option: -@example -printf '%s\0' * | parallel -0 -X mv @{@} destdir -@end example - -(You may have to modify the pattern if you have the @code{dotglob} option -enabled.) - -GNU Parallel can replace certain common idioms that operate on lines read -from a file (in this case, filenames listed one per line): -@example - while IFS= read -r x; do - do-something1 "$x" "config-$x" - do-something2 < "$x" - done < file | process-output -@end example - -@noindent -with a more compact syntax reminiscent of lambdas: -@example -cat list | parallel "do-something1 @{@} config-@{@} ; do-something2 < @{@}" | - process-output -@end example - -Parallel provides a built-in mechanism to remove filename extensions, which -lends itself to batch file transformations or renaming: -@example -ls *.gz | parallel -j+0 "zcat @{@} | bzip2 >@{.@}.bz2 && rm @{@}" -@end example -@noindent -This will recompress all files in the current directory with names ending -in .gz using bzip2, running one job per CPU (-j+0) in parallel. -(We use @code{ls} for brevity here; using @code{find} as above is more -robust in the face of filenames containing unexpected characters.) -Parallel can take arguments from the command line; the above can also be -written as - -@example -parallel "zcat @{@} | bzip2 >@{.@}.bz2 && rm @{@}" ::: *.gz -@end example - -If a command generates output, you may want to preserve the input order in -the output. For instance, the following command -@example -@{ - echo foss.org.my ; - echo debian.org ; - echo freenetproject.org ; -@} | parallel traceroute -@end example -@noindent -will display as output the traceroute invocation that finishes first. -Adding the @option{-k} option -@example -@{ - echo foss.org.my ; - echo debian.org ; - echo freenetproject.org ; -@} | parallel -k traceroute -@end example -@noindent -will ensure that the output of @code{traceroute foss.org.my} is displayed first. - -Finally, Parallel can be used to run a sequence of shell commands in parallel, -similar to @samp{cat file | bash}. -It is not uncommon to take a list of filenames, create a series of shell -commands to operate on them, and feed that list of commands to a shell. -Parallel can speed this up. Assuming that @file{file} contains a list of -shell commands, one per line, - -@example -parallel -j 10 < file -@end example - -@noindent -will evaluate the commands using the shell (since no explicit command is -supplied as an argument), in blocks of ten shell jobs at a time. +For a complete description, refer to the GNU Parallel documentation, which +is available at +@url{https://www.gnu.org/software/parallel/parallel_tutorial.html}. @node Shell Functions @section Shell Functions @@ -1420,16 +1531,16 @@ This defines a shell function named @var{fname}. The reserved word @code{function} is optional. If the @code{function} reserved word is supplied, the parentheses are optional. -The @var{body} of the function is the compound command +The @dfn{body} of the function is the compound command @var{compound-command} (@pxref{Compound Commands}). That command is usually a @var{list} enclosed between @{ and @}, but -may be any compound command listed above, -with one exception: If the @code{function} reserved word is used, but the -parentheses are not supplied, the braces are required. +may be any compound command listed above. +If the @code{function} reserved word is used, but the +parentheses are not supplied, the braces are recommended. @var{compound-command} is executed whenever @var{fname} is specified as the -name of a command. +name of a simple command. When the shell is in @sc{posix} mode (@pxref{Bash POSIX Mode}), -@var{fname} must be a valid shell @var{name} and +@var{fname} must be a valid shell name and may not be the same as one of the special builtins (@pxref{Special Builtins}). In default mode, a function name can be any unquoted shell word that does @@ -1496,17 +1607,29 @@ return status is the exit status of the last command executed before the @code{return}. Variables local to the function may be declared with the -@code{local} builtin. These variables are visible only to +@code{local} builtin (@dfn{local variables}). +Ordinarily, variables and their values +are shared between a function and its caller. +These variables are visible only to the function and the commands it invokes. This is particularly important when a shell function calls other functions. +In the following description, the @dfn{current scope} is a currently- +executing function. +Previous scopes consist of that function's caller and so on, +back to the "global" scope, where the shell is not executing +any shell function. +Consequently, a local variable at the current local scope is a variable +declared using the @code{local} or @code{declare} builtins in the +function that is currently executing. + Local variables "shadow" variables with the same name declared at previous scopes. For instance, a local variable declared in a function hides a global variable of the same name: references and assignments refer to the local variable, leaving the global variable unmodified. When the function returns, the global variable is once again visible. -The shell uses @var{dynamic scoping} to control a variable's visibility +The shell uses @dfn{dynamic scoping} to control a variable's visibility within functions. With dynamic scoping, visible variables and their values are a result of the sequence of function calls that caused execution @@ -1518,11 +1641,11 @@ This is also the value that a local variable declaration "shadows", and the value that is restored when the function returns. -For example, if a variable @var{var} is declared as local in function -@var{func1}, and @var{func1} calls another function @var{func2}, -references to @var{var} made from within @var{func2} will resolve to the -local variable @var{var} from @var{func1}, shadowing any global variable -named @var{var}. +For example, if a variable @env{var} is declared as local in function +@code{func1}, and @code{func1} calls another function @code{func2}, +references to @env{var} made from within @code{func2} will resolve to the +local variable @env{var} from @code{func1}, shadowing any global variable +named @env{var}. The following script demonstrates this behavior. When executed, the script displays @@ -1552,11 +1675,13 @@ variable is local to the current scope, @code{unset} will unset it; otherwise the unset will refer to the variable found in any calling scope as described above. If a variable at the current local scope is unset, it will remain so +(appearing as unset) until it is reset in that scope or until the function returns. Once the function returns, any instance of the variable at a previous scope will become visible. If the unset acts on a variable at a previous scope, any instance of a -variable with that name that had been shadowed will become visible. +variable with that name that had been shadowed will become visible +(see below how @code{localvar_unset}shell option changes this behavior). Function names and definitions may be listed with the @option{-f} option to the @code{declare} (@code{typeset}) @@ -1565,7 +1690,8 @@ The @option{-F} option to @code{declare} or @code{typeset} will list the function names only (and optionally the source file and line number, if the @code{extdebug} shell option is enabled). -Functions may be exported so that subshells +Functions may be exported so that child shell processes +(those created when executing a separate shell invocation) automatically have them defined with the @option{-f} option to the @code{export} builtin (@pxref{Bourne Shell Builtins}). @@ -1586,11 +1712,11 @@ By default, no limit is placed on the number of recursive calls. * Special Parameters:: Parameters denoted by special characters. @end menu -A @var{parameter} is an entity that stores values. +A @dfn{parameter} is an entity that stores values. It can be a @code{name}, a number, or one of the special characters listed below. -A @var{variable} is a parameter denoted by a @code{name}. -A variable has a @var{value} and zero or more @var{attributes}. +A @dfn{variable} is a parameter denoted by a @code{name}. +A variable has a @code{value} and zero or more @code{attributes}. Attributes are assigned using the @code{declare} builtin command (see the description of the @code{declare} builtin in @ref{Bash Builtins}). @@ -1607,17 +1733,16 @@ If @var{value} is not given, the variable is assigned the null string. All @var{value}s undergo tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote -removal (detailed below). If the variable has its @code{integer} +removal (@pxref{Shell Parameter Expansion}). +If the variable has its @code{integer} attribute set, then @var{value} is evaluated as an arithmetic expression even if the @code{$((@dots{}))} expansion is not used (@pxref{Arithmetic Expansion}). -Word splitting is not performed, with the exception -of @code{"$@@"} as explained below. -Filename expansion is not performed. +Word splitting and filename expansion are not performed. Assignment statements may also appear as arguments to the @code{alias}, @code{declare}, @code{typeset}, @code{export}, @code{readonly}, -and @code{local} builtin commands (@var{declaration} commands). +and @code{local} builtin commands (@dfn{declaration} commands). When in @sc{posix} mode (@pxref{Bash POSIX Mode}), these builtins may appear in a command after one or more instances of the @code{command} builtin and retain these assignment statement properties. @@ -1627,8 +1752,8 @@ to a shell variable or array index (@pxref{Arrays}), the @samp{+=} operator can be used to append to or add to the variable's previous value. This includes arguments to builtin commands such as @code{declare} that -accept assignment statements (@var{declaration} commands). -When @samp{+=} is applied to a variable for which the @var{integer} attribute +accept assignment statements (declaration commands). +When @samp{+=} is applied to a variable for which the @code{integer} attribute has been set, @var{value} is evaluated as an arithmetic expression and added to the variable's current value, which is also evaluated. When @samp{+=} is applied to an array variable using compound assignment @@ -1640,10 +1765,10 @@ in an associative array. When applied to a string-valued variable, @var{value} is expanded and appended to the variable's value. -A variable can be assigned the @var{nameref} attribute using the +A variable can be assigned the @code{nameref} attribute using the @option{-n} option to the @code{declare} or @code{local} builtin commands (@pxref{Bash Builtins}) -to create a @var{nameref}, or a reference to another variable. +to create a @dfn{nameref}, or a reference to another variable. This allows variables to be manipulated indirectly. Whenever the nameref variable is referenced, assigned to, unset, or has its attributes modified (other than using or changing the nameref @@ -1658,9 +1783,9 @@ argument, running declare -n ref=$1 @end example @noindent -inside the function creates a nameref variable @var{ref} whose value is +inside the function creates a nameref variable @env{ref} whose value is the variable name passed as the first argument. -References and assignments to @var{ref}, and changes to its attributes, +References and assignments to @env{ref}, and changes to its attributes, are treated as references, assignments, and attribute modifications to the variable whose name was passed as @code{$1}. @@ -1680,7 +1805,7 @@ as an argument, the variable referenced by the nameref variable will be unset. @subsection Positional Parameters @cindex parameters, positional -A @var{positional parameter} is a parameter denoted by one or more +A @dfn{positional parameter} is a parameter denoted by one or more digits, other than the single digit @code{0}. Positional parameters are assigned from the shell's arguments when it is invoked, and may be reassigned using the @code{set} builtin command. @@ -1762,7 +1887,7 @@ builtin command, or those set by the shell itself @item $ @vindex $$ -($$) Expands to the process @sc{id} of the shell. In a @code{()} subshell, it +($$) Expands to the process @sc{id} of the shell. In a subshell, it expands to the process @sc{id} of the invoking shell, not the subshell. @item ! @@ -1822,14 +1947,14 @@ word splitting; and filename expansion. On systems that can support it, there is an additional expansion -available: @var{process substitution}. +available: @dfn{process substitution}. This is performed at the same time as tilde, parameter, variable, and arithmetic expansion and command substitution. After these expansions are performed, quote characters present in the original word are removed unless they have been quoted themselves -(@var{quote removal}). +(@dfn{quote removal}). Only brace expansion, word splitting, and filename expansion can increase the number of words of the expansion; other expansions @@ -1849,7 +1974,7 @@ is performed. Brace expansion is a mechanism by which arbitrary strings may be generated. This mechanism is similar to -@var{filename expansion} (@pxref{Filename Expansion}), +@dfn{filename expansion} (@pxref{Filename Expansion}), but the filenames generated need not exist. Patterns to be brace expanded take the form of an optional @var{preamble}, followed by either a series of comma-separated strings or a sequence expression @@ -1869,7 +1994,7 @@ ade ace abe @end example A sequence expression takes the form @code{@{@var{x}..@var{y}[..@var{incr}]@}}, -where @var{x} and @var{y} are either integers or single characters, +where @var{x} and @var{y} are either integers or letters, and @var{incr}, an optional increment, is an integer. When integers are supplied, the expression expands to each number between @var{x} and @var{y}, inclusive. @@ -1878,10 +2003,11 @@ same width. When either @var{x} or @var{y} begins with a zero, the shell attempts to force all generated terms to contain the same number of digits, zero-padding where necessary. -When characters are supplied, the expression expands to each character +When letters are supplied, the expression expands to each character lexicographically between @var{x} and @var{y}, inclusive, using the default C locale. -Note that both @var{x} and @var{y} must be of the same type. +Note that both @var{x} and @var{y} must be of the same type +(integer or letter). When the increment is supplied, it is used as the difference between each term. The default increment is 1 or -1 as appropriate. @@ -1920,10 +2046,10 @@ chown root /usr/@{ucb/@{ex,edit@},lib/@{ex?.?*,how_ex@}@} If a word begins with an unquoted tilde character (@samp{~}), all of the characters up to the first unquoted slash (or all characters, -if there is no unquoted slash) are considered a @var{tilde-prefix}. +if there is no unquoted slash) are considered a @dfn{tilde-prefix}. 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 @var{login name}. +possible @dfn{login name}. If this login name is the null string, the tilde is replaced with the value of the @env{HOME} shell variable. If @env{HOME} is unset, the home directory of the user executing the @@ -1986,7 +2112,7 @@ The string that would be displayed by @samp{dirs -@var{N}} Bash also performs tilde expansion on words satisfying the conditions of variable assignments (@pxref{Shell Parameters}) when they appear as arguments to simple commands. -Bash does not do this, except for the @var{declaration} commands listed +Bash does not do this, except for the declaration commands listed above, when in @sc{posix} mode. @node Shell Parameter Expansion @@ -2016,7 +2142,7 @@ or when @var{parameter} is followed by a character that is not to be interpreted as part of its name. If the first character of @var{parameter} is an exclamation point (!), -and @var{parameter} is not a @var{nameref}, +and @var{parameter} is not a nameref, it introduces a level of indirection. Bash uses the value formed by expanding the rest of @var{parameter} as the new @var{parameter}; this is then @@ -2051,6 +2177,12 @@ If @var{parameter} is unset or null, the expansion of @var{word} is substituted. Otherwise, the value of @var{parameter} is substituted. +@example +$ v=123 +$ echo $@{v-unset@} +123 +@end example + @item $@{@var{parameter}:=@var{word}@} If @var{parameter} is unset or null, the expansion of @var{word} @@ -2059,6 +2191,13 @@ The value of @var{parameter} is then substituted. Positional parameters and special parameters may not be assigned to in this way. +@example +$ var= +$ : $@{var:=DEFAULT@} +$ echo $var +DEFAULT +@end example + @item $@{@var{parameter}:?@var{word}@} If @var{parameter} is null or unset, the expansion of @var{word} (or a message @@ -2067,17 +2206,29 @@ is not present) is written to the standard error and the shell, if it is not interactive, exits. Otherwise, the value of @var{parameter} is substituted. +@example +$ var= +$ : $@{var:?var is unset or null@} +bash: var: var is unset or null +@end example + @item $@{@var{parameter}:+@var{word}@} If @var{parameter} is null or unset, nothing is substituted, otherwise the expansion of @var{word} is substituted. +@example +$ var=123 +$ echo $@{var:+var is set and not null@} +var is set and not null +@end example + @item $@{@var{parameter}:@var{offset}@} @itemx $@{@var{parameter}:@var{offset}:@var{length}@} This is referred to as Substring Expansion. It expands to up to @var{length} characters of the value of @var{parameter} starting at the character specified by @var{offset}. -If @var{parameter} is @samp{@@}, an indexed array subscripted by +If @var{parameter} is @samp{@@} or @samp{*}, an indexed array subscripted by @samp{@@} or @samp{*}, or an associative array name, the results differ as described below. If @var{length} is omitted, it expands to the substring of the value of @@ -2154,8 +2305,8 @@ $ echo ${array[0]: -7:-2} bcdef @end verbatim -If @var{parameter} is @samp{@@}, the result is @var{length} positional -parameters beginning at @var{offset}. +If @var{parameter} is @samp{@@} or @samp{*}, the result is @var{length} +positional parameters beginning at @var{offset}. A negative @var{offset} is taken relative to one greater than the greatest positional parameter, so an offset of -1 evaluates to the last positional parameter. @@ -2284,21 +2435,100 @@ the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list. @item $@{@var{parameter}/@var{pattern}/@var{string}@} - +@itemx $@{@var{parameter}//@var{pattern}/@var{string}@} +@itemx $@{@var{parameter}/#@var{pattern}/@var{string}@} +@itemx $@{@var{parameter}/%@var{pattern}/@var{string}@} The @var{pattern} is expanded to produce a pattern just as in filename expansion. @var{Parameter} is expanded and the longest match of @var{pattern} against its value is replaced with @var{string}. +@var{string} undergoes tilde expansion, parameter and variable expansion, +arithmetic expansion, command and process substitution, and quote removal. The match is performed according to the rules described below (@pxref{Pattern Matching}). -If @var{pattern} begins with @samp{/}, all matches of @var{pattern} are -replaced with @var{string}. Normally only the first match is replaced. -If @var{pattern} begins with @samp{#}, it must match at the beginning -of the expanded value of @var{parameter}. -If @var{pattern} begins with @samp{%}, it must match at the end -of the expanded value of @var{parameter}. -If @var{string} is null, matches of @var{pattern} are deleted -and the @code{/} following @var{pattern} may be omitted. + +In the first form above, only the first match is replaced. +If there are two slashes separating @var{parameter} and @var{pattern} +(the second form above), all matches of @var{pattern} are +replaced with @var{string}. +If @var{pattern} is preceded by @samp{#} (the third form above), +it must match at the beginning of the expanded value of @var{parameter}. +If @var{pattern} is preceded by @samp{%} (the fourth form above), +it must match at the end of the expanded value of @var{parameter}. +If the expansion of @var{string} is null, +matches of @var{pattern} are deleted. +If @var{string} is null, +matches of @var{pattern} are deleted +and the @samp{/} following @var{pattern} may be omitted. + +If the @code{patsub_replacement} shell option is enabled using @code{shopt}, +any unquoted instances of @samp{&} in @var{string} are replaced with the +matching portion of @var{pattern}. +This is intended to duplicate a common @code{sed} idiom. + +Quoting any part of @var{string} inhibits replacement in the +expansion of the quoted portion, including replacement strings stored +in shell variables. +Backslash will escape @samp{&} in @var{string}; the backslash is removed +in order to permit a literal @samp{&} in the replacement string. +Users should take care if @var{string} is double-quoted to avoid +unwanted interactions between the backslash and double-quoting, since +backslash has special meaning within double quotes. +Pattern substitution performs the check for unquoted @samp{&} after +expanding @var{string}, +so users should ensure to properly quote any occurrences of @samp{&} +they want to be taken literally in the replacement +and ensure any instances of @samp{&} they want to be replaced are unquoted. + +For instance, + +@example +var=abcdef +rep='& ' +echo $@{var/abc/& @} +echo "$@{var/abc/& @}" +echo $@{var/abc/$rep@} +echo "$@{var/abc/$rep@}" +@end example + +@noindent +will display four lines of "abc def", while + +@example +var=abcdef +rep='& ' +echo $@{var/abc/\& @} +echo "$@{var/abc/\& @}" +echo $@{var/abc/"& "@} +echo $@{var/abc/"$rep"@} +@end example + +@noindent +will display four lines of "& def". +Like the pattern removal operators, double quotes surrounding the +replacement string quote the expanded characters, while double quotes +enclosing the entire parameter substitution do not, since +the expansion is performed in a +context that doesn't take any enclosing double quotes into account. + +Since backslash can escape @samp{&}, it can also escape a backslash in +the replacement string. +This means that @samp{\\} will insert a literal +backslash into the replacement, so these two @code{echo} commands + +@example +var=abcdef +rep='\\&xyz' +echo $@{var/abc/\\&xyz@} +echo $@{var/abc/$rep@} +@end example + +@noindent +will both output @samp{\abcxyzdef}. + +It should rarely be necessary to enclose only @var{string} in double +quotes. + If the @code{nocasematch} shell option (see the description of @code{shopt} in @ref{The Shopt Builtin}) is enabled, the match is performed without regard to the case @@ -2321,6 +2551,7 @@ filename expansion. Each character in the expanded value of @var{parameter} is tested against @var{pattern}, and, if it matches the pattern, its case is converted. The pattern should not attempt to match more than one character. + The @samp{^} operator converts lowercase letters matching @var{pattern} to uppercase; the @samp{,} operator converts matching uppercase letters to lowercase. @@ -2329,6 +2560,7 @@ expanded value; the @samp{^} and @samp{,} expansions match and convert only the first character in the expanded value. If @var{pattern} is omitted, it is treated like a @samp{?}, which matches every character. + If @var{parameter} is @samp{@@} or @samp{*}, the case modification operation is applied to each positional parameter in turn, and the expansion is the resultant list. @@ -2373,6 +2605,9 @@ indexed and associative arrays as a sequence of quoted key-value pairs @item a The expansion is a string consisting of flag values representing @var{parameter}'s attributes. +@item k +Like the @samp{K} transformation, but expands the keys and values of +indexed and associative arrays to separate words after word splitting. @end table If @var{parameter} is @samp{@@} or @samp{*}, @@ -2438,8 +2673,10 @@ and the substitution of the result. The format for arithmetic expansion is: $(( @var{expression} )) @end example -The expression is treated as if it were within double quotes, but -a double quote inside the parentheses is not treated specially. +The @var{expression} undergoes the same expansions +as if it were within double quotes, +but double quote characters in @var{expression} are not treated specially +and are removed. All tokens in the expression undergo parameter and variable expansion, command substitution, and quote removal. The result is treated as the arithmetic expression to be evaluated. @@ -2559,9 +2796,13 @@ without regard to the case of alphabetic characters. When a pattern is used for filename expansion, the character @samp{.} at the start of a filename or immediately following a slash must be matched explicitly, unless the shell option @code{dotglob} is set. -The filenames @samp{.} and @samp{..} must always be matched explicitly, +In order to match the filenames @samp{.} and @samp{..}, +the pattern must begin with @samp{.} (for example, @samp{.?}), even if @code{dotglob} is set. -In other cases, the @samp{.} character is not treated specially. +If the @code{globskipdots} shell option is enabled, the filenames +@samp{.} and @samp{..} are never matched, even if the pattern begins +with a @samp{.}. +When not matching filenames, the @samp{.} character is not treated specially. When matching a filename, the slash character must always be matched explicitly by a slash in the pattern, but in other matching @@ -2570,6 +2811,7 @@ below (@pxref{Pattern Matching}). See the description of @code{shopt} in @ref{The Shopt Builtin}, for a description of the @code{nocaseglob}, @code{nullglob}, +@code{globskipdots}, @code{failglob}, and @code{dotglob} options. The @env{GLOBIGNORE} @@ -2628,20 +2870,22 @@ then any character not enclosed is matched. A @samp{@minus{}} may be matched by including it as the first or last character in the set. A @samp{]} may be matched by including it as the first character in the set. -The sorting order of characters in range expressions is determined by +The sorting order of characters in range expressions, +and the characters included in the range, +are determined by the current locale and the values of the @env{LC_COLLATE} and @env{LC_ALL} shell variables, if set. For example, in the default C locale, @samp{[a-dx-z]} is equivalent to @samp{[abcdxyz]}. Many locales sort characters in dictionary order, and in these locales @samp{[a-dx-z]} is typically not equivalent to @samp{[abcdxyz]}; -it might be equivalent to @samp{[aBbCcDdxXyYz]}, for example. To obtain +it might be equivalent to @samp{[aBbCcDdxYyZz]}, for example. To obtain the traditional interpretation of ranges in bracket expressions, you can force the use of the C locale by setting the @env{LC_COLLATE} or @env{LC_ALL} environment variable to the value @samp{C}, or enable the @code{globasciiranges} shell option. -Within @samp{[} and @samp{]}, @var{character classes} can be specified +Within @samp{[} and @samp{]}, @dfn{character classes} can be specified using the syntax @code{[:}@var{class}@code{:]}, where @var{class} is one of the following classes defined in the @sc{posix} standard: @@ -2654,7 +2898,7 @@ A character class matches any character belonging to that class. The @code{word} character class matches letters, digits, and the character @samp{_}. -Within @samp{[} and @samp{]}, an @var{equivalence class} can be +Within @samp{[} and @samp{]}, an @dfn{equivalence class} can be specified using the syntax @code{[=}@var{c}@code{=]}, which matches all characters with the same collation weight (as defined by the current locale) as the character @var{c}. @@ -2664,9 +2908,11 @@ matches the collating symbol @var{symbol}. @end table If the @code{extglob} shell option is enabled using the @code{shopt} -builtin, several extended pattern matching operators are recognized. +builtin, the shell recognizes several extended pattern matching operators. In the following description, a @var{pattern-list} is a list of one or more patterns separated by a @samp{|}. +When matching filenames, the @code{dotglob} shell option determines +the set of filenames that are tested, as described above. Composite patterns may be formed using one or more of the following sub-patterns: @@ -2687,6 +2933,23 @@ Matches one of the given patterns. Matches anything except one of the given patterns. @end table +The @code{extglob} option changes the behavior of the parser, since the +parentheses are normally treated as operators with syntactic meaning. +To ensure that extended matching patterns are parsed correctly, make sure +that @code{extglob} is enabled before parsing constructs containing the +patterns, including shell functions and command substitutions. + +When matching filenames, the @code{dotglob} shell option determines +the set of filenames that are tested: +when @code{dotglob} is enabled, the set of filenames includes all files +beginning with @samp{.}, but the filenames +@samp{.} and @samp{..} must be matched by a +pattern or sub-pattern that begins with a dot; +when it is disabled, the set does not +include any filenames beginning with ``.'' unless the pattern +or sub-pattern begins with a @samp{.}. +As above, @samp{.} only has a special meaning when matching filenames. + Complicated extended pattern matching against long strings is slow, especially when the patterns contain alternations and the strings contain multiple matches. @@ -2705,9 +2968,9 @@ result from one of the above expansions are removed. @cindex redirection Before a command is executed, its input and output -may be @var{redirected} +may be @dfn{redirected} using a special notation interpreted by the shell. -Redirection allows commands' file handles to be +@dfn{Redirection} allows commands' file handles to be duplicated, opened, closed, made to refer to different files, and can change the files the command reads from and writes to. @@ -2728,6 +2991,8 @@ descriptor to close. If @{@var{varname}@} is supplied, the redirection persists beyond the scope of the command, allowing the shell programmer to manage the file descriptor's lifetime manually. +The @code{varredir_close} shell option manages this behavior +(@pxref{The Shopt Builtin}). In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is @@ -3040,7 +3305,11 @@ and quote removal before being assigned to the variable. @end enumerate If no command name results, the variable assignments affect the current -shell environment. Otherwise, the variables are added to the environment +shell environment. +In the case of such a command (one that consists only of assignment +statements and redirections), assignment statements are performed before +redirections. +Otherwise, the variables are added to the environment of the executed command and do not affect the current shell environment. 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. @@ -3103,7 +3372,7 @@ to the command are set to the arguments supplied, if any. @item 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 -@var{shell script} and the shell executes it as described in +@dfn{shell script} and the shell executes it as described in @ref{Shell Scripts}. @item @@ -3116,7 +3385,7 @@ the command to complete and collects its exit status. @subsection Command Execution Environment @cindex execution environment -The shell has an @var{execution environment}, which consists of the +The shell has an @dfn{execution environment}, which consists of the following: @itemize @bullet @@ -3190,6 +3459,8 @@ shell's parent, and traps ignored by the shell are ignored A command invoked in this separate environment cannot affect the shell's execution environment. +A @dfn{subshell} is a copy of the shell process. + Command substitution, commands grouped with parentheses, and asynchronous commands are invoked in a subshell environment that is a duplicate of the shell environment, @@ -3213,13 +3484,13 @@ shell as modified by redirections. @cindex environment When a program is invoked it is given an array of strings -called the @var{environment}. +called the @dfn{environment}. This is a list of name-value pairs, of the form @code{name=value}. Bash 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 @var{export} +it for @code{export} to child processes. Executed commands inherit the environment. The @code{export} and @samp{declare -x} commands allow parameters and functions to be added to and @@ -3251,7 +3522,7 @@ command in its environment. @cindex exit status The exit status of an executed command is the value returned by the -@var{waitpid} system call or equivalent function. Exit statuses +@code{waitpid} system call or equivalent function. Exit statuses fall between 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 @@ -3284,6 +3555,9 @@ conditional and list constructs. All builtins return an exit status of 2 to indicate incorrect usage, generally invalid options or missing arguments. +The exit status of the last command is available in the special +parameter $? (@pxref{Special Parameters}). + @node Signals @subsection Signals @cindex signal handling @@ -3330,6 +3604,37 @@ which a trap has been set will cause the @code{wait} builtin to return immediately with an exit status greater than 128, immediately after which the trap is executed. +When job control is not enabled, and Bash is waiting for a foreground +command to complete, the shell receives keyboard-generated signals +such as @code{SIGINT} (usually generated by @samp{^C}) that users +commonly intend to send to that command. +This happens because the shell and the command are in the same process +group as the terminal, and @samp{^C} sends @code{SIGINT} to all processes +in that process group. +See @ref{Job Control}, for a more in-depth discussion of process groups. + +When Bash is running without job control enabled and receives @code{SIGINT} +while waiting for a foreground command, it waits until that foreground +command terminates and then decides what to do about the @code{SIGINT}: + +@enumerate +@item +If the command terminates due to the @code{SIGINT}, Bash concludes +that the user meant to end the entire script, and acts on the +@code{SIGINT} (e.g., by running a @code{SIGINT} trap or exiting itself); + +@item +If the pipeline does not terminate due to @code{SIGINT}, the program +handled the @code{SIGINT} itself and did not treat it as a fatal signal. +In that case, Bash does not treat @code{SIGINT} as a fatal signal, +either, instead assuming that the @code{SIGINT} was used as part of the +program's normal operation (e.g., @command{emacs} uses it to abort editing +commands) or deliberately discarded. However, Bash will run any +trap set on @code{SIGINT}, as it does with any other trapped signal it +receives while it is waiting for the foreground command to +complete, for compatibility. +@end enumerate + @node Shell Scripts @section Shell Scripts @cindex shell script @@ -3352,8 +3657,10 @@ are unset. A shell script may be made executable by using the @code{chmod} command to turn on the execute bit. When Bash finds such a file while -searching the @env{$PATH} for a command, it spawns a subshell to -execute it. In other words, executing +searching the @env{$PATH} for a command, it creates a +new instance of itself +to execute it. +In other words, executing @example filename @var{arguments} @end example @@ -3470,18 +3777,19 @@ The return status is zero. Read and execute commands from the @var{filename} argument in the current shell context. If @var{filename} does not contain a slash, -the @env{PATH} variable is used to find @var{filename}. -When Bash is not in @sc{posix} mode, the current directory is searched +the @env{PATH} variable is used to find @var{filename}, +but @var{filename} does not need to be executable. +When Bash is not in @sc{posix} mode, it searches the current directory if @var{filename} is not found in @env{$PATH}. If any @var{arguments} are supplied, they become the positional parameters when @var{filename} is executed. Otherwise the positional parameters are unchanged. -If the @option{-T} option is enabled, @code{source} inherits any trap on +If the @option{-T} option is enabled, @code{.} inherits any trap on @code{DEBUG}; if it is not, any @code{DEBUG} trap string is saved and -restored around the call to @code{source}, and @code{source} unsets the +restored around the call to @code{.}, and @code{.} unsets the @code{DEBUG} trap while it executes. If @option{-T} is not set, and the sourced file changes -the @code{DEBUG} trap, the new value is retained when @code{source} completes. +the @code{DEBUG} trap, the new value is retained when @code{.} completes. The return status is the exit status of the last command executed, or zero if no commands are executed. If @var{filename} is not found, or cannot be read, the return status is non-zero. @@ -3507,7 +3815,6 @@ cd [-L|[-P [-e]] [-@@] [@var{directory}] Change the current working directory to @var{directory}. If @var{directory} is not supplied, the value of the @env{HOME} shell variable is used. -Any additional arguments following @var{directory} are ignored. If the shell variable @env{CDPATH} exists, it is used as a search path: each directory name in @env{CDPATH} is searched for @@ -3543,6 +3850,11 @@ If a non-empty directory name from @env{CDPATH} is used, or if successful, the absolute pathname of the new working directory is written to the standard output. +If the directory change is successful, @code{cd} sets the value of the +@env{PWD} environment variable to the new directory name, and sets the +@env{OLDPWD} environment variable to the value of the current working +directory before the change. + The return status is zero if the directory is successfully changed, non-zero otherwise. @@ -3616,7 +3928,7 @@ Mark each @var{name} to be passed to child processes in the environment. If the @option{-f} option is supplied, the @var{name}s refer to shell functions; otherwise the names refer to shell variables. The @option{-n} option means to no longer mark each @var{name} for export. -If no @var{names} are supplied, or if the @option{-p} option is given, a +If no @var{name}s are supplied, or if the @option{-p} option is given, a list of names of all exported variables is displayed. The @option{-p} option displays output in a form that may be reused as input. If a variable name is followed by =@var{value}, the value of @@ -3877,10 +4189,20 @@ Otherwise, the expression is false. @end enumerate @item 4 arguments +The following conditions are applied in the order listed. + +@enumerate +@item If the first argument is @samp{!}, the result is the negation of the three-argument expression composed of the remaining arguments. +@item +If the first argument is exactly @samp{(} and the fourth argument is +exactly @samp{)}, the result is the two-argument test of the second +and third arguments. +@item Otherwise, the expression is parsed and evaluated according to precedence using the rules listed above. +@end enumerate @item 5 or more arguments The expression is parsed and evaluated according to precedence @@ -3994,7 +4316,7 @@ If the @option{-v} option is given, each If the @option{-f} option is given, the @var{name}s refer to shell functions, and the function definition is removed. If the @option{-n} option is supplied, and @var{name} is a variable with -the @var{nameref} attribute, @var{name} will be unset rather than the +the @code{nameref} attribute, @var{name} will be unset rather than the variable it references. @option{-n} has no effect if the @option{-f} option is supplied. If no options are supplied, each @var{name} refers to a variable; if @@ -4003,7 +4325,7 @@ unset. Readonly variables and functions may not be unset. Some shell variables lose their special behavior if they are unset; such behavior is noted in the description of the individual variables. -The return status is zero unless a @var{name} is readonly. +The return status is zero unless a @var{name} is readonly or may not be unset. @end table @node Bash Builtins @@ -4038,6 +4360,7 @@ bind [-m @var{keymap}] -f @var{filename} bind [-m @var{keymap}] -x @var{keyseq:shell-command} bind [-m @var{keymap}] @var{keyseq:function-name} bind [-m @var{keymap}] @var{keyseq:readline-command} +bind @var{readline-command-line} @end example Display current Readline (@pxref{Command Line Editing}) @@ -4112,6 +4435,9 @@ When @var{shell-command} is executed, the shell sets the buffer and the @code{READLINE_POINT} and @code{READLINE_MARK} variables to the current location of the insertion point and the saved insertion point (the @var{mark}), respectively. +The shell assigns any numeric argument the user supplied to the +@code{READLINE_ARGUMENT} variable. +If there was no argument, that variable is not set. If the executed command changes the value of any of @code{READLINE_LINE}, @code{READLINE_POINT}, or @code{READLINE_MARK}, those new values will be reflected in the editing state. @@ -4218,7 +4544,7 @@ the global scope, even when @code{declare} is executed in a shell function. It is ignored in all other cases. The @option{-I} option causes local variables to inherit the attributes -(except the @var{nameref} attribute) +(except the @code{nameref} attribute) and value of any existing variable with the same @var{name} at a surrounding scope. If there is no existing variable, the local variable is initially unset. @@ -4247,7 +4573,7 @@ converted to lower-case. The upper-case attribute is disabled. @item -n -Give each @var{name} the @var{nameref} attribute, making +Give each @var{name} the @code{nameref} attribute, making it a name reference to another variable. That other variable is defined by the value of @var{name}. All references, assignments, and attribute modifications @@ -4294,7 +4620,7 @@ an attempt is made to define a function using @samp{-f foo=bar}, an attempt is made to assign a value to a readonly variable, an attempt is made to assign a value to an array variable without using the compound assignment syntax (@pxref{Arrays}), -one of the @var{names} is not a valid shell variable name, +one of the @var{name}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 attempt is made to display a non-existent function with @option{-f}. @@ -4378,6 +4704,9 @@ each builtin with an indication of whether or not it is enabled. The @option{-f} option means to load the new builtin command @var{name} from shared object @var{filename}, on systems that support dynamic loading. +Bash will use the value of the @env{BASH_LOADABLES_PATH} variable as a +colon-separated list of directories in which to search for @var{filename}. +The default is system-dependent. The @option{-d} option will delete a builtin loaded with @option{-f}. If there are no options, a list of the shell builtins is displayed. @@ -4385,6 +4714,11 @@ The @option{-s} option restricts @code{enable} to the @sc{posix} special builtins. If @option{-s} is used with @option{-f}, the new builtin becomes a special builtin (@pxref{Special Builtins}). +If no options are supplied and a @var{name} is not a shell builtin, +@code{enable} will attempt to load @var{name} from a shared object named +@var{name}, as if the command were +@samp{enable -f @var{name} @var{name}}. + The return status is zero unless a @var{name} is not a shell builtin or there is an error loading a new builtin from a shared object. @@ -4535,6 +4869,9 @@ corresponding @var{argument} in the same way as @code{echo -e} @item %q Causes @code{printf} to output the corresponding @var{argument} in a format that can be reused as shell input. +@item %Q +like @code{%q}, but applies any supplied precision to the @var{argument} +before quoting it. @item %(@var{datefmt})T Causes @code{printf} to output the date-time string resulting from using @var{datefmt} as a format string for @code{strftime}(3). @@ -4654,8 +4991,10 @@ from regular files. If @code{read} times out, @code{read} saves any partial input read into the specified variable @var{name}. If @var{timeout} is 0, @code{read} returns immediately, without trying to -read any data. The exit status is 0 if input is available on -the specified file descriptor, non-zero otherwise. +read any data. +The exit status is 0 if input is available on the specified file descriptor, +or the read will return EOF, +non-zero otherwise. The exit status is greater than 128 if the timeout is exceeded. @item -u @var{fd} @@ -4727,7 +5066,7 @@ is not also used. If the @option{-f} option is used, @code{type} does not attempt to find shell functions, as with the @code{command} builtin. -The return status is zero if all of the @var{names} are found, non-zero +The return status is zero if all of the @var{name}s are found, non-zero if any are not found. @item typeset @@ -4888,8 +5227,8 @@ parameters, or to display the names and values of shell variables. @item set @btindex set @example -set [--abefhkmnptuvxBCEHPT] [-o @var{option-name}] [@var{argument} @dots{}] -set [+abefhkmnptuvxBCEHPT] [+o @var{option-name}] [@var{argument} @dots{}] +set [-abefhkmnptuvxBCEHPT] [-o @var{option-name}] [--] [-] [@var{argument} @dots{}] +set [+abefhkmnptuvxBCEHPT] [+o @var{option-name}] [--] [-] [@var{argument} @dots{}] @end example If no options or arguments are supplied, @code{set} displays the names @@ -5076,12 +5415,18 @@ not reset. Turning this option off causes the effective user and group ids to be set to the real user and group ids. +@item -r +Enable restricted shell mode. +This option cannot be unset once it has been set. + @item -t Exit after reading and executing one command. @item -u Treat unset variables and parameters other than the special parameters -@samp{@@} or @samp{*} as an error when performing parameter expansion. +@samp{@@} or @samp{*}, +or array variables subscripted with @samp{@@} or @samp{*}, +as an error when performing parameter expansion. An error message will be written to the standard error, and a non-interactive shell will exit. @@ -5187,7 +5532,7 @@ The settings can be either those listed below, or, if the option to the @code{set} builtin command (@pxref{The Set Builtin}). With no options, or with the @option{-p} option, a list of all settable options is displayed, with an indication of whether or not each is set; -if @var{optnames} are supplied, the output is restricted to those options. +if @var{optname}s are supplied, the output is restricted to those options. The @option{-p} option causes output to be displayed in a form that may be reused as input. Other options have the following meanings: @@ -5203,7 +5548,7 @@ Disable (unset) each @var{optname}. Suppresses normal output; the return status indicates whether the @var{optname} is set or unset. If multiple @var{optname} arguments are given with @option{-q}, -the return status is zero if all @var{optnames} are enabled; +the return status is zero if all @var{optname}s are enabled; non-zero otherwise. @item -o @@ -5219,7 +5564,7 @@ those options which are set or unset, respectively. Unless otherwise noted, the @code{shopt} options are disabled (off) by default. -The return status when listing options is zero if all @var{optnames} +The return status when listing options is zero if all @var{optname}s are enabled, non-zero otherwise. When setting or unsetting options, the return status is zero unless an @var{optname} is not a valid shell option. @@ -5308,7 +5653,7 @@ versions through 4.2. @item direxpand If set, Bash replaces directory names with the results of word expansion when performing -filename completion. This changes the contents of the readline editing +filename completion. This changes the contents of the Readline editing buffer. If not set, Bash attempts to preserve what the user typed. @@ -5401,6 +5746,12 @@ is not taken into account, so @samp{b} will not collate between @samp{A} and @samp{B}, and upper-case and lower-case ASCII characters will collate together. +@item globskipdots +If set, filename expansion will never match the filenames +@samp{.} and @samp{..}, +even if the pattern begins with a @samp{.}. +This option is enabled by default. + @item globstar If set, the pattern @samp{**} used in a filename expansion context will match all files and zero or more directories and subdirectories. @@ -5460,7 +5811,7 @@ embedded newlines rather than using semicolon separators where possible. @item localvar_inherit If set, local variables inherit the value and attributes of a variable of the same name that exists at a previous scope before any new value is -assigned. The @var{nameref} attribute is not inherited. +assigned. The @code{nameref} attribute is not inherited. @item localvar_unset If set, calling @code{unset} on local variables in previous function scopes @@ -5490,14 +5841,27 @@ performing filename expansion. @item nocasematch If set, Bash matches patterns in a case-insensitive fashion when performing matching while executing @code{case} or @code{[[} -conditional commands, +conditional commands (@pxref{Conditional Constructs}, when performing pattern substitution word expansions, or when filtering possible completions as part of programmable completion. +@item noexpand_translation +If set, Bash +encloses the translated results of $"..." quoting in single quotes +instead of double quotes. +If the string is not translated, this has no effect. + @item nullglob If set, Bash allows filename patterns which match no files to expand to a null string, rather than themselves. +@item patsub_replacement +If set, Bash +expands occurrences of @samp{&} in the replacement string of pattern +substitution to the text matched by the pattern, as described +above (@pxref{Shell Parameter Expansion}). +This option is enabled by default. + @item progcomp If set, the programmable completion facilities (@pxref{Programmable Completion}) are enabled. @@ -5529,10 +5893,15 @@ builtin prints an error message when the shift count exceeds the number of positional parameters. @item sourcepath -If set, the @code{source} builtin uses the value of @env{PATH} +If set, the @code{.} (@code{source}) builtin uses the value of @env{PATH} to find the directory containing the file supplied as an argument. This option is enabled by default. +@item varredir_close +If set, the shell automatically closes file descriptors assigned using the +@code{@{varname@}} redirection syntax (@pxref{Redirections}) instead of +leaving them open when the command completes. + @item xpg_echo If set, the @code{echo} builtin expands backslash-escape sequences by default. @@ -5789,7 +6158,7 @@ The command argument to the @option{-c} invocation option. @item BASH_LINENO An array variable whose members are the line numbers in source files -where each corresponding member of @var{FUNCNAME} was invoked. +where each corresponding member of @env{FUNCNAME} was invoked. @code{$@{BASH_LINENO[$i]@}} is the line number in the source file (@code{$@{BASH_SOURCE[$i+1]@}}) where @code{$@{FUNCNAME[$i]@}} was called (or @code{$@{BASH_LINENO[$i-1]@}} if @@ -5833,10 +6202,10 @@ The values assigned to the array members are as follows: @table @code @item BASH_VERSINFO[0] -The major version number (the @var{release}). +The major version number (the @dfn{release}). @item BASH_VERSINFO[1] -The minor version number (the @var{version}). +The minor version number (the @dfn{version}). @item BASH_VERSINFO[2] The patch level. @@ -5845,7 +6214,7 @@ The patch level. The build version. @item BASH_VERSINFO[4] -The release status (e.g., @var{beta1}). +The release status (e.g., @code{beta1}). @item BASH_VERSINFO[5] The value of @env{MACHTYPE}. @@ -5906,7 +6275,7 @@ programmable completion facilities (@pxref{Programmable Completion}). @item COMP_TYPE Set to an integer value corresponding to the type of completion attempted that caused a completion function to be called: -@var{TAB}, for normal completion, +@key{TAB}, for normal completion, @samp{?}, for listing completions after successive tabs, @samp{!}, for listing alternatives on partial word completion, @samp{@@}, to list completions if the word is not unmodified, @@ -5963,7 +6332,7 @@ starts with value @samp{t}, it assumes that the shell is running in an Emacs shell buffer and disables line editing. @item ENV -Expanded and executed similarlty to @code{BASH_ENV} +Expanded and executed similarly to @code{BASH_ENV} (@pxref{Bash Startup Files}) when an interactive shell is invoked in @sc{posix} Mode (@pxref{Bash POSIX Mode}). @@ -5971,7 +6340,7 @@ when an interactive shell is invoked in @item EPOCHREALTIME Each time this parameter is referenced, it expands to the number of seconds since the Unix Epoch as a floating point value with micro-second granularity -(see the documentation for the C library function @var{time} for the +(see the documentation for the C library function @code{time} for the definition of Epoch). Assignments to @env{EPOCHREALTIME} are ignored. If @env{EPOCHREALTIME} @@ -5981,7 +6350,7 @@ it is subsequently reset. @item EPOCHSECONDS Each time this parameter is referenced, it expands to the number of seconds since the Unix Epoch (see the documentation for the C library function -@var{time} for the definition of Epoch). +@code{time} for the definition of Epoch). Assignments to @env{EPOCHSECONDS} are ignored. If @env{EPOCHSECONDS} is unset, it loses its special properties, even if @@ -6065,7 +6434,7 @@ subsequently reset. Up to three characters which control history expansion, quick substitution, and tokenization (@pxref{History Interaction}). The first character is the -@var{history expansion} character, that is, the character which signifies the +@dfn{history expansion} character, that is, the character which signifies the start of a history expansion, normally @samp{!}. The second character is the character which signifies `quick substitution' when seen as the first character on a line, normally @samp{^}. The optional third character is the @@ -6150,7 +6519,7 @@ The shell sets the default value to 500 after reading any startup files. @item HISTTIMEFORMAT If this variable is set and not null, its value is used as a format string -for @var{strftime} to print the time stamp associated with each history +for @code{strftime} to print the time stamp associated with each history entry displayed by the @code{history} builtin. If this variable is set, time stamps are written to the history file so they may be preserved across shell sessions. @@ -6313,7 +6682,7 @@ The value of this variable is used as the prompt for the @code{select} command prompts with @samp{#? } @item PS4 -The value of this parameter is expanded like @var{PS1} +The value of this parameter is expanded like @env{PS1} and the expanded value is the prompt printed before the command line is echoed when the @option{-x} option is set (@pxref{The Set Builtin}). The first character of the expanded value is replicated multiple times, @@ -6331,16 +6700,21 @@ If @env{RANDOM} is unset, it loses its special properties, even if it is subsequently reset. +@item READLINE_ARGUMENT +Any numeric argument given to a Readline command that was defined using +@samp{bind -x} (@pxref{Bash Builtins} +when it was invoked. + @item READLINE_LINE The contents of the Readline line buffer, for use with @samp{bind -x} (@pxref{Bash Builtins}). @item READLINE_MARK -The position of the @var{mark} (saved insertion point) in the +The position of the @dfn{mark} (saved insertion point) in the Readline line buffer, for use with @samp{bind -x} (@pxref{Bash Builtins}). The characters between the insertion point and the mark are often -called the @var{region}. +called the @dfn{region}. @item READLINE_POINT The position of the insertion point in the Readline line buffer, for use @@ -6350,12 +6724,11 @@ with @samp{bind -x} (@pxref{Bash Builtins}). The default variable for the @code{read} builtin. @item SECONDS -This variable expands to the number of seconds since the -shell was started. Assignment to this variable resets -the count to the value assigned, and the expanded value -becomes the value assigned plus the number of seconds +This variable expands to the number of seconds since the shell was started. +Assignment to this variable resets the count to the value assigned, and the +expanded value becomes the value assigned plus the number of seconds since the assignment. -The number of seconds at shell invocation and the current time is always +The number of seconds at shell invocation and the current time are always determined by querying the system clock. If @env{SECONDS} is unset, it loses its special properties, @@ -6743,10 +7116,12 @@ No other startup files are read. @subsubheading Invoked by remote shell daemon Bash attempts to determine when it is being run with its standard input -connected to a network connection, as when executed by the remote shell -daemon, usually @code{rshd}, or the secure shell daemon @code{sshd}. -If Bash determines it is being run in -this fashion, it reads and executes commands from @file{~/.bashrc}, if that +connected to a network connection, as when executed by +the historical remote shell daemon, usually @code{rshd}, +or the secure shell daemon @code{sshd}. +If Bash +determines it is being run non-interactively in this fashion, +it reads and executes commands from @file{~/.bashrc}, if that file exists and is readable. It will not do this if invoked as @code{sh}. The @option{--norc} option may be used to inhibit this behavior, and the @@ -6773,15 +7148,16 @@ the same, but the effective user id is not reset. @menu * What is an Interactive Shell?:: What determines whether a shell is Interactive. * Is this Shell Interactive?:: How to tell if a shell is interactive. -* Interactive Shell Behavior:: What changes in a interactive shell? +* Interactive Shell Behavior:: What changes in an interactive shell? @end menu @node What is an Interactive Shell? @subsection What is an Interactive Shell? An interactive shell -is one started without non-option arguments, unless @option{-s} is -specified, without specifying the @option{-c} option, and +is one started without non-option arguments +(unless @option{-s} is specified) +and without specifying the @option{-c} option, whose input and error output are both connected to terminals (as determined by @code{isatty(3)}), or one started with the @option{-i} option. @@ -6844,7 +7220,7 @@ See @ref{Controlling the Prompt}, for a complete list of prompt string escape sequences. @item -Bash executes the values of the set elements of the @env{PROMPT_COMMANDS} +Bash executes the values of the set elements of the @env{PROMPT_COMMAND} array variable as commands before printing the primary prompt, @env{$PS1} (@pxref{Bash Variables}). @@ -6915,9 +7291,11 @@ A failed @code{exec} will not cause the shell to exit Parser syntax errors will not cause the shell to exit. @item -Simple spelling correction for directory arguments to the @code{cd} -builtin is enabled by default (see the description of the @code{cdspell} +If the @code{cdspell} shell option is enabled, the shell will attempt +simple spelling correction for directory arguments to the @code{cd} +builtin (see the description of the @code{cdspell} option to the @code{shopt} builtin in @ref{The Shopt Builtin}). +The @code{cdspell} option is only effective in interactive shells. @item The shell will check the value of the @env{TMOUT} variable and exit @@ -6931,7 +7309,10 @@ printing @env{$PS1} (@pxref{Bash Variables}). @cindex expressions, conditional Conditional expressions are used by the @code{[[} compound command -and the @code{test} and @code{[} builtin commands. The @code{test} +(@pxref{Conditional Constructs}) +and the @code{test} and @code{[} builtin commands +(@pxref{Bourne Shell Builtins}). +The @code{test} and @code{[} commands determine their behavior based on the number of arguments; see the descriptions of those commands for any other command-specific actions. @@ -7166,9 +7547,9 @@ 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 -@var{integer} attribute using @samp{declare -i} is assigned a value. +@code{integer} attribute using @samp{declare -i} is assigned a value. A null value evaluates to 0. -A shell variable need not have its @var{integer} attribute turned on +A shell variable need not have its @code{integer} attribute turned on to be used in an expression. Integer constants follow the C language definition, without suffixes or @@ -7195,7 +7576,7 @@ rules above. @section Aliases @cindex alias expansion -@var{Aliases} allow a string to be substituted for a word when it is used +@dfn{Aliases} 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 @code{alias} and @code{unalias} builtin commands. @@ -7215,7 +7596,7 @@ This means that one may alias @code{ls} to @code{"ls -F"}, for instance, and Bash does not try to recursively expand the replacement text. If the last character of the alias value is a -@var{blank}, then the next command word following the +@code{blank}, then the next command word following the alias is also checked for alias expansion. Aliases are created and listed with the @code{alias} @@ -7223,7 +7604,7 @@ command, and removed with the @code{unalias} command. There is no mechanism for using arguments in the replacement text, as in @code{csh}. -If arguments are needed, a shell function should be used +If arguments are needed, use a shell function (@pxref{Shell Functions}). Aliases are not expanded when the shell is not interactive, @@ -7337,6 +7718,9 @@ interpreted as relative to one greater than the maximum index of @var{name}, so negative indices count back from the end of the array, and an index of -1 references the last element. +The @samp{+=} operator will append to an array variable when assigning +using the compound assignment syntax; see @ref{Shell Parameters} above. + Any element of an array may be referenced using @code{$@{@var{name}[@var{subscript}]@}}. The braces are required to avoid @@ -7387,8 +7771,14 @@ destroys the array element at index @var{subscript}. Negative subscripts to indexed arrays are interpreted as described above. Unsetting the last element of an array variable does not unset the variable. @code{unset @var{name}}, where @var{name} is an array, removes the -entire array. A subscript of @samp{*} or @samp{@@} also removes the entire array. +@code{unset @var{name}[@var{subscript}]} behaves differently +depending on the array type when given a +subscript of @samp{*} or @samp{@@}. +When @var{name} is an associative array, it removes the element with key +@samp{*} or @samp{@@}. +If @var{name} is an indexed array, @code{unset} removes all of the elements, +but does not remove the array itself. When using a variable name with a subscript as an argument to a command, such as with @code{unset}, without using the word expansion syntax @@ -7470,11 +7860,16 @@ with zero. popd [-n] [+@var{N} | -@var{N}] @end example -When no arguments are given, @code{popd} -removes the top directory from the stack and -performs a @code{cd} to the new top directory. +Removes elements from the directory stack. The elements are numbered from 0 starting at the first directory -listed with @code{dirs}; that is, @code{popd} is equivalent to @code{popd +0}. +listed by @code{dirs}; +that is, @code{popd} is equivalent to @code{popd +0}. + +When no arguments are given, @code{popd} +removes the top directory from the stack and changes to +the new top directory. + +Arguments, if supplied, have the following meanings: @table @code @item -n @@ -7482,22 +7877,38 @@ Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated. @item +@var{N} Removes the @var{N}th directory (counting from the left of the -list printed by @code{dirs}), starting with zero. +list printed by @code{dirs}), starting with zero, from the stack. @item -@var{N} Removes the @var{N}th directory (counting from the right of the -list printed by @code{dirs}), starting with zero. +list printed by @code{dirs}), starting with zero, from the stack. @end table +If the top element of the directory stack is modified, and +the @option{-n} option was not supplied, @code{popd} uses the @code{cd} +builtin to change to the directory at the top of the stack. +If the @code{cd} fails, @code{popd} returns a non-zero value. + +Otherwise, @code{popd} returns an unsuccessful status if +an invalid option is encountered, the directory stack +is empty, or a non-existent directory stack entry is specified. + +If the @code{popd} command is successful, +Bash runs @code{dirs} to show the final contents of the directory stack, +and the return status is 0. + @btindex pushd @item pushd @example pushd [-n] [@var{+N} | @var{-N} | @var{dir}] @end example -Save the current directory on the top of the directory stack -and then @code{cd} to @var{dir}. -With no arguments, @code{pushd} exchanges the top two directories -and makes the new top the current directory. +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, @code{pushd} exchanges the top two elements +of the directory stack. + +Arguments, if supplied, have the following meanings: @table @code @item -n @@ -7512,19 +7923,32 @@ Brings the @var{N}th directory (counting from the right of the list printed by @code{dirs}, starting with zero) to the top of the list by rotating the stack. @item @var{dir} -Makes @var{dir} be the top of the stack, making -it the new current directory as if it had been supplied as an argument -to the @code{cd} builtin. +Makes @var{dir} be the top of the stack. @end table + +After the stack has been modified, if the @option{-n} option was not +supplied, @code{pushd} uses the @code{cd} builtin to change to the +directory at the top of the stack. +If the @code{cd} fails, @code{pushd} returns a non-zero value. + +Otherwise, if no arguments are supplied, @code{pushd} returns 0 unless the +directory stack is empty. +When rotating the directory stack, @code{pushd} returns 0 unless +the directory stack is empty or a non-existent directory stack element +is specified. + +If the @code{pushd} command is successful, +Bash runs @code{dirs} to show the final contents of the directory stack. + @end table @node Controlling the Prompt @section Controlling the Prompt @cindex prompting -Bash examines the value of the array variable @env{PROMPT_COMMANDS} just before +Bash examines the value of the array variable @env{PROMPT_COMMAND} just before printing each primary prompt. -If any elements in @env{PROMPT_COMMANDS} are set and non-null, Bash +If any elements in @env{PROMPT_COMMAND} are set and non-null, Bash executes each value, in numeric order, just as if it had been typed on the command line. @@ -7573,7 +7997,8 @@ The version of Bash (e.g., 2.00) @item \V The release of Bash, version + patchlevel (e.g., 2.00.0) @item \w -The current working directory, with @env{$HOME} abbreviated with a tilde +The value of the @code{PWD} shell variable (@env{$PWD}), +with @env{$HOME} abbreviated with a tilde (uses the @env{$PROMPT_DIRTRIM} variable). @item \W The basename of @env{$PWD}, with @env{$HOME} abbreviated with a tilde. @@ -7658,7 +8083,7 @@ Using the @code{enable} builtin command to enable disabled shell builtins. @item Specifying the @option{-p} option to the @code{command} builtin. @item -Turning off restricted mode with @samp{set +r} or @samp{set +o restricted}. +Turning off restricted mode with @samp{set +r} or @samp{shopt -u restricted_shell}. @end itemize These restrictions are enforced after any startup files are read. @@ -7670,8 +8095,8 @@ the shell spawned to execute the script. The restricted shell mode is only one component of a useful restricted environment. It should be accompanied by setting @env{PATH} to a value that allows execution of only a few verified commands (commands that -allow shell escapes are particularly vulnerable), leaving the user -in a non-writable directory other than his home directory after login, +allow shell escapes are particularly vulnerable), changing the current +directory to a non-writable directory other than @env{$HOME} after login, not allowing the restricted shell to execute shell scripts, and cleaning the environment of variables that cause some commands to modify their behavior (e.g., @env{VISUAL} or @env{PAGER}). @@ -7724,6 +8149,13 @@ Alias expansion is always enabled, even in non-interactive shells. Reserved words appearing in a context where reserved words are recognized do not undergo alias expansion. +@item +Alias expansion is performed when initially parsing a command substitution. +The default mode generally defers it, when enabled, until the command +substitution is executed. This means that command substitution will not +expand aliases that are defined after the command substitution is initially +parsed (e.g., as part of a function definition). + @item The @sc{posix} @env{PS1} and @env{PS2} expansions of @samp{!} to the history number and @samp{!!} to @samp{!} are enabled, @@ -7818,7 +8250,10 @@ a value to a readonly variable. @item A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a special -builtin, but not with any other simple command. +builtin, but not with any other simple command. For any other simple +command, the shell aborts execution of that command, and execution continues +at the top level ("the shell shall not perform any further processing of the +command in which the error occurred"). @item A non-interactive shell exits with an error status if the iteration @@ -7846,7 +8281,7 @@ While variable indirection is available, it may not be applied to the @samp{#} and @samp{?} special parameters. @item -When expanding the @samp{*} special parameter in a pattern context where the +Expanding the @samp{*} special parameter in a pattern context where the expansion is double-quoted does not treat the @code{$*} as if it were double-quoted. @@ -7926,16 +8361,16 @@ variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. @item -When the @code{cd} builtin is invoked in @var{logical} mode, and the pathname +When the @code{cd} builtin is invoked in logical mode, and the pathname constructed from @code{$PWD} and the directory name supplied as an argument does not refer to an existing directory, @code{cd} will fail instead of -falling back to @var{physical} mode. +falling back to physical mode. @item When the @code{cd} builtin cannot change a directory because the length of the pathname constructed from @code{$PWD} and the directory name supplied as an argument -exceeds @var{PATH_MAX} when all symbolic links are expanded, @code{cd} will +exceeds @code{PATH_MAX} when all symbolic links are expanded, @code{cd} will fail instead of attempting to use only the supplied directory name. @item @@ -7980,6 +8415,12 @@ has been set. If Bash receives a trapped signal while executing @code{read}, the trap handler executes and @code{read} returns an exit status greater than 128. +@item +The @code{printf} builtin uses @code{double} (via @code{strtod}) to convert +arguments corresponding to floating point conversion specifiers, instead of +@code{long double} if it's available. The @samp{L} length modifier forces +@code{printf} to use @code{long double} if it's available. + @item Bash removes an exited background process's status from the list of such statuses after the @code{wait} builtin is used to obtain it. @@ -8012,8 +8453,8 @@ the @option{--enable-strict-posix-default} to @code{configure} when building @cindex Compatibility Level @cindex Compatibility Mode -Bash-4.0 introduced the concept of a `shell compatibility level', specified -as a set of options to the shopt builtin +Bash-4.0 introduced the concept of a @dfn{shell compatibility level}, +specified as a set of options to the shopt builtin (@code{compat31}, @code{compat32}, @code{compat40}, @@ -8029,7 +8470,7 @@ behavior. It's intended to be a temporary solution. This section does not mention behavior that is standard for a particular version (e.g., setting @code{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). +default behavior in bash-3.2 and subsequent versions). If a user enables, say, @code{compat32}, it may affect the behavior of other compatibility levels up to and including the current compatibility level. @@ -8129,7 +8570,7 @@ are not special within double-quoted word expansions @item the shell does not print a warning message if an attempt is made to use a quoted compound assignment as an argument to declare -(declare -a foo='(1 2)'). Later versions warn that this usage is +(e.g., declare -a foo='(1 2)'). Later versions warn that this usage is deprecated @item word expansion errors are considered non-fatal errors that cause the @@ -8174,6 +8615,49 @@ printed an informational message to that effect, even when producing output that can be reused as input. Bash-5.1 suppresses that message when the @option{-l} option is supplied. @end itemize + +@item compat51 (set using BASH_COMPAT) +@itemize @bullet +@item +The @code{unset} builtin will unset the array @code{a} given an argument like +@samp{a[@@]}. +Bash-5.2 will unset an element with key @samp{@@} (associative arrays) +or remove all the elements without unsetting the array (indexed arrays) +@item +arithmetic commands ( ((...)) ) and the expressions in an arithmetic for +statement can be expanded more than once +@item +expressions used as arguments to arithmetic operators in the @code{[[} +conditional command can be expanded more than once +@item +the expressions in substring parameter brace expansion can be +expanded more than once +@item +the expressions in the $(( ... )) word expansion can be expanded +more than once +@item +arithmetic expressions used as indexed array subscripts can be +expanded more than once +@item +@code{test -v}, when given an argument of @samp{A[@@]}, where @var{A} is +an existing associative array, will return true if the array has any set +elements. +Bash-5.2 will look for and report on a key named @samp{@@} +@item +the $@{@var{parameter}[:]=@var{value}@} word expansion will return +@var{value}, before any variable-specific transformations have been +performed (e.g., converting to lowercase). +Bash-5.2 will return the final value assigned to the variable. +@item +Parsing command substitutions will behave as if extended glob +(@pxref{The Shopt Builtin}) +is enabled, so that parsing a command substitution containing an extglob +pattern (say, as part of a shell function) will not fail. +This assumes the intent is to enable extglob before the command is executed +and word expansions are performed. +It will fail at word expansion time if extglob hasn't been +enabled by the time the command is executed. +@end itemize @end table @node Job Control @@ -8237,9 +8721,9 @@ which, unless caught, suspends the process. If the operating system on which Bash is running supports job control, Bash contains facilities to use it. Typing the -@var{suspend} character (typically @samp{^Z}, Control-Z) while a +@dfn{suspend} character (typically @samp{^Z}, Control-Z) while a process is running causes that process to be stopped and returns -control to Bash. Typing the @var{delayed suspend} character +control to Bash. Typing the @dfn{delayed suspend} character (typically @samp{^Y}, Control-Y) causes the process to be stopped when it attempts to read input from the terminal, and control to be returned to Bash. The user then manipulates the state of @@ -8250,7 +8734,7 @@ 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 -character @samp{%} introduces a job specification (@var{jobspec}). +character @samp{%} introduces a job specification (@dfn{jobspec}). Job number @code{n} may be referred to as @samp{%n}. The symbols @samp{%%} and @samp{%+} refer to the shell's notion of the @@ -8410,7 +8894,7 @@ the last-executed process substitution, if its process id is the same as @var{$!}, and the return status is zero. If the @option{-n} option is supplied, @code{wait} waits for a single job -from the list of @var{pids} or @var{jobspecs} or, if no arguments are +from the list of @var{pid}s or @var{jobspec}s or, if no arguments are supplied, any job, to complete and returns its exit status. If none of the supplied arguments is a child of the shell, or if no arguments @@ -8423,10 +8907,14 @@ The variable will be unset initially, before any assignment. This is useful only when the @option{-n} option is supplied. Supplying the @option{-f} option, when job control is enabled, forces @code{wait} to wait for each @var{pid} or @var{jobspec} to -terminate before returning its status, intead of returning when it changes +terminate before returning its status, instead of returning when it changes status. If neither @var{jobspec} nor @var{pid} specifies an active child process of the shell, the return status is 127. +If @code{wait} is interrupted by a signal, the return status will be greater +than 128, as described above (@pxref{Signals}). +Otherwise, the return status is the exit status +of the last process or job waited for. @item disown @btindex disown @@ -8453,8 +8941,16 @@ suspend [-f] Suspend the execution of this shell until it receives a @code{SIGCONT} signal. -A login shell cannot be suspended; the @option{-f} +A login shell, +or a shell without job control enabled, +cannot be suspended; the @option{-f} option can be used to override this and force the suspension. +The return status is 0 unless the shell is a login shell +or job control is not enabled +and +@option{-f} +is not supplied. + @end table When job control is not active, the @code{kill} and @code{wait} @@ -8553,7 +9049,14 @@ Optionally, type @samp{make tests} to run the Bash test suite. @item Type @samp{make install} to install @code{bash} and @code{bashbug}. -This will also install the manual pages and Info file. +This will also install the manual pages and Info file, message translation +files, some supplemental documentation, a number of example loadable +builtin commands, and a set of header files for developing loadable +builtins. +You may need additional privileges to install @code{bash} to your +desired destination, so @samp{sudo make install} might be required. +More information about controlling the locations where @code{bash} and +other files are installed is below (@pxref{Installation Names}). @end enumerate @@ -8561,7 +9064,7 @@ The @code{configure} shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a @file{Makefile} in each directory of the package (the top directory, the -@file{builtins}, @file{doc}, and @file{support} directories, +@file{builtins}, @file{doc}, @file{po}, and @file{support} directories, each directory under @file{lib}, and several others). It also creates a @file{config.h} file containing system-dependent definitions. Finally, it creates a shell script named @code{config.status} that you @@ -8606,10 +9109,10 @@ to do them, and mail diffs or instructions to considered for the next release. The file @file{configure.ac} is used to create @code{configure} -by a program called Autoconf. You only need -@file{configure.ac} if you want to change it or regenerate -@code{configure} using a newer version of Autoconf. If -you do this, make sure you are using Autoconf version 2.50 or +by a program called Autoconf. +You only need @file{configure.ac} if you want to change it or regenerate +@code{configure} using a newer version of Autoconf. +If you do this, make sure you are using Autoconf version 2.69 or newer. You can remove the program binaries and object files from the @@ -8655,7 +9158,7 @@ supply the @option{--srcdir=PATH} argument to tell @code{configure} where the source files are. @code{configure} automatically checks for the source code in the directory that @code{configure} is in and in `..'. -If you have to use a @code{make} that does not supports the @code{VPATH} +If you have to use a @code{make} that does not support the @code{VPATH} variable, you can compile Bash for one architecture at a time in the source code directory. After you have installed Bash for one architecture, use @samp{make distclean} before @@ -8680,24 +9183,55 @@ directories for other architectures. @section Installation Names By default, @samp{make install} will install into -@file{/usr/local/bin}, @file{/usr/local/man}, etc. You can -specify an installation prefix other than @file{/usr/local} by +@file{/usr/local/bin}, @file{/usr/local/man}, etc.; +that is, the @dfn{installation prefix} defaults to @file{/usr/local}. +You can specify an installation prefix other than @file{/usr/local} by giving @code{configure} the option @option{--prefix=@var{PATH}}, -or by specifying a value for the @code{DESTDIR} @samp{make} -variable when running @samp{make install}. +or by specifying a value for the @env{prefix} @samp{make} +variable when running @samp{make install} +(e.g., @samp{make install prefix=@var{PATH}}). +The @env{prefix} variable provides a default for @env{exec_prefix} and +other variables used when installing bash. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give @code{configure} the option @option{--exec-prefix=@var{PATH}}, @samp{make install} will use @var{PATH} as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. +Documentation and other data files will still use the regular prefix. + +If you would like to change the installation locations for a single run, +you can specify these variables as arguments to @code{make}: +@samp{make install exec_prefix=/} will install @code{bash} and +@code{bashbug} into @file{/bin} instead of the default @file{/usr/local/bin}. + +If you want to see the files bash will install and where it will install +them without changing anything on your system, specify the variable +@env{DESTDIR} as an argument to @code{make}. Its value should be the +absolute directory path you'd like to use as the root of your sample +installation tree. For example, + +@example +mkdir /fs1/bash-install +make install DESTDIR=/fs1/bash-install +@end example + +@noindent +will install @code{bash} into @file{/fs1/bash-install/usr/local/bin/bash}, +the documentation into directories within +@file{/fs1/bash-install/usr/local/share}, the example loadable builtins into +@file{/fs1/bash-install/usr/local/lib/bash}, and so on. +You can use the usual @env{exec_prefix} and @env{prefix} variables to alter +the directory paths beneath the value of @env{DESTDIR}. + +The GNU Makefile standards provide a more complete description of these +variables and their effects. @node Specifying the System Type @section Specifying the System Type There may be some features @code{configure} can not figure out -automatically, but need to determine by the type of host Bash +automatically, but needs to determine by the type of host Bash will run on. Usually @code{configure} can figure that out, but if it prints a message saying it can not guess the host type, give it the @option{--host=TYPE} option. @samp{TYPE} can @@ -8808,9 +9342,13 @@ the installed version of Readline in subdirectories of that directory (include files in @var{PREFIX}/@code{include} and the library in @var{PREFIX}/@code{lib}). -@item --with-purify -Define this to use the Purify memory allocation checker from Rational -Software. +@item --with-libintl-prefix[=@var{PREFIX}] +Define this to make Bash link with a locally-installed version of the +libintl library instead of the version in @file{lib/intl}. + +@item --with-libiconv-prefix[=@var{PREFIX}] +Define this to make Bash look for libiconv in @var{PREFIX} instead of the +standard system locations. There is no version included with Bash. @item --enable-minimal-config This produces a shell with minimal features, close to the historical @@ -8818,7 +9356,7 @@ Bourne shell. @end table There are several @option{--enable-} options that alter how Bash is -compiled and linked, rather than changing run-time features. +compiled, linked, and installed, rather than changing run-time features. @table @code @item --enable-largefile @@ -8831,17 +9369,26 @@ default, if the operating system provides large file support. This builds a Bash binary that produces profiling information to be processed by @code{gprof} each time it is executed. +@item --enable-separate-helpfiles +Use external files for the documentation displayed by the @code{help} builtin +instead of storing the text internally. + @item --enable-static-link This causes Bash to be linked statically, if @code{gcc} is being used. This could be used to build a version to use as root's shell. + @end table The @samp{minimal-config} option can be used to disable all of the following options, but it is processed first, so individual options may be enabled using @samp{enable-@var{feature}}. -All of the following options except for @samp{disabled-builtins}, -@samp{direxpand-default}, and +All of the following options except for +@samp{alt-array-implementation}, +@samp{disabled-builtins}, +@samp{direxpand-default}, +@samp{strict-posix-default}, +and @samp{xpg-echo-default} are enabled by default, unless the operating system does not provide the necessary support. @@ -8851,6 +9398,11 @@ necessary support. Allow alias expansion and include the @code{alias} and @code{unalias} builtins (@pxref{Aliases}). +@item --enable-alt-array-implementation +This builds bash using an alternate implementation of arrays +(@pxref{Arrays}) that provides faster access at the expense of using +more memory (sometimes many times more, depending on how sparse an array is). + @item --enable-arith-for-command Include support for the alternate form of the @code{for} command that behaves like the C language @code{for} statement @@ -8871,7 +9423,7 @@ See @ref{Brace Expansion}, for a complete description. @item --enable-casemod-attributes Include support for case-modifying attributes in the @code{declare} builtin -and assignment statements. Variables with the @var{uppercase} attribute, +and assignment statements. Variables with the @code{uppercase} attribute, for example, will have their values converted to uppercase upon assignment. @item --enable-casemod-expansion @@ -8930,7 +9482,7 @@ Include support for the extended pattern matching features described above under @ref{Pattern Matching}. @item --enable-extended-glob-default -Set the default value of the @var{extglob} shell option described +Set the default value of the @code{extglob} shell option described above under @ref{The Shopt Builtin} to be enabled. @item --enable-function-import @@ -8939,7 +9491,7 @@ instance of the shell from the environment. This option is enabled by default. @item --enable-glob-asciirange-default -Set the default value of the @var{globasciiranges} shell option described +Set the default value of the @code{globasciiranges} shell option described above under @ref{The Shopt Builtin} to be enabled. This controls the behavior of character ranges when used in pattern matching bracket expressions. @@ -8994,10 +9546,6 @@ when called as @code{rbash}, enters a restricted mode. See Include the @code{select} compound command, which allows the generation of simple menus (@pxref{Conditional Constructs}). -@item --enable-separate-helpfiles -Use external files for the documentation displayed by the @code{help} builtin -instead of storing the text internally. - @item --enable-single-help-strings Store the text displayed by the @code{help} builtin as a single string for each help topic. This aids in translating the text to different languages. @@ -9007,6 +9555,10 @@ literals. @item --enable-strict-posix-default Make Bash @sc{posix}-conformant by default (@pxref{Bash POSIX Mode}). +@item --enable-translatable-strings +Enable support for @code{$"@var{string}"} translatable strings +(@pxref{Locale Translation}). + @item --enable-usg-echo-default A synonym for @code{--enable-xpg-echo-default}. @@ -9036,7 +9588,8 @@ But first, you should make sure that it really is a bug, and that it appears in the latest version of Bash. The latest version of Bash is always available for FTP from -@uref{ftp://ftp.gnu.org/pub/gnu/bash/}. +@uref{ftp://ftp.gnu.org/pub/gnu/bash/} and from +@uref{http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz}. Once you have determined that a bug actually exists, use the @code{bashbug} command to submit a bug report. @@ -9197,9 +9750,9 @@ which expands to the substring of @code{var}'s value of length @item The expansion -@code{$@{var/[/]}@var{pattern}@code{[/}@var{replacement}@code{]@}}, +@code{$@{@var{var}/[/]}@var{pattern}@code{[/}@var{replacement}@code{]@}}, which matches @var{pattern} and replaces it with @var{replacement} in -the value of @code{var}, is available (@pxref{Shell Parameter Expansion}). +the value of @var{var}, is available (@pxref{Shell Parameter Expansion}). @item The expansion @code{$@{!@var{prefix}*@}} expansion, which expands to @@ -9207,7 +9760,7 @@ the names of all shell variables whose names begin with @var{prefix}, is available (@pxref{Shell Parameter Expansion}). @item -Bash has @var{indirect} variable expansion using @code{$@{!word@}} +Bash has indirect variable expansion using @code{$@{!word@}} (@pxref{Shell Parameter Expansion}). @item @@ -9243,8 +9796,8 @@ The Bourne shell uses only @samp{!}. @item Bash implements the full set of @sc{posix} filename expansion operators, -including @var{character classes}, @var{equivalence classes}, and -@var{collating symbols} (@pxref{Filename Expansion}). +including character classes, equivalence classes, and +collating symbols (@pxref{Filename Expansion}). @item Bash implements extended pattern matching features when the @code{extglob} @@ -9390,7 +9943,7 @@ which specifies the behavior based on the number of arguments. @item Bash includes the @code{caller} builtin, which displays the context of any active subroutine call (a shell function or a script executed with -the @code{.} or @code{source} builtins). This supports the bash +the @code{.} or @code{source} builtins). This supports the Bash debugger. @item @@ -9416,7 +9969,7 @@ The @code{ERR} trap is not inherited by shell functions unless the The @code{trap} builtin (@pxref{Bourne Shell Builtins}) allows a @code{RETURN} pseudo-signal specification, similar to @code{EXIT} and @code{DEBUG}. -Commands specified with an @code{RETURN} trap are executed before +Commands specified with a @code{RETURN} trap are executed before execution resumes after a shell function or a shell script executed with @code{.} or @code{source} returns. The @code{RETURN} trap is not inherited by shell functions unless the diff --git a/doc/builtins.0 b/doc/builtins.0 index 614524eb0..1a9b3edee 100644 --- a/doc/builtins.0 +++ b/doc/builtins.0 @@ -3,11 +3,11 @@ BASH_BUILTINS(1) General Commands Manual BASH_BUILTINS(1) NNAAMMEE - bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, command, - compgen, complete, compopt, continue, declare, dirs, disown, echo, en- - able, eval, exec, exit, export, false, fc, fg, getopts, hash, help, - history, jobs, kill, let, local, logout, mapfile, popd, printf, pushd, - pwd, read, readonly, return, set, shift, shopt, source, suspend, test, + :, ., [, alias, bg, bind, break, builtin, caller, cd, command, compgen, + complete, compopt, continue, declare, dirs, disown, echo, enable, eval, + exec, exit, export, false, fc, fg, getopts, hash, help, history, jobs, + kill, let, local, logout, mapfile, popd, printf, pushd, pwd, read, + readarray, readonly, return, set, shift, shopt, source, suspend, test, times, trap, true, type, typeset, ulimit, umask, unalias, unset, wait - bash built-in commands, see bbaasshh(1) @@ -32,21 +32,21 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS vironment and return the exit status of the last command exe- cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash, filenames in PPAATTHH are used to find the directory containing - _f_i_l_e_n_a_m_e. The file searched for in PPAATTHH need not be executable. - When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is - searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option - to the sshhoopptt builtin command is turned off, the PPAATTHH is not - searched. If any _a_r_g_u_m_e_n_t_s are supplied, they become the posi- - tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the po- - sitional parameters are unchanged. If the --TT option is enabled, - ssoouurrccee inherits any trap on DDEEBBUUGG; if it is not, any DDEEBBUUGG trap - string is saved and restored around the call to ssoouurrccee, and - ssoouurrccee unsets the DDEEBBUUGG trap while it executes. If --TT is not - set, and the sourced file changes the DDEEBBUUGG trap, the new value - is retained when ssoouurrccee completes. The return status is the - status of the last command exited within the script (0 if no - commands are executed), and false if _f_i_l_e_n_a_m_e is not found or - cannot be read. + _f_i_l_e_n_a_m_e, but _f_i_l_e_n_a_m_e does not need to be executable. The file + searched for in PPAATTHH need not be executable. When bbaasshh is not + in _p_o_s_i_x _m_o_d_e, it searches the current directory 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 positional parameters when + _f_i_l_e_n_a_m_e is executed. Otherwise the positional parameters are + unchanged. If the --TT option is enabled, .. inherits any trap on + DDEEBBUUGG; if it is not, any DDEEBBUUGG trap string is saved and restored + around the call to .., and .. unsets the DDEEBBUUGG trap while it exe- + cutes. If --TT is not set, and the sourced file changes the DDEEBBUUGG + trap, the new value is retained when .. completes. The return + status is the status of the last command exited within the + script (0 if no commands are executed), and false if _f_i_l_e_n_a_m_e is + not found or cannot be read. aalliiaass [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] AAlliiaass with no arguments or with the --pp option prints the list of @@ -73,29 +73,31 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS bbiinndd [--mm _k_e_y_m_a_p] --xx _k_e_y_s_e_q:_s_h_e_l_l_-_c_o_m_m_a_n_d bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_f_u_n_c_t_i_o_n_-_n_a_m_e bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d + bbiinndd _r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d_-_l_i_n_e 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 ap- - pear 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'. Op- - tions, if supplied, have the following meanings: + pear in a rreeaaddlliinnee initialization file such as _._i_n_p_u_t_r_c, but + each binding or command must be passed as a separate argument; + e.g., '"\C-x\C-r": re-read-init-file'. Options, if supplied, + have the following meanings: --mm _k_e_y_m_a_p Use _k_e_y_m_a_p as the keymap to be affected by the subsequent bindings. Acceptable _k_e_y_m_a_p names are _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_- - _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, - and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d (_v_i_-_m_o_v_e - is also a synonym); _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_- + _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, + and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d (_v_i_-_m_o_v_e + is also a synonym); _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_- _d_a_r_d. --ll List the names of all rreeaaddlliinnee functions. - --pp Display rreeaaddlliinnee function names and bindings in such a + --pp Display rreeaaddlliinnee function names and bindings in such a way that they can be re-read. --PP List current rreeaaddlliinnee function names and bindings. - --ss Display rreeaaddlliinnee key sequences bound to macros and the - strings they output in such a way that they can be re- + --ss Display rreeaaddlliinnee key sequences bound to macros and the + strings they output in such a way that they can be re- read. - --SS Display rreeaaddlliinnee key sequences bound to macros and the + --SS Display rreeaaddlliinnee key sequences bound to macros and the strings they output. - --vv Display rreeaaddlliinnee variable names and values in such a way + --vv Display rreeaaddlliinnee variable names and values in such a way that they can be re-read. --VV List current rreeaaddlliinnee variable names and values. --ff _f_i_l_e_n_a_m_e @@ -108,14 +110,17 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 en- - tered. 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-- + tered. 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 and RREEAADDLLIINNEE__MMAARRKK - variables to the current location of the insertion point - and the saved insertion point (the mark), respectively. - If the executed command changes the value of any of RREEAADD-- - LLIINNEE__LLIINNEE, RREEAADDLLIINNEE__PPOOIINNTT, or RREEAADDLLIINNEE__MMAARRKK, those new - values will be reflected in the editing state. + variables to the current location of the insertion point + and the saved insertion point (the mark), respectively. + The shell assigns any numeric argument the user supplied + to the RREEAADDLLIINNEE__AARRGGUUMMEENNTT variable. If there was no argu- + ment, that variable is not set. If the executed command + changes the value of any of RREEAADDLLIINNEE__LLIINNEE, RREEAADD-- + LLIINNEE__PPOOIINNTT, or RREEAADDLLIINNEE__MMAARRKK, those new values will be + reflected in the editing state. --XX List all key sequences bound to shell commands and the associated commands in a format that can be reused as in- put. @@ -153,92 +158,94 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS ccdd [--LL|[--PP [--ee]] [-@]] [_d_i_r] Change the current directory to _d_i_r. if _d_i_r is not supplied, - the value of the HHOOMMEE shell variable is the default. Any addi- - tional arguments following _d_i_r are ignored. The variable CCDDPPAATTHH - defines the search path for the directory containing _d_i_r: each - directory name in CCDDPPAATTHH is searched for _d_i_r. Alternative di- - rectory names in CCDDPPAATTHH are separated by a colon (:). A null - directory name in CCDDPPAATTHH is the same as the current directory, - i.e., ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH is not - used. The --PP option causes ccdd to use the physical directory - structure by resolving symbolic links while traversing _d_i_r and - before processing instances of _._. in _d_i_r (see also the --PP option - to the sseett builtin command); the --LL option forces symbolic links - to be followed by resolving the link after processing instances - of _._. in _d_i_r. If _._. appears in _d_i_r, it is processed by removing - the immediately previous pathname component from _d_i_r, back to a - slash or the beginning of _d_i_r. If the --ee option is supplied - with --PP, and the current working directory cannot be success- - fully determined after a successful directory change, ccdd will - return an unsuccessful status. On systems that support it, the - --@@ option presents the extended attributes associated with a - file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD - before the directory change is attempted. If a non-empty direc- - tory name from CCDDPPAATTHH is used, or if -- is the first argument, - and the directory change is successful, the absolute pathname of - the new working directory is written to the standard output. - The return value is true if the directory was successfully - changed; false otherwise. + the value of the HHOOMMEE shell variable is the default. The vari- + able CCDDPPAATTHH defines the search path for the directory containing + _d_i_r: each directory name in CCDDPPAATTHH is searched for _d_i_r. Alter- + native directory names in CCDDPPAATTHH are separated by a colon (:). + A null directory name in CCDDPPAATTHH is the same as the current di- + rectory, i.e., ``..''. If _d_i_r begins with a slash (/), then CCDD-- + PPAATTHH is not used. The --PP option causes ccdd to use the physical + directory structure by resolving symbolic links while traversing + _d_i_r and before processing instances of _._. in _d_i_r (see also the + --PP option to the sseett builtin command); the --LL option forces sym- + bolic links to be followed by resolving the link after process- + ing instances of _._. in _d_i_r. If _._. appears in _d_i_r, it is pro- + cessed by removing the immediately previous pathname component + from _d_i_r, back to a slash or the beginning of _d_i_r. If the --ee + option is supplied with --PP, and the current working directory + cannot be successfully determined after a successful directory + change, ccdd will return an unsuccessful status. On systems that + support it, the --@@ option presents the extended attributes asso- + ciated with a file as a directory. An argument of -- is con- + verted to $$OOLLDDPPWWDD before the directory change is attempted. If + a non-empty directory name from CCDDPPAATTHH is used, or if -- is the + first argument, and the directory change is successful, the ab- + solute pathname of the new working directory is written to the + standard output. If the directory change is successful, ccdd sets + the value of the PPWWDD environment variable to the new directory + name, and sets the OOLLDDPPWWDD environment variable to the value of + the current working directory before the change. The return + value is true if the directory was successfully changed; false + otherwise. ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...] - Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function + Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function lookup. Only builtin commands or commands found in the PPAATTHH are - executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is - performed using a default value for PPAATTHH that is guaranteed to - find all of the standard utilities. If either the --VV or --vv op- - tion is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv - option causes a single word indicating the command or filename + 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 op- + tion is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv + option causes a single word indicating the command or filename 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 fa- + 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 fa- cilities, while available, will not have useful values. The matches will be generated in the same way as if the program- mable completion code had generated them directly from a comple- - tion specification with the same flags. If _w_o_r_d is specified, + tion specification with the same flags. If _w_o_r_d is specified, only those completions matching _w_o_r_d will be displayed. - The return value is true unless an invalid option is supplied, + The return value is true unless an invalid option is supplied, or no matches were generated. - ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- + ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- _p_a_t] [--WW _w_o_r_d_l_i_s_t] - [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_- + [--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 [--DDEEII] [_n_a_m_e ...] - Specify how arguments to each _n_a_m_e should be completed. If the - --pp option is supplied, or if no options are supplied, existing - completion specifications are printed in a way that allows them + 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 other sup- - plied options and actions should apply to the ``default'' com- - mand completion; that is, completion attempted on a command for - which no completion has previously been defined. The --EE option - indicates that other supplied options and actions should apply - to ``empty'' command completion; that is, completion attempted - on a blank line. The --II option indicates that other supplied - options and actions should apply to completion on the initial - non-assignment word on the line, or after a command delimiter - such as ;; or ||, which is usually command name completion. If - multiple options are supplied, the --DD option takes precedence + plied options and actions should apply to the ``default'' com- + mand completion; that is, completion attempted on a command for + which no completion has previously been defined. The --EE option + indicates that other supplied options and actions should apply + to ``empty'' command completion; that is, completion attempted + on a blank line. The --II option indicates that other supplied + options and actions should apply to completion on the initial + non-assignment word on the line, or after a command delimiter + such as ;; or ||, which is usually command name completion. If + multiple options are supplied, the --DD option takes precedence over --EE, and both take precedence over --II. If any of --DD, --EE, or - --II are supplied, any other _n_a_m_e arguments are ignored; these + --II are supplied, any other _n_a_m_e arguments are ignored; these completions only apply to the case specified by the option. - The process of applying these completion specifications when - word completion is attempted is described above under PPrrooggrraamm-- - mmaabbllee CCoommpplleettiioonn. + The process of applying these completion specifications when + word completion is attempted is described in _b_a_s_h_(_1_). Other options, if specified, have the following meanings. The arguments to the --GG, --WW, and --XX options (and, if necessary, the @@ -320,196 +327,197 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 - output is used as the possible completions. + output is used as the possible completions. Arguments + are passed as with the --FF option. --FF _f_u_n_c_t_i_o_n - The shell function _f_u_n_c_t_i_o_n is executed in the current - shell environment. When the function is executed, the + The shell function _f_u_n_c_t_i_o_n is executed in the current + shell environment. When the function is executed, the first argument ($$11) is the name of the command whose ar- guments are being completed, the second argument ($$22) is the word being completed, and the third argument ($$33) is - the word preceding the word being completed on the cur- - rent command line. When it finishes, the possible com- - pletions are retrieved from the value of the CCOOMMPPRREEPPLLYY + the word preceding the word being completed on the cur- + rent command line. 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. Shell quoting is honored within _w_o_r_d_l_i_s_t, + The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS + special variable as delimiters, and each resultant word + is expanded. Shell quoting is honored within _w_o_r_d_l_i_s_t, in order to provide a mechanism for the words to contain - shell metacharacters or characters in the value of IIFFSS. - The possible completions are the members of the resul- + shell metacharacters or characters in the value of IIFFSS. + The possible completions are the members of the resul- tant list which match the word being completed. --XX _f_i_l_t_e_r_p_a_t - _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion. + _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion. It is applied to the list of possible completions gener- - ated by the preceding options and arguments, and each - completion matching _f_i_l_t_e_r_p_a_t is removed from the list. - A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this + ated by the preceding options and arguments, and each + completion matching _f_i_l_t_e_r_p_a_t is removed from the list. + A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this case, any completion not matching _f_i_l_t_e_r_p_a_t is removed. - The return value is true unless an invalid option is supplied, - an option other than --pp or --rr is supplied without a _n_a_m_e argu- - ment, an attempt is made to remove a completion specification + The return value is true unless an invalid option is supplied, + an option other than --pp or --rr is supplied without a _n_a_m_e argu- + ment, an attempt is made to remove a completion specification for a _n_a_m_e for which no specification exists, or an error occurs adding a completion specification. ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEEII] [++oo _o_p_t_i_o_n] [_n_a_m_e] - Modify completion options for each _n_a_m_e according to the _o_p_- + 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 op- - tions 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 de- - scribed above. The --DD option indicates that other supplied op- - tions should apply to the ``default'' command completion; that - is, completion attempted on a command for which no completion + supplied. If no _o_p_t_i_o_ns are given, display the completion op- + tions 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 de- + scribed above. The --DD option indicates that other supplied op- + tions 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 other - supplied options should apply to ``empty'' command completion; - that is, completion attempted on a blank line. The --II option + supplied options should apply to ``empty'' command completion; + that is, completion attempted on a blank line. The --II option indicates that other supplied options should apply to completion - on the initial non-assignment word on the line, or after a com- - mand delimiter such as ;; or ||, which is usually command name + on the initial non-assignment word on the line, or after a com- + mand delimiter such as ;; or ||, which is usually command name completion. - The return value is true unless an invalid option is supplied, + 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 en- - closing loops, the last enclosing loop (the ``top-level'' loop) - is resumed. The return value is 0 unless _n is not greater than + sseelleecctt loop. If _n is specified, resume at the _nth enclosing + loop. _n must be >= 1. If _n is greater than the number of en- + closing 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 [--aaAAffFFggiiIIllnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] ttyyppeesseett [--aaAAffFFggiiIIllnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] - Declare variables and/or give them attributes. If no _n_a_m_es are - given then display the values of variables. The --pp option will + Declare variables and/or give them attributes. If no _n_a_m_es are + given then display the values of variables. The --pp option will display the attributes and values of each _n_a_m_e. When --pp is used - with _n_a_m_e arguments, additional options, other than --ff and --FF, - are ignored. When --pp is supplied without _n_a_m_e arguments, it - will display the attributes and values of all variables having + with _n_a_m_e arguments, additional options, other than --ff and --FF, + are ignored. When --pp is supplied without _n_a_m_e arguments, it + will display the attributes and values of all variables having the attributes specified by the additional options. If no other - options are supplied with --pp, ddeeccllaarree will display the at- - tributes and values of all shell variables. The --ff option will + options are supplied with --pp, ddeeccllaarree will display the at- + tributes and values of all shell variables. The --ff option will restrict the display to shell functions. The --FF option inhibits - the display of function definitions; only the function name and + the display of function definitions; only the function name and attributes are printed. If the eexxttddeebbuugg shell option is enabled - using sshhoopptt, the source file name and line number where each - _n_a_m_e is defined are displayed as well. The --FF option implies + using sshhoopptt, the source file name and line number where each + _n_a_m_e is defined are displayed as well. The --FF option implies --ff. The --gg option forces variables to be created or modified at the global scope, even when ddeeccllaarree is executed in a shell func- - tion. It is ignored in all other cases. The --II option causes - local variables to inherit the attributes (except the _n_a_m_e_r_e_f + tion. It is ignored in all other cases. The --II option causes + local variables to inherit the attributes (except the _n_a_m_e_r_e_f attribute) and value of any existing variable with the same _n_a_m_e - at a surrounding scope. If there is no existing variable, the + at a surrounding scope. If there is no existing variable, the local variable is initially unset. The following options can be - used to restrict output to variables with the specified attri- + used to restrict output to variables with the specified attri- bute or to give variables attributes: - --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 - above). + --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss in + _b_a_s_h_(_1_)). + --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss in + _b_a_s_h_(_1_)). --ff Use function names only. --ii The variable is treated as an integer; arithmetic evalua- - 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 + tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN in _b_a_s_h_(_1_)) 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 attribute is disabled. - --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name - reference to another variable. That other variable is - defined by the value of _n_a_m_e. All references, assign- - ments, and attribute modifications to _n_a_m_e, except those - using or changing the --nn attribute itself, are performed - on the variable referenced by _n_a_m_e's value. The nameref + --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name + reference to another variable. That other variable is + defined by the value of _n_a_m_e. All references, assign- + ments, and attribute modifications to _n_a_m_e, except those + using or changing the --nn attribute itself, are performed + on the variable referenced by _n_a_m_e's value. The nameref attribute cannot be applied to array variables. --rr Make _n_a_m_es readonly. These names cannot then be assigned values by subsequent assignment statements or unset. --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions in- - herit the DDEEBBUUGG and RREETTUURRNN traps from the calling shell. + herit 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 en- + --xx Mark _n_a_m_es for export to subsequent commands via the en- vironment. - Using `+' instead of `-' turns off the attribute instead, with - the exceptions that ++aa and ++AA may not be used to destroy array - variables and ++rr will not remove the readonly attribute. When + Using `+' instead of `-' turns off the attribute instead, with + the exceptions that ++aa and ++AA may not be used to destroy array + variables and ++rr will not remove the readonly attribute. When used in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e local, as - with the llooccaall command, unless the --gg option is supplied. If a - variable name is followed by =_v_a_l_u_e, the value of the variable - is set to _v_a_l_u_e. When using --aa or --AA and the compound assign- - ment syntax to create array variables, additional attributes do - not take effect until subsequent assignments. The return value + with the llooccaall command, unless the --gg option is supplied. If a + variable name is followed by =_v_a_l_u_e, the value of the variable + is set to _v_a_l_u_e. When using --aa or --AA and the compound assign- + ment syntax to create array variables, additional attributes do + not take effect until subsequent assignments. The return value is 0 unless an invalid option is encountered, an attempt is made to define a function using ``-f foo=bar'', an attempt is made to assign a value to a readonly variable, an attempt is made to as- sign a value to an array variable without using the compound as- - signment syntax (see AArrrraayyss above), one of the _n_a_m_e_s is not a - valid shell variable name, an attempt is made to turn off read- - only status for a readonly variable, an attempt is made to turn - off array status for an array variable, or an attempt is made to - display a non-existent function with --ff. + signment syntax (see AArrrraayyss in _b_a_s_h_(_1_)), 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 attempt is + made to display a non-existent function with --ff. ddiirrss [[--ccllppvv]] [[++_n]] [[--_n]] - Without options, displays the list of currently remembered di- - rectories. The default display is on a single line with direc- - tory names separated by spaces. Directories are added to the - list with the ppuusshhdd command; the ppooppdd command removes entries + Without options, displays the list of currently remembered di- + rectories. The default display is on a single line with direc- + tory names separated by spaces. Directories are added to the + list with the ppuusshhdd command; the ppooppdd command removes entries from the list. The current directory is always the first direc- tory in the stack. - --cc Clears the directory stack by deleting all of the en- + --cc Clears the directory stack by deleting all of the en- tries. - --ll Produces a listing using full pathnames; the default + --ll Produces a listing using full pathnames; the default listing format uses a tilde to denote the home directory. --pp Print the directory stack with one entry per line. - --vv Print the directory stack with one entry per line, pre- + --vv Print the directory stack with one entry per line, pre- fixing each entry with its index in the stack. ++_n Displays the _nth entry counting from the left of the list shown by ddiirrss when invoked without options, starting with zero. - --_n Displays the _nth entry counting from the right of the + --_n Displays the _nth entry counting from the right of the list shown by ddiirrss when invoked without options, starting with zero. - The return value is 0 unless an invalid option is supplied or _n + The return value is 0 unless an invalid option is supplied or _n indexes beyond the end of the directory stack. ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ... | _p_i_d ... ] - Without options, remove each _j_o_b_s_p_e_c from the table of active - jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr - option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option - is given, each _j_o_b_s_p_e_c is not removed from the table, but is - marked so that SSIIGGHHUUPP is not sent to the job if the shell re- + Without options, remove each _j_o_b_s_p_e_c from the table of active + jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr + option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option + is given, each _j_o_b_s_p_e_c is not removed from the table, but is + marked so that SSIIGGHHUUPP is not sent to the job if the shell re- ceives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option means - to remove or mark all jobs; the --rr option without a _j_o_b_s_p_e_c ar- + to remove or mark all jobs; the --rr option without a _j_o_b_s_p_e_c ar- gument restricts operation to running jobs. The return value is 0 unless a _j_o_b_s_p_e_c does not specify a valid job. eecchhoo [--nneeEE] [_a_r_g ...] - Output the _a_r_gs, separated by spaces, followed by a newline. - The return status is 0 unless a write error occurs. If --nn is + Output the _a_r_gs, separated by spaces, followed by a newline. + The return status is 0 unless a write error occurs. If --nn is specified, the trailing newline is suppressed. If the --ee option - is given, interpretation of the following backslash-escaped - characters is enabled. The --EE option disables the interpreta- - tion of these escape characters, even on systems where they are - interpreted by default. The xxppgg__eecchhoo shell option may be used - to dynamically determine whether or not eecchhoo expands these es- - cape characters by default. eecchhoo does not interpret ---- to mean - the end of options. eecchhoo interprets the following escape se- + is given, interpretation of the following backslash-escaped + characters is enabled. The --EE option disables the interpreta- + tion of these escape characters, even on systems where they are + interpreted by default. The xxppgg__eecchhoo shell option may be used + to dynamically determine whether or not eecchhoo expands these es- + cape characters by default. eecchhoo does not interpret ---- to mean + the end of options. eecchhoo interprets the following escape se- quences: \\aa alert (bell) \\bb backspace @@ -522,194 +530,200 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS \\tt horizontal tab \\vv vertical tab \\\\ backslash - \\00_n_n_n the eight-bit character whose value is the octal value + \\00_n_n_n the eight-bit character whose value is the octal value _n_n_n (zero to three octal digits) - \\xx_H_H the eight-bit character whose value is the hexadecimal + \\xx_H_H the eight-bit character whose value is the hexadecimal value _H_H (one or two hex digits) - \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the + \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _H_H_H_H (one to four hex digits) \\UU_H_H_H_H_H_H_H_H - the Unicode (ISO/IEC 10646) character whose value is the + the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits) eennaabbllee [--aa] [--ddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...] - Enable and disable builtin shell commands. Disabling a builtin + Enable and disable builtin shell commands. Disabling a builtin allows a disk command which has the same name as a shell builtin - to be executed without specifying a full pathname, even though - the shell normally searches for builtins before disk commands. - If --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are en- - abled. 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 + 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 en- + abled. 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 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. - 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 - error loading a new builtin from a shared object. + Bash will use the value of the BBAASSHH__LLOOAADDAABBLLEESS__PPAATTHH variable as a + colon-separated list of directories in which to search for _f_i_l_e_- + _n_a_m_e. The default is system-dependent. The --dd option will + delete a builtin previously loaded with --ff. If no _n_a_m_e argu- + ments are given, or if the --pp option is supplied, a list of + shell builtins is printed. With no other option arguments, the + list consists of all enabled shell builtins. If --nn is supplied, + only disabled builtins are printed. If --aa is supplied, the list + printed includes all builtins, with an indication of whether or + not each is enabled. If --ss is supplied, the output is re- + stricted to the POSIX _s_p_e_c_i_a_l builtins. If no options are sup- + plied and a _n_a_m_e is not a shell builtin, eennaabbllee will attempt to + load _n_a_m_e from a shared object named _n_a_m_e, as if the command + were ``enable -f _n_a_m_e _n_a_m_e . 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 _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 + _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 as the zeroth argument to the executed command. If _c_o_m_m_a_n_d can- - not be executed for some reason, a non-interactive shell exits, - unless the eexxeeccffaaiill shell option is enabled. In that case, it - returns failure. An interactive shell returns failure if the - file cannot be executed. A subshell exits unconditionally if - eexxeecc fails. If _c_o_m_m_a_n_d is not specified, any redirections take - effect in the current shell, and the return status is 0. If + not be executed for some reason, a non-interactive shell exits, + unless the eexxeeccffaaiill shell option is enabled. In that case, it + returns failure. An interactive shell returns failure if the + file cannot be executed. A subshell exits unconditionally if + eexxeecc fails. If _c_o_m_m_a_n_d is not specified, any redirections take + effect in the current shell, and the return status is 0. If there is a redirection error, the return status is 1. eexxiitt [_n] - Cause the shell to exit with a status of _n. If _n is omitted, + Cause the shell to exit with a status of _n. If _n is omitted, the exit status is that of the last command executed. A trap on EEXXIITT is executed before the shell terminates. eexxppoorrtt [--ffnn] [_n_a_m_e[=_w_o_r_d]] ... eexxppoorrtt --pp - The supplied _n_a_m_e_s are marked for automatic export to the envi- - ronment of subsequently executed commands. If the --ff option is - given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or - if the --pp option is supplied, a list of names of all exported - variables is printed. The --nn option causes the export property + The supplied _n_a_m_e_s are marked for automatic export to the envi- + ronment of subsequently executed commands. If the --ff option is + given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or + if the --pp option is supplied, a list of names of all exported + variables is printed. The --nn option causes the export property to be removed from each _n_a_m_e. If a variable name is followed by =_w_o_r_d, the value of the variable is set to _w_o_r_d. eexxppoorrtt returns an exit status of 0 unless an invalid option is encountered, one - of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- + of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- plied with a _n_a_m_e that is not a function. ffcc [--ee _e_n_a_m_e] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t] ffcc --ss [_p_a_t=_r_e_p] [_c_m_d] - The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t - from the history list and displays or edits and re-executes - them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate - the last command beginning with that string) or as a number (an - index into the history list, where a negative number is used as - an offset from the current command number). When listing, a - _f_i_r_s_t or _l_a_s_t of 0 is equivalent to -1 and -0 is equivalent to - the current command (usually the ffcc command); otherwise 0 is - equivalent to -1 and -0 is invalid. If _l_a_s_t is not specified, - it is set to the current command for listing (so that ``fc -l - -10'' prints the last 10 commands) and to _f_i_r_s_t otherwise. If - _f_i_r_s_t is not specified, it is set to the previous command for + The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t + from the history list and displays or edits and re-executes + them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate + the last command beginning with that string) or as a number (an + index into the history list, where a negative number is used as + an offset from the current command number). When listing, a + _f_i_r_s_t or _l_a_s_t of 0 is equivalent to -1 and -0 is equivalent to + the current command (usually the ffcc command); otherwise 0 is + equivalent to -1 and -0 is invalid. If _l_a_s_t is not specified, + it is set to the current command for listing (so that ``fc -l + -10'' prints the last 10 commands) and to _f_i_r_s_t otherwise. If + _f_i_r_s_t is not specified, 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. _C_o_m_m_a_n_d is interpreted the same as - _f_i_r_s_t above. A useful alias to use with this is ``r="fc -s"'', - so that typing ``r cc'' runs the last command beginning with + In the second form, _c_o_m_m_a_n_d is re-executed after each instance + of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is interpreted the same as + _f_i_r_s_t above. A useful alias to use with this is ``r="fc -s"'', + so that typing ``r cc'' runs the last command beginning with ``cc'' and typing ``r'' re-executes the last command. - If the first form is used, the return value is 0 unless an in- - valid 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 in- + valid 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 _._._.] - 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 ex- + 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 ex- pected 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 + 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 op- tion requires an argument, ggeettooppttss places that argument into the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automatically; - it must be manually reset between multiple calls to ggeettooppttss - within the same shell invocation if a new set of parameters is + it must be manually reset between multiple calls to ggeettooppttss + within the same shell invocation if a new set of parameters is to be used. When the end of options is encountered, ggeettooppttss exits with a re- turn 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 - arguments are supplied as _a_r_g values, ggeettooppttss parses those in- + ggeettooppttss normally parses the positional parameters, but if more + arguments are supplied as _a_r_g values, ggeettooppttss parses those in- stead. - 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 OOPP-- + not silent, prints an error message and unsets OOPPTTAARRGG. If + ggeettooppttss is silent, the option character found is placed in OOPP-- TTAARRGG and no diagnostic message is printed. - If a required argument is not found, and ggeettooppttss is not silent, - a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a - diagnostic message is printed. If ggeettooppttss is silent, then a - colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option + If a required argument is not found, and ggeettooppttss is not silent, + a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a + diagnostic message is printed. If ggeettooppttss is silent, then a + colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option character found. - ggeettooppttss returns true if an option, specified or unspecified, is + ggeettooppttss returns true if an option, specified or unspecified, is found. It returns false if the end of options is encountered or an error occurs. hhaasshh [--llrr] [--pp _f_i_l_e_n_a_m_e] [--ddtt] [_n_a_m_e] Each time hhaasshh is invoked, the full pathname of the command _n_a_m_e - is determined by searching the directories in $$PPAATTHH and remem- + is determined by searching the directories in $$PPAATTHH and remem- bered. Any previously-remembered pathname is discarded. If the --pp option is supplied, no path search is performed, and _f_i_l_e_n_a_m_e - is used as the full filename of the command. The --rr option + is used as the full filename of the command. The --rr option causes the shell to forget all remembered locations. The --dd op- - tion 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 arguments + tion 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 arguments are supplied with --tt, the _n_a_m_e is printed before the hashed full pathname. The --ll option causes output to be displayed in a for- - mat that may be reused as input. If no arguments are given, or + mat that may be reused as input. If no arguments are given, or if only --ll is supplied, information about remembered commands is - printed. The return status is true unless a _n_a_m_e is not found + 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 @@ -727,70 +741,70 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS hhiissttoorryy --ss _a_r_g [_a_r_g _._._.] With no options, display the command history list with line num- bers. Lines listed with a ** have been modified. An argument of - _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE-- - FFOORRMMAATT is set and not null, it is used as a format string for - _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis- - played history entry. No intervening blank is printed between - the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is - supplied, it is used as the name of the history file; if not, - the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the + _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE-- + FFOORRMMAATT is set and not null, it is used as a format string for + _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis- + played history entry. No intervening blank is printed between + the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is + supplied, it is used as the name of the history file; if not, + the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the following meanings: --cc Clear the history list by deleting all the entries. --dd _o_f_f_s_e_t - Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t + Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t is negative, it is interpreted as relative to one greater than the last history position, so negative indices count - back from the end of the history, and an index of -1 + back from the end of the history, and an index of -1 refers to the current hhiissttoorryy --dd command. --dd _s_t_a_r_t-_e_n_d - Delete the history entries between positions _s_t_a_r_t and - _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t - and _e_n_d are interpreted as described above. - --aa Append the ``new'' history lines to the history file. - These are history lines entered since the beginning of + Delete the range of history entries between positions + _s_t_a_r_t and _e_n_d, inclusive. Positive and negative values + for _s_t_a_r_t and _e_n_d are interpreted as described above. + --aa Append the ``new'' history lines to the history file. + These are history lines entered since the beginning of the current bbaasshh session, but not already appended to the history file. - --nn Read the history lines not already read from the history - file into the current history list. These are lines ap- - pended 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 ap- + pended to the history file since the beginning of the current bbaasshh session. - --rr Read the contents of the history file and append them to + --rr Read the contents of the history file and append them to the current history list. --ww Write the current history list to the history file, over- writing the history file's contents. - --pp Perform history substitution on the following _a_r_g_s and - display the result on the standard output. Does not - store the results in the history list. Each _a_r_g must be + --pp Perform history substitution on the following _a_r_g_s and + display the result on the standard output. Does not + store the results in the history list. Each _a_r_g must be quoted to disable normal history expansion. - --ss Store the _a_r_g_s in the history list as a single entry. - The last command in the history list is removed before + --ss Store the _a_r_g_s in the history list as a single entry. + The last command in the history list is removed before the _a_r_g_s are added. - If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa- - tion associated with each history entry is written to the his- - tory file, marked with the history comment character. When the - history file is read, lines beginning with the history comment - character followed immediately by a digit are interpreted as + If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa- + tion associated with each history entry is written to the his- + tory file, marked with the history comment character. When the + history file is read, lines beginning with the history comment + character followed immediately by a digit are interpreted as timestamps for the following history entry. The return value is 0 unless an invalid option is encountered, an error occurs while - reading or writing the history file, an invalid _o_f_f_s_e_t is sup- - plied as an argument to --dd, or the history expansion supplied as - an argument to --pp fails. + reading or writing the history file, an invalid _o_f_f_s_e_t or range + is supplied as an argument to --dd, or the history expansion sup- + plied as an argument to --pp fails. jjoobbss [--llnnpprrss] [ _j_o_b_s_p_e_c ... ] jjoobbss --xx _c_o_m_m_a_n_d [ _a_r_g_s ... ] The first form lists the active jobs. The options have the fol- lowing meanings: --ll List process IDs in addition to the normal information. - --nn Display information only about jobs that have changed + --nn Display information only about jobs that have changed status since the user was last notified of their status. - --pp List only the process ID of the job's process group + --pp List only the process ID of the job's process group leader. --rr Display only running jobs. --ss Display only stopped jobs. - If _j_o_b_s_p_e_c is given, output is restricted to information about - that job. The return status is 0 unless an invalid option is + If _j_o_b_s_p_e_c is given, output is restricted to information about + that job. The return status is 0 unless an invalid option is encountered or an invalid _j_o_b_s_p_e_c is supplied. If the --xx option is supplied, jjoobbss replaces any _j_o_b_s_p_e_c found in @@ -799,104 +813,113 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS kkiillll [--ss _s_i_g_s_p_e_c | --nn _s_i_g_n_u_m | --_s_i_g_s_p_e_c] [_p_i_d | _j_o_b_s_p_e_c] ... kkiillll --ll|--LL [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s] - Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes - named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive - signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or - a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not - present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the - signal names. If any arguments are supplied when --ll is given, - the names of the signals corresponding to the arguments are + Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes + named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive + signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or + a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not + present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the + signal names. If any arguments are supplied when --ll is given, + the names of the signals corresponding to the arguments are listed, and the return status is 0. The _e_x_i_t___s_t_a_t_u_s argument to - --ll is a number specifying either a signal number or the exit - status of a process terminated by a signal. The --LL option is - equivalent to --ll. kkiillll returns true if at least one signal was + --ll is a number specifying either a signal number or the exit + status of a process terminated by a signal. The --LL option is + equivalent to --ll. kkiillll returns true if at least one signal was successfully sent, or false if an error occurs or an invalid op- tion 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 - returns 1; 0 is returned otherwise. + MMEETTIICC EEVVAALLUUAATTIIOONN in _b_a_s_h_(_1_)). If the last _a_r_g evaluates to 0, + lleett returns 1; 0 is returned otherwise. llooccaall [_o_p_t_i_o_n] [_n_a_m_e[=_v_a_l_u_e] ... | - ] - For each argument, a local variable named _n_a_m_e is created, and - assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted + For each argument, a local variable named _n_a_m_e is created, and + assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted by ddeeccllaarree. When llooccaall is used within a function, it causes the - variable _n_a_m_e to have a visible scope restricted to that func- - tion and its children. If _n_a_m_e is -, the set of shell options - is made local to the function in which llooccaall is invoked: shell - options changed using the sseett builtin inside the function are - restored to their original values when the function returns. + variable _n_a_m_e to have a visible scope restricted to that func- + tion and its children. If _n_a_m_e is -, the set of shell options + is made local to the function in which llooccaall is invoked: shell + options changed using the sseett builtin inside the function are + restored to their original values when the function returns. The restore is effected as if a series of sseett commands were exe- - cuted to restore the values that were in place before the func- - tion. With no operands, llooccaall writes a list of local variables - to the standard output. It is an error to use llooccaall when not - within a function. The return status is 0 unless llooccaall is used - outside a function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a + cuted to restore the values that were in place before the func- + tion. With no operands, llooccaall writes a list of local variables + to the standard output. It is an error to use llooccaall when not + within a function. The return status is 0 unless llooccaall is used + outside a function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly variable. llooggoouutt Exit a login shell. - mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC + mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] rreeaaddaarrrraayy [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] - Read lines from the standard input into the indexed array vari- - able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup- - plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if + Read lines from the standard input into the indexed array vari- + able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup- + plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if supplied, have the following meanings: - --dd The first character of _d_e_l_i_m is used to terminate each - input line, rather than newline. If _d_e_l_i_m is the empty + --dd The first character of _d_e_l_i_m is used to terminate each + input line, rather than newline. If _d_e_l_i_m is the empty string, mmaappffiillee will terminate a line when it reads a NUL character. - --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are + --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are copied. - --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default + --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default index is 0. --ss Discard the first _c_o_u_n_t lines read. - --tt Remove a trailing _d_e_l_i_m (default newline) from each line + --tt Remove a trailing _d_e_l_i_m (default newline) from each line read. - --uu Read lines from file descriptor _f_d instead of the stan- + --uu Read lines from file descriptor _f_d instead of the stan- dard input. - --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The + --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The --cc option specifies _q_u_a_n_t_u_m. - --cc Specify the number of lines read between each call to + --cc Specify the number of lines read between each call to _c_a_l_l_b_a_c_k. - If --CC is specified without --cc, the default quantum is 5000. + If --CC is specified without --cc, the default quantum is 5000. When _c_a_l_l_b_a_c_k is evaluated, it is supplied the index of the next array element to be assigned and the line to be assigned to that - element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after + element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after the line is read but before the array element is assigned. - If not supplied with an explicit origin, mmaappffiillee will clear _a_r_- + 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 - the new top directory. Arguments, if supplied, have the follow- - ing meanings: + Removes entries from the directory stack. The elements are num- + bered from 0 starting at the first directory listed by ddiirrss. + With no arguments, ppooppdd removes the top directory from the + stack, and changes to the new top directory. Arguments, if sup- + plied, have the following meanings: --nn Suppresses the normal change of directory when removing directories from the stack, so that only the stack is ma- nipulated. ++_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. + shown by ddiirrss, starting with zero, from the stack. 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 - option is encountered, the directory stack is empty, a non-exis- - tent directory stack entry is specified, or the directory change - fails. + If the top element of the directory stack is modified, and the + _-_n option was not supplied, ppooppdd uses the ccdd builtin to change + to the directory at the top of the stack. If the ccdd fails, ppooppdd + returns a non-zero value. + + Otherwise, ppooppdd returns false if an invalid option is encoun- + tered, the directory stack is empty, or a non-existent directory + stack entry is specified. + + If the ppooppdd command is successful, bash runs ddiirrss to show the + final contents of the directory stack, and the return status is + 0. 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 @@ -915,15 +938,17 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee. %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a format that can be reused as shell input. + %%QQ like %%qq, but applies any supplied precision to the _a_r_g_u_- + _m_e_n_t before quoting it. %%((_d_a_t_e_f_m_t))TT - causes pprriinnttff to output the date-time string resulting - from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). + causes pprriinnttff to output the date-time string resulting + from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). The corresponding _a_r_g_u_m_e_n_t is an integer representing the - number of seconds since the epoch. Two special argument - values may be used: -1 represents the current time, and - -2 represents the time the shell was invoked. If no ar- + number of seconds since the epoch. Two special argument + values may be used: -1 represents the current time, and + -2 represents the time the shell was invoked. If no ar- gument is specified, conversion behaves as if -1 had been - given. This is an exception to the usual pprriinnttff behav- + given. This is an exception to the usual pprriinnttff behav- ior. The %b, %q, and %T directives all use the field width and preci- @@ -931,100 +956,104 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS bytes from (or use that wide a field for) the expanded argument, which usually contains more characters than the original. - Arguments to non-string format specifiers are treated as C con- + Arguments to non-string format specifiers are treated as C con- stants, except that a leading plus or minus sign is allowed, and - if the leading character is a single or double quote, the value + if the leading character is a single or double quote, the value is the ASCII value of the following character. - The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- + The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- _m_e_n_t_s. If the _f_o_r_m_a_t requires more _a_r_g_u_m_e_n_t_s than are supplied, - the extra format specifications behave as if a zero value or - null string, as appropriate, had been supplied. The return + the extra format specifications behave as if a zero value or + null string, as appropriate, had been supplied. The return value is zero on success, non-zero on failure. ppuusshhdd [--nn] [+_n] [-_n] ppuusshhdd [--nn] [_d_i_r] - Adds a directory to the top of the directory stack, or rotates - the stack, making the new top of the stack the current working - directory. With no arguments, ppuusshhdd exchanges the top two di- - rectories and returns 0, unless the directory stack is empty. - Arguments, if supplied, have the following meanings: - --nn Suppresses the normal change of directory when rotating - or adding directories to the stack, so that only the + Adds a directory to the top of the directory stack, or rotates + the stack, making the new top of the stack the current working + directory. With no arguments, ppuusshhdd exchanges the top two ele- + ments of the directory stack. Arguments, if supplied, have the + following meanings: + --nn Suppresses the normal change of directory when rotating + or adding directories to the stack, so that only the stack is manipulated. - ++_n Rotates the stack so that the _nth directory (counting - from the left of the list shown by ddiirrss, starting with + ++_n Rotates the stack so that the _nth directory (counting + from the left of the list shown by ddiirrss, starting with zero) is at the top. - --_n Rotates the stack so that the _nth directory (counting - from the right of the list shown by ddiirrss, starting with + --_n Rotates the stack so that the _nth directory (counting + from the right of the list shown by ddiirrss, starting with zero) is at the top. - _d_i_r Adds _d_i_r to the directory stack at the top, making it the - new current working directory as if it had been supplied - as the argument to the ccdd builtin. + _d_i_r Adds _d_i_r to the directory stack at the top + + After the stack has been modified, if the --nn option was not sup- + plied, ppuusshhdd uses the ccdd builtin to change to the directory at + the top of the stack. If the ccdd fails, ppuusshhdd returns a non-zero + value. - 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 - directory fails. + Otherwise, if no arguments are supplied, ppuusshhdd returns 0 unless + the directory stack is empty. When rotating the directory + stack, ppuusshhdd returns 0 unless the directory stack is empty or a + non-existent directory stack element is specified. + + If the ppuusshhdd command is successful, bash runs ddiirrss to show the + final contents of the directory stack. 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 + 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 in- valid 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 de- + One line is read from the standard input, or from the file de- scriptor _f_d supplied as an argument to the --uu option, split into - words as described above under WWoorrdd SSpplliittttiinngg, and the first - word is assigned to the first _n_a_m_e, the second word to the sec- - ond _n_a_m_e, and so on. If there are more words than names, the + words as described in _b_a_s_h_(_1_) under WWoorrdd SSpplliittttiinngg, and the + first word is assigned to the first _n_a_m_e, the second word to the + second _n_a_m_e, and so on. If there are more words than names, the remaining words and their intervening delimiters are assigned to - the last _n_a_m_e. If there are fewer words read from the input - stream than names, the remaining names are assigned empty val- - ues. The characters in IIFFSS are used to split the line into - words using the same rules the shell uses for expansion (de- - scribed above under WWoorrdd SSpplliittttiinngg). The backslash character - (\\) may be used to remove any special meaning for the next char- - acter read and for line continuation. Options, if supplied, + the last _n_a_m_e. If there are fewer words read from the input + stream than names, the remaining names are assigned empty val- + ues. The characters in IIFFSS are used to split the line into + words using the same rules the shell uses for expansion (de- + scribed in _b_a_s_h_(_1_) under WWoorrdd SSpplliittttiinngg). The backslash charac- + ter (\\) may be used to remove any special meaning for the next + character read and for line continuation. Options, if supplied, have the following meanings: --aa _a_n_a_m_e The words are assigned to sequential indices of the array variable _a_n_a_m_e, starting at 0. _a_n_a_m_e is unset before any - new values are assigned. Other _n_a_m_e arguments are ig- + new values are assigned. Other _n_a_m_e arguments are ig- nored. --dd _d_e_l_i_m The first character of _d_e_l_i_m is used to terminate the in- - put line, rather than newline. If _d_e_l_i_m is the empty - string, rreeaadd will terminate a line when it reads a NUL + put line, rather than newline. If _d_e_l_i_m is the empty + string, rreeaadd will terminate a line when it reads a NUL character. --ee If the standard input is coming from a terminal, rreeaaddlliinnee - (see RREEAADDLLIINNEE above) is used to obtain the line. Read- - line uses the current (or default, if line editing was - not previously active) editing settings, but uses Read- - line's default filename completion. + (see RREEAADDLLIINNEE in _b_a_s_h_(_1_)) is used to obtain the line. + Readline uses the current (or default, if line editing + was not previously active) editing settings, but uses + readline's default filename completion. --ii _t_e_x_t - If rreeaaddlliinnee is being used to read the line, _t_e_x_t is + If rreeaaddlliinnee is being used to read the line, _t_e_x_t is placed into the editing buffer before editing begins. --nn _n_c_h_a_r_s - rreeaadd returns after reading _n_c_h_a_r_s characters rather than + rreeaadd returns after reading _n_c_h_a_r_s characters rather than waiting for a complete line of input, but honors a delim- - iter if fewer than _n_c_h_a_r_s characters are read before the + iter if fewer than _n_c_h_a_r_s characters are read before the delimiter. --NN _n_c_h_a_r_s - rreeaadd returns after reading exactly _n_c_h_a_r_s characters - rather than waiting for a complete line of input, unless - EOF is encountered or rreeaadd times out. Delimiter charac- - ters encountered in the input are not treated specially - and do not cause rreeaadd to return until _n_c_h_a_r_s characters - are read. The result is not split on the characters in - IIFFSS; the intent is that the variable is assigned exactly + rreeaadd returns after reading exactly _n_c_h_a_r_s characters + rather than waiting for a complete line of input, unless + EOF is encountered or rreeaadd times out. Delimiter charac- + ters encountered in the input are not treated specially + and do not cause rreeaadd to return until _n_c_h_a_r_s characters + are read. The result is not split on the characters in + IIFFSS; the intent is that the variable is assigned exactly the characters read (with the exception of backslash; see the --rr option below). --pp _p_r_o_m_p_t @@ -1032,25 +1061,26 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS line, before attempting to read any input. The prompt is displayed only if input is coming from a terminal. --rr Backslash does not act as an escape character. The back- - slash is considered to be part of the line. In particu- - lar, a backslash-newline pair may not then be used as a + slash is considered to be part of the line. In particu- + lar, a backslash-newline pair may not then be used as a line continuation. --ss Silent mode. If input is coming from a terminal, charac- ters are not echoed. --tt _t_i_m_e_o_u_t - Cause rreeaadd to time out and return failure if a complete - line of input (or a specified number of characters) is - not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- - mal number with a fractional portion following the deci- - mal point. This option is only effective if rreeaadd is - reading input from a terminal, pipe, or other special - file; it has no effect when reading from regular files. + Cause rreeaadd to time out and return failure if a complete + line of input (or a specified number of characters) is + not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- + mal number with a fractional portion following the deci- + mal point. This option is only effective if rreeaadd is + reading input from a terminal, pipe, or other special + file; it has no effect when reading from regular files. If rreeaadd times out, rreeaadd saves any partial input read into - the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd re- - turns immediately, without trying to read any data. The - exit status is 0 if input is available on the specified - file descriptor, non-zero otherwise. The exit status is - greater than 128 if the timeout is exceeded. + the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd re- + turns immediately, without trying to read any data. The + exit status is 0 if input is available on the specified + file descriptor, or the read will return EOF, non-zero + 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, without the ending de- @@ -1098,18 +1128,18 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS associated with the RREETTUURRNN trap is executed before execution re- sumes after the function or script. - sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] - sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] - Without options, the name and value of each shell variable are - 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 op- - tions 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 - meanings: + 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, display the name and value of each shell vari- + able in a format that can be reused as input for setting or re- + setting the currently-set variables. Read-only variables cannot + 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 argu- + ments remaining after option processing are treated as values + for the positional parameters and are assigned, in order, to $$11, + $$22, ...... $$_n. Options, if specified, have the following mean- + ings: --aa Each variable or function that is created or modified is given the export attribute and marked for export to the environment of subsequent commands. @@ -1118,22 +1148,22 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS is effective only when job control is enabled. --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d - (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 !!. If a - compound command other than a subshell returns a non- - zero status because a command failed while --ee was being - ignored, the shell does not exit. A trap on EERRRR, if - set, is executed before the shell exits. This option + (see SSHHEELLLL GGRRAAMMMMAARR in _b_a_s_h_(_1_)), 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 fi- + nal &&&& or ||||, any command in a pipeline but the last, or + if the command's return value is being inverted with !!. + If a compound command other than a subshell returns a + non-zero status because a command failed while --ee was + being ignored, the shell does not exit. A trap on EERRRR, + if set, is executed before the shell exits. This option applies to the shell environment and each subshell envi- - ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT - above), and may cause subshells to exit before executing - all the commands in the subshell. + ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT in + _b_a_s_h_(_1_)), and may cause subshells to exit before execut- + ing all the commands in the subshell. If a compound command or shell function executes in a context where --ee is being ignored, none of the commands @@ -1152,10 +1182,10 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS that precede the command name. --mm Monitor mode. Job control is enabled. This option is on by default for interactive shells on systems that - support it (see JJOOBB CCOONNTTRROOLL above). All processes run - in a separate process group. When a background job com- - pletes, the shell prints a line containing its exit sta- - tus. + support it (see JJOOBB CCOONNTTRROOLL in _b_a_s_h_(_1_)). All processes + run in a separate process group. When a background job + completes, the shell prints a line containing its exit + status. --nn Read commands but do not execute them. This may be used to check a shell script for syntax errors. This is ig- nored by interactive shells. @@ -1178,13 +1208,13 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS hhaasshhaallll Same as --hh. hhiisstteexxppaanndd Same as --HH. - hhiissttoorryy Enable command history, as described above under - HHIISSTTOORRYY. This option is on by default in inter- - active shells. + hhiissttoorryy Enable command history, as described in _b_a_s_h_(_1_) + under HHIISSTTOORRYY. This option is on by default in + interactive shells. iiggnnoorreeeeooff The effect is as if the shell command ``IG- NOREEOF=10'' had been executed (see SShheellll VVaarrii-- - aabblleess above). + aabblleess in _b_a_s_h_(_1_)). kkeeyywwoorrdd Same as --kk. mmoonniittoorr Same as --mm. nnoocclloobbbbeerr @@ -1206,8 +1236,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS ppoossiixx Change the behavior of bbaasshh where the default operation differs from the POSIX standard to match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO - below for a reference to a document that details - how posix mode affects bash's behavior. + in _b_a_s_h_(_1_) for a reference to a document that + details how posix mode affects bash's behavior. pprriivviilleeggeedd Same as --pp. vveerrbboossee Same as --vv. @@ -1232,9 +1262,12 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + --rr Enable restricted shell mode. This option cannot be un- + set once it has been set. --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 + cial parameters "@" and "*", or array variables sub- + scripted with "@" or "*", 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 @@ -1245,7 +1278,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 - above). This is on by default. + in _b_a_s_h_(_1_)). This is on by default. --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- @@ -1353,8 +1386,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 ex- - iting if any jobs are stopped. + (see JJOOBB CCOONNTTRROOLL in _b_a_s_h_(_1_)). The shell always post- + pones exiting if any jobs are stopped. cchheecckkwwiinnssiizzee If set, bbaasshh checks the window size after each external (non-builtin) command and, if necessary, updates the @@ -1364,7 +1397,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS line command in the same history entry. This allows easy re-editing of multi-line commands. This option is enabled by default, but only has an effect if command - history is enabled, as described above under HHIISSTTOORRYY. + history is enabled, as described in _b_a_s_h_(_1_) under HHIISS-- + TTOORRYY. ccoommppaatt3311 ccoommppaatt3322 ccoommppaatt4400 @@ -1372,117 +1406,123 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS ccoommppaatt4422 ccoommppaatt4433 ccoommppaatt4444 - These control aspects of the shell's compatibility mode - (see SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE below). + ccoommppaatt5500 + These control aspects of the shell's compatibility mode + (see SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE in _b_a_s_h_(_1_)). ccoommpplleettee__ffuullllqquuoottee - If set, bbaasshh quotes all shell metacharacters in file- - names and directory names when performing completion. + If set, bbaasshh quotes all shell metacharacters in file- + names and directory names when performing completion. If not set, bbaasshh removes metacharacters such as the dol- - lar sign from the set of characters that will be quoted - in completed filenames when these metacharacters appear - in shell variable references in words to be completed. - This means that dollar signs in variable names that ex- - pand to directories will not be quoted; however, any - dollar signs appearing in filenames will not be quoted, - either. This is active only when bash is using back- - slashes to quote completed filenames. This variable is - set by default, which is the default bash behavior in + lar sign from the set of characters that will be quoted + in completed filenames when these metacharacters appear + in shell variable references in words to be completed. + This means that dollar signs in variable names that ex- + pand to directories will not be quoted; however, any + dollar signs appearing in filenames will not be quoted, + either. This is active only when bash is using back- + slashes to quote completed filenames. This variable is + set by default, which is the default bash behavior in versions through 4.2. ddiirreexxppaanndd - If set, bbaasshh replaces directory names with the results - of word expansion when performing filename completion. - This changes the contents of the readline editing buf- - fer. If not set, bbaasshh attempts to preserve what the + If set, bbaasshh replaces directory names with the results + of word expansion when performing filename completion. + This changes the contents of the readline editing buf- + fer. If not set, bbaasshh attempts to preserve what the user typed. ddiirrssppeellll - If set, bbaasshh attempts spelling correction on directory - names during word completion if the directory name ini- + If set, bbaasshh attempts spelling correction on directory + names during word completion if the directory name ini- tially supplied does not exist. - ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in - the results of pathname expansion. The filenames ````..'''' - and ````....'''' must always be matched explicitly, even if + ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in + the results of pathname expansion. The filenames ````..'''' + and ````....'''' must always be matched explicitly, even if ddoottgglloobb is set. eexxeeccffaaiill If set, a non-interactive shell will not exit if it can- - not execute the file specified as an argument to the - eexxeecc builtin command. An interactive shell does not + not execute the file specified as an argument to the + eexxeecc builtin command. An interactive shell does not exit if eexxeecc fails. eexxppaanndd__aalliiaasseess - If set, aliases are expanded as described above under - AALLIIAASSEESS. This option is enabled by default for interac- - tive shells. + If set, aliases are expanded as described in _b_a_s_h_(_1_) un- + der AALLIIAASSEESS. This option is enabled by default for in- + teractive shells. eexxttddeebbuugg - If set at shell invocation, or in a shell startup file, + If set at shell invocation, or in a shell startup file, arrange to execute the debugger profile before the shell - starts, identical to the ----ddeebbuuggggeerr option. If set af- - ter invocation, behavior intended for use by debuggers + starts, identical to the ----ddeebbuuggggeerr option. If set af- + ter invocation, 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), the shell + 33.. If the command run by the DDEEBBUUGG trap returns a + value of 2, and the shell is executing in a sub- + routine (a shell function or a shell script exe- + cuted by the .. or ssoouurrccee builtins), the shell simulates a call to rreettuurrnn. - 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described - in their descriptions above. + 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described + in their descriptions in _b_a_s_h_(_1_)). - 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. + in _b_a_s_h_(_1_) 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 de- - scription of FFIIGGNNOORREE. This option is enabled by de- + ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS in _b_a_s_h_(_1_) for a + description of FFIIGGNNOORREE. This option is enabled by de- fault. gglloobbaasscciiiirraannggeess - If set, range expressions used in pattern matching - bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave - as if in the traditional C locale when performing com- - parisons. That is, the current locale's collating se- - quence is not taken into account, so bb will not collate - between AA and BB, and upper-case and lower-case ASCII - characters will collate together. + If set, range expressions used in pattern matching + bracket expressions (see PPaatttteerrnn MMaattcchhiinngg in _b_a_s_h_(_1_)) + behave as if in the traditional C locale when performing + comparisons. That is, the current locale's collating + sequence is not taken into account, so bb will not col- + late between AA and BB, and upper-case and lower-case + ASCII characters will collate together. + + gglloobbsskkiippddoottss + If set, pathname expansion will never match the file- + names ````..'''' and ````....'''', even if the pattern begins with + a ````..''''. This option is enabled by default. gglloobbssttaarr If set, the pattern **** used in a pathname expansion con- - text will match all files and zero or more directories - and subdirectories. If the pattern is followed by a //, + text will match all files and zero or more directories + and subdirectories. If the pattern is followed by a //, only directories and subdirectories match. ggnnuu__eerrrrffmmtt @@ -1490,49 +1530,49 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS GNU error message format. hhiissttaappppeenndd - If set, the history list is appended to the file named + If set, the history list is appended to the file named by the value of the HHIISSTTFFIILLEE variable when the shell ex- its, 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 - above). This is enabled by default. + perform hostname completion when a word containing a @@ + is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE in + _b_a_s_h_(_1_)). This is enabled by default. hhuuppoonneexxiitt If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter- active login shell exits. iinnhheerriitt__eerrrreexxiitt - If set, command substitution inherits the value of the - eerrrreexxiitt option, instead of unsetting it in the subshell - environment. This option is enabled when _p_o_s_i_x _m_o_d_e is + If set, command substitution inherits the value of the + eerrrreexxiitt option, instead of unsetting it in the subshell + environment. This option is enabled when _p_o_s_i_x _m_o_d_e is enabled. iinntteerraaccttiivvee__ccoommmmeennttss If set, allow a word beginning with ## to cause that word - and all remaining characters on that line to be ignored - in an interactive shell (see CCOOMMMMEENNTTSS above). This op- - tion is enabled by default. + and all remaining characters on that line to be ignored + in an interactive shell (see CCOOMMMMEENNTTSS in _b_a_s_h_(_1_)). 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. @@ -1543,49 +1583,60 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS tribute is not inherited. llooccaallvvaarr__uunnsseett - If set, calling uunnsseett on local variables in previous - function scopes marks them so subsequent lookups find - them unset until that function returns. This is identi- - cal to the behavior of unsetting local variables at the + If set, calling uunnsseett on local variables in previous + function scopes marks them so subsequent lookups find + them unset until that function returns. This is identi- + cal to the behavior of unsetting local variables at the current function scope. llooggiinn__sshheellll - The shell sets this option if it is started as a login - shell (see IINNVVOOCCAATTIIOONN above). The value may not be + The shell sets this option if it is started as a login + shell (see IINNVVOOCCAATTIIOONN in _b_a_s_h_(_1_)). 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 at- - tempt to search the PPAATTHH for possible completions when + If set, and rreeaaddlliinnee is being used, bbaasshh will not at- + tempt 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). + EExxppaannssiioonn in _b_a_s_h_(_1_)). nnooccaasseemmaattcchh - If set, bbaasshh matches patterns in a case-insensitive + If set, bbaasshh matches patterns in a case-insensitive fashion when performing matching while executing ccaassee or [[[[ conditional commands, when performing pattern substi- - tution word expansions, or when filtering possible com- + tution word expansions, or when filtering possible com- pletions as part of programmable completion. + nnooeexxppaanndd__ttrraannssllaattiioonn + If set, bbaasshh encloses the translated results of $"..." + quoting in single quotes instead of double quotes. If + the string is not translated, this has no effect. + nnuullllgglloobb - If set, bbaasshh allows patterns which match no files (see - PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string, - rather than themselves. + If set, bbaasshh allows patterns which match no files (see + PPaatthhnnaammee EExxppaannssiioonn in _b_a_s_h_(_1_)) to expand to a null + string, rather than themselves. + + ppaattssuubb__rreeppllaacceemmeenntt + If set, bbaasshh expands occurrences of && in the replacement + string of pattern substitution to the text matched by + the pattern, as described under PPaarraammeetteerr EExxppaannssiioonn in + _b_a_s_h_(_1_). This option is enabled by default. pprrooggccoommpp If set, the programmable completion facilities (see PPrroo-- - ggrraammmmaabbllee CCoommpplleettiioonn above) are enabled. This option is - enabled by default. + ggrraammmmaabbllee CCoommpplleettiioonn in _b_a_s_h_(_1_)) are enabled. This op- + tion is enabled by default. pprrooggccoommpp__aalliiaass If set, and programmable completion is enabled, bbaasshh @@ -1597,15 +1648,15 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS pprroommppttvvaarrss If set, prompt strings undergo parameter expansion, com- mand substitution, arithmetic expansion, and quote re- - moval after being expanded as described in PPRROOMMPPTTIINNGG - above. This option is enabled by default. + moval after being expanded as described in PPRROOMMPPTTIINNGG in + _b_a_s_h_(_1_). This option is enabled by default. rreessttrriicctteedd__sshheellll The shell sets this option if it is started in re- - stricted 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- - cover whether or not a shell is restricted. + stricted mode (see RREESSTTRRIICCTTEEDD SSHHEELLLL in _b_a_s_h_(_1_)). The + value may not be changed. This is not reset when the + startup files are executed, allowing the startup files + to discover whether or not a shell is restricted. sshhiifftt__vveerrbboossee If set, the sshhiifftt builtin prints an error message when @@ -1613,38 +1664,44 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS ters. ssoouurrcceeppaatthh - If set, the ssoouurrccee (..) builtin uses the value of PPAATTHH to + If set, the .. (ssoouurrccee) builtin uses the value of PPAATTHH to find the directory containing the file supplied as an argument. This option is enabled by default. + vvaarrrreeddiirr__cclloossee + If set, the shell automatically closes file descriptors + assigned using the _{_v_a_r_n_a_m_e_} redirection syntax (see RREE-- + DDIIRREECCTTIIOONN in _b_a_s_h_(_1_)) instead of leaving them open when + the command completes. + xxppgg__eecchhoo - If set, the eecchhoo builtin expands backslash-escape se- + If set, the eecchhoo builtin expands backslash-escape se- quences by default. ssuussppeenndd [--ff] - 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- - plied, or if job control is not enabled. + Suspend the execution of this shell until it receives a SSIIGGCCOONNTT + signal. A login shell, or a shell without job control enabled, + cannot be suspended; the --ff option can be used to override this + and force the suspension. The return status is 0 unless the + shell is a login shell or job control is not enabled and --ff is + not supplied. tteesstt _e_x_p_r [[ _e_x_p_r ]] Return a status of 0 (true) or 1 (false) depending on the evalu- ation of the conditional expression _e_x_p_r. Each operator and op- erand must be a separate argument. Expressions are composed of - the primaries described in the bbaasshh manual page under CCOONNDDII-- - TTIIOONNAALL 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, - listed in decreasing order of precedence. The evaluation de- - pends on the number of arguments; see below. Operator prece- + the primaries described in _b_a_s_h_(_1_) under CCOONNDDIITTIIOONNAALL EEXXPPRREESS-- + SSIIOONNSS. 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, + listed in decreasing order of precedence. The evaluation de- + pends on the number of arguments; see below. Operator prece- dence is used when there are five or more arguments. !! _e_x_p_r True if _e_x_p_r is false. (( _e_x_p_r )) - Returns the value of _e_x_p_r. This may be used to override + Returns the value of _e_x_p_r. This may be used to override the normal precedence of operators. _e_x_p_r_1 -aa _e_x_p_r_2 True if both _e_x_p_r_1 and _e_x_p_r_2 are true. @@ -1661,135 +1718,139 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS null. 2 arguments If the first argument is !!, the expression is true if and - only if the second argument is null. If the first argu- - ment is one of the unary conditional operators listed - above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expression is + only if the second argument is null. If the first argu- + ment is one of the unary conditional operators listed in + _b_a_s_h_(_1_) under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expression is true if the unary test is true. If the first argument is not a valid unary conditional operator, the expression is false. 3 arguments The following conditions are applied in the order listed. - If the second argument is one of the binary conditional - 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 - 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- - wise, the expression is false. + If the second argument is one of the binary conditional + operators listed in _b_a_s_h_(_1_) under CCOONNDDIITTIIOONNAALL EEXXPPRREESS-- + SSIIOONNSS, the result of the expression is the result of the + binary test using the first and third arguments as oper- + ands. The --aa and --oo operators are considered binary op- + erators when there are three arguments. If the first ar- + gument is !!, the value is the negation of the two-argu- + ment test using the second and third arguments. If the + first argument is exactly (( and the third argument is ex- + actly )), the result is the one-argument test of the sec- + ond argument. Otherwise, the expression is false. 4 arguments + The following conditions are applied in the order listed. If the first argument is !!, the result is the negation of the three-argument expression composed of the remaining - arguments. Otherwise, the expression is parsed and eval- - uated according to precedence using the rules listed - above. + arguments. the two-argument test using the second and + third arguments. If the first argument is exactly (( and + the fourth argument is exactly )), the result is the two- + argument test of the second and third arguments. Other- + wise, the expression is parsed and evaluated according to + precedence using the rules listed above. 5 or more arguments - The expression is parsed and evaluated according to + The expression is parsed and evaluated according to precedence using the rules listed above. - When used with tteesstt or [[, the << and >> operators sort lexico- + When used with tteesstt or [[, the << and >> operators sort lexico- graphically using ASCII ordering. - ttiimmeess Print the accumulated user and system times for the shell and + ttiimmeess Print the accumulated user and system times for the shell and for processes run from the shell. The return status is 0. ttrraapp [--llpp] [[_a_r_g] _s_i_g_s_p_e_c ...] - The command _a_r_g is to be read and executed when the shell re- + The command _a_r_g is to be read and executed when the shell re- ceives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a sin- - gle _s_i_g_s_p_e_c) or --, each specified signal is reset to its origi- - nal 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 + gle _s_i_g_s_p_e_c) or --, each specified signal is reset to its origi- + nal 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 com- - mands associated with each signal. The --ll option causes the - shell to print a list of signal names and their corresponding - 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 + supplied or if only --pp is given, ttrraapp prints the list of com- + mands associated with each signal. The --ll option causes the + shell to print a list of signal names and their corresponding + 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 - sshhoopptt builtin for details of its effect on the DDEEBBUUGG trap. If a - _s_i_g_s_p_e_c is RREETTUURRNN, the command _a_r_g is executed each time a shell - function or a script executed with the .. or ssoouurrccee builtins fin- - ishes executing. - - If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a + If a _s_i_g_s_p_e_c is 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 in + _b_a_s_h_(_1_)). 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 finishes executing. + + If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a pipeline (which may consist of a single simple command), a list, or a compound command returns a non-zero exit status, subject to - the following conditions. The EERRRR trap is not executed if the + the following conditions. The EERRRR trap is not executed if the failed command is part of the command list immediately following - a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement, + a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement, part of a command executed in a &&&& or |||| list except the command - following the final &&&& or ||||, any command in a pipeline but the - last, or if the command's return value is being inverted using + following the final &&&& or ||||, any command in a pipeline but the + last, or if the command's return value is being inverted using !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) op- tion. Signals ignored upon entry to the shell cannot be trapped or re- - set. Trapped signals that are not being ignored are reset to + set. 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 re- - turned. 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 specified - as a command name, or nothing if ``type -t name'' would not re- - turn _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e, + 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 re- + turned. 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 specified + as a command name, or nothing if ``type -t name'' would not re- + turn _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e, even if ``type -t name'' would not return _f_i_l_e. If a command is hashed, --pp and --PP print the hashed value, which is not necessar- - ily the file that appears first in PPAATTHH. If the --aa option is - used, ttyyppee prints all of the places that contain an executable + ily the file that appears first in PPAATTHH. If the --aa option is + used, ttyyppee prints all of the places that contain an executable named _n_a_m_e. This includes aliases and functions, if and only if the --pp option is not also used. The table of hashed commands is - not consulted when using --aa. The --ff option suppresses shell + not consulted when using --aa. The --ff option suppresses shell function lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true if all of the arguments are found, false if any are not found. uulliimmiitt [--HHSS] --aa uulliimmiitt [--HHSS] [--bbccddeeffiikkllmmnnppqqrrssttuuvvxxPPRRTT [_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, re- - spectively. If _l_i_m_i_t is omitted, the current value of the soft + current hard limit, the current soft limit, and no limit, re- + spectively. 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, if appropriate, are printed before the value. Other op- + When more than one resource is specified, the limit name and + unit, if appropriate, are printed before the value. Other op- tions are interpreted as follows: --aa All current limits are reported; no limits are set --bb The maximum socket buffer size --cc The maximum size of core files created --dd The maximum size of a process's data segment --ee The maximum scheduling priority ("nice") - --ff The maximum size of files written by the shell and its + --ff The maximum size of files written by the shell and its children --ii The maximum number of pending signals --kk The maximum number of kqueues that may be allocated --ll The maximum size that may be locked into memory - --mm The maximum resident set size (many systems do not honor + --mm The maximum resident set size (many systems do not honor this limit) --nn The maximum number of open file descriptors (most systems do not allow this value to be set) @@ -1798,132 +1859,134 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS --rr The maximum real-time scheduling priority --ss The maximum stack size --tt The maximum amount of cpu time in seconds - --uu The maximum number of processes available to a single + --uu The maximum number of processes available to a single user - --vv The maximum amount of virtual memory available to the + --vv The maximum amount of virtual memory available to the shell and, on some systems, to its children --xx The maximum number of file locks --PP The maximum number of pseudoterminals - --RR The maximum time a real-time process can run before + --RR The maximum time a real-time process can run before blocking, in microseconds --TT The maximum number of threads - If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the - new value of the specified resource. If no option is given, - then --ff is assumed. Values are in 1024-byte increments, except - for --tt, which is in seconds; --RR, which is in microseconds; --pp, - which is in units of 512-byte blocks; --PP, --TT, --bb, --kk, --nn, and - --uu, which are unscaled values; and, when in posix mode, --cc and - --ff, which are in 512-byte increments. The return status is 0 - unless an invalid option or argument is supplied, or an error + If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the + new value of the specified resource. If no option is given, + then --ff is assumed. Values are in 1024-byte increments, except + for --tt, which is in seconds; --RR, which is in microseconds; --pp, + which is in units of 512-byte blocks; --PP, --TT, --bb, --kk, --nn, and + --uu, which are unscaled values; and, when in posix mode, --cc and + --ff, which are in 512-byte increments. 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] [-nn] [_n_a_m_e ...] - For each _n_a_m_e, remove the corresponding variable or function. + For each _n_a_m_e, remove the corresponding variable or function. If the --vv option is given, each _n_a_m_e refers to a shell variable, - and that variable is removed. Read-only variables may not be - unset. If --ff is specified, each _n_a_m_e refers to a shell func- - tion, and the function definition is removed. If the --nn option - is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, - _n_a_m_e will be unset rather than the variable it references. --nn - has no effect if the --ff option is supplied. If no options are - supplied, each _n_a_m_e refers to a variable; if there is no vari- - able by that name, a function with that name, if any, is unset. - Each unset variable or function is removed from the environment - passed to subsequent commands. If any of BBAASSHH__AALLIIAASSEESS, + and that variable is removed. Read-only variables may not be + unset. If --ff is specified, each _n_a_m_e refers to a shell func- + tion, and the function definition is removed. If the --nn option + is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, + _n_a_m_e will be unset rather than the variable it references. --nn + has no effect if the --ff option is supplied. If no options are + supplied, each _n_a_m_e refers to a variable; if there is no vari- + able by that name, a function with that name, if any, is unset. + Each unset variable or function is removed from the environment + passed to subsequent commands. If any of BBAASSHH__AALLIIAASSEESS, BBAASSHH__AARRGGVV00, BBAASSHH__CCMMDDSS, BBAASSHH__CCOOMMMMAANNDD, BBAASSHH__SSUUBBSSHHEELLLL, BBAASSHHPPIIDD, - CCOOMMPP__WWOORRDDBBRREEAAKKSS, DDIIRRSSTTAACCKK, EEPPOOCCHHRREEAALLTTIIMMEE, EEPPOOCCHHSSEECCOONNDDSS, FFUUNNCC-- - NNAAMMEE, GGRROOUUPPSS, HHIISSTTCCMMDD, LLIINNEENNOO, RRAANNDDOOMM, SSEECCOONNDDSS, or SSRRAANNDDOOMM are + CCOOMMPP__WWOORRDDBBRREEAAKKSS, DDIIRRSSTTAACCKK, EEPPOOCCHHRREEAALLTTIIMMEE, EEPPOOCCHHSSEECCOONNDDSS, FFUUNNCC-- + NNAAMMEE, GGRROOUUPPSS, HHIISSTTCCMMDD, LLIINNEENNOO, RRAANNDDOOMM, SSEECCOONNDDSS, or SSRRAANNDDOOMM are unset, they lose their special properties, even if they are sub- sequently reset. The exit status is true unless a _n_a_m_e is read- - only. + only or may not be unset. wwaaiitt [--ffnn] [--pp _v_a_r_n_a_m_e] [_i_d _._._.] Wait for each specified child process and return its termination - status. Each _i_d may be a process ID or a job specification; if - a job spec is given, all processes in that job's pipeline are - waited for. If _i_d is not given, wwaaiitt waits for all running - background jobs and the last-executed process substitution, if + status. Each _i_d may be a process ID or a job specification; if + a job spec is given, all processes in that job's pipeline are + waited for. If _i_d is not given, wwaaiitt waits for all running + background jobs and the last-executed process substitution, if its process id is the same as $$!!, and the return status is zero. - If the --nn option is supplied, wwaaiitt waits for a single job from + If the --nn option is supplied, wwaaiitt waits for a single job from the list of _i_ds or, if no _i_ds are supplied, any job, to complete - and returns its exit status. If none of the supplied arguments + and returns its exit status. If none of the supplied arguments is a child of the shell, or if no arguments are supplied and the - shell has no unwaited-for children, the exit status is 127. If - the --pp option is supplied, the process or job identifier of the - job for which the exit status is returned is assigned to the - variable _v_a_r_n_a_m_e named by the option argument. The variable - will be unset initially, before any assignment. This is useful - only when the --nn option is supplied. Supplying the --ff option, - when job control is enabled, forces wwaaiitt to wait for _i_d to ter- + shell has no unwaited-for children, the exit status is 127. If + the --pp option is supplied, the process or job identifier of the + job for which the exit status is returned is assigned to the + variable _v_a_r_n_a_m_e named by the option argument. The variable + will be unset initially, before any assignment. This is useful + only when the --nn option is supplied. Supplying the --ff option, + when job control is enabled, forces wwaaiitt to wait for _i_d to ter- minate before returning its status, instead of returning when it - changes status. If _i_d specifies a non-existent process or job, - the return status is 127. Otherwise, the return status is the - exit status of the last process or job waited for. + changes status. If _i_d specifies a non-existent process or job, + the return status is 127. If wwaaiitt is interrupted by a signal, + the return status will be greater than 128, as described under + SSIIGGNNAALLSS in _b_a_s_h_(_1_). Otherwise, the return status is the exit + status of the last process or job waited for. SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE - Bash-4.0 introduced the concept of a `shell compatibility level', spec- - ified as a set of options to the shopt builtin ccoommppaatt3311, ccoommppaatt3322, ccoomm-- - ppaatt4400, ccoommppaatt4411, and so on). There is only one current compatibility - level -- each option is mutually exclusive. The compatibility level is - intended to allow users to select behavior from previous versions that - is incompatible with newer versions while they migrate scripts to use - current features and behavior. It's intended to be a temporary solu- - tion. - - This section does not mention behavior that is standard for a particu- - lar version (e.g., setting ccoommppaatt3322 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). - - If a user enables, say, ccoommppaatt3322, it may affect the behavior of other - compatibility levels up to and including the current compatibility - level. The idea is that each compatibility level controls behavior - that changed in that version of bbaasshh, but that behavior may have been - present in earlier versions. For instance, the change to use locale- - based comparisons with the [[[[ command came in bash-4.1, and earlier + Bash-4.0 introduced the concept of a _s_h_e_l_l _c_o_m_p_a_t_i_b_i_l_i_t_y _l_e_v_e_l, speci- + fied as a set of options to the shopt builtin ( ccoommppaatt3311, ccoommppaatt3322, + ccoommppaatt4400, ccoommppaatt4411, and so on). There is only one current compatibil- + ity level -- each option is mutually exclusive. The compatibility + level is intended to allow users to select behavior from previous ver- + sions that is incompatible with newer versions while they migrate + scripts to use current features and behavior. It's intended to be a + temporary solution. + + This section does not mention behavior that is standard for a particu- + lar version (e.g., setting ccoommppaatt3322 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 subsequent versions). + + If a user enables, say, ccoommppaatt3322, it may affect the behavior of other + compatibility levels up to and including the current compatibility + level. The idea is that each compatibility level controls behavior + that changed in that version of bbaasshh, but that behavior may have been + present in earlier versions. For instance, the change to use locale- + based comparisons with the [[[[ command came in bash-4.1, and earlier versions used ASCII-based comparisons, so enabling ccoommppaatt3322 will enable - ASCII-based comparisons as well. That granularity may not be suffi- - cient for all uses, and as a result users should employ compatibility - levels carefully. Read the documentation for a particular feature to + ASCII-based comparisons as well. That granularity may not be suffi- + cient for all uses, and as a result users should employ compatibility + levels carefully. Read the documentation for a particular feature to find out the current behavior. - Bash-4.3 introduced a new shell variable: BBAASSHH__CCOOMMPPAATT. The value as- + Bash-4.3 introduced a new shell variable: BBAASSHH__CCOOMMPPAATT. The value as- signed to this variable (a decimal version number like 4.2, or an inte- - ger corresponding to the ccoommppaatt_N_N option, like 42) determines the com- + ger corresponding to the ccoommppaatt_N_N option, like 42) determines the com- patibility level. - Starting with bash-4.4, Bash has begun deprecating older compatibility - levels. Eventually, the options will be removed in favor of BBAASSHH__CCOOMM-- + Starting with bash-4.4, Bash has begun deprecating older compatibility + levels. Eventually, the options will be removed in favor of BBAASSHH__CCOOMM-- PPAATT. - Bash-5.0 is the final version for which there will be an individual - shopt option for the previous version. Users should use BBAASSHH__CCOOMMPPAATT on + Bash-5.0 is the final version for which there will be an individual + shopt option for the previous version. Users should use BBAASSHH__CCOOMMPPAATT on bash-5.0 and later versions. - The following table describes the behavior changes controlled by each + The following table describes the behavior changes controlled by each compatibility level setting. The ccoommppaatt_N_N tag is used as shorthand for setting the compatibility level to _N_N using one of the following mecha- - nisms. For versions prior to bash-5.0, the compatibility level may be - set using the corresponding ccoommppaatt_N_N shopt option. For bash-4.3 and - later versions, the BBAASSHH__CCOOMMPPAATT variable is preferred, and it is re- + nisms. For versions prior to bash-5.0, the compatibility level may be + set using the corresponding ccoommppaatt_N_N shopt option. For bash-4.3 and + later versions, the BBAASSHH__CCOOMMPPAATT variable is preferred, and it is re- quired for bash-5.1 and later versions. ccoommppaatt3311 @@ -1931,84 +1994,90 @@ SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE ator (=~) has no special effect ccoommppaatt3322 - +o interrupting a command list such as "a ; b ; c" causes - the execution of the next command in the list (in - bash-4.0 and later versions, the shell acts as if it re- - ceived the interrupt, so interrupting one command in a + +o interrupting a command list such as "a ; b ; c" causes + the execution of the next command in the list (in + bash-4.0 and later versions, the shell acts as if it re- + ceived the interrupt, so interrupting one command in a list aborts the execution of the entire list) ccoommppaatt4400 - +o the << and >> operators to the [[[[ command do not consider + +o the << and >> operators to the [[[[ command do not consider the current locale when comparing strings; they use ASCII ordering. Bash versions prior to bash-4.1 use ASCII col- - lation and _s_t_r_c_m_p(3); bash-4.1 and later use the current + lation and _s_t_r_c_m_p(3); bash-4.1 and later use the current locale's collation sequence and _s_t_r_c_o_l_l(3). ccoommppaatt4411 - +o in _p_o_s_i_x mode, ttiimmee may be followed by options and still + +o in _p_o_s_i_x mode, ttiimmee may be followed by options and still be recognized as a reserved word (this is POSIX interpre- tation 267) +o in _p_o_s_i_x mode, the parser requires that an even number of - single quotes occur in the _w_o_r_d portion of a double- - quoted parameter expansion and treats them specially, so - that characters within the single quotes are considered + single quotes occur in the _w_o_r_d portion of a double- + quoted parameter expansion and treats them specially, so + that characters within the single quotes are considered quoted (this is POSIX interpretation 221) ccoommppaatt4422 +o the replacement string in double-quoted pattern substitu- - tion does not undergo quote removal, as it does in ver- + tion does not undergo quote removal, as it does in ver- sions after bash-4.2 - +o in posix mode, single quotes are considered special when - expanding the _w_o_r_d portion of a double-quoted parameter - expansion and can be used to quote a closing brace or - other special character (this is part of POSIX interpre- - tation 221); in later versions, single quotes are not + +o in posix mode, single quotes are considered special when + expanding the _w_o_r_d portion of a double-quoted parameter + expansion and can be used to quote a closing brace or + other special character (this is part of POSIX interpre- + tation 221); in later versions, single quotes are not special within double-quoted word expansions ccoommppaatt4433 - +o the shell does not print a warning message if an attempt - is made to use a quoted compound assignment as an argu- - ment to declare (declare -a foo='(1 2)'). Later versions - warn that this usage is deprecated - +o word expansion errors are considered non-fatal errors - that cause the current command to fail, even in posix - mode (the default behavior is to make them fatal errors + +o the shell does not print a warning message if an attempt + is made to use a quoted compound assignment as an argu- + ment to declare (e.g., declare -a foo='(1 2)'). Later + versions warn that this usage is deprecated + +o word expansion errors are considered non-fatal errors + that cause the current command to fail, even in posix + mode (the default behavior is to make them fatal errors that cause the shell to exit) - +o when executing a shell function, the loop state + +o when executing a shell function, the loop state (while/until/etc.) is not reset, so bbrreeaakk or ccoonnttiinnuuee in that function will break or continue loops in the calling - context. Bash-4.4 and later reset the loop state to pre- + context. Bash-4.4 and later reset the loop state to pre- vent this ccoommppaatt4444 - +o the shell sets up the values used by BBAASSHH__AARRGGVV and - BBAASSHH__AARRGGCC so they can expand to the shell's positional + +o the shell sets up the values used by BBAASSHH__AARRGGVV and + BBAASSHH__AARRGGCC so they can expand to the shell's positional parameters even if extended debugging mode is not enabled - +o a subshell inherits loops from its parent context, so - bbrreeaakk or ccoonnttiinnuuee will cause the subshell to exit. - Bash-5.0 and later reset the loop state to prevent the + +o a subshell inherits loops from its parent context, so + bbrreeaakk or ccoonnttiinnuuee will cause the subshell to exit. + Bash-5.0 and later reset the loop state to prevent the exit - +o variable assignments preceding builtins like eexxppoorrtt and + +o variable assignments preceding builtins like eexxppoorrtt and rreeaaddoonnllyy that set attributes continue to affect variables with the same name in the calling environment even if the shell is not in posix mode ccoommppaatt5500 - +o Bash-5.1 changed the way $$RRAANNDDOOMM is generated to intro- + +o Bash-5.1 changed the way $$RRAANNDDOOMM is generated to intro- duce slightly more randomness. If the shell compatibility - level is set to 50 or lower, it reverts to the method - from bash-5.0 and previous versions, so seeding the ran- - dom number generator by assigning a value to RRAANNDDOOMM will + level is set to 50 or lower, it reverts to the method + from bash-5.0 and previous versions, so seeding the ran- + dom number generator by assigning a value to RRAANNDDOOMM will produce the same sequence as in bash-5.0 - +o If the command hash table is empty, bash versions prior - to bash-5.1 printed an informational message to that ef- - fect, even when producing output that can be reused as - input. Bash-5.1 suppresses that message when the --ll op- + +o If the command hash table is empty, bash versions prior + to bash-5.1 printed an informational message to that ef- + fect, even when producing output that can be reused as + input. Bash-5.1 suppresses that message when the --ll op- tion is supplied. + ccoommppaatt5511 + +o The uunnsseett builtin treats attempts to unset array sub- + scripts @@ and ** differently depending on whether the ar- + ray is indexed or associative, and differently than in + previous versions. + SSEEEE AALLSSOO bash(1), sh(1) -GNU Bash 5.0 2004 Apr 20 BASH_BUILTINS(1) +GNU Bash 5.2 2021 November 22 BASH_BUILTINS(1) diff --git a/doc/builtins.1 b/doc/builtins.1 index 4413c76f0..43d92a2fc 100644 --- a/doc/builtins.1 +++ b/doc/builtins.1 @@ -7,14 +7,14 @@ .de FN \fI\|\\$1\|\fP .. -.TH BASH_BUILTINS 1 "2004 Apr 20" "GNU Bash 5.0" +.TH BASH_BUILTINS 1 "2021 November 22" "GNU Bash 5.2" .SH NAME -bash, :, ., [, alias, bg, bind, break, builtin, caller, -cd, command, compgen, complete, -compopt, continue, declare, dirs, disown, echo, enable, eval, exec, exit, +:, ., [, alias, bg, bind, break, builtin, caller, +cd, command, compgen, complete, compopt, +continue, declare, dirs, disown, echo, enable, eval, exec, exit, export, false, fc, fg, getopts, hash, help, history, jobs, kill, let, local, logout, mapfile, popd, printf, pushd, pwd, read, -readonly, return, set, +readarray, readonly, return, set, shift, shopt, source, suspend, test, times, trap, true, type, typeset, ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1) .SH BASH BUILTIN COMMANDS diff --git a/doc/builtins.ps b/doc/builtins.ps index ae11c5449..1becc2a28 100644 --- a/doc/builtins.ps +++ b/doc/builtins.ps @@ -1,13 +1,13 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.4 -%%CreationDate: Wed Nov 18 15:13:06 2020 +%%CreationDate: Mon Sep 19 12:02:42 2022 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Symbol %%+ font Courier %%DocumentSuppliedResources: procset grops 1.22 4 -%%Pages: 26 +%%Pages: 27 %%PageOrder: Ascend %%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait @@ -242,19 +242,20 @@ BP /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S -(ME).219 E F0 .288(bash, :, ., [, alias, bg, bind, break, b)108 96 R -.287(uiltin, caller)-.2 F 2.787(,c)-.4 G .287 -(d, command, compgen, complete, compopt, continue, de-)-2.787 F .327 -(clare, dirs, diso)108 108 R .327(wn, echo, enable, e)-.25 F -.25(va) --.25 G .327(l, e).25 F -.15(xe)-.15 G .327(c, e).15 F .327(xit, e)-.15 F -.327(xport, f)-.15 F .327(alse, fc, fg, getopts, hash, help, history)-.1 -F 2.827(,j)-.65 G .328(obs, kill,)-2.827 F .124(let, local, logout, map\ -\214le, popd, printf, pushd, pwd, read, readonly)108 120 R 2.624(,r)-.65 -G .124(eturn, set, shift, shopt, source, suspend,)-2.624 F 1.926(test, \ -times, trap, true, type, typeset, ulimit, umask, unalias, unset, w)108 -132 R 1.927(ait \255 bash b)-.1 F 1.927(uilt-in commands, see)-.2 F/F2 -10/Times-Bold@0 SF(bash)108 144 Q F0(\(1\))A F1 -.329(BA)72 160.8 S -(SH B).329 E(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .063 +(ME).219 E F0 .622(:, ., [, alias, bg, bind, break, b)108 96 R .622 +(uiltin, caller)-.2 F 3.122(,c)-.4 G .622 +(d, command, compgen, complete, compopt, continue, declare,)-3.122 F +.076(dirs, diso)108 108 R .076(wn, echo, enable, e)-.25 F -.25(va)-.25 G +.076(l, e).25 F -.15(xe)-.15 G .076(c, e).15 F .077(xit, e)-.15 F .077 +(xport, f)-.15 F .077(alse, fc, fg, getopts, hash, help, history)-.1 F +2.577(,j)-.65 G .077(obs, kill, let, lo-)-2.577 F .077 +(cal, logout, map\214le, popd, printf, pushd, pwd, read, readarray)108 +120 R 2.577(,r)-.65 G(eadonly)-2.577 E 2.577(,r)-.65 G .076 +(eturn, set, shift, shopt, source, sus-)-2.577 F .279(pend, test, times\ +, trap, true, type, typeset, ulimit, umask, unalias, unset, w)108 132 R +.279(ait \255 bash b)-.1 F .279(uilt-in commands, see)-.2 F/F2 10 +/Times-Bold@0 SF(bash)108 144 Q F0(\(1\))A F1 -.329(BA)72 160.8 S(SH B) +.329 E(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .063 (Unless otherwise noted, each b)108 172.8 R .062(uiltin command documen\ ted in this section as accepting options preceded by)-.2 F F2108 184.8 Q F0(accepts)3.077 E F23.077 E F0 .577 @@ -288,38 +289,39 @@ F2(sour)108 303.6 Q(ce)-.18 E F3(\214lename)2.5 E F0([)2.5 E F3(ar)A (xit)-.15 E 1.33(status of the last command e)144 327.6 R -.15(xe)-.15 G 1.331(cuted from).15 F F3(\214lename)5.741 E F0 6.331(.I).18 G(f)-6.331 E F3(\214lename)5.741 E F0 1.331(does not contain a slash, \214le-)4.011 -F .489(names in)144 339.6 R/F4 9/Times-Bold@0 SF -.666(PA)2.989 G(TH) --.189 E F0 .489(are used to \214nd the directory containing)2.739 F F3 -(\214lename)4.899 E F0 5.488(.T).18 G .488(he \214le searched for in) --5.488 F F4 -.666(PA)2.988 G(TH)-.189 E F0 .832(need not be e)144 351.6 -R -.15(xe)-.15 G 3.332(cutable. When).15 F F2(bash)3.332 E F0 .832 -(is not in)3.332 F F3 .832(posix mode)3.332 F F0 3.332(,t)C .833 -(he current directory is searched if no)-3.332 F .982 -(\214le is found in)144 363.6 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9 -/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F2(sour)3.481 E(cepath)-.18 -E F0 .981(option to the)3.481 F F2(shopt)3.481 E F0 -.2(bu)3.481 G .981 -(iltin command is turned of).2 F .981(f, the)-.25 F F4 -.666(PA)144 -375.6 S(TH)-.189 E F0 .112(is not searched.)2.362 F .112(If an)5.112 F -(y)-.15 E F3(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 F3 -(\214lename)144 387.6 Q F0 .485(is e)2.985 F -.15(xe)-.15 G 2.985 -(cuted. Otherwise).15 F .485(the positional parameters are unchanged.) -2.985 F .485(If the)5.485 F F22.985 E F0 .485(option is en-)2.985 -F(abled,)144 399.6 Q F2(sour)3.324 E(ce)-.18 E F0 .824(inherits an)3.324 -F 3.324(yt)-.15 G .824(rap on)-3.324 F F2(DEB)3.324 E(UG)-.1 E F0 3.324 -(;i)C 3.324(fi)-3.324 G 3.324(ti)-3.324 G 3.324(sn)-3.324 G .825(ot, an) --3.324 F(y)-.15 E F2(DEB)3.325 E(UG)-.1 E F0 .825(trap string is sa) -3.325 F -.15(ve)-.2 G 3.325(da).15 G .825(nd re-)-3.325 F .817 -(stored around the call to)144 411.6 R F2(sour)3.317 E(ce)-.18 E F0 -3.317(,a)C(nd)-3.317 E F2(sour)3.317 E(ce)-.18 E F0 .817(unsets the) -3.317 F F2(DEB)3.317 E(UG)-.1 E F0 .817(trap while it e)3.317 F -.15(xe) --.15 G 3.317(cutes. If).15 F F23.317 E F0(is)3.317 E 1.435 -(not set, and the sourced \214le changes the)144 423.6 R F2(DEB)3.935 E -(UG)-.1 E F0 1.435(trap, the ne)3.935 F 3.935(wv)-.25 G 1.435 -(alue is retained when)-4.185 F F2(sour)3.935 E(ce)-.18 E F0 3.763 -(completes. The)144 435.6 R 1.262 -(return status is the status of the last command e)3.763 F 1.262 -(xited within the script \(0 if no)-.15 F(commands are e)144 447.6 Q +F .023(names in)144 339.6 R/F4 9/Times-Bold@0 SF -.666(PA)2.523 G(TH) +-.189 E F0 .022(are used to \214nd the directory containing)2.273 F F3 +(\214lename)4.432 E F0 2.522(,b).18 G(ut)-2.722 E F3(\214lename)2.522 E +F0 .022(does not need to be)2.522 F -.15(exe)144 351.6 S 3.86 +(cutable. The).15 F 1.36(\214le searched for in)3.86 F F4 -.666(PA)3.86 +G(TH)-.189 E F0 1.361(need not be e)3.61 F -.15(xe)-.15 G 3.861 +(cutable. When).15 F F2(bash)3.861 E F0 1.361(is not in)3.861 F F3 +(posix)3.861 E(mode)144 363.6 Q F0 2.772(,i)C 2.772(ts)-2.772 G .272 +(earches the current directory if no \214le is found in)-2.772 F F4 +-.666(PA)2.771 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .271(If the) +4.771 F F2(sour)2.771 E(cepath)-.18 E F0 .271(option to the)2.771 F F2 +(shopt)144 375.6 Q F0 -.2(bu)3.659 G 1.159(iltin command is turned of).2 +F 1.159(f, the)-.25 F F4 -.666(PA)3.659 G(TH)-.189 E F0 1.159 +(is not searched.)3.409 F 1.16(If an)6.159 F(y)-.15 E F3(ar)3.66 E +(guments)-.37 E F0 1.16(are supplied,)3.66 F(the)144 387.6 Q 3.692(yb) +-.15 G 1.192(ecome the positional parameters when)-3.692 F F3 +(\214lename)3.692 E F0 1.192(is e)3.692 F -.15(xe)-.15 G 3.691 +(cuted. Otherwise).15 F 1.191(the positional pa-)3.691 F .82 +(rameters are unchanged.)144 399.6 R .82(If the)5.82 F F23.32 E F0 +.82(option is enabled,)3.32 F F2(.)3.32 E F0 .82(inherits an)3.32 F 3.32 +(yt)-.15 G .82(rap on)-3.32 F F2(DEB)3.32 E(UG)-.1 E F0 3.32(;i)C 3.32 +(fi)-3.32 G 3.32(ti)-3.32 G 3.32(sn)-3.32 G(ot,)-3.32 E(an)144 411.6 Q +(y)-.15 E F2(DEB)3.323 E(UG)-.1 E F0 .823(trap string is sa)3.323 F -.15 +(ve)-.2 G 3.322(da).15 G .822(nd restored around the call to)-3.322 F F2 +(.)3.322 E F0 3.322(,a)C(nd)-3.322 E F2(.)3.322 E F0 .822(unsets the) +3.322 F F2(DEB)3.322 E(UG)-.1 E F0(trap)3.322 E .226(while it e)144 +423.6 R -.15(xe)-.15 G 2.726(cutes. If).15 F F22.727 E F0 .227 +(is not set, and the sourced \214le changes the)2.727 F F2(DEB)2.727 E +(UG)-.1 E F0 .227(trap, the ne)2.727 F 2.727(wv)-.25 G .227(alue is) +-2.977 F .891(retained when)144 435.6 R F2(.)3.391 E F0 3.391 +(completes. The)3.391 F .891 +(return status is the status of the last command e)3.391 F .89 +(xited within the)-.15 F(script \(0 if no commands are e)144 447.6 Q -.15(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F3(\214lename)4.41 E F0(is not found or cannot be read.)2.68 E F2(alias)108 464.4 Q F0([)2.5 E F2A F0 2.5(][)C F3(name)-2.5 E F0([=)A F3(value)A F0 2.5(].)C @@ -364,2955 +366,3070 @@ F2-2.5 E F3 -.1(ke)2.5 G(yseq)-.2 E F0(])A F2(bind)108 642 Q F0([) G(ymap)-.2 E F0(])A F3 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F3 (function\255name)A F2(bind)108 678 Q F0([)2.5 E F2A F3 -.1(ke)2.5 G(ymap)-.2 E F0(])A F3 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F3 -.37(re)C -(adline\255command).37 E F0 .238(Display current)144 690 R F2 -.18(re) +(adline\255command).37 E F2(bind)108 690 Q F3 -.37(re)2.5 G +(adline-command-line).37 E F0 .238(Display current)144 702 R F2 -.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 F2 -.18(re)2.739 G(adline).18 E F0 .239(function or) -2.739 F .476(macro, or set a)144 702 R F2 -.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 F3 -(.inputr)144.23 714 Q(c)-.37 E F0 2.967(,b).31 G .467 -(ut each binding or command must be passed as a separate ar)-3.167 F -.468(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 -(re\255read\255init\255\214le'. Options,)144 726 R(if supplied, ha)2.5 E -.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E(GNU Bash 5.0)72 -768 Q(2004 Apr 20)149.565 E(1)203.725 E 0 Cg EP +2.739 F .04(macro, or set a)144 714 R F2 -.18(re)2.54 G(adline).18 E F0 +-.25(va)2.54 G 2.54(riable. Each).25 F .039(non-option ar)2.54 F .039 +(gument is a command as it w)-.18 F .039(ould appear in a)-.1 F F2 -.18 +(re)144 726 S(adline).18 E F0 1.471(initialization \214le such as)3.971 +F F3(.inputr)4.201 E(c)-.37 E F0 3.971(,b).31 G 1.472 +(ut each binding or command must be passed as a)-4.171 F(GNU Bash 5.2)72 +768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(1)190.545 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q/F2 10 -/Times-Italic@0 SF -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 96 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 108 S(ymap)-.2 E F0 3.192(names are) -5.882 F F2 3.192(emacs, emacs\255standar)5.692 F 3.193 +E(UIL)-.1 E(TINS\(1\))-.92 E .574(separate ar)144 84 R .574 +(gument; e.g., '"\\C\255x\\C\255r": re\255read\255init\255\214le'.)-.18 +F .574(Options, if supplied, ha)5.574 F .874 -.15(ve t)-.2 H .574 +(he follo).15 F(wing)-.25 E(meanings:)144 96 Q/F1 10/Times-Bold@0 SF +144 108 Q/F2 10/Times-Italic@0 SF -.1(ke)2.5 G(ymap)-.2 E F0(Use) +180 120 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 132 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 120 Q F0 4.09(,a)C(nd)-4.09 E F2(vi\255insert)4.38 E -F0(.).68 E F2(vi)6.589 E F0 1.589(is equi)4.089 F -.25(va)-.25 G 1.589 +(vi\255command)180 144 Q F0 4.089(,a)C(nd)-4.089 E F2(vi\255insert)4.379 +E F0(.).68 E F2(vi)6.589 E F0 1.589(is equi)4.089 F -.25(va)-.25 G 1.589 (lent to).25 F F2(vi\255command)4.089 E F0(\()4.089 E F2(vi\255mo)A(ve) --.1 E F0 1.589(is also a syn-)4.089 F(on)180 132 Q(ym\);)-.15 E F2 -(emacs)2.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F2 -(emacs\255standar)2.5 E(d)-.37 E F0(.)A F1144 144 Q F0 -(List the names of all)180 144 Q F1 -.18(re)2.5 G(adline).18 E F0 -(functions.)2.5 E F1144 156 Q F0(Display)180 156 Q F1 -.18(re)2.5 -G(adline).18 E F0(function names and bindings in such a w)2.5 E -(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 168 Q -F0(List current)180 168 Q F1 -.18(re)2.5 G(adline).18 E F0 -(function names and bindings.)2.5 E F1144 180 Q F0(Display)180 180 -Q F1 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05 G -1.155(equences bound to macros and the strings the)-3.655 F 3.655(yo) --.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 192 S 2.5(yt).1 G -(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 204 Q F0 -(Display)180 204 Q F1 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5(ys) --.05 G(equences bound to macros and the strings the)-2.5 E 2.5(yo)-.15 G -(utput.)-2.5 E F1144 216 Q F0(Display)180 216 Q F1 -.18(re)2.5 G +-.1 E F0 1.59(is also a syn-)4.089 F(on)180 156 Q(ym\);)-.15 E F2(emacs) +2.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F2(emacs\255standar) +2.5 E(d)-.37 E F0(.)A F1144 168 Q F0(List the names of all)180 168 +Q F1 -.18(re)2.5 G(adline).18 E F0(functions.)2.5 E F1144 180 Q F0 +(Display)180 180 Q F1 -.18(re)2.5 G(adline).18 E F0 +(function names and bindings in such a w)2.5 E(ay that the)-.1 E 2.5(yc) +-.15 G(an be re-read.)-2.5 E F1144 192 Q F0(List current)180 192 Q +F1 -.18(re)2.5 G(adline).18 E F0(function names and bindings.)2.5 E F1 +144 204 Q F0(Display)180 204 Q F1 -.18(re)3.655 G(adline).18 E F0 +-.1(ke)3.655 G 3.655(ys)-.05 G 1.155 +(equences bound to macros and the strings the)-3.655 F 3.655(yo)-.15 G +1.155(utput in such a)-3.655 F -.1(wa)180 216 S 2.5(yt).1 G(hat the)-2.5 +E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 228 Q F0(Display)180 +228 Q F1 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5(ys)-.05 G +(equences bound to macros and the strings the)-2.5 E 2.5(yo)-.15 G +(utput.)-2.5 E F1144 240 Q F0(Display)180 240 Q F1 -.18(re)2.5 G (adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E (alues in such a w)-.25 E(ay that the)-.1 E 2.5(yc)-.15 G -(an be re-read.)-2.5 E F1144 228 Q F0(List current)180 228 Q F1 +(an be re-read.)-2.5 E F1144 252 Q F0(List current)180 252 Q F1 -.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E -(alues.)-.25 E F1144 240 Q F2(\214lename)2.5 E F0(Read k)180 252 Q +(alues.)-.25 E F1144 264 Q F2(\214lename)2.5 E F0(Read k)180 276 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A F1 -144 264 Q F2(function)2.5 E F0(Query about which k)180 276 Q -.15 +144 288 Q F2(function)2.5 E F0(Query about which k)180 300 Q -.15 (ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o)-2.5 H .2 -.1(ke t).4 H(he named).1 -E F2(function)2.5 E F0(.)A F1144 288 Q F2(function)2.5 E F0 -(Unbind all k)180 300 Q -.15(ey)-.1 G 2.5(sb).15 G(ound to the named) --2.5 E F2(function)2.5 E F0(.)A F1144 312 Q F2 -.1(ke)2.5 G(yseq) --.2 E F0(Remo)180 324 Q .3 -.15(ve a)-.15 H .3 -.15(ny c).15 H +E F2(function)2.5 E F0(.)A F1144 312 Q F2(function)2.5 E F0 +(Unbind all k)180 324 Q -.15(ey)-.1 G 2.5(sb).15 G(ound to the named) +-2.5 E F2(function)2.5 E F0(.)A F1144 336 Q F2 -.1(ke)2.5 G(yseq) +-.2 E F0(Remo)180 348 Q .3 -.15(ve a)-.15 H .3 -.15(ny c).15 H (urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(.)A F1144 -336 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2(shell\255command)A F0(Cause) -180 348 Q F2(shell\255command)4.325 E F0 1.825(to be e)4.325 F -.15(xe) +360 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2(shell\255command)A F0(Cause) +180 372 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 360 Q F0 1.764(is e)4.264 F -.15(xe)-.15 G 1.765 +4.325 E(mand)180 384 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 372 S(adline).18 E F0 .375(line b)2.875 F(uf)-.2 E .375 +-.18(re)180 396 S(adline).18 E F0 .375(line b)2.874 F(uf)-.2 E .375 (fer and the)-.25 F F3(READLINE_POINT)2.875 E F0(and)2.625 E F3 (READLINE_MARK)2.875 E F0 -.25(va)2.625 G .375(riables to the).25 F -1.185(current location of the insertion point and the sa)180 384 R -.15 -(ve)-.2 G 3.686(di).15 G 1.186(nsertion point \(the mark\), respec-) --3.686 F(ti)180 396 Q -.15(ve)-.25 G(ly).15 E 5.702(.I)-.65 G 3.202(ft) --5.702 G .702(he e)-3.202 F -.15(xe)-.15 G .702 -(cuted command changes the v).15 F .701(alue of an)-.25 F 3.201(yo)-.15 -G(f)-3.201 E F3(READLINE_LINE)3.201 E/F4 9/Times-Roman@0 SF(,)A F3 -(READ-)2.951 E(LINE_POINT)180 408 Q F4(,)A F0(or)3.58 E F3 -(READLINE_MARK)3.83 E F4(,)A F0 1.33(those ne)3.58 F 3.83(wv)-.25 G -1.331(alues will be re\215ected in the editing)-4.08 F(state.)180 420 Q -F1144 432 Q F0 .83(List all k)180 432 R 1.13 -.15(ey s)-.1 H .829 +1.186(current location of the insertion point and the sa)180 408 R -.15 +(ve)-.2 G 3.685(di).15 G 1.185(nsertion point \(the mark\), respec-) +-3.685 F(ti)180 420 Q -.15(ve)-.25 G(ly).15 E 5.377(.T)-.65 G .377 +(he shell assigns an)-5.377 F 2.877(yn)-.15 G .377(umeric ar)-2.877 F +.377(gument the user supplied to the)-.18 F F3(READLINE_AR-)2.878 E +(GUMENT)180 432 Q F0 -.25(va)3.605 G 3.855(riable. If).25 F 1.355 +(there w)3.855 F 1.354(as no ar)-.1 F 1.354(gument, that v)-.18 F 1.354 +(ariable is not set.)-.25 F 1.354(If the e)6.354 F -.15(xe)-.15 G(cuted) +.15 E .343(command changes the v)180 444 R .343(alue of an)-.25 F 2.843 +(yo)-.15 G(f)-2.843 E F3(READLINE_LINE)2.844 E/F4 9/Times-Roman@0 SF(,)A +F3(READLINE_POINT)2.594 E F4(,)A F0(or)2.594 E F3(READ-)2.844 E +(LINE_MARK)180 456 Q F4(,)A F0(those ne)2.25 E 2.5(wv)-.25 G +(alues will be re\215ected in the editing state.)-2.75 E F1144 468 +Q F0 .83(List all k)180 468 R 1.13 -.15(ey s)-.1 H .829 (equences bound to shell commands and the associated commands in a for) -.15 F(-)-.2 E(mat that can be reused as input.)180 444 Q(The return v) -144 460.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15 +.15 F(-)-.2 E(mat that can be reused as input.)180 480 Q(The return v) +144 496.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15 (ve)-.25 G 2.5(no).15 G 2.5(ra)-2.5 G 2.5(ne)-2.5 G(rror occurred.)-2.5 -E F1(br)108 477.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054 -(Exit from within a)144 489.6 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1 +E F1(br)108 513.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054 +(Exit from within a)144 525.6 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1 (while)2.554 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1 (select)2.555 E F0 2.555(loop. If)2.555 F F2(n)2.555 E F0 .055 (is speci\214ed, break)2.555 F F2(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G (ls.).15 E F2(n)5.415 E F0 .055(must be)2.795 F/F5 10/Symbol SF2.555 -E F0(1.)2.555 E(If)144 501.6 Q F2(n)3.075 E F0 .215(is greater than the\ +E F0(1.)2.555 E(If)144 537.6 Q F2(n)3.075 E F0 .215(is greater than the\ number of enclosing loops, all enclosing loops are e)2.955 F 2.714 (xited. The)-.15 F .214(return v)2.714 F(alue)-.25 E(is 0 unless)144 -513.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 -(bu)108 530.4 S(iltin).2 E F2(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E -F2(ar)A(guments)-.37 E F0(])A(Ex)144 542.4 Q .77 +549.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 +(bu)108 566.4 S(iltin).2 E F2(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E +F2(ar)A(guments)-.37 E F0(])A(Ex)144 578.4 Q .77 (ecute the speci\214ed shell b)-.15 F .77(uiltin, passing it)-.2 F F2 (ar)3.601 E(guments)-.37 E F0 3.271(,a).27 G .771(nd return its e)-3.271 F .771(xit status.)-.15 F .771(This is useful)5.771 F .616 (when de\214ning a function whose name is the same as a shell b)144 -554.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144 -566.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0 +590.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144 +602.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0 -.2(bu)3.07 G .57(iltin is commonly rede\214ned this w).2 F(ay)-.1 E -5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 578.4 Q(alse if)-.1 +5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 614.4 Q(alse if)-.1 E F2(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E -(uiltin command.)-.2 E F1(caller)108 595.2 Q F0([)2.5 E F2 -.2(ex)C(pr) -.2 E F0(])A .254(Returns the conte)144 607.2 R .254(xt of an)-.15 F +(uiltin command.)-.2 E F1(caller)108 631.2 Q F0([)2.5 E F2 -.2(ex)C(pr) +.2 E F0(])A .254(Returns the conte)144 643.2 R .254(xt of an)-.15 F 2.754(ya)-.15 G(cti)-2.754 E .554 -.15(ve s)-.25 H .254 (ubroutine call \(a shell function or a script e).15 F -.15(xe)-.15 G -.254(cuted with the).15 F F1(.)2.753 E F0(or)2.753 E F1(sour)144 619.2 Q +.254(cuted with the).15 F F1(.)2.753 E F0(or)2.753 E F1(sour)144 655.2 Q (ce)-.18 E F0 -.2(bu)2.824 G 2.824(iltins\). W).2 F(ithout)-.4 E F2 -.2 (ex)2.824 G(pr).2 E F0(,)A F1(caller)2.824 E F0 .324 (displays the line number and source \214lename of the current)2.824 F -.254(subroutine call.)144 631.2 R .254(If a non-ne)5.254 F -.05(ga)-.15 +.254(subroutine call.)144 667.2 R .254(If a non-ne)5.254 F -.05(ga)-.15 G(ti).05 E .554 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15 F F2 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .253 (displays the line number)2.753 F 2.753(,s)-.4 G(ub-)-2.753 E 1.327(rou\ tine name, and source \214le corresponding to that position in the curr\ -ent e)144 643.2 R -.15(xe)-.15 G 1.328(cution call stack.).15 F .001 -(This e)144 655.2 R .001(xtra information may be used, for e)-.15 F .001 +ent e)144 679.2 R -.15(xe)-.15 G 1.328(cution call stack.).15 F .001 +(This e)144 691.2 R .001(xtra information may be used, for e)-.15 F .001 (xample, to print a stack trace.)-.15 F(The current frame is frame)5 E -3.019(0. The)144 667.2 R .519(return v)3.019 F .519 +3.019(0. The)144 703.2 R .519(return v)3.019 F .519 (alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .52 (cuting a subroutine call or).15 F F2 -.2(ex)3.02 G(pr).2 E F0 .52 -(does not corre-)3.02 F(spond to a v)144 679.2 Q -(alid position in the call stack.)-.25 E F1(cd)108 696 Q F0([)2.5 E F1 -A F0(|[)A F1A F0([)2.5 E F1A F0(]] [\255@]] [)A F2 -(dir)A F0(])A .322(Change the current directory to)144 708 R F2(dir) -2.822 E F0 5.322(.i)C(f)-5.322 E F2(dir)2.822 E F0 .321 -(is not supplied, the v)2.822 F .321(alue of the)-.25 F F3(HOME)2.821 E -F0 .321(shell v)2.571 F .321(ariable is)-.25 F 1.035(the def)144 720 R -3.535(ault. An)-.1 F 3.535(ya)-.15 G 1.035(dditional ar)-3.535 F 1.035 -(guments follo)-.18 F(wing)-.25 E F2(dir)3.535 E F0 1.035(are ignored.) -3.535 F 1.036(The v)6.035 F(ariable)-.25 E F3(CDP)3.536 E -.855(AT)-.666 -G(H).855 E F0(de\214nes)3.286 E(GNU Bash 5.0)72 768 Q(2004 Apr 20) -149.565 E(2)203.725 E 0 Cg EP +(does not corre-)3.02 F(spond to a v)144 715.2 Q +(alid position in the call stack.)-.25 E(GNU Bash 5.2)72 768 Q(2021 No) +136.385 E -.15(ve)-.15 G(mber 22).15 E(2)190.545 E 0 Cg EP %%Page: 3 3 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E .827 -(the search path for the directory containing)144 84 R/F1 10 -/Times-Italic@0 SF(dir)3.676 E F0 3.326(:e).73 G .826 -(ach directory name in)-3.326 F/F2 9/Times-Bold@0 SF(CDP)3.326 E -.855 -(AT)-.666 G(H).855 E F0 .826(is searched for)3.076 F F1(dir)144 96 Q F0 -5.664(.A)C(lternati)-5.664 E .964 -.15(ve d)-.25 H .665 -(irectory names in).15 F F2(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 -.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .665 -(ull directory name)-3.165 F(in)144 108 Q F2(CDP)3.102 E -.855(AT)-.666 -G(H).855 E F0 .602(is the same as the current directory)2.852 F 3.102 -(,i)-.65 G .602(.e., `)-3.102 F(`)-.74 E/F3 10/Times-Bold@0 SF(.)A F0 --.74('')C 5.602(.I).74 G(f)-5.602 E F1(dir)3.451 E F0(be)3.831 E .601 -(gins with a slash \(/\), then)-.15 F F2(CD-)3.101 E -.666(PA)144 120 S -(TH)-.189 E F0 1.003(is not used.)3.253 F(The)6.003 E F33.503 E F0 -1.003(option causes)3.503 F F3(cd)3.503 E F0 1.003(to use the ph)3.503 F -1.003(ysical directory structure by resolving)-.05 F .123 -(symbolic links while tra)144 132 R -.15(ve)-.2 G(rsing).15 E F1(dir) -2.623 E F0 .123(and before processing instances of)2.623 F F1(..)2.623 E -F0(in)2.623 E F1(dir)2.623 E F0 .123(\(see also the)2.623 F F3 -2.623 E F0(op-)2.622 E .429(tion to the)144 144 R F3(set)2.929 E F0 -.2 -(bu)2.929 G .429(iltin command\); the).2 F F32.929 E F0 .43 -(option forces symbolic links to be follo)2.929 F .43(wed by resolving) --.25 F .473(the link after processing instances of)144 156 R F1(..)2.973 -E F0(in)2.973 E F1(dir)2.973 E F0 5.473(.I)C(f)-5.473 E F1(..)2.973 E F0 -.473(appears in)2.973 F F1(dir)2.972 E F0 2.972(,i)C 2.972(ti)-2.972 G -2.972(sp)-2.972 G .472(rocessed by remo)-2.972 F .472(ving the)-.15 F -.948(immediately pre)144 168 R .948(vious pathname component from)-.25 F -F1(dir)3.448 E F0 3.448(,b)C .948(ack to a slash or the be)-3.448 F .948 -(ginning of)-.15 F F1(dir)3.448 E F0 5.948(.I)C(f)-5.948 E(the)144 180 Q -F32.868 E F0 .368(option is supplied with)2.868 F F32.868 E -F0 2.868(,a)C .368(nd the current w)-2.868 F .368 -(orking directory cannot be successfully deter)-.1 F(-)-.2 E .612 -(mined after a successful directory change,)144 192 R F3(cd)3.112 E F0 -.612(will return an unsuccessful status.)3.112 F .613(On systems that) -5.612 F .354(support it, the)144 204 R F32.854 E F0 .354 -(option presents the e)2.854 F .354(xtended attrib)-.15 F .354 -(utes associated with a \214le as a directory)-.2 F 5.353(.A)-.65 G(n) --5.353 E(ar)144 216 Q .072(gument of)-.18 F F32.572 E F0 .072 -(is con)2.572 F -.15(ve)-.4 G .072(rted to).15 F F2($OLDPWD)2.572 E F0 -.072(before the directory change is attempted.)2.322 F .072 -(If a non-empty)5.072 F .055(directory name from)144 228 R F2(CDP)2.555 -E -.855(AT)-.666 G(H).855 E F0 .055(is used, or if)2.305 F F32.555 E -F0 .055(is the \214rst ar)2.555 F .054 -(gument, and the directory change is suc-)-.18 F .168 -(cessful, the absolute pathname of the ne)144 240 R 2.668(ww)-.25 G .168 -(orking directory is written to the standard output.)-2.768 F(The)5.168 -E(return v)144 252 Q(alue is true if the directory w)-.25 E -(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F3(command)108 -268.8 Q F0([)2.5 E F3(\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 280.8 Q F1(command)2.765 E F0(with) -3.335 E F1(ar)2.895 E(gs)-.37 E F0 .065 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(cd)108 84 Q F0([)2.5 +E F1A F0(|[)A F1A F0([)2.5 E F1A F0(]] [\255@]] [)A/F2 +10/Times-Italic@0 SF(dir)A F0(])A .322(Change the current directory to) +144 96 R F2(dir)2.822 E F0 5.322(.i)C(f)-5.322 E F2(dir)2.822 E F0 .321 +(is not supplied, the v)2.822 F .321(alue of the)-.25 F/F3 9 +/Times-Bold@0 SF(HOME)2.821 E F0 .321(shell v)2.571 F .321(ariable is) +-.25 F .929(the def)144 108 R 3.429(ault. The)-.1 F -.25(va)3.429 G +(riable).25 E F3(CDP)3.429 E -.855(AT)-.666 G(H).855 E F0 .93 +(de\214nes the search path for the directory containing)3.179 F F2(dir) +3.78 E F0 3.43(:e).73 G(ach)-3.43 E .407(directory name in)144 120 R F3 +(CDP)2.907 E -.855(AT)-.666 G(H).855 E F0 .407(is searched for)2.657 F +F2(dir)2.907 E F0 5.407(.A)C(lternati)-5.407 E .707 -.15(ve d)-.25 H +.407(irectory names in).15 F F3(CDP)2.907 E -.855(AT)-.666 G(H).855 E F0 +.406(are sepa-)2.656 F .799(rated by a colon \(:\).)144 132 R 3.299(An) +5.799 G .799(ull directory name in)-3.299 F F3(CDP)3.299 E -.855(AT) +-.666 G(H).855 E F0 .799(is the same as the current directory)3.049 F +3.3(,i)-.65 G(.e.,)-3.3 E -.74(``)144 144 S F1(.).74 E F0 -.74('')C +5.428(.I).74 G(f)-5.428 E F2(dir)3.278 E F0(be)3.658 E .428 +(gins with a slash \(/\), then)-.15 F F3(CDP)2.928 E -.855(AT)-.666 G(H) +.855 E F0 .428(is not used.)2.678 F(The)5.428 E F12.927 E F0 .427 +(option causes)2.927 F F1(cd)2.927 E F0 .427(to use the)2.927 F(ph)144 +156 Q .167 +(ysical directory structure by resolving symbolic links while tra)-.05 F +-.15(ve)-.2 G(rsing).15 E F2(dir)2.668 E F0 .168(and before processing) +2.668 F 1.225(instances of)144 168 R F2(..)3.725 E F0(in)3.725 E F2(dir) +3.725 E F0 1.225(\(see also the)3.725 F F13.725 E F0 1.225 +(option to the)3.725 F F1(set)3.725 E F0 -.2(bu)3.725 G 1.225 +(iltin command\); the).2 F F13.725 E F0 1.225(option forces)3.725 +F .411(symbolic links to be follo)144 180 R .411 +(wed by resolving the link after processing instances of)-.25 F F2(..) +2.911 E F0(in)2.911 E F2(dir)2.911 E F0 5.411(.I)C(f)-5.411 E F2(..) +2.912 E F0(ap-)2.912 E .341(pears in)144 192 R F2(dir)2.841 E F0 2.841 +(,i)C 2.841(ti)-2.841 G 2.841(sp)-2.841 G .341(rocessed by remo)-2.841 F +.341(ving the immediately pre)-.15 F .34(vious pathname component from) +-.25 F F2(dir)2.84 E F0(,)A .175(back to a slash or the be)144 204 R +.175(ginning of)-.15 F F2(dir)2.675 E F0 5.175(.I)C 2.675(ft)-5.175 G +(he)-2.675 E F12.676 E F0 .176(option is supplied with)2.676 F F1 +2.676 E F0 2.676(,a)C .176(nd the current w)-2.676 F(ork-)-.1 E +.341(ing directory cannot be successfully determined after a successful\ + directory change,)144 216 R F1(cd)2.84 E F0 .34(will return)2.84 F .356 +(an unsuccessful status.)144 228 R .356(On systems that support it, the) +5.356 F F12.857 E F0 .357(option presents the e)2.857 F .357 +(xtended attrib)-.15 F(utes)-.2 E .07 +(associated with a \214le as a directory)144 240 R 5.07(.A)-.65 G 2.569 +(na)-5.07 G -.18(rg)-2.569 G .069(ument of).18 F F12.569 E F0 .069 +(is con)2.569 F -.15(ve)-.4 G .069(rted to).15 F F3($OLDPWD)2.569 E F0 +.069(before the direc-)2.319 F .306(tory change is attempted.)144 252 R +.306(If a non-empty directory name from)5.306 F F3(CDP)2.806 E -.855(AT) +-.666 G(H).855 E F0 .306(is used, or if)2.556 F F12.807 E F0 .307 +(is the \214rst)2.807 F(ar)144 264 Q .116(gument, and the directory cha\ +nge is successful, the absolute pathname of the ne)-.18 F 2.615(ww)-.25 +G .115(orking direc-)-2.715 F .15 +(tory is written to the standard output.)144 276 R .15 +(If the directory change is successful,)5.15 F F1(cd)2.65 E F0 .15 +(sets the v)2.65 F .15(alue of the)-.25 F F1(PWD)144 288 Q F0(en)2.958 E +.458(vironment v)-.4 F .458(ariable to the ne)-.25 F 2.958(wd)-.25 G +.458(irectory name, and sets the)-2.958 F F1(OLDPWD)2.957 E F0(en)2.957 +E .457(vironment v)-.4 F(ari-)-.25 E .125(able to the v)144 300 R .125 +(alue of the current w)-.25 F .126(orking directory before the change.) +-.1 F .126(The return v)5.126 F .126(alue is true if the)-.25 F +(directory w)144 312 Q(as successfully changed; f)-.1 E(alse otherwise.) +-.1 E F1(command)108 328.8 Q F0([)2.5 E F1(\255pVv)A F0(])A F2(command) +2.5 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Run)144 340.8 Q F2 +(command)2.765 E F0(with)3.335 E F2(ar)2.895 E(gs)-.37 E F0 .065 (suppressing the normal shell function lookup.)2.835 F .064(Only b)5.064 -F .064(uiltin commands or)-.2 F .501(commands found in the)144 292.8 R -F2 -.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G -3.002(cuted. If).15 F(the)3.002 E F33.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 304.8 R .4(ault v)-.1 F .4 -(alue for)-.25 F F2 -.666(PA)2.9 G(TH)-.189 E F0 .399 +F .064(uiltin commands or)-.2 F .501(commands found in the)144 352.8 R +F3 -.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G +3.002(cuted. If).15 F(the)3.002 E F13.002 E F0 .502(option is gi) +3.002 F -.15(ve)-.25 G .502(n, the search for).15 F F2(command)3.202 E +F0(is)3.772 E .4(performed using a def)144 364.8 R .4(ault v)-.1 F .4 +(alue for)-.25 F F3 -.666(PA)2.9 G(TH)-.189 E F0 .399 (that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) -5.399 E .174(either the)144 316.8 R F32.674 E F0(or)2.674 E F3 -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 F32.675 E -F0 .175(option causes)2.675 F 3.318(as)144 328.8 S .818(ingle w)-3.318 F +5.399 E .174(either the)144 376.8 R F12.674 E F0(or)2.674 E F1 +2.674 E F0 .175(option is supplied, a description of)2.674 F F2 +(command)2.875 E F0 .175(is printed.)3.445 F(The)5.175 E F12.675 E +F0 .175(option causes)2.675 F 3.318(as)144 388.8 S .818(ingle w)-3.318 F .817(ord indicating the command or \214lename used to in)-.1 F -.2(vo) --.4 G -.1(ke).2 G F1(command)3.617 E F0 .817(to be displayed; the)4.087 -F F3144 340.8 Q F0 .249(option produces a more v)2.749 F .249 -(erbose description.)-.15 F .249(If the)5.249 F F32.749 E F0(or) -2.749 E F32.75 E F0 .25(option is supplied, the e)2.75 F .25 -(xit status)-.15 F 1.005(is 0 if)144 352.8 R F1(command)3.705 E F0 -.1 +-.4 G -.1(ke).2 G F2(command)3.617 E F0 .817(to be displayed; the)4.087 +F F1144 400.8 Q F0 .249(option produces a more v)2.749 F .249 +(erbose description.)-.15 F .249(If the)5.249 F F12.749 E F0(or) +2.749 E F12.75 E F0 .25(option is supplied, the e)2.75 F .25 +(xit status)-.15 F 1.005(is 0 if)144 412.8 R F2(command)3.705 E F0 -.1 (wa)4.275 G 3.505(sf).1 G 1.005(ound, and 1 if not.)-3.505 F 1.004 -(If neither option is supplied and an error occurred or)6.005 F F1 -(command)144.2 364.8 Q F0 1.598(cannot be found, the e)4.868 F 1.599 +(If neither option is supplied and an error occurred or)6.005 F F2 +(command)144.2 424.8 Q F0 1.598(cannot be found, the e)4.868 F 1.599 (xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.599 -(xit status of the)-.15 F F3(command)4.099 E F0 -.2(bu)144 376.8 S -(iltin is the e).2 E(xit status of)-.15 E F1(command)2.7 E F0(.).77 E F3 -(compgen)108 393.6 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 405.6 R -F1(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F1(option)2.513 +(xit status of the)-.15 F F1(command)4.099 E F0 -.2(bu)144 436.8 S +(iltin is the e).2 E(xit status of)-.15 E F2(command)2.7 E F0(.).77 E F1 +(compgen)108 453.6 Q F0([)2.5 E F2(option)A F0 2.5(][)C F2(wor)-2.5 E(d) +-.37 E F0(])A .013(Generate possible completion matches for)144 465.6 R +F2(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F2(option)2.513 E F0 .013(s, which may be an)B 2.512(yo)-.15 G(ption)-2.512 E .981 -(accepted by the)144 417.6 R F3(complete)3.481 E F0 -.2(bu)3.481 G .981 -(iltin with the e).2 F .981(xception of)-.15 F F33.481 E F0(and) -3.481 E F33.481 E F0 3.481(,a)C .982(nd write the matches to the) --3.481 F .131(standard output.)144 429.6 R .131(When using the)5.131 F -F32.631 E F0(or)2.631 E F32.631 E F0 .131(options, the v) +(accepted by the)144 477.6 R F1(complete)3.481 E F0 -.2(bu)3.481 G .981 +(iltin with the e).2 F .981(xception of)-.15 F F13.481 E F0(and) +3.481 E F13.481 E F0 3.481(,a)C .982(nd write the matches to the) +-3.481 F .131(standard output.)144 489.6 R .131(When using the)5.131 F +F12.631 E F0(or)2.631 E F12.631 E F0 .131(options, the v) 2.631 F .13(arious shell v)-.25 F .13(ariables set by the program-)-.25 -F(mable completion f)144 441.6 Q(acilities, while a)-.1 E -.25(va)-.2 G +F(mable completion f)144 501.6 Q(acilities, while a)-.1 E -.25(va)-.2 G (ilable, will not ha).25 E .3 -.15(ve u)-.2 H(seful v).15 E(alues.)-.25 -E .352(The matches will be generated in the same w)144 465.6 R .352 +E .352(The matches will be generated in the same w)144 525.6 R .352 (ay as if the programmable completion code had gen-)-.1 F .02(erated th\ em directly from a completion speci\214cation with the same \215ags.)144 -477.6 R(If)5.02 E F1(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only) -2.52 F(those completions matching)144 489.6 Q F1(wor)2.5 E(d)-.37 E F0 -(will be displayed.)2.5 E(The return v)144 513.6 Q +537.6 R(If)5.02 E F2(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only) +2.52 F(those completions matching)144 549.6 Q F2(wor)2.5 E(d)-.37 E F0 +(will be displayed.)2.5 E(The return v)144 573.6 Q (alue is true unless an in)-.25 E -.25(va)-.4 G -(lid option is supplied, or no matches were generated.).25 E F3 -(complete)108 530.4 Q F0([)2.5 E F3(\255abcdefgjksuv)A F0 2.5(][)C F3 --2.5 E F1(comp-option)2.5 E F0 2.5(][)C F3(\255DEI)-2.5 E F0 2.5 -(][)C F3-2.5 E F1(action)2.5 E F0 2.5(][)C F3-2.5 E F1 -(globpat)2.5 E F0 2.5(][)C F3-2.5 E F1(wor)2.5 E(dlist)-.37 E F0 -(])A([)144 542.4 Q F3A F1(function)2.5 E F0 2.5(][)C F3-2.5 -E F1(command)2.5 E F0 2.5(][)C F3-2.5 E F1(\214lterpat)2.5 E F0 -2.5(][)C F3-2.5 E F1(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C F3 --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 F3(complete \255pr)108 554.4 Q F0([)2.5 E F3(\255DEI) -A F0 2.5(][)C F1(name)-2.5 E F0(...])2.5 E .633(Specify ho)144 566.4 R -3.133(wa)-.25 G -.18(rg)-3.133 G .633(uments to each).18 F F1(name)3.133 -E F0 .633(should be completed.)3.133 F .634(If the)5.634 F F33.134 +(lid option is supplied, or no matches were generated.).25 E F1 +(complete)108 590.4 Q F0([)2.5 E F1(\255abcdefgjksuv)A F0 2.5(][)C F1 +-2.5 E F2(comp-option)2.5 E F0 2.5(][)C F1(\255DEI)-2.5 E F0 2.5 +(][)C F1-2.5 E F2(action)2.5 E F0 2.5(][)C F1-2.5 E F2 +(globpat)2.5 E F0 2.5(][)C F1-2.5 E F2(wor)2.5 E(dlist)-.37 E F0 +(])A([)144 602.4 Q F1A F2(function)2.5 E F0 2.5(][)C F1-2.5 +E F2(command)2.5 E F0 2.5(][)C F1-2.5 E F2(\214lterpat)2.5 E F0 +2.5(][)C F1-2.5 E F2(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C F1 +-2.5 E F2(suf)2.5 E<8c78>-.18 E F0(])A F2(name)2.5 E F0([)2.5 E F2 +(name ...)A F0(])A F1(complete \255pr)108 614.4 Q F0([)2.5 E F1(\255DEI) +A F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E .633(Specify ho)144 626.4 R +3.133(wa)-.25 G -.18(rg)-3.133 G .633(uments to each).18 F F2(name)3.133 +E F0 .633(should be completed.)3.133 F .634(If the)5.634 F F13.134 E F0 .634(option is supplied, or if no)3.134 F .14 -(options are supplied, e)144 578.4 R .139 +(options are supplied, e)144 638.4 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 -590.4 R(The)5.31 E F32.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 F1(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 F1 +650.4 R(The)5.31 E F12.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.208 -(are supplied, all completion speci\214cations.)144 602.4 R(The)6.208 E -F33.708 E F0 1.207(option indicates that other supplied options) -3.707 F .5(and actions should apply to the `)144 614.4 R(`def)-.74 E +(are supplied, all completion speci\214cations.)144 662.4 R(The)6.208 E +F13.708 E F0 1.207(option indicates that other supplied options) +3.707 F .5(and actions should apply to the `)144 674.4 R(`def)-.74 E (ault')-.1 E 3('c)-.74 G .5 (ommand completion; that is, completion attempted on)-3 F 3.455(ac)144 -626.4 S .955(ommand for which no completion has pre)-3.455 F .955 -(viously been de\214ned.)-.25 F(The)5.955 E F33.455 E F0 .955 +686.4 S .955(ommand for which no completion has pre)-3.455 F .955 +(viously been de\214ned.)-.25 F(The)5.955 E F13.455 E F0 .955 (option indicates that)3.455 F .876 -(other supplied options and actions should apply to `)144 638.4 R +(other supplied options and actions should apply to `)144 698.4 R (`empty')-.74 E 3.376('c)-.74 G .876(ommand completion; that is, com-) --3.376 F .448(pletion attempted on a blank line.)144 650.4 R(The)5.447 E -F32.947 E F0 .447 -(option indicates that other supplied options and actions)2.947 F .123 -(should apply to completion on the initial non-assignment w)144 662.4 R -.123(ord on the line, or after a command de-)-.1 F 1.021 -(limiter such as)144 674.4 R F3(;)3.521 E F0(or)3.521 E F3(|)3.521 E F0 -3.521(,w)C 1.021(hich is usually command name completion.)-3.521 F 1.02 -(If multiple options are sup-)6.02 F .707(plied, the)144 686.4 R F3 -3.207 E F0 .707(option tak)3.207 F .707(es precedence o)-.1 F -.15 -(ve)-.15 G(r).15 E F33.208 E F0 3.208(,a)C .708(nd both tak)-3.208 -F 3.208(ep)-.1 G .708(recedence o)-3.208 F -.15(ve)-.15 G(r).15 E F3 -3.208 E F0 5.708(.I)C 3.208(fa)-5.708 G 1.008 -.15(ny o)-3.208 H -(f).15 E F33.208 E F0(,)A F3144 698.4 Q F0 2.604(,o)C(r) --2.604 E F32.604 E F0 .103(are supplied, an)2.603 F 2.603(yo)-.15 -G(ther)-2.603 E F1(name)2.603 E F0(ar)2.603 E .103 -(guments are ignored; these completions only apply to the)-.18 F -(case speci\214ed by the option.)144 710.4 Q(GNU Bash 5.0)72 768 Q -(2004 Apr 20)149.565 E(3)203.725 E 0 Cg EP +-3.376 F .448(pletion attempted on a blank line.)144 710.4 R(The)5.447 E +F12.947 E F0 .447 +(option indicates that other supplied options and actions)2.947 F 1.149 +(should apply to completion on the initial non-assignment w)144 722.4 R +1.15(ord on the line, or after a command)-.1 F(GNU Bash 5.2)72 768 Q +(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(3)190.545 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E .152 -(The process of applying these completion speci\214cations when w)144 84 -R .153(ord completion is attempted is de-)-.1 F(scribed abo)144 96 Q .3 --.15(ve u)-.15 H(nder).15 E/F1 10/Times-Bold@0 SF(Pr)2.5 E -(ogrammable Completion)-.18 E F0(.)A .556 -(Other options, if speci\214ed, ha)144 120 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 F13.055 E F0(,)A F13.055 E F0 3.055 -(,a)C(nd)-3.055 E F13.055 E F0 .722(options \(and, if necessary) -144 132 R 3.222(,t)-.65 G(he)-3.222 E F13.222 E F0(and)3.222 E F1 -3.222 E F0 .723(options\) should be quoted to protect them from e) -3.222 F(xpan-)-.15 E(sion before the)144 144 Q F1(complete)2.5 E F0 -.2 -(bu)2.5 G(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1144 -156 Q/F2 10/Times-Italic@0 SF(comp-option)2.5 E F0(The)184 168 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 180 Q F2(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 -192 Q F0 .281(Perform the rest of the def)224 204 R(ault)-.1 E F1(bash) -2.781 E F0 .281(completions if the compspec generates no)2.781 F -(matches.)224 216 Q F1(default)184 228 Q F0 2.876(Use readline')224 228 -R 5.376(sd)-.55 G(ef)-5.376 E 2.875 +E(UIL)-.1 E(TINS\(1\))-.92 E .431(delimiter such as)144 84 R/F1 10 +/Times-Bold@0 SF(;)2.931 E F0(or)2.931 E F1(|)2.931 E F0 2.931(,w)C .431 +(hich is usually command name completion.)-2.931 F .43 +(If multiple options are sup-)5.43 F .707(plied, the)144 96 R F1 +3.207 E F0 .707(option tak)3.207 F .707(es precedence o)-.1 F -.15(ve) +-.15 G(r).15 E F13.208 E F0 3.208(,a)C .708(nd both tak)-3.208 F +3.208(ep)-.1 G .708(recedence o)-3.208 F -.15(ve)-.15 G(r).15 E F1 +3.208 E F0 5.708(.I)C 3.208(fa)-5.708 G 1.008 -.15(ny o)-3.208 H(f).15 E +F13.208 E F0(,)A F1144 108 Q F0 2.604(,o)C(r)-2.604 E F1 +2.604 E F0 .103(are supplied, an)2.603 F 2.603(yo)-.15 G(ther) +-2.603 E/F2 10/Times-Italic@0 SF(name)2.603 E F0(ar)2.603 E .103 +(guments are ignored; these completions only apply to the)-.18 F +(case speci\214ed by the option.)144 120 Q .152 +(The process of applying these completion speci\214cations when w)144 +144 R .153(ord completion is attempted is de-)-.1 F(scribed in)144 156 Q +F2(bash\(1\))2.5 E F0(.)A .556(Other options, if speci\214ed, ha)144 180 +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 F13.055 E F0(,)A F1 +3.055 E F0 3.055(,a)C(nd)-3.055 E F13.055 E F0 .722 +(options \(and, if necessary)144 192 R 3.222(,t)-.65 G(he)-3.222 E F1 +3.222 E F0(and)3.222 E F13.222 E F0 .723 +(options\) should be quoted to protect them from e)3.222 F(xpan-)-.15 E +(sion before the)144 204 Q F1(complete)2.5 E F0 -.2(bu)2.5 G +(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1144 216 Q F2 +(comp-option)2.5 E F0(The)184 228 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 240 Q F2 +(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 252 Q F0 +.281(Perform the rest of the def)224 264 R(ault)-.1 E F1(bash)2.781 E F0 +.281(completions if the compspec generates no)2.781 F(matches.)224 276 Q +F1(default)184 288 Q F0 2.876(Use readline')224 288 R 5.376(sd)-.55 G +(ef)-5.376 E 2.875 (ault \214lename completion if the compspec generates no)-.1 F(matches.) -224 240 Q F1(dir)184 252 Q(names)-.15 E F0(Perform directory name compl\ -etion if the compspec generates no matches.)224 264 Q F1(\214lenames)184 -276 Q F0 -.7(Te)224 288 S .137(ll readline that the compspec generates \ +224 300 Q F1(dir)184 312 Q(names)-.15 E F0(Perform directory name compl\ +etion if the compspec generates no matches.)224 324 Q F1(\214lenames)184 +336 Q F0 -.7(Te)224 348 S .137(ll readline that the compspec generates \ \214lenames, so it can perform an).7 F 2.637<798c>-.15 G(le-)-2.637 E -.134(name\255speci\214c processing \(lik)224 300 R 2.634(ea)-.1 G .134 +.134(name\255speci\214c processing \(lik)224 360 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 312 R .45 -(Intended to be used with shell)5.45 F(functions.)224 324 Q F1(noquote) -184 336 Q F0 -.7(Te)224 336 S .814 +(cial characters, or suppressing trailing spaces\).)224 372 R .45 +(Intended to be used with shell)5.45 F(functions.)224 384 Q F1(noquote) +184 396 Q F0 -.7(Te)224 396 S .814 (ll readline not to quote the completed w).7 F .814(ords if the)-.1 F 3.314(ya)-.15 G .814(re \214lenames \(quoting)-3.314 F -(\214lenames is the def)224 348 Q(ault\).)-.1 E F1(nosort)184 360 Q F0 --.7(Te)224 360 S(ll readline not to sort the list of possible completio\ -ns alphabetically).7 E(.)-.65 E F1(nospace)184 372 Q F0 -.7(Te)224 372 S +(\214lenames is the def)224 408 Q(ault\).)-.1 E F1(nosort)184 420 Q F0 +-.7(Te)224 420 S(ll readline not to sort the list of possible completio\ +ns alphabetically).7 E(.)-.65 E F1(nospace)184 432 Q F0 -.7(Te)224 432 S .22(ll readline not to append a space \(the def).7 F .22(ault\) to w)-.1 -F .22(ords completed at the end)-.1 F(of the line.)224 384 Q F1 -(plusdirs)184 396 Q F0 1.985(After an)224 396 R 4.485(ym)-.15 G 1.985 +F .22(ords completed at the end)-.1 F(of the line.)224 444 Q F1 +(plusdirs)184 456 Q F0 1.985(After an)224 456 R 4.485(ym)-.15 G 1.985 (atches de\214ned by the compspec are generated, directory name)-4.485 F -.583(completion is attempted and an)224 408 R 3.084(ym)-.15 G .584 -(atches are added to the results of the other)-3.084 F(actions.)224 420 -Q F1144 432 Q F2(action)2.5 E F0(The)184 444 Q F2(action)2.5 E F0 +.583(completion is attempted and an)224 468 R 3.084(ym)-.15 G .584 +(atches are added to the results of the other)-3.084 F(actions.)224 480 +Q F1144 492 Q F2(action)2.5 E F0(The)184 504 Q F2(action)2.5 E F0 (may be one of the follo)2.5 E (wing to generate a list of possible completions:)-.25 E F1(alias)184 -456 Q F0(Alias names.)224 456 Q(May also be speci\214ed as)5 E F1 -2.5 E F0(.)A F1(arrayv)184 468 Q(ar)-.1 E F0(Array v)224 480 Q -(ariable names.)-.25 E F1(binding)184 492 Q(Readline)224 492 Q F0 -.1 -(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 504 S(iltin) -.2 E F0(Names of shell b)224 504 Q(uiltin commands.)-.2 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 516 -Q F0(Command names.)224 528 Q(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(dir)184 540 Q(ectory)-.18 E F0(Directory names.)224 552 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 564 -Q F0(Names of disabled shell b)224 576 Q(uiltins.)-.2 E F1(enabled)184 -588 Q F0(Names of enabled shell b)224 588 Q(uiltins.)-.2 E F1(export)184 -600 Q F0(Names of e)224 600 Q(xported shell v)-.15 E 2.5(ariables. May) +516 Q F0(Alias names.)224 516 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(arrayv)184 528 Q(ar)-.1 E F0(Array v)224 540 Q +(ariable names.)-.25 E F1(binding)184 552 Q(Readline)224 552 Q F0 -.1 +(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 564 S(iltin) +.2 E F0(Names of shell b)224 564 Q(uiltin commands.)-.2 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 576 +Q F0(Command names.)224 588 Q(May also be speci\214ed as)5 E F12.5 +E F0(.)A F1(dir)184 600 Q(ectory)-.18 E F0(Directory names.)224 612 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 624 +Q F0(Names of disabled shell b)224 636 Q(uiltins.)-.2 E F1(enabled)184 +648 Q F0(Names of enabled shell b)224 648 Q(uiltins.)-.2 E F1(export)184 +660 Q F0(Names of e)224 660 Q(xported shell v)-.15 E 2.5(ariables. May) -.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(\214le)184 -612 Q F0(File names.)224 612 Q(May also be speci\214ed as)5 E F1 -2.5 E F0(.)A F1(function)184 624 Q F0(Names of shell functions.)224 636 -Q F1(gr)184 648 Q(oup)-.18 E F0(Group names.)224 648 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(helptopic)184 -660 Q F0(Help topics as accepted by the)224 672 Q F1(help)2.5 E F0 -.2 -(bu)2.5 G(iltin.).2 E F1(hostname)184 684 Q F0(Hostnames, as tak)224 696 -Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF -(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 708 Q F0 -(Job names, if job control is acti)224 708 Q -.15(ve)-.25 G 5(.M).15 G -(ay also be speci\214ed as)-5 E F12.5 E F0(.)A(GNU Bash 5.0)72 768 -Q(2004 Apr 20)149.565 E(4)203.725 E 0 Cg EP +672 Q F0(File names.)224 672 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(function)184 684 Q F0(Names of shell functions.)224 696 +Q F1(gr)184 708 Q(oup)-.18 E F0(Group names.)224 708 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A(GNU Bash 5.2)72 768 +Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(4)190.545 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF -.1(ke)184 84 S(yw).1 -E(ord)-.1 E F0(Shell reserv)224 96 Q(ed w)-.15 E 2.5(ords. May)-.1 F -(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(running)184 108 Q -F0(Names of running jobs, if job control is acti)224 108 Q -.15(ve)-.25 -G(.).15 E F1(ser)184 120 Q(vice)-.1 E F0(Service names.)224 120 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 132 Q -F0 -1.11(Va)224 132 S(lid ar)1.11 E(guments for the)-.18 E F12.5 E -F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1 -(shopt)184 144 Q F0(Shell option names as accepted by the)224 144 Q F1 -(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 156 Q F0 -(Signal names.)224 156 Q F1(stopped)184 168 Q F0 -(Names of stopped jobs, if job control is acti)224 168 Q -.15(ve)-.25 G -(.).15 E F1(user)184 180 Q F0(User names.)224 180 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 192 S -(riable).1 E F0(Names of all shell v)224 192 Q 2.5(ariables. May)-.25 F -(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 204 Q/F2 -10/Times-Italic@0 SF(command)2.5 E(command)184 216 Q F0 1.056(is e)3.556 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(helptopic)184 84 Q F0 +(Help topics as accepted by the)224 96 Q F1(help)2.5 E F0 -.2(bu)2.5 G +(iltin.).2 E F1(hostname)184 108 Q F0(Hostnames, as tak)224 120 Q +(en from the \214le speci\214ed by the)-.1 E/F2 9/Times-Bold@0 SF +(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 132 Q F0 +(Job names, if job control is acti)224 132 Q -.15(ve)-.25 G 5(.M).15 G +(ay also be speci\214ed as)-5 E F12.5 E F0(.)A F1 -.1(ke)184 144 S +(yw).1 E(ord)-.1 E F0(Shell reserv)224 156 Q(ed w)-.15 E 2.5(ords. May) +-.1 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(running)184 +168 Q F0(Names of running jobs, if job control is acti)224 168 Q -.15 +(ve)-.25 G(.).15 E F1(ser)184 180 Q(vice)-.1 E F0(Service names.)224 180 +Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 192 +Q F0 -1.11(Va)224 192 S(lid ar)1.11 E(guments for the)-.18 E F12.5 +E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1 +(shopt)184 204 Q F0(Shell option names as accepted by the)224 204 Q F1 +(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 216 Q F0 +(Signal names.)224 216 Q F1(stopped)184 228 Q F0 +(Names of stopped jobs, if job control is acti)224 228 Q -.15(ve)-.25 G +(.).15 E F1(user)184 240 Q F0(User names.)224 240 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 252 S +(riable).1 E F0(Names of all shell v)224 252 Q 2.5(ariables. May)-.25 F +(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 264 Q/F3 +10/Times-Italic@0 SF(command)2.5 E(command)184 276 Q F0 1.056(is e)3.556 F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F 1.056 -(vironment, and its output is used as the possible)-.4 F(completions.) -184 228 Q F1144 240 Q F2(function)2.5 E F0 .113 -(The shell function)184 252 R F2(function)2.614 E F0 .114(is e)2.614 F +(vironment, and its output is used as the possible)-.4 F 2.5 +(completions. Ar)184 288 R(guments are passed as with the)-.18 E F1 +2.5 E F0(option.)2.5 E F1144 300 Q F3(function)2.5 E F0 .113 +(The shell function)184 312 R F3(function)2.614 E F0 .114(is e)2.614 F -.15(xe)-.15 G .114(cuted in the current shell en).15 F 2.614 -(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 264 R +(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 324 R -.15(xe)-.15 G .817(cuted, the \214rst ar).15 F .817(gument \()-.18 F F1 ($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .816 (he name of the command whose ar)-3.316 F(guments)-.18 E 1.407 -(are being completed, the second ar)184 276 R 1.407(gument \()-.18 F F1 +(are being completed, the second ar)184 336 R 1.407(gument \()-.18 F F1 ($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407 -(ord being completed, and the)-.1 F .104(third ar)184 288 R .104 +(ord being completed, and the)-.1 F .104(third ar)184 348 R .104 (gument \()-.18 F F1($3)A F0 2.604(\)i)C 2.604(st)-2.604 G .104(he w) -2.604 F .104(ord preceding the w)-.1 F .103 -(ord being completed on the current com-)-.1 F .101(mand line.)184 300 R +(ord being completed on the current com-)-.1 F .101(mand line.)184 360 R .101(When it \214nishes, the possible completions are retrie)5.101 F -.15(ve)-.25 G 2.602(df).15 G .102(rom the v)-2.602 F .102(alue of the) --.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 312 Q(Y)-.828 E F0(array v)2.25 -E(ariable.)-.25 E F1144 324 Q F2(globpat)2.5 E F0 1.008 -(The pathname e)184 336 R 1.008(xpansion pattern)-.15 F F2(globpat)3.507 -E F0 1.007(is e)3.507 F 1.007(xpanded to generate the possible comple-) --.15 F(tions.)184 348 Q F1144 360 Q F2(pr)2.5 E(e\214x)-.37 E(pr) -184 372 Q(e\214x)-.37 E F0 .534(is added at the be)3.034 F .534 +-.25 F F2(COMPREPL)184 372 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E +F1144 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 +F1144 420 Q F3(pr)2.5 E(e\214x)-.37 E(pr)184 432 Q(e\214x)-.37 E +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 384 Q F1144 396 Q F2(suf)2.5 E -<8c78>-.18 E(suf)184 396 Q<8c78>-.18 E F0 +-.15(ve)-.2 G(been applied.)184 444 Q F1144 456 Q F3(suf)2.5 E +<8c78>-.18 E(suf)184 456 Q<8c78>-.18 E F0 (is appended to each possible completion after all other options ha)2.5 -E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 408 Q F2(wor)2.5 E -(dlist)-.37 E F0(The)184 420 Q F2(wor)3.64 E(dlist)-.37 E F0 1.14 -(is split using the characters in the)3.64 F F3(IFS)3.64 E F0 1.139 +E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 468 Q F3(wor)2.5 E +(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 .98 -(each resultant w)184 432 R .98(ord is e)-.1 F 3.481(xpanded. Shell)-.15 -F .981(quoting is honored within)3.481 F F2(wor)3.481 E(dlist)-.37 E F0 -3.481(,i)C 3.481(no)-3.481 G .981(rder to)-3.481 F(pro)184 444 Q .766 +(each resultant w)184 492 R .98(ord is e)-.1 F 3.481(xpanded. Shell)-.15 +F .981(quoting is honored within)3.481 F F3(wor)3.481 E(dlist)-.37 E F0 +3.481(,i)C 3.481(no)-3.481 G .981(rder to)-3.481 F(pro)184 504 Q .766 (vide a mechanism for the w)-.15 F .765 (ords to contain shell metacharacters or characters in the)-.1 F -.25 -(va)184 456 S 1.964(lue of).25 F F3(IFS)4.464 E/F4 9/Times-Roman@0 SF(.) +(va)184 516 S 1.964(lue of).25 F F2(IFS)4.464 E/F4 9/Times-Roman@0 SF(.) A F0 1.964 (The possible completions are the members of the resultant list which) -6.464 F(match the w)184 468 Q(ord being completed.)-.1 E F1144 480 -Q F2(\214lterpat)2.5 E(\214lterpat)184 492 Q F0 .456 +6.464 F(match the w)184 528 Q(ord being completed.)-.1 E F1144 540 +Q F3(\214lterpat)2.5 E(\214lterpat)184 552 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 504 R 1.596 -(guments, and each completion)-.18 F(matching)184 516 Q F2(\214lterpat) +(completions generated by the preceding options and ar)184 564 R 1.596 +(guments, and each completion)-.18 F(matching)184 576 Q F3(\214lterpat) 3.205 E F0 .705(is remo)3.205 F -.15(ve)-.15 G 3.205(df).15 G .704 (rom the list.)-3.205 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 -(in)3.204 E F2(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704 -(tes the pattern;).05 F(in this case, an)184 528 Q 2.5(yc)-.15 G -(ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E --.15(ve)-.15 G(d.).15 E .466(The return v)144 544.8 R .466 +(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 588 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 .466(The return v)144 604.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 F12.967 E F0 (or)2.967 E F12.967 E F0 .467(is sup-)2.967 F 1.362 -(plied without a)144 556.8 R F2(name)3.862 E F0(ar)3.862 E 1.361 +(plied without a)144 616.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 F2(name)144 568.8 Q F0 +1.361(ompletion speci\214cation for a).15 F F3(name)144 628.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 585.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C -F1(\255DEI)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C -F2(name)-2.5 E F0(])A .447(Modify completion options for each)144 597.6 -R F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0 +F1(compopt)108 645.6 Q F0([)2.5 E F1A F3(option)2.5 E F0 2.5(][)C +F1(\255DEI)-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 657.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 .726 -(completion if no)144 609.6 R F2(name)3.226 E F0 3.226(sa)C .726 -(re supplied.)-3.226 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) +(completion if no)144 669.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 621.6 Q F2(name) +(n, display the completion options for).15 F(each)144 681.6 Q F3(name) 3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v) -5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224 -F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 633.6 Q F0 -.2(bu) +5.724 F .724(alues of)-.25 F F3(option)3.224 E F0 .724(are those v)3.224 +F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 693.6 Q F0 -.2(bu) 2.678 G .178(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he) -5.178 E F12.678 E F0 .178 (option indicates that other supplied options should apply to)2.678 F -1.227(the `)144 645.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\ +1.227(the `)144 705.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.727 F 2.039(completion has pre)144 657.6 R 2.039 +no)-3.727 F 2.039(completion has pre)144 717.6 R 2.039 (viously been de\214ned.)-.25 F(The)7.038 E F14.538 E F0 2.038 (option indicates that other supplied options)4.538 F 1.538 -(should apply to `)144 669.6 R(`empty')-.74 E 4.038('c)-.74 G 1.539 +(should apply to `)144 729.6 R(`empty')-.74 E 4.038('c)-.74 G 1.539 (ommand completion; that is, completion attempted on a blank line.) --4.038 F(The)144 681.6 Q F13.02 E F0 .52(option indicates that ot\ -her supplied options should apply to completion on the initial non-)3.02 -F .867(assignment w)144 693.6 R .868 -(ord on the line, or after a command delimiter such as)-.1 F F1(;)3.368 -E F0(or)3.368 E F1(|)3.368 E F0 3.368(,w)C .868(hich is usually com-) --3.368 F(mand name completion.)144 705.6 Q 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 -(lid option is supplied, an attempt is made to modify the).25 F -(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(5)203.725 E 0 Cg EP +-4.038 F(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22) +.15 E(5)190.545 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E(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 .85(Resume the ne)144 -112.8 R .85(xt iteration of the enclosing)-.15 F F2 -.25(fo)3.35 G(r).25 -E F0(,)A F2(while)3.351 E F0(,)A F2(until)3.351 E F0 3.351(,o)C(r)-3.351 -E F2(select)3.351 E F0 3.351(loop. If)3.351 F F1(n)3.711 E F0 .851 -(is speci\214ed, re-)3.591 F .204(sume at the)144 124.8 R F1(n)2.704 E -F0 .204(th enclosing loop.)B F1(n)5.564 E F0 .204(must be)2.944 F/F3 10 -/Symbol SF2.704 E F0 2.703(1. If)2.704 F F1(n)3.063 E F0 .203 +E(UIL)-.1 E(TINS\(1\))-.92 E(The)144 84 Q/F1 10/Times-Bold@0 SF +3.02 E F0 .52(option indicates that other supplied options should apply\ + to completion on the initial non-)3.02 F .867(assignment w)144 96 R +.868(ord on the line, or after a command delimiter such as)-.1 F F1(;) +3.368 E F0(or)3.368 E F1(|)3.368 E F0 3.368(,w)C .868 +(hich is usually com-)-3.368 F(mand name completion.)144 108 Q .432 +(The return v)144 132 R .431(alue is true unless an in)-.25 F -.25(va) +-.4 G .431(lid option is supplied, an attempt is made to modify the op-) +.25 F(tions for a)144 144 Q/F2 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 F1(continue)108 160.8 Q F0([) +2.5 E F2(n)A F0(])A .85(Resume the ne)144 172.8 R .85 +(xt iteration of the enclosing)-.15 F F1 -.25(fo)3.35 G(r).25 E F0(,)A +F1(while)3.351 E F0(,)A F1(until)3.351 E F0 3.351(,o)C(r)-3.351 E F1 +(select)3.351 E F0 3.351(loop. If)3.351 F F2(n)3.711 E F0 .851 +(is speci\214ed, re-)3.591 F .204(sume at the)144 184.8 R F2(n)2.704 E +F0 .204(th enclosing loop.)B F2(n)5.564 E F0 .204(must be)2.944 F/F3 10 +/Symbol SF2.704 E F0 2.703(1. If)2.704 F F2(n)3.063 E F0 .203 (is greater than the number of enclosing loops,)2.943 F 1.183 -(the last enclosing loop \(the `)144 136.8 R(`top-le)-.74 E -.15(ve)-.25 +(the last enclosing loop \(the `)144 196.8 R(`top-le)-.74 E -.15(ve)-.25 G(l').15 E 3.683('l)-.74 G 1.183(oop\) is resumed.)-3.683 F 1.184 -(The return v)6.184 F 1.184(alue is 0 unless)-.25 F F1(n)3.684 E F0 -1.184(is not)3.684 F(greater than or equal to 1.)144 148.8 Q F2(declar) -108 165.6 Q(e)-.18 E F0([)2.5 E F2(\255aAfFgiIlnrtux)A F0 2.5(][)C F2 --2.5 E F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C -(..])-2.5 E F2(typeset)108 177.6 Q F0([)2.5 E F2(\255aAfFgiIlnrtux)A F0 -2.5(][)C F2-2.5 E F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 -2.5(].)C(..])-2.5 E 1.265(Declare v)144 189.6 R 1.265 +(The return v)6.184 F 1.184(alue is 0 unless)-.25 F F2(n)3.684 E F0 +1.184(is not)3.684 F(greater than or equal to 1.)144 208.8 Q F1(declar) +108 225.6 Q(e)-.18 E F0([)2.5 E F1(\255aAfFgiIlnrtux)A F0 2.5(][)C F1 +-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C +(..])-2.5 E F1(typeset)108 237.6 Q F0([)2.5 E F1(\255aAfFgiIlnrtux)A F0 +2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 +2.5(].)C(..])-2.5 E 1.265(Declare v)144 249.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)3.765 E F1(name)3.765 E F0 3.765(sa)C 1.265 +3.765(utes. If)-.2 F(no)3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265 (re gi)-3.765 F -.15(ve)-.25 G 3.764(nt).15 G 1.264(hen display the v) --3.764 F 1.264(alues of)-.25 F -.25(va)144 201.6 S 3.46(riables. The).25 -F F23.46 E F0 .96(option will display the attrib)3.46 F .96 -(utes and v)-.2 F .96(alues of each)-.25 F F1(name)3.82 E F0 5.96(.W).18 -G(hen)-5.96 E F23.46 E F0 .96(is used)3.46 F(with)144 213.6 Q F1 +-3.764 F 1.264(alues of)-.25 F -.25(va)144 261.6 S 3.46(riables. The).25 +F F13.46 E F0 .96(option will display the attrib)3.46 F .96 +(utes and v)-.2 F .96(alues of each)-.25 F F2(name)3.82 E F0 5.96(.W).18 +G(hen)-5.96 E F13.46 E F0 .96(is used)3.46 F(with)144 273.6 Q F2 (name)2.775 E F0(ar)2.775 E .275 -(guments, additional options, other than)-.18 F F22.775 E F0(and) -2.775 E F22.775 E F0 2.775(,a)C .274(re ignored.)-2.775 F(When) -5.274 E F22.774 E F0 .274(is supplied)2.774 F(without)144 225.6 Q -F1(name)3.789 E F0(ar)3.789 E 1.289(guments, it will display the attrib) +(guments, additional options, other than)-.18 F F12.775 E F0(and) +2.775 E F12.775 E F0 2.775(,a)C .274(re ignored.)-2.775 F(When) +5.274 E F12.774 E F0 .274(is supplied)2.774 F(without)144 285.6 Q +F2(name)3.789 E F0(ar)3.789 E 1.289(guments, it will display the attrib) -.18 F 1.289(utes and v)-.2 F 1.29(alues of all v)-.25 F 1.29 -(ariables ha)-.25 F 1.29(ving the at-)-.2 F(trib)144 237.6 Q .38 +(ariables ha)-.25 F 1.29(ving the at-)-.2 F(trib)144 297.6 Q .38 (utes speci\214ed by the additional options.)-.2 F .38 -(If no other options are supplied with)5.38 F F22.88 E F0(,)A F2 +(If no other options are supplied with)5.38 F F12.88 E F0(,)A F1 (declar)2.88 E(e)-.18 E F0(will)2.88 E 1.106(display the attrib)144 -249.6 R 1.106(utes and v)-.2 F 1.106(alues of all shell v)-.25 F 3.606 -(ariables. The)-.25 F F23.606 E F0 1.107 +309.6 R 1.106(utes and v)-.2 F 1.106(alues of all shell v)-.25 F 3.606 +(ariables. The)-.25 F F13.606 E F0 1.107 (option will restrict the display to)3.606 F .3(shell functions.)144 -261.6 R(The)5.3 E F22.8 E F0 .299(option inhibits the display of \ +321.6 R(The)5.3 E F12.8 E F0 .299(option inhibits the display of \ function de\214nitions; only the function name)2.8 F 1.54(and attrib)144 -273.6 R 1.54(utes are printed.)-.2 F 1.54(If the)6.54 F F2(extdeb)4.04 E -(ug)-.2 E F0 1.54(shell option is enabled using)4.04 F F2(shopt)4.04 E +333.6 R 1.54(utes are printed.)-.2 F 1.54(If the)6.54 F F1(extdeb)4.04 E +(ug)-.2 E F0 1.54(shell option is enabled using)4.04 F F1(shopt)4.04 E F0 4.04(,t)C 1.54(he source \214le)-4.04 F .648 -(name and line number where each)144 285.6 R F1(name)3.148 E F0 .648 -(is de\214ned are displayed as well.)3.148 F(The)5.648 E F23.148 E -F0 .648(option implies)3.148 F F2144 297.6 Q F0 5.836(.T)C(he) --5.836 E F23.336 E F0 .836(option forces v)3.336 F .837 +(name and line number where each)144 345.6 R F2(name)3.148 E F0 .648 +(is de\214ned are displayed as well.)3.148 F(The)5.648 E F13.148 E +F0 .648(option implies)3.148 F F1144 357.6 Q F0 5.836(.T)C(he) +-5.836 E F13.336 E F0 .836(option forces v)3.336 F .837 (ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 -(ve)-.25 G 3.337(nw).15 G(hen)-3.337 E F2(de-)3.337 E(clar)144 309.6 Q +(ve)-.25 G 3.337(nw).15 G(hen)-3.337 E F1(de-)3.337 E(clar)144 369.6 Q (e)-.18 E F0 .819(is e)3.319 F -.15(xe)-.15 G .819 (cuted in a shell function.).15 F .818 -(It is ignored in all other cases.)5.818 F(The)5.818 E F23.318 E -F0 .818(option causes local)3.318 F -.25(va)144 321.6 S .693 +(It is ignored in all other cases.)5.818 F(The)5.818 E F13.318 E +F0 .818(option causes local)3.318 F -.25(va)144 381.6 S .693 (riables to inherit the attrib).25 F .693(utes \(e)-.2 F .693(xcept the) --.15 F F1(namer)3.194 E(ef)-.37 E F0(attrib)3.194 E .694(ute\) and v)-.2 +-.15 F F2(namer)3.194 E(ef)-.37 E F0(attrib)3.194 E .694(ute\) and v)-.2 F .694(alue of an)-.25 F 3.194(ye)-.15 G .694(xisting v)-3.344 F -(ariable)-.25 E .82(with the same)144 333.6 R F1(name)3.32 E F0 .82 +(ariable)-.25 E .82(with the same)144 393.6 R F2(name)3.32 E F0 .82 (at a surrounding scope.)3.32 F .82(If there is no e)5.82 F .82 (xisting v)-.15 F .82(ariable, the local v)-.25 F .82(ariable is)-.25 F -.379(initially unset.)144 345.6 R .379(The follo)5.379 F .379 +.379(initially unset.)144 405.6 R .379(The follo)5.379 F .379 (wing options can be used to restrict output to v)-.25 F .38 -(ariables with the speci\214ed)-.25 F(attrib)144 357.6 Q(ute or to gi) --.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F2144 -369.6 Q F0(Each)180 369.6 Q F1(name)2.5 E F0(is an inde)2.5 E -.15(xe) --.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F2(Arrays)2.5 E -F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F2144 381.6 Q F0(Each)180 -381.6 Q F1(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H -(rray v).15 E(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve) --.15 G(\).).15 E F2144 393.6 Q F0(Use function names only)180 -393.6 Q(.)-.65 E F2144 405.6 Q F0 .558(The v)180 405.6 R .558 -(ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25 -(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .557 -(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 417.6 Q F0(abo) -2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v) --2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E F2144 429.6 Q -F0 .909(When the v)180 429.6 R .909(ariable is assigned a v)-.25 F .909 -(alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4 -G .91(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 441.6 R -(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2144 453.6 -Q F0(Gi)180 453.6 Q 1.62 -.15(ve e)-.25 H(ach).15 E F1(name)3.82 E F0 -(the)3.82 E F1(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319 +(ariables with the speci\214ed)-.25 F(attrib)144 417.6 Q(ute or to gi) +-.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F1144 +429.6 Q F0(Each)180 429.6 Q F2(name)2.5 E F0(is an inde)2.5 E -.15(xe) +-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F1(Arrays)2.5 E +F0(in)2.5 E F2(bash\(1\))2.5 E F0(\).)A F1144 441.6 Q F0(Each)180 +441.6 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H +(rray v).15 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(in)2.5 E F2 +(bash\(1\))2.5 E F0(\).)A F1144 453.6 Q F0 +(Use function names only)180 453.6 Q(.)-.65 E F1144 465.6 Q F0 +.558(The v)180 465.6 R .558(ariable is treated as an inte)-.25 F .558 +(ger; arithmetic e)-.15 F -.25(va)-.25 G .558(luation \(see).25 F/F4 9 +/Times-Bold@0 SF .557(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION) +180 477.6 Q F0(in)2.25 E F2(bash\(1\))2.5 E F0 2.5(\)i)C 2.5(sp)-2.5 G +(erformed when the v)-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E +F1144 489.6 Q F0 .909(When the v)180 489.6 R .909 +(ariable is assigned a v)-.25 F .909(alue, all upper)-.25 F .909 +(-case characters are con)-.2 F -.15(ve)-.4 G .91(rted to lo).15 F(wer) +-.25 E(-)-.2 E 2.5(case. The)180 501.6 R(upper)2.5 E(-case attrib)-.2 E +(ute is disabled.)-.2 E F1144 513.6 Q F0(Gi)180 513.6 Q 1.62 -.15 +(ve e)-.25 H(ach).15 E F2(name)3.82 E F0(the)3.82 E F2(namer)3.819 E(ef) +-.37 E F0(attrib)3.819 E 1.319 (ute, making it a name reference to another v)-.2 F(ariable.)-.25 E .477 -(That other v)180 465.6 R .478(ariable is de\214ned by the v)-.25 F .478 -(alue of)-.25 F F1(name)2.978 E F0 5.478(.A)C .478 -(ll references, assignments, and at-)-5.478 F(trib)180 477.6 Q .782 -(ute modi\214cations to)-.2 F F1(name)3.282 E F0 3.282(,e)C .782 -(xcept those using or changing the)-3.432 F F23.281 E F0(attrib) -3.281 E .781(ute itself, are)-.2 F .808(performed on the v)180 489.6 R -.808(ariable referenced by)-.25 F F1(name)3.308 E F0 1.908 -.55('s v)D +(That other v)180 525.6 R .478(ariable is de\214ned by the v)-.25 F .478 +(alue of)-.25 F F2(name)2.978 E F0 5.478(.A)C .478 +(ll references, assignments, and at-)-5.478 F(trib)180 537.6 Q .782 +(ute modi\214cations to)-.2 F F2(name)3.282 E F0 3.282(,e)C .782 +(xcept those using or changing the)-3.432 F F13.281 E F0(attrib) +3.281 E .781(ute itself, are)-.2 F .808(performed on the v)180 549.6 R +.808(ariable referenced by)-.25 F F2(name)3.308 E F0 1.908 -.55('s v)D 3.308(alue. The).3 F .809(nameref attrib)3.309 F .809(ute cannot be)-.2 -F(applied to array v)180 501.6 Q(ariables.)-.25 E F2144 513.6 Q F0 -(Mak)180 513.6 Q(e)-.1 E F1(name)3.655 E F0 3.655(sr)C(eadonly)-3.655 E +F(applied to array v)180 561.6 Q(ariables.)-.25 E F1144 573.6 Q F0 +(Mak)180 573.6 Q(e)-.1 E F2(name)3.655 E F0 3.655(sr)C(eadonly)-3.655 E 6.154(.T)-.65 G 1.154(hese names cannot then be assigned v)-6.154 F 1.154(alues by subsequent as-)-.25 F(signment statements or unset.)180 -525.6 Q F2144 537.6 Q F0(Gi)180 537.6 Q .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 549.6 Q(The trace attrib)5 E -(ute has no special meaning for v)-.2 E(ariables.)-.25 E F2144 -561.6 Q F0 .91(When the v)180 561.6 R .909(ariable is assigned a v)-.25 +585.6 Q F1144 597.6 Q F0(Gi)180 597.6 Q .729 -.15(ve e)-.25 H(ach) +.15 E F2(name)2.929 E F0(the)2.929 E F2(tr)2.929 E(ace)-.15 E F0(attrib) +2.929 E 2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F1 +(DEB)2.929 E(UG)-.1 E F0(and)2.93 E F1(RETURN)2.93 E F0 +(traps from the calling shell.)180 609.6 Q(The trace attrib)5 E +(ute has no special meaning for v)-.2 E(ariables.)-.25 E F1144 +621.6 Q F0 .91(When the v)180 621.6 R .909(ariable is assigned a v)-.25 F .909(alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2 -F -.15(ve)-.4 G .909(rted to upper).15 F(-)-.2 E 2.5(case. The)180 573.6 -R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2 -144 585.6 Q F0(Mark)180 585.6 Q F1(name)2.5 E F0 2.5(sf)C(or e)-2.5 E +F -.15(ve)-.4 G .909(rted to upper).15 F(-)-.2 E 2.5(case. The)180 633.6 +R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1 +144 645.6 Q F0(Mark)180 645.6 Q F2(name)2.5 E F0 2.5(sf)C(or e)-2.5 E (xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .143 -(Using `+' instead of `\255' turns of)144 602.4 R 2.643(ft)-.25 G .143 +(Using `+' instead of `\255' turns of)144 662.4 R 2.643(ft)-.25 G .143 (he attrib)-2.643 F .143(ute instead, with the e)-.2 F .144 -(xceptions that)-.15 F F2(+a)2.644 E F0(and)2.644 E F2(+A)2.644 E F0 -.144(may not)2.644 F .579(be used to destro)144 614.4 R 3.079(ya)-.1 G -.579(rray v)-3.079 F .579(ariables and)-.25 F F2(+r)3.079 E F0 .579 +(xceptions that)-.15 F F1(+a)2.644 E F0(and)2.644 E F1(+A)2.644 E F0 +.144(may not)2.644 F .579(be used to destro)144 674.4 R 3.079(ya)-.1 G +.579(rray v)-3.079 F .579(ariables and)-.25 F F1(+r)3.079 E F0 .579 (will not remo)3.079 F .879 -.15(ve t)-.15 H .579(he readonly attrib).15 -F 3.079(ute. When)-.2 F .578(used in a)3.078 F(function,)144 626.4 Q F2 -(declar)3.543 E(e)-.18 E F0(and)3.543 E F2(typeset)3.543 E F0(mak)3.543 -E 3.543(ee)-.1 G(ach)-3.543 E F1(name)3.543 E F0 1.043 -(local, as with the)3.543 F F2(local)3.544 E F0 1.044 -(command, unless the)3.544 F F23.544 E F0 1.205 -(option is supplied.)144 638.4 R 1.205(If a v)6.205 F 1.205 -(ariable name is follo)-.25 F 1.205(wed by =)-.25 F F1(value)A F0 3.705 +F 3.079(ute. When)-.2 F .578(used in a)3.078 F(function,)144 686.4 Q F1 +(declar)3.543 E(e)-.18 E F0(and)3.543 E F1(typeset)3.543 E F0(mak)3.543 +E 3.543(ee)-.1 G(ach)-3.543 E F2(name)3.543 E F0 1.043 +(local, as with the)3.543 F F1(local)3.544 E F0 1.044 +(command, unless the)3.544 F F13.544 E F0 1.205 +(option is supplied.)144 698.4 R 1.205(If a v)6.205 F 1.205 +(ariable name is follo)-.25 F 1.205(wed by =)-.25 F F2(value)A F0 3.705 (,t)C 1.205(he v)-3.705 F 1.205(alue of the v)-.25 F 1.205 -(ariable is set to)-.25 F F1(value)144 650.4 Q F0 5.217(.W)C .217 -(hen using)-5.217 F F22.717 E F0(or)2.717 E F22.717 E F0 +(ariable is set to)-.25 F F2(value)144 710.4 Q F0 5.217(.W)C .217 +(hen using)-5.217 F F12.717 E F0(or)2.717 E F12.717 E F0 .217(and the compound assignment syntax to create array v)2.717 F .218 -(ariables, addi-)-.25 F .882(tional attrib)144 662.4 R .882 +(ariables, addi-)-.25 F .882(tional attrib)144 722.4 R .882 (utes do not tak)-.2 F 3.382(ee)-.1 G -.25(ff)-3.382 G .882 (ect until subsequent assignments.).25 F .882(The return v)5.882 F .882 -(alue is 0 unless an)-.25 F(in)144 674.4 Q -.25(va)-.4 G .365(lid optio\ -n is encountered, an attempt is made to de\214ne a function using).25 F -/F5 10/Courier@0 SF .366(\255f foo=bar)2.866 F F0 2.866(,a)C 2.866(na) --2.866 G(t-)-2.866 E .549(tempt is made to assign a v)144 686.4 R .549 -(alue to a readonly v)-.25 F .548 -(ariable, an attempt is made to assign a v)-.25 F .548(alue to an)-.25 F -1.748(array v)144 698.4 R 1.748 -(ariable without using the compound assignment syntax \(see)-.25 F F2 -(Arrays)4.249 E F0(abo)4.249 E -.15(ve)-.15 G 1.749(\), one of the).15 F -F1(names)144 710.4 Q F0 .359(is not a v)2.859 F .359(alid shell v)-.25 F -.359(ariable name, an attempt is made to turn of)-.25 F 2.859(fr)-.25 G -.359(eadonly status for a read-)-2.859 F 1.212(only v)144 722.4 R 1.213 -(ariable, an attempt is made to turn of)-.25 F 3.713(fa)-.25 G 1.213 -(rray status for an array v)-3.713 F 1.213(ariable, or an attempt is) --.25 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(6)203.725 E 0 Cg EP +(alue is 0 unless an)-.25 F(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15 +(ve)-.15 G(mber 22).15 E(6)190.545 E 0 Cg EP %%Page: 7 7 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E(made to display a non-e)144 84 Q -(xistent function with)-.15 E/F1 10/Times-Bold@0 SF2.5 E F0(.)A F1 -(dirs [\255clpv] [+)108 100.8 Q/F2 10/Times-Italic@0 SF(n)A F1 2.5(][)C --2.5 E F2(n)A F1(])A F0 -.4(Wi)144 112.8 S .329 +E(UIL)-.1 E(TINS\(1\))-.92 E(in)144 84 Q -.25(va)-.4 G .365(lid option \ +is encountered, an attempt is made to de\214ne a function using).25 F/F1 +10/Courier@0 SF .366(\255f foo=bar)2.866 F F0 2.866(,a)C 2.866(na)-2.866 +G(t-)-2.866 E .549(tempt is made to assign a v)144 96 R .549 +(alue to a readonly v)-.25 F .548 +(ariable, an attempt is made to assign a v)-.25 F .548(alue to an)-.25 F +.391(array v)144 108 R .391 +(ariable without using the compound assignment syntax \(see)-.25 F/F2 10 +/Times-Bold@0 SF(Arrays)2.892 E F0(in)2.892 E/F3 10/Times-Italic@0 SF +(bash\(1\))2.892 E F0 .392(\), one of the)B F3(names)144 120 Q F0 .359 +(is not a v)2.859 F .359(alid shell v)-.25 F .359 +(ariable name, an attempt is made to turn of)-.25 F 2.859(fr)-.25 G .359 +(eadonly status for a read-)-2.859 F 1.212(only v)144 132 R 1.213 +(ariable, an attempt is made to turn of)-.25 F 3.713(fa)-.25 G 1.213 +(rray status for an array v)-3.713 F 1.213(ariable, or an attempt is) +-.25 F(made to display a non-e)144 144 Q(xistent function with)-.15 E F2 +2.5 E F0(.)A F2(dirs [\255clpv] [+)108 160.8 Q F3(n)A F2 2.5(][)C +-2.5 E F3(n)A F2(])A F0 -.4(Wi)144 172.8 S .329 (thout options, displays the list of currently remembered directories.) .4 F .328(The def)5.328 F .328(ault display is on a)-.1 F 1.238 -(single line with directory names separated by spaces.)144 124.8 R 1.238 -(Directories are added to the list with the)6.238 F F1(pushd)144 136.8 Q -F0 .928(command; the)3.428 F F1(popd)3.428 E F0 .928(command remo)3.428 +(single line with directory names separated by spaces.)144 184.8 R 1.238 +(Directories are added to the list with the)6.238 F F2(pushd)144 196.8 Q +F0 .928(command; the)3.428 F F2(popd)3.428 E F0 .928(command remo)3.428 F -.15(ve)-.15 G 3.428(se).15 G .928(ntries from the list.)-3.428 F .928 -(The current directory is al-)5.928 F -.1(wa)144 148.8 S -(ys the \214rst directory in the stack.).1 E F1144 160.8 Q F0 -(Clears the directory stack by deleting all of the entries.)180 160.8 Q -F1144 172.8 Q F0 .881 -(Produces a listing using full pathnames; the def)180 172.8 R .882 +(The current directory is al-)5.928 F -.1(wa)144 208.8 S +(ys the \214rst directory in the stack.).1 E F2144 220.8 Q F0 +(Clears the directory stack by deleting all of the entries.)180 220.8 Q +F2144 232.8 Q F0 .881 +(Produces a listing using full pathnames; the def)180 232.8 R .882 (ault listing format uses a tilde to denote)-.1 F(the home directory)180 -184.8 Q(.)-.65 E F1144 196.8 Q F0 -(Print the directory stack with one entry per line.)180 196.8 Q F1 -144 208.8 Q F0 .273(Print the directory stack with one entry per line, \ -pre\214xing each entry with its inde)180 208.8 R 2.772(xi)-.15 G 2.772 -(nt)-2.772 G(he)-2.772 E(stack.)180 220.8 Q F1(+)144 232.8 Q F2(n)A F0 -1.564(Displays the)180 232.8 R F2(n)4.064 E F0 1.565 -(th entry counting from the left of the list sho)B 1.565(wn by)-.25 F F1 +244.8 Q(.)-.65 E F2144 256.8 Q F0 +(Print the directory stack with one entry per line.)180 256.8 Q F2 +144 268.8 Q F0 .273(Print the directory stack with one entry per line, \ +pre\214xing each entry with its inde)180 268.8 R 2.772(xi)-.15 G 2.772 +(nt)-2.772 G(he)-2.772 E(stack.)180 280.8 Q F2(+)144 292.8 Q F3(n)A F0 +1.564(Displays the)180 292.8 R F3(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 -(without options, starting with zero.)180 244.8 Q F1144 256.8 Q F2 -(n)A F0 1.194(Displays the)180 256.8 R F2(n)3.694 E F0 1.194 +(without options, starting with zero.)180 304.8 Q F2144 316.8 Q F3 +(n)A F0 1.194(Displays the)180 316.8 R F3(n)3.694 E F0 1.194 (th entry counting from the right of the list sho)B 1.194(wn by)-.25 F -F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E -(without options, starting with zero.)180 268.8 Q .257(The return v)144 -285.6 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 -(lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe) +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 328.8 Q .257(The return v)144 +345.6 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 +(lid option is supplied or).25 F F3(n)2.758 E F0(inde)2.758 E -.15(xe) -.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-) -.15 F(tory stack.)144 297.6 Q F1(diso)108 314.4 Q(wn)-.1 E F0([)2.5 E F1 -(\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0 -(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 326.4 S .122 -(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec) +.15 F(tory stack.)144 357.6 Q F2(diso)108 374.4 Q(wn)-.1 E F0([)2.5 E F2 +(\255ar)A F0 2.5(][)C F2-2.5 E F0 2.5(][)C F3(jobspec)-2.5 E F0 +(... |)2.5 E F3(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 386.4 S .122 +(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F3(jobspec) 4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H -2.622(obs. If).15 F F2(jobspec)4.362 E F0 .121(is not present, and)2.932 -F .096(neither the)144 338.4 R F12.596 E F0 .096(nor the)2.596 F -F12.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E -.096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 +2.622(obs. If).15 F F3(jobspec)4.362 E F0 .121(is not present, and)2.932 +F .096(neither the)144 398.4 R F22.596 E F0 .096(nor the)2.596 F +F22.596 E F0 .096(option is supplied, the)2.596 F F3(curr)2.596 E +.096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F2 2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each) -.15 F F2(jobspec)145.74 350.4 Q F0 .586(is not remo)3.396 F -.15(ve)-.15 +.15 F F3(jobspec)145.74 410.4 Q F0 .586(is not remo)3.396 F -.15(ve)-.15 G 3.086(df).15 G .585(rom the table, b)-3.086 F .585(ut is mark)-.2 F -.585(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .585 -(is not sent to the job if the)2.835 F .962(shell recei)144 362.4 R -.15 -(ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962 -(If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1 +.585(ed so that)-.1 F/F4 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .585 +(is not sent to the job if the)2.835 F .962(shell recei)144 422.4 R -.15 +(ve)-.25 G 3.462(sa).15 G F4(SIGHUP)A/F5 9/Times-Roman@0 SF(.)A F0 .962 +(If no)5.462 F F3(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F2 3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 -H 3.462(rm).15 G .962(ark all)-3.462 F 1.359(jobs; the)144 374.4 R F1 -3.859 E F0 1.359(option without a)3.859 F F2(jobspec)5.599 E F0 +H 3.462(rm).15 G .962(ark all)-3.462 F 1.359(jobs; the)144 434.4 R F2 +3.859 E F0 1.359(option without a)3.859 F F3(jobspec)5.599 E F0 (ar)4.169 E 1.358(gument restricts operation to running jobs.)-.18 F -1.358(The return)6.358 F -.25(va)144 386.4 S(lue is 0 unless a).25 E F2 +1.358(The return)6.358 F -.25(va)144 446.4 S(lue is 0 unless a).25 E F3 (jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E -F1(echo)108 403.2 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) --.37 E F0(...])2.5 E .424(Output the)144 415.2 R F2(ar)2.924 E(g)-.37 E +F2(echo)108 463.2 Q F0([)2.5 E F2(\255neE)A F0 2.5(][)C F3(ar)-2.5 E(g) +-.37 E F0(...])2.5 E .424(Output the)144 475.2 R F3(ar)2.924 E(g)-.37 E F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 (wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .308 -(error occurs.)144 427.2 R(If)5.308 E F12.808 E F0 .308 +(error occurs.)144 487.2 R(If)5.308 E F22.808 E F0 .308 (is speci\214ed, the trailing ne)2.808 F .308(wline is suppressed.)-.25 -F .307(If the)5.308 F F12.807 E F0 .307(option is gi)2.807 F -.15 +F .307(If the)5.308 F F22.807 E F0 .307(option is gi)2.807 F -.15 (ve)-.25 G .307(n, inter).15 F(-)-.2 E .197(pretation of the follo)144 -439.2 R .198(wing backslash-escaped characters is enabled.)-.25 F(The) -5.198 E F12.698 E F0 .198(option disables the in-)2.698 F .067 -(terpretation of these escape characters, e)144 451.2 R -.15(ve)-.25 G +499.2 R .198(wing backslash-escaped characters is enabled.)-.25 F(The) +5.198 E F22.698 E F0 .198(option disables the in-)2.698 F .067 +(terpretation of these escape characters, e)144 511.2 R -.15(ve)-.25 G 2.567(no).15 G 2.567(ns)-2.567 G .067(ystems where the)-2.567 F 2.567 -(ya)-.15 G .067(re interpreted by def)-2.567 F 2.567(ault. The)-.1 F F1 -(xpg_echo)144 463.2 Q F0 .601 +(ya)-.15 G .067(re interpreted by def)-2.567 F 2.567(ault. The)-.1 F F2 +(xpg_echo)144 523.2 Q F0 .601 (shell option may be used to dynamically determine whether or not)3.101 -F F1(echo)3.102 E F0 -.15(ex)3.102 G .602(pands these).15 F .659 -(escape characters by def)144 475.2 R(ault.)-.1 E F1(echo)5.659 E F0 -.659(does not interpret)3.159 F F13.159 E F0 .659 -(to mean the end of options.)3.159 F F1(echo)5.658 E F0(inter)3.158 E(-) --.2 E(prets the follo)144 487.2 Q(wing escape sequences:)-.25 E F1(\\a) -144 499.2 Q F0(alert \(bell\))180 499.2 Q F1(\\b)144 511.2 Q F0 -(backspace)180 511.2 Q F1(\\c)144 523.2 Q F0(suppress further output)180 -523.2 Q F1(\\e)144 535.2 Q(\\E)144 547.2 Q F0(an escape character)180 -547.2 Q F1(\\f)144 559.2 Q F0(form feed)180 559.2 Q F1(\\n)144 571.2 Q -F0(ne)180 571.2 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 583.2 Q F0 -(carriage return)180 583.2 Q F1(\\t)144 595.2 Q F0(horizontal tab)180 -595.2 Q F1(\\v)144 607.2 Q F0 -.15(ve)180 607.2 S(rtical tab).15 E F1 -(\\\\)144 619.2 Q F0(backslash)180 619.2 Q F1(\\0)144 631.2 Q F2(nnn)A -F0(the eight-bit character whose v)180 631.2 Q(alue is the octal v)-.25 -E(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1 -(\\x)144 643.2 Q F2(HH)A F0(the eight-bit character whose v)180 643.2 Q -(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 -(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1 -(\\u)144 655.2 Q F2(HHHH)A F0 1.506 -(the Unicode \(ISO/IEC 10646\) character whose v)180 667.2 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 679.2 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 691.2 Q F2(HHHHHHHH)A F0 .548 -(the Unicode \(ISO/IEC 10646\) character whose v)180 703.2 R .547 -(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) -3.047 E(HHH)180 715.2 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G -(igits\))-2.5 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(7)203.725 E -0 Cg EP +F F2(echo)3.102 E F0 -.15(ex)3.102 G .602(pands these).15 F .659 +(escape characters by def)144 535.2 R(ault.)-.1 E F2(echo)5.659 E F0 +.659(does not interpret)3.159 F F23.159 E F0 .659 +(to mean the end of options.)3.159 F F2(echo)5.658 E F0(inter)3.158 E(-) +-.2 E(prets the follo)144 547.2 Q(wing escape sequences:)-.25 E F2(\\a) +144 559.2 Q F0(alert \(bell\))180 559.2 Q F2(\\b)144 571.2 Q F0 +(backspace)180 571.2 Q F2(\\c)144 583.2 Q F0(suppress further output)180 +583.2 Q F2(\\e)144 595.2 Q(\\E)144 607.2 Q F0(an escape character)180 +607.2 Q F2(\\f)144 619.2 Q F0(form feed)180 619.2 Q F2(\\n)144 631.2 Q +F0(ne)180 631.2 Q 2.5(wl)-.25 G(ine)-2.5 E F2(\\r)144 643.2 Q F0 +(carriage return)180 643.2 Q F2(\\t)144 655.2 Q F0(horizontal tab)180 +655.2 Q F2(\\v)144 667.2 Q F0 -.15(ve)180 667.2 S(rtical tab).15 E F2 +(\\\\)144 679.2 Q F0(backslash)180 679.2 Q F2(\\0)144 691.2 Q F3(nnn)A +F0(the eight-bit character whose v)180 691.2 Q(alue is the octal v)-.25 +E(alue)-.25 E F3(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F2 +(\\x)144 703.2 Q F3(HH)A F0(the eight-bit character whose v)180 703.2 Q +(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F3(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 +(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(7) +190.545 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(enable)108 84 Q F0([) -2.5 E F1A F0 2.5(][)C F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 -E/F2 10/Times-Italic@0 SF(\214lename)2.5 E F0 2.5(][)C F2(name)-2.5 E F0 -(...])2.5 E .277(Enable and disable b)144 96 R .278 -(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(\\u)144 84 Q/F2 10 +/Times-Italic@0 SF(HHHH)A F0 1.506 +(the Unicode \(ISO/IEC 10646\) character whose v)180 96 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 108 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 120 Q F2(HHHHHHHH)A F0 .548 +(the Unicode \(ISO/IEC 10646\) character whose v)180 132 R .547 +(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) +3.047 E(HHH)180 144 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\)) +-2.5 E F1(enable)108 160.8 Q F0([)2.5 E F1A F0 2.5(][)C F1 +(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 +(][)C F2(name)-2.5 E F0(...])2.5 E .277(Enable and disable b)144 172.8 R +.278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278 (uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .834 -(the same name as a shell b)144 108 R .834(uiltin to be e)-.2 F -.15(xe) --.15 G .834(cuted without specifying a full pathname, e).15 F -.15(ve) --.25 G 3.333(nt).15 G(hough)-3.333 E .989 -(the shell normally searches for b)144 120 R .989 +(the same name as a shell b)144 184.8 R .834(uiltin to be e)-.2 F -.15 +(xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15 +(ve)-.25 G 3.333(nt).15 G(hough)-3.333 E .989 +(the shell normally searches for b)144 196.8 R .989 (uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .99 (is used, each)3.49 F F2(name)3.49 E F0 .99(is dis-)3.49 F .649 -(abled; otherwise,)144 132 R F2(names)3.148 E F0 .648(are enabled.)3.148 -F -.15(Fo)5.648 G 3.148(re).15 G .648(xample, to use the)-3.298 F F1 -(test)3.148 E F0 .648(binary found via the)3.148 F/F3 9/Times-Bold@0 SF --.666(PA)3.148 G(TH)-.189 E F0(in-)2.898 E .538(stead of the shell b)144 -144 R .538(uiltin v)-.2 F .538(ersion, run)-.15 F/F4 10/Courier@0 SF -.538(enable -n test)3.038 F F0 5.538(.T)C(he)-5.538 E F13.038 E F0 -.539(option means to load the ne)3.038 F(w)-.25 E -.2(bu)144 156 S 1.365 -(iltin command).2 F F2(name)4.225 E F0 1.365(from shared object)4.045 F -F2(\214lename)5.775 E F0 3.865(,o).18 G 3.865(ns)-3.865 G 1.365 -(ystems that support dynamic loading.)-3.865 F(The)144 168 Q F1 -2.866 E F0 .366(option will delete a b)2.866 F .366(uiltin pre)-.2 F -.366(viously loaded with)-.25 F F12.867 E F0 5.367(.I)C 2.867(fn) --5.367 G(o)-2.867 E F2(name)2.867 E F0(ar)2.867 E .367(guments are gi) --.18 F -.15(ve)-.25 G .367(n, or).15 F .399(if the)144 180 R F1 -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 .398(guments, the)-.18 F .098(list consists of all enabled shell b)144 -192 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 -(is supplied, only disabled b)2.598 F .099(uiltins are printed.)-.2 F -(If)5.099 E F12.599 E F0 .906 -(is supplied, the list printed includes all b)144 204 R .905 -(uiltins, with an indication of whether or not each is en-)-.2 F 2.872 -(abled. If)144 216 R F12.872 E F0 .372 -(is supplied, the output is restricted to the POSIX)2.872 F F2(special) -2.873 E F0 -.2(bu)2.873 G 2.873(iltins. The).2 F .373(return v)2.873 F -.373(alue is)-.25 F 2.5(0u)144 228 S(nless a)-2.5 E F2(name)2.86 E F0 -(is not a shell b)2.68 E(uiltin or there is an error loading a ne)-.2 E -2.5(wb)-.25 G(uiltin from a shared object.)-2.7 E F1 -2.3 -.15(ev a)108 -244.8 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(The)144 256.8 -Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C .671 +(abled; otherwise,)144 208.8 R F2(names)3.148 E F0 .648(are enabled.) +3.148 F -.15(Fo)5.648 G 3.148(re).15 G .648(xample, to use the)-3.298 F +F1(test)3.148 E F0 .648(binary found via the)3.148 F/F3 9/Times-Bold@0 +SF -.666(PA)3.148 G(TH)-.189 E F0(in-)2.898 E .538(stead of the shell b) +144 220.8 R .538(uiltin v)-.2 F .538(ersion, run)-.15 F/F4 10/Courier@0 +SF .538(enable -n test)3.038 F F0 5.538(.T)C(he)-5.538 E F13.038 E +F0 .539(option means to load the ne)3.038 F(w)-.25 E -.2(bu)144 232.8 S +1.365(iltin command).2 F F2(name)4.225 E F0 1.365(from shared object) +4.045 F F2(\214lename)5.775 E F0 3.865(,o).18 G 3.865(ns)-3.865 G 1.365 +(ystems that support dynamic loading.)-3.865 F .606(Bash will use the v) +144 244.8 R .606(alue of the)-.25 F F1 -.3(BA)3.106 G(SH_LO).3 E(AD)-.4 +E(ABLES_P)-.35 E -.95(AT)-.74 G(H).95 E F0 -.25(va)3.106 G .606 +(riable as a colon-separated list of).25 F .549 +(directories in which to search for)144 256.8 R F2(\214lename)3.049 E F0 +5.549(.T)C .549(he def)-5.549 F .548(ault is system-dependent.)-.1 F +(The)5.548 E F13.048 E F0 .548(option will)3.048 F .546 +(delete a b)144 268.8 R .546(uiltin pre)-.2 F .546(viously loaded with) +-.25 F F13.046 E F0 5.547(.I)C 3.047(fn)-5.547 G(o)-3.047 E F2 +(name)3.047 E F0(ar)3.047 E .547(guments are gi)-.18 F -.15(ve)-.25 G +.547(n, or if the).15 F F13.047 E F0 .547(option is)3.047 F .546 +(supplied, a list of shell b)144 280.8 R .545(uiltins is printed.)-.2 F +-.4(Wi)5.545 G .545(th no other option ar).4 F .545 +(guments, the list consists of all)-.18 F .695(enabled shell b)144 292.8 +R 3.195(uiltins. If)-.2 F F13.195 E F0 .695 +(is supplied, only disabled b)3.195 F .695(uiltins are printed.)-.2 F +(If)5.695 E F13.195 E F0 .695(is supplied, the)3.195 F .262 +(list printed includes all b)144 304.8 R .261 +(uiltins, with an indication of whether or not each is enabled.)-.2 F +(If)5.261 E F12.761 E F0 .261(is sup-)2.761 F .268 +(plied, the output is restricted to the POSIX)144 316.8 R F2(special) +2.768 E F0 -.2(bu)2.768 G 2.768(iltins. If).2 F .269 +(no options are supplied and a)2.768 F F2(name)2.769 E F0 .285 +(is not a shell b)144 328.8 R(uiltin,)-.2 E F1(enable)2.784 E F0 .284 +(will attempt to load)2.784 F F2(name)2.784 E F0 .284 +(from a shared object named)2.784 F F2(name)2.784 E F0 2.784(,a)C 2.784 +(si)-2.784 G 2.784(ft)-2.784 G(he)-2.784 E 1.41(command were)144 340.8 R +F4 1.41(enable \255f)3.91 F F2 1.41(name name)3.91 F F0 6.41(.T)3.91 G +1.41(he return v)-6.41 F 1.41(alue is 0 unless a)-.25 F F2(name)4.27 E +F0 1.41(is not a shell)4.09 F -.2(bu)144 352.8 S +(iltin or there is an error loading a ne).2 E 2.5(wb)-.25 G +(uiltin from a shared object.)-2.7 E F1 -2.3 -.15(ev a)108 369.6 T(l).15 +E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(The)144 381.6 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 .478(and e)144 268.8 R -.15(xe)-.15 G +(This command is then read)5.67 F .478(and e)144 393.6 R -.15(xe)-.15 G .478(cuted by the shell, and its e).15 F .478 (xit status is returned as the v)-.15 F .479(alue of)-.25 F F1 -2.3 -.15 (ev a)2.979 H(l).15 E F0 5.479(.I)C 2.979(ft)-5.479 G .479(here are no) --2.979 F F2(ar)3.309 E(gs)-.37 E F0(,).27 E(or only null ar)144 280.8 Q +-2.979 F F2(ar)3.309 E(gs)-.37 E F0(,).27 E(or only null ar)144 405.6 Q (guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1 -(exec)108 297.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 +(exec)108 422.4 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 (name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments) --.37 E F0(]])A(If)144 309.6 Q F2(command)3.006 E F0 .306 +-.37 E F0(]])A(If)144 434.4 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 321.6 R .176 +(guments)-.37 E F0(become)3.075 E .176(the ar)144 446.4 R .176 (guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G (he)-2.676 E F12.676 E F0 .176 (option is supplied, the shell places a dash at the be)2.676 F .177 -(ginning of)-.15 F .48(the zeroth ar)144 333.6 R .48(gument passed to) +(ginning of)-.15 F .48(the zeroth ar)144 458.4 R .48(gument passed to) -.18 F F2(command)3.18 E F0 5.48(.T).77 G .48(his is what)-5.48 F F2(lo) 3.07 E(gin)-.1 E F0 .48(\(1\) does.).24 F(The)5.48 E F12.98 E F0 -.48(option causes)2.98 F F2(com-)3.18 E(mand)144 345.6 Q F0 .638 +.48(option causes)2.98 F F2(com-)3.18 E(mand)144 470.4 Q F0 .638 (to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 (vironment. If)-.4 F F13.138 E F0 .638 (is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the) -3.319 F 1.078(zeroth ar)144 357.6 R 1.077(gument to the e)-.18 F -.15 +3.319 F 1.078(zeroth ar)144 482.4 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 369.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F +.15 F(non-interacti)144 494.4 Q .876 -.15(ve s)-.25 H .576(hell e).15 F .576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577 (shell option is enabled.)3.077 F .577(In that case, it returns f)5.577 -F(ail-)-.1 E 3.32(ure. An)144 381.6 R(interacti)3.32 E 1.12 -.15(ve s) +F(ail-)-.1 E 3.32(ure. An)144 506.4 R(interacti)3.32 E 1.12 -.15(ve s) -.25 H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1 F -.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82 -(xits uncondi-)-.15 F .287(tionally if)144 393.6 R F1(exec)2.787 E F0 +(xits uncondi-)-.15 F .287(tionally if)144 518.4 R F1(exec)2.787 E F0 -.1(fa)2.787 G 2.787(ils. If).1 F F2(command)2.987 E F0 .287 (is not speci\214ed, an)3.557 F 2.788(yr)-.15 G .288(edirections tak) -2.788 F 2.788(ee)-.1 G -.25(ff)-2.788 G .288(ect in the current shell,) -.25 F(and the return status is 0.)144 405.6 Q +.25 F(and the return status is 0.)144 530.4 Q (If there is a redirection error)5 E 2.5(,t)-.4 G -(he return status is 1.)-2.5 E F1(exit)108 422.4 Q F0([)2.5 E F2(n)A F0 -(])A .096(Cause the shell to e)144 422.4 R .096(xit with a status of) +(he return status is 1.)-2.5 E F1(exit)108 547.2 Q F0([)2.5 E F2(n)A F0 +(])A .096(Cause the shell to e)144 547.2 R .096(xit with a status of) -.15 F F2(n)2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095 (is omitted, the e)2.835 F .095(xit status is that of the last command) --.15 F -.15(exe)144 434.4 S 2.5(cuted. A).15 F(trap on)2.5 E F3(EXIT)2.5 +-.15 F -.15(exe)144 559.2 S 2.5(cuted. A).15 F(trap on)2.5 E F3(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15 G(cuted before the shell terminates.).15 E -F1(export)108 451.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 463.2 Q -F0 .256(The supplied)144 475.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 +F1(export)108 576 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 588 Q F0 +.256(The supplied)144 600 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 487.2 R(the)2.627 E F12.627 E F0 .127 +(commands. If)144 612 R(the)2.627 E F12.627 E F0 .127 (option is gi)2.627 F -.15(ve)-.25 G .127(n, the).15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no)5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .126(n, or if the).15 F F1 -144 499.2 Q F0 .048(option is supplied, a list of names of all e)2.547 F +144 624 Q F0 .048(option is supplied, a list of names of all e)2.547 F .048(xported v)-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F1 -2.548 E F0 .048(option causes the)2.548 F -.15(ex)144 511.2 S -1.447(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 +2.548 E F0 .048(option causes the)2.548 F -.15(ex)144 636 S 1.447 +(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 (rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G 1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d) --.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 523.2 S .741(lue of the v) -.25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1 +-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 648 S .741(lue of the v).25 +F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1 (export)5.741 E F0 .742(returns an e)3.242 F .742 (xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is) -.25 F .032(encountered, one of the)144 535.2 R F2(names)2.532 E F0 .032 +.25 F .032(encountered, one of the)144 660 R F2(names)2.532 E F0 .032 (is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 F F12.531 E F0 .031(is supplied with a)2.531 F F2(name)2.891 E F0 -(that)2.711 E(is not a function.)144 547.2 Q F1(fc)108 564 Q F0([)2.5 E +(that)2.711 E(is not a function.)144 672 Q F1(fc)108 688.8 Q F0([)2.5 E F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 <8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108 -576 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 +700.8 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 (cmd)-2.5 E F0(])A .431 -(The \214rst form selects a range of commands from)144 588 R F2<8c72> +(The \214rst form selects a range of commands from)144 712.8 R F2<8c72> 4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432 (from the history list and displays or)3.612 F .142(edits and re-e)144 -600 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) +724.8 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) .45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141 -(may be speci\214ed as a string \(to locate the last command)3.321 F(be) -144 612 Q .31(ginning with that string\) or as a number \(an inde)-.15 F -2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga) --.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .071(is used as an of) -144 624 R .071(fset from the current command number\).)-.25 F .071 -(When listing, a)5.071 F F2<8c72>2.571 E(st)-.1 E F0(or)2.571 E F2(last) -2.571 E F0 .071(of 0 is equi)2.571 F -.25(va)-.25 G(-).25 E .653 -(lent to \2551 and \2550 is equi)144 636 R -.25(va)-.25 G .653 -(lent to the current command \(usually the).25 F F1(fc)3.153 E F0 .653 -(command\); otherwise 0 is)3.153 F(equi)144 648 Q -.25(va)-.25 G .242 -(lent to \2551 and \2550 is in).25 F -.25(va)-.4 G 2.742(lid. If).25 F -F2(last)2.832 E F0 .242 -(is not speci\214ed, it is set to the current command for list-)3.422 F -.092(ing \(so that)144 660 R F4 .092(fc \255l \25510)2.592 F F0 .093 -(prints the last 10 commands\) and to)2.592 F F2<8c72>4.503 E(st)-.1 E -F0 2.593(otherwise. If)3.273 F F2<8c72>4.503 E(st)-.1 E F0 .093 -(is not speci-)3.273 F(\214ed, it is set to the pre)144 672 Q -(vious command for editing and \25516 for listing.)-.25 E(The)144 696 Q -F12.522 E F0 .022 -(option suppresses the command numbers when listing.)2.522 F(The)5.022 E -F12.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022 -(rses the order of).15 F .438(the commands.)144 708 R .438(If the)5.438 -F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 -(n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E -.335(the editor gi)144 720 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2 -(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do) -.1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F -(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G -(n,).15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(8)203.725 E 0 Cg -EP +(may be speci\214ed as a string \(to locate the last command)3.321 F +(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(8) +190.545 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E .63(the v)144 84 R .63(alue of the)-.25 F -/F1 9/Times-Bold@0 SF(FCEDIT)3.13 E F0 -.25(va)2.88 G .631 -(riable is used, and the v).25 F .631(alue of)-.25 F F1(EDIT)3.131 E(OR) --.162 E F0(if)2.881 E F1(FCEDIT)3.131 E F0 .631(is not set.)2.881 F .631 -(If nei-)5.631 F .006(ther v)144 96 R .006(ariable is set,)-.25 F/F2 10 -/Times-Italic@0 SF(vi)4.171 E F0 .005(is used.)4.171 F .005 -(When editing is complete, the edited commands are echoed and e)5.005 F -(x-)-.15 E(ecuted.)144 108 Q .788(In the second form,)144 132 R F2 -(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 -(cuted after each instance of).15 F F2(pat)3.288 E F0 .788 -(is replaced by)3.288 F F2 -.37(re)3.289 G(p).37 E F0(.)A F2(Com-)5.789 -E(mand)144 144 Q F0 .172(is interpreted the same as)2.672 F F2<8c72> +E(UIL)-.1 E(TINS\(1\))-.92 E(be)144 84 Q .31 +(ginning with that string\) or as a number \(an inde)-.15 F 2.811(xi) +-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga)-.15 G(ti) +.05 E .611 -.15(ve n)-.25 H(umber).15 E .071(is used as an of)144 96 R +.071(fset from the current command number\).)-.25 F .071 +(When listing, a)5.071 F/F1 10/Times-Italic@0 SF<8c72>2.571 E(st)-.1 E +F0(or)2.571 E F1(last)2.571 E F0 .071(of 0 is equi)2.571 F -.25(va)-.25 +G(-).25 E .653(lent to \2551 and \2550 is equi)144 108 R -.25(va)-.25 G +.653(lent to the current command \(usually the).25 F/F2 10/Times-Bold@0 +SF(fc)3.153 E F0 .653(command\); otherwise 0 is)3.153 F(equi)144 120 Q +-.25(va)-.25 G .242(lent to \2551 and \2550 is in).25 F -.25(va)-.4 G +2.742(lid. If).25 F F1(last)2.832 E F0 .242 +(is not speci\214ed, it is set to the current command for list-)3.422 F +.092(ing \(so that)144 132 R/F3 10/Courier@0 SF .092(fc \255l \25510) +2.592 F F0 .093(prints the last 10 commands\) and to)2.592 F F1<8c72> +4.503 E(st)-.1 E F0 2.593(otherwise. If)3.273 F F1<8c72>4.503 E(st)-.1 E +F0 .093(is not speci-)3.273 F(\214ed, it is set to the pre)144 144 Q +(vious command for editing and \25516 for listing.)-.25 E(The)144 168 Q +F22.522 E F0 .022 +(option suppresses the command numbers when listing.)2.522 F(The)5.022 E +F22.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022 +(rses the order of).15 F .438(the commands.)144 180 R .438(If the)5.438 +F F22.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 192 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F1 +(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do) +.1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F +(If)5.334 E F1(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G +(n,).15 E .63(the v)144 204 R .63(alue of the)-.25 F/F4 9/Times-Bold@0 +SF(FCEDIT)3.13 E F0 -.25(va)2.88 G .631(riable is used, and the v).25 F +.631(alue of)-.25 F F4(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F4(FCEDIT) +3.131 E F0 .631(is not set.)2.881 F .631(If nei-)5.631 F .006(ther v)144 +216 R .006(ariable is set,)-.25 F F1(vi)4.171 E F0 .005(is used.)4.171 F +.005(When editing is complete, the edited commands are echoed and e) +5.005 F(x-)-.15 E(ecuted.)144 228 Q .788(In the second form,)144 252 R +F1(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 +(cuted after each instance of).15 F F1(pat)3.288 E F0 .788 +(is replaced by)3.288 F F1 -.37(re)3.289 G(p).37 E F0(.)A F1(Com-)5.789 +E(mand)144 264 Q F0 .172(is interpreted the same as)2.672 F F1<8c72> 2.672 E(st)-.1 E F0(abo)2.672 E -.15(ve)-.15 G 5.172(.A).15 G .171 -(useful alias to use with this is)-2.5 F/F3 10/Courier@0 SF .171 -(r='fc \255s')2.671 F F0 2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E -(typing)144 156 Q F3 7.165(rc)3.665 G(c)-7.165 E F0 1.165 -(runs the last command be)3.665 F 1.166(ginning with)-.15 F F3(cc)3.666 -E F0 1.166(and typing)3.666 F F3(r)3.666 E F0(re-e)3.666 E -.15(xe)-.15 -G 1.166(cutes the last com-).15 F(mand.)144 168 Q .142 -(If the \214rst form is used, the return v)144 192 R .142 -(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 -(lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322 -E F2(last)2.732 E F0 .454(specify history lines out of range.)144 204 R -.454(If the)5.454 F/F4 10/Times-Bold@0 SF2.954 E F0 .454 +(useful alias to use with this is)-2.5 F F3 .171(r='fc \255s')2.671 F F0 +2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E(typing)144 276 Q F3 7.165(rc) +3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166 +(ginning with)-.15 F F3(cc)3.666 E F0 1.166(and typing)3.666 F F3(r) +3.666 E F0(re-e)3.666 E -.15(xe)-.15 G 1.166(cutes the last com-).15 F +(mand.)144 288 Q .142(If the \214rst form is used, the return v)144 312 +R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 +(lid option is encountered or).25 F F1<8c72>4.552 E(st)-.1 E F0(or)3.322 +E F1(last)2.732 E F0 .454(specify history lines out of range.)144 324 R +.454(If the)5.454 F F22.954 E F0 .454 (option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455 -(alue of the)-.25 F .788(last command e)144 216 R -.15(xe)-.15 G .788 +(alue of the)-.25 F .788(last command e)144 336 R -.15(xe)-.15 G .788 (cuted or f).15 F .787 (ailure if an error occurs with the temporary \214le of commands.)-.1 F .787(If the)5.787 F 1.135 (second form is used, the return status is that of the command re-e)144 -228 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136 -(does not)4.406 F(specify a v)144 240 Q -(alid history line, in which case)-.25 E F4(fc)2.5 E F0(returns f)2.5 E -(ailure.)-.1 E F4(fg)108 256.8 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume) -144 268.8 Q F2(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413 +348 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F1(cmd)3.836 E F0 1.136 +(does not)4.406 F(specify a v)144 360 Q +(alid history line, in which case)-.25 E F2(fc)2.5 E F0(returns f)2.5 E +(ailure.)-.1 E F2(fg)108 376.8 Q F0([)2.5 E F1(jobspec)A F0(])A(Resume) +144 388.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 F2(jobspec)5.653 E F0 -1.413(is not present, the)4.223 F(shell')144 280.8 Q 3.116(sn)-.55 G -.616(otion of the)-3.116 F F2(curr)3.116 E .616(ent job)-.37 F F0 .617 +(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F1(jobspec)5.653 E F0 +1.413(is not present, the)4.223 F(shell')144 400.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 292.8 Q +(alue is that of the command placed into the)-.25 F(fore)144 412.8 Q .363(ground, or f)-.15 F .363 (ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362 -(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 304.8 Q -F0(does not specify a v)2.81 E(alid job or)-.25 E F2(jobspec)4.24 E F0 +(hen run with job control enabled, if)-2.862 F F1(jobspec)145.74 424.8 Q +F0(does not specify a v)2.81 E(alid job or)-.25 E F1(jobspec)4.24 E F0 (speci\214es a job that w)2.81 E(as started without job control.)-.1 E -F4(getopts)108 321.6 Q F2(optstring name)2.5 E F0([)2.5 E F2(ar)A 2.5 -(g.)-.37 G(..)-2.5 E F0(])A F4(getopts)144 333.6 Q F0 .793 -(is used by shell procedures to parse positional parameters.)3.293 F F2 +F2(getopts)108 441.6 Q F1(optstring name)2.5 E F0([)2.5 E F1(ar)A 2.5 +(g.)-.37 G(..)-2.5 E F0(])A F2(getopts)144 453.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 345.6 R .149 +(characters to be recognized; if a character is follo)144 465.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 357.6 Q .578 +-.15(ve a)-.2 H(n).15 E(ar)144 477.6 Q .578 (gument, which should be separated from it by white space.)-.18 F .579 (The colon and question mark char)5.579 F(-)-.2 E .636 -(acters may not be used as option characters.)144 369.6 R .636 -(Each time it is in)5.636 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F4(getopts) +(acters may not be used as option characters.)144 489.6 R .636 +(Each time it is in)5.636 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F2(getopts) 3.136 E F0 .636(places the ne)3.136 F .635(xt op-)-.15 F .029 -(tion in the shell v)144 381.6 R(ariable)-.25 E F2(name)2.889 E F0 2.529 -(,i).18 G(nitializing)-2.529 E F2(name)2.889 E F0 .029(if it does not e) +(tion in the shell v)144 501.6 R(ariable)-.25 E F1(name)2.889 E F0 2.529 +(,i).18 G(nitializing)-2.529 E F1(name)2.889 E F0 .029(if it does not e) 2.709 F .03(xist, and the inde)-.15 F 2.53(xo)-.15 G 2.53(ft)-2.53 G .03 (he ne)-2.53 F .03(xt ar)-.15 F(gu-)-.18 E .066 -(ment to be processed into the v)144 393.6 R(ariable)-.25 E F1(OPTIND) -2.566 E/F5 9/Times-Roman@0 SF(.)A F1(OPTIND)4.566 E F0 .065 +(ment to be processed into the v)144 513.6 R(ariable)-.25 E F4(OPTIND) +2.566 E/F5 9/Times-Roman@0 SF(.)A F4(OPTIND)4.566 E F0 .065 (is initialized to 1 each time the shell or a)2.315 F .885 -(shell script is in)144 405.6 R -.2(vo)-.4 G -.1(ke).2 G 3.385(d. When) -.1 F .885(an option requires an ar)3.385 F(gument,)-.18 E F4(getopts) +(shell script is in)144 525.6 R -.2(vo)-.4 G -.1(ke).2 G 3.385(d. When) +.1 F .885(an option requires an ar)3.385 F(gument,)-.18 E F2(getopts) 3.385 E F0 .885(places that ar)3.385 F .885(gument into)-.18 F .567 -(the v)144 417.6 R(ariable)-.25 E F1(OPT)3.067 E(ARG)-.81 E F5(.)A F0 -.566(The shell does not reset)5.067 F F1(OPTIND)3.066 E F0 .566 +(the v)144 537.6 R(ariable)-.25 E F4(OPT)3.067 E(ARG)-.81 E F5(.)A F0 +.566(The shell does not reset)5.067 F F4(OPTIND)3.066 E F0 .566 (automatically; it must be manually reset)2.816 F .389 -(between multiple calls to)144 429.6 R F4(getopts)2.889 E F0 .389 +(between multiple calls to)144 549.6 R F2(getopts)2.889 E F0 .389 (within the same shell in)2.889 F -.2(vo)-.4 G .39(cation if a ne).2 F -2.89(ws)-.25 G .39(et of parameters is to)-2.89 F(be used.)144 441.6 Q -2.044(When the end of options is encountered,)144 465.6 R F4(getopts) +2.89(ws)-.25 G .39(et of parameters is to)-2.89 F(be used.)144 561.6 Q +2.044(When the end of options is encountered,)144 585.6 R F2(getopts) 4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.043 -(alue greater than zero.)-.25 F F1(OPTIND)144 477.6 Q F0 +(alue greater than zero.)-.25 F F4(OPTIND)144 597.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 F4(getopts)144 501.6 Q F0 .485 +(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 621.6 Q F0 .485 (normally parses the positional parameters, b)2.985 F .485 -(ut if more ar)-.2 F .485(guments are supplied as)-.18 F F2(ar)3.315 E -(g)-.37 E F0 -.25(va)3.205 G(l-).25 E(ues,)144 513.6 Q F4(getopts)2.5 E -F0(parses those instead.)2.5 E F4(getopts)144 537.6 Q F0 .345 +(ut if more ar)-.2 F .485(guments are supplied as)-.18 F F1(ar)3.315 E +(g)-.37 E F0 -.25(va)3.205 G(l-).25 E(ues,)144 633.6 Q F2(getopts)2.5 E +F0(parses those instead.)2.5 E F2(getopts)144 657.6 Q F0 .345 (can report errors in tw)2.845 F 2.845(ow)-.1 G 2.845(ays. If)-2.945 F -.345(the \214rst character of)2.845 F F2(optstring)3.075 E F0 .345 -(is a colon,)3.065 F F2(silent)3.185 E F0 .345(error re-)3.525 F 1.668 -(porting is used.)144 549.6 R 1.668 +.345(the \214rst character of)2.845 F F1(optstring)3.075 E F0 .345 +(is a colon,)3.065 F F1(silent)3.185 E F0 .345(error re-)3.525 F 1.668 +(porting is used.)144 669.6 R 1.668 (In normal operation, diagnostic messages are printed when in)6.668 F -.25(va)-.4 G 1.669(lid options or).25 F .394(missing option ar)144 -561.6 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F -(ariable)-.25 E F1(OPTERR)2.894 E F0 .394 -(is set to 0, no error messages)2.644 F(will be displayed, e)144 573.6 Q +681.6 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F +(ariable)-.25 E F4(OPTERR)2.894 E F0 .394 +(is set to 0, no error messages)2.644 F(will be displayed, e)144 693.6 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E -F2(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 597.6 R --.25(va)-.4 G .666(lid option is seen,).25 F F4(getopts)3.166 E F0 .667 -(places ? into)3.167 F F2(name)3.527 E F0 .667 +F1(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 717.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 -609.6 R F1(OPT)2.9 E(ARG)-.81 E F5(.)A F0(If)4.899 E F4(getopts)2.899 E -F0 .399(is silent, the option character found is placed in)2.899 F F1 -(OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F -(diagnostic message is printed.)144 621.6 Q 1.241(If a required ar)144 -645.6 R 1.241(gument is not found, and)-.18 F F4(getopts)3.741 E F0 -1.241(is not silent, a question mark \()3.741 F F4(?).833 E F0 3.742 -(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F2(name)144.36 -657.6 Q F0(,).18 E F1(OPT)2.714 E(ARG)-.81 E F0 .213 -(is unset, and a diagnostic message is printed.)2.463 F(If)5.213 E F4 -(getopts)2.713 E F0 .213(is silent, then a colon \()2.713 F F4(:).833 E -F0(\)).833 E(is placed in)144 669.6 Q F2(name)2.86 E F0(and)2.68 E F1 -(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F4 -(getopts)144 693.6 Q F0 .902 -(returns true if an option, speci\214ed or unspeci\214ed, is found.) -3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F -(options is encountered or an error occurs.)144 705.6 Q(GNU Bash 5.0)72 -768 Q(2004 Apr 20)149.565 E(9)203.725 E 0 Cg EP +729.6 R F4(OPT)2.9 E(ARG)-.81 E F5(.)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 F4 +(OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F(GNU Bash 5.2)72 768 Q +(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(9)190.545 E 0 Cg EP %%Page: 10 10 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(hash)108 84 Q F0([) -2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E/F2 10/Times-Italic@0 SF -(\214lename)2.5 E F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 -E F0(])A .858(Each time)144 96 R F1(hash)3.358 E F0 .858(is in)3.358 F --.2(vo)-.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F -F2(name)3.718 E F0 .858(is determined by searching)3.538 F .956 -(the directories in)144 108 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 +E(UIL)-.1 E(TINS\(1\))-.92 E(diagnostic message is printed.)144 84 Q +1.241(If a required ar)144 108 R 1.241(gument is not found, and)-.18 F +/F1 10/Times-Bold@0 SF(getopts)3.741 E F0 1.241 +(is not silent, a question mark \()3.741 F F1(?).833 E F0 3.742(\)i).833 +G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F/F2 10/Times-Italic@0 SF +(name)144.36 120 Q F0(,).18 E/F3 9/Times-Bold@0 SF(OPT)2.714 E(ARG)-.81 +E F0 .213(is unset, and a diagnostic message is printed.)2.463 F(If) +5.213 E F1(getopts)2.713 E F0 .213(is silent, then a colon \()2.713 F F1 +(:).833 E F0(\)).833 E(is placed in)144 132 Q F2(name)2.86 E F0(and)2.68 +E F3(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 +E F1(getopts)144 156 Q F0 .902 +(returns true if an option, speci\214ed or unspeci\214ed, is found.) +3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F +(options is encountered or an error occurs.)144 168 Q F1(hash)108 184.8 +Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E +F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A .858 +(Each time)144 196.8 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)-.4 +G -.1(ke).2 G .858(d, the full pathname of the command).1 F F2(name) +3.718 E F0 .858(is determined by searching)3.538 F .956 +(the directories in)144 208.8 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 .956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956 -(viously-remembered pathname is discarded.)-.25 F .243(If the)144 120 R -F12.743 E F0 .243 +(viously-remembered pathname is discarded.)-.25 F .243(If the)144 220.8 +R F12.743 E F0 .243 (option is supplied, no path search is performed, and)2.743 F F2 (\214lename)4.653 E F0 .242(is used as the full \214lename)2.923 F .615 -(of the command.)144 132 R(The)5.615 E F13.115 E F0 .615 +(of the command.)144 232.8 R(The)5.615 E F13.115 E F0 .615 (option causes the shell to for)3.115 F .615 (get all remembered locations.)-.18 F(The)5.615 E F13.115 E F0 -(op-)3.115 E .294(tion causes the shell to for)144 144 R .294 +(op-)3.115 E .294(tion causes the shell to for)144 244.8 R .294 (get the remembered location of each)-.18 F F2(name)2.793 E F0 5.293(.I) C 2.793(ft)-5.293 G(he)-2.793 E F12.793 E F0 .293 (option is supplied,)2.793 F .028(the full pathname to which each)144 -156 R F2(name)2.528 E F0 .028(corresponds is printed.)2.528 F .028 +256.8 R F2(name)2.528 E F0 .028(corresponds is printed.)2.528 F .028 (If multiple)5.028 F F2(name)2.528 E F0(ar)2.528 E .028 -(guments are sup-)-.18 F .176(plied with)144 168 R F12.676 E F0 +(guments are sup-)-.18 F .176(plied with)144 268.8 R F12.676 E F0 2.676(,t)C(he)-2.676 E F2(name)2.676 E F0 .175 (is printed before the hashed full pathname.)2.676 F(The)5.175 E F1 2.675 E F0 .175(option causes output to)2.675 F .783 -(be displayed in a format that may be reused as input.)144 180 R .783 +(be displayed in a format that may be reused as input.)144 280.8 R .783 (If no ar)5.783 F .783(guments are gi)-.18 F -.15(ve)-.25 G .783 (n, or if only).15 F F13.283 E F0(is)3.283 E .807 -(supplied, information about remembered commands is printed.)144 192 R -.807(The return status is true unless a)5.807 F F2(name)144.36 204 Q F0 -(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.).25 -E F1(help)108 220.8 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2(pattern) --2.5 E F0(])A .866(Display helpful information about b)144 232.8 R .867 -(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 .867 -(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25 G -3.367(sd).15 G(etailed)-3.367 E .224(help on all commands matching)144 -244.8 R F2(pattern)3.974 E F0 2.723(;o).24 G .223 +(supplied, information about remembered commands is printed.)144 292.8 R +.807(The return status is true unless a)5.807 F F2(name)144.36 304.8 Q +F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.) +.25 E F1(help)108 321.6 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2 +(pattern)-2.5 E F0(])A .866(Display helpful information about b)144 +333.6 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 +.867(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25 +G 3.367(sd).15 G(etailed)-3.367 E .224(help on all commands matching)144 +345.6 R F2(pattern)3.974 E F0 2.723(;o).24 G .223 (therwise help for all the b)-2.723 F .223 -(uiltins and shell control struc-)-.2 F(tures is printed.)144 256.8 Q F1 -144 268.8 Q F0(Display a short description of each)180 268.8 Q F2 -(pattern)2.5 E F1144 280.8 Q F0(Display the description of each) -180 280.8 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G -(ormat)-2.5 E F1144 292.8 Q F0 -(Display only a short usage synopsis for each)180 292.8 Q F2(pattern)2.5 -E F0(The return status is 0 unless no command matches)144 309.6 Q F2 -(pattern)3.75 E F0(.).24 E F1(history [)108 326.4 Q F2(n)A F1(])A -(history \255c)108 338.4 Q(history \255d)108 350.4 Q F2(of)2.5 E(fset) --.18 E F1(history \255d)108 362.4 Q F2(start)2.5 E F0A F2(end)A F1 -(history \255anrw)108 374.4 Q F0([)2.5 E F2(\214lename)A F0(])A F1 -(history \255p)108 386.4 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5 -(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 398.4 Q F2(ar)2.5 E(g) +(uiltins and shell control struc-)-.2 F(tures is printed.)144 357.6 Q F1 +144 369.6 Q F0(Display a short description of each)180 369.6 Q F2 +(pattern)2.5 E F1144 381.6 Q F0(Display the description of each) +180 381.6 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G +(ormat)-2.5 E F1144 393.6 Q F0 +(Display only a short usage synopsis for each)180 393.6 Q F2(pattern)2.5 +E F0(The return status is 0 unless no command matches)144 410.4 Q F2 +(pattern)3.75 E F0(.).24 E F1(history [)108 427.2 Q F2(n)A F1(])A +(history \255c)108 439.2 Q(history \255d)108 451.2 Q F2(of)2.5 E(fset) +-.18 E F1(history \255d)108 463.2 Q F2(start)2.5 E F0A F2(end)A F1 +(history \255anrw)108 475.2 Q F0([)2.5 E F2(\214lename)A F0(])A F1 +(history \255p)108 487.2 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5 +(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 499.2 Q F2(ar)2.5 E(g) -.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 -410.4 S .752 +511.2 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 422.4 R .38(An ar)5.38 F .38(gument of)-.18 +G .381(been modi\214ed.)144 523.2 R .38(An ar)5.38 F .38(gument of)-.18 F F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 -(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9 -/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 434.4 Q(T)-.855 E F0 .264 +(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E F3(HISTTIMEFOR-) +2.88 E(MA)144 535.2 Q(T)-.855 E F0 .264 (is set and not null, it is used as a format string for)2.514 F F2 (strftime)2.765 E F0 .265(\(3\) to display the time stamp asso-)B 1.02 -(ciated with each displayed history entry)144 446.4 R 6.019(.N)-.65 G +(ciated with each displayed history entry)144 547.2 R 6.019(.N)-.65 G 3.519(oi)-6.019 G(nterv)-3.519 E 1.019 (ening blank is printed between the formatted)-.15 F .176 -(time stamp and the history line.)144 458.4 R(If)5.176 E F2(\214lename) +(time stamp and the history line.)144 559.2 R(If)5.176 E F2(\214lename) 2.676 E F0 .176 (is supplied, it is used as the name of the history \214le; if)2.676 F -(not, the v)144 470.4 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.) +(not, the v)144 571.2 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.) 2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 482.4 Q F0 -(Clear the history list by deleting all the entries.)180 482.4 Q F1 -144 494.4 Q F2(of)2.5 E(fset)-.18 E F0 .39 -(Delete the history entry at position)180 506.4 R F2(of)2.889 E(fset) +(wing meanings:)-.25 E F1144 583.2 Q F0 +(Clear the history list by deleting all the entries.)180 583.2 Q F1 +144 595.2 Q F2(of)2.5 E(fset)-.18 E F0 .39 +(Delete the history entry at position)180 607.2 R F2(of)2.889 E(fset) -.18 E F0 5.389(.I)C(f)-5.389 E F2(of)2.889 E(fset)-.18 E F0 .389(is ne) 2.889 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 2.889(,i).15 G 2.889(ti) -2.889 G 2.889(si)-2.889 G .389(nterpreted as relati)-2.889 F -.15(ve) -.25 G .598(to one greater than the last history position, so ne)180 -518.4 R -.05(ga)-.15 G(ti).05 E .899 -.15(ve i)-.25 H .599 -(ndices count back from the end).15 F(of the history)180 530.4 Q 2.5(,a) +619.2 R -.05(ga)-.15 G(ti).05 E .899 -.15(ve i)-.25 H .599 +(ndices count back from the end).15 F(of the history)180 631.2 Q 2.5(,a) -.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G (efers to the current)-2.5 E F1(history -d)2.5 E F0(command.)2.5 E F1 -144 542.4 Q F2(start)2.5 E F0A F2(end)A F0 .758 -(Delete the history entries between positions)180 554.4 R F2(start)3.258 -E F0(and)3.257 E F2(end)3.257 E F0 3.257(,i)C(nclusi)-3.257 E -.15(ve) --.25 G 5.757(.P).15 G(ositi)-5.757 E 1.057 -.15(ve a)-.25 H .757(nd ne) -.15 F -.05(ga)-.15 G(-).05 E(ti)180 566.4 Q .3 -.15(ve v)-.25 H -(alues for)-.1 E F2(start)2.5 E F0(and)2.5 E F2(end)2.5 E F0 +144 643.2 Q F2(start)2.5 E F0A F2(end)A F0 1.25 +(Delete the range of history entries between positions)180 655.2 R F2 +(start)3.75 E F0(and)3.75 E F2(end)3.75 E F0 3.75(,i)C(nclusi)-3.75 E +-.15(ve)-.25 G 6.25(.P).15 G(ositi)-6.25 E -.15(ve)-.25 G(and ne)180 +667.2 Q -.05(ga)-.15 G(ti).05 E .3 -.15(ve v)-.25 H(alues for)-.1 E F2 +(start)2.5 E F0(and)2.5 E F2(end)2.5 E F0 (are interpreted as described abo)2.5 E -.15(ve)-.15 G(.).15 E F1 -144 578.4 Q F0 .564(Append the `)180 578.4 R(`ne)-.74 E(w')-.25 E 3.064 +144 679.2 Q F0 .564(Append the `)180 679.2 R(`ne)-.74 E(w')-.25 E 3.064 ('h)-.74 G .564(istory lines to the history \214le.)-3.064 F .565 -(These are history lines entered since)5.564 F(the be)180 590.4 Q +(These are history lines entered since)5.564 F(the be)180 691.2 Q (ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E -(ut not already appended to the history \214le.)-.2 E F1144 602.4 +(ut not already appended to the history \214le.)-.2 E F1144 703.2 Q F0 .854(Read the history lines not already read from the history \214\ -le into the current history list.)180 602.4 R .772 -(These are lines appended to the history \214le since the be)180 614.4 R +le into the current history list.)180 703.2 R .772 +(These are lines appended to the history \214le since the be)180 715.2 R .773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E -(sion.)180 626.4 Q F1144 638.4 Q F0(Read the contents of the hist\ -ory \214le and append them to the current history list.)180 638.4 Q F1 -144 650.4 Q F0 -(Write the current history list to the history \214le, o)180 650.4 Q --.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G -(ontents.)-2.5 E F1144 662.4 Q F0 .626 -(Perform history substitution on the follo)180 662.4 R(wing)-.25 E F2 -(ar)3.125 E(gs)-.37 E F0 .625(and display the result on the standard) -3.125 F 2.975(output. Does)180 674.4 R .475 -(not store the results in the history list.)2.975 F(Each)5.475 E F2(ar) -2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F -(normal history e)180 686.4 Q(xpansion.)-.15 E F1144 698.4 Q F0 -.363(Store the)180 698.4 R F2(ar)3.193 E(gs)-.37 E F0 .363 -(in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362 -(he last command in the history list is)-5.363 F(remo)180 710.4 Q -.15 -(ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 -(are added.)2.77 E .145(If the)144 727.2 R F3(HISTTIMEFORMA)2.645 E(T) --.855 E F0 -.25(va)2.395 G .145 -(riable is set, the time stamp information associated with each history) -.25 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(10)198.725 E 0 Cg EP +(sion.)180 727.2 Q(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 +G(mber 22).15 E(10)185.545 E 0 Cg EP %%Page: 11 11 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E .669 -(entry is written to the history \214le, mark)144 84 R .669 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0(Rea\ +d the contents of the history \214le and append them to the current his\ +tory list.)180 84 Q F1144 96 Q F0 +(Write the current history list to the history \214le, o)180 96 Q -.15 +(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G(ontents.) +-2.5 E F1144 108 Q F0 .626 +(Perform history substitution on the follo)180 108 R(wing)-.25 E/F2 10 +/Times-Italic@0 SF(ar)3.125 E(gs)-.37 E F0 .625 +(and display the result on the standard)3.125 F 2.975(output. Does)180 +120 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 132 Q(xpansion.)-.15 E F1144 144 Q F0 .363 +(Store the)180 144 R F2(ar)3.193 E(gs)-.37 E F0 .363 +(in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362 +(he last command in the history list is)-5.363 F(remo)180 156 Q -.15(ve) +-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 +(are added.)2.77 E .145(If the)144 172.8 R/F3 9/Times-Bold@0 SF +(HISTTIMEFORMA)2.645 E(T)-.855 E F0 -.25(va)2.395 G .145 +(riable is set, the time stamp information associated with each history) +.25 F .669(entry is written to the history \214le, mark)144 184.8 R .669 (ed with the history comment character)-.1 F 5.668(.W)-.55 G .668 -(hen the history)-5.668 F .955(\214le is read, lines be)144 96 R .956 +(hen the history)-5.668 F .955(\214le is read, lines be)144 196.8 R .956 (ginning with the history comment character follo)-.15 F .956 (wed immediately by a digit)-.25 F .833 -(are interpreted as timestamps for the follo)144 108 R .833 +(are interpreted as timestamps for the follo)144 208.8 R .833 (wing history entry)-.25 F 5.832(.T)-.65 G .832(he return v)-5.832 F -.832(alue is 0 unless an in-)-.25 F -.25(va)144 120 S .168(lid option i\ -s encountered, an error occurs while reading or writing the history \ -\214le, an in).25 F -.25(va)-.4 G(lid).25 E/F1 10/Times-Italic@0 SF(of) -2.669 E(f-)-.18 E(set)144 132 Q F0(is supplied as an ar)2.5 E(gument to) --.18 E/F2 10/Times-Bold@0 SF2.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 -F22.5 E F0 -.1(fa)2.5 G(ils.).1 E F2(jobs)108 148.8 Q F0([)2.5 E -F2(\255lnprs)A F0 2.5(][)C F1(jobspec)A F0(... ])2.5 E F2(jobs \255x)108 -160.8 Q F1(command)2.5 E F0([)2.5 E F1(ar)2.5 E(gs)-.37 E F0(... ])2.5 E -(The \214rst form lists the acti)144 172.8 Q .3 -.15(ve j)-.25 H 2.5 -(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F2144 184.8 Q F0 -(List process IDs in addition to the normal information.)180 184.8 Q F2 -144 196.8 Q F0 .194(Display information only about jobs that ha) -180 196.8 R .494 -.15(ve c)-.2 H .193(hanged status since the user w).15 -F .193(as last noti-)-.1 F(\214ed of their status.)180 208.8 Q F2 -144 220.8 Q F0(List only the process ID of the job')180 220.8 Q 2.5(sp) --.55 G(rocess group leader)-2.5 E(.)-.55 E F2144 232.8 Q F0 -(Display only running jobs.)180 232.8 Q F2144 244.8 Q F0 -(Display only stopped jobs.)180 244.8 Q(If)144 261.6 Q F1(jobspec)4.553 -E F0 .313(is gi)3.123 F -.15(ve)-.25 G .313 -(n, output is restricted to information about that job).15 F 5.314(.T) --.4 G .314(he return status is 0 unless)-5.314 F(an in)144 273.6 Q -.25 +.832(alue is 0 unless an in-)-.25 F -.25(va)144 220.8 S .168(lid option\ + is encountered, an error occurs while reading or writing the history \ +\214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)2.669 E(f-)-.18 E(set) +144 232.8 Q F0 .341(or range is supplied as an ar)2.841 F .341 +(gument to)-.18 F F12.841 E F0 2.841(,o)C 2.84(rt)-2.841 G .34 +(he history e)-2.84 F .34(xpansion supplied as an ar)-.15 F .34 +(gument to)-.18 F F1144 244.8 Q F0 -.1(fa)2.5 G(ils.).1 E F1(jobs) +108 261.6 Q F0([)2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ]) +2.5 E F1(jobs \255x)108 273.6 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E +(gs)-.37 E F0(... ])2.5 E(The \214rst form lists the acti)144 285.6 Q .3 +-.15(ve j)-.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F1144 297.6 Q F0 +(List process IDs in addition to the normal information.)180 297.6 Q F1 +144 309.6 Q F0 .193(Display information only about jobs that ha) +180 309.6 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 +F .194(as last noti-)-.1 F(\214ed of their status.)180 321.6 Q F1 +144 333.6 Q F0(List only the process ID of the job')180 333.6 Q 2.5(sp) +-.55 G(rocess group leader)-2.5 E(.)-.55 E F1144 345.6 Q F0 +(Display only running jobs.)180 345.6 Q F1144 357.6 Q F0 +(Display only stopped jobs.)180 357.6 Q(If)144 374.4 Q F2(jobspec)4.554 +E F0 .314(is gi)3.124 F -.15(ve)-.25 G .314 +(n, output is restricted to information about that job).15 F 5.313(.T) +-.4 G .313(he return status is 0 unless)-5.313 F(an in)144 386.4 Q -.25 (va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25 -E F1(jobspec)4.24 E F0(is supplied.)2.81 E .395(If the)144 290.4 R F2 -2.895 E F0 .394(option is supplied,)2.894 F F2(jobs)2.894 E F0 -.394(replaces an)2.894 F(y)-.15 E F1(jobspec)4.634 E F0 .394(found in) -3.204 F F1(command)3.094 E F0(or)3.664 E F1(ar)3.224 E(gs)-.37 E F0 .394 -(with the corre-)3.164 F(sponding process group ID, and e)144 302.4 Q --.15(xe)-.15 G(cutes).15 E F1(command)2.7 E F0(passing it)3.27 E F1(ar) +E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 403.2 R F1 +2.894 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0 +.394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in) +3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .395 +(with the corre-)3.164 F(sponding process group ID, and e)144 415.2 Q +-.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar) 2.83 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 -E F2(kill)108 319.2 Q F0([)2.5 E F2A F1(sigspec)2.5 E F0(|)2.5 E -F22.5 E F1(signum)2.5 E F0(|)2.5 E F22.5 E F1(sigspec)A F0 2.5 -(][)C F1(pid)-2.5 E F0(|)2.5 E F1(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F2 -(kill \255l)108 331.2 Q F0(|)A F2A F0([)2.5 E F1(sigspec)A F0(|) -2.5 E F1 -.2(ex)2.5 G(it_status).2 E F0(])A .017 -(Send the signal named by)144 343.2 R F1(sigspec)2.857 E F0(or)2.827 E -F1(signum)2.857 E F0 .017(to the processes named by)2.837 F F1(pid)3.767 -E F0(or)3.287 E F1(jobspec)4.257 E F0(.).31 E F1(sigspec)5.357 E F0(is) -2.828 E .319(either a case-insensiti)144 355.2 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 367.2 Q F1(signum)3.267 E F0 -.427(is a signal number)3.247 F 5.427(.I)-.55 G(f)-5.427 E F1(sigspec) +E F1(kill)108 432 Q F0([)2.5 E F1A F2(sigspec)2.5 E F0(|)2.5 E F1 +2.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2(sigspec)A F0 2.5 +(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F1 +(kill \255l)108 444 Q F0(|)A F1A F0([)2.5 E F2(sigspec)A F0(|)2.5 +E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .017(Send the signal named by) +144 456 R F2(sigspec)2.857 E F0(or)2.827 E F2(signum)2.857 E F0 .017 +(to the processes named by)2.837 F F2(pid)3.767 E F0(or)3.287 E F2 +(jobspec)4.257 E F0(.).31 E F2(sigspec)5.357 E F0(is)2.827 E .318 +(either a case-insensiti)144 468 R .618 -.15(ve s)-.25 H .318 +(ignal name such as).15 F F3(SIGKILL)2.818 E F0 .319 +(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319 +(pre\214x\) or a signal)2.569 F(number;)144 480 Q F2(signum)3.268 E F0 +.427(is a signal number)3.247 F 5.427(.I)-.55 G(f)-5.427 E F2(sigspec) 3.267 E F0 .427(is not present, then)3.237 F F3(SIGTERM)2.927 E F0 .427 -(is assumed.)2.677 F .428(An ar)5.427 F(-)-.2 E .314(gument of)144 379.2 -R F22.814 E F0 .314(lists the signal names.)2.814 F .314(If an) -5.314 F 2.814(ya)-.15 G -.18(rg)-2.814 G .314(uments are supplied when) -.18 F F22.814 E F0 .314(is gi)2.814 F -.15(ve)-.25 G .313 -(n, the names of).15 F .119(the signals corresponding to the ar)144 -391.2 R .119(guments are listed, and the return status is 0.)-.18 F(The) -5.12 E F1 -.2(ex)2.62 G(it_status).2 E F0(ar)2.62 E(-)-.2 E .8 -(gument to)144 403.2 R F23.3 E F0 .8 -(is a number specifying either a signal number or the e)3.3 F .799 -(xit status of a process termi-)-.15 F .962(nated by a signal.)144 415.2 -R(The)5.962 E F23.462 E F0 .962(option is equi)3.462 F -.25(va) --.25 G .962(lent to).25 F F23.462 E F0(.)A F2(kill)5.962 E F0 .962 +(is assumed.)2.677 F .427(An ar)5.427 F(-)-.2 E .313(gument of)144 492 R +F12.813 E F0 .314(lists the signal names.)2.814 F .314(If an)5.314 +F 2.814(ya)-.15 G -.18(rg)-2.814 G .314(uments are supplied when).18 F +F12.814 E F0 .314(is gi)2.814 F -.15(ve)-.25 G .314 +(n, the names of).15 F .12(the signals corresponding to the ar)144 504 R +.119(guments are listed, and the return status is 0.)-.18 F(The)5.119 E +F2 -.2(ex)2.619 G(it_status).2 E F0(ar)2.619 E(-)-.2 E .799(gument to) +144 516 R F13.299 E F0 .799 +(is a number specifying either a signal number or the e)3.299 F .8 +(xit status of a process termi-)-.15 F .963(nated by a signal.)144 528 R +(The)5.962 E F13.462 E F0 .962(option is equi)3.462 F -.25(va)-.25 +G .962(lent to).25 F F13.462 E F0(.)A F1(kill)5.962 E F0 .962 (returns true if at least one signal w)3.462 F(as)-.1 E -(successfully sent, or f)144 427.2 Q(alse if an error occurs or an in) --.1 E -.25(va)-.4 G(lid option is encountered.).25 E F2(let)108 444 Q F1 -(ar)2.5 E(g)-.37 E F0([)2.5 E F1(ar)A(g)-.37 E F0(...])2.5 E(Each)144 -456 Q F1(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 468 Q F1(ar)2.83 -E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F2(let)2.5 E F0 -(returns 1; 0 is returned otherwise.)2.5 E F2(local)108 484.8 Q F0([)2.5 -E F1(option)A F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C -(.. | \255 ])-2.5 E -.15(Fo)144 496.8 S 2.541(re).15 G .041(ach ar) --2.541 F .042(gument, a local v)-.18 F .042(ariable named)-.25 F F1 -(name)2.902 E F0 .042(is created, and assigned)2.722 F F1(value)2.832 E -F0 5.042(.T).18 G(he)-5.042 E F1(option)2.542 E F0 .042(can be)2.542 F -(an)144 508.8 Q 3.153(yo)-.15 G 3.153(ft)-3.153 G .653 -(he options accepted by)-3.153 F F2(declar)3.153 E(e)-.18 E F0 5.652(.W) -C(hen)-5.652 E F2(local)3.152 E F0 .652 +(successfully sent, or f)144 540 Q(alse if an error occurs or an in)-.1 +E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 556.8 Q F2 +(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144 +568.8 Q F2(ar)5.817 E(g)-.37 E F0 2.987(is an arithmetic e)5.707 F 2.987 +(xpression to be e)-.15 F -.25(va)-.25 G 2.987(luated \(see).25 F F3 +2.987(ARITHMETIC EV)5.487 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0 +(in)5.238 E F2(bash\(1\))144 580.8 Q F0 2.5(\). If)B(the last)2.5 E 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 597.6 Q F0([) +2.5 E F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5 +(].)C(.. | \255 ])-2.5 E -.15(Fo)144 609.6 S 2.542(re).15 G .042(ach ar) +-2.542 F .042(gument, a local v)-.18 F .042(ariable named)-.25 F F2 +(name)2.902 E F0 .042(is created, and assigned)2.722 F F2(value)2.832 E +F0 5.042(.T).18 G(he)-5.042 E F2(option)2.542 E F0 .041(can be)2.541 F +(an)144 621.6 Q 3.152(yo)-.15 G 3.152(ft)-3.152 G .652 +(he options accepted by)-3.152 F F1(declar)3.152 E(e)-.18 E F0 5.652(.W) +C(hen)-5.652 E F1(local)3.152 E F0 .653 (is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 -520.8 Q F1(name)3.281 E F0 .421(to ha)3.101 F .721 -.15(ve a v)-.2 H +633.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H .422(isible scope restricted to that function and its children.).15 F -(If)5.422 E F1(name)2.922 E F0 .422(is \255, the set)2.922 F .51 -(of shell options is made local to the function in which)144 532.8 R F2 -(local)3.009 E F0 .509(is in)3.009 F -.2(vo)-.4 G -.1(ke).2 G .509 -(d: shell options changed us-).1 F 1.17(ing the)144 544.8 R F2(set)3.67 -E F0 -.2(bu)3.67 G 1.171 -(iltin inside the function are restored to their original v).2 F 1.171 -(alues when the function re-)-.25 F 3.381(turns. The)144 556.8 R .881 -(restore is ef)3.381 F .881(fected as if a series of)-.25 F F2(set)3.381 -E F0 .88(commands were e)3.38 F -.15(xe)-.15 G .88 -(cuted to restore the v).15 F(alues)-.25 E .787 -(that were in place before the function.)144 568.8 R -.4(Wi)5.788 G .788 -(th no operands,).4 F F2(local)3.288 E F0 .788(writes a list of local v) -3.288 F .788(ariables to)-.25 F .655(the standard output.)144 580.8 R -.654(It is an error to use)5.655 F F2(local)3.154 E F0 .654 -(when not within a function.)3.154 F .654(The return status is 0)5.654 F -(unless)144 592.8 Q F2(local)2.5 E F0(is used outside a function, an in) -2.5 E -.25(va)-.4 G(lid).25 E F1(name)2.86 E F0(is supplied, or)2.68 E -F1(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F2(logout)108 -609.6 Q F0(Exit a login shell.)144 609.6 Q F2(map\214le)108 626.4 Q F0 -([)2.5 E F2A F1(delim)2.5 E F0 2.5(][)C F2-2.5 E F1(count) -2.5 E F0 2.5(][)C F2-2.5 E F1(origin)2.5 E F0 2.5(][)C F2 --2.5 E F1(count)2.5 E F0 2.5(][)C F2-2.5 E F0 2.5(][)C F2 --2.5 E F1(fd)2.5 E F0 2.5(][)C F2-2.5 E F1(callbac)2.5 E(k)-.2 E -F0 2.5(][)C F2-2.5 E F1(quantum)2.5 E F0 2.5(][)C F1(arr)-2.5 E -(ay)-.15 E F0(])A F2 -.18(re)108 638.4 S(adarray).18 E F0([)2.5 E F2 -A F1(delim)2.5 E F0 2.5(][)C F2-2.5 E F1(count)2.5 E F0 2.5 -(][)C F2-2.5 E F1(origin)2.5 E F0 2.5(][)C F2-2.5 E F1 -(count)2.5 E F0 2.5(][)C F2-2.5 E F0 2.5(][)C F2-2.5 E F1 -(fd)2.5 E F0 2.5(][)C F2-2.5 E F1(callbac)2.5 E(k)-.2 E F0 2.5(][) -C F2-2.5 E F1(quantum)2.5 E F0 2.5(][)C F1(arr)-2.5 E(ay)-.15 E F0 -(])A .158(Read lines from the standard input into the inde)144 650.4 R --.15(xe)-.15 G 2.659(da).15 G .159(rray v)-2.659 F(ariable)-.25 E F1 -(arr)2.989 E(ay)-.15 E F0 2.659(,o).32 G 2.659(rf)-2.659 G .159 -(rom \214le descriptor)-2.659 F F1(fd)4.629 E F0 1.249(if the)144 662.4 -R F23.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 -F(ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 -E F1(arr)3.748 E(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,) --6.248 F(ha)144 674.4 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F2144 686.4 Q F0 .91 -(The \214rst character of)180 686.4 R F1(delim)3.41 E F0 .911 -(is used to terminate each input line, rather than ne)3.41 F 3.411 -(wline. If)-.25 F F1(delim)180 698.4 Q F0(is the empty string,)2.5 E F2 -(map\214le)2.5 E F0(will terminate a line when it reads a NUL character) -2.5 E(.)-.55 E F2144 710.4 Q F0(Cop)180 710.4 Q 2.5(ya)-.1 G 2.5 -(tm)-2.5 G(ost)-2.5 E F1(count)2.7 E F0 2.5(lines. If)3.18 F F1(count) -2.5 E F0(is 0, all lines are copied.)2.5 E(GNU Bash 5.0)72 768 Q -(2004 Apr 20)149.565 E(11)198.725 E 0 Cg EP +(If)5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F .509 +(of shell options is made local to the function in which)144 645.6 R F1 +(local)3.01 E F0 .51(is in)3.01 F -.2(vo)-.4 G -.1(ke).2 G .51 +(d: shell options changed us-).1 F 1.171(ing the)144 657.6 R F1(set) +3.671 E F0 -.2(bu)3.671 G 1.171 +(iltin inside the function are restored to their original v).2 F 1.17 +(alues when the function re-)-.25 F 3.38(turns. The)144 669.6 R .88 +(restore is ef)3.38 F .88(fected as if a series of)-.25 F F1(set)3.381 E +F0 .881(commands were e)3.381 F -.15(xe)-.15 G .881 +(cuted to restore the v).15 F(alues)-.25 E .788 +(that were in place before the function.)144 681.6 R -.4(Wi)5.788 G .788 +(th no operands,).4 F F1(local)3.288 E F0 .787(writes a list of local v) +3.288 F .787(ariables to)-.25 F .654(the standard output.)144 693.6 R +.654(It is an error to use)5.654 F F1(local)3.154 E F0 .654 +(when not within a function.)3.154 F .655(The return status is 0)5.654 F +(unless)144 705.6 Q F1(local)2.5 E F0(is used outside a function, an in) +2.5 E -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or)2.68 E +F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E(GNU Bash 5.2)72 +768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(11)185.545 E 0 Cg +EP %%Page: 12 12 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0(Be) -180 84 Q(gin assigning to)-.15 E/F2 10/Times-Italic@0 SF(arr)2.83 E(ay) --.15 E F0(at inde)2.82 E(x)-.15 E F2(origin)2.73 E F0 5(.T).24 G(he def) --5 E(ault inde)-.1 E 2.5(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 96 -Q F0(Discard the \214rst)180 96 Q F2(count)2.5 E F0(lines read.)2.5 E F1 -144 108 Q F0(Remo)180 108 Q .3 -.15(ve a t)-.15 H(railing).15 E F2 -(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E(wline\) from each line read.) --.25 E F1144 120 Q F0(Read lines from \214le descriptor)180 120 Q -F2(fd)2.5 E F0(instead of the standard input.)2.5 E F1144 132 Q F0 -(Ev)180 132 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E -F2(quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F12.5 E F0 -(option speci\214es)2.5 E F2(quantum)2.75 E F0(.).32 E F1144 144 Q -F0(Specify the number of lines read between each call to)180 144 Q F2 -(callbac)2.7 E(k)-.2 E F0(.).67 E(If)144 160.8 Q F12.968 E F0 .467 -(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(logout)108 84 Q F0 +(Exit a login shell.)144 84 Q F1(map\214le)108 100.8 Q F0([)2.5 E F1 +A/F2 10/Times-Italic@0 SF(delim)2.5 E F0 2.5(][)C F1-2.5 E +F2(count)2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1 +-2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1 +-2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k) +-.2 E F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr) +-2.5 E(ay)-.15 E F0(])A F1 -.18(re)108 112.8 S(adarray).18 E F0([)2.5 E +F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count)2.5 E F0 +2.5(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1-2.5 E F2 +(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1-2.5 E F2 +(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][) +C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0 +(])A .159(Read lines from the standard input into the inde)144 124.8 R +-.15(xe)-.15 G 2.659(da).15 G .159(rray v)-2.659 F(ariable)-.25 E F2 +(arr)2.989 E(ay)-.15 E F0 2.659(,o).32 G 2.658(rf)-2.659 G .158 +(rom \214le descriptor)-2.658 F F2(fd)4.628 E F0 1.248(if the)144 136.8 +R F13.748 E F0 1.248(option is supplied.)3.748 F 1.249(The v)6.249 +F(ariable)-.25 E/F3 9/Times-Bold@0 SF(MAPFILE)3.749 E F0 1.249 +(is the def)3.499 F(ault)-.1 E F2(arr)3.749 E(ay)-.15 E F0 6.249(.O)C +1.249(ptions, if supplied,)-6.249 F(ha)144 148.8 Q .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F1144 160.8 Q F0 .911 +(The \214rst character of)180 160.8 R F2(delim)3.411 E F0 .911 +(is used to terminate each input line, rather than ne)3.411 F 3.41 +(wline. If)-.25 F F2(delim)180 172.8 Q F0(is the empty string,)2.5 E F1 +(map\214le)2.5 E F0(will terminate a line when it reads a NUL character) +2.5 E(.)-.55 E F1144 184.8 Q F0(Cop)180 184.8 Q 2.5(ya)-.1 G 2.5 +(tm)-2.5 G(ost)-2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count) +2.5 E F0(is 0, all lines are copied.)2.5 E F1144 196.8 Q F0(Be)180 +196.8 Q(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 +E(x)-.15 E F2(origin)2.73 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E +2.5(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 208.8 Q F0 +(Discard the \214rst)180 208.8 Q F2(count)2.5 E F0(lines read.)2.5 E F1 +144 220.8 Q F0(Remo)180 220.8 Q .3 -.15(ve a t)-.15 H(railing).15 +E F2(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E +(wline\) from each line read.)-.25 E F1144 232.8 Q F0 +(Read lines from \214le descriptor)180 232.8 Q F2(fd)2.5 E F0 +(instead of the standard input.)2.5 E F1144 244.8 Q F0(Ev)180 +244.8 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2 +(quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F12.5 E F0 +(option speci\214es)2.5 E F2(quantum)2.75 E F0(.).32 E F1144 256.8 +Q F0(Specify the number of lines read between each call to)180 256.8 Q +F2(callbac)2.7 E(k)-.2 E F0(.).67 E(If)144 273.6 Q F12.967 E F0 +.467(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 (he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 (callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 -(luated, it is sup-).25 F .261(plied the inde)144 172.8 R 2.761(xo)-.15 -G 2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be ass\ -igned and the line to be assigned to that element)-.15 F .275 -(as additional ar)144 184.8 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E -F0 .275(is e)2.775 F -.25(va)-.25 G .274 -(luated after the line is read b).25 F .274 -(ut before the array element is)-.2 F(assigned.)144 196.8 Q -(If not supplied with an e)144 213.6 Q(xplicit origin,)-.15 E F1 +(luated, it is sup-).25 F .262(plied the inde)144 285.6 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 297.6 R(guments.)-.18 E F2(callbac)5.274 E(k)-.2 E +F0 .274(is e)2.774 F -.25(va)-.25 G .274 +(luated after the line is read b).25 F .275 +(ut before the array element is)-.2 F(assigned.)144 309.6 Q +(If not supplied with an e)144 326.4 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 230.4 Q F0 .797 -(returns successfully unless an in)3.297 F -.25(va)-.4 G .797 +(before assigning to it.)2.5 E F1(map\214le)144 343.2 Q F0 .797 +(returns successfully unless an in)3.298 F -.25(va)-.4 G .797 (lid option or option ar).25 F .797(gument is supplied,)-.18 F F2(arr) -3.297 E(ay)-.15 E F0 .798(is in-)3.298 F -.25(va)144 242.4 S +3.297 E(ay)-.15 E F0 .797(is in-)3.297 F -.25(va)144 355.2 S (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 259.2 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 -2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 271.2 Q -.15(ve)-.15 G 2.8(se) -.15 G .3(ntries from the directory stack.)-2.8 F -.4(Wi)5.299 G .299 -(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 G -.299(he top directory from the)-2.799 F 1.478(stack, and performs a)144 -283.2 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479 -(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.479 -(uments, if supplied, ha).18 F 1.779 -.15(ve t)-.2 H 1.479(he follo).15 -F(wing)-.25 E(meanings:)144 295.2 Q F1144 307.2 Q F0 .551 -(Suppresses the normal change of directory when remo)180 307.2 R .551 +F1(popd)108 372 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 +2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 384 Q -.15(ve)-.15 G 3.091(se) +.15 G .591(ntries from the directory stack.)-3.091 F .592 +(The elements are numbered from 0 starting at the \214rst)5.591 F .665 +(directory listed by)144 396 R F1(dirs)3.165 E F0 5.665(.W)C .665 +(ith no ar)-6.065 F(guments,)-.18 E F1(popd)3.165 E F0(remo)3.165 E -.15 +(ve)-.15 G 3.165(st).15 G .664(he top directory from the stack, and) +-3.165 F(changes to the ne)144 408 Q 2.5(wt)-.25 G(op directory)-2.5 E 5 +(.A)-.65 G -.18(rg)-5 G(uments, if supplied, ha).18 E .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F1144 420 Q F0 .551 +(Suppresses the normal change of directory when remo)180 420 R .551 (ving directories from the stack, so)-.15 F -(that only the stack is manipulated.)180 319.2 Q F1(+)144 331.2 Q F2(n)A -F0(Remo)180 331.2 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E -F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25 -F F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 -343.2 S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0 -(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,) --.65 E F3(popd +1)2.5 E F0(the second.)2.5 E F1144 355.2 Q F2(n)A F0 -(Remo)180 355.2 Q -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F2(n)3.76 E F0 -1.259(th entry counting from the right of the list sho)B 1.259(wn by) --.25 F F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5 -(zero. F)180 367.2 R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0 +(that only the stack is manipulated.)180 432 Q F1(+)144 444 Q F2(n)A F0 +(Remo)180 444 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E F0 +.14(th entry counting from the left of the list sho)B .14(wn by)-.25 F +F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero,)-2.64 F .779 +(from the stack.)180 456 R -.15(Fo)5.779 G 3.279(re).15 G(xample:)-3.429 +E/F4 10/Courier@0 SF .779(popd +0)3.279 F F0(remo)3.279 E -.15(ve)-.15 G +3.279(st).15 G .779(he \214rst directory)-3.279 F(,)-.65 E F4 .78 +(popd +1)3.28 F F0 .78(the sec-)3.28 F(ond.)180 468 Q F1144 480 Q F2 +(n)A F0(Remo)180 480 Q -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F2(n)3.76 +E F0 1.259(th entry counting from the right of the list sho)B 1.259 +(wn by)-.25 F F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F +2.5(zero. F)180 492 R(or e)-.15 E(xample:)-.15 E F4(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 -384 R F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1(dirs) -3.143 E F0 .644(is performed as well, and the return status is 0.)3.143 -F F1(popd)5.644 E F0 .416(returns f)144 396 R .416(alse if an in)-.1 F --.25(va)-.4 G .415 -(lid option is encountered, the directory stack is empty).25 F 2.915 -(,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F -(tory stack entry is speci\214ed, or the directory change f)144 408 Q -(ails.)-.1 E F1(printf)108 424.8 Q F0([)2.5 E F1A F2(var)2.5 E F0 -(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A .357 -(Write the formatted)144 436.8 R F2(ar)2.857 E(guments)-.37 E F0 .357 +E F4(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .093 +(If the top element of the directory stack is modi\214ed, and the)144 +508.8 R F2(-n)2.593 E F0 .094(option w)2.594 F .094(as not supplied,)-.1 +F F1(popd)2.594 E F0(uses)2.594 E(the)144 520.8 Q F1(cd)2.697 E F0 -.2 +(bu)2.697 G .196 +(iltin to change to the directory at the top of the stack.).2 F .196 +(If the)5.196 F F1(cd)2.696 E F0 -.1(fa)2.696 G(ils,).1 E F1(popd)2.696 +E F0 .196(returns a non-)2.696 F(zero v)144 532.8 Q(alue.)-.25 E +(Otherwise,)144 549.6 Q F1(popd)2.67 E F0 .17(returns f)2.67 F .17 +(alse if an in)-.1 F -.25(va)-.4 G .171 +(lid option is encountered, the directory stack is empty).25 F 2.671(,o) +-.65 G 2.671(ra)-2.671 G(non-e)144 561.6 Q +(xistent directory stack entry is speci\214ed.)-.15 E 1.556(If the)144 +578.4 R F1(popd)4.056 E F0 1.556(command is successful, bash runs)4.056 +F F1(dirs)4.056 E F0 1.556(to sho)4.056 F 4.055(wt)-.25 G 1.555 +(he \214nal contents of the directory)-4.055 F +(stack, and the return status is 0.)144 590.4 Q F1(printf)108 607.2 Q F0 +([)2.5 E F1A F2(var)2.5 E F0(])A F2(format)2.5 E F0([)2.5 E F2(ar) +A(guments)-.37 E F0(])A .357(Write the formatted)144 619.2 R F2(ar)2.857 +E(guments)-.37 E F0 .357 (to the standard output under the control of the)2.857 F F2(format)2.858 E F0 5.358(.T)C(he)-5.358 E F12.858 E F0(op-)2.858 E .714 -(tion causes the output to be assigned to the v)144 448.8 R(ariable)-.25 +(tion causes the output to be assigned to the v)144 631.2 R(ariable)-.25 E F2(var)3.214 E F0 .714(rather than being printed to the standard)3.214 -F(output.)144 460.8 Q(The)144 484.8 Q F2(format)3.017 E F0 .517(is a ch\ +F(output.)144 643.2 Q(The)144 667.2 Q F2(format)3.017 E F0 .517(is a ch\ aracter string which contains three types of objects: plain characters,\ which are)3.017 F .704(simply copied to standard output, character esc\ -ape sequences, which are con)144 496.8 R -.15(ve)-.4 G .703 +ape sequences, which are con)144 679.2 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 508.8 R .037 -(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 520.8 Q(gument)-.37 E F0 +\214cations, each of which causes printing of the ne)144 691.2 R .037 +(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 703.2 Q(gument)-.37 E F0 5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F2 (printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.031 -E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 532.8 Q -(xtensions:)-.15 E F1(%b)144 544.8 Q F0(causes)180 544.8 Q F1(printf) -2.595 E F0 .096(to e)2.595 F .096 -(xpand backslash escape sequences in the corresponding)-.15 F F2(ar) -2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 556.8 Q(ay as) --.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 568.8 Q F0(causes)180 568.8 Q -F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E -(gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F -(input.)180 580.8 Q F1(%\()144 592.8 Q F2(datefmt)A F1(\)T)A F0(causes) -180 604.8 Q F1(printf)4.403 E F0 1.904 +E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 715.2 Q +(xtensions:)-.15 E(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 +G(mber 22).15 E(12)185.545 E 0 Cg EP +%%Page: 13 13 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(%b)144 84 Q F0 +(causes)180 84 Q F1(printf)2.595 E F0 .096(to e)2.595 F .096 +(xpand backslash escape sequences in the corresponding)-.15 F/F2 10 +/Times-Italic@0 SF(ar)2.596 E(gument)-.37 E F0 .096(in the)2.596 F +(same w)180 96 Q(ay as)-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 108 Q +F0(causes)180 108 Q F1(printf)2.51 E F0 .01(to output the corresponding) +2.51 F F2(ar)2.51 E(gument)-.37 E F0 .01 +(in a format that can be reused as shell)2.51 F(input.)180 120 Q F1(%Q) +144 132 Q F0(lik)180 132 Q(e)-.1 E F1(%q)2.5 E F0 2.5(,b)C +(ut applies an)-2.7 E 2.5(ys)-.15 G(upplied precision to the)-2.5 E F2 +(ar)2.5 E(gument)-.37 E F0(before quoting it.)2.5 E F1(%\()144 144 Q F2 +(datefmt)A F1(\)T)A F0(causes)180 156 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 616.8 R F2 +4.404 E F0 1.904(as a format)4.404 F .381(string for)180 168 R F2 (strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar) 2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381 (ger representing the number)-.15 F .292(of seconds since the epoch.)180 -628.8 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F +180 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F .293(alues may be used: \2551 represents the)-.25 F .694 -(current time, and \2552 represents the time the shell w)180 640.8 R -.693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.193(d. If).1 F .693(no ar) -3.193 F .693(gument is speci-)-.18 F .21(\214ed, con)180 652.8 R -.15 -(ve)-.4 G .21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71 -G 2.71<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25 -G 2.71(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F -F1(printf)2.71 E F0(beha)180 664.8 Q(vior)-.2 E(.)-.55 E .902 -(The %b, %q, and %T directi)144 681.6 R -.15(ve)-.25 G 3.401(sa).15 G +(current time, and \2552 represents the time the shell w)180 192 R .693 +(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.193(d. If).1 F .693(no ar)3.193 +F .693(gument is speci-)-.18 F .21(\214ed, con)180 204 R -.15(ve)-.4 G +.21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71 G 2.71 +<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25 G 2.71 +(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F F1 +(printf)2.71 E F0(beha)180 216 Q(vior)-.2 E(.)-.55 E .902 +(The %b, %q, and %T directi)144 232.8 R -.15(ve)-.25 G 3.401(sa).15 G .901(ll use the \214eld width and precision ar)-3.401 F .901 (guments from the format)-.18 F .357(speci\214cation and write that man) -144 693.6 R 2.857(yb)-.15 G .358 +144 244.8 R 2.857(yb)-.15 G .358 (ytes from \(or use that wide a \214eld for\) the e)-2.857 F .358 (xpanded ar)-.15 F(gument,)-.18 E -(which usually contains more characters than the original.)144 705.6 Q -(Ar)144 722.4 Q .464(guments to non-string format speci\214ers are trea\ +(which usually contains more characters than the original.)144 256.8 Q +(Ar)144 273.6 Q .464(guments to non-string format speci\214ers are trea\ ted as C constants, e)-.18 F .463(xcept that a leading plus or)-.15 F -(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(12)198.725 E 0 Cg EP -%%Page: 13 13 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E 1.258(minus sign is allo)144 84 R 1.259 +1.258(minus sign is allo)144 285.6 R 1.259 (wed, and if the leading character is a single or double quote, the v) --.25 F 1.259(alue is the)-.25 F(ASCII v)144 96 Q(alue of the follo)-.25 -E(wing character)-.25 E(.)-.55 E(The)144 112.8 Q/F1 10/Times-Italic@0 SF -(format)2.515 E F0 .015(is reused as necessary to consume all of the) -2.515 F F1(ar)2.515 E(guments)-.37 E F0 5.015(.I)C 2.514(ft)-5.015 G(he) --2.514 E F1(format)2.514 E F0 .014(requires more)2.514 F F1(ar)2.514 E -(-)-.2 E(guments)144 124.8 Q F0 .565(than are supplied, the e)3.065 F -.566(xtra format speci\214cations beha)-.15 F .866 -.15(ve a)-.2 H 3.066 -(si).15 G 3.066(faz)-3.066 G .566(ero v)-3.066 F .566 -(alue or null string,)-.25 F(as appropriate, had been supplied.)144 -136.8 Q(The return v)5 E(alue is zero on success, non-zero on f)-.25 E -(ailure.)-.1 E/F2 10/Times-Bold@0 SF(pushd)108 153.6 Q F0([)2.5 E F2 -A F0 2.5(][)C(+)-2.5 E F1(n)A F0 2.5(][)C-2.5 E F1(n)A F0(])A -F2(pushd)108 165.6 Q F0([)2.5 E F2A F0 2.5(][)C F1(dir)-2.5 E F0 -(])A .64(Adds a directory to the top of the directory stack, or rotates\ - the stack, making the ne)144 177.6 R 3.139(wt)-.25 G .639(op of the) --3.139 F .416(stack the current w)144 189.6 R .416(orking directory)-.1 -F 5.416(.W)-.65 G .416(ith no ar)-5.816 F(guments,)-.18 E F2(pushd)2.916 -E F0 -.15(ex)2.916 G .416(changes the top tw).15 F 2.917(od)-.1 G -(irectories)-2.917 E 1.625 -(and returns 0, unless the directory stack is empty)144 201.6 R 6.625 -(.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 --.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 213.6 Q -F2144 225.6 Q F0 1.811(Suppresses the normal change of directory \ -when rotating or adding directories to the)180 225.6 R -(stack, so that only the stack is manipulated.)180 237.6 Q F2(+)144 -249.6 Q F1(n)A F0 1.268(Rotates the stack so that the)180 249.6 R F1(n) -3.768 E F0 1.267(th directory \(counting from the left of the list sho)B -1.267(wn by)-.25 F F2(dirs)180 261.6 Q F0 2.5(,s)C -(tarting with zero\) is at the top.)-2.5 E F2144 273.6 Q F1(n)A F0 -.92(Rotates the stack so that the)180 273.6 R F1(n)3.42 E F0 .92 +-.25 F 1.259(alue is the)-.25 F(ASCII v)144 297.6 Q(alue of the follo) +-.25 E(wing character)-.25 E(.)-.55 E(The)144 314.4 Q F2(format)2.515 E +F0 .015(is reused as necessary to consume all of the)2.515 F F2(ar)2.515 +E(guments)-.37 E F0 5.015(.I)C 2.514(ft)-5.015 G(he)-2.514 E F2(format) +2.514 E F0 .014(requires more)2.514 F F2(ar)2.514 E(-)-.2 E(guments)144 +326.4 Q F0 .565(than are supplied, the e)3.065 F .566 +(xtra format speci\214cations beha)-.15 F .866 -.15(ve a)-.2 H 3.066(si) +.15 G 3.066(faz)-3.066 G .566(ero v)-3.066 F .566(alue or null string,) +-.25 F(as appropriate, had been supplied.)144 338.4 Q(The return v)5 E +(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) +108 355.2 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C +-2.5 E F2(n)A F0(])A F1(pushd)108 367.2 Q F0([)2.5 E F1A F0 +2.5(][)C F2(dir)-2.5 E F0(])A .64(Adds a directory to the top of the di\ +rectory stack, or rotates the stack, making the ne)144 379.2 R 3.139(wt) +-.25 G .639(op of the)-3.139 F .088(stack the current w)144 391.2 R .088 +(orking directory)-.1 F 5.088(.W)-.65 G .088(ith no ar)-5.488 F +(guments,)-.18 E F1(pushd)2.589 E F0 -.15(ex)2.589 G .089 +(changes the top tw).15 F 2.589(oe)-.1 G .089(lements of)-2.589 F +(the directory stack.)144 403.2 Q(Ar)5 E(guments, if supplied, ha)-.18 E +.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 +415.2 Q F0 1.811(Suppresses the normal change of directory when rotatin\ +g or adding directories to the)180 415.2 R +(stack, so that only the stack is manipulated.)180 427.2 Q F1(+)144 +439.2 Q F2(n)A F0 1.267(Rotates the stack so that the)180 439.2 R F2(n) +3.767 E F0 1.268(th directory \(counting from the left of the list sho)B +1.268(wn by)-.25 F F1(dirs)180 451.2 Q F0 2.5(,s)C +(tarting with zero\) is at the top.)-2.5 E F1144 463.2 Q F2(n)A F0 +.92(Rotates the stack so that the)180 463.2 R F2(n)3.42 E F0 .92 (th directory \(counting from the right of the list sho)B .92(wn by)-.25 -F F2(dirs)180 285.6 Q F0 2.5(,s)C(tarting with zero\) is at the top.) --2.5 E F1(dir)144.35 297.6 Q F0(Adds)180 297.6 Q F1(dir)3.138 E F0 .288 -(to the directory stack at the top, making it the ne)3.518 F 2.787(wc) --.25 G .287(urrent w)-2.787 F .287(orking directory as)-.1 F -(if it had been supplied as the ar)180 309.6 Q(gument to the)-.18 E F2 -(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 326.4 R F2(pushd) -2.988 E F0 .488(command is successful, a)2.988 F F2(dirs)2.988 E F0 .488 -(is performed as well.)2.988 F .489(If the \214rst form is used,)5.488 F -F2(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 338.4 R F1(dir) -3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4 -F F2(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846 -(stack is empty)144 350.4 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\ - directory stack element is speci\214ed, or the directory change to the) --.15 F(speci\214ed ne)144 362.4 Q 2.5(wc)-.25 G(urrent directory f)-2.5 -E(ails.)-.1 E F2(pwd)108 379.2 Q F0([)2.5 E F2(\255LP)A F0(])A .845 -(Print the absolute pathname of the current w)144 391.2 R .845 -(orking directory)-.1 F 5.844(.T)-.65 G .844 -(he pathname printed contains no)-5.844 F .181(symbolic links if the)144 -403.2 R F22.681 E F0 .181(option is supplied or the)2.681 F F2 -.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F2 -(set)2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264 -(enabled. If)144 415.2 R(the)3.264 E F23.264 E F0 .763 -(option is used, the pathname printed may contain symbolic links.)3.264 -F .763(The return)5.763 F .405(status is 0 unless an error occurs while\ - reading the name of the current directory or an in)144 427.2 R -.25(va) --.4 G .405(lid op-).25 F(tion is supplied.)144 439.2 Q F2 -.18(re)108 -456 S(ad).18 E F0([)3.817 E F2(\255ers)A F0 3.817(][)C F2-3.817 E -F1(aname)3.817 E F0 3.817(][)C F2-3.817 E F1(delim)3.817 E F0 -3.817(][)C F2-3.817 E F1(te)3.817 E(xt)-.2 E F0 3.817(][)C F2 --3.817 E F1(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F2 --3.816 E F1(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F2-3.816 E -F1(pr)3.816 E(ompt)-.45 E F0 3.816(][)C F2-3.816 E F1(timeout) -3.816 E F0 3.816(][)C F2-3.816 E F1(fd)3.816 E F0(])A([)108 468 Q -F1(name)A F0(...])2.5 E .516(One line is read from the standard input, \ -or from the \214le descriptor)144 480 R F1(fd)3.016 E F0 .516 -(supplied as an ar)3.016 F .517(gument to)-.18 F(the)144 492 Q F2 -2.936 E F0 .436(option, split into w)2.936 F .435(ords as described abo) --.1 F .735 -.15(ve u)-.15 H(nder).15 E F2 -.75(Wo)2.935 G .435 -(rd Splitting).75 F F0 2.935(,a)C .435(nd the \214rst w)-2.935 F .435 -(ord is as-)-.1 F .375(signed to the \214rst)144 504 R F1(name)3.235 E -F0 2.876(,t).18 G .376(he second w)-2.876 F .376(ord to the second)-.1 F -F1(name)3.236 E F0 2.876(,a).18 G .376(nd so on.)-2.876 F .376 -(If there are more w)5.376 F(ords)-.1 E .237 -(than names, the remaining w)144 516 R .237(ords and their interv)-.1 F -.237(ening delimiters are assigned to the last)-.15 F F1(name)3.096 E F0 -5.236(.I).18 G(f)-5.236 E .874(there are fe)144 528 R .874(wer w)-.25 F -.875(ords read from the input stream than names, the remaining names ar\ -e assigned)-.1 F .518(empty v)144 540 R 3.018(alues. The)-.25 F .518 -(characters in)3.018 F/F3 9/Times-Bold@0 SF(IFS)3.018 E F0 .518 -(are used to split the line into w)2.768 F .517 -(ords using the same rules the)-.1 F .026(shell uses for e)144 552 R -.026(xpansion \(described abo)-.15 F .326 -.15(ve u)-.15 H(nder).15 E F2 --.75(Wo)2.526 G .026(rd Splitting).75 F F0 2.526(\). The)B .026 -(backslash character \()2.526 F F2(\\)A F0 2.527(\)m)C(ay)-2.527 E .489 -(be used to remo)144 564 R .788 -.15(ve a)-.15 H .788 -.15(ny s).15 H -.488(pecial meaning for the ne).15 F .488 -(xt character read and for line continuation.)-.15 F(Op-)5.488 E -(tions, if supplied, ha)144 576 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F2144 588 Q F1(aname)2.5 E F0 1.025(The w) -180 600 R 1.026(ords are assigned to sequential indices of the array v) --.1 F(ariable)-.25 E F1(aname)3.856 E F0 3.526(,s).18 G 1.026 -(tarting at 0.)-3.526 F F1(aname)180.33 612 Q F0(is unset before an)2.68 -E 2.5(yn)-.15 G .5 -.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E -F1(name)2.5 E F0(ar)2.5 E(guments are ignored.)-.18 E F2144 624 Q -F1(delim)2.5 E F0 .281(The \214rst character of)180 636 R F1(delim)2.781 -E F0 .281(is used to terminate the input line, rather than ne)2.781 F -2.78(wline. If)-.25 F F1(de-)2.78 E(lim)180 648 Q F0 -(is the empty string,)2.5 E F2 -.18(re)2.5 G(ad).18 E F0 -(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F2 -144 660 Q F0 .372 -(If the standard input is coming from a terminal,)180 660 R F2 -.18(re) -2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.873 E F0(abo)2.623 E --.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G(sed)-2.873 E .218 -(to obtain the line.)180 672 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 684 Q -.15(ve)-.25 G 2.5(\)e).15 G -(diting settings, b)-2.5 E(ut uses Readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 -E(ault \214lename completion.)-.1 E F2144 696 Q F1(te)2.5 E(xt)-.2 -E F0(If)180 696 Q F2 -.18(re)2.715 G(adline).18 E F0 .216 -(is being used to read the line,)2.715 F F1(te)2.716 E(xt)-.2 E F0 .216 -(is placed into the editing b)2.716 F(uf)-.2 E .216(fer before edit-) --.25 F(ing be)180 708 Q(gins.)-.15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20) -149.565 E(13)198.725 E 0 Cg EP +F F1(dirs)180 475.2 Q F0 2.5(,s)C(tarting with zero\) is at the top.) +-2.5 E F2(dir)144.35 487.2 Q F0(Adds)180 487.2 Q F2(dir)2.85 E F0 +(to the directory stack at the top)3.23 E .434 +(After the stack has been modi\214ed, if the)144 504 R F12.934 E +F0 .434(option w)2.934 F .435(as not supplied,)-.1 F F1(pushd)2.935 E F0 +.435(uses the)2.935 F F1(cd)2.935 E F0 -.2(bu)2.935 G .435(iltin to).2 F +(change to the directory at the top of the stack.)144 516 Q(If the)5 E +F1(cd)2.5 E F0 -.1(fa)2.5 G(ils,).1 E F1(pushd)2.5 E F0 +(returns a non-zero v)2.5 E(alue.)-.25 E 1.78(Otherwise, if no ar)144 +532.8 R 1.78(guments are supplied,)-.18 F F1(pushd)4.28 E F0 1.78 +(returns 0 unless the directory stack is empty)4.28 F(.)-.65 E .092 +(When rotating the directory stack,)144 544.8 R F1(pushd)2.592 E F0 .093 +(returns 0 unless the directory stack is empty or a non-e)2.592 F(x-) +-.15 E(istent directory stack element is speci\214ed.)144 556.8 Q 1.278 +(If the)144 573.6 R F1(pushd)3.778 E F0 1.278 +(command is successful, bash runs)3.778 F F1(dirs)3.778 E F0 1.277 +(to sho)3.777 F 3.777(wt)-.25 G 1.277 +(he \214nal contents of the directory)-3.777 F(stack.)144 585.6 Q F1 +(pwd)108 602.4 Q F0([)2.5 E F1(\255LP)A F0(])A .844 +(Print the absolute pathname of the current w)144 614.4 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 +626.4 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 +.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1 +(set)2.681 E F0 -.2(bu)2.681 G .181(iltin command is).2 F 3.263 +(enabled. If)144 638.4 R(the)3.263 E F13.263 E F0 .763 +(option is used, the pathname printed may contain symbolic links.)3.263 +F .764(The return)5.764 F .405(status is 0 unless an error occurs while\ + reading the name of the current directory or an in)144 650.4 R -.25(va) +-.4 G .405(lid op-).25 F(tion is supplied.)144 662.4 Q F1 -.18(re)108 +679.2 S(ad).18 E F0([)3.816 E F1(\255ers)A F0 3.816(][)C F1-3.816 +E F2(aname)3.816 E F0 3.816(][)C F1-3.816 E F2(delim)3.816 E F0 +3.816(][)C F1-3.816 E F2(te)3.816 E(xt)-.2 E F0 3.816(][)C F1 +-3.816 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1 +-3.817 E F2(nc)3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1-3.817 E +F2(pr)3.817 E(ompt)-.45 E F0 3.817(][)C F1-3.817 E F2(timeout) +3.817 E F0 3.817(][)C F1-3.817 E F2(fd)3.817 E F0(])A([)108 691.2 +Q F2(name)A F0(...])2.5 E .516(One line is read from the standard input\ +, or from the \214le descriptor)144 703.2 R F2(fd)3.016 E F0 .516 +(supplied as an ar)3.016 F .516(gument to)-.18 F(the)144 715.2 Q F1 +2.753 E F0 .253(option, split into w)2.753 F .253 +(ords as described in)-.1 F F2(bash\(1\))2.754 E F0(under)2.754 E F1 +-.75(Wo)2.754 G .254(rd Splitting).75 F F0 2.754(,a)C .254 +(nd the \214rst w)-2.754 F .254(ord is)-.1 F 1.425 +(assigned to the \214rst)144 727.2 R F2(name)4.285 E F0 3.925(,t).18 G +1.425(he second w)-3.925 F 1.425(ord to the second)-.1 F F2(name)4.285 E +F0 3.925(,a).18 G 1.425(nd so on.)-3.925 F 1.425(If there are more)6.425 +F(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E +(13)185.545 E 0 Cg EP %%Page: 14 14 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q/F2 10 -/Times-Italic@0 SF(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 96 S(ad) -.18 E F0 .323(returns after reading)2.823 F F2(nc)2.823 E(har)-.15 E(s) --.1 E F0 .323(characters rather than w)2.823 F .323 -(aiting for a complete line of in-)-.1 F(put, b)180 108 Q -(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15 -E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1 -144 120 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 132 S(ad) -.18 E F0 1.269(returns after reading e)3.769 F(xactly)-.15 E F2(nc)3.769 -E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.27 -(aiting for a complete)-.1 F .275 -(line of input, unless EOF is encountered or)180 144 R F1 -.18(re)2.775 -G(ad).18 E F0 .274(times out.)2.774 F .274(Delimiter characters encoun-) -5.274 F 1.002 -(tered in the input are not treated specially and do not cause)180 156 R -F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc)3.503 -E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 168 R .608 -(The result is not split on the characters in)5.609 F F1(IFS)3.108 E F0 -3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 180 S .669 +E(UIL)-.1 E(TINS\(1\))-.92 E -.1(wo)144 84 S 1.112 +(rds than names, the remaining w).1 F 1.112(ords and their interv)-.1 F +1.112(ening delimiters are assigned to the last)-.15 F/F1 10 +/Times-Italic@0 SF(name)144.36 96 Q F0 5.7(.I).18 G 3.2(ft)-5.7 G .7 +(here are fe)-3.2 F .7(wer w)-.25 F .7 +(ords read from the input stream than names, the remaining names are)-.1 +F .531(assigned empty v)144 108 R 3.031(alues. The)-.25 F .531 +(characters in)3.031 F/F2 9/Times-Bold@0 SF(IFS)3.031 E F0 .532 +(are used to split the line into w)2.781 F .532(ords using the same)-.1 +F 1.326(rules the shell uses for e)144 120 R 1.325 +(xpansion \(described in)-.15 F F1(bash\(1\))3.825 E F0(under)3.825 E/F3 +10/Times-Bold@0 SF -.75(Wo)3.825 G 1.325(rd Splitting).75 F F0 3.825 +(\). The)B(backslash)3.825 E .738(character \()144 132 R F3(\\)A F0 +3.238(\)m)C .739(ay be used to remo)-3.238 F 1.039 -.15(ve a)-.15 H +1.039 -.15(ny s).15 H .739(pecial meaning for the ne).15 F .739 +(xt character read and for line)-.15 F 2.5(continuation. Options,)144 +144 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F3144 156 Q F1(aname)2.5 E F0 1.026(The w) +180 168 R 1.026(ords are assigned to sequential indices of the array v) +-.1 F(ariable)-.25 E F1(aname)3.855 E F0 3.525(,s).18 G 1.025 +(tarting at 0.)-3.525 F F1(aname)180.33 180 Q F0(is unset before an)2.68 +E 2.5(yn)-.15 G .5 -.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E +F1(name)2.5 E F0(ar)2.5 E(guments are ignored.)-.18 E F3144 192 Q +F1(delim)2.5 E F0 .28(The \214rst character of)180 204 R F1(delim)2.78 E +F0 .281(is used to terminate the input line, rather than ne)2.78 F 2.781 +(wline. If)-.25 F F1(de-)2.781 E(lim)180 216 Q F0(is the empty string,) +2.5 E F3 -.18(re)2.5 G(ad).18 E F0 +(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F3 +144 228 Q F0 .629 +(If the standard input is coming from a terminal,)180 228 R F3 -.18(re) +3.128 G(adline).18 E F0(\(see)3.128 E F2(READLINE)3.128 E F0(in)2.878 E +F1(bash\(1\))3.128 E F0 3.128(\)i)C(s)-3.128 E .048 +(used to obtain the line.)180 240 R .049 +(Readline uses the current \(or def)5.049 F .049 +(ault, if line editing w)-.1 F .049(as not pre)-.1 F(vi-)-.25 E +(ously acti)180 252 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b) +-2.5 E(ut uses readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E +(ault \214lename completion.)-.1 E F3144 264 Q F1(te)2.5 E(xt)-.2 +E F0(If)180 264 Q F3 -.18(re)2.716 G(adline).18 E F0 .216 +(is being used to read the line,)2.716 F F1(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 276 Q(gins.)-.15 E F3144 288 Q F1(nc)2.5 E(har) +-.15 E(s)-.1 E F3 -.18(re)180 300 S(ad).18 E F0 .322 +(returns after reading)2.822 F F1(nc)2.823 E(har)-.15 E(s)-.1 E F0 .323 +(characters rather than w)2.823 F .323 +(aiting for a complete line of in-)-.1 F(put, b)180 312 Q +(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F1(nc)2.5 E(har)-.15 +E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F3 +144 324 Q F1(nc)2.5 E(har)-.15 E(s)-.1 E F3 -.18(re)180 336 S(ad) +.18 E F0 1.269(returns after reading e)3.77 F(xactly)-.15 E F1(nc)3.769 +E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.269 +(aiting for a complete)-.1 F .274 +(line of input, unless EOF is encountered or)180 348 R F3 -.18(re)2.775 +G(ad).18 E F0 .275(times out.)2.775 F .275(Delimiter characters encoun-) +5.275 F 1.003 +(tered in the input are not treated specially and do not cause)180 360 R +F3 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F1(nc)3.502 +E(har)-.15 E(s)-.1 E F0 .608(characters are read.)180 372 R .608 +(The result is not split on the characters in)5.608 F F3(IFS)3.108 E F0 +3.108(;t)C .609(he intent is that the)-3.108 F -.25(va)180 384 S .67 (riable is assigned e).25 F .669 -(xactly the characters read \(with the e)-.15 F .67 -(xception of backslash; see the)-.15 F F1180 192 Q F0(option belo) -2.5 E(w\).)-.25 E F1144 204 Q F2(pr)2.5 E(ompt)-.45 E F0(Display) -180 216 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161(on standard error)3.661 F +(xactly the characters read \(with the e)-.15 F .669 +(xception of backslash; see the)-.15 F F3180 396 Q F0(option belo) +2.5 E(w\).)-.25 E F3144 408 Q F1(pr)2.5 E(ompt)-.45 E F0(Display) +180 420 Q F1(pr)3.66 E(ompt)-.45 E F0 1.161(on standard error)3.66 F 3.661(,w)-.4 G 1.161(ithout a trailing ne)-3.661 F 1.161 -(wline, before attempting to read)-.25 F(an)180 228 Q 2.5(yi)-.15 G 2.5 +(wline, before attempting to read)-.25 F(an)180 432 Q 2.5(yi)-.15 G 2.5 (nput. The)-2.5 F -(prompt is displayed only if input is coming from a terminal.)2.5 E F1 -144 240 Q F0 .543(Backslash does not act as an escape character) -180 240 R 5.543(.T)-.55 G .544(he backslash is considered to be part of) --5.543 F .493(the line.)180 252 R .493(In particular)5.493 F 2.993(,ab) --.4 G(ackslash-ne)-2.993 E .493 +(prompt is displayed only if input is coming from a terminal.)2.5 E F3 +144 444 Q F0 .544(Backslash does not act as an escape character) +180 444 R 5.543(.T)-.55 G .543(he backslash is considered to be part of) +-5.543 F .492(the line.)180 456 R .492(In particular)5.492 F 2.992(,ab) +-.4 G(ackslash-ne)-2.992 E .493 (wline pair may not then be used as a line continua-)-.25 F(tion.)180 -264 Q F1144 276 Q F0(Silent mode.)180 276 Q -(If input is coming from a terminal, characters are not echoed.)5 E F1 -144 288 Q F2(timeout)2.5 E F0(Cause)180 300 Q F1 -.18(re)2.928 G -(ad).18 E F0 .428(to time out and return f)2.928 F .428 -(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .561 -(ber of characters\) is not read within)180 312 R F2(timeout)3.061 E F0 -(seconds.)3.061 E F2(timeout)5.561 E F0 .56(may be a decimal number) -3.061 F(with a fractional portion follo)180 324 Q +468 Q F3144 480 Q F0(Silent mode.)180 480 Q +(If input is coming from a terminal, characters are not echoed.)5 E F3 +144 492 Q F1(timeout)2.5 E F0(Cause)180 504 Q F3 -.18(re)2.929 G +(ad).18 E F0 .428(to time out and return f)2.929 F .428 +(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .56 +(ber of characters\) is not read within)180 516 R F1(timeout)3.061 E F0 +(seconds.)3.061 E F1(timeout)5.561 E F0 .561(may be a decimal number) +3.061 F(with a fractional portion follo)180 528 Q (wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E -.3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ +.3 -.15(ve i)-.25 H(f).15 E F3 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ g input from a terminal, pipe, or other special \214le; it has no ef)180 -336 R .505(fect when reading)-.25 F .589(from re)180 348 R .589 -(gular \214les.)-.15 F(If)5.589 E F1 -.18(re)3.089 G(ad).18 E F0 .589 -(times out,)3.089 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve) --.2 G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .59 -(artial input read into the speci\214ed).15 F -.25(va)180 360 S(riable) -.25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 .27 -(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)2.77 +540 R .506(fect when reading)-.25 F .59(from re)180 552 R .59 +(gular \214les.)-.15 F(If)5.59 E F3 -.18(re)3.09 G(ad).18 E F0 .589 +(times out,)3.09 F F3 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)-.2 +G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .589 +(artial input read into the speci\214ed).15 F -.25(va)180 564 S(riable) +.25 E F1(name)2.77 E F0 5.27(.I)C(f)-5.27 E F1(timeout)2.77 E F0 .27 +(is 0,)2.77 F F3 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)2.77 F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 G -(ata.)-2.77 E 1.12(The e)180 372 R 1.12(xit status is 0 if input is a) --.15 F -.25(va)-.2 G 1.12(ilable on the speci\214ed \214le descriptor) -.25 F 3.62(,n)-.4 G 1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 -384 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e) -.15 E(xceeded.)-.15 E F1144 396 Q F2(fd)2.5 E F0 -(Read input from \214le descriptor)180 396 Q F2(fd)2.5 E F0(.)A .522 -(If no)144 412.8 R F2(names)3.382 E F0 .522 +(ata.)-2.77 E .228(The e)180 576 R .228(xit status is 0 if input is a) +-.15 F -.25(va)-.2 G .228(ilable on the speci\214ed \214le descriptor) +.25 F 2.728(,o)-.4 G 2.727(rt)-2.728 G .227(he read will re-)-2.727 F +1.224(turn EOF)180 588 R 3.724(,n)-.8 G 1.224(on-zero otherwise.)-3.724 +F 1.224(The e)6.224 F 1.225 +(xit status is greater than 128 if the timeout is e)-.15 F(x-)-.15 E +(ceeded.)180 600 Q F3144 612 Q F1(fd)2.5 E F0 +(Read input from \214le descriptor)180 612 Q F1(fd)2.5 E F0(.)A .522 +(If no)144 628.8 R F1(names)3.382 E F0 .522 (are supplied, the line read, without the ending delimiter b)3.292 F .522(ut otherwise unmodi\214ed, is)-.2 F 1.186(assigned to the v)144 -424.8 R(ariable)-.25 E/F3 9/Times-Bold@0 SF(REPL)3.686 E(Y)-.828 E/F4 9 -/Times-Roman@0 SF(.)A F0 1.186(The e)5.686 F 1.186 -(xit status is zero, unless end-of-\214le is encountered,)-.15 F F1 -.18 +640.8 R(ariable)-.25 E F2(REPL)3.686 E(Y)-.828 E/F4 9/Times-Roman@0 SF +(.)A F0 1.186(The e)5.686 F 1.186 +(xit status is zero, unless end-of-\214le is encountered,)-.15 F F3 -.18 (re)3.687 G(ad).18 E F0 .961 (times out \(in which case the status is greater than 128\), a v)144 -436.8 R .96(ariable assignment error \(such as as-)-.25 F .706 -(signing to a readonly v)144 448.8 R .706(ariable\) occurs, or an in) +652.8 R .96(ariable assignment error \(such as as-)-.25 F .706 +(signing to a readonly v)144 664.8 R .706(ariable\) occurs, or an in) -.25 F -.25(va)-.4 G .706(lid \214le descriptor is supplied as the ar) -.25 F .707(gument to)-.18 F F1144 460.8 Q F0(.)A F1 -.18(re)108 -477.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A F0 2.5(][)C F1-2.5 E -F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E F0 2.5(].)C(..]) --2.5 E .77(The gi)144 489.6 R -.15(ve)-.25 G(n).15 E F2(names)3.27 E F0 +.25 F .707(gument to)-.18 F F3144 676.8 Q F0(.)A F3 -.18(re)108 +693.6 S(adonly).18 E F0([)2.5 E F3(\255aAf)A F0 2.5(][)C F3-2.5 E +F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(wor)A(d)-.37 E F0 2.5(].)C(..]) +-2.5 E .77(The gi)144 705.6 R -.15(ve)-.25 G(n).15 E F1(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 501.6 R 1.096(If the)6.096 F F13.596 E F0 -1.097(option is supplied, the functions corresponding to the)3.596 F F2 -(names)3.597 E F0 1.097(are so)3.597 F(mark)144 513.6 Q 3.334(ed. The) --.1 F F13.334 E F0 .834(option restricts the v)3.334 F .834 -(ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) --3.334 F F13.334 E F0 .834(option restricts the v)3.334 F(ari-) --.25 E .776(ables to associati)144 525.6 R 1.076 -.15(ve a)-.25 H 3.276 -(rrays. If).15 F .777(both options are supplied,)3.276 F F13.277 E -F0(tak)3.277 E .777(es precedence.)-.1 F .777(If no)5.777 F F2(name) -3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 537.6 R -.15(ve) --.25 G .521(n, or if the).15 F F13.021 E F0 .521 -(option is supplied, a list of all readonly names is printed.)3.021 F -.521(The other)5.521 F .295(options may be used to restrict the output \ -to a subset of the set of readonly names.)144 549.6 R(The)5.296 E F1 -2.796 E F0(option)2.796 E .786 -(causes output to be displayed in a format that may be reused as input.) -144 561.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 -573.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) --3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor) -3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in) --5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the) -144 585.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) --.25 F .26(ariable name, or)-.25 F F12.76 E F0 .26 -(is supplied with a)2.76 F F2(name)144.36 597.6 Q F0 -(that is not a function.)2.68 E F1 -.18(re)108 614.4 S(tur).18 E(n)-.15 -E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 626.4 R +F F1(names)3.63 E F0 .77(may not be changed by subse-)3.54 F 1.096 +(quent assignment.)144 717.6 R 1.096(If the)6.096 F F33.596 E F0 +1.097(option is supplied, the functions corresponding to the)3.596 F F1 +(names)3.597 E F0 1.097(are so)3.597 F(mark)144 729.6 Q 4.903(ed. The) +-.1 F F34.903 E F0 2.403(option restricts the v)4.903 F 2.403 +(ariables to inde)-.25 F -.15(xe)-.15 G 4.903(da).15 G 2.403(rrays; the) +-4.903 F F34.903 E F0 2.402(option restricts the)4.903 F +(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E +(14)185.545 E 0 Cg EP +%%Page: 15 15 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E -.25(va)144 84 S .424(riables to associati) +.25 F .724 -.15(ve a)-.25 H 2.924(rrays. If).15 F .425 +(both options are supplied,)2.924 F/F1 10/Times-Bold@0 SF2.925 E +F0(tak)2.925 E .425(es precedence.)-.1 F .425(If no)5.425 F/F2 10 +/Times-Italic@0 SF(name)3.285 E F0(ar)3.105 E(-)-.2 E 1.275 +(guments are gi)144 96 R -.15(ve)-.25 G 1.275(n, or if the).15 F F1 +3.775 E F0 1.275 +(option is supplied, a list of all readonly names is printed.)3.775 F +(The)6.275 E .559(other options may be used to restrict the output to a\ + subset of the set of readonly names.)144 108 R(The)5.559 E F1 +3.059 E F0 .201(option causes output to be displayed in a format that m\ +ay be reused as input.)144 120 R .2(If a v)5.2 F .2(ariable name is)-.25 +F(follo)144 132 Q .133(wed by =)-.25 F F2(wor)A(d)-.37 E F0 2.633(,t)C +.133(he v)-2.633 F .133(alue of the v)-.25 F .133(ariable is set to)-.25 +F F2(wor)2.633 E(d)-.37 E F0 5.133(.T)C .133 +(he return status is 0 unless an in)-5.133 F -.25(va)-.4 G(lid).25 E .26 +(option is encountered, one of the)144 144 R F2(names)3.12 E F0 .26 +(is not a v)3.03 F .26(alid shell v)-.25 F .26(ariable name, or)-.25 F +F12.76 E F0 .26(is supplied with a)2.76 F F2(name)144.36 156 Q F0 +(that is not a function.)2.68 E F1 -.18(re)108 172.8 S(tur).18 E(n)-.15 +E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 184.8 R -.15(xe)-.15 G .02(cuting and return the v).15 F .021 (alue speci\214ed by)-.25 F F2(n)2.881 E F0 .021(to its caller)2.761 F 5.021(.I)-.55 G(f)-5.021 E F2(n)2.881 E F0 .021(is omitted,)2.761 F .597 -(the return status is that of the last command e)144 638.4 R -.15(xe) +(the return status is that of the last command e)144 196.8 R -.15(xe) -.15 G .596(cuted in the function body).15 F 5.596(.I)-.65 G(f)-5.596 E F1 -.18(re)3.096 G(tur).18 E(n)-.15 E F0 .596(is e)3.096 F -.15(xe)-.15 -G(cuted).15 E .267(by a trap handler)144 650.4 R 2.767(,t)-.4 G .267 +G(cuted).15 E .267(by a trap handler)144 208.8 R 2.767(,t)-.4 G .267 (he last command used to determine the status is the last command e) -2.767 F -.15(xe)-.15 G .268(cuted be-).15 F .02(fore the trap handler) -144 662.4 R 5.02(.I)-.55 G(f)-5.02 E F1 -.18(re)2.52 G(tur).18 E(n)-.15 +144 220.8 R 5.02(.I)-.55 G(f)-5.02 E F1 -.18(re)2.52 G(tur).18 E(n)-.15 E F0 .02(is e)2.52 F -.15(xe)-.15 G .02(cuted during a).15 F F1(DEB)2.52 E(UG)-.1 E F0 .02(trap, the last command used to deter)2.52 F(-)-.2 E -.885(mine the status is the last command e)144 674.4 R -.15(xe)-.15 G +.885(mine the status is the last command e)144 232.8 R -.15(xe)-.15 G .886(cuted by the trap handler before).15 F F1 -.18(re)3.386 G(tur).18 E (n)-.15 E F0 -.1(wa)3.386 G 3.386(si).1 G -1.9 -.4(nv o)-3.386 H -.1(ke) -.4 G 3.386(d. If).1 F F1 -.18(re)144 686.4 S(tur).18 E(n)-.15 E F0 .628 +.4 G 3.386(d. If).1 F F1 -.18(re)144 244.8 S(tur).18 E(n)-.15 E F0 .628 (is used outside a function, b)3.128 F .628(ut during e)-.2 F -.15(xe) -.15 G .628(cution of a script by the).15 F F1(.)3.127 E F0(\()5.627 E F1(sour)A(ce)-.18 E F0 3.127(\)c)C .627(ommand, it)-3.127 F .588 -(causes the shell to stop e)144 698.4 R -.15(xe)-.15 G .588 +(causes the shell to stop e)144 256.8 R -.15(xe)-.15 G .588 (cuting that script and return either).15 F F2(n)3.448 E F0 .589 (or the e)3.329 F .589(xit status of the last com-)-.15 F .326(mand e) -144 710.4 R -.15(xe)-.15 G .326(cuted within the script as the e).15 F +144 268.8 R -.15(xe)-.15 G .326(cuted within the script as the e).15 F .326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .325 -(is supplied, the return v)2.826 F .325(alue is)-.25 F 2.035 -(its least signi\214cant 8 bits.)144 722.4 R 2.035 -(The return status is non-zero if)7.035 F F1 -.18(re)4.536 G(tur).18 E -(n)-.15 E F0 2.036(is supplied a non-numeric)4.536 F(GNU Bash 5.0)72 768 -Q(2004 Apr 20)149.565 E(14)198.725 E 0 Cg EP -%%Page: 15 15 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E(ar)144 84 Q .706 -(gument, or is used outside a function and not during e)-.18 F -.15(xe) --.15 G .705(cution of a script by).15 F/F1 10/Times-Bold@0 SF(.)3.205 E -F0(or)4.038 E F1(sour)3.205 E(ce)-.18 E F0 5.705(.A)C -.15(ny)-5.705 G -.365(command associated with the)144 96 R F1(RETURN)2.865 E F0 .365 -(trap is e)2.865 F -.15(xe)-.15 G .365(cuted before e).15 F -.15(xe)-.15 -G .366(cution resumes after the func-).15 F(tion or script.)144 108 Q F1 -(set)108 124.8 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C -F1-2.5 E/F2 10/Times-Italic@0 SF(option\255name)2.5 E F0 2.5(][)C -F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E F1(set)108 136.8 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 148.8 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 160.8 -R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 -(riables cannot be).25 F 2.947(reset. In)144 172.8 R F2 .447(posix mode) -2.947 F F0 2.947(,o)C .447(nly shell v)-2.947 F .447 -(ariables are listed.)-.25 F .447 -(The output is sorted according to the current)5.447 F 3.53 -(locale. When)144 184.8 R 1.031(options are speci\214ed, the)3.53 F -3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.531(utes. An) --.2 F 3.531(ya)-.15 G -.18(rg)-3.531 G 1.031(uments remaining).18 F .585 -(after option processing are treated as v)144 196.8 R .584 -(alues for the positional parameters and are assigned, in or)-.25 F(-) --.2 E(der)144 208.8 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 -E F0(,)A F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha) --5 E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 -220.8 Q F0 1.377(Each v)184 220.8 R 1.377 +(is supplied, the return v)2.826 F .325(alue is)-.25 F .444 +(its least signi\214cant 8 bits.)144 280.8 R .444 +(The return status is non-zero if)5.444 F F1 -.18(re)2.945 G(tur).18 E +(n)-.15 E F0 .445(is supplied a non-numeric ar)2.945 F(gu-)-.18 E .381 +(ment, or is used outside a function and not during e)144 292.8 R -.15 +(xe)-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E +F1(sour)2.881 E(ce)-.18 E F0 5.38(.A)C .68 -.15(ny c)-5.38 H(om-).15 E +.749(mand associated with the)144 304.8 R F1(RETURN)3.249 E F0 .749 +(trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15 +G .75(cution resumes after the function).15 F(or script.)144 316.8 Q F1 +(set)108 333.6 Q F0([)2.5 E F1(\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1 +-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5 +(][)C F1-2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E F1 +(set)108 345.6 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 F1-2.5 E F0 2.5(][)C F1 +-2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E -.4(Wi)144 +357.6 S .574(thout options, display the name and v).4 F .574 +(alue of each shell v)-.25 F .573 +(ariable in a format that can be reused)-.25 F .113 +(as input for setting or resetting the currently-set v)144 369.6 R 2.613 +(ariables. Read-only)-.25 F -.25(va)2.613 G .113 +(riables cannot be reset.).25 F(In)5.113 E F2 1.032(posix mode)144 381.6 +R F0 3.532(,o)C 1.032(nly shell v)-3.532 F 1.032(ariables are listed.) +-.25 F 1.032(The output is sorted according to the current locale.)6.032 +F .58(When options are speci\214ed, the)144 393.6 R 3.081(ys)-.15 G .581 +(et or unset shell attrib)-3.081 F 3.081(utes. An)-.2 F 3.081(ya)-.15 G +-.18(rg)-3.081 G .581(uments remaining after op-).18 F .161 +(tion processing are treated as v)144 405.6 R .161 +(alues for the positional parameters and are assigned, in order)-.25 F +2.66(,t)-.4 G(o)-2.66 E F1($1)2.66 E F0(,)A F1($2)144 417.6 Q F0(,)A F1 +2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 -.15 +(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 429.6 Q F0 +1.377(Each v)184 429.6 R 1.377 (ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve) -.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.378(xport attrib)-.15 F -1.378(ute and)-.2 F(mark)184 232.8 Q(ed for e)-.1 E(xport to the en)-.15 -E(vironment of subsequent commands.)-.4 E F1144 244.8 Q F0 .132 -(Report the status of terminated background jobs immediately)184 244.8 R +1.378(ute and)-.2 F(mark)184 441.6 Q(ed for e)-.1 E(xport to the en)-.15 +E(vironment of subsequent commands.)-.4 E F1144 453.6 Q F0 .132 +(Report the status of terminated background jobs immediately)184 453.6 R 2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E -(primary prompt.)184 256.8 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F1144 268.8 Q F0 -.087(Exit immediately if a)184 268.8 R F2(pipeline)2.587 E F0 .087 +(primary prompt.)184 465.6 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) +-.25 H(nly when job control is enabled.).15 E F1144 477.6 Q F0 +.087(Exit immediately if a)184 477.6 R F2(pipeline)2.587 E F0 .087 (\(which may consist of a single)2.587 F F2 .088(simple command)2.588 F -F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 280.8 Q -F2 1.521(compound command)4.021 F F0(\(see)4.021 E/F3 9/Times-Bold@0 SF -1.521(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e) -.15 F 1.521(xits with a non-zero status.)-.15 F .079 -(The shell does not e)184 292.8 R .079(xit if the command that f)-.15 F -.08(ails is part of the command list immediately)-.1 F(follo)184 304.8 Q -1.655(wing a)-.25 F F1(while)4.155 E F0(or)4.155 E F1(until)4.155 E F0 --.1(ke)4.155 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.654 -(wing the)-.25 F F1(if)4.154 E F0(or)4.154 E F1(elif)4.154 E F0(reserv) -4.154 E(ed)-.15 E -.1(wo)184 316.8 S .581(rds, part of an).1 F 3.081(yc) --.15 G .581(ommand e)-3.081 F -.15(xe)-.15 G .581(cuted in a).15 F F1 -(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .582(list e)3.082 F .582 -(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 328.8 R -F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 3.418(,a)C 1.218 -.15(ny c) --3.418 H .918(ommand in a pipeline b).15 F .917 -(ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 E --.25(va)184 340.8 S .66(lue is being in).25 F -.15(ve)-.4 G .66 -(rted with).15 F F1(!)3.16 E F0 5.661(.I)C 3.161(fac)-5.661 G .661 -(ompound command other than a subshell returns a)-3.161 F 1.113 -(non-zero status because a command f)184 352.8 R 1.112(ailed while)-.1 F -F13.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.112 -(eing ignored, the shell does)-3.612 F .177(not e)184 364.8 R 2.677 -(xit. A)-.15 F .177(trap on)2.677 F F1(ERR)2.677 E F0 2.677(,i)C 2.678 -(fs)-2.677 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 -(cuted before the shell e).15 F 2.678(xits. This)-.15 F .178 -(option applies to)2.678 F .618(the shell en)184 376.8 R .617 -(vironment and each subshell en)-.4 F .617(vironment separately \(see) --.4 F F3 .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR)184 388.8 R(ONMENT) --.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 -(\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15 -(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 400.8 -Q .999(If a compound command or shell function e)184 418.8 R -.15(xe) --.15 G .999(cutes in a conte).15 F .998(xt where)-.15 F F13.498 E -F0 .998(is being ig-)3.498 F .089(nored, none of the commands e)184 -430.8 R -.15(xe)-.15 G .089 -(cuted within the compound command or function body).15 F .503 -(will be af)184 442.8 R .503(fected by the)-.25 F F13.002 E F0 -.502(setting, e)3.002 F -.15(ve)-.25 G 3.002(ni).15 G(f)-3.002 E F1 -3.002 E F0 .502(is set and a command returns a f)3.002 F .502 -(ailure sta-)-.1 F 4.183(tus. If)184 454.8 R 4.183(ac)4.183 G 1.683 -(ompound command or shell function sets)-4.183 F F14.184 E F0 +F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 489.6 Q +F2 .86(compound command)3.36 F F0(\(see)3.36 E/F3 9/Times-Bold@0 SF .86 +(SHELL GRAMMAR)3.36 F F0(in)3.11 E F2(bash\(1\))3.36 E F0 .86(\), e)B +.86(xits with a non-zero sta-)-.15 F 2.852(tus. The)184 501.6 R .352 +(shell does not e)2.852 F .352(xit if the command that f)-.15 F .353 +(ails is part of the command list imme-)-.1 F 1.108(diately follo)184 +513.6 R 1.108(wing a)-.25 F F1(while)3.608 E F0(or)3.608 E F1(until) +3.608 E F0 -.1(ke)3.608 G(yw)-.05 E 1.107(ord, part of the test follo) +-.1 F 1.107(wing the)-.25 F F1(if)3.607 E F0(or)3.607 E F1(elif)3.607 E +F0(re-)3.607 E(serv)184 525.6 Q .279(ed w)-.15 F .279(ords, part of an) +-.1 F 2.779(yc)-.15 G .279(ommand e)-2.779 F -.15(xe)-.15 G .279 +(cuted in a).15 F F1(&&)2.779 E F0(or)2.779 E F1(||)2.78 E F0 .28 +(list e)2.78 F .28(xcept the command fol-)-.15 F(lo)184 537.6 Q .703 +(wing the \214nal)-.25 F F1(&&)3.203 E F0(or)3.203 E F1(||)3.203 E F0 +3.203(,a)C 1.003 -.15(ny c)-3.203 H .703(ommand in a pipeline b).15 F +.703(ut the last, or if the command')-.2 F(s)-.55 E .476(return v)184 +549.6 R .476(alue is being in)-.25 F -.15(ve)-.4 G .476(rted with).15 F +F1(!)2.976 E F0 5.476(.I)C 2.976(fac)-5.476 G .476 +(ompound command other than a subshell re-)-2.976 F .418 +(turns a non-zero status because a command f)184 561.6 R .418 +(ailed while)-.1 F F12.918 E F0 -.1(wa)2.918 G 2.918(sb).1 G .417 +(eing ignored, the shell)-2.918 F .472(does not e)184 573.6 R 2.972 +(xit. A)-.15 F .472(trap on)2.972 F F1(ERR)2.972 E F0 2.972(,i)C 2.972 +(fs)-2.972 G .472(et, is e)-2.972 F -.15(xe)-.15 G .473 +(cuted before the shell e).15 F 2.973(xits. This)-.15 F .473(option ap-) +2.973 F 2.114(plies to the shell en)184 585.6 R 2.113 +(vironment and each subshell en)-.4 F 2.113(vironment separately \(see) +-.4 F F3(COM-)4.613 E .675(MAND EXECUTION ENVIR)184 597.6 R(ONMENT)-.27 +E F0(in)2.925 E F2(bash\(1\))3.175 E F0 .675 +(\), and may cause subshells to e)B .676(xit be-)-.15 F(fore e)184 609.6 +Q -.15(xe)-.15 G(cuting all the commands in the subshell.).15 E .999 +(If a compound command or shell function e)184 627.6 R -.15(xe)-.15 G +.999(cutes in a conte).15 F .998(xt where)-.15 F F13.498 E F0 .998 +(is being ig-)3.498 F .089(nored, none of the commands e)184 639.6 R +-.15(xe)-.15 G .089(cuted within the compound command or function body) +.15 F .503(will be af)184 651.6 R .503(fected by the)-.25 F F1 +3.002 E F0 .502(setting, e)3.002 F -.15(ve)-.25 G 3.002(ni).15 G(f) +-3.002 E F13.002 E F0 .502(is set and a command returns a f)3.002 +F .502(ailure sta-)-.1 F 4.183(tus. If)184 663.6 R 4.183(ac)4.183 G +1.683(ompound command or shell function sets)-4.183 F F14.184 E F0 1.684(while e)4.184 F -.15(xe)-.15 G 1.684(cuting in a conte).15 F(xt) --.15 E(where)184 466.8 Q F13.154 E F0 .654 +-.15 E(where)184 675.6 Q F13.154 E F0 .654 (is ignored, that setting will not ha)3.154 F .953 -.15(ve a)-.2 H .953 -.15(ny e).15 H -.25(ff).15 G .653(ect until the compound command).25 F -(or the command containing the function call completes.)184 478.8 Q F1 -144 490.8 Q F0(Disable pathname e)184 490.8 Q(xpansion.)-.15 E F1 -144 502.8 Q F0 .988(Remember the location of commands as the)184 -502.8 R 3.488(ya)-.15 G .988(re look)-3.488 F .988(ed up for e)-.1 F +(or the command containing the function call completes.)184 687.6 Q F1 +144 699.6 Q F0(Disable pathname e)184 699.6 Q(xpansion.)-.15 E F1 +144 711.6 Q F0 .988(Remember the location of commands as the)184 +711.6 R 3.488(ya)-.15 G .988(re look)-3.488 F .988(ed up for e)-.1 F -.15(xe)-.15 G 3.488(cution. This).15 F .988(is en-)3.488 F -(abled by def)184 514.8 Q(ault.)-.1 E F1144 526.8 Q F0 .514 -(All ar)184 526.8 R .514 -(guments in the form of assignment statements are placed in the en)-.18 -F .513(vironment for a)-.4 F -(command, not just those that precede the command name.)184 538.8 Q F1 -144 550.8 Q F0 .148(Monitor mode.)184 550.8 R .148 -(Job control is enabled.)5.148 F .149(This option is on by def)5.148 F -.149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .651 -(on systems that support it \(see)184 562.8 R F3 .651(JOB CONTR)3.151 F -(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .65 -(processes run in a separate)3.151 F .678(process group.)184 574.8 R -.679(When a background job completes, the shell prints a line containin\ -g its)5.678 F -.15(ex)184 586.8 S(it status.).15 E F1144 598.8 Q -F0 .653(Read commands b)184 598.8 R .653(ut do not e)-.2 F -.15(xe)-.15 -G .653(cute them.).15 F .652 -(This may be used to check a shell script for)5.653 F(syntax errors.)184 -610.8 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 -E F1144 622.8 Q F2(option\255name)2.5 E F0(The)184 634.8 Q F2 -(option\255name)2.5 E F0(can be one of the follo)2.5 E(wing:)-.25 E F1 -(allexport)184 646.8 Q F0(Same as)224 658.8 Q F12.5 E F0(.)A F1 -(braceexpand)184 670.8 Q F0(Same as)224 682.8 Q F12.5 E F0(.)A F1 -(emacs)184 694.8 Q F0 .089 -(Use an emacs-style command line editing interf)224 694.8 R 2.589 -(ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95 -(when the shell is interacti)224 706.8 R -.15(ve)-.25 G 3.45(,u).15 G -.95(nless the shell is started with the)-3.45 F F1(\255\255noediting) -3.45 E F0 2.5(option. This)224 718.8 R(also af)2.5 E -(fects the editing interf)-.25 E(ace used for)-.1 E F1 -.18(re)2.5 G -(ad \255e).18 E F0(.)A(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(15) -198.725 E 0 Cg EP +(abled by def)184 723.6 Q(ault.)-.1 E(GNU Bash 5.2)72 768 Q(2021 No) +136.385 E -.15(ve)-.15 G(mber 22).15 E(15)185.545 E 0 Cg EP %%Page: 16 16 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(err)184 84 Q(exit) --.18 E F0(Same as)224 84 Q F12.5 E F0(.)A F1(errtrace)184 96 Q F0 -(Same as)224 96 Q F12.5 E F0(.)A F1(functrace)184 108 Q F0 -(Same as)224 120 Q F12.5 E F0(.)A F1(hashall)184 132 Q F0(Same as) -224 132 Q F12.5 E F0(.)A F1(histexpand)184 144 Q F0(Same as)224 -156 Q F12.5 E F0(.)A F1(history)184 168 Q F0 .586 -(Enable command history)224 168 R 3.087(,a)-.65 G 3.087(sd)-3.087 G .587 -(escribed abo)-3.087 F .887 -.15(ve u)-.15 H(nder).15 E/F2 9 -/Times-Bold@0 SF(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F3 9/Times-Roman@0 SF -(.)A F0 .587(This option is)5.087 F(on by def)224 180 Q +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 .514 +(All ar)184 84 R .514 +(guments in the form of assignment statements are placed in the en)-.18 +F .513(vironment for a)-.4 F +(command, not just those that precede the command name.)184 96 Q F1 +144 108 Q F0 .148(Monitor mode.)184 108 R .148 +(Job control is enabled.)5.148 F .149(This option is on by def)5.148 F +.149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .235 +(on systems that support it \(see)184 120 R/F2 9/Times-Bold@0 SF .235 +(JOB CONTR)2.735 F(OL)-.27 E F0(in)2.485 E/F3 10/Times-Italic@0 SF +(bash\(1\))2.735 E F0 2.735(\). All)B .234(processes run in a sepa-) +2.735 F .252(rate process group.)184 132 R .252 +(When a background job completes, the shell prints a line containing) +5.252 F(its e)184 144 Q(xit status.)-.15 E F1144 156 Q F0 .653 +(Read commands b)184 156 R .653(ut do not e)-.2 F -.15(xe)-.15 G .653 +(cute them.).15 F .652(This may be used to check a shell script for) +5.653 F(syntax errors.)184 168 Q(This is ignored by interacti)5 E .3 +-.15(ve s)-.25 H(hells.).15 E F1144 180 Q F3(option\255name)2.5 E +F0(The)184 192 Q F3(option\255name)2.5 E F0(can be one of the follo)2.5 +E(wing:)-.25 E F1(allexport)184 204 Q F0(Same as)224 216 Q F12.5 E +F0(.)A F1(braceexpand)184 228 Q F0(Same as)224 240 Q F12.5 E F0(.) +A F1(emacs)184 252 Q F0 .089 +(Use an emacs-style command line editing interf)224 252 R 2.589 +(ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95 +(when the shell is interacti)224 264 R -.15(ve)-.25 G 3.45(,u).15 G .95 +(nless the shell is started with the)-3.45 F F1(\255\255noediting)3.45 E +F0 2.5(option. This)224 276 R(also af)2.5 E(fects the editing interf) +-.25 E(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(err) +184 288 Q(exit)-.18 E F0(Same as)224 288 Q F12.5 E F0(.)A F1 +(errtrace)184 300 Q F0(Same as)224 300 Q F12.5 E F0(.)A F1 +(functrace)184 312 Q F0(Same as)224 324 Q F12.5 E F0(.)A F1 +(hashall)184 336 Q F0(Same as)224 336 Q F12.5 E F0(.)A F1 +(histexpand)184 348 Q F0(Same as)224 360 Q F12.5 E F0(.)A F1 +(history)184 372 Q F0 1.001(Enable command history)224 372 R 3.502(,a) +-.65 G 3.502(sd)-3.502 G 1.002(escribed in)-3.502 F F3(bash\(1\))3.502 E +F0(under)3.502 E F2(HIST)3.502 E(OR)-.162 E(Y)-.315 E/F4 9/Times-Roman@0 +SF(.)A F0 1.002(This op-)5.502 F(tion is on by def)224 384 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.657(The ef)224 204 R 1.657 -(fect is as if the shell command)-.25 F/F4 10/Courier@0 SF(IGNOREEOF=10) +396 Q(eeof)-.18 E F0 1.657(The ef)224 408 R 1.657 +(fect is as if the shell command)-.25 F/F5 10/Courier@0 SF(IGNOREEOF=10) 4.156 E F0 1.656(had been e)4.156 F -.15(xe)-.15 G(cuted).15 E(\(see)224 -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 -2.5 E F0(.)A F1(monitor)184 252 Q F0(Same as)224 252 Q F12.5 -E F0(.)A F1(noclob)184 264 Q(ber)-.1 E F0(Same as)224 276 Q F12.5 -E F0(.)A F1(noexec)184 288 Q F0(Same as)224 288 Q F12.5 E F0(.)A -F1(noglob)184 300 Q F0(Same as)224 300 Q F12.5 E F0(.)A F1(nolog) -184 312 Q F0(Currently ignored.)224 312 Q F1(notify)184 324 Q F0 -(Same as)224 324 Q F12.5 E F0(.)A F1(nounset)184 336 Q F0(Same as) -224 336 Q F12.5 E F0(.)A F1(onecmd)184 348 Q F0(Same as)224 348 Q -F12.5 E F0(.)A F1(ph)184 360 Q(ysical)-.15 E F0(Same as)224 360 Q -F12.5 E F0(.)A F1(pipefail)184 372 Q F0 1.029 -(If set, the return v)224 372 R 1.029(alue of a pipeline is the v)-.25 F -1.03(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 384 +420 Q F1(Shell V)2.5 E(ariables)-.92 E F0(in)2.5 E F3(bash\(1\))2.5 E F0 +(\).)A F1 -.1(ke)184 432 S(yw).1 E(ord)-.1 E F0(Same as)224 444 Q F1 +2.5 E F0(.)A F1(monitor)184 456 Q F0(Same as)224 456 Q F12.5 +E F0(.)A F1(noclob)184 468 Q(ber)-.1 E F0(Same as)224 480 Q F12.5 +E F0(.)A F1(noexec)184 492 Q F0(Same as)224 492 Q F12.5 E F0(.)A +F1(noglob)184 504 Q F0(Same as)224 504 Q F12.5 E F0(.)A F1(nolog) +184 516 Q F0(Currently ignored.)224 516 Q F1(notify)184 528 Q F0 +(Same as)224 528 Q F12.5 E F0(.)A F1(nounset)184 540 Q F0(Same as) +224 540 Q F12.5 E F0(.)A F1(onecmd)184 552 Q F0(Same as)224 552 Q +F12.5 E F0(.)A F1(ph)184 564 Q(ysical)-.15 E F0(Same as)224 564 Q +F12.5 E F0(.)A F1(pipefail)184 576 Q F0 1.029 +(If set, the return v)224 576 R 1.029(alue of a pipeline is the v)-.25 F +1.03(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 588 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.09(Change the beha)224 408 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 +-.15 F -.15(ex)224 600 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 612 Q F0 +2.09(Change the beha)224 612 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 -(fers from the)-.25 F 1.212(POSIX standard to match the standard \()224 -420 R/F5 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B F2 -1.212(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E .954 -(for a reference to a document that details ho)224 432 R 3.455(wp)-.25 G -.955(osix mode af)-3.455 F .955(fects bash')-.25 F 3.455(sb)-.55 G(e-) --3.455 E(ha)224 444 Q(vior)-.2 E(.)-.55 E F1(pri)184 456 Q(vileged)-.1 E -F0(Same as)224 468 Q F12.5 E F0(.)A F1 -.1(ve)184 480 S(rbose).1 E -F0(Same as)224 480 Q F12.5 E F0(.)A F1(vi)184 492 Q F0 .209 -(Use a vi-style command line editing interf)224 492 R 2.709(ace. This) +(fers from the)-.25 F 2.704(POSIX standard to match the standard \()224 +624 R F3 2.704(posix mode)B F0 5.204(\). See)B F2 2.704(SEE ALSO)5.204 F +F0(in)4.953 E F3(bash\(1\))224 636 Q F0 1.844 +(for a reference to a document that details ho)4.344 F 4.344(wp)-.25 G +1.845(osix mode af)-4.344 F(fects)-.25 E(bash')224 648 Q 2.5(sb)-.55 G +(eha)-2.5 E(vior)-.2 E(.)-.55 E F1(pri)184 660 Q(vileged)-.1 E F0 +(Same as)224 672 Q F12.5 E F0(.)A F1 -.1(ve)184 684 S(rbose).1 E +F0(Same as)224 684 Q F12.5 E F0(.)A F1(vi)184 696 Q F0 .209 +(Use a vi-style command line editing interf)224 696 R 2.709(ace. This) -.1 F .209(also af)2.709 F .209(fects the editing in-)-.25 F(terf)224 -504 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 -(xtrace)184 516 Q F0(Same as)224 516 Q F12.5 E F0(.)A(If)184 534 Q -F13.052 E F0 .552(is supplied with no)3.052 F F5(option\255name) +708 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A +(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E +(16)185.545 E 0 Cg EP +%%Page: 17 17 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(xtrace)184 84 Q F0 +(Same as)224 84 Q F12.5 E F0(.)A(If)184 102 Q F13.052 E F0 +.552(is supplied with no)3.052 F/F2 10/Times-Italic@0 SF(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 -546 Q F0 1.072(is supplied with no)3.572 F F5(option\255name)3.572 E F0 +114 Q F0 1.072(is supplied with no)3.572 F F2(option\255name)3.572 E F0 3.572(,a)C 1.071(series of)-.001 F F1(set)3.571 E F0 1.071 (commands to recreate the current)3.571 F -(option settings is displayed on the standard output.)184 558 Q F1 -144 570 Q F0 -.45(Tu)184 570 S 1.071(rn on).45 F F5(privile)4.821 E -.1 +(option settings is displayed on the standard output.)184 126 Q F1 +144 138 Q F0 -.45(Tu)184 138 S 1.071(rn on).45 F F2(privile)4.821 E -.1 (ge)-.4 G(d).1 E F0 3.572(mode. In)4.341 F 1.072(this mode, the)3.572 F -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 582 R 1.5 -(vironment, and the)-.4 F F2(SHELLOPTS)4 E F3(,)A F2 -.27(BA)184 594 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 606 R .38 +/F3 9/Times-Bold@0 SF($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV) +-.27 E F0 1.072(\214les are not pro-)3.322 F 1.501 +(cessed, shell functions are not inherited from the en)184 150 R 1.5 +(vironment, and the)-.4 F F3(SHELLOPTS)4 E/F4 9/Times-Roman@0 SF(,)A F3 +-.27(BA)184 162 S(SHOPTS).27 E F4(,)A F3(CDP)2.774 E -.855(AT)-.666 G(H) +.855 E F4(,)A F0(and)2.774 E F3(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G +.524(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F +(vironment,)-.4 E .38(are ignored.)184 174 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 618 R F12.961 E F0 .461 +(user \(group\) id, and the)184 186 R F12.961 E F0 .461 (option is not supplied, these actions are tak)2.961 F .462 -(en and the ef)-.1 F(fec-)-.25 E(ti)184 630 Q .695 -.15(ve u)-.25 H .395 +(en and the ef)-.1 F(fec-)-.25 E(ti)184 198 Q .695 -.15(ve u)-.25 H .395 (ser id is set to the real user id.).15 F .395(If the)5.395 F F1 2.895 E F0 .394(option is supplied at startup, the ef)2.895 F(fecti)-.25 -E -.15(ve)-.25 G .386(user id is not reset.)184 642 R -.45(Tu)5.386 G +E -.15(ve)-.25 G .386(user id is not reset.)184 210 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 654 Q F1144 666 Q F0 -(Exit after reading and e)184 666 Q -.15(xe)-.15 G(cuting one command.) -.15 E F1144 678 Q F0 -.35(Tr)184 678 S .044(eat unset v).35 F .044 -(ariables and parameters other than the special parameters "@" and "*" \ -as an)-.25 F .182(error when performing parameter e)184 690 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 702 R 3.246(,t)-.4 G .746 -(he shell prints an error message, and, if not interacti)-3.246 F -.15 -(ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184 -714 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(16)198.725 E 0 Cg EP -%%Page: 17 17 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 -(Print shell input lines as the)184 84 Q 2.5(ya)-.15 G(re read.)-2.5 E -F1144 96 Q F0 .315(After e)184 96 R .315(xpanding each)-.15 F/F2 -10/Times-Italic@0 SF .315(simple command)2.815 F F0(,)A F1 -.25(fo)2.815 -G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,)2.815 E F1 -(select)2.815 E F0(command,)2.815 E 1.236(or arithmetic)184 108 R F1 --.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F 1.236 -(xpanded v)-.15 F 1.236(alue of)-.25 F/F3 9/Times-Bold@0 SF(PS4)3.736 E -/F4 9/Times-Roman@0 SF(,)A F0(follo)3.486 E 1.236(wed by the com-)-.25 F -(mand and its e)184 120 Q(xpanded ar)-.15 E(guments or associated w)-.18 -E(ord list.)-.1 E F1144 132 Q F0 1.205(The shell performs brace e) -184 132 R 1.205(xpansion \(see)-.15 F F1 1.205(Brace Expansion)3.705 F -F0(abo)3.705 E -.15(ve)-.15 G 3.706(\). This).15 F 1.206(is on by de-) -3.706 F -.1(fa)184 144 S(ult.).1 E F1144 156 Q F0 .214(If set,)184 -156 R F1(bash)2.714 E F0 .214(does not o)2.714 F -.15(ve)-.15 G .214 -(rwrite an e).15 F .214(xisting \214le with the)-.15 F F1(>)2.714 E F0 -(,)A F1(>&)2.714 E F0 2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213 -(redirection opera-)2.713 F 3.053(tors. This)184 168 R .553(may be o) -3.053 F -.15(ve)-.15 G .553 +(set to the real user and group ids.)184 222 Q F1144 234 Q F0 +(Enable restricted shell mode.)184 234 Q +(This option cannot be unset once it has been set.)5 E F1144 246 Q +F0(Exit after reading and e)184 246 Q -.15(xe)-.15 G +(cuting one command.).15 E F1144 258 Q F0 -.35(Tr)184 258 S .774 +(eat unset v).35 F .773(ariables and parameters other than the special \ +parameters "@" and "*", or)-.25 F .459(array v)184 270 R .459(ariables \ +subscripted with "@" or "*", as an error when performing parameter e) +-.25 F(x-)-.15 E 2.891(pansion. If)184 282 R -.15(ex)2.891 G .391 +(pansion is attempted on an unset v).15 F .391(ariable or parameter)-.25 +F 2.89(,t)-.4 G .39(he shell prints an)-2.89 F +(error message, and, if not interacti)184 294 Q -.15(ve)-.25 G 2.5(,e) +.15 G(xits with a non-zero status.)-2.65 E F1144 306 Q F0 +(Print shell input lines as the)184 306 Q 2.5(ya)-.15 G(re read.)-2.5 E +F1144 318 Q F0 .315(After e)184 318 R .315(xpanding each)-.15 F F2 +.315(simple command)2.815 F F0(,)A F1 -.25(fo)2.815 G(r).25 E F0 +(command,)2.815 E F1(case)2.815 E F0(command,)2.815 E F1(select)2.815 E +F0(command,)2.815 E 1.236(or arithmetic)184 330 R F1 -.25(fo)3.736 G(r) +.25 E F0 1.236(command, display the e)3.736 F 1.236(xpanded v)-.15 F +1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0(follo)3.486 E 1.236 +(wed by the com-)-.25 F(mand and its e)184 342 Q(xpanded ar)-.15 E +(guments or associated w)-.18 E(ord list.)-.1 E F1144 354 Q F0 +1.053(The shell performs brace e)184 354 R 1.053(xpansion \(see)-.15 F +F1 1.053(Brace Expansion)3.553 F F0(in)3.553 E F2(bash\(1\))3.553 E F0 +3.553(\). This)B 1.053(is on by)3.553 F(def)184 366 Q(ault.)-.1 E F1 +144 378 Q F0 .214(If set,)184 378 R F1(bash)2.714 E F0 .214 +(does not o)2.714 F -.15(ve)-.15 G .214(rwrite an e).15 F .214 +(xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0 +2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213(redirection opera-)2.713 F +3.053(tors. This)184 390 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 180 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 -144 192 Q F0 .104(If set, an)184 192 R 2.604(yt)-.15 G .104 +.15 F(tor)184 402 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 414 Q F0 .104(If set, an)184 414 R 2.604(yt)-.15 G .104 (rap on)-2.604 F F1(ERR)2.604 E F0 .103 (is inherited by shell functions, command substitutions, and com-)2.604 -F .838(mands e)184 204 R -.15(xe)-.15 G .838(cuted in a subshell en).15 +F .838(mands e)184 426 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 216 Q F1 -144 228 Q F0(Enable)184 228 Q F1(!)3.032 E F0 .532 +(trap is normally not inherited in)3.339 F(such cases.)184 438 Q F1 +144 450 Q F0(Enable)184 450 Q F1(!)3.032 E F0 .532 (style history substitution.)5.532 F .531(This option is on by def)5.532 -F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 240 Q -.15 -(ve)-.25 G(.).15 E F1144 252 Q F0 .959 -(If set, the shell does not resolv)184 252 R 3.459(es)-.15 G .959 +F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 462 Q -.15 +(ve)-.25 G(.).15 E F1144 474 Q F0 .959 +(If set, the shell does not resolv)184 474 R 3.459(es)-.15 G .959 (ymbolic links when e)-3.459 F -.15(xe)-.15 G .96 (cuting commands such as).15 F F1(cd)3.46 E F0 1.453 -(that change the current w)184 264 R 1.453(orking directory)-.1 F 6.453 +(that change the current w)184 486 R 1.453(orking directory)-.1 F 6.453 (.I)-.65 G 3.952(tu)-6.453 G 1.452(ses the ph)-3.952 F 1.452 -(ysical directory structure in-)-.05 F 3.334(stead. By)184 276 R(def) +(ysical directory structure in-)-.05 F 3.334(stead. By)184 498 R(def) 3.334 E(ault,)-.1 E F1(bash)3.334 E F0(follo)3.334 E .834 (ws the logical chain of directories when performing com-)-.25 F -(mands which change the current directory)184 288 Q(.)-.65 E F1144 -300 Q F0 .89(If set, an)184 300 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1 +(mands which change the current directory)184 510 Q(.)-.65 E F1144 +522 Q F0 .89(If set, an)184 522 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1 (DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89 (are inherited by shell functions, command)3.39 F 1.932 -(substitutions, and commands e)184 312 R -.15(xe)-.15 G 1.932 +(substitutions, and commands e)184 534 R -.15(xe)-.15 G 1.932 (cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E -(UG)-.1 E F0(and)4.432 E F1(RETURN)184 324 Q F0 -(traps are normally not inherited in such cases.)2.5 E F1144 336 Q -F0 .401(If no ar)184 336 R .401(guments follo)-.18 F 2.901(wt)-.25 G +(UG)-.1 E F0(and)4.432 E F1(RETURN)184 546 Q F0 +(traps are normally not inherited in such cases.)2.5 E F1144 558 Q +F0 .401(If no ar)184 558 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401(his option, then the positional parameters are unset.)-2.901 F -(Otherwise,)5.4 E(the positional parameters are set to the)184 348 Q F2 +(Otherwise,)5.4 E(the positional parameters are set to the)184 570 Q F2 (ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G (ome of them be)-2.5 E(gin with a)-.15 E F12.5 E F0(.)A F1144 -360 Q F0 .796(Signal the end of options, cause all remaining)184 360 R +582 Q F0 .796(Signal the end of options, cause all remaining)184 582 R F2(ar)3.297 E(g)-.37 E F0 3.297(st)C 3.297(ob)-3.297 G 3.297(ea)-3.297 G -.797(ssigned to the positional pa-)-3.297 F 3.022(rameters. The)184 372 +.797(ssigned to the positional pa-)-3.297 F 3.022(rameters. The)184 594 R F13.022 E F0(and)3.022 E F13.022 E F0 .522 (options are turned of)3.022 F 3.022(f. If)-.25 F .522(there are no) 3.022 F F2(ar)3.022 E(g)-.37 E F0 .521(s, the positional pa-)B -(rameters remain unchanged.)184 384 Q .425(The options are of)144 400.8 +(rameters remain unchanged.)184 606 Q .425(The options are of)144 622.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 (ault unless otherwise noted.)-.1 F .425 (Using + rather than \255 causes these options)5.425 F .178 -(to be turned of)144 412.8 R 2.678(f. The)-.25 F .178 +(to be turned of)144 634.8 R 2.678(f. The)-.25 F .178 (options can also be speci\214ed as ar)2.678 F .178(guments to an in) -.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E .066 -(current set of options may be found in)144 424.8 R F1<24ad>2.566 E F0 +(current set of options may be found in)144 646.8 R F1<24ad>2.566 E F0 5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066 (ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F -(is encountered.)144 436.8 Q F1(shift)108 453.6 Q F0([)2.5 E F2(n)A F0 -(])A .429(The positional parameters from)144 465.6 R F2(n)2.929 E F0 +(is encountered.)144 658.8 Q F1(shift)108 675.6 Q F0([)2.5 E F2(n)A F0 +(])A .429(The positional parameters from)144 687.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 477.6 Q F1($#)2.582 +.428(rameters represented by the num-).15 F(bers)144 699.6 Q F1($#)2.582 E F0(do)2.582 E .082(wn to)-.25 F F1($#)2.582 E F0A F2(n)A F0 .082 (+1 are unset.)B F2(n)5.442 E F0 .082(must be a non-ne)2.822 F -.05(ga) -.15 G(ti).05 E .383 -.15(ve n)-.25 H .083(umber less than or equal to) .15 F F1($#)2.583 E F0 5.083(.I)C(f)-5.083 E F2(n)2.943 E F0 .06 -(is 0, no parameters are changed.)144 489.6 R(If)5.06 E F2(n)2.92 E F0 +(is 0, no parameters are changed.)144 711.6 R(If)5.06 E F2(n)2.92 E F0 .06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F (If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56 -(,t)C(he)-2.56 E .143(positional parameters are not changed.)144 501.6 R +(,t)C(he)-2.56 E .143(positional parameters are not changed.)144 723.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 513.6 Q F1(shopt)108 530.4 Q F0([) -2.5 E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname) --2.5 E F0(...])2.5 E -.8(To)144 542.4 S .64(ggle the v).8 F .639 +.144(is greater than)2.884 F F1($#)2.644 E F0(GNU Bash 5.2)72 768 Q +(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(17)185.545 E 0 Cg EP +%%Page: 18 18 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E(or less than zero; otherwise 0.)144 84 Q/F1 +10/Times-Bold@0 SF(shopt)108 100.8 Q F0([)2.5 E F1(\255pqsu)A F0 2.5(][) +C F1-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(optname)-2.5 E F0 +(...])2.5 E -.8(To)144 112.8 S .64(ggle the v).8 F .639 (alues of settings controlling optional shell beha)-.25 F(vior)-.2 E 5.639(.T)-.55 G .639(he settings can be either those)-5.639 F .374 -(listed belo)144 554.4 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H +(listed belo)144 124.8 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H 2.874(ft).4 G(he)-2.874 E F12.874 E F0 .375 (option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 F F12.875 E F0 .375(option to the)2.875 F F1(set)2.875 E F0 -.2 -(bu)2.875 G .375(iltin com-).2 F 2.566(mand. W)144 566.4 R .066 +(bu)2.875 G .375(iltin com-).2 F 2.566(mand. W)144 136.8 R .066 (ith no options, or with the)-.4 F F12.566 E F0 .066 (option, a list of all settable options is displayed, with an in-)2.566 -F .074(dication of whether or not each is set; if)144 578.4 R F2 +F .074(dication of whether or not each is set; if)144 148.8 R F2 (optnames)2.574 E F0 .074 (are supplied, the output is restricted to those op-)2.574 F 3.105 -(tions. The)144 590.4 R F13.105 E F0 .605(option causes output to\ +(tions. The)144 160.8 R F13.105 E F0 .605(option causes output to\ be displayed in a form that may be reused as input.)3.105 F(Other)5.605 -E(options ha)144 602.4 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 614.4 Q F0(Enable \(set\) each)180 -614.4 Q F2(optname)2.5 E F0(.)A F1144 626.4 Q F0 -(Disable \(unset\) each)180 626.4 Q F2(optname)2.5 E F0(.)A F1144 -638.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ -tus indicates whether the)180 638.4 R F2(optname)2.504 E F0(is)2.504 E -.256(set or unset.)180 650.4 R .256(If multiple)5.256 F F2(optname)2.756 +E(options ha)144 172.8 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 184.8 Q F0(Enable \(set\) each)180 +184.8 Q F2(optname)2.5 E F0(.)A F1144 196.8 Q F0 +(Disable \(unset\) each)180 196.8 Q F2(optname)2.5 E F0(.)A F1144 +208.8 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ +tus indicates whether the)180 208.8 R F2(optname)2.504 E F0(is)2.504 E +.256(set or unset.)180 220.8 R .256(If multiple)5.256 F F2(optname)2.756 E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G (ith)-2.756 E F12.756 E F0 2.755(,t)C .255 -(he return status is zero if)-2.755 F(all)180 662.4 Q F2(optnames)2.5 E -F0(are enabled; non-zero otherwise.)2.5 E F1144 674.4 Q F0 -(Restricts the v)180 674.4 Q(alues of)-.25 E F2(optname)2.5 E F0 +(he return status is zero if)-2.755 F(all)180 232.8 Q F2(optnames)2.5 E +F0(are enabled; non-zero otherwise.)2.5 E F1144 244.8 Q F0 +(Restricts the v)180 244.8 Q(alues of)-.25 E F2(optname)2.5 E F0 (to be those de\214ned for the)2.5 E F12.5 E F0(option to the)2.5 -E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 691.2 R F1 +E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 261.6 R F1 3.124 E F0(or)3.124 E F13.124 E F0 .624(is used with no) 3.124 F F2(optname)3.124 E F0(ar)3.124 E(guments,)-.18 E F1(shopt)3.124 E F0(sho)3.124 E .624(ws only those options which are)-.25 F .984 -(set or unset, respecti)144 703.2 R -.15(ve)-.25 G(ly).15 E 5.984(.U) +(set or unset, respecti)144 273.6 R -.15(ve)-.25 G(ly).15 E 5.984(.U) -.65 G .984(nless otherwise noted, the)-5.984 F F1(shopt)3.484 E F0 .983 -(options are disabled \(unset\) by de-)3.483 F -.1(fa)144 715.2 S(ult.) -.1 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(17)198.725 E 0 Cg EP -%%Page: 18 18 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E 1.544 -(The return status when listing options is zero if all)144 84 R/F1 10 -/Times-Italic@0 SF(optnames)4.044 E F0 1.545 -(are enabled, non-zero otherwise.)4.045 F .696 +(options are disabled \(unset\) by de-)3.483 F -.1(fa)144 285.6 S(ult.) +.1 E 1.544(The return status when listing options is zero if all)144 +302.4 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 96 R F1(optname)3.196 E F0 .696(is not a v)3.196 F .695(alid shell) --.25 F(option.)144 108 Q(The list of)144 124.8 Q/F2 10/Times-Bold@0 SF -(shopt)2.5 E F0(options is:)2.5 E F2(assoc_expand_once)144 142.8 Q F0 -1.944(If set, the shell suppresses multiple e)184 154.8 R -.25(va)-.25 G +144 314.4 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695 +(alid shell)-.25 F(option.)144 326.4 Q(The list of)144 343.2 Q F1(shopt) +2.5 E F0(options is:)2.5 E F1(assoc_expand_once)144 361.2 Q F0 1.944 +(If set, the shell suppresses multiple e)184 373.2 R -.25(va)-.25 G 1.945(luation of associati).25 F 2.245 -.15(ve a)-.25 H 1.945 -(rray subscripts during).15 F .885(arithmetic e)184 166.8 R .885 +(rray subscripts during).15 F .885(arithmetic e)184 385.2 R .885 (xpression e)-.15 F -.25(va)-.25 G .885(luation, while e).25 F -.15(xe) -.15 G .885(cuting b).15 F .885(uiltins that can perform v)-.2 F .885 -(ariable as-)-.25 F(signments, and while e)184 178.8 Q -.15(xe)-.15 G -(cuting b).15 E(uiltins that perform array dereferencing.)-.2 E F2 -(autocd)144 190.8 Q F0 .199 -(If set, a command name that is the name of a directory is e)184 190.8 R +(ariable as-)-.25 F(signments, and while e)184 397.2 Q -.15(xe)-.15 G +(cuting b).15 E(uiltins that perform array dereferencing.)-.2 E F1 +(autocd)144 409.2 Q F0 .199 +(If set, a command name that is the name of a directory is e)184 409.2 R -.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 202.8 Q F2(cd)2.5 E F0 2.5(command. This)2.5 F +(ment to the)184 421.2 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 -F2(cdable_v)144 214.8 Q(ars)-.1 E F0 .156(If set, an ar)184 226.8 R .156 -(gument to the)-.18 F F2(cd)2.656 E F0 -.2(bu)2.656 G .155 +F1(cdable_v)144 433.2 Q(ars)-.1 E F0 .156(If set, an ar)184 445.2 R .156 +(gument to the)-.18 F F1(cd)2.656 E F0 -.2(bu)2.656 G .155 (iltin command that is not a directory is assumed to be the).2 F -(name of a v)184 238.8 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E F2(cdspell)144 250.8 Q F0 +(name of a v)184 457.2 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F1(cdspell)144 469.2 Q F0 1.055 (If set, minor errors in the spelling of a directory component in a)184 -250.8 R F2(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 -(corrected. The)184 262.8 R 1.488(errors check)3.988 F 1.487 +469.2 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 +(corrected. The)184 481.2 R 1.488(errors check)3.988 F 1.487 (ed for are transposed characters, a missing character)-.1 F 3.987(,a) --.4 G(nd)-3.987 E .77(one character too man)184 274.8 R 4.57 -.65(y. I) +-.4 G(nd)-3.987 E .77(one character too man)184 493.2 R 4.57 -.65(y. I) -.15 H 3.27(fac).65 G .77 (orrection is found, the corrected \214lename is printed, and)-3.27 F -(the command proceeds.)184 286.8 Q +(the command proceeds.)184 505.2 Q (This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) -.15 E F2(checkhash)144 298.8 Q F0 .737(If set,)184 310.8 R F2(bash)3.237 +.15 E F1(checkhash)144 517.2 Q F0 .737(If set,)184 529.2 R F1(bash)3.237 E F0 .736(checks that a command found in the hash table e)3.237 F .736 (xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 -322.8 Q(If a hashed command no longer e)5 E -(xists, a normal path search is performed.)-.15 E F2(checkjobs)144 334.8 -Q F0 .448(If set,)184 346.8 R F2(bash)2.948 E F0 .448 +541.2 Q(If a hashed command no longer e)5 E +(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 553.2 +Q F0 .448(If set,)184 565.2 R F1(bash)2.948 E F0 .448 (lists the status of an)2.948 F 2.949(ys)-.15 G .449 (topped and running jobs before e)-2.949 F .449(xiting an interacti)-.15 -F -.15(ve)-.25 G 2.662(shell. If)184 358.8 R(an)2.662 E 2.661(yj)-.15 G +F -.15(ve)-.25 G 2.662(shell. If)184 577.2 R(an)2.662 E 2.661(yj)-.15 G .161(obs are running, this causes the e)-2.661 F .161 -(xit to be deferred until a second e)-.15 F .161(xit is at-)-.15 F 1.472 -(tempted without an interv)184 370.8 R 1.473(ening command \(see)-.15 F -/F3 9/Times-Bold@0 SF 1.473(JOB CONTR)3.973 F(OL)-.27 E F0(abo)3.723 E --.15(ve)-.15 G 3.973(\). The).15 F 1.473(shell al-)3.973 F -.1(wa)184 -382.8 S(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G -(obs are stopped.)-2.5 E F2(checkwinsize)144 394.8 Q F0 1.09(If set,)184 -406.8 R F2(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G +(xit to be deferred until a second e)-.15 F .161(xit is at-)-.15 F 1.091 +(tempted without an interv)184 589.2 R 1.091(ening command \(see)-.15 F +/F3 9/Times-Bold@0 SF 1.091(JOB CONTR)3.591 F(OL)-.27 E F0(in)3.341 E F2 +(bash\(1\))3.591 E F0 3.591(\). The)B(shell)3.591 E(al)184 601.2 Q -.1 +(wa)-.1 G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G +(obs are stopped.)-2.5 E F1(checkwinsize)144 613.2 Q F0 1.09(If set,)184 +625.2 R F1(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09 -(uiltin\) command and, if)-.2 F(necessary)184 418.8 Q 3.35(,u)-.65 G .85 +(uiltin\) command and, if)-.2 F(necessary)184 637.2 Q 3.35(,u)-.65 G .85 (pdates the v)-3.35 F .85(alues of)-.25 F F3(LINES)3.35 E F0(and)3.1 E F3(COLUMNS)3.35 E/F4 9/Times-Roman@0 SF(.)A F0 .85 -(This option is enabled by de-)5.35 F -.1(fa)184 430.8 S(ult.).1 E F2 -(cmdhist)144 442.8 Q F0 .173(If set,)184 442.8 R F2(bash)2.673 E F0 .173 +(This option is enabled by de-)5.35 F -.1(fa)184 649.2 S(ult.).1 E F1 +(cmdhist)144 661.2 Q F0 .173(If set,)184 661.2 R F1(bash)2.673 E F0 .173 (attempts to sa)2.673 F .473 -.15(ve a)-.2 H .172 (ll lines of a multiple-line command in the same history en-).15 F(try) -184 454.8 Q 5.596(.T)-.65 G .597(his allo)-5.596 F .597 +184 673.2 Q 5.596(.T)-.65 G .597(his allo)-5.596 F .597 (ws easy re-editing of multi-line commands.)-.25 F .597 -(This option is enabled by de-)5.597 F -.1(fa)184 466.8 S 1.288(ult, b) -.1 F 1.288(ut only has an ef)-.2 F 1.288 -(fect if command history is enabled, as described abo)-.25 F 1.587 -.15 -(ve u)-.15 H(nder).15 E F3(HIST)184 478.8 Q(OR)-.162 E(Y)-.315 E F4(.)A -F2(compat31)144 490.8 Q(compat32)144 502.8 Q(compat40)144 514.8 Q -(compat41)144 526.8 Q(compat42)144 538.8 Q(compat43)144 550.8 Q -(compat44)144 562.8 Q F0 .889(These control aspects of the shell')184 -574.8 R 3.389(sc)-.55 G .889(ompatibility mode \(see)-3.389 F F3 .889 -(SHELL COMP)3.389 F -.855(AT)-.666 G(IBILITY).855 E(MODE)184 586.8 Q F0 -(belo)2.25 E(w\).)-.25 E F2(complete_fullquote)144 603.6 Q F0 .654 -(If set,)184 615.6 R F2(bash)3.153 E F0 .653(quotes all shell metachara\ -cters in \214lenames and directory names when per)3.153 F(-)-.2 E 1.524 -(forming completion.)184 627.6 R 1.524(If not set,)6.524 F F2(bash)4.024 -E F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524 +(This option is enabled by de-)5.597 F -.1(fa)184 685.2 S .052(ult, b).1 +F .052(ut only has an ef)-.2 F .052 +(fect if command history is enabled, as described in)-.25 F F2 +(bash\(1\))2.552 E F0(under)2.552 E F3(HIST)184 697.2 Q(OR)-.162 E(Y) +-.315 E F4(.)A F0(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G +(mber 22).15 E(18)185.545 E 0 Cg EP +%%Page: 19 19 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(compat31)144 84 Q +(compat32)144 96 Q(compat40)144 108 Q(compat41)144 120 Q(compat42)144 +132 Q(compat43)144 144 Q(compat44)144 156 Q(compat50)144 168 Q F0 .889 +(These control aspects of the shell')184 180 R 3.389(sc)-.55 G .889 +(ompatibility mode \(see)-3.389 F/F2 9/Times-Bold@0 SF .889(SHELL COMP) +3.389 F -.855(AT)-.666 G(IBILITY).855 E(MODE)184 192 Q F0(in)2.25 E/F3 +10/Times-Italic@0 SF(bash\(1\))2.5 E F0(\).)A F1(complete_fullquote)144 +208.8 Q F0 .654(If set,)184 220.8 R F1(bash)3.153 E F0 .653(quotes all \ +shell metacharacters in \214lenames and directory names when per)3.153 F +(-)-.2 E 1.524(forming completion.)184 232.8 R 1.524(If not set,)6.524 F +F1(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524 (etacharacters such as the dollar sign)-4.024 F 2.667(from the set of c\ haracters that will be quoted in completed \214lenames when these)184 -639.6 R .028(metacharacters appear in shell v)184 651.6 R .028 +244.8 R .028(metacharacters appear in shell v)184 256.8 R .028 (ariable references in w)-.25 F .029(ords to be completed.)-.1 F .029 -(This means)5.029 F 1.073(that dollar signs in v)184 663.6 R 1.073 +(This means)5.029 F 1.073(that dollar signs in v)184 268.8 R 1.073 (ariable names that e)-.25 F 1.073 (xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25 -(ev e)184 675.6 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 +(ev e)184 280.8 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 (ollar signs appearing in \214lenames will not be quoted, either).15 F 6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59 (only when bash is using backslashes to quote completed \214lenames.)184 -687.6 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 699.6 Q +292.8 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 304.8 Q (ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E -(ersions through 4.2.)-.15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E -(18)198.725 E 0 Cg EP -%%Page: 19 19 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(dir)144 84 Q(expand) --.18 E F0 .486(If set,)184 96 R F1(bash)2.986 E F0 .486 +(ersions through 4.2.)-.15 E F1(dir)144 321.6 Q(expand)-.18 E F0 .486 +(If set,)184 333.6 R F1(bash)2.986 E F0 .486 (replaces directory names with the results of w)2.986 F .486(ord e)-.1 F .487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184 -108 R .179(This changes the contents of the readline editing b)5.18 F +345.6 R .179(This changes the contents of the readline editing b)5.18 F (uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,) -184 120 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G -(hat the user typed.)-2.5 E F1(dirspell)144 136.8 Q F0 .858(If set,)184 -136.8 R F1(bash)3.358 E F0 .858 +184 357.6 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G +(hat the user typed.)-2.5 E F1(dirspell)144 374.4 Q F0 .858(If set,)184 +374.4 R F1(bash)3.358 E F0 .858 (attempts spelling correction on directory names during w)3.358 F .859 (ord completion if)-.1 F -(the directory name initially supplied does not e)184 148.8 Q(xist.)-.15 -E F1(dotglob)144 165.6 Q F0 .165(If set,)184 165.6 R F1(bash)2.665 E F0 +(the directory name initially supplied does not e)184 386.4 Q(xist.)-.15 +E F1(dotglob)144 403.2 Q F0 .165(If set,)184 403.2 R F1(bash)2.665 E F0 .165(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665 ('i)-.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F -(xpansion.)-.15 E(The \214lenames)184 177.6 Q F1 -.63(``)2.5 G -.55(.') +(xpansion.)-.15 E(The \214lenames)184 415.2 Q F1 -.63(``)2.5 G -.55(.') .63 G(')-.08 E F0(and)5 E F1 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0 (must al)5.63 E -.1(wa)-.1 G(ys be matched e).1 E(xplicitly)-.15 E 2.5 (,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F1(dotglob)2.5 E F0 -(is set.)2.5 E F1(execfail)144 194.4 Q F0 .516(If set, a non-interacti) -184 194.4 R .816 -.15(ve s)-.25 H .516(hell will not e).15 F .516 +(is set.)2.5 E F1(execfail)144 432 Q F0 .516(If set, a non-interacti)184 +432 R .816 -.15(ve s)-.25 H .516(hell will not e).15 F .516 (xit if it cannot e)-.15 F -.15(xe)-.15 G .517 (cute the \214le speci\214ed as an ar).15 F(-)-.2 E(gument to the)184 -206.4 Q 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 223.2 Q F0 .717 -(If set, aliases are e)184 235.2 R .717(xpanded as described abo)-.15 F -1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E -/F3 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F -(by def)184 247.2 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(extdeb)144 264 Q(ug)-.2 E F0 .17(If set at shell in)184 276 R --.2(vo)-.4 G .17(cation, or in a shell startup \214le, arrange to e).2 F +444 Q 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 460.8 Q F0 .743 +(If set, aliases are e)184 472.8 R .743(xpanded as described in)-.15 F +F3(bash\(1\))3.243 E F0(under)3.243 E F2(ALIASES)3.243 E/F4 9 +/Times-Roman@0 SF(.)A F0 .742(This option is en-)5.243 F(abled by def) +184 484.8 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1 +(extdeb)144 501.6 Q(ug)-.2 E F0 .17(If set at shell in)184 513.6 R -.2 +(vo)-.4 G .17(cation, or in a shell startup \214le, arrange to e).2 F -.15(xe)-.15 G .17(cute the deb).15 F .17(ugger pro\214le)-.2 F 1.082 -(before the shell starts, identical to the)184 288 R F13.582 -E(ugger)-.2 E F0 3.581(option. If)3.581 F 1.081(set after in)3.581 F -.2 -(vo)-.4 G 1.081(cation, be-).2 F(ha)184 300 Q +(before the shell starts, identical to the)184 525.6 R F1 +3.582 E(ugger)-.2 E F0 3.581(option. If)3.581 F 1.081(set after in)3.581 +F -.2(vo)-.4 G 1.081(cation, be-).2 F(ha)184 537.6 Q (vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184 -316.8 Q F0(The)220 316.8 Q F14.25 E F0 1.75(option to the)4.25 F +554.4 Q F0(The)220 554.4 Q F14.25 E F0 1.75(option to the)4.25 F F1(declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 G 1.751 (iltin displays the source \214le name and line).2 F -(number corresponding to each function name supplied as an ar)220 328.8 -Q(gument.)-.18 E F1(2.)184 345.6 Q F0 1.667(If the command run by the) -220 345.6 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v) +(number corresponding to each function name supplied as an ar)220 566.4 +Q(gument.)-.18 E F1(2.)184 583.2 Q F0 1.667(If the command run by the) +220 583.2 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v) 4.167 F 1.667(alue, the ne)-.25 F(xt)-.15 E -(command is skipped and not e)220 357.6 Q -.15(xe)-.15 G(cuted.).15 E F1 -(3.)184 374.4 Q F0 .84(If the command run by the)220 374.4 R F1(DEB)3.34 -E(UG)-.1 E F0 .841(trap returns a v)3.341 F .841 -(alue of 2, and the shell is)-.25 F -.15(exe)220 386.4 S .488 +(command is skipped and not e)220 595.2 Q -.15(xe)-.15 G(cuted.).15 E F1 +(3.)184 612 Q F0 .84(If the command run by the)220 612 R F1(DEB)3.34 E +(UG)-.1 E F0 .841(trap returns a v)3.341 F .841 +(alue of 2, and the shell is)-.25 F -.15(exe)220 624 S .488 (cuting in a subroutine \(a shell function or a shell script e).15 F -.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1 -(sour)220 398.4 Q(ce)-.18 E F0 -.2(bu)2.5 G +(sour)220 636 Q(ce)-.18 E F0 -.2(bu)2.5 G (iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E -(n)-.15 E F0(.)A F1(4.)184 415.2 Q F2 -.27(BA)220 415.2 S(SH_ARGC).27 E +(n)-.15 E F0(.)A F1(4.)184 652.8 Q F2 -.27(BA)220 652.8 S(SH_ARGC).27 E F0(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904 -(are updated as described in their descriptions)3.154 F(abo)220 427.2 Q --.15(ve)-.15 G(.).15 E F1(5.)184 444 Q F0 1.637(Function tracing is ena\ -bled: command substitution, shell functions, and sub-)220 444 R -(shells in)220 456 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 -(\()2.5 E/F4 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0 -(inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0 -(traps.)2.5 E F1(6.)184 472.8 Q F0 1.082(Error tracing is enabled: comm\ -and substitution, shell functions, and subshells)220 472.8 R(in)220 -484.8 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F4 -(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.) -2.5 E F1(extglob)144 501.6 Q F0 .4(If set, the e)184 501.6 R .4 -(xtended pattern matching features described abo)-.15 F .7 -.15(ve u) --.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 513.6 Q -F0(are enabled.)2.5 E F1(extquote)144 530.4 Q F0 .86(If set,)184 542.4 R -F1($)3.36 E F0<08>A F4(string)A F0 3.36<0861>C(nd)-3.36 E F1($)3.36 E F0 -(")A F4(string)A F0 3.36("q)C .86(uoting is performed within)-3.36 F F1 -(${)3.36 E F4(par)A(ameter)-.15 E F1(})A F0 -.15(ex)3.36 G .86 -(pansions en-).15 F(closed in double quotes.)184 554.4 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 571.2 Q -F0 .243(If set, patterns which f)184 571.2 R .243 -(ail to match \214lenames during pathname e)-.1 F .243 -(xpansion result in an e)-.15 F(x-)-.15 E(pansion error)184 583.2 Q(.) --.55 E F1 -.25(fo)144 600 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.936(If set, the suf)184 612 R<8c78>-.25 E .936(es speci\214ed by the) --.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w) --.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 624 R .32 -(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32 -(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947 -(pletions. See)184 636 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 -(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2 -(FIGNORE)2.948 E F3(.)A F0 .448(This option is)4.948 F(enabled by def) -184 648 Q(ault.)-.1 E F1(globasciiranges)144 664.8 Q F0 2.519 -(If set, range e)184 676.8 R 2.519 -(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518 -(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E -(Matching)184 688.8 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) --3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 -(nt)-3.214 G .714(he traditional C locale when performing comparisons.) --3.214 F 1.02(That is, the current locale')184 700.8 R 3.52(sc)-.55 G -1.02(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F -F1(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 712.8 R F1 -(A)3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper) --3.457 F .957(-case and lo)-.2 F(wer)-.25 E .957 -(-case ASCII characters will collate)-.2 F(together)184 724.8 Q(.)-.55 E -(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(19)198.725 E 0 Cg EP +(are updated as described in their descriptions)3.154 F(in)220 664.8 Q +F3(bash\(1\))2.5 E F0(\).)A F1(5.)184 681.6 Q F0 1.637(Function tracing\ + is enabled: command substitution, shell functions, and sub-)220 681.6 R +(shells in)220 693.6 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(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 710.4 +Q F0 1.082(Error tracing is enabled: command substitution, shell functi\ +ons, and subshells)220 710.4 R(in)220 722.4 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(GNU Bash 5.2)72 768 Q +(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(19)185.545 E 0 Cg EP %%Page: 20 20 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(globstar)144 84 Q F0 -.519(If set, the pattern)184 84 R F1(**)3.019 E F0 .519 -(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518 -(xt will match all \214les and zero)-.15 F .431 -(or more directories and subdirectories.)184 96 R .431 -(If the pattern is follo)5.431 F .432(wed by a)-.25 F F1(/)2.932 E F0 -2.932(,o)C .432(nly directories)-2.932 F(and subdirectories match.)184 -108 Q F1(gnu_errfmt)144 124.8 Q F0(If set, shell error messages are wri\ -tten in the standard GNU error message format.)184 136.8 Q F1 -(histappend)144 153.6 Q F0 .676 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(extglob)144 84 Q F0 +.273(If set, the e)184 84 R .273 +(xtended pattern matching features described in)-.15 F/F2 10 +/Times-Italic@0 SF(bash\(1\))2.772 E F0(under)2.772 E F1 -.1(Pa)2.772 G +.272(thname Ex-).1 F(pansion)184 96 Q F0(are enabled.)2.5 E F1(extquote) +144 112.8 Q F0 .86(If set,)184 124.8 R F1($)3.36 E F0<08>A F2(string)A +F0 3.36<0861>C(nd)-3.36 E F1($)3.36 E F0(")A F2(string)A F0 3.36("q)C +.86(uoting is performed within)-3.36 F F1(${)3.36 E F2(par)A(ameter)-.15 +E F1(})A F0 -.15(ex)3.36 G .86(pansions en-).15 F +(closed in double quotes.)184 136.8 Q(This option is enabled by def)5 E +(ault.)-.1 E F1(failglob)144 153.6 Q F0 .243(If set, patterns which f) +184 153.6 R .243(ail to match \214lenames during pathname e)-.1 F .243 +(xpansion result in an e)-.15 F(x-)-.15 E(pansion error)184 165.6 Q(.) +-.55 E F1 -.25(fo)144 182.4 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.936(If set, the suf)184 194.4 R<8c78>-.25 E .936(es speci\214ed by the) +-.15 F/F3 9/Times-Bold@0 SF(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936 +(ariable cause w)-.25 F .937(ords to be ignored)-.1 F .32 +(when performing w)184 206.4 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 3.293(pletions. See)184 218.4 R +F3 .793(SHELL V)3.293 F(ARIABLES)-1.215 E F0(in)3.043 E F2(bash\(1\)) +3.293 E F0 .794(for a description of)3.293 F F3(FIGNORE)3.294 E/F4 9 +/Times-Roman@0 SF(.)A F0 .794(This op-)5.294 F(tion is enabled by def) +184 230.4 Q(ault.)-.1 E F1(globasciiranges)144 247.2 Q F0 2.519 +(If set, range e)184 259.2 R 2.519 +(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518 +(xpressions \(see)-.15 F F3 -.09(Pa)5.018 G(tter).09 E(n)-.135 E +(Matching)184 271.2 Q F0(in)3.115 E F2(bash\(1\))3.365 E F0 3.365(\)b)C +(eha)-3.365 E 1.165 -.15(ve a)-.2 H 3.365(si).15 G 3.365(fi)-3.365 G +3.365(nt)-3.365 G .866(he traditional C locale when performing compar) +-3.365 F(-)-.2 E 2.668(isons. That)184 283.2 R .168 +(is, the current locale')2.668 F 2.668(sc)-.55 G .168 +(ollating sequence is not tak)-2.668 F .168(en into account, so)-.1 F F1 +(b)2.668 E F0(will)2.668 E .562(not collate between)184 295.2 R F1(A) +3.062 E F0(and)3.062 E F1(B)3.062 E F0 3.062(,a)C .562(nd upper)-3.062 F +.562(-case and lo)-.2 F(wer)-.25 E .563 +(-case ASCII characters will col-)-.2 F(late together)184 307.2 Q(.)-.55 +E F1(globskipdots)144 324 Q F0 .285(If set, pathname e)184 336 R .285 +(xpansion will ne)-.15 F -.15(ve)-.25 G 2.785(rm).15 G .285 +(atch the \214lenames)-2.785 F F1 -.63(``)2.785 G -.55(.').63 G(')-.08 E +F0(and)5.285 E F1 -.63(``)2.784 G(..).63 E -.63('')-.55 G F0 2.784(,e) +.63 G -.15(ve)-3.034 G 2.784(ni).15 G 2.784(ft)-2.784 G .284(he pat-) +-2.784 F(tern be)184 348 Q(gins with a)-.15 E F1 -.63(``)2.5 G -.55(.') +.63 G(')-.08 E F0 5(.T)C(his option is enabled by def)-5 E(ault.)-.1 E +F1(globstar)144 364.8 Q F0 .518(If set, the pattern)184 364.8 R F1(**) +3.018 E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F +.519(xt will match all \214les and zero)-.15 F .432 +(or more directories and subdirectories.)184 376.8 R .431 +(If the pattern is follo)5.432 F .431(wed by a)-.25 F F1(/)2.931 E F0 +2.931(,o)C .431(nly directories)-2.931 F(and subdirectories match.)184 +388.8 Q F1(gnu_errfmt)144 405.6 Q F0(If set, shell error messages are w\ +ritten in the standard GNU error message format.)184 417.6 Q F1 +(histappend)144 434.4 Q F0 .676 (If set, the history list is appended to the \214le named by the v)184 -165.6 R .676(alue of the)-.25 F/F2 9/Times-Bold@0 SF(HISTFILE)3.176 E F0 --.25(va)2.926 G(ri-).25 E(able when the shell e)184 177.6 Q -(xits, rather than o)-.15 E -.15(ve)-.15 G(rwriting the \214le.).15 E F1 -(histr)144 194.4 Q(eedit)-.18 E F0 .575(If set, and)184 206.4 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 218.4 Q F1(histv)144 -235.2 Q(erify)-.1 E F0 .403(If set, and)184 247.2 R F1 -.18(re)2.903 G -(adline).18 E F0 .403 +446.4 R .676(alue of the)-.25 F F3(HISTFILE)3.177 E F0 -.25(va)2.927 G +(ri-).25 E(able when the shell e)184 458.4 Q(xits, rather than o)-.15 E +-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 475.2 Q(eedit) +-.18 E F0 .576(If set, and)184 487.2 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 499.2 Q F1(histv)144 516 Q(erify)-.1 E F0 .402 +(If set, and)184 528 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 259.2 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 271.2 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 288 Q F0 1.182(If set, and)184 300 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 -312 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 324 Q -.15(ve)-.15 G 2.5(\). This).15 F -(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 340.8 Q F0 -(If set,)184 352.8 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 -(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e) -.15 E(xits.)-.15 E F1(inherit_err)144 369.6 Q(exit)-.18 E F0 .22 -(If set, command substitution inherits the v)184 381.6 R .219 -(alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .219 -(option, instead of unsetting)2.719 F(it in the subshell en)184 393.6 Q -2.5(vironment. This)-.4 F(option is enabled when)2.5 E/F3 10 -/Times-Italic@0 SF(posix mode)2.5 E F0(is enabled.)2.5 E F1(interacti) -144 410.4 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 422.4 R -2.83(waw)-.25 G .33(ord be)-2.93 F .33(ginning with)-.15 F F1(#)2.83 E -F0 .33(to cause that w)2.83 F .33(ord and all remaining characters on) --.1 F .967(that line to be ignored in an interacti)184 434.4 R 1.267 --.15(ve s)-.25 H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 -E -.15(ve)-.15 G 3.467(\). This).15 F .967(option is)3.467 F -(enabled by def)184 446.4 Q(ault.)-.1 E F1(lastpipe)144 463.2 Q F0 .066 -(If set, and job control is not acti)184 463.2 R -.15(ve)-.25 G 2.566 +2.903 F .662(passed to the shell parser)184 540 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 552 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 568.8 Q F0 1.181(If set, and)184 580.8 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 .503(when a w) +184 592.8 R .503(ord containing a)-.1 F F1(@)3.003 E F0 .503 +(is being completed \(see)3.003 F F1(Completing)3.003 E F0(under)3.003 E +F3(READLINE)3.003 E F0(in)2.752 E F2(bash\(1\))184 604.8 Q F0 2.5 +(\). This)B(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 621.6 Q +F0(If set,)184 633.6 Q F1(bash)2.5 E F0(will send)2.5 E F3(SIGHUP)2.5 E +F0(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H +(ogin shell e).15 E(xits.)-.15 E F1(inherit_err)144 650.4 Q(exit)-.18 E +F0 .219(If set, command substitution inherits the v)184 662.4 R .219 +(alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .22 +(option, instead of unsetting)2.719 F(it in the subshell en)184 674.4 Q +2.5(vironment. This)-.4 F(option is enabled when)2.5 E F2(posix mode)2.5 +E F0(is enabled.)2.5 E F1(interacti)144 691.2 Q -.1(ve)-.1 G(_comments) +.1 E F0 .33(If set, allo)184 703.2 R 2.83(waw)-.25 G .33(ord be)-2.93 F +.33(ginning with)-.15 F F1(#)2.83 E F0 .33(to cause that w)2.83 F .33 +(ord and all remaining characters on)-.1 F .39 +(that line to be ignored in an interacti)184 715.2 R .69 -.15(ve s)-.25 +H .39(hell \(see).15 F F3(COMMENTS)2.89 E F0(in)2.64 E F2(bash\(1\))2.89 +E F0 2.89(\). This)B(option)2.89 E(is enabled by def)184 727.2 Q(ault.) +-.1 E(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 +E(20)185.545 E 0 Cg EP +%%Page: 21 21 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(lastpipe)144 84 Q F0 +.066(If set, and job control is not acti)184 84 R -.15(ve)-.25 G 2.566 (,t).15 G .066(he shell runs the last command of a pipeline not e)-2.566 F -.15(xe)-.15 G(-).15 E -(cuted in the background in the current shell en)184 475.2 Q(vironment.) --.4 E F1(lithist)144 492 Q F0 .655(If set, and the)184 492 R F1(cmdhist) -3.155 E F0 .654(option is enabled, multi-line commands are sa)3.154 F --.15(ve)-.2 G 3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F -(with embedded ne)184 504 Q +(cuted in the background in the current shell en)184 96 Q(vironment.)-.4 +E F1(lithist)144 112.8 Q F0 .654(If set, and the)184 112.8 R F1(cmdhist) +3.154 E F0 .654(option is enabled, multi-line commands are sa)3.154 F +-.15(ve)-.2 G 3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)-3.155 F +(with embedded ne)184 124.8 Q (wlines rather than using semicolon separators where possible.)-.25 E F1 -(localv)144 520.8 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 532.8 R +(localv)144 141.6 Q(ar_inherit)-.1 E F0 .422(If set, local v)184 153.6 R .422(ariables inherit the v)-.25 F .422(alue and attrib)-.25 F .422 (utes of a v)-.2 F .422(ariable of the same name that)-.25 F -.15(ex)184 -544.8 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673 -(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .173 -(The nameref attrib)5.173 F .173(ute is not)-.2 F(inherited.)184 556.8 Q -F1(localv)144 573.6 Q(ar_unset)-.1 E F0 .328(If set, calling)184 585.6 R -F1(unset)2.828 E F0 .328(on local v)2.828 F .329(ariables in pre)-.25 F -.329(vious function scopes marks them so subse-)-.25 F .543(quent looku\ +165.6 S .173(ists at a pre).15 F .173(vious scope before an)-.25 F 2.673 +(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .174 +(The nameref attrib)5.174 F .174(ute is not)-.2 F(inherited.)184 177.6 Q +F1(localv)144 194.4 Q(ar_unset)-.1 E F0 .329(If set, calling)184 206.4 R +F1(unset)2.829 E F0 .329(on local v)2.829 F .329(ariables in pre)-.25 F +.328(vious function scopes marks them so subse-)-.25 F .543(quent looku\ ps \214nd them unset until that function returns. This is identical to \ -the beha)184 597.6 R(v-)-.2 E(ior of unsetting local v)184 609.6 Q -(ariables at the current function scope.)-.25 E F1(login_shell)144 626.4 -Q F0 .486 +the beha)184 218.4 R(v-)-.2 E(ior of unsetting local v)184 230.4 Q +(ariables at the current function scope.)-.25 E F1(login_shell)144 247.2 +Q F0 .693 (The shell sets this option if it is started as a login shell \(see)184 -638.4 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 650.4 S(lue may not be changed.) -.25 E F1(mailwar)144 667.2 Q(n)-.15 E F0 .815(If set, and a \214le that) -184 679.2 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 691.2 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +259.2 R/F2 9/Times-Bold@0 SF(INV)3.192 E(OCA)-.405 E(TION)-.855 E F0(in) +2.942 E/F3 10/Times-Italic@0 SF(bash\(1\))3.192 E F0(\).)A(The v)184 +271.2 Q(alue may not be changed.)-.25 E F1(mailwar)144 288 Q(n)-.15 E F0 +.814(If set, and a \214le that)184 300 R F1(bash)3.314 E F0 .815 +(is checking for mail has been accessed since the last time it)3.314 F +-.1(wa)184 312 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 5.0)72 768 Q(2004 Apr 20) -149.565 E(20)198.725 E 0 Cg EP -%%Page: 21 21 +-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 +328.8 Q F0 .325(If set, and)184 340.8 R F1 -.18(re)2.825 G(adline).18 E +F0 .325(is being used,)2.825 F F1(bash)2.824 E F0 .324 +(will not attempt to search the)2.824 F F2 -.666(PA)2.824 G(TH)-.189 E +F0 .324(for possible)2.574 F +(completions when completion is attempted on an empty line.)184 352.8 Q +F1(nocaseglob)144 369.6 Q F0 .436(If set,)184 381.6 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 393.6 S +(pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(in)2.5 E +F3(bash\(1\))2.5 E F0(\).)A F1(nocasematch)144 410.4 Q F0 1.194(If set,) +184 422.4 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 F .551(while e)184 434.4 R +-.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0(or)3.051 E F1([[)3.051 E +F0 .551(conditional commands, when performing pattern substitution)3.051 +F -.1(wo)184 446.4 S .623(rd e).1 F .623(xpansions, or when \214ltering\ + possible completions as part of programmable com-)-.15 F(pletion.)184 +458.4 Q F1(noexpand_translation)144 475.2 Q F0 1.117(If set,)184 487.2 R +F1(bash)3.617 E F0 1.117(encloses the translated results of $"..." quot\ +ing in single quotes instead of)3.617 F(double quotes.)184 499.2 Q +(If the string is not translated, this has no ef)5 E(fect.)-.25 E F1 +(nullglob)144 516 Q F0 .319(If set,)184 528 R F1(bash)2.819 E F0(allo) +2.819 E .319(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa) +2.818 G .318(thname Expansion).1 F F0(in)2.818 E F3(bash\(1\))2.818 E F0 +(\))A(to e)184 540 Q(xpand to a null string, rather than themselv)-.15 E +(es.)-.15 E F1(patsub_r)144 556.8 Q(eplacement)-.18 E F0 .105(If set,) +184 568.8 R F1(bash)2.605 E F0 -.15(ex)2.605 G .105 +(pands occurrences of).15 F F1(&)2.606 E F0 .106 +(in the replacement string of pattern substitution to)2.606 F .989 +(the te)184 580.8 R .988(xt matched by the pattern, as described under) +-.15 F F1 -.1(Pa)3.488 G .988(rameter Expansion).1 F F0(in)3.488 E F3 +(bash\(1\))3.488 E F0(.)A(This option is enabled by def)184 592.8 Q +(ault.)-.1 E F1(pr)144 609.6 Q(ogcomp)-.18 E F0 2.802 +(If set, the programmable completion f)184 621.6 R 2.802 +(acilities \(see)-.1 F F1(Pr)5.302 E 2.803(ogrammable Completion)-.18 F +F0(in)5.303 E F3(bash\(1\))184 633.6 Q F0 2.5(\)a)C(re enabled.)-2.5 E +(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 650.4 Q +(ogcomp_alias)-.18 E F0 2.124 +(If set, and programmable completion is enabled,)184 662.4 R F1(bash) +4.624 E F0 2.124(treats a command name that)4.624 F(doesn')184 674.4 Q +3.288(th)-.18 G -2.25 -.2(av e)-3.288 H(an)3.488 E 3.288(yc)-.15 G .789 +(ompletions as a possible alias and attempts alias e)-3.288 F .789 +(xpansion. If it has)-.15 F 1.473(an alias,)184 686.4 R F1(bash)3.973 E +F0 1.473(attempts programmable completion using the command w)3.973 F +1.473(ord resulting)-.1 F(from the e)184 698.4 Q(xpanded alias.)-.15 E +(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E +(21)185.545 E 0 Cg EP +%%Page: 22 22 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/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.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 124.8 Q F0 .437(If set,)184 136.8 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 148.8 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 165.6 Q F0 1.193(If set,)184 -177.6 R F1(bash)3.693 E F0 1.194 -(matches patterns in a case\255insensiti)3.693 F 1.494 -.15(ve f)-.25 H -1.194(ashion when performing matching).05 F .551(while e)184 189.6 R --.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0(or)3.051 E F1([[)3.051 E -F0 .551(conditional commands, when performing pattern substitution)3.051 -F -.1(wo)184 201.6 S .622(rd e).1 F .623(xpansions, or when \214ltering\ - possible completions as part of programmable com-)-.15 F(pletion.)184 -213.6 Q F1(nullglob)144 230.4 Q F0 .855(If set,)184 242.4 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 254.4 S -(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 -271.2 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 -283.2 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677 -(ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E -(are enabled.)184 295.2 Q(This option is enabled by def)5 E(ault.)-.1 E -F1(pr)144 312 Q(ogcomp_alias)-.18 E F0 2.124 -(If set, and programmable completion is enabled,)184 324 R F1(bash)4.624 -E F0 2.124(treats a command name that)4.624 F(doesn')184 336 Q 3.288(th) --.18 G -2.25 -.2(av e)-3.288 H(an)3.488 E 3.288(yc)-.15 G .789 -(ompletions as a possible alias and attempts alias e)-3.288 F .789 -(xpansion. If it has)-.15 F 1.473(an alias,)184 348 R F1(bash)3.973 E F0 -1.473(attempts programmable completion using the command w)3.973 F 1.473 -(ord resulting)-.1 F(from the e)184 360 Q(xpanded alias.)-.15 E F1(pr) -144 376.8 Q(omptv)-.18 E(ars)-.1 E F0 1.447 -(If set, prompt strings under)184 388.8 R 1.448(go parameter e)-.18 F -1.448(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 -400.8 S .171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G -.17(fter being e)-2.67 F .17(xpanded as described in)-.15 F F2(PR)2.67 E -(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G(.).15 E -(This option is enabled by def)184 412.8 Q(ault.)-.1 E F1 -.18(re)144 -429.6 S(stricted_shell).18 E F0 1.069 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(pr)144 84 Q(omptv) +-.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)184 96 R 1.448 +(go parameter e)-.18 F 1.448(xpansion, command substitution, arithmetic) +-.15 F -.15(ex)184 108 S 1.834(pansion, and quote remo).15 F -.25(va) +-.15 G 4.334(la).25 G 1.834(fter being e)-4.334 F 1.834 +(xpanded as described in)-.15 F/F2 9/Times-Bold@0 SF(PR)4.333 E(OMPTING) +-.27 E F0(in)4.083 E/F3 10/Times-Italic@0 SF(bash\(1\))184 120 Q F0 5 +(.T)C(his option is enabled by def)-5 E(ault.)-.1 E F1 -.18(re)144 136.8 +S(stricted_shell).18 E F0 .329 (The shell sets this option if it is started in restricted mode \(see) -184 441.6 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 453.6 Q 2.86 -(w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36 -(This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G -(-).15 E(cuted, allo)184 465.6 Q(wing the startup \214les to disco)-.25 -E -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 -E F1(shift_v)144 482.4 Q(erbose)-.1 E F0 .501(If set, the)184 494.4 R F1 +184 148.8 R F2 .329(RESTRICTED SHELL)2.829 F F0(in)2.58 E F3(bash\(1\)) +184 160.8 Q F0 2.731(\). The)B -.25(va)2.731 G .231 +(lue may not be changed.).25 F .23 +(This is not reset when the startup \214les are e)5.231 F(x-)-.15 E +(ecuted, allo)184 172.8 Q(wing the startup \214les to disco)-.25 E -.15 +(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E F1 +(shift_v)144 189.6 Q(erbose)-.1 E F0 .501(If set, the)184 201.6 R F1 (shift)3.001 E F0 -.2(bu)3.001 G .501 (iltin prints an error message when the shift count e).2 F .502 -(xceeds the number)-.15 F(of positional parameters.)184 506.4 Q F1(sour) -144 523.2 Q(cepath)-.18 E F0 .771(If set, the)184 535.2 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) +(xceeds the number)-.15 F(of positional parameters.)184 213.6 Q F1(sour) +144 230.4 Q(cepath)-.18 E F0 .771(If set, the)184 242.4 R F1(.)3.271 E +F0(\()3.271 E F1(sour)A(ce)-.18 E 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 547.2 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E -(ault.)-.1 E F1(xpg_echo)144 564 Q F0(If set, the)184 576 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 592.8 Q F0([)2.5 E F1A F0(])A -1.001(Suspend the e)144 604.8 R -.15(xe)-.15 G 1.001 -(cution of this shell until it recei).15 F -.15(ve)-.25 G 3.501(sa).15 G -F2(SIGCONT)A F0 3.502(signal. A)3.252 F 1.002(login shell cannot be) -3.502 F .023(suspended; the)144 616.8 R F12.523 E F0 .023 -(option can be used to o)2.523 F -.15(ve)-.15 G .022 -(rride this and force the suspension.).15 F .022(The return status is) -5.022 F 2.5(0u)144 628.8 S(nless the shell is a login shell and)-2.5 E -F12.5 E F0(is not supplied, or if job control is not enabled.)2.5 -E F1(test)108 645.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) -108 657.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .877 -(Return a status of 0 \(true\) or 1 \(f)144 657.6 R .878 -(alse\) depending on the e)-.1 F -.25(va)-.25 G .878 -(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 669.6 +184 254.4 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E +(ault.)-.1 E F1 -.1(va)144 271.2 S(rr).1 E(edir_close)-.18 E F0 .74(If \ +set, the shell automatically closes \214le descriptors assigned using t\ +he)184 283.2 R F3({varname})3.24 E F0(redi-)3.24 E .908 +(rection syntax \(see)184 295.2 R F2(REDIRECTION)3.408 E F0(in)3.157 E +F3(bash\(1\))3.407 E F0 3.407(\)i)C .907(nstead of lea)-3.407 F .907 +(ving them open when the)-.2 F(command completes.)184 307.2 Q F1 +(xpg_echo)144 324 Q F0(If set, the)184 336 Q F1(echo)2.5 E F0 -.2(bu)2.5 +G(iltin e).2 E(xpands backslash-escape sequences by def)-.15 E(ault.)-.1 +E F1(suspend)108 352.8 Q F0([)2.5 E F1A F0(])A .909(Suspend the e) +144 364.8 R -.15(xe)-.15 G .909(cution of this shell until it recei).15 +F -.15(ve)-.25 G 3.41(sa).15 G F2(SIGCONT)A F0 3.41(signal. A)3.16 F .91 +(login shell, or a shell)3.41 F .753 +(without job control enabled, cannot be suspended; the)144 376.8 R F1 +3.253 E F0 .752(option can be used to o)3.252 F -.15(ve)-.15 G +.752(rride this and).15 F .107(force the suspension.)144 388.8 R .107(T\ +he return status is 0 unless the shell is a login shell or job control \ +is not en-)5.107 F(abled and)144 400.8 Q F12.5 E F0 +(is not supplied.)2.5 E F1(test)108 417.6 Q F3 -.2(ex)2.5 G(pr).2 E F1 +([)108 429.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .878 +(Return a status of 0 \(true\) or 1 \(f)144 429.6 R .877 +(alse\) depending on the e)-.1 F -.25(va)-.25 G .877 +(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 441.6 S(pr).2 E F0 5.53(.E).73 G .53 (ach operator and operand must be a separate ar)-5.53 F 3.03 -(gument. Expressions)-.18 F .53(are composed of the)3.03 F .072 -(primaries described in the)144 681.6 R F1(bash)2.573 E F0 .073 -(manual page under)2.573 F F2(CONDITION)2.573 E .073(AL EXPRESSIONS)-.18 -F/F4 9/Times-Roman@0 SF(.)A F1(test)4.573 E F0 .073(does not)2.573 F -.695(accept an)144 693.6 R 3.195(yo)-.15 G .695 -(ptions, nor does it accept and ignore an ar)-3.195 F .694(gument of) --.18 F F13.194 E F0 .694(as signifying the end of op-)3.194 F -(tions.)144 705.6 Q 3.141(Expressions may be combined using the follo) -144 723.6 R 3.141(wing operators, listed in decreasing order of)-.25 F -(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(21)198.725 E 0 Cg EP -%%Page: 22 22 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E 4.114(precedence. The)144 84 R -.25(eva) -4.114 G 1.613(luation depends on the number of ar).25 F 1.613 -(guments; see belo)-.18 F 5.413 -.65(w. O)-.25 H 1.613(perator prece-) -.65 F(dence is used when there are \214v)144 96 Q 2.5(eo)-.15 G 2.5(rm) --2.5 G(ore ar)-2.5 E(guments.)-.18 E/F1 10/Times-Bold@0 SF(!)144 108 Q -/F2 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F0 -.35(Tr)180 108 S -(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E(alse.)-.1 E F1(\() -144 120 Q F2 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 .26(Returns the v)180 -120 R .26(alue of)-.25 F F2 -.2(ex)2.76 G(pr).2 E F0 5.26(.T)C .26 -(his may be used to o)-5.26 F -.15(ve)-.15 G .26 -(rride the normal precedence of opera-).15 F(tors.)180 132 Q F2 -.2(ex) -144 144 S(pr1).2 E F02.5 E F1(a)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35 -(Tr)180 156 S(ue if both).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E F2 --.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F2 -.2(ex)144 168 S(pr1).2 E -F02.5 E F1(o)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 180 S -(ue if either).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F2 -.2(ex)2.5 G -(pr2).2 E F0(is true.)2.52 E F1(test)144 196.8 Q F0(and)2.5 E F1([)2.5 E -F0 -.25(eva)2.5 G(luate conditional e).25 E +(gument. Expressions)-.18 F .53(are composed of the)3.03 F 1.232 +(primaries described in)144 453.6 R F3(bash\(1\))3.732 E F0(under)3.731 +E F2(CONDITION)3.731 E 1.231(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF +(.)A F1(test)5.731 E F0 1.231(does not accept an)3.731 F(y)-.15 E +(options, nor does it accept and ignore an ar)144 465.6 Q(gument of)-.18 +E F12.5 E F0(as signifying the end of options.)2.5 E .785 +(Expressions may be combined using the follo)144 483.6 R .786 +(wing operators, listed in decreasing order of prece-)-.25 F 3.412 +(dence. The)144 495.6 R -.25(eva)3.412 G .912 +(luation depends on the number of ar).25 F .911(guments; see belo)-.18 F +4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F +(used when there are \214v)144 507.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G +(ore ar)-2.5 E(guments.)-.18 E F1(!)144 519.6 Q F3 -.2(ex)2.5 G(pr).2 E +F0 -.35(Tr)180 519.6 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 +E(alse.)-.1 E F1(\()144 531.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 +.26(Returns the v)180 531.6 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2 +E F0 5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26 +(rride the normal precedence of opera-).15 F(tors.)180 543.6 Q F3 -.2 +(ex)144 555.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 +-.35(Tr)180 567.6 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 +E F3 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F3 -.2(ex)144 579.6 S +(pr1).2 E F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 +591.6 S(ue if either).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F3 -.2 +(ex)2.5 G(pr2).2 E F0(is true.)2.52 E F1(test)144 608.4 Q F0(and)2.5 E +F1([)2.5 E F0 -.25(eva)2.5 G(luate conditional e).25 E (xpressions using a set of rules based on the number of ar)-.15 E -(guments.)-.18 E 2.5(0a)144 214.8 S -.18(rg)-2.5 G(uments).18 E(The e) -180 226.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 238.8 S -.18 -(rg)-2.5 G(ument).18 E(The e)180 250.8 Q +(guments.)-.18 E 2.5(0a)144 626.4 S -.18(rg)-2.5 G(uments).18 E(The e) +180 638.4 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 650.4 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 662.4 Q (xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 262.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) -180 274.8 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 +E 2.5(2a)144 674.4 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 686.4 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 F .37(xpression is true if and only if the second ar)-.15 F .37 -(gument is null.)-.18 F .379(If the \214rst ar)180 286.8 R .38 -(gument is one of the unary conditional operators listed abo)-.18 F .68 --.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(CONDI-)2.88 E(TION)180 -298.8 Q .553(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(,)A F0 .552 -(the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F -.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 310.8 Q +(gument is null.)-.18 F 1.682(If the \214rst ar)180 698.4 R 1.683 +(gument is one of the unary conditional operators listed in)-.18 F F3 +(bash\(1\))4.183 E F0(under)4.183 E F2(CONDITION)180 710.4 Q .122 +(AL EXPRESSIONS)-.18 F F4(,)A F0 .122(the e)2.372 F .122 +(xpression is true if the unary test is true.)-.15 F .121 +(If the \214rst)5.121 F(ar)180 722.4 Q(gument is not a v)-.18 E (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 322.8 S -.18(rg)-2.5 G -(uments).18 E .236(The follo)180 334.8 R .236 -(wing conditions are applied in the order listed.)-.25 F .236 -(If the second ar)5.236 F .236(gument is one of)-.18 F .855 -(the binary conditional operators listed abo)180 346.8 R 1.155 -.15 -(ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F -F4(,)A F0(the)3.104 E .578(result of the e)180 358.8 R .578(xpression i\ -s the result of the binary test using the \214rst and third ar)-.15 F -(guments)-.18 E 1.333(as operands.)180 370.8 R(The)6.333 E F13.833 -E F0(and)3.833 E F13.832 E F0 1.332 -(operators are considered binary operators when there are)3.832 F .558 -(three ar)180 382.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 -F .558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F -.558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F -(o-ar)-.1 E(gument)-.18 E .521(test using the second and third ar)180 -394.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52 -(gument is e)-.18 F(xactly)-.15 E F1(\()3.02 E F0 .52(and the third)3.02 -F(ar)180 406.8 Q .485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 -2.985(,t)C .485(he result is the one-ar)-2.985 F .485 -(gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E -(wise, the e)180 418.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 -430.8 S -.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 442.8 R -.385(gument is)-.18 F F1(!)2.885 E F0 2.885(,t)C .385 -(he result is the ne)-2.885 F -.05(ga)-.15 G .384(tion of the three-ar) -.05 F .384(gument e)-.18 F .384(xpression com-)-.15 F .284 -(posed of the remaining ar)180 454.8 R 2.784(guments. Otherwise,)-.18 F -.284(the e)2.784 F .284(xpression is parsed and e)-.15 F -.25(va)-.25 G -.285(luated ac-).25 F(cording to precedence using the rules listed abo) -180 466.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 478.8 S 2.5(rm)-2.5 G -(ore ar)-2.5 E(guments)-.18 E 1.635(The e)180 490.8 R 1.635 -(xpression is parsed and e)-.15 F -.25(va)-.25 G 1.635 -(luated according to precedence using the rules listed).25 F(abo)180 -502.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 520.8 Q F1(test)2.5 E -F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 E F1 -(>)2.5 E F0(operators sort le)2.5 E -(xicographically using ASCII ordering.)-.15 E F1(times)108 537.6 Q F0 -1.229(Print the accumulated user and system times for the shell and for\ - processes run from the shell.)144 537.6 R(The return status is 0.)144 -549.6 Q F1(trap)108 566.4 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E -F2(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])2.5 E .683(The command) -144 578.4 R F2(ar)3.513 E(g)-.37 E F0 .683(is to be read and e)3.403 F --.15(xe)-.15 G .682(cuted when the shell recei).15 F -.15(ve)-.25 G -3.182(ss).15 G(ignal\(s\))-3.182 E F2(sigspec)3.522 E F0 5.682(.I).31 G -(f)-5.682 E F2(ar)3.512 E(g)-.37 E F0(is)3.402 E .608 -(absent \(and there is a single)144 590.4 R F2(sigspec)3.108 E F0 3.108 -(\)o)C(r)-3.108 E F13.108 E F0 3.108(,e)C .608 -(ach speci\214ed signal is reset to its original disposition)-3.108 F -.659(\(the v)144 602.4 R .659(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658 -(is the null string the signal speci\214ed by each)3.378 F F2(sigspec) -144.34 614.4 Q F0 .58(is ignored by the shell and by the commands it in) -3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E -F0 .581(is not present and)3.301 F F13.081 E F0(has)3.081 E 1.215 -(been supplied, then the trap commands associated with each)144 626.4 R -F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 -F(gu-)-.18 E .86(ments are supplied or if only)144 638.4 R F13.36 -E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86 -(prints the list of commands associated with each)3.36 F 2.83 -(signal. The)144 650.4 R F12.83 E F0 .33(option causes the shell \ -to print a list of signal names and their corresponding num-)2.83 F 4.31 -(bers. Each)144 662.4 R F2(sigspec)4.65 E F0 1.811 -(is either a signal name de\214ned in <)4.62 F F2(signal.h)A F0 1.811 -(>, or a signal number)B 6.811(.S)-.55 G(ignal)-6.811 E -(names are case insensiti)144 674.4 Q .3 -.15(ve a)-.25 H(nd the).15 E -F3(SIG)2.5 E F0(pre\214x is optional.)2.25 E .667(If a)144 692.4 R F2 -(sigspec)3.507 E F0(is)3.477 E F3(EXIT)3.167 E F0 .667 -(\(0\) the command)2.917 F F2(ar)3.496 E(g)-.37 E F0 .666(is e)3.386 F --.15(xe)-.15 G .666(cuted on e).15 F .666(xit from the shell.)-.15 F -.666(If a)5.666 F F2(sigspec)3.506 E F0(is)3.476 E F3(DE-)3.166 E -.09 -(BU)144 704.4 S(G).09 E F4(,)A F0 .483(the command)2.733 F F2(ar)3.313 E -(g)-.37 E F0 .483(is e)3.203 F -.15(xe)-.15 G .484(cuted before e).15 F --.15(ve)-.25 G(ry).15 E F2 .484(simple command)2.984 F F0(,)A F2(for) -2.984 E F0(command,)2.984 E F2(case)2.984 E F0(command,)2.984 E F2 -(select)144 716.4 Q F0 .563(command, e)3.063 F -.15(ve)-.25 G .563 -(ry arithmetic).15 F F2(for)3.063 E F0 .563 -(command, and before the \214rst command e)3.063 F -.15(xe)-.15 G .562 -(cutes in a shell).15 F .622(function \(see)144 728.4 R F3 .622 -(SHELL GRAMMAR)3.122 F F0(abo)2.872 E -.15(ve)-.15 G 3.122(\). Refer).15 -F .622(to the description of the)3.122 F F1(extdeb)3.122 E(ug)-.2 E F0 -.622(option to the)3.122 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E -(22)198.725 E 0 Cg EP +(xpression is f)-.15 E(alse.)-.1 E(GNU Bash 5.2)72 768 Q(2021 No)136.385 +E -.15(ve)-.15 G(mber 22).15 E(22)185.545 E 0 Cg EP %%Page: 23 23 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(shopt)144 84 Q F0 -.2 -(bu)2.996 G .496(iltin for details of its ef).2 F .496(fect on the)-.25 -F F1(DEB)2.996 E(UG)-.1 E F0 2.996(trap. If)2.996 F(a)2.996 E/F2 10 -/Times-Italic@0 SF(sigspec)3.336 E F0(is)3.306 E/F3 9/Times-Bold@0 SF -(RETURN)2.996 E/F4 9/Times-Roman@0 SF(,)A F0 .496(the command)2.746 F F2 -(ar)144.33 96 Q(g)-.37 E F0 .18(is e)2.9 F -.15(xe)-.15 G .18 -(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G .18 -(cuted with the).15 F F1(.)2.68 E F0(or)2.68 E F1(sour)2.68 E(ce)-.18 E -F0 -.2(bu)2.68 G .18(iltins \214nishes).2 F -.15(exe)144 108 S(cuting.) -.15 E .961(If a)144 126 R F2(sigspec)3.801 E F0(is)3.771 E F3(ERR)3.461 -E F4(,)A F0 .961(the command)3.211 F F2(ar)3.791 E(g)-.37 E F0 .961 -(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G 3.461 -(ra).15 G .96(pipeline \(which may consist of a)-.001 F .185(single sim\ -ple command\), a list, or a compound command returns a non\255zero e)144 -138 R .185(xit status, subject to)-.15 F .452(the follo)144 150 R .452 -(wing conditions.)-.25 F(The)5.452 E F3(ERR)2.952 E F0 .451 -(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .451 -(ailed command is part of the com-)-.1 F .387 -(mand list immediately follo)144 162 R .387(wing a)-.25 F F1(while)2.887 -E F0(or)2.887 E F1(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 -(ord, part of the test in an)-.1 F F2(if)2.898 E F0 .388 -(statement, part)4.848 F .778(of a command e)144 174 R -.15(xe)-.15 G -.778(cuted in a).15 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 .778 +E(UIL)-.1 E(TINS\(1\))-.92 E 2.5(3a)144 84 S -.18(rg)-2.5 G(uments).18 E +.236(The follo)180 96 R .236 +(wing conditions are applied in the order listed.)-.25 F .236 +(If the second ar)5.236 F .236(gument is one of)-.18 F .546 +(the binary conditional operators listed in)180 108 R/F1 10 +/Times-Italic@0 SF(bash\(1\))3.046 E F0(under)3.046 E/F2 9/Times-Bold@0 +SF(CONDITION)3.046 E .546(AL EXPRESSIONS)-.18 F/F3 9/Times-Roman@0 SF(,) +A F0 .887(the result of the e)180 120 R .888(xpression is the result of\ + the binary test using the \214rst and third ar)-.15 F(gu-)-.18 E .434 +(ments as operands.)180 132 R(The)5.434 E/F4 10/Times-Bold@0 SF +2.934 E F0(and)2.934 E F42.934 E F0 .434 +(operators are considered binary operators when there)2.934 F .645 +(are three ar)180 144 R 3.145(guments. If)-.18 F .645(the \214rst ar) +3.145 F .646(gument is)-.18 F F4(!)3.146 E F0 3.146(,t)C .646(he v) +-3.146 F .646(alue is the ne)-.25 F -.05(ga)-.15 G .646(tion of the tw) +.05 F(o-ar)-.1 E(gu-)-.18 E .452 +(ment test using the second and third ar)180 156 R 2.951(guments. If) +-.18 F .451(the \214rst ar)2.951 F .451(gument is e)-.18 F(xactly)-.15 E +F4(\()2.951 E F0 .451(and the)2.951 F 1.164(third ar)180 168 R 1.164 +(gument is e)-.18 F(xactly)-.15 E F4(\))3.664 E F0 3.664(,t)C 1.164 +(he result is the one-ar)-3.664 F 1.165(gument test of the second ar) +-.18 F(gument.)-.18 E(Otherwise, the e)180 180 Q(xpression is f)-.15 E +(alse.)-.1 E 2.5(4a)144 192 S -.18(rg)-2.5 G(uments).18 E .43(The follo) +180 204 R .43(wing conditions are applied in the order listed.)-.25 F +.429(If the \214rst ar)5.429 F .429(gument is)-.18 F F4(!)2.929 E F0 +2.929(,t)C .429(he re-)-2.929 F 1.314(sult is the ne)180 216 R -.05(ga) +-.15 G 1.314(tion of the three-ar).05 F 1.314(gument e)-.18 F 1.314 +(xpression composed of the remaining ar)-.15 F(gu-)-.18 E 2.745 +(ments. the)180 228 R(tw)2.745 E(o-ar)-.1 E .245 +(gument test using the second and third ar)-.18 F 2.744(guments. If)-.18 +F .244(the \214rst ar)2.744 F(gument)-.18 E .309(is e)180 240 R(xactly) +-.15 E F4(\()2.809 E F0 .309(and the fourth ar)2.809 F .309(gument is e) +-.18 F(xactly)-.15 E F4(\))2.809 E F0 2.809(,t)C .31 +(he result is the tw)-2.809 F(o-ar)-.1 E .31(gument test of the)-.18 F +.184(second and third ar)180 252 R 2.684(guments. Otherwise,)-.18 F .184 +(the e)2.684 F .183(xpression is parsed and e)-.15 F -.25(va)-.25 G .183 +(luated according).25 F(to precedence using the rules listed abo)180 264 +Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 276 S 2.5(rm)-2.5 G(ore ar)-2.5 E +(guments)-.18 E 1.635(The e)180 288 R 1.635(xpression is parsed and e) +-.15 F -.25(va)-.25 G 1.635 +(luated according to precedence using the rules listed).25 F(abo)180 300 +Q -.15(ve)-.15 G(.).15 E(When used with)144 318 Q F4(test)2.5 E F0(or) +2.5 E F4([)2.5 E F0 2.5(,t)C(he)-2.5 E F4(<)2.5 E F0(and)2.5 E F4(>)2.5 +E F0(operators sort le)2.5 E(xicographically using ASCII ordering.)-.15 +E F4(times)108 334.8 Q F0 1.229(Print the accumulated user and system t\ +imes for the shell and for processes run from the shell.)144 334.8 R +(The return status is 0.)144 346.8 Q F4(trap)108 363.6 Q F0([)2.5 E F4 +(\255lp)A F0 2.5(][)C([)-2.5 E F1(ar)A(g)-.37 E F0(])A F1(sigspec)2.5 E +F0(...])2.5 E .682(The command)144 375.6 R F1(ar)3.512 E(g)-.37 E F0 +.682(is to be read and e)3.402 F -.15(xe)-.15 G .682 +(cuted when the shell recei).15 F -.15(ve)-.25 G 3.183(ss).15 G +(ignal\(s\))-3.183 E F1(sigspec)3.523 E F0 5.683(.I).31 G(f)-5.683 E F1 +(ar)3.513 E(g)-.37 E F0(is)3.403 E .609(absent \(and there is a single) +144 387.6 R F1(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F43.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 399.6 R .658(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F1(ar)3.488 E(g)-.37 E F0 .659 +(is the null string the signal speci\214ed by each)3.378 F F1(sigspec) +144.34 411.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 F1(ar)3.41 E(g)-.37 E F0 .58 +(is not present and)3.3 F F43.08 E F0(has)3.08 E 1.214 +(been supplied, then the trap commands associated with each)144 423.6 R +F1(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215 +F(gu-)-.18 E .86(ments are supplied or if only)144 435.6 R F43.36 +E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F4(trap)3.36 E F0 .86 +(prints the list of commands associated with each)3.36 F 2.83 +(signal. The)144 447.6 R F42.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 459.6 R F1(sigspec)4.651 E F0 1.811 +(is either a signal name de\214ned in <)4.621 F F1(signal.h)A F0 1.81 +(>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E +(names are case insensiti)144 471.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 .666(If a)144 489.6 R F1 +(sigspec)3.506 E F0(is)3.476 E F2(EXIT)3.166 E F0 .666 +(\(0\) the command)2.916 F F1(ar)3.496 E(g)-.37 E F0 .666(is e)3.386 F +-.15(xe)-.15 G .666(cuted on e).15 F .667(xit from the shell.)-.15 F +.667(If a)5.667 F F1(sigspec)3.507 E F0(is)3.477 E F2(DE-)3.167 E -.09 +(BU)144 501.6 S(G).09 E F3(,)A F0 .484(the command)2.734 F F1(ar)3.314 E +(g)-.37 E F0 .484(is e)3.204 F -.15(xe)-.15 G .484(cuted before e).15 F +-.15(ve)-.25 G(ry).15 E F1 .483(simple command)2.984 F F0(,)A F1(for) +2.983 E F0(command,)2.983 E F1(case)2.983 E F0(command,)2.983 E F1 +(select)144 513.6 Q F0 .562(command, e)3.062 F -.15(ve)-.25 G .563 +(ry arithmetic).15 F F1(for)3.063 E F0 .563 +(command, and before the \214rst command e)3.063 F -.15(xe)-.15 G .563 +(cutes in a shell).15 F .442(function \(see)144 525.6 R F2 .442 +(SHELL GRAMMAR)2.942 F F0(in)2.692 E F1(bash\(1\))2.942 E F0 2.941 +(\). Refer)B .441(to the description of the)2.941 F F4(extdeb)2.941 E +(ug)-.2 E F0 .441(option to)2.941 F(the)144 537.6 Q F4(shopt)3.2 E F0 +-.2(bu)3.2 G .7(iltin for details of its ef).2 F .7(fect on the)-.25 F +F4(DEB)3.2 E(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec)3.54 E F0 +(is)3.51 E F2(RETURN)3.2 E F3(,)A F0 .701(the com-)2.951 F(mand)144 +549.6 Q F1(ar)3.474 E(g)-.37 E F0 .644(is e)3.364 F -.15(xe)-.15 G .643 +(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G +.643(cuted with the).15 F F4(.)3.143 E F0(or)3.143 E F4(sour)3.143 E(ce) +-.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 561.6 Q -.15(xe) +-.15 G(cuting.).15 E .96(If a)144 579.6 R F1(sigspec)3.8 E F0(is)3.77 E +F2(ERR)3.46 E F3(,)A F0 .96(the command)3.21 F F1(ar)3.791 E(g)-.37 E F0 +.961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G +3.461(rap).15 G .961(ipeline \(which may consist of a)-3.461 F .185(sin\ +gle simple command\), a list, or a compound command returns a non\255ze\ +ro e)144 591.6 R .184(xit status, subject to)-.15 F .451(the follo)144 +603.6 R .451(wing conditions.)-.25 F(The)5.451 E F2(ERR)2.951 E F0 .451 +(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .452 +(ailed command is part of the com-)-.1 F .388 +(mand list immediately follo)144 615.6 R .388(wing a)-.25 F F4(while) +2.888 E F0(or)2.888 E F4(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 +(ord, part of the test in an)-.1 F F1(if)2.897 E F0 .387 +(statement, part)4.847 F .777(of a command e)144 627.6 R -.15(xe)-.15 G +.778(cuted in a).15 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E F0 .778 (list e)3.278 F .778(xcept the command follo)-.15 F .778 -(wing the \214nal)-.25 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.277 E F0 -3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 186 R 1.28 -(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)-3.78 -F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F F1(!) -3.78 E F0(.)A(These are the same conditions obe)144 198 Q(yed by the) --.15 E F1(err)2.5 E(exit)-.18 E F0(\()2.5 E F1A F0 2.5(\)o)C -(ption.)-2.5 E .133 +(wing the \214nal)-.25 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E F0 +3.278(,a)C -.15(ny)-3.278 G 1.28(command in a pipeline b)144 639.6 R +1.28(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v) +-3.78 F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F +F4(!)3.78 E F0(.)A(These are the same conditions obe)144 651.6 Q +(yed by the)-.15 E F4(err)2.5 E(exit)-.18 E F0(\()2.5 E F4A F0 2.5 +(\)o)C(ption.)-2.5 E .132 (Signals ignored upon entry to the shell cannot be trapped or reset.)144 -216 R -.35(Tr)5.132 G .132(apped signals that are not be-).35 F .117 -(ing ignored are reset to their original v)144 228 R .117 +669.6 R -.35(Tr)5.133 G .133(apped signals that are not be-).35 F .117 +(ing ignored are reset to their original v)144 681.6 R .117 (alues in a subshell or subshell en)-.25 F .117 -(vironment when one is cre-)-.4 F 2.5(ated. The)144 240 R -(return status is f)2.5 E(alse if an)-.1 E(y)-.15 E F2(sigspec)2.84 E F0 -(is in)2.81 E -.25(va)-.4 G(lid; otherwise).25 E F1(trap)2.5 E F0 -(returns true.)2.5 E F1(type)108 256.8 Q F0([)2.5 E F1(\255aftpP)A F0(]) -A F2(name)2.5 E F0([)2.5 E F2(name)A F0(...])2.5 E -.4(Wi)144 268.8 S -.174(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F2 -(name)3.034 E F0 -.1(wo)2.854 G .173 -(uld be interpreted if used as a command name.).1 F .173(If the)5.173 F -F1144 280.8 Q F0 .715(option is used,)3.215 F F1(type)3.215 E F0 +(vironment when one is cre-)-.4 F 2.5(ated. The)144 693.6 R +(return status is f)2.5 E(alse if an)-.1 E(y)-.15 E F1(sigspec)2.84 E F0 +(is in)2.81 E -.25(va)-.4 G(lid; otherwise).25 E F4(trap)2.5 E F0 +(returns true.)2.5 E(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve) +-.15 G(mber 22).15 E(23)185.545 E 0 Cg EP +%%Page: 24 24 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(type)108 84 Q F0([) +2.5 E F1(\255aftpP)A F0(])A/F2 10/Times-Italic@0 SF(name)2.5 E F0([)2.5 +E F2(name)A F0(...])2.5 E -.4(Wi)144 96 S .173 +(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F2(name) +3.033 E F0 -.1(wo)2.853 G .174 +(uld be interpreted if used as a command name.).1 F .174(If the)5.174 F +F1144 108 Q F0 .715(option is used,)3.215 F F1(type)3.215 E F0 .715(prints a string which is one of)3.215 F F2(alias)3.545 E F0(,).27 E F2 -.1(ke)3.215 G(ywor)-.2 E(d)-.37 E F0(,).77 E F2(function)5.185 E F0 (,).24 E F2 -.2(bu)3.215 G(iltin).2 E F0 3.215(,o).24 G(r)-3.215 E F2 -(\214le)5.125 E F0(if)3.395 E F2(name)144.36 292.8 Q F0 .087 -(is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087 -(ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15 -(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F2 -(name)2.946 E F0 .086(is not)2.766 F .118 -(found, then nothing is printed, and an e)144 304.8 R .118 -(xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F -F12.619 E F0 .119(option is used,)2.619 F F1(type)2.619 E F0 .855 -(either returns the name of the disk \214le that w)144 316.8 R .855 +(\214le)5.125 E F0(if)3.395 E F2(name)144.36 120 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 F2 +(name)2.947 E F0 .087(is not)2.767 F .119 +(found, then nothing is printed, and an e)144 132 R .118 +(xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F +F12.618 E F0 .118(option is used,)2.618 F F1(type)2.618 E F0 .855 +(either returns the name of the disk \214le that w)144 144 R .855 (ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F2(name)3.715 E F0 -.855(were speci\214ed as a com-)3.535 F .528(mand name, or nothing if) -144 328.8 R/F5 10/Courier@0 SF .528(type -t name)3.028 F F0 -.1(wo)3.028 -G .528(uld not return).1 F F2(\214le)4.938 E F0 5.528(.T).18 G(he)-5.528 -E F13.028 E F0 .529(option forces a)3.028 F F3 -.666(PA)3.029 G -(TH)-.189 E F0 .007(search for each)144 340.8 R F2(name)2.507 E F0 2.507 -(,e)C -.15(ve)-2.757 G 2.507(ni).15 G(f)-2.507 E F5 .007(type -t name) -2.507 F F0 -.1(wo)2.507 G .007(uld not return).1 F F2(\214le)4.417 E F0 -5.006(.I).18 G 2.506(fac)-5.006 G .006(ommand is hashed,)-2.506 F F1 -2.506 E F0(and)144 352.8 Q F13.23 E F0 .73 -(print the hashed v)3.23 F .731 +.855(were speci\214ed as a com-)3.535 F .529(mand name, or nothing if) +144 156 R/F3 10/Courier@0 SF .528(type -t name)3.028 F F0 -.1(wo)3.028 G +.528(uld not return).1 F F2(\214le)4.938 E F0 5.528(.T).18 G(he)-5.528 E +F13.028 E F0 .528(option forces a)3.028 F/F4 9/Times-Bold@0 SF +-.666(PA)3.028 G(TH)-.189 E F0 .006(search for each)144 168 R F2(name) +2.506 E F0 2.506(,e)C -.15(ve)-2.756 G 2.506(ni).15 G(f)-2.506 E F3 .007 +(type -t name)2.506 F F0 -.1(wo)2.507 G .007(uld not return).1 F F2 +(\214le)4.417 E F0 5.007(.I).18 G 2.507(fac)-5.007 G .007 +(ommand is hashed,)-2.507 F F12.507 E F0(and)144 180 Q F1 +3.231 E F0 .731(print the hashed v)3.231 F .73 (alue, which is not necessarily the \214le that appears \214rst in)-.25 -F F3 -.666(PA)3.231 G(TH)-.189 E F4(.)A F0 .731(If the)5.231 F F1 -144 364.8 Q F0 .824(option is used,)3.324 F F1(type)3.324 E F0 .824 -(prints all of the places that contain an e)3.324 F -.15(xe)-.15 G .823 -(cutable named).15 F F2(name)3.683 E F0 5.823(.T).18 G .823(his in-) --5.823 F 1.176(cludes aliases and functions, if and only if the)144 -376.8 R F13.676 E F0 1.176(option is not also used.)3.676 F 1.177 +F F4 -.666(PA)3.23 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .73(If the) +5.23 F F1144 192 Q F0 .823(option is used,)3.323 F F1(type)3.323 E +F0 .824(prints all of the places that contain an e)3.323 F -.15(xe)-.15 +G .824(cutable named).15 F F2(name)3.684 E F0 5.824(.T).18 G .824 +(his in-)-5.824 F 1.176 +(cludes aliases and functions, if and only if the)144 204 R F1 +3.676 E F0 1.176(option is not also used.)3.676 F 1.176 (The table of hashed)6.176 F 1.223(commands is not consulted when using) -144 388.8 R F13.723 E F0 6.223(.T)C(he)-6.223 E F13.723 E F0 -1.223(option suppresses shell function lookup, as)3.723 F .325(with the) -144 400.8 R F1(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F1(type) -5.325 E F0 .325(returns true if all of the ar)2.825 F .326 -(guments are found, f)-.18 F .326(alse if an)-.1 F 2.826(ya)-.15 G .326 -(re not)-2.826 F(found.)144 412.8 Q F1(ulimit)108 429.6 Q F0([)2.5 E F1 -(\255HS)A F0(])A F12.5 E(ulimit)108 441.6 Q F0([)2.5 E F1(\255HS)A +144 216 R F13.723 E F0 6.223(.T)C(he)-6.223 E F13.723 E F0 +1.223(option suppresses shell function lookup, as)3.723 F .326(with the) +144 228 R F1(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F1(type)5.326 +E F0 .326(returns true if all of the ar)2.826 F .325 +(guments are found, f)-.18 F .325(alse if an)-.1 F 2.825(ya)-.15 G .325 +(re not)-2.825 F(found.)144 240 Q F1(ulimit)108 256.8 Q F0([)2.5 E F1 +(\255HS)A F0(])A F12.5 E(ulimit)108 268.8 Q F0([)2.5 E F1(\255HS)A F0 2.5(][)C F1(\255bcde\214klmnpqrstuvxPR)-2.5 E(T)-.4 E F0([)2.5 E F2 -(limit)A F0(]])A(Pro)144 453.6 Q .244(vides control o)-.15 F -.15(ve) --.15 G 2.744(rt).15 G .244(he resources a)-2.744 F -.25(va)-.2 G .244 +(limit)A F0(]])A(Pro)144 280.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 465.6 R 3.443(ws)-.25 G .943(uch control.)-3.443 F -(The)5.943 E F13.443 E F0(and)3.443 E F13.444 E F0 .944 +.944(that allo)144 292.8 R 3.444(ws)-.25 G .944(uch control.)-3.444 F +(The)5.944 E F13.444 E F0(and)3.444 E F13.444 E F0 .943 (options specify that the hard or soft limit is set for the)3.444 F(gi) -144 477.6 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 +144 304.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 489.6 R .425 -(alue of the hard limit.)-.25 F .426(If neither)5.425 F F12.926 E -F0(nor)2.926 E F12.926 E F0 .426 -(is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144 -501.6 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139 +ft limit may)2.708 F .426(be increased up to the v)144 316.8 R .426 +(alue of the hard limit.)-.25 F .425(If neither)5.426 F F12.925 E +F0(nor)2.925 E F12.925 E F0 .425 +(is speci\214ed, both the soft and)2.925 F .139(hard limits are set.)144 +328.8 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139 (can be a number in the unit speci\214ed for the resource or one)3.319 F -.741(of the special v)144 513.6 R(alues)-.25 E F1(hard)3.241 E F0(,)A F1 +.742(of the special v)144 340.8 R(alues)-.25 E F1(hard)3.242 E F0(,)A F1 (soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w) -C .741(hich stand for the current hard limit, the current)-3.241 F .024 -(soft limit, and no limit, respecti)144 525.6 R -.15(ve)-.25 G(ly).15 E +C .741(hich stand for the current hard limit, the current)-3.241 F .023 +(soft limit, and no limit, respecti)144 352.8 R -.15(ve)-.25 G(ly).15 E 5.023(.I)-.65 G(f)-5.023 E F2(limit)2.613 E F0 .023 (is omitted, the current v)3.203 F .023 -(alue of the soft limit of the re-)-.25 F .984 -(source is printed, unless the)144 537.6 R F13.484 E F0 .984 -(option is gi)3.484 F -.15(ve)-.25 G 3.484(n. When).15 F .985 +(alue of the soft limit of the re-)-.25 F .985 +(source is printed, unless the)144 364.8 R F13.485 E F0 .984 +(option is gi)3.485 F -.15(ve)-.25 G 3.484(n. When).15 F .984 (more than one resource is speci\214ed, the)3.484 F .7 -(limit name and unit, if appropriate, are printed before the v)144 549.6 +(limit name and unit, if appropriate, are printed before the v)144 376.8 R 3.2(alue. Other)-.25 F .7(options are interpreted as)3.2 F(follo)144 -561.6 Q(ws:)-.25 E F1144 573.6 Q F0 -(All current limits are reported; no limits are set)180 573.6 Q F1 -144 585.6 Q F0(The maximum sock)180 585.6 Q(et b)-.1 E(uf)-.2 E -(fer size)-.25 E F1144 597.6 Q F0 -(The maximum size of core \214les created)180 597.6 Q F1144 609.6 -Q F0(The maximum size of a process')180 609.6 Q 2.5(sd)-.55 G(ata se) --2.5 E(gment)-.15 E F1144 621.6 Q F0 -(The maximum scheduling priority \("nice"\))180 621.6 Q F1144 -633.6 Q F0 +388.8 Q(ws:)-.25 E F1144 400.8 Q F0 +(All current limits are reported; no limits are set)180 400.8 Q F1 +144 412.8 Q F0(The maximum sock)180 412.8 Q(et b)-.1 E(uf)-.2 E +(fer size)-.25 E F1144 424.8 Q F0 +(The maximum size of core \214les created)180 424.8 Q F1144 436.8 +Q F0(The maximum size of a process')180 436.8 Q 2.5(sd)-.55 G(ata se) +-2.5 E(gment)-.15 E F1144 448.8 Q F0 +(The maximum scheduling priority \("nice"\))180 448.8 Q F1144 +460.8 Q F0 (The maximum size of \214les written by the shell and its children)180 -633.6 Q F1144 645.6 Q F0(The maximum number of pending signals)180 -645.6 Q F1144 657.6 Q F0 -(The maximum number of kqueues that may be allocated)180 657.6 Q F1 -144 669.6 Q F0(The maximum size that may be lock)180 669.6 Q -(ed into memory)-.1 E F1144 681.6 Q F0 -(The maximum resident set size \(man)180 681.6 Q 2.5(ys)-.15 G -(ystems do not honor this limit\))-2.5 E F1144 693.6 Q F0 .791(Th\ +460.8 Q F1144 472.8 Q F0(The maximum number of pending signals)180 +472.8 Q F1144 484.8 Q F0 +(The maximum number of kqueues that may be allocated)180 484.8 Q F1 +144 496.8 Q F0(The maximum size that may be lock)180 496.8 Q +(ed into memory)-.1 E F1144 508.8 Q F0 +(The maximum resident set size \(man)180 508.8 Q 2.5(ys)-.15 G +(ystems do not honor this limit\))-2.5 E F1144 520.8 Q F0 .791(Th\ e maximum number of open \214le descriptors \(most systems do not allo) -180 693.6 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F -(be set\))180 705.6 Q F1144 717.6 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))180 717.6 Q -(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(23)198.725 E 0 Cg EP -%%Page: 24 24 +180 520.8 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F +(be set\))180 532.8 Q F1144 544.8 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))180 544.8 Q F1 +144 556.8 Q F0 +(The maximum number of bytes in POSIX message queues)180 556.8 Q F1 +144 568.8 Q F0(The maximum real-time scheduling priority)180 568.8 +Q F1144 580.8 Q F0(The maximum stack size)180 580.8 Q F1144 +592.8 Q F0(The maximum amount of cpu time in seconds)180 592.8 Q F1 +144 604.8 Q F0(The maximum number of processes a)180 604.8 Q -.25 +(va)-.2 G(ilable to a single user).25 E F1144 616.8 Q F0 .47 +(The maximum amount of virtual memory a)180 616.8 R -.25(va)-.2 G .47 +(ilable to the shell and, on some systems, to).25 F(its children)180 +628.8 Q F1144 640.8 Q F0(The maximum number of \214le locks)180 +640.8 Q F1144 652.8 Q F0(The maximum number of pseudoterminals)180 +652.8 Q F1144 664.8 Q F0(The maximum time a real-time process can\ + run before blocking, in microseconds)180 664.8 Q F1144 676.8 Q F0 +(The maximum number of threads)180 676.8 Q(If)144 693.6 Q F2(limit)3.058 +E F0 .468(is gi)3.648 F -.15(ve)-.25 G .468(n, and the).15 F F1 +2.968 E F0 .468(option is not used,)2.968 F F2(limit)2.968 E F0 .468 +(is the ne)2.968 F 2.968(wv)-.25 G .468 +(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .044 +(no option is gi)144 705.6 R -.15(ve)-.25 G .044(n, then).15 F F1 +2.544 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 +(lues are in 1024-byte increments, e)1.11 F .045(xcept for)-.15 F F1 +2.545 E F0 2.545(,w)C .045(hich is)-2.545 F .67(in seconds;)144 +717.6 R F13.17 E F0 3.17(,w)C .67(hich is in microseconds;)-3.17 F +F13.17 E F0 3.17(,w)C .67(hich is in units of 512-byte blocks;) +-3.17 F F13.17 E F0(,)A F13.17 E F0(,)A F13.17 E F0(,) +A F1144 729.6 Q F0(,)A F13.736 E F0 3.736(,a)C(nd)-3.736 E +F13.736 E F0 3.736(,w)C 1.236(hich are unscaled v)-3.736 F 1.236 +(alues; and, when in posix mode,)-.25 F F13.736 E F0(and)3.736 E +F13.736 E F0 3.736(,w)C 1.237(hich are in)-3.736 F(GNU Bash 5.2)72 +768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(24)185.545 E 0 Cg +EP +%%Page: 25 25 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 -(The maximum number of bytes in POSIX message queues)180 84 Q F1 -144 96 Q F0(The maximum real-time scheduling priority)180 96 Q F1 -144 108 Q F0(The maximum stack size)180 108 Q F1144 120 Q F0 -(The maximum amount of cpu time in seconds)180 120 Q F1144 132 Q -F0(The maximum number of processes a)180 132 Q -.25(va)-.2 G -(ilable to a single user).25 E F1144 144 Q F0 .47 -(The maximum amount of virtual memory a)180 144 R -.25(va)-.2 G .47 -(ilable to the shell and, on some systems, to).25 F(its children)180 156 -Q F1144 168 Q F0(The maximum number of \214le locks)180 168 Q F1 -144 180 Q F0(The maximum number of pseudoterminals)180 180 Q F1 -144 192 Q F0(The maximum time a real-time process can run before \ -blocking, in microseconds)180 192 Q F1144 204 Q F0 -(The maximum number of threads)180 204 Q(If)144 220.8 Q/F2 10 -/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G -.468(n, and the).15 F F12.968 E F0 .468(option is not used,)2.968 -F F2(limit)2.968 E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468 -(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .045 -(no option is gi)144 232.8 R -.15(ve)-.25 G .045(n, then).15 F F1 -2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 -(lues are in 1024-byte increments, e)1.11 F .044(xcept for)-.15 F F1 -2.544 E F0 2.544(,w)C .044(hich is)-2.544 F .67(in seconds;)144 -244.8 R F13.17 E F0 3.17(,w)C .67(hich is in microseconds;)-3.17 F -F13.17 E F0 3.17(,w)C .67(hich is in units of 512-byte blocks;) --3.17 F F13.17 E F0(,)A F13.17 E F0(,)A F13.17 E F0(,) -A F1144 256.8 Q F0(,)A F13.737 E F0 3.737(,a)C(nd)-3.737 E -F13.736 E F0 3.736(,w)C 1.236(hich are unscaled v)-3.736 F 1.236 -(alues; and, when in posix mode,)-.25 F F13.736 E F0(and)3.736 E -F13.736 E F0 3.736(,w)C 1.236(hich are in)-3.736 F .238 -(512-byte increments.)144 268.8 R .238 -(The return status is 0 unless an in)5.238 F -.25(va)-.4 G .238 +E(UIL)-.1 E(TINS\(1\))-.92 E .239(512-byte increments.)144 84 R .238 +(The return status is 0 unless an in)5.239 F -.25(va)-.4 G .238 (lid option or ar).25 F .238(gument is supplied, or an)-.18 F -(error occurs while setting a ne)144 280.8 Q 2.5(wl)-.25 G(imit.)-2.5 E -F1(umask)108 297.6 Q F0([)2.5 E F1A F0 2.5(][)C F1-2.5 E F0 -2.5(][)C F2(mode)-2.5 E F0(])A .18 -(The user \214le-creation mask is set to)144 309.6 R F2(mode)3.06 E F0 +(error occurs while setting a ne)144 96 Q 2.5(wl)-.25 G(imit.)-2.5 E/F1 +10/Times-Bold@0 SF(umask)108 112.8 Q F0([)2.5 E F1A F0 2.5(][)C F1 +-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(mode)-2.5 E F0(])A .18 +(The user \214le-creation mask is set to)144 124.8 R F2(mode)3.06 E F0 5.18(.I).18 G(f)-5.18 E F2(mode)3.06 E F0(be)2.86 E .18 (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 321.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -333.6 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382 +pted by)144 136.8 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +148.8 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 (alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 (option causes the mask to be)2.882 F .547 -(printed in symbolic form; the def)144 345.6 R .547 +(printed in symbolic form; the def)144 160.8 R .547 (ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G (he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 -(mode)144.38 357.6 Q F0 .552 -(is omitted, the output is in a form that may be reused as input.)3.232 -F .551(The return status is 0 if the)5.551 F(mode w)144 369.6 Q +(mode)144.38 172.8 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 184.8 Q (as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E (gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1 -(unalias)108 386.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 -(...])2.5 E(Remo)144 398.4 Q 1.057 -.15(ve e)-.15 H(ach).15 E F2(name) -3.257 E F0 .757(from the list of de\214ned aliases.)3.257 F(If)5.758 E -F13.258 E F0 .758(is supplied, all alias de\214nitions are re-) -3.258 F(mo)144 410.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E +(unalias)108 201.6 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 +(...])2.5 E(Remo)144 213.6 Q 1.058 -.15(ve e)-.15 H(ach).15 E F2(name) +3.258 E F0 .758(from the list of de\214ned aliases.)3.258 F(If)5.758 E +F13.258 E F0 .757(is supplied, all alias de\214nitions are re-) +3.258 F(mo)144 225.6 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 427.2 Q F0<5bad>2.5 E F1 +(is not a de\214ned alias.)2.68 E F1(unset)108 242.4 Q F0<5bad>2.5 E F1 (fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) -2.5 E -.15(Fo)144 439.2 S 3.804(re).15 G(ach)-3.804 E F2(name)4.164 E F0 -3.804(,r).18 G(emo)-3.804 E 1.604 -.15(ve t)-.15 H 1.304 +2.5 E -.15(Fo)144 254.4 S 3.803(re).15 G(ach)-3.803 E F2(name)4.163 E F0 +3.803(,r).18 G(emo)-3.803 E 1.603 -.15(ve t)-.15 H 1.303 (he corresponding v).15 F 1.303(ariable or function.)-.25 F 1.303 -(If the)6.303 F F13.803 E F0 1.303(option is gi)3.803 F -.15(ve) --.25 G 1.303(n, each).15 F F2(name)144.36 451.2 Q F0 .464 -(refers to a shell v)3.144 F .464(ariable, and that v)-.25 F .464 -(ariable is remo)-.25 F -.15(ve)-.15 G 2.965(d. Read-only).15 F -.25(va) -2.965 G .465(riables may not be un-).25 F 2.769(set. If)144 463.2 R F1 -2.769 E F0 .269(is speci\214ed, each)2.769 F F2(name)3.129 E F0 +(If the)6.303 F F13.804 E F0 1.304(option is gi)3.804 F -.15(ve) +-.25 G 1.304(n, each).15 F F2(name)144.36 266.4 Q F0 .465 +(refers to a shell v)3.145 F .464(ariable, and that v)-.25 F .464 +(ariable is remo)-.25 F -.15(ve)-.15 G 2.964(d. Read-only).15 F -.25(va) +2.964 G .464(riables may not be un-).25 F 2.768(set. If)144 278.4 R F1 +2.768 E F0 .269(is speci\214ed, each)2.768 F F2(name)3.129 E F0 .269(refers to a shell function, and the function de\214nition is remo) -2.949 F -.15(ve)-.15 G(d.).15 E .403(If the)144 475.2 R F12.903 E +2.949 F -.15(ve)-.15 G(d.).15 E .404(If the)144 290.4 R F12.904 E F0 .404(option is supplied, and)2.904 F F2(name)2.904 E F0 .404(is a v) 2.904 F .404(ariable with the)-.25 F F2(namer)2.904 E(ef)-.37 E F0 -(attrib)2.904 E(ute,)-.2 E F2(name)2.904 E F0 .404(will be unset)2.904 F -.72(rather than the v)144 487.2 R .72(ariable it references.)-.25 F F1 -5.72 E F0 .72(has no ef)3.22 F .719(fect if the)-.25 F F1 -3.219 E F0 .719(option is supplied.)3.219 F .719(If no options)5.719 F -.736(are supplied, each)144 499.2 R F2(name)3.236 E F0 .736 -(refers to a v)3.236 F .737(ariable; if there is no v)-.25 F .737 -(ariable by that name, a function with)-.25 F 1.762(that name, if an)144 -511.2 R 3.062 -.65(y, i)-.15 H 4.262(su).65 G 4.261(nset. Each)-4.262 F +(attrib)2.904 E(ute,)-.2 E F2(name)2.904 E F0 .403(will be unset)2.904 F +.719(rather than the v)144 302.4 R .719(ariable it references.)-.25 F F1 +5.719 E F0 .719(has no ef)3.219 F .719(fect if the)-.25 F F1 +3.22 E F0 .72(option is supplied.)3.22 F .72(If no options)5.72 F .737 +(are supplied, each)144 314.4 R F2(name)3.237 E F0 .737(refers to a v) +3.237 F .737(ariable; if there is no v)-.25 F .736 +(ariable by that name, a function with)-.25 F 1.761(that name, if an)144 +326.4 R 3.061 -.65(y, i)-.15 H 4.261(su).65 G 4.261(nset. Each)-4.261 F 1.761(unset v)4.261 F 1.761(ariable or function is remo)-.25 F -.15(ve) --.15 G 4.261(df).15 G 1.761(rom the en)-4.261 F(vironment)-.4 E 3.171 -(passed to subsequent commands.)144 523.2 R 3.172(If an)8.172 F 5.672 +-.15 G 4.262(df).15 G 1.762(rom the en)-4.262 F(vironment)-.4 E 3.172 +(passed to subsequent commands.)144 338.4 R 3.172(If an)8.172 F 5.672 (yo)-.15 G(f)-5.672 E/F3 9/Times-Bold@0 SF -.27(BA)5.672 G(SH_ALIASES) -.27 E/F4 9/Times-Roman@0 SF(,)A F3 -.27(BA)5.422 G(SH_ARGV0).27 E F4(,)A -F3 -.27(BA)5.422 G(SH_CMDS).27 E F4(,)A F3 -.27(BA)144 535.2 S -(SH_COMMAND).27 E F4(,)A F3 -.27(BA)11.482 G(SH_SUBSHELL).27 E F4(,)A F3 +.27 E/F4 9/Times-Roman@0 SF(,)A F3 -.27(BA)5.421 G(SH_ARGV0).27 E F4(,)A +F3 -.27(BA)5.421 G(SH_CMDS).27 E F4(,)A F3 -.27(BA)144 350.4 S +(SH_COMMAND).27 E F4(,)A F3 -.27(BA)11.481 G(SH_SUBSHELL).27 E F4(,)A F3 -.27(BA)11.482 G(SHPID).27 E F4(,)A F3(COMP_W)11.482 E(ORDBREAKS)-.09 E -F4(,)A F3(DIRST)11.481 E -.495(AC)-.81 G(K).495 E F4(,)A F3(EPOCHREAL) -144 547.2 Q(TIME)-.828 E F4(,)A F3(EPOCHSECONDS)2.67 E F4(,)A F3(FUNCN) +F4(,)A F3(DIRST)11.482 E -.495(AC)-.81 G(K).495 E F4(,)A F3(EPOCHREAL) +144 362.4 Q(TIME)-.828 E F4(,)A F3(EPOCHSECONDS)2.67 E F4(,)A F3(FUNCN) 2.67 E(AME)-.18 E F4(,)A F3(GR)2.67 E(OUPS)-.27 E F4(,)A F3(HISTCMD)2.67 E F4(,)A F3(LINENO)2.67 E F4(,)A F3(RANDOM)2.67 E F4(,)A F3(SECONDS)144 -559.2 Q F4(,)A F0(or)4.03 E F3(SRANDOM)4.28 E F0 1.779(are unset, the) -4.03 F 4.279(yl)-.15 G 1.779(ose their special properties, e)-4.279 F --.15(ve)-.25 G 4.279(ni).15 G 4.279(ft)-4.279 G(he)-4.279 E 4.279(ya) --.15 G 1.779(re subse-)-4.279 F(quently reset.)144 571.2 Q(The e)5 E -(xit status is true unless a)-.15 E F2(name)2.86 E F0(is readonly)2.68 E -(.)-.65 E F1(wait)108 588 Q F0([)2.5 E F1(\255fn)A F0 2.5(][)C F1 --2.5 E F2(varname)2.5 E F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8(Wa)144 -600 S .659(it for each speci\214ed child process and return its termina\ -tion status.).8 F(Each)5.659 E F2(id)3.169 E F0 .659(may be a process) -3.929 F .009(ID or a job speci\214cation; if a job spec is gi)144 612 R --.15(ve)-.25 G .008(n, all processes in that job').15 F 2.508(sp)-.55 G -.008(ipeline are w)-2.508 F .008(aited for)-.1 F 5.008(.I)-.55 G(f) --5.008 E F2(id)144.01 624 Q F0 .441(is not gi)3.711 F -.15(ve)-.25 G(n,) -.15 E F1(wait)2.941 E F0 -.1(wa)2.941 G .441 +374.4 Q F4(,)A F0(or)4.029 E F3(SRANDOM)4.279 E F0 1.779(are unset, the) +4.029 F 4.279(yl)-.15 G 1.779(ose their special properties, e)-4.279 F +-.15(ve)-.25 G 4.279(ni).15 G 4.28(ft)-4.279 G(he)-4.28 E 4.28(ya)-.15 G +1.78(re subse-)-4.28 F(quently reset.)144 386.4 Q(The e)5 E +(xit status is true unless a)-.15 E F2(name)2.86 E F0 +(is readonly or may not be unset.)2.68 E F1(wait)108 403.2 Q F0([)2.5 E +F1(\255fn)A F0 2.5(][)C F1-2.5 E F2(varname)2.5 E F0 2.5(][)C F2 +(id ...)-2.5 E F0(])A -.8(Wa)144 415.2 S .659(it for each speci\214ed c\ +hild process and return its termination status.).8 F(Each)5.659 E F2(id) +3.169 E F0 .658(may be a process)3.928 F .008 +(ID or a job speci\214cation; if a job spec is gi)144 427.2 R -.15(ve) +-.25 G .009(n, all processes in that job').15 F 2.509(sp)-.55 G .009 +(ipeline are w)-2.509 F .009(aited for)-.1 F 5.009(.I)-.55 G(f)-5.009 E +F2(id)144.01 439.2 Q F0 .442(is not gi)3.712 F -.15(ve)-.25 G(n,).15 E +F1(wait)2.942 E F0 -.1(wa)2.942 G .441 (its for all running background jobs and the last-e).1 F -.15(xe)-.15 G -.442(cuted process substitu-).15 F .598 -(tion, if its process id is the same as)144 636 R F1($!)3.098 E F0 3.098 -(,a)C .598(nd the return status is zero.)-3.098 F .597(If the)5.597 F F1 -3.097 E F0 .597(option is supplied,)3.097 F F1(wait)144 648 Q F0 --.1(wa)3.082 G .583(its for a single job from the list of).1 F F2(id) -3.083 E F0 3.083(so)C 1.383 -.4(r, i)-3.083 H 3.083(fn).4 G(o)-3.083 E -F2(id)3.083 E F0 3.083(sa)C .583(re supplied, an)-3.083 F 3.083(yj)-.15 -G .583(ob, to complete and)-3.083 F .404(returns its e)144 660 R .404 -(xit status.)-.15 F .403(If none of the supplied ar)5.403 F .403 -(guments is a child of the shell, or if no ar)-.18 F(guments)-.18 E .572 -(are supplied and the shell has no unw)144 672 R .573 -(aited-for children, the e)-.1 F .573(xit status is 127.)-.15 F .573 -(If the)5.573 F F13.073 E F0 .573(option is)3.073 F .39 +.441(cuted process substitu-).15 F .597 +(tion, if its process id is the same as)144 451.2 R F1($!)3.098 E F0 +3.098(,a)C .598(nd the return status is zero.)-3.098 F .598(If the)5.598 +F F13.098 E F0 .598(option is supplied,)3.098 F F1(wait)144 463.2 +Q F0 -.1(wa)3.083 G .583(its for a single job from the list of).1 F F2 +(id)3.083 E F0 3.083(so)C 1.383 -.4(r, i)-3.083 H 3.083(fn).4 G(o)-3.083 +E F2(id)3.083 E F0 3.083(sa)C .583(re supplied, an)-3.083 F 3.083(yj) +-.15 G .582(ob, to complete and)-3.083 F .403(returns its e)144 475.2 R +.403(xit status.)-.15 F .403(If none of the supplied ar)5.403 F .403 +(guments is a child of the shell, or if no ar)-.18 F(guments)-.18 E .573 +(are supplied and the shell has no unw)144 487.2 R .573 +(aited-for children, the e)-.1 F .573(xit status is 127.)-.15 F .572 +(If the)5.573 F F13.072 E F0 .572(option is)3.072 F .39 (supplied, the process or job identi\214er of the job for which the e) -144 684 R .39(xit status is returned is assigned to)-.15 F .905(the v) -144 696 R(ariable)-.25 E F2(varname)3.405 E F0 .905 +144 499.2 R .39(xit status is returned is assigned to)-.15 F .905(the v) +144 511.2 R(ariable)-.25 E F2(varname)3.405 E F0 .905 (named by the option ar)3.405 F 3.405(gument. The)-.18 F -.25(va)3.405 G .905(riable will be unset initially).25 F 3.405(,b)-.65 G(efore)-3.405 E -(an)144 708 Q 3.89(ya)-.15 G 3.89(ssignment. This)-3.89 F 1.39 +(an)144 523.2 Q 3.89(ya)-.15 G 3.89(ssignment. This)-3.89 F 1.39 (is useful only when the)3.89 F F13.89 E F0 1.39 (option is supplied.)3.89 F 1.39(Supplying the)6.39 F F13.89 E F0 -(option,)3.89 E 1.461(when job control is enabled, forces)144 720 R F1 -(wait)3.961 E F0 1.461(to w)3.961 F 1.461(ait for)-.1 F F2(id)3.961 E F0 -1.462(to terminate before returning its status,)3.961 F(GNU Bash 5.0)72 -768 Q(2004 Apr 20)149.565 E(24)198.725 E 0 Cg EP -%%Page: 25 25 +(option,)3.89 E .575(when job control is enabled, forces)144 535.2 R F1 +(wait)3.075 E F0 .575(to w)3.075 F .575(ait for)-.1 F F2(id)3.075 E F0 +.574(to terminate before returning its status, in-)3.075 F .635 +(stead of returning when it changes status.)144 547.2 R(If)5.635 E F2 +(id)3.145 E F0 .635(speci\214es a non-e)3.905 F .635 +(xistent process or job, the return)-.15 F .802(status is 127.)144 559.2 +R(If)5.801 E F1(wait)3.301 E F0 .801(is interrupted by a signal, the re\ +turn status will be greater than 128, as de-)3.301 F 1.758 +(scribed under)144 571.2 R F1(SIGN)4.258 E(ALS)-.2 E F0(in)4.258 E F2 +(bash\(1\))4.258 E F0 6.758(.O)C 1.759 +(therwise, the return status is the e)-6.758 F 1.759 +(xit status of the last)-.15 F(process or job w)144 583.2 Q(aited for) +-.1 E(.)-.55 E/F5 10.95/Times-Bold@0 SF(SHELL COMP)72 600 Q -1.04(AT) +-.81 G(IBILITY MODE)1.04 E F0 1.355 +(Bash-4.0 introduced the concept of a)108 612 R F2 1.355 +(shell compatibility le)3.855 F(vel)-.15 E F0 3.855(,s)C 1.354 +(peci\214ed as a set of options to the shopt)-3.855 F -.2(bu)108 624 S +.398(iltin \().2 F F1(compat31)2.898 E F0(,)A F1(compat32)2.898 E F0(,)A +F1(compat40)2.898 E F0(,)A F1(compat41)2.898 E F0 2.898(,a)C .399 +(nd so on\).)-2.898 F .399(There is only one current compatibility)5.399 +F(le)108 636 Q -.15(ve)-.25 G 3.254(l-).15 G 3.254(-e)-3.254 G .754 +(ach option is mutually e)-3.254 F(xclusi)-.15 E -.15(ve)-.25 G 5.754 +(.T).15 G .754(he compatibility le)-5.754 F -.15(ve)-.25 G 3.253(li).15 +G 3.253(si)-3.253 G .753(ntended to allo)-3.253 F 3.253(wu)-.25 G .753 +(sers to select be-)-3.253 F(ha)108 648 Q 1.083(vior from pre)-.2 F +1.083(vious v)-.25 F 1.083(ersions that is incompatible with ne)-.15 F +1.083(wer v)-.25 F 1.083(ersions while the)-.15 F 3.584(ym)-.15 G 1.084 +(igrate scripts to use)-3.584 F(current features and beha)108 660 Q +(vior)-.2 E 2.5(.I)-.55 G(t')-2.5 E 2.5(si)-.55 G +(ntended to be a temporary solution.)-2.5 E 1.457 +(This section does not mention beha)108 676.8 R 1.457 +(vior that is standard for a particular v)-.2 F 1.456 +(ersion \(e.g., setting)-.15 F F1(compat32)3.956 E F0 .886 +(means that quoting the rhs of the re)108 688.8 R(ge)-.15 E .886 +(xp matching operator quotes special re)-.15 F(ge)-.15 E .887 +(xp characters in the w)-.15 F(ord,)-.1 E(which is def)108 700.8 Q +(ault beha)-.1 E(vior in bash-3.2 and subsequent v)-.2 E(ersions\).)-.15 +E .523(If a user enables, say)108 717.6 R(,)-.65 E F1(compat32)3.023 E +F0 3.023(,i)C 3.023(tm)-3.023 G .523(ay af)-3.023 F .523(fect the beha) +-.25 F .523(vior of other compatibility le)-.2 F -.15(ve)-.25 G .522 +(ls up to and includ-).15 F .259(ing the current compatibility le)108 +729.6 R -.15(ve)-.25 G 2.759(l. The).15 F .259 +(idea is that each compatibility le)2.759 F -.15(ve)-.25 G 2.76(lc).15 G +.26(ontrols beha)-2.76 F .26(vior that changed)-.2 F(GNU Bash 5.2)72 768 +Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(25)185.545 E 0 Cg EP +%%Page: 26 26 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E .149 -(instead of returning when it changes status.)144 84 R(If)5.149 E/F1 10 -/Times-Italic@0 SF(id)2.659 E F0 .149(speci\214es a non-e)3.419 F .148 -(xistent process or job, the return)-.15 F(status is 127.)144 96 Q -(Otherwise, the return status is the e)5 E -(xit status of the last process or job w)-.15 E(aited for)-.1 E(.)-.55 E -/F2 10.95/Times-Bold@0 SF(SHELL COMP)72 112.8 Q -1.04(AT)-.81 G -(IBILITY MODE)1.04 E F0 .911 -(Bash-4.0 introduced the concept of a `shell compatibility le)108 124.8 -R -.15(ve)-.25 G .912(l', speci\214ed as a set of options to the shopt) -.15 F -.2(bu)108 136.8 S(iltin).2 E/F3 10/Times-Bold@0 SF(compat31)3.378 -E F0(,)A F3(compat32)3.378 E F0(,)A F3(compat40)3.378 E F0(,)A F3 -(compat41)3.378 E F0 3.378(,a)C .878(nd so on\).)-3.378 F .877 -(There is only one current compatibility)5.878 F(le)108 148.8 Q -.15(ve) --.25 G 3.253(l-).15 G 3.253(-e)-3.253 G .753(ach option is mutually e) --3.253 F(xclusi)-.15 E -.15(ve)-.25 G 5.753(.T).15 G .753 -(he compatibility le)-5.753 F -.15(ve)-.25 G 3.254(li).15 G 3.254(si) --3.254 G .754(ntended to allo)-3.254 F 3.254(wu)-.25 G .754 -(sers to select be-)-3.254 F(ha)108 160.8 Q 1.084(vior from pre)-.2 F -1.084(vious v)-.25 F 1.083(ersions that is incompatible with ne)-.15 F -1.083(wer v)-.25 F 1.083(ersions while the)-.15 F 3.583(ym)-.15 G 1.083 -(igrate scripts to use)-3.583 F(current features and beha)108 172.8 Q -(vior)-.2 E 2.5(.I)-.55 G(t')-2.5 E 2.5(si)-.55 G -(ntended to be a temporary solution.)-2.5 E 1.456 -(This section does not mention beha)108 189.6 R 1.457 -(vior that is standard for a particular v)-.2 F 1.457 -(ersion \(e.g., setting)-.15 F F3(compat32)3.957 E F0 .887 -(means that quoting the rhs of the re)108 201.6 R(ge)-.15 E .886 -(xp matching operator quotes special re)-.15 F(ge)-.15 E .886 -(xp characters in the w)-.15 F(ord,)-.1 E(which is def)108 213.6 Q -(ault beha)-.1 E(vior in bash-3.2 and abo)-.2 E -.15(ve)-.15 G(\).).15 E -.522(If a user enables, say)108 230.4 R(,)-.65 E F3(compat32)3.023 E F0 -3.023(,i)C 3.023(tm)-3.023 G .523(ay af)-3.023 F .523(fect the beha)-.25 -F .523(vior of other compatibility le)-.2 F -.15(ve)-.25 G .523 -(ls up to and includ-).15 F .26(ing the current compatibility le)108 -242.4 R -.15(ve)-.25 G 2.76(l. The).15 F .259 -(idea is that each compatibility le)2.759 F -.15(ve)-.25 G 2.759(lc).15 -G .259(ontrols beha)-2.759 F .259(vior that changed)-.2 F 1.645 -(in that v)108 254.4 R 1.646(ersion of)-.15 F F3(bash)4.146 E F0 4.146 -(,b)C 1.646(ut that beha)-4.346 F 1.646(vior may ha)-.2 F 1.946 -.15 -(ve b)-.2 H 1.646(een present in earlier v).15 F 4.146(ersions. F)-.15 F -1.646(or instance, the)-.15 F .761 -(change to use locale-based comparisons with the)108 266.4 R F3([[)3.261 -E F0 .76(command came in bash-4.1, and earlier v)3.261 F .76 -(ersions used)-.15 F 1.904(ASCII-based comparisons, so enabling)108 -278.4 R F3(compat32)4.404 E F0 1.905 -(will enable ASCII-based comparisons as well.)4.404 F(That)6.905 E .296 -(granularity may not be suf)108 290.4 R .296 +E(UIL)-.1 E(TINS\(1\))-.92 E 1.646(in that v)108 84 R 1.646(ersion of) +-.15 F/F1 10/Times-Bold@0 SF(bash)4.146 E F0 4.146(,b)C 1.646 +(ut that beha)-4.346 F 1.646(vior may ha)-.2 F 1.946 -.15(ve b)-.2 H +1.646(een present in earlier v).15 F 4.146(ersions. F)-.15 F 1.645 +(or instance, the)-.15 F .76 +(change to use locale-based comparisons with the)108 96 R F1([[)3.261 E +F0 .761(command came in bash-4.1, and earlier v)3.261 F .761 +(ersions used)-.15 F 1.905(ASCII-based comparisons, so enabling)108 108 +R F1(compat32)4.405 E F0 1.904 +(will enable ASCII-based comparisons as well.)4.405 F(That)6.904 E .295 +(granularity may not be suf)108 120 R .296 (\214cient for all uses, and as a result users should emplo)-.25 F 2.796 -(yc)-.1 G .295(ompatibility le)-2.796 F -.15(ve)-.25 G .295(ls care-).15 -F(fully)108 302.4 Q 5(.R)-.65 G(ead the documentation for a particular \ -feature to \214nd out the current beha)-5 E(vior)-.2 E(.)-.55 E .531 -(Bash-4.3 introduced a ne)108 319.2 R 3.031(ws)-.25 G .531(hell v)-3.031 -F(ariable:)-.25 E/F4 9/Times-Bold@0 SF -.27(BA)3.031 G(SH_COMP).27 E --.855(AT)-.666 G/F5 9/Times-Roman@0 SF(.).855 E F0 .531(The v)5.031 F -.531(alue assigned to this v)-.25 F .532(ariable \(a decimal)-.25 F -.15 -(ve)108 331.2 S .108(rsion number lik).15 F 2.608(e4)-.1 G .108 -(.2, or an inte)-2.608 F .108(ger corresponding to the)-.15 F F3(compat) -2.607 E F1(NN)A F0 .107(option, lik)2.607 F 2.607(e4)-.1 G .107 -(2\) determines the com-)-2.607 F(patibility le)108 343.2 Q -.15(ve)-.25 -G(l.).15 E .387(Starting with bash-4.4, Bash has be)108 360 R .388 -(gun deprecating older compatibility le)-.15 F -.15(ve)-.25 G 2.888 -(ls. Ev).15 F(entually)-.15 E 2.888(,t)-.65 G .388(he options will) --2.888 F(be remo)108 372 Q -.15(ve)-.15 G 2.5(di).15 G 2.5(nf)-2.5 G -.2 -(avo)-2.6 G 2.5(ro).2 G(f)-2.5 E F4 -.27(BA)2.5 G(SH_COMP).27 E -.855 -(AT)-.666 G F5(.).855 E F0 1.164(Bash-5.0 is the \214nal v)108 388.8 R -1.164(ersion for which there will be an indi)-.15 F 1.163 -(vidual shopt option for the pre)-.25 F 1.163(vious v)-.25 F(ersion.) --.15 E(Users should use)108 400.8 Q F4 -.27(BA)2.5 G(SH_COMP).27 E -.855 -(AT)-.666 G F0(on bash-5.0 and later v)3.105 E(ersions.)-.15 E 1.613 -(The follo)108 417.6 R 1.613(wing table describes the beha)-.25 F 1.613 +(yc)-.1 G .296(ompatibility le)-2.796 F -.15(ve)-.25 G .296(ls care-).15 +F(fully)108 132 Q 5(.R)-.65 G(ead the documentation for a particular fe\ +ature to \214nd out the current beha)-5 E(vior)-.2 E(.)-.55 E .532 +(Bash-4.3 introduced a ne)108 148.8 R 3.032(ws)-.25 G .531(hell v)-3.032 +F(ariable:)-.25 E/F2 9/Times-Bold@0 SF -.27(BA)3.031 G(SH_COMP).27 E +-.855(AT)-.666 G/F3 9/Times-Roman@0 SF(.).855 E F0 .531(The v)5.031 F +.531(alue assigned to this v)-.25 F .531(ariable \(a decimal)-.25 F -.15 +(ve)108 160.8 S .107(rsion number lik).15 F 2.607(e4)-.1 G .107 +(.2, or an inte)-2.607 F .107(ger corresponding to the)-.15 F F1(compat) +2.608 E/F4 10/Times-Italic@0 SF(NN)A F0 .108(option, lik)2.608 F 2.608 +(e4)-.1 G .108(2\) determines the com-)-2.608 F(patibility le)108 172.8 +Q -.15(ve)-.25 G(l.).15 E .388(Starting with bash-4.4, Bash has be)108 +189.6 R .388(gun deprecating older compatibility le)-.15 F -.15(ve)-.25 +G 2.887(ls. Ev).15 F(entually)-.15 E 2.887(,t)-.65 G .387 +(he options will)-2.887 F(be remo)108 201.6 Q -.15(ve)-.15 G 2.5(di).15 +G 2.5(nf)-2.5 G -.2(avo)-2.6 G 2.5(ro).2 G(f)-2.5 E F2 -.27(BA)2.5 G +(SH_COMP).27 E -.855(AT)-.666 G F3(.).855 E F0 1.163 +(Bash-5.0 is the \214nal v)108 218.4 R 1.163 +(ersion for which there will be an indi)-.15 F 1.164 +(vidual shopt option for the pre)-.25 F 1.164(vious v)-.25 F(ersion.) +-.15 E(Users should use)108 230.4 Q F2 -.27(BA)2.5 G(SH_COMP).27 E -.855 +(AT)-.666 G F0(on bash-5.0 and later v)3.105 E(ersions.)-.15 E 1.614 +(The follo)108 247.2 R 1.613(wing table describes the beha)-.25 F 1.613 (vior changes controlled by each compatibility le)-.2 F -.15(ve)-.25 G -4.113(ls).15 G 4.114(etting. The)-4.113 F F3(compat)108 429.6 Q F1(NN)A -F0 1.186(tag is used as shorthand for setting the compatibility le)3.686 -F -.15(ve)-.25 G 3.686(lt).15 G(o)-3.686 E F1(NN)3.686 E F0 1.186 -(using one of the follo)3.686 F(wing)-.25 E 3.806(mechanisms. F)108 -441.6 R 1.306(or v)-.15 F 1.306 +4.113(ls).15 G 4.113(etting. The)-4.113 F F1(compat)108 259.2 Q F4(NN)A +F0 1.186(tag is used as shorthand for setting the compatibility le)3.685 +F -.15(ve)-.25 G 3.686(lt).15 G(o)-3.686 E F4(NN)3.686 E F0 1.186 +(using one of the follo)3.686 F(wing)-.25 E 3.807(mechanisms. F)108 +271.2 R 1.307(or v)-.15 F 1.307 (ersions prior to bash-5.0, the compatibility le)-.15 F -.15(ve)-.25 G -3.807(lm).15 G 1.307(ay be set using the corresponding)-3.807 F F3 -(compat)108 453.6 Q F1(NN)A F0 .502(shopt option.)3.002 F -.15(Fo)5.502 +3.806(lm).15 G 1.306(ay be set using the corresponding)-3.806 F F1 +(compat)108 283.2 Q F4(NN)A F0 .502(shopt option.)3.002 F -.15(Fo)5.502 G 3.002(rb).15 G .502(ash-4.3 and later v)-3.002 F .502(ersions, the) --.15 F F4 -.27(BA)3.002 G(SH_COMP).27 E -.855(AT)-.666 G F0 -.25(va) +-.15 F F2 -.27(BA)3.002 G(SH_COMP).27 E -.855(AT)-.666 G F0 -.25(va) 3.607 G .502(riable is preferred, and it).25 F -(is required for bash-5.1 and later v)108 465.6 Q(ersions.)-.15 E F3 -(compat31)108 482.4 Q F0<83>144 494.4 Q(quoting the rhs of the)180 494.4 -Q F3([[)2.5 E F0(command')2.5 E 2.5(sr)-.55 G -.15(eg)-2.5 G -.15(ex).15 -G 2.5(pm).15 G(atching operator \(=~\) has no special ef)-2.5 E(fect) --.25 E F3(compat32)108 511.2 Q F0<83>144 523.2 Q .35 -(interrupting a command list such as "a ; b ; c" causes the e)180 523.2 -R -.15(xe)-.15 G .35(cution of the ne).15 F .35(xt command)-.15 F .018 -(in the list \(in bash-4.0 and later v)180 535.2 R .018 -(ersions, the shell acts as if it recei)-.15 F -.15(ve)-.25 G 2.517(dt) -.15 G .017(he interrupt, so in-)-2.517 F -(terrupting one command in a list aborts the e)180 547.2 Q -.15(xe)-.15 -G(cution of the entire list\)).15 E F3(compat40)108 564 Q F0<83>144 576 -Q(the)180 576 Q F3(<)2.673 E F0(and)2.673 E F3(>)2.673 E F0 .173 -(operators to the)2.673 F F3([[)2.673 E F0 .173 +(is required for bash-5.1 and later v)108 295.2 Q(ersions.)-.15 E F1 +(compat31)108 312 Q F0<83>144 324 Q(quoting the rhs of the)180 324 Q F1 +([[)2.5 E F0(command')2.5 E 2.5(sr)-.55 G -.15(eg)-2.5 G -.15(ex).15 G +2.5(pm).15 G(atching operator \(=~\) has no special ef)-2.5 E(fect)-.25 +E F1(compat32)108 340.8 Q F0<83>144 352.8 Q .35 +(interrupting a command list such as "a ; b ; c" causes the e)180 352.8 +R -.15(xe)-.15 G .35(cution of the ne).15 F .35(xt command)-.15 F .017 +(in the list \(in bash-4.0 and later v)180 364.8 R .018 +(ersions, the shell acts as if it recei)-.15 F -.15(ve)-.25 G 2.518(dt) +.15 G .018(he interrupt, so in-)-2.518 F +(terrupting one command in a list aborts the e)180 376.8 Q -.15(xe)-.15 +G(cution of the entire list\)).15 E F1(compat40)108 393.6 Q F0<83>144 +405.6 Q(the)180 405.6 Q F1(<)2.674 E F0(and)2.674 E F1(>)2.673 E F0 .173 +(operators to the)2.673 F F1([[)2.673 E F0 .173 (command do not consider the current locale when compar)2.673 F(-)-.2 E -.068(ing strings; the)180 588 R 2.568(yu)-.15 G .068(se ASCII ordering.) --2.568 F .068(Bash v)5.068 F .067 -(ersions prior to bash-4.1 use ASCII collation)-.15 F(and)180 600 Q F1 -(str)4.742 E(cmp)-.37 E F0 1.902 -(\(3\); bash-4.1 and later use the current locale').19 F 4.403(sc)-.55 G -1.903(ollation sequence and)-4.403 F F1(str)4.743 E(-)-.2 E(coll)180 612 -Q F0(\(3\).).51 E F3(compat41)108 628.8 Q F0<83>144 640.8 Q(in)180 640.8 -Q F1(posix)3.79 E F0(mode,)3.79 E F3(time)3.79 E F0 1.29(may be follo) -3.79 F 1.29(wed by options and still be recognized as a reserv)-.25 F -(ed)-.15 E -.1(wo)180 652.8 S(rd \(this is POSIX interpretation 267\)).1 -E<83>144 664.8 Q(in)180 664.8 Q F1(posix)2.708 E F0 .208 -(mode, the parser requires that an e)2.708 F -.15(ve)-.25 G 2.708(nn).15 -G .208(umber of single quotes occur in the)-2.708 F F1(wor)2.709 E(d) --.37 E F0 .282(portion of a double-quoted parameter e)180 676.8 R .282 -(xpansion and treats them specially)-.15 F 2.781(,s)-.65 G 2.781(ot) --2.781 G .281(hat charac-)-2.781 F(ters within the single quotes are co\ -nsidered quoted \(this is POSIX interpretation 221\))180 688.8 Q F3 -(compat42)108 705.6 Q F0<83>144 717.6 Q 1.055(the replacement string in\ - double-quoted pattern substitution does not under)180 717.6 R 1.056 -(go quote re-)-.18 F(mo)180 729.6 Q -.25(va)-.15 G(l, as it does in v) -.25 E(ersions after bash-4.2)-.15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20) -149.565 E(25)198.725 E 0 Cg EP -%%Page: 26 26 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E<83>144 84 Q .021 -(in posix mode, single quotes are considered special when e)180 84 R -.021(xpanding the)-.15 F/F1 10/Times-Italic@0 SF(wor)2.52 E(d)-.37 E F0 -.02(portion of a)2.52 F .017(double-quoted parameter e)180 96 R .017 +.067(ing strings; the)180 417.6 R 2.567(yu)-.15 G .067 +(se ASCII ordering.)-2.567 F .068(Bash v)5.068 F .068 +(ersions prior to bash-4.1 use ASCII collation)-.15 F(and)180 429.6 Q F4 +(str)4.743 E(cmp)-.37 E F0 1.903 +(\(3\); bash-4.1 and later use the current locale').19 F 4.402(sc)-.55 G +1.902(ollation sequence and)-4.402 F F4(str)4.742 E(-)-.2 E(coll)180 +441.6 Q F0(\(3\).).51 E F1(compat41)108 458.4 Q F0<83>144 470.4 Q(in)180 +470.4 Q F4(posix)3.79 E F0(mode,)3.79 E F1(time)3.79 E F0 1.29 +(may be follo)3.79 F 1.29 +(wed by options and still be recognized as a reserv)-.25 F(ed)-.15 E -.1 +(wo)180 482.4 S(rd \(this is POSIX interpretation 267\)).1 E<83>144 +494.4 Q(in)180 494.4 Q F4(posix)2.709 E F0 .208 +(mode, the parser requires that an e)2.709 F -.15(ve)-.25 G 2.708(nn).15 +G .208(umber of single quotes occur in the)-2.708 F F4(wor)2.708 E(d) +-.37 E F0 .281(portion of a double-quoted parameter e)180 506.4 R .282 +(xpansion and treats them specially)-.15 F 2.782(,s)-.65 G 2.782(ot) +-2.782 G .282(hat charac-)-2.782 F(ters within the single quotes are co\ +nsidered quoted \(this is POSIX interpretation 221\))180 518.4 Q F1 +(compat42)108 535.2 Q F0<83>144 547.2 Q 1.056(the replacement string in\ + double-quoted pattern substitution does not under)180 547.2 R 1.055 +(go quote re-)-.18 F(mo)180 559.2 Q -.25(va)-.15 G(l, as it does in v) +.25 E(ersions after bash-4.2)-.15 E<83>144 571.2 Q .021 +(in posix mode, single quotes are considered special when e)180 571.2 R +.021(xpanding the)-.15 F F4(wor)2.521 E(d)-.37 E F0 .021(portion of a) +2.521 F .018(double-quoted parameter e)180 583.2 R .017 (xpansion and can be used to quote a closing brace or other spe-)-.15 F -.999(cial character \(this is part of POSIX interpretation 221\); in la\ -ter v)180 108 R .998(ersions, single quotes)-.15 F -(are not special within double-quoted w)180 120 Q(ord e)-.1 E(xpansions) --.15 E/F2 10/Times-Bold@0 SF(compat43)108 136.8 Q F0<83>144 148.8 Q 1.07 -(the shell does not print a w)180 148.8 R 1.071 -(arning message if an attempt is made to use a quoted com-)-.1 F .249 -(pound assignment as an ar)180 160.8 R .248 -(gument to declare \(declare -a foo='\(1 2\)'\). Later v)-.18 F .248 -(ersions w)-.15 F(arn)-.1 E(that this usage is deprecated)180 172.8 Q -<83>144 184.8 Q -.1(wo)180 184.8 S .5(rd e).1 F .501 +.998(cial character \(this is part of POSIX interpretation 221\); in la\ +ter v)180 595.2 R .999(ersions, single quotes)-.15 F +(are not special within double-quoted w)180 607.2 Q(ord e)-.1 E +(xpansions)-.15 E F1(compat43)108 624 Q F0<83>144 636 Q 1.071 +(the shell does not print a w)180 636 R 1.07 +(arning message if an attempt is made to use a quoted com-)-.1 F .71 +(pound assignment as an ar)180 648 R .711 +(gument to declare \(e.g., declare -a foo=\010\(1 2\)\010\). Later v) +-.18 F(ersions)-.15 E -.1(wa)180 660 S(rn that this usage is deprecated) +.1 E<83>144 672 Q -.1(wo)180 672 S .501(rd e).1 F .501 (xpansion errors are considered non-f)-.15 F .501 -(atal errors that cause the current command to)-.1 F -.1(fa)180 196.8 S +(atal errors that cause the current command to)-.1 F -.1(fa)180 684 S .605(il, e).1 F -.15(ve)-.25 G 3.105(ni).15 G 3.105(np)-3.105 G .605 (osix mode \(the def)-3.105 F .605(ault beha)-.1 F .605(vior is to mak) -.2 F 3.105(et)-.1 G .605(hem f)-3.105 F .605 -(atal errors that cause the)-.1 F(shell to e)180 208.8 Q(xit\))-.15 E -<83>144 220.8 Q .354(when e)180 220.8 R -.15(xe)-.15 G .354 -(cuting a shell function, the loop state \(while/until/etc.\)).15 F .355 -(is not reset, so)5.354 F F2(br)2.855 E(eak)-.18 E F0(or)2.855 E F2 -(continue)180 232.8 Q F0 .052 +(atal errors that cause the)-.1 F(shell to e)180 696 Q(xit\))-.15 E<83> +144 708 Q .355(when e)180 708 R -.15(xe)-.15 G .354 +(cuting a shell function, the loop state \(while/until/etc.\)).15 F .354 +(is not reset, so)5.354 F F1(br)2.854 E(eak)-.18 E F0(or)2.854 E F1 +(continue)180 720 Q F0 .052 (in that function will break or continue loops in the calling conte) -2.553 F .052(xt. Bash-4.4 and)-.15 F(later reset the loop state to pre) -180 244.8 Q -.15(ve)-.25 G(nt this).15 E F2(compat44)108 261.6 Q F0<83> -144 273.6 Q .719(the shell sets up the v)180 273.6 R .719(alues used by) --.25 F/F3 9/Times-Bold@0 SF -.27(BA)3.219 G(SH_ARGV).27 E F0(and)2.969 E -F3 -.27(BA)3.219 G(SH_ARGC).27 E F0 .719(so the)2.969 F 3.219(yc)-.15 G -.719(an e)-3.219 F(xpand)-.15 E(to the shell')180 285.6 Q 2.5(sp)-.55 G -(ositional parameters e)-2.5 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(fe)-2.5 G -(xtended deb)-2.65 E(ugging mode is not enabled)-.2 E<83>144 297.6 Q -2.635(as)180 297.6 S .135(ubshell inherits loops from its parent conte) --2.635 F .135(xt, so)-.15 F F2(br)2.635 E(eak)-.18 E F0(or)2.635 E F2 -(continue)2.634 E F0 .134(will cause the sub-)2.634 F(shell to e)180 -309.6 Q 2.5(xit. Bash-5.0)-.15 F(and later reset the loop state to pre) -2.5 E -.15(ve)-.25 G(nt the e).15 E(xit)-.15 E<83>144 321.6 Q -.25(va) -180 321.6 S .618(riable assignments preceding b).25 F .618(uiltins lik) --.2 F(e)-.1 E F2(export)3.118 E F0(and)3.118 E F2 -.18(re)3.118 G -(adonly).18 E F0 .618(that set attrib)3.118 F .619(utes con-)-.2 F .12 -(tinue to af)180 333.6 R .12(fect v)-.25 F .119 -(ariables with the same name in the calling en)-.25 F .119(vironment e) --.4 F -.15(ve)-.25 G 2.619(ni).15 G 2.619(ft)-2.619 G .119(he shell is) --2.619 F(not in posix mode)180 345.6 Q F2(compat50)108 362.4 Q F0<83>144 -374.4 Q 1.209(Bash-5.1 changed the w)180 374.4 R(ay)-.1 E F3($RANDOM) -3.709 E F0 1.209(is generated to introduce slightly more random-)3.459 F -1.019(ness. If the shell compatibility le)180 386.4 R -.15(ve)-.25 G -3.518(li).15 G 3.518(ss)-3.518 G 1.018(et to 50 or lo)-3.518 F(wer)-.25 -E 3.518(,i)-.4 G 3.518(tr)-3.518 G -2.15 -.25(ev e)-3.518 H 1.018 -(rts to the method from).25 F .732(bash-5.0 and pre)180 398.4 R .732 -(vious v)-.25 F .733 +2.552 F .053(xt. Bash-4.4 and)-.15 F(GNU Bash 5.2)72 768 Q(2021 No) +136.385 E -.15(ve)-.15 G(mber 22).15 E(26)185.545 E 0 Cg EP +%%Page: 27 27 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E(later reset the loop state to pre)180 84 Q +-.15(ve)-.25 G(nt this).15 E/F1 10/Times-Bold@0 SF(compat44)108 100.8 Q +F0<83>144 112.8 Q .719(the shell sets up the v)180 112.8 R .719 +(alues used by)-.25 F/F2 9/Times-Bold@0 SF -.27(BA)3.219 G(SH_ARGV).27 E +F0(and)2.969 E F2 -.27(BA)3.219 G(SH_ARGC).27 E F0 .719(so the)2.969 F +3.218(yc)-.15 G .718(an e)-3.218 F(xpand)-.15 E(to the shell')180 124.8 +Q 2.5(sp)-.55 G(ositional parameters e)-2.5 E -.15(ve)-.25 G 2.5(ni).15 +G 2.5(fe)-2.5 G(xtended deb)-2.65 E(ugging mode is not enabled)-.2 E<83> +144 136.8 Q 2.634(as)180 136.8 S .134 +(ubshell inherits loops from its parent conte)-2.634 F .135(xt, so)-.15 +F F1(br)2.635 E(eak)-.18 E F0(or)2.635 E F1(continue)2.635 E F0 .135 +(will cause the sub-)2.635 F(shell to e)180 148.8 Q 2.5(xit. Bash-5.0) +-.15 F(and later reset the loop state to pre)2.5 E -.15(ve)-.25 G +(nt the e).15 E(xit)-.15 E<83>144 160.8 Q -.25(va)180 160.8 S .619 +(riable assignments preceding b).25 F .618(uiltins lik)-.2 F(e)-.1 E F1 +(export)3.118 E F0(and)3.118 E F1 -.18(re)3.118 G(adonly).18 E F0 .618 +(that set attrib)3.118 F .618(utes con-)-.2 F .119(tinue to af)180 172.8 +R .119(fect v)-.25 F .119(ariables with the same name in the calling en) +-.25 F .12(vironment e)-.4 F -.15(ve)-.25 G 2.62(ni).15 G 2.62(ft)-2.62 +G .12(he shell is)-2.62 F(not in posix mode)180 184.8 Q F1(compat50)108 +201.6 Q F0<83>144 213.6 Q 1.209(Bash-5.1 changed the w)180 213.6 R(ay) +-.1 E F2($RANDOM)3.709 E F0 1.209 +(is generated to introduce slightly more random-)3.459 F 1.018 +(ness. If the shell compatibility le)180 225.6 R -.15(ve)-.25 G 3.518 +(li).15 G 3.518(ss)-3.518 G 1.018(et to 50 or lo)-3.518 F(wer)-.25 E +3.518(,i)-.4 G 3.518(tr)-3.518 G -2.15 -.25(ev e)-3.518 H 1.019 +(rts to the method from).25 F .733(bash-5.0 and pre)180 237.6 R .733 +(vious v)-.25 F .732 (ersions, so seeding the random number generator by assigning a)-.15 F --.25(va)180 410.4 S(lue to).25 E F3(RANDOM)2.5 E F0 -(will produce the same sequence as in bash-5.0)2.25 E<83>144 422.4 Q -.696(If the command hash table is empty)180 422.4 R 3.196(,b)-.65 G .696 -(ash v)-3.196 F .695(ersions prior to bash-5.1 printed an informa-)-.15 -F 1.32(tional message to that ef)180 434.4 R 1.321(fect, e)-.25 F -.15 +-.25(va)180 249.6 S(lue to).25 E F2(RANDOM)2.5 E F0 +(will produce the same sequence as in bash-5.0)2.25 E<83>144 261.6 Q +.695(If the command hash table is empty)180 261.6 R 3.196(,b)-.65 G .696 +(ash v)-3.196 F .696(ersions prior to bash-5.1 printed an informa-)-.15 +F 1.321(tional message to that ef)180 273.6 R 1.321(fect, e)-.25 F -.15 (ve)-.25 G 3.821(nw).15 G 1.321 (hen producing output that can be reused as input.)-3.821 F -(Bash-5.1 suppresses that message when the)180 446.4 Q F22.5 E F0 -(option is supplied.)2.5 E/F4 10.95/Times-Bold@0 SF(SEE ALSO)72 463.2 Q -F0(bash\(1\), sh\(1\))108 475.2 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20) -149.565 E(26)198.725 E 0 Cg EP +(Bash-5.1 suppresses that message when the)180 285.6 Q F12.5 E F0 +(option is supplied.)2.5 E F1(compat51)108 302.4 Q F0<83>144 314.4 Q +(The)180 314.4 Q F1(unset)2.954 E F0 -.2(bu)2.954 G .454 +(iltin treats attempts to unset array subscripts).2 F F1(@)2.955 E F0 +(and)2.955 E F1(*)2.955 E F0(dif)2.955 E .455(ferently depending)-.25 F +(on whether the array is inde)180 326.4 Q -.15(xe)-.15 G 2.5(do).15 G +2.5(ra)-2.5 G(ssociati)-2.5 E -.15(ve)-.25 G 2.5(,a).15 G(nd dif)-2.5 E +(ferently than in pre)-.25 E(vious v)-.25 E(ersions.)-.15 E/F3 10.95 +/Times-Bold@0 SF(SEE ALSO)72 343.2 Q F0(bash\(1\), sh\(1\))108 355.2 Q +(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E +(27)185.545 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/rbash.0 b/doc/rbash.0 index b602a7022..96845d0c2 100644 --- a/doc/rbash.0 +++ b/doc/rbash.0 @@ -48,11 +48,12 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL +o specifying the --pp option to the ccoommmmaanndd builtin command - +o turning off restricted mode with sseett ++rr or sseett ++oo rreessttrriicctteedd. + +o turning off restricted mode with sseett ++rr or sshhoopptt --uu rree-- + ssttrriicctteedd__sshheellll. These restrictions are enforced after any startup files are read. - When a command that is found to be a shell script is executed, rrbbaasshh + When a command that is found to be a shell script is executed, rrbbaasshh turns off any restrictions in the shell spawned to execute the script. SSEEEE AALLSSOO @@ -60,4 +61,4 @@ SSEEEE AALLSSOO -GNU Bash-4.0 2004 Apr 20 RBASH(1) +Bash-5.2 2021 November 22 RBASH(1) diff --git a/doc/rbash.1 b/doc/rbash.1 index 56e38fd03..39309b4cb 100644 --- a/doc/rbash.1 +++ b/doc/rbash.1 @@ -1,4 +1,4 @@ -.TH RBASH 1 "2004 Apr 20" "GNU Bash-4.0" +.TH RBASH 1 "2021 November 22" "Bash-5.2" .SH NAME rbash \- restricted bash, see \fBbash\fR(1) .SH RESTRICTED SHELL diff --git a/doc/rbash.ps b/doc/rbash.ps index 45c9f66be..06fe883dc 100644 --- a/doc/rbash.ps +++ b/doc/rbash.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.4 -%%CreationDate: Wed Nov 18 15:13:06 2020 +%%CreationDate: Mon Sep 19 12:02:42 2022 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%DocumentSuppliedResources: procset grops 1.22 4 @@ -276,15 +276,15 @@ F22.5 E F0(and)2.5 E F22.5 E F0(options to the)2.5 E F2 379.2 Q(specifying the)144 379.2 Q F22.5 E F0(option to the)2.5 E F2(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 396 Q (turning of)144 396 Q 2.5(fr)-.25 G(estricted mode with)-2.5 E F2 -(set +r)2.5 E F0(or)2.5 E F2(set +o r)2.5 E(estricted)-.18 E F0(.)A -(These restrictions are enforced after an)108 412.8 Q 2.5(ys)-.15 G +(set +r)2.5 E F0(or)2.5 E F2(shopt -u r)2.5 E(estricted_shell)-.18 E F0 +(.)A(These restrictions are enforced after an)108 412.8 Q 2.5(ys)-.15 G (tartup \214les are read.)-2.5 E .429 (When a command that is found to be a shell script is e)108 429.6 R -.15 (xe)-.15 G(cuted,).15 E F2(rbash)2.929 E F0 .429(turns of)2.929 F 2.929 (fa)-.25 G .729 -.15(ny r)-2.929 H .429(estrictions in the shell).15 F (spa)108 441.6 Q(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E -F1(SEE ALSO)72 458.4 Q F0(bash\(1\))108 470.4 Q(GNU Bash-4.0)72 768 Q -(2004 Apr 20)148.735 E(1)203.725 E 0 Cg EP +F1(SEE ALSO)72 458.4 Q F0(bash\(1\))108 470.4 Q 157.215(Bash-5.2 2021)72 +768 R(No)2.5 E -.15(ve)-.15 G(mber 22).15 E(1)190.545 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/version.texi b/doc/version.texi index 561a6d0e1..175aa07a9 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -1,11 +1,11 @@ @ignore -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2022 Free Software Foundation, Inc. @end ignore -@set LASTCHANGE Thu Oct 29 16:18:54 EDT 2020 +@set LASTCHANGE Mon Sep 19 11:13:51 EDT 2022 -@set EDITION 5.1 -@set VERSION 5.1 +@set EDITION 5.2 +@set VERSION 5.2 -@set UPDATED 29 October 2020 -@set UPDATED-MONTH October 2020 +@set UPDATED 19 September 2022 +@set UPDATED-MONTH September 2022 diff --git a/error.c b/error.c index 7df4b146c..3e7a2d617 100644 --- a/error.c +++ b/error.c @@ -1,6 +1,6 @@ /* error.c -- Functions for handling errors. */ -/* Copyright (C) 1993-2020 Free Software Foundation, Inc. +/* Copyright (C) 1993-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -294,6 +294,32 @@ internal_inform (format, va_alist) va_end (args); } +void +#if defined (PREFER_STDARG) +internal_debug (const char *format, ...) +#else +internal_debug (format, va_alist) + const char *format; + va_dcl +#endif +{ +#ifdef DEBUG + va_list args; + + error_prolog (1); + fprintf (stderr, _("DEBUG warning: ")); + + SH_VA_START (args, format); + + vfprintf (stderr, format, args); + fprintf (stderr, "\n"); + + va_end (args); +#else + return; +#endif +} + void #if defined (PREFER_STDARG) sys_error (const char *format, ...) diff --git a/error.h b/error.h index 30828095b..785c1deb5 100644 --- a/error.h +++ b/error.h @@ -50,6 +50,9 @@ extern void internal_error PARAMS((const char *, ...)) __attribute__((__format_ /* Report an internal warning. */ extern void internal_warning PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); +/* Report an internal warning for debugging purposes. */ +extern void internal_debug PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); + /* Report an internal informational notice. */ extern void internal_inform PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); @@ -70,4 +73,10 @@ extern void err_badarraysub PARAMS((const char *)); extern void err_unboundvar PARAMS((const char *)); extern void err_readonly PARAMS((const char *)); +#ifdef DEBUG +# define INTERNAL_DEBUG(x) internal_debug x +#else +# define INTERNAL_DEBUG(x) +#endif + #endif /* !_ERROR_H_ */ diff --git a/eval.c b/eval.c index 1d967da1f..17fbf7366 100644 --- a/eval.c +++ b/eval.c @@ -1,6 +1,6 @@ /* eval.c -- reading and evaluating commands. */ -/* Copyright (C) 1996-2020 Free Software Foundation, Inc. +/* Copyright (C) 1996-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -90,12 +90,13 @@ reader_loop () switch (code) { /* Some kind of throw to top_level has occurred. */ - case FORCE_EOF: case ERREXIT: + if (exit_immediately_on_error) + reset_local_contexts (); /* not in a function */ + case FORCE_EOF: case EXITPROG: + case EXITBLTIN: current_command = (COMMAND *)NULL; - if (exit_immediately_on_error) - variable_context = 0; /* not in a function */ EOF_Reached = EOF; goto exec_done; @@ -139,7 +140,7 @@ reader_loop () { if (interactive_shell == 0 && read_but_dont_execute) { - set_exit_status (EXECUTION_SUCCESS); + set_exit_status (last_command_exit_value); dispose_command (global_command); global_command = (COMMAND *)NULL; } diff --git a/examples/functions/autoload.v4 b/examples/functions/autoload.v4 index 7f60563bd..850c61485 100644 --- a/examples/functions/autoload.v4 +++ b/examples/functions/autoload.v4 @@ -427,7 +427,7 @@ NOTES bypass the shim creation and just source in the function's file directly. For a few calls, the overhead of repeatedly running the shim is not expensive, but in a tight loop, it might be. Caveat - Programer. + Programmer. o Although the number of functions in the environment does not change by using 'autoload', the amount of memory they take up can be greatly @@ -453,7 +453,7 @@ NOTES the simplest to implement for -p and -s operations that are not heavily used. - As a consquence of this (and other reasons), the AUTOLOAD* namespace + As a consequence of this (and other reasons), the AUTOLOAD* namespace is reserved for autoloading. Make sure you check any functions that you bring under autoload for use of variables or functions that start with AUTOLOAD and change them. diff --git a/examples/functions/csh-compat b/examples/functions/csh-compat index 54c8488c9..6671ca850 100644 --- a/examples/functions/csh-compat +++ b/examples/functions/csh-compat @@ -1,4 +1,4 @@ -# C-shell compatibilty package. +# C-shell compatibility package. # setenv VAR VALUE function setenv () { diff --git a/examples/loadables/Makefile.in b/examples/loadables/Makefile.in index be46121bd..956f01893 100644 --- a/examples/loadables/Makefile.in +++ b/examples/loadables/Makefile.in @@ -1,7 +1,7 @@ # # Simple makefile for the sample loadable builtins # -# Copyright (C) 1996-2019 Free Software Foundation, Inc. +# Copyright (C) 1996-2022 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -58,6 +58,7 @@ host_os = @host_os@ host_cpu = @host_cpu@ host_vendor = @host_vendor@ +STYLE_CFLAGS = @STYLE_CFLAGS@ CFLAGS = @CFLAGS@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ DEFS = @DEFS@ @@ -76,7 +77,7 @@ INTL_BUILDDIR = ${LIBBUILD}/intl INTL_INC = @INTL_INC@ LIBINTL_H = @LIBINTL_H@ -CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) $(CPPFLAGS) $(CFLAGS) +CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) $(CPPFLAGS) $(CFLAGS) $(STYLE_CFLAGS) # # These values are generated for configure by ${topdir}/support/shobj-conf. @@ -103,8 +104,8 @@ INC = -I. -I.. -I$(topdir) -I$(topdir)/lib -I$(topdir)/builtins -I${srcdir} \ ALLPROG = print truefalse sleep finfo logname basename dirname fdflags \ tty pathchk tee head mkdir rmdir mkfifo mktemp printenv id whoami \ uname sync push ln unlink realpath strftime mypid setpgid seq rm \ - accept csv cut -OTHERPROG = necho hello cat pushd stat asort + accept csv dsv cut stat getconf +OTHERPROG = necho hello cat pushd asort all: $(SHOBJ_STATUS) @@ -191,6 +192,9 @@ head: head.o printenv: printenv.o $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ printenv.o $(SHOBJ_LIBS) +getconf: getconf.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ getconf.o $(SHOBJ_LIBS) + id: id.o $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ id.o $(SHOBJ_LIBS) @@ -218,6 +222,9 @@ realpath: realpath.o csv: csv.o $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ csv.o $(SHOBJ_LIBS) +dsv: dsv.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ dsv.o $(SHOBJ_LIBS) + cut: cut.o $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ cut.o $(SHOBJ_LIBS) @@ -245,7 +252,7 @@ pushd.c: ${topdir}/builtins/pushd.def pushd.o: pushd.c $(RM) $@ - $(SHOBJ_CC) -DHAVE_CONFIG_H -DPUSHD_AND_POPD -DLOADABLE_BUILTIN $(SHOBJ_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(INC) -c -o $@ $< + $(SHOBJ_CC) -Wno-format-security -DHAVE_CONFIG_H -DPUSHD_AND_POPD -DLOADABLE_BUILTIN $(SHOBJ_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(INC) -c -o $@ $< pushd: pushd.o $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ pushd.o $(SHOBJ_LIBS) @@ -258,7 +265,7 @@ mostlyclean: clean -( cd perl && ${MAKE} ${MFLAGS} $@ ) distclean maintainer-clean: clean - $(RM) Makefile Makefile.inc pushd.c + $(RM) Makefile Makefile.inc Makefile.sample pushd.c -( cd perl && ${MAKE} ${MFLAGS} $@ ) installdirs: @@ -266,6 +273,7 @@ installdirs: install-dev: installdirs @$(INSTALL_DATA) Makefile.inc $(DESTDIR)$(loadablesdir)/Makefile.inc + @$(INSTALL_DATA) Makefile.sample $(DESTDIR)$(loadablesdir)/Makefile.sample @$(INSTALL_DATA) $(srcdir)/loadables.h $(DESTDIR)$(loadablesdir)/loadables.h @( cd $(BUILD_DIR) && ${MAKE} ${MFLAGS} DESTDIR="$(DESTDIR)" install-headers) @@ -277,7 +285,8 @@ install-supported: all installdirs install-dev done uninstall-dev: - -$(RM) $(DESTDIR)$(loadablesdir)/Makefile.inc $(DESTDIR)$(loadablesdir)/loadables.h + -$(RM) $(DESTDIR)$(loadablesdir)/Makefile.inc $(DESTDIR)$(loadablesdir)/Makefile.sample + -$(RM) $(DESTDIR)$(loadablesdir)/loadables.h -( cd $(BUILD_DIR) && ${MAKE} ${MFLAGS} DESTDIR="$(DESTDIR)" uninstall-headers) uninstall-supported: uninstall-dev @@ -294,6 +303,7 @@ truefalse.o: truefalse.c accept.o: accept.c sleep.o: sleep.c finfo.o: finfo.c +getconf.o: getconf.c getconf.h logname.o: logname.c basename.o: basename.c dirname.o: dirname.c @@ -306,6 +316,7 @@ necho.o: necho.c hello.o: hello.c cat.o: cat.c csv.o: csv.c +dsv.o: dsv.c cut.o: cut.c printenv.o: printenv.c id.o: id.c diff --git a/examples/loadables/Makefile.inc.in b/examples/loadables/Makefile.inc.in index 8b419a78d..ee3c30357 100644 --- a/examples/loadables/Makefile.inc.in +++ b/examples/loadables/Makefile.inc.in @@ -1,7 +1,7 @@ # # Sample makefile for bash loadable builtin development # -# Copyright (C) 2015 Free Software Foundation, Inc. +# Copyright (C) 2015-2022 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -99,10 +99,3 @@ INC = -I$(headersdir) -I$(headersdir)/include -I$(headersdir)/builtins .c.o: $(SHOBJ_CC) $(SHOBJ_CFLAGS) $(CCFLAGS) $(INC) -c -o $@ $< - -all: example - -example: example.o - $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ example.o $(SHOBJ_LIBS) - -example.o: example.c diff --git a/examples/loadables/Makefile.sample.in b/examples/loadables/Makefile.sample.in new file mode 100644 index 000000000..fe9b06ad5 --- /dev/null +++ b/examples/loadables/Makefile.sample.in @@ -0,0 +1,44 @@ +# +# Sample makefile for bash loadable builtin development +# +# Copyright (C) 2022 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# these should match the ones in Makefile.in (for the make install target) + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +libdir = @libdir@ + +# ${loadablesdir} is where the example loadable builtins and data files +# are installed (make install target in Makefile.in) + +loadablesdir = @loadablesdir@ +DESTDIR = + +# include Makefile.inc for all boilerplate definitions + +include $(DESTDIR)$(loadablesdir)/Makefile.inc + +# here, `example' is the name of the shared object +# replace `example' with the appropriate filename + +all: example + +example: example.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ example.o $(SHOBJ_LIBS) + +example.o: example.c diff --git a/examples/loadables/README b/examples/loadables/README index 6820c9604..c729a6a6b 100644 --- a/examples/loadables/README +++ b/examples/loadables/README @@ -1,11 +1,13 @@ Some examples of ready-to-dynamic-load builtins. Most of the examples given are reimplementations of standard commands whose -execution time is dominated by process startup time. The +execution time is dominated by process startup time. Some exceptions are sleep, which allows you to sleep for fractions of a second, finfo, which provides access to the rest of the elements of the `stat' structure that `test' doesn't let you -see, and pushd/popd/dirs, which allows you to compile them out -of the shell. +see, csv, which allows you to manipulate data from comma-separated +values files, fdflags, which lets you change the flags associated +with one of the shell's file descriptors, and pushd/popd/dirs, which +allows you to compile them out of the shell. All of the new builtins in ksh93 that bash didn't already have are included here, as is the ksh `print' builtin. @@ -40,6 +42,8 @@ without having to search for the right CFLAGS and LDFLAGS. basename.c Return non-directory portion of pathname. cat.c cat(1) replacement with no options - the way cat was intended. +csv.c Process a line of csv data and store it in an indexed array. +cut.c Cut out selected portions of each line of a file. dirname.c Return directory portion of pathname. fdflags.c Change the flag associated with one of bash's open file descriptors. finfo.c Print file info. @@ -52,7 +56,9 @@ logname.c Print login name of current user. Makefile.in Simple makefile for the sample loadable builtins. Makefile.inc.in Sample makefile to use for loadable builtin development. mkdir.c Make directories. -mypid.c Add $MYPID variable, demonstrate use of unload hook functio.n +mkfifo.c Create named pipes. +mktemp.c Make unique temporary file name. +mypid.c Add $MYPID variable, demonstrate use of unload hook function. necho.c echo without options or argument interpretation. pathchk.c Check pathnames for validity and portability. print.c Loadable ksh-93 style print builtin. diff --git a/examples/loadables/accept.c b/examples/loadables/accept.c index 54cf38c8a..ff98423dd 100644 --- a/examples/loadables/accept.c +++ b/examples/loadables/accept.c @@ -30,6 +30,7 @@ #include "bashtypes.h" #include #include +#include #include "typemax.h" #include @@ -44,11 +45,10 @@ int accept_builtin (list) WORD_LIST *list; { - WORD_LIST *l; SHELL_VAR *v; intmax_t iport; int opt; - char *tmoutarg, *fdvar, *rhostvar, *rhost; + char *tmoutarg, *fdvar, *rhostvar, *rhost, *bindaddr; unsigned short uport; int servsock, clisock; struct sockaddr_in server, client; @@ -56,13 +56,16 @@ accept_builtin (list) struct timeval timeval; struct linger linger = { 0, 0 }; - rhostvar = tmoutarg = fdvar = rhost = (char *)NULL; + rhostvar = tmoutarg = fdvar = rhost = bindaddr = (char *)NULL; reset_internal_getopt (); - while ((opt = internal_getopt (list, "r:t:v:")) != -1) + while ((opt = internal_getopt (list, "b:r:t:v:")) != -1) { switch (opt) { + case 'b': + bindaddr = list_optarg; + break; case 'r': rhostvar = list_optarg; break; @@ -125,12 +128,11 @@ accept_builtin (list) memset ((char *)&server, 0, sizeof (server)); server.sin_family = AF_INET; server.sin_port = htons(uport); - server.sin_addr.s_addr = htonl(INADDR_ANY); + server.sin_addr.s_addr = bindaddr ? inet_addr (bindaddr) : htonl(INADDR_ANY); - if (bind (servsock, (struct sockaddr *)&server, sizeof (server)) < 0) + if (server.sin_addr.s_addr == INADDR_NONE) { - builtin_error ("socket bind failure: %s", strerror (errno)); - close (servsock); + builtin_error ("invalid address: %s", strerror (errno)); return (EXECUTION_FAILURE); } @@ -138,6 +140,13 @@ accept_builtin (list) setsockopt (servsock, SOL_SOCKET, SO_REUSEADDR, (void *)&opt, sizeof (opt)); setsockopt (servsock, SOL_SOCKET, SO_LINGER, (void *)&linger, sizeof (linger)); + if (bind (servsock, (struct sockaddr *)&server, sizeof (server)) < 0) + { + builtin_error ("socket bind failure: %s", strerror (errno)); + close (servsock); + return (EXECUTION_FAILURE); + } + if (listen (servsock, 1) < 0) { builtin_error ("listen failure: %s", strerror (errno)); @@ -154,12 +163,12 @@ accept_builtin (list) opt = select (servsock+1, &iofds, 0, 0, &timeval); if (opt < 0) - builtin_error ("select failure: %s", strerror (errno)); + builtin_error ("select failure: %s", strerror (errno)); if (opt <= 0) - { - close (servsock); - return (EXECUTION_FAILURE); - } + { + close (servsock); + return (EXECUTION_FAILURE); + } } clientlen = sizeof (client); @@ -193,7 +202,7 @@ accept_bind_variable (varname, intval) char ibuf[INT_STRLEN_BOUND (int) + 1], *p; p = fmtulong (intval, 10, ibuf, sizeof (ibuf), 0); - v = builtin_bind_variable (varname, p, 0); + v = builtin_bind_variable (varname, p, 0); /* XXX */ if (v == 0 || readonly_p (v) || noassign_p (v)) builtin_error ("%s: cannot set variable", varname); return (v != 0); @@ -205,6 +214,8 @@ char *accept_doc[] = { "This builtin allows a bash script to act as a TCP/IP server.", "", "Options, if supplied, have the following meanings:", + " -b address use ADDRESS as the IP address to listen on; the", + " default is INADDR_ANY", " -t timeout wait TIMEOUT seconds for a connection. TIMEOUT may", " be a decimal number including a fractional portion", " -v varname store the numeric file descriptor of the connected", @@ -229,6 +240,6 @@ struct builtin accept_struct = { accept_builtin, /* function implementing the builtin */ BUILTIN_ENABLED, /* initial flags for builtin */ accept_doc, /* array of long documentation strings. */ - "accept [-t timeout] [-v varname] [-r addrvar ] port", /* usage synopsis; becomes short_doc */ + "accept [-b address] [-t timeout] [-v varname] [-r addrvar ] port", /* usage synopsis; becomes short_doc */ 0 /* reserved for internal use */ }; diff --git a/examples/loadables/cat.c b/examples/loadables/cat.c index be99c4cd9..71685f33b 100644 --- a/examples/loadables/cat.c +++ b/examples/loadables/cat.c @@ -5,7 +5,7 @@ */ /* - Copyright (C) 1999-2009 Free Software Foundation, Inc. + Copyright (C) 1999-2009,2022 Free Software Foundation, Inc. This file is part of GNU Bash. Bash is free software: you can redistribute it and/or modify @@ -36,13 +36,25 @@ extern char *strerror (); extern char **make_builtin_argv (); static int -fcopy(fd) +fcopy(fd, fn) int fd; +char *fn; { - char buf[1024], *s; + char buf[4096], *s; int n, w, e; while (n = read(fd, buf, sizeof (buf))) { + if (n < 0) { + e = errno; + write(2, "cat: read error: ", 18); + write(2, fn, strlen(fn)); + write(2, ": ", 2); + s = strerror(e); + write(2, s, strlen(s)); + write(2, "\n", 1); + return 1; + } + QUIT; w = write(1, buf, n); if (w != n) { e = errno; @@ -52,6 +64,7 @@ int fd; write(2, "\n", 1); return 1; } + QUIT; } return 0; } @@ -65,9 +78,10 @@ char **argv; char *s; if (argc == 1) - return (fcopy(0)); + return (fcopy(0, "standard input")); for (i = r = 1; i < argc; i++) { + QUIT; if (argv[i][0] == '-' && argv[i][1] == '\0') fd = 0; else { @@ -82,10 +96,11 @@ char **argv; continue; } } - r = fcopy(fd); + r = fcopy(fd, argv[i]); if (fd != 0) close(fd); } + QUIT; return (r); } @@ -97,6 +112,7 @@ WORD_LIST *list; int c, r; v = make_builtin_argv(list, &c); + QUIT; r = cat_main(c, v); free(v); diff --git a/examples/loadables/csv.c b/examples/loadables/csv.c index 11228f1ab..75b377257 100644 --- a/examples/loadables/csv.c +++ b/examples/loadables/csv.c @@ -39,9 +39,9 @@ element of array variable CSV, starting at index 0. The format of LINE is as described in RFC 4180. */ static int -csvsplit (csv, line) +csvsplit (csv, line, dstring) SHELL_VAR *csv; - char *line; + char *line, *dstring; { arrayind_t ind; char *field, *prev, *buf, *xbuf; @@ -67,7 +67,7 @@ csvsplit (csv, line) buf[b++] = *field++; /* skip double quote */ else if (qstate == DQUOTE && *field == '"') qstate = NQUOTE; - else if (qstate == NQUOTE && *field == ',') + else if (qstate == NQUOTE && *field == *dstring) break; else /* This copies any text between a closing double quote and the @@ -80,7 +80,7 @@ csvsplit (csv, line) else { buf = prev; - field = prev + strcspn (prev, ","); + field = prev + strcspn (prev, dstring); } delim = *field; @@ -91,10 +91,10 @@ csvsplit (csv, line) *field = delim; - if (delim == ',') + if (delim == *dstring) prev = field + 1; } - while (delim == ','); + while (delim == *dstring); if (xbuf) free (xbuf); @@ -165,7 +165,7 @@ csv_builtin (list) if (csvstring == 0 || *csvstring == 0) return (EXECUTION_SUCCESS); - opt = csvsplit (v, csvstring); + opt = csvsplit (v, csvstring, ","); /* Maybe do something with OPT here, it's the number of fields */ return (rval); diff --git a/examples/loadables/cut.c b/examples/loadables/cut.c index ad9a83357..48f80047d 100644 --- a/examples/loadables/cut.c +++ b/examples/loadables/cut.c @@ -415,10 +415,16 @@ cutfile (v, list, ops) #endif while ((n = zgetline (fd, &line, &llen, '\n', unbuffered_read)) != -1) - cutline (v, line, ops); /* can modify line */ + { + QUIT; + if (line[n] == '\n') + line[n] = '\0'; /* cutline expects no newline terminator */ + cutline (v, line, ops); /* can modify line */ + } if (fd > 0) close (fd); + QUIT; if (l) l = l->next; } diff --git a/examples/loadables/dsv.c b/examples/loadables/dsv.c new file mode 100644 index 000000000..70e59cbc6 --- /dev/null +++ b/examples/loadables/dsv.c @@ -0,0 +1,300 @@ +/* dsv - process a line of delimiter-separated data and populate an indexed + array with the fields */ + +/* + Copyright (C) 2022 Free Software Foundation, Inc. + + 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 . +*/ + +/* See Makefile for compilation details. */ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif +#include "bashansi.h" +#include + +#include "loadables.h" + +#define DSV_ARRAY_DEFAULT "DSV" + +#define NQUOTE 0 +#define DQUOTE 1 +#define SQUOTE 2 + +#define F_SHELLQUOTE 0x01 +#define F_GREEDY 0x02 +#define F_PRESERVE 0x04 + +/* Split LINE into delimiter-separated fields, storing each field into a + separate element of array variable DSV, starting at index 0. The format + of LINE is delimiter-separated values. By default, this splits lines of + CSV data as described in RFC 4180. If *DSTRING is any other value than + ',', this uses that character as a field delimiter. Pass F_SHELLQUOTE in + FLAGS to understand shell-like double-quoting and backslash-escaping in + double quotes instead of the "" CSV behavior, and shell-like single quotes. + Pass F_GREEDY in FLAGS to consume multiple leading and trailing instances + of *DSTRING and consecutive instances of *DSTRING in LINE without creating + null fields. If you want to preserve the quote characters in the generated + fields, pass F_PRESERVE; by default, this removes them. */ +static int +dsvsplit (dsv, line, dstring, flags) + SHELL_VAR *dsv; + char *line, *dstring; + int flags; +{ + arrayind_t ind; + char *field, *prev, *buf, *xbuf; + int delim, qstate; + int b, rval; + + xbuf = 0; + ind = 0; + field = prev = line; + + /* If we want a greedy split, consume leading instances of *DSTRING */ + if (flags & F_GREEDY) + { + while (*prev == *dstring) + prev++; + field = prev; + } + + do + { + if (*prev == '"') + { + if (xbuf == 0) + xbuf = xmalloc (strlen (prev) + 1); + buf = xbuf; + b = 0; + if (flags & F_PRESERVE) + buf[b++] = *prev; + qstate = DQUOTE; + for (field = ++prev; *field; field++) + { + if (qstate == DQUOTE && *field == '"' && field[1] == '"' && (flags & F_SHELLQUOTE) == 0) + buf[b++] = *field++; /* skip double quote */ + else if (qstate == DQUOTE && (flags & F_SHELLQUOTE) && *field == '\\' && strchr (slashify_in_quotes, field[1]) != 0) + buf[b++] = *++field; /* backslash quoted double quote */ + else if (qstate == DQUOTE && *field == '"') + { + qstate = NQUOTE; + if (flags & F_PRESERVE) + buf[b++] = *field; + } + else if (qstate == NQUOTE && *field == *dstring) + break; + else + /* This copies any text between a closing double quote and the + delimiter. If you want to change that, make sure to do the + copy only if qstate == DQUOTE. */ + buf[b++] = *field; + } + buf[b] = '\0'; + } + else if ((flags & F_SHELLQUOTE) && *prev == '\'') + { + if (xbuf == 0) + xbuf = xmalloc (strlen (prev) + 1); + buf = xbuf; + b = 0; + if (flags & F_PRESERVE) + buf[b++] = *prev; + qstate = SQUOTE; + for (field = ++prev; *field; field++) + { + if (qstate == SQUOTE && *field == '\'') + { + qstate = NQUOTE; + if (flags & F_PRESERVE) + buf[b++] = *field; + } + else if (qstate == NQUOTE && *field == *dstring) + break; + else + /* This copies any text between a closing single quote and the + delimiter. If you want to change that, make sure to do the + copy only if qstate == SQUOTE. */ + buf[b++] = *field; + } + buf[b] = '\0'; + } + else + { + buf = prev; + field = prev + strcspn (prev, dstring); + } + + delim = *field; + *field = '\0'; + + if ((flags & F_GREEDY) == 0 || buf[0]) + { + bind_array_element (dsv, ind, buf, 0); + ind++; + } + + *field = delim; + + if (delim == *dstring) + prev = field + 1; + } + while (delim == *dstring); + + if (xbuf) + free (xbuf); + + return (rval = ind); /* number of fields */ +} + +int +dsv_builtin (list) + WORD_LIST *list; +{ + int opt, rval, flags; + char *array_name, *dsvstring, *delims; + SHELL_VAR *v; + + array_name = 0; + rval = EXECUTION_SUCCESS; + + delims = ","; + flags = 0; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "a:d:Sgp")) != -1) + { + switch (opt) + { + case 'a': + array_name = list_optarg; + break; + case 'd': + delims = list_optarg; + break; + case 'S': + flags |= F_SHELLQUOTE; + break; + case 'g': + flags |= F_GREEDY; + break; + case 'p': + flags |= F_PRESERVE; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (array_name == 0) + array_name = DSV_ARRAY_DEFAULT; + + if (legal_identifier (array_name) == 0) + { + sh_invalidid (array_name); + return (EXECUTION_FAILURE); + } + + if (list == 0) + { + builtin_error ("dsv string argument required"); + return (EX_USAGE); + } + + v = find_or_make_array_variable (array_name, 1); + if (v == 0 || readonly_p (v) || noassign_p (v)) + { + if (v && readonly_p (v)) + err_readonly (array_name); + return (EXECUTION_FAILURE); + } + else if (array_p (v) == 0) + { + builtin_error ("%s: not an indexed array", array_name); + return (EXECUTION_FAILURE); + } + if (invisible_p (v)) + VUNSETATTR (v, att_invisible); + array_flush (array_cell (v)); + + dsvstring = list->word->word; + + if (dsvstring == 0 || *dsvstring == 0) + return (EXECUTION_SUCCESS); + + opt = dsvsplit (v, dsvstring, delims, flags); + /* Maybe do something with OPT here, it's the number of fields */ + + return (rval); +} + +/* Called when builtin is enabled and loaded from the shared object. If this + function returns 0, the load fails. */ +int +dsv_builtin_load (name) + char *name; +{ + return (1); +} + +/* Called when builtin is disabled. */ +void +dsv_builtin_unload (name) + char *name; +{ +} + +char *dsv_doc[] = { + "Read delimiter-separated fields from STRING.", + "", + "Parse STRING, a line of delimiter-separated values, into individual", + "fields, and store them into the indexed array ARRAYNAME starting at", + "index 0. The parsing understands and skips over double-quoted strings. ", + "If ARRAYNAME is not supplied, \"DSV\" is the default array name.", + "If the delimiter is a comma, the default, this parses comma-", + "separated values as specified in RFC 4180.", + "", + "The -d option specifies the delimiter. The delimiter is the first", + "character of the DELIMS argument. Specifying a DELIMS argument that", + "contains more than one character is not supported and will produce", + "unexpected results. The -S option enables shell-like quoting: double-", + "quoted strings can contain backslashes preceding special characters,", + "and the backslash will be removed; and single-quoted strings are", + "processed as the shell would process them. The -g option enables a", + "greedy split: sequences of the delimiter are skipped at the beginning", + "and end of STRING, and consecutive instances of the delimiter in STRING", + "do not generate empty fields. If the -p option is supplied, dsv leaves", + "quote characters as part of the generated field; otherwise they are", + "removed.", + "", + "The return value is 0 unless an invalid option is supplied or the ARRAYNAME", + "argument is invalid or readonly.", + (char *)NULL +}; + +struct builtin dsv_struct = { + "dsv", /* builtin name */ + dsv_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + dsv_doc, /* array of long documentation strings. */ + "dsv [-a ARRAYNAME] [-d DELIMS] [-Sgp] string", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/examples/loadables/fdflags.c b/examples/loadables/fdflags.c index fbe52304c..9f2d089f9 100644 --- a/examples/loadables/fdflags.c +++ b/examples/loadables/fdflags.c @@ -3,7 +3,7 @@ /* See Makefile for compilation details. */ /* - Copyright (C) 2017,2018,2019 Free Software Foundation, Inc. + Copyright (C) 2017-2022 Free Software Foundation, Inc. This file is part of GNU Bash. Bash is free software: you can redistribute it and/or modify @@ -102,7 +102,7 @@ static const struct # define ALLFLAGS (O_APPEND|O_ASYNC|O_SYNC|O_NONBLOCK|O_FSYNC|O_DSYNC|\ O_RSYNC|O_ALT_IO|O_DIRECT|O_NOATIME|O_NOSIGPIPE) -/* An unsed bit in the file status flags word we can use to pass around the +/* An unused bit in the file status flags word we can use to pass around the state of close-on-exec. */ # define O_CLOEXEC ((~ALLFLAGS) ^ ((~ALLFLAGS) & ((~ALLFLAGS) - 1))) #endif diff --git a/examples/loadables/getconf.c b/examples/loadables/getconf.c new file mode 100644 index 000000000..75a0a5679 --- /dev/null +++ b/examples/loadables/getconf.c @@ -0,0 +1,1163 @@ +/* Copyright (C) 1991-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published + by the Free Software Foundation; version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +/* Modified by Chet Ramey for inclusion in bash. */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "typemax.h" +#include "loadables.h" +#include "getconf.h" + +#ifndef errno +extern int errno; +#endif + +/* Hack to `encode' values wider than long into a conf_variable */ +#define VAL_LLONG_MIN -1000 +#define VAL_LLONG_MAX -1001 +#define VAL_ULLONG_MAX -1002 +#define VAL_ULONG_MAX -1003 +#define VAL_SSIZE_MAX -1004 +#define VAL_SIZE_MAX -1005 + +struct conf + { + const char *name; + const long call_name; /* or value for CONSTANT */ + const enum { SYSCONF, CONFSTR, PATHCONF, CONSTANT, UNDEFINED } call; + }; + +static const struct conf vars[] = + { +#ifdef _PC_LINK_MAX + { "LINK_MAX", _PC_LINK_MAX, PATHCONF }, + { "_POSIX_LINK_MAX", _PC_LINK_MAX, PATHCONF }, +#else + { "LINK_MAX", _POSIX_LINK_MAX, CONSTANT }, + { "_POSIX_LINK_MAX", _POSIX_LINK_MAX, CONSTANT }, +#endif +#ifdef _PC_MAX_CANON + { "MAX_CANON", _PC_MAX_CANON, PATHCONF }, + { "_POSIX_MAX_CANON", _PC_MAX_CANON, PATHCONF }, +#else + { "MAX_CANON", _POSIX_MAX_CANON, CONSTANT }, + { "_POSIX_MAX_CANON", _POSIX_MAX_CANON, CONSTANT }, +#endif +#ifdef _PC_MAX_INPUT + { "MAX_INPUT", _PC_MAX_INPUT, PATHCONF }, + { "_POSIX_MAX_INPUT", _PC_MAX_INPUT, PATHCONF }, +#else + { "MAX_INPUT", _POSIX_MAX_INPUT, CONSTANT }, + { "_POSIX_MAX_INPUT", _POSIX_MAX_INPUT, CONSTANT }, +#endif +#ifdef _PC_NAME_MAX + { "NAME_MAX", _PC_NAME_MAX, PATHCONF }, + { "_POSIX_NAME_MAX", _PC_NAME_MAX, PATHCONF }, +#else + { "NAME_MAX", _POSIX_NAME_MAX, CONSTANT }, + { "_POSIX_NAME_MAX", _POSIX_NAME_MAX, CONSTANT }, +#endif +#ifdef _PC_PATH_MAX + { "PATH_MAX", _PC_PATH_MAX, PATHCONF }, + { "_POSIX_PATH_MAX", _PC_PATH_MAX, PATHCONF }, +#else + { "PATH_MAX", _POSIX_PATH_MAX, CONSTANT }, + { "_POSIX_PATH_MAX", _POSIX_PATH_MAX, CONSTANT }, +#endif +#ifdef _PC_PIPE_BUF + { "PIPE_BUF", _PC_PIPE_BUF, PATHCONF }, + { "_POSIX_PIPE_BUF", _PC_PIPE_BUF, PATHCONF }, +#else + { "PIPE_BUF", _POSIX_PIPE_BUF, CONSTANT }, + { "_POSIX_PIPE_BUF", _POSIX_PIPE_BUF, CONSTANT }, +#endif +#ifdef _PC_SOCK_MAXBUF + { "SOCK_MAXBUF", _PC_SOCK_MAXBUF, PATHCONF }, +#endif +#ifdef _PC_ASYNC_IO + { "_POSIX_ASYNC_IO", _PC_ASYNC_IO, PATHCONF }, +#endif + { "_POSIX_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED, PATHCONF }, + { "_POSIX_NO_TRUNC", _PC_NO_TRUNC, PATHCONF }, +#ifdef _PC_PRIO_IO + { "_POSIX_PRIO_IO", _PC_PRIO_IO, PATHCONF }, +#endif +#ifdef _PC_SYNC_IO + { "_POSIX_SYNC_IO", _PC_SYNC_IO, PATHCONF }, +#endif + { "_POSIX_VDISABLE", _PC_VDISABLE, PATHCONF }, + + { "ARG_MAX", _SC_ARG_MAX, SYSCONF }, + { "ATEXIT_MAX", _SC_ATEXIT_MAX, SYSCONF }, +#ifdef _SC_CHAR_BIT + { "CHAR_BIT", _SC_CHAR_BIT, SYSCONF }, +#else + { "CHAR_BIT", CHAR_BIT, CONSTANT }, +#endif +#ifdef _SC_CHAR_MAX + { "CHAR_MAX", _SC_CHAR_MAX, SYSCONF }, +#else + { "CHAR_BIT", CHAR_MAX, CONSTANT }, +#endif +#ifdef _SC_CHAR_MIN + { "CHAR_MIN", _SC_CHAR_MIN, SYSCONF }, +#else + { "CHAR_MIN", CHAR_MIN, CONSTANT }, +#endif + { "CHILD_MAX", _SC_CHILD_MAX, SYSCONF }, + { "CLK_TCK", _SC_CLK_TCK, SYSCONF }, +#ifdef _SC_INT_BIT + { "INT_BIT", _SC_INT_BIT, SYSCONF }, +#else + { "INT_BIT", INT_BIT, CONSTANT }, +#endif +#ifdef _SC_INT_MAX + { "INT_MAX", _SC_INT_MAX, SYSCONF }, +#else + { "INT_MAX", INT_MAX, CONSTANT }, +#endif +#ifdef _SC_INT_MIN + { "INT_MIN", _SC_INT_MIN, SYSCONF }, +#else + { "INT_MIN", INT_MIN, CONSTANT }, +#endif +#ifdef _SC_UIO_MAXIOV + { "IOV_MAX", _SC_UIO_MAXIOV, SYSCONF }, +#endif + { "LOGNAME_MAX", _SC_LOGIN_NAME_MAX, SYSCONF }, +#ifdef _SC_LONG_BIT + { "LONG_BIT", _SC_LONG_BIT, SYSCONF }, +#else + { "LONG_BIT", LONG_BIT, CONSTANT }, +#endif + { "LONG_MIN", LONG_MIN, CONSTANT }, + { "LONG_MAX", LONG_MAX, CONSTANT }, +#if HAVE_LONG_LONG_INT + { "LLONG_MIN", VAL_LLONG_MIN, CONSTANT }, + { "LLONG_MAX", VAL_LLONG_MAX, CONSTANT }, +#else + { "LLONG_MIN", LLONG_MIN, CONSTANT }, + { "LLONG_MAX", LLONG_MAX, CONSTANT }, +#endif +#ifdef _SC_MB_LEN_MAX + { "MB_LEN_MAX", _SC_MB_LEN_MAX, SYSCONF }, +#else + { "MB_LEN_MAX", MB_LEN_MAX, CONSTANT }, +#endif + { "NGROUPS_MAX", _SC_NGROUPS_MAX, SYSCONF }, +#ifdef _SC_NL_ARGMAX + { "NL_ARGMAX", _SC_NL_ARGMAX, SYSCONF }, +#endif +#ifdef _SC_NL_LANGMAX + { "NL_LANGMAX", _SC_NL_LANGMAX, SYSCONF }, +#endif +#ifdef _SC_NL_MSGMAX + { "NL_MSGMAX", _SC_NL_MSGMAX, SYSCONF }, +#endif +#ifdef _SC_NL_NMAX + { "NL_NMAX", _SC_NL_NMAX, SYSCONF }, +#endif +#ifdef _SC_NL_SETMAX + { "NL_SETMAX", _SC_NL_SETMAX, SYSCONF }, +#endif +#ifdef _SC_NL_TEXTMAX + { "NL_TEXTMAX", _SC_NL_TEXTMAX, SYSCONF }, +#endif + { "NSS_BUFLEN_GROUP", _SC_GETGR_R_SIZE_MAX, SYSCONF }, + { "NSS_BUFLEN_PASSWD", _SC_GETPW_R_SIZE_MAX, SYSCONF }, +#ifdef _SC_NZERO + { "NZERO", _SC_NZERO, SYSCONF }, +#endif + { "OPEN_MAX", _SC_OPEN_MAX, SYSCONF }, + { "PAGESIZE", _SC_PAGESIZE, SYSCONF }, + { "PAGE_SIZE", _SC_PAGESIZE, SYSCONF }, +#ifdef _SC_PASS_MAX + { "PASS_MAX", _SC_PASS_MAX, SYSCONF }, +#endif + { "PTHREAD_DESTRUCTOR_ITERATIONS", _SC_THREAD_DESTRUCTOR_ITERATIONS, SYSCONF }, + { "PTHREAD_KEYS_MAX", _SC_THREAD_KEYS_MAX, SYSCONF }, + { "PTHREAD_STACK_MIN", _SC_THREAD_STACK_MIN, SYSCONF }, + { "PTHREAD_THREADS_MAX", _SC_THREAD_THREADS_MAX, SYSCONF }, +#ifdef _SC_SCHAR_MAX + { "SCHAR_MAX", _SC_SCHAR_MAX, SYSCONF }, +#else + { "SCHAR_MAX", SCHAR_MAX, CONSTANT }, +#endif +#ifdef _SC_SCHAR_MIN + { "SCHAR_MIN", _SC_SCHAR_MIN, SYSCONF }, +#else + { "SCHAR_MIN", SCHAR_MIN, CONSTANT }, +#endif +#ifdef _SC_SHRT_MAX + { "SHRT_MAX", _SC_SHRT_MAX, SYSCONF }, +#else + { "SHRT_MAX", SHRT_MAX, CONSTANT }, +#endif +#ifdef _SC_SHRT_MIN + { "SHRT_MIN", _SC_SHRT_MIN, SYSCONF }, +#else + { "SHRT_MIN", SHRT_MIN, CONSTANT }, +#endif +#ifdef _SC_SIZE_MAX + { "SIZE_MAX", _SC_SIZE_MAX, SYSCONF }, +#else + { "SIZE_MAX", VAL_SIZE_MAX, CONSTANT }, +#endif +#ifdef _SC_SSIZE_MAX + { "SSIZE_MAX", _SC_SSIZE_MAX, SYSCONF }, +#elif SIZEOF_SIZE_MAX == 8 + { "SSIZE_MAX", VAL_SSIZE_MAX, CONSTANT }, +#else + { "SSIZE_MAX", VAL_SSIZE_MAX, CONSTANT }, +#endif + { "TTY_NAME_MAX", _SC_TTY_NAME_MAX, SYSCONF }, + { "TZNAME_MAX", _SC_TZNAME_MAX, SYSCONF }, +#ifdef _SC_UCHAR_MAX + { "UCHAR_MAX", _SC_UCHAR_MAX, SYSCONF }, +#else + { "UCHAR_MAX", UCHAR_MAX, CONSTANT }, +#endif +#ifdef _SC_UINT_MAX + { "UINT_MAX", _SC_UINT_MAX, SYSCONF }, +#else + { "UINT_MAX", UINT_MAX, CONSTANT }, +#endif +#ifdef _SC_UIO_MAXIOV + { "UIO_MAXIOV", _SC_UIO_MAXIOV, SYSCONF }, +#endif +#ifdef _SC_ULONG_MAX + { "ULONG_MAX", _SC_ULONG_MAX, SYSCONF }, +#else + { "ULONG_MAX", VAL_ULONG_MAX, CONSTANT }, +#endif +#ifdef HAVE_LONG_LONG_INT + { "ULLONG_MAX", VAL_ULLONG_MAX, CONSTANT }, +#endif +#ifdef _SC_USHRT_MAX + { "USHRT_MAX", _SC_USHRT_MAX, SYSCONF }, +#else + { "USHRT_MAX", USHRT_MAX, CONSTANT }, +#endif +#ifdef _SC_WORD_BIT + { "WORD_BIT", _SC_WORD_BIT, SYSCONF }, +#else + { "WORD_BIT", WORD_BIT, CONSTANT }, +#endif +#ifdef _SC_AVPHYS_PAGES + { "_AVPHYS_PAGES", _SC_AVPHYS_PAGES, SYSCONF }, +#endif + { "_NPROCESSORS_CONF", _SC_NPROCESSORS_CONF, SYSCONF }, + { "_NPROCESSORS_ONLN", _SC_NPROCESSORS_ONLN, SYSCONF }, + { "_PHYS_PAGES", _SC_PHYS_PAGES, SYSCONF }, +#ifdef _SC_ARG_MAX + { "_POSIX_ARG_MAX", _SC_ARG_MAX, SYSCONF }, +#else + { "_POSIX_ARG_MAX", _POSIX_ARG_MAX, CONSTANT }, +#endif + { "_POSIX_ASYNCHRONOUS_IO", _SC_ASYNCHRONOUS_IO, SYSCONF }, +#ifdef _SC_CHILD_MAX + { "_POSIX_CHILD_MAX", _SC_CHILD_MAX, SYSCONF }, +#else + { "_POSIX_CHILD_MAX", _POSIX_CHILD_MAX, CONSTANT }, +#endif + { "_POSIX_FSYNC", _SC_FSYNC, SYSCONF }, + { "_POSIX_JOB_CONTROL", _SC_JOB_CONTROL, SYSCONF }, + { "_POSIX_MAPPED_FILES", _SC_MAPPED_FILES, SYSCONF }, + { "_POSIX_MEMLOCK", _SC_MEMLOCK, SYSCONF }, + { "_POSIX_MEMLOCK_RANGE", _SC_MEMLOCK_RANGE, SYSCONF }, + { "_POSIX_MEMORY_PROTECTION", _SC_MEMORY_PROTECTION, SYSCONF }, + { "_POSIX_MESSAGE_PASSING", _SC_MESSAGE_PASSING, SYSCONF }, + { "_POSIX_NGROUPS_MAX", _SC_NGROUPS_MAX, SYSCONF }, + { "_POSIX_OPEN_MAX", _SC_OPEN_MAX, SYSCONF }, +#ifdef _SC_PII + { "_POSIX_PII", _SC_PII, SYSCONF }, +#endif +#ifdef _SC_PII_INTERNET + { "_POSIX_PII_INTERNET", _SC_PII_INTERNET, SYSCONF }, +#endif +#ifdef _SC_PII_INTERNET_DGRAM + { "_POSIX_PII_INTERNET_DGRAM", _SC_PII_INTERNET_DGRAM, SYSCONF }, +#endif +#ifdef _SC_PII_INTERNET_STREAM + { "_POSIX_PII_INTERNET_STREAM", _SC_PII_INTERNET_STREAM, SYSCONF }, +#endif +#ifdef _SC_PII_OSI + { "_POSIX_PII_OSI", _SC_PII_OSI, SYSCONF }, +#endif +#ifdef _SC_PII_OSI_CLTS + { "_POSIX_PII_OSI_CLTS", _SC_PII_OSI_CLTS, SYSCONF }, +#endif +#ifdef _SC_PII_OSI_COTS + { "_POSIX_PII_OSI_COTS", _SC_PII_OSI_COTS, SYSCONF }, +#endif +#ifdef _SC_PII_OSI_M + { "_POSIX_PII_OSI_M", _SC_PII_OSI_M, SYSCONF }, +#endif +#ifdef _SC_PII_SOCKET + { "_POSIX_PII_SOCKET", _SC_PII_SOCKET, SYSCONF }, +#endif +#ifdef _SC_PII_XTI + { "_POSIX_PII_XTI", _SC_PII_XTI, SYSCONF }, +#endif +#ifdef _SC_POLL + { "_POSIX_POLL", _SC_POLL, SYSCONF }, +#endif +#ifdef _SC_PRIORITIZED_IO + { "_POSIX_PRIORITIZED_IO", _SC_PRIORITIZED_IO, SYSCONF }, +#endif + { "_POSIX_PRIORITY_SCHEDULING", _SC_PRIORITY_SCHEDULING, SYSCONF }, + { "_POSIX_REALTIME_SIGNALS", _SC_REALTIME_SIGNALS, SYSCONF }, + { "_POSIX_SAVED_IDS", _SC_SAVED_IDS, SYSCONF }, +#ifdef _SC_SELECT + { "_POSIX_SELECT", _SC_SELECT, SYSCONF }, +#endif + { "_POSIX_SEMAPHORES", _SC_SEMAPHORES, SYSCONF }, + { "_POSIX_SHARED_MEMORY_OBJECTS", _SC_SHARED_MEMORY_OBJECTS, SYSCONF }, +#ifdef _SC_SSIZE_MAX + { "_POSIX_SSIZE_MAX", _SC_SSIZE_MAX, SYSCONF }, +#elif SIZEOF_SIZE_T == 8 + { "_POSIX_SSIZE_MAX", VAL_SSIZE_MAX, CONSTANT }, +#else + { "_POSIX_SSIZE_MAX", VAL_SSIZE_MAX, CONSTANT }, +#endif +#ifdef _SC_STREAM_MAX + { "_POSIX_STREAM_MAX", _SC_STREAM_MAX, SYSCONF }, +#else + { "_POSIX_STREAM_MAX", _POSIX_STREAM_MAX, CONSTANT }, +#endif + { "_POSIX_SYNCHRONIZED_IO", _SC_SYNCHRONIZED_IO, SYSCONF }, + { "_POSIX_THREADS", _SC_THREADS, SYSCONF }, + { "_POSIX_THREAD_ATTR_STACKADDR", _SC_THREAD_ATTR_STACKADDR, SYSCONF }, + { "_POSIX_THREAD_ATTR_STACKSIZE", _SC_THREAD_ATTR_STACKSIZE, SYSCONF }, + { "_POSIX_THREAD_PRIORITY_SCHEDULING", _SC_THREAD_PRIORITY_SCHEDULING, SYSCONF }, + { "_POSIX_THREAD_PRIO_INHERIT", _SC_THREAD_PRIO_INHERIT, SYSCONF }, + { "_POSIX_THREAD_PRIO_PROTECT", _SC_THREAD_PRIO_PROTECT, SYSCONF }, +#ifdef _SC_THREAD_ROBUST_PRIO_INHERIT + { "_POSIX_THREAD_ROBUST_PRIO_INHERIT", _SC_THREAD_ROBUST_PRIO_INHERIT, + SYSCONF }, +#endif +#ifdef _SC_THREAD_ROBUST_PRIO_PROTECT + { "_POSIX_THREAD_ROBUST_PRIO_PROTECT", _SC_THREAD_ROBUST_PRIO_PROTECT, + SYSCONF }, +#endif + { "_POSIX_THREAD_PROCESS_SHARED", _SC_THREAD_PROCESS_SHARED, SYSCONF }, + { "_POSIX_THREAD_SAFE_FUNCTIONS", _SC_THREAD_SAFE_FUNCTIONS, SYSCONF }, + { "_POSIX_TIMERS", _SC_TIMERS, SYSCONF }, + { "TIMER_MAX", _SC_TIMER_MAX, SYSCONF }, +#ifdef _POSIX_TZNAME_MAX + { "_POSIX_TZNAME_MAX", _SC_TZNAME_MAX, SYSCONF }, +#else + { "_POSIX_TZNAME_MAX", _POSIX_TZNAME_MAX, CONSTANT }, +#endif + { "_POSIX_VERSION", _SC_VERSION, SYSCONF }, +#ifdef _SC_T_IOV_MAX + { "_T_IOV_MAX", _SC_T_IOV_MAX, SYSCONF }, +#endif +#ifdef _SC_XOPEN_CRYPT + { "_XOPEN_CRYPT", _SC_XOPEN_CRYPT, SYSCONF }, +#endif +#ifdef _SC_XOPEN_ENH_I18N + { "_XOPEN_ENH_I18N", _SC_XOPEN_ENH_I18N, SYSCONF }, +#endif +#ifdef _SC_XOPEN_LEGACY + { "_XOPEN_LEGACY", _SC_XOPEN_LEGACY, SYSCONF }, +#endif +#ifdef _SC_XOPEN_REALTIME + { "_XOPEN_REALTIME", _SC_XOPEN_REALTIME, SYSCONF }, +#endif +#ifdef _SC_XOPEN_REALTIME_THREADS + { "_XOPEN_REALTIME_THREADS", _SC_XOPEN_REALTIME_THREADS, SYSCONF }, +#endif +#ifdef _SC_XOPEN_SHM + { "_XOPEN_SHM", _SC_XOPEN_SHM, SYSCONF }, +#endif +#ifdef _SC_XOPEN_UNIX + { "_XOPEN_UNIX", _SC_XOPEN_UNIX, SYSCONF }, +#endif +#ifdef _SC_XOPEN_VERSION + { "_XOPEN_VERSION", _SC_XOPEN_VERSION, SYSCONF }, +#endif +#ifdef _SC_XOPEN_XCU_VERSION + { "_XOPEN_XCU_VERSION", _SC_XOPEN_XCU_VERSION, SYSCONF }, +#endif +#ifdef _SC_XOPEN_XPG2 + { "_XOPEN_XPG2", _SC_XOPEN_XPG2, SYSCONF }, +#endif +#ifdef _SC_XOPEN_XPG3 + { "_XOPEN_XPG3", _SC_XOPEN_XPG3, SYSCONF }, +#endif +#ifdef _SC_XOPEN_XPG4 + { "_XOPEN_XPG4", _SC_XOPEN_XPG4, SYSCONF }, +#endif + /* POSIX.2 */ +#ifdef _SC_BC_BASE_MAX + { "BC_BASE_MAX", _SC_BC_BASE_MAX, SYSCONF }, + { "POSIX2_BC_BASE_MAX", _SC_BC_BASE_MAX, SYSCONF }, +#else + { "BC_BASE_MAX", _POSIX2_BC_BASE_MAX, CONSTANT }, +#endif +#ifdef _SC_BC_BASE_MAX + { "BC_DIM_MAX", _SC_BC_DIM_MAX, SYSCONF }, + { "POSIX2_BC_DIM_MAX", _SC_BC_DIM_MAX, SYSCONF }, +#else + { "BC_DIM_MAX", _POSIX2_BC_DIM_MAX, CONSTANT }, +#endif +#ifdef _SC_BC_SCALE_MAX + { "BC_SCALE_MAX", _SC_BC_SCALE_MAX, SYSCONF }, + { "POSIX2_BC_SCALE_MAX", _SC_BC_SCALE_MAX, SYSCONF }, +#else + { "BC_SCALE_MAX", _POSIX2_BC_SCALE_MAX, CONSTANT }, +#endif +#ifdef _SC_BC_STRING_MAX + { "BC_STRING_MAX", _SC_BC_STRING_MAX, SYSCONF }, + { "POSIX2_BC_STRING_MAX", _SC_BC_STRING_MAX, SYSCONF }, +#else + { "BC_STRING_MAX", _POSIX2_BC_STRING_MAX, CONSTANT }, + { "POSIX2_BC_STRING_MAX", _POSIX2_BC_STRING_MAX, CONSTANT }, +#endif +#ifdef _SC_CHARCLASS_NAME_MAX + { "CHARCLASS_NAME_MAX", _SC_CHARCLASS_NAME_MAX, SYSCONF }, +#endif +#ifdef _SC_COLL_WEIGHTS_MAX + { "COLL_WEIGHTS_MAX", _SC_COLL_WEIGHTS_MAX, SYSCONF }, + { "POSIX2_COLL_WEIGHTS_MAX", _SC_COLL_WEIGHTS_MAX, SYSCONF }, +#else + { "COLL_WEIGHTS_MAX", _POSIX2_COLL_WEIGHTS_MAX, CONSTANT }, + { "POSIX2_COLL_WEIGHTS_MAX", _POSIX2_COLL_WEIGHTS_MAX, CONSTANT }, +#endif +#ifdef _SC_EQUIV_CLASS_MAX + { "EQUIV_CLASS_MAX", _SC_EQUIV_CLASS_MAX, SYSCONF }, +#else + { "EQUIV_CLASS_MAX", _POSIX2_EQUIV_CLASS_MAX, CONSTANT }, +#endif +#ifdef _SC_EXPR_NEST_MAX + { "EXPR_NEST_MAX", _SC_EXPR_NEST_MAX, SYSCONF }, + { "POSIX2_EXPR_NEST_MAX", _SC_EXPR_NEST_MAX, SYSCONF }, +#else + { "EXPR_NEST_MAX", _POSIX2_EXPR_NEST_MAX, CONSTANT }, + { "POSIX2_EXPR_NEST_MAX", _POSIX2_EXPR_NEST_MAX, CONSTANT }, +#endif +#ifdef _SC_LINE_MAX + { "LINE_MAX", _SC_LINE_MAX, SYSCONF }, + { "_POSIX2_LINE_MAX", _SC_LINE_MAX, SYSCONF }, + { "POSIX2_LINE_MAX", _SC_LINE_MAX, SYSCONF }, +#else + { "LINE_MAX", _POSIX2_LINE_MAX, CONSTANT }, + { "_POSIX2_LINE_MAX", _POSIX2_LINE_MAX, CONSTANT }, + { "POSIX2_LINE_MAX", _POSIX2_LINE_MAX, CONSTANT }, +#endif +#ifdef _SC_RE_DUP_MAX + { "POSIX2_RE_DUP_MAX", _SC_RE_DUP_MAX, SYSCONF }, + { "RE_DUP_MAX", _SC_RE_DUP_MAX, SYSCONF }, +#else + { "POSIX2_RE_DUP_MAX", _POSIX2_RE_DUP_MAX, CONSTANT }, + { "RE_DUP_MAX", _POSIX2_RE_DUP_MAX, CONSTANT }, +#endif + { "POSIX2_CHAR_TERM", _SC_2_CHAR_TERM, SYSCONF }, + { "POSIX2_C_BIND", _SC_2_C_BIND, SYSCONF }, + { "POSIX2_C_DEV", _SC_2_C_DEV, SYSCONF }, +#ifdef _SC_2_C_VERSION + { "POSIX2_C_VERSION", _SC_2_C_VERSION, SYSCONF }, +#endif + { "POSIX2_FORT_DEV", _SC_2_FORT_DEV, SYSCONF }, + { "POSIX2_FORT_RUN", _SC_2_FORT_RUN, SYSCONF }, + { "POSIX2_LOCALEDEF", _SC_2_LOCALEDEF, SYSCONF }, + { "POSIX2_SW_DEV", _SC_2_SW_DEV, SYSCONF }, + { "POSIX2_UPE", _SC_2_UPE, SYSCONF }, + { "POSIX2_VERSION", _SC_2_VERSION, SYSCONF }, + + { "PATH", _CS_PATH, CONFSTR }, + { "CS_PATH", _CS_PATH, CONFSTR }, + + /* LFS */ +#ifdef _CS_LFS_CFLAGS + { "LFS_CFLAGS", _CS_LFS_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_LFS_LDFLAGS + { "LFS_LDFLAGS", _CS_LFS_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_LFS_LIBS + { "LFS_LIBS", _CS_LFS_LIBS, CONFSTR }, +#endif +#ifdef _CS_LFS_LINTFLAGS + { "LFS_LINTFLAGS", _CS_LFS_LINTFLAGS, CONFSTR }, +#endif +#ifdef _CS_LFS64_CFLAGS + { "LFS64_CFLAGS", _CS_LFS64_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_LFS64_LDFLAGS + { "LFS64_LDFLAGS", _CS_LFS64_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_LFS64_LIBS + { "LFS64_LIBS", _CS_LFS64_LIBS, CONFSTR }, +#endif + +#ifdef _CS_LFS64_LINTFLAGS + { "LFS64_LINTFLAGS", _CS_LFS64_LINTFLAGS, CONFSTR }, +#endif + + /* Programming environments. */ +#ifdef _CS_V5_WIDTH_RESTRICTED_ENVS + { "_XBS5_WIDTH_RESTRICTED_ENVS", _CS_V5_WIDTH_RESTRICTED_ENVS, CONFSTR }, + { "XBS5_WIDTH_RESTRICTED_ENVS", _CS_V5_WIDTH_RESTRICTED_ENVS, CONFSTR }, +#endif + +#ifdef _SC_XBS5_ILP32_OFF32 + { "_XBS5_ILP32_OFF32", _SC_XBS5_ILP32_OFF32, SYSCONF }, +#endif +#ifdef _CS_XBS5_ILP32_OFF32_CFLAGS + { "XBS5_ILP32_OFF32_CFLAGS", _CS_XBS5_ILP32_OFF32_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_XBS5_ILP32_OFF32_LDFLAGS + { "XBS5_ILP32_OFF32_LDFLAGS", _CS_XBS5_ILP32_OFF32_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_XBS5_ILP32_OFF32_LIBS + { "XBS5_ILP32_OFF32_LIBS", _CS_XBS5_ILP32_OFF32_LIBS, CONFSTR }, +#endif +#ifdef _CS_XBS5_ILP32_OFF32_LINTFLAGS + { "XBS5_ILP32_OFF32_LINTFLAGS", _CS_XBS5_ILP32_OFF32_LINTFLAGS, CONFSTR }, +#endif + +#ifdef _SC_XBS5_ILP32_OFFBIG + { "_XBS5_ILP32_OFFBIG", _SC_XBS5_ILP32_OFFBIG, SYSCONF }, +#endif +#ifdef _CS_XBS5_ILP32_OFFBIG_CFLAGS + { "XBS5_ILP32_OFFBIG_CFLAGS", _CS_XBS5_ILP32_OFFBIG_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_XBS5_ILP32_OFFBIG_LDFLAGS + { "XBS5_ILP32_OFFBIG_LDFLAGS", _CS_XBS5_ILP32_OFFBIG_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_XBS5_ILP32_OFFBIG_LIBS + { "XBS5_ILP32_OFFBIG_LIBS", _CS_XBS5_ILP32_OFFBIG_LIBS, CONFSTR }, +#endif +#ifdef _CS_XBS5_ILP32_OFFBIG_LINTFLAGS + { "XBS5_ILP32_OFFBIG_LINTFLAGS", _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, CONFSTR }, +#endif + +#ifdef _SC_XBS5_LP64_OFF64 + { "_XBS5_LP64_OFF64", _SC_XBS5_LP64_OFF64, SYSCONF }, +#endif +#ifdef _CS_XBS5_LP64_OFF64_CFLAGS + { "XBS5_LP64_OFF64_CFLAGS", _CS_XBS5_LP64_OFF64_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_XBS5_LP64_OFF64_LDFLAGS + { "XBS5_LP64_OFF64_LDFLAGS", _CS_XBS5_LP64_OFF64_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_XBS5_LP64_OFF64_LIBS + { "XBS5_LP64_OFF64_LIBS", _CS_XBS5_LP64_OFF64_LIBS, CONFSTR }, +#endif +#ifdef _CS_XBS5_LP64_OFF64_LINTFLAGS + { "XBS5_LP64_OFF64_LINTFLAGS", _CS_XBS5_LP64_OFF64_LINTFLAGS, CONFSTR }, +#endif + +#ifdef _SC_XBS5_LPBIG_OFFBIG + { "_XBS5_LPBIG_OFFBIG", _SC_XBS5_LPBIG_OFFBIG, SYSCONF }, +#endif +#ifdef _CS_XBS5_LPBIG_OFFBIG_CFLAGS + { "XBS5_LPBIG_OFFBIG_CFLAGS", _CS_XBS5_LPBIG_OFFBIG_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_XBS5_LPBIG_OFFBIG_LDFLAGS + { "XBS5_LPBIG_OFFBIG_LDFLAGS", _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_XBS5_LPBIG_OFFBIG_LIBS + { "XBS5_LPBIG_OFFBIG_LIBS", _CS_XBS5_LPBIG_OFFBIG_LIBS, CONFSTR }, +#endif +#ifdef _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS + { "XBS5_LPBIG_OFFBIG_LINTFLAGS", _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, CONFSTR }, +#endif + +#ifdef _SC_V6_ILP32_OFF32 + { "_POSIX_V6_ILP32_OFF32", _SC_V6_ILP32_OFF32, SYSCONF }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFF32_CFLAGS + { "POSIX_V6_ILP32_OFF32_CFLAGS", _CS_POSIX_V6_ILP32_OFF32_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFF32_LDFLAGS + { "POSIX_V6_ILP32_OFF32_LDFLAGS", _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFF32_LIBS + { "POSIX_V6_ILP32_OFF32_LIBS", _CS_POSIX_V6_ILP32_OFF32_LIBS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS + { "POSIX_V6_ILP32_OFF32_LINTFLAGS", _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, CONFSTR }, +#endif + +#ifdef _CS_V6_WIDTH_RESTRICTED_ENVS + { "_POSIX_V6_WIDTH_RESTRICTED_ENVS", _CS_V6_WIDTH_RESTRICTED_ENVS, CONFSTR }, + { "POSIX_V6_WIDTH_RESTRICTED_ENVS", _CS_V6_WIDTH_RESTRICTED_ENVS, CONFSTR }, +#endif + +#ifdef _SC_V6_ILP32_OFFBIG + { "_POSIX_V6_ILP32_OFFBIG", _SC_V6_ILP32_OFFBIG, SYSCONF }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS + { "POSIX_V6_ILP32_OFFBIG_CFLAGS", _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFF32_LDFLAGS + { "POSIX_V6_ILP32_OFFBIG_LDFLAGS", _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFF32_LIBS + { "POSIX_V6_ILP32_OFFBIG_LIBS", _CS_POSIX_V6_ILP32_OFFBIG_LIBS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS + { "POSIX_V6_ILP32_OFFBIG_LINTFLAGS", _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, CONFSTR }, +#endif + +#ifdef _SC_V6_LP64_OFF64 + { "_POSIX_V6_LP64_OFF64", _SC_V6_LP64_OFF64, SYSCONF }, +#endif +#ifdef _CS_POSIX_V6_LP64_OFF64_CFLAGS + { "POSIX_V6_LP64_OFF64_CFLAGS", _CS_POSIX_V6_LP64_OFF64_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_LP64_OFF64_LDFLAGS + { "POSIX_V6_LP64_OFF64_LDFLAGS", _CS_POSIX_V6_LP64_OFF64_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_LP64_OFF64_LIBS + { "POSIX_V6_LP64_OFF64_LIBS", _CS_POSIX_V6_LP64_OFF64_LIBS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_LP64_OFF64_LINTFLAGS + { "POSIX_V6_LP64_OFF64_LINTFLAGS", _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, CONFSTR }, +#endif + +#ifdef _SC_V6_LPBIG_OFFBIG + { "_POSIX_V6_LPBIG_OFFBIG", _SC_V6_LPBIG_OFFBIG, SYSCONF }, +#endif +#ifdef _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS + { "POSIX_V6_LPBIG_OFFBIG_CFLAGS", _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS + { "POSIX_V6_LPBIG_OFFBIG_LDFLAGS", _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LIBS + { "POSIX_V6_LPBIG_OFFBIG_LIBS", _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS + { "POSIX_V6_LPBIG_OFFBIG_LINTFLAGS", _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, CONFSTR }, +#endif + +#ifdef _SC_V7_ILP32_OFF32 + { "_POSIX_V7_ILP32_OFF32", _SC_V7_ILP32_OFF32, SYSCONF }, +#endif +#ifdef _CS_POSIX_V7_ILP32_OFF32_CFLAGS + { "POSIX_V7_ILP32_OFF32_CFLAGS", _CS_POSIX_V7_ILP32_OFF32_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V7_ILP32_OFF32_LDFLAGS + { "POSIX_V7_ILP32_OFF32_LDFLAGS", _CS_POSIX_V7_ILP32_OFF32_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V7_ILP32_OFF32_LIBS + { "POSIX_V7_ILP32_OFF32_LIBS", _CS_POSIX_V7_ILP32_OFF32_LIBS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS + { "POSIX_V7_ILP32_OFF32_LINTFLAGS", _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS, CONFSTR }, +#endif + +#ifdef _CS_V7_WIDTH_RESTRICTED_ENVS + { "_POSIX_V7_WIDTH_RESTRICTED_ENVS", _CS_V7_WIDTH_RESTRICTED_ENVS, CONFSTR }, + { "POSIX_V7_WIDTH_RESTRICTED_ENVS", _CS_V7_WIDTH_RESTRICTED_ENVS, CONFSTR }, +#endif + +#ifdef _SC_V7_ILP32_OFFBIG + { "_POSIX_V7_ILP32_OFFBIG", _SC_V7_ILP32_OFFBIG, SYSCONF }, +#endif +#ifdef _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS + { "POSIX_V7_ILP32_OFFBIG_CFLAGS", _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS + { "POSIX_V7_ILP32_OFFBIG_LDFLAGS", _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V7_ILP32_OFFBIG_LIBS + { "POSIX_V7_ILP32_OFFBIG_LIBS", _CS_POSIX_V7_ILP32_OFFBIG_LIBS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS + { "POSIX_V7_ILP32_OFFBIG_LINTFLAGS", _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS, CONFSTR }, +#endif + +#ifdef _SC_V7_LP64_OFF64 + { "_POSIX_V7_LP64_OFF64", _SC_V7_LP64_OFF64, SYSCONF }, +#endif +#ifdef _CS_POSIX_V7_LP64_OFF64_CFLAGS + { "POSIX_V7_LP64_OFF64_CFLAGS", _CS_POSIX_V7_LP64_OFF64_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V7_LP64_OFF64_LDFLAGS + { "POSIX_V7_LP64_OFF64_LDFLAGS", _CS_POSIX_V7_LP64_OFF64_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V7_LP64_OFF64_LIBS + { "POSIX_V7_LP64_OFF64_LIBS", _CS_POSIX_V7_LP64_OFF64_LIBS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V7_LP64_OFF64_LINTFLAGS + { "POSIX_V7_LP64_OFF64_LINTFLAGS", _CS_POSIX_V7_LP64_OFF64_LINTFLAGS, CONFSTR }, +#endif + +#ifdef _SC_V7_LPBIG_OFFBIG + { "_POSIX_V7_LPBIG_OFFBIG", _SC_V7_LPBIG_OFFBIG, SYSCONF }, +#endif +#ifdef _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS + { "POSIX_V7_LPBIG_OFFBIG_CFLAGS", _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS + { "POSIX_V7_LPBIG_OFFBIG_LDFLAGS", _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V7_LPBIG_OFFBIG_LIBS + { "POSIX_V7_LPBIG_OFFBIG_LIBS", _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, CONFSTR }, +#endif +#ifdef _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS + { "POSIX_V7_LPBIG_OFFBIG_LINTFLAGS", _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, CONFSTR }, +#endif + +#ifdef _SC_ADVISORY_INFO + { "_POSIX_ADVISORY_INFO", _SC_ADVISORY_INFO, SYSCONF }, +#endif +#ifdef _SC_BARRIERS + { "_POSIX_BARRIERS", _SC_BARRIERS, SYSCONF }, +#endif +#ifdef _SC_BASE + { "_POSIX_BASE", _SC_BASE, SYSCONF }, +#endif +#ifdef _SC_C_LANG_SUPPORT + { "_POSIX_C_LANG_SUPPORT", _SC_C_LANG_SUPPORT, SYSCONF }, +#endif +#ifdef _SC_C_LANG_SUPPORT_R + { "_POSIX_C_LANG_SUPPORT_R", _SC_C_LANG_SUPPORT_R, SYSCONF }, +#endif + { "_POSIX_CLOCK_SELECTION", _SC_CLOCK_SELECTION, SYSCONF }, + { "_POSIX_CPUTIME", _SC_CPUTIME, SYSCONF }, + { "_POSIX_THREAD_CPUTIME", _SC_THREAD_CPUTIME, SYSCONF }, +#ifdef _SC_DEVICE_SPECIFIC + { "_POSIX_DEVICE_SPECIFIC", _SC_DEVICE_SPECIFIC, SYSCONF }, +#endif +#ifdef _SC_DEVICE_SPECIFIC_R + { "_POSIX_DEVICE_SPECIFIC_R", _SC_DEVICE_SPECIFIC_R, SYSCONF }, +#endif +#ifdef _SC_FD_MGMT + { "_POSIX_FD_MGMT", _SC_FD_MGMT, SYSCONF }, +#endif +#ifdef _SC_FIFO + { "_POSIX_FIFO", _SC_FIFO, SYSCONF }, +#endif +#ifdef _SC_PIPE + { "_POSIX_PIPE", _SC_PIPE, SYSCONF }, +#endif +#ifdef _SC_FILE_ATTRIBUTES + { "_POSIX_FILE_ATTRIBUTES", _SC_FILE_ATTRIBUTES, SYSCONF }, +#endif +#ifdef _SC_FILE_LOCKING + { "_POSIX_FILE_LOCKING", _SC_FILE_LOCKING, SYSCONF }, +#endif +#ifdef _SC_FILE_SYSTEM + { "_POSIX_FILE_SYSTEM", _SC_FILE_SYSTEM, SYSCONF }, +#endif + { "_POSIX_MONOTONIC_CLOCK", _SC_MONOTONIC_CLOCK, SYSCONF }, +#ifdef _SC_MULTI_PROCESS + { "_POSIX_MULTI_PROCESS", _SC_MULTI_PROCESS, SYSCONF }, +#endif +#ifdef _SC_SINGLE_PROCESS + { "_POSIX_SINGLE_PROCESS", _SC_SINGLE_PROCESS, SYSCONF }, +#endif +#ifdef _SC_NETWORKING + { "_POSIX_NETWORKING", _SC_NETWORKING, SYSCONF }, +#endif + { "_POSIX_READER_WRITER_LOCKS", _SC_READER_WRITER_LOCKS, SYSCONF }, + { "_POSIX_SPIN_LOCKS", _SC_SPIN_LOCKS, SYSCONF }, + { "_POSIX_REGEXP", _SC_REGEXP, SYSCONF }, +#ifdef _SC_REGEX_VERSION + { "_REGEX_VERSION", _SC_REGEX_VERSION, SYSCONF }, +#endif + { "_POSIX_SHELL", _SC_SHELL, SYSCONF }, +#ifdef _SC_SIGNALS + { "_POSIX_SIGNALS", _SC_SIGNALS, SYSCONF }, +#endif + { "_POSIX_SPAWN", _SC_SPAWN, SYSCONF }, +#ifdef _SC_SPORADIC_SERVER + { "_POSIX_SPORADIC_SERVER", _SC_SPORADIC_SERVER, SYSCONF }, +#endif +#ifdef _SC_THREAD_SPORADIC_SERVER + { "_POSIX_THREAD_SPORADIC_SERVER", _SC_THREAD_SPORADIC_SERVER, SYSCONF }, +#endif +#ifdef _SC_SYSTEM_DATABASE + { "_POSIX_SYSTEM_DATABASE", _SC_SYSTEM_DATABASE, SYSCONF }, +#endif +#ifdef _SC_SYSTEM_DATABASE_R + { "_POSIX_SYSTEM_DATABASE_R", _SC_SYSTEM_DATABASE_R, SYSCONF }, +#endif +#ifdef _SC_TIMEOUTS + { "_POSIX_TIMEOUTS", _SC_TIMEOUTS, SYSCONF }, +#endif +#ifdef _SC_TYPED_MEMORY_OBJECTS + { "_POSIX_TYPED_MEMORY_OBJECTS", _SC_TYPED_MEMORY_OBJECTS, SYSCONF }, +#endif +#ifdef _SC_USER_GROUPS + { "_POSIX_USER_GROUPS", _SC_USER_GROUPS, SYSCONF }, +#endif +#ifdef _SC_USER_GROUPS_R + { "_POSIX_USER_GROUPS_R", _SC_USER_GROUPS_R, SYSCONF }, +#endif + { "POSIX2_PBS", _SC_2_PBS, SYSCONF }, + { "POSIX2_PBS_ACCOUNTING", _SC_2_PBS_ACCOUNTING, SYSCONF }, + { "POSIX2_PBS_LOCATE", _SC_2_PBS_LOCATE, SYSCONF }, + { "POSIX2_PBS_TRACK", _SC_2_PBS_TRACK, SYSCONF }, + { "POSIX2_PBS_MESSAGE", _SC_2_PBS_MESSAGE, SYSCONF }, + { "SYMLOOP_MAX", _SC_SYMLOOP_MAX, SYSCONF }, + { "STREAM_MAX", _SC_STREAM_MAX, SYSCONF }, + { "AIO_LISTIO_MAX", _SC_AIO_LISTIO_MAX, SYSCONF }, + { "AIO_MAX", _SC_AIO_MAX, SYSCONF }, +#ifdef _SC_AIO_PRIO_DELTA_MAX + { "AIO_PRIO_DELTA_MAX", _SC_AIO_PRIO_DELTA_MAX, SYSCONF }, +#endif + { "DELAYTIMER_MAX", _SC_DELAYTIMER_MAX, SYSCONF }, + { "HOST_NAME_MAX", _SC_HOST_NAME_MAX, SYSCONF }, + { "LOGIN_NAME_MAX", _SC_LOGIN_NAME_MAX, SYSCONF }, + { "MQ_OPEN_MAX", _SC_MQ_OPEN_MAX, SYSCONF }, + { "MQ_PRIO_MAX", _SC_MQ_PRIO_MAX, SYSCONF }, +#ifdef _SC_DEVICE_IO + { "_POSIX_DEVICE_IO", _SC_DEVICE_IO, SYSCONF }, +#endif +#ifdef _SC_TRACE + { "_POSIX_TRACE", _SC_TRACE, SYSCONF }, +#endif +#ifdef _SC_TRACE_EVENT_FILTER + { "_POSIX_TRACE_EVENT_FILTER", _SC_TRACE_EVENT_FILTER, SYSCONF }, +#endif +#ifdef _SC_TRACE_INHERIT + { "_POSIX_TRACE_INHERIT", _SC_TRACE_INHERIT, SYSCONF }, +#endif +#ifdef _SC_TRACE_LOG + { "_POSIX_TRACE_LOG", _SC_TRACE_LOG, SYSCONF }, +#endif + { "RTSIG_MAX", _SC_RTSIG_MAX, SYSCONF }, +#ifdef _SC_SEM_NSEMS_MAX + { "SEM_NSEMS_MAX", _SC_SEM_NSEMS_MAX, SYSCONF }, +#endif +#ifdef _SC_SEM_VALUE_MAX + { "SEM_VALUE_MAX", _SC_SEM_VALUE_MAX, SYSCONF }, +#endif + { "SIGQUEUE_MAX", _SC_SIGQUEUE_MAX, SYSCONF }, + { "FILESIZEBITS", _PC_FILESIZEBITS, PATHCONF }, +#ifdef _PC_ALLOC_SIZE_MIN + { "POSIX_ALLOC_SIZE_MIN", _PC_ALLOC_SIZE_MIN, PATHCONF }, +#endif +#ifdef _PC_REC_INCR_XFER_SIZE + { "POSIX_REC_INCR_XFER_SIZE", _PC_REC_INCR_XFER_SIZE, PATHCONF }, +#endif +#ifdef _PC_REC_MAX_XFER_SIZE + { "POSIX_REC_MAX_XFER_SIZE", _PC_REC_MAX_XFER_SIZE, PATHCONF }, +#endif +#ifdef _PC_REC_MIN_XFER_SIZE + { "POSIX_REC_MIN_XFER_SIZE", _PC_REC_MIN_XFER_SIZE, PATHCONF }, +#endif +#ifdef _PC_REC_XFER_ALIGN + { "POSIX_REC_XFER_ALIGN", _PC_REC_XFER_ALIGN, PATHCONF }, +#endif + { "SYMLINK_MAX", _PC_SYMLINK_MAX, PATHCONF }, +#ifdef _PC_2_SYMLINKS + { "POSIX2_SYMLINKS", _PC_2_SYMLINKS, PATHCONF }, +#endif + +#ifdef _SC_LEVEL1_ICACHE_SIZE + { "LEVEL1_ICACHE_SIZE", _SC_LEVEL1_ICACHE_SIZE, SYSCONF }, + { "LEVEL1_ICACHE_ASSOC", _SC_LEVEL1_ICACHE_ASSOC, SYSCONF }, + { "LEVEL1_ICACHE_LINESIZE", _SC_LEVEL1_ICACHE_LINESIZE, SYSCONF }, + { "LEVEL1_DCACHE_SIZE", _SC_LEVEL1_DCACHE_SIZE, SYSCONF }, + { "LEVEL1_DCACHE_ASSOC", _SC_LEVEL1_DCACHE_ASSOC, SYSCONF }, + { "LEVEL1_DCACHE_LINESIZE", _SC_LEVEL1_DCACHE_LINESIZE, SYSCONF }, +#endif +#ifdef _SC_LEVEL2_CACHE_SIZE + { "LEVEL2_CACHE_SIZE", _SC_LEVEL2_CACHE_SIZE, SYSCONF }, + { "LEVEL2_CACHE_ASSOC", _SC_LEVEL2_CACHE_ASSOC, SYSCONF }, + { "LEVEL2_CACHE_LINESIZE", _SC_LEVEL2_CACHE_LINESIZE, SYSCONF }, +#endif +#ifdef _SC_LEVEL3_CACHE_SIZE + { "LEVEL3_CACHE_SIZE", _SC_LEVEL3_CACHE_SIZE, SYSCONF }, + { "LEVEL3_CACHE_ASSOC", _SC_LEVEL3_CACHE_ASSOC, SYSCONF }, + { "LEVEL3_CACHE_LINESIZE", _SC_LEVEL3_CACHE_LINESIZE, SYSCONF }, +#endif +#ifdef _SC_LEVEL4_CACHE_SIZE + { "LEVEL4_CACHE_SIZE", _SC_LEVEL4_CACHE_SIZE, SYSCONF }, + { "LEVEL4_CACHE_ASSOC", _SC_LEVEL4_CACHE_ASSOC, SYSCONF }, + { "LEVEL4_CACHE_LINESIZE", _SC_LEVEL4_CACHE_LINESIZE, SYSCONF }, +#endif + +#ifdef _SC_IPV6 + { "IPV6", _SC_IPV6, SYSCONF }, + { "_POSIX_IPV6", _SC_IPV6, SYSCONF }, +#endif +#ifdef _SC_RAW_SOCKETS + { "RAW_SOCKETS", _SC_RAW_SOCKETS, SYSCONF }, + { "_POSIX_RAW_SOCKETS", _SC_RAW_SOCKETS, SYSCONF }, +#endif + + { NULL, 0, SYSCONF } + }; + +static int getconf_print (const struct conf *, const char *, int); +static int getconf_all (void); +static int getconf_one (WORD_LIST *); +static int getconf_internal (const struct conf *, int); + +static int +getconf_internal (const struct conf *c, int all) +{ + long l, val; + intmax_t v; + uintmax_t uv; + unsigned long ul; +#if HAVE_LONG_LONG_INT + unsigned long long ull; + long long ll; +#endif + int r; + + val = c->call_name; + r = EXECUTION_SUCCESS; + if (val == VAL_ULONG_MAX) + { + ul = ULONG_MAX; + printf ("%lu", ul); + } +#if HAVE_LONG_LONG_INT + else if (val == VAL_ULLONG_MAX) + { + ull = ULLONG_MAX; + printf ("%llu", ull); + } + else if (val == VAL_LLONG_MIN || val == VAL_LLONG_MAX) + { + ll = (val == VAL_LLONG_MIN) ? LLONG_MIN : LLONG_MAX; + printf ("%lld", ll); + } +#endif +#if HAVE_LONG_LONG_INT + else if (val == VAL_SSIZE_MAX) + { + ll = SSIZE_MAX; + printf ("%lld", ll); + } + else if (val == VAL_SIZE_MAX) + { + ul = SIZE_MAX; + printf ("%lu", ul); + } +#else + else if (val == VAL_SSIZE_MAX) + { + v = SSIZE_MAX; + printf ("%jd", v); + } + else if (val == VAL_SIZE_MAX) + { + uv = SIZE_MAX; + printf ("%ju", uv); + } +#endif + else + printf ("%ld", val); + + if (r == EXECUTION_SUCCESS) + printf ("\n"); + + return (r); +} + +static int +getconf_all (void) +{ + const struct conf *c; + char *path; + int r; + + r = EXECUTION_SUCCESS; + for (c = vars; c->name != NULL; ++c) + { + printf("%-35s", c->name); + path = "/"; /* XXX for now */ + if (getconf_print (c, path, 1) == EXECUTION_FAILURE) + r = EXECUTION_FAILURE; + } + return (r); +} + +static int +getconf_one (WORD_LIST *list) +{ + const struct conf *c; + char *vname, *vpath; + + vname = list->word->word; + vpath = (list->next && list->next->word) ? list->next->word->word : 0; + + for (c = vars; c->name != NULL; ++c) + { + if (strcmp (c->name, vname) == 0 || (strncmp (c->name, "_POSIX_", 7) == 0 && + strcmp (c->name + 7, vname) == 0)) + break; + } + if (c->name == NULL) + { + builtin_error ("%s: unknown variable", vname); + return (EXECUTION_FAILURE); + } + + if (c->call_name == PATHCONF && list->next == 0) + { + builtin_usage (); + return (EX_USAGE); + } + else if (c->call_name != PATHCONF && list->next) + { + builtin_usage (); + return (EX_USAGE); + } + + return (getconf_print (c, vpath, 0)); +} + +static int +getconf_print (const struct conf *c, const char *vpath, int all) +{ + long value; + size_t clen; + char *cvalue; + int cn; + + cn = c->call_name; + switch (c->call) + { + case PATHCONF: + errno = 0; + value = pathconf (vpath, cn); + if (value == -1L) + { + if (errno) + builtin_error ("pathconf %s: %s: %s", c->name, vpath, strerror (errno)); + printf ("undefined\n"); + return (EXECUTION_FAILURE); + } + else + printf ("%ld\n", value); + return (EXECUTION_SUCCESS); + + case SYSCONF: + errno = 0; + value = sysconf (cn); + if (value == -1L) + { + if (errno) + builtin_error ("%s: %s", c->name, strerror (errno)); + printf ("undefined\n"); + return (EXECUTION_FAILURE); + } + else + printf ("%ld\n", value); + return (EXECUTION_SUCCESS); + + case CONFSTR: + errno = 0; + clen = confstr (cn, (char *) NULL, 0); + cvalue = (char *) malloc (clen); + if (cvalue == NULL) + { + builtin_error ("memory allocation failure"); + return (EXECUTION_FAILURE); + } + if (confstr (c->call_name, cvalue, clen) != clen) + { + if (errno != 0) + builtin_error ("%s: confstr: %s", c->name, strerror (errno)); + printf ("undefined\n"); + return (EXECUTION_FAILURE); + } + else + printf ("%.*s\n", (int) clen, cvalue); + free (cvalue); + return (EXECUTION_SUCCESS); + + case CONSTANT: + return (getconf_internal (c, all)); + + case UNDEFINED: + builtin_error ("%s: undefined", c->name); + return (EXECUTION_FAILURE); + } + + /* NOTREACHED */ + return (EX_USAGE); +} + +int +getconf_builtin (WORD_LIST *list) +{ + const struct conf *c; + int r, opt, aflag, vflag; + char *varg; + + aflag = vflag = 0; + varg = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "ahv:")) != -1) + { + switch (opt) + { + case 'a': + aflag = 1; + break; + CASE_HELPOPT; + case 'h': + builtin_help (); + return (EX_USAGE); + case 'v': + return (EX_DISKFALLBACK); + default: + builtin_usage (); + return (EX_USAGE); + } + } + + list = loptend; + if ((aflag == 0 && list == 0) || (aflag && list) || list_length(list) > 2) + { + builtin_usage(); + return (EX_USAGE); + } + + r = aflag ? getconf_all () : getconf_one (list); + return r; +} + +static char *getconf_doc[] = { + "Display values of system limits and options.", + "", + "getconf writes the current value of a configurable system limit or", + "option variable to the standard output.", + (char *)NULL +}; + +struct builtin getconf_struct = { + "getconf", + getconf_builtin, + BUILTIN_ENABLED, + getconf_doc, + "getconf -[ah] or getconf [-v spec] sysvar or getconf [-v spec] pathvar pathname", + 0 +}; diff --git a/examples/loadables/getconf.h b/examples/loadables/getconf.h new file mode 100644 index 000000000..b8b9f1026 --- /dev/null +++ b/examples/loadables/getconf.h @@ -0,0 +1,136 @@ +/* + Copyright (C) 2021 Free Software Foundation, Inc. + + This file is part of GNU Bash. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ +/* getconf.h -- replacement definitions for ones the system doesn't provide + and don't appear in */ + +#ifndef _GETCONF_H +#define _GETCONF_H + +/* Some systems do not define these; use POSIX.2 minimum recommended values. */ +#ifndef _POSIX2_COLL_WEIGHTS_MAX +# define _POSIX2_COLL_WEIGHTS_MAX 2 +#endif + +/* If we're on a posix system, but the system doesn't define the necessary + constants, use posix.1 minimum values. */ +#if defined (_POSIX_VERSION) + +#ifndef _POSIX_ARG_MAX +# define _POSIX_ARG_MAX 4096 +#endif +#ifndef _POSIX_CHILD_MAX +# define _POSIX_CHILD_MAX 6 +#endif +#ifndef _POSIX_LINK_MAX +# define _POSIX_LINK_MAX 8 +#endif +#ifndef _POSIX_MAX_CANON +# define _POSIX_MAX_CANON 255 +#endif +#ifndef _POSIX_MAX_INPUT +# define _POSIX_MAX_INPUT 255 +#endif +#ifndef _POSIX_NAME_MAX +# define _POSIX_NAME_MAX 14 +#endif +#ifndef _POSIX_NGROUPS_MAX +# define _POSIX_NGROUPS_MAX 0 +#endif +#ifndef _POSIX_OPEN_MAX +# define _POSIX_OPEN_MAX 16 +#endif +#ifndef _POSIX_PATH_MAX +# define _POSIX_PATH_MAX 255 +#endif +#ifndef _POSIX_PIPE_BUF +# define _POSIX_PIPE_BUF 512 +#endif +#ifndef _POSIX_SSIZE_MAX +# define _POSIX_SSIZE_MAX 32767 +#endif +#ifndef _POSIX_STREAM_MAX +# define _POSIX_STREAM_MAX 8 +#endif +#ifndef _POSIX_TZNAME_MAX +# define _POSIX_TZNAME_MAX 3 +#endif + +#ifndef _POSIX2_BC_BASE_MAX +# define _POSIX2_BC_BASE_MAX 99 +#endif +#ifndef _POSIX2_BC_DIM_MAX +# define _POSIX2_BC_DIM_MAX 2048 +#endif +#ifndef _POSIX2_BC_SCALE_MAX +# define _POSIX2_BC_SCALE_MAX 99 +#endif +#ifndef _POSIX2_BC_STRING_MAX +# define _POSIX2_BC_STRING_MAX 1000 +#endif +#ifndef _POSIX2_EQUIV_CLASS_MAX +# define _POSIX2_EQUIV_CLASS_MAX 2 +#endif +#ifndef _POSIX2_EXPR_NEST_MAX +# define _POSIX2_EXPR_NEST_MAX 32 +#endif +#ifndef _POSIX2_LINE_MAX +# define _POSIX2_LINE_MAX 2048 +#endif +#ifndef _POSIX2_RE_DUP_MAX +# define _POSIX2_RE_DUP_MAX 255 +#endif + +#endif /* _POSIX_VERSION */ + +/* ANSI/ISO C, POSIX.1-200x, XPG 4.2, and C language type limits. + Defined only if the system include files and don't. */ + +#ifndef CHAR_MAX +# define CHAR_MAX 127 +#endif +#ifndef CHAR_MIN +# define CHAR_MIN -128 +#endif +#ifndef SCHAR_MAX +# define SCHAR_MAX 127 +#endif +#ifndef SCHAR_MIN +# define SCHAR_MIN -128 +#endif + +#ifndef INT_BIT +# define INT_BIT (sizeof (int) * CHAR_BIT) +#endif + +#ifndef LONG_BIT +# define LONG_BIT (sizeof (long int) * CHAR_BIT) +#endif + +#ifndef WORD_BIT +# define WORD_BIT (sizeof (int) * CHAR_BIT) +#endif + +#if !defined (PRIdMAX) +# if HAVE_LONG_LONG +# define PRIdMAX "lld" +# else +# define PRIdMAX "ld" +# endif +#endif + +#endif /* _GETCONF_H */ diff --git a/examples/loadables/head.c b/examples/loadables/head.c index 1edca6c55..f9f022a60 100644 --- a/examples/loadables/head.c +++ b/examples/loadables/head.c @@ -79,11 +79,13 @@ file_head (fp, cnt) { while ((ch = getc (fp)) != EOF) { + QUIT; if (putchar (ch) == EOF) { builtin_error ("write error: %s", strerror (errno)); return EXECUTION_FAILURE; } + QUIT; if (ch == '\n') break; } @@ -141,6 +143,7 @@ head_builtin (list) printf ("%s==> %s <==\n", opt ? "" : "\n", l->word->word); opt = 0; } + QUIT; rval = file_head (fp, nline); fclose (fp); } diff --git a/examples/loadables/mkdir.c b/examples/loadables/mkdir.c index d5d395510..a5b49309e 100644 --- a/examples/loadables/mkdir.c +++ b/examples/loadables/mkdir.c @@ -228,7 +228,7 @@ char *mkdir_doc[] = { "a symbolic mode is used, the operations are interpreted relative to", "an initial mode of \"a=rwx\". The -p option causes any required", "intermediate directories in PATH to be created. The directories", - "are created with permssion bits of rwxrwxrwx as modified by the current", + "are created with permission bits of rwxrwxrwx as modified by the current", "umask, plus write and search permissions for the owner. mkdir", "returns 0 if the directories are created successfully, and non-zero", "if an error occurs.", diff --git a/examples/loadables/perl/bperl.c b/examples/loadables/perl/bperl.c index 77e3f7c1b..5b15258b2 100644 --- a/examples/loadables/perl/bperl.c +++ b/examples/loadables/perl/bperl.c @@ -3,23 +3,24 @@ */ #include -#include #include #include "builtins.h" #include "shell.h" +#include "common.h" #ifndef errno extern int errno; #endif -extern char **make_builtin_argv (); +extern char **make_builtin_argv (WORD_LIST *, int *); extern char **export_env; -extern int perl_main(); +extern void perl_close(void); +extern int perl_main(int, char **, char **); -bperl_builtin(list) -WORD_LIST *list; +int +bperl_builtin(WORD_LIST *list) { char **v; int c, r; @@ -31,6 +32,12 @@ WORD_LIST *list; return r; } +void +bperl_builtin_unload (char *s) +{ + perl_close(); +} + char *bperl_doc[] = { "An interface to a perl5 interpreter.", (char *)0 diff --git a/examples/loadables/perl/iperl.c b/examples/loadables/perl/iperl.c index 92a60387d..89438af16 100644 --- a/examples/loadables/perl/iperl.c +++ b/examples/loadables/perl/iperl.c @@ -1,15 +1,29 @@ #include /* from the Perl distribution */ #include /* from the Perl distribution */ -extern void xs_init _((void)); +#define iperl my_perl /* I guess the name `my_perl' is required */ + +extern void xs_init (pTHX); static PerlInterpreter *iperl; /*** The Perl interpreter ***/ +static int first = 1; + +void +perl_close (void) +{ + PERL_SYS_TERM(); +} + int perl_main(int argc, char **argv, char **env) { int r; + if (first) { + first = 0; + PERL_SYS_INIT3(&argc, &argv, &env); + } iperl = perl_alloc(); perl_construct(iperl); perl_parse(iperl, xs_init, argc, argv, (char **)NULL); diff --git a/examples/loadables/print.c b/examples/loadables/print.c index 0120dbf41..d6c590352 100644 --- a/examples/loadables/print.c +++ b/examples/loadables/print.c @@ -181,7 +181,8 @@ printargs (list, ofp) for (sawc = 0, l = list; l; l = l->next) { ostr = ansicstr (l->word->word, strlen (l->word->word), 0, &sawc, (int *)0); - fprintf (ofp, "%s", ostr); + if (ostr) + fprintf (ofp, "%s", ostr); free (ostr); if (sawc) return (0); diff --git a/examples/loadables/realpath.c b/examples/loadables/realpath.c index 0974ac41b..ef8367138 100644 --- a/examples/loadables/realpath.c +++ b/examples/loadables/realpath.c @@ -1,10 +1,13 @@ /* * realpath -- canonicalize pathnames, resolving symlinks * - * usage: realpath [-csv] pathname [pathname...] + * usage: realpath [-cqsv] [-a name] pathname [pathname...] * - * options: -c check whether or not each resolved path exists - * -s no output, exit status determines whether path is valid + * options: -a name assign each canonicalized pathname to indexed array + * variable NAME + * -c check whether or not each resolved path exists + * -q no output, exit status determines whether path is valid + * -s strip . and .. from the pathname only, no symlink resolution * -v produce verbose output * * @@ -19,7 +22,7 @@ */ /* - Copyright (C) 1999-2009 Free Software Foundation, Inc. + Copyright (C) 1999-2009,2021,2022 Free Software Foundation, Inc. This file is part of GNU Bash. Bash is free software: you can redistribute it and/or modify @@ -61,25 +64,43 @@ extern int errno; extern char *sh_realpath(); int -realpath_builtin(list) -WORD_LIST *list; +realpath_builtin(WORD_LIST *list) { - int opt, cflag, vflag, sflag, es; - char *r, realbuf[PATH_MAX], *p; + int opt, cflag, vflag, qflag, sflag, aflag, es; + char *r, realbuf[PATH_MAX], *p, *newpath; struct stat sb; +#if defined (ARRAY_VARS) + arrayind_t ind; + char *aname; + SHELL_VAR *v; +#endif if (list == 0) { builtin_usage(); return (EX_USAGE); } - vflag = cflag = sflag = 0; + vflag = cflag = qflag = aflag = sflag = 0; +#if defined (ARRAY_VARS) + aname = NULL; + v = NULL; + ind = 0; +#endif reset_internal_getopt(); - while ((opt = internal_getopt (list, "csv")) != -1) { + while ((opt = internal_getopt (list, "a:cqsv")) != -1) { switch (opt) { +#if defined (ARRAY_VARS) + case 'a': + aflag = 1; + aname = list_optarg; + break; +#endif case 'c': cflag = 1; break; + case 'q': + qflag = 1; + break; case 's': sflag = 1; break; @@ -100,26 +121,61 @@ WORD_LIST *list; return (EX_USAGE); } +#if defined (ARRAY_VARS) + if (aflag && legal_identifier (aname) == 0) { + sh_invalidid(aname); + return (EXECUTION_FAILURE); + } + if (aname && builtin_unbind_variable (aname) == -2) + return (EXECUTION_FAILURE); + if (aname) { + v = find_or_make_array_variable (aname, 1); + if (v == 0 || readonly_p (v) || noassign_p (v)) { + if (v && readonly_p (v)) + err_readonly (aname); + return (EXECUTION_FAILURE); + } else if (array_p (v) == 0) { + builtin_error ("%s: not an indexed array", aname); + return (EXECUTION_FAILURE); + } + if (invisible_p (v)) + VUNSETATTR (v, att_invisible); + array_flush (array_cell (v)); + } +#endif + for (es = EXECUTION_SUCCESS; list; list = list->next) { p = list->word->word; - r = sh_realpath(p, realbuf); + if (sflag) { + /* sh_canonpath doesn't convert to absolute pathnames */ + newpath = make_absolute(p, get_string_value("PWD")); + r = sh_canonpath(newpath, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + free(newpath); + } else + r = sh_realpath(p, realbuf); if (r == 0) { es = EXECUTION_FAILURE; - if (sflag == 0) + if (qflag == 0) builtin_error("%s: cannot resolve: %s", p, strerror(errno)); continue; } - if (cflag && (stat(realbuf, &sb) < 0)) { + if (cflag && (stat(r, &sb) < 0)) { es = EXECUTION_FAILURE; - if (sflag == 0) + if (qflag == 0) builtin_error("%s: %s", p, strerror(errno)); continue; } - if (sflag == 0) { + if (aflag) { + bind_array_element (v, ind, r, 0); + ind++; + } + if (qflag == 0) { if (vflag) printf ("%s -> ", p); - printf("%s\n", realbuf); + printf("%s\n", r); } + if (sflag) + free (r); } return es; } @@ -128,10 +184,16 @@ char *realpath_doc[] = { "Display pathname in canonical form.", "", "Display the canonicalized version of each PATHNAME argument, resolving", - "symbolic links. The -c option checks whether or not each resolved name", - "exists. The -s option produces no output; the exit status determines the", - "validity of each PATHNAME. The -v option produces verbose output. The", - "exit status is 0 if each PATHNAME was resolved; non-zero otherwise.", + "symbolic links.", + "The -a option stores each canonicalized PATHNAME argument into the indexed", + "array VARNAME.", + "The -c option checks whether or not each resolved name exists.", + "The -q option produces no output; the exit status determines the", + "validity of each PATHNAME, but any array assignment is still performed.", + "If the -s option is supplied, canonicalize . and .. pathname components", + "without resolving symbolic links.", + "The -v option produces verbose output.", + "The exit status is 0 if each PATHNAME was resolved; non-zero otherwise.", (char *)NULL }; @@ -140,6 +202,6 @@ struct builtin realpath_struct = { realpath_builtin, /* function implementing the builtin */ BUILTIN_ENABLED, /* initial flags for builtin */ realpath_doc, /* array of long documentation strings */ - "realpath [-csv] pathname [pathname...]", /* usage synopsis */ + "realpath [-a varname] [-cqsv] pathname [pathname...]", /* usage synopsis */ 0 /* reserved for internal use */ }; diff --git a/examples/loadables/rm.c b/examples/loadables/rm.c index 0af5493c8..d8d1522b8 100644 --- a/examples/loadables/rm.c +++ b/examples/loadables/rm.c @@ -59,7 +59,8 @@ _remove_directory(const char *dirname) char *fname; int fnsize; #endif - + + QUIT; if (*dp->d_name == '.' && (dp->d_name[1] == 0 || (dp->d_name[1] == '.' && dp->d_name[2] == 0))) continue; @@ -76,6 +77,7 @@ _remove_directory(const char *dirname) #ifndef __GNUC__ free (fname); #endif + QUIT; } closedir(dir); @@ -98,6 +100,7 @@ rm_file(const char *fname) if (unlink (fname) == 0) return 0; + QUIT; /* If FNAME is a directory glibc returns EISDIR but correct POSIX value would be EPERM. If we get that error and FNAME is a directory and -r was supplied, recursively remove the directory and its contents */ @@ -155,6 +158,7 @@ rm_builtin (list) for (l = list; l; l = l->next) { + QUIT; if (rm_file(l->word->word) && force == 0) rval = EXECUTION_FAILURE; } diff --git a/examples/loadables/seq.c b/examples/loadables/seq.c index e56240791..f8eec5bba 100644 --- a/examples/loadables/seq.c +++ b/examples/loadables/seq.c @@ -35,6 +35,18 @@ extern int errno; #endif +#if defined (PRI_MACROS_BROKEN) +# undef PRIdMAX +#endif + +#if !defined (PRIdMAX) +# if HAVE_LONG_LONG +# define PRIdMAX "lld" +# else +# define PRIdMAX "ld" +# endif +#endif + #if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD && !defined(STRTOLD_BROKEN) typedef long double floatmax_t; # define FLOATMAX_CONV "L" diff --git a/examples/loadables/sleep.c b/examples/loadables/sleep.c index fc2203d4a..204601f52 100644 --- a/examples/loadables/sleep.c +++ b/examples/loadables/sleep.c @@ -2,10 +2,12 @@ * sleep -- sleep for fractions of a second * * usage: sleep seconds[.fraction] + * + * as an extension, we support the GNU time interval format (2m20s) */ /* - Copyright (C) 1999-2020 Free Software Foundation, Inc. + Copyright (C) 1999-2021 Free Software Foundation, Inc. This file is part of GNU Bash. Bash is free software: you can redistribute it and/or modify @@ -44,13 +46,80 @@ #include #include "chartypes.h" -#include "shell.h" -#include "builtins.h" -#include "common.h" +#include "loadables.h" + +#define S_SEC 1 +#define S_MIN (60*S_SEC) +#define S_HOUR (60*S_MIN) +#define S_DAY (24*S_HOUR) + +static int +parse_gnutimefmt (char *string, long *sp, long *up) +{ + int c, r; + char *s, *ep; + long tsec, tusec, accumsec, accumusec, t; + int mult; + + tsec = tusec = 0; + accumsec = accumusec = 0; + mult = 1; + + for (s = string; s && *s; s++) { + r = uconvert(s, &accumsec, &accumusec, &ep); + if (r == 0 && *ep == 0) + return r; + c = *ep; + mult = 1; + switch (c) { + case '\0': + case 's': + mult = S_SEC; + break; + case 'm': + mult = S_MIN; + break; + case 'h': + mult = S_HOUR; + break; + case 'd': + mult = S_DAY; + break; + default: + return 0; + } + + /* multiply the accumulated value by the multiplier */ + t = accumusec * mult; + accumsec = accumsec * mult + (t / 1000000); + accumusec = t % 1000000; + + /* add to running total */ + tsec += accumsec; + tusec += accumusec; + if (tusec >= 1000000) { + tsec++; + tusec -= 1000000; + } + + /* reset and continue */ + accumsec = accumusec = 0; + mult = 1; + if (c == 0) + break; + s = ep; + } + + if (sp) + *sp = tsec; + if (up) + *up = tusec; + + return 1; +} int -sleep_builtin (list) -WORD_LIST *list; +sleep_builtin (WORD_LIST *list) { long sec, usec; char *ep; @@ -72,14 +141,22 @@ WORD_LIST *list; } r = uconvert(list->word->word, &sec, &usec, &ep); - /* Maybe postprocess conversion failures here based on EP */ + /* + * Maybe postprocess conversion failures here based on EP + * + * A heuristic: if the conversion failed, but the argument appears to + * contain a GNU-like interval specifier (e.g. "1m30s"), try to parse + * it. If we can't, return the right exit code to tell + * execute_builtin to try and execute a disk command instead. + */ + if (r == 0 && (strchr ("dhms", *ep) || strpbrk (list->word->word, "dhms"))) + r = parse_gnutimefmt (list->word->word, &sec, &usec); - if (r) { + if (r) { fsleep(sec, usec); QUIT; return(EXECUTION_SUCCESS); - } - + } builtin_error("%s: bad sleep interval", list->word->word); return (EXECUTION_FAILURE); } @@ -88,6 +165,7 @@ static char *sleep_doc[] = { "Suspend execution for specified period.", "" "sleep suspends execution for a minimum of SECONDS[.FRACTION] seconds.", + "As an extension, sleep accepts GNU-style time intervals (e.g., 2m30s).", (char *)NULL }; diff --git a/examples/loadables/stat.c b/examples/loadables/stat.c index 52b9580fb..1e60e7b6d 100644 --- a/examples/loadables/stat.c +++ b/examples/loadables/stat.c @@ -3,7 +3,7 @@ /* See Makefile for compilation details. */ /* - Copyright (C) 2016 Free Software Foundation, Inc. + Copyright (C) 2016,2022 Free Software Foundation, Inc. This file is part of GNU Bash. Bash is free software: you can redistribute it and/or modify @@ -72,6 +72,13 @@ static char *arraysubs[] = 0 }; +#define DEFTIMEFMT "%a %b %e %k:%M:%S %Z %Y" +#ifndef TIMELEN_MAX +# define TIMELEN_MAX 128 +#endif + +static char *stattime (time_t, const char *); + static int getstat (fname, flags, sp) const char *fname; @@ -253,24 +260,33 @@ statmode(mode) } static char * -stattime (t) +stattime (t, timefmt) time_t t; + const char *timefmt; { char *tbuf, *ret; + const char *fmt; size_t tlen; + struct tm *tm; + + fmt = timefmt ? timefmt : DEFTIMEFMT; + tm = localtime (&t); + + ret = xmalloc (TIMELEN_MAX); + + tlen = strftime (ret, TIMELEN_MAX, fmt, tm); + if (tlen == 0) + tlen = strftime (ret, TIMELEN_MAX, DEFTIMEFMT, tm); - tbuf = ctime (&t); - tlen = strlen (tbuf); - ret = savestring (tbuf); - ret[tlen-1] = '\0'; return ret; } static char * -statval (which, fname, flags, sp) +statval (which, fname, flags, fmt, sp) int which; char *fname; int flags; + char *fmt; struct stat *sp; { int temp; @@ -296,11 +312,11 @@ statval (which, fname, flags, sp) case ST_SIZE: return itos (sp->st_size); case ST_ATIME: - return ((flags & 2) ? stattime (sp->st_atime) : itos (sp->st_atime)); + return ((flags & 2) ? stattime (sp->st_atime, fmt) : itos (sp->st_atime)); case ST_MTIME: - return ((flags & 2) ? stattime (sp->st_mtime) : itos (sp->st_mtime)); + return ((flags & 2) ? stattime (sp->st_mtime, fmt) : itos (sp->st_mtime)); case ST_CTIME: - return ((flags & 2) ? stattime (sp->st_ctime) : itos (sp->st_ctime)); + return ((flags & 2) ? stattime (sp->st_ctime, fmt) : itos (sp->st_ctime)); case ST_BLKSIZE: return itos (sp->st_blksize); case ST_BLOCKS: @@ -316,11 +332,12 @@ statval (which, fname, flags, sp) } static int -loadstat (vname, var, fname, flags, sp) +loadstat (vname, var, fname, flags, fmt, sp) char *vname; SHELL_VAR *var; char *fname; int flags; + char *fmt; struct stat *sp; { int i; @@ -330,7 +347,7 @@ loadstat (vname, var, fname, flags, sp) for (i = 0; arraysubs[i]; i++) { key = savestring (arraysubs[i]); - value = statval (i, fname, flags, sp); + value = statval (i, fname, flags, fmt, sp); v = bind_assoc_variable (var, vname, key, value, ASS_FORCE); } return 0; @@ -341,15 +358,16 @@ stat_builtin (list) WORD_LIST *list; { int opt, flags; - char *aname, *fname; + char *aname, *fname, *timefmt; struct stat st; SHELL_VAR *v; aname = "STAT"; flags = 0; + timefmt = 0; reset_internal_getopt (); - while ((opt = internal_getopt (list, "A:Ll")) != -1) + while ((opt = internal_getopt (list, "A:F:Ll")) != -1) { switch (opt) { @@ -362,6 +380,9 @@ stat_builtin (list) case 'l': flags |= 2; break; + case 'F': + timefmt = list_optarg; + break; CASE_HELPOPT; default: builtin_usage (); @@ -369,6 +390,12 @@ stat_builtin (list) } } + if (legal_identifier (aname) == 0) + { + sh_invalidid (aname); + return (EXECUTION_FAILURE); + } + list = loptend; if (list == 0) { @@ -376,6 +403,10 @@ stat_builtin (list) return (EX_USAGE); } + +#if 0 + unbind_variable (aname); +#endif fname = list->word->word; if (getstat (fname, flags, &st) < 0) @@ -384,14 +415,13 @@ stat_builtin (list) return (EXECUTION_FAILURE); } - unbind_variable (aname); - v = make_new_assoc_variable (aname); + v = find_or_make_array_variable (aname, 3); if (v == 0) { builtin_error ("%s: cannot create variable", aname); return (EXECUTION_FAILURE); } - if (loadstat (aname, v, fname, flags, &st) < 0) + if (loadstat (aname, v, fname, flags, timefmt, &st) < 0) { builtin_error ("%s: cannot assign file status information", aname); unbind_variable (aname); @@ -409,11 +439,15 @@ char *stat_doc[] = { "", "Take a filename and load the status information returned by a", "stat(2) call on that file into the associative array specified", - "by the -A option. The default array name is STAT. If the -L", - "option is supplied, stat does not resolve symbolic links and", - "reports information about the link itself. The -l option results", - "in longer-form listings for some of the fields. The exit status is 0", - "unless the stat fails or assigning the array is unsuccessful.", + "by the -A option. The default array name is STAT.", + "", + "If the -L option is supplied, stat does not resolve symbolic links", + "and reports information about the link itself. The -l option results", + "in longer-form listings for some of the fields. When -l is used,", + "the -F option supplies a format string passed to strftime(3) to", + "display the file time information.", + "The exit status is 0 unless the stat fails or assigning the array", + "is unsuccessful.", (char *)NULL }; diff --git a/examples/loadables/tee.c b/examples/loadables/tee.c index 283f23f1a..0365aa9a4 100644 --- a/examples/loadables/tee.c +++ b/examples/loadables/tee.c @@ -3,7 +3,7 @@ /* See Makefile for compilation details. */ /* - Copyright (C) 1999-2009 Free Software Foundation, Inc. + Copyright (C) 1999-2021 Free Software Foundation, Inc. This file is part of GNU Bash. Bash is free software: you can redistribute it and/or modify @@ -121,6 +121,7 @@ tee_builtin (list) fl = fl->next; fl->next = (FLIST *)NULL; } + QUIT; } while ((nr = read(0, buf, TEE_BUFSIZE)) > 0) @@ -137,6 +138,7 @@ tee_builtin (list) break; } bp += nw; + QUIT; } while (n -= nw); } @@ -156,7 +158,8 @@ tee_builtin (list) tee_flist = tee_flist->next; free (fl); } - + + QUIT; return (rval); } diff --git a/examples/loadables/tty.c b/examples/loadables/tty.c index febf518ba..381df2578 100644 --- a/examples/loadables/tty.c +++ b/examples/loadables/tty.c @@ -3,7 +3,7 @@ /* See Makefile for compilation details. */ /* - Copyright (C) 1999-2009 Free Software Foundation, Inc. + Copyright (C) 1999-2021 Free Software Foundation, Inc. This file is part of GNU Bash. Bash is free software: you can redistribute it and/or modify @@ -55,6 +55,7 @@ tty_builtin (list) list = loptend; t = ttyname (0); + QUIT; if (sflag == 0) puts (t ? t : "not a tty"); return (t ? EXECUTION_SUCCESS : EXECUTION_FAILURE); diff --git a/examples/misc/aliasconv.bash b/examples/misc/aliasconv.bash old mode 100755 new mode 100644 diff --git a/examples/misc/aliasconv.sh b/examples/misc/aliasconv.sh old mode 100755 new mode 100644 diff --git a/examples/misc/cshtobash b/examples/misc/cshtobash old mode 100755 new mode 100644 diff --git a/examples/scripts/bcalc b/examples/scripts/bcalc new file mode 100644 index 000000000..bc7e2b40e --- /dev/null +++ b/examples/scripts/bcalc @@ -0,0 +1,104 @@ +#! /bin/bash +# +# bcalc - a coproc example that uses bc to evaluate floating point expressions +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# If supplied command-line arguments, it uses them as the expression to have +# bc evaluate, and exits after reading the result. Otherwise, it enters an +# interactive mode, reading expressions and passing them to bc for evaluation, +# with line editing and history. +# +# You could even use this to write bc programs, but you'd have to rework the +# single-line REPL a little bit to do that (and get over the annoying timeout +# on the read) +# +# Chet Ramey +# chet.ramey@case.edu + +# we force stderr to avoid synchronization issues on calculation errors, even +# with the read timeout +init() +{ + coproc BC { bc -q 2>&1; } + # set scale + printf "scale = 10\n" >&${BC[1]} + # bash automatically sets BC_PID to the coproc pid; we store it so we + # can be sure to use it even after bash reaps the coproc and unsets + # the variables + coproc_pid=$BC_PID +} + +# not strictly necessary; the pipes will be closed when the program exits +# but we can use it in reset() below +fini() +{ + eval exec "${BC[1]}>&- ${BC[0]}<&-" +} + +reset() +{ + fini # close the old pipes + + sleep 1 + kill -1 $coproc_pid >/dev/null 2>&1 # make sure the coproc is dead + unset coproc_pid + + init +} + +# set a read timeout of a half second to avoid synchronization problems +calc() +{ + printf "%s\n" "$1" >&${BC[1]} + read -t 0.5 ANSWER <&${BC[0]} +} + +init + +# if we have command line options, process them as a single expression and +# print the result. we could just run `bc <<<"scale = 10 ; $*"' and be done +# with it, but we init the coproc before this and run the calculation through +# the pipes in case we want to do something else with the answer + +if [ $# -gt 0 ] ; then + calc "$*" + printf "%s\n" "$ANSWER" + fini + exit 0 +fi + +# we don't want to save the history anywhere +unset HISTFILE + +while read -e -p 'equation: ' EQN +do + case "$EQN" in + '') continue ;; + exit|quit) break ;; + reset) reset ; continue ;; + esac + + # save to the history list + history -s "$EQN" + + # run it through bc + calc "$EQN" + if [ -n "$ANSWER" ] ; then + printf "%s\n" "$ANSWER" + fi +done +fini + +exit 0 diff --git a/examples/scripts/inpath b/examples/scripts/inpath old mode 100755 new mode 100644 diff --git a/examples/scripts/shprompt b/examples/scripts/shprompt old mode 100755 new mode 100644 diff --git a/examples/scripts/xterm_title b/examples/scripts/xterm_title old mode 100755 new mode 100644 diff --git a/examples/scripts/zprintf b/examples/scripts/zprintf old mode 100755 new mode 100644 diff --git a/examples/shellmath/LICENSE b/examples/shellmath/LICENSE new file mode 100644 index 000000000..e3bf3bb79 --- /dev/null +++ b/examples/shellmath/LICENSE @@ -0,0 +1,677 @@ +Shellfloat is copyright (c) 2020 by Michael Wood. +================================================================================ + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/examples/shellmath/README.md b/examples/shellmath/README.md new file mode 100644 index 000000000..1b4725611 --- /dev/null +++ b/examples/shellmath/README.md @@ -0,0 +1,166 @@ +# Shellmath +Introducing decimal arithmetic libraries for the Bash shell, because +they said it couldn't be done... and because: + +. + +![image info](./image.png) + +## Quick-start guide +Download this project and source the file `shellmath.sh` into your shell script, +then fire away at the shellmath API! + +The ___basic___ API looks like this: +``` + _shellmath_add arg1 arg2 [...] argN + _shellmath_subtract arg1 arg2 # means arg1 - arg2 + _shellmath_multiply arg1 arg2 [...] argN + _shellmath_divide arg1 arg2 # means arg1 / arg2 +``` + +The ___extended___ API introduces one more function: +``` + _shellmath_getReturnValue arg +``` + +This function optimizes away the need for ___$(___ subshelling ___)___ in order to capture `shellmath`'s output. +To use this feature, just be sure to set `__shellmath_isOptimized=1` at the top +of your script. (You can find an example in `faster_e_demo.sh`.) + +Operands to the _shellmath_ functions can be integers or decimal +numbers presented in either standard or scientific notation: +``` + _shellmath_add 1.009 4.223e-2 + _shellmath_getReturnValue sum + echo "The sum is $sum" +``` +Addition and multiplication are of arbitrary arity; try this on for size: +``` + _shellmath_multiply 1 2 3 4 5 6 + _shellmath_getReturnValue sixFactorial + echo "6 factorial is $sixFactorial" +``` +Subtraction and division, OTOH, are exclusively binary operations. + +## The demos +For a gentle introduction to `shellmath` run the demo `slower_e_demo.sh` +with a small whole-number argument, say 15: +``` +$ slower_e_demo.sh 15 +e = 2.7182818284589936 +``` + +This script uses a few `shellmath` API calls to calculate *e*, the mathematical +constant also known as [Euler's number](https://oeis.org/A001113). The argument +*15* tells the script to evaluate the *15th-degree* Maclaurin polynomial for *e*. +(That's the Taylor polynomial centered at 0.) Take a look inside the script to +see how it uses the `shellmath` APIs. + +There is another demo script very much like this one but *different*, and the +sensitive user can *feel* the difference. Try the following, but don't blink +or you'll miss it ;) +``` +$ faster_e_demo.sh 15 +e = 2.7182818284589936 +``` + +Did you feel the difference? Try the `-t` option with both scripts; this will produce +timing statistics. Here are my results +when running from my minGW64 command prompt on Windows 10 with an Intel i3 Core CPU: +``` +$ for n in {1..5}; do faster_e_demo.sh -t 15 2>&1; done | awk '/^real/ {print $2}' +0m0.055s +0m0.051s +0m0.056s +0m0.054s +0m0.054s + +$ for n in {1..5}; do slower_e_demo.sh -t 15 2>&1; done | awk '/^real/ {print $2}' +0m0.498s +0m0.594s +0m0.536s +0m0.511s +0m0.580s +``` + +(When sizing up these timings, do keep in mind that ___we are timing the +calculation of e from its Maclaurin polynomial. Every invocation of either +script is exercising the shellmath arithmetic subroutines 31 times.___) + +The comment header in `faster_e_demo.sh` explains the optimization and shows +how to put this faster version to work for you. + +## Runtime efficiency competitive with awk and bc +The file `timingData.txt` captures the results of some timing experiments that compare +`shellmath` against the GNU versions of the calculators `awk` and `bc`. The experiments +exercised each of the arithmetic operations and captured the results in a shell variable. +The result summary below shows that `shellmath` is competitive with `awk` and runs faster +than `bc` in these experiments. (One commenter noted that the differences in execution speed +can be partially explained by the fact that `shellmath` and `awk` use finite precision +whereas `bc` uses arbitrary precision. Another factor in these measurements is the need to +subshell 'awk' and 'bc' to capture their results, whereas 'shellmath' writes directly to +the shell's global memory.) + +Here are the run times of `shellmath` as a percentage of the `awk` and `bc` equivalents: +``` + versus awk versus bc + Addition: 82.2% 40.6% + Subtraction: 95.9% 50.5% + Multiplication: 135.9% 73.3% + Division: 80.3% 43.2% +``` + +Astute observers will note the experiments provide approximations to the sum, difference, +product, and quotient of *pi* and *e*. Unfortunately I did not gain insight as to which +of these values, if any, are +[transcendental](https://en.wikipedia.org/wiki/Transcendental_number#Possible_transcendental_numbers). + +You can find a deeper discussion of shellmath's runtime efficiency +[here](https://github.com/clarity20/shellmath/wiki/Shellmath-and-runtime-efficiency). + +## Background +The Bash shell does not have built-in operators for decimal arithmetic, making it +something of an oddity among well-known, widely-used programming languages. For the most part, +practitioners in need of powerful computational building blocks have naturally opted +for *other* languages and tools. Their widespread availability has diverted attention +from the possibility of *implementing* decimal arithmetic in Bash and it's easy to assume +that this ***cannot*** be done: + ++ From the indispensable _Bash FAQ_ (on _Greg's Wiki_): [How can I calculate with floating point numbers?](http://mywiki.wooledge.org/BashFAQ/022) + *"For most operations... an external program must be used."* ++ From Mendel Cooper's wonderful and encyclopedic _Advanced Bash Scripting Guide_: + [Bash does not understand floating point arithmetic. Use bc instead.](https://tldp.org/LDP/abs/html/ops.html#NOFLOATINGPOINT) ++ From a community discussion on Stack Overflow, _How do I use floating point division in bash?_ + The user's [preferred answer](https://stackoverflow.com/questions/12722095/how-do-i-use-floating-point-division-in-bash#12722107) + is a good example of _prevailing thought_ on this subject. + +Meanwhile, + ++ Bash maintainer (BDFL?) Chet Ramey sounds a (brighter?) note in [The Bash Reference Guide, Section 6.5](https://tiswww.case.edu/php/chet/bash/bashref.html#Shell-Arithmetic) + by emphasizing what the built-in arithmetic operators ***can*** do. + +But finally, a glimmer of hope: + ++ A [diamond-in-the-rough](http://stackoverflow.com/a/24431665/3776858) buried elsewhere + on Stack Overflow. + This down-and-dirty milestone computes the decimal quotient of two integer arguments. At a casual + glance, it seems to have drawn inspiration from the [Euclidean algorithm](https://mathworld.wolfram.com/EuclideanAlgorithm.html) + for computing GCDs, an entirely different approach than `shellmath`'s. + +Please try `shellmath` on for size and draw your own conclusions! + +## How it works +`shellmath` splits decimal numbers into their integer and fractional parts, +performs the appropriate integer operations on the parts, and recombines the results. +(In the spirit of Bash, numerical overflow is silently ignored.) + +Because if we can get carrying, borrowing, place value, and the distributive +law right, then the sky's the limit! As they say--erm, as they ___said___ in Rome, + + Ad astra per aspera. + +## And now... +You can run your floating-point calculations directly in Bash! + +## Please see also: +[A short discussion on arbitrary precision and shellmath](https://github.com/clarity20/shellmath/wiki/Shellmath-and-arbitrary-precision-arithmetic) diff --git a/examples/shellmath/assert.sh b/examples/shellmath/assert.sh new file mode 100644 index 000000000..bc4122ea0 --- /dev/null +++ b/examples/shellmath/assert.sh @@ -0,0 +1,85 @@ +#!/bin/env bash +############################################################################### +# Internal test engine functions +############################################################################### + +RED='\033[0;31m' +GREEN='\033[0;32m' +NO_COLOR='\033[0m' + +function _shellmath_assert_returnCode() +{ + _shellmath_assert_functionReturn -c "$@" + return $? +} + +function _shellmath_assert_returnString() +{ + _shellmath_assert_functionReturn "$@" + return $? +} + +function _shellmath_assert_functionReturn() +{ + if [[ $# -lt 2 ]]; then + echo "USAGE: ${FUNCNAME[0]} [-c] returnStringOrCode functionName [ functionArgs ... ]" + echo " By default, asserts against the string output by the function." + echo " Use -c to assert against the numeric return code instead." + return "${__shellmath_returnCodes[FAIL]}" + fi + + if [[ "${1,,}" == '-c' ]]; then + mode=RETURN_CODE + shift + else + mode=RETURN_STRING + fi + + expectedReturn="$1" + func="$2" + shift 2 + + args=("$@") + + # Exercise the function in optimized mode; it will run faster by avoiding + # subshelling. This also suppresses dumping of function output to stdout. + __shellmath_isOptimized=${__shellmath_true} + "$func" "${args[@]}" + returnCode=$? + __shellmath_isOptimized=${__shellmath_false} + + # Fetch the return value(s) + local numReturnValues + declare -a actualReturn + _shellmath_getReturnValueCount numReturnValues + if ((numReturnValues == 1)); then + _shellmath_getReturnValue actualReturn[0] + else + # Multiple returns? Join them into one string + local _i evalString="_shellmath_getReturnValues" + for ((_i=0; _i/dev/null; then + echo "${RED}FAIL${NO_COLOR} Line $lineNumber: Command "$command": Syntax error. Required: String|Code value operation args..." + return 3 + fi + + # Run the command, being respectful of shell metacharacters + fullCommand="${words[*]}" + eval "$fullCommand" + local returnString + _shellmath_getReturnValue returnString + echo -e "$returnString" Line "$lineNumber": "$command" + + fi + +} + + +function _main() +{ + source shellmath.sh + source assert.sh + + # Initialize certain globals. As "public" functions, the arithmetic + # functions need to do this themselves, but there are some "private" + # functions that need this here when they are auto-tested. + _shellmath_precalc; __shellmath_didPrecalc=$__shellmath_true + + # Process the test file line-by-line using the above runTests() function + mapfile -t -c 1 -C _shellmath_runTests -O 1 < "${1:-testCases.in}" + + exit 0 +} + +_main "$@" + diff --git a/examples/shellmath/shellmath.sh b/examples/shellmath/shellmath.sh new file mode 100644 index 000000000..5804ad2ae --- /dev/null +++ b/examples/shellmath/shellmath.sh @@ -0,0 +1,1068 @@ +#!/bin/env bash +################################################################################ +# shellmath.sh +# Shell functions for floating-point arithmetic using only builtins +# +# Copyright (c) 2020 by Michael Wood. All rights reserved. +# +# Usage: +# +# source _thisPath_/_thisFileName_ +# +# # Conventional method: call the APIs by subshelling +# mySum=$( _shellmath_add 202.895 6.00311 ) +# echo $mySum +# +# # Optimized method: use hidden globals to simulate more flexible pass-and-return +# _shellmath_isOptimized=1 +# _shellmath_add 44.2 -87 +# _shellmath_getReturnValue mySum +# echo $mySum +# +################################################################################ + + +################################################################################ +# Program constants +################################################################################ +declare -A -r __shellmath_numericTypes=( + [INTEGER]=0 + [DECIMAL]=1 +) + +declare -A -r __shellmath_returnCodes=( + [SUCCESS]="0:Success" + [FAIL]="1:General failure" + [ILLEGAL_NUMBER]="2:Invalid argument; decimal number required: '%s'" + [DIVIDE_BY_ZERO]="3:Divide by zero error" +) + +declare -r -i __shellmath_true=1 +declare -r -i __shellmath_false=0 + +declare __shellmath_SUCCESS __shellmath_FAIL __shellmath_ILLEGAL_NUMBER + +################################################################################ +# Program state +################################################################################ +declare __shellmath_isOptimized=${__shellmath_false} +declare __shellmath_didPrecalc=${__shellmath_false} + + +################################################################################ +# Error-handling utilities +################################################################################ +function _shellmath_getReturnCode() +{ + local errorName=$1 + return "${__shellmath_returnCodes[$errorName]%%:*}" +} + +function _shellmath_warn() +{ + # Generate an error message and return control to the caller + _shellmath_handleError -r "$@" + return $? +} + +function _shellmath_exit() +{ + # Generate an error message and EXIT THE SCRIPT / interpreter + _shellmath_handleError "$@" +} + +function _shellmath_handleError() +{ + # Hidden option "-r" causes return instead of exit + local returnDontExit=$__shellmath_false + if [[ "$1" == "-r" ]]; then + returnDontExit=${__shellmath_true} + shift + fi + + # Format of $1: returnCode:msgTemplate + [[ "$1" =~ ^([0-9]+):(.*) ]] + returnCode=${BASH_REMATCH[1]} + msgTemplate=${BASH_REMATCH[2]} + shift + + # Display error msg, making parameter substitutions as needed + msgParameters="$*" + printf "$msgTemplate" "${msgParameters[@]}" + + if ((returnDontExit)); then + return "$returnCode" + else + exit "$returnCode" + fi +} + + +################################################################################ +# precalc() +# +# Pre-calculates certain global data and by setting the global variable +# "__shellmath_didPrecalc" records that this routine has been called. As an +# optimization, the caller should check that global to prevent needless +# invocations. +################################################################################ +function _shellmath_precalc() +{ + # Set a few global constants + _shellmath_getReturnCode SUCCESS; __shellmath_SUCCESS=$? + _shellmath_getReturnCode FAIL; __shellmath_FAIL=$? + _shellmath_getReturnCode ILLEGAL_NUMBER; __shellmath_ILLEGAL_NUMBER=$? + + # Determine the decimal precision to which we can accurately calculate. + # To do this we probe for the threshold at which integers overflow and + # take the integer floor of that number's base-10 logarithm. + # We check the 64-bit, 32-bit and 16-bit thresholds only. + if ((2**63 < 2**63-1)); then + __shellmath_precision=18 + __shellmath_maxValue=$((2**63-1)) + elif ((2**31 < 2**31-1)); then + __shellmath_precision=9 + __shellmath_maxValue=$((2**31-1)) + else ## ((2**15 < 2**15-1)) + __shellmath_precision=4 + __shellmath_maxValue=$((2**15-1)) + fi + + __shellmath_didPrecalc=$__shellmath_true +} + + +################################################################################ +# Simulate pass-and-return by reference using a secret global storage array +################################################################################ + +declare -a __shellmath_storage + +function _shellmath_setReturnValues() +{ + local -i _i + + for ((_i=1; _i<=$#; _i++)); do + __shellmath_storage[_i]="${!_i}" + done + + __shellmath_storage[0]=$# +} + +function _shellmath_getReturnValues() +{ + local -i _i + local evalString + + for ((_i=1; _i<=$#; _i++)); do + evalString+=${!_i}="${__shellmath_storage[_i]}"" " + done + + eval "$evalString" +} + +function _shellmath_setReturnValue() { __shellmath_storage=(1 "$1"); } +function _shellmath_getReturnValue() { eval "$1"=\"${__shellmath_storage[1]}\"; } +function _shellmath_getReturnValueCount() { eval "$1"=\"${__shellmath_storage[0]}\"; } + +################################################################################ +# validateAndParse(numericString) +# Return Code: SUCCESS or ILLEGAL_NUMBER +# Return Signature: integerPart fractionalPart isNegative numericType isScientific +# +# Validate and parse arguments to the main arithmetic routines +################################################################################ + +function _shellmath_validateAndParse() +{ + local n="$1" + local isNegative=${__shellmath_false} + local isScientific=${__shellmath_false} + local numericType returnCode + + ((returnCode = __shellmath_SUCCESS)) + + # Accept decimals: leading digits (optional), decimal point, trailing digits + if [[ "$n" =~ ^[-]?([0-9]*)\.([0-9]+)$ ]]; then + local integerPart=${BASH_REMATCH[1]:-0} + local fractionalPart=${BASH_REMATCH[2]} + + # Strip superfluous trailing zeros + if [[ "$fractionalPart" =~ ^(.*[^0])0*$ ]]; then + fractionalPart=${BASH_REMATCH[1]} + fi + + numericType=${__shellmath_numericTypes[DECIMAL]} + + # Factor out the negative sign if it is present + if [[ "$n" =~ ^- ]]; then + isNegative=${__shellmath_true} + n=${n:1} + fi + + _shellmath_setReturnValues "$integerPart" "$fractionalPart" \ + $isNegative "$numericType" $isScientific + return "$returnCode" + + # Accept integers + elif [[ "$n" =~ ^[-]?[0-9]+$ ]]; then + numericType=${__shellmath_numericTypes[INTEGER]} + + # Factor out the negative sign if it is present + if [[ "$n" =~ ^- ]]; then + isNegative=${__shellmath_true} + n=${n:1} + fi + + _shellmath_setReturnValues "$n" 0 $isNegative "$numericType" $isScientific + return "$returnCode" + + # Accept scientific notation: 1e5, 2.44E+10, etc. + elif [[ "$n" =~ (.*)[Ee](.*) ]]; then + local significand=${BASH_REMATCH[1]} + local exponent=${BASH_REMATCH[2]} + + # Validate the significand: optional sign, integer part, + # optional decimal point and fractional part + if [[ "$significand" =~ ^[-]?([0-9]+)(\.([0-9]+))?$ ]]; then + + isScientific=${__shellmath_true} + + # Separate the integer and fractional parts + local sigInteger=${BASH_REMATCH[1]} + local sigIntLength=${#sigInteger} + local sigFraction=${BASH_REMATCH[3]} + + # Strip superfluous trailing zeros + if [[ "$sigFraction" =~ ^(.*[^0])0*$ ]]; then + sigFraction=${BASH_REMATCH[1]} + fi + + local sigFracLength=${#sigFraction} + + if [[ "$n" =~ ^- ]]; then + isNegative=${__shellmath_true} + n=${n:1} + fi + + # Rewrite the scientifically-notated number in ordinary decimal notation. + # IOW, realign the integer and fractional parts. Separate with a space + # so they can be returned as two separate values + if ((exponent > 0)); then + local zeroCount integer fraction + ((zeroCount = exponent - sigFracLength)) + if ((zeroCount > 0)); then + printf -v zeros "%0*d" "$zeroCount" 0 + n=${sigInteger}${sigFraction}${zeros}" 0" + numericType=${__shellmath_numericTypes[INTEGER]} + elif ((zeroCount < 0)); then + n=${sigInteger}${sigFraction:0:exponent}" "${sigFraction:exponent} + numericType=${__shellmath_numericTypes[DECIMAL]} + else + n=${sigInteger}${sigFraction}" 0" + numericType=${__shellmath_numericTypes[INTEGER]} + fi + integer=${n% *}; fraction=${n#* } + _shellmath_setReturnValues "$integer" "$fraction" $isNegative "$numericType" $isScientific + return "$returnCode" + + elif ((exponent < 0)); then + local zeroCount integer fraction + ((zeroCount = -exponent - sigIntLength)) + if ((zeroCount > 0)); then + printf -v zeros "%0*d" "$zeroCount" 0 + n="0 "${zeros}${sigInteger}${sigFraction} + numericType=${__shellmath_numericTypes[DECIMAL]} + elif ((zeroCount < 0)); then + n=${sigInteger:0:-zeroCount}" "${sigInteger:(-zeroCount)}${sigFraction} + numericType=${__shellmath_numericTypes[DECIMAL]} + else + n="0 "${sigInteger}${sigFraction} + numericType=${__shellmath_numericTypes[DECIMAL]} + fi + integer=${n% *}; fraction=${n#* } + _shellmath_setReturnValues "$integer" "$fraction" $isNegative "$numericType" $isScientific + return "$returnCode" + + else + # exponent == 0 means the number is already aligned as desired + numericType=${__shellmath_numericTypes[DECIMAL]} + _shellmath_setReturnValues "$sigInteger" "$sigFraction" $isNegative "$numericType" $isScientific + return "$returnCode" + fi + + # Reject strings like xxx[Ee]yyy where xxx, yyy are not valid numbers + else + ((returnCode = __shellmath_ILLEGAL_NUMBER)) + _shellmath_setReturnValues "" + return "$returnCode" + fi + + # Reject everything else + else + ((returnCode = __shellmath_ILLEGAL_NUMBER)) + _shellmath_setReturnValues "" + return "$returnCode" + fi +} + + +################################################################################ +# numToScientific (integerPart, fractionalPart) +# +# Format conversion utility function +################################################################################ +function _shellmath_numToScientific() +{ + local integerPart=$1 fractionalPart=$2 + local exponent head tail scientific + + if ((integerPart > 0)); then + ((exponent = ${#integerPart}-1)) + head=${integerPart:0:1} + tail=${integerPart:1}${fractionalPart} + elif ((integerPart < 0)); then + ((exponent = ${#integerPart}-2)) # skip "-" and first digit + head=${integerPart:0:2} + tail=${integerPart:2}${fractionalPart} + else + [[ "$fractionalPart" =~ ^[-]?(0*)([^0])(.*)$ ]] + exponent=$((-(${#BASH_REMATCH[1]} + 1))) + head=${BASH_REMATCH[2]} + tail=${BASH_REMATCH[3]} + fi + + # Remove trailing zeros + [[ $tail =~ ^.*[^0] ]]; tail=${BASH_REMATCH[0]:-0} + + printf -v scientific "%d.%de%d" "$head" "$tail" "$exponent" + + _shellmath_setReturnValue "$scientific" +} + + +################################################################################ +# _shellmath_add (addend_1, addend_2) +################################################################################ +function _shellmath_add() +{ + local n1="$1" + local n2="$2" + + if ((! __shellmath_didPrecalc)); then + _shellmath_precalc; __shellmath_didPrecalc=$__shellmath_true + fi + + local isVerbose=$(( __shellmath_isOptimized == __shellmath_false )) + + # Is the caller itself an arithmetic function? + local isSubcall=${__shellmath_false} + local isMultiplication=${__shellmath_false} + if [[ "${FUNCNAME[1]}" =~ shellmath_(add|subtract|multiply|divide)$ ]]; then + isSubcall=${__shellmath_true} + if [[ "${BASH_REMATCH[1]}" == multiply ]]; then + isMultiplication=${__shellmath_true} + fi + fi + + # Handle corner cases where argument count is not 2 + local argCount=$# + if ((argCount == 0)); then + echo "Usage: ${FUNCNAME[0]} addend_1 addend_2" + return "$__shellmath_SUCCESS" + elif ((argCount == 1)); then + # Note the result as-is, print if running "normally", and return + _shellmath_setReturnValue "$n1" + (( isVerbose && ! isSubcall )) && echo "$n1" + return "$__shellmath_SUCCESS" + elif ((argCount > 2 && !isSubcall)); then + local recursiveReturn + + # Use a binary recursion tree to add everything up + # 1) left branch + _shellmath_add "${@:1:$((argCount/2))}"; recursiveReturn=$? + _shellmath_getReturnValue n1 + if (( recursiveReturn != __shellmath_SUCCESS )); then + _shellmath_setReturnValue "$n1" + return "$recursiveReturn" + fi + # 2) right branch + _shellmath_add "${@:$((argCount/2+1))}"; recursiveReturn=$? + _shellmath_getReturnValue n2 + if (( recursiveReturn != __shellmath_SUCCESS )); then + _shellmath_setReturnValue "$n2" + return "$recursiveReturn" + fi + # 3) head node + local sum + _shellmath_add "$n1" "$n2"; recursiveReturn=$? + _shellmath_getReturnValue sum + _shellmath_setReturnValue "$sum" + if (( isVerbose && ! isSubcall )); then + echo "$sum" + fi + return "$recursiveReturn" + fi + + local integerPart1 fractionalPart1 integerPart2 fractionalPart2 + local isNegative1 type1 isScientific1 isNegative2 type2 isScientific2 + local flags + + if ((isMultiplication)); then + integerPart1="$1" + fractionalPart1="$2" + integerPart2="$3" + fractionalPart2="$4" + + type1=${__shellmath_numericTypes[DECIMAL]} + type2=${__shellmath_numericTypes[DECIMAL]} + isNegative1=$__shellmath_false + isNegative2=$__shellmath_false + isScientific1=$__shellmath_false + isScientific2=$__shellmath_false + else + # Check and parse the arguments + _shellmath_validateAndParse "$n1"; flags=$? + _shellmath_getReturnValues integerPart1 fractionalPart1 isNegative1 type1 isScientific1 + if ((flags == __shellmath_ILLEGAL_NUMBER)); then + _shellmath_warn "${__shellmath_returnCodes[ILLEGAL_NUMBER]}" "$n1" + return $? + fi + _shellmath_validateAndParse "$n2"; flags=$? + _shellmath_getReturnValues integerPart2 fractionalPart2 isNegative2 type2 isScientific2 + if ((flags == __shellmath_ILLEGAL_NUMBER)); then + _shellmath_warn "${__shellmath_returnCodes[ILLEGAL_NUMBER]}" "$n2" + return $? + fi + fi + + # Quick add & return for integer adds + if ((type1==type2 && type1==__shellmath_numericTypes[INTEGER])); then + ((isNegative1)) && ((integerPart1*=-1)) + ((isNegative2)) && ((integerPart2*=-1)) + local sum=$((integerPart1 + integerPart2)) + if (( (!isSubcall) && (isScientific1 || isScientific2) )); then + _shellmath_numToScientific $sum "" + _shellmath_getReturnValue sum + fi + _shellmath_setReturnValue $sum + if (( isVerbose && ! isSubcall )); then + echo "$sum" + fi + return "$__shellmath_SUCCESS" + fi + + # Right-pad both fractional parts with zeros to the same length + local fractionalLen1=${#fractionalPart1} + local fractionalLen2=${#fractionalPart2} + if ((fractionalLen1 > fractionalLen2)); then + # Use printf to zero-pad. This avoids mathematical side effects. + printf -v fractionalPart2 %-*s "$fractionalLen1" "$fractionalPart2" + fractionalPart2=${fractionalPart2// /0} + elif ((fractionalLen2 > fractionalLen1)); then + printf -v fractionalPart1 %-*s "$fractionalLen2" "$fractionalPart1" + fractionalPart1=${fractionalPart1// /0} + fi + local unsignedFracLength=${#fractionalPart1} + + # Implement a sign convention that will enable us to detect carries by + # comparing string lengths of addends and sums: propagate the sign across + # both numeric parts (whether unsigned or zero). + if ((isNegative1)); then + fractionalPart1="-"$fractionalPart1 + integerPart1="-"$integerPart1 + fi + if ((isNegative2)); then + fractionalPart2="-"$fractionalPart2 + integerPart2="-"$integerPart2 + fi + + local integerSum=0 + local fractionalSum=0 + + ((integerSum = integerPart1+integerPart2)) + + # Summing the fractional parts is tricky: We need to override the shell's + # default interpretation of leading zeros, but the operator for doing this + # (the "10#" operator) cannot work directly with negative numbers. So we + # break it all down. + if ((isNegative1)); then + ((fractionalSum += (-1) * 10#${fractionalPart1:1})) + else + ((fractionalSum += 10#$fractionalPart1)) + fi + if ((isNegative2)); then + ((fractionalSum += (-1) * 10#${fractionalPart2:1})) + else + ((fractionalSum += 10#$fractionalPart2)) + fi + + unsignedFracSumLength=${#fractionalSum} + if [[ "$fractionalSum" =~ ^[-] ]]; then + ((unsignedFracSumLength--)) + fi + + # Restore any leading zeroes that were lost when adding + if ((unsignedFracSumLength < unsignedFracLength)); then + local lengthDiff=$((unsignedFracLength - unsignedFracSumLength)) + local zeroPrefix + printf -v zeroPrefix "%0*d" "$lengthDiff" 0 + if ((fractionalSum < 0)); then + fractionalSum="-"${zeroPrefix}${fractionalSum:1} + else + fractionalSum=${zeroPrefix}${fractionalSum} + fi + fi + + # Carry a digit from fraction to integer if required + if ((10#$fractionalSum!=0 && unsignedFracSumLength > unsignedFracLength)); then + local carryAmount + ((carryAmount = isNegative1?-1:1)) + ((integerSum += carryAmount)) + # Remove the leading 1-digit whether the fraction is + or - + fractionalSum=${fractionalSum/1/} + fi + + # Transform the partial sums from additive to concatenative. Example: the + # pair (-2,3) is not -2.3 but rather (-2)+(0.3), i.e. -1.7 so we want to + # transform (-2,3) to (-1,7). This transformation is meaningful when + # the two parts have opposite signs, so that's what we look for. + if ((integerSum < 0 && 10#$fractionalSum > 0)); then + ((integerSum += 1)) + ((fractionalSum = 10#$fractionalSum - 10**unsignedFracSumLength)) + elif ((integerSum > 0 && 10#$fractionalSum < 0)); then + ((integerSum -= 1)) + ((fractionalSum = 10**unsignedFracSumLength + 10#$fractionalSum)) + fi + # This last case needs to function either as an "else" for the above, + # or as a coda to the "if" clause when integerSum is -1 initially. + if ((integerSum == 0 && 10#$fractionalSum < 0)); then + integerSum="-"$integerSum + ((fractionalSum *= -1)) + fi + + # Touch up the numbers for display + local sum + ((10#$fractionalSum < 0)) && fractionalSum=${fractionalSum:1} + if (( (!isSubcall) && (isScientific1 || isScientific2) )); then + _shellmath_numToScientific "$integerSum" "$fractionalSum" + _shellmath_getReturnValue sum + elif ((10#$fractionalSum)); then + printf -v sum "%s.%s" "$integerSum" "$fractionalSum" + else + sum=$integerSum + fi + + # Note the result, print if running "normally", and return + _shellmath_setReturnValue $sum + if (( isVerbose && ! isSubcall )); then + echo "$sum" + fi + + return "$__shellmath_SUCCESS" +} + + +################################################################################ +# subtract (subtrahend, minuend) +################################################################################ +function _shellmath_subtract() +{ + local n1="$1" + local n2="$2" + local isVerbose=$(( __shellmath_isOptimized == __shellmath_false )) + + if ((! __shellmath_didPrecalc)); then + _shellmath_precalc; __shellmath_didPrecalc=$__shellmath_true + fi + + if (( $# == 0 || $# > 2 )); then + echo "Usage: ${FUNCNAME[0]} subtrahend minuend" + return "$__shellmath_SUCCESS" + elif (( $# == 1 )); then + # Note the value as-is and return + _shellmath_setReturnValue "$n1" + ((isVerbose)) && echo "$n1" + return "$__shellmath_SUCCESS" + fi + + # Symbolically negate the second argument + if [[ "$n2" =~ ^- ]]; then + n2=${n2:1} + else + n2="-"$n2 + fi + + # Calculate, note the result, print if running "normally", and return + local difference + _shellmath_add "$n1" "$n2" + _shellmath_getReturnValue difference + if ((isVerbose)); then + echo "$difference" + fi + + return $? +} + + +################################################################################ +# reduceOuterPairs (two integer parts [, two fractional parts]) +# +# Examines the magnitudes of two numbers in advance of a multiplication +# and either chops off their lowest-order digits or pushes them to the +# corresponding lower-order parts in order to prevent overflow in the product. +# The choice depends on whether 2 or 4 arguments are supplied. +################################################################################ +function _shellmath_reduceOuterPairs() +{ + local value1="$1" value2="$2" subvalue1="$3" subvalue2="$4" + + local digitExcess value1Len=${#value1} value2Len=${#value2} + ((digitExcess = value1Len + value2Len - __shellmath_precision)) + + # Be very precise about detecting overflow. The "digit excess" underestimates + # this: floor(log_10(longLongMax)). We don't want to needlessly lose precision + # when a product barely squeezes under the exact threshold. + if ((digitExcess>1 || (digitExcess==1 && value1 > __shellmath_maxValue/value2) )); then + + # Identify the digit-tails to be pruned off and either discarded or + # pushed past the decimal point. In pruning the two values we want to + # retain as much "significance" as possible, so we try to equalize the + # lengths of the remaining digit sequences. + local tail1 tail2 + local lengthDiff leftOver + + # Which digit string is longer, and by how much? + ((lengthDiff = value1Len - value2Len)) + if ((lengthDiff > 0)); then + if ((digitExcess <= lengthDiff)); then + # Chop digits from the longer string only + tail1=${value1:(-digitExcess)} + tail2="" # do not chop anything + else + # Chop more digits from the longer string so the two strings + # end up as nearly-equal in length as possible + ((leftOver = digitExcess - lengthDiff)) + tail1=${value1:(-(lengthDiff + leftOver/2))} + tail2=${value2:(-((leftOver+1)/2))} + fi + else + ((lengthDiff *= -1)) + # Mirror the above code block but swap 1 and 2 + if ((digitExcess <= lengthDiff)); then + tail1="" + tail2=${value2:(-digitExcess)} + else + ((leftOver = digitExcess - lengthDiff)) + tail1=${value1:(-((leftOver+1)/2))} + tail2=${value2:(-(lengthDiff + leftOver/2))} + fi + fi + + # Discard the least-significant digits or move them past the decimal point + value1=${value1%${tail1}} + [[ -n "$subvalue1" ]] && subvalue1=${tail1}${subvalue1%0} # remove placeholder zero + value2=${value2%${tail2}} + [[ -n "$subvalue2" ]] && subvalue2=${tail2}${subvalue2%0} + else + # Signal the caller that no rescaling was actually done + ((digitExcess = 0)) + fi + + _shellmath_setReturnValues "$value1" "$value2" \ + "$subvalue1" "$subvalue2" "$digitExcess" +} + +################################################################################ +# rescaleValue(value, rescaleFactor) +# +# Upscales a decimal value by "factor" orders of magnitude: 3.14159 --> 3141.59 +################################################################################ +function _shellmath_rescaleValue() +{ + local value="$1" rescalingFactor="$2" + local head tail zeroCount zeroTail + + [[ "$value" =~ ^(.*)\.(.*)$ ]] + head=${BASH_REMATCH[1]} + tail=${BASH_REMATCH[2]} + ((zeroCount = rescalingFactor - ${#tail})) + if ((zeroCount > 0)); then + printf -v zeroTail "%0*d" "$zeroCount" 0 + value=${head}${tail}${zeroTail} + elif ((zeroCount < 0)); then + value=${head}${tail:0:rescalingFactor}"."${tail:rescalingFactor} + else + value=${head}${tail} + fi + + _shellmath_setReturnValue "$value" +} + +################################################################################ +# reduceCrossPairs (two integer parts, two fractional parts) +# +# Examines the precision of the inner products (of "multiplication by parts") +# and if necessary truncates the fractional part(s) to prevent overflow +################################################################################ +function _shellmath_reduceCrossPairs() +{ + local value1="$1" value2="$2" subvalue1="$3" subvalue2="$4" + + local digitExcess value1Len=${#value1} value2Len=${#value2} + local subvalue1Len=${#subvalue1} subvalue2Len=${#subvalue2} + + # Check BOTH cross-products + ((digitExcess = value1Len + subvalue2Len - __shellmath_precision)) + if ((digitExcess > 1 || (digitExcess==1 && value1 > __shellmath_maxValue/subvalue2) )); then + subvalue2=${subvalue2:0:(-digitExcess)} + fi + ((digitExcess = value2Len + subvalue1Len - __shellmath_precision)) + if ((digitExcess > 1 || (digitExcess==1 && value2 > __shellmath_maxValue/subvalue1) )); then + subvalue1=${subvalue1:0:(-digitExcess)} + fi + + _shellmath_setReturnValues "$subvalue1" "$subvalue2" +} + + +function _shellmath_round() +{ + local number="$1" digitCount="$2" + local nextDigit=${number:digitCount:1} + + number=${number:0:digitCount} + if ((nextDigit >= 5)); then + printf -v number "%0*d" "$digitCount" $((10#$number + 1)) + fi + + _shellmath_setReturnValue "$number" +} + +################################################################################ +# multiply (multiplicand, multiplier) +################################################################################ +function _shellmath_multiply() +{ + local n1="$1" + local n2="$2" + + if ((! __shellmath_didPrecalc)); then + _shellmath_precalc; __shellmath_didPrecalc=$__shellmath_true + fi + + local isVerbose=$(( __shellmath_isOptimized == __shellmath_false )) + + # Is the caller itself an arithmetic function? + local isSubcall=${__shellmath_false} + if [[ "${FUNCNAME[1]}" =~ shellmath_(add|subtract|multiply|divide)$ ]]; then + isSubcall=${__shellmath_true} + fi + + # Handle corner cases where argument count is not 2 + local argCount=$# + if ((argCount == 0)); then + echo "Usage: ${FUNCNAME[0]} factor_1 factor_2" + return "$__shellmath_SUCCESS" + elif ((argCount == 1)); then + # Note the value as-is and return + _shellmath_setReturnValue "$n1" + (( isVerbose && ! isSubcall )) && echo "$n1" + return "$__shellmath_SUCCESS" + elif ((argCount > 2)); then + local recursiveReturn + + # Use a binary recursion tree to multiply everything out + # 1) left branch + _shellmath_multiply "${@:1:$((argCount/2))}"; recursiveReturn=$? + _shellmath_getReturnValue n1 + if (( recursiveReturn != __shellmath_SUCCESS )); then + _shellmath_setReturnValue "$n1" + return "$recursiveReturn" + fi + # 2) right branch + _shellmath_multiply "${@:$((argCount/2+1))}"; recursiveReturn=$? + _shellmath_getReturnValue n2 + if (( recursiveReturn != __shellmath_SUCCESS )); then + _shellmath_setReturnValue "$n2" + return "$recursiveReturn" + fi + # 3) head node + local product + _shellmath_multiply "$n1" "$n2"; recursiveReturn=$? + _shellmath_getReturnValue product + _shellmath_setReturnValue "$product" + if (( isVerbose && ! isSubcall )); then + echo "$product" + fi + return "$recursiveReturn" + fi + + local integerPart1 fractionalPart1 integerPart2 fractionalPart2 + local isNegative1 type1 isScientific1 isNegative2 type2 isScientific2 + local flags + + # Check and parse the arguments + _shellmath_validateAndParse "$n1"; flags=$? + _shellmath_getReturnValues integerPart1 fractionalPart1 isNegative1 type1 isScientific1 + if ((flags == __shellmath_ILLEGAL_NUMBER)); then + _shellmath_warn "${__shellmath_returnCodes[ILLEGAL_NUMBER]}" "$n1" + return $? + fi + _shellmath_validateAndParse "$n2"; flags=$? + _shellmath_getReturnValues integerPart2 fractionalPart2 isNegative2 type2 isScientific2 + if ((flags == __shellmath_ILLEGAL_NUMBER)); then + _shellmath_warn "${__shellmath_returnCodes[ILLEGAL_NUMBER]}" "$n2" + return $? + fi + + # Overflow / underflow detection and accommodation + local rescalingFactor=0 + if ((${#integerPart1} + ${#integerPart2} + ${#fractionalPart1} + ${#fractionalPart2} >= ${__shellmath_precision})); then + _shellmath_reduceOuterPairs "$integerPart1" "$integerPart2" "$fractionalPart1" "$fractionalPart2" + _shellmath_getReturnValues integerPart1 integerPart2 fractionalPart1 fractionalPart2 rescalingFactor + if ((10#$fractionalPart1)); then type1=${__shellmath_numericTypes[DECIMAL]}; fi + if ((10#$fractionalPart2)); then type2=${__shellmath_numericTypes[DECIMAL]}; fi + + _shellmath_reduceCrossPairs "$integerPart1" "$integerPart2" "$fractionalPart1" "$fractionalPart2" + _shellmath_getReturnValues fractionalPart1 fractionalPart2 + + _shellmath_reduceOuterPairs "$fractionalPart1" "$fractionalPart2" + _shellmath_getReturnValues fractionalPart1 fractionalPart2 + fi + + # Quick multiply & return for integer multiplies + if ((type1==type2 && type1==__shellmath_numericTypes[INTEGER])); then + ((isNegative1)) && ((integerPart1*=-1)) + ((isNegative2)) && ((integerPart2*=-1)) + local product=$((integerPart1 * integerPart2)) + if ((rescalingFactor > 0)); then + _shellmath_rescaleValue "$product" "$rescalingFactor" + _shellmath_getReturnValue product + fi + if (( (!isSubcall) && (isScientific1 || isScientific2) )); then + _shellmath_numToScientific $product "" + _shellmath_getReturnValue product + fi + _shellmath_setReturnValue $product + if (( isVerbose && ! isSubcall )); then + echo "$product" + fi + return "$__shellmath_SUCCESS" + fi + + # The product has four components per the distributive law + local intProduct floatProduct innerProduct1 innerProduct2 + # Widths of the decimal parts + local floatWidth fractionalWidth1 fractionalWidth2 + + # Compute the integer and floating-point components + ((intProduct = integerPart1 * integerPart2)) + + fractionalWidth1=${#fractionalPart1} + fractionalWidth2=${#fractionalPart2} + ((floatWidth = fractionalWidth1 + fractionalWidth2)) + ((floatProduct = 10#$fractionalPart1 * 10#$fractionalPart2)) + if ((${#floatProduct} < floatWidth)); then + printf -v floatProduct "%0*d" "$floatWidth" "$floatProduct" + fi + + # Compute the inner products: First integer-multiply, then rescale + ((innerProduct1 = integerPart1 * 10#$fractionalPart2)) + ((innerProduct2 = integerPart2 * 10#$fractionalPart1)) + + # Rescale the inner products back to decimals so we can shellmath_add() them + if ((fractionalWidth2 <= ${#innerProduct1})); then + local innerInt1=${innerProduct1:0:(-$fractionalWidth2)} + local innerFloat1=${innerProduct1:(-$fractionalWidth2)} + integerPart1=${innerInt1} + fractionalPart1=${innerFloat1} + else + integerPart1=0 + printf -v fractionalPart1 "%0*d" "$fractionalWidth2" "$innerProduct1" + fi + if ((fractionalWidth1 <= ${#innerProduct2})); then + local innerInt2=${innerProduct2:0:(-$fractionalWidth1)} + local innerFloat2=${innerProduct2:(-$fractionalWidth1)} + integerPart2=${innerInt2} + fractionalPart2=${innerFloat2} + else + integerPart2=0 + printf -v fractionalPart2 "%0*d" "$fractionalWidth1" "$innerProduct2" + fi + + # Combine the distributed parts + local innerSum product + # Add the inner products to get the inner sum + _shellmath_add "$integerPart1" "$fractionalPart1" "$integerPart2" "$fractionalPart2" + _shellmath_getReturnValue innerSum + [[ "$innerSum" =~ (.*)\.(.*) ]] + integerPart1=${BASH_REMATCH[1]} + fractionalPart1=${BASH_REMATCH[2]} + # Add inner sum + outer sum + _shellmath_add "$integerPart1" "$fractionalPart1" "$intProduct" "$floatProduct" + _shellmath_getReturnValue product + + # Determine the sign of the product + if ((isNegative1 != isNegative2)); then + product="-"$product + fi + + # When we pre-detect overflow in the integer part of the computation, + # we compensate by shrinking the inputs by some order of magnitude. + # Having now finished the computation, we revert to the original magnitude. + if ((rescalingFactor > 0)); then + _shellmath_rescaleValue "$product" "$rescalingFactor" + _shellmath_getReturnValue product + fi + + # Convert to scientific notation if appropriate + if (( (!isSubcall) && (isScientific1 || isScientific2) )); then + _shellmath_numToScientific "${product%.*}" "${product#*.}" + _shellmath_getReturnValue product + fi + + # Note the result, print if running "normally", and return + _shellmath_setReturnValue $product + if (( isVerbose && ! isSubcall )); then + echo "$product" + fi + + return "$__shellmath_SUCCESS" +} + + +################################################################################ +# divide (dividend, divisor) +################################################################################ +function _shellmath_divide() +{ + local n1="$1" + local n2="$2" + local integerPart1 fractionalPart1 integerPart2 fractionalPart2 + local isNegative1 type1 isScientific1 isNegative2 type2 isScientific2 + + if ((! __shellmath_didPrecalc)); then + _shellmath_precalc; __shellmath_didPrecalc=$__shellmath_true + fi + + local isVerbose=$(( __shellmath_isOptimized == __shellmath_false )) + + local isTesting=${__shellmath_false} + if [[ "${FUNCNAME[1]}" == "_shellmath_assert_functionReturn" ]]; then + isTesting=${__shellmath_true} + fi + + if [[ $# -eq 0 || $# -gt 2 ]]; then + echo "Usage: ${FUNCNAME[0]} dividend divisor" + return "$__shellmath_SUCCESS" + elif [[ $# -eq 1 ]]; then + # Note the value as-is and return + _shellmath_setReturnValue "$n1" + ((isVerbose)) && echo "$n1" + return "$__shellmath_SUCCESS" + fi + + # Check and parse the arguments + local flags + _shellmath_validateAndParse "$n1"; flags=$? + _shellmath_getReturnValues integerPart1 fractionalPart1 isNegative1 type1 isScientific1 + if ((flags == __shellmath_ILLEGAL_NUMBER)); then + _shellmath_warn "${__shellmath_returnCodes[ILLEGAL_NUMBER]}" "$n1" + return $? + fi + _shellmath_validateAndParse "$n2"; flags=$? + _shellmath_getReturnValues integerPart2 fractionalPart2 isNegative2 type2 isScientific2 + if ((flags == __shellmath_ILLEGAL_NUMBER)); then + _shellmath_warn "${__shellmath_returnCodes[ILLEGAL_NUMBER]}" "$n2" + return $? + fi + + # Throw error on divide by zero + if ((integerPart2 == 0 && 10#$fractionalPart2 == 0)); then + _shellmath_warn "${__shellmath_returnCodes[DIVIDE_BY_ZERO]}" "$n2" + return $? + fi + + # Convert the division problem to an *integer* division problem by rescaling + # both inputs so as to lose their decimal points. To obtain maximal precision, + # we scale up the numerator further, padding with as many zeros as it can hold + local numerator denominator quotient + local rescaleFactor zeroCount zeroTail + + if ((integerPart1 == 0)); then + integerPart1="" + fi + ((zeroCount = __shellmath_precision - ${#integerPart1} - ${#fractionalPart1})) + ((rescaleFactor = __shellmath_precision - ${#integerPart1} - ${#fractionalPart2})) + if ((zeroCount > 0)); then + printf -v zeroTail "%0*d" "$zeroCount" 0 + fi + + # Rescale and rewrite the fraction to be computed, and compute it + numerator=${integerPart1}${fractionalPart1}${zeroTail} + denominator=${integerPart2}${fractionalPart2} + ((quotient = 10#$numerator / 10#$denominator)) + + # For greater precision, re-divide by the remainder to get the next digits of the quotient + local remainder quotient_2 + ((remainder = 10#$numerator % 10#$denominator)) # cannot exceed numerator or thus, maxValue + ((zeroCount = __shellmath_precision - ${#remainder})) + if ((zeroCount > 0)); then + printf -v zeroTail "%0*d" "$zeroCount" 0 + else + zeroTail="" + fi + # Derive the new numerator from the remainder. Do not change the denominator. + numerator=${remainder}${zeroTail} + ((quotient_2 = 10#$numerator / 10#$denominator)) + quotient=${quotient}${quotient_2} + ((rescaleFactor += ${#quotient_2})) + + # Rescale back. For aesthetic reasons we also round off at the "precision"th decimal place + ((zeroCount = rescaleFactor - ${#quotient})) + if ((zeroCount >= 0)); then + local zeroPrefix="" fractionalPart + if ((zeroCount > 0)); then + printf -v zeroPrefix "%0*d" "$((rescaleFactor - ${#quotient}))" 0 + fi + fractionalPart=${zeroPrefix}${quotient} + _shellmath_round "$fractionalPart" $__shellmath_precision + _shellmath_getReturnValue fractionalPart + quotient="0."${fractionalPart} + else + fractionalPart=${quotient:(-$rescaleFactor)} + _shellmath_round "$fractionalPart" $__shellmath_precision + _shellmath_getReturnValue fractionalPart + quotient=${quotient:0:(-$rescaleFactor)}"."${fractionalPart} + fi + + # Determine the sign of the quotient + if ((isNegative1 != isNegative2)); then + quotient="-"$quotient + fi + + if ((isTesting)); then + # Trim zeros. (Requires decimal point and zero tail.) + if [[ "$quotient" =~ [\.].*0$ ]]; then + # If the decimal point IMMEDIATELY precedes the 0s, remove that too + [[ $quotient =~ [\.]?0+$ ]] + quotient=${quotient%${BASH_REMATCH[0]}} + fi + fi + + # Convert to scientific notation if appropriate + if ((isScientific1 || isScientific2)); then + _shellmath_numToScientific "${quotient%.*}" "${quotient#*.}" + _shellmath_getReturnValue quotient + fi + + # Note the result, print if running "normally", and return + _shellmath_setReturnValue "$quotient" + if ((isVerbose)); then + echo "$quotient" + fi + + return "$__shellmath_SUCCESS" +} + diff --git a/examples/shellmath/slower_e_demo.sh b/examples/shellmath/slower_e_demo.sh new file mode 100644 index 000000000..d8fc9314d --- /dev/null +++ b/examples/shellmath/slower_e_demo.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +############################################################################### +# This script illustrates the use of the shellmath APIs to perform +# decimal calculations. Here we approximate the mathematical constant 'e' +# using its Maclaurin polynomials (i.e. its Taylor polynomials centered at 0). +############################################################################### + +source shellmath.sh + +# Setting the '-t' flag will cause the script to time the algorithm +if [[ "$1" == '-t' ]]; then + do_timing=${__shellmath_true} + shift +fi + +if [[ $# -ne 1 ]]; then + echo "USAGE: ${BASH_SOURCE##*/} [-t] *N*" + echo " Approximates 'e' using the N-th order Maclaurin polynomial" + echo " (i.e. the Taylor polynomial centered at 0)." + echo " Specify the '-t' flag to time the main algorithm." + exit 0 +elif [[ ! "$1" =~ ^[0-9]+$ ]]; then + echo "Illegal argument. Whole numbers only, please." + exit 1 +fi + + +function run_algorithm() +{ + # Initialize + n=0; N=$1; zero_factorial=1 + + # Initialize e to the zeroth-order term + term=$(_shellmath_divide 1 $zero_factorial) + e=$term + + # Compute successive terms T(n) := T(n-1)/n and accumulate into e + for ((n=1; n<=N; n++)); do + term=$(_shellmath_divide "$term" "$n") + e=$(_shellmath_add "$e" "$term") + done + + echo "e = $e" +} + + +if (( do_timing == __shellmath_true )); then + time run_algorithm "$1" +else + run_algorithm "$1" +fi + +exit 0 + diff --git a/examples/shellmath/testCases.in b/examples/shellmath/testCases.in new file mode 100644 index 000000000..54e3a822d --- /dev/null +++ b/examples/shellmath/testCases.in @@ -0,0 +1,142 @@ +################################################################ +# The general testcase syntax is +# assertionType expectedValue functionUnderTest [args ... ] +# +# where assertionType is either of: +# Code to indicate the (bash-style) integer return code +# String to indicate the string "printed" as a side effect +# +# and functionUnderTest is the function name +# with the "_shellmath_" prefix removed. +################################################################ + +################################ +# Tests for SUPPORTING FUNCTIONS +################################ + +# Tests for getReturnCode() +Code 0 getReturnCode SUCCESS +Code 1 getReturnCode FAIL +Code 2 getReturnCode ILLEGAL_NUMBER + +## Tests for validateAndParse(): +## Validate a number, determine its type and sign, split it into parts + +# Detect Invalid input +Code 2 validateAndParse NaN +String "" validateAndParse NaN +# Positive integers +String "4 0 0 0 0" validateAndParse 4 +# Negative integers +String "9 0 1 0 0" validateAndParse -9 +# Decimals +String "4 2 0 1 0" validateAndParse 4.2 +# Negative decimals +String "4 2 1 1 0" validateAndParse -4.2 +# Scientific / exponential notation: Check all code branches +String "340000 0 0 0 1" validateAndParse 3.4e5 +String "344 4 0 1 1" validateAndParse 3.444e2 +String "34567 0 0 0 1" validateAndParse 3.4567e4 +String "0 003456 0 1 1" validateAndParse 3.456e-3 +String "34 56 0 1 1" validateAndParse 345.6e-1 +String "0 23011 0 1 1" validateAndParse 23.011e-2 +String "23 011 0 1 1" validateAndParse 23.011e0 + +#################### +# Tests for ADDITION +#################### +String 4 add 4 +String 9 add 4 5 + +# Same-length decimal tails with no leading zeros, no carry across decimal point +String 2.214 add 1.105 1.109 + +# Carry across decimal point +String 3.8 add 1.9 1.9 +String -3.8 add -1.9 -1.9 + +# Different-length decimals, one with leading zero +String 2.195 add 1.105 1.09 +String -2.195 add -1.105 -1.09 + +# Same-length tails having leading zeros +String 2.014 add 1.005 1.009 +String -2.014 add -1.005 -1.009 +# Different-length tails with and without leading zeros +String 3.31462 add 1.905 1.40962 +String 2.01462 add 1.005 1.00962 + +# Subtraction +String 2.5 subtract 5.2 2.7 +String -2.5 subtract 2.7 5.2 +String 2.5 add 5.2 -2.7 + +# Integer part equal to 0 +String 1.5 add 0.6 0.9 +String 1.5 add .6 .9 +String -0.3 add 0.6 -0.9 +String -0.3 add .6 -.9 + +# Recursive/multiple addition +String 12 add 2 4 6 +String 6.6 add 1.1 2.2 3.3 + +########################## +# Tests for MULTIPLICATION +########################## +String 4 multiply 4 +String 20 multiply 4 5 + +String 21.32 multiply 4.1 5.2 +String -21.32 multiply -4.1 5.2 + +# Carry-heavy products +String 98.901 multiply 9.9 9.99 + +# Leading zeros after decimal point: +# Track place value with zero-padding +String 1.0201 multiply 1.01 1.01 +String 0.0001 multiply 0.01 0.01 +String 0.0001 add 0 0.0001 + +# Staggered decimal precisions +String 0.000001 multiply 0.01 0.0001 + +# Interpret in base 10 +String 2.2781 multiply 1.09 2.09 + +# Recursive multiplication +String 35.1384 multiply 1.1 2.2 3.3 4.4 + +#################### +# Tests for DIVISION +#################### +String 4 divide 4 +String 4 divide 20 5 + +String 0.5 divide 1 2 +String -0.5 divide -1 2 + +# Mixed fractions +String 34.54 divide 3454 100 + +# Non-terminating decimals +String 0.166666666666666667 divide 1 6 + +# Decimal arguments +String 0.25 divide 0.5 2 +String 0.04165 divide 0.1666 4 + +########################### +# Tests for scientific math +########################### +String 8.8e4 add 1.1e4 7.7e4 +String 4.239e1 add 1.224e1 3.015e1 +String -6.6e4 add 1.1e4 -7.7e4 +String -66000 add 11000 -77000 +String 1.23123e2 add 1.23e2 1.23e-1 +String 8.1403e7 multiply 2.03e5 4.01e2 +String 1.0e-7 multiply 1.0e-3 1.0e-4 +String 1.0e-7 multiply 1e-3 1e-4 + + diff --git a/examples/shellmath/timingData.txt b/examples/shellmath/timingData.txt new file mode 100644 index 000000000..d1de887bd --- /dev/null +++ b/examples/shellmath/timingData.txt @@ -0,0 +1,42 @@ +$ ######## Activate optimized mode as described in the README ######## +$ __shellmath_isOptimized=1 + +$ ######## Addition ######## +$ time { for ((i=0; i<100; i++)); do _shellmath_add 3.1415926 2.7182818; _shellmath_getReturnValue sum; done; } +real 0m0.196s +user 0m0.195s +sys 0m0.000s +$ time { for ((i=0; i<100; i++)); do sum=$(bc <<< "3.1415926+2.7182818"); done; } +real 0m0.488s +user 0m0.092s +sys 0m0.384s + +$ ######## Subtraction ######## +$ time { for ((i=0; i<100; i++)); do _shellmath_subtract 3.1415926 2.7182818; _shellmath_getReturnValue diff; done; } +real 0m0.236s +user 0m0.234s +sys 0m0.001s +$ time { for ((i=0; i<100; i++)); do diff=$(bc <<< "3.1415926-2.7182818"); done; } +real 0m0.461s +user 0m0.090s +sys 0m0.388s + +$ ######## Multiplication ######## +$ time { for ((i=0; i<100; i++)); do _shellmath_multiply 3.1415926 2.7182818; _shellmath_getReturnValue prod; done; } +real 0m0.340s +user 0m0.333s +sys 0m0.005s +$ time { for ((i=0; i<100; i++)); do prod=$(bc <<< "3.1415926*2.7182818"); done; } +real 0m0.465s +user 0m0.105s +sys 0m0.377s + +$ ######## Division ######## +$ time { for ((i=0; i<100; i++)); do _shellmath_divide 3.1415926/2.7182818; _shellmath_getReturnValue quot; done; } +real 0m0.196s +user 0m0.195s +sys 0m0.000s +$ time { for ((i=0; i<100; i++)); do quot=$(bc <<< "scale=8; 3.1415926/2.7182818"); done; } +real 0m0.463s +user 0m0.116s +sys 0m0.364s diff --git a/execute_cmd.c b/execute_cmd.c index 425679a20..e5c6b9ab7 100644 --- a/execute_cmd.c +++ b/execute_cmd.c @@ -1,6 +1,6 @@ /* execute_cmd.c -- Execute a COMMAND structure. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -165,6 +165,7 @@ static int execute_while_or_until PARAMS((WHILE_COM *, int)); static int execute_if_command PARAMS((IF_COM *)); static int execute_null_command PARAMS((REDIRECT *, int, int, int)); static void fix_assignment_words PARAMS((WORD_LIST *)); +static void fix_arrayref_words PARAMS((WORD_LIST *)); static int execute_simple_command PARAMS((SIMPLE_COM *, int, int, int, struct fd_bitmap *)); static int execute_builtin PARAMS((sh_builtin_func_t *, WORD_LIST *, int, int)); static int execute_function PARAMS((SHELL_VAR *, WORD_LIST *, int, struct fd_bitmap *, int, int)); @@ -279,6 +280,23 @@ static int connection_count; can save and restore it. */ int line_number_for_err_trap; +/* A convenience macro to avoid resetting line_number_for_err_trap while + running the ERR trap. */ +#define SET_LINE_NUMBER(v) \ +do { \ + line_number = v; \ + if (signal_in_progress (ERROR_TRAP) == 0 && running_trap != (ERROR_TRAP + 1)) \ + line_number_for_err_trap = line_number; \ +} while (0) + +/* This can't be in executing_line_number() because that's used for LINENO + and we want LINENO to reflect the line number of commands run during + the ERR trap. Right now this is only used to push to BASH_LINENO. */ +#define GET_LINE_NUMBER() \ + (signal_in_progress (ERROR_TRAP) && running_trap == ERROR_TRAP+1) \ + ? line_number_for_err_trap \ + : executing_line_number () + /* A sort of function nesting level counter */ int funcnest = 0; int funcnest_max = 0; @@ -366,7 +384,7 @@ executing_line_number () return currently_executing_command->value.ArithFor->line; #endif - return line_number; + return line_number; } else return line_number; @@ -505,7 +523,7 @@ restore_signal_mask (set) #ifdef DEBUG /* A debugging function that can be called from gdb, for instance. */ void -open_files () +open_files (void) { register int i; int f, fd_table_size; @@ -570,7 +588,9 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, if (breaking || continuing) return (last_command_exit_value); - if (command == 0 || read_but_dont_execute) + if (read_but_dont_execute) + return (last_command_exit_value); + if (command == 0) return (EXECUTION_SUCCESS); QUIT; @@ -627,7 +647,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, control and call execute_command () on the command again. */ save_line_number = line_number; if (command->type == cm_subshell) - line_number_for_err_trap = line_number = command->value.Subshell->line; /* XXX - save value? */ + SET_LINE_NUMBER (command->value.Subshell->line); /* XXX - save value? */ /* Otherwise we defer setting line_number */ tcmd = make_command_string (command); fork_flags = asynchronous ? FORK_ASYNC : 0; @@ -841,7 +861,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, if (command->flags & CMD_STDIN_REDIR) command->value.Simple->flags |= CMD_STDIN_REDIR; - line_number_for_err_trap = line_number = command->value.Simple->line; + SET_LINE_NUMBER (command->value.Simple->line); exec_result = execute_simple_command (command->value.Simple, pipe_in, pipe_out, asynchronous, fds_to_close); @@ -1041,7 +1061,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, command->value.Cond->flags |= CMD_IGNORE_RETURN; #endif - line_number_for_err_trap = save_line_number = line_number; + line_number_for_err_trap = save_line_number = line_number; /* XXX */ #if defined (DPAREN_ARITHMETIC) if (command->type == cm_arith) exec_result = execute_arith_command (command->value.Arith); @@ -1323,6 +1343,7 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close) int cpu; char *time_format; volatile procenv_t save_top_level; + volatile int old_subshell; #if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY) struct timeval real, user, sys; @@ -1352,6 +1373,7 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close) # endif #endif + old_subshell = subshell_environment; posix_time = command && (command->flags & CMD_TIME_POSIX); nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0); @@ -1372,12 +1394,17 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close) command->flags &= ~(CMD_TIME_PIPELINE|CMD_TIME_POSIX); code = setjmp_nosigs (top_level); if (code == NOT_JUMPED) - { - rv = execute_command_internal (command, asynchronous, pipe_in, pipe_out, fds_to_close); - command->flags = old_flags; - } + rv = execute_command_internal (command, asynchronous, pipe_in, pipe_out, fds_to_close); COPY_PROCENV (save_top_level, top_level); + command->flags = old_flags; + + /* If we're jumping in a different subshell environment than we started, + don't bother printing timing stats, just keep longjmping back to the + original top level. */ + if (code != NOT_JUMPED && subshell_environment && subshell_environment != old_subshell) + sh_longjmp (top_level, code); + rs = us = ss = 0; rsf = usf = ssf = cpu = 0; @@ -1476,6 +1503,7 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) /* If a command is asynchronous in a subshell (like ( foo ) & or the special case of an asynchronous GROUP command where the + the subshell bit is turned on down in case cm_group: below), turn off `asynchronous', so that two subshells aren't spawned. XXX - asynchronous used to be set to 0 in this block, but that @@ -1553,6 +1581,8 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) /* We are in a subshell, so forget that we are running a trap handler or that the signal handler has changed (we haven't changed it!) */ + /* XXX - maybe do this for `real' signals and not ERR/DEBUG/RETURN/EXIT + traps? */ if (running_trap > 0) { run_trap_cleanup (running_trap - 1); @@ -1620,10 +1650,12 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) default_buffered_input = -1; #endif -#if 0 /* TAG: bash-5.2 */ + /* We can't optimize away forks if one of the commands executed by the + subshell sets an exit trap, so we set CMD_NO_FORK for simple commands + and set CMD_TRY_OPTIMIZING for simple commands on the right side of an + and-or or `;' list to test for optimizing forks when they are executed. */ if (user_subshell && command->type == cm_subshell) optimize_subshell_command (command->value.Subshell->command); -#endif /* Do redirections, then dispose of them before recursive call. */ if (command->redirects) @@ -1678,7 +1710,7 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) /* If we're going to exit the shell, we don't want to invert the return status. */ - if (result == EXITPROG) + if (result == EXITPROG || result == EXITBLTIN) invert = 0, return_code = last_command_exit_value; else if (result) return_code = (last_command_exit_value == EXECUTION_SUCCESS) ? EXECUTION_FAILURE : last_command_exit_value; @@ -1805,9 +1837,7 @@ cpl_delete (pid) if (p == 0) return 0; /* not found */ -#if defined (DEBUG) - itrace("cpl_delete: deleting %d", pid); -#endif + INTERNAL_DEBUG (("cpl_delete: deleting %d", pid)); /* Housekeeping in the border cases. */ if (p == coproc_list.head) @@ -1838,11 +1868,7 @@ cpl_reap () if (p->coproc->c_flags & COPROC_DEAD) { coproc_list.ncoproc--; /* keep running count, fix up pointers later */ - -#if defined (DEBUG) - itrace("cpl_reap: deleting %d", p->coproc->c_pid); -#endif - + INTERNAL_DEBUG (("cpl_reap: deleting %d", p->coproc->c_pid)); coproc_dispose (p->coproc); cpe_dispose (p); } @@ -2239,7 +2265,7 @@ coproc_setvars (cp) { SHELL_VAR *v; char *namevar, *t; - int l; + size_t l; WORD_DESC w; #if defined (ARRAY_VARS) arrayind_t ind; @@ -2374,6 +2400,7 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close) if (legal_identifier (name) == 0) { internal_error (_("`%s': not a valid identifier"), name); + free (name); return (invert ? EXECUTION_SUCCESS : EXECUTION_FAILURE); } else @@ -2442,12 +2469,18 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close) } #endif +/* If S == -1, it's a special value saying to close stdin */ static void restore_stdin (s) int s; { - dup2 (s, 0); - close (s); + if (s == -1) + close (0); + else + { + dup2 (s, 0); + close (s); + } } /* Catch-all cleanup function for lastpipe code for unwind-protects */ @@ -2465,7 +2498,7 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close) struct fd_bitmap *fds_to_close; { int prev, fildes[2], new_bitmap_size, dummyfd, ignore_return, exec_result; - int lstdin, lastpipe_flag, lastpipe_jid, old_frozen; + int lstdin, lastpipe_flag, lastpipe_jid, old_frozen, stdin_valid; COMMAND *cmd; struct fd_bitmap *fd_bitmap; pid_t lastpid; @@ -2477,6 +2510,8 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close) ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0; + stdin_valid = sh_validfd (0); + prev = pipe_in; cmd = command; @@ -2567,14 +2602,18 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close) lastpipe_flag = 0; begin_unwind_frame ("lastpipe-exec"); - lstdin = -1; + lstdin = -2; /* -1 is special, meaning fd 0 is closed */ /* If the `lastpipe' option is set with shopt, and job control is not enabled, execute the last element of non-async pipelines in the current shell environment. */ - if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0) - { - lstdin = move_to_high_fd (0, 1, -1); - if (lstdin > 0) + /* prev can be 0 if fd 0 was closed when this function was executed. prev + will never be 0 at this point if fd 0 was valid when this function was + executed (though we check above). */ + if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev >= 0) + { + /* -1 is a special value meaning to close stdin */ + lstdin = (prev > 0 && stdin_valid) ? move_to_high_fd (0, 1, -1) : -1; + if (lstdin > 0 || lstdin == -1) { do_piping (prev, pipe_out); prev = NO_PIPE; @@ -2595,12 +2634,12 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close) exec_result = execute_command_internal (cmd, asynchronous, prev, pipe_out, fds_to_close); - if (lstdin > 0) - restore_stdin (lstdin); - if (prev >= 0) close (prev); + if (lstdin > 0 || lstdin == -1) + restore_stdin (lstdin); + #if defined (JOB_CONTROL) UNBLOCK_CHILD (oset); #endif @@ -2616,7 +2655,11 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close) lstdin = wait_for (lastpid, 0); } else - lstdin = wait_for_single_pid (lastpid, 0); /* checks bgpids list */ + { + lstdin = wait_for_single_pid (lastpid, 0); /* checks bgpids list */ + if (lstdin > 256) /* error sentinel */ + lstdin = 127; + } #else lstdin = wait_for (lastpid, 0); #endif @@ -2695,6 +2738,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close) /* Just call execute command on both sides. */ case ';': + case '\n': /* special case, happens in command substitutions */ if (ignore_return) { if (command->value.Connection->first) @@ -2714,7 +2758,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close) #endif QUIT; - optimize_fork (command); /* XXX */ + optimize_connection_fork (command); /* XXX */ exec_result = execute_command_internal (command->value.Connection->second, asynchronous, pipe_in, pipe_out, fds_to_close); @@ -2726,7 +2770,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close) invert = (command->flags & CMD_INVERT_RETURN) != 0; ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0; - line_number_for_err_trap = line_number; /* XXX - save value? */ + SET_LINE_NUMBER (line_number); /* XXX - save value? */ exec_result = execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close); if (asynchronous) @@ -2787,7 +2831,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close) ((command->value.Connection->connector == OR_OR) && (exec_result != EXECUTION_SUCCESS))) { - optimize_fork (command); + optimize_connection_fork (command); second = command->value.Connection->second; if (ignore_return && second) @@ -2998,14 +3042,20 @@ eval_arith_for_expr (l, okp) { WORD_LIST *new; intmax_t expresult; - int r; + int r, eflag; + char *expr, *temp; + + expr = l->next ? string_list (l) : l->word->word; + temp = expand_arith_string (expr, Q_DOUBLE_QUOTES|Q_ARITH); + if (l->next) + free (expr); + new = make_word_list (make_word (temp), (WORD_LIST *)NULL); + free (temp); - new = expand_words_no_vars (l); if (new) { if (echo_command_at_execute) xtrace_print_arith_cmd (new); - this_command_name = "(("; /* )) for expression error messages */ command_string_index = 0; print_arith_command (new); @@ -3018,9 +3068,12 @@ eval_arith_for_expr (l, okp) r = run_debug_trap (); /* In debugging mode, if the DEBUG trap returns a non-zero status, we skip the command. */ + eflag = (shell_compatibility_level > 51) ? 0 : EXP_EXPANDED; + this_command_name = "(("; /* )) for expression error messages */ + #if defined (DEBUGGER) if (debugging_mode == 0 || r == EXECUTION_SUCCESS) - expresult = evalexp (new->word->word, EXP_EXPANDED, okp); + expresult = evalexp (new->word->word, eflag, okp); else { expresult = 0; @@ -3028,7 +3081,7 @@ eval_arith_for_expr (l, okp) *okp = 1; } #else - expresult = evalexp (new->word->word, EXP_EXPANDED, okp); + expresult = evalexp (new->word->word, eflag, okp); #endif dispose_words (new); } @@ -3371,6 +3424,8 @@ execute_select_command (select_command) return (EXECUTION_SUCCESS); #endif + this_command_name = (char *)0; + loop_level++; identifier = select_command->name->word; @@ -3725,7 +3780,7 @@ static int execute_arith_command (arith_command) ARITH_COM *arith_command; { - int expok, save_line_number, retval; + int expok, save_line_number, retval, eflag; intmax_t expresult; WORD_LIST *new; char *exp, *t; @@ -3734,7 +3789,7 @@ execute_arith_command (arith_command) save_line_number = line_number; this_command_name = "(("; /* )) */ - line_number_for_err_trap = line_number = arith_command->line; + SET_LINE_NUMBER (arith_command->line); /* If we're in a function, update the line number information. */ if (variable_context && interactive_shell && sourcelevel == 0) { @@ -3767,14 +3822,13 @@ execute_arith_command (arith_command) } #endif + this_command_name = "(("; /* )) */ t = (char *)NULL; new = arith_command->exp; - if (new->next) - exp = t = string_list (new); /* just in case */ - else - exp = new->word->word; + exp = (new->next) ? (t = string_list (new)) : new->word->word; exp = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH); + FREE (t); /* If we're tracing, make a new word list with `((' at the front and `))' at the back and print it. Change xtrace_print_arith_cmd to take a string @@ -3788,7 +3842,8 @@ execute_arith_command (arith_command) if (exp) { - expresult = evalexp (exp, EXP_EXPANDED, &expok); + eflag = (shell_compatibility_level > 51) ? 0 : EXP_EXPANDED; + expresult = evalexp (exp, eflag, &expok); line_number = save_line_number; free (exp); } @@ -3797,7 +3852,6 @@ execute_arith_command (arith_command) expresult = 0; expok = 1; } - FREE (t); if (expok == 0) return (EXECUTION_FAILURE); @@ -3815,8 +3869,8 @@ static int execute_cond_node (cond) COND_COM *cond; { - int result, invert, patmatch, rmatch, mflags, ignore; - char *arg1, *arg2; + int result, invert, patmatch, rmatch, arith, mode, mflags, ignore; + char *arg1, *arg2, *op; #if 0 char *t1, *t2; #endif @@ -3847,41 +3901,66 @@ execute_cond_node (cond) } else if (cond->type == COND_UNARY) { + int oa, varop, varflag; + if (ignore) comsub_ignore_return++; - arg1 = cond_expand_word (cond->left->op, 0); + varop = STREQ (cond->op->word, "-v"); +#if defined (ARRAY_VARS) + varflag = (varop && valid_array_reference (cond->left->op->word, VA_NOEXPAND)) ? TEST_ARRAYEXP : 0; +#else + varflag = 0; +#endif + arg1 = cond_expand_word (cond->left->op, varop ? 3 : 0); if (ignore) comsub_ignore_return--; if (arg1 == 0) arg1 = nullstr; if (echo_command_at_execute) xtrace_print_cond_term (cond->type, invert, cond->op, arg1, (char *)NULL); - result = unary_test (cond->op->word, arg1) ? EXECUTION_SUCCESS : EXECUTION_FAILURE; +#if defined (ARRAY_VARS) + if (varop) + oa = set_expand_once (0, 0); /* no-op for compatibility levels <= 51 */ +#endif + result = unary_test (cond->op->word, arg1, varflag) ? EXECUTION_SUCCESS : EXECUTION_FAILURE; +#if defined (ARRAY_VARS) + if (varop) + assoc_expand_once = oa; +#endif if (arg1 != nullstr) free (arg1); } else if (cond->type == COND_BINARY) { rmatch = 0; - patmatch = (((cond->op->word[1] == '=') && (cond->op->word[2] == '\0') && - (cond->op->word[0] == '!' || cond->op->word[0] == '=')) || - (cond->op->word[0] == '=' && cond->op->word[1] == '\0')); + op = cond->op->word; + mode = 0; + patmatch = (((op[1] == '=') && (op[2] == '\0') && + (op[0] == '!' || op[0] == '=')) || + (op[0] == '=' && op[1] == '\0')); #if defined (COND_REGEXP) - rmatch = (cond->op->word[0] == '=' && cond->op->word[1] == '~' && - cond->op->word[2] == '\0'); + rmatch = (op[0] == '=' && op[1] == '~' && op[2] == '\0'); #endif + arith = STREQ (op, "-eq") || STREQ (op, "-ne") || STREQ (op, "-lt") || + STREQ (op, "-le") || STREQ (op, "-gt") || STREQ (op, "-ge"); + + if (arith) + mode = 3; + else if (rmatch && shell_compatibility_level > 31) + mode = 2; + else if (patmatch) + mode = 1; if (ignore) comsub_ignore_return++; - arg1 = cond_expand_word (cond->left->op, 0); + arg1 = cond_expand_word (cond->left->op, arith ? mode : 0); if (ignore) comsub_ignore_return--; if (arg1 == 0) arg1 = nullstr; if (ignore) comsub_ignore_return++; - arg2 = cond_expand_word (cond->right->op, - (rmatch && shell_compatibility_level > 31) ? 2 : (patmatch ? 1 : 0)); + arg2 = cond_expand_word (cond->right->op, mode); if (ignore) comsub_ignore_return--; if (arg2 == 0) @@ -3945,8 +4024,7 @@ execute_cond_command (cond_command) save_line_number = line_number; - this_command_name = "[["; - line_number_for_err_trap = line_number = cond_command->line; + SET_LINE_NUMBER (cond_command->line); /* If we're in a function, update the line number information. */ if (variable_context && interactive_shell && sourcelevel == 0) { @@ -3977,6 +4055,8 @@ execute_cond_command (cond_command) } #endif + this_command_name = "[["; /* ]] */ + #if 0 debug_print_cond_command (cond_command); #endif @@ -4165,6 +4245,48 @@ fix_assignment_words (words) } } +#if defined (ARRAY_VARS) +/* Set W_ARRAYREF on words that are valid array references to a builtin that + accepts them. This is intended to completely replace assoc_expand_once in + time. */ +static void +fix_arrayref_words (words) + WORD_LIST *words; +{ + WORD_LIST *w, *wcmd; + struct builtin *b; + + if (words == 0) + return; + + b = 0; + + /* Skip over assignment statements preceding a command name */ + wcmd = words; + for (wcmd = words; wcmd; wcmd = wcmd->next) + if ((wcmd->word->flags & W_ASSIGNMENT) == 0) + break; + + /* Skip over `command' */ + while (wcmd && wcmd->word && wcmd->word->word && STREQ (wcmd->word->word, "command")) + wcmd = wcmd->next; + + if (wcmd == 0) + return; + + /* If it's not an array reference builtin, we have nothing to do. */ + b = builtin_address_internal (wcmd->word->word, 0); + if (b == 0 || (b->flags & ARRAYREF_BUILTIN) == 0) + return; + + for (w = wcmd->next; w; w = w->next) + { + if (w->word && w->word->word && valid_array_reference (w->word->word, 0)) + w->word->flags |= W_ARRAYREF; + } +} +#endif + #ifndef ISOPTION # define ISOPTION(s, c) (s[0] == '-' && s[1] == c && s[2] == 0) #endif @@ -4375,6 +4497,9 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) { current_fds_to_close = fds_to_close; fix_assignment_words (simple_command->words); +#if defined (ARRAY_VARS) + fix_arrayref_words (simple_command->words); +#endif /* Pass the ignore return flag down to command substitutions */ if (cmdflags & CMD_IGNORE_RETURN) /* XXX */ comsub_ignore_return++; @@ -4436,17 +4561,27 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) func = find_function (words->word->word); } - /* In POSIX mode, assignment errors in the temporary environment cause a - non-interactive shell to exit. */ -#if 1 - if (posixly_correct && builtin_is_special && interactive_shell == 0 && tempenv_assign_error) -#else - /* This is for strict posix conformance. */ - if (posixly_correct && interactive_shell == 0 && tempenv_assign_error) -#endif + /* What happens in posix mode when an assignment preceding a command name + fails. This should agree with the code in execute_cmd.c: + do_assignment_statements(), even though I don't think it's executed any + more. */ + if (posixly_correct && tempenv_assign_error) { +#if defined (DEBUG) + /* I don't know if this clause is ever executed, so let's check */ +itrace("execute_simple_command: posix mode tempenv assignment error"); +#endif last_command_exit_value = EXECUTION_FAILURE; - jump_to_top_level (ERREXIT); +#if defined (STRICT_POSIX) + jump_to_top_level ((interactive_shell == 0) ? FORCE_EOF : DISCARD); +#else + if (interactive_shell == 0 && builtin_is_special) + jump_to_top_level (FORCE_EOF); + else if (interactive_shell == 0) + jump_to_top_level (DISCARD); /* XXX - maybe change later */ + else + jump_to_top_level (DISCARD); +#endif } tempenv_assign_error = 0; /* don't care about this any more */ @@ -4623,7 +4758,10 @@ run_builtin: executing_builtin = old_builtin; executing_command_builtin = old_command_builtin; builtin = 0; - /* XXX - redirections will have to be performed again */ + + /* The redirections have already been `undone', so this + will have to do them again. But piping is forever. */ + pipe_in = pipe_out = -1; goto execute_from_filesystem; } result = builtin_status (result); @@ -4896,7 +5034,7 @@ execute_function (var, words, flags, fds_to_close, async, subshell) struct fd_bitmap *fds_to_close; int async, subshell; { - int return_val, result; + int return_val, result, lineno; COMMAND *tc, *fc, *save_current; char *debug_trap, *error_trap, *return_trap; #if defined (ARRAY_VARS) @@ -5024,7 +5162,8 @@ execute_function (var, words, flags, fds_to_close, async, subshell) array_push ((ARRAY *)funcname_a, this_shell_function->name); array_push ((ARRAY *)bash_source_a, sfile); - t = itos (executing_line_number ()); + lineno = GET_LINE_NUMBER (); + t = itos (lineno); array_push ((ARRAY *)bash_lineno_a, t); free (t); #endif @@ -5245,7 +5384,7 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var, if (return_catch_flag && builtin == return_builtin) funcvalue = setjmp_nosigs (return_catch); - if (result == EXITPROG) + if (result == EXITPROG || result == EXITBLTIN) subshell_exit (last_command_exit_value); else if (result) subshell_exit (EXECUTION_FAILURE); @@ -5482,18 +5621,19 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, } #endif /* RESTRICTED_SHELL */ + /* If we want to change this so `command -p' (CMD_STDPATH) does not insert + any pathname it finds into the hash table, it should read + command = search_for_command (pathname, stdpath ? CMDSRCH_STDPATH : CMDSRCH_HASH); + */ command = search_for_command (pathname, CMDSRCH_HASH|(stdpath ? CMDSRCH_STDPATH : 0)); QUIT; if (command) { /* If we're optimizing out the fork (implicit `exec'), decrement the - shell level like `exec' would do. */ -#if 0 /* TAG: bash-5.2 psmith 10/11/2020 */ + shell level like `exec' would do. Don't do this if we are already + in a pipeline environment, assuming it's already been done. */ if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE && (subshell_environment & SUBSHELL_PIPE) == 0) -#else - if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE) -#endif adjust_shell_level (-1); maybe_make_export_env (); @@ -5557,6 +5697,8 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, clear_fifo_list (); /* XXX - we haven't created any FIFOs */ #endif + /* reset shell_pgrp to pipeline_pgrp here for word expansions performed + by the redirections here? */ if (redirects && (do_redirections (redirects, RX_ACTIVE) != 0)) { #if defined (PROCESS_SUBSTITUTION) @@ -5840,6 +5982,11 @@ shell_execve (command, args, env) errno = i; file_error (command); } + else if (i == ENOENT) + { + errno = i; + internal_error (_("%s: cannot execute: required file not found"), command); + } else { /* The file has the execute bits set, but the kernel refuses to @@ -5889,7 +6036,7 @@ shell_execve (command, args, env) If so, the format of the line is "#! interpreter [argument]". A single argument is allowed. The BSD kernel restricts the length of the entire line to 32 characters (32 bytes - being the size of the BSD exec header), but we allow 80 + being the size of the BSD exec header), but we allow up to 128 characters. */ if (sample_len > 0) { diff --git a/expr.c b/expr.c index bbff95e93..5079bd476 100644 --- a/expr.c +++ b/expr.c @@ -1,6 +1,6 @@ /* expr.c -- arithmetic expression evaluation. */ -/* Copyright (C) 1990-2020 Free Software Foundation, Inc. +/* Copyright (C) 1990-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -139,8 +139,8 @@ #define COMMA ',' /* This should be the function corresponding to the operator with the - highest precedence. */ -#define EXP_HIGHEST expcomma + lowest precedence. */ +#define EXP_LOWEST expcomma #ifndef MAX_INT_LEN # define MAX_INT_LEN 32 @@ -330,6 +330,7 @@ expr_bind_variable (lhs, rhs) #if defined (ARRAY_VARS) aflags = (assoc_expand_once && already_expanded) ? ASS_NOEXPAND : 0; + aflags |= ASS_ALLOWALLSUB; /* allow assoc[@]=value */ #else aflags = 0; #endif @@ -340,7 +341,7 @@ expr_bind_variable (lhs, rhs) } #if defined (ARRAY_VARS) -/* This is similar to the logic in arrayfunc.c:valid_array_subscript when +/* This is similar to the logic in arrayfunc.c:valid_array_reference when you pass VA_NOEXPAND. */ static int expr_skipsubscript (vp, cp) @@ -471,8 +472,9 @@ subexpr (expr) readtok (); - val = EXP_HIGHEST (); + val = EXP_LOWEST (); + /*TAG:bash-5.3 make it clear that these are arithmetic syntax errors */ if (curtok != 0) evalerror (_("syntax error in expression")); @@ -638,7 +640,7 @@ expcond () if (curtok == 0 || curtok == COL) evalerror (_("expression expected")); - val1 = EXP_HIGHEST (); + val1 = EXP_LOWEST (); if (set_noeval) noeval--; @@ -1050,7 +1052,7 @@ exp0 () { /* XXX - save curlval here? Or entire expression context? */ readtok (); - val = EXP_HIGHEST (); + val = EXP_LOWEST (); if (curtok != RPAR) /* ( */ evalerror (_("missing `)'")); @@ -1148,6 +1150,7 @@ expr_streval (tok, e, lvalue) #if defined (ARRAY_VARS) arrayind_t ind; int tflag, aflag; + array_eltstate_t es; #endif /*itrace("expr_streval: %s: noeval = %d expanded=%d", tok, noeval, already_expanded);*/ @@ -1159,12 +1162,12 @@ expr_streval (tok, e, lvalue) initial_depth = expr_depth; #if defined (ARRAY_VARS) - tflag = assoc_expand_once && already_expanded; /* for a start */ + tflag = (assoc_expand_once && already_expanded) ? AV_NOEXPAND : 0; /* for a start */ #endif /* [[[[[ */ #if defined (ARRAY_VARS) - aflag = (tflag) ? AV_NOEXPAND : 0; + aflag = tflag; /* use a different variable for now */ v = (e == ']') ? array_variable_part (tok, tflag, (char **)0, (int *)0) : find_variable (tok); #else v = find_variable (tok); @@ -1202,13 +1205,16 @@ expr_streval (tok, e, lvalue) } #if defined (ARRAY_VARS) - ind = -1; + init_eltstate (&es); + es.ind = -1; /* If the second argument to get_array_value doesn't include AV_ALLOWALL, we don't allow references like array[@]. In this case, get_array_value is just like get_variable_value in that it does not return newly-allocated memory or quote the results. AFLAG is set above and is either AV_NOEXPAND or 0. */ - value = (e == ']') ? get_array_value (tok, aflag, (int *)NULL, &ind) : get_variable_value (v); + value = (e == ']') ? get_array_value (tok, aflag, &es) : get_variable_value (v); + ind = es.ind; + flush_eltstate (&es); #else value = get_variable_value (v); #endif @@ -1441,9 +1447,14 @@ readtok () c = POWER; else if ((c == '-' || c == '+') && c1 == c && curtok == STR) c = (c == '-') ? POSTDEC : POSTINC; +#if STRICT_ARITH_PARSING + else if ((c == '-' || c == '+') && c1 == c && curtok == NUM) +#else else if ((c == '-' || c == '+') && c1 == c && curtok == NUM && (lasttok == PREINC || lasttok == PREDEC)) +#endif { /* This catches something like --FOO++ */ + /* TAG:bash-5.3 add gettext calls here or make this a separate function */ if (c == '-') evalerror ("--: assignment requires lvalue"); else @@ -1460,7 +1471,7 @@ readtok () c = (c == '-') ? PREDEC : PREINC; else /* Could force parsing as preinc or predec and throw an error */ -#if 0 +#if STRICT_ARITH_PARSING { /* Posix says unary plus and minus have higher priority than preinc and predec. */ @@ -1536,7 +1547,7 @@ strlong (num) register char *s; register unsigned char c; int base, foundbase; - intmax_t val; + intmax_t val, pval; s = num; @@ -1554,6 +1565,10 @@ strlong (num) { base = 16; s++; +#if STRICT_ARITH_PARSING + if (*s == 0) + evalerror (_("invalid number")); +#endif } else base = 8; @@ -1597,7 +1612,14 @@ strlong (num) if (c >= base) evalerror (_("value too great for base")); +#ifdef CHECK_OVERFLOW + pval = val; val = (val * base) + c; + if (val < 0 || val < pval) /* overflow */ + return INTMAX_MAX; +#else + val = (val * base) + c; +#endif } else break; diff --git a/externs.h b/externs.h index 3d7716c6d..931dba9cd 100644 --- a/externs.h +++ b/externs.h @@ -1,7 +1,7 @@ /* externs.h -- extern function declarations which do not appear in their own header file. */ -/* Copyright (C) 1993-2020 Free Software Foundation, Inc. +/* Copyright (C) 1993-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -36,6 +36,7 @@ extern intmax_t evalexp PARAMS((char *, int, int *)); #define FUNC_EXTERNAL 0x02 extern char *make_command_string PARAMS((COMMAND *)); +extern char *print_comsub PARAMS((COMMAND *)); extern char *named_function_string PARAMS((char *, COMMAND *, int)); extern void print_command PARAMS((COMMAND *)); @@ -109,6 +110,7 @@ extern int yyparse PARAMS((void)); extern int return_EOF PARAMS((void)); extern void push_token PARAMS((int)); extern char *xparse_dolparen PARAMS((char *, char *, int *, int)); +extern COMMAND *parse_string_to_command PARAMS((char *, int)); extern void reset_parser PARAMS((void)); extern void reset_readahead_token PARAMS((void)); extern WORD_LIST *parse_string_to_word_list PARAMS((char *, int, const char *)); @@ -142,7 +144,7 @@ extern void set_default_lang PARAMS((void)); extern char *get_locale_var PARAMS((char *)); extern char *localetrans PARAMS((char *, int, int *)); extern char *mk_msgstr PARAMS((char *, int *)); -extern char *localeexpand PARAMS((char *, int, int, int, int *)); +extern char *locale_expand PARAMS((char *, int, int, int, int *)); #ifndef locale_decpoint extern int locale_decpoint PARAMS((void)); #endif @@ -211,7 +213,7 @@ extern void dprintf PARAMS((int, const char *, ...)) __attribute__((__format__ extern char *fmtulong PARAMS((unsigned long int, int, char *, size_t, int)); /* Declarations for functions defined in lib/sh/fmtulong.c */ -#if defined (HAVE_LONG_LONG) +#if defined (HAVE_LONG_LONG_INT) extern char *fmtullong PARAMS((unsigned long long int, int, char *, size_t, int)); #endif @@ -341,7 +343,7 @@ extern char *sh_double_quote PARAMS((const char *)); extern char *sh_mkdoublequoted PARAMS((const char *, int, int)); extern char *sh_un_double_quote PARAMS((char *)); extern char *sh_backslash_quote PARAMS((char *, const char *, int)); -extern char *sh_backslash_quote_for_double_quotes PARAMS((char *)); +extern char *sh_backslash_quote_for_double_quotes PARAMS((char *, int)); extern char *sh_quote_reusable PARAMS((char *, int)); extern int sh_contains_shell_metas PARAMS((const char *)); extern int sh_contains_quotes PARAMS((const char *)); @@ -440,7 +442,7 @@ extern long strtol PARAMS((const char *, char **, int)); #endif /* declarations for functions defined in lib/sh/strtoll.c */ -#if defined (HAVE_LONG_LONG) && !HAVE_DECL_STRTOLL +#if defined (HAVE_LONG_LONG_INT) && !HAVE_DECL_STRTOLL extern long long strtoll PARAMS((const char *, char **, int)); #endif @@ -450,7 +452,7 @@ extern unsigned long strtoul PARAMS((const char *, char **, int)); #endif /* declarations for functions defined in lib/sh/strtoull.c */ -#if defined (HAVE_LONG_LONG) && !HAVE_DECL_STRTOULL +#if defined (HAVE_UNSIGNED_LONG_LONG_INT) && !HAVE_DECL_STRTOULL extern unsigned long long strtoull PARAMS((const char *, char **, int)); #endif @@ -470,6 +472,10 @@ extern char *ansic_quote PARAMS((char *, int, int *)); extern int ansic_shouldquote PARAMS((const char *)); extern char *ansiexpand PARAMS((char *, int, int, int *)); +/* declarations for functions defined in lib/sh/strvis.c */ +extern int sh_charvis PARAMS((const char *, size_t *, size_t, char *, size_t *)); +extern char *sh_strvis PARAMS((const char *)); + /* declarations for functions defined in lib/sh/timeval.c. No prototypes so we don't have to count on having a definition of struct timeval in scope when this file is included. */ diff --git a/findcmd.c b/findcmd.c index e235705a3..95f231e5c 100644 --- a/findcmd.c +++ b/findcmd.c @@ -1,6 +1,6 @@ /* findcmd.c -- Functions to search for commands by name. */ -/* Copyright (C) 1997-2020 Free Software Foundation, Inc. +/* Copyright (C) 1997-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -54,8 +54,8 @@ extern int errno; /* Static functions defined and used in this file. */ static char *_find_user_command_internal PARAMS((const char *, int)); static char *find_user_command_internal PARAMS((const char *, int)); -static char *find_user_command_in_path PARAMS((const char *, char *, int)); -static char *find_in_path_element PARAMS((const char *, char *, int, int, struct stat *)); +static char *find_user_command_in_path PARAMS((const char *, char *, int, int *)); +static char *find_in_path_element PARAMS((const char *, char *, int, int, struct stat *, int *)); static char *find_absolute_program PARAMS((const char *, int)); static char *get_next_path_element PARAMS((char *, int *)); @@ -109,7 +109,7 @@ exec_name_should_ignore (name) /* Return some flags based on information about this file. The EXISTS bit is non-zero if the file is found. - The EXECABLE bit is non-zero the file is executble. + The EXECABLE bit is non-zero the file is executable. Zero is returned if the file is not found. */ int file_status (name) @@ -274,7 +274,7 @@ _find_user_command_internal (name, flags) if (path_list == 0 || *path_list == '\0') return (savestring (name)); - cmd = find_user_command_in_path (name, path_list, flags); + cmd = find_user_command_in_path (name, path_list, flags, (int *)0); return (cmd); } @@ -328,9 +328,9 @@ get_next_path_element (path_list, path_index_pointer) /* Look for PATHNAME in $PATH. Returns either the hashed command corresponding to PATHNAME or the first instance of PATHNAME found in $PATH. If (FLAGS&CMDSRCH_HASH) is non-zero, insert the instance of - PATHNAME found in $PATH into the command hash table. If (FLAGS&CMDSRCH_STDPATH) - is non-zero, we are running in a `command -p' environment and should use - the Posix standard path. + PATHNAME found in $PATH into the command hash table. + If (FLAGS&CMDSRCH_STDPATH) is non-zero, we are running in a `command -p' + environment and should use the Posix standard path. Returns a newly-allocated string. */ char * search_for_command (pathname, flags) @@ -351,7 +351,7 @@ search_for_command (pathname, flags) /* Don't waste time trying to find hashed data for a pathname that is already completely specified or if we're using a command- specific value for PATH. */ - if (temp_path == 0 && absolute_program (pathname) == 0) + if (temp_path == 0 && (flags & CMDSRCH_STDPATH) == 0 && absolute_program (pathname) == 0) hashed_file = phash_search (pathname); /* If a command found in the hash table no longer exists, we need to @@ -384,24 +384,22 @@ search_for_command (pathname, flags) else path_list = 0; - command = find_user_command_in_path (pathname, path_list, FS_EXEC_PREFERRED|FS_NODIRS); + command = find_user_command_in_path (pathname, path_list, FS_EXEC_PREFERRED|FS_NODIRS, &st); if (command && hashing_enabled && temp_path == 0 && (flags & CMDSRCH_HASH)) { /* If we found the full pathname the same as the command name, the command probably doesn't exist. Don't put it into the hash - table. */ + table unless it's an executable file in the current directory. */ if (STREQ (command, pathname)) { - st = file_status (command); if (st & FS_EXECABLE) phash_insert ((char *)pathname, command, dot_found_in_search, 1); } /* If we're in posix mode, don't add files without the execute bit to the hash table. */ - else if (posixly_correct) + else if (posixly_correct || check_hashed_filenames) { - st = file_status (command); if (st & FS_EXECABLE) phash_insert ((char *)pathname, command, dot_found_in_search, 1); } @@ -469,8 +467,7 @@ user_command_matches (name, flags, state) if (path_element == 0) break; - match = find_in_path_element (name, path_element, flags, name_len, &dotinfo); - + match = find_in_path_element (name, path_element, flags, name_len, &dotinfo, (int *)0); free (path_element); if (match == 0) @@ -523,11 +520,12 @@ find_absolute_program (name, flags) } static char * -find_in_path_element (name, path, flags, name_len, dotinfop) +find_in_path_element (name, path, flags, name_len, dotinfop, rflagsp) const char *name; char *path; int flags, name_len; struct stat *dotinfop; + int *rflagsp; { int status; char *full_path, *xpath; @@ -536,6 +534,8 @@ find_in_path_element (name, path, flags, name_len, dotinfop) /* Remember the location of "." in the path, in all its forms (as long as they begin with a `.', e.g. `./.') */ + /* We could also do this or something similar for all relative pathnames + found while searching PATH. */ if (dot_found_in_search == 0 && *xpath == '.') dot_found_in_search = same_file (".", xpath, dotinfop, (struct stat *)NULL); @@ -546,6 +546,9 @@ find_in_path_element (name, path, flags, name_len, dotinfop) if (xpath != path) free (xpath); + if (rflagsp) + *rflagsp = status; + if ((status & FS_EXISTS) == 0) { free (full_path); @@ -604,19 +607,22 @@ find_in_path_element (name, path, flags, name_len, dotinfop) FS_NODIRS: Don't find any directories. */ static char * -find_user_command_in_path (name, path_list, flags) +find_user_command_in_path (name, path_list, flags, rflagsp) const char *name; char *path_list; - int flags; + int flags, *rflagsp; { char *full_path, *path; - int path_index, name_len; + int path_index, name_len, rflags; struct stat dotinfo; /* We haven't started looking, so we certainly haven't seen a `.' as the directory path yet. */ dot_found_in_search = 0; + if (rflagsp) + *rflagsp = 0; + if (absolute_program (name)) { full_path = find_absolute_program (name, flags); @@ -643,12 +649,12 @@ find_user_command_in_path (name, path_list, flags) /* Side effects: sets dot_found_in_search, possibly sets file_to_lose_on. */ - full_path = find_in_path_element (name, path, flags, name_len, &dotinfo); + full_path = find_in_path_element (name, path, flags, name_len, &dotinfo, &rflags); free (path); - /* This should really be in find_in_path_element, but there isn't the - right combination of flags. */ - if (full_path && is_directory (full_path)) + /* We use the file status flag bits to check whether full_path is a + directory, which we reject here. */ + if (full_path && (rflags & FS_DIRECTORY)) { free (full_path); continue; @@ -656,6 +662,8 @@ find_user_command_in_path (name, path_list, flags) if (full_path) { + if (rflagsp) + *rflagsp = rflags; FREE (file_to_lose_on); return (full_path); } @@ -667,7 +675,7 @@ find_user_command_in_path (name, path_list, flags) search would accept a non-executable as a last resort. If the caller specified FS_NODIRS, and file_to_lose_on is a directory, return NULL. */ - if (file_to_lose_on && (flags & FS_NODIRS) && is_directory (file_to_lose_on)) + if (file_to_lose_on && (flags & FS_NODIRS) && file_isdir (file_to_lose_on)) { free (file_to_lose_on); file_to_lose_on = (char *)NULL; @@ -684,5 +692,5 @@ find_in_path (name, path_list, flags) char *path_list; int flags; { - return (find_user_command_in_path (name, path_list, flags)); + return (find_user_command_in_path (name, path_list, flags, (int *)0)); } diff --git a/flags.c b/flags.c index 983f9a507..30f6c13d4 100644 --- a/flags.c +++ b/flags.c @@ -1,7 +1,7 @@ /* flags.c -- Everything about flags except the `set' command. That is in builtins.c */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. diff --git a/general.c b/general.c index 50d52167c..85c5a8b68 100644 --- a/general.c +++ b/general.c @@ -1,6 +1,6 @@ /* general.c -- Stuff that is used by all files. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -683,6 +683,15 @@ check_binary_file (sample, sample_len) register int i; unsigned char c; + if (sample_len >= 4 && sample[0] == 0x7f && sample[1] == 'E' && sample[2] == 'L' && sample[3] == 'F') + return 1; + + /* Generally we check the first line for NULs. If the first line looks like + a `#!' interpreter specifier, we just look for NULs anywhere in the + buffer. */ + if (sample[0] == '#' && sample[1] == '!') + return (memchr (sample, '\0', sample_len) != NULL); + for (i = 0; i < sample_len; i++) { c = sample[i]; diff --git a/general.h b/general.h index 7e4db8e67..8064c50eb 100644 --- a/general.h +++ b/general.h @@ -1,6 +1,6 @@ /* general.h -- defines that everybody likes to use. */ -/* Copyright (C) 1993-2020 Free Software Foundation, Inc. +/* Copyright (C) 1993-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -289,6 +289,7 @@ typedef int QSFUNC (); #define PATHSEP(c) (ISDIRSEP(c) || (c) == 0) #define DOT_OR_DOTDOT(s) (s[0] == '.' && (s[1] == 0 || (s[1] == '.' && s[2] == 0))) + #if defined (HANDLE_MULTIBYTE) #define WDOT_OR_DOTDOT(w) (w[0] == L'.' && (w[1] == L'\0' || (w[1] == L'.' && w[2] == L'\0'))) #endif diff --git a/hashcmd.c b/hashcmd.c index da3af005c..891f967a5 100644 --- a/hashcmd.c +++ b/hashcmd.c @@ -1,7 +1,7 @@ /* hashcmd.c - functions for managing a hash table mapping command names to full pathnames. */ -/* Copyright (C) 1997-2020 Free Software Foundation, Inc. +/* Copyright (C) 1997-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. diff --git a/include/chartypes.h b/include/chartypes.h index 098cfb967..d5be4a3ce 100644 --- a/include/chartypes.h +++ b/include/chartypes.h @@ -1,6 +1,6 @@ /* chartypes.h -- extend ctype.h */ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -23,22 +23,18 @@ #include -/* Jim Meyering writes: - - "... Some ctype macros are valid only for character codes that - isascii says are ASCII (SGI's IRIX-4.0.5 is one such system --when - using /bin/cc or gcc but without giving an ansi option). So, all - ctype uses should be through macros like ISPRINT... If - STDC_HEADERS is defined, then autoconf has verified that the ctype - macros don't need to be guarded with references to isascii. ... - Defining IN_CTYPE_DOMAIN to 1 should let any compiler worth its salt - eliminate the && through constant folding." - Solaris defines some of these symbols so we must undefine them first. */ +#ifndef UCHAR_MAX +# define UCHAR_MAX 255 +#endif +#ifndef CHAR_MAX +# define CHAR_MAX 127 +#endif -#if STDC_HEADERS || (!defined (isascii) && !HAVE_ISASCII) +/* use this as a proxy for C89 */ +#if defined (HAVE_STDLIB_H) && defined (HAVE_STRING_H) # define IN_CTYPE_DOMAIN(c) 1 #else -# define IN_CTYPE_DOMAIN(c) isascii(c) +# define IN_CTYPE_DOMAIN(c) ((c) >= 0 && (c) <= CHAR_MAX) #endif #if !defined (isspace) && !defined (HAVE_ISSPACE) @@ -107,7 +103,7 @@ #endif #ifndef UNCTRL /* control char to letter -- ASCII */ -# define UNCTRL(x) (TOUPPER(x) ^ 0x40) +# define UNCTRL(x) (TOUPPER(x ^ 0x40)) #endif #endif /* _SH_CHARTYPES_H */ diff --git a/include/posixdir.h b/include/posixdir.h index af5be8012..b737bd7d1 100644 --- a/include/posixdir.h +++ b/include/posixdir.h @@ -1,6 +1,6 @@ /* posixdir.h -- Posix directory reading includes and defines. */ -/* Copyright (C) 1987,1991,2012 Free Software Foundation, Inc. +/* Copyright (C) 1987,1991,2012,2019,2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. diff --git a/include/posixtime.h b/include/posixtime.h index a83e436bb..e70ebec67 100644 --- a/include/posixtime.h +++ b/include/posixtime.h @@ -1,6 +1,6 @@ /* posixtime.h -- wrapper for time.h, sys/times.h mess. */ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -25,16 +25,10 @@ /* Some systems require this, mostly for the definition of `struct timezone'. For example, Dynix/ptx has that definition in rather than sys/time.h */ -#if defined (TIME_WITH_SYS_TIME) +#if defined (HAVE_SYS_TIME_H) # include -# include -#else -# if defined (HAVE_SYS_TIME_H) -# include -# else -# include -# endif #endif +#include #if !defined (HAVE_SYSCONF) || !defined (_SC_CLK_TCK) # if !defined (CLK_TCK) @@ -58,4 +52,33 @@ struct timeval extern int gettimeofday PARAMS((struct timeval *, void *)); #endif +/* These exist on BSD systems, at least. */ +#if !defined (timerclear) +# define timerclear(tvp) do { (tvp)->tv_sec = 0; (tvp)->tv_usec = 0; } while (0) +#endif +#if !defined (timerisset) +# define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) +#endif +#if !defined (timercmp) +# define timercmp(a, b, CMP) \ + (((a)->tv_sec == (b)->tv_sec) ? ((a)->tv_usec CMP (b)->tv_usec) \ + : ((a)->tv_sec CMP (b)->tv_sec)) +#endif + +/* These are non-standard. */ +#if !defined (timerisunset) +# define timerisunset(tvp) ((tvp)->tv_sec == 0 && (tvp)->tv_usec == 0) +#endif +#if !defined (timerset) +# define timerset(tvp, s, u) do { tvp->tv_sec = s; tvp->tv_usec = u; } while (0) +#endif + +#ifndef TIMEVAL_TO_TIMESPEC +# define TIMEVAL_TO_TIMESPEC(tv, ts) \ + do { \ + (ts)->tv_sec = (tv)->tv_sec; \ + (ts)->tv_nsec = (tv)->tv_usec * 1000; \ + } while (0) +#endif + #endif /* _POSIXTIME_H_ */ diff --git a/include/shmbchar.h b/include/shmbchar.h index a4f3f2472..27b0024fb 100644 --- a/include/shmbchar.h +++ b/include/shmbchar.h @@ -1,5 +1,5 @@ /* Multibyte character data type. - Copyright (C) 2001, 2005-2007, 2009-2010 Free Software Foundation, Inc. + Copyright (C) 2001, 2005-2007, 2009-2010, 2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/include/shmbutil.h b/include/shmbutil.h index 835fb80cd..0f711eab7 100644 --- a/include/shmbutil.h +++ b/include/shmbutil.h @@ -318,9 +318,11 @@ extern int locale_utf8locale; /* XXX */ size_t mblength; \ int _k; \ \ - _k = is_basic (*((_src) + (_si))); \ + _k = is_basic ((_src)[(_si)]); \ if (_k) \ mblength = 1; \ + else if (locale_utf8locale && ((_src)[(_si)] & 0x80) == 0) \ + mblength = (_src)[(_si)] != 0; \ else \ {\ state_bak = state; \ @@ -361,9 +363,11 @@ extern int locale_utf8locale; /* XXX */ size_t mblength; \ int _i; \ \ - _i = is_basic (*((_src) + (_si))); \ + _i = is_basic ((_src)[(_si)]); \ if (_i) \ mblength = 1; \ + else if (locale_utf8locale && ((_src)[(_si)] & 0x80) == 0) \ + mblength = (_src)[(_si)] != 0; \ else \ { \ state_bak = state; \ @@ -411,6 +415,8 @@ extern int locale_utf8locale; /* XXX */ _i = is_basic (*((_src) + (_si))); \ if (_i) \ mblength = 1; \ + else if (locale_utf8locale && (((_src)[_si] & 0x80) == 0)) \ + mblength = (_src)[_si] != 0; \ else \ { \ state_bak = state; \ @@ -527,7 +533,9 @@ extern int locale_utf8locale; /* XXX */ i = is_basic (*((_src) + (_si))); \ if (i) \ mblength = 1; \ - else \ + else if (locale_utf8locale && (((_src)[_si] & 0x80) == 0)) \ + mblength = (_src)[_si] != 0; \ + else \ { \ state_bak = state; \ mblength = mbrlen ((_src) + (_si), (_srcsize) - (_si), &state); \ diff --git a/include/stdc.h b/include/stdc.h index 7b9282cc7..38516ae5d 100644 --- a/include/stdc.h +++ b/include/stdc.h @@ -1,7 +1,7 @@ /* stdc.h -- macros to make source compile on both ANSI C and K&R C compilers. */ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* Copyright (C) 1993-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. diff --git a/include/timer.h b/include/timer.h new file mode 100644 index 000000000..277947563 --- /dev/null +++ b/include/timer.h @@ -0,0 +1,64 @@ +/* timer.h -- data structures used by the shell timers in lib/sh/timers.c */ + +/* Copyright (C) 2021 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 . +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "bashjmp.h" +typedef struct _shtimer +{ + struct timeval tmout; + + int fd; + int flags; + + int alrmflag; /* should be set by alrm_handler */ + + SigHandler *alrm_handler; + SigHandler *old_handler; + + procenv_t jmpenv; + + int (*tm_handler) (struct _shtimer *); /* called on timeout if set */ + PTR_T *data; /* reserved */ +} sh_timer; + +#define SHTIMER_ALARM 0x01 /* mutually exclusive */ +#define SHTIMER_SELECT 0x02 +#define SHTIMER_LONGJMP 0x04 + +#define SHTIMER_SIGSET 0x100 +#define SHTIMER_ALRMSET 0x200 + +extern sh_timer *shtimer_alloc (void); +extern void shtimer_flush (sh_timer *); +extern void shtimer_dispose (sh_timer *); + +extern void shtimer_set (sh_timer *, time_t, long); +extern void shtimer_unset (sh_timer *); + +extern void shtimer_cleanup (sh_timer *); +extern void shtimer_clear (sh_timer *); + +extern int shtimer_chktimeout (sh_timer *); + +extern int shtimer_select (sh_timer *); +extern int shtimer_alrm (sh_timer *); diff --git a/include/typemax.h b/include/typemax.h index 9853d5674..e3b98f472 100644 --- a/include/typemax.h +++ b/include/typemax.h @@ -1,6 +1,6 @@ /* typemax.h -- encapsulate max values for long, long long, etc. */ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -54,7 +54,7 @@ : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1))) #endif -#ifdef HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG_INT # ifndef LLONG_MAX # define LLONG_MAX TYPE_MAXIMUM(long long int) # define LLONG_MIN TYPE_MINIMUM(long long int) @@ -79,8 +79,18 @@ # define UINT_MAX ((unsigned int) ~(unsigned int)0) #endif +#ifndef SHRT_MAX +# define SHRT_MAX TYPE_MAXIMUM(short) +# define SHRT_MIN TYPE_MINIMUM(short) +# define USHRT_MAX ((unsigned short) ~(unsigned short)0) +#endif + +#ifndef UCHAR_MAX +# define UCHAR_MAX 255 +#endif + /* workaround for gcc bug in versions < 2.7 */ -#if defined (HAVE_LONG_LONG) && __GNUC__ == 2 && __GNUC_MINOR__ < 7 +#if defined (HAVE_LONG_LONG_INT) && __GNUC__ == 2 && __GNUC_MINOR__ < 7 static const unsigned long long int maxquad = ULLONG_MAX; # undef ULLONG_MAX # define ULLONG_MAX maxquad @@ -102,11 +112,11 @@ static const unsigned long long int maxquad = ULLONG_MAX; #endif #ifndef SSIZE_MAX -# define SSIZE_MAX 32767 /* POSIX minimum max */ +# define SSIZE_MAX INT_MAX #endif #ifndef SIZE_MAX -# define SIZE_MAX 65535 /* POSIX minimum max */ +# define SIZE_MAX ((size_t) ~(size_t)0) #endif #ifndef sh_imaxabs diff --git a/input.c b/input.c index c57e81c36..7b439f8c8 100644 --- a/input.c +++ b/input.c @@ -1,6 +1,6 @@ /* input.c -- functions to perform buffered input with synchronization. */ -/* Copyright (C) 1992-2020 Free Software Foundation, Inc. +/* Copyright (C) 1992-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. diff --git a/jobs.c b/jobs.c index 7c3b6e838..6b986ed76 100644 --- a/jobs.c +++ b/jobs.c @@ -3,7 +3,7 @@ /* This file works with both POSIX and BSD systems. It implements job control. */ -/* Copyright (C) 1989-2020 Free Software Foundation, Inc. +/* Copyright (C) 1989-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -643,6 +643,9 @@ stop_pipeline (async, deferred) the_pipeline = (PROCESS *)NULL; newjob->pgrp = pipeline_pgrp; + + /* Invariant: if the shell is executing a command substitution, + pipeline_pgrp == shell_pgrp. Other parts of the shell assume this. */ if (pipeline_pgrp != shell_pgrp) pipeline_pgrp = 0; @@ -832,9 +835,7 @@ bgp_add (pid, status) /* XXX - what if psi == *bucket? */ if (psi == *bucket) { -#ifdef DEBUG - internal_warning ("hashed pid %d (pid %d) collides with bgpids.head, skipping", psi, pid); -#endif + internal_debug ("hashed pid %d (pid %d) collides with bgpids.head, skipping", psi, pid); bgpids.storage[psi].pid = NO_PID; /* make sure */ psi = bgp_getindex (); /* skip to next one */ } @@ -911,7 +912,7 @@ bgp_delete (pid) if (psi == NO_PIDSTAT) return 0; /* not found */ -#if defined (DEBUG) +#if 0 itrace("bgp_delete: deleting %d", pid); #endif @@ -1220,12 +1221,10 @@ cleanup_dead_jobs () /* XXX could use js.j_firstj and js.j_lastj here */ for (i = 0; i < js.j_jobslots; i++) { -#if defined (DEBUG) if (i < js.j_firstj && jobs[i]) - itrace("cleanup_dead_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + INTERNAL_DEBUG (("cleanup_dead_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj)); if (i > js.j_lastj && jobs[i]) - itrace("cleanup_dead_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif + INTERNAL_DEBUG(("cleanup_dead_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj)); if (jobs[i] && DEADJOB (i) && IS_NOTIFIED (i)) delete_job (i, 0); @@ -1272,16 +1271,12 @@ delete_old_job (pid) job = find_job (pid, 0, &p); if (job != NO_JOB) { -#ifdef DEBUG - itrace ("delete_old_job: found pid %d in job %d with state %d", pid, job, jobs[job]->state); -#endif + INTERNAL_DEBUG (("delete_old_job: found pid %d in job %d with state %d", pid, job, jobs[job]->state)); if (JOBSTATE (job) == JDEAD) delete_job (job, DEL_NOBGPID); else { -#ifdef DEBUG - internal_warning (_("forked pid %d appears in running job %d"), pid, job+1); -#endif + internal_debug (_("forked pid %d appears in running job %d"), pid, job+1); if (p) p->pid = 0; } @@ -1429,9 +1424,7 @@ delete_job (job_index, dflags) js.j_ndead--; if (js.c_reaped < 0) { -#ifdef DEBUG - itrace("delete_job (%d pgrp %d): js.c_reaped (%d) < 0 ndel = %d js.j_ndead = %d", job_index, temp->pgrp, js.c_reaped, ndel, js.j_ndead); -#endif + INTERNAL_DEBUG (("delete_job (%d pgrp %d): js.c_reaped (%d) < 0 ndel = %d js.j_ndead = %d", job_index, temp->pgrp, js.c_reaped, ndel, js.j_ndead)); js.c_reaped = 0; } } @@ -1503,10 +1496,8 @@ add_process (name, pid) p = find_process (pid, 0, &j); if (p) { -# ifdef DEBUG if (j == NO_JOB) - internal_warning ("add_process: process %5ld (%s) in the_pipeline", (long)p->pid, p->command); -# endif + internal_debug ("add_process: process %5ld (%s) in the_pipeline", (long)p->pid, p->command); if (PALIVE (p)) internal_warning (_("add_process: pid %5ld (%s) marked as still alive"), (long)p->pid, p->command); p->running = PS_RECYCLED; /* mark as recycled */ @@ -1618,12 +1609,11 @@ map_over_jobs (func, arg1, arg2) /* XXX could use js.j_firstj here */ for (i = result = 0; i < js.j_jobslots; i++) { -#if defined (DEBUG) if (i < js.j_firstj && jobs[i]) - itrace("map_over_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + INTERNAL_DEBUG (("map_over_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj)); if (i > js.j_lastj && jobs[i]) - itrace("map_over_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif + INTERNAL_DEBUG (("map_over_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj)); + if (jobs[i]) { result = (*func)(jobs[i], arg1, arg2, i); @@ -1782,12 +1772,11 @@ find_job (pid, alive_only, procp) /* XXX could use js.j_firstj here, and should check js.j_lastj */ for (i = 0; i < js.j_jobslots; i++) { -#if defined (DEBUG) if (i < js.j_firstj && jobs[i]) - itrace("find_job: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + INTERNAL_DEBUG (("find_job: job %d non-null before js.j_firstj (%d)", i, js.j_firstj)); if (i > js.j_lastj && jobs[i]) - itrace("find_job: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif + INTERNAL_DEBUG (("find_job: job %d non-null after js.j_lastj (%d)", i, js.j_lastj)); + if (jobs[i]) { p = jobs[i]->pipe; @@ -2617,7 +2606,7 @@ wait_for_single_pid (pid, flags) { if (flags & JWAIT_PERROR) internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid); - return (127); + return (257); } alive = 0; @@ -2655,16 +2644,16 @@ wait_for_single_pid (pid, flags) } /* Wait for all of the background processes started by this shell to finish. */ -void +int wait_for_background_pids (ps) struct procstat *ps; { register int i, r; - int any_stopped, check_async; + int any_stopped, check_async, njobs; sigset_t set, oset; pid_t pid; - for (any_stopped = 0, check_async = 1;;) + for (njobs = any_stopped = 0, check_async = 1;;) { BLOCK_CHILD (set, oset); @@ -2672,12 +2661,11 @@ wait_for_background_pids (ps) /* XXX could use js.j_firstj and js.j_lastj here */ for (i = 0; i < js.j_jobslots; i++) { -#if defined (DEBUG) if (i < js.j_firstj && jobs[i]) - itrace("wait_for_background_pids: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + INTERNAL_DEBUG (("wait_for_background_pids: job %d non-null before js.j_firstj (%d)", i, js.j_firstj)); if (i > js.j_lastj && jobs[i]) - itrace("wait_for_background_pids: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif + INTERNAL_DEBUG (("wait_for_background_pids: job %d non-null after js.j_lastj (%d)", i, js.j_lastj)); + if (jobs[i] && STOPPED (i)) { builtin_warning ("job %d[%d] stopped", i+1, find_last_pid (i, 0)); @@ -2702,7 +2690,7 @@ wait_for_background_pids (ps) if (ps) { ps->pid = pid; - ps->status = (r < 0) ? 127 : r; + ps->status = (r < 0 || r > 256) ? 127 : r; } if (r == -1 && errno == ECHILD) { @@ -2710,6 +2698,7 @@ wait_for_background_pids (ps) check_async = 0; mark_all_jobs_as_dead (); } + njobs++; } #if defined (PROCESS_SUBSTITUTION) @@ -2721,6 +2710,8 @@ wait_for_background_pids (ps) mark_dead_jobs_as_notified (1); cleanup_dead_jobs (); bgp_clear (); + + return njobs; } /* Make OLD_SIGINT_HANDLER the SIGINT signal handler. */ @@ -2738,6 +2729,7 @@ wait_sigint_cleanup () { queue_sigchld = 0; waiting_for_child = 0; + restore_sigint_handler (); } static void @@ -2936,11 +2928,7 @@ wait_for (pid, flags) temp_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); if (temp_sigint_handler == wait_sigint_handler) - { -#if defined (DEBUG) - internal_warning ("wait_for: recursively setting old_sigint_handler to wait_sigint_handler: running_trap = %d", running_trap); -#endif - } + internal_debug ("wait_for: recursively setting old_sigint_handler to wait_sigint_handler: running_trap = %d", running_trap); else old_sigint_handler = temp_sigint_handler; waiting_for_child = 0; @@ -3129,8 +3117,8 @@ if (job == NO_JOB) else #if defined (READLINE) /* We don't want to do this if we are running a process during - programmable completion. */ - if (RL_ISSTATE (RL_STATE_COMPLETING) == 0) + programmable completion or a command bound to `bind -x'. */ + if (RL_ISSTATE (RL_STATE_COMPLETING|RL_STATE_DISPATCHING|RL_STATE_TERMPREPPED) == 0) #endif get_tty_state (); @@ -3707,7 +3695,7 @@ kill_pid (pid, sig, group) result = killpg (pid, sig); /* If we're killing using job control notification, for example, without job control active, we have to do things ourselves. */ - else if (jobs[job]->pgrp == shell_pgrp) + else if (jobs[job]->pgrp == shell_pgrp) /* XXX - IS_JOBCONTROL(job) == 0? */ { p = jobs[job]->pipe; do @@ -4536,6 +4524,7 @@ debug_print_pgrps () (long)original_pgrp, (long)shell_pgrp, (long)terminal_pgrp); itrace("tcgetpgrp(%d) -> %ld, getpgid(0) -> %ld", shell_tty, (long)tcgetpgrp (shell_tty), (long)getpgid(0)); + itrace("pipeline_pgrp -> %ld", (long)pipeline_pgrp); } #endif @@ -4707,9 +4696,7 @@ maybe_give_terminal_to (opgrp, npgrp, flags) } else if (tpgrp != opgrp) { -#if defined (DEBUG) - internal_warning ("%d: maybe_give_terminal_to: terminal pgrp == %d shell pgrp = %d new pgrp = %d in_background = %d", (int)getpid(), tpgrp, opgrp, npgrp, running_in_background); -#endif + internal_debug ("%d: maybe_give_terminal_to: terminal pgrp == %d shell pgrp = %d new pgrp = %d in_background = %d", (int)getpid(), tpgrp, opgrp, npgrp, running_in_background); return -1; } else @@ -4738,12 +4725,11 @@ delete_all_jobs (running_only) /* XXX could use js.j_firstj here */ for (i = 0; i < js.j_jobslots; i++) { -#if defined (DEBUG) if (i < js.j_firstj && jobs[i]) - itrace("delete_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + INTERNAL_DEBUG (("delete_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj)); if (i > js.j_lastj && jobs[i]) - itrace("delete_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif + INTERNAL_DEBUG (("delete_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj)); + if (jobs[i] && (running_only == 0 || (running_only && RUNNING(i)))) /* We don't want to add any of these pids to bgpids. If running_only is non-zero, we don't want to add running jobs to the list. @@ -4799,12 +4785,11 @@ count_all_jobs () /* XXX could use js.j_firstj here */ for (i = n = 0; i < js.j_jobslots; i++) { -#if defined (DEBUG) if (i < js.j_firstj && jobs[i]) - itrace("count_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + INTERNAL_DEBUG (("count_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj)); if (i > js.j_lastj && jobs[i]) - itrace("count_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif + INTERNAL_DEBUG (("count_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj)); + if (jobs[i] && DEADJOB(i) == 0) n++; } @@ -4874,12 +4859,11 @@ mark_dead_jobs_as_notified (force) /* XXX could use js.j_firstj here */ for (i = ndead = ndeadproc = 0; i < js.j_jobslots; i++) { -#if defined (DEBUG) if (i < js.j_firstj && jobs[i]) - itrace("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + INTERNAL_DEBUG (("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj)); if (i > js.j_lastj && jobs[i]) - itrace("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif + INTERNAL_DEBUG (("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj)); + if (jobs[i] && DEADJOB (i)) { ndead++; @@ -4887,14 +4871,12 @@ mark_dead_jobs_as_notified (force) } } -#ifdef DEBUG # if 0 if (ndeadproc != js.c_reaped) itrace("mark_dead_jobs_as_notified: ndeadproc (%d) != js.c_reaped (%d)", ndeadproc, js.c_reaped); # endif if (ndead != js.j_ndead) - itrace("mark_dead_jobs_as_notified: ndead (%d) != js.j_ndead (%d)", ndead, js.j_ndead); -#endif + INTERNAL_DEBUG (("mark_dead_jobs_as_notified: ndead (%d) != js.j_ndead (%d)", ndead, js.j_ndead)); if (js.c_childmax < 0) set_maxchild (0); @@ -4927,12 +4909,11 @@ itrace("mark_dead_jobs_as_notified: child_max = %d ndead = %d ndeadproc = %d", j { if (jobs[i] && DEADJOB (i) && (interactive_shell || (find_last_pid (i, 0) != last_asynchronous_pid))) { -#if defined (DEBUG) if (i < js.j_firstj && jobs[i]) - itrace("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + INTERNAL_DEBUG (("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj)); if (i > js.j_lastj && jobs[i]) - itrace("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); -#endif + INTERNAL_DEBUG (("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj)); + /* If marking this job as notified would drop us down below child_max, don't mark it so we can keep at least child_max statuses. XXX -- need to check what Posix actually says @@ -4982,7 +4963,7 @@ set_job_control (arg) old = job_control; job_control = arg; - if (terminal_pgrp == NO_PID) + if (terminal_pgrp == NO_PID && shell_tty >= 0) terminal_pgrp = tcgetpgrp (shell_tty); /* If we're turning on job control we're going to want to know the shell's diff --git a/jobs.h b/jobs.h index 43ba8c23b..276204f0c 100644 --- a/jobs.h +++ b/jobs.h @@ -1,6 +1,6 @@ /* jobs.h -- structures and definitions used by the jobs.c file. */ -/* Copyright (C) 1993-2019 Free Software Foundation, Inc. +/* Copyright (C) 1993-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -279,7 +279,7 @@ extern int job_exit_status PARAMS((int)); extern int job_exit_signal PARAMS((int)); extern int wait_for_single_pid PARAMS((pid_t, int)); -extern void wait_for_background_pids PARAMS((struct procstat *)); +extern int wait_for_background_pids PARAMS((struct procstat *)); extern int wait_for PARAMS((pid_t, int)); extern int wait_for_job PARAMS((int, int, struct procstat *)); extern int wait_for_any_job PARAMS((int, struct procstat *)); @@ -316,6 +316,10 @@ extern void restore_pgrp_pipe PARAMS((int *)); extern void set_maxchild PARAMS((int)); +#ifdef DEBUG +extern void debug_print_pgrps (void); +#endif + extern int job_control; /* set to 0 in nojobs.c */ #endif /* _JOBS_H_ */ diff --git a/lib/glob/Makefile.in b/lib/glob/Makefile.in index 314622f13..27e34f9de 100644 --- a/lib/glob/Makefile.in +++ b/lib/glob/Makefile.in @@ -42,6 +42,7 @@ PROFILE_FLAGS = @PROFILE_FLAGS@ CFLAGS = @CFLAGS@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ +STYLE_CFLAGS = @STYLE_CFLAGS@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@ @@ -53,7 +54,7 @@ BASHINCDIR = ${topdir}/include INCLUDES = -I. -I../.. -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib CCFLAGS = $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) ${INCLUDES} $(CPPFLAGS) \ - $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS} + $(STYLE_CFLAGS) $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS} # Here is a rule for making .o files from .c files that doesn't force # the type of the machine (like -sun3) into the flags. diff --git a/lib/glob/glob.c b/lib/glob/glob.c index eb6277f04..b66af85c6 100644 --- a/lib/glob/glob.c +++ b/lib/glob/glob.c @@ -1,6 +1,6 @@ /* glob.c -- file-name wildcard pattern matching for Bash. - Copyright (C) 1985-2020 Free Software Foundation, Inc. + Copyright (C) 1985-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne-Again SHell. @@ -103,7 +103,7 @@ int glob_ignore_case = 0; /* Global variable controlling whether globbing ever returns . or .. regardless of the pattern. If set to 1, no glob pattern will ever match `.' or `..'. Disabled by default. */ -int glob_always_skip_dot_and_dotdot = 0; +int glob_always_skip_dot_and_dotdot = 1; /* Global variable to return to signify an error in globbing. */ char *glob_error_return; @@ -119,10 +119,10 @@ void udequote_pathname PARAMS((char *)); #if HANDLE_MULTIBYTE void wcdequote_pathname PARAMS((wchar_t *)); static void wdequote_pathname PARAMS((char *)); +static void dequote_pathname PARAMS((char *)); #else -# define dequote_pathname udequote_pathname +# define dequote_pathname(p) udequote_pathname(p) #endif -static void dequote_pathname PARAMS((char *)); static int glob_testdir PARAMS((char *, int)); static char **glob_dir_to_array PARAMS((char *, char **, int)); @@ -185,6 +185,13 @@ glob_pattern_p (pattern) } #if EXTENDED_GLOB + +#if defined (HANDLE_MULTIBYTE) +# define XSKIPNAME(p, d, f) mbskipname(p, d, f) +#else +# define XSKIPNAME(p, d, f) skipname(p, d, f) +#endif + /* Return 1 if all subpatterns in the extended globbing pattern PAT indicate that the name should be skipped. XXX - doesn't handle pattern negation, not sure if it should */ @@ -194,30 +201,30 @@ extglob_skipname (pat, dname, flags) int flags; { char *pp, *pe, *t, *se; - int n, r, negate, wild, nullpat; + int n, r, negate, wild, nullpat, xflags; negate = *pat == '!'; wild = *pat == '*' || *pat == '?'; pp = pat + 2; - se = pp + strlen (pp) - 1; /* end of string */ - pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */ - /* we should check for invalid extglob pattern here */ + se = pp + strlen (pp); /* end of pattern string */ + pe = glob_patscan (pp, se, 0); /* end of extglob pattern */ + + /* if pe == 0, this is an invalid extglob pattern */ if (pe == 0) return 0; + xflags = flags | ( negate ? GX_NEGATE : 0); + /* if pe != se we have more of the pattern at the end of the extglob pattern. Check the easy case first ( */ - if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0) + if (pe == se && *pe == 0 && pe[-1] == ')' && (t = strchr (pp, '|')) == 0) { - *pe = '\0'; -#if defined (HANDLE_MULTIBYTE) - r = mbskipname (pp, dname, flags); -#else - r = skipname (pp, dname, flags); /*(*/ -#endif - *pe = ')'; - if (wild && pe[1]) /* if we can match zero instances, check further */ - return (skipname (pe+1, dname, flags)); + pe[-1] = '\0'; + /* This is where we check whether the pattern is being negated and + match all files beginning with `.' if the pattern begins with a + literal `.'. */ + r = XSKIPNAME (pp, dname, xflags); /*(*/ + pe[-1] = ')'; return r; } @@ -229,21 +236,21 @@ extglob_skipname (pat, dname, flags) /* check every subpattern */ while (t = glob_patscan (pp, pe, '|')) { + /* If T == PE and *T == 0 (&& PE[-1] == RPAREN), we have hit the end + of a pattern with no trailing characters. */ n = t[-1]; /* ( */ - if (extglob_pattern_p (pp) && n == ')') + if (extglob_pattern_p (pp) && n == ')') /* nested extglob? */ t[-1] = n; /* no-op for now */ else t[-1] = '\0'; -#if defined (HANDLE_MULTIBYTE) - r = mbskipname (pp, dname, flags); -#else - r = skipname (pp, dname, flags); -#endif + r = XSKIPNAME (pp, dname, xflags); t[-1] = n; if (r == 0) /* if any pattern says not skip, we don't skip */ return r; pp = t; - } /*(*/ + if (pp == pe) + break; + } /* glob_patscan might find end of string */ if (pp == se) @@ -251,7 +258,8 @@ extglob_skipname (pat, dname, flags) /* but if it doesn't then we didn't match a leading dot */ if (wild && *pe) /* if we can match zero instances, check further */ - return (skipname (pe, dname, flags)); + return (XSKIPNAME (pe, dname, flags)); + return 1; } #endif @@ -264,6 +272,8 @@ skipname (pat, dname, flags) char *dname; int flags; { + int i; + #if EXTENDED_GLOB if (extglob_pattern_p (pat)) /* XXX */ return (extglob_skipname (pat, dname, flags)); @@ -279,9 +289,19 @@ skipname (pat, dname, flags) DOT_OR_DOTDOT (dname)) return 1; +#if 0 + /* This is where we check whether the pattern is being negated and + match all files beginning with `.' if the pattern begins with a + literal `.'. This is the negation of the next clause. */ + else if ((flags & GX_NEGATE) && noglob_dot_filenames == 0 && + dname[0] == '.' && + (pat[0] == '.' || (pat[0] == '\\' && pat[1] == '.'))) + return 0; +#endif + /* If a dot must be explicitly matched, check to see if they do. */ - else if (noglob_dot_filenames && dname[0] == '.' && pat[0] != '.' && - (pat[0] != '\\' || pat[1] != '.')) + else if (noglob_dot_filenames && dname[0] == '.' && + pat[0] != '.' && (pat[0] != '\\' || pat[1] != '.')) return 1; return 0; @@ -294,6 +314,8 @@ wskipname (pat, dname, flags) wchar_t *pat, *dname; int flags; { + int i; + if (glob_always_skip_dot_and_dotdot && WDOT_OR_DOTDOT (dname)) return 1; @@ -304,11 +326,20 @@ wskipname (pat, dname, flags) WDOT_OR_DOTDOT (dname)) return 1; +#if 0 + /* This is where we check whether the pattern is being negated and + match all files beginning with `.' if the pattern begins with a + literal `.'. This is the negation of the next clause. */ + else if ((flags & GX_NEGATE) && noglob_dot_filenames == 0 && + dname[0] == L'.' && + (pat[0] == L'.' || (pat[0] == L'\\' && pat[1] == L'.'))) + return 0; +#endif + /* If a leading dot must be explicitly matched, check to see if the pattern and dirname both have one. */ - else if (noglob_dot_filenames && dname[0] == L'.' && - pat[0] != L'.' && - (pat[0] != L'\\' || pat[1] != L'.')) + else if (noglob_dot_filenames && dname[0] == L'.' && + pat[0] != L'.' && (pat[0] != L'\\' || pat[1] != L'.')) return 1; return 0; @@ -320,22 +351,28 @@ wextglob_skipname (pat, dname, flags) int flags; { #if EXTENDED_GLOB - wchar_t *pp, *pe, *t, n, *se; - int r, negate, wild, nullpat; + wchar_t *pp, *pe, *t, *se, n; + int r, negate, wild, nullpat, xflags; negate = *pat == L'!'; wild = *pat == L'*' || *pat == L'?'; pp = pat + 2; - se = pp + wcslen (pp) - 1; /*(*/ + se = pp + wcslen (pp); pe = glob_patscan_wc (pp, se, 0); - if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0) + /* if pe == 0, this is an invalid extglob pattern */ + if (pe == 0) + return 0; + + xflags = flags | ( negate ? GX_NEGATE : 0); + + /* if pe != se we have more of the pattern at the end of the extglob + pattern. Check the easy case first ( */ + if (pe == se && *pe == L'\0' && pe[-1] == L')' && (t = wcschr (pp, L'|')) == 0) { - *pe = L'\0'; - r = wskipname (pp, dname, flags); /*(*/ - *pe = L')'; - if (wild && pe[1] != L'\0') - return (wskipname (pe+1, dname, flags)); + pe[-1] = L'\0'; + r = wskipname (pp, dname, xflags); /*(*/ + pe[-1] = L')'; return r; } @@ -348,23 +385,27 @@ wextglob_skipname (pat, dname, flags) while (t = glob_patscan_wc (pp, pe, '|')) { n = t[-1]; /* ( */ - if (wextglob_pattern_p (pp) && n == L')') + if (wextglob_pattern_p (pp) && n == L')') /* nested extglob? */ t[-1] = n; /* no-op for now */ else t[-1] = L'\0'; - r = wskipname (pp, dname, flags); + r = wskipname (pp, dname, xflags); t[-1] = n; if (r == 0) return 0; pp = t; + if (pp == pe) + break; } - if (pp == pe) /* glob_patscan_wc might find end of pattern */ + /* glob_patscan_wc might find end of string */ + if (pp == se) return r; /* but if it doesn't then we didn't match a leading dot */ if (wild && *pe != L'\0') return (wskipname (pe, dname, flags)); + return 1; #else return (wskipname (pat, dname, flags)); @@ -765,7 +806,7 @@ glob_vector (pat, dir, flags) /* Compute the flags that will be passed to strmatch(). We don't need to do this every time through the loop. */ - mflags = (noglob_dot_filenames ? FNM_PERIOD : 0) | FNM_PATHNAME; + mflags = (noglob_dot_filenames ? FNM_PERIOD : FNM_DOTDOT) | FNM_PATHNAME; #ifdef FNM_CASEFOLD if (glob_ignore_case) @@ -777,8 +818,7 @@ glob_vector (pat, dir, flags) add_current = ((flags & (GX_ALLDIRS|GX_ADDCURDIR)) == (GX_ALLDIRS|GX_ADDCURDIR)); - /* Scan the directory, finding all names that match. - For each name that matches, allocate a struct globval + /* Scan the directory, finding all names that match For each name that matches, allocate a struct globval on the stack and store the name in it. Chain those structs together; lastlink is the front of the chain. */ while (1) @@ -860,6 +900,9 @@ glob_vector (pat, dir, flags) nextname = (char *) malloc (sdlen + 1); if (nextlink == 0 || nextname == 0) { + if (firstmalloc && firstmalloc == nextlink) + firstmalloc = 0; + /* If we reset FIRSTMALLOC we can free this here. */ FREE (nextlink); FREE (nextname); free (subdir); @@ -895,7 +938,18 @@ glob_vector (pat, dir, flags) nextname = (char *) malloc (D_NAMLEN (dp) + 1); if (nextlink == 0 || nextname == 0) { - FREE (nextlink); + /* We free NEXTLINK here, since it won't be added to the + LASTLINK chain. If we used malloc, and it returned non- + NULL, firstmalloc will be set to something valid. If it's + NEXTLINK, reset it before we free NEXTLINK to avoid + duplicate frees. If not, it will be taken care of by the + loop below with TMPLINK. */ + if (firstmalloc) + { + if (firstmalloc == nextlink) + firstmalloc = 0; + FREE (nextlink); + } FREE (nextname); lose = 1; break; @@ -914,7 +968,7 @@ glob_vector (pat, dir, flags) /* compat: if GX_ADDCURDIR, add the passed directory also. Add an empty directory name as a placeholder if GX_NULLDIR (in which case the passed directory name is "."). */ - if (add_current) + if (add_current && lose == 0) { sdlen = strlen (dir); nextname = (char *)malloc (sdlen + 1); @@ -944,7 +998,7 @@ glob_vector (pat, dir, flags) lose |= name_vector == NULL; } - /* Have we run out of memory? */ + /* Have we run out of memory or been interrupted? */ if (lose) { tmplink = 0; @@ -1441,6 +1495,7 @@ only_filename: { if (free_dirname) free (directory_name); + free ((char *) result); return ((char **)&glob_error_return); } } diff --git a/lib/glob/glob.h b/lib/glob/glob.h index ca3a66cf1..47410577c 100644 --- a/lib/glob/glob.h +++ b/lib/glob/glob.h @@ -1,5 +1,5 @@ /* File-name wildcard pattern matching for GNU. - Copyright (C) 1985-2020 Free Software Foundation, Inc. + Copyright (C) 1985-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne-Again SHell. @@ -32,6 +32,7 @@ #define GX_GLOBSTAR 0x400 /* turn on special handling of ** */ #define GX_RECURSE 0x800 /* internal -- glob_filename called recursively */ #define GX_SYMLINK 0x1000 /* internal -- symlink to a directory */ +#define GX_NEGATE 0x2000 /* internal -- extglob pattern being negated */ extern int glob_pattern_p PARAMS((const char *)); extern char **glob_vector PARAMS((char *, char *, int)); diff --git a/lib/glob/sm_loop.c b/lib/glob/sm_loop.c index a98c14bd5..247ba28aa 100644 --- a/lib/glob/sm_loop.c +++ b/lib/glob/sm_loop.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2020 Free Software Foundation, Inc. +/* Copyright (C) 1991-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -16,6 +16,8 @@ along with Bash. If not, see . */ +extern int interrupt_state, terminating_signal; + struct STRUCT { CHAR *pattern; @@ -81,6 +83,9 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); sc = n < se ? *n : '\0'; + if (interrupt_state || terminating_signal) + return FNM_NOMATCH; + #ifdef EXTENDED_GLOB /* EXTMATCH () will handle recursively calling GMATCH, so we can just return what EXTMATCH() returns. */ @@ -90,7 +95,7 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); int lflags; /* If we're not matching the start of the string, we're not concerned about the special cases for matching `.' */ - lflags = (n == string) ? flags : (flags & ~FNM_PERIOD); + lflags = (n == string) ? flags : (flags & ~(FNM_PERIOD|FNM_DOTDOT)); return (EXTMATCH (c, n, se, p, pe, lflags)); } #endif /* EXTENDED_GLOB */ @@ -109,6 +114,15 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); string or if it is the first character following a slash and we are matching a pathname. */ return FNM_NOMATCH; + + /* `?' cannot match `.' or `..' if it is the first character of the + string or if it is the first character following a slash and + we are matching a pathname. */ + if ((flags & FNM_DOTDOT) && + ((n == string && SDOT_OR_DOTDOT(n)) || + ((flags & FNM_PATHNAME) && n[-1] == L('/') && PDOT_OR_DOTDOT(n)))) + return FNM_NOMATCH; + break; case L('\\'): /* backslash escape removes special meaning */ @@ -147,6 +161,14 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); we are matching a pathname. */ return FNM_NOMATCH; + /* `*' cannot match `.' or `..' if it is the first character of the + string or if it is the first character following a slash and + we are matching a pathname. */ + if ((flags & FNM_DOTDOT) && + ((n == string && SDOT_OR_DOTDOT(n)) || + ((flags & FNM_PATHNAME) && n[-1] == L('/') && PDOT_OR_DOTDOT(n)))) + return FNM_NOMATCH; + if (p == pe) return 0; @@ -288,7 +310,7 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); continue; /* Otherwise, we just recurse. */ - if (GMATCH (n, se, p, pe, &end, flags & ~FNM_PERIOD) == 0) + if (GMATCH (n, se, p, pe, &end, flags & ~(FNM_PERIOD|FNM_DOTDOT)) == 0) { if (end.pattern == NULL) return (0); @@ -321,6 +343,14 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); (n == string || ((flags & FNM_PATHNAME) && n[-1] == L('/')))) return (FNM_NOMATCH); + /* `?' cannot match `.' or `..' if it is the first character of the + string or if it is the first character following a slash and + we are matching a pathname. */ + if ((flags & FNM_DOTDOT) && + ((n == string && SDOT_OR_DOTDOT(n)) || + ((flags & FNM_PATHNAME) && n[-1] == L('/') && PDOT_OR_DOTDOT(n)))) + return FNM_NOMATCH; + p = BRACKMATCH (p, sc, flags); if (p == 0) return FNM_NOMATCH; @@ -843,7 +873,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); if (m1) { /* if srest > s, we are not at start of string */ - xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; + xflags = (srest > s) ? (flags & ~(FNM_PERIOD|FNM_DOTDOT)) : flags; m2 = (GMATCH (srest, se, prest, pe, NULL, xflags) == 0) || (s != srest && GMATCH (srest, se, p - 1, pe, NULL, xflags) == 0); } @@ -873,7 +903,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); for ( ; srest <= se; srest++) { /* if srest > s, we are not at start of string */ - xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; + xflags = (srest > s) ? (flags & ~(FNM_PERIOD|FNM_DOTDOT)) : flags; if (GMATCH (s, srest, psub, pnext - 1, NULL, flags) == 0 && GMATCH (srest, se, prest, pe, NULL, xflags) == 0) return (0); @@ -899,12 +929,17 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); /* If nothing matched, but the string starts with a period and we need to match periods explicitly, don't return this as a match, - even for negation. Might need to do this only if srest == s. */ - if (m1 == 0 && *s == '.' && (flags & FNM_PERIOD)) + even for negation. */ + if (m1 == 0 && (flags & FNM_PERIOD) && *s == '.') + return (FNM_NOMATCH); + + if (m1 == 0 && (flags & FNM_DOTDOT) && + (SDOT_OR_DOTDOT (s) || + ((flags & FNM_PATHNAME) && s[-1] == L('/') && PDOT_OR_DOTDOT(s)))) return (FNM_NOMATCH); /* if srest > s, we are not at start of string */ - xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; + xflags = (srest > s) ? (flags & ~(FNM_PERIOD|FNM_DOTDOT)) : flags; if (m1 == 0 && GMATCH (srest, se, prest, pe, NULL, xflags) == 0) return (0); } @@ -939,4 +974,8 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); #undef MEMCHR #undef COLLEQUIV #undef RANGECMP +#undef ISDIRSEP +#undef PATHSEP +#undef PDOT_OR_DOTDOT +#undef SDOT_OR_DOTDOT #undef L diff --git a/lib/glob/smatch.c b/lib/glob/smatch.c index a58456d7e..379c2d2e6 100644 --- a/lib/glob/smatch.c +++ b/lib/glob/smatch.c @@ -1,7 +1,7 @@ /* strmatch.c -- ksh-like extended pattern matching for the shell and filename globbing. */ -/* Copyright (C) 1991-2020 Free Software Foundation, Inc. +/* Copyright (C) 1991-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -308,6 +308,16 @@ is_cclass (c, name) ? TOLOWER ((unsigned char)c) \ : ((unsigned char)c)) +#if !defined (__CYGWIN__) +# define ISDIRSEP(c) ((c) == '/') +#else +# define ISDIRSEP(c) ((c) == '/' || (c) == '\\') +#endif /* __CYGWIN__ */ +#define PATHSEP(c) (ISDIRSEP(c) || (c) == 0) + +# define PDOT_OR_DOTDOT(s) (s[0] == '.' && (PATHSEP (s[1]) || (s[1] == '.' && PATHSEP (s[2])))) +# define SDOT_OR_DOTDOT(s) (s[0] == '.' && (s[1] == 0 || (s[1] == '.' && s[2] == 0))) + #define FCT internal_strmatch #define GMATCH gmatch #define COLLSYM collsym @@ -553,6 +563,17 @@ posix_cclass_only (pattern) /* Now include `sm_loop.c' for multibyte characters. */ #define FOLD(c) ((flags & FNM_CASEFOLD) && iswupper (c) ? towlower (c) : (c)) + +# if !defined (__CYGWIN__) +# define ISDIRSEP(c) ((c) == L'/') +# else +# define ISDIRSEP(c) ((c) == L'/' || (c) == L'\\') +# endif /* __CYGWIN__ */ +# define PATHSEP(c) (ISDIRSEP(c) || (c) == L'\0') + +# define PDOT_OR_DOTDOT(w) (w[0] == L'.' && (PATHSEP(w[1]) || (w[1] == L'.' && PATHSEP(w[2])))) +# define SDOT_OR_DOTDOT(w) (w[0] == L'.' && (w[1] == L'\0' || (w[1] == L'.' && w[2] == L'\0'))) + #define FCT internal_wstrmatch #define GMATCH gmatch_wc #define COLLSYM collwcsym diff --git a/lib/glob/strmatch.h b/lib/glob/strmatch.h index fa7be7bb2..d6a6b0fb3 100644 --- a/lib/glob/strmatch.h +++ b/lib/glob/strmatch.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2020 Free Software Foundation, Inc. +/* Copyright (C) 1991-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne-Again SHell. @@ -47,6 +47,7 @@ #define FNM_EXTMATCH (1 << 5) /* Use ksh-like extended matching. */ #define FNM_FIRSTCHAR (1 << 6) /* Match only the first character */ +#define FNM_DOTDOT (1 << 7) /* force `.' and `..' to match explicitly even if FNM_PERIOD not supplied. */ /* Value returned by `strmatch' if STRING does not match PATTERN. */ #undef FNM_NOMATCH diff --git a/lib/intl/VERSION b/lib/intl/VERSION index 130318357..f49e0dd82 100644 --- a/lib/intl/VERSION +++ b/lib/intl/VERSION @@ -1 +1,3 @@ GNU gettext library from gettext-0.12.1 + +This is here only in the case the system doesn't provide it diff --git a/lib/intl/ref-add.sin b/lib/intl/ref-add.sin old mode 100755 new mode 100644 diff --git a/lib/intl/ref-del.sin b/lib/intl/ref-del.sin old mode 100755 new mode 100644 diff --git a/lib/malloc/Makefile.in b/lib/malloc/Makefile.in index 0ef3cfd53..7ec8f64f8 100644 --- a/lib/malloc/Makefile.in +++ b/lib/malloc/Makefile.in @@ -1,6 +1,6 @@ # Skeleton Makefile for the GNU malloc code # -# Copyright (C) 1996-2009 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -38,6 +38,7 @@ PROFILE_FLAGS = @PROFILE_FLAGS@ CFLAGS = @CFLAGS@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ +STYLE_CFLAGS = @STYLE_CFLAGS@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ @@ -56,7 +57,7 @@ LIBINTL_H = @LIBINTL_H@ INCLUDES = -I. -I../.. -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib $(INTL_INC) CCFLAGS = ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) \ - $(CFLAGS) $(MALLOC_CFLAGS) $(CPPFLAGS) + $(CFLAGS) $(MALLOC_CFLAGS) $(STYLE_CFLAGS) $(CPPFLAGS) .c.o: $(CC) $(CCFLAGS) -c $< diff --git a/lib/malloc/imalloc.h b/lib/malloc/imalloc.h index d07adac2a..bebd13643 100644 --- a/lib/malloc/imalloc.h +++ b/lib/malloc/imalloc.h @@ -32,6 +32,11 @@ #define MALLOC_WRAPFUNCS +/* If defined, as it is by default, use the lesscore() function to attempt + to reduce the top of the heap when freeing memory blocks larger than a + defined threshold. */ +#define USE_LESSCORE + /* Generic pointer type. */ #ifndef PTR_T # if defined (__STDC__) diff --git a/lib/malloc/malloc.c b/lib/malloc/malloc.c index 92e6efa52..f61f02715 100644 --- a/lib/malloc/malloc.c +++ b/lib/malloc/malloc.c @@ -1,6 +1,6 @@ /* malloc.c - dynamic memory allocation for bash. */ -/* Copyright (C) 1985-2020 Free Software Foundation, Inc. +/* Copyright (C) 1985-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne-Again SHell. @@ -47,10 +47,10 @@ */ /* - * nextf[i] is the pointer to the next free block of size 2^(i+3). The - * smallest allocatable block is 8 bytes. The overhead information will - * go in the first int of the block, and the returned pointer will point - * to the second. + * nextf[i] is the pointer to the next free block of size 2^(i+5). The + * smallest allocatable block is 32 bytes. The overhead information will + * go in the first 16 bytes of the block, and the returned pointer will point + * to the rest. */ /* Define MEMSCRAMBLE to have free() write 0xcf into memory as it's freed, to @@ -121,8 +121,8 @@ # define NO_VALLOC #endif -/* SIZEOF_LONG * 4 - 2, usable bins from 1..NBUCKETS-1 */ -#define NBUCKETS 30 +#define MALLOC_PAGESIZE_MIN 4096 +#define MALLOC_INCR_PAGES 8192 #define ISALLOC ((char) 0xf7) /* magic byte that implies allocation */ #define ISFREE ((char) 0x54) /* magic byte that implies free block */ @@ -140,20 +140,14 @@ enough room in the block for the new size. Range checking is always done. */ union mhead { -#if SIZEOF_CHAR_P == 8 bits64_t mh_align[2]; /* 16 */ -#else - bits64_t mh_align; /* 8 */ -#endif struct { char mi_alloc; /* ISALLOC or ISFREE */ /* 1 */ char mi_index; /* index in nextf[] */ /* 1 */ /* Remainder are valid only when block is allocated */ u_bits16_t mi_magic2; /* should be == MAGIC2 */ /* 2 */ u_bits32_t mi_nbytes; /* # of bytes allocated */ /* 4 */ -#if SIZEOF_CHAR_P == 8 char mi_magic8[8]; /* MAGIC1 guard bytes */ /* 8 */ -#endif } minfo; }; #define mh_alloc minfo.mi_alloc @@ -162,14 +156,14 @@ union mhead { #define mh_magic2 minfo.mi_magic2 #define mh_magic8 minfo.mi_magic8 +#define MAGIC8_NUMBYTES 8 +#define MALLOC_SIZE_T u_bits32_t + #define MOVERHEAD sizeof(union mhead) -#if SIZEOF_CHAR_P == 8 -#define MALIGN_MASK 15 -#else -#define MALIGN_MASK 7 /* one less than desired alignment */ -#endif +#define MALIGN_MASK 15 /* one less than desired alignment */ +/* Guard bytes we write at the end of the allocation, encoding the size. */ typedef union _malloc_guard { char s[4]; u_bits32_t i; @@ -181,6 +175,8 @@ typedef union _malloc_guard { because we want sizeof (union mhead) to describe the overhead for when the block is in use, and we do not want the free-list pointer to count in that. */ +/* If we have mmap, this is not used for chunks larger than mmap_threshold, + since we munmap immediately on free(). */ /* If SIZEOF_CHAR_P == 8, this goes into the mh_magic8 buffer at the end of the rest of the struct. This may need adjusting. */ @@ -194,10 +190,11 @@ typedef union _malloc_guard { /* Written in the bytes before the block's real space (-SIZEOF_CHAR_P bytes) */ #define MAGIC1 0x55 #define MAGIC2 0x5555 -#define MSLOP 4 /* 4 bytes extra for u_bits32_t size */ + +#define MSLOP 4 /* 4 bytes extra for u_bits32_t end guard size */ /* How many bytes are actually allocated for a request of size N -- - rounded up to nearest multiple of 2*SIZEOF_CHAR_P after accounting for + rounded up to nearest multiple of 16 (alignment) after accounting for malloc overhead. */ #define ALLOCATED_BYTES(n) \ (((n) + MOVERHEAD + MSLOP + MALIGN_MASK) & ~MALIGN_MASK) @@ -211,18 +208,22 @@ typedef union _malloc_guard { /* Minimum and maximum bucket indices for block splitting (and to bound the search for a block to split). */ -#define SPLIT_MIN 2 /* XXX - was 3 */ -#define SPLIT_MID 11 -#define SPLIT_MAX 14 +#define SPLIT_MIN 1 /* 64 */ +#define SPLIT_MID 9 /* 16384 */ +#define SPLIT_MAX 12 /* 131072 */ /* Minimum and maximum bucket indices for block coalescing. */ -#define COMBINE_MIN 2 -#define COMBINE_MAX (pagebucket - 1) /* XXX */ +#define COMBINE_MIN 1 /* 64 */ +#define COMBINE_MAX (pagebucket - 1) /* 2048 for 4096-byte pages */ -#define LESSCORE_MIN 10 -#define LESSCORE_FRC 13 +#define LESSCORE_MIN 8 /* 8192 */ +#define LESSCORE_FRC 11 /* 65536 */ + +/* Which bin do we prepopulate with the initial sbrk memory? */ +#define PREPOP_BIN 1 +#define PREPOP_SIZE 64 -#define STARTBUCK 1 +#define STARTBUCK 0 /* Should we use mmap for large allocations? */ #if defined (HAVE_MMAP) @@ -232,15 +233,25 @@ typedef union _malloc_guard { #endif #if defined (HAVE_MMAP) && defined (MAP_ANONYMOUS) -# define USE_MMAP +# define USE_MMAP 1 #endif #if defined (USE_MMAP) -# define MMAP_THRESHOLD 14 /* must be >= SPLIT_MAX, COMBINE_MAX */ +# define MMAP_THRESHOLD 12 /* must be >= SPLIT_MAX, COMBINE_MAX */ #else # define MMAP_THRESHOLD (8 * SIZEOF_LONG) #endif +/* We don't try to decipher the differences between the Linux-style and + BSD-style implementations of mremap here; we use the Linux one. */ +#if USE_MMAP == 1 && defined (HAVE_MREMAP) && defined (MREMAP_MAYMOVE) +# define USE_MREMAP 1 +#endif + +/* usable bins from STARTBUCK..NBUCKETS-1 */ + +#define NBUCKETS 28 + /* Flags for the internal functions. */ #define MALLOC_WRAPPER 0x01 /* wrapper function */ #define MALLOC_INTERNAL 0x02 /* internal function calling another */ @@ -265,7 +276,7 @@ typedef union _malloc_guard { #define RIGHT_BUCKET(nb, nu) \ (((nb) > binsizes[(nu)-1]) && ((nb) <= binsizes[(nu)])) -/* nextf[i] is free list of blocks of size 2**(i + 3) */ +/* nextf[i] is free list of blocks of size 2**(i + 5) */ static union mhead *nextf[NBUCKETS]; @@ -280,16 +291,18 @@ static int maxbuck; /* highest bucket receiving allocation request. */ static char *memtop; /* top of heap */ static const unsigned long binsizes[NBUCKETS] = { - 8UL, 16UL, 32UL, 64UL, 128UL, 256UL, 512UL, 1024UL, 2048UL, 4096UL, + 32UL, 64UL, 128UL, 256UL, 512UL, 1024UL, 2048UL, 4096UL, 8192UL, 16384UL, 32768UL, 65536UL, 131072UL, 262144UL, 524288UL, 1048576UL, 2097152UL, 4194304UL, 8388608UL, 16777216UL, 33554432UL, 67108864UL, 134217728UL, 268435456UL, 536870912UL, 1073741824UL, 2147483648UL, 4294967295UL }; -/* binsizes[x] == (1 << ((x) + 3)) */ +/* binsizes[x] == (1 << ((x) + 5)) */ #define binsize(x) binsizes[(x)] +#define MAXALLOC_SIZE binsizes[NBUCKETS-1] + #if !defined (errno) extern int errno; #endif @@ -306,6 +319,7 @@ static void internal_cfree PARAMS((PTR_T, const char *, int, int)); #ifndef NO_VALLOC static PTR_T internal_valloc PARAMS((size_t, const char *, int, int)); #endif +static PTR_T internal_remap PARAMS((PTR_T, size_t, int, int)); #if defined (botch) extern void botch (); @@ -583,6 +597,7 @@ _malloc_unblock_signals (setp, osetp) #endif } +#if defined (USE_LESSCORE) /* Return some memory to the system by reducing the break. This is only called with NU > pagebucket, so we're always assured of giving back more than one page of memory. */ @@ -603,6 +618,7 @@ lesscore (nu) /* give system back some memory */ _mstats.nlesscore[nu]++; #endif } +#endif /* USE_LESSCORE */ /* Ask system for more memory; add to NEXTF[NU]. BUSY[NU] must be set to 1. */ static void @@ -741,14 +757,6 @@ malloc_debug_dummy () write (1, "malloc_debug_dummy\n", 19); } -#if SIZEOF_CHAR_P == 8 -#define PREPOP_BIN 3 -#define PREPOP_SIZE 64 -#else -#define PREPOP_BIN 2 -#define PREPOP_SIZE 32 -#endif - static int pagealign () { @@ -758,8 +766,8 @@ pagealign () char *curbrk; pagesz = getpagesize (); - if (pagesz < 1024) - pagesz = 1024; + if (pagesz < MALLOC_PAGESIZE_MIN) + pagesz = MALLOC_PAGESIZE_MIN; /* OK, how much do we need to allocate to make things page-aligned? Some of this partial page will be wasted space, but we'll use as @@ -825,7 +833,7 @@ internal_malloc (n, file, line, flags) /* get a block */ register union mhead *p; register int nunits; register char *m, *z; - long nbytes; + MALLOC_SIZE_T nbytes; mguard_t mg; /* Get the system page size and align break pointer so future sbrks will @@ -839,6 +847,10 @@ internal_malloc (n, file, line, flags) /* get a block */ multiple of 8, then figure out which nextf[] area to use. Try to be smart about where to start searching -- if the number of bytes needed is greater than the page size, we can start at pagebucket. */ +#if SIZEOF_SIZE_T == 8 + if (ALLOCATED_BYTES(n) > MAXALLOC_SIZE) + return ((PTR_T) NULL); +#endif nbytes = ALLOCATED_BYTES(n); nunits = (nbytes <= (pagesz >> 1)) ? STARTBUCK : pagebucket; for ( ; nunits < NBUCKETS; nunits++) @@ -886,10 +898,8 @@ internal_malloc (n, file, line, flags) /* get a block */ p->mh_magic2 = MAGIC2; p->mh_nbytes = n; -#if SIZEOF_CHAR_P == 8 /* Begin guard */ - MALLOC_MEMSET ((char *)p->mh_magic8, MAGIC1, 8); -#endif + MALLOC_MEMSET ((char *)p->mh_magic8, MAGIC1, MAGIC8_NUMBYTES); /* End guard */ mg.i = n; @@ -945,8 +955,8 @@ internal_free (mem, file, line, flags) register union mhead *p; register char *ap, *z; register int nunits; - register unsigned int nbytes; - int ubytes; /* caller-requested size */ + register MALLOC_SIZE_T nbytes; + MALLOC_SIZE_T ubytes; /* caller-requested size */ mguard_t mg; if ((ap = (char *)mem) == 0) @@ -979,28 +989,25 @@ internal_free (mem, file, line, flags) nunits = p->mh_index; nbytes = ALLOCATED_BYTES(p->mh_nbytes); - /* Since the sizeof(u_bits32_t) bytes before the memory handed to the user - are now used for the number of bytes allocated, a simple check of - mh_magic2 is no longer sufficient to catch things like p[-1] = 'x'. + /* The MAGIC8_NUMBYTES bytes before the memory handed to the user are now + used for a simple check to catch things like p[-1] = 'x'. We sanity-check the value of mh_nbytes against the size of the blocks in the appropriate bucket before we use it. This can still cause problems and obscure errors if mh_nbytes is wrong but still within range; the checks against the size recorded at the end of the chunk will probably - fail then. Using MALLOC_REGISTER will help here, since it saves the + fail then. Using MALLOC_REGISTER will help here, since it saves the original number of bytes requested. */ if (IN_BUCKET(nbytes, nunits) == 0) xbotch (mem, ERR_UNDERFLOW, _("free: underflow detected; mh_nbytes out of range"), file, line); -#if SIZEOF_CHAR_P == 8 { int i; - for (i = 0, z = p->mh_magic8; i < 8; i++) + for (i = 0, z = p->mh_magic8; i < MAGIC8_NUMBYTES; i++) if (*z++ != MAGIC1) xbotch (mem, ERR_UNDERFLOW, _("free: underflow detected; magic8 corrupted"), file, line); } -#endif ap += p->mh_nbytes; z = mg.s; @@ -1019,11 +1026,9 @@ internal_free (mem, file, line, flags) } #endif -#if GLIBC21 - if (nunits >= LESSCORE_MIN && ((char *)p + binsize(nunits) == sbrk (0))) -#else +#if defined (USE_LESSCORE) + /* We take care of the mmap case and munmap above */ if (nunits >= LESSCORE_MIN && ((char *)p + binsize(nunits) == memtop)) -#endif { /* If above LESSCORE_FRC, give back unconditionally. This should be set high enough to be infrequently encountered. If between LESSCORE_MIN @@ -1036,6 +1041,7 @@ internal_free (mem, file, line, flags) goto free_return; } } +#endif /* USE_LESSCORE */ #ifdef MEMSCRAMBLE if (p->mh_nbytes) @@ -1084,6 +1090,58 @@ free_return: #endif } +#if USE_MREMAP == 1 +/* Assume the caller (internal_realloc) has already performed the sanity and + overflow tests. Basically we kill the old guard information, determine the + new size, call mremap with the new size, and add the bookkeeping and guard + information back in. */ +static PTR_T +internal_remap (mem, n, nunits, flags) + PTR_T mem; + register size_t n; + int nunits; + int flags; +{ + register union mhead *p, *np; + char *m, *z; + mguard_t mg; + MALLOC_SIZE_T nbytes; + + if (nunits >= NBUCKETS) /* Uh oh */ + return ((PTR_T) NULL); + + p = (union mhead *)mem - 1; + + m = (char *)mem + p->mh_nbytes; + z = mg.s; + *m++ = 0; *m++ = 0; *m++ = 0; *m++ = 0; /* erase guard */ + + nbytes = ALLOCATED_BYTES(n); + + busy[nunits] = 1; + np = (union mhead *)mremap (p, binsize (p->mh_index), binsize (nunits), MREMAP_MAYMOVE); + busy[nunits] = 0; + if (np == MAP_FAILED) + return (PTR_T)NULL; + + if (np != p) + { + np->mh_alloc = ISALLOC; + np->mh_magic2 = MAGIC2; + MALLOC_MEMSET ((char *)np->mh_magic8, MAGIC1, MAGIC8_NUMBYTES); + } + np->mh_index = nunits; + np->mh_nbytes = n; + + mg.i = n; + z = mg.s; + m = (char *)(np + 1) + n; + *m++ = *z++, *m++ = *z++, *m++ = *z++, *m++ = *z++; + + return ((PTR_T)(np + 1)); +} +#endif + static PTR_T internal_realloc (mem, n, file, line, flags) PTR_T mem; @@ -1092,9 +1150,9 @@ internal_realloc (mem, n, file, line, flags) int line, flags; { register union mhead *p; - register u_bits32_t tocopy; - register unsigned int nbytes; - register int nunits; + register MALLOC_SIZE_T tocopy; + register MALLOC_SIZE_T nbytes; + register int newunits, nunits; register char *m, *z; mguard_t mg; @@ -1132,16 +1190,14 @@ internal_realloc (mem, n, file, line, flags) if (IN_BUCKET(nbytes, nunits) == 0) xbotch (mem, ERR_UNDERFLOW, _("realloc: underflow detected; mh_nbytes out of range"), file, line); -#if SIZEOF_CHAR_P == 8 { int i; - for (i = 0, z = p->mh_magic8; i < 8; i++) + for (i = 0, z = p->mh_magic8; i < MAGIC8_NUMBYTES; i++) if (*z++ != MAGIC1) xbotch (mem, ERR_UNDERFLOW, _("realloc: underflow detected; magic8 corrupted"), file, line); } -#endif m = (char *)mem + (tocopy = p->mh_nbytes); z = mg.s; @@ -1161,6 +1217,10 @@ internal_realloc (mem, n, file, line, flags) if (n == p->mh_nbytes) return mem; +#if SIZEOF_SIZE_T == 8 + if (ALLOCATED_BYTES(n) > MAXALLOC_SIZE) + return ((PTR_T) NULL); +#endif /* See if desired size rounds to same power of 2 as actual size. */ nbytes = ALLOCATED_BYTES(n); @@ -1187,12 +1247,31 @@ internal_realloc (mem, n, file, line, flags) _mstats.nrcopy++; #endif - /* If we are using mmap and have mremap, we could use it here. */ +#if USE_MREMAP == 1 + /* If we are using mmap and have mremap, we use it here. Make sure that + the old size and new size are above the threshold where we use mmap */ + if (nbytes > p->mh_nbytes) + newunits = nunits; + else + newunits = (nbytes <= (pagesz >> 1)) ? STARTBUCK : pagebucket; + for ( ; newunits < NBUCKETS; newunits++) + if (nbytes <= binsize(newunits)) + break; + if (nunits > malloc_mmap_threshold && newunits > malloc_mmap_threshold) + { + m = internal_remap (mem, n, newunits, MALLOC_INTERNAL); + if (m == 0) + return 0; + } + else +#endif /* USE_MREMAP */ + { if ((m = internal_malloc (n, file, line, MALLOC_INTERNAL|MALLOC_NOTRACE|MALLOC_NOREG)) == 0) return 0; FASTCOPY (mem, m, tocopy); internal_free (mem, file, line, MALLOC_INTERNAL); + } #ifdef MALLOC_TRACE if (malloc_trace && (flags & MALLOC_NOTRACE) == 0) @@ -1272,14 +1351,13 @@ malloc_usable_size (mem) { register union mhead *p; register char *ap; - register int maxbytes; - if ((ap = (char *)mem) == 0) return 0; /* Find the true start of the memory block to discover which bin */ p = (union mhead *) ap - 1; + if (p->mh_alloc == ISMEMALIGN) { ap -= p->mh_nbytes; diff --git a/lib/malloc/mstats.h b/lib/malloc/mstats.h index ce8aaeca7..aa3fa33b4 100644 --- a/lib/malloc/mstats.h +++ b/lib/malloc/mstats.h @@ -1,6 +1,6 @@ /* mstats.h - definitions for malloc statistics */ -/* Copyright (C) 2001-2020 Free Software Foundation, Inc. +/* Copyright (C) 2001-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne-Again SHell. @@ -27,7 +27,7 @@ /* This needs to change if the definition in malloc.c changes */ #ifndef NBUCKETS -# define NBUCKETS 30 +# define NBUCKETS 28 #endif /* diff --git a/lib/readline/Makefile.in b/lib/readline/Makefile.in index b2358c67a..3b16139d5 100644 --- a/lib/readline/Makefile.in +++ b/lib/readline/Makefile.in @@ -56,6 +56,7 @@ DEBUG = @DEBUG@ CFLAGS = @CFLAGS@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} +STYLE_CFLAGS = @STYLE_CFLAGS@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ @@ -65,7 +66,7 @@ LOCAL_DEFS = @LOCAL_DEFS@ INCLUDES = -I. -I$(BUILD_DIR) -I$(topdir) -I$(topdir)/lib CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(APP_CFLAGS) $(CPPFLAGS) ${INCLUDES} \ - $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS} + $(STYLE_CFLAGS) $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS} .c.o: ${RM} $@ diff --git a/lib/readline/bind.c b/lib/readline/bind.c index 76103786a..971116a90 100644 --- a/lib/readline/bind.c +++ b/lib/readline/bind.c @@ -1,6 +1,6 @@ /* bind.c -- key binding and startup file support for the readline library. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -72,7 +72,7 @@ extern char *strchr (), *strrchr (); /* Variables exported by this file. */ Keymap rl_binding_keymap; -static int _rl_skip_to_delim PARAMS((char *, int, int)); +static int _rl_skip_to_delim (char *, int, int); #if defined (USE_VARARGS) && defined (PREFER_STDARG) static void _rl_init_file_error (const char *, ...) __attribute__((__format__ (printf, 1, 2))); @@ -80,23 +80,23 @@ static void _rl_init_file_error (const char *, ...) __attribute__((__format__ ( static void _rl_init_file_error (); #endif -static rl_command_func_t *_rl_function_of_keyseq_internal PARAMS((const char *, size_t, Keymap, int *)); +static rl_command_func_t *_rl_function_of_keyseq_internal (const char *, size_t, Keymap, int *); -static char *_rl_read_file PARAMS((char *, size_t *)); -static int _rl_read_init_file PARAMS((const char *, int)); -static int glean_key_from_name PARAMS((char *)); +static char *_rl_read_file (char *, size_t *); +static int _rl_read_init_file (const char *, int); +static int glean_key_from_name (char *); -static int find_boolean_var PARAMS((const char *)); -static int find_string_var PARAMS((const char *)); +static int find_boolean_var (const char *); +static int find_string_var (const char *); -static const char *boolean_varname PARAMS((int)); -static const char *string_varname PARAMS((int)); +static const char *boolean_varname (int); +static const char *string_varname (int); -static char *_rl_get_string_variable_value PARAMS((const char *)); -static int substring_member_of_array PARAMS((const char *, const char * const *)); +static char *_rl_get_string_variable_value (const char *); +static int substring_member_of_array (const char *, const char * const *); -static int _rl_get_keymap_by_name PARAMS((const char *)); -static int _rl_get_keymap_by_map PARAMS((Keymap)); +static int _rl_get_keymap_by_name (const char *); +static int _rl_get_keymap_by_map (Keymap); static int currently_reading_init_file; @@ -880,6 +880,85 @@ rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type return _rl_function_of_keyseq_internal (keyseq, len, map, type); } +/* Assuming there is a numeric argument at the beginning of KEYSEQ (the + caller is responsible for checking), return the index of the portion of + the key sequence following the numeric argument. If there's no numeric + argument (?), or if KEYSEQ consists solely of a numeric argument (?), + return -1. */ +int +rl_trim_arg_from_keyseq (const char *keyseq, size_t len, Keymap map) +{ + register int i, j, parsing_digits; + unsigned char ic; + Keymap map0; + + if (map == 0) + map = _rl_keymap; + map0 = map; + + /* The digits following the initial one (e.g., the binding to digit-argument) + or the optional `-' in a binding to digit-argument or universal-argument + are not added to rl_executing_keyseq. This is basically everything read by + rl_digit_loop. The parsing_digits logic is here in case they ever are. */ + for (i = j = parsing_digits = 0; keyseq && i < len; i++) + { + ic = keyseq[i]; + + if (parsing_digits) + { + if (_rl_digit_p (ic)) + { + j = i + 1; + continue; + } + parsing_digits = 0; + } + + if (map[ic].type == ISKMAP) + { + if (i + 1 == len) + return -1; + map = FUNCTION_TO_KEYMAP (map, ic); + continue; + } + if (map[ic].type == ISFUNC) + { +#if defined (VI_MODE) + if (map[ic].function != rl_digit_argument && map[ic].function != rl_universal_argument && map[ic].function != rl_vi_arg_digit) +#else + if (map[ic].function != rl_digit_argument && map[ic].function != rl_universal_argument) +#endif + return (j); + + /* We don't bother with a keyseq that is only a numeric argument */ + if (i + 1 == len) + return -1; + + parsing_digits = 1; + + /* This logic should be identical to rl_digit_loop */ + /* We accept M-- as equivalent to M--1, C-u- as equivalent to C-u-1 + but set parsing_digits to 2 to note that we saw `-' */ + if (map[ic].function == rl_universal_argument && (i + 1 == '-')) + { + i++; + parsing_digits = 2; + } + if (map[ic].function == rl_digit_argument && ic == '-') + { + parsing_digits = 2; + } + + map = map0; + j = i + 1; + } + } + + /* If we're still parsing digits by the time we get here, we don't allow a + key sequence that consists solely of a numeric argument */ + return -1; +} + /* The last key bindings file read. */ static char *last_readline_init_file = (char *)NULL; @@ -1143,7 +1222,7 @@ parse_comparison_op (s, indp) /* */ /* **************************************************************** */ -typedef int _rl_parser_func_t PARAMS((char *)); +typedef int _rl_parser_func_t (char *); /* Things that mean `Control'. */ const char * const _rl_possible_control_prefixes[] = { @@ -1154,6 +1233,12 @@ const char * const _rl_possible_meta_prefixes[] = { "Meta", "M-", (const char *)NULL }; +/* Forward declarations */ +static int parser_if (char *); +static int parser_else (char *); +static int parser_endif (char *); +static int parser_include (char *); + /* Conditionals. */ /* Calling programs set this to have their argv[0]. */ @@ -1813,6 +1898,7 @@ static const struct { { "convert-meta", &_rl_convert_meta_chars_to_ascii, 0 }, { "disable-completion", &rl_inhibit_completion, 0 }, { "echo-control-characters", &_rl_echo_control_chars, 0 }, + { "enable-active-region", &_rl_enable_active_region, 0 }, { "enable-bracketed-paste", &_rl_enable_bracketed_paste, V_SPECIAL }, { "enable-keypad", &_rl_enable_keypad, 0 }, { "enable-meta-key", &_rl_enable_meta, 0 }, @@ -1883,7 +1969,7 @@ hack_special_boolean_var (int i) _rl_enable_active_region = _rl_enable_bracketed_paste; } -typedef int _rl_sv_func_t PARAMS((const char *)); +typedef int _rl_sv_func_t (const char *); /* These *must* correspond to the array indices for the appropriate string variable. (Though they're not used right now.) */ @@ -1897,25 +1983,29 @@ typedef int _rl_sv_func_t PARAMS((const char *)); #define V_INT 2 /* Forward declarations */ -static int sv_bell_style PARAMS((const char *)); -static int sv_combegin PARAMS((const char *)); -static int sv_dispprefix PARAMS((const char *)); -static int sv_compquery PARAMS((const char *)); -static int sv_compwidth PARAMS((const char *)); -static int sv_editmode PARAMS((const char *)); -static int sv_emacs_modestr PARAMS((const char *)); -static int sv_histsize PARAMS((const char *)); -static int sv_isrchterm PARAMS((const char *)); -static int sv_keymap PARAMS((const char *)); -static int sv_seqtimeout PARAMS((const char *)); -static int sv_viins_modestr PARAMS((const char *)); -static int sv_vicmd_modestr PARAMS((const char *)); +static int sv_region_start_color (const char *); +static int sv_region_end_color (const char *); +static int sv_bell_style (const char *); +static int sv_combegin (const char *); +static int sv_dispprefix (const char *); +static int sv_compquery (const char *); +static int sv_compwidth (const char *); +static int sv_editmode (const char *); +static int sv_emacs_modestr (const char *); +static int sv_histsize (const char *); +static int sv_isrchterm (const char *); +static int sv_keymap (const char *); +static int sv_seqtimeout (const char *); +static int sv_viins_modestr (const char *); +static int sv_vicmd_modestr (const char *); static const struct { const char * const name; int flags; _rl_sv_func_t *set_func; } string_varlist[] = { + { "active-region-end-color", V_STRING, sv_region_end_color }, + { "active-region-start-color", V_STRING, sv_region_start_color }, { "bell-style", V_STRING, sv_bell_style }, { "comment-begin", V_STRING, sv_combegin }, { "completion-display-width", V_INT, sv_compwidth }, @@ -2134,6 +2224,18 @@ sv_seqtimeout (const char *value) return 0; } +static int +sv_region_start_color (const char *value) +{ + return (_rl_reset_region_color (0, value)); +} + +static int +sv_region_end_color (const char *value) +{ + return (_rl_reset_region_color (1, value)); +} + static int sv_bell_style (const char *value) { @@ -2548,6 +2650,15 @@ _rl_get_keyname (int key) keyname[i++] = (c / 8) + '0'; c = (c % 8) + '0'; } + /* These characters are valid UTF-8; convert them into octal escape + sequences as well. This changes C. */ + else if (c >= 160) + { + keyname[i++] = '\\'; + keyname[i++] = '0' + ((((unsigned char)c) >> 6) & 0x07); + keyname[i++] = '0' + ((((unsigned char)c) >> 3) & 0x07); + c = (c % 8) + '0'; + } /* Now, if the character needs to be quoted with a backslash, do that. */ if (c == '\\' || c == '"') diff --git a/lib/readline/callback.c b/lib/readline/callback.c index a466cf9b6..69df77df7 100644 --- a/lib/readline/callback.c +++ b/lib/readline/callback.c @@ -1,6 +1,6 @@ /* callback.c -- functions to use readline as an X `callback' mechanism. */ -/* Copyright (C) 1987-2017 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -136,6 +136,8 @@ rl_callback_read_char (void) abort (); } + eof = 0; + memcpy ((void *)olevel, (void *)_rl_top_level, sizeof (procenv_t)); #if defined (HAVE_POSIX_SIGSETJMP) jcode = sigsetjmp (_rl_top_level, 0); @@ -147,6 +149,14 @@ rl_callback_read_char (void) (*rl_redisplay_function) (); _rl_want_redisplay = 0; memcpy ((void *)_rl_top_level, (void *)olevel, sizeof (procenv_t)); + + /* If we longjmped because of a timeout, handle it here. */ + if (RL_ISSTATE (RL_STATE_TIMEOUT)) + { + RL_SETSTATE (RL_STATE_DONE); + rl_done = 1; + } + CALLBACK_READ_RETURN (); } @@ -268,6 +278,13 @@ rl_callback_read_char (void) _rl_want_redisplay = 0; } + /* Make sure application hooks can see whether we saw EOF. */ + if (eof > 0) + { + rl_eof_found = eof; + RL_SETSTATE(RL_STATE_EOF); + } + if (rl_done) { line = readline_internal_teardown (eof); @@ -278,7 +295,8 @@ rl_callback_read_char (void) rl_clear_signals (); #endif in_handler = 0; - (*rl_linefunc) (line); + if (rl_linefunc) /* just in case */ + (*rl_linefunc) (line); /* If the user did not clear out the line, do it for him. */ if (rl_line_buffer[0]) diff --git a/lib/readline/chardefs.h b/lib/readline/chardefs.h index 3cf1326aa..24a25f1f1 100644 --- a/lib/readline/chardefs.h +++ b/lib/readline/chardefs.h @@ -1,6 +1,6 @@ /* chardefs.h -- Character definitions for readline. */ -/* Copyright (C) 1994-2015 Free Software Foundation, Inc. +/* Copyright (C) 1994-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -26,9 +26,6 @@ #if defined (HAVE_CONFIG_H) # if defined (HAVE_STRING_H) -# if ! defined (STDC_HEADERS) && defined (HAVE_MEMORY_H) -# include -# endif # include # endif /* HAVE_STRING_H */ # if defined (HAVE_STRINGS_H) @@ -66,22 +63,26 @@ #define UNMETA(c) ((c) & (~meta_character_bit)) #define UNCTRL(c) _rl_to_upper(((c)|control_character_bit)) -#if defined STDC_HEADERS || (!defined (isascii) && !defined (HAVE_ISASCII)) -# define IN_CTYPE_DOMAIN(c) 1 -#else -# define IN_CTYPE_DOMAIN(c) isascii(c) +#ifndef UCHAR_MAX +# define UCHAR_MAX 255 #endif - -#if !defined (isxdigit) && !defined (HAVE_ISXDIGIT) && !defined (__cplusplus) -# define isxdigit(c) (isdigit((unsigned char)(c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) +#ifndef CHAR_MAX +# define CHAR_MAX 127 #endif -#if defined (CTYPE_NON_ASCII) +/* use this as a proxy for C89 */ +#if defined (HAVE_STDLIB_H) && defined (HAVE_STRING_H) +# define IN_CTYPE_DOMAIN(c) 1 # define NON_NEGATIVE(c) 1 #else +# define IN_CTYPE_DOMAIN(c) ((c) >= 0 && (c) <= CHAR_MAX) # define NON_NEGATIVE(c) ((unsigned char)(c) == (c)) #endif +#if !defined (isxdigit) && !defined (HAVE_ISXDIGIT) && !defined (__cplusplus) +# define isxdigit(c) (isdigit((unsigned char)(c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) +#endif + /* Some systems define these; we want our definitions. */ #undef ISPRINT @@ -99,12 +100,12 @@ #define _rl_uppercase_p(c) (NON_NEGATIVE(c) && ISUPPER(c)) #define _rl_digit_p(c) ((c) >= '0' && (c) <= '9') +#define _rl_alphabetic_p(c) (NON_NEGATIVE(c) && ISALNUM(c)) #define _rl_pure_alphabetic(c) (NON_NEGATIVE(c) && ISALPHA(c)) -#define ALPHABETIC(c) (NON_NEGATIVE(c) && ISALNUM(c)) #ifndef _rl_to_upper -# define _rl_to_upper(c) (_rl_lowercase_p(c) ? toupper((unsigned char)c) : (c)) -# define _rl_to_lower(c) (_rl_uppercase_p(c) ? tolower((unsigned char)c) : (c)) +# define _rl_to_upper(c) (_rl_lowercase_p(c) ? toupper((unsigned char)(c)) : (c)) +# define _rl_to_lower(c) (_rl_uppercase_p(c) ? tolower((unsigned char)(c)) : (c)) #endif #ifndef _rl_digit_value diff --git a/lib/readline/colors.c b/lib/readline/colors.c index 9e37527ef..dba81a279 100644 --- a/lib/readline/colors.c +++ b/lib/readline/colors.c @@ -2,7 +2,7 @@ Modified by Chet Ramey for Readline. - Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015, 2017, 2019 + Copyright (C) 1985, 1988, 1990-1991, 1995-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -73,6 +73,8 @@ static bool is_colored (enum indicator_no type); static void restore_default_color (void); +#define RL_COLOR_PREFIX_EXTENSION "readline-colored-completion-prefix" + COLOR_EXT_TYPE *_rl_color_ext_list = 0; /* Output a color indicator (which may contain nulls). */ @@ -110,13 +112,28 @@ _rl_set_normal_color (void) } } +static struct bin_str * +_rl_custom_readline_prefix (void) +{ + size_t len; + COLOR_EXT_TYPE *ext; + + len = strlen (RL_COLOR_PREFIX_EXTENSION); + for (ext = _rl_color_ext_list; ext; ext = ext->next) + if (ext->ext.len == len && STREQN (ext->ext.string, RL_COLOR_PREFIX_EXTENSION, len)) + return (&ext->seq); + return (NULL); +} + bool _rl_print_prefix_color (void) { struct bin_str *s; /* What do we want to use for the prefix? Let's try cyan first, see colors.h */ - s = &_rl_color_indicator[C_PREFIX]; + s = _rl_custom_readline_prefix (); + if (s == 0) + s = &_rl_color_indicator[C_PREFIX]; if (s->string != NULL) { if (is_colored (C_NORM)) @@ -239,8 +256,10 @@ _rl_print_color_indicator (const char *f) else if (S_ISSOCK (mode)) colored_filetype = C_SOCK; #endif +#if defined (S_ISBLK) else if (S_ISBLK (mode)) colored_filetype = C_BLK; +#endif else if (S_ISCHR (mode)) colored_filetype = C_CHR; else diff --git a/lib/readline/compat.c b/lib/readline/compat.c index 3ade3629a..fc2a48f4a 100644 --- a/lib/readline/compat.c +++ b/lib/readline/compat.c @@ -1,6 +1,6 @@ /* compat.c -- backwards compatibility functions. */ -/* Copyright (C) 2000-2017 Free Software Foundation, Inc. +/* Copyright (C) 2000-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -30,18 +30,18 @@ #include "rlstdc.h" #include "rltypedefs.h" -extern void rl_free_undo_list PARAMS((void)); -extern int rl_maybe_save_line PARAMS((void)); -extern int rl_maybe_unsave_line PARAMS((void)); -extern int rl_maybe_replace_line PARAMS((void)); +extern void rl_free_undo_list (void); +extern int rl_maybe_save_line (void); +extern int rl_maybe_unsave_line (void); +extern int rl_maybe_replace_line (void); -extern int rl_crlf PARAMS((void)); -extern int rl_ding PARAMS((void)); -extern int rl_alphabetic PARAMS((int)); +extern int rl_crlf (void); +extern int rl_ding (void); +extern int rl_alphabetic (int); -extern char **rl_completion_matches PARAMS((const char *, rl_compentry_func_t *)); -extern char *rl_username_completion_function PARAMS((const char *, int)); -extern char *rl_filename_completion_function PARAMS((const char *, int)); +extern char **rl_completion_matches (const char *, rl_compentry_func_t *); +extern char *rl_username_completion_function (const char *, int); +extern char *rl_filename_completion_function (const char *, int); /* Provide backwards-compatible entry points for old function names. */ diff --git a/lib/readline/complete.c b/lib/readline/complete.c index fc5c3adb3..e5d224ed0 100644 --- a/lib/readline/complete.c +++ b/lib/readline/complete.c @@ -1,6 +1,6 @@ /* complete.c -- filename completion for readline. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -95,7 +95,7 @@ typedef int QSFUNC (); /* Most systems don't declare getpwent in if _POSIX_SOURCE is defined. */ #if defined (HAVE_GETPWENT) && (!defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE)) -extern struct passwd *getpwent PARAMS((void)); +extern struct passwd *getpwent (void); #endif /* HAVE_GETPWENT && (!HAVE_GETPW_DECLS || _POSIX_SOURCE) */ /* If non-zero, then this is the address of a function to call when @@ -114,44 +114,44 @@ rl_compdisp_func_t *rl_completion_display_matches_hook = (rl_compdisp_func_t *)N #endif #if defined (VISIBLE_STATS) -static int stat_char PARAMS((char *)); +static int stat_char (char *); #endif #if defined (COLOR_SUPPORT) -static int colored_stat_start PARAMS((const char *)); -static void colored_stat_end PARAMS((void)); -static int colored_prefix_start PARAMS((void)); -static void colored_prefix_end PARAMS((void)); +static int colored_stat_start (const char *); +static void colored_stat_end (void); +static int colored_prefix_start (void); +static void colored_prefix_end (void); #endif -static int path_isdir PARAMS((const char *)); +static int path_isdir (const char *); -static char *rl_quote_filename PARAMS((char *, int, char *)); +static char *rl_quote_filename (char *, int, char *); -static void _rl_complete_sigcleanup PARAMS((int, void *)); +static void _rl_complete_sigcleanup (int, void *); -static void set_completion_defaults PARAMS((int)); -static int get_y_or_n PARAMS((int)); -static int _rl_internal_pager PARAMS((int)); -static char *printable_part PARAMS((char *)); -static int fnwidth PARAMS((const char *)); -static int fnprint PARAMS((const char *, int, const char *)); -static int print_filename PARAMS((char *, char *, int)); +static void set_completion_defaults (int); +static int get_y_or_n (int); +static int _rl_internal_pager (int); +static char *printable_part (char *); +static int fnwidth (const char *); +static int fnprint (const char *, int, const char *); +static int print_filename (char *, char *, int); -static char **gen_completion_matches PARAMS((char *, int, int, rl_compentry_func_t *, int, int)); +static char **gen_completion_matches (char *, int, int, rl_compentry_func_t *, int, int); -static char **remove_duplicate_matches PARAMS((char **)); -static void insert_match PARAMS((char *, int, int, char *)); -static int append_to_match PARAMS((char *, int, int, int)); -static void insert_all_matches PARAMS((char **, int, char *)); -static int complete_fncmp PARAMS((const char *, int, const char *, int)); -static void display_matches PARAMS((char **)); -static int compute_lcd_of_matches PARAMS((char **, int, const char *)); -static int postprocess_matches PARAMS((char ***, int)); -static int compare_match PARAMS((char *, const char *)); -static int complete_get_screenwidth PARAMS((void)); +static char **remove_duplicate_matches (char **); +static void insert_match (char *, int, int, char *); +static int append_to_match (char *, int, int, int); +static void insert_all_matches (char **, int, char *); +static int complete_fncmp (const char *, int, const char *, int); +static void display_matches (char **); +static int compute_lcd_of_matches (char **, int, const char *); +static int postprocess_matches (char ***, int); +static int compare_match (char *, const char *); +static int complete_get_screenwidth (void); -static char *make_quoted_replacement PARAMS((char *, int, char *)); +static char *make_quoted_replacement (char *, int, char *); /* **************************************************************** */ /* */ @@ -304,7 +304,7 @@ const char *rl_basic_quote_characters = "\"'"; /* The list of characters that signal a break between words for rl_complete_internal. The default list is the contents of rl_basic_word_break_characters. */ -/*const*/ char *rl_completer_word_break_characters = (/*const*/ char *)NULL; +const char *rl_completer_word_break_characters = 0; /* Hook function to allow an application to set the completion word break characters before readline breaks up the line. Allows @@ -757,7 +757,7 @@ fnwidth (const char *string) mbstate_t ps; int left, w; size_t clen; - wchar_t wc; + WCHAR_T wc; left = strlen (string) + 1; memset (&ps, 0, sizeof (mbstate_t)); @@ -774,7 +774,7 @@ fnwidth (const char *string) else { #if defined (HANDLE_MULTIBYTE) - clen = mbrtowc (&wc, string + pos, left - pos, &ps); + clen = MBRTOWC (&wc, string + pos, left - pos, &ps); if (MB_INVALIDCH (clen)) { width++; @@ -812,7 +812,7 @@ fnprint (const char *to_print, int prefix_bytes, const char *real_pathname) const char *end; size_t tlen; int width; - wchar_t wc; + WCHAR_T wc; print_len = strlen (to_print); end = to_print + print_len + 1; @@ -835,7 +835,8 @@ fnprint (const char *to_print, int prefix_bytes, const char *real_pathname) colored_stat_start (real_pathname); #endif - if (prefix_bytes && _rl_completion_prefix_display_length > 0) + if (prefix_bytes && _rl_completion_prefix_display_length > 0 && + prefix_bytes > _rl_completion_prefix_display_length) { char ellipsis; @@ -880,7 +881,7 @@ fnprint (const char *to_print, int prefix_bytes, const char *real_pathname) else { #if defined (HANDLE_MULTIBYTE) - tlen = mbrtowc (&wc, s, end - s, &ps); + tlen = MBRTOWC (&wc, s, end - s, &ps); if (MB_INVALIDCH (tlen)) { tlen = 1; @@ -1078,7 +1079,8 @@ char _rl_find_completion_word (int *fp, int *dp) { int scan, end, found_quote, delimiter, pass_next, isbrk; - char quote_char, *brkchars; + char quote_char; + const char *brkchars; end = rl_point; found_quote = delimiter = 0; @@ -1321,7 +1323,7 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text) int v; size_t v1, v2; mbstate_t ps1, ps2; - wchar_t wc1, wc2; + WCHAR_T wc1, wc2; #endif /* If only one match, just use that. Otherwise, compare each @@ -1353,8 +1355,8 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text) #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { - v1 = mbrtowc(&wc1, match_list[i]+si, strlen (match_list[i]+si), &ps1); - v2 = mbrtowc (&wc2, match_list[i+1]+si, strlen (match_list[i+1]+si), &ps2); + v1 = MBRTOWC (&wc1, match_list[i]+si, strlen (match_list[i]+si), &ps1); + v2 = MBRTOWC (&wc2, match_list[i+1]+si, strlen (match_list[i+1]+si), &ps2); if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2)) { if (c1 != c2) /* do byte comparison */ @@ -1364,7 +1366,7 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text) if (_rl_completion_case_fold) { wc1 = towlower (wc1); - wc2 = towlower (wc2); + wc2 = towlower (wc2); } if (wc1 != wc2) break; @@ -1547,7 +1549,7 @@ rl_display_match_list (char **matches, int len, int max) if (common_length > _rl_completion_prefix_display_length && common_length > ELLIPSIS_LEN) max -= common_length - ELLIPSIS_LEN; - else + else if (_rl_colored_completion_prefix <= 0) common_length = sind = 0; } #if defined (COLOR_SUPPORT) @@ -1979,7 +1981,7 @@ compare_match (char *text, const char *match) { temp = (*rl_filename_dequoting_function) (text, rl_completion_quote_character); r = strcmp (temp, match); - free (temp); + xfree (temp); return r; } return (strcmp (text, match)); @@ -2330,7 +2332,7 @@ complete_fncmp (const char *convfn, int convlen, const char *filename, int filen #if defined (HANDLE_MULTIBYTE) size_t v1, v2; mbstate_t ps1, ps2; - wchar_t wc1, wc2; + WCHAR_T wc1, wc2; #endif #if defined (HANDLE_MULTIBYTE) @@ -2357,8 +2359,8 @@ complete_fncmp (const char *convfn, int convlen, const char *filename, int filen { do { - v1 = mbrtowc (&wc1, s1, convlen, &ps1); - v2 = mbrtowc (&wc2, s2, filename_len, &ps2); + v1 = MBRTOWC (&wc1, s1, convlen, &ps1); + v2 = MBRTOWC (&wc2, s2, filename_len, &ps2); if (v1 == 0 && v2 == 0) return 1; else if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2)) @@ -2407,8 +2409,8 @@ complete_fncmp (const char *convfn, int convlen, const char *filename, int filen { do { - v1 = mbrtowc (&wc1, s1, convlen, &ps1); - v2 = mbrtowc (&wc2, s2, filename_len, &ps2); + v1 = MBRTOWC (&wc1, s1, convlen, &ps1); + v2 = MBRTOWC (&wc2, s2, filename_len, &ps2); if (v1 == 0 && v2 == 0) return 1; else if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2)) diff --git a/lib/readline/display.c b/lib/readline/display.c index f5d32945c..c1135ec59 100644 --- a/lib/readline/display.c +++ b/lib/readline/display.c @@ -1,6 +1,6 @@ /* display.c -- readline redisplay facility. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -63,23 +63,23 @@ extern char *strchr (), *strrchr (); #endif /* !strchr && !__STDC__ */ -static void putc_face PARAMS((int, int, char *)); -static void puts_face PARAMS((const char *, const char *, int)); -static void norm_face PARAMS((char *, int)); +static void putc_face (int, int, char *); +static void puts_face (const char *, const char *, int); +static void norm_face (char *, int); -static void update_line PARAMS((char *, char *, char *, char *, int, int, int, int)); -static void space_to_eol PARAMS((int)); -static void delete_chars PARAMS((int)); -static void insert_some_chars PARAMS((char *, int, int)); -static void open_some_spaces PARAMS((int)); -static void cr PARAMS((void)); -static void redraw_prompt PARAMS((char *)); -static void _rl_move_cursor_relative PARAMS((int, const char *, const char *)); +static void update_line (char *, char *, char *, char *, int, int, int, int); +static void space_to_eol (int); +static void delete_chars (int); +static void insert_some_chars (char *, int, int); +static void open_some_spaces (int); +static void cr (void); +static void redraw_prompt (char *); +static void _rl_move_cursor_relative (int, const char *, const char *); /* Values for FLAGS */ #define PMT_MULTILINE 0x01 -static char *expand_prompt PARAMS((char *, int, int *, int *, int *, int *)); +static char *expand_prompt (char *, int, int *, int *, int *, int *); #define DEFAULT_LINE_BUFFER_SIZE 1024 @@ -115,7 +115,7 @@ static int line_structures_initialized = 0; #define inv_face (line_state_invisible->lface) #if defined (HANDLE_MULTIBYTE) -static int _rl_col_width PARAMS((const char *, int, int, int)); +static int _rl_col_width (const char *, int, int, int); #else # define _rl_col_width(l, s, e, f) (((e) <= (s)) ? 0 : (e) - (s)) #endif @@ -356,7 +356,7 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp) { char *r, *ret, *p, *igstart, *nprompt, *ms; int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars; - int mlen, newlines, newlines_guess, bound; + int mlen, newlines, newlines_guess, bound, can_add_invis; int mb_cur_max; /* We only expand the mode string for the last line of a multiline prompt @@ -372,6 +372,7 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp) else nprompt = pmt; + can_add_invis = 0; mb_cur_max = MB_CUR_MAX; if (_rl_screenwidth == 0) @@ -434,6 +435,19 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp) else if (ignoring && *p == RL_PROMPT_END_IGNORE) { ignoring = 0; + /* If we have a run of invisible characters, adjust local_prompt_newlines + to add them, since update_line expects them to be counted before + wrapping the line. */ + if (can_add_invis) + { + local_prompt_newlines[newlines] = r - ret; + /* If we're adding to the number of invisible characters on the + first line of the prompt, but we've already set the number of + invisible characters on that line, we need to adjust the + counter. */ + if (invflset && newlines == 1) + invfl = ninvis; + } if (p != (igstart + 1)) last = r - ret - 1; continue; @@ -498,10 +512,17 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp) new = r - ret; local_prompt_newlines[++newlines] = new; } + + /* What if a physical character of width >= 2 is split? There is + code that wraps before the physical screen width if the character + width would exceed it, but it needs to be checked against this + code and local_prompt_newlines[]. */ + if (ignoring == 0) + can_add_invis = (physchars == bound); } } - if (rl < _rl_screenwidth) + if (rl <= _rl_screenwidth) invfl = ninvis; *r = '\0'; @@ -515,7 +536,7 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp) *vlp = physchars; if (nprompt != pmt) - free (nprompt); + xfree (nprompt); return ret; } @@ -749,7 +770,7 @@ rl_redisplay (void) int hl_begin, hl_end; int mb_cur_max = MB_CUR_MAX; #if defined (HANDLE_MULTIBYTE) - wchar_t wc; + WCHAR_T wc; size_t wc_bytes; int wc_width; mbstate_t ps; @@ -983,11 +1004,11 @@ rl_redisplay (void) memset (&ps, 0, sizeof (mbstate_t)); if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[0])) { - wc = (wchar_t)rl_line_buffer[0]; + wc = (WCHAR_T)rl_line_buffer[0]; wc_bytes = 1; } else - wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps); + wc_bytes = MBRTOWC (&wc, rl_line_buffer, rl_end, &ps); } else wc_bytes = 1; @@ -1158,12 +1179,12 @@ rl_redisplay (void) in += wc_bytes; if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[in])) { - wc = (wchar_t)rl_line_buffer[in]; + wc = (WCHAR_T)rl_line_buffer[in]; wc_bytes = 1; memset (&ps, 0, sizeof (mbstate_t)); /* re-init state */ } else - wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps); + wc_bytes = MBRTOWC (&wc, rl_line_buffer + in, rl_end - in, &ps); } else in++; @@ -1582,9 +1603,9 @@ putc_face (int c, int face, char *cur_face) if (face != FACE_NORMAL && face != FACE_STANDOUT) return; if (face == FACE_STANDOUT && cf == FACE_NORMAL) - _rl_standout_on (); + _rl_region_color_on (); if (face == FACE_NORMAL && cf == FACE_STANDOUT) - _rl_standout_off (); + _rl_region_color_off (); *cur_face = face; } if (c != EOF) @@ -1662,7 +1683,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0) { - wchar_t wc; + WCHAR_T wc; mbstate_t ps; int oldwidth, newwidth; int oldbytes, newbytes; @@ -1681,7 +1702,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l /* 1. how many screen positions does first char in old consume? */ memset (&ps, 0, sizeof (mbstate_t)); - ret = mbrtowc (&wc, old, mb_cur_max, &ps); + ret = MBRTOWC (&wc, old, mb_cur_max, &ps); oldbytes = ret; if (MB_INVALIDCH (ret)) { @@ -1697,7 +1718,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l /* 2. how many screen positions does the first char in new consume? */ memset (&ps, 0, sizeof (mbstate_t)); - ret = mbrtowc (&wc, new, mb_cur_max, &ps); + ret = MBRTOWC (&wc, new, mb_cur_max, &ps); newbytes = ret; if (MB_INVALIDCH (ret)) { @@ -1718,7 +1739,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l { int t; - ret = mbrtowc (&wc, new+newbytes, mb_cur_max, &ps); + ret = MBRTOWC (&wc, new+newbytes, mb_cur_max, &ps); if (MB_INVALIDCH (ret)) { newwidth += 1; @@ -1740,7 +1761,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l { int t; - ret = mbrtowc (&wc, old+oldbytes, mb_cur_max, &ps); + ret = MBRTOWC (&wc, old+oldbytes, mb_cur_max, &ps); if (MB_INVALIDCH (ret)) { oldwidth += 1; @@ -1952,14 +1973,14 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0 && _rl_utf8locale) { - wchar_t wc; + WCHAR_T wc; mbstate_t ps = { 0 }; int t; /* If the first character in the difference is a zero-width character, assume it's a combining character and back one up so the two base characters no longer compare equivalently. */ - t = mbrtowc (&wc, ofd, mb_cur_max, &ps); + t = MBRTOWC (&wc, ofd, mb_cur_max, &ps); if (t > 0 && UNICODE_COMBINING_CHAR (wc) && WCWIDTH (wc) == 0) { old_offset = _rl_find_prev_mbchar (old, ofd - old, MB_FIND_ANY); @@ -2421,9 +2442,24 @@ dumb_update: ((nfd-new) < (prompt_last_invisible-(current_line*_rl_screenwidth+prompt_invis_chars_first_line)))) ADJUST_CPOS (wrap_offset - prompt_invis_chars_first_line); - /* XXX - what happens if wrap_offset == prompt_invis_chars_first_line - and we are drawing the first line (current_line == 0)? We should - adjust by _rl_last_c_pos -= prompt_invis_chars_first_line */ + /* What happens if wrap_offset == prompt_invis_chars_first_line + and we are drawing the first line (current_line == 0), or if we + are drawing the first line and changing the number of invisible + characters in the line? If we're starting to draw before the last + invisible character in the prompt, we need to adjust by + _rl_last_c_pos -= prompt_invis_chars_first_line. This can happen + when we finish reading a digit argument (with the "(arg: N)" + prompt) and are switching back to displaying a line with a prompt + containing invisible characters, since we have to redraw the + entire prompt string. */ + if ((mb_cur_max > 1 && rl_byte_oriented == 0) && + current_line == 0 && wrap_offset && + displaying_prompt_first_line && + wrap_offset == prompt_invis_chars_first_line && + visible_wrap_offset != current_invis_chars && + visible_wrap_offset != prompt_invis_chars_first_line && + ((nfd-new) < prompt_last_invisible)) + ADJUST_CPOS (prompt_invis_chars_first_line); } } else /* Delete characters from line. */ @@ -2573,7 +2609,8 @@ rl_clear_visible_line (void) for (curr_line = _rl_last_v_pos; curr_line >= 0; curr_line--) { _rl_move_vert (curr_line); - _rl_clear_to_eol (0); + _rl_clear_to_eol (_rl_screenwidth); + _rl_cr (); /* in case we use space_to_eol() */ } return 0; @@ -3357,27 +3394,16 @@ _rl_redisplay_after_sigwinch (void) screen line. */ if (_rl_term_cr) { - _rl_move_vert (_rl_vis_botlin); - - _rl_cr (); - _rl_last_c_pos = 0; - -#if !defined (__MSDOS__) - if (_rl_term_clreol) - tputs (_rl_term_clreol, 1, _rl_output_character_function); - else -#endif - { - space_to_eol (_rl_screenwidth); - _rl_cr (); - } - + rl_clear_visible_line (); if (_rl_last_v_pos > 0) _rl_move_vert (0); } else rl_crlf (); + if (_rl_screenwidth < prompt_visible_length) + _rl_reset_prompt (); /* update local_prompt_newlines array */ + /* Redraw only the last line of a multi-line prompt. */ t = strrchr (rl_display_prompt, '\n'); if (t) @@ -3451,7 +3477,7 @@ _rl_refresh_line (void) static int _rl_col_width (const char *str, int start, int end, int flags) { - wchar_t wc; + WCHAR_T wc; mbstate_t ps; int tmp, point, width, max; @@ -3520,10 +3546,10 @@ _rl_col_width (const char *str, int start, int end, int flags) if (_rl_utf8locale && UTF8_SINGLEBYTE(str[point])) { tmp = 1; - wc = (wchar_t) str[point]; + wc = (WCHAR_T) str[point]; } else - tmp = mbrtowc (&wc, str + point, max, &ps); + tmp = MBRTOWC (&wc, str + point, max, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* In this case, the bytes are invalid or too short to compose a diff --git a/lib/readline/doc/Makefile b/lib/readline/doc/Makefile index af5ee3e57..2ad833a95 100644 --- a/lib/readline/doc/Makefile +++ b/lib/readline/doc/Makefile @@ -18,7 +18,6 @@ # along with this program. If not, see . # - topdir = . srcdir = . VPATH = . @@ -49,6 +48,8 @@ TEXI2HTML = $(srcdir)/texi2html QUIETPS = #set this to -q to shut up dvips PSDPI = 300 # I don't have any 600-dpi printers DVIPS = dvips -D ${PSDPI} $(QUIETPS) -o $@ # tricky +DVIPDF = dvipdfm -o $@ -p ${PAPERSIZE} +PSPDF = gs -sPAPERSIZE=${PAPERSIZE} -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=$@ RLSRC = $(srcdir)/rlman.texi $(srcdir)/rluser.texi \ $(srcdir)/rltech.texi $(srcdir)/version.texi \ @@ -66,15 +67,25 @@ DVIOBJ = readline.dvi history.dvi rluserman.dvi INFOOBJ = readline.info history.info rluserman.info PSOBJ = readline.ps history.ps rluserman.ps HTMLOBJ = readline.html history.html rluserman.html +PDFOBJ = readline.pdf history.pdf rluserman.pdf INTERMEDIATE_OBJ = rlman.dvi -CREATED_DOCS = $(DVIOBJ) $(INFOOBJ) $(PSOBJ) $(HTMLOBJ) +CREATED_DOCS = $(DVIOBJ) $(INFOOBJ) $(PSOBJ) $(HTMLOBJ) $(PDFOBJ) + +.SUFFIXES: .ps .txt .dvi .html .pdf -.SUFFIXES: .ps .txt .dvi +.ps.pdf: + $(RM) $@ + -${PSPDF} $< -all: info dvi html ps +.dvi.pdf: + $(RM) $@ + -${DVIPDF} $< + +all: info dvi html ps nodvi: info html +pdf: $(PDFOBJ) readline.dvi: $(RLSRC) TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texi @@ -123,14 +134,17 @@ dvi: $(DVIOBJ) ps: $(PSOBJ) html: $(HTMLOBJ) +readline.pdf: readline.dvi +history.pdf: history.dvi +rluserman.pdf: rluserman.dvi + clean: $(RM) *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \ - *.fns *.kys *.tps *.vrs *.o core + *.fns *.kys *.tps *.vrs *.bt *.bts *.o core *.core distclean: clean $(RM) $(CREATED_DOCS) $(RM) $(INTERMEDIATE_OBJ) - $(RM) Makefile mostlyclean: clean diff --git a/lib/readline/doc/history.texi b/lib/readline/doc/history.texi index 7a3a4767e..721118bce 100644 --- a/lib/readline/doc/history.texi +++ b/lib/readline/doc/history.texi @@ -12,7 +12,7 @@ This document describes the GNU History library a programming tool that provides a consistent user interface for recalling lines of previously typed input. -Copyright @copyright{} 1988--2020 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2022 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/lib/readline/doc/hstech.texi b/lib/readline/doc/hstech.texi index 7ac11953d..da6417b48 100644 --- a/lib/readline/doc/hstech.texi +++ b/lib/readline/doc/hstech.texi @@ -1,7 +1,7 @@ @ignore This file documents the user interface to the GNU History library. -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2022 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. Permission is granted to make and distribute verbatim copies of this manual diff --git a/lib/readline/doc/hsuser.texi b/lib/readline/doc/hsuser.texi index b8fedf331..9081baf8b 100644 --- a/lib/readline/doc/hsuser.texi +++ b/lib/readline/doc/hsuser.texi @@ -1,7 +1,7 @@ @ignore This file documents the user interface to the GNU History library. -Copyright (C) 1988--2020 Free Software Foundation, Inc. +Copyright (C) 1988--2022 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. Permission is granted to make and distribute verbatim copies of this manual @@ -214,8 +214,9 @@ end of the history, and an index of @samp{-1} refers to the current @code{history -d} command. @item -d @var{start}-@var{end} -Delete the history entries between positions @var{start} and @var{end}, -inclusive. Positive and negative values for @var{start} and @var{end} +Delete the range of history entries between positions @var{start} and +@var{end}, inclusive. +Positive and negative values for @var{start} and @var{end} are interpreted as described above. @item -a @@ -245,10 +246,15 @@ the history list as a single entry. @end table -When any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n} options is -used, if @var{filename} -is given, then it is used as the history file. If not, then -the value of the @env{HISTFILE} variable is used. +If a @var{filename} argument is supplied +when any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n} options +is used, Bash uses @var{filename} as the history file. +If not, then the value of the @env{HISTFILE} variable is used. + +The return value is 0 unless an invalid option is encountered, an +error occurs while reading or writing the history file, an invalid +@var{offset} or range is supplied as an argument to @option{-d}, or the +history expansion supplied as an argument to @option{-p} fails. @end table @end ifset @@ -507,7 +513,7 @@ substituted, or, if no previous history substitutions took place, the last @var{string} in a !?@var{string}@code{[?]} search. -If @var{new} is is null, each matching @var{old} is deleted. +If @var{new} is null, each matching @var{old} is deleted. The final delimiter is optional if it is the last character on the input line. diff --git a/lib/readline/doc/rlman.texi b/lib/readline/doc/rlman.texi index ec7487b7a..d046b87d1 100644 --- a/lib/readline/doc/rlman.texi +++ b/lib/readline/doc/rlman.texi @@ -13,7 +13,7 @@ This manual describes the GNU Readline Library consistency of user interface across discrete programs which provide a command line interface. -Copyright @copyright{} 1988--2020 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2022 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/lib/readline/doc/rltech.texi b/lib/readline/doc/rltech.texi index bbf57c239..a93f77dab 100644 --- a/lib/readline/doc/rltech.texi +++ b/lib/readline/doc/rltech.texi @@ -7,7 +7,7 @@ This document describes the GNU Readline Library, a utility for aiding in the consistency of user interface across discrete programs that need to provide a command line interface. -Copyright (C) 1988--2020 Free Software Foundation, Inc. +Copyright (C) 1988--2022 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -323,6 +323,14 @@ and point define a @emph{region}. @deftypevar int rl_done Setting this to a non-zero value causes Readline to return the current line immediately. +Readline will set this variable when it has read a key sequence bound +to @code{accept-line} and is about to return the line to the caller. +@end deftypevar + +@deftypevar int rl_eof_found +Readline will set this variable when it has read an EOF character (e.g., the +stty @samp{EOF} character) on an empty line or encountered a read error and +is about to return a NULL line to the caller. @end deftypevar @deftypevar int rl_num_chars_to_read @@ -385,7 +393,7 @@ value 0x0402. @end deftypevar @deftypevar {int} rl_gnu_readline_p -Always set to 1, denoting that this is @sc{gnu} readline rather than some +Always set to 1, denoting that this is @sc{gnu} Readline rather than some emulation. @end deftypevar @@ -455,6 +463,11 @@ If non-zero, this is the address of a function to call if a read system call is interrupted when Readline is reading terminal input. @end deftypevar +@deftypevar {rl_hook_func_t *} rl_timeout_event_hook +If non-zero, this is the address of a function to call if Readline times +out while reading input. +@end deftypevar + @deftypevar {rl_hook_func_t *} rl_input_available_hook If non-zero, Readline will use this function's return value when it needs to determine whether or not there is available input on the current input @@ -502,7 +515,7 @@ By default, this is set to @code{rl_deprep_terminal} @deftypevar {Keymap} rl_executing_keymap This variable is set to the keymap (@pxref{Keymaps}) in which the -currently executing readline function was found. +currently executing Readline function was found. @end deftypevar @deftypevar {Keymap} rl_binding_keymap @@ -588,6 +601,13 @@ the current call to @code{readline()}. @item RL_STATE_DONE Readline has read a key sequence bound to @code{accept-line} and is about to return the line to the caller. +@item RL_STATE_TIMEOUT +Readline has timed out (it did not receive a line or specified number of +characters before the timeout duration specified by @code{rl_set_timeout} +elapsed) and is returning that status to the caller. +@item RL_STATE_EOF +Readline has read an EOF character (e.g., the stty @samp{EOF} character) +or encountered a read error and is about to return a NULL line to the caller. @end table @end deftypevar @@ -876,6 +896,15 @@ It takes a "translated" key sequence and should be used if the key sequence can include NUL. @end deftypefun +@deftypefun {int} rl_trim_arg_from_keyseq (const char *keyseq, size_t len, Keymap map) +If there is a numeric argument at the beginning of @var{keyseq}, possibly +including digits, return the index of the first character in @var{keyseq} +following the numeric argument. +This can be used to skip over the numeric argument (which is available as +@code{rl_numeric_arg} while traversing the key sequence that invoked the +current command. +@end deftypefun + @deftypefun {char **} rl_invoking_keyseqs (rl_command_func_t *function) Return an array of strings representing the key sequences used to invoke @var{function} in the current keymap. @@ -887,7 +916,7 @@ invoke @var{function} in the keymap @var{map}. @end deftypefun @deftypefun void rl_function_dumper (int readable) -Print the readline function names and the key sequences currently +Print the Readline function names and the key sequences currently bound to them to @code{rl_outstream}. If @var{readable} is non-zero, the list is formatted in such a way that it can be made part of an @code{inputrc} file and re-read. @@ -1063,8 +1092,9 @@ It returns the number of visible characters on the last line of the Applications may indicate that the prompt contains characters that take up no physical screen space when displayed by bracketing a sequence of such characters with the special markers @code{RL_PROMPT_START_IGNORE} -and @code{RL_PROMPT_END_IGNORE} (declared in @file{readline.h}). This may -be used to embed terminal-specific escape sequences in prompts. +and @code{RL_PROMPT_END_IGNORE} (declared in @file{readline.h} as +@samp{\001} and @samp{\002}, respectively). +This may be used to embed terminal-specific escape sequences in prompts. @end deftypefun @deftypefun int rl_set_prompt (const char *prompt) @@ -1151,6 +1181,30 @@ The default waiting period is one-tenth of a second. Returns the old timeout value. @end deftypefun +@deftypefun int rl_set_timeout (unsigned int secs, unsigned int usecs) +Set a timeout for subsequent calls to @code{readline()}. If Readline does +not read a complete line, or the number of characters specified by +@code{rl_num_chars_to_read}, before the duration specified by @var{secs} +(in seconds) and @var{usecs} (microseconds), it returns and sets +@code{RL_STATE_TIMEOUT} in @code{rl_readline_state}. +Passing 0 for @code{secs} and @code{usecs} cancels any previously set +timeout; the convenience macro @code{rl_clear_timeout()} is shorthand +for this. +Returns 0 if the timeout is set successfully. +@end deftypefun + +@deftypefun int rl_timeout_remaining (unsigned int *secs, unsigned int *usecs) +Return the number of seconds and microseconds remaining in the current +timeout duration in @var{*secs} and @var{*usecs}, respectively. +Both @var{*secs} and @var{*usecs} must be non-NULL to return any values. +The return value is -1 on error or when there is no timeout set, +0 when the timeout has expired (leaving @var{*secs} and @var{*usecs} +unchanged), +and 1 if the timeout has not expired. +If either of @var{secs} and @var{usecs} is @code{NULL}, +the return value indicates whether the timeout has expired. +@end deftypefun + @node Terminal Management @subsection Terminal Management @@ -1304,7 +1358,7 @@ that it can be made part of an @code{inputrc} file and re-read. @deftypefun int rl_variable_bind (const char *variable, const char *value) Make the Readline variable @var{variable} have @var{value}. -This behaves as if the readline command +This behaves as if the Readline command @samp{set @var{variable} @var{value}} had been executed in an @code{inputrc} file (@pxref{Readline Init File Syntax}). @end deftypefun @@ -1315,7 +1369,7 @@ For boolean variables, this string is either @samp{on} or @samp{off}. @end deftypefun @deftypefun void rl_variable_dumper (int readable) -Print the readline variable names and their current values +Print the Readline variable names and their current values to @code{rl_outstream}. If @var{readable} is non-zero, the list is formatted in such a way that it can be made part of an @code{inputrc} file and re-read. @@ -1346,7 +1400,7 @@ Readline saves in the history list. Enable an @emph{active} mark. When this is enabled, the text between point and mark (the @var{region}) is displayed in the terminal's standout mode (a @var{face}). -This is called by various readline functions that set the mark and insert +This is called by various Readline functions that set the mark and insert text, and is available for applications to call. @end deftypefun @@ -1355,10 +1409,10 @@ Turn off the active mark. @end deftypefun @deftypefun {void} rl_keep_mark_active (void) -Indicate that the mark should remain active when the current readline function -completes and after redisplay occurs. +Indicate that the mark should remain active when the current Readline +function completes and after redisplay occurs. In most cases, the mark remains active for only the duration of a single -bindable readline function. +bindable Readline function. @end deftypefun @deftypefun {int} rl_mark_active_p (void) @@ -1371,12 +1425,12 @@ Return a non-zero value if the mark is currently active; zero otherwise. An alternate interface is available to plain @code{readline()}. Some applications need to interleave keyboard I/O with file, device, or window system I/O, typically by using a main loop to @code{select()} -on various file descriptors. To accommodate this need, readline can +on various file descriptors. To accommodate this need, Readline can also be invoked as a `callback' function from an event loop. There are functions available to make this easy. @deftypefun void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler) -Set up the terminal for readline I/O and display the initial +Set up the terminal for Readline I/O and display the initial expanded value of @var{prompt}. Save the value of @var{lhandler} to use as a handler function to call when a complete line of input has been entered. @@ -1611,7 +1665,7 @@ main (int c, char **v) Signals are asynchronous events sent to a process by the Unix kernel, sometimes on behalf of another process. They are intended to indicate -exceptional events, like a user pressing the interrupt key on his terminal, +exceptional events, like a user pressing the terminal's interrupt key, or a network connection being broken. There is a class of signals that can be sent to the process currently reading input from the keyboard. Since Readline changes the terminal attributes when it is called, it needs to @@ -1761,7 +1815,7 @@ a @code{SIGWINCH}. @deftypefun void rl_echo_signal_char (int sig) If an application wishes to install its own signal handlers, but still -have readline display characters that generate signals, calling this +have Readline display characters that generate signals, calling this function with @var{sig} set to @code{SIGINT}, @code{SIGQUIT}, or @code{SIGTSTP} will display the character generating that signal. @end deftypefun @@ -2159,9 +2213,10 @@ shell variables and hostnames. @deftypevar int rl_completion_query_items Up to this many items will be displayed in response to a -possible-completions call. After that, readline asks the user if she is sure -she wants to see them all. The default value is 100. A negative value -indicates that Readline should never ask the user. +possible-completions call. After that, Readline asks the user for +confirmation before displaying them. +The default value is 100. A negative value +indicates that Readline should never ask for confirmation. @end deftypevar @deftypevar {int} rl_completion_append_character @@ -2313,6 +2368,7 @@ history list. #include #include #include +#include #if defined (HAVE_STRING_H) # include @@ -2393,6 +2449,8 @@ main (argc, argv) @{ char *line, *s; + setlocale (LC_ALL, ""); + progname = argv[0]; initialize_readline (); /* Bind our completer. */ diff --git a/lib/readline/doc/rluser.texi b/lib/readline/doc/rluser.texi index 26b0ff072..cbcbb45cf 100644 --- a/lib/readline/doc/rluser.texi +++ b/lib/readline/doc/rluser.texi @@ -9,7 +9,7 @@ use these features. There is a document entitled "readline.texinfo" which contains both end-user and programmer documentation for the GNU Readline Library. -Copyright (C) 1988--2020 Free Software Foundation, Inc. +Copyright (C) 1988--2022 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. @@ -179,7 +179,7 @@ empty line. @end table @noindent -(Depending on your configuration, the @key{Backspace} key be set to +(Depending on your configuration, the @key{Backspace} key might be set to delete the character to the left of the cursor and the @key{DEL} key set to delete the character underneath the cursor, like @kbd{C-d}, rather than the character to the left of the cursor.) @@ -246,7 +246,7 @@ words, to the end of the next word. Word boundaries are the same as those used by @kbd{M-f}. @item M-@key{DEL} -Kill from the cursor the start of the current word, or, if between +Kill from the cursor to the start of the current word, or, if between words, to the start of the previous word. Word boundaries are the same as those used by @kbd{M-b}. @@ -339,7 +339,8 @@ Although the Readline library comes with a set of Emacs-like keybindings installed by default, it is possible to use a different set of keybindings. Any user can customize programs that use Readline by putting -commands in an @dfn{inputrc} file, conventionally in his home directory. +commands in an @dfn{inputrc} file, +conventionally in their home directory. The name of this @ifset BashFeatures file is taken from the value of the shell variable @env{INPUTRC}. If @@ -418,6 +419,32 @@ variables. @cindex variables, readline @table @code +@item active-region-start-color +@vindex active-region-start-color +A string variable that controls the text color and background when displaying +the text in the active region (see the description of +@code{enable-active-region} below). +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal before displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that puts the terminal in standout mode, +as obtained from the terminal's terminfo description. +A sample value might be @samp{\e[01;33m}. + +@item active-region-end-color +@vindex active-region-end-color +A string variable that "undoes" the effects of @code{active-region-start-color} +and restores "normal" terminal display appearance after displaying text +in the active region. +This string must not take up any physical character positions on the display, +so it should consist only of terminal escape sequences. +It is output to the terminal after displaying the text in the active region. +This variable is reset to the default value whenever the terminal type changes. +The default value is the string that restores the terminal from standout mode, +as obtained from the terminal's terminfo description. +A sample value might be @samp{\e[0m}. + @item bell-style @vindex bell-style Controls what happens when Readline wants to ring the terminal bell. @@ -444,6 +471,9 @@ If set to @samp{on}, when listing completions, Readline displays the common prefix of the set of possible completions using a different color. The color definitions are taken from the value of the @env{LS_COLORS} environment variable. +If there is a color definition in @env{LS_COLORS} for the custom suffix +@samp{readline-colored-completion-prefix}, Readline uses this color for +the common prefix instead of its default. The default is @samp{off}. @item colored-stats @@ -496,8 +526,9 @@ asked whether the list of possibilities should be displayed. If the number of possible completions is greater than or equal to this value, Readline will ask whether or not the user wishes to view them; otherwise, they are simply listed. -This variable must be set to an integer value greater than or equal to 0. -A negative value means Readline should never ask. +This variable must be set to an integer value greater than or equal to zero. +A zero value means Readline should never ask; negative values are +treated as zero. The default limit is @code{100}. @item convert-meta @@ -505,9 +536,12 @@ The default limit is @code{100}. If set to @samp{on}, Readline will convert characters with the eighth bit set to an @sc{ascii} key sequence by stripping the eighth bit and prefixing an @key{ESC} character, converting them to a -meta-prefixed key sequence. The default value is @samp{on}, but +meta-prefixed key sequence. +The default value is @samp{on}, but will be set to @samp{off} if the locale is one that contains eight-bit characters. +This variable is dependent on the @code{LC_CTYPE} locale category, and +may change if the locale is changed. @item disable-completion @vindex disable-completion @@ -518,7 +552,7 @@ been mapped to @code{self-insert}. The default is @samp{off}. @item echo-control-characters @vindex echo-control-characters When set to @samp{on}, on operating systems that indicate they support it, -readline echoes a character corresponding to a signal generated from the +Readline echoes a character corresponding to a signal generated from the keyboard. The default is @samp{on}. @item editing-mode @@ -540,13 +574,30 @@ non-printing characters, which can be used to embed a terminal control sequence into the mode string. The default is @samp{@@}. +@item enable-active-region +@vindex enable-active-region +The @dfn{point} is the current cursor position, and @dfn{mark} refers +to a saved cursor position (@pxref{Commands For Moving}). +The text between the point and mark is referred to as the @dfn{region}. +When this variable is set to @samp{On}, Readline allows certain commands +to designate the region as @dfn{active}. +When the region is active, Readline highlights the text in the region using +the value of the @code{active-region-start-color}, which defaults to the +string that enables +the terminal's standout mode. +The active region shows the text inserted by bracketed-paste and any +matching text found by incremental and non-incremental history searches. +The default is @samp{On}. + @item enable-bracketed-paste @vindex enable-bracketed-paste -When set to @samp{On}, Readline will configure the terminal in a way -that will enable it to insert each paste into the editing buffer as a -single string of characters, instead of treating each character as if -it had been read from the keyboard. This can prevent pasted characters -from being interpreted as editing commands. The default is @samp{On}. +When set to @samp{On}, Readline configures the terminal to insert each +paste into the editing buffer as a single string of characters, instead +of treating each character as if it had been read from the keyboard. +This is called putting the terminal into @dfn{bracketed paste mode}; +it prevents Readline from executing any editing commands bound to key +sequences appearing in the pasted text. +The default is @samp{On}. @item enable-keypad @vindex enable-keypad @@ -601,6 +652,8 @@ regardless of what the terminal claims it can support. The default value is @samp{off}, but Readline will set it to @samp{on} if the locale contains eight-bit characters. The name @code{meta-flag} is a synonym for this variable. +This variable is dependent on the @code{LC_CTYPE} locale category, and +may change if the locale is changed. @item isearch-terminators @vindex isearch-terminators @@ -683,6 +736,8 @@ eighth bit set directly rather than as a meta-prefixed escape sequence. The default is @samp{off}, but Readline will set it to @samp{on} if the locale contains eight-bit characters. +This variable is dependent on the @code{LC_CTYPE} locale category, and +may change if the locale is changed. @item page-completions @vindex page-completions @@ -700,7 +755,7 @@ The default is @samp{off}. If set to @samp{on}, Readline will undo all changes to history lines before returning when @code{accept-line} is executed. By default, history lines may be modified and retain individual undo lists across -calls to @code{readline}. The default is @samp{off}. +calls to @code{readline()}. The default is @samp{off}. @item show-all-if-ambiguous @vindex show-all-if-ambiguous @@ -732,7 +787,7 @@ The default value is @samp{off}. @vindex skip-completed-text If set to @samp{on}, 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 +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. @@ -792,12 +847,12 @@ interpreted as part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable. -In addition to command names, readline allows keys to be bound +In addition to command names, Readline allows keys to be bound to a string that is inserted when the key is pressed (a @var{macro}). @ifset BashFeatures The @w{@code{bind -p}} command displays Readline function names and -bindings in a format that can put directly into an initialization file. +bindings in a format that can be put directly into an initialization file. @xref{Bash Builtins}. @end ifset @@ -1332,6 +1387,11 @@ for editing. A numeric argument, if supplied, specifies the history entry to use instead of the current line. +@item fetch-history () +With a numeric argument, fetch that entry from the history list +and make it the current line. +Without an argument, move back to the first entry in the history list. + @end ftable @node Commands For Text @@ -1668,7 +1728,7 @@ Re-execute the last keyboard macro defined, by making the characters in the macro appear as if typed at the keyboard. @item print-last-kbd-macro () -Print the last keboard macro defined in a format suitable for the +Print the last keyboard macro defined in a format suitable for the @var{inputrc} file. @end ftable @@ -1721,11 +1781,11 @@ the saved position, and the old cursor position is saved as the mark. @item character-search (C-]) A character is read and point is moved to the next occurrence of that -character. A negative count searches for previous occurrences. +character. A negative argument searches for previous occurrences. @item character-search-backward (M-C-]) A character is read and point is moved to the previous occurrence -of that character. A negative count searches for subsequent +of that character. A negative argument searches for subsequent occurrences. @item skip-csi-sequence () @@ -1733,7 +1793,7 @@ 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 "\e[", keys producing such sequences will have no effect -unless explicitly bound to a readline command, instead of inserting +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-[. @@ -1772,6 +1832,11 @@ the output is formatted in such a way that it can be made part of an @var{inputrc} file. This command is unbound by default. @ifset BashFeatures +@item spell-correct-word (C-x s) +Perform spelling correction on the current word, treating it as a directory +or filename, in the same way as the @code{cdspell} shell option. +Word boundaries are the same as those used by @code{shell-forward-word}. + @item glob-complete-word (M-g) The word before point is treated as a pattern for pathname expansion, with an asterisk implicitly appended. This pattern is used to @@ -2224,6 +2289,7 @@ Names of all shell variables. May also be specified as @option{-v}. @item -C @var{command} @var{command} is executed in a subshell environment, and its output is used as the possible completions. +Arguments are passed as with the @option{-F} option. @item -F @var{function} The shell function @var{function} is executed in the current shell @@ -2401,7 +2467,7 @@ via @var{CDPATH}: Readline can't tell those completions are directories). The @option{-o nospace} option tells Readline to not append a space character to the directory name, in case we want to append to it. The @option{-o bashdefault} option brings in the rest of the "Bash default" -completions -- possible completion that Bash adds to the default Readline +completions -- possible completions that Bash adds to the default Readline set. These include things like command name completion, variable completion for words beginning with @samp{$} or @samp{$@{}, completions containing pathname expansion patterns (@pxref{Filename Expansion}), and so on. diff --git a/lib/readline/doc/rluserman.texi b/lib/readline/doc/rluserman.texi index 6e8e848b6..ae9ec6eb4 100644 --- a/lib/readline/doc/rluserman.texi +++ b/lib/readline/doc/rluserman.texi @@ -12,7 +12,7 @@ This manual describes the end user interface of the GNU Readline Library consistency of user interface across discrete programs which provide a command line interface. -Copyright @copyright{} 1988--2020 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2022 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/lib/readline/doc/version.texi b/lib/readline/doc/version.texi index abb9cb6ba..d31027340 100644 --- a/lib/readline/doc/version.texi +++ b/lib/readline/doc/version.texi @@ -1,10 +1,11 @@ @ignore -Copyright (C) 1988-2020 Free Software Foundation, Inc. +Copyright (C) 1988-2022 Free Software Foundation, Inc. @end ignore -@set EDITION 8.1 -@set VERSION 8.1 -@set UPDATED 29 October 2020 -@set UPDATED-MONTH October 2020 +@set EDITION 8.2 +@set VERSION 8.2 -@set LASTCHANGE Thu Oct 29 16:49:01 EDT 2020 +@set UPDATED 19 September 2022 +@set UPDATED-MONTH September 2022 + +@set LASTCHANGE Mon Sep 19 11:15:16 EDT 2022 diff --git a/lib/readline/examples/excallback.c b/lib/readline/examples/excallback.c index 4206acfca..923c9238b 100644 --- a/lib/readline/examples/excallback.c +++ b/lib/readline/examples/excallback.c @@ -50,6 +50,8 @@ Copyright (C) 1999 Jeff Solomon #include #include /* xxx - should make this more general */ +#include + #ifdef READLINE_LIBRARY # include "readline.h" #else @@ -104,6 +106,8 @@ main() { fd_set fds; + setlocale (LC_ALL, ""); + /* Adjust the terminal slightly before the handler is installed. Disable * canonical mode processing and set the input character time flag to be * non-blocking. diff --git a/lib/readline/examples/histexamp.c b/lib/readline/examples/histexamp.c index 3b43674f7..309d769b3 100644 --- a/lib/readline/examples/histexamp.c +++ b/lib/readline/examples/histexamp.c @@ -27,8 +27,11 @@ # include #endif +#include +#include #include +int main (argc, argv) int argc; char **argv; diff --git a/lib/readline/examples/rl-callbacktest.c b/lib/readline/examples/rl-callbacktest.c index 0f00e57c5..7febacd14 100644 --- a/lib/readline/examples/rl-callbacktest.c +++ b/lib/readline/examples/rl-callbacktest.c @@ -7,9 +7,13 @@ #include #include +#include + #include #include +#include + /* Standard readline include files. */ #if defined (READLINE_LIBRARY) # include "readline.h" @@ -22,10 +26,19 @@ extern int errno; static void cb_linehandler (char *); +static void signandler (int); -int running; +int running, sigwinch_received; const char *prompt = "rltest$ "; +/* Handle SIGWINCH and window size changes when readline is not active and + reading a character. */ +static void +sighandler (int sig) +{ + sigwinch_received = 1; +} + /* Callback function called for each line when accept-line executed, EOF seen, or EOF character read. This sets a flag and returns; it could also call exit(3). */ @@ -60,6 +73,11 @@ main (int c, char **v) fd_set fds; int r; + setlocale (LC_ALL, ""); + + /* Handle SIGWINCH */ + signal (SIGWINCH, sighandler); + /* Install the line handler. */ rl_callback_handler_install (prompt, cb_linehandler); @@ -80,6 +98,13 @@ main (int c, char **v) rl_callback_handler_remove (); break; } + if (sigwinch_received) + { + rl_resize_terminal (); + sigwinch_received = 0; + } + if (r < 0) + continue; if (FD_ISSET (fileno (rl_instream), &fds)) rl_callback_read_char (); diff --git a/lib/readline/examples/rl.c b/lib/readline/examples/rl.c index a5cf276cb..39e5b8ebb 100644 --- a/lib/readline/examples/rl.c +++ b/lib/readline/examples/rl.c @@ -38,6 +38,10 @@ extern void exit(); #endif +#ifdef HAVE_LOCALE_H +# include +#endif + #if defined (READLINE_LIBRARY) # include "posixstat.h" # include "readline.h" @@ -93,6 +97,10 @@ main (argc, argv) else progname++; +#ifdef HAVE_SETLOCALE + setlocale (LC_ALL, ""); +#endif + /* defaults */ prompt = "readline$ "; fd = nch = 0; diff --git a/lib/readline/examples/rlcat.c b/lib/readline/examples/rlcat.c index b4942413f..aabe0ca3e 100644 --- a/lib/readline/examples/rlcat.c +++ b/lib/readline/examples/rlcat.c @@ -45,6 +45,10 @@ extern void exit(); #endif +#ifdef HAVE_LOCALE_H +# include +#endif + #ifndef errno extern int errno; #endif @@ -79,6 +83,10 @@ main (argc, argv) char *temp; int opt, Vflag, Nflag; +#ifdef HAVE_SETLOCALE + setlocale (LC_ALL, ""): +#endif + progname = strrchr(argv[0], '/'); if (progname == 0) progname = argv[0]; diff --git a/lib/readline/examples/rltest.c b/lib/readline/examples/rltest.c index 65abe87cc..8b7c00c8c 100644 --- a/lib/readline/examples/rltest.c +++ b/lib/readline/examples/rltest.c @@ -36,6 +36,10 @@ extern void exit(); #endif +#ifdef HAVE_LOCALE_H +# include +#endif + #ifdef READLINE_LIBRARY # include "readline.h" # include "history.h" @@ -52,6 +56,10 @@ main () char *temp, *prompt; int done; +#ifdef HAVE_SETLOCALE + setlocale (LC_ALL, ""); +#endif + temp = (char *)NULL; prompt = "readline$ "; done = 0; diff --git a/lib/readline/funmap.c b/lib/readline/funmap.c index eca49a3e4..8b1cb4028 100644 --- a/lib/readline/funmap.c +++ b/lib/readline/funmap.c @@ -1,6 +1,6 @@ /* funmap.c -- attach names to functions. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -46,7 +46,7 @@ typedef int QSFUNC (const void *, const void *); typedef int QSFUNC (); #endif -extern int _rl_qsort_string_compare PARAMS((char **, char **)); +extern int _rl_qsort_string_compare (char **, char **); FUNMAP **funmap; static int funmap_size; @@ -93,6 +93,7 @@ static const FUNMAP default_funmap[] = { { "end-of-history", rl_end_of_history }, { "end-of-line", rl_end_of_line }, { "exchange-point-and-mark", rl_exchange_point_and_mark }, + { "fetch-history", rl_fetch_history }, { "forward-backward-delete-char", rl_rubout_or_delete }, { "forward-byte", rl_forward_byte }, { "forward-char", rl_forward_char }, @@ -198,6 +199,7 @@ static const FUNMAP default_funmap[] = { { "vi-set-mark", rl_vi_set_mark }, { "vi-subst", rl_vi_subst }, { "vi-tilde-expand", rl_vi_tilde_expand }, + { "vi-undo", rl_vi_undo }, { "vi-unix-word-rubout", rl_vi_unix_word_rubout }, { "vi-yank-arg", rl_vi_yank_arg }, { "vi-yank-pop", rl_vi_yank_pop }, diff --git a/lib/readline/histexpand.c b/lib/readline/histexpand.c index b986dba05..8ab68091e 100644 --- a/lib/readline/histexpand.c +++ b/lib/readline/histexpand.c @@ -1,6 +1,6 @@ /* histexpand.c -- history expansion. */ -/* Copyright (C) 1989-2018 Free Software Foundation, Inc. +/* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -57,7 +57,7 @@ #define fielddelim(c) (whitespace(c) || (c) == '\n') -typedef int _hist_search_func_t PARAMS((const char *, int)); +typedef int _hist_search_func_t (const char *, int); static char error_pointer; @@ -70,14 +70,14 @@ static int subst_rhs_len; specifications from word designators. Static for now */ static char *history_event_delimiter_chars = HISTORY_EVENT_DELIMITERS; -static char *get_history_word_specifier PARAMS((char *, char *, int *)); -static int history_tokenize_word PARAMS((const char *, int)); -static char **history_tokenize_internal PARAMS((const char *, int, int *)); -static char *history_substring PARAMS((const char *, int, int)); -static void freewords PARAMS((char **, int)); -static char *history_find_word PARAMS((char *, int)); +static char *get_history_word_specifier (char *, char *, int *); +static int history_tokenize_word (const char *, int); +static char **history_tokenize_internal (const char *, int, int *); +static char *history_substring (const char *, int, int); +static void freewords (char **, int); +static char *history_find_word (char *, int); -static char *quote_breaks PARAMS((char *)); +static char *quote_breaks (char *); /* Variables exported by this file. */ /* The character that represents the start of a history expansion @@ -1207,13 +1207,36 @@ history_expand (char *hstring, char **output) characters in history_no_expand_chars, then it is not a candidate for expansion of any kind. */ if (cc == 0 || member (cc, history_no_expand_chars) || - (dquote && cc == '"') || - (history_inhibit_expansion_function && (*history_inhibit_expansion_function) (string, i))) + (dquote && cc == '"')) { ADD_CHAR (string[i]); break; } + /* If the application has defined a function to determine whether + or not a history expansion should be performed, call it here. */ + /* We check against what we've expanded so far, with the current + expansion appended, because that seems to be what csh does. We + decide to expand based on what we have to this point, not what + we started with. */ + if (history_inhibit_expansion_function) + { + int save_j, temp; + + save_j = j; + ADD_CHAR (string[i]); + ADD_CHAR (cc); + + temp = (*history_inhibit_expansion_function) (result, save_j); + if (temp) + { + result[--j] = '\0'; /* `unadd' cc, leaving ADD_CHAR(string[i]) */ + break; + } + else + result[j = save_j] = '\0'; + } + #if defined (NO_BANG_HASH_MODIFIERS) /* There is something that is listed as a `word specifier' in csh documentation which means `the expanded text to this point'. diff --git a/lib/readline/histfile.c b/lib/readline/histfile.c index f0fa5ce15..3bfec5500 100644 --- a/lib/readline/histfile.c +++ b/lib/readline/histfile.c @@ -114,8 +114,6 @@ extern int errno; # define PATH_MAX 1024 /* default */ #endif -extern void _hs_append_history_line PARAMS((int, const char *)); - /* history file version; currently unused */ int history_file_version = 1; @@ -141,11 +139,11 @@ int history_lines_written_to_file = 0; for more extensive tests. */ #define HIST_TIMESTAMP_START(s) (*(s) == history_comment_char && isdigit ((unsigned char)(s)[1]) ) -static char *history_backupfile PARAMS((const char *)); -static char *history_tempfile PARAMS((const char *)); -static int histfile_backup PARAMS((const char *, const char *)); -static int histfile_restore PARAMS((const char *, const char *)); -static int history_rename PARAMS((const char *, const char *)); +static char *history_backupfile (const char *); +static char *history_tempfile (const char *); +static int histfile_backup (const char *, const char *); +static int histfile_restore (const char *, const char *); +static int history_rename (const char *, const char *); /* Return the string that should be used in the place of this filename. This only matters when you don't specify the @@ -312,7 +310,7 @@ read_history_range (const char *filename, int from, int to) if (file_size == 0) { - free (input); + xfree (input); close (file); return 0; /* don't waste time if we don't have to */ } diff --git a/lib/readline/histlib.h b/lib/readline/histlib.h index 9627b2450..29fc4d2e5 100644 --- a/lib/readline/histlib.h +++ b/lib/readline/histlib.h @@ -1,6 +1,6 @@ /* histlib.h -- internal definitions for the history library. */ -/* Copyright (C) 1989-2009 Free Software Foundation, Inc. +/* Copyright (C) 1989-2009,2021-2022 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -80,6 +80,13 @@ extern char *strchr (); /* internal extern function declarations used by other parts of the library */ /* histsearch.c */ -extern int _hs_history_patsearch PARAMS((const char *, int, int)); +extern int _hs_history_patsearch (const char *, int, int); + +/* history.c */ +extern void _hs_replace_history_data (int, histdata_t *, histdata_t *); +extern int _hs_at_end_of_history (void); + +/* histfile.c */ +extern void _hs_append_history_line (int, const char *); #endif /* !_HISTLIB_H_ */ diff --git a/lib/readline/history.c b/lib/readline/history.c index 67158b14b..81d4c1687 100644 --- a/lib/readline/history.c +++ b/lib/readline/history.c @@ -1,6 +1,6 @@ /* history.c -- standalone history library */ -/* Copyright (C) 1989-2017 Free Software Foundation, Inc. +/* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -62,7 +62,7 @@ extern int errno; /* The number of slots to increase the_history by. */ #define DEFAULT_HISTORY_GROW_SIZE 50 -static char *hist_inittime PARAMS((void)); +static char *hist_inittime (void); /* **************************************************************** */ /* */ @@ -165,6 +165,13 @@ history_set_pos (int pos) history_offset = pos; return (1); } + +/* Are we currently at the end of the history list? */ +int +_hs_at_end_of_history (void) +{ + return (the_history == 0 || history_offset == history_length); +} /* Return the current history array. The caller has to be careful, since this is the actual array of data, and could be bashed or made corrupt easily. @@ -390,7 +397,7 @@ replace_history_entry (int which, const char *line, histdata_t data) temp->line = savestring (line); temp->data = data; - temp->timestamp = savestring (old_value->timestamp); + temp->timestamp = old_value->timestamp ? savestring (old_value->timestamp) : 0; the_history[which] = temp; return (old_value); diff --git a/lib/readline/history.h b/lib/readline/history.h index cc3de29a6..5208f9a46 100644 --- a/lib/readline/history.h +++ b/lib/readline/history.h @@ -1,6 +1,6 @@ /* history.h -- the names of functions that you can call in history. */ -/* Copyright (C) 1989-2015 Free Software Foundation, Inc. +/* Copyright (C) 1989-2022 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -42,6 +42,11 @@ typedef void *histdata_t; typedef char *histdata_t; #endif +/* Let's not step on anyone else's define for now, since we don't use this yet. */ +#ifndef HS_HISTORY_VERSION +# define HS_HISTORY_VERSION 0x0802 /* History 8.2 */ +#endif + /* The structure used to store a history entry. */ typedef struct _hist_entry { char *line; @@ -68,102 +73,102 @@ typedef struct _hist_state { /* Begin a session in which the history functions might be used. This just initializes the interactive variables. */ -extern void using_history PARAMS((void)); +extern void using_history (void); /* Return the current HISTORY_STATE of the history. */ -extern HISTORY_STATE *history_get_history_state PARAMS((void)); +extern HISTORY_STATE *history_get_history_state (void); /* Set the state of the current history array to STATE. */ -extern void history_set_history_state PARAMS((HISTORY_STATE *)); +extern void history_set_history_state (HISTORY_STATE *); /* Manage the history list. */ /* Place STRING at the end of the history list. The associated data field (if any) is set to NULL. */ -extern void add_history PARAMS((const char *)); +extern void add_history (const char *); /* Change the timestamp associated with the most recent history entry to STRING. */ -extern void add_history_time PARAMS((const char *)); +extern void add_history_time (const char *); /* Remove an entry from the history list. WHICH is the magic number that tells us which element to delete. The elements are numbered from 0. */ -extern HIST_ENTRY *remove_history PARAMS((int)); +extern HIST_ENTRY *remove_history (int); /* Remove a set of entries from the history list: FIRST to LAST, inclusive */ -extern HIST_ENTRY **remove_history_range PARAMS((int, int)); +extern HIST_ENTRY **remove_history_range (int, int); /* Allocate a history entry consisting of STRING and TIMESTAMP and return a pointer to it. */ -extern HIST_ENTRY *alloc_history_entry PARAMS((char *, char *)); +extern HIST_ENTRY *alloc_history_entry (char *, char *); /* Copy the history entry H, but not the (opaque) data pointer */ -extern HIST_ENTRY *copy_history_entry PARAMS((HIST_ENTRY *)); +extern HIST_ENTRY *copy_history_entry (HIST_ENTRY *); /* Free the history entry H and return any application-specific data associated with it. */ -extern histdata_t free_history_entry PARAMS((HIST_ENTRY *)); +extern histdata_t free_history_entry (HIST_ENTRY *); /* Make the history entry at WHICH have LINE and DATA. This returns the old entry so you can dispose of the data. In the case of an invalid WHICH, a NULL pointer is returned. */ -extern HIST_ENTRY *replace_history_entry PARAMS((int, const char *, histdata_t)); +extern HIST_ENTRY *replace_history_entry (int, const char *, histdata_t); /* Clear the history list and start over. */ -extern void clear_history PARAMS((void)); +extern void clear_history (void); /* Stifle the history list, remembering only MAX number of entries. */ -extern void stifle_history PARAMS((int)); +extern void stifle_history (int); /* Stop stifling the history. This returns the previous amount the history was stifled by. The value is positive if the history was stifled, negative if it wasn't. */ -extern int unstifle_history PARAMS((void)); +extern int unstifle_history (void); /* Return 1 if the history is stifled, 0 if it is not. */ -extern int history_is_stifled PARAMS((void)); +extern int history_is_stifled (void); /* Information about the history list. */ /* Return a NULL terminated array of HIST_ENTRY which is the current input history. Element 0 of this list is the beginning of time. If there is no history, return NULL. */ -extern HIST_ENTRY **history_list PARAMS((void)); +extern HIST_ENTRY **history_list (void); /* Returns the number which says what history element we are now looking at. */ -extern int where_history PARAMS((void)); +extern int where_history (void); /* Return the history entry at the current position, as determined by history_offset. If there is no entry there, return a NULL pointer. */ -extern HIST_ENTRY *current_history PARAMS((void)); +extern HIST_ENTRY *current_history (void); /* Return the history entry which is logically at OFFSET in the history array. OFFSET is relative to history_base. */ -extern HIST_ENTRY *history_get PARAMS((int)); +extern HIST_ENTRY *history_get (int); /* Return the timestamp associated with the HIST_ENTRY * passed as an argument */ -extern time_t history_get_time PARAMS((HIST_ENTRY *)); +extern time_t history_get_time (HIST_ENTRY *); /* Return the number of bytes that the primary history entries are using. This just adds up the lengths of the_history->lines. */ -extern int history_total_bytes PARAMS((void)); +extern int history_total_bytes (void); /* Moving around the history list. */ /* Set the position in the history list to POS. */ -extern int history_set_pos PARAMS((int)); +extern int history_set_pos (int); /* Back up history_offset to the previous history entry, and return a pointer to that entry. If there is no previous entry, return a NULL pointer. */ -extern HIST_ENTRY *previous_history PARAMS((void)); +extern HIST_ENTRY *previous_history (void); /* Move history_offset forward to the next item in the input_history, and return the a pointer to that entry. If there is no next entry, return a NULL pointer. */ -extern HIST_ENTRY *next_history PARAMS((void)); +extern HIST_ENTRY *next_history (void); /* Searching the history list. */ @@ -173,45 +178,45 @@ extern HIST_ENTRY *next_history PARAMS((void)); current_history () is the history entry, and the value of this function is the offset in the line of that history entry that the string was found in. Otherwise, nothing is changed, and a -1 is returned. */ -extern int history_search PARAMS((const char *, int)); +extern int history_search (const char *, int); /* Search the history for STRING, starting at history_offset. The search is anchored: matching lines must begin with string. DIRECTION is as in history_search(). */ -extern int history_search_prefix PARAMS((const char *, int)); +extern int history_search_prefix (const char *, int); /* Search for STRING in the history list, starting at POS, an absolute index into the list. DIR, if negative, says to search backwards from POS, else forwards. Returns the absolute index of the history element where STRING was found, or -1 otherwise. */ -extern int history_search_pos PARAMS((const char *, int, int)); +extern int history_search_pos (const char *, int, int); /* Managing the history file. */ /* Add the contents of FILENAME to the history list, a line at a time. If FILENAME is NULL, then read from ~/.history. Returns 0 if successful, or errno if not. */ -extern int read_history PARAMS((const char *)); +extern int read_history (const char *); /* Read a range of lines from FILENAME, adding them to the history list. Start reading at the FROM'th line and end at the TO'th. If FROM is zero, start at the beginning. If TO is less than FROM, read until the end of the file. If FILENAME is NULL, then read from ~/.history. Returns 0 if successful, or errno if not. */ -extern int read_history_range PARAMS((const char *, int, int)); +extern int read_history_range (const char *, int, int); /* Write the current history to FILENAME. If FILENAME is NULL, then write the history list to ~/.history. Values returned are as in read_history (). */ -extern int write_history PARAMS((const char *)); +extern int write_history (const char *); /* Append NELEMENT entries to FILENAME. The entries appended are from the end of the list minus NELEMENTs up to the end of the list. */ -extern int append_history PARAMS((int, const char *)); +extern int append_history (int, const char *); /* Truncate the history file, leaving only the last NLINES lines. */ -extern int history_truncate_file PARAMS((const char *, int)); +extern int history_truncate_file (const char *, int); /* History expansion. */ @@ -227,12 +232,12 @@ extern int history_truncate_file PARAMS((const char *, int)); If an error occurred in expansion, then OUTPUT contains a descriptive error message. */ -extern int history_expand PARAMS((char *, char **)); +extern int history_expand (char *, char **); /* Extract a string segment consisting of the FIRST through LAST arguments present in STRING. Arguments are broken up as in the shell. */ -extern char *history_arg_extract PARAMS((int, int, const char *)); +extern char *history_arg_extract (int, int, const char *); /* Return the text of the history event beginning at the current offset into STRING. Pass STRING with *INDEX equal to the @@ -240,11 +245,11 @@ extern char *history_arg_extract PARAMS((int, int, const char *)); DELIMITING_QUOTE is a character that is allowed to end the string specification for what to search for in addition to the normal characters `:', ` ', `\t', `\n', and sometimes `?'. */ -extern char *get_history_event PARAMS((const char *, int *, int)); +extern char *get_history_event (const char *, int *, int); /* Return an array of tokens, much as the shell might. The tokens are parsed out of STRING. */ -extern char **history_tokenize PARAMS((const char *)); +extern char **history_tokenize (const char *); /* Exported history variables. */ extern int history_base; diff --git a/lib/readline/histsearch.c b/lib/readline/histsearch.c index 7a426c967..b62c06b7b 100644 --- a/lib/readline/histsearch.c +++ b/lib/readline/histsearch.c @@ -1,6 +1,6 @@ /* histsearch.c -- searching the history list. */ -/* Copyright (C) 1989, 1992-2009,2017 Free Software Foundation, Inc. +/* Copyright (C) 1989, 1992-2009,2017,2021 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -51,7 +51,7 @@ string. */ char *history_search_delimiter_chars = (char *)NULL; -static int history_search_internal PARAMS((const char *, int, int)); +static int history_search_internal (const char *, int, int); /* Search the history for STRING, starting at history_offset. If DIRECTION < 0, then the search is through previous entries, else @@ -248,7 +248,7 @@ _hs_history_patsearch (const char *string, int direction, int flags) ret = history_search_internal (pat, direction, flags|PATTERN_SEARCH); if (pat != string) - free (pat); + xfree (pat); return ret; } diff --git a/lib/readline/input.c b/lib/readline/input.c index 61b0fde3c..6f038d450 100644 --- a/lib/readline/input.c +++ b/lib/readline/input.c @@ -1,6 +1,6 @@ /* input.c -- character input functions for readline. */ -/* Copyright (C) 1994-2017 Free Software Foundation, Inc. +/* Copyright (C) 1994-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -50,6 +50,7 @@ #include #include "posixselect.h" +#include "posixtime.h" #if defined (FIONREAD_IN_SYS_IOCTL) # include @@ -78,7 +79,7 @@ extern int errno; # define O_NDELAY O_NONBLOCK /* Posix style */ #endif -#if defined (HAVE_PSELECT) +#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) extern sigset_t _rl_orig_sigset; #endif @@ -89,6 +90,9 @@ rl_hook_func_t *rl_event_hook = (rl_hook_func_t *)NULL; /* A function to call if a read(2) is interrupted by a signal. */ rl_hook_func_t *rl_signal_event_hook = (rl_hook_func_t *)NULL; +/* A function to call when readline times out after a time is specified. */ +rl_hook_func_t *rl_timeout_event_hook = (rl_hook_func_t *)NULL; + /* A function to replace _rl_input_available for applications using the callback interface. */ rl_hook_func_t *rl_input_available_hook = (rl_hook_func_t *)NULL; @@ -97,9 +101,9 @@ rl_getc_func_t *rl_getc_function = rl_getc; static int _keyboard_input_timeout = 100000; /* 0.1 seconds; it's in usec */ -static int ibuffer_space PARAMS((void)); -static int rl_get_char PARAMS((int *)); -static int rl_gather_tyi PARAMS((void)); +static int ibuffer_space (void); +static int rl_get_char (int *); +static int rl_gather_tyi (void); /* Windows isatty returns true for every character device, including the null device, so we need to perform additional checks. */ @@ -132,6 +136,36 @@ win32_isatty (int fd) #define isatty(x) win32_isatty(x) #endif +/* Readline timeouts */ + +/* I don't know how to set a timeout for _getch() in MinGW32, so we use + SIGALRM. */ +#if (defined (HAVE_PSELECT) || defined (HAVE_SELECT)) && !defined (__MINGW32__) +# define RL_TIMEOUT_USE_SELECT +#else +# define RL_TIMEOUT_USE_SIGALRM +#endif + +int rl_set_timeout (unsigned int, unsigned int); +int rl_timeout_remaining (unsigned int *, unsigned int *); + +int _rl_timeout_init (void); +int _rl_timeout_sigalrm_handler (void); +int _rl_timeout_select (int, fd_set *, fd_set *, fd_set *, const struct timeval *, const sigset_t *); + +static void _rl_timeout_handle (void); +#if defined (RL_TIMEOUT_USE_SIGALRM) +static int set_alarm (unsigned int *, unsigned int *); +static void reset_alarm (void); +#endif + +/* We implement timeouts as a future time using a supplied interval + (timeout_duration) from when the timeout is set (timeout_point). + That allows us to easily determine whether the timeout has occurred + and compute the time remaining until it does. */ +static struct timeval timeout_point; +static struct timeval timeout_duration; + /* **************************************************************** */ /* */ /* Character Input Buffering */ @@ -223,13 +257,17 @@ rl_gather_tyi (void) input = 0; tty = fileno (rl_instream); -#if defined (HAVE_SELECT) +#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) FD_ZERO (&readfds); FD_ZERO (&exceptfds); FD_SET (tty, &readfds); FD_SET (tty, &exceptfds); USEC_TO_TIMEVAL (_keyboard_input_timeout, timeout); +#if defined (RL_TIMEOUT_USE_SELECT) + result = _rl_timeout_select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout, NULL); +#else result = select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout); +#endif if (result <= 0) return 0; /* Nothing to read. */ #endif @@ -330,11 +368,11 @@ rl_set_keyboard_input_timeout (int u) int _rl_input_available (void) { -#if defined(HAVE_SELECT) +#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) fd_set readfds, exceptfds; struct timeval timeout; #endif -#if !defined (HAVE_SELECT) && defined(FIONREAD) +#if !defined (HAVE_SELECT) && defined (FIONREAD) int chars_avail; #endif int tty; @@ -344,13 +382,17 @@ _rl_input_available (void) tty = fileno (rl_instream); -#if defined (HAVE_SELECT) +#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) FD_ZERO (&readfds); FD_ZERO (&exceptfds); FD_SET (tty, &readfds); FD_SET (tty, &exceptfds); USEC_TO_TIMEVAL (_keyboard_input_timeout, timeout); +# if defined (RL_TIMEOUT_USE_SELECT) + return (_rl_timeout_select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout, NULL) > 0); +# else return (select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout) > 0); +# endif #else #if defined (FIONREAD) @@ -463,6 +505,242 @@ rl_clear_pending_input (void) return 0; } +/* **************************************************************** */ +/* */ +/* Timeout utility */ +/* */ +/* **************************************************************** */ + +#if defined (RL_TIMEOUT_USE_SIGALRM) +# if defined (HAVE_SETITIMER) + +static int +set_alarm (unsigned int *secs, unsigned int *usecs) +{ + struct itimerval it; + + timerclear (&it.it_interval); + timerset (&it.it_value, *secs, *usecs); + return setitimer (ITIMER_REAL, &it, NULL); +} + +static void +reset_alarm () +{ + struct itimerval it; + + timerclear (&it.it_interval); + timerclear (&it.it_value); + setitimer (ITIMER_REAL, &it, NULL); +} +# else +static int +set_alarm (unsigned int *secs, unsigned int *usecs) +{ + if (*secs == 0 || *usecs >= USEC_PER_SEC / 2) + (*secs)++; + *usecs = 0; + + return alarm (*secs); +} +static void +reset_alarm () +{ + alarm (0); +} +# endif +#endif + +/* Set a timeout which will be used for the next call of `readline + ()'. When (0, 0) are specified the timeout is cleared. */ +int +rl_set_timeout (unsigned int secs, unsigned int usecs) +{ + timeout_duration.tv_sec = secs + usecs / USEC_PER_SEC; + timeout_duration.tv_usec = usecs % USEC_PER_SEC; + + return 0; +} + +/* Start measuring the time. Returns 0 on success. Returns -1 on + error. */ +int +_rl_timeout_init (void) +{ + unsigned int secs, usecs; + + /* Clear the timeout state of the previous edit */ + RL_UNSETSTATE(RL_STATE_TIMEOUT); + timerclear (&timeout_point); + + /* Return 0 when timeout is unset. */ + if (timerisunset (&timeout_duration)) + return 0; + + /* Return -1 on gettimeofday error. */ + if (gettimeofday(&timeout_point, 0) != 0) + { + timerclear (&timeout_point); + return -1; + } + + secs = timeout_duration.tv_sec; + usecs = timeout_duration.tv_usec; + +#if defined (RL_TIMEOUT_USE_SIGALRM) + /* If select(2)/pselect(2) is unavailable, use SIGALRM. */ + if (set_alarm (&secs, &usecs) < 0) + return -1; +#endif + + timeout_point.tv_sec += secs; + timeout_point.tv_usec += usecs; + if (timeout_point.tv_usec >= USEC_PER_SEC) + { + timeout_point.tv_sec++; + timeout_point.tv_usec -= USEC_PER_SEC; + } + + return 0; +} + +/* Get the remaining time until the scheduled timeout. Returns -1 on + error or no timeout set with secs and usecs unchanged. Returns 0 + on an expired timeout with secs and usecs unchanged. Returns 1 + when the timeout has not yet expired. The remaining time is stored + in secs and usecs. When NULL is specified to either of the + arguments, just the expiration is tested. */ +int +rl_timeout_remaining (unsigned int *secs, unsigned int *usecs) +{ + struct timeval current_time; + + /* Return -1 when timeout is unset. */ + if (timerisunset (&timeout_point)) + { + errno = 0; + return -1; + } + + /* Return -1 on error. errno is set by gettimeofday. */ + if (gettimeofday(¤t_time, 0) != 0) + return -1; + + /* Return 0 when timeout has already expired. */ + /* could use timercmp (&timeout_point, ¤t_time, <) here */ + if (current_time.tv_sec > timeout_point.tv_sec || + (current_time.tv_sec == timeout_point.tv_sec && + current_time.tv_usec >= timeout_point.tv_usec)) + return 0; + + if (secs && usecs) + { + *secs = timeout_point.tv_sec - current_time.tv_sec; + *usecs = timeout_point.tv_usec - current_time.tv_usec; + if (timeout_point.tv_usec < current_time.tv_usec) + { + (*secs)--; + *usecs += USEC_PER_SEC; + } + } + + return 1; +} + +/* This should only be called if RL_TIMEOUT_USE_SELECT is defined. */ + +#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) +int +_rl_timeout_select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout, const sigset_t *sigmask) +{ + int result; +#if defined (HAVE_PSELECT) + struct timespec ts; +#else + sigset_t origmask; + struct timeval tv; +#endif + int tmout_status; + struct timeval tmout; + unsigned int sec, usec; + + /* When the remaining time for rl_timeout is shorter than the + keyboard input timeout, replace `timeout' with the remaining time + for `rl_timeout' and set `tmout_status = 1'. */ + tmout_status = rl_timeout_remaining (&sec, &usec); + tmout.tv_sec = sec; + tmout.tv_usec = usec; + + if (tmout_status == 0) + _rl_timeout_handle (); + else if (tmout_status == 1) + { + if (timeout == NULL || timercmp (&tmout, timeout, <)) + timeout = &tmout; + else + tmout_status = -1; + } + +#if defined (HAVE_PSELECT) + if (timeout) + { + TIMEVAL_TO_TIMESPEC (timeout, &ts); + result = pselect (nfds, readfds, writefds, exceptfds, &ts, sigmask); + } + else + result = pselect (nfds, readfds, writefds, exceptfds, NULL, sigmask); +#else + if (sigmask) + sigprocmask (SIG_SETMASK, sigmask, &origmask); + + if (timeout) + { + tv.tv_sec = timeout->tv_sec; + tv.tv_usec = timeout->tv_usec; + result = select (nfds, readfds, writefds, exceptfds, &tv); + } + else + result = select (nfds, readfds, writefds, exceptfds, NULL); + + if (sigmask) + sigprocmask (SIG_SETMASK, &origmask, NULL); +#endif + + if (tmout_status == 1 && result == 0) + _rl_timeout_handle (); + + return result; +} +#endif + +static void +_rl_timeout_handle () +{ + if (rl_timeout_event_hook) + (*rl_timeout_event_hook) (); + + RL_SETSTATE(RL_STATE_TIMEOUT); + _rl_abort_internal (); +} + +int +_rl_timeout_handle_sigalrm () +{ +#if defined (RL_TIMEOUT_USE_SIGALRM) + if (timerisunset (&timeout_point)) + return -1; + + /* Reset `timeout_point' to the current time to ensure that later + calls of `rl_timeout_pending ()' return 0 (timeout expired). */ + if (gettimeofday(&timeout_point, 0) != 0) + timerclear (&timeout_point); + + reset_alarm (); + + _rl_timeout_handle (); +#endif + return -1; +} /* **************************************************************** */ /* */ /* Character Input */ @@ -497,6 +775,7 @@ rl_read_key (void) if ((r = rl_gather_tyi ()) < 0) /* XXX - EIO */ { rl_done = 1; + RL_SETSTATE (RL_STATE_DONE); return (errno == EIO ? (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF) : '\n'); } else if (r > 0) /* read something */ @@ -525,11 +804,13 @@ rl_getc (FILE *stream) { int result; unsigned char c; + int fd; #if defined (HAVE_PSELECT) sigset_t empty_set; fd_set readfds; #endif + fd = fileno (stream); while (1) { RL_CHECK_SIGNALS (); @@ -537,23 +818,27 @@ rl_getc (FILE *stream) /* We know at this point that _rl_caught_signal == 0 */ #if defined (__MINGW32__) - if (isatty (fileno (stream))) + if (isatty (fd) return (_getch ()); /* "There is no error return." */ #endif result = 0; -#if defined (HAVE_PSELECT) +#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) + /* At this point, if we have pselect, we're using select/pselect for the + timeouts. We handled MinGW above. */ FD_ZERO (&readfds); - FD_SET (fileno (stream), &readfds); + FD_SET (fd, &readfds); # if defined (HANDLE_SIGNALS) - result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &_rl_orig_sigset); + result = _rl_timeout_select (fd + 1, &readfds, NULL, NULL, NULL, &_rl_orig_sigset); # else sigemptyset (&empty_set); sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &empty_set); - result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &empty_set); + result = _rl_timeout_select (fd + 1, &readfds, NULL, NULL, NULL, &empty_set); # endif /* HANDLE_SIGNALS */ + if (result == 0) + _rl_timeout_handle (); /* check the timeout */ #endif if (result >= 0) - result = read (fileno (stream), &c, sizeof (unsigned char)); + result = read (fd, &c, sizeof (unsigned char)); if (result == sizeof (unsigned char)) return (c); @@ -582,7 +867,7 @@ rl_getc (FILE *stream) if (errno == X_EWOULDBLOCK || errno == X_EAGAIN) { - if (sh_unset_nodelay_mode (fileno (stream)) < 0) + if (sh_unset_nodelay_mode (fd) < 0) return (EOF); continue; } @@ -645,7 +930,7 @@ _rl_read_mbchar (char *mbchar, int size) { int mb_len, c; size_t mbchar_bytes_length; - wchar_t wc; + WCHAR_T wc; mbstate_t ps, ps_back; memset(&ps, 0, sizeof (mbstate_t)); @@ -661,7 +946,7 @@ _rl_read_mbchar (char *mbchar, int size) mbchar[mb_len++] = c; - mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps); + mbchar_bytes_length = MBRTOWC (&wc, mbchar, mb_len, &ps); if (mbchar_bytes_length == (size_t)(-1)) break; /* invalid byte sequence for the current locale */ else if (mbchar_bytes_length == (size_t)(-2)) diff --git a/lib/readline/isearch.c b/lib/readline/isearch.c index 080ba3cbb..c2d4d236e 100644 --- a/lib/readline/isearch.c +++ b/lib/readline/isearch.c @@ -6,7 +6,7 @@ /* */ /* **************************************************************** */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -59,13 +59,10 @@ char *_rl_isearch_terminators = (char *)NULL; _rl_search_cxt *_rl_iscxt = 0; -/* Variables imported from other files in the readline library. */ -extern HIST_ENTRY *_rl_saved_line_for_history; +static int rl_search_history (int, int); -static int rl_search_history PARAMS((int, int)); - -static _rl_search_cxt *_rl_isearch_init PARAMS((int)); -static void _rl_isearch_fini PARAMS((_rl_search_cxt *)); +static _rl_search_cxt *_rl_isearch_init (int); +static void _rl_isearch_fini (_rl_search_cxt *); /* Last line found by the current incremental search, so we don't `find' identical lines many times in a row. Now part of isearch context. */ @@ -197,7 +194,10 @@ rl_display_search (char *search_string, int flags, int where) rl_message ("%s", message); xfree (message); +#if 0 + /* rl_message calls this */ (*rl_redisplay_function) (); +#endif } static _rl_search_cxt * @@ -276,6 +276,8 @@ _rl_isearch_fini (_rl_search_cxt *cxt) last_isearch_string = cxt->search_string; last_isearch_string_len = cxt->search_string_index; cxt->search_string = 0; + cxt->search_string_size = 0; + cxt->search_string_index = 0; if (cxt->last_found_line < cxt->save_line) rl_get_previous_history (cxt->save_line - cxt->last_found_line, 0); @@ -321,7 +323,7 @@ _rl_search_getchar (_rl_search_cxt *cxt) #if defined (HANDLE_MULTIBYTE) /* This ends up with C (and LASTC) being set to the last byte of the multibyte character. In most cases c == lastc == mb[0] */ - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (c >= 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0) c = cxt->lastc = _rl_read_mbstring (cxt->lastc, cxt->mb, MB_LEN_MAX); #endif @@ -680,7 +682,7 @@ opcode_dispatch: paste = _rl_bracketed_text (&pastelen); if (paste == 0 || *paste == 0) { - free (paste); + xfree (paste); break; } if (_rl_enable_active_region) @@ -690,9 +692,10 @@ opcode_dispatch: cxt->search_string_size += pastelen + 2; cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); } - strcpy (cxt->search_string + cxt->search_string_index, paste); + memcpy (cxt->search_string + cxt->search_string_index, paste, pastelen); cxt->search_string_index += pastelen; - free (paste); + cxt->search_string[cxt->search_string_index] = '\0'; + xfree (paste); break; /* Add character to search string and continue search. */ diff --git a/lib/readline/keymaps.h b/lib/readline/keymaps.h index 1fa853d8c..290381483 100644 --- a/lib/readline/keymaps.h +++ b/lib/readline/keymaps.h @@ -1,6 +1,6 @@ /* keymaps.h -- Manipulation of readline keymaps. */ -/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -65,33 +65,33 @@ extern KEYMAP_ENTRY_ARRAY vi_insertion_keymap, vi_movement_keymap; /* Return a new, empty keymap. Free it with free() when you are done. */ -extern Keymap rl_make_bare_keymap PARAMS((void)); +extern Keymap rl_make_bare_keymap (void); /* Return a new keymap which is a copy of MAP. */ -extern Keymap rl_copy_keymap PARAMS((Keymap)); +extern Keymap rl_copy_keymap (Keymap); /* Return a new keymap with the printing characters bound to rl_insert, the lowercase Meta characters bound to run their equivalents, and the Meta digits bound to produce numeric arguments. */ -extern Keymap rl_make_keymap PARAMS((void)); +extern Keymap rl_make_keymap (void); /* Free the storage associated with a keymap. */ -extern void rl_discard_keymap PARAMS((Keymap)); +extern void rl_discard_keymap (Keymap); /* These functions actually appear in bind.c */ /* Return the keymap corresponding to a given name. Names look like `emacs' or `emacs-meta' or `vi-insert'. */ -extern Keymap rl_get_keymap_by_name PARAMS((const char *)); +extern Keymap rl_get_keymap_by_name (const char *); /* Return the current keymap. */ -extern Keymap rl_get_keymap PARAMS((void)); +extern Keymap rl_get_keymap (void); /* Set the current keymap to MAP. */ -extern void rl_set_keymap PARAMS((Keymap)); +extern void rl_set_keymap (Keymap); /* Set the name of MAP to NAME */ -extern int rl_set_keymap_name PARAMS((const char *, Keymap)); +extern int rl_set_keymap_name (const char *, Keymap); #ifdef __cplusplus } diff --git a/lib/readline/kill.c b/lib/readline/kill.c index 50c3fdead..4cf933b20 100644 --- a/lib/readline/kill.c +++ b/lib/readline/kill.c @@ -1,6 +1,6 @@ /* kill.c -- kill ring management. */ -/* Copyright (C) 1994-2020 Free Software Foundation, Inc. +/* Copyright (C) 1994-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -70,10 +70,10 @@ static int rl_kill_index; /* How many slots we have in the kill ring. */ static int rl_kill_ring_length; -static int _rl_copy_to_kill_ring PARAMS((char *, int)); -static int region_kill_internal PARAMS((int)); -static int _rl_copy_word_as_kill PARAMS((int, int)); -static int rl_yank_nth_arg_internal PARAMS((int, int, int)); +static int _rl_copy_to_kill_ring (char *, int); +static int region_kill_internal (int); +static int _rl_copy_word_as_kill (int, int); +static int rl_yank_nth_arg_internal (int, int, int); /* How to say that you only want to save a certain amount of kill material. */ @@ -351,6 +351,30 @@ rl_unix_filename_rubout (int count, int key) while (count--) { c = rl_line_buffer[rl_point - 1]; + + /* First move backwards through whitespace */ + while (rl_point && whitespace (c)) + { + rl_point--; + c = rl_line_buffer[rl_point - 1]; + } + + /* Consume one or more slashes. */ + if (c == '/') + { + int i; + + i = rl_point - 1; + while (i > 0 && c == '/') + c = rl_line_buffer[--i]; + if (i == 0 || whitespace (c)) + { + rl_point = i + whitespace (c); + continue; /* slashes only */ + } + c = '/'; + } + while (rl_point && (whitespace (c) || c == '/')) { rl_point--; @@ -535,7 +559,7 @@ rl_yank_pop (int count, int key) int rl_vi_yank_pop (int count, int key) { - int l, n; + int l, n, origpoint; if (((rl_last_func != rl_vi_yank_pop) && (rl_last_func != rl_vi_put)) || !rl_kill_ring) @@ -545,11 +569,21 @@ rl_vi_yank_pop (int count, int key) } l = strlen (rl_kill_ring[rl_kill_index]); +#if 0 /* TAG:readline-8.3 8/29/2022 matteopaolini1995@gmail.com */ + origpoint = rl_point; + n = rl_point - l + 1; +#else n = rl_point - l; +#endif if (n >= 0 && STREQN (rl_line_buffer + n, rl_kill_ring[rl_kill_index], l)) { +#if 0 /* TAG:readline-8.3 */ + rl_delete_text (n, n + l); /* remember vi cursor positioning */ + rl_point = origpoint - l; +#else rl_delete_text (n, rl_point); rl_point = n; +#endif rl_kill_index--; if (rl_kill_index < 0) rl_kill_index = rl_kill_ring_length - 1; diff --git a/lib/readline/macro.c b/lib/readline/macro.c index 92cc55c36..231a24bcd 100644 --- a/lib/readline/macro.c +++ b/lib/readline/macro.c @@ -276,6 +276,8 @@ rl_end_kbd_macro (int count, int ignore) } current_macro_index -= rl_key_sequence_length; + if (current_macro_index < 0) + current_macro_index = 0; current_macro[current_macro_index] = '\0'; RL_UNSETSTATE(RL_STATE_MACRODEF); diff --git a/lib/readline/mbutil.c b/lib/readline/mbutil.c index dc62b4cc2..47e9100a6 100644 --- a/lib/readline/mbutil.c +++ b/lib/readline/mbutil.c @@ -1,6 +1,6 @@ /* mbutil.c -- readline multibyte character utility functions */ -/* Copyright (C) 2001-2020 Free Software Foundation, Inc. +/* Copyright (C) 2001-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -153,7 +153,7 @@ _rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_z size_t tmp, len; mbstate_t ps; int point; - wchar_t wc; + WCHAR_T wc; tmp = 0; @@ -183,11 +183,11 @@ _rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_z if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point])) { tmp = 1; - wc = (wchar_t) string[point]; + wc = (WCHAR_T) string[point]; memset(&ps, 0, sizeof(mbstate_t)); } else - tmp = mbrtowc (&wc, string+point, len, &ps); + tmp = MBRTOWC (&wc, string+point, len, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* invalid bytes. assume a byte represents a character */ @@ -216,11 +216,11 @@ _rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_z if (find_non_zero) { - tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); + tmp = MBRTOWC (&wc, string + point, strlen (string + point), &ps); while (MB_NULLWCH (tmp) == 0 && MB_INVALIDCH (tmp) == 0 && WCWIDTH (wc) == 0) { point += tmp; - tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); + tmp = MBRTOWC (&wc, string + point, strlen (string + point), &ps); } } @@ -231,11 +231,11 @@ static inline int _rl_test_nonzero (char *string, int ind, int len) { size_t tmp; - wchar_t wc; + WCHAR_T wc; mbstate_t ps; memset (&ps, 0, sizeof (mbstate_t)); - tmp = mbrtowc (&wc, string + ind, len - ind, &ps); + tmp = MBRTOWC (&wc, string + ind, len - ind, &ps); /* treat invalid multibyte sequences as non-zero-width */ return (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp) || WCWIDTH (wc) > 0); } @@ -293,7 +293,7 @@ _rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero) mbstate_t ps; int prev, non_zero_prev, point, length; size_t tmp; - wchar_t wc; + WCHAR_T wc; if (_rl_utf8locale) return (_rl_find_prev_utf8char (string, seed, find_non_zero)); @@ -312,11 +312,11 @@ _rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero) if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point])) { tmp = 1; - wc = (wchar_t) string[point]; + wc = (WCHAR_T) string[point]; memset(&ps, 0, sizeof(mbstate_t)); } else - tmp = mbrtowc (&wc, string + point, length - point, &ps); + tmp = MBRTOWC (&wc, string + point, length - point, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* in this case, bytes are invalid or too short to compose @@ -470,27 +470,27 @@ _rl_is_mbchar_matched (char *string, int seed, int end, char *mbchar, int length return 1; } -wchar_t +WCHAR_T _rl_char_value (char *buf, int ind) { size_t tmp; - wchar_t wc; + WCHAR_T wc; mbstate_t ps; int l; if (MB_LEN_MAX == 1 || rl_byte_oriented) - return ((wchar_t) buf[ind]); + return ((WCHAR_T) buf[ind]); if (_rl_utf8locale && UTF8_SINGLEBYTE(buf[ind])) - return ((wchar_t) buf[ind]); + return ((WCHAR_T) buf[ind]); l = strlen (buf); if (ind >= l - 1) - return ((wchar_t) buf[ind]); + return ((WCHAR_T) buf[ind]); if (l < ind) /* Sanity check */ l = strlen (buf+ind); memset (&ps, 0, sizeof (mbstate_t)); - tmp = mbrtowc (&wc, buf + ind, l - ind, &ps); + tmp = MBRTOWC (&wc, buf + ind, l - ind, &ps); if (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp)) - return ((wchar_t) buf[ind]); + return ((WCHAR_T) buf[ind]); return wc; } #endif /* HANDLE_MULTIBYTE */ diff --git a/lib/readline/misc.c b/lib/readline/misc.c index 3d9a674ca..4bca9c586 100644 --- a/lib/readline/misc.c +++ b/lib/readline/misc.c @@ -1,6 +1,6 @@ /* misc.c -- miscellaneous bindable readline functions. */ -/* Copyright (C) 1987-2019 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -50,14 +50,12 @@ #include "history.h" #include "rlprivate.h" +#include "histlib.h" #include "rlshell.h" #include "xmalloc.h" -static int rl_digit_loop PARAMS((void)); -static void _rl_history_set_point PARAMS((void)); - -/* Forward declarations used in this file */ -void _rl_free_history_entry PARAMS((HIST_ENTRY *)); +static int rl_digit_loop (void); +static void _rl_history_set_point (void); /* If non-zero, rl_get_previous_history and rl_get_next_history attempt to preserve the value of rl_point from line to line. */ @@ -309,9 +307,9 @@ _rl_start_using_history (void) { using_history (); if (_rl_saved_line_for_history) - _rl_free_history_entry (_rl_saved_line_for_history); - + _rl_free_saved_history_line (); _rl_saved_line_for_history = (HIST_ENTRY *)NULL; + _rl_history_search_pos = -99; /* some random invalid history position */ } /* Free the contents (and containing structure) of a HIST_ENTRY. */ @@ -355,6 +353,8 @@ rl_maybe_unsave_line (void) list from a history entry, as in rl_replace_from_history() below. */ rl_replace_line (_rl_saved_line_for_history->line, 0); rl_undo_list = (UNDO_LIST *)_rl_saved_line_for_history->data; + + /* Doesn't free `data'. */ _rl_free_history_entry (_rl_saved_line_for_history); _rl_saved_line_for_history = (HIST_ENTRY *)NULL; rl_point = rl_end; /* rl_replace_line sets rl_end */ @@ -382,8 +382,18 @@ rl_maybe_save_line (void) int _rl_free_saved_history_line (void) { + UNDO_LIST *orig; + if (_rl_saved_line_for_history) { + if (rl_undo_list && rl_undo_list == (UNDO_LIST *)_rl_saved_line_for_history->data) + rl_undo_list = 0; + /* Have to free this separately because _rl_free_history entry can't: + it doesn't know whether or not this has application data. Only the + callers that know this is _rl_saved_line_for_history can know that + it's an undo list. */ + if (_rl_saved_line_for_history->data) + _rl_free_undo_list ((UNDO_LIST *)_rl_saved_line_for_history->data); _rl_free_history_entry (_rl_saved_line_for_history); _rl_saved_line_for_history = (HIST_ENTRY *)NULL; } @@ -625,7 +635,7 @@ rl_get_previous_history (int count, int key) if (temp == 0) { if (had_saved_line == 0) - _rl_free_saved_history_line (); + _rl_free_saved_history_line (); rl_ding (); } else @@ -637,6 +647,42 @@ rl_get_previous_history (int count, int key) return 0; } +/* With an argument, move back that many history lines, else move to the + beginning of history. */ +int +rl_fetch_history (int count, int c) +{ + int wanted, nhist; + + /* Giving an argument of n means we want the nth command in the history + file. The command number is interpreted the same way that the bash + `history' command does it -- that is, giving an argument count of 450 + to this command would get the command listed as number 450 in the + output of `history'. */ + if (rl_explicit_arg) + { + nhist = history_base + where_history (); + /* Negative arguments count back from the end of the history list. */ + wanted = (count >= 0) ? nhist - count : -count; + + if (wanted <= 0 || wanted >= nhist) + { + /* In vi mode, we don't change the line with an out-of-range + argument, as for the `G' command. */ + if (rl_editing_mode == vi_mode) + rl_ding (); + else + rl_beginning_of_history (0, 0); + } + else + rl_get_previous_history (wanted, c); + } + else + rl_beginning_of_history (count, 0); + + return (0); +} + /* The equivalent of the Korn shell C-o operate-and-get-next-history-line editing command. */ @@ -664,15 +710,13 @@ set_saved_history () } int -rl_operate_and_get_next (count, c) - int count, c; +rl_operate_and_get_next (int count, int c) { /* Accept the current line. */ rl_newline (1, c); saved_history_logical_offset = rl_explicit_arg ? count : where_history () + history_base + 1; - _rl_saved_internal_startup_hook = _rl_internal_startup_hook; _rl_internal_startup_hook = set_saved_history; diff --git a/lib/readline/nls.c b/lib/readline/nls.c index d2f67e0d3..5c6a13b6e 100644 --- a/lib/readline/nls.c +++ b/lib/readline/nls.c @@ -1,6 +1,6 @@ /* nls.c -- skeletal internationalization code. */ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. +/* Copyright (C) 1996-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -53,8 +53,12 @@ #include "readline.h" #include "rlshell.h" #include "rlprivate.h" +#include "xmalloc.h" -static int utf8locale PARAMS((char *)); +static int utf8locale (char *); + +#define RL_DEFAULT_LOCALE "C" +static char *_rl_current_locale = 0; #if !defined (HAVE_SETLOCALE) /* A list of legal values for the LANG or LC_CTYPE environment variables. @@ -78,12 +82,12 @@ static char *legal_lang_values[] = 0 }; -static char *normalize_codeset PARAMS((char *)); +static char *normalize_codeset (char *); #endif /* !HAVE_SETLOCALE */ -static char *find_codeset PARAMS((char *, size_t *)); +static char *find_codeset (char *, size_t *); -static char *_rl_get_locale_var PARAMS((const char *)); +static char *_rl_get_locale_var (const char *); static char * _rl_get_locale_var (const char *v) @@ -131,50 +135,61 @@ _rl_init_locale (void) that doesn't return anything, we set lspec to the empty string to force the subsequent call to setlocale() to define the `native' environment. */ +#if defined (HAVE_SETLOCALE) if (lspec == 0 || *lspec == 0) lspec = setlocale (LC_CTYPE, (char *)NULL); if (lspec == 0) lspec = ""; ret = setlocale (LC_CTYPE, lspec); /* ok, since it does not change locale */ +#else + ret = (lspec == 0 || *lspec == 0) ? RL_DEFAULT_LOCALE : lspec; +#endif _rl_utf8locale = (ret && *ret) ? utf8locale (ret) : 0; + _rl_current_locale = savestring (ret); return ret; } -/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value - to decide the defaults for 8-bit character input and output. Returns - 1 if we set eight-bit mode. */ -int -_rl_init_eightbit (void) -{ /* If we have setlocale(3), just check the current LC_CTYPE category - value, and go into eight-bit mode if it's not C or POSIX. */ + value (passed as LOCALESTR), and go into eight-bit mode if it's not "C" + or "POSIX". If FORCE is non-zero, we reset the locale variables to values + appropriate for the C locale if the locale is "C" or "POSIX". FORCE is 0 + when this is called from _rl_init_eightbit, since we're modifying the + default initial values and don't need to change anything else. If we + don't have setlocale(3), we check the codeset portion of LOCALESTR against + a set of known values and go into eight-bit mode if it matches one of those. + Returns 1 if we set eight-bit (multibyte) mode. */ +static int +_rl_set_localevars (char *localestr, int force) +{ #if defined (HAVE_SETLOCALE) - char *lspec, *t; - - t = _rl_init_locale (); /* returns static pointer */ - - if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0)) + if (localestr && *localestr && (localestr[0] != 'C' || localestr[1]) && (STREQ (localestr, "POSIX") == 0)) { _rl_meta_flag = 1; _rl_convert_meta_chars_to_ascii = 0; _rl_output_meta_chars = 1; return (1); } + else if (force) + { + /* Default "C" locale settings. */ + _rl_meta_flag = 0; + _rl_convert_meta_chars_to_ascii = 1; + _rl_output_meta_chars = 0; + return (0); + } else return (0); #else /* !HAVE_SETLOCALE */ - char *lspec, *t; + char *t; int i; /* We don't have setlocale. Finesse it. Check the environment for the appropriate variables and set eight-bit mode if they have the right values. */ - lspec = _rl_get_locale_var ("LC_CTYPE"); - - if (lspec == 0 || (t = normalize_codeset (lspec)) == 0) + if (localestr == 0 || (t = normalize_codeset (localestr)) == 0) return (0); for (i = 0; t && legal_lang_values[i]; i++) if (STREQ (t, legal_lang_values[i])) @@ -185,6 +200,14 @@ _rl_init_eightbit (void) break; } + if (force && legal_lang_values[i] == 0) /* didn't find it */ + { + /* Default "C" locale settings. */ + _rl_meta_flag = 0; + _rl_convert_meta_chars_to_ascii = 1; + _rl_output_meta_chars = 0; + } + _rl_utf8locale = *t ? STREQ (t, "utf8") : 0; xfree (t); @@ -192,6 +215,21 @@ _rl_init_eightbit (void) #endif /* !HAVE_SETLOCALE */ } +/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value + to decide the defaults for 8-bit character input and output. Returns + 1 if we set eight-bit mode. */ +int +_rl_init_eightbit (void) +{ + char *t, *ol; + + ol = _rl_current_locale; + t = _rl_init_locale (); /* resets _rl_current_locale, returns static pointer */ + xfree (ol); + + return (_rl_set_localevars (t, 0)); +} + #if !defined (HAVE_SETLOCALE) static char * normalize_codeset (char *codeset) @@ -288,3 +326,19 @@ find_codeset (char *name, size_t *lenp) return result; } + +void +_rl_reset_locale (void) +{ + char *ol, *nl; + + /* This should not be NULL; _rl_init_eightbit sets it on the first call to + readline() or rl_initialize(). */ + ol = _rl_current_locale; + nl = _rl_init_locale (); /* resets _rl_current_locale */ + + if ((ol == 0 && nl) || (ol && nl && (STREQ (ol, nl) == 0))) + (void)_rl_set_localevars (nl, 1); + + xfree (ol); +} diff --git a/lib/readline/parens.c b/lib/readline/parens.c index af4797736..57ce70458 100644 --- a/lib/readline/parens.c +++ b/lib/readline/parens.c @@ -1,6 +1,6 @@ /* parens.c -- implementation of matching parentheses feature. */ -/* Copyright (C) 1987, 1989, 1992-2015, 2017 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992-2015, 2017, 2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -53,7 +53,7 @@ extern char *strchr (), *strrchr (); #include "readline.h" #include "rlprivate.h" -static int find_matching_open PARAMS((char *, int, int)); +static int find_matching_open (char *, int, int); /* Non-zero means try to blink the matching open parenthesis when the close parenthesis is inserted. */ @@ -135,7 +135,11 @@ rl_insert_close (int count, int invoking_key) orig_point = rl_point; rl_point = match_point; (*rl_redisplay_function) (); +# if defined (RL_TIMEOUT_USE_SELECT) + ready = _rl_timeout_select (1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &timer, NULL); +# else ready = select (1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &timer); +# endif rl_point = orig_point; #else /* !HAVE_SELECT */ _rl_insert_char (count, invoking_key); diff --git a/lib/readline/posixdir.h b/lib/readline/posixdir.h index af5be8012..b737bd7d1 100644 --- a/lib/readline/posixdir.h +++ b/lib/readline/posixdir.h @@ -1,6 +1,6 @@ /* posixdir.h -- Posix directory reading includes and defines. */ -/* Copyright (C) 1987,1991,2012 Free Software Foundation, Inc. +/* Copyright (C) 1987,1991,2012,2019,2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. diff --git a/lib/readline/posixtime.h b/lib/readline/posixtime.h new file mode 100644 index 000000000..e70ebec67 --- /dev/null +++ b/lib/readline/posixtime.h @@ -0,0 +1,84 @@ +/* posixtime.h -- wrapper for time.h, sys/times.h mess. */ + +/* Copyright (C) 1999-2021 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 . +*/ + +#ifndef _POSIXTIME_H_ +#define _POSIXTIME_H_ + +/* include this after config.h */ +/* Some systems require this, mostly for the definition of `struct timezone'. + For example, Dynix/ptx has that definition in rather than + sys/time.h */ +#if defined (HAVE_SYS_TIME_H) +# include +#endif +#include + +#if !defined (HAVE_SYSCONF) || !defined (_SC_CLK_TCK) +# if !defined (CLK_TCK) +# if defined (HZ) +# define CLK_TCK HZ +# else +# define CLK_TCK 60 /* 60HZ */ +# endif +# endif /* !CLK_TCK */ +#endif /* !HAVE_SYSCONF && !_SC_CLK_TCK */ + +#if !HAVE_TIMEVAL +struct timeval +{ + time_t tv_sec; + long int tv_usec; +}; +#endif + +#if !HAVE_GETTIMEOFDAY +extern int gettimeofday PARAMS((struct timeval *, void *)); +#endif + +/* These exist on BSD systems, at least. */ +#if !defined (timerclear) +# define timerclear(tvp) do { (tvp)->tv_sec = 0; (tvp)->tv_usec = 0; } while (0) +#endif +#if !defined (timerisset) +# define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) +#endif +#if !defined (timercmp) +# define timercmp(a, b, CMP) \ + (((a)->tv_sec == (b)->tv_sec) ? ((a)->tv_usec CMP (b)->tv_usec) \ + : ((a)->tv_sec CMP (b)->tv_sec)) +#endif + +/* These are non-standard. */ +#if !defined (timerisunset) +# define timerisunset(tvp) ((tvp)->tv_sec == 0 && (tvp)->tv_usec == 0) +#endif +#if !defined (timerset) +# define timerset(tvp, s, u) do { tvp->tv_sec = s; tvp->tv_usec = u; } while (0) +#endif + +#ifndef TIMEVAL_TO_TIMESPEC +# define TIMEVAL_TO_TIMESPEC(tv, ts) \ + do { \ + (ts)->tv_sec = (tv)->tv_sec; \ + (ts)->tv_nsec = (tv)->tv_usec * 1000; \ + } while (0) +#endif + +#endif /* _POSIXTIME_H_ */ diff --git a/lib/readline/readline.c b/lib/readline/readline.c index e61d188bb..9d42a8d6d 100644 --- a/lib/readline/readline.c +++ b/lib/readline/readline.c @@ -1,7 +1,7 @@ /* readline.c -- a general facility for reading lines of input with emacs style editing and completion. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -72,35 +72,34 @@ extern int errno; #include "rlshell.h" #include "xmalloc.h" -#ifndef RL_LIBRARY_VERSION -# define RL_LIBRARY_VERSION "8.0" +#if defined (COLOR_SUPPORT) +# include "parse-colors.h" #endif -#ifndef RL_READLINE_VERSION -# define RL_READLINE_VERSION 0x0800 +#ifndef RL_LIBRARY_VERSION +# define RL_LIBRARY_VERSION "8.1" #endif -extern void _rl_free_history_entry PARAMS((HIST_ENTRY *)); - -#if defined (COLOR_SUPPORT) -extern void _rl_parse_colors PARAMS((void)); /* XXX */ +#ifndef RL_READLINE_VERSION +# define RL_READLINE_VERSION 0x0801 #endif - /* Forward declarations used in this file. */ -static char *readline_internal PARAMS((void)); -static void readline_initialize_everything PARAMS((void)); +static char *readline_internal (void); +static void readline_initialize_everything (void); + +static void run_startup_hooks (void); -static void bind_arrow_keys_internal PARAMS((Keymap)); -static void bind_arrow_keys PARAMS((void)); +static void bind_arrow_keys_internal (Keymap); +static void bind_arrow_keys (void); -static void bind_bracketed_paste_prefix PARAMS((void)); +static void bind_bracketed_paste_prefix (void); -static void readline_default_bindings PARAMS((void)); -static void reset_default_bindings PARAMS((void)); +static void readline_default_bindings (void); +static void reset_default_bindings (void); -static int _rl_subseq_result PARAMS((int, Keymap, int, int)); -static int _rl_subseq_getchar PARAMS((int)); +static int _rl_subseq_result (int, Keymap, int, int); +static int _rl_subseq_getchar (int); /* **************************************************************** */ /* */ @@ -165,6 +164,9 @@ int rl_end; /* Make this non-zero to return the current input_line. */ int rl_done; +/* If non-zero when readline_internal returns, it means we found EOF */ +int rl_eof_found = 0; + /* The last function executed by readline. */ rl_command_func_t *rl_last_func = (rl_command_func_t *)NULL; @@ -218,9 +220,6 @@ int _rl_eof_char = CTRL ('D'); /* Non-zero makes this the next keystroke to read. */ int rl_pending_input = 0; -/* If non-zero when readline_internal returns, it means we found EOF */ -int _rl_eof_found = 0; - /* Pointer to a useful terminal name. */ const char *rl_terminal_name = (const char *)NULL; @@ -241,6 +240,9 @@ char *_rl_comment_begin; /* Keymap holding the function currently being executed. */ Keymap rl_executing_keymap; +/* The function currently being executed. */ +rl_command_func_t *_rl_executing_func; + /* Keymap we're currently using to dispatch. */ Keymap _rl_dispatching_keymap; @@ -403,6 +405,16 @@ readline (const char *prompt) return (value); } +static void +run_startup_hooks (void) +{ + if (rl_startup_hook) + (*rl_startup_hook) (); + + if (_rl_internal_startup_hook) + (*_rl_internal_startup_hook) (); +} + #if defined (READLINE_CALLBACKS) # define STATIC_CALLBACK #else @@ -422,11 +434,7 @@ readline_internal_setup (void) if (_rl_enable_meta & RL_ISSTATE (RL_STATE_TERMPREPPED)) _rl_enable_meta_key (); - if (rl_startup_hook) - (*rl_startup_hook) (); - - if (_rl_internal_startup_hook) - (*_rl_internal_startup_hook) (); + run_startup_hooks (); rl_deactivate_mark (); @@ -474,12 +482,18 @@ readline_internal_teardown (int eof) RL_CHECK_SIGNALS (); + if (eof) + RL_SETSTATE (RL_STATE_EOF); /* XXX */ + /* Restore the original of this history line, iff the line that we are editing was originally in the history, AND the line has changed. */ entry = current_history (); + /* We don't want to do this if we executed functions that call + history_set_pos to set the history offset to the line containing the + non-incremental search string. */ if (entry && rl_undo_list) - { + { temp = savestring (the_line); rl_revert_line (1, 0); entry = replace_history_entry (where_history (), the_line, (histdata_t)NULL); @@ -511,6 +525,11 @@ readline_internal_teardown (int eof) void _rl_internal_char_cleanup (void) { + if (_rl_keep_mark_active) + _rl_keep_mark_active = 0; + else if (rl_mark_active_p ()) + rl_deactivate_mark (); + #if defined (VI_MODE) /* In vi mode, when you exit insert mode, the cursor moves back over the previous character. We explicitly check for that here. */ @@ -567,6 +586,15 @@ readline_internal_charloop (void) { (*rl_redisplay_function) (); _rl_want_redisplay = 0; + + /* If we longjmped because of a timeout, handle it here. */ + if (RL_ISSTATE (RL_STATE_TIMEOUT)) + { + RL_SETSTATE (RL_STATE_DONE); + rl_done = 1; + return 1; + } + /* If we get here, we're not being called from something dispatched from _rl_callback_read_char(), which sets up its own value of _rl_top_level (saving and restoring the old, of course), so @@ -596,6 +624,7 @@ readline_internal_charloop (void) RL_SETSTATE(RL_STATE_DONE); return (rl_done = 1); #else + RL_SETSTATE(RL_STATE_EOF); eof_found = 1; break; #endif @@ -636,6 +665,7 @@ readline_internal_charloop (void) RL_SETSTATE(RL_STATE_DONE); return (rl_done = 1); #else + RL_SETSTATE(RL_STATE_EOF); eof_found = 1; break; #endif @@ -652,6 +682,8 @@ readline_internal_charloop (void) rl_executing_keymap = _rl_command_to_execute->map; rl_executing_key = _rl_command_to_execute->key; + _rl_executing_func = _rl_command_to_execute->func; + rl_dispatching = 1; RL_SETSTATE(RL_STATE_DISPATCHING); r = (*(_rl_command_to_execute->func)) (_rl_command_to_execute->count, _rl_command_to_execute->key); @@ -668,11 +700,6 @@ readline_internal_charloop (void) if (rl_pending_input == 0 && lk == _rl_last_command_was_kill) _rl_last_command_was_kill = 0; - if (_rl_keep_mark_active) - _rl_keep_mark_active = 0; - else if (rl_mark_active_p ()) - rl_deactivate_mark (); - _rl_internal_char_cleanup (); #if defined (READLINE_CALLBACKS) @@ -703,8 +730,8 @@ static char * readline_internal (void) { readline_internal_setup (); - _rl_eof_found = readline_internal_charloop (); - return (readline_internal_teardown (_rl_eof_found)); + rl_eof_found = readline_internal_charloop (); + return (readline_internal_teardown (rl_eof_found)); } void @@ -878,6 +905,8 @@ _rl_dispatch_subseq (register int key, Keymap map, int got_subseq) rl_executing_keymap = map; rl_executing_key = key; + _rl_executing_func = func; + RESIZE_KEYSEQ_BUFFER(); rl_executing_keyseq[rl_key_sequence_length++] = key; rl_executing_keyseq[rl_key_sequence_length] = '\0'; @@ -1143,6 +1172,9 @@ _rl_subseq_result (int r, Keymap map, int key, int got_subseq) int rl_initialize (void) { + /* Initialize the timeout first to get the precise start time. */ + _rl_timeout_init (); + /* If we have never been called before, initialize the terminal and data structures. */ if (rl_initialized == 0) @@ -1154,14 +1186,14 @@ rl_initialize (void) RL_SETSTATE(RL_STATE_INITIALIZED); } else - (void)_rl_init_locale (); /* check current locale */ + _rl_reset_locale (); /* check current locale and set locale variables */ /* Initialize the current line information. */ _rl_init_line_state (); /* We aren't done yet. We haven't even gotten started yet! */ rl_done = 0; - RL_UNSETSTATE(RL_STATE_DONE); + RL_UNSETSTATE(RL_STATE_DONE|RL_STATE_TIMEOUT|RL_STATE_EOF); /* Tell the history routines what is going on. */ _rl_start_using_history (); @@ -1282,8 +1314,8 @@ readline_initialize_everything (void) /* If the completion parser's default word break characters haven't been set yet, then do so now. */ - if (rl_completer_word_break_characters == (char *)NULL) - rl_completer_word_break_characters = (char *)rl_basic_word_break_characters; + if (rl_completer_word_break_characters == 0) + rl_completer_word_break_characters = rl_basic_word_break_characters; #if defined (COLOR_SUPPORT) if (_rl_colored_stats || _rl_colored_completion_prefix) @@ -1532,3 +1564,12 @@ _rl_add_executing_keyseq (int key) RESIZE_KEYSEQ_BUFFER (); rl_executing_keyseq[rl_key_sequence_length++] = key; } + +/* `delete' the last character added to the executing key sequence. Use this + before calling rl_execute_next to avoid keys being added twice. */ +void +_rl_del_executing_keyseq (void) +{ + if (rl_key_sequence_length > 0) + rl_key_sequence_length--; +} diff --git a/lib/readline/readline.h b/lib/readline/readline.h index 78fa39d02..cac269f0b 100644 --- a/lib/readline/readline.h +++ b/lib/readline/readline.h @@ -1,6 +1,6 @@ /* Readline.h -- the names of functions callable from within readline. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -39,9 +39,9 @@ extern "C" { #endif /* Hex-encoded Readline version number. */ -#define RL_READLINE_VERSION 0x0801 /* Readline 8.0 */ +#define RL_READLINE_VERSION 0x0802 /* Readline 8.2 */ #define RL_VERSION_MAJOR 8 -#define RL_VERSION_MINOR 1 +#define RL_VERSION_MINOR 2 /* Readline data structures. */ @@ -79,211 +79,212 @@ extern FUNMAP **funmap; /* **************************************************************** */ /* Bindable commands for numeric arguments. */ -extern int rl_digit_argument PARAMS((int, int)); -extern int rl_universal_argument PARAMS((int, int)); +extern int rl_digit_argument (int, int); +extern int rl_universal_argument (int, int); /* Bindable commands for moving the cursor. */ -extern int rl_forward_byte PARAMS((int, int)); -extern int rl_forward_char PARAMS((int, int)); -extern int rl_forward PARAMS((int, int)); -extern int rl_backward_byte PARAMS((int, int)); -extern int rl_backward_char PARAMS((int, int)); -extern int rl_backward PARAMS((int, int)); -extern int rl_beg_of_line PARAMS((int, int)); -extern int rl_end_of_line PARAMS((int, int)); -extern int rl_forward_word PARAMS((int, int)); -extern int rl_backward_word PARAMS((int, int)); -extern int rl_refresh_line PARAMS((int, int)); -extern int rl_clear_screen PARAMS((int, int)); -extern int rl_clear_display PARAMS((int, int)); -extern int rl_skip_csi_sequence PARAMS((int, int)); -extern int rl_arrow_keys PARAMS((int, int)); - -extern int rl_previous_screen_line PARAMS((int, int)); -extern int rl_next_screen_line PARAMS((int, int)); +extern int rl_forward_byte (int, int); +extern int rl_forward_char (int, int); +extern int rl_forward (int, int); +extern int rl_backward_byte (int, int); +extern int rl_backward_char (int, int); +extern int rl_backward (int, int); +extern int rl_beg_of_line (int, int); +extern int rl_end_of_line (int, int); +extern int rl_forward_word (int, int); +extern int rl_backward_word (int, int); +extern int rl_refresh_line (int, int); +extern int rl_clear_screen (int, int); +extern int rl_clear_display (int, int); +extern int rl_skip_csi_sequence (int, int); +extern int rl_arrow_keys (int, int); + +extern int rl_previous_screen_line (int, int); +extern int rl_next_screen_line (int, int); /* Bindable commands for inserting and deleting text. */ -extern int rl_insert PARAMS((int, int)); -extern int rl_quoted_insert PARAMS((int, int)); -extern int rl_tab_insert PARAMS((int, int)); -extern int rl_newline PARAMS((int, int)); -extern int rl_do_lowercase_version PARAMS((int, int)); -extern int rl_rubout PARAMS((int, int)); -extern int rl_delete PARAMS((int, int)); -extern int rl_rubout_or_delete PARAMS((int, int)); -extern int rl_delete_horizontal_space PARAMS((int, int)); -extern int rl_delete_or_show_completions PARAMS((int, int)); -extern int rl_insert_comment PARAMS((int, int)); +extern int rl_insert (int, int); +extern int rl_quoted_insert (int, int); +extern int rl_tab_insert (int, int); +extern int rl_newline (int, int); +extern int rl_do_lowercase_version (int, int); +extern int rl_rubout (int, int); +extern int rl_delete (int, int); +extern int rl_rubout_or_delete (int, int); +extern int rl_delete_horizontal_space (int, int); +extern int rl_delete_or_show_completions (int, int); +extern int rl_insert_comment (int, int); /* Bindable commands for changing case. */ -extern int rl_upcase_word PARAMS((int, int)); -extern int rl_downcase_word PARAMS((int, int)); -extern int rl_capitalize_word PARAMS((int, int)); +extern int rl_upcase_word (int, int); +extern int rl_downcase_word (int, int); +extern int rl_capitalize_word (int, int); /* Bindable commands for transposing characters and words. */ -extern int rl_transpose_words PARAMS((int, int)); -extern int rl_transpose_chars PARAMS((int, int)); +extern int rl_transpose_words (int, int); +extern int rl_transpose_chars (int, int); /* Bindable commands for searching within a line. */ -extern int rl_char_search PARAMS((int, int)); -extern int rl_backward_char_search PARAMS((int, int)); +extern int rl_char_search (int, int); +extern int rl_backward_char_search (int, int); /* Bindable commands for readline's interface to the command history. */ -extern int rl_beginning_of_history PARAMS((int, int)); -extern int rl_end_of_history PARAMS((int, int)); -extern int rl_get_next_history PARAMS((int, int)); -extern int rl_get_previous_history PARAMS((int, int)); -extern int rl_operate_and_get_next PARAMS((int, int)); +extern int rl_beginning_of_history (int, int); +extern int rl_end_of_history (int, int); +extern int rl_get_next_history (int, int); +extern int rl_get_previous_history (int, int); +extern int rl_operate_and_get_next (int, int); +extern int rl_fetch_history (int, int); /* Bindable commands for managing the mark and region. */ -extern int rl_set_mark PARAMS((int, int)); -extern int rl_exchange_point_and_mark PARAMS((int, int)); +extern int rl_set_mark (int, int); +extern int rl_exchange_point_and_mark (int, int); /* Bindable commands to set the editing mode (emacs or vi). */ -extern int rl_vi_editing_mode PARAMS((int, int)); -extern int rl_emacs_editing_mode PARAMS((int, int)); +extern int rl_vi_editing_mode (int, int); +extern int rl_emacs_editing_mode (int, int); /* Bindable commands to change the insert mode (insert or overwrite) */ -extern int rl_overwrite_mode PARAMS((int, int)); +extern int rl_overwrite_mode (int, int); /* Bindable commands for managing key bindings. */ -extern int rl_re_read_init_file PARAMS((int, int)); -extern int rl_dump_functions PARAMS((int, int)); -extern int rl_dump_macros PARAMS((int, int)); -extern int rl_dump_variables PARAMS((int, int)); +extern int rl_re_read_init_file (int, int); +extern int rl_dump_functions (int, int); +extern int rl_dump_macros (int, int); +extern int rl_dump_variables (int, int); /* Bindable commands for word completion. */ -extern int rl_complete PARAMS((int, int)); -extern int rl_possible_completions PARAMS((int, int)); -extern int rl_insert_completions PARAMS((int, int)); -extern int rl_old_menu_complete PARAMS((int, int)); -extern int rl_menu_complete PARAMS((int, int)); -extern int rl_backward_menu_complete PARAMS((int, int)); +extern int rl_complete (int, int); +extern int rl_possible_completions (int, int); +extern int rl_insert_completions (int, int); +extern int rl_old_menu_complete (int, int); +extern int rl_menu_complete (int, int); +extern int rl_backward_menu_complete (int, int); /* Bindable commands for killing and yanking text, and managing the kill ring. */ -extern int rl_kill_word PARAMS((int, int)); -extern int rl_backward_kill_word PARAMS((int, int)); -extern int rl_kill_line PARAMS((int, int)); -extern int rl_backward_kill_line PARAMS((int, int)); -extern int rl_kill_full_line PARAMS((int, int)); -extern int rl_unix_word_rubout PARAMS((int, int)); -extern int rl_unix_filename_rubout PARAMS((int, int)); -extern int rl_unix_line_discard PARAMS((int, int)); -extern int rl_copy_region_to_kill PARAMS((int, int)); -extern int rl_kill_region PARAMS((int, int)); -extern int rl_copy_forward_word PARAMS((int, int)); -extern int rl_copy_backward_word PARAMS((int, int)); -extern int rl_yank PARAMS((int, int)); -extern int rl_yank_pop PARAMS((int, int)); -extern int rl_yank_nth_arg PARAMS((int, int)); -extern int rl_yank_last_arg PARAMS((int, int)); -extern int rl_bracketed_paste_begin PARAMS((int, int)); +extern int rl_kill_word (int, int); +extern int rl_backward_kill_word (int, int); +extern int rl_kill_line (int, int); +extern int rl_backward_kill_line (int, int); +extern int rl_kill_full_line (int, int); +extern int rl_unix_word_rubout (int, int); +extern int rl_unix_filename_rubout (int, int); +extern int rl_unix_line_discard (int, int); +extern int rl_copy_region_to_kill (int, int); +extern int rl_kill_region (int, int); +extern int rl_copy_forward_word (int, int); +extern int rl_copy_backward_word (int, int); +extern int rl_yank (int, int); +extern int rl_yank_pop (int, int); +extern int rl_yank_nth_arg (int, int); +extern int rl_yank_last_arg (int, int); +extern int rl_bracketed_paste_begin (int, int); /* Not available unless _WIN32 is defined. */ #if defined (_WIN32) -extern int rl_paste_from_clipboard PARAMS((int, int)); +extern int rl_paste_from_clipboard (int, int); #endif /* Bindable commands for incremental searching. */ -extern int rl_reverse_search_history PARAMS((int, int)); -extern int rl_forward_search_history PARAMS((int, int)); +extern int rl_reverse_search_history (int, int); +extern int rl_forward_search_history (int, int); /* Bindable keyboard macro commands. */ -extern int rl_start_kbd_macro PARAMS((int, int)); -extern int rl_end_kbd_macro PARAMS((int, int)); -extern int rl_call_last_kbd_macro PARAMS((int, int)); -extern int rl_print_last_kbd_macro PARAMS((int, int)); +extern int rl_start_kbd_macro (int, int); +extern int rl_end_kbd_macro (int, int); +extern int rl_call_last_kbd_macro (int, int); +extern int rl_print_last_kbd_macro (int, int); /* Bindable undo commands. */ -extern int rl_revert_line PARAMS((int, int)); -extern int rl_undo_command PARAMS((int, int)); +extern int rl_revert_line (int, int); +extern int rl_undo_command (int, int); /* Bindable tilde expansion commands. */ -extern int rl_tilde_expand PARAMS((int, int)); +extern int rl_tilde_expand (int, int); /* Bindable terminal control commands. */ -extern int rl_restart_output PARAMS((int, int)); -extern int rl_stop_output PARAMS((int, int)); +extern int rl_restart_output (int, int); +extern int rl_stop_output (int, int); /* Miscellaneous bindable commands. */ -extern int rl_abort PARAMS((int, int)); -extern int rl_tty_status PARAMS((int, int)); +extern int rl_abort (int, int); +extern int rl_tty_status (int, int); /* Bindable commands for incremental and non-incremental history searching. */ -extern int rl_history_search_forward PARAMS((int, int)); -extern int rl_history_search_backward PARAMS((int, int)); -extern int rl_history_substr_search_forward PARAMS((int, int)); -extern int rl_history_substr_search_backward PARAMS((int, int)); -extern int rl_noninc_forward_search PARAMS((int, int)); -extern int rl_noninc_reverse_search PARAMS((int, int)); -extern int rl_noninc_forward_search_again PARAMS((int, int)); -extern int rl_noninc_reverse_search_again PARAMS((int, int)); +extern int rl_history_search_forward (int, int); +extern int rl_history_search_backward (int, int); +extern int rl_history_substr_search_forward (int, int); +extern int rl_history_substr_search_backward (int, int); +extern int rl_noninc_forward_search (int, int); +extern int rl_noninc_reverse_search (int, int); +extern int rl_noninc_forward_search_again (int, int); +extern int rl_noninc_reverse_search_again (int, int); /* Bindable command used when inserting a matching close character. */ -extern int rl_insert_close PARAMS((int, int)); +extern int rl_insert_close (int, int); /* Not available unless READLINE_CALLBACKS is defined. */ -extern void rl_callback_handler_install PARAMS((const char *, rl_vcpfunc_t *)); -extern void rl_callback_read_char PARAMS((void)); -extern void rl_callback_handler_remove PARAMS((void)); -extern void rl_callback_sigcleanup PARAMS((void)); +extern void rl_callback_handler_install (const char *, rl_vcpfunc_t *); +extern void rl_callback_read_char (void); +extern void rl_callback_handler_remove (void); +extern void rl_callback_sigcleanup (void); /* Things for vi mode. Not available unless readline is compiled -DVI_MODE. */ /* VI-mode bindable commands. */ -extern int rl_vi_redo PARAMS((int, int)); -extern int rl_vi_undo PARAMS((int, int)); -extern int rl_vi_yank_arg PARAMS((int, int)); -extern int rl_vi_fetch_history PARAMS((int, int)); -extern int rl_vi_search_again PARAMS((int, int)); -extern int rl_vi_search PARAMS((int, int)); -extern int rl_vi_complete PARAMS((int, int)); -extern int rl_vi_tilde_expand PARAMS((int, int)); -extern int rl_vi_prev_word PARAMS((int, int)); -extern int rl_vi_next_word PARAMS((int, int)); -extern int rl_vi_end_word PARAMS((int, int)); -extern int rl_vi_insert_beg PARAMS((int, int)); -extern int rl_vi_append_mode PARAMS((int, int)); -extern int rl_vi_append_eol PARAMS((int, int)); -extern int rl_vi_eof_maybe PARAMS((int, int)); -extern int rl_vi_insertion_mode PARAMS((int, int)); -extern int rl_vi_insert_mode PARAMS((int, int)); -extern int rl_vi_movement_mode PARAMS((int, int)); -extern int rl_vi_arg_digit PARAMS((int, int)); -extern int rl_vi_change_case PARAMS((int, int)); -extern int rl_vi_put PARAMS((int, int)); -extern int rl_vi_column PARAMS((int, int)); -extern int rl_vi_delete_to PARAMS((int, int)); -extern int rl_vi_change_to PARAMS((int, int)); -extern int rl_vi_yank_to PARAMS((int, int)); -extern int rl_vi_yank_pop PARAMS((int, int)); -extern int rl_vi_rubout PARAMS((int, int)); -extern int rl_vi_delete PARAMS((int, int)); -extern int rl_vi_back_to_indent PARAMS((int, int)); -extern int rl_vi_unix_word_rubout PARAMS((int, int)); -extern int rl_vi_first_print PARAMS((int, int)); -extern int rl_vi_char_search PARAMS((int, int)); -extern int rl_vi_match PARAMS((int, int)); -extern int rl_vi_change_char PARAMS((int, int)); -extern int rl_vi_subst PARAMS((int, int)); -extern int rl_vi_overstrike PARAMS((int, int)); -extern int rl_vi_overstrike_delete PARAMS((int, int)); -extern int rl_vi_replace PARAMS((int, int)); -extern int rl_vi_set_mark PARAMS((int, int)); -extern int rl_vi_goto_mark PARAMS((int, int)); +extern int rl_vi_redo (int, int); +extern int rl_vi_undo (int, int); +extern int rl_vi_yank_arg (int, int); +extern int rl_vi_fetch_history (int, int); +extern int rl_vi_search_again (int, int); +extern int rl_vi_search (int, int); +extern int rl_vi_complete (int, int); +extern int rl_vi_tilde_expand (int, int); +extern int rl_vi_prev_word (int, int); +extern int rl_vi_next_word (int, int); +extern int rl_vi_end_word (int, int); +extern int rl_vi_insert_beg (int, int); +extern int rl_vi_append_mode (int, int); +extern int rl_vi_append_eol (int, int); +extern int rl_vi_eof_maybe (int, int); +extern int rl_vi_insertion_mode (int, int); +extern int rl_vi_insert_mode (int, int); +extern int rl_vi_movement_mode (int, int); +extern int rl_vi_arg_digit (int, int); +extern int rl_vi_change_case (int, int); +extern int rl_vi_put (int, int); +extern int rl_vi_column (int, int); +extern int rl_vi_delete_to (int, int); +extern int rl_vi_change_to (int, int); +extern int rl_vi_yank_to (int, int); +extern int rl_vi_yank_pop (int, int); +extern int rl_vi_rubout (int, int); +extern int rl_vi_delete (int, int); +extern int rl_vi_back_to_indent (int, int); +extern int rl_vi_unix_word_rubout (int, int); +extern int rl_vi_first_print (int, int); +extern int rl_vi_char_search (int, int); +extern int rl_vi_match (int, int); +extern int rl_vi_change_char (int, int); +extern int rl_vi_subst (int, int); +extern int rl_vi_overstrike (int, int); +extern int rl_vi_overstrike_delete (int, int); +extern int rl_vi_replace (int, int); +extern int rl_vi_set_mark (int, int); +extern int rl_vi_goto_mark (int, int); /* VI-mode utility functions. */ -extern int rl_vi_check PARAMS((void)); -extern int rl_vi_domove PARAMS((int, int *)); -extern int rl_vi_bracktype PARAMS((int)); +extern int rl_vi_check (void); +extern int rl_vi_domove (int, int *); +extern int rl_vi_bracktype (int); -extern void rl_vi_start_inserting PARAMS((int, int, int)); +extern void rl_vi_start_inserting (int, int, int); /* VI-mode pseudo-bindable commands, used as utility functions. */ -extern int rl_vi_fWord PARAMS((int, int)); -extern int rl_vi_bWord PARAMS((int, int)); -extern int rl_vi_eWord PARAMS((int, int)); -extern int rl_vi_fword PARAMS((int, int)); -extern int rl_vi_bword PARAMS((int, int)); -extern int rl_vi_eword PARAMS((int, int)); +extern int rl_vi_fWord (int, int); +extern int rl_vi_bWord (int, int); +extern int rl_vi_eWord (int, int); +extern int rl_vi_fword (int, int); +extern int rl_vi_bword (int, int); +extern int rl_vi_eword (int, int); /* **************************************************************** */ /* */ @@ -293,114 +294,115 @@ extern int rl_vi_eword PARAMS((int, int)); /* Readline functions. */ /* Read a line of input. Prompt with PROMPT. A NULL PROMPT means none. */ -extern char *readline PARAMS((const char *)); +extern char *readline (const char *); -extern int rl_set_prompt PARAMS((const char *)); -extern int rl_expand_prompt PARAMS((char *)); +extern int rl_set_prompt (const char *); +extern int rl_expand_prompt (char *); -extern int rl_initialize PARAMS((void)); +extern int rl_initialize (void); /* Undocumented; unused by readline */ -extern int rl_discard_argument PARAMS((void)); +extern int rl_discard_argument (void); /* Utility functions to bind keys to readline commands. */ -extern int rl_add_defun PARAMS((const char *, rl_command_func_t *, int)); -extern int rl_bind_key PARAMS((int, rl_command_func_t *)); -extern int rl_bind_key_in_map PARAMS((int, rl_command_func_t *, Keymap)); -extern int rl_unbind_key PARAMS((int)); -extern int rl_unbind_key_in_map PARAMS((int, Keymap)); -extern int rl_bind_key_if_unbound PARAMS((int, rl_command_func_t *)); -extern int rl_bind_key_if_unbound_in_map PARAMS((int, rl_command_func_t *, Keymap)); -extern int rl_unbind_function_in_map PARAMS((rl_command_func_t *, Keymap)); -extern int rl_unbind_command_in_map PARAMS((const char *, Keymap)); -extern int rl_bind_keyseq PARAMS((const char *, rl_command_func_t *)); -extern int rl_bind_keyseq_in_map PARAMS((const char *, rl_command_func_t *, Keymap)); -extern int rl_bind_keyseq_if_unbound PARAMS((const char *, rl_command_func_t *)); -extern int rl_bind_keyseq_if_unbound_in_map PARAMS((const char *, rl_command_func_t *, Keymap)); -extern int rl_generic_bind PARAMS((int, const char *, char *, Keymap)); - -extern char *rl_variable_value PARAMS((const char *)); -extern int rl_variable_bind PARAMS((const char *, const char *)); +extern int rl_add_defun (const char *, rl_command_func_t *, int); +extern int rl_bind_key (int, rl_command_func_t *); +extern int rl_bind_key_in_map (int, rl_command_func_t *, Keymap); +extern int rl_unbind_key (int); +extern int rl_unbind_key_in_map (int, Keymap); +extern int rl_bind_key_if_unbound (int, rl_command_func_t *); +extern int rl_bind_key_if_unbound_in_map (int, rl_command_func_t *, Keymap); +extern int rl_unbind_function_in_map (rl_command_func_t *, Keymap); +extern int rl_unbind_command_in_map (const char *, Keymap); +extern int rl_bind_keyseq (const char *, rl_command_func_t *); +extern int rl_bind_keyseq_in_map (const char *, rl_command_func_t *, Keymap); +extern int rl_bind_keyseq_if_unbound (const char *, rl_command_func_t *); +extern int rl_bind_keyseq_if_unbound_in_map (const char *, rl_command_func_t *, Keymap); +extern int rl_generic_bind (int, const char *, char *, Keymap); + +extern char *rl_variable_value (const char *); +extern int rl_variable_bind (const char *, const char *); /* Backwards compatibility, use rl_bind_keyseq_in_map instead. */ -extern int rl_set_key PARAMS((const char *, rl_command_func_t *, Keymap)); +extern int rl_set_key (const char *, rl_command_func_t *, Keymap); /* Backwards compatibility, use rl_generic_bind instead. */ -extern int rl_macro_bind PARAMS((const char *, const char *, Keymap)); +extern int rl_macro_bind (const char *, const char *, Keymap); /* Undocumented in the texinfo manual; not really useful to programs. */ -extern int rl_translate_keyseq PARAMS((const char *, char *, int *)); -extern char *rl_untranslate_keyseq PARAMS((int)); +extern int rl_translate_keyseq (const char *, char *, int *); +extern char *rl_untranslate_keyseq (int); -extern rl_command_func_t *rl_named_function PARAMS((const char *)); -extern rl_command_func_t *rl_function_of_keyseq PARAMS((const char *, Keymap, int *)); -extern rl_command_func_t *rl_function_of_keyseq_len PARAMS((const char *, size_t, Keymap, int *)); +extern rl_command_func_t *rl_named_function (const char *); +extern rl_command_func_t *rl_function_of_keyseq (const char *, Keymap, int *); +extern rl_command_func_t *rl_function_of_keyseq_len (const char *, size_t, Keymap, int *); +extern int rl_trim_arg_from_keyseq (const char *, size_t, Keymap); -extern void rl_list_funmap_names PARAMS((void)); -extern char **rl_invoking_keyseqs_in_map PARAMS((rl_command_func_t *, Keymap)); -extern char **rl_invoking_keyseqs PARAMS((rl_command_func_t *)); +extern void rl_list_funmap_names (void); +extern char **rl_invoking_keyseqs_in_map (rl_command_func_t *, Keymap); +extern char **rl_invoking_keyseqs (rl_command_func_t *); -extern void rl_function_dumper PARAMS((int)); -extern void rl_macro_dumper PARAMS((int)); -extern void rl_variable_dumper PARAMS((int)); +extern void rl_function_dumper (int); +extern void rl_macro_dumper (int); +extern void rl_variable_dumper (int); -extern int rl_read_init_file PARAMS((const char *)); -extern int rl_parse_and_bind PARAMS((char *)); +extern int rl_read_init_file (const char *); +extern int rl_parse_and_bind (char *); /* Functions for manipulating keymaps. */ -extern Keymap rl_make_bare_keymap PARAMS((void)); -extern int rl_empty_keymap PARAMS((Keymap)); -extern Keymap rl_copy_keymap PARAMS((Keymap)); -extern Keymap rl_make_keymap PARAMS((void)); -extern void rl_discard_keymap PARAMS((Keymap)); -extern void rl_free_keymap PARAMS((Keymap)); +extern Keymap rl_make_bare_keymap (void); +extern int rl_empty_keymap (Keymap); +extern Keymap rl_copy_keymap (Keymap); +extern Keymap rl_make_keymap (void); +extern void rl_discard_keymap (Keymap); +extern void rl_free_keymap (Keymap); -extern Keymap rl_get_keymap_by_name PARAMS((const char *)); -extern char *rl_get_keymap_name PARAMS((Keymap)); -extern void rl_set_keymap PARAMS((Keymap)); -extern Keymap rl_get_keymap PARAMS((void)); +extern Keymap rl_get_keymap_by_name (const char *); +extern char *rl_get_keymap_name (Keymap); +extern void rl_set_keymap (Keymap); +extern Keymap rl_get_keymap (void); -extern int rl_set_keymap_name PARAMS((const char *, Keymap)); +extern int rl_set_keymap_name (const char *, Keymap); /* Undocumented; used internally only. */ -extern void rl_set_keymap_from_edit_mode PARAMS((void)); -extern char *rl_get_keymap_name_from_edit_mode PARAMS((void)); +extern void rl_set_keymap_from_edit_mode (void); +extern char *rl_get_keymap_name_from_edit_mode (void); /* Functions for manipulating the funmap, which maps command names to functions. */ -extern int rl_add_funmap_entry PARAMS((const char *, rl_command_func_t *)); -extern const char **rl_funmap_names PARAMS((void)); +extern int rl_add_funmap_entry (const char *, rl_command_func_t *); +extern const char **rl_funmap_names (void); /* Undocumented, only used internally -- there is only one funmap, and this function may be called only once. */ -extern void rl_initialize_funmap PARAMS((void)); +extern void rl_initialize_funmap (void); /* Utility functions for managing keyboard macros. */ -extern void rl_push_macro_input PARAMS((char *)); +extern void rl_push_macro_input (char *); /* Functions for undoing, from undo.c */ -extern void rl_add_undo PARAMS((enum undo_code, int, int, char *)); -extern void rl_free_undo_list PARAMS((void)); -extern int rl_do_undo PARAMS((void)); -extern int rl_begin_undo_group PARAMS((void)); -extern int rl_end_undo_group PARAMS((void)); -extern int rl_modifying PARAMS((int, int)); +extern void rl_add_undo (enum undo_code, int, int, char *); +extern void rl_free_undo_list (void); +extern int rl_do_undo (void); +extern int rl_begin_undo_group (void); +extern int rl_end_undo_group (void); +extern int rl_modifying (int, int); /* Functions for redisplay. */ -extern void rl_redisplay PARAMS((void)); -extern int rl_on_new_line PARAMS((void)); -extern int rl_on_new_line_with_prompt PARAMS((void)); -extern int rl_forced_update_display PARAMS((void)); -extern int rl_clear_visible_line PARAMS((void)); -extern int rl_clear_message PARAMS((void)); -extern int rl_reset_line_state PARAMS((void)); -extern int rl_crlf PARAMS((void)); +extern void rl_redisplay (void); +extern int rl_on_new_line (void); +extern int rl_on_new_line_with_prompt (void); +extern int rl_forced_update_display (void); +extern int rl_clear_visible_line (void); +extern int rl_clear_message (void); +extern int rl_reset_line_state (void); +extern int rl_crlf (void); /* Functions to manage the mark and region, especially the notion of an active mark and an active region. */ -extern void rl_keep_mark_active PARAMS((void)); +extern void rl_keep_mark_active (void); -extern void rl_activate_mark PARAMS((void)); -extern void rl_deactivate_mark PARAMS((void)); -extern int rl_mark_active_p PARAMS((void)); +extern void rl_activate_mark (void); +extern void rl_deactivate_mark (void); +extern int rl_mark_active_p (void); #if defined (USE_VARARGS) && defined (PREFER_STDARG) extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, 2))); @@ -408,99 +410,106 @@ extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, extern int rl_message (); #endif -extern int rl_show_char PARAMS((int)); +extern int rl_show_char (int); /* Undocumented in texinfo manual. */ -extern int rl_character_len PARAMS((int, int)); -extern void rl_redraw_prompt_last_line PARAMS((void)); +extern int rl_character_len (int, int); +extern void rl_redraw_prompt_last_line (void); /* Save and restore internal prompt redisplay information. */ -extern void rl_save_prompt PARAMS((void)); -extern void rl_restore_prompt PARAMS((void)); +extern void rl_save_prompt (void); +extern void rl_restore_prompt (void); /* Modifying text. */ -extern void rl_replace_line PARAMS((const char *, int)); -extern int rl_insert_text PARAMS((const char *)); -extern int rl_delete_text PARAMS((int, int)); -extern int rl_kill_text PARAMS((int, int)); -extern char *rl_copy_text PARAMS((int, int)); +extern void rl_replace_line (const char *, int); +extern int rl_insert_text (const char *); +extern int rl_delete_text (int, int); +extern int rl_kill_text (int, int); +extern char *rl_copy_text (int, int); /* Terminal and tty mode management. */ -extern void rl_prep_terminal PARAMS((int)); -extern void rl_deprep_terminal PARAMS((void)); -extern void rl_tty_set_default_bindings PARAMS((Keymap)); -extern void rl_tty_unset_default_bindings PARAMS((Keymap)); +extern void rl_prep_terminal (int); +extern void rl_deprep_terminal (void); +extern void rl_tty_set_default_bindings (Keymap); +extern void rl_tty_unset_default_bindings (Keymap); -extern int rl_tty_set_echoing PARAMS((int)); -extern int rl_reset_terminal PARAMS((const char *)); -extern void rl_resize_terminal PARAMS((void)); -extern void rl_set_screen_size PARAMS((int, int)); -extern void rl_get_screen_size PARAMS((int *, int *)); -extern void rl_reset_screen_size PARAMS((void)); +extern int rl_tty_set_echoing (int); +extern int rl_reset_terminal (const char *); +extern void rl_resize_terminal (void); +extern void rl_set_screen_size (int, int); +extern void rl_get_screen_size (int *, int *); +extern void rl_reset_screen_size (void); -extern char *rl_get_termcap PARAMS((const char *)); +extern char *rl_get_termcap (const char *); /* Functions for character input. */ -extern int rl_stuff_char PARAMS((int)); -extern int rl_execute_next PARAMS((int)); -extern int rl_clear_pending_input PARAMS((void)); -extern int rl_read_key PARAMS((void)); -extern int rl_getc PARAMS((FILE *)); -extern int rl_set_keyboard_input_timeout PARAMS((int)); +extern int rl_stuff_char (int); +extern int rl_execute_next (int); +extern int rl_clear_pending_input (void); +extern int rl_read_key (void); +extern int rl_getc (FILE *); +extern int rl_set_keyboard_input_timeout (int); + +/* Functions to set and reset timeouts. */ +extern int rl_set_timeout (unsigned int, unsigned int); +extern int rl_timeout_remaining (unsigned int *, unsigned int *); + +#undef rl_clear_timeout +#define rl_clear_timeout() rl_set_timeout (0, 0) /* `Public' utility functions . */ -extern void rl_extend_line_buffer PARAMS((int)); -extern int rl_ding PARAMS((void)); -extern int rl_alphabetic PARAMS((int)); -extern void rl_free PARAMS((void *)); +extern void rl_extend_line_buffer (int); +extern int rl_ding (void); +extern int rl_alphabetic (int); +extern void rl_free (void *); /* Readline signal handling, from signals.c */ -extern int rl_set_signals PARAMS((void)); -extern int rl_clear_signals PARAMS((void)); -extern void rl_cleanup_after_signal PARAMS((void)); -extern void rl_reset_after_signal PARAMS((void)); -extern void rl_free_line_state PARAMS((void)); +extern int rl_set_signals (void); +extern int rl_clear_signals (void); +extern void rl_cleanup_after_signal (void); +extern void rl_reset_after_signal (void); +extern void rl_free_line_state (void); -extern int rl_pending_signal PARAMS((void)); -extern void rl_check_signals PARAMS((void)); +extern int rl_pending_signal (void); +extern void rl_check_signals (void); -extern void rl_echo_signal_char PARAMS((int)); +extern void rl_echo_signal_char (int); -extern int rl_set_paren_blink_timeout PARAMS((int)); +extern int rl_set_paren_blink_timeout (int); /* History management functions. */ -extern void rl_clear_history PARAMS((void)); +extern void rl_clear_history (void); /* Undocumented. */ -extern int rl_maybe_save_line PARAMS((void)); -extern int rl_maybe_unsave_line PARAMS((void)); -extern int rl_maybe_replace_line PARAMS((void)); +extern int rl_maybe_save_line (void); +extern int rl_maybe_unsave_line (void); +extern int rl_maybe_replace_line (void); /* Completion functions. */ -extern int rl_complete_internal PARAMS((int)); -extern void rl_display_match_list PARAMS((char **, int, int)); +extern int rl_complete_internal (int); +extern void rl_display_match_list (char **, int, int); -extern char **rl_completion_matches PARAMS((const char *, rl_compentry_func_t *)); -extern char *rl_username_completion_function PARAMS((const char *, int)); -extern char *rl_filename_completion_function PARAMS((const char *, int)); +extern char **rl_completion_matches (const char *, rl_compentry_func_t *); +extern char *rl_username_completion_function (const char *, int); +extern char *rl_filename_completion_function (const char *, int); -extern int rl_completion_mode PARAMS((rl_command_func_t *)); +extern int rl_completion_mode (rl_command_func_t *); #if 0 /* Backwards compatibility (compat.c). These will go away sometime. */ -extern void free_undo_list PARAMS((void)); -extern int maybe_save_line PARAMS((void)); -extern int maybe_unsave_line PARAMS((void)); -extern int maybe_replace_line PARAMS((void)); - -extern int ding PARAMS((void)); -extern int alphabetic PARAMS((int)); -extern int crlf PARAMS((void)); - -extern char **completion_matches PARAMS((char *, rl_compentry_func_t *)); -extern char *username_completion_function PARAMS((const char *, int)); -extern char *filename_completion_function PARAMS((const char *, int)); +extern void free_undo_list (void); +extern int maybe_save_line (void); +extern int maybe_unsave_line (void); +extern int maybe_replace_line (void); + +extern int ding (void); +extern int alphabetic (int); +extern int crlf (void); + +extern char **completion_matches (char *, rl_compentry_func_t *); +extern char *username_completion_function (const char *, int); +extern char *filename_completion_function (const char *, int); #endif /* **************************************************************** */ @@ -553,6 +562,10 @@ extern int rl_mark; line and should return it. */ extern int rl_done; +/* Flag to indicate that readline has read an EOF character or read has + returned 0 or error, and is returning a NULL line as a result. */ +extern int rl_eof_found; + /* If set to a character value, that will be the next keystroke read. */ extern int rl_pending_input; @@ -599,6 +612,8 @@ extern rl_hook_func_t *rl_event_hook; /* The address of a function to call if a read is interrupted by a signal. */ extern rl_hook_func_t *rl_signal_event_hook; +extern rl_hook_func_t *rl_timeout_event_hook; + /* The address of a function to call if Readline needs to know whether or not there is data available from the current input source. */ extern rl_hook_func_t *rl_input_available_hook; @@ -689,7 +704,7 @@ extern const char *rl_basic_word_break_characters; /* The list of characters that signal a break between words for rl_complete_internal. The default list is the contents of rl_basic_word_break_characters. */ -extern /*const*/ char *rl_completer_word_break_characters; +extern const char *rl_completer_word_break_characters; /* Hook function to allow an application to set the completion word break characters before readline breaks up the line. Allows @@ -906,6 +921,8 @@ extern int rl_persistent_signal_handlers; #define RL_STATE_REDISPLAYING 0x1000000 /* updating terminal display */ #define RL_STATE_DONE 0x2000000 /* done; accepted line */ +#define RL_STATE_TIMEOUT 0x4000000 /* done; timed out */ +#define RL_STATE_EOF 0x8000000 /* done; got eof on read */ #define RL_SETSTATE(x) (rl_readline_state |= (x)) #define RL_UNSETSTATE(x) (rl_readline_state &= ~(x)) @@ -949,7 +966,7 @@ struct readline_state { rl_compentry_func_t *menuentryfunc; rl_compignore_func_t *ignorefunc; rl_completion_func_t *attemptfunc; - char *wordbreakchars; + const char *wordbreakchars; /* options state */ @@ -959,8 +976,8 @@ struct readline_state { char reserved[64]; }; -extern int rl_save_state PARAMS((struct readline_state *)); -extern int rl_restore_state PARAMS((struct readline_state *)); +extern int rl_save_state (struct readline_state *); +extern int rl_restore_state (struct readline_state *); #ifdef __cplusplus } diff --git a/lib/readline/rldefs.h b/lib/readline/rldefs.h index dab1beba1..98577a64b 100644 --- a/lib/readline/rldefs.h +++ b/lib/readline/rldefs.h @@ -2,7 +2,7 @@ for readline. This should be included after any files that define system-specific constants like _POSIX_VERSION or USG. */ -/* Copyright (C) 1987-2011 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -79,14 +79,14 @@ extern char *strchr (), *strrchr (); #define _rl_stricmp strcasecmp #define _rl_strnicmp strncasecmp #else -extern int _rl_stricmp PARAMS((const char *, const char *)); -extern int _rl_strnicmp PARAMS((const char *, const char *, int)); +extern int _rl_stricmp (const char *, const char *); +extern int _rl_strnicmp (const char *, const char *, int); #endif #if defined (HAVE_STRPBRK) && !defined (HAVE_MULTIBYTE) # define _rl_strpbrk(a,b) strpbrk((a),(b)) #else -extern char *_rl_strpbrk PARAMS((const char *, const char *)); +extern char *_rl_strpbrk (const char *, const char *); #endif #if !defined (emacs_mode) diff --git a/lib/readline/rlmbutil.h b/lib/readline/rlmbutil.h index 4d3e90706..d9060572e 100644 --- a/lib/readline/rlmbutil.h +++ b/lib/readline/rlmbutil.h @@ -1,6 +1,6 @@ /* rlmbutil.h -- utility functions for multibyte characters. */ -/* Copyright (C) 2001-2015 Free Software Foundation, Inc. +/* Copyright (C) 2001-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -81,6 +81,19 @@ /* end of multibyte capability checks for I18N */ /************************************************/ +/* + * wchar_t doesn't work for 32-bit values on Windows using MSVC + */ +#ifdef WCHAR_T_BROKEN +# define WCHAR_T char32_t +# define MBRTOWC mbrtoc32 +# define WCRTOMB c32rtomb +#else /* normal systems */ +# define WCHAR_T wchar_t +# define MBRTOWC mbrtowc +# define WCRTOMB wcrtomb +#endif + /* * Flags for _rl_find_prev_mbchar and _rl_find_next_mbchar: * @@ -91,22 +104,22 @@ #define MB_FIND_ANY 0x00 #define MB_FIND_NONZERO 0x01 -extern int _rl_find_prev_mbchar PARAMS((char *, int, int)); -extern int _rl_find_next_mbchar PARAMS((char *, int, int, int)); +extern int _rl_find_prev_mbchar (char *, int, int); +extern int _rl_find_next_mbchar (char *, int, int, int); #ifdef HANDLE_MULTIBYTE -extern int _rl_compare_chars PARAMS((char *, int, mbstate_t *, char *, int, mbstate_t *)); -extern int _rl_get_char_len PARAMS((char *, mbstate_t *)); -extern int _rl_adjust_point PARAMS((char *, int, mbstate_t *)); +extern int _rl_compare_chars (char *, int, mbstate_t *, char *, int, mbstate_t *); +extern int _rl_get_char_len (char *, mbstate_t *); +extern int _rl_adjust_point (char *, int, mbstate_t *); -extern int _rl_read_mbchar PARAMS((char *, int)); -extern int _rl_read_mbstring PARAMS((int, char *, int)); +extern int _rl_read_mbchar (char *, int); +extern int _rl_read_mbstring (int, char *, int); -extern int _rl_is_mbchar_matched PARAMS((char *, int, int, char *, int)); +extern int _rl_is_mbchar_matched (char *, int, int, char *, int); -extern wchar_t _rl_char_value PARAMS((char *, int)); -extern int _rl_walphabetic PARAMS((wchar_t)); +extern WCHAR_T _rl_char_value (char *, int); +extern int _rl_walphabetic (WCHAR_T); #define _rl_to_wupper(wc) (iswlower (wc) ? towupper (wc) : (wc)) #define _rl_to_wlower(wc) (iswupper (wc) ? towlower (wc) : (wc)) @@ -126,8 +139,7 @@ extern int _rl_walphabetic PARAMS((wchar_t)); /* Try and shortcut the printable ascii characters to cut down the number of calls to a libc wcwidth() */ static inline int -_rl_wcwidth (wc) - wchar_t wc; +_rl_wcwidth (WCHAR_T wc) { switch (wc) { diff --git a/lib/readline/rlprivate.h b/lib/readline/rlprivate.h index 23ab2d8ce..d87d07a72 100644 --- a/lib/readline/rlprivate.h +++ b/lib/readline/rlprivate.h @@ -1,10 +1,10 @@ /* rlprivate.h -- functions and variables global to the readline library, but not intended for use by applications. */ -/* Copyright (C) 1999-2020 Free Software Foundation, Inc. +/* Copyright (C) 1999-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library - for reading lines of text with interactive input and history editing. + for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -78,7 +78,7 @@ typedef struct __rl_search_context int search_string_size; char **lines; - char *allocated_line; + char *allocated_line; int hlen; int hindex; @@ -169,16 +169,16 @@ typedef struct __rl_vimotion_context /* fill in more as needed */ /* `Generic' callback data and functions */ -typedef struct __rl_callback_generic_arg +typedef struct __rl_callback_generic_arg { int count; int i1, i2; /* add here as needed */ } _rl_callback_generic_arg; -typedef int _rl_callback_func_t PARAMS((_rl_callback_generic_arg *)); +typedef int _rl_callback_func_t (_rl_callback_generic_arg *); -typedef void _rl_sigcleanup_func_t PARAMS((int, void *)); +typedef void _rl_sigcleanup_func_t (int, void *); /************************************************************************* * * @@ -221,16 +221,16 @@ extern int rl_blink_matching_paren; *************************************************************************/ /* kill.c */ -extern int rl_set_retained_kills PARAMS((int)); +extern int rl_set_retained_kills (int); /* terminal.c */ -extern void _rl_set_screen_size PARAMS((int, int)); +extern void _rl_set_screen_size (int, int); /* undo.c */ -extern int _rl_fix_last_undo_of_type PARAMS((int, int, int)); +extern int _rl_fix_last_undo_of_type (int, int, int); /* util.c */ -extern char *_rl_savestring PARAMS((const char *)); +extern char *_rl_savestring (const char *); /************************************************************************* * * @@ -250,66 +250,73 @@ extern char *_rl_savestring PARAMS((const char *)); #if defined(READLINE_CALLBACKS) /* readline.c */ -extern void readline_internal_setup PARAMS((void)); -extern char *readline_internal_teardown PARAMS((int)); -extern int readline_internal_char PARAMS((void)); +extern void readline_internal_setup (void); +extern char *readline_internal_teardown (int); +extern int readline_internal_char (void); -extern _rl_keyseq_cxt *_rl_keyseq_cxt_alloc PARAMS((void)); -extern void _rl_keyseq_cxt_dispose PARAMS((_rl_keyseq_cxt *)); -extern void _rl_keyseq_chain_dispose PARAMS((void)); +extern _rl_keyseq_cxt *_rl_keyseq_cxt_alloc (void); +extern void _rl_keyseq_cxt_dispose (_rl_keyseq_cxt *); +extern void _rl_keyseq_chain_dispose (void); + +extern int _rl_dispatch_callback (_rl_keyseq_cxt *); -extern int _rl_dispatch_callback PARAMS((_rl_keyseq_cxt *)); - /* callback.c */ -extern _rl_callback_generic_arg *_rl_callback_data_alloc PARAMS((int)); -extern void _rl_callback_data_dispose PARAMS((_rl_callback_generic_arg *)); +extern _rl_callback_generic_arg *_rl_callback_data_alloc (int); +extern void _rl_callback_data_dispose (_rl_callback_generic_arg *); #endif /* READLINE_CALLBACKS */ /* bind.c */ -extern char *_rl_untranslate_macro_value PARAMS((char *, int)); +extern char *_rl_untranslate_macro_value (char *, int); /* complete.c */ -extern void _rl_reset_completion_state PARAMS((void)); -extern char _rl_find_completion_word PARAMS((int *, int *)); -extern void _rl_free_match_list PARAMS((char **)); +extern void _rl_reset_completion_state (void); +extern char _rl_find_completion_word (int *, int *); +extern void _rl_free_match_list (char **); /* display.c */ -extern char *_rl_strip_prompt PARAMS((char *)); -extern void _rl_reset_prompt PARAMS((void)); -extern void _rl_move_vert PARAMS((int)); -extern void _rl_save_prompt PARAMS((void)); -extern void _rl_restore_prompt PARAMS((void)); -extern char *_rl_make_prompt_for_search PARAMS((int)); -extern void _rl_erase_at_end_of_line PARAMS((int)); -extern void _rl_clear_to_eol PARAMS((int)); -extern void _rl_clear_screen PARAMS((int)); -extern void _rl_update_final PARAMS((void)); -extern void _rl_optimize_redisplay PARAMS((void)); -extern void _rl_redisplay_after_sigwinch PARAMS((void)); -extern void _rl_clean_up_for_exit PARAMS((void)); -extern void _rl_erase_entire_line PARAMS((void)); -extern int _rl_current_display_line PARAMS((void)); -extern void _rl_refresh_line PARAMS((void)); +extern char *_rl_strip_prompt (char *); +extern void _rl_reset_prompt (void); +extern void _rl_move_vert (int); +extern void _rl_save_prompt (void); +extern void _rl_restore_prompt (void); +extern char *_rl_make_prompt_for_search (int); +extern void _rl_erase_at_end_of_line (int); +extern void _rl_clear_to_eol (int); +extern void _rl_clear_screen (int); +extern void _rl_update_final (void); +extern void _rl_optimize_redisplay (void); +extern void _rl_redisplay_after_sigwinch (void); +extern void _rl_clean_up_for_exit (void); +extern void _rl_erase_entire_line (void); +extern int _rl_current_display_line (void); +extern void _rl_refresh_line (void); /* input.c */ -extern int _rl_any_typein PARAMS((void)); -extern int _rl_input_available PARAMS((void)); -extern int _rl_nchars_available PARAMS((void)); -extern int _rl_input_queued PARAMS((int)); -extern void _rl_insert_typein PARAMS((int)); -extern int _rl_unget_char PARAMS((int)); -extern int _rl_pushed_input_available PARAMS((void)); +extern int _rl_any_typein (void); +extern int _rl_input_available (void); +extern int _rl_nchars_available (void); +extern int _rl_input_queued (int); +extern void _rl_insert_typein (int); +extern int _rl_unget_char (int); +extern int _rl_pushed_input_available (void); + +extern int _rl_timeout_init (void); +extern int _rl_timeout_handle_sigalrm (void); +#if defined (_POSIXSELECT_H_) +/* use as a sentinel for fd_set, struct timeval, and sigset_t definitions */ +extern int _rl_timeout_select (int, fd_set *, fd_set *, fd_set *, const struct timeval *, const sigset_t *); +#endif /* isearch.c */ -extern _rl_search_cxt *_rl_scxt_alloc PARAMS((int, int)); -extern void _rl_scxt_dispose PARAMS((_rl_search_cxt *, int)); +extern _rl_search_cxt *_rl_scxt_alloc (int, int); +extern void _rl_scxt_dispose (_rl_search_cxt *, int); -extern int _rl_isearch_dispatch PARAMS((_rl_search_cxt *, int)); -extern int _rl_isearch_callback PARAMS((_rl_search_cxt *)); -extern int _rl_isearch_cleanup PARAMS((_rl_search_cxt *, int)); +extern int _rl_isearch_dispatch (_rl_search_cxt *, int); +extern int _rl_isearch_callback (_rl_search_cxt *); +extern int _rl_isearch_cleanup (_rl_search_cxt *, int); -extern int _rl_search_getchar PARAMS((_rl_search_cxt *)); +extern int _rl_search_getchar (_rl_search_cxt *); /* kill.c */ #ifndef BRACKETED_PASTE_DEFAULT @@ -325,110 +332,117 @@ extern int _rl_search_getchar PARAMS((_rl_search_cxt *)); #define BRACK_PASTE_INIT "\033[?2004h" #define BRACK_PASTE_FINI "\033[?2004l\r" -extern int _rl_read_bracketed_paste_prefix PARAMS((int)); -extern char *_rl_bracketed_text PARAMS((size_t *)); -extern int _rl_bracketed_read_key PARAMS((void)); -extern int _rl_bracketed_read_mbstring PARAMS((char *, int)); +extern int _rl_read_bracketed_paste_prefix (int); +extern char *_rl_bracketed_text (size_t *); +extern int _rl_bracketed_read_key (void); +extern int _rl_bracketed_read_mbstring (char *, int); /* macro.c */ -extern void _rl_with_macro_input PARAMS((char *)); -extern int _rl_peek_macro_key PARAMS((void)); -extern int _rl_next_macro_key PARAMS((void)); -extern int _rl_prev_macro_key PARAMS((void)); -extern void _rl_push_executing_macro PARAMS((void)); -extern void _rl_pop_executing_macro PARAMS((void)); -extern void _rl_add_macro_char PARAMS((int)); -extern void _rl_kill_kbd_macro PARAMS((void)); +extern void _rl_with_macro_input (char *); +extern int _rl_peek_macro_key (void); +extern int _rl_next_macro_key (void); +extern int _rl_prev_macro_key (void); +extern void _rl_push_executing_macro (void); +extern void _rl_pop_executing_macro (void); +extern void _rl_add_macro_char (int); +extern void _rl_kill_kbd_macro (void); /* misc.c */ -extern int _rl_arg_overflow PARAMS((void)); -extern void _rl_arg_init PARAMS((void)); -extern int _rl_arg_getchar PARAMS((void)); -extern int _rl_arg_callback PARAMS((_rl_arg_cxt)); -extern void _rl_reset_argument PARAMS((void)); +extern int _rl_arg_overflow (void); +extern void _rl_arg_init (void); +extern int _rl_arg_getchar (void); +extern int _rl_arg_callback (_rl_arg_cxt); +extern void _rl_reset_argument (void); -extern void _rl_start_using_history PARAMS((void)); -extern int _rl_free_saved_history_line PARAMS((void)); -extern void _rl_set_insert_mode PARAMS((int, int)); +extern void _rl_start_using_history (void); +extern int _rl_free_saved_history_line (void); +extern void _rl_set_insert_mode (int, int); -extern void _rl_revert_previous_lines PARAMS((void)); -extern void _rl_revert_all_lines PARAMS((void)); +extern void _rl_revert_previous_lines (void); +extern void _rl_revert_all_lines (void); /* nls.c */ -extern char *_rl_init_locale PARAMS((void)); -extern int _rl_init_eightbit PARAMS((void)); +extern char *_rl_init_locale (void); +extern int _rl_init_eightbit (void); +extern void _rl_reset_locale (void); /* parens.c */ -extern void _rl_enable_paren_matching PARAMS((int)); +extern void _rl_enable_paren_matching (int); /* readline.c */ -extern void _rl_init_line_state PARAMS((void)); -extern void _rl_set_the_line PARAMS((void)); -extern int _rl_dispatch PARAMS((int, Keymap)); -extern int _rl_dispatch_subseq PARAMS((int, Keymap, int)); -extern void _rl_internal_char_cleanup PARAMS((void)); +extern void _rl_init_line_state (void); +extern void _rl_set_the_line (void); +extern int _rl_dispatch (int, Keymap); +extern int _rl_dispatch_subseq (int, Keymap, int); +extern void _rl_internal_char_cleanup (void); + +extern void _rl_init_executing_keyseq (void); +extern void _rl_term_executing_keyseq (void); +extern void _rl_end_executing_keyseq (void); +extern void _rl_add_executing_keyseq (int); +extern void _rl_del_executing_keyseq (void); -extern void _rl_init_executing_keyseq PARAMS((void)); -extern void _rl_term_executing_keyseq PARAMS((void)); -extern void _rl_end_executing_keyseq PARAMS((void)); -extern void _rl_add_executing_keyseq PARAMS((int)); +extern rl_command_func_t *_rl_executing_func; /* rltty.c */ -extern int _rl_disable_tty_signals PARAMS((void)); -extern int _rl_restore_tty_signals PARAMS((void)); +extern int _rl_disable_tty_signals (void); +extern int _rl_restore_tty_signals (void); /* search.c */ -extern int _rl_nsearch_callback PARAMS((_rl_search_cxt *)); -extern int _rl_nsearch_cleanup PARAMS((_rl_search_cxt *, int)); +extern int _rl_nsearch_callback (_rl_search_cxt *); +extern int _rl_nsearch_cleanup (_rl_search_cxt *, int); /* signals.c */ -extern void _rl_signal_handler PARAMS((int)); +extern void _rl_signal_handler (int); -extern void _rl_block_sigint PARAMS((void)); -extern void _rl_release_sigint PARAMS((void)); -extern void _rl_block_sigwinch PARAMS((void)); -extern void _rl_release_sigwinch PARAMS((void)); +extern void _rl_block_sigint (void); +extern void _rl_release_sigint (void); +extern void _rl_block_sigwinch (void); +extern void _rl_release_sigwinch (void); /* terminal.c */ -extern void _rl_get_screen_size PARAMS((int, int)); -extern void _rl_sigwinch_resize_terminal PARAMS((void)); -extern int _rl_init_terminal_io PARAMS((const char *)); +extern void _rl_get_screen_size (int, int); +extern void _rl_sigwinch_resize_terminal (void); +extern int _rl_init_terminal_io (const char *); #ifdef _MINIX -extern void _rl_output_character_function PARAMS((int)); +extern void _rl_output_character_function (int); #else -extern int _rl_output_character_function PARAMS((int)); +extern int _rl_output_character_function (int); #endif -extern void _rl_cr PARAMS((void)); -extern void _rl_output_some_chars PARAMS((const char *, int)); -extern int _rl_backspace PARAMS((int)); -extern void _rl_enable_meta_key PARAMS((void)); -extern void _rl_disable_meta_key PARAMS((void)); -extern void _rl_control_keypad PARAMS((int)); -extern void _rl_set_cursor PARAMS((int, int)); -extern void _rl_standout_on PARAMS((void)); -extern void _rl_standout_off PARAMS((void)); +extern void _rl_cr (void); +extern void _rl_output_some_chars (const char *, int); +extern int _rl_backspace (int); +extern void _rl_enable_meta_key (void); +extern void _rl_disable_meta_key (void); +extern void _rl_control_keypad (int); +extern void _rl_set_cursor (int, int); +extern void _rl_standout_on (void); +extern void _rl_standout_off (void); +extern int _rl_reset_region_color (int, const char *); +extern void _rl_region_color_on (void); +extern void _rl_region_color_off (void); /* text.c */ -extern void _rl_fix_point PARAMS((int)); -extern void _rl_fix_mark PARAMS((void)); -extern int _rl_replace_text PARAMS((const char *, int, int)); -extern int _rl_forward_char_internal PARAMS((int)); -extern int _rl_backward_char_internal PARAMS((int)); -extern int _rl_insert_char PARAMS((int, int)); -extern int _rl_overwrite_char PARAMS((int, int)); -extern int _rl_overwrite_rubout PARAMS((int, int)); -extern int _rl_rubout_char PARAMS((int, int)); +extern void _rl_fix_point (int); +extern void _rl_fix_mark (void); +extern int _rl_replace_text (const char *, int, int); +extern int _rl_forward_char_internal (int); +extern int _rl_backward_char_internal (int); +extern int _rl_insert_char (int, int); +extern int _rl_overwrite_char (int, int); +extern int _rl_overwrite_rubout (int, int); +extern int _rl_rubout_char (int, int); #if defined (HANDLE_MULTIBYTE) -extern int _rl_char_search_internal PARAMS((int, int, char *, int)); +extern int _rl_char_search_internal (int, int, char *, int); #else -extern int _rl_char_search_internal PARAMS((int, int, int)); +extern int _rl_char_search_internal (int, int, int); #endif -extern int _rl_set_mark_at_pos PARAMS((int)); +extern int _rl_set_mark_at_pos (int); /* undo.c */ -extern UNDO_LIST *_rl_copy_undo_entry PARAMS((UNDO_LIST *)); -extern UNDO_LIST *_rl_copy_undo_list PARAMS((UNDO_LIST *)); -extern void _rl_free_undo_list PARAMS((UNDO_LIST *)); +extern UNDO_LIST *_rl_copy_undo_entry (UNDO_LIST *); +extern UNDO_LIST *_rl_copy_undo_list (UNDO_LIST *); +extern void _rl_free_undo_list (UNDO_LIST *); /* util.c */ #if defined (USE_VARARGS) && defined (PREFER_STDARG) @@ -440,31 +454,37 @@ extern void _rl_ttymsg (); extern void _rl_errmsg (); extern void _rl_trace (); #endif -extern void _rl_audit_tty PARAMS((char *)); - -extern int _rl_tropen PARAMS((void)); - -extern int _rl_abort_internal PARAMS((void)); -extern int _rl_null_function PARAMS((int, int)); -extern char *_rl_strindex PARAMS((const char *, const char *)); -extern int _rl_qsort_string_compare PARAMS((char **, char **)); -extern int (_rl_uppercase_p) PARAMS((int)); -extern int (_rl_lowercase_p) PARAMS((int)); -extern int (_rl_pure_alphabetic) PARAMS((int)); -extern int (_rl_digit_p) PARAMS((int)); -extern int (_rl_to_lower) PARAMS((int)); -extern int (_rl_to_upper) PARAMS((int)); -extern int (_rl_digit_value) PARAMS((int)); +extern void _rl_audit_tty (char *); + +extern int _rl_tropen (void); + +extern int _rl_abort_internal (void); +extern int _rl_null_function (int, int); +extern char *_rl_strindex (const char *, const char *); +extern int _rl_qsort_string_compare (char **, char **); +extern int (_rl_uppercase_p) (int); +extern int (_rl_lowercase_p) (int); +extern int (_rl_pure_alphabetic) (int); +extern int (_rl_digit_p) (int); +extern int (_rl_to_lower) (int); +extern int (_rl_to_upper) (int); +extern int (_rl_digit_value) (int); /* vi_mode.c */ -extern void _rl_vi_initialize_line PARAMS((void)); -extern void _rl_vi_reset_last PARAMS((void)); -extern void _rl_vi_set_last PARAMS((int, int, int)); -extern int _rl_vi_textmod_command PARAMS((int)); -extern int _rl_vi_motion_command PARAMS((int)); -extern void _rl_vi_done_inserting PARAMS((void)); -extern int _rl_vi_domove_callback PARAMS((_rl_vimotion_cxt *)); -extern int _rl_vi_domove_motion_cleanup PARAMS((int, _rl_vimotion_cxt *)); +extern void _rl_vi_initialize_line (void); +extern void _rl_vi_reset_last (void); +extern void _rl_vi_set_last (int, int, int); +extern int _rl_vi_textmod_command (int); +extern int _rl_vi_motion_command (int); +extern void _rl_vi_done_inserting (void); +extern int _rl_vi_domove_callback (_rl_vimotion_cxt *); +extern int _rl_vi_domove_motion_cleanup (int, _rl_vimotion_cxt *); + +/* Use HS_HISTORY_VERSION as the sentinel to see if we've included history.h + and so can use HIST_ENTRY */ +#if defined (HS_HISTORY_VERSION) +extern void _rl_free_history_entry (HIST_ENTRY *); +#endif /************************************************************************* * Undocumented private variables * @@ -537,6 +557,8 @@ extern int _rl_echo_control_chars; extern int _rl_show_mode_in_prompt; extern int _rl_enable_bracketed_paste; extern int _rl_enable_active_region; +extern char *_rl_active_region_start_color; +extern char *_rl_active_region_end_color; extern char *_rl_comment_begin; extern unsigned char _rl_parsing_conditionalized_out; extern Keymap _rl_keymap; @@ -544,7 +566,6 @@ extern FILE *_rl_in_stream; extern FILE *_rl_out_stream; extern int _rl_last_command_was_kill; extern int _rl_eof_char; -extern int _rl_eof_found; extern procenv_t _rl_top_level; extern _rl_keyseq_cxt *_rl_kscxt; extern int _rl_keyseq_timeout; @@ -555,6 +576,7 @@ extern rl_hook_func_t *_rl_internal_startup_hook; /* search.c */ extern _rl_search_cxt *_rl_nscxt; +extern int _rl_history_search_pos; /* signals.c */ extern int volatile _rl_caught_signal; @@ -602,4 +624,10 @@ extern int _rl_vi_last_command; extern int _rl_vi_redoing; extern _rl_vimotion_cxt *_rl_vimvcxt; +/* Use HS_HISTORY_VERSION as the sentinel to see if we've included history.h + and so can use HIST_ENTRY */ +#if defined (HS_HISTORY_VERSION) +extern HIST_ENTRY *_rl_saved_line_for_history; +#endif + #endif /* _RL_PRIVATE_H_ */ diff --git a/lib/readline/rlshell.h b/lib/readline/rlshell.h index 3e17d8bc7..6055b1442 100644 --- a/lib/readline/rlshell.h +++ b/lib/readline/rlshell.h @@ -1,6 +1,6 @@ /* rlshell.h -- utility functions normally provided by bash. */ -/* Copyright (C) 1999-2009 Free Software Foundation, Inc. +/* Copyright (C) 1999-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -24,10 +24,10 @@ #include "rlstdc.h" -extern char *sh_single_quote PARAMS((char *)); -extern void sh_set_lines_and_columns PARAMS((int, int)); -extern char *sh_get_env_value PARAMS((const char *)); -extern char *sh_get_home_dir PARAMS((void)); -extern int sh_unset_nodelay_mode PARAMS((int)); +extern char *sh_single_quote (char *); +extern void sh_set_lines_and_columns (int, int); +extern char *sh_get_env_value (const char *); +extern char *sh_get_home_dir (void); +extern int sh_unset_nodelay_mode (int); #endif /* _RL_SHELL_H_ */ diff --git a/lib/readline/rltty.c b/lib/readline/rltty.c index d0cd57271..882a3d46b 100644 --- a/lib/readline/rltty.c +++ b/lib/readline/rltty.c @@ -1,7 +1,7 @@ /* rltty.c -- functions to prepare and restore the terminal for readline's use. */ -/* Copyright (C) 1992-2017 Free Software Foundation, Inc. +/* Copyright (C) 1992-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -52,7 +52,7 @@ extern int errno; rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal; rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal; -static void set_winsize PARAMS((int)); +static void set_winsize (int); /* **************************************************************** */ /* */ @@ -119,15 +119,15 @@ struct bsdtty { static TIOTYPE otio; -static void save_tty_chars PARAMS((TIOTYPE *)); -static int _get_tty_settings PARAMS((int, TIOTYPE *)); -static int get_tty_settings PARAMS((int, TIOTYPE *)); -static int _set_tty_settings PARAMS((int, TIOTYPE *)); -static int set_tty_settings PARAMS((int, TIOTYPE *)); +static void save_tty_chars (TIOTYPE *); +static int _get_tty_settings (int, TIOTYPE *); +static int get_tty_settings (int, TIOTYPE *); +static int _set_tty_settings (int, TIOTYPE *); +static int set_tty_settings (int, TIOTYPE *); -static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *)); +static void prepare_terminal_settings (int, TIOTYPE, TIOTYPE *); -static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *)); +static void set_special_char (Keymap, TIOTYPE *, int, rl_command_func_t *); static void save_tty_chars (TIOTYPE *tiop) @@ -332,16 +332,16 @@ prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop) static TIOTYPE otio; -static void save_tty_chars PARAMS((TIOTYPE *)); -static int _get_tty_settings PARAMS((int, TIOTYPE *)); -static int get_tty_settings PARAMS((int, TIOTYPE *)); -static int _set_tty_settings PARAMS((int, TIOTYPE *)); -static int set_tty_settings PARAMS((int, TIOTYPE *)); +static void save_tty_chars (TIOTYPE *); +static int _get_tty_settings (int, TIOTYPE *); +static int get_tty_settings (int, TIOTYPE *); +static int _set_tty_settings (int, TIOTYPE *); +static int set_tty_settings (int, TIOTYPE *); -static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *)); +static void prepare_terminal_settings (int, TIOTYPE, TIOTYPE *); -static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *)); -static void _rl_bind_tty_special_chars PARAMS((Keymap, TIOTYPE)); +static void set_special_char (Keymap, TIOTYPE *, int, rl_command_func_t *); +static void _rl_bind_tty_special_chars (Keymap, TIOTYPE); #if defined (FLUSHO) # define OUTPUT_BEING_FLUSHED(tp) (tp->c_lflag & FLUSHO) @@ -692,7 +692,11 @@ rl_deprep_terminal (void) if (terminal_prepped & TPX_BRACKPASTE) { fprintf (rl_outstream, BRACK_PASTE_FINI); - if (_rl_eof_found) + /* Since the last character in BRACK_PASTE_FINI is \r */ + _rl_last_c_pos = 0; + if (rl_eof_found && (RL_ISSTATE (RL_STATE_TIMEOUT) == 0)) + fprintf (rl_outstream, "\n"); + else if (_rl_echoing_p == 0) fprintf (rl_outstream, "\n"); } diff --git a/lib/readline/rltypedefs.h b/lib/readline/rltypedefs.h index f9f5cd3a5..163654921 100644 --- a/lib/readline/rltypedefs.h +++ b/lib/readline/rltypedefs.h @@ -1,6 +1,6 @@ /* rltypedefs.h -- Type declarations for readline functions. */ -/* Copyright (C) 2000-2011 Free Software Foundation, Inc. +/* Copyright (C) 2000-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -32,10 +32,10 @@ extern "C" { # define _FUNCTION_DEF #if defined(__GNUC__) || defined(__clang__) -typedef int Function () __attribute__ ((deprecated)); -typedef void VFunction () __attribute__ ((deprecated)); -typedef char *CPFunction () __attribute__ ((deprecated)); -typedef char **CPPFunction () __attribute__ ((deprecated)); +typedef int Function () __attribute__((deprecated)); +typedef void VFunction () __attribute__((deprecated)); +typedef char *CPFunction () __attribute__((deprecated)); +typedef char **CPPFunction () __attribute__((deprecated)); #else typedef int Function (); typedef void VFunction (); @@ -51,45 +51,45 @@ typedef char **CPPFunction (); # define _RL_FUNCTION_TYPEDEF /* Bindable functions */ -typedef int rl_command_func_t PARAMS((int, int)); +typedef int rl_command_func_t (int, int); /* Typedefs for the completion system */ -typedef char *rl_compentry_func_t PARAMS((const char *, int)); -typedef char **rl_completion_func_t PARAMS((const char *, int, int)); +typedef char *rl_compentry_func_t (const char *, int); +typedef char **rl_completion_func_t (const char *, int, int); -typedef char *rl_quote_func_t PARAMS((char *, int, char *)); -typedef char *rl_dequote_func_t PARAMS((char *, int)); +typedef char *rl_quote_func_t (char *, int, char *); +typedef char *rl_dequote_func_t (char *, int); -typedef int rl_compignore_func_t PARAMS((char **)); +typedef int rl_compignore_func_t (char **); -typedef void rl_compdisp_func_t PARAMS((char **, int, int)); +typedef void rl_compdisp_func_t (char **, int, int); /* Type for input and pre-read hook functions like rl_event_hook */ -typedef int rl_hook_func_t PARAMS((void)); +typedef int rl_hook_func_t (void); /* Input function type */ -typedef int rl_getc_func_t PARAMS((FILE *)); +typedef int rl_getc_func_t (FILE *); /* Generic function that takes a character buffer (which could be the readline line buffer) and an index into it (which could be rl_point) and returns an int. */ -typedef int rl_linebuf_func_t PARAMS((char *, int)); +typedef int rl_linebuf_func_t (char *, int); /* `Generic' function pointer typedefs */ -typedef int rl_intfunc_t PARAMS((int)); +typedef int rl_intfunc_t (int); #define rl_ivoidfunc_t rl_hook_func_t -typedef int rl_icpfunc_t PARAMS((char *)); -typedef int rl_icppfunc_t PARAMS((char **)); - -typedef void rl_voidfunc_t PARAMS((void)); -typedef void rl_vintfunc_t PARAMS((int)); -typedef void rl_vcpfunc_t PARAMS((char *)); -typedef void rl_vcppfunc_t PARAMS((char **)); - -typedef char *rl_cpvfunc_t PARAMS((void)); -typedef char *rl_cpifunc_t PARAMS((int)); -typedef char *rl_cpcpfunc_t PARAMS((char *)); -typedef char *rl_cpcppfunc_t PARAMS((char **)); +typedef int rl_icpfunc_t (char *); +typedef int rl_icppfunc_t (char **); + +typedef void rl_voidfunc_t (void); +typedef void rl_vintfunc_t (int); +typedef void rl_vcpfunc_t (char *); +typedef void rl_vcppfunc_t (char **); + +typedef char *rl_cpvfunc_t (void); +typedef char *rl_cpifunc_t (int); +typedef char *rl_cpcpfunc_t (char *); +typedef char *rl_cpcppfunc_t (char **); #endif /* _RL_FUNCTION_TYPEDEF */ diff --git a/lib/readline/search.c b/lib/readline/search.c index 38a29361d..eea230111 100644 --- a/lib/readline/search.c +++ b/lib/readline/search.c @@ -1,6 +1,6 @@ /* search.c - code for non-incremental searching in emacs and vi modes. */ -/* Copyright (C) 1992-2020 Free Software Foundation, Inc. +/* Copyright (C) 1992-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -55,33 +55,28 @@ _rl_search_cxt *_rl_nscxt = 0; -extern HIST_ENTRY *_rl_saved_line_for_history; - -/* Functions imported from the rest of the library. */ -extern void _rl_free_history_entry PARAMS((HIST_ENTRY *)); - static char *noninc_search_string = (char *) NULL; static int noninc_history_pos; static char *prev_line_found = (char *) NULL; -static int rl_history_search_len; -static int rl_history_search_pos; -static int rl_history_search_flags; +static int _rl_history_search_len; +/*static*/ int _rl_history_search_pos; +static int _rl_history_search_flags; static char *history_search_string; static int history_string_size; -static void make_history_line_current PARAMS((HIST_ENTRY *)); -static int noninc_search_from_pos PARAMS((char *, int, int, int, int *)); -static int noninc_dosearch PARAMS((char *, int, int)); -static int noninc_search PARAMS((int, int)); -static int rl_history_search_internal PARAMS((int, int)); -static void rl_history_search_reinit PARAMS((int)); +static void make_history_line_current (HIST_ENTRY *); +static int noninc_search_from_pos (char *, int, int, int, int *); +static int noninc_dosearch (char *, int, int); +static int noninc_search (int, int); +static int rl_history_search_internal (int, int); +static void rl_history_search_reinit (int); -static _rl_search_cxt *_rl_nsearch_init PARAMS((int, int)); -static void _rl_nsearch_abort PARAMS((_rl_search_cxt *)); -static int _rl_nsearch_dispatch PARAMS((_rl_search_cxt *, int)); +static _rl_search_cxt *_rl_nsearch_init (int, int); +static void _rl_nsearch_abort (_rl_search_cxt *); +static int _rl_nsearch_dispatch (_rl_search_cxt *, int); /* Make the data from the history entry ENTRY be the contents of the current line. This doesn't do anything with rl_point; the caller @@ -89,6 +84,15 @@ static int _rl_nsearch_dispatch PARAMS((_rl_search_cxt *, int)); static void make_history_line_current (HIST_ENTRY *entry) { + UNDO_LIST *xlist; + + xlist = _rl_saved_line_for_history ? (UNDO_LIST *)_rl_saved_line_for_history->data : 0; + /* At this point, rl_undo_list points to a private search string list. */ + if (rl_undo_list && rl_undo_list != (UNDO_LIST *)entry->data && rl_undo_list != xlist) + rl_free_undo_list (); + + /* Now we create a new undo list with a single insert for this text. + WE DON'T CHANGE THE ORIGINAL HISTORY ENTRY UNDO LIST */ _rl_replace_text (entry->line, 0, rl_end); _rl_fix_point (1); #if defined (VI_MODE) @@ -100,6 +104,11 @@ make_history_line_current (HIST_ENTRY *entry) rl_free_undo_list (); #endif + /* This will need to free the saved undo list associated with the original + (pre-search) line buffer. + XXX - look at _rl_free_saved_history_line and consider calling it if + rl_undo_list != xlist (or calling rl_free_undo list directly on + _rl_saved_line_for_history->data) */ if (_rl_saved_line_for_history) _rl_free_history_entry (_rl_saved_line_for_history); _rl_saved_line_for_history = (HIST_ENTRY *)NULL; @@ -264,11 +273,11 @@ static void _rl_nsearch_abort (_rl_search_cxt *cxt) { rl_maybe_unsave_line (); - rl_clear_message (); rl_point = cxt->save_point; rl_mark = cxt->save_mark; - _rl_fix_point (1); rl_restore_prompt (); + rl_clear_message (); + _rl_fix_point (1); RL_UNSETSTATE (RL_STATE_NSEARCH); } @@ -521,8 +530,10 @@ rl_history_search_internal (int count, int dir) { HIST_ENTRY *temp; int ret, oldpos, newcol; + int had_saved_line; char *t; + had_saved_line = _rl_saved_line_for_history != 0; rl_maybe_save_line (); temp = (HIST_ENTRY *)NULL; @@ -534,14 +545,14 @@ rl_history_search_internal (int count, int dir) while (count) { RL_CHECK_SIGNALS (); - ret = noninc_search_from_pos (history_search_string, rl_history_search_pos + dir, dir, 0, &newcol); + ret = noninc_search_from_pos (history_search_string, _rl_history_search_pos + dir, dir, 0, &newcol); if (ret == -1) break; /* Get the history entry we found. */ - rl_history_search_pos = ret; + _rl_history_search_pos = ret; oldpos = where_history (); - history_set_pos (rl_history_search_pos); + history_set_pos (_rl_history_search_pos); temp = current_history (); /* will never be NULL after successful search */ history_set_pos (oldpos); @@ -555,20 +566,21 @@ rl_history_search_internal (int count, int dir) /* If we didn't find anything at all, return. */ if (temp == 0) { + /* XXX - check had_saved_line here? */ rl_maybe_unsave_line (); rl_ding (); /* If you don't want the saved history line (last match) to show up in the line buffer after the search fails, change the #if 0 to #if 1 */ #if 0 - if (rl_point > rl_history_search_len) + if (rl_point > _rl_history_search_len) { - rl_point = rl_end = rl_history_search_len; + rl_point = rl_end = _rl_history_search_len; rl_line_buffer[rl_end] = '\0'; rl_mark = 0; } #else - rl_point = rl_history_search_len; /* rl_maybe_unsave_line changes it */ + rl_point = _rl_history_search_len; /* rl_maybe_unsave_line changes it */ rl_mark = rl_end; #endif return 1; @@ -578,13 +590,13 @@ rl_history_search_internal (int count, int dir) make_history_line_current (temp); /* decide where to put rl_point -- need to change this for pattern search */ - if (rl_history_search_flags & ANCHORED_SEARCH) - rl_point = rl_history_search_len; /* easy case */ + if (_rl_history_search_flags & ANCHORED_SEARCH) + rl_point = _rl_history_search_len; /* easy case */ else { #if 0 t = strstr (rl_line_buffer, history_search_string); /* XXX */ - rl_point = t ? (int)(t - rl_line_buffer) + rl_history_search_len : rl_end; + rl_point = t ? (int)(t - rl_line_buffer) + _rl_history_search_len : rl_end; #else rl_point = (newcol >= 0) ? newcol : rl_end; #endif @@ -599,17 +611,17 @@ rl_history_search_reinit (int flags) { int sind; - rl_history_search_pos = where_history (); - rl_history_search_len = rl_point; - rl_history_search_flags = flags; + _rl_history_search_pos = where_history (); + _rl_history_search_len = rl_point; + _rl_history_search_flags = flags; prev_line_found = (char *)NULL; if (rl_point) { /* Allocate enough space for anchored and non-anchored searches */ - if (rl_history_search_len >= history_string_size - 2) + if (_rl_history_search_len >= history_string_size - 2) { - history_string_size = rl_history_search_len + 2; + history_string_size = _rl_history_search_len + 2; history_search_string = (char *)xrealloc (history_search_string, history_string_size); } sind = 0; @@ -618,7 +630,7 @@ rl_history_search_reinit (int flags) strncpy (history_search_string + sind, rl_line_buffer, rl_point); history_search_string[rl_point + sind] = '\0'; } - _rl_free_saved_history_line (); + _rl_free_saved_history_line (); /* XXX rl_undo_list? */ } /* Search forward in the history for the string of characters @@ -634,7 +646,7 @@ rl_history_search_forward (int count, int ignore) rl_last_func != rl_history_search_backward) rl_history_search_reinit (ANCHORED_SEARCH); - if (rl_history_search_len == 0) + if (_rl_history_search_len == 0) return (rl_get_next_history (count, ignore)); return (rl_history_search_internal (abs (count), (count > 0) ? 1 : -1)); } @@ -652,7 +664,7 @@ rl_history_search_backward (int count, int ignore) rl_last_func != rl_history_search_backward) rl_history_search_reinit (ANCHORED_SEARCH); - if (rl_history_search_len == 0) + if (_rl_history_search_len == 0) return (rl_get_previous_history (count, ignore)); return (rl_history_search_internal (abs (count), (count > 0) ? -1 : 1)); } @@ -671,7 +683,7 @@ rl_history_substr_search_forward (int count, int ignore) rl_last_func != rl_history_substr_search_backward) rl_history_search_reinit (NON_ANCHORED_SEARCH); - if (rl_history_search_len == 0) + if (_rl_history_search_len == 0) return (rl_get_next_history (count, ignore)); return (rl_history_search_internal (abs (count), (count > 0) ? 1 : -1)); } @@ -689,7 +701,7 @@ rl_history_substr_search_backward (int count, int ignore) rl_last_func != rl_history_substr_search_backward) rl_history_search_reinit (NON_ANCHORED_SEARCH); - if (rl_history_search_len == 0) + if (_rl_history_search_len == 0) return (rl_get_previous_history (count, ignore)); return (rl_history_search_internal (abs (count), (count > 0) ? -1 : 1)); } diff --git a/lib/readline/shell.c b/lib/readline/shell.c index 7fe2e97c9..36c91484c 100644 --- a/lib/readline/shell.c +++ b/lib/readline/shell.c @@ -1,7 +1,7 @@ /* shell.c -- readline utility functions that are normally provided by bash when readline is linked as part of the shell. */ -/* Copyright (C) 1997-2009,2017 Free Software Foundation, Inc. +/* Copyright (C) 1997-2009,2017,2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -64,7 +64,7 @@ #include "xmalloc.h" #if defined (HAVE_GETPWUID) && !defined (HAVE_GETPW_DECLS) -extern struct passwd *getpwuid PARAMS((uid_t)); +extern struct passwd *getpwuid (uid_t); #endif /* HAVE_GETPWUID && !HAVE_GETPW_DECLS */ #ifndef NULL diff --git a/lib/readline/signals.c b/lib/readline/signals.c index f9174ab8a..9df365e48 100644 --- a/lib/readline/signals.c +++ b/lib/readline/signals.c @@ -1,6 +1,6 @@ /* signals.c -- signal handling support for readline. */ -/* Copyright (C) 1987-2017 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -48,23 +48,11 @@ #if defined (HANDLE_SIGNALS) -#if !defined (RETSIGTYPE) -# if defined (VOID_SIGHANDLER) -# define RETSIGTYPE void -# else -# define RETSIGTYPE int -# endif /* !VOID_SIGHANDLER */ -#endif /* !RETSIGTYPE */ - -#if defined (VOID_SIGHANDLER) -# define SIGHANDLER_RETURN return -#else -# define SIGHANDLER_RETURN return (0) -#endif +#define SIGHANDLER_RETURN return /* This typedef is equivalent to the one for Function; it allows us to say SigHandler *foo = signal (SIGKILL, SIG_IGN); */ -typedef RETSIGTYPE SigHandler (); +typedef void SigHandler (int); #if defined (HAVE_POSIX_SIGNALS) typedef struct sigaction sighandler_cxt; @@ -78,12 +66,12 @@ typedef struct { SigHandler *sa_handler; int sa_mask, sa_flags; } sighandler_cxt # define SA_RESTART 0 #endif -static SigHandler *rl_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *)); -static void rl_maybe_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *)); -static void rl_maybe_restore_sighandler PARAMS((int, sighandler_cxt *)); +static SigHandler *rl_set_sighandler (int, SigHandler *, sighandler_cxt *); +static void rl_maybe_set_sighandler (int, SigHandler *, sighandler_cxt *); +static void rl_maybe_restore_sighandler (int, sighandler_cxt *); -static RETSIGTYPE rl_signal_handler PARAMS((int)); -static RETSIGTYPE _rl_handle_signal PARAMS((int)); +static void rl_signal_handler (int); +static void _rl_handle_signal (int); /* Exported variables for use by applications. */ @@ -136,7 +124,7 @@ void *_rl_sigcleanarg; /* Readline signal handler functions. */ /* Called from RL_CHECK_SIGNALS() macro to run signal handling code. */ -RETSIGTYPE +void _rl_signal_handler (int sig) { _rl_caught_signal = 0; /* XXX */ @@ -163,7 +151,7 @@ _rl_signal_handler (int sig) SIGHANDLER_RETURN; } -static RETSIGTYPE +static void rl_signal_handler (int sig) { _rl_caught_signal = sig; @@ -173,7 +161,7 @@ rl_signal_handler (int sig) /* This is called to handle a signal when it is safe to do so (out of the signal handler execution path). Called by _rl_signal_handler for all the signals readline catches except SIGWINCH. */ -static RETSIGTYPE +static void _rl_handle_signal (int sig) { int block_sig; @@ -222,6 +210,9 @@ _rl_handle_signal (int sig) switch (sig) { case SIGINT: + /* We will end up blocking SIGTTOU while we are resetting the tty, so + watch out for this if it causes problems. We could prevent this by + setting block_sig to 1 without modifying SET. */ _rl_reset_completion_state (); rl_free_line_state (); #if defined (READLINE_CALLBACKS) @@ -242,8 +233,11 @@ _rl_handle_signal (int sig) this even if we've been stopped on SIGTTOU, since we handle signals when we have returned from the signal handler and the signal is no longer blocked. */ - sigaddset (&set, SIGTTOU); - block_sig = 1; + if (block_sig == 0) + { + sigaddset (&set, SIGTTOU); + block_sig = 1; + } # endif #endif /* SIGTSTP */ /* Any signals that should be blocked during cleanup should go here. */ @@ -261,13 +255,17 @@ _rl_handle_signal (int sig) case SIGTERM: #if defined (SIGALRM) case SIGALRM: + if (sig == SIGALRM) + _rl_timeout_handle_sigalrm (); #endif #if defined (SIGQUIT) case SIGQUIT: #endif +#if defined (HAVE_POSIX_SIGNALS) if (block_sig) sigprocmask (SIG_BLOCK, &set, &oset); +#endif rl_echo_signal_char (sig); rl_cleanup_after_signal (); @@ -283,19 +281,6 @@ _rl_handle_signal (int sig) /* We don't have to bother unblocking the signal because we are not running in a signal handler context. */ -#if 0 -#if defined (HAVE_POSIX_SIGNALS) - /* Make sure this signal is not blocked when we resend it to the - calling application. */ - sigemptyset (&set); - sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set); - sigdelset (&set, sig); -#else /* !HAVE_POSIX_SIGNALS */ -# if defined (HAVE_BSD_SIGNALS) - omask = sigblock (0); -# endif /* HAVE_BSD_SIGNALS */ -#endif /* !HAVE_POSIX_SIGNALS */ -#endif #if defined (__EMX__) signal (sig, SIG_ACK); @@ -309,16 +294,6 @@ _rl_handle_signal (int sig) /* We don't need to modify the signal mask now that this is not run in a signal handler context. */ -#if 0 - /* Let the signal that we just sent through if it is blocked. */ -#if defined (HAVE_POSIX_SIGNALS) - sigprocmask (SIG_SETMASK, &set, (sigset_t *)NULL); -#else /* !HAVE_POSIX_SIGNALS */ -# if defined (HAVE_BSD_SIGNALS) - sigsetmask (omask & ~(sigmask (sig))); -# endif /* HAVE_BSD_SIGNALS */ -#endif /* !HAVE_POSIX_SIGNALS */ -#endif rl_reset_after_signal (); } @@ -328,7 +303,7 @@ _rl_handle_signal (int sig) } #if defined (SIGWINCH) -static RETSIGTYPE +static void rl_sigwinch_handler (int sig) { SigHandler *oh; diff --git a/lib/readline/terminal.c b/lib/readline/terminal.c index 05415dc42..9997161f8 100644 --- a/lib/readline/terminal.c +++ b/lib/readline/terminal.c @@ -1,6 +1,6 @@ /* terminal.c -- controlling the terminal with termcap. */ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. +/* Copyright (C) 1996-2022 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -73,11 +73,11 @@ # include # include -static void _win_get_screensize PARAMS((int *, int *)); +static void _win_get_screensize (int *, int *); #endif #if defined (__EMX__) -static void _emx_get_screensize PARAMS((int *, int *)); +static void _emx_get_screensize (int *, int *); #endif /* If the calling application sets this to a non-zero value, readline will @@ -177,10 +177,19 @@ static char *_rl_term_kD; /* Insert key */ static char *_rl_term_kI; +/* Page up and page down keys */ +static char *_rl_term_kP; +static char *_rl_term_kN; + /* Cursor control */ static char *_rl_term_vs; /* very visible */ static char *_rl_term_ve; /* normal */ +/* User-settable color sequences to begin and end the active region. Defaults + are rl_term_so and rl_term_se on non-dumb terminals. */ +char *_rl_active_region_start_color = NULL; +char *_rl_active_region_end_color = NULL; + /* It's not clear how HPUX is so broken here. */ #ifdef TGETENT_BROKEN # define TGETENT_SUCCESS 0 @@ -194,7 +203,7 @@ static char *_rl_term_ve; /* normal */ #endif #define TGETFLAG(cap) (tgetflag (cap) == TGETFLAG_SUCCESS) -static void bind_termcap_arrow_keys PARAMS((Keymap)); +static void bind_termcap_arrow_keys (Keymap); /* Variables that hold the screen dimensions, used by the display code. */ int _rl_screenwidth, _rl_screenheight, _rl_screenchars; @@ -382,8 +391,12 @@ _rl_sigwinch_resize_terminal (void) void rl_resize_terminal (void) { + int width, height; + + width = _rl_screenwidth; + height = _rl_screenheight; _rl_get_screen_size (fileno (rl_instream), 1); - if (_rl_echoing_p) + if (_rl_echoing_p && (width != _rl_screenwidth || height != _rl_screenheight)) { if (CUSTOM_REDISPLAY_FUNC ()) rl_forced_update_display (); @@ -415,6 +428,8 @@ static const struct _tc_string tc_strings[] = { "kD", &_rl_term_kD }, /* delete */ { "kH", &_rl_term_kH }, /* home down ?? */ { "kI", &_rl_term_kI }, /* insert */ + { "kN", &_rl_term_kN }, /* page down */ + { "kP", &_rl_term_kP }, /* page up */ { "kd", &_rl_term_kd }, { "ke", &_rl_term_ke }, /* end keypad mode */ { "kh", &_rl_term_kh }, /* home */ @@ -456,7 +471,7 @@ _rl_init_terminal_io (const char *terminal_name) { const char *term; char *buffer; - int tty, tgetent_ret, dumbterm; + int tty, tgetent_ret, dumbterm, reset_region_colors; term = terminal_name ? terminal_name : sh_get_env_value ("TERM"); _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = _rl_term_clrscroll = (char *)NULL; @@ -467,6 +482,8 @@ _rl_init_terminal_io (const char *terminal_name) dumbterm = STREQ (term, "dumb"); + reset_region_colors = 1; + #ifdef __MSDOS__ _rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL; _rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL; @@ -478,6 +495,7 @@ _rl_init_terminal_io (const char *terminal_name) _rl_term_goto = _rl_term_pc = _rl_term_ip = (char *)NULL; _rl_term_ks = _rl_term_ke =_rl_term_vs = _rl_term_ve = (char *)NULL; _rl_term_kh = _rl_term_kH = _rl_term_at7 = _rl_term_kI = (char *)NULL; + _rl_term_kN = _rl_term_kP = (char *)NULL; _rl_term_so = _rl_term_se = (char *)NULL; #if defined(HACK_TERMCAP_MOTION) _rl_term_forward_char = (char *)NULL; @@ -540,6 +558,7 @@ _rl_init_terminal_io (const char *terminal_name) _rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL; _rl_term_kh = _rl_term_kH = _rl_term_kI = _rl_term_kD = (char *)NULL; _rl_term_ks = _rl_term_ke = _rl_term_at7 = (char *)NULL; + _rl_term_kN = _rl_term_kP = (char *)NULL; _rl_term_mm = _rl_term_mo = (char *)NULL; _rl_term_ve = _rl_term_vs = (char *)NULL; _rl_term_forward_char = (char *)NULL; @@ -550,6 +569,11 @@ _rl_init_terminal_io (const char *terminal_name) escape sequences */ _rl_enable_bracketed_paste = 0; + /* No terminal so/se capabilities. */ + _rl_enable_active_region = 0; + _rl_reset_region_color (0, NULL); + _rl_reset_region_color (1, NULL); + /* Reasonable defaults for tgoto(). Readline currently only uses tgoto if _rl_term_IC or _rl_term_DC is defined, but just in case we change that later... */ @@ -604,8 +628,14 @@ _rl_init_terminal_io (const char *terminal_name) /* There's no way to determine whether or not a given terminal supports bracketed paste mode, so we assume a terminal named "dumb" does not. */ if (dumbterm) - _rl_enable_bracketed_paste = 0; - + _rl_enable_bracketed_paste = _rl_enable_active_region = 0; + + if (reset_region_colors) + { + _rl_reset_region_color (0, _rl_term_so); + _rl_reset_region_color (1, _rl_term_se); + } + return 0; } @@ -629,6 +659,9 @@ bind_termcap_arrow_keys (Keymap map) rl_bind_keyseq_if_unbound (_rl_term_kD, rl_delete); rl_bind_keyseq_if_unbound (_rl_term_kI, rl_overwrite_mode); /* Insert */ + rl_bind_keyseq_if_unbound (_rl_term_kN, rl_history_search_forward); /* Page Down */ + rl_bind_keyseq_if_unbound (_rl_term_kP, rl_history_search_backward); /* Page Up */ + _rl_keymap = xkeymap; } @@ -774,6 +807,67 @@ _rl_standout_off (void) #endif } +/* **************************************************************** */ +/* */ +/* Controlling color for a portion of the line */ +/* */ +/* **************************************************************** */ + +/* Reset the region color variables to VALUE depending on WHICH (0 == start, + 1 == end). This is where all the memory allocation for the color variable + strings is performed. We might want to pass a flag saying whether or not + to translate VALUE like a key sequence, but it doesn't really matter. */ +int +_rl_reset_region_color (int which, const char *value) +{ + int len; + + if (which == 0) + { + xfree (_rl_active_region_start_color); + if (value && *value) + { + _rl_active_region_start_color = (char *)xmalloc (2 * strlen (value) + 1); + rl_translate_keyseq (value, _rl_active_region_start_color, &len); + _rl_active_region_start_color[len] = '\0'; + } + else + _rl_active_region_start_color = NULL; + } + else + { + xfree (_rl_active_region_end_color); + if (value && *value) + { + _rl_active_region_end_color = (char *)xmalloc (2 * strlen (value) + 1); + rl_translate_keyseq (value, _rl_active_region_end_color, &len); + _rl_active_region_end_color[len] = '\0'; + } + else + _rl_active_region_end_color = NULL; + } + + return 0; +} + +void +_rl_region_color_on (void) +{ +#ifndef __MSDOS__ + if (_rl_active_region_start_color && _rl_active_region_end_color) + tputs (_rl_active_region_start_color, 1, _rl_output_character_function); +#endif +} + +void +_rl_region_color_off (void) +{ +#ifndef __MSDOS__ + if (_rl_active_region_start_color && _rl_active_region_end_color) + tputs (_rl_active_region_end_color, 1, _rl_output_character_function); +#endif +} + /* **************************************************************** */ /* */ /* Controlling the Meta Key and Keypad */ diff --git a/lib/readline/text.c b/lib/readline/text.c index 2567dea26..91c3f330d 100644 --- a/lib/readline/text.c +++ b/lib/readline/text.c @@ -1,6 +1,6 @@ /* text.c -- text handling commands for readline. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -59,12 +59,12 @@ #include "xmalloc.h" /* Forward declarations. */ -static int rl_change_case PARAMS((int, int)); -static int _rl_char_search PARAMS((int, int, int)); +static int rl_change_case (int, int); +static int _rl_char_search (int, int, int); #if defined (READLINE_CALLBACKS) -static int _rl_insert_next_callback PARAMS((_rl_callback_generic_arg *)); -static int _rl_char_search_callback PARAMS((_rl_callback_generic_arg *)); +static int _rl_insert_next_callback (_rl_callback_generic_arg *); +static int _rl_char_search_callback (_rl_callback_generic_arg *); #endif /* The largest chunk of text that can be inserted in one call to @@ -96,6 +96,7 @@ rl_insert_text (const char *string) for (i = rl_end; i >= rl_point; i--) rl_line_buffer[i + l] = rl_line_buffer[i]; + strncpy (rl_line_buffer + rl_point, string, l); /* Remember how to undo this if we aren't undoing something. */ @@ -735,7 +736,7 @@ _rl_insert_char (int count, int c) } else { - wchar_t wc; + WCHAR_T wc; size_t ret; if (stored_count <= 0) @@ -745,7 +746,7 @@ _rl_insert_char (int count, int c) ps_back = ps; pending_bytes[pending_bytes_length++] = c; - ret = mbrtowc (&wc, pending_bytes, pending_bytes_length, &ps); + ret = MBRTOWC (&wc, pending_bytes, pending_bytes_length, &ps); if (ret == (size_t)-2) { @@ -919,8 +920,11 @@ _rl_overwrite_char (int count, int c) int k; /* Read an entire multibyte character sequence to insert COUNT times. */ + k = 1; if (count > 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0) k = _rl_read_mbstring (c, mbkey, MB_LEN_MAX); + if (k < 0) + return 1; #endif rl_begin_undo_group (); @@ -1132,7 +1136,7 @@ rl_newline (int count, int key) int rl_do_lowercase_version (int ignore1, int ignore2) { - return 0; + return 99999; /* prevent from being combined with _rl_null_function */ } /* This is different from what vi does, so the code's not shared. Emacs @@ -1401,9 +1405,9 @@ rl_change_case (int count, int op) { int start, next, end; int inword, nc, nop; - wchar_t c; + WCHAR_T c; #if defined (HANDLE_MULTIBYTE) - wchar_t wc, nwc; + WCHAR_T wc, nwc; char mb[MB_LEN_MAX+1]; int mlen; size_t m; @@ -1462,9 +1466,9 @@ rl_change_case (int count, int op) #if defined (HANDLE_MULTIBYTE) else { - m = mbrtowc (&wc, rl_line_buffer + start, end - start, &mps); + m = MBRTOWC (&wc, rl_line_buffer + start, end - start, &mps); if (MB_INVALIDCH (m)) - wc = (wchar_t)rl_line_buffer[start]; + wc = (WCHAR_T)rl_line_buffer[start]; else if (MB_NULLWCH (m)) wc = L'\0'; nwc = (nop == UpCase) ? _rl_to_wupper (wc) : _rl_to_wlower (wc); @@ -1474,12 +1478,12 @@ rl_change_case (int count, int op) mbstate_t ts; memset (&ts, 0, sizeof (mbstate_t)); - mlen = wcrtomb (mb, nwc, &ts); + mlen = WCRTOMB (mb, nwc, &ts); if (mlen < 0) { nwc = wc; memset (&ts, 0, sizeof (mbstate_t)); - mlen = wcrtomb (mb, nwc, &ts); + mlen = WCRTOMB (mb, nwc, &ts); if (mlen < 0) /* should not happen */ strncpy (mb, rl_line_buffer + start, mlen = m); } @@ -1536,7 +1540,10 @@ rl_transpose_words (int count, int key) { char *word1, *word2; int w1_beg, w1_end, w2_beg, w2_end; - int orig_point = rl_point; + int orig_point, orig_end; + + orig_point = rl_point; + orig_end = rl_end; if (!count) return 0; @@ -1580,6 +1587,7 @@ rl_transpose_words (int count, int key) /* This is exactly correct since the text before this point has not changed in length. */ rl_point = w2_end; + rl_end = orig_end; /* just make sure */ /* I think that does it. */ rl_end_undo_group (); diff --git a/lib/readline/tilde.h b/lib/readline/tilde.h index e26dd0476..bc8022afc 100644 --- a/lib/readline/tilde.h +++ b/lib/readline/tilde.h @@ -1,6 +1,6 @@ /* tilde.h: Externally available variables and function in libtilde.a. */ -/* Copyright (C) 1992-2009 Free Software Foundation, Inc. +/* Copyright (C) 1992-2009,2021 Free Software Foundation, Inc. This file contains the Readline Library (Readline), a set of routines for providing Emacs style line input to programs that ask @@ -27,19 +27,7 @@ extern "C" { #endif -/* A function can be defined using prototypes and compile on both ANSI C - and traditional C compilers with something like this: - extern char *func PARAMS((char *, char *, int)); */ - -#if !defined (PARAMS) -# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) -# define PARAMS(protos) protos -# else -# define PARAMS(protos) () -# endif -#endif - -typedef char *tilde_hook_func_t PARAMS((char *)); +typedef char *tilde_hook_func_t (char *); /* If non-null, this contains the address of a function that the application wants called before trying the standard tilde expansions. The function @@ -64,14 +52,14 @@ extern char **tilde_additional_prefixes; extern char **tilde_additional_suffixes; /* Return a new string which is the result of tilde expanding STRING. */ -extern char *tilde_expand PARAMS((const char *)); +extern char *tilde_expand (const char *); /* Do the work of tilde expansion on FILENAME. FILENAME starts with a tilde. If there is no expansion, call tilde_expansion_failure_hook. */ -extern char *tilde_expand_word PARAMS((const char *)); +extern char *tilde_expand_word (const char *); /* Find the portion of the string beginning with ~ that should be expanded. */ -extern char *tilde_find_word PARAMS((const char *, int, int *)); +extern char *tilde_find_word (const char *, int, int *); #ifdef __cplusplus } diff --git a/lib/readline/undo.c b/lib/readline/undo.c index 147999119..e4c457dce 100644 --- a/lib/readline/undo.c +++ b/lib/readline/undo.c @@ -1,6 +1,6 @@ /* undo.c - manage list of changes to lines, offering opportunity to undo them */ -/* Copyright (C) 1987-2017 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -49,9 +49,7 @@ #include "rlprivate.h" #include "xmalloc.h" -extern void _hs_replace_history_data PARAMS((int, histdata_t *, histdata_t *)); - -extern HIST_ENTRY *_rl_saved_line_for_history; +#include "histlib.h" /* Non-zero tells rl_delete_text and rl_insert_text to not add to the undo list. */ diff --git a/lib/readline/util.c b/lib/readline/util.c index 1576b55d5..2e986db0a 100644 --- a/lib/readline/util.c +++ b/lib/readline/util.c @@ -72,7 +72,7 @@ static const char * const pathname_alphabetic_chars = "/-_=~.#$"; int rl_alphabetic (int c) { - if (ALPHABETIC (c)) + if (_rl_alphabetic_p (c)) return (1); return (_rl_allow_pathname_alphabetic_chars && @@ -81,7 +81,7 @@ rl_alphabetic (int c) #if defined (HANDLE_MULTIBYTE) int -_rl_walphabetic (wchar_t wc) +_rl_walphabetic (WCHAR_T wc) { int c; @@ -98,7 +98,8 @@ _rl_walphabetic (wchar_t wc) int _rl_abort_internal (void) { - rl_ding (); + if (RL_ISSTATE (RL_STATE_TIMEOUT) == 0) + rl_ding (); /* Don't ring the bell on a timeout */ rl_clear_message (); _rl_reset_argument (); rl_clear_pending_input (); diff --git a/lib/readline/vi_mode.c b/lib/readline/vi_mode.c index 742341e36..3a033bab4 100644 --- a/lib/readline/vi_mode.c +++ b/lib/readline/vi_mode.c @@ -1,7 +1,7 @@ /* vi_mode.c -- A vi emulation mode for Bash. Derived from code written by Jeff Sparkes (jsparkes@bnr.ca). */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -124,44 +124,44 @@ static const char * const vi_textmod = "_*\\AaIiCcDdPpYyRrSsXx~"; /* Arrays for the saved marks. */ static int vi_mark_chars['z' - 'a' + 1]; -static void _rl_vi_replace_insert PARAMS((int)); -static void _rl_vi_save_replace PARAMS((void)); -static void _rl_vi_stuff_insert PARAMS((int)); -static void _rl_vi_save_insert PARAMS((UNDO_LIST *)); +static void _rl_vi_replace_insert (int); +static void _rl_vi_save_replace (void); +static void _rl_vi_stuff_insert (int); +static void _rl_vi_save_insert (UNDO_LIST *); -static void vi_save_insert_buffer PARAMS ((int, int)); +static void vi_save_insert_buffer (int, int); -static inline void _rl_vi_backup PARAMS((void)); +static inline void _rl_vi_backup (void); -static int _rl_vi_arg_dispatch PARAMS((int)); -static int rl_digit_loop1 PARAMS((void)); +static int _rl_vi_arg_dispatch (int); +static int rl_digit_loop1 (void); -static int _rl_vi_set_mark PARAMS((void)); -static int _rl_vi_goto_mark PARAMS((void)); +static int _rl_vi_set_mark (void); +static int _rl_vi_goto_mark (void); -static inline int _rl_vi_advance_point PARAMS((void)); -static inline int _rl_vi_backup_point PARAMS((void)); +static inline int _rl_vi_advance_point (void); +static inline int _rl_vi_backup_point (void); -static void _rl_vi_append_forward PARAMS((int)); +static void _rl_vi_append_forward (int); -static int _rl_vi_callback_getchar PARAMS((char *, int)); +static int _rl_vi_callback_getchar (char *, int); #if defined (READLINE_CALLBACKS) -static int _rl_vi_callback_set_mark PARAMS((_rl_callback_generic_arg *)); -static int _rl_vi_callback_goto_mark PARAMS((_rl_callback_generic_arg *)); -static int _rl_vi_callback_change_char PARAMS((_rl_callback_generic_arg *)); -static int _rl_vi_callback_char_search PARAMS((_rl_callback_generic_arg *)); +static int _rl_vi_callback_set_mark (_rl_callback_generic_arg *); +static int _rl_vi_callback_goto_mark (_rl_callback_generic_arg *); +static int _rl_vi_callback_change_char (_rl_callback_generic_arg *); +static int _rl_vi_callback_char_search (_rl_callback_generic_arg *); #endif -static int rl_domove_read_callback PARAMS((_rl_vimotion_cxt *)); -static int rl_domove_motion_callback PARAMS((_rl_vimotion_cxt *)); -static int rl_vi_domove_getchar PARAMS((_rl_vimotion_cxt *)); +static int rl_domove_read_callback (_rl_vimotion_cxt *); +static int rl_domove_motion_callback (_rl_vimotion_cxt *); +static int rl_vi_domove_getchar (_rl_vimotion_cxt *); -static int vi_change_dispatch PARAMS((_rl_vimotion_cxt *)); -static int vi_delete_dispatch PARAMS((_rl_vimotion_cxt *)); -static int vi_yank_dispatch PARAMS((_rl_vimotion_cxt *)); +static int vi_change_dispatch (_rl_vimotion_cxt *); +static int vi_delete_dispatch (_rl_vimotion_cxt *); +static int vi_yank_dispatch (_rl_vimotion_cxt *); -static int vidomove_dispatch PARAMS((_rl_vimotion_cxt *)); +static int vidomove_dispatch (_rl_vimotion_cxt *); void _rl_vi_initialize_line (void) @@ -337,24 +337,7 @@ rl_vi_yank_arg (int count, int key) int rl_vi_fetch_history (int count, int c) { - int wanted; - - /* Giving an argument of n means we want the nth command in the history - file. The command number is interpreted the same way that the bash - `history' command does it -- that is, giving an argument count of 450 - to this command would get the command listed as number 450 in the - output of `history'. */ - if (rl_explicit_arg) - { - wanted = history_base + where_history () - count; - if (wanted <= 0) - rl_beginning_of_history (0, 0); - else - rl_get_previous_history (wanted, c); - } - else - rl_beginning_of_history (count, 0); - return (0); + return (rl_fetch_history (count, c)); } /* Search again for the last thing searched for. */ @@ -944,7 +927,7 @@ rl_vi_arg_digit (int count, int c) static int _rl_vi_change_mbchar_case (int count) { - wchar_t wc; + WCHAR_T wc; char mb[MB_LEN_MAX+1]; int mlen, p; size_t m; @@ -955,9 +938,9 @@ _rl_vi_change_mbchar_case (int count) count--; while (count-- && rl_point < rl_end) { - m = mbrtowc (&wc, rl_line_buffer + rl_point, rl_end - rl_point, &ps); + m = MBRTOWC (&wc, rl_line_buffer + rl_point, rl_end - rl_point, &ps); if (MB_INVALIDCH (m)) - wc = (wchar_t)rl_line_buffer[rl_point]; + wc = (WCHAR_T)rl_line_buffer[rl_point]; else if (MB_NULLWCH (m)) wc = L'\0'; if (iswupper (wc)) @@ -975,7 +958,7 @@ _rl_vi_change_mbchar_case (int count) if (wc) { p = rl_point; - mlen = wcrtomb (mb, wc, &ps); + mlen = WCRTOMB (mb, wc, &ps); if (mlen >= 0) mb[mlen] = '\0'; rl_begin_undo_group (); @@ -1389,8 +1372,15 @@ int rl_vi_delete_to (int count, int key) { int c, r; + _rl_vimotion_cxt *savecxt; - if (_rl_vimvcxt) + savecxt = 0; + if (_rl_vi_redoing) + { + savecxt = _rl_vimvcxt; + _rl_vimvcxt = _rl_mvcxt_alloc (VIM_DELETE, key); + } + else if (_rl_vimvcxt) _rl_mvcxt_init (_rl_vimvcxt, VIM_DELETE, key); else _rl_vimvcxt = _rl_mvcxt_alloc (VIM_DELETE, key); @@ -1433,7 +1423,7 @@ rl_vi_delete_to (int count, int key) } _rl_mvcxt_dispose (_rl_vimvcxt); - _rl_vimvcxt = 0; + _rl_vimvcxt = savecxt; return r; } @@ -1481,8 +1471,15 @@ int rl_vi_change_to (int count, int key) { int c, r; + _rl_vimotion_cxt *savecxt; - if (_rl_vimvcxt) + savecxt = 0; + if (_rl_vi_redoing) + { + savecxt = _rl_vimvcxt; + _rl_vimvcxt = _rl_mvcxt_alloc (VIM_CHANGE, key); + } + else if (_rl_vimvcxt) _rl_mvcxt_init (_rl_vimvcxt, VIM_CHANGE, key); else _rl_vimvcxt = _rl_mvcxt_alloc (VIM_CHANGE, key); @@ -1524,7 +1521,7 @@ rl_vi_change_to (int count, int key) } _rl_mvcxt_dispose (_rl_vimvcxt); - _rl_vimvcxt = 0; + _rl_vimvcxt = savecxt; return r; } @@ -1553,8 +1550,15 @@ int rl_vi_yank_to (int count, int key) { int c, r; + _rl_vimotion_cxt *savecxt; - if (_rl_vimvcxt) + savecxt = 0; + if (_rl_vi_redoing) + { + savecxt = _rl_vimvcxt; + _rl_vimvcxt = _rl_mvcxt_alloc (VIM_YANK, key); + } + else if (_rl_vimvcxt) _rl_mvcxt_init (_rl_vimvcxt, VIM_YANK, key); else _rl_vimvcxt = _rl_mvcxt_alloc (VIM_YANK, key); @@ -1596,7 +1600,7 @@ rl_vi_yank_to (int count, int key) } _rl_mvcxt_dispose (_rl_vimvcxt); - _rl_vimvcxt = 0; + _rl_vimvcxt = savecxt; return r; } @@ -2036,6 +2040,9 @@ _rl_vi_callback_change_char (_rl_callback_generic_arg *data) char mb[MB_LEN_MAX+1]; c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + if (c < 0) + return -1; + #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX); @@ -2044,9 +2051,6 @@ _rl_vi_callback_change_char (_rl_callback_generic_arg *data) _rl_vi_last_replacement[0] = c; _rl_vi_last_replacement[MB_LEN_MAX] = '\0'; /* XXX */ - if (c < 0) - return -1; - _rl_callback_func = 0; _rl_want_redisplay = 1; @@ -2077,6 +2081,8 @@ rl_vi_change_char (int count, int key) else { c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + if (c < 0) + return -1; #ifdef HANDLE_MULTIBYTE if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX); @@ -2113,7 +2119,8 @@ rl_vi_overstrike (int count, int key) if (count > 0) { - _rl_overwrite_char (count, key); + if (_rl_overwrite_char (count, key) != 0) + return (1); vi_replace_count += count; } diff --git a/lib/readline/xmalloc.h b/lib/readline/xmalloc.h index f40d7a596..0fb9df9c0 100644 --- a/lib/readline/xmalloc.h +++ b/lib/readline/xmalloc.h @@ -1,6 +1,6 @@ /* xmalloc.h -- memory allocation that aborts on errors. */ -/* Copyright (C) 1999-2009 Free Software Foundation, Inc. +/* Copyright (C) 1999-2009,2010-2021 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -38,8 +38,8 @@ #endif /* !PTR_T */ -extern PTR_T xmalloc PARAMS((size_t)); -extern PTR_T xrealloc PARAMS((void *, size_t)); -extern void xfree PARAMS((void *)); +extern PTR_T xmalloc (size_t); +extern PTR_T xrealloc (void *, size_t); +extern void xfree (void *); #endif /* _XMALLOC_H_ */ diff --git a/lib/sh/Makefile.in b/lib/sh/Makefile.in index 98064de55..8c42c73d0 100644 --- a/lib/sh/Makefile.in +++ b/lib/sh/Makefile.in @@ -2,7 +2,7 @@ # Makefile for the Bash library # # -# Copyright (C) 1998-2020 Free Software Foundation, Inc. +# Copyright (C) 1998-2022 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -57,6 +57,7 @@ SHELL = @MAKE_SHELL@ CFLAGS = @CFLAGS@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} +STYLE_CFLAGS = @STYLE_CFLAGS@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@ @@ -68,7 +69,7 @@ LOCAL_DEFS = @LOCAL_DEFS@ INCLUDES = -I. -I../.. -I$(topdir) -I$(topdir)/lib -I$(BASHINCDIR) -I$(srcdir) $(INTL_INC) CCFLAGS = ${ADDON_CFLAGS} ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) \ - $(LOCAL_CFLAGS) $(CFLAGS) $(CPPFLAGS) + $(LOCAL_CFLAGS) $(STYLE_CFLAGS) $(CFLAGS) $(CPPFLAGS) GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \ -Wcast-align -Wstrict-prototypes -Wconversion \ @@ -93,7 +94,7 @@ CSOURCES = clktck.c clock.c getcwd.c getenv.c oslib.c setlinebuf.c \ wcsdup.c fpurge.c zgetline.c mbscmp.c uconvert.c ufuncs.c \ casemod.c dprintf.c input_avail.c mbscasecmp.c fnxform.c \ strchrnul.c unicode.c wcswidth.c wcsnwidth.c shmbchar.c strdup.c \ - utf8.c random.c gettimeofday.c + strvis.c utf8.c random.c gettimeofday.c timers.c # The header files for this library. HSOURCES = @@ -107,8 +108,8 @@ OBJECTS = clktck.o clock.o getenv.o oslib.o setlinebuf.o strnlen.o \ strtrans.o snprintf.o mailstat.o fmtulong.o \ fmtullong.o fmtumax.o zcatfd.o zmapfd.o winsize.o wcsdup.o \ fpurge.o zgetline.o mbscmp.o uconvert.o ufuncs.o casemod.o \ - input_avail.o mbscasecmp.o fnxform.o unicode.o shmbchar.o \ - utf8.o random.o gettimeofday.o wcsnwidth.o ${LIBOBJS} + input_avail.o mbscasecmp.o fnxform.o unicode.o shmbchar.o strvis.o \ + utf8.o random.o gettimeofday.o timers.o wcsnwidth.o ${LIBOBJS} SUPPORT = Makefile @@ -197,6 +198,8 @@ strtoul.o: strtoul.c strtoull.o: strtoull.c strtoumax.o: strtoumax.c strtrans.o: strtrans.c +strvis.o: strvis.c +timers.o: timers.c times.o: times.c timeval.o: timeval.c tmpfile.o: tmpfile.c @@ -277,6 +280,8 @@ strtoul.o: ${BUILD_DIR}/config.h strtoull.o: ${BUILD_DIR}/config.h strtoumax.o: ${BUILD_DIR}/config.h strtrans.o: ${BUILD_DIR}/config.h +strvis.o: ${BUILD_DIR}/config.h +timers.o: ${BUILD_DIR}/config.h times.o: ${BUILD_DIR}/config.h timeval.o: ${BUILD_DIR}/config.h tmpfile.o: ${BUILD_DIR}/config.h ${topdir}/config-top.h @@ -509,6 +514,11 @@ strtrans.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h strtrans.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h #strtrans.o: ${BUILD_DIR}/version.h +strvis.o: ${topdir}/bashansi.h +strvis.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +strvis.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h +strvis.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h + times.o: ${BASHINCDIR}/systimes.h times.o: ${BASHINCDIR}/posixtime.h @@ -620,6 +630,14 @@ fnxform.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h shmbchar.o: ${BASHINCDIR}/shmbchar.h shmbchar.o: ${BASHINCDIR}/shmbutil.h +timers.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +timers.o: ${BASHINCDIR}/stdc.h +timers.o: ${topdir}/xmalloc.h ${topdir}/sig.h +timers.o: ${BASHINCDIR}/posixtime.h ${BASHINCDIR}/stat-time.h +timers.o: ${BASHINCDIR}/posixselect.h +timers.o: ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +timers.o: ${BASHINCDIR}/timer.h + unicode.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h unicode.o: ${BASHINCDIR}/stdc.h unicode.o: ${topdir}/xmalloc.h diff --git a/lib/sh/casemod.c b/lib/sh/casemod.c index bdd96f840..0403f91cf 100644 --- a/lib/sh/casemod.c +++ b/lib/sh/casemod.c @@ -47,7 +47,7 @@ #define _to_wlower(wc) (iswupper (wc) ? towlower (wc) : (wc)) #if !defined (HANDLE_MULTIBYTE) -# define cval(s, i) ((s)[(i)]) +# define cval(s, i, l) ((s)[(i)]) # define iswalnum(c) (isalnum(c)) # define TOGGLE(x) (ISUPPER (x) ? tolower ((unsigned char)x) : (TOUPPER (x))) #else @@ -75,18 +75,16 @@ extern char *substring PARAMS((char *, int, int)); #if defined (HANDLE_MULTIBYTE) static wchar_t -cval (s, i) +cval (s, i, l) char *s; - int i; + int i, l; { size_t tmp; wchar_t wc; - int l; mbstate_t mps; if (MB_CUR_MAX == 1 || is_basic (s[i])) return ((wchar_t)s[i]); - l = strlen (s); if (i >= (l - 1)) return ((wchar_t)s[i]); memset (&mps, 0, sizeof (mbstate_t)); @@ -143,7 +141,7 @@ sh_modcase (string, pat, flags) inword = 0; while (start < end) { - wc = cval ((char *)string, start); + wc = cval ((char *)string, start, end); if (iswalnum (wc) == 0) inword = 0; diff --git a/lib/sh/fmtullong.c b/lib/sh/fmtullong.c index 97a1dc18c..46eaf509b 100644 --- a/lib/sh/fmtullong.c +++ b/lib/sh/fmtullong.c @@ -20,7 +20,7 @@ #include -#ifdef HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG_INT #define LONG long long #define UNSIGNED_LONG unsigned long long diff --git a/lib/sh/input_avail.c b/lib/sh/input_avail.c index 695165fdc..2ac446165 100644 --- a/lib/sh/input_avail.c +++ b/lib/sh/input_avail.c @@ -110,7 +110,7 @@ nchars_avail (fd, nchars) #if defined(HAVE_SELECT) fd_set readfds, exceptfds; #endif -#if defined (HAVE_PSELECT) +#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) sigset_t set, oset; #endif diff --git a/lib/sh/oslib.c b/lib/sh/oslib.c index 65eb99d9f..edc5c6f20 100644 --- a/lib/sh/oslib.c +++ b/lib/sh/oslib.c @@ -167,8 +167,8 @@ getdtablesize () # endif void bcopy (s,d,n) - char *d, *s; - int n; + void *d, *s; + size_t n; { FASTCOPY (s, d, n); } @@ -180,8 +180,8 @@ bcopy (s,d,n) # endif void bzero (s, n) - char *s; - int n; + void *s; + size_t n; { register int i; register char *r; @@ -197,7 +197,7 @@ bzero (s, n) int gethostname (name, namelen) char *name; - int namelen; + size_t namelen; { int i; struct utsname ut; @@ -214,7 +214,7 @@ gethostname (name, namelen) int gethostname (name, namelen) char *name; - int namelen; + size_t namelen; { strncpy (name, "unknown", namelen); name[namelen] = '\0'; @@ -237,7 +237,7 @@ killpg (pgrp, sig) int mkfifo (path, mode) char *path; - int mode; + mode_t mode; { #if defined (S_IFIFO) return (mknod (path, (mode | S_IFIFO), 0)); diff --git a/lib/sh/setlinebuf.c b/lib/sh/setlinebuf.c index 6473ddfcc..dd76e9fcb 100644 --- a/lib/sh/setlinebuf.c +++ b/lib/sh/setlinebuf.c @@ -1,6 +1,6 @@ /* setlinebuf.c - line-buffer a stdio stream. */ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997,2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -25,36 +25,39 @@ #include #if defined (USING_BASH_MALLOC) -# define LBUF_BUFSIZE 1008 +# define LBUF_BUFSIZE 2016 #else # define LBUF_BUFSIZE BUFSIZ #endif +static char *stdoutbuf = 0; +static char *stderrbuf = 0; + /* Cause STREAM to buffer lines as opposed to characters or blocks. */ int sh_setlinebuf (stream) FILE *stream; { - char *local_linebuf; - #if !defined (HAVE_SETLINEBUF) && !defined (HAVE_SETVBUF) return (0); #endif +#if defined (HAVE_SETVBUF) + char *local_linebuf; + #if defined (USING_BASH_MALLOC) - local_linebuf = (char *)xmalloc (LBUF_BUFSIZE); + if (stream == stdout && stdoutbuf == 0) + local_linebuf = stdoutbuf = (char *)xmalloc (LBUF_BUFSIZE); + else if (stream == stderr && stderrbuf == 0) + local_linebuf = stderrbuf = (char *)xmalloc (LBUF_BUFSIZE); + else + local_linebuf = (char *)NULL; /* let stdio handle it */ #else local_linebuf = (char *)NULL; #endif -#if defined (HAVE_SETVBUF) - -# if defined (SETVBUF_REVERSED) - return (setvbuf (stream, _IOLBF, local_linebuf, LBUF_BUFSIZE)); -# else /* !SETVBUF_REVERSED */ return (setvbuf (stream, local_linebuf, _IOLBF, LBUF_BUFSIZE)); -# endif /* !SETVBUF_REVERSED */ -# else /* !HAVE_SETVBUF */ +#else /* !HAVE_SETVBUF */ setlinebuf (stream); return (0); diff --git a/lib/sh/shmatch.c b/lib/sh/shmatch.c index d6e7f904e..a717d45c9 100644 --- a/lib/sh/shmatch.c +++ b/lib/sh/shmatch.c @@ -2,7 +2,7 @@ * shmatch.c -- shell interface to posix regular expression matching. */ -/* Copyright (C) 2003-2015 Free Software Foundation, Inc. +/* Copyright (C) 2003-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -41,6 +41,10 @@ extern int glob_ignore_case, match_ignore_case; +#if defined (ARRAY_VARS) +extern SHELL_VAR *builtin_find_indexed_array (char *, int); +#endif + int sh_regmatch (string, pattern, flags) const char *string; @@ -92,11 +96,16 @@ sh_regmatch (string, pattern, flags) /* Store the parenthesized subexpressions in the array BASH_REMATCH. Element 0 is the portion that matched the entire regexp. Element 1 is the part that matched the first subexpression, and so on. */ - unbind_variable_noref ("BASH_REMATCH"); +#if 1 + unbind_global_variable_noref ("BASH_REMATCH"); rematch = make_new_array_variable ("BASH_REMATCH"); - amatch = array_cell (rematch); +#else + /* TAG:bash-5.3 */ + rematch = builtin_find_indexed_array ("BASH_REMATCH", 1); +#endif + amatch = rematch ? array_cell (rematch) : (ARRAY *)0; - if (matches && (flags & SHMAT_SUBEXP) && result == EXECUTION_SUCCESS && subexp_str) + if (matches && amatch && (flags & SHMAT_SUBEXP) && result == EXECUTION_SUCCESS && subexp_str) { for (subexp_ind = 0; subexp_ind <= regex.re_nsub; subexp_ind++) { diff --git a/lib/sh/shquote.c b/lib/sh/shquote.c index 680f84ed8..26fe01853 100644 --- a/lib/sh/shquote.c +++ b/lib/sh/shquote.c @@ -311,12 +311,13 @@ sh_backslash_quote (string, table, flags) return (result); } -#if defined (PROMPT_STRING_DECODE) +#if defined (PROMPT_STRING_DECODE) || defined (TRANSLATABLE_STRINGS) /* Quote characters that get special treatment when in double quotes in STRING - using backslashes. Return a new string. */ + using backslashes. FLAGS is reserved for future use. Return a new string. */ char * -sh_backslash_quote_for_double_quotes (string) +sh_backslash_quote_for_double_quotes (string, flags) char *string; + int flags; { unsigned char c; char *result, *r, *s, *send; diff --git a/lib/sh/snprintf.c b/lib/sh/snprintf.c index 406a3a507..1f0f4c736 100644 --- a/lib/sh/snprintf.c +++ b/lib/sh/snprintf.c @@ -70,7 +70,7 @@ #endif #if defined(DRIVER) && !defined(HAVE_CONFIG_H) -#define HAVE_LONG_LONG +#define HAVE_LONG_LONG_INT #define HAVE_LONG_DOUBLE #ifdef __linux__ #define HAVE_PRINTF_A_FORMAT @@ -286,7 +286,7 @@ static void floating PARAMS((struct DATA *, double)); static void exponent PARAMS((struct DATA *, double)); #endif static void number PARAMS((struct DATA *, unsigned long, int)); -#ifdef HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG_INT static void lnumber PARAMS((struct DATA *, unsigned long long, int)); #endif static void pointer PARAMS((struct DATA *, unsigned long)); @@ -767,7 +767,7 @@ number(p, d, base) FREE (t); } -#ifdef HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG_INT /* * identical to number() but works for `long long' */ @@ -1262,7 +1262,7 @@ vsnprintf_internal(data, string, length, format, args) long double ld; /* for later */ #endif unsigned long ul; -#ifdef HAVE_LONG_LONG +#ifdef HAVE_UNSIGNED_LONG_LONG_INT unsigned long long ull; #endif int state, i, c, n; @@ -1486,7 +1486,7 @@ conv_break: /* FALLTHROUGH */ case 'u': STAR_ARGS(data); -#ifdef HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG_INT if (data->flags & PF_LONGLONG) { ull = GETARG (unsigned long long); @@ -1506,7 +1506,7 @@ conv_break: case 'd': /* decimal */ case 'i': STAR_ARGS(data); -#ifdef HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG_INT if (data->flags & PF_LONGLONG) { ull = GETARG (long long); @@ -1522,7 +1522,7 @@ conv_break: break; case 'o': /* octal */ STAR_ARGS(data); -#ifdef HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG_INT if (data->flags & PF_LONGLONG) { ull = GETARG (unsigned long long); @@ -1539,7 +1539,7 @@ conv_break: case 'x': case 'X': /* hexadecimal */ STAR_ARGS(data); -#ifdef HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG_INT if (data->flags & PF_LONGLONG) { ull = GETARG (unsigned long long); @@ -1602,7 +1602,7 @@ conv_break: state = 0; break; case 'n': -#ifdef HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG_INT if (data->flags & PF_LONGLONG) *(GETARG (long long *)) = data->counter; else @@ -2082,7 +2082,7 @@ main() printf("<%s>\n", holder); printf("<%s>\n\n", h); -#ifdef HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG_INT printf ("<%%llu> LLONG_MAX+1\n"); i = snprintf(holder, 100, "%llu", (unsigned long long)(LLONG_MAX)+1); i = asprintf(&h, "%llu", (unsigned long long)(LLONG_MAX)+1); diff --git a/lib/sh/strdup.c b/lib/sh/strdup.c index 90fa3532c..3d35f7c0a 100644 --- a/lib/sh/strdup.c +++ b/lib/sh/strdup.c @@ -17,7 +17,6 @@ You should have received a copy of the GNU General Public License along with Bash. If not, see . */ - #include diff --git a/lib/sh/strftime.c b/lib/sh/strftime.c index 08ccb9a34..60bee79f7 100644 --- a/lib/sh/strftime.c +++ b/lib/sh/strftime.c @@ -59,16 +59,13 @@ */ #include +#include + #include #include -#include +#include #include -#if defined(TM_IN_SYS_TIME) -#include -#include -#endif - #include #include diff --git a/lib/sh/strtoimax.c b/lib/sh/strtoimax.c index 676e02ef0..584fa0ba2 100644 --- a/lib/sh/strtoimax.c +++ b/lib/sh/strtoimax.c @@ -51,7 +51,7 @@ extern long strtol PARAMS((const char *, char **, int)); #ifndef HAVE_DECL_STRTOLL "this configure-time declaration test was not run" #endif -#if !HAVE_DECL_STRTOLL && HAVE_LONG_LONG +#if !HAVE_DECL_STRTOLL && HAVE_LONG_LONG_INT extern long long strtoll PARAMS((const char *, char **, int)); #endif @@ -65,7 +65,7 @@ strtoimax (ptr, endptr, base) char **endptr; int base; { -#if HAVE_LONG_LONG +#if HAVE_LONG_LONG_INT verify(size_is_that_of_long_or_long_long, (sizeof (intmax_t) == sizeof (long) || sizeof (intmax_t) == sizeof (long long))); @@ -86,20 +86,20 @@ main () { char *p, *endptr; intmax_t x; -#if HAVE_LONG_LONG +#if HAVE_LONG_LONG_INT long long y; #endif long z; printf ("sizeof intmax_t: %d\n", sizeof (intmax_t)); -#if HAVE_LONG_LONG +#if HAVE_LONG_LONG_INT printf ("sizeof long long: %d\n", sizeof (long long)); #endif printf ("sizeof long: %d\n", sizeof (long)); x = strtoimax("42", &endptr, 10); -#if HAVE_LONG_LONG +#if HAVE_LONG_LONG_INT y = strtoll("42", &endptr, 10); #else y = -1; diff --git a/lib/sh/strtol.c b/lib/sh/strtol.c index 8aa747880..c839a97ca 100644 --- a/lib/sh/strtol.c +++ b/lib/sh/strtol.c @@ -20,7 +20,7 @@ #include -#if !defined (HAVE_STRTOL) +#if !HAVE_STRTOL #include #include diff --git a/lib/sh/strtoll.c b/lib/sh/strtoll.c index f6060eefa..f90300b9f 100644 --- a/lib/sh/strtoll.c +++ b/lib/sh/strtoll.c @@ -20,11 +20,11 @@ #include -#if defined (HAVE_LONG_LONG) && !defined (HAVE_STRTOLL) +#if defined (HAVE_LONG_LONG_INT) && !HAVE_STRTOLL #define QUAD 1 #undef HAVE_STRTOL #include "strtol.c" -#endif /* HAVE_LONG_LONG && !HAVE_STRTOLL */ +#endif /* HAVE_LONG_LONG_INT && !HAVE_STRTOLL */ diff --git a/lib/sh/strtoull.c b/lib/sh/strtoull.c index 02ddebb90..fe6592e5a 100644 --- a/lib/sh/strtoull.c +++ b/lib/sh/strtoull.c @@ -20,7 +20,7 @@ #include -#if defined (HAVE_LONG_LONG) && !defined (HAVE_STRTOULL) +#if defined (HAVE_UNSIGNED_LONG_LONG_INT) && !HAVE_STRTOULL #define QUAD 1 #define UNSIGNED 1 @@ -28,4 +28,4 @@ #include "strtol.c" -#endif /* HAVE_LONG_LONG && !HAVE_STRTOULL */ +#endif /* HAVE_UNSIGNED_LONG_LONG_INT && !HAVE_STRTOULL */ diff --git a/lib/sh/strtoumax.c b/lib/sh/strtoumax.c index 0247e57bd..2e26efcf2 100644 --- a/lib/sh/strtoumax.c +++ b/lib/sh/strtoumax.c @@ -51,7 +51,7 @@ extern unsigned long strtoul PARAMS((const char *, char **, int)); #ifndef HAVE_DECL_STRTOULL "this configure-time declaration test was not run" #endif -#if !HAVE_DECL_STRTOULL && HAVE_UNSIGNED_LONG_LONG +#if !HAVE_DECL_STRTOULL && HAVE_UNSIGNED_LONG_LONG_INT extern unsigned long long strtoull PARAMS((const char *, char **, int)); #endif @@ -65,7 +65,7 @@ strtoumax (ptr, endptr, base) char **endptr; int base; { -#if HAVE_UNSIGNED_LONG_LONG +#if HAVE_UNSIGNED_LONG_LONG_INT verify (size_is_that_of_unsigned_long_or_unsigned_long_long, (sizeof (uintmax_t) == sizeof (unsigned long) || sizeof (uintmax_t) == sizeof (unsigned long long))); @@ -86,20 +86,20 @@ main () { char *p, *endptr; uintmax_t x; -#if HAVE_UNSIGNED_LONG_LONG +#if HAVE_UNSIGNED_LONG_LONG_INT unsigned long long y; #endif unsigned long z; printf ("sizeof uintmax_t: %d\n", sizeof (uintmax_t)); -#if HAVE_UNSIGNED_LONG_LONG +#if HAVE_UNSIGNED_LONG_LONG_INT printf ("sizeof unsigned long long: %d\n", sizeof (unsigned long long)); #endif printf ("sizeof unsigned long: %d\n", sizeof (unsigned long)); x = strtoumax("42", &endptr, 10); -#if HAVE_LONG_LONG +#if HAVE_LONG_LONG_INT y = strtoull("42", &endptr, 10); #else y = 0; diff --git a/lib/sh/strvis.c b/lib/sh/strvis.c new file mode 100644 index 000000000..7a11d5799 --- /dev/null +++ b/lib/sh/strvis.c @@ -0,0 +1,154 @@ +/* strvis.c - make unsafe graphical characters in a string visible. */ + +/* Copyright (C) 2022 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 . +*/ + +/* This is a stripped-down version suitable for the shell's use. */ +#include + +#include + +#include "bashansi.h" +#include + +#include "chartypes.h" +#include "bashintl.h" +#include "shmbutil.h" + +#define SAFECHAR(c) ((c) == ' ' || (c) == '\t') + +#ifndef RUBOUT +#define RUBOUT 0x7f +#endif + +#ifndef CTRL_CHAR +#define CTRL_CHAR(c) ((c) < 0x20) +#endif + +#ifndef META_CHAR +#define META_CHAR(c) ((c) > 0x7f && (c) <= UCHAR_MAX) +#endif + +#ifndef UNCTRL +#define UNCTRL(c) (TOUPPER ((c) | 0x40)) +#endif + +#ifndef UNMETA +#define UNMETA(c) ((c) & 0x7f) +#endif + +int +sh_charvis (s, sindp, slen, ret, rindp) + const char *s; + size_t *sindp; + size_t slen; + char *ret; + size_t *rindp; +{ + unsigned char c; + size_t si, ri; + const char *send; + DECLARE_MBSTATE; + + si = *sindp; + ri = *rindp; + c = s[*sindp]; + +#if defined (HANDLE_MULTIBYTE) + send = (locale_mb_cur_max > 1) ? s + slen : 0; +#else + send = 0; +#endif + + if (SAFECHAR (c)) + { + ret[ri++] = c; + si++; + } + else if (c == RUBOUT) + { + ret[ri++] = '^'; + ret[ri++] = '?'; + si++; + } + else if (CTRL_CHAR (c)) + { + ret[ri++] = '^'; + ret[ri++] = UNCTRL (c); + si++; + } +#if defined (HANDLE_MULTIBYTE) + else if (locale_utf8locale && (c & 0x80)) + COPY_CHAR_I (ret, ri, s, send, si); + else if (locale_mb_cur_max > 1 && is_basic (c) == 0) + COPY_CHAR_I (ret, ri, s, send, si); +#endif + else if (META_CHAR (c)) + { + ret[ri++] = 'M'; + ret[ri++] = '-'; + ret[ri++] = UNMETA (c); + si++; + } + else + ret[ri++] = s[si++]; + + *sindp = si; + *rindp = ri; + + return si; +} + +/* Return a new string with `unsafe' non-graphical characters in S rendered + in a visible way. */ +char * +sh_strvis (string) + const char *string; +{ + size_t slen, sind; + char *ret; + size_t retind, retsize; + unsigned char c; + DECLARE_MBSTATE; + + if (string == 0) + return 0; + if (*string == '\0') + { + if ((ret = (char *)malloc (1)) == 0) + return 0; + ret[0] = '\0'; + return ret; + } + + slen = strlen (string); + retsize = 3 * slen + 1; + + ret = (char *)malloc (retsize); + if (ret == 0) + return 0; + + retind = 0; + sind = 0; + + while (string[sind]) + sind = sh_charvis (string, &sind, slen, ret, &retind); + + ret[retind] = '\0'; + return ret; +} diff --git a/lib/sh/timers.c b/lib/sh/timers.c new file mode 100644 index 000000000..69b754c97 --- /dev/null +++ b/lib/sh/timers.c @@ -0,0 +1,262 @@ +/* timers - functions to manage shell timers */ + +/* Copyright (C) 2021 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include "bashtypes.h" +#include "posixtime.h" + +#if defined (HAVE_UNISTD_H) +#include +#endif + +#if defined (HAVE_SELECT) +# include "posixselect.h" +# include "stat-time.h" +#endif + +#include "sig.h" +#include "bashjmp.h" +#include "xmalloc.h" + +#include "timer.h" + +#include +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#ifndef FREE +#define FREE(s) do { if (s) free (s); } while (0) +#endif + +extern unsigned int falarm (unsigned int, unsigned int); + +static void shtimer_zero (sh_timer *); + +static void +shtimer_zero (sh_timer *t) +{ + t->tmout.tv_sec = 0; + t->tmout.tv_usec = 0; + + t->fd = -1; + t->flags = t->alrmflag = 0; + + t->alrm_handler = t->old_handler = 0; + + memset (t->jmpenv, '\0', sizeof (t->jmpenv)); + + t->tm_handler = 0; + t->data = 0; +} + +sh_timer * +shtimer_alloc (void) +{ + sh_timer *t; + + t = (sh_timer *)xmalloc (sizeof (sh_timer)); + shtimer_zero (t); + return t; +} + +void +shtimer_flush (sh_timer *t) +{ + /* The caller can manage t->data arbitrarily as long as it frees and sets + t->data to 0 before calling this function. Otherwise, we do what we can + to avoid memleaks. */ + FREE (t->data); + shtimer_zero (t); +} + +void +shtimer_dispose (sh_timer *t) +{ + free (t); +} + +/* We keep the timer as an offset into the future from the time it's set. */ +void +shtimer_set (sh_timer *t, time_t sec, long usec) +{ + struct timeval now; + + if (t->flags & SHTIMER_ALARM) + { + t->alrmflag = 0; /* just paranoia */ + t->old_handler = set_signal_handler (SIGALRM, t->alrm_handler); + t->flags |= SHTIMER_SIGSET; + falarm (t->tmout.tv_sec = sec, t->tmout.tv_usec = usec); + t->flags |= SHTIMER_ALRMSET; + return; + } + + if (gettimeofday (&now, 0) < 0) + timerclear (&now); + + t->tmout.tv_sec = now.tv_sec + sec; + t->tmout.tv_usec = now.tv_usec + usec; + if (t->tmout.tv_usec > USEC_PER_SEC) + { + t->tmout.tv_sec++; + t->tmout.tv_usec -= USEC_PER_SEC; + } +} + +void +shtimer_unset (sh_timer *t) +{ + t->tmout.tv_sec = 0; + t->tmout.tv_usec = 0; + + if (t->flags & SHTIMER_ALARM) + { + t->alrmflag = 0; + if (t->flags & SHTIMER_ALRMSET) + falarm (0, 0); + if (t->old_handler && (t->flags & SHTIMER_SIGSET)) + { + set_signal_handler (SIGALRM, t->old_handler); + t->flags &= ~SHTIMER_SIGSET; + t->old_handler = 0; + } + } +} + +void +shtimer_cleanup (sh_timer *t) +{ + shtimer_unset (t); +} + +void +shtimer_clear (sh_timer *t) +{ + shtimer_unset (t); + shtimer_dispose (t); +} + +int +shtimer_chktimeout (sh_timer *t) +{ + struct timeval now; + int r; + + /* Use the flag to avoid returning sigalrm_seen here */ + if (t->flags & SHTIMER_ALARM) + return t->alrmflag; + + /* Could check a flag for this */ + if (t->tmout.tv_sec == 0 && t->tmout.tv_usec == 0) + return 0; + + if (gettimeofday (&now, 0) < 0) + return 0; + r = ((now.tv_sec > t->tmout.tv_sec) || + (now.tv_sec == t->tmout.tv_sec && now.tv_usec >= t->tmout.tv_usec)); + + return r; +} + +#if defined (HAVE_SELECT) || defined (HAVE_PSELECT) +int +shtimer_select (sh_timer *t) +{ + int r, nfd; + sigset_t blocked_sigs, prevmask; + struct timeval now, tv; + fd_set readfds; +#if defined (HAVE_PSELECT) + struct timespec ts; +#endif + + /* We don't want a SIGCHLD to interrupt this */ + sigemptyset (&blocked_sigs); +# if defined (SIGCHLD) + sigaddset (&blocked_sigs, SIGCHLD); +# endif + + if (gettimeofday (&now, 0) < 0) + { + if (t->flags & SHTIMER_LONGJMP) + sh_longjmp (t->jmpenv, 1); + else + return -1; + } + + /* If the timer has already expired, return immediately */ + if ((now.tv_sec > t->tmout.tv_sec) || + (now.tv_sec == t->tmout.tv_sec && now.tv_usec >= t->tmout.tv_usec)) + { + if (t->flags & SHTIMER_LONGJMP) + sh_longjmp (t->jmpenv, 1); + else if (t->tm_handler) + return ((*t->tm_handler) (t)); + else + return 0; + } + + /* compute timeout */ + tv.tv_sec = t->tmout.tv_sec - now.tv_sec; + tv.tv_usec = t->tmout.tv_usec - now.tv_usec; + if (tv.tv_usec < 0) + { + tv.tv_sec--; + tv.tv_usec += USEC_PER_SEC; + } + +#if defined (HAVE_PSELECT) + ts.tv_sec = tv.tv_sec; + ts.tv_nsec = tv.tv_usec * 1000; +#else + sigemptyset (&prevmask); +#endif /* !HAVE_PSELECT */ + + nfd = (t->fd >= 0) ? t->fd + 1 : 0; + FD_ZERO (&readfds); + if (t->fd >= 0) + FD_SET (t->fd, &readfds); + +#if defined (HAVE_PSELECT) + r = pselect(nfd, &readfds, (fd_set *)0, (fd_set *)0, &ts, &blocked_sigs); +#else + sigprocmask (SIG_SETMASK, &blocked_sigs, &prevmask); + r = select(nfd, &readfds, (fd_set *)0, (fd_set *)0, &tv); + sigprocmask (SIG_SETMASK, &prevmask, NULL); +#endif + + if (r < 0) + return r; /* caller will handle */ + else if (r == 0 && (t->flags & SHTIMER_LONGJMP)) + sh_longjmp (t->jmpenv, 1); + else if (r == 0 && t->tm_handler) + return ((*t->tm_handler) (t)); + else + return r; +} +#endif /* !HAVE_TIMEVAL || !HAVE_SELECT */ + +int +shtimer_alrm (sh_timer *t) +{ + return 0; +} diff --git a/lib/sh/unicode.c b/lib/sh/unicode.c index d95d1e25f..d781353b6 100644 --- a/lib/sh/unicode.c +++ b/lib/sh/unicode.c @@ -145,7 +145,7 @@ u32tocesc (wc, s) if (wc < 0x10000) l = sprintf (s, "\\u%04X", wc); else - l = sprintf (s, "\\u%08X", wc); + l = sprintf (s, "\\U%08X", wc); return l; } diff --git a/lib/sh/winsize.c b/lib/sh/winsize.c index 861c7c89b..846fcd58a 100644 --- a/lib/sh/winsize.c +++ b/lib/sh/winsize.c @@ -68,6 +68,11 @@ extern int errno; extern int shell_tty; #if defined (READLINE) +/* Let's not call readline, forcing readline to initialize the termcap/terminfo + variables it needs, unless we have to. */ +extern int interactive_shell; +extern int no_line_editing; +extern int bash_readline_initialized; extern void rl_set_screen_size PARAMS((int, int)); #endif extern void sh_set_lines_and_columns PARAMS((int, int)); @@ -87,12 +92,13 @@ get_new_window_size (from_sig, rp, cp) { sh_set_lines_and_columns (win.ws_row, win.ws_col); #if defined (READLINE) - rl_set_screen_size (win.ws_row, win.ws_col); + if ((interactive_shell && no_line_editing == 0) || bash_readline_initialized) + rl_set_screen_size (win.ws_row, win.ws_col); +#endif if (rp) *rp = win.ws_row; if (cp) *cp = win.ws_col; -#endif } #endif } diff --git a/lib/sh/zgetline.c b/lib/sh/zgetline.c index 8ded14426..5e1ef7242 100644 --- a/lib/sh/zgetline.c +++ b/lib/sh/zgetline.c @@ -68,7 +68,8 @@ zgetline (fd, lineptr, n, delim, unbuffered_read) int delim; int unbuffered_read; { - int nr, retval; + int retval; + size_t nr; char *line, c; if (lineptr == 0 || n == 0 || (*lineptr == 0 && *n != 0)) diff --git a/lib/sh/zmapfd.c b/lib/sh/zmapfd.c index f9e9ed71e..9ff50a474 100644 --- a/lib/sh/zmapfd.c +++ b/lib/sh/zmapfd.c @@ -54,7 +54,7 @@ zmapfd (fd, ostr, fn) int rval; char lbuf[ZBUFSIZ]; char *result; - int rsize, rind; + size_t rsize, rind; rval = 0; result = (char *)xmalloc (rsize = ZBUFSIZ); diff --git a/lib/sh/zread.c b/lib/sh/zread.c index 71a06a76d..dafb7f60a 100644 --- a/lib/sh/zread.c +++ b/lib/sh/zread.c @@ -46,6 +46,7 @@ extern int executing_builtin; extern void check_signals_and_traps (void); extern void check_signals (void); extern int signal_is_trapped (int); +extern int read_builtin_timeout (int); /* Read LEN bytes from FD into BUF. Retry the read on EINTR. Any other error causes the loop to break. */ @@ -58,7 +59,10 @@ zread (fd, buf, len) ssize_t r; check_signals (); /* check for signals before a blocking read */ - while ((r = read (fd, buf, len)) < 0 && errno == EINTR) + /* should generalize into a mechanism where different parts of the shell can + `register' timeouts and have them checked here. */ + while (((r = read_builtin_timeout (fd)) < 0 || (r = read (fd, buf, len)) < 0) && + errno == EINTR) { int t; t = errno; diff --git a/lib/termcap/termcap.c b/lib/termcap/termcap.c index ba3dab2c2..87fae05f6 100644 --- a/lib/termcap/termcap.c +++ b/lib/termcap/termcap.c @@ -52,15 +52,18 @@ extern char *realloc (); #else /* not HAVE_CONFIG_H */ -#ifdef STDC_HEADERS +#ifdef HAVE_STDLIB_H #include -#include #else char *getenv (); char *malloc (); char *realloc (); #endif +#ifdef HAVE_STRING_H +#include +#endif + /* Do this after the include, in case string.h prototypes bcopy. */ #if (defined(HAVE_STRING_H) || defined(STDC_HEADERS)) && !defined(bcopy) #define bcopy(s, d, n) memcpy ((d), (s), (n)) diff --git a/lib/tilde/Makefile.in b/lib/tilde/Makefile.in index c21d3897c..e61c6718d 100644 --- a/lib/tilde/Makefile.in +++ b/lib/tilde/Makefile.in @@ -4,7 +4,7 @@ # # #################################################################### -# Copyright (C) 1996-2009 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -42,6 +42,7 @@ PROFILE_FLAGS = @PROFILE_FLAGS@ CFLAGS = @CFLAGS@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ +STYLE_CFLAGS = @STYLE_CFLAGS@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@ @@ -53,7 +54,7 @@ BASHINCDIR = ${topdir}/include INCLUDES = -I. -I../.. -I$(topdir) -I${BASHINCDIR} -I$(topdir)/lib CCFLAGS = ${ASAN_CFLAGS} $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) \ - ${INCLUDES} $(LOCAL_CFLAGS) $(CFLAGS) + ${INCLUDES} $(STYLE_CFLAGS) $(LOCAL_CFLAGS) $(CFLAGS) .c.o: $(CC) -c $(CCFLAGS) $< diff --git a/lib/tilde/tilde.h b/lib/tilde/tilde.h index e26dd0476..bc8022afc 100644 --- a/lib/tilde/tilde.h +++ b/lib/tilde/tilde.h @@ -1,6 +1,6 @@ /* tilde.h: Externally available variables and function in libtilde.a. */ -/* Copyright (C) 1992-2009 Free Software Foundation, Inc. +/* Copyright (C) 1992-2009,2021 Free Software Foundation, Inc. This file contains the Readline Library (Readline), a set of routines for providing Emacs style line input to programs that ask @@ -27,19 +27,7 @@ extern "C" { #endif -/* A function can be defined using prototypes and compile on both ANSI C - and traditional C compilers with something like this: - extern char *func PARAMS((char *, char *, int)); */ - -#if !defined (PARAMS) -# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) -# define PARAMS(protos) protos -# else -# define PARAMS(protos) () -# endif -#endif - -typedef char *tilde_hook_func_t PARAMS((char *)); +typedef char *tilde_hook_func_t (char *); /* If non-null, this contains the address of a function that the application wants called before trying the standard tilde expansions. The function @@ -64,14 +52,14 @@ extern char **tilde_additional_prefixes; extern char **tilde_additional_suffixes; /* Return a new string which is the result of tilde expanding STRING. */ -extern char *tilde_expand PARAMS((const char *)); +extern char *tilde_expand (const char *); /* Do the work of tilde expansion on FILENAME. FILENAME starts with a tilde. If there is no expansion, call tilde_expansion_failure_hook. */ -extern char *tilde_expand_word PARAMS((const char *)); +extern char *tilde_expand_word (const char *); /* Find the portion of the string beginning with ~ that should be expanded. */ -extern char *tilde_find_word PARAMS((const char *, int, int *)); +extern char *tilde_find_word (const char *, int, int *); #ifdef __cplusplus } diff --git a/locale.c b/locale.c index 17ccc5856..fabf7b125 100644 --- a/locale.c +++ b/locale.c @@ -1,6 +1,6 @@ /* locale.c - Miscellaneous internationalization functions. */ -/* Copyright (C) 1996-2009,2012,2016,2020 Free Software Foundation, Inc. +/* Copyright (C) 1996-2009,2012,2016-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -47,6 +47,8 @@ int locale_utf8locale; int locale_mb_cur_max; /* value of MB_CUR_MAX for current locale (LC_CTYPE) */ int locale_shiftstates = 0; +int singlequote_translations = 0; /* single-quote output of $"..." */ + extern int dump_translatable_strings, dump_po_strings; /* The current locale when the program begins */ @@ -91,7 +93,7 @@ set_default_locale () #if defined (HANDLE_MULTIBYTE) locale_shiftstates = mblen ((char *)NULL, 0); #else - local_shiftstates = 0; + locale_shiftstates = 0; #endif } @@ -117,7 +119,7 @@ set_default_locale_vars () # if defined (HANDLE_MULTIBYTE) locale_shiftstates = mblen ((char *)NULL, 0); # else - local_shiftstates = 0; + locale_shiftstates = 0; # endif u32reset (); @@ -226,7 +228,7 @@ set_locale_var (var, value) # if defined (HANDLE_MULTIBYTE) locale_shiftstates = mblen ((char *)NULL, 0); # else - local_shiftstates = 0; + locale_shiftstates = 0; # endif u32reset (); return r; @@ -250,7 +252,7 @@ set_locale_var (var, value) #if defined (HANDLE_MULTIBYTE) locale_shiftstates = mblen ((char *)NULL, 0); #else - local_shiftstates = 0; + locale_shiftstates = 0; #endif u32reset (); } @@ -391,13 +393,14 @@ reset_locale_vars () # if defined (HANDLE_MULTIBYTE) locale_shiftstates = mblen ((char *)NULL, 0); # else - local_shiftstates = 0; + locale_shiftstates = 0; # endif u32reset (); #endif return 1; } +#if defined (TRANSLATABLE_STRINGS) /* Translate the contents of STRING, a $"..." quoted string, according to the current locale. In the `C' or `POSIX' locale, or if gettext() is not available, the passed string is returned unchanged. The @@ -512,7 +515,7 @@ mk_msgstr (string, foundnlp) by the caller. The length of the translated string is returned in LENP, if non-null. */ char * -localeexpand (string, start, end, lineno, lenp) +locale_expand (string, start, end, lineno, lenp) char *string; int start, end, lineno, *lenp; { @@ -565,6 +568,7 @@ localeexpand (string, start, end, lineno, lenp) return (temp); } } +#endif /* Set every character in the character class to be a shell break character for the lexical analyzer when the locale changes. */ diff --git a/m4/gettext.m4 b/m4/gettext.m4 index fec380457..8231ce05a 100644 --- a/m4/gettext.m4 +++ b/m4/gettext.m4 @@ -1,5 +1,5 @@ # gettext.m4 serial 69 (gettext-0.19.9) -dnl Copyright (C) 1995-2014, 2016, 2018-2019 Free Software Foundation, Inc. +dnl Copyright (C) 1995-2014, 2016, 2018-2019, 2021 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -16,10 +16,12 @@ dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2006, 2008-2010. +dnl +dnl Modified for bash use by Chet Ramey , 2021 dnl Macro to add for using GNU gettext. -dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl Usage: BASH_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, @@ -54,14 +56,12 @@ dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl -AC_DEFUN([AM_GNU_GETTEXT], +AC_DEFUN([BASH_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) - ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], - [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) diff --git a/m4/strtoimax.m4 b/m4/strtoimax.m4 new file mode 100644 index 000000000..309857235 --- /dev/null +++ b/m4/strtoimax.m4 @@ -0,0 +1,35 @@ +dnl Copyright (C) 2022 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Make sure we replace strtoimax if we don't have a declaration +dnl We can use this as a template for future function checks + +AC_DEFUN([BASH_FUNC_STRTOIMAX], [ +AC_MSG_CHECKING([for usable strtoimax]) +AC_CACHE_VAL(bash_cv_func_strtoimax, +[ + HAVE_STRTOIMAX=0 HAVE_DECL_STRTOIMAX=0 + + AC_CHECK_FUNCS([strtoimax]) + AC_CHECK_DECLS([strtoimax]) + + if test "$ac_cv_func_strtoimax" = "yes" ; then + HAVE_STRTOIMAX=1 + fi + if test "$ac_cv_have_decl_strtoimax" = "yes" ; then + HAVE_DECL_STRTOIMAX=1 + fi + + if test "$HAVE_STRTOIMAX" = 0 || test "$HAVE_DECL_STRTOIMAX" = 0 ; then + bash_cv_func_strtoimax=no REPLACE_STRTOIMAX=1 + else + bash_cv_func_strtoimax=yes + fi +]) +AC_MSG_RESULT($bash_cv_func_strtoimax) +if test $bash_cv_func_strtoimax = yes; then +AC_LIBOBJ(strtoimax) +fi +]) diff --git a/m4/threadlib.m4 b/m4/threadlib.m4 index bfc3bac85..60e4197b1 100644 --- a/m4/threadlib.m4 +++ b/m4/threadlib.m4 @@ -51,8 +51,8 @@ AC_DEFUN([gl_THREADLIB_EARLY_BODY], [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])], [m4_divert_text([DEFAULTS], [gl_use_threads_default=])]) AC_ARG_ENABLE([threads], -AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ -AC_HELP_STRING([--disable-threads], [build without multithread safety])]), +AS_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ +AS_HELP_STRING([--disable-threads], [build without multithread safety])]), [gl_use_threads=$enableval], [if test -n "$gl_use_threads_default"; then gl_use_threads="$gl_use_threads_default" @@ -94,7 +94,7 @@ changequote([,])dnl # need special flags to disable these optimizations. For example, the # definition of 'errno' in . case "$host_os" in - aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; + aix* | freebsd* | midnightbsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; esac fi diff --git a/make_cmd.c b/make_cmd.c index 2d7ac9609..98151a41a 100644 --- a/make_cmd.c +++ b/make_cmd.c @@ -1,7 +1,7 @@ /* make_cmd.c -- Functions for making instances of the various parser constructs. */ -/* Copyright (C) 1989-2020 Free Software Foundation, Inc. +/* Copyright (C) 1989-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -251,10 +251,7 @@ make_arith_for_expr (s) if (s == 0 || *s == '\0') return ((WORD_LIST *)NULL); wd = make_word (s); - wd->flags |= W_NOGLOB|W_NOSPLIT|W_QUOTED|W_DQUOTE; /* no word splitting or globbing */ -#if defined (PROCESS_SUBSTITUTION) - wd->flags |= W_NOPROCSUB; /* no process substitution */ -#endif + wd->flags |= W_NOGLOB|W_NOSPLIT|W_QUOTED|W_NOTILDE|W_NOPROCSUB; /* no word splitting or globbing */ result = make_word_list (wd, (WORD_LIST *)NULL); return result; } @@ -575,12 +572,19 @@ make_here_document (temp, lineno) kill_leading = temp->instruction == r_deblank_reading_until; - document = (char *)NULL; + full_line = document = (char *)NULL; document_index = document_size = 0; + delim_unquoted = (temp->redirectee.filename->flags & W_QUOTED) == 0; + /* Quote removal is the only expansion performed on the delimiter for here documents, making it an extremely special case. */ - redir_word = string_quote_removal (temp->redirectee.filename->word, 0); + /* "If any part of word is quoted, the delimiter shall be formed by + performing quote removal on word." */ + if (delim_unquoted == 0) + redir_word = string_quote_removal (temp->redirectee.filename->word, 0); + else + redir_word = savestring (temp->redirectee.filename->word); /* redirection_expand will return NULL if the expansion results in multiple words or no words. Check for that here, and just abort @@ -607,7 +611,6 @@ make_here_document (temp, lineno) /* If the here-document delimiter was quoted, the lines should be read verbatim from the input. If it was not quoted, we need to perform backslash-quoted newline removal. */ - delim_unquoted = (temp->redirectee.filename->flags & W_QUOTED) == 0; while (full_line = read_secondary_line (delim_unquoted)) { register char *line; @@ -628,7 +631,7 @@ make_here_document (temp, lineno) check the word before stripping the whitespace. This is a hack, though. */ if (STREQN (line, redir_word, redir_len) && line[redir_len] == '\n') - goto document_done; + break; while (*line == '\t') line++; @@ -638,7 +641,15 @@ make_here_document (temp, lineno) continue; if (STREQN (line, redir_word, redir_len) && line[redir_len] == '\n') - goto document_done; + break; + + /* Backwards compatibility here */ + if (STREQN (line, redir_word, redir_len) && (parser_state & PST_EOFTOKEN) && shell_eof_token && strchr (line+redir_len, shell_eof_token)) + { + shell_ungets (line + redir_len); + full_line = 0; + break; + } len = strlen (line); if (len + document_index >= document_size) diff --git a/nojobs.c b/nojobs.c index f2563ca09..b7504cd80 100644 --- a/nojobs.c +++ b/nojobs.c @@ -3,7 +3,7 @@ /* This file works under BSD, System V, minix, and Posix systems. It does not implement job control. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -664,7 +664,7 @@ wait_for_single_pid (pid, flags) if (pstatus == PROC_BAD) { internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid); - return (127); + return (257); } if (pstatus != PROC_STILL_ALIVE) @@ -707,18 +707,20 @@ wait_for_single_pid (pid, flags) /* Wait for all of the shell's children to exit. Called by the `wait' builtin. */ -void +int wait_for_background_pids (ps) struct procstat *ps; { pid_t got_pid; WAIT status; + int njobs; /* If we aren't using job control, we let the kernel take care of the bookkeeping for us. wait () will return -1 and set errno to ECHILD when there are no more unwaited-for child processes on both 4.2 BSD-based and System V-based systems. */ + njobs = 0; siginterrupt (SIGINT, 1); /* Wait for ECHILD */ @@ -726,6 +728,7 @@ wait_for_background_pids (ps) while ((got_pid = WAITPID (-1, &status, 0)) != -1) { waiting_for_child = 0; + njobs++; set_pid_status (got_pid, status); if (ps) { @@ -749,6 +752,8 @@ wait_for_background_pids (ps) mark_dead_jobs_as_notified (1); cleanup_dead_jobs (); + + return njobs; } void diff --git a/parse.y b/parse.y index f4168c7cd..d887eecb6 100644 --- a/parse.y +++ b/parse.y @@ -1,6 +1,6 @@ /* parse.y - Yacc grammar for bash. */ -/* Copyright (C) 1989-2020 Free Software Foundation, Inc. +/* Copyright (C) 1989-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -114,11 +114,24 @@ typedef void *alias_t; # define MBTEST(x) ((x)) #endif +#define EXTEND_SHELL_INPUT_LINE_PROPERTY() \ +do { \ + if (shell_input_line_len + 2 > shell_input_line_propsize) \ + { \ + shell_input_line_propsize = shell_input_line_len + 2; \ + shell_input_line_property = (char *)xrealloc (shell_input_line_property, \ + shell_input_line_propsize); \ + } \ +} while (0) + #if defined (EXTENDED_GLOB) extern int extended_glob; #endif +#if defined (TRANSLATABLE_STRINGS) extern int dump_translatable_strings, dump_po_strings; +extern int singlequote_translations; +#endif /* TRANSLATABLE_STRINGS */ #if !defined (errno) extern int errno; @@ -144,7 +157,6 @@ static int yy_readline_unget PARAMS((int)); static int yy_string_get PARAMS((void)); static int yy_string_unget PARAMS((int)); -static void rewind_input_string PARAMS((void)); static int yy_stream_get PARAMS((void)); static int yy_stream_unget PARAMS((int)); @@ -152,11 +164,9 @@ static int shell_getc PARAMS((int)); static void shell_ungetc PARAMS((int)); static void discard_until PARAMS((int)); -#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) static void push_string PARAMS((char *, int, alias_t *)); static void pop_string PARAMS((void)); static void free_string_list PARAMS((void)); -#endif static char *read_a_line PARAMS((int)); @@ -200,7 +210,7 @@ static void print_offending_line PARAMS((void)); static void report_syntax_error PARAMS((char *)); static void handle_eof_input_unit PARAMS((void)); -static void prompt_again PARAMS((void)); +static void prompt_again PARAMS((int)); #if 0 static void reset_readline_prompt PARAMS((void)); #endif @@ -353,16 +363,20 @@ static FILE *yyerrstream; %token LESS_LESS_MINUS AND_GREATER AND_GREATER_GREATER LESS_GREATER %token GREATER_BAR BAR_AND +/* Special; never created by yylex; only set by parse_comsub and xparse_dolparen */ +%token DOLPAREN + /* The types that the various syntactical units return. */ %type inputunit command pipeline pipeline_command -%type list list0 list1 compound_list simple_list simple_list1 +%type list0 list1 compound_list simple_list simple_list1 %type simple_command shell_command %type for_command select_command case_command group_command %type arith_command %type cond_command %type arith_for_command %type coproc +%type comsub %type function_def function_body if_command elif_clause subshell %type redirection redirection_list %type simple_command_element @@ -389,6 +403,14 @@ inputunit: simple_list simple_list_terminator parser_state |= PST_EOFTOKEN; YYACCEPT; } + | comsub + { + /* This is special; look at the production and how + parse_comsub sets token_to_read */ + global_command = $1; + eof_encountered = 0; + YYACCEPT; + } | '\n' { /* Case of regular command, but not a very @@ -865,32 +887,32 @@ arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_ } ; -select_command: SELECT WORD newline_list DO list DONE +select_command: SELECT WORD newline_list DO compound_list DONE { $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5, word_lineno[word_top]); if (word_top > 0) word_top--; } - | SELECT WORD newline_list '{' list '}' + | SELECT WORD newline_list '{' compound_list '}' { $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5, word_lineno[word_top]); if (word_top > 0) word_top--; } - | SELECT WORD ';' newline_list DO list DONE + | SELECT WORD ';' newline_list DO compound_list DONE { $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6, word_lineno[word_top]); if (word_top > 0) word_top--; } - | SELECT WORD ';' newline_list '{' list '}' + | SELECT WORD ';' newline_list '{' compound_list '}' { $$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6, word_lineno[word_top]); if (word_top > 0) word_top--; } - | SELECT WORD newline_list IN word_list list_terminator newline_list DO list DONE + | SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE { $$ = make_select_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9, word_lineno[word_top]); if (word_top > 0) word_top--; } - | SELECT WORD newline_list IN word_list list_terminator newline_list '{' list '}' + | SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' { $$ = make_select_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9, word_lineno[word_top]); if (word_top > 0) word_top--; @@ -974,6 +996,16 @@ subshell: '(' compound_list ')' } ; +comsub: DOLPAREN compound_list ')' + { + $$ = $2; + } + | DOLPAREN newline_list ')' + { + $$ = (COMMAND *)NULL; + } + ; + coproc: COPROC shell_command { $$ = make_coproc_command ("COPROC", $2); @@ -1094,15 +1126,12 @@ pattern: WORD It must end with a newline or semicolon. Lists are used within commands such as if, for, while. */ -list: newline_list list0 +compound_list: newline_list list0 { $$ = $2; - if (need_here_doc) + if (need_here_doc && last_read_token == '\n') gather_here_documents (); } - ; - -compound_list: list | newline_list list1 { $$ = $2; @@ -1135,7 +1164,12 @@ list1: list1 AND_AND newline_list list1 | list1 ';' newline_list list1 { $$ = command_connect ($1, $4, ';'); } | list1 '\n' newline_list list1 - { $$ = command_connect ($1, $4, ';'); } + { + if (parser_state & PST_CMDSUBST) + $$ = command_connect ($1, $4, '\n'); + else + $$ = command_connect ($1, $4, ';'); + } | pipeline_command { $$ = $1; } ; @@ -1166,12 +1200,14 @@ simple_list: simple_list1 { $$ = $1; if (need_here_doc) - gather_here_documents (); + gather_here_documents (); /* XXX */ if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token) { +INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 -> simple_list")); global_command = $1; eof_encountered = 0; - rewind_input_string (); + if (bash_input.type == st_string) + rewind_input_string (); YYACCEPT; } } @@ -1182,12 +1218,14 @@ simple_list: simple_list1 else $$ = command_connect ($1, (COMMAND *)NULL, '&'); if (need_here_doc) - gather_here_documents (); + gather_here_documents (); /* XXX */ if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token) { +INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 '&' -> simple_list")); global_command = $1; eof_encountered = 0; - rewind_input_string (); + if (bash_input.type == st_string) + rewind_input_string (); YYACCEPT; } } @@ -1195,12 +1233,14 @@ simple_list: simple_list1 { $$ = $1; if (need_here_doc) - gather_here_documents (); + gather_here_documents (); /* XXX */ if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token) { +INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 ';' -> simple_list")); global_command = $1; eof_encountered = 0; - rewind_input_string (); + if (bash_input.type == st_string) + rewind_input_string (); YYACCEPT; } } @@ -1614,7 +1654,7 @@ with_input_from_string (string, name) That is the true input location. Rewind bash_input.location.string by that number of characters, so it points to the last character actually consumed by the parser. */ -static void +void rewind_input_string () { int xchars; @@ -1626,7 +1666,7 @@ rewind_input_string () xchars++; /* XXX - how to reflect bash_input.location.string back to string passed to - parse_and_execute or xparse_dolparen? xparse_dolparen needs to know how + parse_and_execute or xparse_dolparen? xparse_dolparen needs to know how far into the string we parsed. parse_and_execute knows where bash_input. location.string is, and how far from orig_string that is -- that's the number of characters the command consumed. */ @@ -1823,8 +1863,6 @@ restore_token_state (ts) * everything between a `;;' and the next `)' or `esac' */ -#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) - #define END_OF_ALIAS 0 /* @@ -1848,7 +1886,7 @@ typedef struct string_saver { #if defined (ALIAS) alias_t *expander; /* alias that caused this line to be pushed. */ #endif - size_t saved_line_size, saved_line_index; + size_t saved_line_size, saved_line_index, saved_line_len; int saved_line_terminator; int flags; } STRING_SAVER; @@ -1874,6 +1912,7 @@ push_string (s, expand, ap) temp->expand_alias = expand; temp->saved_line = shell_input_line; temp->saved_line_size = shell_input_line_size; + temp->saved_line_len = shell_input_line_len; temp->saved_line_index = shell_input_line_index; temp->saved_line_terminator = shell_input_line_terminator; temp->flags = 0; @@ -1891,7 +1930,7 @@ push_string (s, expand, ap) #endif shell_input_line = s; - shell_input_line_size = STRLEN (s); + shell_input_line_size = shell_input_line_len = STRLEN (s); shell_input_line_index = 0; shell_input_line_terminator = '\0'; #if 0 @@ -1916,12 +1955,15 @@ pop_string () shell_input_line = pushed_string_list->saved_line; shell_input_line_index = pushed_string_list->saved_line_index; shell_input_line_size = pushed_string_list->saved_line_size; + shell_input_line_len = pushed_string_list->saved_line_len; shell_input_line_terminator = pushed_string_list->saved_line_terminator; +#if defined (ALIAS) if (pushed_string_list->expand_alias) parser_state |= PST_ALEXPNEXT; else parser_state &= ~PST_ALEXPNEXT; +#endif t = pushed_string_list; pushed_string_list = pushed_string_list->next; @@ -1955,8 +1997,6 @@ free_string_list () pushed_string_list = (STRING_SAVER *)NULL; } -#endif /* ALIAS || DPAREN_ARITHMETIC */ - void free_pushed_string_input () { @@ -2046,12 +2086,7 @@ read_a_line (remove_quoted_newline) /* Ignore null bytes in input. */ if (c == 0) - { -#if 0 - internal_warning ("read_a_line: ignored null byte in input"); -#endif - continue; - } + continue; /* If there is no more input, then we return NULL. */ if (c == EOF) @@ -2125,8 +2160,8 @@ read_secondary_line (remove_quoted_newline) int n, c; prompt_string_pointer = &ps2_prompt; - if (SHOULD_PROMPT()) - prompt_again (); + if (SHOULD_PROMPT ()) + prompt_again (0); ret = read_a_line (remove_quoted_newline); #if defined (HISTORY) if (ret && remember_on_history && (parser_state & PST_HEREDOC)) @@ -2362,9 +2397,6 @@ shell_getc (remove_quoted_newline) if (c == '\0') { -#if 0 - internal_warning ("shell_getc: ignored null byte in input"); -#endif /* If we get EOS while parsing a string, treat it as EOF so we don't just keep looping. Happens very rarely */ if (bash_input.type == st_string) @@ -2511,7 +2543,7 @@ shell_getc (remove_quoted_newline) shell_input_line_size = 0; prompt_string_pointer = ¤t_prompt_string; if (SHOULD_PROMPT ()) - prompt_again (); + prompt_again (0); goto restart_read; } @@ -2533,21 +2565,12 @@ shell_getc (remove_quoted_newline) shell_input_line[shell_input_line_len] = '\n'; shell_input_line[shell_input_line_len + 1] = '\0'; -#if 0 - set_line_mbstate (); /* XXX - this is wasteful */ -#else -# if defined (HANDLE_MULTIBYTE) +#if defined (HANDLE_MULTIBYTE) /* This is kind of an abstraction violation, but there's no need to go through the entire shell_input_line again with a call to set_line_mbstate(). */ - if (shell_input_line_len + 2 > shell_input_line_propsize) - { - shell_input_line_propsize = shell_input_line_len + 2; - shell_input_line_property = (char *)xrealloc (shell_input_line_property, - shell_input_line_propsize); - } + EXTEND_SHELL_INPUT_LINE_PROPERTY(); shell_input_line_property[shell_input_line_len] = 1; -# endif #endif } } @@ -2600,12 +2623,29 @@ next_alias_char: (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"')) { parser_state |= PST_ENDALIAS; + /* We need to do this to make sure last_shell_getc_is_singlebyte returns + true, since we are returning a single-byte space. */ + if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0) + { +#if 0 + EXTEND_SHELL_INPUT_LINE_PROPERTY(); + shell_input_line_property[shell_input_line_len++] = 1; + /* extend shell_input_line to accommodate the shell_ungetc that + read_token_word() will perform, since we're extending the index */ + RESIZE_MALLOCED_BUFFER (shell_input_line, shell_input_line_index, 2, shell_input_line_size, 16); + shell_input_line[++shell_input_line_index] = '\0'; /* XXX */ +#else + shell_input_line_property[shell_input_line_index - 1] = 1; +#endif + } return ' '; /* END_ALIAS */ } #endif pop_alias: - /* This case works for PSH_DPAREN as well */ +#endif /* ALIAS || DPAREN_ARITHMETIC */ + /* This case works for PSH_DPAREN as well as the shell_ungets() case that uses + push_string */ if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE) { parser_state &= ~PST_ENDALIAS; @@ -2614,12 +2654,11 @@ pop_alias: if (uc) shell_input_line_index++; } -#endif /* ALIAS || DPAREN_ARITHMETIC */ if MBTEST(uc == '\\' && remove_quoted_newline && shell_input_line[shell_input_line_index] == '\n') { if (SHOULD_PROMPT ()) - prompt_again (); + prompt_again (0); line_number++; /* What do we do here if we're expanding an alias whose definition @@ -2687,6 +2726,60 @@ shell_ungetc (c) eol_ungetc_lookahead = c; } +/* Push S back into shell_input_line; updating shell_input_line_index */ +void +shell_ungets (s) + char *s; +{ + size_t slen, chars_left; + + slen = strlen (s); + + if (shell_input_line[shell_input_line_index] == '\0') + { + /* Easy, just overwrite shell_input_line. This is preferred because it + saves on set_line_mbstate () and other overhead like push_string */ + if (shell_input_line_size <= slen) + RESIZE_MALLOCED_BUFFER (shell_input_line, shell_input_line_index, slen + 1, shell_input_line_size, 64); + strcpy (shell_input_line, s); + shell_input_line_index = 0; + shell_input_line_len = slen; + shell_input_line_terminator = 0; + } + else if (shell_input_line_index >= slen) + { + /* Just as easy, just back up shell_input_line_index, but it means we + will re-process some characters in set_line_mbstate(). Need to + watch pushing back newlines here. */ + while (slen > 0) + shell_input_line[--shell_input_line_index] = s[--slen]; + } + else if (s[slen - 1] == '\n') + { + push_string (savestring (s), 0, (alias_t *)NULL); + /* push_string does set_line_mbstate () */ + return; + } + else + { + /* Harder case: pushing back input string that's longer than what we've + consumed from shell_input_line so far. */ + INTERNAL_DEBUG (("shell_ungets: not at end of shell_input_line")); + + chars_left = shell_input_line_len - shell_input_line_index; + if (shell_input_line_size <= (slen + chars_left)) + RESIZE_MALLOCED_BUFFER (shell_input_line, shell_input_line_index, chars_left + slen + 1, shell_input_line_size, 64); + memmove (shell_input_line + slen, shell_input_line + shell_input_line_index, shell_input_line_len - shell_input_line_index); + strcpy (shell_input_line, s); + shell_input_line_index = 0; + shell_input_line_len = strlen (shell_input_line); /* chars_left + slen? */ + } + +#if defined (HANDLE_MULTIBYTE) + set_line_mbstate (); /* XXX */ +#endif +} + char * parser_remaining_input () { @@ -2760,7 +2853,7 @@ push_token (x) static char *token = (char *)NULL; /* Current size of the token buffer. */ -static int token_buffer_size; +static size_t token_buffer_size; /* Command to read_token () explaining what we want it to do. */ #define READ 0 @@ -2788,7 +2881,7 @@ yylex () /* Avoid printing a prompt if we're not going to read anything, e.g. after resetting the parser with read_token (RESET). */ if (token_to_read == 0 && SHOULD_PROMPT ()) - prompt_again (); + prompt_again (0); } two_tokens_ago = token_before_that; @@ -2798,11 +2891,16 @@ yylex () if ((parser_state & PST_EOFTOKEN) && current_token == shell_eof_token) { - current_token = yacc_EOF; - if (bash_input.type == st_string) - rewind_input_string (); + /* placeholder for any special handling. */ + return (current_token); } - parser_state &= ~PST_EOFTOKEN; /* ??? */ + + if (current_token < 0) +#if defined (YYERRCODE) && !defined (YYUNDEF) + current_token = YYERRCODE; +#else + current_token = YYerror; +#endif return (current_token); } @@ -2893,9 +2991,12 @@ static int open_brace_count; break; \ if ((parser_state & PST_CASEPAT) && last_read_token == '|' && word_token_alist[i].token == ESAC) \ break; /* Posix grammar rule 4 */ \ - if (word_token_alist[i].token == ESAC) \ + if ((parser_state & PST_CASEPAT) && last_read_token == '(' && word_token_alist[i].token == ESAC) /*)*/ \ + break; /* phantom Posix grammar rule 4 */ \ + if (word_token_alist[i].token == ESAC) { \ parser_state &= ~(PST_CASEPAT|PST_CASESTMT); \ - else if (word_token_alist[i].token == CASE) \ + esacs_needed_count--; \ + } else if (word_token_alist[i].token == CASE) \ parser_state |= PST_CASESTMT; \ else if (word_token_alist[i].token == COND_END) \ parser_state &= ~(PST_CONDCMD|PST_CONDEXPR); \ @@ -2955,8 +3056,12 @@ alias_expand_token (tokstr) char *expanded; alias_t *ap; +#if 0 if (((parser_state & PST_ALEXPNEXT) || command_token_position (last_read_token)) && (parser_state & PST_CASEPAT) == 0) +#else + if ((parser_state & PST_ALEXPNEXT) || assignment_acceptable (last_read_token)) +#endif { ap = find_alias (tokstr); @@ -3198,7 +3303,7 @@ reset_parser () #if defined (EXTENDED_GLOB) /* Reset to global value of extended glob */ - if (parser_state & PST_EXTPAT) + if (parser_state & (PST_EXTPAT|PST_CMDSUBST)) extended_glob = global_extglob; #endif @@ -3223,6 +3328,11 @@ reset_parser () eol_ungetc_lookahead = 0; + /* added post-bash-5.1 */ + need_here_doc = 0; + redir_stack[0] = 0; + esacs_needed_count = expecting_in_token = 0; + current_token = '\n'; /* XXX */ last_read_token = '\n'; token_to_read = '\n'; @@ -3300,9 +3410,7 @@ read_token (command) we are eval'ing a string that is an incomplete command), return EOF */ if (character == '\0' && bash_input.type == st_string && expanding_alias() == 0) { -#if defined (DEBUG) -itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.string); -#endif + INTERNAL_DEBUG (("shell_getc: bash_input.location.string = `%s'", bash_input.location.string)); EOF_Reached = 1; return (yacc_EOF); } @@ -3317,7 +3425,7 @@ itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.stri character = '\n'; /* this will take the next if statement and return. */ } - if (character == '\n') + if MBTEST(character == '\n') { /* If we're about to return an unquoted newline, we can go and collect the text of any pending here document. */ @@ -3337,7 +3445,7 @@ itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.stri goto tokword; /* Shell meta-characters. */ - if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0)) + if MBTEST(shellmeta (character)) { #if defined (ALIAS) /* Turn off alias tokenization iff this character sequence would @@ -3358,7 +3466,7 @@ itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.stri else peek_char = shell_getc (1); - if (character == peek_char) + if MBTEST(character == peek_char) { switch (character) { @@ -3517,6 +3625,9 @@ tokword: #define LEX_QUOTEDDOC 0x0400 /* here doc with quoted delim */ #define LEX_INWORD 0x0800 #define LEX_GTLT 0x1000 +#define LEX_CKESAC 0x2000 /* check esac after in -- for later */ +#define LEX_CASEWD 0x4000 /* word after case */ +#define LEX_PATLIST 0x8000 /* case statement pattern list */ #define COMSUB_META(ch) ((ch) == ';' || (ch) == '&' || (ch) == '|') @@ -3584,8 +3695,8 @@ parse_matched_pair (qc, open, close, lenp, flags) } /* Possible reprompting. */ - if (ch == '\n' && SHOULD_PROMPT ()) - prompt_again (); + if MBTEST(ch == '\n' && SHOULD_PROMPT ()) + prompt_again (0); /* Don't bother counting parens or doing anything else if in a comment or part of a case statement */ @@ -3595,7 +3706,7 @@ parse_matched_pair (qc, open, close, lenp, flags) RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); ret[retind++] = ch; - if (ch == '\n') + if MBTEST(ch == '\n') tflags &= ~LEX_INCOMMENT; continue; @@ -3610,7 +3721,8 @@ parse_matched_pair (qc, open, close, lenp, flags) if (tflags & LEX_PASSNEXT) /* last char was backslash */ { tflags &= ~LEX_PASSNEXT; - if (qc != '\'' && ch == '\n') /* double-quoted \ disappears. */ + /* XXX - PST_NOEXPAND? */ + if MBTEST(qc != '\'' && ch == '\n') /* double-quoted \ disappears. */ { if (retind > 0) retind--; /* swallow previously-added backslash */ @@ -3719,9 +3831,10 @@ parse_matched_pair (qc, open, close, lenp, flags) pop_delimiter (dstack); CHECK_NESTRET_ERROR (); - if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0)) + if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0 || dolbrace_state == DOLBRACE_QUOTE || dolbrace_state == DOLBRACE_QUOTE2)) { /* Translate $'...' here. */ + /* PST_NOEXPAND */ ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); free (nestret); @@ -3730,12 +3843,22 @@ parse_matched_pair (qc, open, close, lenp, flags) make sure we single-quote the results of the ansi expansion because quote removal should remove them later */ /* FLAG POSIX INTERP 221 */ - if ((shell_compatibility_level > 42) && (rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_QUOTE2) && (flags & P_DOLBRACE)) + if ((shell_compatibility_level > 42) && (rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_QUOTE2 || dolbrace_state == DOLBRACE_QUOTE) && (flags & P_DOLBRACE)) + { + nestret = sh_single_quote (ttrans); + free (ttrans); + nestlen = strlen (nestret); + } +#if 0 /* TAG:bash-5.3 */ + /* This single-quotes PARAM in ${PARAM OP WORD} when PARAM + contains a $'...' even when extended_quote is set. */ + else if ((rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_PARAM) && (flags & P_DOLBRACE)) { nestret = sh_single_quote (ttrans); free (ttrans); nestlen = strlen (nestret); } +#endif else if ((rflags & P_DQUOTE) == 0) { nestret = sh_single_quote (ttrans); @@ -3744,22 +3867,41 @@ parse_matched_pair (qc, open, close, lenp, flags) } else { + /* Should we quote CTLESC here? */ nestret = ttrans; nestlen = ttranslen; } retind -= 2; /* back up before the $' */ } +#if defined (TRANSLATABLE_STRINGS) else if MBTEST((tflags & LEX_WASDOL) && ch == '"' && (extended_quote || (rflags & P_DQUOTE) == 0)) { /* Locale expand $"..." here. */ - ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); + /* PST_NOEXPAND */ + ttrans = locale_expand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); free (nestret); - nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); + /* If we're supposed to single-quote translated strings, + check whether the translated result is different from + the original and single-quote the string if it is. */ + if (singlequote_translations && + ((nestlen - 1) != ttranslen || STREQN (nestret, ttrans, ttranslen) == 0)) + { + if ((rflags & P_DQUOTE) == 0) + nestret = sh_single_quote (ttrans); + else if ((rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_QUOTE2) && (flags & P_DOLBRACE)) + nestret = sh_single_quote (ttrans); + else + /* single quotes aren't special, use backslash instead */ + nestret = sh_backslash_quote_for_double_quotes (ttrans, 0); + } + else + nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); free (ttrans); - nestlen = ttranslen + 2; + nestlen = strlen (nestret); retind -= 2; /* back up before the $" */ } +#endif /* TRANSLATABLE_STRINGS */ APPEND_NESTRET (); FREE (nestret); @@ -3861,11 +4003,26 @@ dump_tflags (flags) f &= ~LEX_CKCASE; fprintf (stderr, "LEX_CKCASE%s", f ? "|" : ""); } + if (f & LEX_CKESAC) + { + f &= ~LEX_CKESAC; + fprintf (stderr, "LEX_CKESAC%s", f ? "|" : ""); + } if (f & LEX_INCASE) { f &= ~LEX_INCASE; fprintf (stderr, "LEX_INCASE%s", f ? "|" : ""); } + if (f & LEX_CASEWD) + { + f &= ~LEX_CASEWD; + fprintf (stderr, "LEX_CASEWD%s", f ? "|" : ""); + } + if (f & LEX_PATLIST) + { + f &= ~LEX_PATLIST; + fprintf (stderr, "LEX_PATLIST%s", f ? "|" : ""); + } if (f & LEX_INHEREDOC) { f &= ~LEX_INHEREDOC; @@ -3897,554 +4054,172 @@ dump_tflags (flags) } #endif -/* Parse a $(...) command substitution. This is messier than I'd like, and - reproduces a lot more of the token-reading code than I'd like. */ +/* Parse a $(...) command substitution. This reads input from the current + input stream. */ static char * parse_comsub (qc, open, close, lenp, flags) int qc; /* `"' if this construct is within double quotes */ int open, close; int *lenp, flags; { - int count, ch, peekc, tflags, lex_rwlen, lex_wlen, lex_firstind; - int nestlen, ttranslen, start_lineno, orig_histexp; - char *ret, *nestret, *ttrans, *heredelim; - int retind, retsize, rflags, hdlen; + int peekc, r; + int start_lineno, local_extglob, was_extpat; + char *ret, *tcmd; + int retlen; + sh_parser_state_t ps; + STRING_SAVER *saved_strings; + COMMAND *saved_global, *parsed_command; /* Posix interp 217 says arithmetic expressions have precedence, so assume $(( introduces arithmetic expansion and parse accordingly. */ - peekc = shell_getc (0); - shell_ungetc (peekc); - if (peekc == '(') - return (parse_matched_pair (qc, open, close, lenp, 0)); + if (open == '(') /*)*/ + { + peekc = shell_getc (1); + shell_ungetc (peekc); + if (peekc == '(') /*)*/ + return (parse_matched_pair (qc, open, close, lenp, 0)); + } /*itrace("parse_comsub: qc = `%c' open = %c close = %c", qc, open, close);*/ - count = 1; - tflags = LEX_RESWDOK; -#if defined (BANG_HISTORY) - orig_histexp = history_expansion_inhibited; -#endif - - if ((flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0) - tflags |= LEX_CKCASE; - if ((tflags & LEX_CKCASE) && (interactive == 0 || interactive_comments)) - tflags |= LEX_CKCOMMENT; - - /* RFLAGS is the set of flags we want to pass to recursive calls. */ - rflags = (flags & P_DQUOTE); - - ret = (char *)xmalloc (retsize = 64); - retind = 0; + /*debug_parser(1);*/ start_lineno = line_number; - lex_rwlen = lex_wlen = 0; - heredelim = 0; - lex_firstind = -1; + save_parser_state (&ps); - while (count) + was_extpat = (parser_state & PST_EXTPAT); + + /* State flags we don't want to persist into command substitutions. */ + parser_state &= ~(PST_REGEXP|PST_EXTPAT|PST_CONDCMD|PST_CONDEXPR|PST_COMPASSIGN); + /* Could do PST_CASESTMT too, but that also affects history. Setting + expecting_in_token below should take care of the parsing requirements. + Unsetting PST_REDIRLIST isn't strictly necessary because of how we set + token_to_read below, but we do it anyway. */ + parser_state &= ~(PST_CASEPAT|PST_ALEXPNEXT|PST_SUBSHELL|PST_REDIRLIST); + /* State flags we want to set for this run through the parser. */ + parser_state |= PST_CMDSUBST|PST_EOFTOKEN|PST_NOEXPAND; + + /* leave pushed_string_list alone, since we might need to consume characters + from it to satisfy this command substitution (in some perverse case). */ + shell_eof_token = close; + + saved_global = global_command; /* might not be necessary */ + global_command = (COMMAND *)NULL; + + /* These are reset by reset_parser() */ + need_here_doc = 0; + esacs_needed_count = expecting_in_token = 0; + + /* We want to expand aliases on this pass if we're in posix mode, since the + standard says you have to take aliases into account when looking for the + terminating right paren. Otherwise, we defer until execution time for + backwards compatibility. */ + if (expand_aliases) + expand_aliases = posixly_correct != 0; +#if defined (EXTENDED_GLOB) + /* If (parser_state & PST_EXTPAT), we're parsing an extended pattern for a + conditional command and have already set global_extglob appropriately. */ + if (shell_compatibility_level <= 51 && was_extpat == 0) { -comsub_readchar: - ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT|LEX_QUOTEDDOC)) == 0); - - if (ch == EOF) - { -eof_error: -#if defined (BANG_HISTORY) - history_expansion_inhibited = orig_histexp; + local_extglob = global_extglob = extended_glob; + extended_glob = 1; + } #endif - free (ret); - FREE (heredelim); - parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close); - EOF_Reached = 1; /* XXX */ - return (&matched_pair_error); - } - /* If we hit the end of a line and are reading the contents of a here - document, and it's not the same line that the document starts on, - check for this line being the here doc delimiter. Otherwise, if - we're in a here document, mark the next character as the beginning - of a line. */ - if (ch == '\n') - { - if ((tflags & LEX_HEREDELIM) && heredelim) - { - tflags &= ~LEX_HEREDELIM; - tflags |= LEX_INHEREDOC; -#if defined (BANG_HISTORY) - history_expansion_inhibited = 1; -#endif - lex_firstind = retind + 1; - } - else if (tflags & LEX_INHEREDOC) - { - int tind; - tind = lex_firstind; - while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t') - tind++; - if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen)) - { - tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC); -/*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/ - free (heredelim); - heredelim = 0; - lex_firstind = -1; -#if defined (BANG_HISTORY) - history_expansion_inhibited = orig_histexp; -#endif - } - else - lex_firstind = retind + 1; - } - } + current_token = '\n'; /* XXX */ + token_to_read = DOLPAREN; /* let's trick the parser */ - /* Possible reprompting. */ - if (ch == '\n' && SHOULD_PROMPT ()) - prompt_again (); + r = yyparse (); - /* XXX -- we currently allow here doc to be delimited by ending right - paren in default mode and posix mode. To change posix mode, change - the #if 1 to #if 0 below */ - if ((tflags & LEX_INHEREDOC) && ch == close && count == 1) - { - int tind; -/*itrace("parse_comsub:%d: in here doc, ch == close, retind - firstind = %d hdlen = %d retind = %d", line_number, retind-lex_firstind, hdlen, retind);*/ - tind = lex_firstind; - while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t') - tind++; -#if 1 - if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen)) -#else - /* Posix-mode shells require the newline after the here-document - delimiter. */ - if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen) && - posixly_correct == 0) -#endif - { - tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC); -/*itrace("parse_comsub:%d: found here doc end `%*s'", line_number, hdlen, ret + tind);*/ - free (heredelim); - heredelim = 0; - lex_firstind = -1; -#if defined (BANG_HISTORY) - history_expansion_inhibited = orig_histexp; -#endif - } - } - - /* Don't bother counting parens or doing anything else if in a comment or - here document (not exactly right for here-docs -- if we want to allow - recursive calls to parse_comsub to have their own here documents, - change the LEX_INHEREDOC to LEX_QUOTEDDOC here and uncomment the next - clause below. Note that to make this work completely, we need to make - additional changes to allow xparse_dolparen to work right when the - command substitution is parsed, because read_secondary_line doesn't know - to recursively parse through command substitutions embedded in here- - documents */ - if (tflags & (LEX_INCOMMENT|LEX_INHEREDOC)) - { - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; - - if ((tflags & LEX_INCOMMENT) && ch == '\n') - { -/*itrace("parse_comsub:%d: lex_incomment -> 0 ch = `%c'", line_number, ch);*/ - tflags &= ~LEX_INCOMMENT; - } + if (need_here_doc > 0) + { + internal_warning ("command substitution: %d unterminated here-document%s", need_here_doc, (need_here_doc == 1) ? "" : "s"); + gather_here_documents (); /* XXX check compatibility level? */ + } - continue; - } -#if 0 - /* If we're going to recursively parse a command substitution inside a - here-document, make sure we call parse_comsub recursively below. See - above for additional caveats. */ - if ((tflags & LEX_INHEREDOC) && ((tflags & LEX_WASDOL) == 0 || ch != '(')) /*)*/ - { - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; - if MBTEST(ch == '$') - tflags |= LEX_WASDOL; - else - tflags &= ~LEX_WASDOL; - } +#if defined (EXTENDED_GLOB) + if (shell_compatibility_level <= 51 && was_extpat == 0) + extended_glob = local_extglob; #endif - if (tflags & LEX_PASSNEXT) /* last char was backslash */ - { -/*itrace("parse_comsub:%d: lex_passnext -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/ - tflags &= ~LEX_PASSNEXT; - if (qc != '\'' && ch == '\n') /* double-quoted \ disappears. */ - { - if (retind > 0) - retind--; /* swallow previously-added backslash */ - continue; - } + parsed_command = global_command; - RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); - if MBTEST(ch == CTLESC) - ret[retind++] = CTLESC; - ret[retind++] = ch; - continue; - } + if (EOF_Reached) + { + shell_eof_token = ps.eof_token; + expand_aliases = ps.expand_aliases; - /* If this is a shell break character, we are not in a word. If not, - we either start or continue a word. */ - if MBTEST(shellbreak (ch)) - { - tflags &= ~LEX_INWORD; -/*itrace("parse_comsub:%d: lex_inword -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/ - } + /* yyparse() has already called yyerror() and reset_parser() */ + return (&matched_pair_error); + } + else if (r != 0) + { + /* parser_error (start_lineno, _("could not parse command substitution")); */ + /* Non-interactive shells exit on parse error in a command substitution. */ + if (last_command_exit_value == 0) + last_command_exit_value = EXECUTION_FAILURE; + set_exit_status (last_command_exit_value); + if (interactive_shell == 0) + jump_to_top_level (FORCE_EOF); /* This is like reader_loop() */ else { - if (tflags & LEX_INWORD) - { - lex_wlen++; -/*itrace("parse_comsub:%d: lex_inword == 1 ch = `%c' lex_wlen = %d (%d)", line_number, ch, lex_wlen, __LINE__);*/ - } - else - { -/*itrace("parse_comsub:%d: lex_inword -> 1 ch = `%c' (%d)", line_number, ch, __LINE__);*/ - tflags |= LEX_INWORD; - lex_wlen = 0; - if (tflags & LEX_RESWDOK) - lex_rwlen = 0; - } - } - - /* Skip whitespace */ - if MBTEST(shellblank (ch) && (tflags & LEX_HEREDELIM) == 0 && lex_rwlen == 0) - { - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; - continue; - } - - /* Either we are looking for the start of the here-doc delimiter - (lex_firstind == -1) or we are reading one (lex_firstind >= 0). - If this character is a shell break character and we are reading - the delimiter, save it and note that we are now reading a here - document. If we've found the start of the delimiter, note it by - setting lex_firstind. Backslashes can quote shell metacharacters - in here-doc delimiters. */ - if (tflags & LEX_HEREDELIM) - { - if (lex_firstind == -1 && shellbreak (ch) == 0) - lex_firstind = retind; -#if 0 - else if (heredelim && (tflags & LEX_PASSNEXT) == 0 && ch == '\n') - { - tflags |= LEX_INHEREDOC; - tflags &= ~LEX_HEREDELIM; - lex_firstind = retind + 1; -#if defined (BANG_HISTORY) - history_expansion_inhibited = 1; -#endif - } -#endif - else if (lex_firstind >= 0 && (tflags & LEX_PASSNEXT) == 0 && shellbreak (ch)) - { - if (heredelim == 0) - { - nestret = substring (ret, lex_firstind, retind); - heredelim = string_quote_removal (nestret, 0); - hdlen = STRLEN(heredelim); -/*itrace("parse_comsub:%d: found here doc delimiter `%s' (%d)", line_number, heredelim, hdlen);*/ - if (STREQ (heredelim, nestret) == 0) - tflags |= LEX_QUOTEDDOC; - free (nestret); - } - if (ch == '\n') - { - tflags |= LEX_INHEREDOC; - tflags &= ~LEX_HEREDELIM; - lex_firstind = retind + 1; -#if defined (BANG_HISTORY) - history_expansion_inhibited = 1; -#endif - } - else - lex_firstind = -1; - } - } + shell_eof_token = ps.eof_token; + expand_aliases = ps.expand_aliases; - /* Meta-characters that can introduce a reserved word. Not perfect yet. */ - if MBTEST((tflags & LEX_RESWDOK) == 0 && (tflags & LEX_CKCASE) && (tflags & LEX_INCOMMENT) == 0 && (shellmeta(ch) || ch == '\n')) - { - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; - peekc = shell_getc (1); - if (ch == peekc && (ch == '&' || ch == '|' || ch == ';')) /* two-character tokens */ - { - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = peekc; -/*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/ - tflags |= LEX_RESWDOK; - lex_rwlen = 0; - continue; - } - else if (ch == '\n' || COMSUB_META(ch)) - { - shell_ungetc (peekc); -/*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/ - tflags |= LEX_RESWDOK; - lex_rwlen = 0; - continue; - } - else if (ch == EOF) - goto eof_error; - else - { - /* `unget' the character we just added and fall through */ - retind--; - shell_ungetc (peekc); - } + jump_to_top_level (DISCARD); /* XXX - return (&matched_pair_error)? */ } + } - /* If we can read a reserved word, try to read one. */ - if (tflags & LEX_RESWDOK) - { - if MBTEST(islower ((unsigned char)ch)) - { - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; - lex_rwlen++; - continue; - } - else if MBTEST(lex_rwlen == 4 && shellbreak (ch)) - { - if (STREQN (ret + retind - 4, "case", 4)) - { - tflags |= LEX_INCASE; - tflags &= ~LEX_RESWDOK; -/*itrace("parse_comsub:%d: found `case', lex_incase -> 1 lex_reswdok -> 0", line_number);*/ - } - else if (STREQN (ret + retind - 4, "esac", 4)) - { - tflags &= ~LEX_INCASE; -/*itrace("parse_comsub:%d: found `esac', lex_incase -> 0 lex_reswdok -> 1", line_number);*/ - tflags |= LEX_RESWDOK; - lex_rwlen = 0; - } - else if (STREQN (ret + retind - 4, "done", 4) || - STREQN (ret + retind - 4, "then", 4) || - STREQN (ret + retind - 4, "else", 4) || - STREQN (ret + retind - 4, "elif", 4) || - STREQN (ret + retind - 4, "time", 4)) - { - /* these are four-character reserved words that can be - followed by a reserved word; anything else turns off - the reserved-word-ok flag */ -/*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 1", line_number, ret+retind-4);*/ - tflags |= LEX_RESWDOK; - lex_rwlen = 0; - } - else if (shellmeta (ch) == 0) - { - tflags &= ~LEX_RESWDOK; -/*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/ - } - else /* can't be in a reserved word any more */ - lex_rwlen = 0; - } - else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0))) - ; /* don't modify LEX_RESWDOK if we're starting a comment */ - /* Allow `do' followed by space, tab, or newline to preserve the - RESWDOK flag, but reset the reserved word length counter so we - can read another one. */ - else if MBTEST(((tflags & LEX_INCASE) == 0) && - (isblank((unsigned char)ch) || ch == '\n') && - lex_rwlen == 2 && - STREQN (ret + retind - 2, "do", 2)) - { -/*itrace("parse_comsub:%d: lex_incase == 0 found `%c', found \"do\"", line_number, ch);*/ - lex_rwlen = 0; - } - else if MBTEST((tflags & LEX_INCASE) && ch != '\n') - /* If we can read a reserved word and we're in case, we're at the - point where we can read a new pattern list or an esac. We - handle the esac case above. If we read a newline, we want to - leave LEX_RESWDOK alone. If we read anything else, we want to - turn off LEX_RESWDOK, since we're going to read a pattern list. */ - { - tflags &= ~LEX_RESWDOK; -/*itrace("parse_comsub:%d: lex_incase == 1 found `%c', lex_reswordok -> 0", line_number, ch);*/ - } - else if MBTEST(shellbreak (ch) == 0) - { - tflags &= ~LEX_RESWDOK; -/*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/ - } -#if 0 - /* If we find a space or tab but have read something and it's not - `do', turn off the reserved-word-ok flag */ - else if MBTEST(isblank ((unsigned char)ch) && lex_rwlen > 0) - { - tflags &= ~LEX_RESWDOK; -/*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/ - } -#endif - } - - /* Might be the start of a here-doc delimiter */ - if MBTEST((tflags & LEX_INCOMMENT) == 0 && (tflags & LEX_CKCASE) && ch == '<') - { - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; - peekc = shell_getc (1); - if (peekc == EOF) - goto eof_error; - if (peekc == ch) - { - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = peekc; - peekc = shell_getc (1); - if (peekc == EOF) - goto eof_error; - if (peekc == '-') - { - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = peekc; - tflags |= LEX_STRIPDOC; - } - else - shell_ungetc (peekc); - if (peekc != '<') - { - tflags |= LEX_HEREDELIM; - lex_firstind = -1; - } - continue; - } - else - { - shell_ungetc (peekc); /* not a here-doc, start over */ - continue; - } - } - else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (((tflags & LEX_RESWDOK) && lex_rwlen == 0) || ((tflags & LEX_INWORD) && lex_wlen == 0))) - { -/*itrace("parse_comsub:%d: lex_incomment -> 1 (%d)", line_number, __LINE__);*/ - tflags |= LEX_INCOMMENT; - } - - if MBTEST(ch == CTLESC || ch == CTLNUL) /* special shell escapes */ - { - RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); - ret[retind++] = CTLESC; - ret[retind++] = ch; - continue; - } -#if 0 - else if MBTEST((tflags & LEX_INCASE) && ch == close && close == ')') - tflags &= ~LEX_INCASE; /* XXX */ -#endif - else if MBTEST(ch == close && (tflags & LEX_INCASE) == 0) /* ending delimiter */ - { - count--; -/*itrace("parse_comsub:%d: found close: count = %d", line_number, count);*/ - } - else if MBTEST(((flags & P_FIRSTCLOSE) == 0) && (tflags & LEX_INCASE) == 0 && ch == open) /* nested begin */ - { - count++; -/*itrace("parse_comsub:%d: found open: count = %d", line_number, count);*/ - } - - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; - - /* If we just read the ending character, don't bother continuing. */ - if (count == 0) - break; - - if MBTEST(ch == '\\') /* backslashes */ - tflags |= LEX_PASSNEXT; - - if MBTEST(shellquote (ch)) - { - /* '', ``, or "" inside $(...). */ - push_delimiter (dstack, ch); - if MBTEST((tflags & LEX_WASDOL) && ch == '\'') /* $'...' inside group */ - nestret = parse_matched_pair (ch, ch, ch, &nestlen, P_ALLOWESC|rflags); - else - nestret = parse_matched_pair (ch, ch, ch, &nestlen, rflags); - pop_delimiter (dstack); - CHECK_NESTRET_ERROR (); - - if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0)) - { - /* Translate $'...' here. */ - ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); - free (nestret); - - if ((rflags & P_DQUOTE) == 0) - { - nestret = sh_single_quote (ttrans); - free (ttrans); - nestlen = strlen (nestret); - } - else - { - nestret = ttrans; - nestlen = ttranslen; - } - retind -= 2; /* back up before the $' */ - } - else if MBTEST((tflags & LEX_WASDOL) && ch == '"' && (extended_quote || (rflags & P_DQUOTE) == 0)) - { - /* Locale expand $"..." here. */ - ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); - free (nestret); - - nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); - free (ttrans); - nestlen = ttranslen + 2; - retind -= 2; /* back up before the $" */ - } + if (current_token != shell_eof_token) + { +INTERNAL_DEBUG(("current_token (%d) != shell_eof_token (%c)", current_token, shell_eof_token)); + token_to_read = current_token; - APPEND_NESTRET (); - FREE (nestret); - } - else if MBTEST((tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ - /* check for $(), $[], or ${} inside command substitution. */ - { - if ((tflags & LEX_INCASE) == 0 && open == ch) /* undo previous increment */ - count--; - if (ch == '(') /* ) */ - nestret = parse_comsub (0, '(', ')', &nestlen, (rflags|P_COMMAND) & ~P_DQUOTE); - else if (ch == '{') /* } */ - nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags); - else if (ch == '[') /* ] */ - nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags); + /* If we get here we can check eof_encountered and if it's 1 but the + previous EOF_Reached test didn't succeed, we can assume that the shell + is interactive and ignoreeof is set. We might want to restore the + parser state in this case. */ + shell_eof_token = ps.eof_token; + expand_aliases = ps.expand_aliases; - CHECK_NESTRET_ERROR (); - APPEND_NESTRET (); + return (&matched_pair_error); + } - FREE (nestret); - } - if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0) - tflags |= LEX_WASDOL; - else - tflags &= ~LEX_WASDOL; + /* We don't want to restore the old pushed string list, since we might have + used it to consume additional input from an alias while parsing this + command substitution. */ + saved_strings = pushed_string_list; + restore_parser_state (&ps); + pushed_string_list = saved_strings; + + tcmd = print_comsub (parsed_command); /* returns static memory */ + retlen = strlen (tcmd); + if (tcmd[0] == '(') /* ) need a space to prevent arithmetic expansion */ + retlen++; + ret = xmalloc (retlen + 2); + if (tcmd[0] == '(') /* ) */ + { + ret[0] = ' '; + strcpy (ret + 1, tcmd); } + else + strcpy (ret, tcmd); + ret[retlen++] = ')'; + ret[retlen] = '\0'; + + dispose_command (parsed_command); + global_command = saved_global; -#if defined (BANG_HISTORY) - history_expansion_inhibited = orig_histexp; -#endif - FREE (heredelim); - ret[retind] = '\0'; if (lenp) - *lenp = retind; + *lenp = retlen; + /*itrace("parse_comsub:%d: returning `%s'", line_number, ret);*/ return ret; } -/* Recursively call the parser to parse a $(...) command substitution. */ +/* Recursively call the parser to parse a $(...) command substitution. This is + called by the word expansion code and so does not have to reset as much + parser state before calling yyparse(). */ char * xparse_dolparen (base, string, indp, flags) char *base; @@ -4454,11 +4229,8 @@ xparse_dolparen (base, string, indp, flags) { sh_parser_state_t ps; sh_input_line_state_t ls; - int orig_ind, nc, sflags, orig_eof_token, start_lineno; + int orig_ind, nc, sflags, start_lineno; char *ret, *ep, *ostring; -#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) - STRING_SAVER *saved_pushed_strings; -#endif /*debug_parser(1);*/ orig_ind = *indp; @@ -4476,41 +4248,48 @@ xparse_dolparen (base, string, indp, flags) } /*itrace("xparse_dolparen: size = %d shell_input_line = `%s' string=`%s'", shell_input_line_size, shell_input_line, string);*/ + sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE; if (flags & SX_NOLONGJMP) sflags |= SEVAL_NOLONGJMP; + save_parser_state (&ps); save_input_line_state (&ls); - orig_eof_token = shell_eof_token; + #if defined (ALIAS) || defined (DPAREN_ARITHMETIC) - saved_pushed_strings = pushed_string_list; /* separate parsing context */ pushed_string_list = (STRING_SAVER *)NULL; #endif - /*(*/ parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/ shell_eof_token = ')'; + if (flags & SX_COMPLETE) + parser_state |= PST_NOERROR; + + /* Don't expand aliases on this pass at all. Either parse_comsub() does it + at parse time, in which case this string already has aliases expanded, + or command_substitute() does it in the child process executing the + command substitution and we want to defer it completely until then. The + old value will be restored by restore_parser_state(). */ + expand_aliases = 0; +#if defined (EXTENDED_GLOB) + global_extglob = extended_glob; /* for reset_parser() */ +#endif - /* Should we save and restore the bison/yacc lookahead token (yychar) here? - Or only if it's not YYEMPTY? */ + token_to_read = DOLPAREN; /* let's trick the parser */ - nc = parse_string (string, "command substitution", sflags, &ep); + nc = parse_string (string, "command substitution", sflags, (COMMAND **)NULL, &ep); + /* Should we save and restore the bison/yacc lookahead token (yychar) here? + Or only if it's not YYEMPTY? */ if (current_token == shell_eof_token) yyclearin; /* might want to clear lookahead token unconditionally */ - reset_parser (); + reset_parser (); /* resets extended_glob too */ /* reset_parser() clears shell_input_line and associated variables, including parser_state, so we want to reset things, then restore what we need. */ restore_input_line_state (&ls); - - shell_eof_token = orig_eof_token; restore_parser_state (&ps); -#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) - pushed_string_list = saved_pushed_strings; -#endif - token_to_read = 0; /* If parse_string returns < 0, we need to jump to top level with the @@ -4521,17 +4300,18 @@ xparse_dolparen (base, string, indp, flags) clear_shell_input_line (); /* XXX */ if (bash_input.type != st_string) /* paranoia */ parser_state &= ~(PST_CMDSUBST|PST_EOFTOKEN); - jump_to_top_level (-nc); /* XXX */ + if ((flags & SX_NOLONGJMP) == 0) + jump_to_top_level (-nc); /* XXX */ } - /* Need to find how many characters parse_and_execute consumed, update + /* Need to find how many characters parse_string() consumed, update *indp, if flags != 0, copy the portion of the string parsed into RET and return it. If flags & 1 (SX_NOALLOC) we can return NULL. */ /*(*/ if (ep[-1] != ')') { -#if DEBUG +#if 0 if (ep[-1] != '\n') itrace("xparse_dolparen:%d: ep[-1] != RPAREN (%d), ep = `%s'", line_number, ep[-1], ep); #endif @@ -4543,17 +4323,18 @@ xparse_dolparen (base, string, indp, flags) *indp = ep - base - 1; /*((*/ -#if DEBUG +#if 0 if (base[*indp] != ')') itrace("xparse_dolparen:%d: base[%d] != RPAREN (%d), base = `%s'", line_number, *indp, base[*indp], base); if (*indp < orig_ind) itrace("xparse_dolparen:%d: *indp (%d) < orig_ind (%d), orig_string = `%s'", line_number, *indp, orig_ind, ostring); #endif - if (base[*indp] != ')') + if (base[*indp] != ')' && (flags & SX_NOLONGJMP) == 0) { /*(*/ - parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), ')'); + if ((flags & SX_NOERROR) == 0) + parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), ')'); jump_to_top_level (DISCARD); } @@ -4571,6 +4352,74 @@ xparse_dolparen (base, string, indp, flags) return ret; } +/* Recursively call the parser to parse the string from a $(...) command + substitution to a COMMAND *. This is called from command_substitute() and + has the same parser state constraints as xparse_dolparen(). */ +COMMAND * +parse_string_to_command (string, flags) + char *string; + int flags; +{ + sh_parser_state_t ps; + sh_input_line_state_t ls; + int nc, sflags; + size_t slen; + char *ret, *ep; + COMMAND *cmd; + + if (*string == 0) + return (COMMAND *)NULL; + + ep = string; + slen = STRLEN (string); + +/*itrace("parse_string_to_command: size = %d shell_input_line = `%s' string=`%s'", shell_input_line_size, shell_input_line, string);*/ + + sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE; + if (flags & SX_NOLONGJMP) + sflags |= SEVAL_NOLONGJMP; + + save_parser_state (&ps); + save_input_line_state (&ls); + +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + pushed_string_list = (STRING_SAVER *)NULL; +#endif + if (flags & SX_COMPLETE) + parser_state |= PST_NOERROR; + + expand_aliases = 0; + + cmd = 0; + nc = parse_string (string, "command substitution", sflags, &cmd, &ep); + + reset_parser (); + /* reset_parser() clears shell_input_line and associated variables, including + parser_state, so we want to reset things, then restore what we need. */ + restore_input_line_state (&ls); + restore_parser_state (&ps); + + /* If parse_string returns < 0, we need to jump to top level with the + negative of the return value. We abandon the rest of this input line + first */ + if (nc < 0) + { + clear_shell_input_line (); /* XXX */ + if ((flags & SX_NOLONGJMP) == 0) + jump_to_top_level (-nc); /* XXX */ + } + + /* Need to check how many characters parse_string() consumed, make sure it's + the entire string. */ + if (nc < slen) + { + dispose_command (cmd); + return (COMMAND *)NULL; + } + + return cmd; +} + #if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) /* Parse a double-paren construct. It can be either an arithmetic command, an arithmetic `for' command, or a nested subshell. Returns @@ -4587,7 +4436,9 @@ parse_dparen (c) #if defined (ARITH_FOR_COMMAND) if (last_read_token == FOR) { - arith_for_lineno = line_number; + if (word_top < MAX_CASE_NEST) + word_top++; + arith_for_lineno = word_lineno[word_top] = line_number; cmdtyp = parse_arith_cmd (&wval, 0); if (cmdtyp == 1) { @@ -4611,7 +4462,7 @@ parse_dparen (c) { wd = alloc_word_desc (); wd->word = wval; - wd->flags = W_QUOTED|W_NOSPLIT|W_NOGLOB|W_DQUOTE; + wd->flags = W_QUOTED|W_NOSPLIT|W_NOGLOB|W_NOTILDE|W_NOPROCSUB; yylval.word_list = make_word_list (wd, (WORD_LIST *)NULL); return (ARITH_CMD); } @@ -4746,7 +4597,7 @@ cond_skip_newlines () while ((cond_token = read_token (READ)) == '\n') { if (SHOULD_PROMPT ()) - prompt_again (); + prompt_again (0); } return (cond_token); } @@ -4759,7 +4610,7 @@ cond_term () { WORD_DESC *op; COND_COM *term, *tleft, *tright; - int tok, lineno; + int tok, lineno, local_extglob; char *etext; /* Read a token. It can be a left paren, a `!', a unary operator, or a @@ -4828,6 +4679,7 @@ cond_term () tleft = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); /* binop */ + /* tok = cond_skip_newlines (); ? */ tok = read_token (READ); if (tok == WORD && test_binop (yylval.word->word)) { @@ -4872,11 +4724,12 @@ cond_term () } /* rhs */ + local_extglob = extended_glob; if (parser_state & PST_EXTPAT) extended_glob = 1; tok = read_token (READ); if (parser_state & PST_EXTPAT) - extended_glob = global_extglob; + extended_glob = local_extglob; parser_state &= ~(PST_REGEXP|PST_EXTPAT); if (tok == WORD) @@ -5032,11 +4885,18 @@ read_token_word (character) double-quotes, quote some things inside of double-quotes. */ if MBTEST(character == '\\') { + if (parser_state & PST_NOEXPAND) + { + pass_next_character++; + quoted = 1; + goto got_character; + } + peek_char = shell_getc (0); /* Backslash-newline is ignored in all cases except when quoted with single quotes. */ - if (peek_char == '\n') + if MBTEST(peek_char == '\n') { character = '\n'; goto next_character; @@ -5046,7 +4906,7 @@ read_token_word (character) shell_ungetc (peek_char); /* If the next character is to be quoted, note it now. */ - if (cd == 0 || cd == '`' || + if MBTEST(cd == 0 || cd == '`' || (cd == '"' && peek_char >= 0 && (sh_syntaxtab[peek_char] & CBSDQUOTE))) pass_next_character++; @@ -5131,7 +4991,7 @@ read_token_word (character) /* If the delimiter character is not single quote, parse some of the shell expansions that must be read as a single word. */ - if (shellexp (character)) + if MBTEST(shellexp (character)) { peek_char = shell_getc (1); /* $(...), <(...), >(...), $((...)), ${...}, and $[...] constructs */ @@ -5168,7 +5028,11 @@ read_token_word (character) goto next_character; } /* This handles $'...' and $"..." new-style quoted strings. */ +#if defined (TRANSLATABLE_STRINGS) else if MBTEST(character == '$' && (peek_char == '\'' || peek_char == '"')) +#else + else if MBTEST(character == '$' && peek_char == '\'') +#endif { int first_line; @@ -5182,6 +5046,7 @@ read_token_word (character) return -1; if (peek_char == '\'') { + /* PST_NOEXPAND */ ttrans = ansiexpand (ttok, 0, ttoklen - 1, &ttranslen); free (ttok); @@ -5193,18 +5058,27 @@ read_token_word (character) ttranslen = strlen (ttok); ttrans = ttok; } +#if defined (TRANSLATABLE_STRINGS) else { + /* PST_NOEXPAND */ /* Try to locale-expand the converted string. */ - ttrans = localeexpand (ttok, 0, ttoklen - 1, first_line, &ttranslen); + ttrans = locale_expand (ttok, 0, ttoklen - 1, first_line, &ttranslen); free (ttok); - /* Add the double quotes back */ - ttok = sh_mkdoublequoted (ttrans, ttranslen, 0); + /* Add the double quotes back (or single quotes if the user + has set that option). */ + if (singlequote_translations && + ((ttoklen - 1) != ttranslen || STREQN (ttok, ttrans, ttranslen) == 0)) + ttok = sh_single_quote (ttrans); + else + ttok = sh_mkdoublequoted (ttrans, ttranslen, 0); + free (ttrans); - ttranslen += 2; ttrans = ttok; + ttranslen = strlen (ttrans); } +#endif /* TRANSLATABLE_STRINGS */ RESIZE_MALLOCED_BUFFER (token, token_index, ttranslen + 1, token_buffer_size, @@ -5297,7 +5171,7 @@ read_token_word (character) } got_character: - if (character == CTLESC || character == CTLNUL) + if MBTEST(character == CTLESC || character == CTLNUL) { RESIZE_MALLOCED_BUFFER (token, token_index, 2, token_buffer_size, TOKEN_DEFAULT_GROW_SIZE); @@ -5315,7 +5189,7 @@ got_escaped_character: next_character: if (character == '\n' && SHOULD_PROMPT ()) - prompt_again (); + prompt_again (0); /* We want to remove quoted newlines (that is, a \ pair) unless we are within single quotes or pass_next_character is @@ -5411,7 +5285,7 @@ got_token: yylval.word = the_word; /* should we check that quoted == 0 as well? */ - if (token[0] == '{' && token[token_index-1] == '}' && + if MBTEST(token[0] == '{' && token[token_index-1] == '}' && (character == '<' || character == '>')) { /* can use token; already copied to the_word */ @@ -5473,8 +5347,10 @@ reserved_word_acceptable (toksym) case '{': case '}': /* XXX */ case AND_AND: + case ARITH_CMD: case BANG: case BAR_AND: + case COND_END: case DO: case DONE: case ELIF: @@ -5494,6 +5370,7 @@ reserved_word_acceptable (toksym) case UNTIL: case WHILE: case 0: + case DOLPAREN: return 1; default: #if defined (COPROCESS_SUPPORT) @@ -5653,8 +5530,11 @@ history_delimiting_chars (line) return (" "); } + /* Assume that by this point we are reading lines in a multi-line command. + If we have multiple consecutive blank lines we want to return only one + semicolon. */ if (line_isblank (line)) - return (""); + return (current_command_line_count > 1 && last_read_token == '\n' && token_before_that != '\n') ? "; " : ""; return ("; "); } @@ -5663,7 +5543,8 @@ history_delimiting_chars (line) /* Issue a prompt, or prepare to issue a prompt when the next character is read. */ static void -prompt_again () +prompt_again (force) + int force; { char *temp_prompt; @@ -5793,7 +5674,7 @@ decode_prompt_string (string) int last_exit_value, last_comsub_pid; #if defined (PROMPT_STRING_DECODE) size_t result_size; - int result_index; + size_t result_index; int c, n, i; char *temp, *t_host, octal_string[4]; struct tm *tm; @@ -5930,7 +5811,7 @@ decode_prompt_string (string) /* Make sure that expand_prompt_string is called with a second argument of Q_DOUBLE_QUOTES if we use this function here. */ - temp = sh_backslash_quote_for_double_quotes (timebuf); + temp = sh_backslash_quote_for_double_quotes (timebuf, 0); else temp = savestring (timebuf); goto add_string; @@ -5946,9 +5827,14 @@ decode_prompt_string (string) temp = base_pathname (shell_name); /* Try to quote anything the user can set in the file system */ if (promptvars || posixly_correct) - temp = sh_backslash_quote_for_double_quotes (temp); + { + char *t; + t = sh_strvis (temp); + temp = sh_backslash_quote_for_double_quotes (t, 0); + free (t); + } else - temp = savestring (temp); + temp = sh_strvis (temp); goto add_string; case 'v': @@ -6023,9 +5909,14 @@ decode_prompt_string (string) /* Make sure that expand_prompt_string is called with a second argument of Q_DOUBLE_QUOTES if we use this function here. */ - temp = sh_backslash_quote_for_double_quotes (t_string); + { + char *t; + t = sh_strvis (t_string); + temp = sh_backslash_quote_for_double_quotes (t, 0); + free (t); + } else - temp = savestring (t_string); + temp = sh_strvis (t_string); goto add_string; } @@ -6045,7 +5936,7 @@ decode_prompt_string (string) /* Make sure that expand_prompt_string is called with a second argument of Q_DOUBLE_QUOTES if we use this function here. */ - temp = sh_backslash_quote_for_double_quotes (t_host); + temp = sh_backslash_quote_for_double_quotes (t_host, 0); else temp = savestring (t_host); free (t_host); @@ -6200,7 +6091,8 @@ int yyerror (msg) const char *msg; { - report_syntax_error ((char *)NULL); + if ((parser_state & PST_NOERROR) == 0) + report_syntax_error ((char *)NULL); reset_parser (); return (0); } @@ -6362,8 +6254,14 @@ report_syntax_error (message) } else { - msg = EOF_Reached ? _("syntax error: unexpected end of file") : _("syntax error"); - parser_error (line_number, "%s", msg); + if (EOF_Reached && shell_eof_token && current_token != shell_eof_token) + parser_error (line_number, _("unexpected EOF while looking for matching `%c'"), shell_eof_token); + else + { + msg = EOF_Reached ? _("syntax error: unexpected end of file") : _("syntax error"); + parser_error (line_number, "%s", msg); + } + /* When the shell is interactive, this file uses EOF_Reached only for error reporting. Other mechanisms are used to decide whether or not to exit. */ @@ -6432,7 +6330,7 @@ handle_eof_input_unit () last_read_token = current_token = '\n'; /* Reset the prompt string to be $PS1. */ prompt_string_pointer = (char **)NULL; - prompt_again (); + prompt_again (0); return; } } @@ -6471,31 +6369,26 @@ parse_string_to_word_list (s, flags, whom) const char *whom; { WORD_LIST *wl; - int tok, orig_current_token, orig_line_number, orig_input_terminator; - int orig_line_count; - int old_echo_input, old_expand_aliases, ea; -#if defined (HISTORY) - int old_remember_on_history, old_history_expansion_inhibited; -#endif + int tok, orig_current_token, orig_line_number; + int orig_parser_state; + sh_parser_state_t ps; + int ea; + + orig_line_number = line_number; + save_parser_state (&ps); #if defined (HISTORY) - old_remember_on_history = remember_on_history; -# if defined (BANG_HISTORY) - old_history_expansion_inhibited = history_expansion_inhibited; -# endif bash_history_disable (); #endif - orig_line_number = line_number; - orig_line_count = current_command_line_count; - orig_input_terminator = shell_input_line_terminator; - old_echo_input = echo_input_at_read; - old_expand_aliases = expand_aliases; - push_stream (1); if (ea = expanding_alias ()) parser_save_alias (); - last_read_token = WORD; /* WORD to allow reserved words here */ + + /* WORD to avoid parsing reserved words as themselves and just parse them as + WORDs. */ + last_read_token = WORD; + current_command_line_count = 0; echo_input_at_read = expand_aliases = 0; @@ -6503,7 +6396,13 @@ parse_string_to_word_list (s, flags, whom) wl = (WORD_LIST *)NULL; if (flags & 1) - parser_state |= PST_COMPASSIGN|PST_REPARSE; + { + orig_parser_state = parser_state; /* XXX - not needed? */ + /* State flags we don't want to persist into compound assignments. */ + parser_state &= ~PST_NOEXPAND; /* parse_comsub sentinel */ + /* State flags we want to set for this run through the tokenizer. */ + parser_state |= PST_COMPASSIGN|PST_REPARSE; + } while ((tok = read_token (READ)) != yacc_EOF) { @@ -6532,21 +6431,10 @@ parse_string_to_word_list (s, flags, whom) if (ea) parser_restore_alias (); -#if defined (HISTORY) - remember_on_history = old_remember_on_history; -# if defined (BANG_HISTORY) - history_expansion_inhibited = old_history_expansion_inhibited; -# endif /* BANG_HISTORY */ -#endif /* HISTORY */ - - echo_input_at_read = old_echo_input; - expand_aliases = old_expand_aliases; - - current_command_line_count = orig_line_count; - shell_input_line_terminator = orig_input_terminator; + restore_parser_state (&ps); if (flags & 1) - parser_state &= ~(PST_COMPASSIGN|PST_REPARSE); + parser_state = orig_parser_state; /* XXX - not needed? */ if (wl == &parse_string_error) { @@ -6565,30 +6453,37 @@ parse_compound_assignment (retlenp) int *retlenp; { WORD_LIST *wl, *rl; - int tok, orig_line_number, orig_token_size, orig_last_token, assignok; - char *saved_token, *ret; + int tok, orig_line_number, assignok; + sh_parser_state_t ps; + char *ret; - saved_token = token; - orig_token_size = token_buffer_size; orig_line_number = line_number; - orig_last_token = last_read_token; + save_parser_state (&ps); - last_read_token = WORD; /* WORD to allow reserved words here */ + /* WORD to avoid parsing reserved words as themselves and just parse them as + WORDs. Plus it means we won't be in a command position and so alias + expansion won't happen. */ + last_read_token = WORD; token = (char *)NULL; token_buffer_size = 0; + wl = (WORD_LIST *)NULL; /* ( */ assignok = parser_state&PST_ASSIGNOK; /* XXX */ - wl = (WORD_LIST *)NULL; /* ( */ + /* State flags we don't want to persist into compound assignments. */ + parser_state &= ~(PST_NOEXPAND|PST_CONDCMD|PST_CONDEXPR|PST_REGEXP|PST_EXTPAT); + /* State flags we want to set for this run through the tokenizer. */ parser_state |= PST_COMPASSIGN; + esacs_needed_count = expecting_in_token = 0; + while ((tok = read_token (READ)) != ')') { if (tok == '\n') /* Allow newlines in compound assignments */ { if (SHOULD_PROMPT ()) - prompt_again (); + prompt_again (0); continue; } if (tok != WORD && tok != ASSIGNMENT_WORD) @@ -6606,11 +6501,7 @@ parse_compound_assignment (retlenp) wl = make_word_list (yylval.word, wl); } - FREE (token); - token = saved_token; - token_buffer_size = orig_token_size; - - parser_state &= ~PST_COMPASSIGN; + restore_parser_state (&ps); if (wl == &parse_string_error) { @@ -6622,8 +6513,6 @@ parse_compound_assignment (retlenp) jump_to_top_level (DISCARD); } - last_read_token = orig_last_token; /* XXX - was WORD? */ - if (wl) { rl = REVERSE_LIST (wl, WORD_LIST *); @@ -6662,6 +6551,7 @@ save_parser_state (ps) ps->input_line_terminator = shell_input_line_terminator; ps->eof_encountered = eof_encountered; + ps->eol_lookahead = eol_ungetc_lookahead; ps->prompt_string_pointer = prompt_string_pointer; @@ -6687,11 +6577,19 @@ save_parser_state (ps) ps->need_here_doc = need_here_doc; ps->here_doc_first_line = here_doc_first_line; + ps->esacs_needed = esacs_needed_count; + ps->expecting_in = expecting_in_token; + if (need_here_doc == 0) ps->redir_stack[0] = 0; else memcpy (ps->redir_stack, redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX); +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + ps->pushed_strings = pushed_string_list; +#endif + + ps->eof_token = shell_eof_token; ps->token = token; ps->token_buffer_size = token_buffer_size; /* Force reallocation on next call to read_token_word */ @@ -6719,6 +6617,7 @@ restore_parser_state (ps) shell_input_line_terminator = ps->input_line_terminator; eof_encountered = ps->eof_encountered; + eol_ungetc_lookahead = ps->eol_lookahead; prompt_string_pointer = ps->prompt_string_pointer; @@ -6744,6 +6643,9 @@ restore_parser_state (ps) need_here_doc = ps->need_here_doc; here_doc_first_line = ps->here_doc_first_line; + esacs_needed_count = ps->esacs_needed; + expecting_in_token = ps->expecting_in; + #if 0 for (i = 0; i < HEREDOC_MAX; i++) redir_stack[i] = ps->redir_stack[i]; @@ -6754,9 +6656,14 @@ restore_parser_state (ps) memcpy (redir_stack, ps->redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX); #endif +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + pushed_string_list = (STRING_SAVER *)ps->pushed_strings; +#endif + FREE (token); token = ps->token; token_buffer_size = ps->token_buffer_size; + shell_eof_token = ps->eof_token; } sh_input_line_state_t * diff --git a/parser-built b/parser-built index 41bdea08e..e69de29bb 100644 --- a/parser-built +++ b/parser-built @@ -1,186 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ - -/* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, - Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, - especially those whose name start with YY_ or yy_. They are - private implementation details that can be changed or removed. */ - -#ifndef YY_YY_Y_TAB_H_INCLUDED -# define YY_YY_Y_TAB_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token kinds. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - IF = 258, /* IF */ - THEN = 259, /* THEN */ - ELSE = 260, /* ELSE */ - ELIF = 261, /* ELIF */ - FI = 262, /* FI */ - CASE = 263, /* CASE */ - ESAC = 264, /* ESAC */ - FOR = 265, /* FOR */ - SELECT = 266, /* SELECT */ - WHILE = 267, /* WHILE */ - UNTIL = 268, /* UNTIL */ - DO = 269, /* DO */ - DONE = 270, /* DONE */ - FUNCTION = 271, /* FUNCTION */ - COPROC = 272, /* COPROC */ - COND_START = 273, /* COND_START */ - COND_END = 274, /* COND_END */ - COND_ERROR = 275, /* COND_ERROR */ - IN = 276, /* IN */ - BANG = 277, /* BANG */ - TIME = 278, /* TIME */ - TIMEOPT = 279, /* TIMEOPT */ - TIMEIGN = 280, /* TIMEIGN */ - WORD = 281, /* WORD */ - ASSIGNMENT_WORD = 282, /* ASSIGNMENT_WORD */ - REDIR_WORD = 283, /* REDIR_WORD */ - NUMBER = 284, /* NUMBER */ - ARITH_CMD = 285, /* ARITH_CMD */ - ARITH_FOR_EXPRS = 286, /* ARITH_FOR_EXPRS */ - COND_CMD = 287, /* COND_CMD */ - AND_AND = 288, /* AND_AND */ - OR_OR = 289, /* OR_OR */ - GREATER_GREATER = 290, /* GREATER_GREATER */ - LESS_LESS = 291, /* LESS_LESS */ - LESS_AND = 292, /* LESS_AND */ - LESS_LESS_LESS = 293, /* LESS_LESS_LESS */ - GREATER_AND = 294, /* GREATER_AND */ - SEMI_SEMI = 295, /* SEMI_SEMI */ - SEMI_AND = 296, /* SEMI_AND */ - SEMI_SEMI_AND = 297, /* SEMI_SEMI_AND */ - LESS_LESS_MINUS = 298, /* LESS_LESS_MINUS */ - AND_GREATER = 299, /* AND_GREATER */ - AND_GREATER_GREATER = 300, /* AND_GREATER_GREATER */ - LESS_GREATER = 301, /* LESS_GREATER */ - GREATER_BAR = 302, /* GREATER_BAR */ - BAR_AND = 303, /* BAR_AND */ - yacc_EOF = 304 /* yacc_EOF */ - }; - typedef enum yytokentype yytoken_kind_t; -#endif -/* Token kinds. */ -#define YYEOF 0 -#define YYerror 256 -#define YYUNDEF 257 -#define IF 258 -#define THEN 259 -#define ELSE 260 -#define ELIF 261 -#define FI 262 -#define CASE 263 -#define ESAC 264 -#define FOR 265 -#define SELECT 266 -#define WHILE 267 -#define UNTIL 268 -#define DO 269 -#define DONE 270 -#define FUNCTION 271 -#define COPROC 272 -#define COND_START 273 -#define COND_END 274 -#define COND_ERROR 275 -#define IN 276 -#define BANG 277 -#define TIME 278 -#define TIMEOPT 279 -#define TIMEIGN 280 -#define WORD 281 -#define ASSIGNMENT_WORD 282 -#define REDIR_WORD 283 -#define NUMBER 284 -#define ARITH_CMD 285 -#define ARITH_FOR_EXPRS 286 -#define COND_CMD 287 -#define AND_AND 288 -#define OR_OR 289 -#define GREATER_GREATER 290 -#define LESS_LESS 291 -#define LESS_AND 292 -#define LESS_LESS_LESS 293 -#define GREATER_AND 294 -#define SEMI_SEMI 295 -#define SEMI_AND 296 -#define SEMI_SEMI_AND 297 -#define LESS_LESS_MINUS 298 -#define AND_GREATER 299 -#define AND_GREATER_GREATER 300 -#define LESS_GREATER 301 -#define GREATER_BAR 302 -#define BAR_AND 303 -#define yacc_EOF 304 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 328 "/Users/chet/src/bash/src/parse.y" - - WORD_DESC *word; /* the word that we read. */ - int number; /* the number that we read. */ - WORD_LIST *word_list; - COMMAND *command; - REDIRECT *redirect; - ELEMENT element; - PATTERN_LIST *pattern; - -#line 174 "y.tab.h" - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - -int yyparse (void); - -#endif /* !YY_YY_Y_TAB_H_INCLUDED */ diff --git a/parser.h b/parser.h index 59bddacaf..59bf0fec4 100644 --- a/parser.h +++ b/parser.h @@ -1,7 +1,7 @@ /* parser.h -- Everything you wanted to know about the parser, but were afraid to ask. */ -/* Copyright (C) 1995-2019 Free Software Foundation, Inc. +/* Copyright (C) 1995-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -30,7 +30,7 @@ #define PST_ALEXPNEXT 0x000002 /* expand next word for aliases */ #define PST_ALLOWOPNBRC 0x000004 /* allow open brace for function def */ #define PST_NEEDCLOSBRC 0x000008 /* need close brace */ -#define PST_DBLPAREN 0x000010 /* double-paren parsing */ +#define PST_DBLPAREN 0x000010 /* double-paren parsing - unused */ #define PST_SUBSHELL 0x000020 /* ( ... ) subshell */ #define PST_CMDSUBST 0x000040 /* $( ... ) command substitution */ #define PST_CASESTMT 0x000080 /* parsing a case statement */ @@ -48,6 +48,8 @@ #define PST_REDIRLIST 0x080000 /* parsing a list of redirections preceding a simple command name */ #define PST_COMMENT 0x100000 /* parsing a shell comment; used by aliases */ #define PST_ENDALIAS 0x200000 /* just finished expanding and consuming an alias */ +#define PST_NOEXPAND 0x400000 /* don't expand anything in read_token_word; for command substitution */ +#define PST_NOERROR 0x800000 /* don't print error messages in yyerror */ /* Definition of the delimiter stack. Needed by parse.y and bashhist.c. */ struct dstack { diff --git a/patchlevel.h b/patchlevel.h index 3c226949a..165390c15 100644 --- a/patchlevel.h +++ b/patchlevel.h @@ -1,6 +1,6 @@ /* patchlevel.h -- current bash patch level */ -/* Copyright (C) 2001-2020 Free Software Foundation, Inc. +/* Copyright (C) 2001-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -25,6 +25,6 @@ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh looks for to find the patch level (for the sccs version string). */ -#define PATCHLEVEL 16 +#define PATCHLEVEL 0 #endif /* _PATCHLEVEL_H_ */ diff --git a/pathexp.c b/pathexp.c index 6e7ef283d..379128e79 100644 --- a/pathexp.c +++ b/pathexp.c @@ -42,12 +42,7 @@ static int glob_name_is_acceptable PARAMS((const char *)); static void ignore_globbed_names PARAMS((char **, sh_ignore_func_t *)); static char *split_ignorespec PARAMS((char *, int *)); -#if defined (USE_POSIX_GLOB_LIBRARY) -# include -typedef int posix_glob_errfunc_t PARAMS((const char *, int)); -#else -# include -#endif +#include /* Control whether * matches .files in globbing. */ int glob_dot_filenames; @@ -171,6 +166,7 @@ ere_char (c) return (0); } +/* This is only used to determine whether to backslash-quote a character. */ int glob_char_p (s) const char *s; @@ -412,54 +408,6 @@ shell_glob_filename (pathname, qflags) const char *pathname; int qflags; { -#if defined (USE_POSIX_GLOB_LIBRARY) - register int i; - char *temp, **results; - glob_t filenames; - int glob_flags; - - temp = quote_string_for_globbing (pathname, QGLOB_FILENAME|qflags); - - filenames.gl_offs = 0; - -# if defined (GLOB_PERIOD) - glob_flags = glob_dot_filenames ? GLOB_PERIOD : 0; -# else - glob_flags = 0; -# endif /* !GLOB_PERIOD */ - - glob_flags |= (GLOB_ERR | GLOB_DOOFFS); - - i = glob (temp, glob_flags, (posix_glob_errfunc_t *)NULL, &filenames); - - free (temp); - - if (i == GLOB_NOSPACE || i == GLOB_ABORTED) - return ((char **)NULL); - else if (i == GLOB_NOMATCH) - filenames.gl_pathv = (char **)NULL; - else if (i != 0) /* other error codes not in POSIX.2 */ - filenames.gl_pathv = (char **)NULL; - - results = filenames.gl_pathv; - - if (results && ((GLOB_FAILED (results)) == 0)) - { - if (should_ignore_glob_matches ()) - ignore_glob_matches (results); - if (results && results[0]) - strvec_sort (results, 1); /* posix sort */ - else - { - FREE (results); - results = (char **)NULL; - } - } - - return (results); - -#else /* !USE_POSIX_GLOB_LIBRARY */ - char *temp, **results; int gflags, quoted_pattern; @@ -484,7 +432,6 @@ shell_glob_filename (pathname, qflags) } return (results); -#endif /* !USE_POSIX_GLOB_LIBRARY */ } /* Stuff for GLOBIGNORE. */ diff --git a/pathexp.h b/pathexp.h index 7ed0d2ad6..b96f92af4 100644 --- a/pathexp.h +++ b/pathexp.h @@ -21,13 +21,10 @@ #if !defined (_PATHEXP_H_) #define _PATHEXP_H_ -#if defined (USE_POSIX_GLOB_LIBRARY) -# define GLOB_FAILED(glist) !(glist) -#else /* !USE_POSIX_GLOB_LIBRARY */ -# define GLOB_FAILED(glist) (glist) == (char **)&glob_error_return +#define GLOB_FAILED(glist) (glist) == (char **)&glob_error_return + extern int noglob_dot_filenames; extern char *glob_error_return; -#endif /* !USE_POSIX_GLOB_LIBRARY */ /* Flag values for quote_string_for_globbing */ #define QGLOB_CVTNULL 0x01 /* convert QUOTED_NULL strings to '\0' */ diff --git a/pcomplete.c b/pcomplete.c index fe1a03200..9612406d9 100644 --- a/pcomplete.c +++ b/pcomplete.c @@ -1,6 +1,6 @@ /* pcomplete.c - functions to generate lists of matches for programmable completion. */ -/* Copyright (C) 1999-2020 Free Software Foundation, Inc. +/* Copyright (C) 1999-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -414,6 +414,7 @@ init_itemlist_from_varlist (itp, svfunc) sl->list[i] = savestring (vlist[i]->name); sl->list[sl->list_len = n] = (char *)NULL; itp->slist = sl; + free (vlist); } static int @@ -884,16 +885,18 @@ gen_action_completions (cs, text) TEXT as a match prefix, or just go without? Currently, the code does not use TEXT, just globs CS->globpat and returns the results. If we do decide to use TEXT, we should call quote_string_for_globbing before the call to - glob_filename. */ + glob_filename (in which case we could use shell_glob_filename). */ static STRINGLIST * gen_globpat_matches (cs, text) COMPSPEC *cs; const char *text; { STRINGLIST *sl; + int gflags; sl = strlist_create (0); - sl->list = glob_filename (cs->globpat, 0); + gflags = glob_star ? GX_GLOBSTAR : 0; + sl->list = glob_filename (cs->globpat, gflags); if (GLOB_FAILED (sl->list)) sl->list = (char **)NULL; if (sl->list) @@ -1296,7 +1299,7 @@ command_line_to_word_list (line, llen, sentinel, nwp, cwp) int llen, sentinel, *nwp, *cwp; { WORD_LIST *ret; - char *delims; + const char *delims; #if 0 delims = "()<>;&| \t\n"; /* shell metacharacters break words */ diff --git a/pcomplib.c b/pcomplib.c index 075fce737..e8df62ece 100644 --- a/pcomplib.c +++ b/pcomplib.c @@ -1,6 +1,6 @@ /* pcomplib.c - library functions for programmable completion. */ -/* Copyright (C) 1999-2020 Free Software Foundation, Inc. +/* Copyright (C) 1999-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -37,7 +37,7 @@ #include "shell.h" #include "pcomplete.h" -#define COMPLETE_HASH_BUCKETS 256 /* must be power of two */ +#define COMPLETE_HASH_BUCKETS 512 /* must be power of two */ #define STRDUP(x) ((x) ? savestring (x) : (char *)NULL) diff --git a/po/af.gmo b/po/af.gmo index 28fbbfb67..56f6b5aab 100644 Binary files a/po/af.gmo and b/po/af.gmo differ diff --git a/po/af.po b/po/af.po index c35068142..d9e5f0845 100644 --- a/po/af.po +++ b/po/af.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 2.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2004-03-17 13:48+0200\n" "Last-Translator: Petri Jooste \n" "Language-Team: Afrikaans \n" @@ -21,57 +21,52 @@ msgstr "" msgid "bad array subscript" msgstr "Os/2 Biskaart Skikking" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: kan nie %s skep nie" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "" -#: bashline.c:4555 +#: bashline.c:4733 #, fuzzy, c-format msgid "`%s': cannot unbind in command keymap" msgstr "%s: bevel nie gevind nie" @@ -91,7 +86,7 @@ msgstr "" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "" @@ -154,7 +149,7 @@ msgstr "" msgid "HOME not set" msgstr "" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 #, fuzzy msgid "too many arguments" msgstr "te veel parameters" @@ -183,7 +178,7 @@ msgstr "" msgid "%s: usage: " msgstr "" -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, fuzzy, c-format msgid "%s: option requires an argument" msgstr "%s: option `%s' requires an argument\n" @@ -198,7 +193,7 @@ msgstr "" msgid "%s: not found" msgstr "%s: bevel nie gevind nie" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, fuzzy, c-format msgid "%s: invalid option" msgstr "%s: illegal option -- %c\n" @@ -208,7 +203,7 @@ msgstr "%s: illegal option -- %c\n" msgid "%s: invalid option name" msgstr "%s: illegal option -- %c\n" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, fuzzy, c-format msgid "`%s': not a valid identifier" msgstr "Die datum is nie geldige!" @@ -223,7 +218,7 @@ msgstr "Die sein nommer wat was gevang het" msgid "invalid hex number" msgstr "Die sein nommer wat was gevang het" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 #, fuzzy msgid "invalid number" msgstr "Die sein nommer wat was gevang het" @@ -238,90 +233,95 @@ msgstr "" msgid "`%s': not a pid or valid job spec" msgstr "" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, fuzzy, c-format msgid "%s: readonly variable" msgstr "Veranderlike boom" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: kan nie %s skep nie" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 #, fuzzy msgid "argument" msgstr "argument verwag\n" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "" -#: builtins/common.c:292 +#: builtins/common.c:299 #, fuzzy, c-format msgid "%s: no job control" msgstr "geen taakbeheer in hierdie dop nie" -#: builtins/common.c:294 +#: builtins/common.c:301 #, fuzzy msgid "no job control" msgstr "geen taakbeheer in hierdie dop nie" -#: builtins/common.c:304 +#: builtins/common.c:311 #, fuzzy, c-format msgid "%s: restricted" msgstr "Die bediener beëindig Die verbinding." -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "" -#: builtins/common.c:323 +#: builtins/common.c:330 #, fuzzy, c-format msgid "write error: %s" msgstr "pypfout: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, fuzzy, c-format msgid "%s: ambiguous job spec" msgstr "%s: dubbelsinnige herroetering" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, fuzzy, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: kan nie %s skep nie" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, fuzzy, c-format msgid "%s: cannot unset" msgstr "%s: kan nie %s skep nie" @@ -331,108 +331,108 @@ msgstr "%s: kan nie %s skep nie" msgid "%s: invalid action name" msgstr "" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: leesalleen-funksie" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: leesalleen-funksie" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, fuzzy, c-format msgid "%s: cannot destroy array variables in this way" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, fuzzy, c-format msgid "cannot open shared object %s: %s" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, fuzzy, c-format msgid "%s: cannot delete: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: is 'n gids" @@ -447,7 +447,7 @@ msgstr "%s: kan nie 'n bin msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kan nie 'n binêre lêer uitvoer nie" @@ -542,12 +542,12 @@ msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -#: builtins/help.def:224 +#: builtins/help.def:223 #, fuzzy, c-format msgid "%s: cannot open: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -559,21 +559,21 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "" -#: builtins/history.def:451 +#: builtins/history.def:449 #, fuzzy, c-format msgid "%s: history expansion failed" msgstr "%s: heelgetal-uitdrukking is verwag\n" @@ -597,79 +597,79 @@ msgstr "" msgid "Unknown error" msgstr "Onbekende fout %d" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 #, fuzzy msgid "expression expected" msgstr "Bools uitdrukking verwag" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "Os/2 Biskaart Skikking" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -767,12 +767,12 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:755 +#: builtins/read.def:827 #, fuzzy, c-format msgid "read error: %d: %s" msgstr "pypfout: %s" @@ -785,7 +785,7 @@ msgstr "" msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:966 +#: builtins/set.def:969 #, fuzzy, c-format msgid "%s: not an array variable" msgstr "Veranderlike boom" @@ -805,11 +805,11 @@ msgstr "%s: kan nie %s skep nie" msgid "shift count" msgstr "Shift" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "" @@ -877,17 +877,17 @@ msgstr "" msgid "`%c': bad command" msgstr "%s: illegal option -- %c\n" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, fuzzy, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 #, fuzzy msgid "limit" msgstr "Filter beperk:" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, fuzzy, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan nie %s skep nie" @@ -907,7 +907,7 @@ msgstr "" msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr "" @@ -927,101 +927,111 @@ msgstr "" msgid "INFORM: " msgstr "" -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "" + +#: error.c:488 #, fuzzy msgid "unknown command error" msgstr "Onbekende fout %d" -#: error.c:463 +#: error.c:489 #, fuzzy msgid "bad command type" msgstr "bevelnaam" -#: error.c:464 +#: error.c:490 #, fuzzy msgid "bad connector" msgstr "foutiewe verbinder`%d'" -#: error.c:465 +#: error.c:491 #, fuzzy msgid "bad jump" msgstr "Spring na:" -#: error.c:503 +#: error.c:529 #, fuzzy, c-format msgid "%s: unbound variable" msgstr "Veranderlike boom" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 #, fuzzy msgid "pipe error" msgstr "pypfout: %s" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: bevel nie gevind nie" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: kan nie 'n binêre lêer uitvoer nie" + +#: execute_cmd.c:6000 #, fuzzy, c-format msgid "%s: %s: bad interpreter" msgstr "%s: is 'n gids" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kan nie 'n binêre lêer uitvoer nie" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, fuzzy, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" @@ -1035,76 +1045,76 @@ msgstr "" msgid "recursion stack underflow" msgstr "Stapel grootte verhoog" -#: expr.c:477 +#: expr.c:478 #, fuzzy msgid "syntax error in expression" msgstr "Sintaks fout in patroon" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "" -#: expr.c:530 +#: expr.c:531 #, fuzzy msgid "syntax error in variable assignment" msgstr "Sintaks fout in patroon" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 #, fuzzy msgid "division by 0" msgstr "devisie by nul." -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "" -#: expr.c:646 +#: expr.c:647 #, fuzzy msgid "`:' expected for conditional expression" msgstr "Soek die lêer vir 'n uitdrukking" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:1056 +#: expr.c:1057 #, fuzzy msgid "missing `)'" msgstr "Ontbrekende '>'" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 #, fuzzy msgid "syntax error: operand expected" msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1513 +#: expr.c:1518 #, fuzzy, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" "Hierdie is die fout boodskap van %1:\n" "%2" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "waarde te groot vir basis" -#: expr.c:1647 +#: expr.c:1652 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "Pypfout.\n" @@ -1114,7 +1124,7 @@ msgstr "Pypfout.\n" msgid "getcwd: cannot access parent directories" msgstr "Kan nie die program uitvoer nie:" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" @@ -1133,218 +1143,218 @@ msgstr "" msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1850 +#: jobs.c:1839 #, fuzzy, c-format msgid "describe_pid: %ld: no such pid" msgstr "E108: Geen veranderlike: \"%s\"" -#: jobs.c:1865 +#: jobs.c:1854 #, fuzzy, c-format msgid "Signal %d" msgstr "Sein kwaliteit:" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Klaar" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 #, fuzzy msgid "Stopped" msgstr "Op gehou" -#: jobs.c:1888 +#: jobs.c:1877 #, fuzzy, c-format msgid "Stopped(%s)" msgstr "Op gehou" -#: jobs.c:1892 +#: jobs.c:1881 #, fuzzy msgid "Running" msgstr "aktief" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Klaar(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Verlaat %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Onbekende status" -#: jobs.c:2001 +#: jobs.c:1990 #, fuzzy, c-format msgid "(core dumped) " msgstr "Kern Ontwikkelaar" -#: jobs.c:2020 +#: jobs.c:2009 #, fuzzy, c-format msgid " (wd: %s)" msgstr "Aktiveer nou dadelik" -#: jobs.c:2259 +#: jobs.c:2250 #, fuzzy, c-format msgid "child setpgid (%ld to %ld)" msgstr "Fout in die skryf van %s" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:3564 +#: jobs.c:3551 #, fuzzy, c-format msgid "%s: no current jobs" msgstr "%s: kan nie %s skep nie" -#: jobs.c:3571 +#: jobs.c:3558 #, fuzzy, c-format msgid "%s: job has terminated" msgstr "Die bediener beëindig Die verbinding." -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "" -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, fuzzy, c-format msgid " (core dumped)" msgstr "Kern Ontwikkelaar" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, fuzzy, c-format msgid "(wd now: %s)\n" msgstr "Aktiveer nou dadelik" -#: jobs.c:4391 +#: jobs.c:4378 #, fuzzy msgid "initialize_job_control: getpgrp failed" msgstr "Inisialisering van OpenGL het misluk." -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:4473 +#: jobs.c:4460 #, fuzzy msgid "initialize_job_control: setpgid" msgstr "Inisialisering van OpenGL het misluk." -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "geen taakbeheer in hierdie dop nie" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "onbekend" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "" @@ -1386,22 +1396,22 @@ msgstr "" msgid "network operations not supported" msgstr "" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" @@ -1421,144 +1431,144 @@ msgstr "Wanneer nuwe pos arriveer in" msgid "The mail in %s has been read\n" msgstr "" -#: make_cmd.c:317 +#: make_cmd.c:314 #, fuzzy msgid "syntax error: arithmetic expression required" msgstr "Sintaks fout in patroon" -#: make_cmd.c:319 +#: make_cmd.c:316 #, fuzzy msgid "syntax error: `;' unexpected" msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." -#: make_cmd.c:320 +#: make_cmd.c:317 #, fuzzy, c-format msgid "syntax error: `((%s))'" msgstr "sintaksfout" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4705 +#: parse.y:4461 #, fuzzy msgid "syntax error in conditional expression" msgstr "Sintaks fout in patroon" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4787 +#: parse.y:4543 #, fuzzy msgid "expected `)'" msgstr "')' is verwag\n" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4865 +#: parse.y:4621 #, fuzzy, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "%s: binêre operator is verwag\n" -#: parse.y:4869 +#: parse.y:4625 #, fuzzy msgid "conditional binary operator expected" msgstr "%s: binêre operator is verwag\n" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4906 +#: parse.y:4662 #, fuzzy, c-format msgid "unexpected token `%c' in conditional command" msgstr "Soek die lêer vir 'n uitdrukking" -#: parse.y:4909 +#: parse.y:4665 #, fuzzy, c-format msgid "unexpected token `%s' in conditional command" msgstr "Soek die lêer vir 'n uitdrukking" -#: parse.y:4913 +#: parse.y:4669 #, fuzzy, c-format msgid "unexpected token %d in conditional command" msgstr "Soek die lêer vir 'n uitdrukking" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:6355 +#: parse.y:6137 #, fuzzy, c-format msgid "syntax error near `%s'" msgstr "Sintaks fout in patroon" -#: parse.y:6365 +#: parse.y:6151 #, fuzzy msgid "syntax error: unexpected end of file" msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "sintaksfout" -#: parse.y:6428 +#: parse.y:6216 #, fuzzy, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Gebruik Kaart na Los Tronk" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "" @@ -1596,456 +1606,456 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "" -#: redir.c:204 +#: redir.c:205 #, fuzzy, c-format msgid "%s: ambiguous redirect" msgstr "%s: dubbelsinnige herroetering" -#: redir.c:208 +#: redir.c:209 #, fuzzy, c-format msgid "%s: cannot overwrite existing file" msgstr "Jy het gespesifiseer 'n bestaande lêer" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:222 +#: redir.c:223 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 #, fuzzy msgid "redirection error: cannot duplicate fd" msgstr "Pypfout.\n" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "" -#: shell.c:948 +#: shell.c:972 #, fuzzy, c-format msgid "%c%c: invalid option" msgstr "%s: illegal option -- %c\n" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1632 +#: shell.c:1658 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: is 'n gids" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Ek het nie 'n naam nie!" -#: shell.c:2035 +#: shell.c:2061 #, fuzzy, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "bedryfstelselkernweergawe" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -#: shell.c:2038 +#: shell.c:2064 #, fuzzy msgid "GNU long options:\n" msgstr "Gnu C Saamsteller Opsies" -#: shell.c:2042 +#: shell.c:2068 #, fuzzy msgid "Shell options:\n" msgstr "opneem opsies" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:2062 +#: shell.c:2088 #, fuzzy, c-format msgid "\t-%s or -o option\n" msgstr "" "Gebruik so: %s LÊER \n" " of: %s OPSIE\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Foutiewe sein" -#: siglist.c:50 +#: siglist.c:51 #, fuzzy msgid "Hangup" msgstr "Ophang" -#: siglist.c:54 +#: siglist.c:55 #, fuzzy msgid "Interrupt" msgstr "Interrupt" -#: siglist.c:58 +#: siglist.c:59 #, fuzzy msgid "Quit" msgstr "Verlaat" -#: siglist.c:62 +#: siglist.c:63 #, fuzzy msgid "Illegal instruction" msgstr "Sigill (onwettige instruksie)" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "" -#: siglist.c:74 +#: siglist.c:75 #, fuzzy msgid "ABORT instruction" msgstr "Verwerking Instruksie" -#: siglist.c:78 +#: siglist.c:79 #, fuzzy msgid "EMT instruction" msgstr "Verwerking Instruksie" -#: siglist.c:82 +#: siglist.c:83 #, fuzzy msgid "Floating point exception" msgstr "wisselpuntgetaluitsondering" -#: siglist.c:86 +#: siglist.c:87 #, fuzzy msgid "Killed" msgstr "Doodgemaak proses." -#: siglist.c:90 +#: siglist.c:91 #, fuzzy msgid "Bus error" msgstr "Pypfout.\n" -#: siglist.c:94 +#: siglist.c:95 #, fuzzy msgid "Segmentation fault" msgstr "Sigsegv (segmentasie oortreding)" -#: siglist.c:98 +#: siglist.c:99 #, fuzzy msgid "Bad system call" msgstr "fork-stelselroep het gefaal" -#: siglist.c:102 +#: siglist.c:103 #, fuzzy msgid "Broken pipe" msgstr "Sigpipe (gebroke pyp)" -#: siglist.c:106 +#: siglist.c:107 #, fuzzy msgid "Alarm clock" msgstr "wêreld horlosie" -#: siglist.c:110 +#: siglist.c:111 #, fuzzy msgid "Terminated" msgstr "" "\n" "Bevel beëindig\n" -#: siglist.c:114 +#: siglist.c:115 #, fuzzy msgid "Urgent IO condition" msgstr "Ooreenstem enige kondisie" -#: siglist.c:118 +#: siglist.c:119 #, fuzzy msgid "Stopped (signal)" msgstr "Sein kwaliteit:" -#: siglist.c:126 +#: siglist.c:127 #, fuzzy msgid "Continue" msgstr "Gaan voort" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "" -#: siglist.c:138 +#: siglist.c:139 #, fuzzy msgid "Stopped (tty input)" msgstr "Sigttin (tty invoer)" -#: siglist.c:142 +#: siglist.c:143 #, fuzzy msgid "Stopped (tty output)" msgstr "Sigttou (tty uitset)" -#: siglist.c:146 +#: siglist.c:147 #, fuzzy msgid "I/O ready" msgstr "Gereed." -#: siglist.c:150 +#: siglist.c:151 #, fuzzy msgid "CPU limit" msgstr "Filter beperk:" -#: siglist.c:154 +#: siglist.c:155 #, fuzzy msgid "File limit" msgstr "Filter beperk:" -#: siglist.c:158 +#: siglist.c:159 #, fuzzy msgid "Alarm (virtual)" msgstr "virtuele werkskerms" -#: siglist.c:162 +#: siglist.c:163 #, fuzzy msgid "Alarm (profile)" msgstr "Vee profiel uit..." -#: siglist.c:166 +#: siglist.c:167 #, fuzzy msgid "Window changed" msgstr "Lêer Het verander" -#: siglist.c:170 +#: siglist.c:171 #, fuzzy msgid "Record lock" msgstr "Sluit Lêers" -#: siglist.c:174 +#: siglist.c:175 #, fuzzy msgid "User signal 1" msgstr "Gebruiker Sein 1" -#: siglist.c:178 +#: siglist.c:179 #, fuzzy msgid "User signal 2" msgstr "Gebruiker Sein 1" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "" -#: siglist.c:186 +#: siglist.c:187 #, fuzzy msgid "power failure imminent" msgstr "Vaaling na Uitpak" -#: siglist.c:190 +#: siglist.c:191 #, fuzzy msgid "system crash imminent" msgstr "Die Kde Omval Handteerder" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "" -#: siglist.c:198 +#: siglist.c:199 #, fuzzy msgid "programming error" msgstr "Pypfout.\n" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, fuzzy, c-format msgid "Unknown Signal #%d" msgstr "Sein kwaliteit:" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, fuzzy, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "--Geen reëls in buffer--" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 #, fuzzy msgid "cannot make pipe for process substitution" msgstr "Woord Substitusie" -#: subst.c:5985 +#: subst.c:6124 #, fuzzy msgid "cannot make child for process substitution" msgstr "Woord Substitusie" -#: subst.c:6059 +#: subst.c:6198 #, fuzzy, c-format msgid "cannot open named pipe %s for reading" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: subst.c:6061 +#: subst.c:6200 #, fuzzy, c-format msgid "cannot open named pipe %s for writing" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: subst.c:6084 +#: subst.c:6223 #, fuzzy, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: subst.c:6213 +#: subst.c:6370 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "--Geen reëls in buffer--" -#: subst.c:6353 +#: subst.c:6533 #, fuzzy msgid "cannot make pipe for command substitution" msgstr "Woord Substitusie" -#: subst.c:6397 +#: subst.c:6580 #, fuzzy msgid "cannot make child for command substitution" msgstr "Woord Substitusie" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "Veranderlike boom" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, fuzzy, c-format msgid "%s: substring expression < 0" msgstr "ongeldige uitdrukking" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, fuzzy, c-format msgid "%s: bad substitution" msgstr "Woord Substitusie" -#: subst.c:9390 +#: subst.c:9678 #, fuzzy, c-format msgid "$%s: cannot assign in this way" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:10367 +#: subst.c:10795 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "--Geen reëls in buffer--" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "" @@ -2070,22 +2080,22 @@ msgstr "')' is verwag\n" msgid "`)' expected, found %s" msgstr "')' is verwag, maar %s gevind\n" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, fuzzy, c-format msgid "%s: binary operator expected" msgstr "%s: binêre operator is verwag\n" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, fuzzy, c-format msgid "%s: unary operator expected" msgstr "%s: unitêre operator is verwag\n" -#: test.c:881 +#: test.c:896 #, fuzzy msgid "missing `]'" msgstr "Ontbrekende '>'" -#: test.c:899 +#: test.c:914 #, fuzzy, c-format msgid "syntax error: `%s' unexpected" msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." @@ -2095,99 +2105,104 @@ msgstr "Onverwagte einde van l msgid "invalid signal number" msgstr "Die sein nommer wat was gevang het" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "" #: version.c:47 version2.c:47 @@ -2282,12 +2297,16 @@ msgstr "Gebruik so: %s [OPSIE] [BEVEL [ARG]...]\n" #: builtins.c:78 #, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "E418: Ongeldige waarde: %s" #: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "E418: Ongeldige waarde: %s" #: builtins.c:82 @@ -2396,7 +2415,7 @@ msgstr "Terug Adres - 3/4 x 2\"" #: builtins.c:142 #, fuzzy -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "Gebruik so: %s [OPSIE]... [-] [GEBRUIKER [ARG]...]\n" #: builtins.c:144 @@ -2455,7 +2474,7 @@ msgstr "Tipe die naam van die %1 speler." #: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "Grootte beperk (Kb):" #: builtins.c:174 @@ -2500,12 +2519,13 @@ msgid "" msgstr "" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "Bediener of domein naam:" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -3316,7 +3336,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -3357,7 +3379,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3369,7 +3391,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3455,7 +3477,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3477,7 +3499,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3496,7 +3518,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3517,7 +3539,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -3528,7 +3550,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3542,7 +3564,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -3556,7 +3578,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3639,7 +3661,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3647,7 +3669,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -3659,7 +3681,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -3703,7 +3725,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -3733,7 +3755,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -3783,7 +3805,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -3801,7 +3823,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3833,7 +3855,7 @@ msgid "" " children." msgstr "" -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3848,7 +3870,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3861,7 +3883,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -3878,7 +3900,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3898,7 +3920,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3914,7 +3936,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3925,7 +3947,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3946,29 +3968,31 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3981,7 +4005,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -3995,7 +4019,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4006,7 +4030,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4020,7 +4044,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4031,7 +4055,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -4059,7 +4083,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4113,7 +4137,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -4144,7 +4168,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -4171,7 +4195,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -4200,7 +4224,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -4220,7 +4244,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4243,6 +4267,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -4259,7 +4285,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4290,7 +4316,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4303,7 +4329,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -4335,7 +4361,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4377,7 +4403,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/bash.pot b/po/bash.pot index fb895a274..767b0af94 100644 --- a/po/bash.pot +++ b/po/bash.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,57 +22,52 @@ msgstr "" msgid "bad array subscript" msgstr "" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "" @@ -92,7 +87,7 @@ msgstr "" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "" @@ -155,7 +150,7 @@ msgstr "" msgid "HOME not set" msgstr "" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "" @@ -182,7 +177,7 @@ msgstr "" msgid "%s: usage: " msgstr "" -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "" @@ -197,7 +192,7 @@ msgstr "" msgid "%s: not found" msgstr "" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "" @@ -207,7 +202,7 @@ msgstr "" msgid "%s: invalid option name" msgstr "" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "" @@ -220,7 +215,7 @@ msgstr "" msgid "invalid hex number" msgstr "" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "" @@ -234,88 +229,93 @@ msgstr "" msgid "`%s': not a pid or valid job spec" msgstr "" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "" @@ -325,108 +325,108 @@ msgstr "" msgid "%s: invalid action name" msgstr "" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "" -#: builtins/declare.def:363 builtins/declare.def:756 -#, c-format -msgid "%s: reference variable cannot be an array" +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:464 execute_cmd.c:6132 #, c-format -msgid "%s: nameref variable self references not allowed" +msgid "%s: readonly function" msgstr "" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format -msgid "%s: circular name reference" +msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:532 variables.c:3359 #, c-format -msgid "`%s': invalid variable name for name reference" -msgstr "" - -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" +msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:526 execute_cmd.c:5986 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format -msgid "%s: readonly function" +msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:824 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format -msgid "%s: quoted compound array assignment deprecated" +msgid "`%s': invalid variable name for name reference" msgstr "" -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "" @@ -441,7 +441,7 @@ msgstr "" msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "" @@ -535,12 +535,12 @@ msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -552,21 +552,21 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "" @@ -589,78 +589,78 @@ msgstr "" msgid "Unknown error" msgstr "" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -756,12 +756,12 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "" @@ -774,7 +774,7 @@ msgstr "" msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "" @@ -793,11 +793,11 @@ msgstr "" msgid "shift count" msgstr "" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "" @@ -864,16 +864,16 @@ msgstr "" msgid "`%c': bad command" msgstr "" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "" @@ -892,7 +892,7 @@ msgstr "" msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr "" @@ -912,96 +912,106 @@ msgstr "" msgid "INFORM: " msgstr "" -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "" + +#: error.c:488 msgid "unknown command error" msgstr "" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" @@ -1014,68 +1024,68 @@ msgstr "" msgid "recursion stack underflow" msgstr "" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "" @@ -1084,7 +1094,7 @@ msgstr "" msgid "getcwd: cannot access parent directories" msgstr "" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" @@ -1103,214 +1113,214 @@ msgstr "" msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "" -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "" @@ -1352,22 +1362,22 @@ msgstr "" msgid "network operations not supported" msgstr "" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" @@ -1385,138 +1395,138 @@ msgstr "" msgid "The mail in %s has been read\n" msgstr "" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "" @@ -1554,413 +1564,413 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "" @@ -1983,21 +1993,21 @@ msgstr "" msgid "`)' expected, found %s" msgstr "" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "" @@ -2006,99 +2016,104 @@ msgstr "" msgid "invalid signal number" msgstr "" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "" #: version.c:47 version2.c:47 @@ -2183,11 +2198,15 @@ msgid "command [-pVv] command [arg ...]" msgstr "" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "" #: builtins.c:82 @@ -2281,7 +2300,7 @@ msgid "return [n]" msgstr "" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "" #: builtins.c:144 @@ -2329,7 +2348,7 @@ msgid "type [-afptP] name [name ...]" msgstr "" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "" #: builtins.c:174 @@ -2371,11 +2390,11 @@ msgid "" msgstr "" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "" #: builtins.c:200 @@ -3179,7 +3198,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -3220,7 +3241,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3232,7 +3253,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3318,7 +3339,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3340,7 +3361,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3359,7 +3380,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3380,7 +3401,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -3391,7 +3412,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3405,7 +3426,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -3419,7 +3440,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3502,7 +3523,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3510,7 +3531,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -3522,7 +3543,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -3566,7 +3587,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -3596,7 +3617,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -3646,7 +3667,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -3664,7 +3685,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3696,7 +3717,7 @@ msgid "" " children." msgstr "" -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3711,7 +3732,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3724,7 +3745,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -3741,7 +3762,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3761,7 +3782,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3777,7 +3798,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3788,7 +3809,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3809,29 +3830,31 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3844,7 +3867,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -3858,7 +3881,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -3869,7 +3892,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -3883,7 +3906,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3894,7 +3917,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -3922,7 +3945,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3976,7 +3999,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -4007,7 +4030,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -4034,7 +4057,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -4063,7 +4086,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -4083,7 +4106,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4106,6 +4129,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -4122,7 +4147,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4153,7 +4178,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4166,7 +4191,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -4198,7 +4223,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4240,7 +4265,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/bg.gmo b/po/bg.gmo index b8337414c..8638773e1 100644 Binary files a/po/bg.gmo and b/po/bg.gmo differ diff --git a/po/bg.po b/po/bg.po index 9e876f491..68331a587 100644 --- a/po/bg.po +++ b/po/bg.po @@ -1,14 +1,14 @@ # Bulgarian translation of bash po-file. -# Copyright (C) 2007, 2010, 2012, 2013, 2014, 2015, 2016, 2018, 2020 Free Software Foundation, Inc. +# Copyright (C) 2007, 2010, 2012, 2013, 2014, 2015, 2016, 2018, 2020, 2022 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Alexander Shopov , 2007, 2010, 2012, 2013, 2014, 2015, 2016, 2018, 2020. +# Alexander Shopov , 2007, 2010, 2012, 2013, 2014, 2015, 2016, 2018, 2020, 2022. # msgid "" msgstr "" -"Project-Id-Version: bash-5.1\n" +"Project-Id-Version: bash-5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2020-12-12 16:27+0100\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-06-18 14:33+0200\n" "Last-Translator: Alexander Shopov \n" "Language-Team: Bulgarian \n" "Language: bg\n" @@ -22,59 +22,54 @@ msgstr "" msgid "bad array subscript" msgstr "грешен индекс на масив" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: изтриване на атрибута за указател от променливата" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: масивът не може да бъде преобразуван към речник" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: грешно име на ключ в речник" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: не може да се присвоява на нецифров индекс" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: при присвояване към речник трябва да се използва индекс" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не може да се създаде: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "изпълнение на команда на Юникс от bash: не може да се открие подредбата на\n" "функциите на клавишите за командата" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: първият непразен знак не е „\"“" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "в %2$s липсва затварящ знак „%1$c“" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: разделителят „:“ липсва" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "„%s“: неуспешно премахне на присвояване в подредбата на функциите на клавишите" @@ -94,7 +89,7 @@ msgstr "заместване на изразите с фигурни скоби: msgid "brace expansion: failed to allocate memory for `%s'" msgstr "заместване на изразите с фигурни скоби: неуспешно заделяне на памет за „%s“" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: грешно име на синоним" @@ -165,7 +160,7 @@ msgstr "" msgid "HOME not set" msgstr "Променливата „HOME“ не е зададена" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "прекалено много аргументи" @@ -192,7 +187,7 @@ msgstr "предупреждение: " msgid "%s: usage: " msgstr "%s: употреба: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: опцията изисква аргумент" @@ -207,7 +202,7 @@ msgstr "%s: изисква се числов аргумент" msgid "%s: not found" msgstr "%s: не е открит" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: грешна опция" @@ -217,7 +212,7 @@ msgstr "%s: грешна опция" msgid "%s: invalid option name" msgstr "%s: грешно име на опция" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: грешен идентификатор" @@ -230,7 +225,7 @@ msgstr "грешно осмично число" msgid "invalid hex number" msgstr "грешно шестнайсетично число" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "грешно число" @@ -244,88 +239,93 @@ msgstr "%s: грешно указване на сигнал" msgid "`%s': not a pid or valid job spec" msgstr "„%s“: грешен идентификатор на процес или задача" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: променлива с права само за четене" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s: не може да се присвои" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s е извън допустимия диапазон" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "аргументът" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s е извън допустимия диапазон" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: няма такава задача" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: няма управление на задачите" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "няма управление на задачите" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: ограничена обвивка" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "ограничена обвивка" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: не е команда вградена в обвивката" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "грешка при запис: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "грешка при задаване на атрибутите на терминала: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "грешка при получаване на атрибутите на терминала: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: грешка при получаване на текущата директория: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: нееднозначно указана задача" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "помощта не е включена в тази версия" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не може да се премахне: %s е само за четене" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: не може да се премахне" @@ -335,108 +335,108 @@ msgstr "%s: не може да се премахне" msgid "%s: invalid action name" msgstr "%s: грешно име на действие" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: не е указано дописване" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "предупреждение: опцията „-F“ може да не работи според очакванията ви" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "предупреждение: опцията „-C“ може да не работи според очакванията ви" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "в момента не се изпълнява функция за дописване" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "може да се използва само във функция" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "„-f“ не може да се използва за създаването на функции" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: функция с права само за четене" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: променливата-указател не може да е масив" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: променливата-указател не може да сочи към себе си" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: цикъл в променливите-указатели" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "„%s“: неправилно име за променлива-указател" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "„-f“ не може да се използва за създаването на функции" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: функция с права само за четене" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: съставното присвояване на масив чрез цитат е остаряло" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: променливите за масиви не могат да се унищожават така" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: речник не може да се преобразува в масив" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: съставното присвояване на масив чрез цитат е остаряло" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "липсва възможност за динамично зареждане" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "споделеният обект „%s“ не може да бъде зареден: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "„%s“ не може да се открие в споделения обект %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: вградената команда вече е динамично заредена" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "зареждащата функция за „%s“ върна грешка (%d): не е зареден" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: не е зареден динамично" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: не може да се изтрие: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: е директория" @@ -451,7 +451,7 @@ msgstr "%s: не е обикновен файл" msgid "%s: file is too large" msgstr "%s: файлът е прекалено голям" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: двоичният файл не може да бъде изпълнен" @@ -548,12 +548,12 @@ msgstr "" "няма теми в помощта, които да отговарят на „%s“. Опитайте с\n" "„help help“, „man -k %s“ или „info %s“." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не може да се отвори: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -573,21 +573,21 @@ msgstr "" "Знакът звездичка „*“ до името на команда означава, че тя е изключена.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "не може да се ползва едновременно повече от една от опциите „-anrw“" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "позиция в историята" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: грешна дата с време" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: неуспешно заместване чрез историята" @@ -610,78 +610,78 @@ msgstr "%s: аргументите трябва да са идентификат msgid "Unknown error" msgstr "Неизвестна грешка" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "очаква се израз" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: не е масив" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: грешно указване на файловия дескриптор" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: грешен файлов дескриптор: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: грешен номер на ред" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: грешен начален индекс за масив" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: грешно количество редове за обработка" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "празно име на променлива за масив" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "изисква се поддръжка на променливи за масиви" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "„%s“: липсва форматиращ знак" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: грешен формат на времето" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: грешен форматиращ знак" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "предупреждение: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "неуспешен анализ на форма̀та: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "липсва шестнадесетична цифра за \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "липсва цифра за Уникод за \\%c" @@ -831,12 +831,12 @@ msgstr "" " \n" " Можете да изведете стека на директорията с командата „dirs“." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: грешно указване на изтичането на времето" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "грешка при четене: %d: %s" @@ -849,7 +849,7 @@ msgstr "„return“ е възможен само от функция или и msgid "cannot simultaneously unset a function and a variable" msgstr "не може едновременно да се премахват задаванията на функция и променлива" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: не е променлива за масив" @@ -868,11 +868,11 @@ msgstr "%s: не може да се изнесе" msgid "shift count" msgstr "брой на преместванията" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "не може едновременно да се задават и да се премахват опции на обвивката" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: грешно име на опция на обвивката" @@ -939,16 +939,16 @@ msgstr "%s: грешен аргумент за ограничение" msgid "`%c': bad command" msgstr "„%c“: грешна команда" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ограничението не може да бъде получено: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "ограничение" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ограничението не може да бъде променено: %s" @@ -967,7 +967,7 @@ msgstr "„%c“: неправилен оператор за описателе msgid "`%c': invalid symbolic mode character" msgstr "„%c“: неправилен знак за описателен режим" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " ред " @@ -987,96 +987,106 @@ msgstr "Преустановяване…" msgid "INFORM: " msgstr "ИНФОРМАЦИЯ: " -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "ПРЕДУПРЕЖДЕНИЕ: " + +#: error.c:488 msgid "unknown command error" msgstr "неизвестна грешка в команда" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "грешен вид команда" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "грешна връзка" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "грешен преход" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: променлива без стойност" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aвремето за изчакване на вход изтече: следва автоматично излизане от системата\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "стандартният вход не може да бъде пренасочен от „/dev/null“: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "в променливата $TIMEFORMAT: „%c“: грешен форматиращ знак" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: копроцесът [%d:%s] все още съществува" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "грешка в програмен канал" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: превишено е максималното ниво на влагане на „eval“ (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: превишено е максималното ниво на влагане на код (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: превишено е максималното ниво на влагане на функции (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ограничение: в имената на командите не може да присъства знакът „/“" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: командата не е открита" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: не може да се изпълни — липсва необходим файл " + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: лош интерпретатор" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: двоичният файл не може да бъде изпълнен: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "„%s“ е вградена команда в обвивката" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "файловият дескриптор %d не може да се дублира като дескриптор %d" @@ -1089,68 +1099,68 @@ msgstr "максималният брой нива за рекурсия в из msgid "recursion stack underflow" msgstr "отрицателно препълване на стека за рекурсии" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "синтактична грешка в израз" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "опит за присвояване на стойност на нещо, което не е променлива" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "синтактична грешка при присвояване на променлива" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "деление на 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "програмна грешка: неправилна лексема за присвояване на израз" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "за условен израз се изисква „:“" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "степента е по-малка от 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "очаква се идентификатор след предварително увеличаване или намаляване" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "липсва „)“" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "синтактична грешка: очаква се оператор" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "синтактична грешка: грешен аритметичен оператор" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (грешната лексема е „%s“)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "грешна аритметична основа на бройна система" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "неправилна целочислена константа" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "стойността е прекалено голяма за основата" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: грешка в израза\n" @@ -1159,7 +1169,7 @@ msgstr "%s: грешка в израза\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: няма достъп до родителските директории" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "неуспешно изчистване на режима без забавяне на файловия дескриптор %d" @@ -1180,169 +1190,169 @@ msgstr "" "стартиране на програмен канал: не може да се комуникира с водача на канала\n" "(pgrp pipe)" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: ЦИКЪЛ: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: ЦИКЪЛ: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "стартираният процес %d е в изпълняваната задача %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "изтриване на спряната задача %d в групата процеси %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "добавяне на процес: процесът %5ld (%s) е отбелязан като още жив" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "описателен идентификатор на процес: %ld: няма такъв идентификатор на процес" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Завършен" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Спрян" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Спрян (%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Изпълняван" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Завършен (%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Изход %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Непознато състояние" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(паметта е разтоварена)" -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "дъщерният процес смени групата при изпълнение (от %ld на %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "изчакване: процесът с идентификатор %ld не е дъщерен на тази обвивка" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "изчакване: липсват данни за процес с идентификатор %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "изчакване на задача: задачата %d е спряна" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: няма текуща задача" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: задачата е приключила" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: задача %d вече е във фонов режим" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" "изчакване на дъщерен процес: включване на незабавното излизане от функцията\n" "чрез WNOHANG, за да се избегне недефиниран блок" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: ред %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (паметта е разтоварена)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(работната директория е: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "инициализация на контрола на задачите: неуспешно изпълнение на getpgrp" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "инициализация на контрола на задачите: няма управление на задачите във фонов режим" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "инициализация на контрола на задачите: дисциплина на линията" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "инициализация на контрола на задачите: задаване на група при изпълнение (setpgid)" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "групата на процесите на терминала не може да бъде зададена (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "в тази обвивка няма управление на задачите" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "заделяне на памет: грешно предположение: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1351,53 +1361,53 @@ msgstr "" "\r\n" "заделяне на памет: %s:%d: предположението е отпечатано\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "непознат" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "заделяне на памет: блок в списъка със свободни блокове е зает или неподходящ" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "изчистване на памет: извикано е с блоков аргумент, който вече е изчистен" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "изчистване на памет: извикано е с незаделен блоков аргумент" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" "изчистване на памет: открито е отрицателно препълване с mh_nbytes извън\n" "допустимия диапазон" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "" "изчистване на памет: открито е отрицателно препълване, неправилна стойност\n" "за magic8" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "изчистване на памет: късовете на началната и крайната области се различават" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "презаделяне: извикано е с аргумент с незаделен блок" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "презаделяне: открито е отрицателно препълване с mh_nbytes извън допустимия\n" "диапазон" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "презаделяне: открито е отрицателно препълване, неправилна стойност за magic8" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "презаделяне: късовете на началната и крайната области се различават" @@ -1439,22 +1449,22 @@ msgstr "%s: неправилно указан мрежов път" msgid "network operations not supported" msgstr "не се поддържат мрежови операции" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: локалът не може да бъде сменен (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: локалът не може да бъде сменен (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: локалът не може да бъде сменен (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: локалът не може да бъде сменен (%s): %s" @@ -1472,136 +1482,136 @@ msgstr "Имате нова поща в $_" msgid "The mail in %s has been read\n" msgstr "Пощата в %s вече е прочетена\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "синтактична грешка: изисква се аритметичен израз" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "синтактична грешка: неочакван знак „;“" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "синтактична грешка: „((%s))“" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "вътрешен документ с „<<“: неправилен вид инструкция %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "вътрешният документ на ред %d е отделен със знак за нов ред (а трябва да е „%s“)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "пренасочване: инструкцията за пренасочване „%d“ е извън допустимия диапазон" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" msgstr "shell_getc: shell_input_line_size (%zu) надвишава SIZE_MAX (%lu): редът е отрязан" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "превишен е максималният брой възможни вътрешни документи" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "неочакван знак за край на файл „EOF“, а се очакваше съответстващ знак „%c“" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "неочакван знак за край на файл „EOF“, а се очакваше „]]“" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "синтактична грешка в условен израз: неочаквана лексема „%s“" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "синтактична грешка в условен израз" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неочаквана лексема „%s“, а се очакваше знакът „)“" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "очакваше се „)“" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неочакван аргумент „%s“ за унарен условен оператор" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "неочакван аргумент за унарен условен оператор" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неочаквана лексема „%s“, очакваше се бинарен условен оператор" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "очакваше се бинарен условен оператор" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неочакван аргумент „%s“ за бинарен условен оператор" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "неочакван аргумент за бинарен условен оператор" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неочаквана лексема „%c“ в условна команда" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неочаквана лексема „%s“ в условна команда" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "неочаквана лексема %d в условна команда" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "синтактична грешка в близост до неочакваната лексема „%s“" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "синтактична грешка в близост до „%s“" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "синтактична грешка: неочакван край на файл" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "синтактична грешка" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Използвайте „%s“, за да излезете от обвивката.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "неочакван знак за край на файл „EOF“, очакваше се знакът „)“" @@ -1639,98 +1649,98 @@ msgstr "xtrace_set: указател към файл – NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "отпечатване: „%c“: неправилен форматиращ знак" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "файловият дескриптор е извън допустимия диапазон" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: двусмислено пренасочване" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: не може да се презапише съществуващ файл" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: поради ограничение изходът не може да се пренасочи" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не може да се създаде временен файл за вътрешен документ: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: на променлива не може да се присвои файлов дескриптор" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "„/dev/(tcp|udp)/host/port“ не се поддържат, ако няма поддръжка на мрежа" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "грешка при пренасочване: файловият дескриптор не може да бъде дублиран" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "не е открита директорията „/tmp“. Създайте я!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "„/tmp“ трябва да е директория" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "режимът за красив изход се игнорира при интерактивна работа" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: неправилна опция" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" "идентификаторът на потребител на процеса не може да се зададе да е %d,\n" "ефективният идентификатор на потребител на процеса е %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" "идентификаторът на група на процеса не може да се зададе да е %d,\n" "ефективният идентификатор на група на процеса е %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "режимът на изчистване на грешки е недостъпен, защото е изключен" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: е директория" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Не може да се получи името на текущия потребител!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, версия %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1739,321 +1749,321 @@ msgstr "" "Употреба: %s [дълга опция на GNU] [опция]…\n" " %s [дълга опция на GNU] [опция] файл-скрипт…\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Дълги опции на GNU:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Опции на обвивката:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr " -ilrsD или -c команда, или -O къса_опция (само при стартиране)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr " -%s или -o опция\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "За повече информация за опциите на обвивката въведете „%s -c \"help set\"“.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "За повече информация за вградените в обвивката команди въведете „%s -c help“.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "За да докладвате грешки, използвайте командата „bashbug“.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "Интернет страница на bash: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "Обща помощ за програмите на GNU: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "маска за обработката на сигнали: %d: грешна операция" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Фалшив сигнал" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Прекъсване на връзката" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Прекъсване" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Спиране" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Неправилна инструкция" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "Капан за авариен изход чрез BPT" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Инструкция за прекратяване" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Капан с EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Изключение от плаваща запетая" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Убит" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Грешка в шината" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Грешка в разделянето" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Грешно системно извикване" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Прекъснат програмен канал" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Аларма" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Прекратен" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Спешно вх./изх. състояние" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Спрян (сигнал)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Продължаване" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Смърт или спиране на дъщерен процес" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Спиране (вход от tty)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Спиране (изход към tty)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "Готовност за вх./изх." -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Ограничение на процесора" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Ограничение на файловете" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Аларма (виртуална)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Аларма (по профил)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Преоразмерен прозорец" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Заключен запис" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Потребителски сигнал 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Потребителски сигнал 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "Идват данни по конзола HFT" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "Предстои спиране на захранването" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "Предстои забиване на системата" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "Преместване на процеса на друг процесор" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "Програмна грешка" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "Дадено право за управление чрез конзола HFT" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "Отнето право за управление чрез конзола HFT" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "Завършена звукова поредица през HFT" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Заявка за информация" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Непознат сигнал #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "лошо заместване: липсва затварящ знак „%s“ в %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: на член от масив не може да се присвои списък" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "не може да се създаде програмен канал за заместване на процеси" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "не може да се създаде дъщерен процес за заместване на процеси" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "именуваният програмен канал %s не може да се отвори за четене" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "именуваният програмен канал %s не може да се отвори за запис" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" "именуваният програмен канал %s не може да се\n" "дублира като файловия дескриптор %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "заместване на команди: знакът „null“ във входа е прескочен" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "не може да се създаде програмен канал за заместване на команди" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "не може да се създаде дъщерен процес за заместване на команди" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "заместване на команди: каналът не може да се дублира като fd 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: неправилно име за променлива-указател" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: грешно непряко заместване" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "„%s“: грешно име на променлива" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: аргументът не е зададен" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: аргументът е „null“ или не е зададен" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: изразът от подниза е < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: лошо заместване" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: не може да се задава по този начин" -#: subst.c:9814 +#: subst.c:10111 msgid "future versions of the shell will force evaluation as an arithmetic substitution" msgstr "" "бъдещите версии на обвивката ще използват изчисляване като аритметично\n" "заместване" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "лошо заместване: липсва затварящ знак „`“ в %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "няма съвпадение: %s" @@ -2076,21 +2086,21 @@ msgstr "очаква се „)“" msgid "`)' expected, found %s" msgstr "очаква се „)“, а е получено %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: очаква се бинарен оператор" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: очаква се унарен оператор" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "липсва „]“" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "синтактична грешка: неочакван знак/ци „%s“" @@ -2099,113 +2109,118 @@ msgstr "синтактична грешка: неочакван знак/ци msgid "invalid signal number" msgstr "неправилен номер на сигнал" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "eval: превишено е максималното ниво на влагане на „eval“ (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" "стартиране на предстоящите прихващания: неправилна стойност в\n" "trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "стартиране на предстоящите прихващания: обработката на сигнали е SIG_DFL.\n" "%d (%s) е преизпратен на текущата обвивка" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "обработка на прихващания: неправилен сигнал %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "грешка при внасянето на дефиницията на функция за „%s“" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "нивото на обвивката (%d) е прекалено голямо. Задава се да е 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "" "създаване на локална променлива: липсва контекст на функция в текущата област\n" "на видимост" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: на тази променлива не може да се присвои стойност" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s: не може да се наследи стойност от несъвместим вид" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: присвояване на число на променлива-указател" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "" "всички локални променливи: липсва контекст на функция в текущата област на\n" "видимост" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s: аргументът за низа за изнасяне не трябва да е „null“" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "неправилен знак на позиция %d в низа за изнасяне за %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "липсва „=“ в низа за изнасяне за %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "изваждане на контекст на променливи: в началото на структурата за променливи на\n" "обвивката (shell_variables) е нещо, което не е контекст на функция" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "" "изваждане на контекст на променливи: липсва контекст за глобални променливи\n" "(global_variables)" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "изваждане на област: в началото на структурата за променливи на обвивката\n" "(shell_variables) е нещо, което не е временна област в обкръжението" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s не може да се отвори като ФАЙЛ" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: грешен файлов дескриптор за файла за трасиране" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: е извън допустимия диапазон" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Авторски права © 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Авторски права © 2022 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "License GPLv3+: GNU GPL version 3 or later \n" @@ -2289,12 +2304,12 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] команда [АРГУМЕНТ…]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgiIlnrtux] [-p] [ИМЕ[=СТОЙНОСТ]…]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgiIlnrtux] [ИМЕ[=СТОЙНОСТ]…] или declare -p [-aAfFilnrtux] [ИМЕ…]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgiIlnrtux] [-p] ИМЕ[=СТОЙНОСТ]…" +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgiIlnrtux] ИМЕ[=СТОЙНОСТ]… или typeset -p [-aAfFilnrtux] [ИМЕ…]" #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2390,8 +2405,8 @@ msgid "return [n]" msgstr "return [ЦИФРОВ_КОД]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [-abefhkmnptuvxBCHP] [-o ОПЦИЯ] [--] [АРГУМЕНТИ…]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o ОПЦИЯ] [--] [АРГУМЕНТ…]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" @@ -2438,8 +2453,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] ИМЕ [ИМЕ…]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ОГРАНИЧЕНИЕ]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [ОГРАНИЧЕНИЕ]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" @@ -2478,12 +2493,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C msgstr "if КОМАНДИ; then КОМАНДИ; [ elif КОМАНДИ; then КОМАНДИ; ]… [ else КОМАНДИ; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while КОМАНДИ; do КОМАНДИ; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while КОМАНДИ; do КОМАНДИ_2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until КОМАНДИ; do КОМАНДИ; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until КОМАНДИ; do КОМАНДИ_2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -3833,7 +3848,8 @@ msgid "" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" @@ -3875,8 +3891,9 @@ msgstr "" " „-u“, се прочита един ред. Редът се разделя на полета — думи. Първата дума\n" " се присвоява на първото ИМЕ, втората дума на второто ИМЕ и т.н., а на\n" " последното ИМЕ се присвояват оставащите думи. Като разделители на думи се\n" -" използват само знаците указани в променливата „IFS“.\n" -" \n" +" използват само знаците указани в променливата „IFS“. Стандартно знакът „\\“\n" +" екранира разделителите и новите редове.\n" +"\n" " Ако не са дадени ИМЕна, прочетеният ред се запазва в променливата „REPLY“.\n" " \n" " Опции:\n" @@ -3915,7 +3932,7 @@ msgstr "" " грешка при задаване на стойност на променлива или е зададен неправилен\n" " файлов дескриптор като аргумент на -u." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3936,7 +3953,7 @@ msgstr "" " Връща ЦИФРОВия_КОД или грешка, ако обвивката в момента не изпълнява функция\n" " или скрипт." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4102,7 +4119,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако не е зададена неправилна опция." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4142,7 +4159,7 @@ msgstr "" " 0, освен ако е зададена неправилна опция или някое от ИМЕната е само за\n" " четене." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4176,7 +4193,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако е зададена неправилна опция или някое от ИМЕната е неправилно." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4214,7 +4231,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако е зададена неправилна опция или някое от ИМЕната е неправилно." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4233,7 +4250,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако БРОят е отрицателно или по-голямо от стойността „$#“." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4257,7 +4274,7 @@ msgstr "" " Връща състоянието на последно изпълнената команда във ФАЙЛа. Ако той не\n" " може да бъде открит, изходът е грешка." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4282,7 +4299,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако не възникне грешка или управлението на задачи е изключено." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4439,7 +4456,7 @@ msgstr "" " 0, ако ИЗРАЗът е верен. Грешка, когато ИЗРАЗът е неверен или е даден\n" " неправилен аргумент." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4452,7 +4469,7 @@ msgstr "" " задължително да е знакът „]“, който да съответства на отварящата квадратна\n" " скоба „[“." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4470,7 +4487,7 @@ msgstr "" " Изходен код:\n" " Винаги 0." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4539,7 +4556,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако е зададен неправилен сигнал или опция." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4593,7 +4610,7 @@ msgstr "" " Изходен код:\n" " 0, ако всички подадени ИМЕна са открити, неуспех, ако някое от тях липсва." -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4690,7 +4707,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако не възникни грешка или е дадена неправилна опция." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4723,7 +4740,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако МАСКАта или някоя от зададените опции са неправилни." -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4777,7 +4794,7 @@ msgstr "" " връща и при задаването на опцията „-n“, а обвивката няма дъщерни процеси,\n" " които не се чакат." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4800,7 +4817,7 @@ msgstr "" " Изходния код на процеса с последния идентификатор. Грешка, ако е даден\n" " неправилен идентификатор или е дадена неправилна опция." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4822,7 +4839,7 @@ msgstr "" " Изходен код:\n" " Връща изходния код на последно изпълнената команда." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4851,7 +4868,7 @@ msgstr "" " Изходен код:\n" " Връща изходния код на последно изпълнената команда." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4887,7 +4904,7 @@ msgstr "" " Изходен код:\n" " Връща изходния код на последно изпълнената команда." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4917,7 +4934,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този на ПРОГРАМНия_КАНАЛ." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4935,7 +4952,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този на последно изпълнената команда." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4965,43 +4982,43 @@ msgstr "" " Изходен код:\n" " Изходният код е този на последно изпълнената команда." -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Изпълнение на команда докато определен тест е успешен.\n" " \n" -" Заместване и изпълнение на КОМАНДИте докато последната команда в блока\n" -" „while“ е с изходен код, който е 0.\n" +" Заместване и изпълнение на КОМАНДИ_2 докато последната команда в блока\n" +" КОМАНДИ е с изходен код, който е 0.\n" " \n" " Изходен код:\n" " Изходният код е този на последно изпълнената команда." -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Изпълнение на команда докато определен тест е неуспешен.\n" " \n" -" Заместване и изпълнение на КОМАНДИте докато последната команда в блока\n" -" „until“ е с изходен код, който не е 0.\n" +" Заместване и изпълнение на КОМАНДИ_2 докато последната команда в блока\n" +" КОМАНДИ е с изходен код, който не е 0.\n" " \n" " Изходен код:\n" " Изходният код е този на последно изпълнената команда." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5023,7 +5040,7 @@ msgstr "" " Изходен код:\n" " Изходният код е 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -5045,7 +5062,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако ИМЕто не е само за четене." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5063,7 +5080,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този на последно изпълнената команда." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5087,7 +5104,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този възобновената задача." -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5105,7 +5122,7 @@ msgstr "" " Изходен код:\n" " 1, ако резултатът на ИЗРАЗа е 0. В противен случай — 0." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5155,7 +5172,7 @@ msgstr "" " Изходен код:\n" " 0 или едно според стойността на ИЗРАЗа." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5260,7 +5277,7 @@ msgstr "" " HISTIGNORE Списък с шаблони, разделени с двоеточие, които указват кои\n" " команди да не се запазват в историята\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5318,7 +5335,7 @@ msgstr "" " 0, освен ако е подаден неправилен аргумент или не може да се премине към\n" " съответната директория." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5369,7 +5386,7 @@ msgstr "" " 0, освен ако е подаден неправилен аргумент или не може да се премине към\n" " съответната директория." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5419,7 +5436,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако е дадена неправилна опция или възникне грешка." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5455,7 +5472,7 @@ msgstr "" " 0, ако ОПЦИЯта е включена, грешка, ако е зададена неправилна или изключена\n" " ОПЦИЯ." -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5474,6 +5491,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" @@ -5505,6 +5524,8 @@ msgstr "" " черти в съответния аргумент\n" " %q предизвиква цитирането на аргумента, така че да може да бъде\n" " използван като вход за обвивката\n" +" %Q подобно на „%q“, но се прилага някаква точност към нецитирания\n" +" аргумент преди цитирането му\n" " %(fmt) отпечатване на низа при третиране на аргумента като дата и време\n" " според strftime(3)\n" " \n" @@ -5516,7 +5537,7 @@ msgstr "" " 0, освен ако не е дадена неправилна опция или възникне грешка при\n" " извеждането на резултата или при присвояването на стойността." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5567,7 +5588,7 @@ msgstr "" " Изходен код:\n" " 0, освен когато е дадена неправилна опция или възникне грешка." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5587,7 +5608,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако е дадена неправилна опция или възникне грешка." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5642,7 +5663,7 @@ msgstr "" " 0, освен когато е дадена неправилна опция или липсват инструкции към ИМЕто\n" " за автоматично дописване." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5712,7 +5733,7 @@ msgstr "" " Връща 0, освен ако е дадена неправилна опция или ако МАСИВът е променлива\n" " само за четене или не е индексиран масив." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/ca.gmo b/po/ca.gmo index 0b94a7a0c..c144d0ed7 100644 Binary files a/po/ca.gmo and b/po/ca.gmo differ diff --git a/po/ca.po b/po/ca.po index f1cadd2b4..eb9791a01 100644 --- a/po/ca.po +++ b/po/ca.po @@ -1,15 +1,15 @@ # Catalan messages for GNU bash. -# Copyright (C) 2002, 2003, 2010, 2014, 2015, 2017 Free Software Foundation, Inc. +# Copyright (C) 2022 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Montxo Vicente i Sempere , 2003 (traducció), 2010 (revisions). # Jordi Mas i Hernàndez , 2004 (correccions). -# Ernest Adrogué Calveras , 2014, 2015, 2017. +# Ernest Adrogué i Calveras , 2014-2022. msgid "" msgstr "" -"Project-Id-Version: bash-4.4\n" +"Project-Id-Version: bash-5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2017-01-10 20:11+0100\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-07-06 20:08+0200\n" "Last-Translator: Ernest Adrogué Calveras \n" "Language-Team: Catalan \n" "Language: ca\n" @@ -23,61 +23,55 @@ msgstr "" msgid "bad array subscript" msgstr "subíndex erroni" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: s'elimina l'atribut «nameref»" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: no és possible convertir un vector indexat en associatiu" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: clau de vector associatiu no vàlida" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: no es pot assignar a un índex no-numèric" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: l'assignació en vectors associatius requereix un subíndex" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: no es pot crear: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "" -"bash_execute_unix_command: no s'ha trobat el mapa de tecles per a l'ordre" +msgstr "bash_execute_unix_command: no s'ha trobat el mapa de tecles per a l'ordre" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: el primer caràcter no-blanc no és «\"»" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "falta un caràcter de tancament «%c» a %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: falta un caràcter «:» de separació" -#: bashline.c:4555 -#, fuzzy, c-format +#: bashline.c:4733 +#, c-format msgid "`%s': cannot unbind in command keymap" -msgstr "«%s»: no es pot desvincular" +msgstr "«%s»: no es pot desvincular en el mapa de tecles de l'ordre" #: braces.c:327 #, c-format @@ -85,16 +79,16 @@ msgid "brace expansion: cannot allocate memory for %s" msgstr "expansió de claus: no es pot assignar memòria per a %s" #: braces.c:406 -#, fuzzy, c-format +#, c-format msgid "brace expansion: failed to allocate memory for %u elements" -msgstr "expansió de claus: ha fallat l'assignació de memòria per a %d elements" +msgstr "expansió de claus: ha fallat l'assignació de memòria per a %u elements" #: braces.c:451 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "expansió de claus: ha fallat l'assignació de memòria per a «%s»" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "«%s»: el nom de l'àlies no és valid" @@ -143,7 +137,6 @@ msgstr "només té sentit en una iteració de tipus «for», «while» o «until # help caller #: builtins/caller.def:136 -#, fuzzy msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -161,17 +154,13 @@ msgstr "" " per a proporcionar un traçat de la pila.\n" "\n" " El valor de EXPR indica quants «frames» retrocedir des de l'actual; el\n" -" «frame» superior és el 0.\n" -"\n" -" Estat de sortida:\n" -" Retorna 0 excepte si l'intèrpret no està executant una funció o si EXPR\n" -" no és una expressió vàlida." +" «frame» superior és el 0." #: builtins/cd.def:327 msgid "HOME not set" msgstr "la variable HOME no està definida" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "sobren arguments" @@ -198,7 +187,7 @@ msgstr "atenció: " msgid "%s: usage: " msgstr "%s: sintaxi: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: l'opció requereix un argument" @@ -213,7 +202,7 @@ msgstr "%s: falta un argument numèric" msgid "%s: not found" msgstr "%s: no s'ha trobat" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: l'opció no és vàlida" @@ -223,7 +212,7 @@ msgstr "%s: l'opció no és vàlida" msgid "%s: invalid option name" msgstr "%s: el nom de l'opció no és vàlid" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "«%s»: no és un identificador vàlid" @@ -236,7 +225,7 @@ msgstr "nombre octal no vàlid" msgid "invalid hex number" msgstr "nombre hexadecimal no vàlid" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "nombre no vàlid" @@ -250,90 +239,95 @@ msgstr "%s: especificació de senyal no vàlida" msgid "`%s': not a pid or valid job spec" msgstr "«%s»: pid o especificació de feina no vàlids" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: variable de només lectura" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s: no es pot assignar" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fora del domini" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s fora del domini" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: no existeix tal feina" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: no hi ha control de feines" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "no hi ha control de feines" # cd .. en un intèrpret restringit -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: restringit" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "restringit" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: no és una ordre interna de l'intèrpret" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "error d'escriptura: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "error en establir els atributs del terminal: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "error en obtenir els atributs del terminal: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error en obtenir el directori actual: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: l'especificació de feina és ambigua" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "aquesta versió no té ajuda disponible" # unset UID -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: no es pot suprimir: %s de només lectura" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: no es pot suprimir" @@ -343,109 +337,109 @@ msgstr "%s: no es pot suprimir" msgid "%s: invalid action name" msgstr "%s: nom d'acció no vàlid" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: no hi ha especificació de compleció" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "atenció: l'opció -F pot no funcionar com us espereu" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "atenció: l'opció -C pot no funcionar com us espereu" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "no s'està executant una funció de compleció" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "només es pot utilitzar en una funció" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "no és possible usar «-f» per convertir en funció" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funció de només lectura" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: una variable referència no pot ser un vector" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: no es permeten autoreferències en variables referència" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: referència circular" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "«%s»: la variable referència conté un nom de variable no vàlid" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "no és possible usar «-f» per convertir en funció" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: funció de només lectura" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "" -"%s: es desaconsella l'assignació múltiple en vectors utilitzant cometes" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: no és possible destruir variables vector d'aquesta manera" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: no és possible convertir un vector associatiu en indexat" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: es desaconsella l'assignació múltiple en vectors utilitzant cometes" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "no es poden carregar biblioteques dinàmicament" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "no es pot obrir l'objecte compartit %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "no s'ha trobat %s a l'objecte compartit %s: %s" -#: builtins/enable.def:388 -#, fuzzy, c-format +# help enable +#: builtins/enable.def:422 +#, c-format msgid "%s: dynamic builtin already loaded" -msgstr "%s: no s'ha carregat dinàmicament" +msgstr "%s: ordre interna dinàmica ja carregada" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "l'intent de carregar %s ha fallat (%d): no carregat" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: no s'ha carregat dinàmicament" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: no es pot eliminar: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: és un directori" @@ -460,7 +454,7 @@ msgstr "%s: no és un fitxer ordinari" msgid "%s: file is too large" msgstr "%s: el fitxer és massa gran" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: no es poden executar fitxers binaris" @@ -549,20 +543,20 @@ msgid "" "'\n" "\n" msgstr "" +"'\n" +"\n" #: builtins/help.def:185 #, c-format -msgid "" -"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "" -"no hi ha ajuda sobre «%s». Proveu «help help», «man -k %s» o «info %s»." +msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "no hi ha ajuda sobre «%s». Proveu «help help», «man -k %s» o «info %s»." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: no es pot obrir: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -582,21 +576,21 @@ msgstr "" "Un asterisc (*) significa que l'ordre està deshabilitada.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "no és possible usar més d'una opció d'entre -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "posició a l'historial" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: la marca horària no és vàlida" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: ha fallat l'expansió de l'historial" @@ -619,78 +613,78 @@ msgstr "%s: els arguments han de ser ids de processos o feines" msgid "Unknown error" msgstr "Error desconegut" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "s'esperava una expressió" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: no és un vector indexat" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: l'especificació de descriptor de fitxer no és vàlida" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: el descriptor de fitxer no és vàlid: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: el nombre de línies no és vàlid" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: l'origen del vector no és vàlid" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: el quàntum de retorn no és vàlid" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "nom de variable vector en blanc" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "fa falta suport per a variables vector" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "«%s»: falta un caràcter de format" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: l'especificació de format de temps no és vàlida" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: el caràcter de format no és vàlid" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "atenció: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "problema en interpretar el format: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "falta un dígit hexadecimal a \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "falta un dígit Unicode a \\%c" @@ -732,16 +726,13 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown by\n" "\tdirs when invoked without options, starting with zero." msgstr "" -"Mostra la llista actual de directoris recordats. Els directoris són " -"afegits\n" +"Mostra la llista actual de directoris recordats. Els directoris són afegits\n" " a la llista mitjançant l'ordre «pushd»; podeu recórrer la llista de\n" " directoris cap enrere amb l'ordre «popd».\n" "\n" @@ -789,8 +780,7 @@ msgid "" msgstr "" "Afegeix un directori al capdamunt de la pila de directoris, o fa girar la\n" " llista, de manera que al capdamunt de la pila hi queda el directori de\n" -" treball corrent. Sense arguments, intercanvia els dos directoris de " -"més\n" +" treball corrent. Sense arguments, intercanvia els dos directoris de més\n" " amunt.\n" "\n" " Opcions:\n" @@ -855,12 +845,12 @@ msgstr "" " Podeu veure el contingut de la pila de directoris amb l'ordre «dirs»." # read -t -5 -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: el límit de temps no és vàlid" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "error de lectura: %d: %s" @@ -874,7 +864,7 @@ msgstr "només es permet fer «return» des d'una funció o script" msgid "cannot simultaneously unset a function and a variable" msgstr "no és possible suprimir una funció i una variable alhora" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: no és una variable vector" @@ -894,12 +884,12 @@ msgstr "%s: no es pot exportar" msgid "shift count" msgstr "nombre de «shifts»" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "no es poden activar i desactivar opcions de forma simultània" # shopt -s foo -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: l'opció de l'intèrpret no és vàlida" @@ -969,16 +959,16 @@ msgstr "%s: el límit no és vàlid" msgid "`%c': bad command" msgstr "«%c»: ordre errònia" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: no es pot obtenir el límit: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "límit" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: no es pot modificar el límit: %s" @@ -999,7 +989,7 @@ msgstr "«%c»: l'operador de mode simbòlic no és vàlid" msgid "`%c': invalid symbolic mode character" msgstr "«%c»: el mode simbòlic conté caràcters no vàlids" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " línia " @@ -1020,100 +1010,110 @@ msgstr "Avortant..." msgid "INFORM: " msgstr "INFORMACIÓ: " -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "atenció: " + +#: error.c:488 msgid "unknown command error" msgstr "error no identificat" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "tipus d'ordre erroni" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "connector erroni" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "salt erroni" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: variable no definida" # SIGALRM -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atemps esgotat mentre s'esperaven dades: autodesconnexió\n" # error intern -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "no s'ha pogut redirigir l'entrada estàndard des de /dev/null: %s" # error intern -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c»: el caràcter de format no és vàlid" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: el coprocés [%d:%s] encara existeix" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "error de canonada" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: excedit el nombre màxim d'avaluacions imbricades (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: excedit el nombre màxim d'imbricacions per a «source» (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: excedit el nombre màxim de funcions imbricades (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restricció: no podeu especificar «/» en noms d'ordres" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: no s'ha trobat l'ordre" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: no es pot executar: no s'ha trobat un fitxer necessari" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: intèrpret erroni" # error intern -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: no es pot executar el fitxer binari: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "«%s»: és una ordre interna especial" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "no s'ha pogut duplicar l'fd %d com a fd %d" @@ -1126,72 +1126,70 @@ msgstr "excedit el nivell màxim de recursivitat per a expressions" msgid "recursion stack underflow" msgstr "«underflow» a la pila de recursivitat" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "error de sintaxi a l'expressió" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "intent d'assignació a una no-variable" -#: expr.c:530 -#, fuzzy +#: expr.c:531 msgid "syntax error in variable assignment" -msgstr "error de sintaxi a l'expressió" +msgstr "error de sintaxi en una assignació de variable" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "divisió per 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "bug: el component «expassign» és erroni" # echo $((4 > 5 ? 0)) -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "falta un caràcter «:» a l'expressió condicional" # echo $((4 ** -1)) -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "exponent menor que 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "fa falta un identificador després del pre-increment o pre-decrement" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "falta un caràcter «)»" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "error de sintaxi: s'esperava un operand" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "error de sintaxi: l'operador aritmètic no és vàlid" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (l'element erroni és «%s»)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "la base aritmètica no és vàlida" -#: expr.c:1582 -#, fuzzy +#: expr.c:1587 msgid "invalid integer constant" -msgstr "%s: el nombre de línies no és vàlid" +msgstr "nombre enter invàlid" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "el valor de la base és massa gran" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: expressió errònia\n" @@ -1200,7 +1198,7 @@ msgstr "%s: expressió errònia\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: els directoris superiors són inaccessibles" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "no s'ha pogut restablir el mode «nodelay» per a l'fd %d" @@ -1219,220 +1217,219 @@ msgstr "save_bash_input: ja existia un «buffer» per al nou fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp de la canonada" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -msgstr "" +msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -msgstr "" +msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "el pid bifurcat %d apareix a la feina en execució %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "s'elimina la feina aturada %d amb grup de procés %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: el pid %5ld (%s) està marcat com a viu" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no existeix tal pid" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Senyal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Fet" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Aturat" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Aturat(%s)" # ha de tenir menys de 10 caràcters o no queda alineat -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Funcionant" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Fet(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Sortida %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Estat desconegut" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(s'ha bolcat la memòria)" # wd = working directory -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (dt: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid (de %ld a %ld) per al procés inferior" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: el pid %ld no és un fill d'aquest intèrpret" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" -msgstr "wait_for: No es té constància del procés %ld" +msgstr "wait_for: No hi ha constància del procés %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: la feina %d està aturada" -#: jobs.c:3564 -#, fuzzy, c-format +#: jobs.c:3551 +#, c-format msgid "%s: no current jobs" -msgstr "%s: no existeix tal feina" +msgstr "%s: no hi ha feines en curs" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: la feina ha acabat" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: la feina %d ja es troba en segon pla" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: s'activa «WNOHANG» per a evitar un bloqueig indefinit" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s línia %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (s'ha bolcat la memòria)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(dt ara: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp ha fallat" -#: jobs.c:4447 -#, fuzzy +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" -msgstr "initialize_job_control: disciplina de línia" +msgstr "initialize_job_control: no s'està executant el control de feines" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplina de línia" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "no s'ha pogut establir el grup de procés del terminal (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "aquesta sessió no té control de feines" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: asserció fallida: %s\n" # error intern i el \r provoca warnings -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" +"\\r\n" +"malloc: %s:%d: asserció mal executada\\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "desconegut" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: bloc abatussat a la llista de disponibles" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: cridat amb un argument de bloc ja alliberat" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: cridat amb un argument bloc no assignat" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underflow detectat; mh_nbytes fora del domini" -#: lib/malloc/malloc.c:1001 -#, fuzzy +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" -msgstr "free: underflow detectat; mh_nbytes fora del domini" +msgstr "free: underflow detectat; la variable magic8 està corrompuda" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: les mides inicial i final del fragment difereixen" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: cridat amb un argument de bloc no assignat" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underflow detectat: mh_nbytes fora del domini" -#: lib/malloc/malloc.c:1141 -#, fuzzy +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" -msgstr "realloc: underflow detectat: mh_nbytes fora del domini" +msgstr "realloc: underflow detectat: la variable magic8 està corrumpuda" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: les mides inicial i final del fragment difereixen" @@ -1474,22 +1471,22 @@ msgstr "%s: la ubicació remota no és vàlida" msgid "network operations not supported" msgstr "les operacions de xarxa no estan suportades" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: no s'ha pogut canviar el local (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: no s'ha pogut canviar el local (%s): %s" @@ -1507,142 +1504,138 @@ msgstr "Teniu correu nou a $_" msgid "The mail in %s has been read\n" msgstr "El correu a %s ha estat llegit\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "error de sintaxi: fa falta una expressió aritmètica" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "error de sintaxi: «;» inesperat" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "error de sintaxi: «((%s))»" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipus d'instrucció erroni %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "document literal a la línia %d delimitat per EOF (volia «%s»)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instrucció de redirecció «%d» fora del domini" -#: parse.y:2393 +#: parse.y:2428 #, c-format -msgid "" -"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " -"truncated" -msgstr "" -"shell_getc: shell_input_line_size (%zu) excedeix «SIZE_MAX» (%lu): línia " -"truncada" +msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" +msgstr "shell_getc: shell_input_line_size (%zu) excedeix «SIZE_MAX» (%lu): línia truncada" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "excedit el nombre màxim de documents literals" # "echo $(echo" en un script -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF inesperat mentre es cercava «%c»" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "EOF inesperat mentre es cercava «]]»" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "error de sintaxi a l'expressió condicional: element «%s» inesperat" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "error de sintaxi a l'expressió condicional" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "element «%s» inesperat, s'esperava «)»" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "s'esperava «)»" # [[ -d ]] -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argument «%s» inesperat a un operador unari condicional" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "argument inesperat a un operador unari condicional" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "element «%s» inesperat, s'esperava un operador binari condicional" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "s'esperava un operador binari condicional" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argument inesperat «%s» a un operador binari condicional" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "argument inesperat a un operador binari condicional" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "element «%c» inesperat en una ordre condicional" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "element «%s» inesperat en una ordre condicional" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "element %d inesperat en una ordre condicional" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "error de sintaxi a prop de l'element inesperat «%s»" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "error de sintaxi a prop de «%s»" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "error de sintaxi: final de fitxer inesperat" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "error de sintaxi" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Useu \"%s\" per a abandonar l'intèrpret.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF inesperat mentre es cercava un «)»" @@ -1680,96 +1673,96 @@ msgstr "xtrace_set: el punter de fitxer és NUL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: el caràcter de format no és vàlid" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "descriptor de fitxer fora del domini" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirecció ambigua" # opció noclobber -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: no es pot escriure sobre un fitxer existent" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricció: no podeu redirigir la sortida" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "no s'ha pogut crear el fitxer temporal per a un document literal: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: no és possible assignar un fd a una variable" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port no està suportat si no hi ha xarxa" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "error de redirecció: no es pot duplicar l'fd" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "no s'ha trobat el directori /tmp, sis-plau creeu-lo!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp ha de ser un nom de directori vàlid" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" -msgstr "" +msgstr "el mode «pretty-printing» s'ignora en sessions interactives" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: l'opció no és vàlida" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "no s'ha pogut establir l'uid com a %d: uid effectiu %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "no s'ha pogut establir el gid com a %d: gid effectiu %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "no es pot iniciar el depurador; mode de depuració desactivat" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: És un directori" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "No teniu nom!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versió %s-(%s)\n" # -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1778,324 +1771,321 @@ msgstr "" "Sintaxi: %s [opció GNU llarga] [opció] ...\n" " %s [opció GNU llarga] [opció] fitxer-script ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Opcions GNU llargues:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Opcions de l'intèrpret:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD, o -c ordre, o bé -O opció_intèrpret\t(només invocació)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s, o bé -o opció\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" -msgstr "" -"Feu «%s -c \"help set\"» per a informació sobre les opcions de l'intèrpret.\n" +msgstr "Feu «%s -c \"help set\"» per a informació sobre les opcions de l'intèrpret.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Feu «%s -c help» per a obtenir informació sobre les ordres internes.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Feu servir l'ordre «bashbug» per a informar de «bugs».\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "pàgina web de bash: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "Ajuda general per a programari GNU: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: l'operació no és vàlida" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Senyal no fiable" # Senyals POSIX -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Desconnexió" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Interrupció" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Sortida" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Instrucció il·legal" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "Traçat/trampa BPT" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Instrucció «ABORT»" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Instrucció «EMT»" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Excepció de coma flotant" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Mort" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Error de bus" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Violació de segment" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Crida de sistema errònia" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Canonada trencada" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Alarma" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Finalitzat" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Estat E/S urgent" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Aturat (senyal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Continua" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Procés inferior mort o aturat" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Aturat (entrada tty)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Aturat (sortida tty)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "E/S a punt" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Limitació de CPU" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Limitació de fitxers" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarma (virtual)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarma (perfil)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Canvi de finestra" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Bloqueig de registre" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Senyal d'usuari 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Senyal d'usuari 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "Dades HFT d'entrada pendents" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "fallada imminent de l'alimentació" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "fallada imminent del sistema" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "migració del procés a una altra CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "error de programació" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "mode de monitoratge HFT concedit" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "mode de monitoratge HFT retractat" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "seqüència d'àudio HFT completada" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Petició d'informació" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Senyal Desconegut #%d" # missatge similar a subst.c:75XX -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substitució errònia: falta un «%s» a %s" # foo[1]=(1 2 3) -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: no és possible assignar llistes a l'element d'un vector" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "no s'ha pogut crear la canonada per a la substitució de procés" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "no s'ha pogut crear el fill per a la substitució de procés" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "no s'ha pogut obrir la canonada %s per a lectura" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "no s'ha pogut obrir la canonada %s per a escriptura" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "no s'ha pogut duplicar la canonada %s com a fd %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "substitució d'ordre: s'ignora un octet nul en l'entrada" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "no s'ha pogut crear la canonada per a la substitució d'ordre" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "no s'ha pogut crear un fill per a la substitució d'ordre" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: no s'ha pogut duplicar la canonada com a fd 1" # buscar context -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: el nom de la variable referenciada no és vàlid" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: expansió indirecta no vàlida" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: nom de variable no vàlid" -#: subst.c:7256 -#, fuzzy, c-format +#: subst.c:7478 +#, c-format msgid "%s: parameter not set" -msgstr "%s: paràmetre nul o no definit" +msgstr "%s: paràmetre no definit" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: paràmetre nul o no definit" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expressió de subcadena < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: substitució errònia" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: no és possible assignar d'aquesta manera" -#: subst.c:9814 -msgid "" -"future versions of the shell will force evaluation as an arithmetic " -"substitution" +#: subst.c:10111 +msgid "future versions of the shell will force evaluation as an arithmetic substitution" msgstr "en futures versions de bash s'avaluarà com a substitució aritmètica" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "subtitució errònia: falta un caràcter «`» final a %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "cap coincidència: %s" @@ -2118,139 +2108,140 @@ msgstr "s'esperava «)»" msgid "`)' expected, found %s" msgstr "s'esperava «)», s'ha trobat %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: s'esperava un operador binari" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: s'esperava un operador unari" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "falta un «]»" -#: test.c:899 -#, fuzzy, c-format +#: test.c:914 +#, c-format msgid "syntax error: `%s' unexpected" -msgstr "error de sintaxi: «;» inesperat" +msgstr "error de sintaxi: «%s» inesperat" #: trap.c:220 msgid "invalid signal number" msgstr "el número de senyal no és vàlid" -#: trap.c:325 -#, fuzzy, c-format +#: trap.c:323 +#, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" -msgstr "eval: excedit el nombre màxim d'avaluacions imbricades (%d)" +msgstr "trap handler: excedit el nivell màxim d'interceptació de senyals (%d)" # internal warning -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: valor incorrecte a trap_list[%d]: %p" # internal warning -#: trap.c:418 +#: trap.c:416 #, c-format -msgid "" -"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "" +msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_traps: el gestor de senyal és SIG_DFL, em re-envio %d (%s) a mi mateix" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: senyal erroni %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "error en importar la definició de funció de «%s»" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "el nivell de l'intèrpret (%d) és massa elevat, es restableix a 1" # error intern -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" -msgstr "" +msgstr "make_local_variable: no existeix un context de funció en l'àmbit actual" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: no és possible assignar un valor a la variable" +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s: no es pot heretar un valor de tipus incompatible" + # buscar context -#: variables.c:3475 +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: assignació numèrica a una variable referència" # error intern -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" -msgstr "" +msgstr "all_local_variables: no existeix un context de función en l'àmbit actual" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "el paràmetre «exportstr» de la variable %s és nul" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "el caràcter %d en el paràmetre «exportstr» de %s no és vàlid" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "falta un «=» en el paràmetre «exportstr» de %s" # error intern -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" -msgstr "" +msgstr "pop_var_context: la capçalera de shell_variables no és un context de funció" # error intern -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" -msgstr "" +msgstr "pop_var_context: no existeix un context de global_variables" # error intern -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" -msgstr "" +msgstr "pop_scope: la capçaleras shell_variables no és un àmbit temporal d'entorn" # error intern -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: no s'ha pogut obrir com a FITXER" # error intern -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "" +msgstr "%s: %s: valor invàlid per a una traça de descriptor de fitxer" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: el valor de compatibilitat és fora del domini" #: version.c:46 version2.c:46 -#, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Copyright (C) 2012 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Copyright (C) 2022 Free Software Foundation, Inc." #: version.c:47 version2.c:47 -msgid "" -"License GPLv3+: GNU GPL version 3 or later \n" +msgid "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" "Llicència GPLv3+: GNU GPL versió 3 o posterior\n" " \n" @@ -2262,8 +2253,7 @@ msgstr "GNU bash, versió %s (%s)\n" #: version.c:91 version2.c:91 msgid "This is free software; you are free to change and redistribute it." -msgstr "" -"Aquest programa és lliure; sou lliures de modificar-lo i redistribuir-lo." +msgstr "Aquest programa és lliure; sou lliures de modificar-lo i redistribuir-lo." #: version.c:92 version2.c:92 msgid "There is NO WARRANTY, to the extent permitted by law." @@ -2301,12 +2291,8 @@ msgstr "unalias [-a] nom [nom ...]" # help bind #: builtins.c:53 -msgid "" -"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" -"x keyseq:shell-command] [keyseq:readline-function or readline-command]" -msgstr "" -"bind [-lpsvPSVX] [-m mapa] [-f fitxer] [-q nom] [-u nom] [-r tecles] [-x " -"tecles:ordre-intèrpret] [tecles:funció-readline o ordre-readline]" +msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "bind [-lpsvPSVX] [-m mapa] [-f fitxer] [-q nom] [-u nom] [-r tecles] [-x tecles:ordre-intèrpret] [tecles:funció-readline o ordre-readline]" #: builtins.c:56 msgid "break [n]" @@ -2337,14 +2323,12 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] ordre [arg ...]" #: builtins.c:78 -#, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilnrtux] [-p] [nom[=valor] ...]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgiIlnrtux] [nom[=valor] ...] o declare -p [-aAfFilnrtux] [nom ...]" #: builtins.c:80 -#, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilnrtux] [-p] nom[=valor] ..." +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgiIlnrtux] nom[=valor] ... o typeset -p [-aAfFilnrtux] [nom ...]" #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2367,14 +2351,12 @@ msgid "eval [arg ...]" msgstr "eval [arg ...]" #: builtins.c:96 -#, fuzzy msgid "getopts optstring name [arg ...]" -msgstr "getopts cadena nom [arg]" +msgstr "getopts cadena nom [arg ...]" #: builtins.c:98 -#, fuzzy msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" -msgstr "exec [-cl] [-a nom] [ordre [arguments ...]] [redirecció ...]" +msgstr "exec [-cl] [-a nom] [ordre [argument ...]] [redirecció ...]" #: builtins.c:100 msgid "exit [n]" @@ -2405,12 +2387,8 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [patró ...]" #: builtins.c:123 -msgid "" -"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " -"[arg...]" -msgstr "" -"history [-c] [-d offset] [n] o history -anrw [fitxer] o history -ps arg " -"[arg...]" +msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +msgstr "history [-c] [-d offset] [n] o history -anrw [fitxer] o history -ps arg [arg...]" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2421,31 +2399,24 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [feina ... | pid ...]" #: builtins.c:134 -msgid "" -"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " -"[sigspec]" -msgstr "" -"kill [-s senyal | -n númsenyal | -senyal] pid | feina ... o kill -l [senyal]" +msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" +msgstr "kill [-s senyal | -n númsenyal | -senyal] pid | feina ... o kill -l [senyal]" #: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" #: builtins.c:138 -msgid "" -"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " -"prompt] [-t timeout] [-u fd] [name ...]" -msgstr "" -"read [-ers] [-a vector] [-d delim] [-i text] [-n núm] [-N núm] [-p introd] [-" -"t espera] [-u fd] [nom ...]" +msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" +msgstr "read [-ers] [-a vector] [-d delim] [-i text] [-n núm] [-N núm] [-p introd] [-t espera] [-u fd] [nom ...]" #: builtins.c:140 msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [-abefhkmnptuvxBCHP] [-o nom-opció] [--] [arg ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o nom-opció] [--] [-] [arg ...]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" @@ -2492,17 +2463,16 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nom [nom ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [límit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [límit]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -#, fuzzy msgid "wait [-fn] [-p var] [id ...]" -msgstr "wait [-n] [id ...]" +msgstr "wait [-fn] [-p var] [id ...]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2529,19 +2499,16 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case PARAULA in [PATRÓ [| PATRÓ]...) ORDRES ;;]... esac" #: builtins.c:194 -msgid "" -"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " -"COMMANDS; ] fi" -msgstr "" -"if ORDRES; then ORDRES; [ elif ORDRES; then ORDRES; ]... [ else ORDRES; ] fi" +msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" +msgstr "if ORDRES; then ORDRES; [ elif ORDRES; then ORDRES; ]... [ else ORDRES; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while ORDRES; do ORDRES; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while ORDRES; do ORDRES-2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until ORDRES; do ORDRES; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until ORDRES; do ORDRES-2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -2592,45 +2559,24 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [arguments]" #: builtins.c:231 -#, fuzzy -msgid "" -"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" -"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " -"suffix] [name ...]" -msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o opció] [-A acció] [-G patró] [-W " -"llista] [-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [nom ...]" +msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]" +msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o opció] [-A acció] [-G patró] [-W paraules] [-F funció] [-C ordre] [-X patró] [-P prefix] [-S sufix] [nom ...]" #: builtins.c:235 -#, fuzzy -msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" -"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" -msgstr "" -"compgen [-abcdefgjksuv] [-o opció] [-A acció] [-G patró] [-W paraules]\n" -"[-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [paraula]" +msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "compgen [-abcdefgjksuv] [-o opció] [-A acció] [-G patró] [-W paraules] [-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [paraula]" #: builtins.c:239 -#, fuzzy msgid "compopt [-o|+o option] [-DEI] [name ...]" -msgstr "compopt [-o|+o opció] [-DE] [nom ...]" +msgstr "compopt [-o|+o opció] [-DEI] [nom ...]" #: builtins.c:242 -msgid "" -"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" -msgstr "" -"mapfile [-d delim] [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C " -"callback] [-c quàntum] [vector]" +msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "mapfile [-d delim] [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C callback] [-c quàntum] [vector]" #: builtins.c:244 -#, fuzzy -msgid "" -"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" -msgstr "" -"readarray [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C callback] [-c " -"quàntum] [vector]" +msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "readarray [-d delim] [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C callback] [-c quàntum] [vector]" #: builtins.c:256 msgid "" @@ -2647,8 +2593,7 @@ msgid "" " -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has " -"been\n" +" alias returns true unless a NAME is supplied for which no alias has been\n" " defined." msgstr "" "Defineix o mostra àlies.\n" @@ -2695,30 +2640,25 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" -"move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their " -"values\n" -" -s List key sequences that invoke macros and their " -"values\n" +" -S List key sequences that invoke macros and their values\n" +" -s List key sequences that invoke macros and their values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named " -"function.\n" +" -u function-name Unbind all keys which are bound to the named function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" -" -X List key sequences bound with -x and associated " -"commands\n" +" -X List key sequences bound with -x and associated commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2734,8 +2674,7 @@ msgstr "" " Opcions:\n" " -m mapa Usa MAPA com a mapa de tecles mentre duri aquesta\n" " ordre. Els noms de mapes acceptables són emacs, emacs-\n" -" standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-" -"command,\n" +" standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command,\n" " i vi-insert.\n" " -l Mostra els noms de les funcions\n" " -P Mostra els noms de les funcions i els vincles de tecla.\n" @@ -2744,15 +2683,13 @@ msgstr "" " -S Mostra les seqüències de tecles que invoquen macros i els\n" " seus valors respectius.\n" " -s Mostra les seqüències de tecles que invoquen macros i els\n" -" seus valors respectius en un format que es pot " -"reutilitzar\n" +" seus valors respectius en un format que es pot reutilitzar\n" " com a entrada.\n" " -V Mostra els noms de les variables i els seus valors.\n" " -v Mostra els noms de les variables i els seus respectius\n" " valors en un format que es pot reutilitzar com a entrada.\n" " -q funció Consulta quines tecles invoquen la funció especificada.\n" -" -u funció Desvincula les tecles vinculades a la funció " -"especificada.\n" +" -u funció Desvincula les tecles vinculades a la funció especificada.\n" " -r tecles Elimina el vincle associat a TECLES.\n" " -f fitxer Obté els vincles de tecles de FITXER.\n" " -x tecles:ordre Fa que s'executi ORDRE quan es prem TECLES.\n" @@ -2802,14 +2739,12 @@ msgstr "" " L'estat de sortida és 0 excepte si N és més petit que 1." #: builtins.c:354 -#, fuzzy msgid "" "Execute shell builtins.\n" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the " -"function.\n" +" as a shell function, but need to execute the builtin within the function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" @@ -2823,8 +2758,7 @@ msgstr "" " pròpia funció.\n" "\n" " Estat de sortida:\n" -" Torna l'estat de sortida de ORDRE-INTERNA, o fals si ORDRE-INTERNA no " -"és\n" +" Torna l'estat de sortida de ORDRE-INTERNA, o fals si ORDRE-INTERNA no és\n" " una ordre interna." # help caller @@ -2860,22 +2794,16 @@ msgstr "" msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of " -"the\n" +" Change the current directory to DIR. The default DIR is the value of the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory " -"containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon " -"(:).\n" -" A null directory name is the same as the current directory. If DIR " -"begins\n" +" The variable CDPATH defines the search path for the directory containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" +" A null directory name is the same as the current directory. If DIR begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is " -"set,\n" -" the word is assumed to be a variable name. If that variable has a " -"value,\n" +" If the directory is not found, and the shell option `cdable_vars' is set,\n" +" the word is assumed to be a variable name. If that variable has a value,\n" " its value is used for DIR.\n" " \n" " Options:\n" @@ -2891,13 +2819,11 @@ msgid "" " \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" -" `..' is processed by removing the immediately previous pathname " -"component\n" +" `..' is processed by removing the immediately previous pathname component\n" " back to a slash or the beginning of DIR.\n" " \n" " Exit Status:\n" -" Returns 0 if the directory is changed, and if $PWD is set successfully " -"when\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" " -P is used; non-zero otherwise." msgstr "" "Canvia el directori de treball de l'intèrpret.\n" @@ -2910,8 +2836,7 @@ msgstr "" " punts (:). Un nom de directori nul s'interpreta com al directori\n" " actual. Si DIR comença amb una barra, aleshores no s'usa CDPATH.\n" "\n" -" Si no es troba el directori, i l'opció de l'intèrpret «cdable_vars» " -"està\n" +" Si no es troba el directori, i l'opció de l'intèrpret «cdable_vars» està\n" " activada, aleshores la paraula s'interpreta com a un nom de variable.\n" " Si la variable especificada té algun valor, aquest valor s'usa en lloc\n" " de DIR.\n" @@ -2919,8 +2844,7 @@ msgstr "" " Opcions:\n" " -L força el seguiment d'enllaços simbòlics: resol els enllaços\n" " simbòlics que conté DIR després de processar «..»\n" -" -P usa l'estructura de directoris física sense seguir " -"possibles\n" +" -P usa l'estructura de directoris física sense seguir possibles\n" " enllaços simbòlics: resol els enllaços simbòlics que conté\n" " DIR abans de processar «..»\n" " -e amb l'opció -P, si no es pot determinar el directori de\n" @@ -2929,8 +2853,7 @@ msgstr "" " estesos com a directoris que contenen els atributs del\n" " fitxer\n" "\n" -" Per defecte, se segueixen els enllaços simbòlics, com si " -"especifiquéssiu\n" +" Per defecte, se segueixen els enllaços simbòlics, com si especifiquéssiu\n" " l'opció «-L». El component «..» es processa eliminant el component del\n" " camí immediatament previ fins a la primera barra o fins al principi de\n" " DIR.\n" @@ -3012,8 +2935,7 @@ msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke " -"commands\n" +" information about the specified COMMANDs. Can be used to invoke commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -3044,7 +2966,6 @@ msgstr "" # help declare #: builtins.c:490 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3077,8 +2998,7 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the " -"`local'\n" +" When used in a function, `declare' makes NAMEs local, as with the `local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" @@ -3096,18 +3016,20 @@ msgstr "" " el nom del fitxer, en mode de depuració)\n" " -g crea variables globals quan s'utilitza dins d'una funció,\n" " altrament s'ignora\n" +" -I en crear una variable local, hereda els atributs i valor de \n" +" la variable del mateix nom d'un àmbit anterior\n" " -p mostra els atributs i el valor de cada NOM\n" "\n" " Opcions que estableixen atributs:\n" " -a per a fer NOMs vectors indexats (si estan suportats)\n" " -A per a fer NOMs vectors associatius (si estan suportats)\n" " -i per a assignar l'atribut de nombre enter a NOMs\n" -" -l per a convertir NOMs a minúscules en l'assignació\n" +" -l per a convertir els valors de NOMs a minúscules en l'assignació\n" " -n per a fer NOM una referència a la variable que té per nom\n" " el seu valor\n" " -r per a fer NOMs variables de només lectura\n" " -t per a assignar l'atribut «traça» a NOMs\n" -" -u per a convertir NOMs a majúscules en l'assignació\n" +" -u per a convertir els valors de NOMs a majúscules en l'assignació\n" " -x per a exportar NOMs\n" "\n" " Si feu servir «+» en lloc de «-», elimina l'atribut.\n" @@ -3116,10 +3038,8 @@ msgstr "" " aritmèticament (vegeu l'ordre «let») quan s'assigna un valor a la\n" " variable.\n" "\n" -" Quan s'usa en una funció, «declare» converteix NOMs en variables " -"locals,\n" -" igual que l'ordre «local». L'opció «-g» inhabilita aquest " -"comportament.\n" +" Quan s'usa en una funció, «declare» converteix NOMs en variables locals,\n" +" igual que l'ordre «local». L'opció «-g» suprimeix aquest comportament.\n" "\n" " Estat de sortida:\n" " Torna èxit, excepte si rep una opció invàlida o es produeix un error." @@ -3151,13 +3071,11 @@ msgid "" msgstr "" "Defineix variables locals.\n" "\n" -" Crea una variable local anomenada NOM i li assigna VALOR. OPCIÓ pot " -"ser\n" +" Crea una variable local anomenada NOM i li assigna VALOR. OPCIÓ pot ser\n" " qualsevol opció que «declare» admeti.\n" "\n" " Les variables locals només es poden utilitzar dins d'una funció; només\n" -" són visibles a dins de la funció on són definides i dins de les " -"funcions\n" +" són visibles a dins de la funció on són definides i dins de les funcions\n" " imbricades dins d'aquestes.\n" "\n" " Estat de sortida:\n" @@ -3165,12 +3083,10 @@ msgstr "" " un error, o l'intèrpret no està executant una funció." #: builtins.c:557 -#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by " -"a\n" +" Display the ARGs, separated by a single space character and followed by a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -3194,11 +3110,9 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" -" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " -"HHHH.\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n" " \t\tHHHH can be one to four hex digits.\n" -" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " -"value\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n" " \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" @@ -3214,8 +3128,7 @@ msgstr "" " -e activa la interpretació de seqüències d'escapada\n" " -E desactiva la interpretació de seqüències d'escapada\n" "\n" -" «echo» interpreta els següents caràcters escapats amb una barra " -"inversa:\n" +" «echo» interpreta els següents caràcters escapats amb una barra inversa:\n" " \\a alerta (campana)\n" " \\b retrocés\n" " \\c suprimeix tota sortida ulterior\n" @@ -3227,11 +3140,14 @@ msgstr "" " \\t tabulació horitzontal\n" " \\v tabulació vertical\n" " \\\\ barra invertida\n" -" \\0nnn caràcter corresponent al codi ASCII número NNN, on NNN és " -"un\n" +" \\0nnn caràcter corresponent al codi ASCII número NNN, on NNN és un\n" " número octal de 0 a 3 dígits.\n" " \\xHH caràcter de 8 bits corresponent al valor HH, on HH és un\n" " número hexadecimal d'1 o 2 dígits.\n" +" \\uHHHH caràcter Unicode corresponent al valor hexadecimal HHHH, on\n" +" HHHH pot tenir de 1 a 4 dígits.\n" +" \\uHHHHHHHH caràcter Unicode corresponent al valor hexadecimal HHHHHHHH,\n" +" on HHHHHHHH pot tenir de 1 a 8 dígits.\n" "\n" " Estat de sortida:\n" " Torna èxit, tret que es produeixi un error d'escriptura." @@ -3288,15 +3204,13 @@ msgstr "" "Habilita o inhabilita ordres internes de l'intèrpret.\n" "\n" " Habilita o inhabilita ordres internes de l'intèrpret. Inhabilitar una\n" -" ordre interna permet executar una ordre que es troba en el disc i que " -"té\n" +" ordre interna permet executar una ordre que es troba en el disc i que té\n" " el mateix nom que l'ordre interna, sense necessitat d'escriure'n la\n" " ubicació completa.\n" "\n" " Opcions:\n" " -a mostra una llista d'ordres internes indicant-ne l'estat\n" -" -n inhabilita NOM o bé mostra una llista de les ordres " -"internes\n" +" -n inhabilita NOM o bé mostra una llista de les ordres internes\n" " que es troben inhabilitades\n" " -p mostra la llista en format reutilitzable\n" " -s mostra només les ordres internes «especials» Posix\n" @@ -3317,8 +3231,7 @@ msgstr "" msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the " -"shell,\n" +" Combine ARGs into a single string, use the result as input to the shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" @@ -3326,15 +3239,13 @@ msgid "" msgstr "" "Executa els arguments com una ordre.\n" "\n" -" Combina ARGs en una única cadena, utilitza el resultat com a entrada " -"per\n" +" Combina ARGs en una única cadena, utilitza el resultat com a entrada per\n" " a l'intèrpret i executa les ordres resultants.\n" "\n" " Estat de sortida:\n" " Torna l'estat de sortida de l'ordre, o èxit si l'ordre és nul·la." #: builtins.c:652 -#, fuzzy msgid "" "Parse option arguments.\n" " \n" @@ -3374,33 +3285,28 @@ msgid "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." msgstr "" -"Interpreta arguments que representen opcions.\n" +"Processa arguments que representen opcions.\n" "\n" -" getopts és utilitzat per les utilitats de bash per a interpretar els\n" +" getopts és utilitzat per les utilitats de bash per a processar els\n" " paràmetres posicionals com a opcions.\n" "\n" " CADENA conté les lletres de les opcions a reconèixer; si una lletra va\n" -" seguida de dos punts, l'opció requereix un argument, que s'ha de " -"separar\n" -" amb un espai en blanc.\n" +" seguida de dos punts, l'opció requereix un argument, que s'ha de separar\n" +" de l'opció amb un espai en blanc.\n" "\n" -" Cada cop que s'invoca, getopts posarà l'opció successiva a la variable\n" +" Cada cop que s'invoca, getopts posa l'opció successiva a la variable\n" " d'entorn $nom, inicialitzant nom si no existeix, i l'índex del següent\n" " argument a la variable OPTIND. La variable OPTIND s'inicialitza a 1\n" -" cada cop que s'invoca l'intèrpret o un script. Quan una opció " -"requereix\n" +" cada cop que s'invoca l'intèrpret o un script. Quan una opció requereix\n" " un argument, getopts col·loca l'argument a la variable OPTARG.\n" "\n" -" getopts pot informar d'errors de dues maneres. Si el primer caràcter " -"de\n" -" CADENA és un caràcter de dos punts (:), getopts entra en mode " -"silenciós.\n" +" getopts pot informar d'errors de dues maneres. Si el primer caràcter de\n" +" CADENA és un caràcter de dos punts (:), getopts entra en mode silenciós.\n" " En aquest mode, no es mostra cap missatge d'error. Si es detecta una\n" " opció no vàlida, getopts col·loca el caràcter de l'opció a OPTARG. Si\n" " no es troba un argument requerit, getopts posa un ':' a NOM, i el\n" " caràcter de l'opció trobada a OPTARG. Si getopts no es troba en mode\n" -" silenciós, i es detecta una opció no vàlida, getopts posa un '?' a NOM " -"i\n" +" silenciós, i es detecta una opció no vàlida, getopts posa un '?' a NOM i\n" " elimina la variable OPTARG. Si no troba un argument requerit, posa un\n" " '?' a NOM, elimina OPTARG, i mostra un missatge de diagnòstic.\n" "\n" @@ -3408,12 +3314,11 @@ msgstr "" " d'error, encara que el primer caràcter de CADENA no siguin dos punts.\n" " Per defecte, OPTERR té el valor 1.\n" "\n" -" Normalment, getopts interpreta els paràmetres posicionals ($0 - $9),\n" -" però si hi ha més arguments, s'interpreten aquests.\n" +" Normalment, getopts interpreta els paràmetres posicionals, però si\n" +" es proporcionen arguments com a valors ARG, s'intepreten aquests.\n" "\n" " Estat de sortida:\n" -" Retorna èxit si es troba alguna opció; falla si s'arriba al final de " -"les\n" +" Retorna èxit si es troba alguna opció; falla si s'arriba al final de les\n" " opcions o si es produeix un error." #: builtins.c:694 @@ -3421,8 +3326,7 @@ msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " -"specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3430,13 +3334,11 @@ msgid "" " -c\texecute COMMAND with an empty environment\n" " -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, " -"unless\n" +" If the command cannot be executed, a non-interactive shell exits, unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error " -"occurs." +" Returns success unless COMMAND is not found or a redirection error occurs." msgstr "" "Substitueix el procés de l'intèrpret per l'ordre especificada.\n" "\n" @@ -3449,8 +3351,7 @@ msgstr "" " -c executa ORDRE en un entorn buit\n" " -t passa un guionet a ORDRE com a argument número zero\n" "\n" -" Si l'ordre no es pot executar i la sessió és no-interactiva, " -"l'intèrpret\n" +" Si l'ordre no es pot executar i la sessió és no-interactiva, l'intèrpret\n" " surt, excepte si l'opció «execfail» està habilitada.\n" "\n" " Estat de sortida:\n" @@ -3473,14 +3374,12 @@ msgstr "" msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not " -"executed\n" +" Exits a login shell with exit status N. Returns an error if not executed\n" " in a login shell." msgstr "" "Abandona una sessió d'entrada.\n" "\n" -" Abandona una sessió d'entrada amb estat de sortida N. Torna un error " -"si\n" +" Abandona una sessió d'entrada amb estat de sortida N. Torna un error si\n" " no s'està executant en una sessió d'entrada." # help fc (hi ha un bug a la cadena original) @@ -3488,15 +3387,13 @@ msgstr "" msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history " -"list.\n" +" fc is used to list or edit and re-execute commands from the history list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then " -"EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -3510,8 +3407,7 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error " -"occurs." +" Returns success or status of executed command; non-zero if an error occurs." msgstr "" "Mostra o executa ordres de l'historial.\n" "\n" @@ -3524,20 +3420,18 @@ msgstr "" " -e EDITOR selecciona quin editor utilitzar. Per defecte és el valor\n" " de la variable FCEDIT, després el valor de EDITOR, i\n" " finalment vi\n" -" -l\tmostra les línies en lloc d'editar-les\n" -" -n\tomet els números de línia a l'hora de mostrar la llista\n" -" -r\tinverteix l'ordre de les línies (més recents primer)\n" +" -l mostra les línies en lloc d'editar-les\n" +" -n omet els números de línia a l'hora de mostrar la llista\n" +" -r inverteix l'ordre de les línies (més recents primer)\n" "\n" -" Amb el format «fc -s [pat=sub ...] [ordre]», ORDRE es re-executa " -"després\n" +" Amb el format «fc -s [pat=sub ...] [ordre]», ORDRE es re-executa després\n" " d'haver fet la substitució PAT=SUB.\n" "\n" " Un àlies útil és r='fc -s', de manera que «r cc» executa l'última ordre\n" " que comença per «cc» i «r» re-executa l'última ordre.\n" "\n" " Estat de sortida:\n" -" Torna èxit o l'estat de l'última ordre executada; diferent de zero si " -"es\n" +" Torna èxit o l'estat de l'última ordre executada; diferent de zero si es\n" " produeix un error." #: builtins.c:764 @@ -3558,18 +3452,15 @@ msgstr "" " considera com a corrent.\n" "\n" " Estat de sortida:\n" -" L'estat de l'ordre que es mou al primer pla, o fallada si es produeix " -"un\n" +" L'estat de l'ordre que es mou al primer pla, o fallada si es produeix un\n" " error." #: builtins.c:779 msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if " -"they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's " -"notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" @@ -3591,8 +3482,7 @@ msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is " -"displayed.\n" +" no arguments are given, information about remembered commands is displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3616,8 +3506,7 @@ msgstr "" "\n" " Opcions:\n" " -d oblida la ubicació recordada per a cada NOM\n" -" -l utilitza un format que es pot reciclar com a " -"entrada\n" +" -l utilitza un format que es pot reciclar com a entrada\n" " -p ubicació utilitza UBICACIÓ com a ubicació completa per a NOM\n" " -r oblida totes les ubicacions recordades\n" " -t mostra la ubicació recordada per a cada NOM,\n" @@ -3632,7 +3521,6 @@ msgstr "" # help help #: builtins.c:818 -#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3650,14 +3538,13 @@ msgid "" " PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is " -"given." +" Returns success unless PATTERN is not found or an invalid option is given." msgstr "" "Mostra informació sobre ordres internes.\n" "\n" -" Mostra ajuda sobre les ordres internes. Amb PATRÓ, dóna informació\n" -" detallada sobre aquelles ordres que coincideixen amb PATRÓ, altrament\n" -" mostra una llista amb temes d'ajuda.\n" +" Mostra ajuda sobre les ordres internes. Si s'especifica PATRÓ,\n" +" dóna informació detallada sobre aquelles ordres que coincideixen\n" +" amb PATRÓ, altrament mostra una llista amb temes d'ajuda.\n" "\n" " Opcions:\n" " -d mostra una descripció curta de cada tema\n" @@ -3671,7 +3558,6 @@ msgstr "" " Torna èxit, excepte si PATRÓ no es troba o passeu una opció invàlida." #: builtins.c:842 -#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3699,8 +3585,7 @@ msgid "" " \n" " If the HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed " -"otherwise.\n" +" with each displayed history entry. No time stamps are printed otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." @@ -3724,16 +3609,14 @@ msgstr "" " a la llista\n" " -s afegeix ARGs a la llista com una única entrada\n" "\n" -" Si passeu un nom de FITXER, s'utilitza com a fitxer d'historial. En " -"cas\n" -" contrari, si $HISTFILE té algun valor, s'utilitza aquest, si no\n" +" Si proporcioneu un nom de FITXER, s'utilitza com a fitxer d'historial.\n" +" En cas contrari, si $HISTFILE té algun valor, s'utilitza aquest, si no\n" " s'utilitza ~/.bash_history.\n" "\n" -" Si la variable $HISTTIMEFORMAT està definida i no és nul·la, el seu\n" -" valor s'utilitza com a cadena de format strftime(3) per a mostrar " -"l'hora\n" +" Si la variable HISTTIMEFORMAT està definida i no és nul·la, el seu valor\n" +" s'utilitza com a cadena de format strftime(3) per a mostrar l'hora\n" " associada a cada entrada de l'historial. En cas contrari no es mostra\n" -" informació horària.\n" +" la marca horària.\n" "\n" " Estat de sortida: \n" " Torna èxit, excepte si passeu una opció invàlida o es produeix un error." @@ -3764,8 +3647,7 @@ msgstr "" "Mostra l'estat de feines.\n" "\n" " Mostra les feines actives. Si especifiqueu FEINA, es restringeix la\n" -" sortida a la feina especificada. Sense opcions, mostra l'estat de " -"totes\n" +" sortida a la feina especificada. Sense opcions, mostra l'estat de totes\n" " les feines actives.\n" "\n" " Opcions:\n" @@ -3781,8 +3663,7 @@ msgstr "" " processos d'aquella feina, a ARGS.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si passeu una opció invàlida o es produeix un " -"error.\n" +" Torna èxit, excepte si passeu una opció invàlida o es produeix un error.\n" " Si utilitzeu -x, torna l'estat de sortida d'ORDRE." # help disown @@ -3809,7 +3690,7 @@ msgstr "" "\n" " Opcions:\n" " -a suprimeix totes les feines si no especifiqueu FEINA\n" -" -h\tmarca FEINA per a no enviar-li un senyal SIGHUP si\n" +" -h marca FEINA per a no enviar-li un senyal SIGHUP si\n" " l'intèrpret rep un SIGHUP\n" " -r suprimeix totes les feines en execució\n" "\n" @@ -3841,20 +3722,18 @@ msgid "" msgstr "" "Envia un senyal a una feina.\n" "\n" -" Envia el senyal SENYAL o NÚMSENYAL al procés corresponent a PID o " -"FEINA.\n" +" Envia el senyal SENYAL o NÚMSENYAL al procés corresponent a PID o FEINA.\n" " Si no especifiqueu cap senyal, s'envia un SIGTERM.\n" "\n" " Opcions:\n" " -s senyal SENYAL és el nom d'un senyal\n" -" -n númsenyal\tNÚMSENYAL és el número d'un senyal\n" +" -n númsenyal NÚMSENYAL és el número d'un senyal\n" " -l mostra els noms dels senyals; si hi ha arguments \n" " després de «-l» s'interpreten com a números de\n" " senyals, els noms dels quals s'han de mostrar\n" " -L sinònim de -l\n" "\n" -" kill és una ordre interna per dues raons: perquè això permet usar IDs " -"de\n" +" kill és una ordre interna per dues raons: perquè això permet usar IDs de\n" " feina en lloc de IDs de procés, i perquè permet matar processos encara\n" " que arribeu al límit de processos que se us permet crear.\n" "\n" @@ -3869,8 +3748,7 @@ msgid "" " Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" " fixed-width integers with no check for overflow, though division by 0\n" " is trapped and flagged as an error. The following list of operators is\n" -" grouped into levels of equal-precedence operators. The levels are " -"listed\n" +" grouped into levels of equal-precedence operators. The levels are listed\n" " in order of decreasing precedence.\n" " \n" " \tid++, id--\tvariable post-increment, post-decrement\n" @@ -3909,33 +3787,31 @@ msgstr "" "Avalua expressions aritmètiques.\n" "\n" " Avalua cada ARG com a expressió aritmètica. Les operacions es fan amb\n" -" enters d'amplada fixa sense comprovacions de desbordament, tot i que " -"les\n" -" divisions per 0 es detecten i es marquen com a error. La següent " -"llista\n" +" enters d'amplada fixa sense comprovacions de desbordament, tot i que les\n" +" divisions per 0 es detecten i es marquen com a error. La següent llista\n" " mostra els operadors, agrupats en nivells d'igual precedència. Els\n" " nivells apareixen en ordre descendent de precedència.\n" "\n" -" \tid++, id--\tpostincrement, postdecrement\n" -" \t++id, --id\tpreincrement, predecrement\n" -" \t-, +\t\tnegatiu, positiu unaris\n" -" \t!, ~\t\tnegació lògica i a nivell de bits\n" -" \t**\t\texponenciació\n" -" \t*, /, %\t\tmultiplicació, divisió, residu\n" -" \t+, -\t\taddició, subtracció\n" -" \t<<, >>\t\tdesplaçament de bits a l'esquerra i a la dreta\n" -" \t<=, >=, <, >\tcomparació\n" -" \t==, !=\t\tigualtat, desigualtat\n" -" \t&\t\tAND a nivell de bits\n" -" \t^\t\tXOR a nivell de bits\n" -" \t|\t\tOR a nivell de bits\n" -" \t&&\t\tAND lògic\n" -" \t||\t\tOR lògic\n" -" \texpr ? expr : expr\n" -" \t\t\toperador condicional\n" -" \t=, *=, /=, %=,\n" -" \t+=, -=, <<=, >>=,\n" -" \t&=, ^=, |=\tassignació\n" +" id++, id-- postincrement, postdecrement\n" +" ++id, --id preincrement, predecrement\n" +" -, + negatiu, positiu unaris\n" +" !, ~ negació lògica i a nivell de bits\n" +" ** exponenciació\n" +" *, /, % multiplicació, divisió, residu\n" +" +, - addició, subtracció\n" +" <<, >> desplaçament de bits a l'esquerra i a la dreta\n" +" <=, >=, <, > comparació\n" +" ==, != igualtat, desigualtat\n" +" & AND a nivell de bits\n" +" ^ XOR a nivell de bits\n" +" | OR a nivell de bits\n" +" && AND lògic\n" +" || OR lògic\n" +" expr ? expr : expr\n" +" operador condicional\n" +" =, *=, /=, %=,\n" +" +=, -=, <<=, >>=,\n" +" &=, ^=, |= assignació\n" "\n" " S'admeten variables de l'intèrpret com a operands. El nom de la\n" " variable se substitueix pel seu valor (convertit en enter d'amplada\n" @@ -3950,21 +3826,18 @@ msgstr "" " Si l'avaluació de l'últim ARG és 0, let torna 1; altrament torna 0." #: builtins.c:994 -#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with " -"word\n" +" if the -u option is supplied. The line is split into fields as with word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as " -"word\n" -" delimiters.\n" +" the last NAME. Only the characters found in $IFS are recognized as word\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY " -"variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -3976,8 +3849,7 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" " \t\tNCHARS characters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, " -"unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" " \t\tEOF is encountered or read times out, ignoring any\n" " \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" @@ -3995,36 +3867,31 @@ msgid "" " -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times " -"out\n" -" (in which case it's greater than 128), a variable assignment error " -"occurs,\n" +" The return code is zero, unless end-of-file is encountered, read times out\n" +" (in which case it's greater than 128), a variable assignment error occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" "Llegeix una línia a l'entrada estàndard i la divideix en camps.\n" "\n" " Llegeix una sola línia a l'entrada estàndard, o al descriptor de fitxer\n" -" FD si especifiqueu l'opció -u. La línia es divideix en camps, segons\n" +" FD si especifiqueu l'opció -u. La línia és dividida en camps, segons\n" " les mateixes regles que en la separació de paraules, i la primera\n" " paraula s'assigna al primer NOM, la segona al segon NOM, etc., mentre\n" " que les paraules sobrants, si n'hi ha, s'assignen a l'últim NOM. Només\n" " es reconeixen com a delimitadors de paraula els caràcters que conté la\n" " variable $IFS.\n" "\n" -" Si no especifiqueu cap NOM, en aquest cas la línia llegida es desa a la\n" -" variable REPLY.\n" +" Si no especifiqueu cap NOM, la línia es desa a la variable REPLY.\n" "\n" " Opcions:\n" -" -a vector\tassigna les paraules llegides a VECTOR, de forma " -"seqüencial\n" +" -a vector assigna les paraules llegides a VECTOR, de forma seqüencial\n" " començant des de l'índex número 0.\n" -" -d delim\tcontinue llegint fins a trobar el caràcter DELIM, en lloc " -"de\n" +" -d delim continua llegint fins a trobar el caràcter DELIM, en lloc de\n" " fins a trobar un salt de línia\n" -" -e\tsi la sessió és interactiva, utilitza Readline per a obtenir\n" +" -e si la sessió és interactiva, utilitza Readline per a obtenir\n" " la línia\n" -" -i text\tUtilitza TEXT com a text inicial per a Readline\n" -" -n núm\ttorna després de llegir exactament NÚM caràcters, o quan es\n" +" -i text Utilitza TEXT com a text inicial per a Readline\n" +" -n núm torna després de llegir exactament NÚM caràcters, o quan es\n" " trobi el delimitador si apareix abans de NÚM caràcters\n" " -N núm torna només després de llegir exactament NÚM caràcters,\n" " excepte si es troba EOF o s'esgota el temps d'espera,\n" @@ -4032,29 +3899,26 @@ msgstr "" " -p introd mostra la cadena INTROD sense cap caràcter de salt de línia\n" " afegit, abans d'intentar llegir res\n" " -r prohibeix escapar caràcters amb una barra invertida\n" -" -s suprimeix l'eco quan l'entrada està connectada a un " -"terminal\n" +" -s suprimeix l'eco quan l'entrada està connectada a un terminal\n" " -t temps surt si transcorre TEMPS (en segons) abans d'haver\n" " aconseguit llegir una línia sencera. Per defecte, el límit\n" -" de temps és el valor de la variable TMOUT. TEMPS pot ser " -"un\n" +" de temps és el valor de la variable TMOUT. TEMPS pot ser un\n" " número amb decimals. Si TEMPS és 0, read torna\n" " immediatament, sense intentar llegir cap dada, i torna èxit\n" " només si hi ha dades disponibles en el descriptor de fitxer\n" -" FD especificat. Un estat de sortida més gran que 128 " -"indica\n" +" FD especificat. Un estat de sortida més gran que 128 indica\n" " que s'ha esgotat el temps d'espera.\n" " -u fd llegeix dades al descriptor de fitxer FD, en lloc de a\n" " l'entrada estàndard.\n" "\n" " Estat de sortida:\n" " El codi de retorn és zero, excepte si es troba EOF (final de fitxer),\n" -" s'arriba al límit de temps (en aquest cas, és major que 128), es\n" -" produeix un error d'assignació de variable, o si heu especificat un\n" -" descriptor de fitxer invàlid amb l'opció -u." +" s'arriba al límit de temps (en aquest cas, retorna un número major que\n" +" 128), es produeix un error d'assignació de variable, o si heu\n" +" especificat un descriptor de fitxer invàlid amb l'opció -u." # help return -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -4067,15 +3931,14 @@ msgid "" msgstr "" "Torna des d'una funció de l'intèrpret.\n" "\n" -" Provoca que una funció o script executat amb «source» torni amb el " -"valor\n" +" Provoca que una funció o script executat amb «source» torni amb el valor\n" " de retorn especificat per N. Si s'omet N, l'estat de retorn és aquell\n" " de l'última ordre executada dins la funció o script.\n" "\n" " Estat de sortida:\n" " Torna N, o fallada si l'intèrpret no està executant cap funció o script." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4118,8 +3981,7 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero " -"status\n" +" or zero if no command exited with a non-zero status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -4143,8 +4005,7 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG and RETURN traps are inherited by shell " -"functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -4162,8 +4023,7 @@ msgid "" msgstr "" "Estableix opcions de l'intèrpret i paràmetres posicionals.\n" "\n" -" Modifica el valor d'atributs de l'intèrpret i de paràmetres " -"posicionals,\n" +" Modifica el valor d'atributs de l'intèrpret i de paràmetres posicionals,\n" " o mostra els noms i valors de les variables de l'intèrpret.\n" "\n" " Opcions:\n" @@ -4204,8 +4064,7 @@ msgstr "" " l'última ordre que ha acabat amb estat no-zero,\n" " o zero si cap ordre ha acabat amb estat diferent\n" " de zero\n" -" posix ajusta el comportament de bash a l'estàndard " -"Posix\n" +" posix ajusta el comportament de bash a l'estàndard Posix\n" " privileged igual que -p\n" " verbose igual que -v\n" " vi usa una interfície d'edició estil vi\n" @@ -4245,7 +4104,7 @@ msgstr "" " Estat de sortida:\n" " Torna èxit, excepte si especifiqueu una opció no vàlida." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4257,8 +4116,7 @@ msgid "" " -n\ttreat each NAME as a name reference and unset the variable itself\n" " \t\trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that " -"fails,\n" +" Without options, unset first tries to unset a variable, and if that fails,\n" " tries to unset a function.\n" " \n" " Some variables cannot be unset; also see `readonly'.\n" @@ -4286,13 +4144,12 @@ msgstr "" " Torna èxit, excepte si especifiqueu una opció no vàlida o NOM és una\n" " variable o funció de només lectura." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before " -"exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -4322,7 +4179,7 @@ msgstr "" " Torna èxit, excepte si especifiqueu una opció no vàlida o NOM no és\n" " vàlid." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4362,7 +4219,7 @@ msgstr "" " Torna èxit, excepte si especifiqueu una opció no vàlida o NOM no és\n" " vàlid." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4374,14 +4231,13 @@ msgid "" msgstr "" "Desplaça els paràmetres posicionals.\n" "\n" -" Reanomena els paràmetres posicionals $N+1, $N+2 ... com a $1, $2 ... " -"Si\n" +" Reanomena els paràmetres posicionals $N+1, $N+2 ... com a $1, $2 ... Si\n" " ometeu N, s'assumeix que és 1.\n" "\n" " Estat de sortida:\n" " Torna èxit, excepte si N és negatiu o més gran que $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4405,7 +4261,7 @@ msgstr "" " Torna l'estat de l'última ordre a FITXER executada; falla si FITXER no\n" " es pot llegir." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4420,8 +4276,7 @@ msgid "" msgstr "" "Suspèn l'execució de l'intèrpret.\n" "\n" -" Suspèn l'execució d'aquest intèrpret fins a rebre un senyal SIGCONT. " -"Si\n" +" Suspèn l'execució d'aquest intèrpret fins a rebre un senyal SIGCONT. Si\n" " no es força, les sessions d'entrada no es poden suspendre.\n" "\n" " Opcions:\n" @@ -4430,7 +4285,7 @@ msgstr "" " Estat de sortida:\n" " Torna èxit, excepte si no hi ha control de feines o es produeix un error." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4464,8 +4319,7 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last " -"read.\n" +" -N FILE True if the file has been modified since it was last read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -4486,8 +4340,7 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 " -"lexicographically.\n" +" True if STRING1 sorts before STRING2 lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -4514,8 +4367,7 @@ msgid "" msgstr "" "Avalua una expressió condicional.\n" "\n" -" Surt amb estat 0 (cert) o 1 (fals) en funció de l'avaluació d'EXPR. " -"Les\n" +" Surt amb estat 0 (cert) o 1 (fals) en funció de l'avaluació d'EXPR. Les\n" " expressions poden ser unàries o binàries. Les expressions unàries\n" " s'utilitzen sovint per a determinar l'estat de fitxers. També podeu\n" " utilitzar operadors de cadenes, i operadors de comparació numèrica.\n" @@ -4547,8 +4399,7 @@ msgstr "" " -G FITXER Cert si el vostre grup és propietari del fitxer.\n" " -N FITXER Cert si el fitxer ha canviat des de l'última lectura.\n" "\n" -" FITXER1 -nt FITXER2 Cert si fitxer1 és més nou que fitxer2 (segons " -"la\n" +" FITXER1 -nt FITXER2 Cert si fitxer1 és més nou que fitxer2 (segons la\n" " data de modificació).\n" "\n" " FITXER1 -ot FITXER2 Cert si fitxer1 és més antic que fitxer2.\n" @@ -4580,8 +4431,7 @@ msgstr "" " EXPR1 -a EXPR2 Cert si tant expr1 com expr2 són cert.\n" " EXPR1 -o EXPR2 Cert si qualsevol de expr1 o expr2 són certes.\n" "\n" -" arg1 OP arg2 Tests aritmètics. OP és un de -eq, -ne, -lt, -le, -" -"gt,\n" +" arg1 OP arg2 Tests aritmètics. OP és un de -eq, -ne, -lt, -le, -gt,\n" " o -ge.\n" "\n" " Els operadors aritmètics binaris tornen cert si ARG1 és igual, no\n" @@ -4592,7 +4442,7 @@ msgstr "" " Torna èxit si EXPR s'avalua com a cert; falla si EXPR s'avalua com a\n" " fals o si especifiqueu un argument no vàlid." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4605,12 +4455,11 @@ msgstr "" " l'últim argument ha de ser un signe «]» que tanqui el «[» inicial." # help times -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of " -"its\n" +" Prints the accumulated user and system times for the shell and all of its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4618,19 +4467,17 @@ msgid "" msgstr "" "Mostra els temps d'execució.\n" "\n" -" Mostra el temps d'execució d'usuari i sistema acumulat per l'intèrpret " -"i\n" +" Mostra el temps d'execució d'usuari i sistema acumulat per l'intèrpret i\n" " per tots els seus processos inferiors.\n" "\n" " Estat de sortida:\n" " Sempre reïx." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives " -"signals\n" +" Defines and activates handlers to be run when the shell receives signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -4639,42 +4486,33 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " -"If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " -"If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " -"a\n" -" script run by the . or source builtins finishes executing. A " -"SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause " -"the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" +" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands " -"associated\n" +" If no arguments are supplied, trap prints the list of commands associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal " -"number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is " -"given." +" Returns success unless a SIGSPEC is invalid or an invalid option is given." msgstr "" "Intercepta senyals i altres esdeveniments.\n" "\n" " Defineix i activa controladors de senyal, que són executats quan\n" " l'intèrpret rep senyals o en altres circumstàncies.\n" "\n" -" ARG és una ordre que es llegeix i s'executa quan l'intèrpret rep " -"SENYAL.\n" +" ARG és una ordre que es llegeix i s'executa quan l'intèrpret rep SENYAL.\n" " Si ometeu ARG (i especifiqueu un únic SENYAL) o ARG és «-», cada senyal\n" " és restablert al seu valor original. Si ARG és una cadena nul·la,\n" " aleshores SENYAL és ignorat per l'intèrpret i per tots els programes\n" @@ -4704,7 +4542,7 @@ msgstr "" " Torna èxit, excepte si algun SENYAL no és vàlid o especifiqueu una\n" " ordre no vàlida." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4730,8 +4568,7 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not " -"found." +" Returns success if all of the NAMEs are found; fails if any are not found." msgstr "" "Mostra informació sobre el tipus d'ordre.\n" "\n" @@ -4760,13 +4597,11 @@ msgstr "" " Torna èxit si es troben tots els NOMs; falla si n'hi ha algun que no es\n" " pot trobar." -#: builtins.c:1431 -#, fuzzy +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and " -"processes\n" +" Provides control over the resources available to the shell and processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -4810,48 +4645,47 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -"Canvia els límits d'utilització de recursos per part de l'intèrpret.\n" +"Modifica la limitació de recursos de l'intèrpret.\n" "\n" -" Permet controlar la quantitat de recursos disponibles per a l'intèrpret\n" -" d'ordres i per als processos que aquest crea, en els sistemes que\n" -" admeten tal control.\n" +" Permet especificar la quantitat de recursos disponibles per a\n" +" l'intèrpret d'ordres i per als processos que aquest crea, en els\n" +" sistemes que permeten tal control.\n" "\n" " Opcions:\n" " -S estableix una limitació «tova»\n" " -H estableix una limitació «dura»\n" -" -a\tmostra tots els límits establerts\n" -" -b\tmida màxima de la memòria intermèdia per a «sockets»\n" -" -c\tmida màxima dels fitxers de bolcat de memòria\n" -" -d\tmida màxima del segment de dades d'un procés\n" -" -e\tprioritat màxima d'un procés («nice»)\n" -" -f\tmida màxima dels fitxers escrits per l'intèrpret i fills\n" -" -i\tnombre màxim de senyals pendents\n" +" -a mostra tots els límits establerts\n" +" -b mida màxima de la memòria intermèdia per a «sockets»\n" +" -c mida màxima dels fitxers de bolcat de memòria\n" +" -d mida màxima del segment de dades d'un procés\n" +" -e prioritat màxima d'un procés («nice»)\n" +" -f mida màxima dels fitxers escrits per l'intèrpret i fills\n" +" -i nombre màxim de senyals pendents\n" " -k nombre màxim de cues («kqueue») obertes per a aquest procés\n" -" -l\tquantitat màxima de memòria que un procés pot blocar\n" -" -m\tmida màxima del conjunt resident (RSS)\n" -" -n\tnombre màxim de descriptors de fitxers oberts\n" -" -p\tmida màxima de la memòria intermèdia per a canonades\n" -" -q\tnombre màxim d'octets a les cues de missatges POSIX\n" -" -r\tprioritat màxima de temps-real\n" -" -s\tmida màxima de la pila\n" -" -t\tquantitat màxima de temps de CPU en segons\n" -" -u\tnombre màxim de processos d'usuari\n" -" -v\tmida de la memòria virtual\n" -" -x\tnombre màxim de fitxers de bloqueig\n" +" -l quantitat màxima de memòria que un procés pot blocar\n" +" -m mida màxima del conjunt resident (RSS)\n" +" -n nombre màxim de descriptors de fitxers oberts\n" +" -p mida màxima de la memòria intermèdia per a canonades\n" +" -q nombre màxim d'octets a les cues de missatges POSIX\n" +" -r prioritat màxima de temps-real\n" +" -s mida màxima de la pila\n" +" -t quantitat màxima de temps de CPU en segons\n" +" -u nombre màxim de processos d'usuari\n" +" -v mida de la memòria virtual\n" +" -x nombre màxim de fitxers de bloqueig\n" " -P nombre màxim de pseudoterminals\n" +" -R temps màxim d'execució per a processos de temps real\n" " -T nombre màxim de fils d'execució\n" "\n" " Algunes opcions poden no estar disponibles en algunes plataformes.\n" "\n" " Si especifiqueu un LÍMIT, aquest s'utilitza com a nou valor per al\n" " recurs indicat; els valors especials de LÍMIT són «soft», «hard» i\n" -" «unlimited», que signifiquen límit tou actual, límit dur actual, i " -"sense\n" +" «unlimited», que signifiquen límit tou actual, límit dur actual, i sense\n" " límit, respectivament. En cas contrari, es mostra el valor actual per\n" " al recurs especificat. Si no especifiqueu cap opció, se suposa -f.\n" "\n" -" Els valors s'indiquen en increments de 1024 octets, excepte en el cas " -"de\n" +" Els valors s'indiquen en increments de 1024 octets, excepte en el cas de\n" " l'opció -t, que és en segons, -p, que és en increments de 512 octets, i\n" " -u, que és en nombre de processos.\n" "\n" @@ -4859,7 +4693,7 @@ msgstr "" " Torna èxit, tret que especifiqueu una opció invàlida o es produeixi un\n" " error." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4887,34 +4721,29 @@ msgstr "" " Opcions:\n" " -p sense MODE, mostra la sortida en un format que es pot\n" " reciclar com a entrada\n" -" -S\tmostra la màscara en forma simbòlica; altrament produeix un\n" +" -S mostra la màscara en forma simbòlica; altrament produeix un\n" " número octal\n" "\n" " Estat de sortida:\n" " Torna èxit, excepte si MODE no és vàlid o passeu una opció no vàlida." -#: builtins.c:1502 -#, fuzzy +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for each process identified by an ID, which may be a process ID or " -"a\n" +" Waits for each process identified by an ID, which may be a process ID or a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" " status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" -" If the -n option is supplied, waits for a single job from the list of " -"IDs,\n" -" or, if no IDs are supplied, for the next job to complete and returns " -"its\n" +" If the -n option is supplied, waits for a single job from the list of IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns its\n" " exit status.\n" " \n" " If the -p option is supplied, the process or job identifier of the job\n" " for which the exit status is returned is assigned to the variable VAR\n" -" named by the option argument. The variable will be unset initially, " -"before\n" +" named by the option argument. The variable will be unset initially, before\n" " any assignment. This is useful only when the -n option is supplied.\n" " \n" " If the -f option is supplied, and job control is enabled, waits for the\n" @@ -4925,32 +4754,43 @@ msgid "" " option is given, or if -n is supplied and the shell has no unwaited-for\n" " children." msgstr "" -"Espera la finalització de feines i en retorna l'estat de sortida.\n" +"Espera la finalització de feines i retorna l'estat de sortida.\n" "\n" " Espera que cada procés identificat per un ID, que pot ser l'ID del\n" -" procés o una especificació de feina, acabi d'executar-se, i en torna\n" +" procés o una especificació de feina, acabi d'executar-se, i informa de\n" " l'estat de sortida. Si ometeu ID, espera que acabin d'executar-se tots\n" " els processos inferiors, i surt amb estat zero. Si ID és una\n" " especificació de feina, espera cada un dels processos a la canonada\n" " d'aquella feina.\n" "\n" +" Si especifiqueu l'opció -n, espera que finalitzi una única feina de la\n" +" llista d'IDs. Si no s'ha especificat cap ID, espera que finalitzi la\n" +" propera feina i en retorna l'estat de sortida.\n" +"\n" +" Si especifiqueu l'opció -p, el procés o l'identificador de la feina\n" +" s'assigna a la variable VAR. La variable inicialment serà esborrada,\n" +" abans de que es podueixi assignació. L'opció -p només és útil en\n" +" combinació amb l'opció -n.\n" +"\n" +" Si especifiqueu l'opció -f, i el control de feines està habilitat,\n" +" espera fins que les IDs especificades finalitzin, enlloc d'esperar fins\n" +" que canviïn d'estat.\n" +"\n" " Estat de sortida:\n" -" Torna l'estat de sortida de l'últim ID; falla si ID no és vàlid o " -"passeu\n" -" una opció no vàlida." +" Torna l'estat de sortida de l'última ID; falla si ID no és vàlid o\n" +" passeu una opció no vàlida, o si s'ha especificat -n i l'intèrpret no té\n" +" processos inferiors que no s'estiguin esperant." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for each process specified by a PID and reports its termination " -"status.\n" +" Waits for each process specified by a PID and reports its termination status.\n" " If PID is not given, waits for all currently active child processes,\n" " and the return status is zero. PID must be a process ID.\n" " \n" " Exit Status:\n" -" Returns the status of the last PID; fails if PID is invalid or an " -"invalid\n" +" Returns the status of the last PID; fails if PID is invalid or an invalid\n" " option is given." msgstr "" "Espera la finalització de processos i en retorna l'estat de sortida.\n" @@ -4964,7 +4804,7 @@ msgstr "" " Torna l'estat de sortida de l'últim PID; falla si PID no és vàlid o es\n" " passa una opció no vàlida." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4980,14 +4820,13 @@ msgstr "" "\n" " Els bucles «for» executen una seqüència d'ordres per a cada un dels\n" " elements d'una llista. Si «in PARAULES ...;» s'omet, aleshores se\n" -" suposa «in \"$@\"». Per a cada element de la llista PARAULES, " -"l'element\n" +" suposa «in \"$@\"». Per a cada element de la llista PARAULES, l'element\n" " s'assigna a NOM, i les ORDRES s'executen.\n" "\n" " Estat de sortida:\n" " Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -5006,11 +4845,11 @@ msgstr "" "Bucle «for» aritmètic.\n" "\n" " Equivalent a\n" -" \t(( EXP1 ))\n" -" \twhile (( EXP2 )); do\n" -" \t\tORDRES\n" -" \t\t(( EXP 3 ))\n" -" \tdone\n" +" (( EXP1 ))\n" +" while (( EXP2 )); do\n" +" ORDRES\n" +" (( EXP 3 ))\n" +" done\n" "\n" " EXP1, EXP2 i EXP3 són expressions aritmètiques. Si s'omet qualsevol de\n" " les expressions, es comporta com si el resultat de l'avaluació de\n" @@ -5019,7 +4858,7 @@ msgstr "" " Estat de sortida:\n" " Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5042,11 +4881,9 @@ msgstr "" "\n" " Les PARAULES s'expandeixen i generen una llista de paraules. Les\n" " paraules expandides s'envien a la sortida d'errors estàndard, cada una\n" -" precedida per un número. Si «in PARAULES» s'omet, se suposa «in \"$@" -"\"».\n" +" precedida per un número. Si «in PARAULES» s'omet, se suposa «in \"$@\"».\n" " Llavors, es mostra l'introductor PS3 i es llegeix una línia a l'entrada\n" -" estàndard. Si la línia correspon amb el número d'alguna de les " -"paraules\n" +" estàndard. Si la línia correspon amb el número d'alguna de les paraules\n" " mostrades, aleshores aquesta paraula s'assigna a NOM. Si la línia està\n" " buida, les PARAULES i l'introductor es tornen a mostrar. Si es llegeix\n" " EOF, l'ordre finalitza. Qualsevol altre valor llegit, fa que s'assigni\n" @@ -5058,7 +4895,7 @@ msgstr "" " Torna l'estat de sortida de l'última ordre executada." # help time -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5076,8 +4913,7 @@ msgstr "" "Informa del temps transcorregut durant l'execució d'una canonada.\n" "\n" " Executa CANONADA i mostra un resum del temps real, el temps de CPU\n" -" d'usuari i el temps de CPU de sistema transcorregut durant l'execució " -"de\n" +" d'usuari i el temps de CPU de sistema transcorregut durant l'execució de\n" " CANONADA.\n" "\n" " Opcions:\n" @@ -5088,7 +4924,7 @@ msgstr "" " Estat de sortida:\n" " L'estat de sortida és l'estat de sortida de la CANONADA." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5100,28 +4936,22 @@ msgid "" msgstr "" "Executa ordres segons la coincidència amb patrons.\n" "\n" -" Executa ORDRES de forma selectiva en funció de si PARAULA coincideix " -"amb\n" +" Executa ORDRES de forma selectiva en funció de si PARAULA coincideix amb\n" " PATRÓ. El signe «|» serveix per a separar múltiples patrons.\n" "\n" " Estat de sortida:\n" " Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then " -"the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " -"is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. " -"Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of " -"the\n" -" entire construct is the exit status of the last command executed, or " -"zero\n" +" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of the\n" +" entire construct is the exit status of the last command executed, or zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" @@ -5135,51 +4965,50 @@ msgstr "" " sortida zero, també s'executa la corresponent llista «then ORDRES», i\n" " l'ordre if finalitza. En cas contrari, la llista «else ORDRES»\n" " s'executa, si és que existeix. L'estat de sortida la construcció\n" -" sencera és l'estat de sortida de l'última ordre executada, o zero si " -"cap\n" +" sencera és l'estat de sortida de l'última ordre executada, o zero si cap\n" " de les condicions s'avalua com a certa.\n" "\n" " Estat de sortida:\n" " Torna l'estat de l'última ordre executada." -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Executa ordres repetidament mentre es compleixi una condició.\n" "\n" -" Expandeix i executa ORDRES repetidament mentre l'última ordre de les\n" -" «ORDRES while» tingui estat de sortida igual a zero.\n" +" Expandeix i executa ORDRES-2 repetidament mentre l'última ordre de\n" +" les ORDRES tingui estat de sortida igual a zero.\n" "\n" " Estat de sortida:\n" " Torna l'estat de l'última ordre executada." -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Executa ordres repetidament mentre no es compleixi una condició.\n" "\n" -" Expandeix i executa ORDRES repetidament mentre l'última ordre de les\n" -" ORDRES «until» tingui estat de sortida diferent de zero.\n" +" Expandeix i executa ORDRES-2 repetidament mentre l'última ordre de\n" +" les ORDRES tingui estat de sortida diferent de zero.\n" "\n" " Estat de sortida:\n" " Torna l'estat de l'última ordre executada." # help coproc -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5193,8 +5022,7 @@ msgid "" msgstr "" "Crea un coprocés anomenat NOM.\n" "\n" -" Executa ORDRE de forma asincrònica, amb la sortida estàndard i " -"l'entrada\n" +" Executa ORDRE de forma asincrònica, amb la sortida estàndard i l'entrada\n" " estàndard de l'ordre connectades via canonada als descriptors de fitxer\n" " assignats als índexs 0 i 1 de la variable vector NOM. Per defecte NOM\n" " és \"COPROC\".\n" @@ -5202,13 +5030,12 @@ msgstr "" " Estat de sortida:\n" " Torna l'estat de sortida d'ORDRE." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is " -"invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" @@ -5217,8 +5044,7 @@ msgid "" msgstr "" "Defineix una funció.\n" "\n" -" Crea una funció de l'intèrpret anomenada NOM. Quan s'invoca com a " -"ordre\n" +" Crea una funció de l'intèrpret anomenada NOM. Quan s'invoca com a ordre\n" " simple, NOM executa ORDRES en el context de l'intèrpret de qui fa la\n" " crida. Quan NOM s'invoca, els arguments es passen a la funció com a\n" " $1...$n, i el nom de la funció es troba a $FUNCNAME.\n" @@ -5226,7 +5052,7 @@ msgstr "" " Estat de sortida:\n" " Torna èxit, excepte si NOM és de només lectura." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5244,7 +5070,7 @@ msgstr "" " Estat de sortida:\n" " Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5259,8 +5085,7 @@ msgid "" msgstr "" "Reprèn una feina i la porta al primer pla.\n" "\n" -" Equivalent a utilitzar FEINA com a argument en l'ordre «fg». Reprèn " -"una\n" +" Equivalent a utilitzar FEINA com a argument en l'ordre «fg». Reprèn una\n" " feina aturada o en segon pla. FEINA pot ser el nom d'una feina, o el\n" " número d'una feina. Si es troba un «&» després de FEINA, llavors la\n" " feina s'envia en un segon pla, com si l'especificació de feina\n" @@ -5270,8 +5095,7 @@ msgstr "" " Torna l'estat de sortida de la feina represa." # help '((' -#: builtins.c:1726 -#, fuzzy +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5290,16 +5114,13 @@ msgstr "" " Si el resultat de l'avaluació és 0, torna 1; altrament torna 0." # help '[[' -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the " -"conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries " -"used\n" -" by the `test' builtin, and may be combined using the following " -"operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries used\n" +" by the `test' builtin, and may be combined using the following operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -5330,10 +5151,8 @@ msgstr "" " EXPR1 || EXPR2 Cert si EXPR1 o EXPR2 és cert; si no, fals.\n" "\n" " Quan s'utilitzen els operadors «==» o «!=», el component de la dreta\n" -" s'interpreta com a un patró i es comprova si coincideix amb la cadena " -"de\n" -" l'esquerra de l'operador. Quan s'utilitza l'operador «=~», el " -"component\n" +" s'interpreta com a un patró i es comprova si coincideix amb la cadena de\n" +" l'esquerra de l'operador. Quan s'utilitza l'operador «=~», el component\n" " de la dreta de l'operador s'interpreta com a expressió regular i es\n" " comprova si coincideix amb la cadena de l'esquerra de l'operador.\n" "\n" @@ -5343,7 +5162,7 @@ msgstr "" " Estat de sortida:\n" " 0 o 1, depenent del valor d'EXPRESSIÓ." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5399,45 +5218,45 @@ msgstr "" "Nom i ús de variables de l'intèrpret habituals.\n" "\n" " BASH_VERSION Informació de la versió de Bash.\n" -" CDPATH\t\tLlista de directoris separats per «:» on buscar\n" +" CDPATH Llista de directoris separats per «:» on buscar\n" " directoris passats com a arguments a «cd».\n" -" GLOBIGNORE\t\tLlista de patrons separats per «:» que indiquen noms\n" +" GLOBIGNORE Llista de patrons separats per «:» que indiquen noms\n" " que s'ignoren en fer expansions de noms de fitxer.\n" -" HISTFILE\t\tNom del fitxer on es desa l'historial d'ordres.\n" -" HISTFILESIZE\tNombre màxim de línies que pot contenir el\n" +" HISTFILE Nom del fitxer on es desa l'historial d'ordres.\n" +" HISTFILESIZE Nombre màxim de línies que pot contenir el\n" " fitxer de l'historial.\n" -" HISTSIZE\t\tNombre màxim de línies de l'historial a què un\n" -" \t\t\tintèrpret té accés.\n" -" HOME\t\tCamí complet cap al vostre directori personal.\n" -" HOSTNAME\t\tNom de la màquina actual.\n" -" HOSTTYPE\t\tTipus de CPU de la màquina en què corre Bash.\n" -" IGNOREEOF\t Controla el comportament de l'intèrpret en trobar un\n" -" \t\t\tcaràcter EOF (final de fitxer) com a únic caràcter.\n" +" HISTSIZE Nombre màxim de línies de l'historial a què un\n" +" intèrpret té accés.\n" +" HOME Camí complet cap al vostre directori personal.\n" +" HOSTNAME Nom de la màquina actual.\n" +" HOSTTYPE Tipus de CPU de la màquina en què corre Bash.\n" +" IGNOREEOF Controla el comportament de l'intèrpret en trobar un\n" +" caràcter EOF (final de fitxer) com a únic caràcter.\n" " Si la variable està definida, llavors el seu valor\n" " és el nombre de caràcters EOF seguits que es poden\n" " llegir en una línia buida abans que l'intèrpret\n" " surti (per defecte: 10). Si no està definida, EOF\n" " s'interpreta com el final de les dades d'entrada.\n" -" MACHTYPE\t\tCadena que descriu el sistema en què corre Bash.\n" -" MAILCHECK\t\tAmb quina freqüència, en segons, Bash comprova si hi\n" +" MACHTYPE Cadena que descriu el sistema en què corre Bash.\n" +" MAILCHECK Amb quina freqüència, en segons, Bash comprova si hi\n" " ha correu nou.\n" -" MAILPATH\t\tLlista de fitxers separats per «:» que Bash comprova\n" +" MAILPATH Llista de fitxers separats per «:» que Bash comprova\n" " si tenen correu nou.\n" -" OSTYPE\t\tLa versió de Unix en què corre Bash.\n" -" PATH\t\tLlista de directoris separats per «:» on buscar quan\n" -" \t\t\tse cerquen ordres.\n" -" PROMPT_COMMAND\tOrdre que s'executa cada cop abans de mostrar\n" -" \t\t\tl'introductor de l'intèrpret.\n" -" PS1\t\t\tCadena de l'introductor principal.\n" -" PS2\t\t\tCadena de l'introductor secundari.\n" -" PWD\t\t\tCamí complet cap al directori corrent.\n" -" SHELLOPTS\t\tLlista d'opcions habilitades separades per «:».\n" -" TERM\t\tNom del tipus de terminal actual.\n" -" TIMEFORMAT\t\tFormat de sortida per a les estadístiques de temps\n" -" \t\t\tproduïdes per l'ordre «time».\n" -" auto_resume\t\tNo-nul·la significa que una ordre sola en una línia\n" -" \t\t\tes busca en primera instància a la llista actual de\n" -" \t\t\tfeines aturades. Si es troba, aquella feina es\n" +" OSTYPE La versió de Unix en què corre Bash.\n" +" PATH Llista de directoris separats per «:» on buscar quan\n" +" se cerquen ordres.\n" +" PROMPT_COMMAND Ordre que s'executa cada cop abans de mostrar\n" +" l'introductor de l'intèrpret.\n" +" PS1 Cadena de l'introductor principal.\n" +" PS2 Cadena de l'introductor secundari.\n" +" PWD Camí complet cap al directori corrent.\n" +" SHELLOPTS Llista d'opcions habilitades separades per «:».\n" +" TERM Nom del tipus de terminal actual.\n" +" TIMEFORMAT Format de sortida per a les estadístiques de temps\n" +" produïdes per l'ordre «time».\n" +" auto_resume No-nul·la significa que una ordre sola en una línia\n" +" es busca en primera instància a la llista actual de\n" +" feines aturades. Si es troba, aquella feina es\n" " passa a primer pla. El valor «exact» significa que\n" " l'ordre ha de coincidir exactament amb alguna ordre\n" " de la llista de feines aturades. El valor\n" @@ -5445,18 +5264,18 @@ msgstr "" " amb una subcadena de la feina. Qualsevol altre\n" " valor significa que l'ordre ha de ser el prefix\n" " d'una feina aturada.\n" -" histchars\t\tCaràcters que controlen l'expansió de l'historial i\n" -" \t\t\tles substitucions ràpides. El primer caràcter és el\n" -" \t\t\tcaràcter de substitució de l'historial, habitualment\n" -" \t\t\t«!». El segon és el caràcter de «substitució\n" +" histchars Caràcters que controlen l'expansió de l'historial i\n" +" les substitucions ràpides. El primer caràcter és el\n" +" caràcter de substitució de l'historial, habitualment\n" +" «!». El segon és el caràcter de «substitució\n" " ràpida», normalment «^». El tercer és el caràcter\n" " de «comentari d'historial», normalment «#».\n" -" HISTIGNORE\t\tLlista de patrons separats per «:» utilitzats per a\n" -" \t\t\tdecidir si les ordres s'han de desar a l'historial.\n" +" HISTIGNORE Llista de patrons separats per «:» utilitzats per a\n" +" decidir si les ordres s'han de desar a l'historial.\n" # si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més # enrere en aquest fitxer -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5518,7 +5337,7 @@ msgstr "" # si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més # enrere en aquest fitxer -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5573,7 +5392,7 @@ msgstr "" # si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més # enrere en aquest fitxer -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5604,8 +5423,7 @@ msgstr "" "Mostra la pila de directoris.\n" "\n" " Mostra la llista actual de directoris recordats. Els directoris són\n" -" afegits a la llista mitjançant l'ordre «pushd»; podeu recórrer la " -"llista\n" +" afegits a la llista mitjançant l'ordre «pushd»; podeu recórrer la llista\n" " de directoris cap enrere amb l'ordre «popd».\n" "\n" " Opcions:\n" @@ -5629,8 +5447,7 @@ msgstr "" " Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n" " error." -#: builtins.c:1916 -#, fuzzy +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5651,21 +5468,23 @@ msgid "" msgstr "" "Activa i desactiva opcions de l'intèrpret.\n" "\n" -" Canvia l'estat de cada OPCIÓ. Si no especifiqueu cap OPCIÓ, mostra una\n" -" llista de totes les opcions indicant si estan activades o no.\n" +" Canvia l'estat de cada OPCIÓ. Sense cap argument d'opció, mostra un\n" +" llistat amb cada OPCIÓ, o un llistat amb totes les opcions de\n" +" l'intèrpret si no s'ha especificat cap OPCIÓ, indicant si les opcions\n" +" estan activades o no.\n" "\n" " Opcions:\n" " -o limita les opcions a les que es poden canviar amb «set -o»\n" -" -p\tmostra totes les opcions indicant-ne l'estat\n" -" -q\tsuprimeix la sortida\n" -" -s\tactiva OPCIÓ\n" -" -u\tdesactiva OPCIÓ\n" +" -p mostra totes les opcions indicant-ne l'estat\n" +" -q suprimeix la sortida\n" +" -s activa OPCIÓ\n" +" -u desactiva OPCIÓ\n" "\n" " Estat de sortida:\n" " Torna èxit si OPCIÓ està activada; falla si especifiqueu una opció\n" " invàlida o OPCIÓ està desactivada." -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5673,34 +5492,29 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: " -"plain\n" -" characters, which are simply copied to standard output; character " -"escape\n" +" FORMAT is a character string which contains three types of objects: plain\n" +" characters, which are simply copied to standard output; character escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next " -"successive\n" +" format specifications, each of which causes printing of the next successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T\toutput the date-time string resulting from using FMT as a " -"format\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" -" specifications behave as if a zero value or null string, as " -"appropriate,\n" +" specifications behave as if a zero value or null string, as appropriate,\n" " had been supplied.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or " -"assignment\n" +" Returns success unless an invalid option is given or a write or assignment\n" " error occurs." msgstr "" "Formata i escriu ARGUMENTS d'acord amb FORMAT.\n" @@ -5721,6 +5535,8 @@ msgstr "" " %b expandeix seqüències d'escapada a l'argument corresponent\n" " %q afegeix les cometes necessàries perquè l'argument pugui ser\n" " utilitzat com a entrada de l'intèrpret\n" +" %Q com %q, però aplica qualsevol precisió a l'argument abans\n" +" d'afegir les cometes \n" " %(fmt)T escriu la cadena resultant de passar FMT a strftime(3) com a\n" " argument\n" "\n" @@ -5733,15 +5549,12 @@ msgstr "" " Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n" " error d'assignació o d'escriptura." -#: builtins.c:1971 -#, fuzzy +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no " -"options\n" -" are supplied, existing completion specifications are printed in a way " -"that\n" +" For each NAME, specify how arguments are to be completed. If no options\n" +" are supplied, existing completion specifications are printed in a way that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -5756,10 +5569,8 @@ msgid "" " \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. If multiple options are " -"supplied,\n" -" the -D option takes precedence over -E, and both take precedence over -" -"I.\n" +" uppercase-letter options are listed above. If multiple options are supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5773,26 +5584,29 @@ msgstr "" " Opcions:\n" " -p mostra les especificacions existents en format reciclable\n" " -r suprimeix l'especificació de compleció per a NOM, o, si no\n" -" \t\ts'indica cap NOM, totes les especificacions de compleció\n" -" -D assigna les accions o complecions a totes les ordres que no\n" +" s'indica cap NOM, totes les especificacions de compleció\n" +" -D assigna les accions i complecions a totes les ordres que no\n" " tenen definida una compleció específica\n" -" -E assigna les accions o complecions a ordres \"en blanc\", o\n" +" -E assigna les accions i complecions a ordres \"en blanc\", o\n" " sigui, als intents de completar una línia en blanc\n" +" -I assigna les accions i complecions a la paraula inicial\n" +" (normalment una ordre)\n" "\n" -" Quan s'intenta una compleció, les accions s'apliquen en l'ordre en què\n" -" les opcions -D i -E apareixen al paràgraf anterior. L'opció -D té\n" -" preferència sobre l'opció -E.\n" +" Quan s'intenta una compleció, s'apliquen primer les accions\n" +" especificades amb l'opció -D, seguides de les acciones especificades amb\n" +" l'opció -E, i l'opció -I (en aquest ordre). Si es proporcionen\n" +" múltiples opcions, l'opció -D té preferència sobre l'opció -E, i ambdues\n" +" opcions tenen preferència sobre l'opció -I.\n" "\n" " Estat de sortida:\n" " Torna èxit, excepte si passeu una opció invàlida o es produeix un error." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches " -"against\n" +" completions. If the optional WORD argument is supplied, matches against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -5800,25 +5614,20 @@ msgid "" msgstr "" "Mostra possibles complecions en funció de les opcions.\n" "\n" -" Aquesta ordre està pensada per a ser utilitzada en una funció que " -"generi\n" +" Aquesta ordre està pensada per a ser utilitzada en una funció que generi\n" " possibles complecions. Si especifiqueu l'argument opcional PARAULA, es\n" " limiten les complecions a aquelles que coincideixen amb PARAULA.\n" "\n" " Estat de sortida:\n" " Torna èxit, excepte si passeu una opció invàlida o es produeix un error." -#: builtins.c:2016 -#, fuzzy +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are " -"supplied,\n" -" the completion currently being executed. If no OPTIONs are given, " -"print\n" -" the completion options for each NAME or the current completion " -"specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" +" the completion currently being executed. If no OPTIONs are given, print\n" +" the completion options for each NAME or the current completion specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -5842,17 +5651,16 @@ msgid "" msgstr "" "Modifica o mostra opcions de compleció.\n" "\n" -" Modifica les opcions de compleció de NOM, o, si no especifiqueu cap " -"NOM,\n" +" Modifica les opcions de compleció de NOM, o, si no especifiqueu cap NOM,\n" " la compleció que s'està executant en el moment. Si no s'indica cap\n" " OPCIÓ, mostra les opcions de compleció per a cada NOM o\n" " l'especificació de compleció en ús.\n" "\n" " Opcions:\n" " -o opció Activa OPCIÓ per a NOM\n" -" -D Canvia les opcions de compleció d'ordres per " -"defecte\n" -" -E Canvia les opcions de compleció d'ordres \"buides\"\n" +" -D Canvia les opcions de compleció d'ordres per defecte\n" +" -E Canvia les opcions de compleció d'ordres «buides»\n" +" -I Canvia les opcions de compleció de la paraula inicial\n" "\n" " Si utilitzeu «+o» en lloc de «-o», desactiva l'opció especificada.\n" "\n" @@ -5860,8 +5668,7 @@ msgstr "" "\n" " Cada NOM és el nom d'una ordre per la qual s'ha d'haver definit una\n" " especificació de compleció amb l'ordre interna «complete». Si no\n" -" especifiqueu cap NOM, compopt s'ha de cridar des d'una funció " -"generadora\n" +" especifiqueu cap NOM, compopt s'ha de cridar des d'una funció generadora\n" " de complecions, i les opcions que es modifiquen afecten la generació de\n" " complecions que s'està executant en aquell moment.\n" "\n" @@ -5870,26 +5677,21 @@ msgstr "" " definida cap especificació de compleció." # help readarray -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable " -"ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable " -"MAPFILE\n" +" Read lines from the standard input into the indexed array variable ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" " -d delim\tUse DELIM to terminate lines, instead of newline\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n" " -s count\tDiscard the first COUNT lines read\n" " -t\tRemove a trailing DELIM from each line read (default newline)\n" -" -u fd\tRead lines from file descriptor FD instead of the standard " -"input\n" +" -u fd\tRead lines from file descriptor FD instead of the standard input\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" " -c quantum\tSpecify the number of lines read between each call to\n" " \t\t\tCALLBACK\n" @@ -5902,13 +5704,11 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY " -"before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly " -"or\n" +" Returns success unless an invalid option is given or ARRAY is readonly or\n" " not an indexed array." msgstr "" "Llegeix línies d'un fitxer cap a una variable vector.\n" @@ -5918,26 +5718,23 @@ msgstr "" " per defecte és MAPFILE.\n" "\n" " Opcions:\n" -" -d delim Usa DELIM com delimitador de línies, en lloc del caràcter " -"de\n" +" -d delim Usa DELIM com delimitador de línies, en lloc del caràcter de\n" " salt de línia\n" " -n nombre Copia com a màxim NOMBRE línies. Si NOMBRE és 0, es copien\n" -" \t\ttotes les línies.\n" +" totes les línies.\n" " -O origen Comença l'assignació a l'índex ORIGEN, per defecte 0.\n" " -s nombre Descarta les primeres NOMBRE línies.\n" " -t Estripa el caràcter de salt de línia de cada línia llegida.\n" " -u fd Llegeix el descriptor de fitxer FD, en lloc de l'entrada\n" " estàndard.\n" " -C callback Avalua CALLBACK cada QUÀNTUM línies llegides.\n" -" -c quàntum Nombre de línies llegides abans de cridar " -"CALLBACK\n" +" -c quàntum Nombre de línies llegides abans de cridar CALLBACK\n" "\n" " Arguments:\n" " VECTOR Nom de la variable vector per a les dades.\n" "\n" " Si especifiqueu l'opció -C sense -c, el quàntum per defecte és 5000.\n" -" Quan s'avalua la funció CALLBACK, se li passa l'índex del proper " -"element\n" +" Quan s'avalua la funció CALLBACK, se li passa l'índex del proper element\n" " del vector i la línia que s'assigna a aquest element, com a arguments\n" " addicionals.\n" "\n" @@ -5948,7 +5745,7 @@ msgstr "" " Torna èxit, excepte si passeu una opció no vàlida o VECTOR és de només\n" " lectura o no és una variable vector." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5958,9 +5755,8 @@ msgstr "" "\n" " Un sinònim de «mapfile»." -#, fuzzy -#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2016 Free Software Foundation, Inc." +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: clau de vector associatiu no vàlida" #~ msgid "add_process: process %5ld (%s) in the_pipeline" #~ msgstr "add_process: procés %5ld (%s) a the_pipeline" @@ -5968,6 +5764,9 @@ msgstr "" #~ msgid "Unknown Signal #" #~ msgstr "Senyal Desconegut #" +#~ msgid "Copyright (C) 2016 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2016 Free Software Foundation, Inc." + #, fuzzy #~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." #~ msgstr "Copyright (C) 2013 Free Software Foundation, Inc." diff --git a/po/cs.gmo b/po/cs.gmo index aa75fcc52..39e0b6c70 100644 Binary files a/po/cs.gmo and b/po/cs.gmo differ diff --git a/po/cs.po b/po/cs.po index bb123dbde..d2df43b12 100644 --- a/po/cs.po +++ b/po/cs.po @@ -2,7 +2,7 @@ # Copyright (C) 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Petr Pisar , 2008, 2009, 2010, 2011, 2012, 2013, 2014. -# Petr Pisar , 2015, 2016, 2018, 2019, 2020. +# Petr Pisar , 2015, 2016, 2018, 2019, 2020, 2022. # # alias → alias # subscript → podskript @@ -12,10 +12,10 @@ # Názvy signálů a stavů procesu by měly souhlasit se signal(7). msgid "" msgstr "" -"Project-Id-Version: bash 5.1\n" +"Project-Id-Version: bash 5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2020-12-10 10:46+01:00\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-06-21 20:10+02:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "Language: cs\n" @@ -29,57 +29,52 @@ msgstr "" msgid "bad array subscript" msgstr "chybný podskript pole" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: odstraňuje se atribut odkazu na název" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: číslované pole nezle převést na pole asociativní" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: neplatný klíč asociativního pole" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: přes nečíselný indexu nelze dosadit" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: při přiřazovaní asociativního pole se musí použít podskript" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nelze vytvořit: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: pro příkaz nelze nalézt klávesovou mapu " -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: první nebílý znak není „\"“" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "ne zavírající „%c“ v %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: chybí dvojtečkový oddělovač" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "„%s“: v mapě kláves příkazů nelze zruÅ¡it vazbu" @@ -100,7 +95,7 @@ msgstr "závorková expanze: alokace paměti pro %u prvků selhala" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "závorková expanze: alokace paměti pro „%s“ selhala" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: chybný název aliasu" @@ -171,7 +166,7 @@ msgstr "" msgid "HOME not set" msgstr "není nestavena HOME" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "příliÅ¡ mnoho argumentů" @@ -198,7 +193,7 @@ msgstr "varování: " msgid "%s: usage: " msgstr "%s: užití: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: přepínač vyžaduje argument" @@ -213,7 +208,7 @@ msgstr "%s: vyžadován číselný argument" msgid "%s: not found" msgstr "%s: nenalezeno" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: chybný přepínač" @@ -223,7 +218,7 @@ msgstr "%s: chybný přepínač" msgid "%s: invalid option name" msgstr "%s: chybný název přepínače" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: není platným identifikátorem" @@ -236,7 +231,7 @@ msgstr "neplatné osmičkové číslo" msgid "invalid hex number" msgstr "chybné Å¡estnáctkové číslo" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "chybné číslo" @@ -250,88 +245,93 @@ msgstr "%s: chybné určení signálu" msgid "`%s': not a pid or valid job spec" msgstr "„%s“: není PID ani platným označením úlohy" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: proměnná pouze pro čtení" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s: nelze přiřadit" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s mimo rozsah" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s mimo rozsah" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: žádná taková úloha" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: žádné řízení úloh" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "žádné řízení úloh" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: omezeno" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "omezeno" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: není vestavěným příkazem shellu" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "chyba zápisu: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "chyba při nastavování vlastností terminálu: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "chyba při získávání vlastností terminálu: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: chyba při zjišťování současného adresáře: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: nejednoznačné určení úlohy" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "k této verzi není dostupná nápověda" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nelze zruÅ¡it: %s jen pro čtení" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: nelze zruÅ¡it" @@ -341,108 +341,108 @@ msgstr "%s: nelze zruÅ¡it" msgid "%s: invalid action name" msgstr "%s: neplatný název akce" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: žádné doplňování neurčeno" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "varování: přepínač -F možná nebude dělat, co jste čekali" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "varování: přepínač -C možná nebude dělat, co jste čekali" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "doplňovací funkce se právě nevykonává" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "může být použito jen ve funkci" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "„-f“ nezle použít na výrobu funkce" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funkce jen pro čtení" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: proměnná s odkazem nemůže být polem" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: proměnná s odkazem na název nemůže odkazovat sama na sebe" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: kruhový odkaz na název" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "„%s“: neplatný název proměnné pro odkaz na název" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "„-f“ nezle použít na výrobu funkce" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: funkce jen pro čtení" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: přiřazení do složeného pole uzavřeného v uvozovkách je zastaralé" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: takto nelze likvidovat pole" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: asociativní pole nelze převést na číslované pole" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: přiřazení do složeného pole uzavřeného v uvozovkách je zastaralé" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "dynamické nahrávání není dostupné" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "sdílený objekt %s nelze otevřít: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "ve sdílením objektu %2$s nelze nalézt %1$s: %3$s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: vestavěné příkazy již dynamicky zavedeny" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "zaváděcí funkce pro %s vrací chybu (%d): nezavedeno" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: není dynamicky nahráno" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: nelze smazat: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: je adresářem" @@ -457,7 +457,7 @@ msgstr "%s: není obyčejný soubor" msgid "%s: file is too large" msgstr "%s: soubor je příliÅ¡ velký" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: binární soubor nelze spustit" @@ -555,12 +555,12 @@ msgstr "" msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "žádné téma nápovědy se nehodí pro „%s“. Zkuste „help help“ nebo „man -k %s“ nebo „info %s“." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nelze otevřít: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -580,21 +580,21 @@ msgstr "" "Hvězdička (*) vedle jména znamená, že příkaz je zakázán.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "nelze použít více jak jeden z -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "místo v historii" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: neplatný časový údaj" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: expanze historie selhala" @@ -617,78 +617,78 @@ msgstr "%s: argumenty musí být proces nebo identifikátor úlohy" msgid "Unknown error" msgstr "Neznámá chyba" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "očekáván výraz" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: není (proměnnou typu) indexované pole" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: chybné určení deskriptoru souboru" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neplatný deskriptor souboru: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: chybný počet řádků" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: chybný počátek pole" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neplatné množství mezi voláními" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "prázdný název proměnné typu pole" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "je vyžadována podpora proměnných typu pole" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "„%s“: postrádám formátovací znak" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: chybné určení časového limitu" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: neplatný formátovací znak" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "varování: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "potíže s rozebráním formátovacího řetězce: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "u \\x chybí Å¡estnáctková číslovka" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "u \\%c chybí unikódová číslovka" @@ -837,12 +837,12 @@ msgstr "" " \n" " Zásobník adresářů si můžete prohlédnout příkazem „dirs“." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: chybné určení časového limitu" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "chyba čtení: %d: %s" @@ -855,7 +855,7 @@ msgstr "„return“ lze provést jen z funkce nebo skriptu načteného přes msgid "cannot simultaneously unset a function and a variable" msgstr "funkci i proměnnou nelze ruÅ¡it současně" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: není (proměnnou typu) pole" @@ -874,11 +874,11 @@ msgstr "%s: nelze exportovat" msgid "shift count" msgstr "počet shiftů" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "přepínač shellu nelze zároveň nastavit a zruÅ¡it" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: chybný název přepínače shellu" @@ -945,16 +945,16 @@ msgstr "%s: chybný argument s limitou" msgid "`%c': bad command" msgstr "„%c“: chybný příkaz" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: limit nelze zjistit: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: limit nelze změnit: %s" @@ -973,7 +973,7 @@ msgstr "„%c“: chybný operátor symbolických práv" msgid "`%c': invalid symbolic mode character" msgstr "„%c“: chybný znak symbolický práv " -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " řádek " @@ -993,96 +993,106 @@ msgstr "Ukončuji…" msgid "INFORM: " msgstr "INFORMACE: " -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "LADICÍ upozornění: " + +#: error.c:488 msgid "unknown command error" msgstr "chyba neznámého příkazu" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "chybný druh příkazu" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "chybný konektor" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "chybný skok" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: nevázaná proměnná" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\ačasový limit pro čekání na vstup vyprÅ¡el: automatické odhlášení\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "standardní vstup nelze přesměrovat z /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: chybný formátovací znak" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: koproces [%d:%s] stále existuje" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "chyba v rouře" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: maximální úroveň zanoření funkce eval byla překročena (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximální úroveň zanoření funkce source byla překročena (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximální úroveň zanoření funkcí byla překročena (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: omezeno: v názvu příkazu nesmí být „/“" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: příkaz nenalezen" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: nelze spustit: požadovaný soubor neexistuje" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: chybný interpretr" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: binární soubor nelze spustit: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "„%s“: je zvláštní vestavěný příkaz shellu" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "deskriptor souboru %d nelze duplikovat na deskriptor %d" @@ -1095,68 +1105,68 @@ msgstr "úroveň rekurze výrazu byla překročena" msgid "recursion stack underflow" msgstr "zásobník rekurze podtekl" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "syntaktická chyba ve výrazu" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "pokus o přiřazení do ne-proměnné" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "syntaktická chyba v přiřazení do proměnné" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "dělení nulou" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "chyba: chybný expassing token" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "v podmíněném výrazu očekávána „:“" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "mocnitel menší než 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "po přednostním zvýšení nebo snížení očekáván identifikátor" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "postrádám „)“" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "syntaktická chyba: očekáván operand" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "syntaktická chyba: chybný aritmetický operátor" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (chybný token je „%s“)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "chybný aritmetický základ" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "chybná celočíselná konstanta" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "hodnot je pro základ příliÅ¡ velká" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: chyba výrazu\n" @@ -1165,7 +1175,7 @@ msgstr "%s: chyba výrazu\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: rodičovské adresáře nejsou přístupné" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "na deskriptoru %d nelze resetovat režim nodelay" @@ -1184,169 +1194,169 @@ msgstr "save_bash_input: buffer již pro nový deskriptor %d existuje" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp roury" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: SMYČKA: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: SMYČKA: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forknutý PID %d se objevil v běžící úloze %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "mažu pozastavenou úlohu %d se skupinou procesů %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: PID %5ld (%s) označen za stále živého" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: žádný takový PID" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Signál %d" # XXX: (úloha) dokončna. Používat ženský rod i unásledujících. Jedná se # o výpis úloh. -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Dokončena" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Pozastavena" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Pozastavena (%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Běží" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Dokončena (%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Ukončena %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Stav neznámý" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(core dumped [obraz paměti uložen]) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (cwd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid na potomku (z %ld na %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: PID %ld není potomkem tohoto shellu" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Žádný záznam o procesu %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: úloha %d je pozastavena" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: žádné současné úlohy" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: úloha skončila" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: úloha %d je již na pozadí" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: zapíná se WNOHANG, aby se zabránilo neurčitému zablokování" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: řádek %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (core dumped [obraz paměti uložen])" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(cwd nyní: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp selhalo" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: správa úloh nefunguje na pozadí" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplína linky" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nelze nastavit skupinu procesů terminálu (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "žádná správa úloh v tomto shellu" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: předpoklad nesplněn: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1355,47 +1365,47 @@ msgstr "" "\r\n" "malloc: %s:%d: zbabraný předpoklad\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "není známo" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: blok v seznamu uvolněných zbit" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: zavoláno s argumentem již uvolněného bloku" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: zavoláno s argumentem nenaalokovaného bloku" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: zjiÅ¡těno podtečení, mh_nbytes mimo rozsah" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free: zjiÅ¡těno podtečení, magic8 poÅ¡kozeno" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: velikosti počátečního a koncového kusu se liší" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: zavoláno s argumentem nenaalokovaného bloku" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: zjiÅ¡těno podtečení, mh_nbytes mimo rozsah" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: zjiÅ¡těno podtečení, magic8 poÅ¡kozeno" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: velikosti počátečního a koncového kusu se liší" @@ -1437,22 +1447,22 @@ msgstr "%s: chybné určení síťové cesty" msgid "network operations not supported" msgstr "síťové operace nejsou podporovány" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: národní prostředí nelze změnit (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: národní prostředí nelze změnit (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: národní prostředí nelze změnit (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: národní prostředí nelze změnit (%s): %s" @@ -1470,139 +1480,139 @@ msgstr "V $_ máte novou poÅ¡tu" msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta v %s je přečtená\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "chyba syntaxe: vyžadován aritmetický výraz" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "chyba syntaxe: neočekávaný „;“" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "chyba syntaxe: „((%s))“" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: chybný druh instrukce %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "„here“ dokument na řádku %d ukončen koncem souboru (požadováno „%s“)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instrukce přesměrování „%d“ mimo rozsah" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" msgstr "shell_getc: shell_input_line_size (%zu) přesahuje SIZE_MAX (%lu): řádek zkrácen" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "maximální počet here dokumentů překročen" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "neočekávaný konec souboru při hledání znaku odpovídajícímu „%c“" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "neočekávaný konec souboru při hledání „]]“" # XXX: Condional means condition (adj.) probably. Can English distinguish # between the condition (podmínkový) and the code branch (podmíněný)? Check # for all "conditional" string occurences. -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "chyba syntaxe ve výrazu podmínky: neočekávaný token „%s“" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "chyba syntaxe ve výrazu podmínky" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "neočekávaný token „%s“, očekávána „)“" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "očekávána „)“" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "neočekávaný argument „%s“ u podmínkového unárního operátoru" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "neočekávaný argument u podmínkového unárního operátoru" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "neočekávaný token „%s“, očekáván podmínkový binární operátor" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "očekáván podmínkový binární operátor" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "neočekávaný argument „%s„ u podmínkového binárního operátoru" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "neočekávaný argument u podmínkového binárního operátoru" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "neočekávaný token „%c“ v podmínkovém příkazu" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "neočekávaný token „%s“ v podmínkovém příkazu" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "neočekávaný token %d v podmínkovém příkazu" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "chyba syntaxe poblíž neočekávaného tokenu „%s“" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "chyba syntaxe poblíž „%s“" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "chyba syntaxe: nenadálý konec souboru" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "chyba syntaxe" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Shell lze ukončit příkazem „%s“.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "nenadálý konec souboru při hledání odpovídající „)“" @@ -1641,94 +1651,94 @@ msgstr "xtrace_set: nullový ukazatel na soubor" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace: fd (%d) != fileno fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: chybný formátovací znak" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "deskriptor souboru mimo rozsah" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: nejednoznačné přesměrování" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: existující soubor nelze přepsat" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: omezeno: výstup nelze přesměrovat" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "pro „here“ dokument nelze vytvořit dočasný soubor: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: deskriptor souboru nelze přiřadit do proměnné" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port není bez síťování podporováno" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "chyba přesměrování: deskriptor souboru nelze duplikovat" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "nelze nalézt /tmp, vytvořte jej, prosím!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp musí být platným názvem pro adresář" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "v interaktivních shellech se režim krásného výpisu nepoužije" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: chybný přepínač" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "UID nelze nastavit na %d: efektivní UID je %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "GID nelze nastavit na %d: efektivní GID je %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "debuger nelze spustit, ladicí režim zakázán" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: Je adresářem" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Nemám žádné jméno!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, verze %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1737,323 +1747,323 @@ msgstr "" "Použití:\t%s [Dlouhý GNU přepínač] [přepínač]…\n" "\t%s [Dlouhý GNU přepínač] [přepínač] skriptový_soubor…\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Dlouhé GNU přepínače:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Přepínače shellu:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD nebo -c příkaz nebo -O shopt_přepínač\t(pouze při vyvolání)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s nebo -o přepínač\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Podrobnosti o přepínačích shellu získáte tím, že napíšete „%s -c \"help set\"“.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Podrobnosti o příkazech vestavěných do shellu získáte tím, že\n" "napiÅ¡te „%s -c help“.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Chyby nahlásíte příkazem „bashbug“.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "Domovská stránka bashe: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "Obecný návod na použití softwaru GNU: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: neplatná operace" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "FaleÅ¡ný signál" # Překlady názvů signálů převzaty (s mírnými úpravami) z české překladu # manuálové stránky signal(7). -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Linka terminálu zavěšena" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "PřeruÅ¡ení" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Ukončení" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Neplatná instrukce" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "PřeruÅ¡ení při ladění" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Ukončení funkcí abort()" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Instrukce EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Výjimka při práci s pohyblivou řádovou čárkou" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Zabit" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Chyba sběrnice" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Chyba segmentace" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Å patné volání systému" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Z roury nikdo nečte" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Signál časovače" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Ukončit" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Čekají urgentní I/O data" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Pozastaveno (signálem)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Pokračovat" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Potomek byl pozastaven nebo zemřel" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Pozastaveno (vstupem TTY)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Pozastaveno (výstupem na TTY)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O je připraveno" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Dosažen limit procesorového času" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Dosažen limit velikosti souboru" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Časovač (virtuální)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Časovač (profilovací)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Změna okna" # XXX: SIGLOST -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Zámek záznamu" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Uživatelský signal 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Uživatelský signál 2" # FIXME: HFT znamená High Frequency Timer? Zkontrolovat i další výskyty -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "vstupní data HFT čekají" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "hrozí selhání napájení" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "hrozí selhání systému" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "přesunout proces na jiný procesor" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "chyba programování" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "Režim HFT sledování přidělen" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "Režim HFT sledování odebrán" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "HFT zvuková posloupnost byla dokončena" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Požadavek o informaci" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Neznámý signál č. %d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "chybná substituce: v %2$s chybí uzavírací „%1$s“" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: seznam nelze přiřadit do prvku pole" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "nelze vyrobit rouru za účelem substituce procesu" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "nelze vytvořit potomka za účelem substituce procesu" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "pojmenovanou rouru %s nelze otevřít pro čtení" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "pojmenovanou rouru %s nelze otevřít pro zápis" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "pojmenovanou rouru %s nelze zdvojit jako deskriptor %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "substituce příkazu: nulový bajt ve vstupu ignorován" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "nelze vytvořit rouru pro substituci příkazu" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "nelze vytvořit potomka pro substituci příkazu" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: rouru nelze zdvojit jako deskriptor 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: neplatný název proměnné pro odkaz na název" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: chybná nepřímá expanze" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: chybný název proměnné" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: parametr nenastaven" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametr null nebo nenastaven" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: výraz podřetězce < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: chybná substituce" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: takto nelze přiřazovat" -#: subst.c:9814 +#: subst.c:10111 msgid "future versions of the shell will force evaluation as an arithmetic substitution" msgstr "budoucá verze tohoto shellu budou vynucovat vyhodnocení jako aritmetickou substituci" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "chybná substituce: v %s chybí uzavírací „`“" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "žádná shoda: %s" @@ -2076,21 +2086,21 @@ msgstr "očekávána „)“" msgid "`)' expected, found %s" msgstr "očekávána „)“, nalezeno %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: očekáván binární operátor" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: očekáván unární operátor" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "postrádám „]“" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "chyba syntaxe: neočekávaný řetězec „%s“" @@ -2099,99 +2109,104 @@ msgstr "chyba syntaxe: neočekávaný řetězec „%s“" msgid "invalid signal number" msgstr "neplatné číslo signálu" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "obsluha signálů: maximální úroveň zanoření obsluhy signálů byla překročena (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: chybná hodnota v trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: obsluha signálu je SIG_DFL, přeposílám %d (%s) sobě" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: chybný signál %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "chyba při importu definice „%s“" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "úroveň shellu (%d) příliÅ¡ vysoká, resetuji na 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: žádný kontext funkce v aktuálním rozsahu" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: hodnotu nelze do proměnné přiřadit" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s: z nekompatibilního typu nelze hodnotu zdědit" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: přiřazení čísla odkazu na název" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: žádný kontext funkce v aktuálním rozsahu" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s: má nullový exportstr" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "neplatný znak %d v exportstr pro %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "v exportstr pro %s chybí „=“" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: hlava shell_variables není kontextem funkce" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: chybí kontext global_variables" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: hlava shell_variables není dočasným rozsahem prostředí" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nelze otevřít jako SOUBOR" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: neplatná hodnota pro deskriptor trasovacího souboru" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: hodnota kompatibility je mimo rozsah" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Copyright © 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Copyright © 2022 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "License GPLv3+: GNU GPL version 3 or later \n" @@ -2271,12 +2286,12 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] příkaz [argument…]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgiIlnrtux] [-p] [název[=hodnota]…]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgiIlnrtux] [název[=hodnota]…] nebo declare [-p] [-aAfFilnrtux] [název…]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgiIlnrtux] [-p] název[=hodnota]…" +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgiIlnrtux] název[=hodnota]… nebo typeset -p [-aAfFilnrtux] [název…]" #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2363,8 +2378,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [-abefhkmnptuvxBCHP] [-o název_přepínače] [--] [argument…]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o název_přepínače] [--] [-] [argument…]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" @@ -2411,8 +2426,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] název [název…]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" @@ -2451,12 +2466,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C msgstr "if PŘÍKAZY; then PŘÍKAZY; [ elif PŘÍKAZY; then PŘÍKAZY; ]… [ else PŘÍKAZY; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while PŘÍKAZY; do PŘÍKAZY; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while PŘÍKAZY; do PŘÍKAZY-2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until PŘÍKAZY; do PŘÍKAZY; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until PŘÍKAZY; do PŘÍKAZY-2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -3753,7 +3768,8 @@ msgid "" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" @@ -3796,7 +3812,8 @@ msgstr "" " dělení na slova a první slovo je přiřazeno do prvního JMÉNA, druhé slovo\n" " do druhého JMÉNA a tak dále, přičemž přebývající slova se přiřadí do\n" " posledního JMÉNA. Pouze znaky uvedené v $IFS jsou považovány za\n" -" oddělovače slov.\n" +" oddělovače slov. Ve výchozím nastavení znak zpětného lomítka ruší\n" +" zvláštní význam znaků oddělovače a nového řádku.\n" " \n" " Nejsou-li uvedena žádná JMÉNA, načtený řádek bude uložen do proměnné REPLY.\n" " \n" @@ -3832,7 +3849,7 @@ msgstr "" " přiřazování do proměnné, nebo není poskytnut neplatný deskriptor souboru\n" " jako argument -u." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3852,7 +3869,7 @@ msgstr "" " Návratová hodnota:\n" " Vrátí N, nebo selže, pokud shell neprovádí funkci nebo skript." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4020,7 +4037,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný argument." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4059,7 +4076,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a JMÉNO není jen pro\n" " čtení." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4091,7 +4108,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač nebo NÁZEV." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4129,7 +4146,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač nebo NÁZEV." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4147,7 +4164,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud N není záporný a není větší než $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4171,7 +4188,7 @@ msgstr "" " Vrací návratový kód posledního provedeného příkazu z NÁZVU_SOUBORU.\n" " Selže, pokud NÁZEV_SOUBORU nelze načíst." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4195,7 +4212,7 @@ msgstr "" " Návratový kód:\n" " Vrací úspěch, pokud je správa úloh zapnuta a nevyskytla se chyba." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4362,7 +4379,7 @@ msgstr "" " Vrací úspěch, je-li VÝRAZ vyhodnocen jako pravdivý. Selže, je-li VÝRAZ\n" " vyhodnocen jako nepravdivý nebo je-li zadán neplatný argument." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4374,7 +4391,7 @@ msgstr "" " Toto je synonymum pro vestavěný příkaz „test“, až na to, že poslední\n" " argument musí být doslovně „]“, aby se shodoval s otevírající „[“." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4392,7 +4409,7 @@ msgstr "" " Návratový kód:\n" " Vždy uspěje." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4459,7 +4476,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud SIGSPEC a zadané přepínače jsou platné." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4514,7 +4531,7 @@ msgstr "" " Vrátí úspěch, pokud vÅ¡echny NÁZVY byly nalezeny. Selže, pokud některé\n" " nalezeny nebyly." -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4609,7 +4626,7 @@ msgstr "" " Návratová hodnota:\n" " Vrací úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4642,7 +4659,7 @@ msgstr "" " Návratový kód\n" " Vrátí úspěch, pokud nebyl zadán neplatný MÓD nebo přepínač." -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4693,7 +4710,7 @@ msgstr "" " neplatný přepínač nebo byl použit přepínač -n a shell nemá žádné\n" " nevyhodnocené potomky." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4715,7 +4732,7 @@ msgstr "" " Vrátí kód posledního PID. Selže, pokud PID není platný nebo byl zadán\n" " neplatný přepínač." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4736,7 +4753,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4765,7 +4782,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy vykonaného příkazu." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4800,7 +4817,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy prováděného příkazu." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4829,7 +4846,7 @@ msgstr "" " Návratový kód:\n" " Návratová hodnota je návratová hodnota KOLONY." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4847,7 +4864,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4875,42 +4892,43 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Vykonává příkazy, dokud test úspěšně prochází.\n" " \n" -" Expanduje a provádí PŘÍKAZY tak dlouho, dokud poslední příkaz ve „while“\n" -" PŘÍKAZECH má nulový návratový kód.\n" +" Expanduje a provádí PŘÍKAZY-2 tak dlouho, dokud poslední příkaz v PŘÍKAZECH\n" +" má nulový návratový kód.\n" " \n" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Vykonává příkazy, dokud test končí neúspěšně.\n" " \n" -" Expanduje a provádí PŘÍKAZY tak dlouho, dokud poslední příkaz ve „until“\n" -" PŘÍKAZECH má nenulový návratový kód. \n" +" Expanduje a provádí PŘÍKAZY-2 tak dlouho, dokud poslední příkaz v PŘÍKAZECH\n" +" má nenulový návratový kód.\n" +" \n" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4931,7 +4949,7 @@ msgstr "" " Návratový kód:\n" " Příkaz coproc vrací návratový kód 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -4953,7 +4971,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud NÁZEV není jen pro čtení." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4970,7 +4988,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy spuÅ¡těného příkazu." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4993,7 +5011,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód obnovené úlohy." -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5015,7 +5033,7 @@ msgstr "" # příkaz, který by byl vykonán na základě splnění jiné podmínky. Tj. překlad # „podmíněný příkaz“ je chybný. # Toto je nápověda k vestavěnému příkazu „[“. -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5062,7 +5080,7 @@ msgstr "" " Návratový kód:\n" " 0 nebo 1 podle hodnoty VÝRAZU." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5166,7 +5184,7 @@ msgstr "" " \t\trozliÅ¡ení, které příkazy by měly být uloženy do seznamu\n" " \t\thistorie.\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5223,7 +5241,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný argument a změna adresáře\n" " neselhala." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5273,7 +5291,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný argument nebo neselhala změna\n" " adresáře." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5323,7 +5341,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5360,7 +5378,7 @@ msgstr "" " Vrátí úspěch, je-li NÁZEV_VOLBY zapnut. Selže, byl-li zadán neplatný\n" " přepínač nebo je-li NÁZEV_VOLBY vypnut." -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5379,6 +5397,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" @@ -5409,6 +5429,8 @@ msgstr "" " v odpovídajícím argumentu\n" " %q oescapuje argument takovým způsobem, že jej bude možné\n" " použít jako vstup shellu\n" +" %Q jako %q, ale použije libovolnou přesnost na neescapovaný\n" +" argument před samotným escapováním\n" " %(FORMÁT)T vypíše řetězec data-času tak, jako by to byl výstup\n" " funkce strftime(3) s formátovacím řetězcem FORMÁT\n" " \n" @@ -5421,7 +5443,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nedoÅ¡lo k chybě\n" " zápisu nebo přiřazení." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5471,7 +5493,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5491,7 +5513,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5545,7 +5567,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a NÁZEV měl definováno\n" " pravidlo doplňování." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5615,7 +5637,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač, POLE nebylo jen pro\n" " čtení a bylo indexovaným polem." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5625,6 +5647,9 @@ msgstr "" " \n" " Synonymum pro „mapfile“." +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: neplatný klíč asociativního pole" + #~ msgid "" #~ "Returns the context of the current subroutine call.\n" #~ " \n" diff --git a/po/da.gmo b/po/da.gmo index 44572c77b..46243f38e 100644 Binary files a/po/da.gmo and b/po/da.gmo differ diff --git a/po/da.po b/po/da.po index 09b2cf64f..d5334e285 100644 --- a/po/da.po +++ b/po/da.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2011-03-18 01:36+0100\n" "Last-Translator: Kenneth Nielsen \n" "Language-Team: Danish \n" @@ -29,59 +29,54 @@ msgstr "" msgid "bad array subscript" msgstr "ugyldigt arrayindeks" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: kan ikke konvertere indekseret til associativt array" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: ugyldig nøgle til associativt array" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: kan ikke tildele til ikkenumerisk indeks" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: et indeks skal bruges ved tildeling til associativt array" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: kan ikke oprette %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: kan ikke finde tastetildeling for kommando" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: første ikke-blank-tegn er ikke '\"'" # Kønnet her er et gæt, hvis det er parenteser eller anførselstegn passer det # FEJLRAPPORT -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "ingen afsluttende \"%c\" i %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: manglende kolonseparator" -#: bashline.c:4555 +#: bashline.c:4733 #, fuzzy, c-format msgid "`%s': cannot unbind in command keymap" msgstr "\"%s\": kan ikke løsne" @@ -101,7 +96,7 @@ msgstr "" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "\"%s\": ugyldigt tastetildelingsnavn" @@ -178,7 +173,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME ikke indstillet" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "for mange argumenter" @@ -206,7 +201,7 @@ msgstr "advarsel: " msgid "%s: usage: " msgstr "%s: brug: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: tilvalg kræver et argument" @@ -221,7 +216,7 @@ msgstr "%s: numerisk argument pÃ¥krævet" msgid "%s: not found" msgstr "%s: ikke fundet" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: ugyldigt tilvalg" @@ -231,7 +226,7 @@ msgstr "%s: ugyldigt tilvalg" msgid "%s: invalid option name" msgstr "%s: ugyldigt tilvalgsnavn" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "\"%s\": ikke et gyldigt identificeringsnavn" @@ -244,7 +239,7 @@ msgstr "ugyldigt oktaltal" msgid "invalid hex number" msgstr "ugyldigt heksadecimalt tal" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "ugyldigt tal" @@ -258,88 +253,93 @@ msgstr "%s: ugyldig signalspecifikation" msgid "`%s': not a pid or valid job spec" msgstr "\"%s\": ikke en pid eller gyldig job-spec" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: skrivebeskyttet variabel" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: kan ikke fjerne" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s udenfor rækkevidde" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s udenfor rækkevidde" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: intet sÃ¥dant job" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: ingen jobkontrol" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "ingen jobkontrol" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: begrænset" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "begrænset" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ikke indbygget i skallen" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "skrivefejl: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "fejl ved indstilling af terminalattribut: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "fejl ved indhentning af terminalattribut: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: fejl ved indhentning af nuværende mappe: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: tvetydig job-spec" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: kan ikke fjerne: skrivebeskyttet %s" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: kan ikke fjerne" @@ -349,108 +349,108 @@ msgstr "%s: kan ikke fjerne" msgid "%s: invalid action name" msgstr "%s: ugyldigt handlingsnavn" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: ingen fuldførselsspecifikation" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "advarsel: tilvalget -F vil mÃ¥ske ikke virke, som du forventer" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "advarsel: tilvalget -C vil mÃ¥ske ikke virke, som du forventer" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "ikke i gang med at eksekvere fuldførelsesfunktion" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "kan kun bruges i en funktion" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "kan ikke bruge \"-f\" til at lave funktioner" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: skrivebeskyttet funktion" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" msgstr "\"%s\": ugyldigt tastetildelingsnavn" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "kan ikke bruge \"-f\" til at lave funktioner" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: skrivebeskyttet funktion" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: kan ikke destruere arrayvariabel pÃ¥ denne mÃ¥de" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: kan ikke konvertere associativt til indekseret array" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "dynamisk indlæsning ikke tilgængelig" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "kan ikke Ã¥bne delt objekt %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "kan ikke finde %s i delt objekt %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, fuzzy, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: ikke dynamisk indlæst" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: ikke dynamisk indlæst" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: kan ikke slette: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: er en mappe" @@ -465,7 +465,7 @@ msgstr "%s: ikke en regulær fil" msgid "%s: file is too large" msgstr "%s: fil er for stor" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kan ikke eksekvere binær fil" @@ -563,12 +563,12 @@ msgstr "" "ingen hjælpeemner matcher \"%s\". Prøv \"help help\" eller \"man -k %s\" " "eller \"info %s\"." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: kan ikke Ã¥bne: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -590,21 +590,21 @@ msgstr "" "En stjerne (*) ved siden af et navn betyder at kommandoen er slÃ¥et fra.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "kan ikke bruge mere end en af -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "historikposition" -#: builtins/history.def:340 +#: builtins/history.def:338 #, fuzzy, c-format msgid "%s: invalid timestamp" msgstr "%s: ugyldigt tilvalgsnavn" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: historikudvidelse fejlede" @@ -627,79 +627,79 @@ msgstr "%s: argumenter skal være processer eller job-id'er" msgid "Unknown error" msgstr "Ukendt fejl" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "forventede et udtryk" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, fuzzy, c-format msgid "%s: not an indexed array" msgstr "%s: ikke en arrayvariabel" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ugyldig filbeskrivelsesspecifikation" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ugyldig filbeskrivelse: %s" # -c Specify the number of lines read between each call to callback. -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: ugyldigt antal linjer" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: ugyldig array-startindeks" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ugyldigt tilbagekaldskvantum" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "tomt arrayvariabelnavn" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "understøttelse af arrayvariabel pÃ¥krævet" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "\"%s\": manglende formattegn" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: ugyldig specifikation af tidsudløb" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": ugyldigt formattegn" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "advarsel: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "manglende heksciffer for \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "manglende heksciffer for \\x" @@ -853,12 +853,12 @@ msgstr "" " \n" "Den indbyggede funktion \"dirs\" viser mappestakken." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: ugyldig specifikation af tidsudløb" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "læsefejl: %d: %s" @@ -871,7 +871,7 @@ msgstr "kan kun udføre \"return\" fra en funktion eller indlæst skript" msgid "cannot simultaneously unset a function and a variable" msgstr "kan ikke fjerne en funktion og en variabel samtidig" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: ikke en arrayvariabel" @@ -890,11 +890,11 @@ msgstr "%s: kan ikke fjerne" msgid "shift count" msgstr "skifttæller" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "kan ikke indstille og fjerne skaltilvalg samtidig" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ugyldigt navn for skaltilvalg" @@ -961,16 +961,16 @@ msgstr "%s: ugyldigt grænseargument" msgid "`%c': bad command" msgstr "\"%c\": ugyldig kommando" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan ikke indhente grænse: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "grænse" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan ikke modificere grænse: %s" @@ -989,7 +989,7 @@ msgstr "\"%c\": ugyldig symbolsk tilstandsoperator" msgid "`%c': invalid symbolic mode character" msgstr "\"%c\": ugyldigt symbolsk tilstandstegn" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " linje " @@ -1009,91 +1009,101 @@ msgstr "Afbryder..." msgid "INFORM: " msgstr "" -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "advarsel: " + +#: error.c:488 msgid "unknown command error" msgstr "ukendt kommandofejl" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "ugyldig kommandotype" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "dÃ¥rligt mellemled" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "dÃ¥rligt hop" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: ubundet variabel" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atidsudløb mens der ventedes pÃ¥ input: auto-logud\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "kan ikke videresende standardinput fra /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: \"%c\": ugyldigt formateringstegn" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "datakanalfejl (pipe error)" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: begrænset: kan ikke specificere \"/\" i kommandonavne" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: kommando ikke fundet" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: kan ikke eksekvere binær fil" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: dÃ¥rlig fortolker" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kan ikke eksekvere binær fil" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s er indbygget i skallen\n" @@ -1107,7 +1117,7 @@ msgstr "%s er indbygget i skallen\n" # expansion. If the >(list) form is used, writing to the file will pro‐ # vide input for list. If the <(list) form is used, the file passed as # an argument should be read to obtain the output of list. -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "kan ikke duplikere fd %d til fd %d" @@ -1120,72 +1130,72 @@ msgstr "grænse for rekursion af udtryk overskredet" msgid "recursion stack underflow" msgstr "underløb i rekursionsstak" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "syntaksfejl i udtryk" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "forsøgte tildeling til ikke-variabel" -#: expr.c:530 +#: expr.c:531 #, fuzzy msgid "syntax error in variable assignment" msgstr "syntaksfejl i udtryk" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "division med 0" # denne her streng er dÃ¥rlig pÃ¥ sÃ¥ mange mÃ¥der at det fatter man slet ikke. Skal bug oversætter og hvad er expassign. Jeg laver et bud og har fejlmeldt den -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "bug: dÃ¥rligt expassign-udtryk" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "\":\" forventet for betingede udtryk" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "eksponent mindre end 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identifikator forventet efter præforøgelse eller -formindskelse" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "manglende \")\"" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "syntaksfejl: operand forventet" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "syntaksfejl: ugyldig aritmetisk operator" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (fejlelement er \"%s\")" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "ugyldig aritmetisk grundtal" # -c Specify the number of lines read between each call to callback. -#: expr.c:1582 +#: expr.c:1587 #, fuzzy msgid "invalid integer constant" msgstr "%s: ugyldigt antal linjer" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "værdi for stor til grundtal" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: fejl i udtryk\n" @@ -1195,7 +1205,7 @@ msgid "getcwd: cannot access parent directories" msgstr "getcwd: kan ikke tilgÃ¥ overliggende mapper" # Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" @@ -1215,168 +1225,168 @@ msgstr "save_bash_input: buffer eksisterer allerede til ny fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp-datakanal (pipe)" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forgrenet pid %d figurerer i kørende job %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "sletter stoppet job %d med procesgruppe %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) markeret som stadig i live" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ingen process med det pid" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Færdig" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Stoppet" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Stoppet(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Kører" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Færdig(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Afslut %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Ukendt status" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(smed kerne) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "underproces setpgid (%ld til %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld er ikke en underproces af denne skal" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ingen optegnelse af proces %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: job %d er stoppet" -#: jobs.c:3564 +#: jobs.c:3551 #, fuzzy, c-format msgid "%s: no current jobs" msgstr "%s: intet sÃ¥dant job" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: job er afbrudt" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: job %d er allerede i baggrunden" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: linje %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (smed kerne)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(wd nu: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp fejlede" -#: jobs.c:4447 +#: jobs.c:4434 #, fuzzy msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: linjedisciplin" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: linjedisciplin" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "kan ikke indstille terminal-procesgruppe (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "ingen jobkontrol i denne skal" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: forfejlet hævdelse: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1385,49 +1395,49 @@ msgstr "" "\r\n" "malloc: %s:%d: hævdelse forkludret\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "ukendt" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: blok i fri liste tværet ud" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: kaldt med blokargument som allerede er fri" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: kaldt med ikke-allokeret blokargument" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underløb detekteret, mh_nbytes uden for interval" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 #, fuzzy msgid "free: underflow detected; magic8 corrupted" msgstr "free: underløb detekteret, mh_nbytes uden for interval" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: størrelse pÃ¥ start- og slut-bid afviger" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: kaldt med ikke-allokeret blokargument" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underløb detekteret, mh_nbytes uden for interval" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 #, fuzzy msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: underløb detekteret, mh_nbytes uden for interval" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: størrelse pÃ¥ start- og slut-bid afviger" @@ -1469,22 +1479,22 @@ msgstr "%s: dÃ¥rlig specifikation for netværkssti" msgid "network operations not supported" msgstr "netværksoperation ikke understøttet" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:292 +#: locale.c:294 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes" -#: locale.c:294 +#: locale.c:296 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes" @@ -1502,144 +1512,144 @@ msgstr "Du har ny post i $_" msgid "The mail in %s has been read\n" msgstr "Posten i %s er blevet læst\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "syntaksfejl: aritmetisk udtryk pÃ¥krævet" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "syntaksfejl: \";\" uventet" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "syntaksfejl: \"((%s))\"" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: dÃ¥rlig instruktionstype %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-document ved linje %d er adskilt af slut-pÃ¥-linje (ønskede \"%s\")" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_direction: videresendelsesinstruktion \"%d\" uden for interval" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "uventet EOF mens der ledtes efter samhørende \"%c\"" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "uventet EOF mens der ledtes efter \"]]\"" # word A sequence of characters considered as a single unit by the # shell. Also known as a token. # Jeg har valgt udtryk -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaksfejl i betingelsesudtryk: uventet element \"%s\"" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "syntaksfejl i betingelsesudtryk" # word A sequence of characters considered as a single unit by the # shell. Also known as a token. -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "uventet element \"%s\", forventede \")\"" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "forventede \")\"" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "uventet argument \"%s\" til unær betingelsesoperator" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "uventet argument til unær betingelsesoperator" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "uventet udtryk \"%s\", ventede binær betingelsesoperator" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "ventedet binær betingelsesoperator" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "uventet argument \"%s\" til binær betingelsesoperator" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "uventet argument til binær betingelsesoperator" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "uventet udtryk \"%c\" i betingelseskommando" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "uventet udtryk \"%s\" i betingelseskommando" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "uventet udtryk \"%d\" i betingelseskommando" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaksfejl nær uventet udtryk \"%s\"" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "syntaksfejl nær \"%s\"" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "syntaksfejl: uventet slutning pÃ¥ fil" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "syntaksfejl" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Brug \"%s\" for at forlade skallen.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "uventet EOF mens der ledtes efter samhørende \")\"" @@ -1677,96 +1687,96 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": ugyldigt formateringstegn" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "fil-deskriptor uden for interval" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: tvetydig videresendelse" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: kan ikke overskrive eksisterende fil" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: begrænset: kan ikke videresende output" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "kan ikke danne midlertidig fil til here-dokument: %s" -#: redir.c:222 +#: redir.c:223 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: kan ikke tildele liste til arrayelementer" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/vært/port ikke understøttet uden netværk" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "videresendelsesfejl: kan ikke duplikere fd" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "kan ikke finde /tmp, opret venligst mappen!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp skal være et gyldigt mappenavn" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ugyldigt tilvalg" # Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn -#: shell.c:1319 +#: shell.c:1343 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" # Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn -#: shell.c:1330 +#: shell.c:1354 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1632 +#: shell.c:1658 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: er en mappe" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Jeg har ikke noget navn!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1775,327 +1785,327 @@ msgstr "" "Brug:\t%s [langt GNU-tilvalg] [tilvalg] ...\n" "\t%s [langt GNU-tilvalg] [tilvalg] skript-fil ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Lange GNU-tilvalg:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Skal-tilvalg:\n" -#: shell.c:2043 +#: shell.c:2069 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD eller -c kommando eller -O shopt_option\t\t(kun programkald)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\tTilvalg -%s eller -o\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Skriv \"%s -c \"help set\"\" for at fÃ¥ mere information om skaltilvalg.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Skriv \"%s -c help\" for at fÃ¥ mere information om indbyggede " "skalkommandoer.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Brug kommandoen \"bashbug\" til at rapportere fejl.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: ugyldig handling" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Falsk signal" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Læg pÃ¥" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Afbryd" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Afslut" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Ugyldig instruktion" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "BPT-spor/fang" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "ABORT-instruktion" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "EMT-instruktion" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Kommatalsundtagelse" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "SlÃ¥et ihjel" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Bus-fejl" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Segmenteringsfejl" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Ugyldigt systemkald" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Ødelagt datakanal" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Alarmklokke" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Afsluttet" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Presserende IO-forhold" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Stoppet (signal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Fortsæt" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Død eller stop af underproces" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Stoppet (tty-input)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Stoppet (tty-output)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O klar" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "CPU-grænse" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Filgrænse" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarm (virtuel)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarm (profil)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Vindue ændret" # I fejlrapport for at fÃ¥ meningen -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Optag lÃ¥s" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Brugersignal 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Brugersignal 2" # Fejlrapport -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "HFT-inputdata afventer" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "strømsvigt nært forestÃ¥ende" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "systemnedbrud nært forestÃ¥ende" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "flyt proces til en anden CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "programmeringsfejl" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "HFT-skærmtilstand tildelt" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "HFT-skærmtilstand trukket tilbage" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "HFT-lydsekvens er afsluttet" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Informationsforespørgsel" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Ukendt signal #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "dÃ¥rlig udskiftning: ingen lukkende \"%s\" i %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: kan ikke tildele liste til arrayelementer" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "kan ikke lave datakanal (pipe) til procesudskiftning" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "kan ikke danne underproces til procesudskiftning" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "kan ikke Ã¥bne navngiven datakanal (pipe) %s til læsning" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "kan ikke Ã¥bne navngiven datakanal (pipe) %s til skrivning" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "kan ikke duplikere navngiven datakanal (pipe) %s som %d" -#: subst.c:6213 +#: subst.c:6370 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "dÃ¥rlig udskiftning: ingen lukkende \"`\" i %s" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "kan ikke danne datakanal (pipe) til kommandoudskiftning" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "kan ikke danne underproces til kommandoudskiftning" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: kan ikke duplikere datakanal (pipe) som fd 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%d: ugyldig filbeskrivelse: %s" # -c Specify the number of lines read between each call to callback. -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: ugyldigt antal linjer" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "\"%s\": ugyldigt tastetildelingsnavn" -#: subst.c:7256 +#: subst.c:7478 #, fuzzy, c-format msgid "%s: parameter not set" msgstr "%s: parameter null eller ikke indstillet" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter null eller ikke indstillet" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: understreng-udtryk < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: dÃ¥rlig udskiftning" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: kan ikke tildele pÃ¥ denne mÃ¥de" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "dÃ¥rlig udskiftning: ingen lukkende \"`\" i %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "intet match: %s" @@ -2118,21 +2128,21 @@ msgstr "\")\" forventet" msgid "`)' expected, found %s" msgstr "\")\" forventet, fandt %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: binær operator forventet" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: unær operator forventet" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "manglende \"]\"" -#: test.c:899 +#: test.c:914 #, fuzzy, c-format msgid "syntax error: `%s' unexpected" msgstr "syntaksfejl: \";\" uventet" @@ -2141,17 +2151,17 @@ msgstr "syntaksfejl: \";\" uventet" msgid "invalid signal number" msgstr "ugyldigt signalnummer" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: dÃ¥rlig værdi i trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2159,85 +2169,90 @@ msgstr "" "run_pending_traps: signalhÃ¥ndtering er SIG_DFL, gensender %d (%s) til mig " "selv" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: ugyldigt signal %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "fejl under importering af funktionsdefinition for \"%s\"" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "skalniveau (%d) for højt, genindstiller til 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ingen funktionskontekst ved nuværende navneomrÃ¥de" -#: variables.c:2693 +#: variables.c:2661 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: kan ikke tildele liste til arrayelementer" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ingen funktionskontekst ved nuværende navneomrÃ¥de" -#: variables.c:4771 +#: variables.c:4757 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parameter null eller ikke indstillet" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "ugyldigt tegn %d i exportstr for %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "intet \"=\" i exportstr for %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: hoved af shell_variables er ikke en funktionskontekst" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ingen global_variables-kontekst" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: hoved af shell_variables er ikke et midlertidigt miljønavnerum" -#: variables.c:6387 +#: variables.c:6400 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: kan ikke Ã¥bne: %s" -#: variables.c:6392 +#: variables.c:6405 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: ugyldig filbeskrivelse: %s" -#: variables.c:6437 +#: variables.c:6450 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s udenfor rækkevidde" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2332,12 +2347,16 @@ msgstr "command [-pVv] kommando [arg ...]" #: builtins.c:78 #, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFilrtux] [-p] [navn[=værdi] ...]" #: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFilrtux] [-p] navn[=værdi] ..." #: builtins.c:82 @@ -2445,7 +2464,7 @@ msgstr "return [n]" #: builtins.c:142 #, fuzzy -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o tilvalgsnavn] [arg ...]" #: builtins.c:144 @@ -2496,7 +2515,7 @@ msgstr "type [-afptP] navn [navn ...]" #: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [grænse]" #: builtins.c:174 @@ -2542,11 +2561,13 @@ msgstr "" "[ else KOMMANDOER; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while KOMMANDOER; do KOMMANDOER; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until KOMMANDOER; do KOMMANDOER; done" #: builtins.c:200 @@ -3986,7 +4007,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -4071,7 +4094,7 @@ msgstr "" "indtræffer,\n" " eller hvis en ugyldig fildeskriptor gives som argument til -u." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -4096,7 +4119,7 @@ msgstr "" "en\n" " funktion eller et skript." -#: builtins.c:1054 +#: builtins.c:1055 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4281,7 +4304,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre der angives et ugyldigt tilvalg." -#: builtins.c:1139 +#: builtins.c:1140 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4323,7 +4346,7 @@ msgstr "" "et\n" " givent navn er skrivebeskyttet." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4359,7 +4382,7 @@ msgstr "" " Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n" " NAVN er ugyldig." -#: builtins.c:1180 +#: builtins.c:1181 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4399,7 +4422,7 @@ msgstr "" " Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n" " NAVN er ugyldigt." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4418,7 +4441,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre N er negativ eller større end $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4444,7 +4467,7 @@ msgstr "" "hvis\n" " FILNAVN ikke kan læses." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4471,7 +4494,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:1261 +#: builtins.c:1262 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4633,7 +4656,7 @@ msgstr "" " Returnerer succes hvis UDTRYK evalueres til sand, og fejler hvis UDTRYK\n" " evalueres til falsk eller hvis der gives et ugyldigt argument." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4646,7 +4669,7 @@ msgstr "" "sidste\n" " argument skal være \"]\", for at den passer til den Ã¥bnende \"[\"." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4666,7 +4689,7 @@ msgstr "" " Afslutningsstatus:\n" " Lykkes altid." -#: builtins.c:1364 +#: builtins.c:1365 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4747,7 +4770,7 @@ msgstr "" "angivet\n" " et ugyldigt tilvalg." -#: builtins.c:1400 +#: builtins.c:1401 #, fuzzy msgid "" "Display information about command type.\n" @@ -4810,7 +4833,7 @@ msgstr "" "enkelt\n" " ikke findes." -#: builtins.c:1431 +#: builtins.c:1432 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4907,7 +4930,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4945,7 +4968,7 @@ msgstr "" "ugyldigt\n" " tilvalg angives." -#: builtins.c:1502 +#: builtins.c:1503 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4992,7 +5015,7 @@ msgstr "" "angives\n" " et ugyldigt tilvalg." -#: builtins.c:1533 +#: builtins.c:1534 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -5018,7 +5041,7 @@ msgstr "" " Returnerer statussen for ID, fejler hvis ID er ugyldig eller hvis der\n" " angives et ugyldigt tilvalg." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -5043,7 +5066,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen for den sidst eksekverede kommando." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -5073,7 +5096,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer afslutningsstatussen for den sidst eksekverede kommando." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5111,7 +5134,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5140,7 +5163,7 @@ msgstr "" " Afslutningsstatus:\n" " Afslutningsstatus er afslutningsstatus for DATAKANAL." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5159,7 +5182,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5198,12 +5221,14 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5216,12 +5241,14 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5234,7 +5261,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1671 +#: builtins.c:1672 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5258,7 +5285,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer afslutningsstatussen for KOMMANDO." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -5282,7 +5309,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre NAVN er skrivebeskyttet." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5300,7 +5327,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5327,7 +5354,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen af det genoptagede job." -#: builtins.c:1726 +#: builtins.c:1727 #, fuzzy msgid "" "Evaluate arithmetic expression.\n" @@ -5347,7 +5374,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer 1 hvis udtrykket evalueres til 0, ellers returneres 0." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5402,7 +5429,7 @@ msgstr "" " Afslutningsstatus:\n" " 0 eller 1 afhængigt af udtrykkets værdi." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5515,7 +5542,7 @@ msgstr "" " HISTIGNORE\tEn kolonsepareret liste af mønstre som bliver brugt til at\n" " \t\tbestemme hvilke kommandoer der skal gemmes i historikken.\n" -#: builtins.c:1821 +#: builtins.c:1822 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5575,7 +5602,7 @@ msgstr "" "hvis\n" " mappeskiftet mislykkes." -#: builtins.c:1855 +#: builtins.c:1856 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5630,7 +5657,7 @@ msgstr "" "hvis\n" " mappeskiftet mislykkes." -#: builtins.c:1885 +#: builtins.c:1886 #, fuzzy msgid "" "Display directory stack.\n" @@ -5685,7 +5712,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:1916 +#: builtins.c:1917 #, fuzzy msgid "" "Set and unset shell options.\n" @@ -5726,7 +5753,7 @@ msgstr "" "et\n" " ugyldigt tilvalg eller hvis INDSTNAVN er deaktiveret." -#: builtins.c:1937 +#: builtins.c:1938 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5750,6 +5777,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -5793,7 +5822,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en skrive- eller tildelingsfejl." -#: builtins.c:1971 +#: builtins.c:1974 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5845,7 +5874,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5870,7 +5899,7 @@ msgstr "" " der opstÃ¥r en fejl." # Fejlrapport -#: builtins.c:2016 +#: builtins.c:2019 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5933,7 +5962,7 @@ msgstr "" "hvis\n" " der ikke er defineret en fuldførselsspecifikation for NAVN." -#: builtins.c:2047 +#: builtins.c:2050 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -6012,7 +6041,7 @@ msgstr "" "hvis\n" " ARRAY er skrivebeskyttet." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -6022,6 +6051,10 @@ msgstr "" " \n" " Et synonym for \"mapfile\"." +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: ugyldig nøgle til associativt array" + #, fuzzy #~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." #~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." diff --git a/po/de.gmo b/po/de.gmo index 7a31bc581..388ad49eb 100644 Binary files a/po/de.gmo and b/po/de.gmo differ diff --git a/po/de.po b/po/de.po index 64d676fea..c73aef46f 100644 --- a/po/de.po +++ b/po/de.po @@ -2,13 +2,14 @@ # Copyright (C) 2019 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Roland Illig 2019 -# Nils Naumann , 1996-2019. +# Nils Naumann , 1996-2021. +# msgid "" msgstr "" -"Project-Id-Version: bash 5.0\n" +"Project-Id-Version: bash 5.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2019-10-21 20:58+0200\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2021-12-29 22:04+0100\n" "Last-Translator: Nils Naumann \n" "Language-Team: German \n" "Language: de\n" @@ -16,67 +17,62 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: arrayfunc.c:66 msgid "bad array subscript" msgstr "Falscher Feldindex." -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: Entferne das Nameref Attribut." -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" "%s: Das indizierte Array kann in kein assoziatives Array umgewandelt werden." -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: Ungültiger Schlüssel für das assoziative Array." - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: Das Zuweisen auf einen nicht-numerischen Index ist nicht möglich." -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: Ein Feldindex wird zum Zuweisen eines assoziativen Arrays benötigt." -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: Kann die Datei %s nicht erzeugen." -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: Kann nicht die Tastenzuordnung für das Kommando " "finden." -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr " %s: Das erste Zeichen ist nicht `\\'." -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "fehlende schließende `%c' in %s." -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: Fehlender Doppelpunkt." -#: bashline.c:4555 +#: bashline.c:4733 #, fuzzy, c-format msgid "`%s': cannot unbind in command keymap" msgstr "»%s«: Bindung kann nicht gelöst werden." @@ -96,7 +92,7 @@ msgstr "Klammererweiterung: Konnte keinen Speicher für %u Elemente zuweisen." msgid "brace expansion: failed to allocate memory for `%s'" msgstr "Klammererweiterung: Konnte keinen Speicher für »%s« zuweisen." -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "»%s«: Ungültiger Aliasname." @@ -145,7 +141,6 @@ msgstr "nur in einer for-, while- oder until-Schleife sinnvoll." # caller #: builtins/caller.def:136 -#, fuzzy msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -163,18 +158,13 @@ msgstr "" " Mit diesen Informationen kann ein Stacktrace erzeugt werden.\n" "\n" " Das Argument gibt die angezeigte Position im Funktionsaufrufstapel an,\n" -" wobei 0 der aktuelle Funktionsaufruf ist.\n" -"\n" -" Rückgabewert:\n" -" Ist ungleich 0 wenn keine Shellfunktion ausgeführt wird oder das " -"Argument\n" -" ungültig ist, sonst 0." +" wobei 0 der aktuelle Funktionsaufruf ist." #: builtins/cd.def:327 msgid "HOME not set" msgstr "HOME ist nicht zugewiesen." -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "Zu viele Argumente." @@ -202,7 +192,7 @@ msgstr "Warnung: " msgid "%s: usage: " msgstr "%s: Aufruf: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: Die Option erfordert ein Argument." @@ -217,7 +207,7 @@ msgstr "%s: Ein numerischer Parameter ist erforderlich." msgid "%s: not found" msgstr "%s: Nicht gefunden." -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: Ungültige Option." @@ -227,7 +217,7 @@ msgstr "%s: Ungültige Option." msgid "%s: invalid option name" msgstr "%s: Ungültiger Optionsname." -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "»%s«: Ist kein gültiger Bezeichner." @@ -240,7 +230,7 @@ msgstr "Ungültige Oktalzahl." msgid "invalid hex number" msgstr "Ungültige hexadezimale Zahl." -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "Ungültige Zahl." @@ -254,88 +244,93 @@ msgstr "%s: Ungültige Signalbezeichnung." msgid "`%s': not a pid or valid job spec" msgstr "»%s«: Ist keine gültige Prozess-ID oder Jobbezeichnung." -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: Schreibgeschützte Variable." -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: »unset« nicht möglich." + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s ist außerhalb des Gültigkeitsbereiches." -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "Argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s ist außerhalb des Gültigkeitsbereiches." -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: Kein solcher Job." -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: Keine Jobsteuerung in dieser Shell." -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "Keine Jobsteuerung in dieser Shell." -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: eingeschränkt" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "eingeschränkt" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: Ist kein eingebautes Shellkommando." -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "Schreibfehler: %s." -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "Fehler beim Setzen der Terminalattribute: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "Fehler beim Ermitteln der Terminalattribute: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: Kann das aktuelle Verzeichnis nicht wiederfinden: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: Mehrdeutige Jobbezeichnung." -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "In dieser Version ist keine Hilfe verfügbar." -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: »unset« nicht möglich: %s ist schreibgeschützt" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: »unset« nicht möglich." @@ -345,110 +340,110 @@ msgstr "%s: »unset« nicht möglich." msgid "%s: invalid action name" msgstr "%s: Ungültiger Aktionsname." -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: Keine Komplettierung angegeben." -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "Warnung: Die Option -F könnte unerwartete Ergebnisse liefern." -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "Warnung: Die Option -C könnte unerwartete Ergebnisse liefern." -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "Gegenwärtig wird keine Komplettierungsfunktion ausgeführt." -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "Kann nur innerhalb einer Funktion benutzt werden." -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "Mit »-f« können keine Funktionen erzeugt werden." + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: Schreibgeschützte Funktion." + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: Referenzvariable darf kein Array sein." -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: Zirkularbezug auf indirekte Variable." -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "»%s«: Ungültiger Name für indirekte Variablenreferenz." -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "Mit »-f« können keine Funktionen erzeugt werden." - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: Schreibgeschützte Funktion." - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: Kann Feldvariablen nicht auf diese Art löschen." -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" "%s: Konvertieren von assoziativen in indizierte Arrays ist nicht möglich." -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "Dynamisches Laden ist nicht verfügbar." -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "Kann die dynamische Bibliothek nicht laden %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "Kann %s nicht in der dynamischen Bibliothek finden %s: %s" -#: builtins/enable.def:388 -#, fuzzy, c-format +#: builtins/enable.def:422 +#, c-format msgid "%s: dynamic builtin already loaded" -msgstr "%s: Ist nicht dynamisch geladen." +msgstr "%s: Ist bereits geladen." -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "" "Die Ladefunktion von %s lieferte einen Fehler (%d), daher nicht geladen." -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: Ist nicht dynamisch geladen." -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: Kann nicht löschen: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: ist ein Verzeichnis." @@ -463,7 +458,7 @@ msgstr "%s: Ist keine normale Datei." msgid "%s: file is too large" msgstr "%s: Die Datei ist zu groß." -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: Kann die Datei nicht ausführen." @@ -551,6 +546,8 @@ msgid "" "'\n" "\n" msgstr "" +"'\n" +"\n" #: builtins/help.def:185 #, c-format @@ -560,12 +557,12 @@ msgstr "" "Kein passendes Hilfethema für »%s«. Probieren Sie »help help«, »man -k %s« " "oder »info %s«." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: Kann die Datei nicht öffnen: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -587,21 +584,21 @@ msgstr "" "Ein Stern (*) neben dem Namen kennzeichnet deaktivierte Kommandos.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "Es darf höchstens eine Option aus -anrw angegeben werden." -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "Kommandostapelposition." -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: Ungültiger Zeitstempel." -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: Kommandoersetzung gescheitert." @@ -624,79 +621,79 @@ msgstr "%s: Die Argumente müssen Prozess- oder Job-IDs sein." msgid "Unknown error" msgstr "Unbekannter Fehler." -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "Ausdruck erwartet." -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: Ist kein indiziertes Array." -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: Ungültige Dateideskriptor-Angabe." -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: Ungültiger Dateideskriptor: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: Ungültige Zeilenanzahlangabe." -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: Ungültiger Arrayanfang." -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "Fehlender Name für die Arrayvariable." -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "" "Die Unterstützung für Arrayvariablen ist in dieser Shell nicht vorhanden." -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "»%s«: Fehlendes Formatierungszeichen." -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "»%c«: Ungültige Zeitformatangabe." -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "»%c«: Ungültiges Formatierungszeichen." -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "Warnung: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "Formatleseproblem: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "Fehlende hexadezimale Ziffer nach \\x." -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "Fehlende Unicode-Ziffer für \\%c." @@ -851,12 +848,12 @@ msgstr "" " \n" " Das Kommando »dirs« zeigt den Verzeichnisstapel an." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: Ungültige Wartezeitangebe." -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "Lesefehler: %d: %s" @@ -872,7 +869,7 @@ msgid "cannot simultaneously unset a function and a variable" msgstr "" "Gleichzeitiges »unset« einer Funktion und einer Variable ist nicht möglich." -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: Ist keine Feldvariable." @@ -891,11 +888,11 @@ msgstr "%s: Exportieren nicht möglich." msgid "shift count" msgstr "Verschiebeanzahl" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "Kann nicht Shelloptionen gleichzeitig aktivieren und deaktivieren." -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: Ungültiger Name für Shelloption." @@ -963,16 +960,16 @@ msgstr "%s: Ungültiges Grenzwertargument." msgid "`%c': bad command" msgstr "`%c': Falsches Kommando." -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: Kann die nicht Grenze setzen: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "Grenze" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: Kann die Grenze nicht ändern: %s" @@ -991,7 +988,7 @@ msgstr "`%c': Ungültiger Operator für den symbolischen Modus." msgid "`%c': invalid symbolic mode character" msgstr "`%c': Ungültiges Zeichen im symbolischen Modus." -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " Zeile " @@ -1011,97 +1008,107 @@ msgstr "Abbruch..." msgid "INFORM: " msgstr "INFO: " -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "Warnung: " + +#: error.c:488 msgid "unknown command error" msgstr "Unbekanntes Kommando" -#: error.c:463 +#: error.c:489 msgid "bad command type" -msgstr "" +msgstr "Falscher Kommandotyp" # Programmierfehler -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "Falscher Sprung" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s ist nicht gesetzt." -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aZu lange keine Eingabe: Automatisch ausgeloggt.\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "Kann nicht die Standardeingabe von /dev/null umleiten: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: »%c«: Ungültiges Formatzeichen." -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "Pipe-Fehler" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: Maximale Schachtelungstiefe überschritten (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: Maximale Quellcode-Schachtelungstiefe überschritten (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximale Schachtelungstiefe für Funktionen überschritten (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: eingeschränkt: `/' ist in Kommandonamen unzulässig." -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: Kommando nicht gefunden." -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: Kann die Datei nicht ausführen." + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: Defekter Interpreter" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: Kann die Binärdatei nicht ausführen: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "»%s« ist eine spezielle eingebaute Funktion." -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "Kann fd %d nicht auf fd %d verdoppeln." @@ -1114,70 +1121,69 @@ msgstr "Zu viele Rekursionen in Ausdruck." msgid "recursion stack underflow" msgstr "Rekursionsstapel leer." -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "Syntaxfehler im Ausdruck." -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "Versuchte Zuweisung zu etwas, das keine Variable ist." -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "Syntaxfehler in der Variablenzuweisung." -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "Division durch 0." -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "Fehler: Falscher Zuweisungsoperator." -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "»:« für ein bedingten Ausdruck erwartet." -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "Der Exponent ist kleiner als 0." -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "Nach einem Präinkrement oder Prädekrement wird ein Bezeichner erwartet." -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "Fehlende »)«" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "Syntaxfehler: Operator erwartet." -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "Syntaxfehler: Ungültiger arithmetischer Operator." -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (Fehlerverursachendes Zeichen ist \"%s\")." -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "Ungültige Basis." -#: expr.c:1582 -#, fuzzy +#: expr.c:1587 msgid "invalid integer constant" -msgstr "%s: Ungültige Zeilenanzahlangabe." +msgstr "Ungültige Ganzzahlenkonstante." -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "Der Wert ist für die aktuelle Basis zu groß." -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: Fehler im Ausdruck.\n" @@ -1186,7 +1192,7 @@ msgstr "%s: Fehler im Ausdruck.\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: Kann auf die übergeordneten Verzeichnisse nicht zugreifen." -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "Konnte den No-Delay-Modus für fd %d nicht wiederherstellen." @@ -1206,175 +1212,175 @@ msgstr "save_bash_input: Es existiert bereits ein Puffer für den neuen fd %d." msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "Die geforkte PID %d erscheint im laufenden Prozess %d." -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "Lösche den gestoppten Prozess %d der Prozessgruppe %ld." # https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00024.html -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" # Programmierfehler -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: Prozessnummer existiert nicht." -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Fertig" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Angehalten" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Angehalten(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Läuft" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Fertig(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Unbekannter Status" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(Speicherabzug geschrieben) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (Verz.: %s)" # interner Fehler -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: Prozess %ld wurde nicht von dieser Shell gestartet." -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: Der Job %d ist gestoppt." -#: jobs.c:3564 -#, fuzzy, c-format +#: jobs.c:3551 +#, c-format msgid "%s: no current jobs" -msgstr "%s: Kein solcher Job." +msgstr "%s: Kein aktueller Job." -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: Der Job ist beendet." -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: Der Job %d läuft bereits im Hintergrund." -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" # Debug Ausgabe -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: Zeile %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (Speicherabzug geschrieben)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(gegenwärtiges Arbeitsverzeichnis ist: %s)\n" # interner Fehler -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp war nicht erfolgreich." # interner Fehler -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: Keine Jobsteuerung im Hintergrund." # interner Fehler -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" # interner Fehler -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "Kann die Prozessgruppe des Terminals nicht setzen (%d)." -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "Keine Jobsteuerung in dieser Shell." -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: Zusicherung gescheitert: %s.\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1383,51 +1389,48 @@ msgstr "" "\r\n" "malloc: %s:%d: Zusicherung verpfuscht\\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "Unbekannt" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "Malloc: Ein internet Speicherbereich (free list) wurde überschrieben." -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: Wurde für bereits freigegebenen Speicherbereich aufgerufen." -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: Wurde für nicht zugeordneten Speicherbereich aufgerufen." -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." -#: lib/malloc/malloc.c:1001 -#, fuzzy +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" -msgstr "free: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." +msgstr "free: Underflow erkannt; magic8 beschädigt." -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: Beginn und Ende Segmentgrößen sind unterschiedlich." -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: Mit nicht zugewiesenen Argument aufgerufen." -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." -#: lib/malloc/malloc.c:1141 -#, fuzzy +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" -msgstr "" -"realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." +msgstr "realloc: Underflow erkannt; magic8 beschädigt." -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: Beginn und Ende Segmentgrößen sind unterschiedlich.<" @@ -1474,22 +1477,22 @@ msgstr "%s: Fehlerhafte Netzwerkspfadangabe." msgid "network operations not supported" msgstr "Der Netzwerkbetrieb ist nicht unterstützt." -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: Kann die Regionseinstellungen nicht ändern (%s)." -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: Kann die Regionseinstellungen nicht ändern (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: Kann die Regionseinstellungen nicht ändern (%s)." -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: Kann die Regionseinstellungen nicht ändern (%s): %s" @@ -1508,142 +1511,142 @@ msgstr "Sie haben neue Post in $_." msgid "The mail in %s has been read\n" msgstr "Die Post in %s wurde bereits gelesen.\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "Syntaxfehler: Es wird ein arithmetischer Ausdruck benötigt." -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "Syntax Fehler: unerwartetes `;'." -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "Syntaxfehler: »((%s))«." # interner Fehler -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: Falscher Befehlstyp %d." -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "Das in der Zeile %d beginnende Here-Dokument geht bis zum Dateiende " "(erwartet wird »%s«)." -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "Dateiende beim Suchen nach »%c« erreicht." -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "Dateiende beim Suchen nach »]]« erreicht." -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "Syntaxfehler im bedingten Ausdruck: Unerwartetes Symbol »%s«." -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "Syntaxfehler im bedingten Ausdruck." -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "Unerwartetes Zeichen: »%s« anstatt von »)«" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "»)« erwartet." -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "Syntaxfehler beim unerwarteten Symbol »%s«" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "Syntaxfehler bei »%s«" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "Syntaxfehler: Unerwartetes Dateiende." -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "Syntaxfehler" # Du oder Sie? -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Verwenden Sie »%s«, um die Shell zu verlassen.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "Dateiende beim Suchen nach zugehöriger »)« erreicht." @@ -1681,96 +1684,96 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: »%c«: Ungültiges Formatsymbol." -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "Dateideskriptor außerhalb des gültigen Bereichs." -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: Mehrdeutige Umlenkung." -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: Kann existierende Datei nicht überschreiben." -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: eingeschränkt: Die Ausgabe darf nicht umgeleitet werden." -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "Kann die temporäre Datei für das Hier-Dokument nicht anlegen: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: Kann fd keiner Variable zuweisen." -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" "Dateinamen der Form /dev/(tcp|udp)/host/port werden ohne Netzwerk nicht " "unterstützt" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "Umleitungsfehler: Verdoppeln des Dateibezeichners nicht möglich." -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "Konnte das Verzeichnis »/tmp« nicht finden, bitte anlegen." -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp muss ein Verzeichnis sein." -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "Der hübsche Druckmodus wird in interaktiven Schells ignoriert." -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: Ungültige Option" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "Konnte die UID nicht in %d ändern: Die effektive UID ist %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "Konnte die GID nicht in %d ändern: Die effektive GID ist %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "Kann keinen Debugger starten. Der Debugmodus ist gesperrt." -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: Ist ein Verzeichnis." -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Ich habe keinen Benutzernamen!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, Version %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1779,315 +1782,315 @@ msgstr "" "Aufruf:\t%s [Lange GNU-Option] [Option] ...\n" "\t%s [Lange GNU-Option] [Option] Script-Datei ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Lange GNU-Optionen:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Shell-Optionen:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD oder -c Kommando oder -O shopt_option\t\t(Nur Aufruf)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s oder Option -o\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Geben Sie »%s -c \"help set\"« ein, um mehr über Shell-Optionen zu " "erfahren.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Geben Sie »%s -c help« ein, um mehr über eingebaute Shellkommandos zu " "erfahren.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Mit dem Kommando »bashbug« Kommando können Sie Fehler melden.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "Bash-Homepage: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "Allgemeine Hilfe für GNU-Software: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: Ungültige Operation" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Falsches Signal." -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Aufgelegt" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Unterbrochen (Interrupt)" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Quit" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Ungültige Anweisung." -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "Verfolgen/anhalten abfangen (Trace/breakpoint trap)" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Abbruchkommando" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "EMT abfangen (EMT trap)" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Gleitkommafehler" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Abgebrochen (Killed)" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Bus-Fehler" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Adressierungsfehler" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Falscher Systemaufruf" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Unterbrochene Pipe" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Wecker" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Abgebrochen (Terminated)" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Dringende IO-Bedingung" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Angehalten (Signal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Prozessbearbeitung wieder aufgenommen." -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Kindprozess abgebrochen oder gestoppt." -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Angehalten (Terminaleingabe)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Angehalten (Terminalausgabe)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "E/A fertig" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Rechenzeitgrenze" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Grenze für Dateigröße" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarm (Virtuell)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarm (Profil)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Fenster geändert" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Datei blockiert" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Nutzersignal 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Nutzersignal 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "HFT Eingabedaten ausstehend" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "Spannungsausfall steht bevor" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "Systemausfall steht bevor" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "Verlege den Prozess auf einen anderen Prozessor" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "Programmierfehler" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "HFT-Monitormodus erlaubt" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "HFT-Monitormodus abgeschaltet" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "HFT-Tonfolge beendet" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Informationsanforderung" # https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00025.html -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Unbekanntes Signal Nr.: %d." -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Falsche Ersetzung: Kein schließendes »%s« in »%s« enthalten." -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: Kann einem Feldelement keine Liste zuweisen." -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "Kann keine Pipe für die Prozessersetzung erzeugen." -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "Kann den Kindsprozess für die Prozessersetzung nicht erzeugen." -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "Kann nicht die benannte Pipe %s zum Lesen öffnen." -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "Kann nicht die benannte Pipe %s zum Schreiben öffnen." -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "Kann die benannte Pipe %s nicht auf fd %d duplizieren." -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "Kommandoersetzung: NULL-Byte in der Eingabe ignoriert." -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "Kann keine Pipes für Kommandoersetzung erzeugen." -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "Kann keinen Unterprozess für die Kommandoersetzung erzeugen." # interner Fehler -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: Kann Pipe nicht als Dateideskriptor 1 duplizieren." -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: Ungültiger Variablenname für Namensreferenz." -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: Ungültige indirekte Expansion." -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: Ungültiger Variablenname." -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: Der Parameter ist nicht gesetzt." -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: Parameter ist leer oder nicht gesetzt." # interner Fehler -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: Teilstring-Ausdruck < 0." -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: Falsche Substitution." -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: Kann so nicht zuweisen." -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2095,12 +2098,12 @@ msgstr "" "Zukünftige Versionen dieser Shell werden das Auswerten arithmetischer " "Ersetzungen erzwingen." -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "Falsche Ersetzung: Kein schließendes »`« in %s." -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "Keine Entsprechung: %s" @@ -2123,136 +2126,141 @@ msgstr "»)« erwartet." msgid "`)' expected, found %s" msgstr "»)« erwartet, %s gefunden." -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: Zweistelliger (binärer) Operator erwartet." -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: Einstelliger (unärer) Operator erwartet." -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "Fehlende »]«" -#: test.c:899 -#, fuzzy, c-format +#: test.c:914 +#, c-format msgid "syntax error: `%s' unexpected" -msgstr "Syntax Fehler: unerwartetes `;'." +msgstr "Syntax Fehler: »%s« unerwartet." #: trap.c:220 msgid "invalid signal number" msgstr "Ungültige Signalnummer." -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "Traphandler: Maximale Traphandler-Ebene überschritten (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: Ungültiger Wert in trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" # Programmierfehler -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Falsches Signal %d." -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "Fehler beim Importieren der Funktionsdefinition für »%s«." -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "Der Shell-Level (%d) ist zu hoch und wird auf 1 zurückgesetzt." -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no function context at current scope" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: Der Variable darf kein Wert zugewiesen werden." +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + # Interner Fehler -#: variables.c:3475 +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: assigning integer to name reference" # Interner Fehler -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: no function context at current scope" # Interner Fehler -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s has null exportstr" # Interner Fehler -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "invalid character %d in exportstr for %s" # Interner Fehler -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "no `=' in exportstr for %s" # Interner Fehler -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: head of shell_variables not a function context" # Interner Fehler -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no global_variables context" # Interner Fehler -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: head of shell_variables not a temporary environment scope" # Interner Fehler -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: cannot open as FILE" # Interner Fehler -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: invalid value for trace file descriptor" # Interner Fehler -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: compatibility value out of range" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Copyright (C) 2018 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Copyright (C) 2020 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2342,14 +2350,18 @@ msgstr "command [-pVv] Kommando [Argument ...]" #: builtins.c:78 #, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilrntux] [-p] [Name[=Wert] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" +msgstr "declare [-aAfFgiIlrntux] [-p] [Name[=Wert] ...]" # #: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilnrtux] [-p] Name[=Wert] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" +msgstr "typeset [-aAfFgiIlnrtux] [-p] Name[=Wert] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2373,15 +2385,13 @@ msgstr "eval [Argument ...]" # https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00026.html #: builtins.c:96 -#, fuzzy msgid "getopts optstring name [arg ...]" -msgstr "getopts Optionen Variable [Argumente]" +msgstr "getopts Optionen [Argumente ...]" # https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00026.html #: builtins.c:98 -#, fuzzy msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" -msgstr "exec [-cl] [-a Name] [Kommando [Argumente ...]] [Umleitung ...]" +msgstr "exec [-cl] [-a Name] [Kommando [Argument ...]] [Umleitung ...]" #: builtins.c:100 msgid "exit [n]" @@ -2454,7 +2464,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o Option] [--] [Argument ...]" #: builtins.c:144 @@ -2502,7 +2513,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] Name [Name ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [Grenze]" #: builtins.c:174 @@ -2510,9 +2522,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [Modus]" #: builtins.c:177 -#, fuzzy msgid "wait [-fn] [-p var] [id ...]" -msgstr "wait [-fn] [id ...]" +msgstr "wait [-fn] [-p Variable] [id ...]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2547,11 +2558,13 @@ msgstr "" "Kommandos; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while Kommandos; do Kommandos; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until Kommandos; do Kommandos; done" #: builtins.c:200 @@ -2604,28 +2617,25 @@ msgstr "printf [-v var] Format [Argumente]" # https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00027.html #: builtins.c:231 -#, fuzzy msgid "" "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o Option] [-A Aktion]\n" -" [-G Suchmuster] [-W Wortliste] [-F Funktion] [-C Kommando]\n" -" [-X Filtermuster] [-P Prefix] [-S Suffix] [Name ...]" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o Option] [-A Aktion] [-G " +"Suchmuster] [-W Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-" +"P Prefix] [-S Suffix] [Name \n" +"...]" # https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00027.html #: builtins.c:235 -#, fuzzy msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" "F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o Option] [-A Aktion] [-G Suchmuster] [-W " -"Wortliste]\n" -" [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S " -"Suffix]\n" -" [Wort]" +"Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S " +"Suffix] [Wort]" #: builtins.c:239 msgid "compopt [-o|+o option] [-DEI] [name ...]" @@ -3095,7 +3105,6 @@ msgstr "" # declare #: builtins.c:490 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3149,6 +3158,10 @@ msgstr "" " und Quelldatei beim Debuggen).\n" " -g Deklariert globale Varieblen innerhalb einer\n" " Shellfunktion; wird ansonsten ignoriert.\n" +" -I Eine neue lokale Variable erhält die Attribute und Werte " +"der\n" +" Variable mit gleichen Namen im vorherigen " +"Gültigkeitsbereich. \n" " -p Zeigt die Attribute und Werte jeder angegebenen\n" " Variable an.\n" "\n" @@ -3156,13 +3169,12 @@ msgstr "" " -a\tDeklariert ein indiziertes Feld (wenn unterstützt).\n" " -A\tDeklariert ein assoziatives Feld (wenn unterstützt).\n" " -i\tDeklariert eine ganzzahlige Variable.\n" -" -l\tKonvertiert die Variabennmamen in Kleinbuchstaben.\n" +" -l\tKonvertiert die übergebenen Werte zu Kleinbuchstaben.\n" " -n\tDer Name wird als Variable interpretiert. \n" " -r\tDeklariert nur lesbare Variablen.\n" " -t\tWeist das Attribut »trace« zu.\n" -" -u\tKonvertiert die Variablennamen in Großbuchstaben.\n" -" -x\tExportiert die Variablen über die aktuelle Shell-\n" -" Umgebung hinaus.\n" +" -u\tKonvertiert die übergebenen Werte in Großbuchstaben.\n" +" -x\tExportiert die Variablen.\n" "\n" " Das Voranstellen von »+« anstelle von »-« schaltet die angegebenen\n" " Attribute ab.\n" @@ -3387,7 +3399,6 @@ msgstr "" # getopts #: builtins.c:652 -#, fuzzy msgid "" "Parse option arguments.\n" " \n" @@ -3429,7 +3440,7 @@ msgid "" msgstr "" "Verarbeitet Optionsargumente.\n" "\n" -" Getopts wird von Shell-Prozeduren verwendet, um die\n" +" Getopts wird von Shellprozeduren verwendet, um die\n" " Kommandozeilenoptionen auszuwerten.\n" "\n" " \"Optionen\" enthält die auszuwertenden Buchstaben. Ein Doppelpunkt\n" @@ -3569,6 +3580,31 @@ msgid "" " Returns success or status of executed command; non-zero if an error " "occurs." msgstr "" +"Anzeigen oder Ausführen von Befehlen aus der History-Liste.\n" +" \n" +" fc wird verwendet, um Befehle aus der History-Liste aufzulisten,\n" +" zu bearbeiten und erneut auszuführen. FIRST und LAST können\n" +" Zahlen sein, die den Bereich angeben, oder FIRST kann eine\n" +" Zeichenkette sein, was bedeutet, dass der jüngste Befehl mit\n" +" dieser Zeichenfolge beginnt.\n" +" \n" +" Optionen:\n" +" -e ENAME Auswahl des zu verwendenden Editors. Standard sind FCEDIT,\n" +" dann EDITOR, dann vi.\n" +" -l Zeilen auflisten statt bearbeiten.\n" +" -n Zeilennummern beim Auflisten weglassen.\n" +" -r kehrt die Reihenfolge der Zeilen um (die neuesten Zeilen zuerst).\n" +" \n" +" Mit `fc -s [pat=rep ...] [command]' wird COMMAND erneut\n" +" ausgeführt, nachdem die Ersetzung OLD=NEW durchgeführt wurde.\n" +" \n" +" Ein nützlicher Alias ist r='fc -s', so dass die Eingabe von `r cc'\n" +" den letzten Befehl ausführt, der mit \"cc\" beginnt, und die Eingabe\n" +" von \"r\" den letzten Befehl erneut ausführt.\n" +" \n" +" Exit-Status:\n" +" Gibt den Erfolg oder den Status des ausgeführten Befehls zurück;\n" +" ungleich Null, wenn ein Fehler auftritt." #: builtins.c:764 msgid "" @@ -3612,6 +3648,7 @@ msgstr "" " Immer Erfolg, außer wenn die Jobsteuerung nicht verfügbar ist\n" " oder ein Fehler auftritt." +# hash #: builtins.c:793 msgid "" "Remember or display program locations.\n" @@ -3635,6 +3672,31 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" +"Programpfade merken oder anzeigen.\n" +" \n" +" Ermittelt und speichert den vollständigen Pfadnamen jedes\n" +" Kommandos NAME. Wenn keine Argumente angegeben werden, werden\n" +" Informationen über gespeicherte Kommandod angezeigt.\n" +" \n" +" Optionen:\n" +" -d Vergessen des Speicherortes für jeden NAME\n" +" -l Anzeige in einem Format, das als Eingabe wiederverwendet werden " +"kann\n" +" -p Pfadname verwendet PATHNAME als den vollständigen Pfadnamen von " +"NAME\n" +" -r vergisst alle gespeicherten Pfade\n" +" \n" +" -t gibt den Speicherort jedes NAMENS aus, wobei jedem\n" +" Speicherort der entsprechende NAME vorangestellt wird,\n" +" wenn mehrere NAMEs angegeben sind\n" +" \n" +" Argumente:\n" +" NAME Jeder NAME wird in $PATH gesucht und in die Liste\n" +" der gespeicherten Befehle hinzugefügt.\n" +" \n" +" Exit-Status:\n" +" Gibt Erfolg zurück, es sei denn, NAME wird nicht gefunden oder es\n" +" wird eine ungültige Option angegeben." # help #: builtins.c:818 @@ -3678,6 +3740,7 @@ msgstr "" " Erfolg, außer wenn das Muster nicht gefunden oder eine ungültige Option\n" " angegeben wurde." +# history #: builtins.c:842 msgid "" "Display or manipulate the history list.\n" @@ -3712,7 +3775,42 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" +"Zeigt die Verlaufsliste an oder bearbeitet sie.\n" +" \n" +" Zeigt die Verlaufsliste mit Zeilennummern an und stellt jedem\n" +" geänderten Eintrag ein `*' vorangestellt. Ein Argument von N\n" +" listet nur die letzten N Einträge auf.\n" +" \n" +" Optionen:\n" +" -c Löscht die Verlaufsliste, indem alle Einträge gelöscht werden.\n" +" -d offset löscht den Verlaufseintrag an der Position\n" +" OFFSET. Negative Offsets zählen vom Verlaufslistenende\n" +" zurück.\n" +" -a Anhängen vom Verlauf dieser Sitzung an die Verlaufsdatei.\n" +" -n alle nicht bereits aus der Verlaufsdatei gelesenen.\n" +" Verlaufszeilen lesen und an die Verlaufsliste anhängen.\n" +" -r liest die Verlaufsdatei und hängt den Inhalt an die\n" +" Verlaufsliste an.\n" +" -w schreibt den aktuellen Verlauf in die Verlaufsdatei.\n" +" -p führt eine Verlaufserweiterung für jedes ARG durch und zeigt\n" +" das Ergebnis an, ohne es in der Verlaufslise einzutragen.\n" +" -s die ARGs als einen einzigen Eintrag an die History-Liste anhängen.\n" +" \n" +" Wenn FILENAME angegeben ist, wird dieser als History-Datei verwendet.\n" +" Andernfalls, wenn HISTFILE einen Wert hat, wird dieser verwendet,\n" +" sonst ~/.bash_history.\n" +" \n" +" Wenn die Variable HISTTIMEFORMAT gesetzt und nicht null ist, wird\n" +" ihr Wert verwendet als Formatierungszeichenfolge für strftime(3)\n" +" verwendet, um den Zeitstempel zu Zeitstempel für jeden angezeigten\n" +" History-Eintrag zu drucken. Andernfalls werden keine Zeitstempel\n" +" gedruckt.\n" +" \n" +" Rückgabewert:\n" +" Gibt einen Erfolg zurück, es sei denn, es wurde eine ungültige\n" +" Option angegeben oder es ist ein Fehler aufgetreten." +# jobs #: builtins.c:879 msgid "" "Display status of jobs.\n" @@ -3736,7 +3834,30 @@ msgid "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." msgstr "" +"Auftragstatus anzeigen.\n" +" \n" +" Listet die aktiven Aufträge auf. JOBSPEC schränkt die Ausgabe auf\n" +" diesen Auftrag ein. Ohne Optionen werden die Status der aktiven\n" +" Aufträge angezeigt.\n" +" \n" +" Optionen:\n" +" -l zeigt zusätzlich auch die Prozessnummern an.\n" +" -n zeigt nur die Prozesse an, deren Status sich seit der letzten\n" +" Benachrichtigung geändert haben.\n" +" -p zeigt nur Prozessnummern an.\n" +" -r zeigt nur laufende Aufträge an.\n" +" -s zeigt nur gestoppte Aufträge an\n" +" \n" +" Mit der Option -x wird COMMAND ausgeführt, nachdem alle in ARGS\n" +" enthaltenen Auftragsspezifikationen durch die zugehörigen\n" +" Prozesnummern ersetzt worden sind.\n" +" \n" +" Rückgabewert:\n" +" Gibt einen Erfolg zurück, es sei denn, es wurde eine ungültige\n" +" Option angegeben oder es ist ein Fehler aufgetreten. Wenn -x\n" +" verwendet wird, wird der Rückgebewert von COMMAND zurückgegeben." +# disown #: builtins.c:906 msgid "" "Remove jobs from current shell.\n" @@ -3753,7 +3874,23 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" +"Entfernt Aufträge aus der aktuellen Shell.\n" +" \n" +" Entfernt jedes JOBSPEC-Argument aus der Tabelle der aktiven\n" +" Aufträge. Ohne JOBSPECs verwendet die Shell ihre Vorstellung vom\n" +" aktuellen Auftrag.\n" +" \n" +" Optionen:\n" +" -a entfernt alle Aufträge, wenn JOBSPEC nicht angegeben wird.\n" +" -h JOBSPEC maskieren, so dass der Auftrag kein SIGHUP erhält,\n" +" wenn die Shell ein SIGHUP empfängt.\n" +" -r entfernt nur laufende Aufträge.\n" +" \n" +" Beenden Status:\n" +" Gibt Erfolg zurück, außer wenn eine ungültige Option oder\n" +" JOBSPEC angegeben wurde." +# kill #: builtins.c:925 msgid "" "Send a signal to a job.\n" @@ -3776,6 +3913,27 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" +"Sendet ein Signal an einen Auftrag.\n" +" \n" +" Sendet den durch PID oder JOBSPEC identifizierten Prozessen das\n" +" mit SIGSPEC oder SIGNUM anggebene Signal. Wenn weder SIGSPEC\n" +" noch SIGNUM angegeben sind, dann wird wird SIGTERM gesendet.\n" +" \n" +" Optionen:\n" +" -s sig SIG ist ein Signalname.\n" +" -n sig SIG ist eine Signalnummer.\n" +" -l listet die Signalnamen auf. Wenn Argumente auf `-l' folgen,\n" +" werden für diese Signalnummern die Namen aufgelistet.\n" +" -L Synonym für -l.\n" +" \n" +" Kill ist ein in die Shell eingebaute Funktion, da diese erlaubt,\n" +" Auftrags- statt Prozessnummern anzugeben. Weierhin kann Kill\n" +" Prozesse auch dann beenden, wenn die maximal erlaubte\n" +" Prozessanzahl erreicht ist.\n" +" \n" +" Exit-Status:\n" +" Gibt Erfolg zurück, es sei denn, es wurde eine ungültige Option\n" +" angegeben oder es ist ein Fehler aufgetreten." #: builtins.c:949 msgid "" @@ -3821,8 +3979,52 @@ msgid "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" +"Auswerten arithmetischer Ausdrücke.\n" +" \n" +" Jedes ARG wird als arithmetischer Ausdruck ausgewertet. Die\n" +" Auswertung erfolgt in Ganzzahlen mit fester Breite ohne\n" +" Überprüfung auf Überlauf. Division durch 0 wird abgefangen und als\n" +" Fehler gekennzeichnet. Die folgende Liste von Operatoren ist in\n" +" abnehmender Präferenz nach gleichrangigen Operatoren gruppiert.\n" +" \n" +" \tid++, id-- Variable post-increment, post-decrement\n" +" \t++id, --id Variable pre-increment, pre-decrement\n" +" \t-, + unäres Minus, Plus\n" +" \t!, ~ logische und bitweise Negation\n" +" \t** Potenzierung\n" +" \t*, /, % Multiplikation, Division, Rest\n" +" \t+, - Addition, Subtraktion\n" +" \t<<, >> bitweise Links- und Rechtsverschiebung\n" +" \t<=, >=, <, > Vergleich\n" +" \t==, != Gleichheit, Ungleichheit\n" +" \t& bitweises UND\n" +" \t^ bitweises XOR\n" +" \t| bitweises ODER\n" +" \t&& logisches UND\n" +" \t|| logisches OR\n" +" \texpr ? expr : expr\n" +" Bedingte Ausführung\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |= Zuweisung\n" +" \n" +" Shell-Variablen sind als Operanden zulässig. Der Variablenname\n" +" wird innerhalb eines Ausdrucks durch seinen Wert (der in eine\n" +" Ganzzahl mit fester Breite umgewandelt wird) ersetzt. Das\n" +" Integer-Attribut der Variablen muss nicht eingeschaltet sein, um\n" +" in einem Ausdruck verwendet zu werden.\n" +" \n" +" Die Operatoren werden in der Reihenfolge ihres Vorrangs\n" +" ausgewertet. Unterausdrücke in Klammern werden zuerst ausgewertet\n" +" und können die obigen Rangfolge Regeln außer Kraft setzen.\n" +" \n" +" Rückgabewert:\n" +" Wenn der letzte ARG 0 ergibt, gibt let 1 zurück; andernfalls gibt let 0 " +"zurück." +# read #: builtins.c:994 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3833,7 +4035,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -3873,8 +4077,53 @@ msgid "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" +"Liest eine Zeile von der Standardeingabe und teilt sie in Felder auf.\n" +" \n" +" Liest eine einzelne Zeile aus der Standardeingabe oder vom\n" +" Dateideskriptor FD wenn die Option -u angegeben ist. Die Zeile\n" +" wird wie bei der Wortaufteilung in Felder aufgeteilt aufgeteilt,\n" +" und das erste Wort wird dem ersten NAME zugewiesen, das zweite\n" +" NAME zugewiesen, das zweite Wort dem zweiten NAME usw., wobei alle\n" +" verbleibenden Wörter dem dem letzten NAME zugeordnet werden. Die\n" +" in $IFS enthaltenen Zeichen werden als Worttrennzeichen verwendet.\n" +" \n" +" Wenn keine NAMEn angegeben werden, wird die gelesene Zeile in der\n" +" REPLY-Variablen gespeichert.\n" +" \n" +" Optionen:\n" +" -a array weist die gelesenen Wörter den aufeinanderfolgenden\n" +" Indizes der Array Variable ARRAY, beginnend bei Null.\n" +" -d delim fortfahren, bis das erste Zeichen von DELIM gelesen\n" +" wird, anstelle von statt Newline.\n" +" -e Readline verwenden, um die Zeile zu lesen.\n" +" -i text TEXT als Anfangstext für Readline verwenden.\n" +" -n nchars Liest maximal NCHARS Zeichen, ohne ein Zeilenumbruch\n" +" \t\tzu suchen. Worttrennzeichen werden ausgewertet.\n" +" -N nchars Liest genau NCHARS Zeichen, bis EOF oder einer\n" +" \t\tZeitüberschreitung. Worttrennzeichen werden ignoriert.\n" +" -p prompt Gibt vor dem Lesen die Zeichenkette PROMPT ohne einen\n" +" \t\tabschließenden Zeilenumbruch aus.\n" +" -r lässt keine Backslashes als Escape-Zeichen zu\n" +" -s keine Echo-Eingabe von einem Terminal\n" +" -t timeout\n" +" Zeitüberschreitung und Rückgabe eines Fehlers, wenn\n" +" \t\teine vollständige Eingabezeile nicht innerhalb von\n" +" \t\tTIMEOUT Sekunden gelesen wird. Die TMOUT Variable\n" +" \t\tenthält das Standard-Timeout. TIMEOUT kann als\n" +" \t\tBruchteil angegeben werden. Wenn TIMEOUT gleich 0\n" +" \t\tist, werden keine daten geleden und gibt Erfolg\n" +" \t\tzurück, wenn Daten dem angegebenen Dateideskriptor\n" +" \t\tverfügbar sind. Der Rückgabewert ist größer als 128,\n" +" \t\twenn die Zeitüberschreitung abgelaufen ist.\n" +" -u fd Lesen von Dateideskriptor FD statt von der Standardeingabe\n" +" \n" +" Rückgabewert: \n" +" Der Rückgabewert ist Null. Es sei denn, das Dateiende wurde\n" +" erreicht, die Lesezeit überschritten (in diesem Fall ist er größer\n" +" als 128), ein Variablenzuweisungsfehler tritt auf oder ein\n" +" ungültiger Dateideskriptor wurde als Argument von -u übergeben." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3885,8 +4134,19 @@ msgid "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." msgstr "" +"Rückkehr aus einer Shell-Funktion.\n" +" \n" +" Bewirkt, dass eine Funktion oder ein geladenes Skript mit dem\n" +" durch N angegebenen Rückgabewert beendet wird. Wenn N weggelassen\n" +" wird, wird als Rückgabewert der des zuletzt ausgeführten Befehls\n" +" verwendet.\n" +" \n" +" Rückgabewert:\n" +" Gibt N zurück, oder einen Fehler, wenn return außerhalb einer Funktion\n" +" oder Skript aufgerufen wird." -#: builtins.c:1054 +# set +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3971,8 +4231,99 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" +"Setzen oder Aufheben von Shell-Optionen und Positionsparametern.\n" +" \n" +" Den Wert von Shell-Attributen und Positionsparametern ändern, oder\n" +" die Namen und Werte von Shell-Variablen anzeigen.\n" +" \n" +" Optionen:\n" +" -a Markieren von Variablen die geändert oder erstellt wurden, für den " +"Export.\n" +" -b Sofortige Benachrichtigung über das Auftragsende.\n" +" -e Sofortiger Abbruch, wenn ein Befehl mit einem Status ungleich Null " +"beendet wird.\n" +" -f Deaktiviert das Generieren von Dateinamen (globbing).\n" +" -h Merkt sich den Speicherort von Befehlen, wenn sie nachgeschlagen " +"werden.\n" +" -k Alle Zuweisungsargumente werden in die Umgebung für einen\n" +" Befehl in die Umgebung aufgenommen, nicht nur diejenigen,\n" +" die dem Befehl vorangestellt sind.\n" +" -m Die Auftragskontrolle ist aktiviert.\n" +" -n Befehle lesen, aber nicht ausführen.\n" +" -o Optionsname\n" +" Setzt die Variable, die dem Optionsname entspricht:\n" +" allexport wie -a\n" +" braceexpand wie -B\n" +" emacs verwendet eine emacsähnliche Schnittstelle zur " +"Zeilenbearbeitung\n" +" errexit gleich wie -e\n" +" errtrace dasselbe wie -E\n" +" functrace dasselbe wie -T\n" +" hashall dasselbe wie -h\n" +" histexpand gleich wie -H\n" +" history Befehlshistorie aktivieren\n" +" ignoreeof die Shell wird beim Lesen von EOF nicht beendet\n" +" interaktive-Kommentare\n" +" erlaubt das Erscheinen von Kommentaren in " +"interaktiven Befehlen\n" +" keyword dasselbe wie -k\n" +" monitor gleich wie -m\n" +" noclobber dasselbe wie -C\n" +" noexec gleich wie -n\n" +" noglob gleich wie -f\n" +" nolog wird derzeit akzeptiert, aber ignoriert\n" +" notify gleich wie -b\n" +" nounset dasselbe wie -u\n" +" onecmd dasselbe wie -t\n" +" physical wie -P\n" +" pipefail der Rückgabewert einer Pipeline ist der Status\n" +" des des letzten Befehls, der mit einem Status\n" +" ungleich Null beendet wurde, oder Null, wenn\n" +" kein Befehl mit einem Status ungleich Null\n" +" beendet wurde.\n" +" posix Ändert das Verhalten von bash, wo die Standard\n" +" Operation vom Posix-Standard abweicht, um mit\n" +" dem Standard übereinstimmen.\n" +" privilegiert gleich wie -p\n" +" verbose dasselbe wie -v\n" +" vi eine vi-ähnliche Schnittstelle zur Zeilenbearbeitung " +"verwenden\n" +" xtrace dasselbe wie -x\n" +" -p Wird eingeschaltet, wenn die realen und effektiven\n" +" Benutzerkennungen nicht übereinstimmen. Deaktiviert die\n" +" Verarbeitung der $ENV-Datei und das Importieren von Shell\n" +" Funktionen. Wenn diese Option ausgeschalten ist, werden die\n" +" effektive uid und gid auf die reale uid und gid gesetzt. \n" +" -t Beenden nach dem Lesen und Ausführen eines Befehls.\n" +" -u Nicht gesetzte Variablen beim Substituieren als Fehler behandeln.\n" +" -v Shell-Eingabezeilen ausgeben, wenn sie gelesen werden.\n" +" -x Befehle und ihre Argumente ausgeben, wenn sie ausgeführt werden.\n" +" -B Die Shell führt eine Klammererweiterung durch\n" +" -C Dateien werden bei Ausgabeumleitung nicht überschrieben.\n" +" -E Wenn gesetzt, wird die Fehlerfalle (trap) an Shell-Funktionen " +"vererbt.\n" +" -H Aktiviert die !-Stil Verlaufsersetzung. Diese Option ist\n" +" bei einer interaktiven Shell standardmäßig aktiviert.\n" +" -P Symbolische Links werden nicht aufgelöst, wenn Befehle wie\n" +" z.B. cd, das aktuelle Verzeichnis ändern.\n" +" -T DEBUG und RETURN Fallen (trap) werden an Shellfunktionen vererbt.\n" +" -- Weist alle verbleibenden Argumente den Positionsparametern\n" +" zu. Sind keine Argumente verblieben, werden die\n" +" Positionsparameter nicht gesetzt.\n" +" - Weist alle verbleibenden Argumente den Positionsparametern zu.\n" +" Die Optionen -x und -v sind ausgeschaltet.\n" +" \n" +" Durch Verwenden von + anstelle von - werden Option ausgeschaltet.\n" +" Die Optionen können auch beim Shellaufruf verwendet werden. Die\n" +" aktuelle aktiven Optionen sind in $- gespeichert. Die restlichen\n" +" n ARGs sind positionale Parameter und werden der Reihe nach $1,\n" +" $2, ... $n zugewiesen. Wenn keine ARGs angegeben werden, werden\n" +" alle Shell-Variablen ausgegeben.\n" +" \n" +" Rückgabewert:\n" +" Gibt Erfolg zurück, es sei denn, eine ungültige Option wurde angegeben." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3994,7 +4345,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4013,7 +4364,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4034,7 +4385,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4045,7 +4396,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4059,7 +4410,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4073,7 +4424,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4157,7 +4508,7 @@ msgid "" msgstr "" # [ -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4171,7 +4522,7 @@ msgstr "" " schließt." # times -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4190,7 +4541,7 @@ msgstr "" " Rückgabewert:\n" " Immer 0." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4234,7 +4585,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4264,7 +4615,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4314,7 +4665,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4332,7 +4683,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4364,7 +4715,7 @@ msgid "" " children." msgstr "" -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4379,7 +4730,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4392,7 +4743,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4409,7 +4760,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4429,7 +4780,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4445,7 +4796,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4456,7 +4807,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4477,29 +4828,31 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4512,7 +4865,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -4526,7 +4879,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4537,7 +4890,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4552,8 +4905,7 @@ msgid "" msgstr "" # (( )) -#: builtins.c:1726 -#, fuzzy +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4568,12 +4920,11 @@ msgstr "" " Der Ausdruck wird nach den Regeln für arithmetische Berechnungen\n" " ausgewertet. Diese Schreibweise entspricht »let Ausdruck«.\n" "\n" -" Rückgabewert: \n" -" Gibt »1« zurück, wenn die Auswertung des letzten Arguments Null\n" -" ergibt, sonst »0«." +" Rückgabewert:\n" +" Ist »1«, wenn der arithmetische Ausdruck 0 ergibt, sonst »0«." # [[ -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -4624,7 +4975,7 @@ msgstr "" " 0 oder 1 abhängig vom Wert des AUSDRUCKs." # variable_help -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4736,7 +5087,7 @@ msgstr "" " Kommandos angibt.\n" # pushd -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -4792,7 +5143,7 @@ msgstr "" " wurde oder der Verzeichniswechsel nicht erfolgreich war." # popd -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -4846,7 +5197,7 @@ msgstr "" " wurde oder der Verzeichniswechsel nicht erfolgreich war." # dirs -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -4900,7 +5251,7 @@ msgstr "" " Gibt Erfolg zurück, außer bei einer ungültigen Option oder wenn\n" " ein Fehler auftritt." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -4939,7 +5290,8 @@ msgstr "" " worden ist, wird ein Fehler zurückgegeben." # printf -#: builtins.c:1937 +#: builtins.c:1938 +#, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4962,6 +5314,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -5012,7 +5366,7 @@ msgstr "" "ein\n" " Aus- bzw. Zuweisungsfehler auftritt." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5044,7 +5398,7 @@ msgid "" msgstr "" # compgen -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5066,7 +5420,7 @@ msgstr "" " Rückgabewert:\n" " Falsche Optionen oder Fehler führen zu Rückgabewerten ungleich Null." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5098,7 +5452,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5141,7 +5495,7 @@ msgid "" msgstr "" # readarray -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5151,6 +5505,10 @@ msgstr "" "\n" " Ist ein Synonym für »mapfile«." +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: Ungültiger Schlüssel für das assoziative Array." + # https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00025.html #~ msgid "Unknown Signal #" #~ msgstr "Unbekannte Signalnummer" diff --git a/po/el.gmo b/po/el.gmo index 97304da9e..809aac866 100644 Binary files a/po/el.gmo and b/po/el.gmo differ diff --git a/po/el.po b/po/el.po index ed9fb5b40..a84b8f07d 100644 --- a/po/el.po +++ b/po/el.po @@ -2,13 +2,13 @@ # Copyright (C) 2013 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # -# Lefteris Dimitroulakis , 2013, 2016, 2017. +# Lefteris Dimitroulakis , 2013, 2016, 2017, 2021 msgid "" msgstr "" -"Project-Id-Version: bash-4.4\n" +"Project-Id-Version: bash-5.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2017-06-21 17:08+0300\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2021-04-12 10:35+0300\n" "Last-Translator: Lefteris Dimitroulakis \n" "Language-Team: Greek \n" "Language: el\n" @@ -17,86 +17,81 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 1.5\n" +"X-Generator: Poedit 2.3\n" #: arrayfunc.c:66 msgid "bad array subscript" -msgstr "κακός δείκτης πίνακα" +msgstr "λάθος δείκτης πίνακα" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" -msgstr "%s: αφαίρεση του χαρακτηριστικού nameref " +msgstr "%s: αφαίρεση του χαρακτηριστικού nameref" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "%s: αδυναμία μετατροπής indexed πίνακα σε associative πίνακα " +msgstr "%s: αδυναμία μετατροπής indexed πίνακα σε associative πίνακα" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: μη έγκυρο κλειδί associative πίνακα " - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" -msgstr "%s: αδυναμία εκχώρησης σε μη αριθμητικό δείκτη " +msgstr "%s: αδυναμία εκχώρησης σε μη αριθμητικό δείκτη" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: αδυναμία δημιουργίας: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: δεν μπορώ να βρω keymap για εντολή" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "%s: ο πρώτος μη-λευκό διάστημα χαρακτήρας δεν είναι «\"» " +msgstr "%s: ο πρώτος μη-λευκό διάστημα χαρακτήρας δεν είναι «\"»" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "όχι «%c» κλεισήματος σε %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" -msgstr "%s: απουσιάζει διαχωριστής δίστιγμο " +msgstr "%s: απουσιάζει ο διαχωριστής δίστιγμο" -#: bashline.c:4555 -#, fuzzy, c-format +#: bashline.c:4733 +#, c-format msgid "`%s': cannot unbind in command keymap" msgstr "«%s»: αδυναμία αποσύνδεσης" #: braces.c:327 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "brace expansion: αδυναμία εκχώρησης μνήμης για %s " +msgstr "brace expansion: αδυναμία εκχώρησης μνήμης για %s" #: braces.c:406 -#, fuzzy, c-format +#, c-format msgid "brace expansion: failed to allocate memory for %u elements" -msgstr "brace expansion: αδυναμία εκχώρησης μνήμης για %d στοιχεία " +msgstr "brace expansion: αδυναμία εκχώρησης μνήμης για %u στοιχεία" #: braces.c:451 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "brace expansion: αδυναμία εκχώρησης μνήμης για «%s»" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" -msgstr "«%s»: μη έγκυρο ψευδώνημο" +msgstr "«%s»: μη έγκυρο συνώνυμο" #: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" @@ -151,12 +146,21 @@ msgid "" " The value of EXPR indicates how many call frames to go back before the\n" " current one; the top frame is frame 0." msgstr "" +"Επιστρέφει το context της κλήσης της τρέχουσας υπορουτίνας.\n" +" \n" +" Χωρίς EXPR, επιστρέφει \"$line $filename\". Με EXPR, επιστρέφει\n" +" \"$line $subroutine $filename\", αυτή η έξτρα πληροφορία μπορεί να " +"χρησιμοποιηθει\n" +" για να δώσει ένα stack trace.\n" +" \n" +" Η τιμή του EXPR δηλώνει πόσα call frames να πας πίσω πριν\n" +" από το τρέχον, το ανώτατο είναι το frame 0." #: builtins/cd.def:327 msgid "HOME not set" msgstr "HOME δεν έχει οριστεί" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "πάρα πολλά ορίσματα" @@ -183,7 +187,7 @@ msgstr "προειδοποίηση: " msgid "%s: usage: " msgstr "%s: χρήση: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: η επιλογή απαιτεί όρισμα" @@ -198,7 +202,7 @@ msgstr "%s: απαιτείται αριθμητικό όρισμα" msgid "%s: not found" msgstr "%s: δεν βρέθηκε" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: μη έγκυρη επιλογή" @@ -208,10 +212,10 @@ msgstr "%s: μη έγκυρη επιλογή" msgid "%s: invalid option name" msgstr "%s: μη έγκυρο όνομα επιλογής" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" -msgstr "«%s»: μή έγκυρο αναγνωριστικό " +msgstr "«%s»: μή έγκυρο αναγνωριστικό" #: builtins/common.c:240 msgid "invalid octal number" @@ -221,7 +225,7 @@ msgstr "μη έγκυρος οκταδικός αριθμός" msgid "invalid hex number" msgstr "μη έγκυρος εξαδικός αριθμός" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "μη έγκυρος αριθμός" @@ -235,88 +239,93 @@ msgstr "%s: μη έγκυρη προδιαγραφή σήματος" msgid "`%s': not a pid or valid job spec" msgstr "«%s»: όχι pid ή έγκυρο job spec" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: μεταβλητή μόνο για ανάγνωση" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: αδυναμία «unset»" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s εκτός ορίων" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "όρισμα" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s εκτός ορίων" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: δεν υπάρχει τέτοια εργασία" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" -msgstr "%s: όχι έλεγχος εγασιών " +msgstr "%s: όχι έλεγχος εγασιών" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "όχι έλεγχος εργασιών" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" -msgstr "%s: περιορισμένο " +msgstr "%s: περιορισμένο" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "περιορισμένο" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" -msgstr "%s: όχι ένα builtin κελύφους " +msgstr "%s: όχι ένα builtin κελύφους" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "σφάλμα εγγραφής: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" -msgstr "σφάλμα κατά τον ορισμό των χαρακτηριστικών τερματικού: %s " +msgstr "σφάλμα κατά τον ορισμό των χαρακτηριστικών τερματικού: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "σφάλμα κατά την λήψη των χαρακτηριστικών τερματικού: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: σφάλμα κατά την ανάκτηση τρέχοντος καταλόγου: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: ασαφείς προδιαγραφές εργασίας" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" -msgstr "βοήθεια μη διαθέσιμη σ' αυτήν την έκδοση " +msgstr "βοήθεια μη διαθέσιμη σ' αυτήν την έκδοση" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: αδυναμία unset: %s μόνο για ανάγνωση" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: αδυναμία «unset»" @@ -326,109 +335,109 @@ msgstr "%s: αδυναμία «unset»" msgid "%s: invalid action name" msgstr "%s: μη έγκυρο όνομα ενέργειας" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: δεν υπάρχει προδιαγραφή συμπλήρωσης" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "προειδοποίηση: η επιλογή -F μπορεί να μη δουλέψει όπως περιμένεις" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "προειδοποίηση: η επιλογή -C ίσως δεν δουλέψει όπως αναμένετε" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" -msgstr "η λειτουργία συμπλήρωσης δεν εκτελείται επί του παρόντος " +msgstr "η λειτουργία συμπλήρωσης δεν εκτελείται επί του παρόντος" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "μπορεί να χρησιμοποιηθεί μόνο μέσα σε συνάρτηση" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "" +"η επιλογή «-f» δεν μπορεί να χρησιμοποιηθεί για τη δημιουργία συναρτήσεων" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: συνάρτηση μόνο για ανάγνωση" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "%s: η μεταβλητή αναφοράς δεν μπορεί να είναι πίνακας " +msgstr "%s: η μεταβλητή αναφοράς δεν μπορεί να είναι πίνακας" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "%s: nameref αυτοαναφορά μεταβλητής δεν επιτρέπεται " +msgstr "%s: nameref αυτοαναφορά μεταβλητής δεν επιτρέπεται" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" -msgstr "%s: κυκλική αναφορά ονόματος " +msgstr "%s: κυκλική αναφορά ονόματος" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" -msgstr "«%s»: μη έγκυρο όνομα μεταβλητής για όνομα αναφοράς " +msgstr "«%s»: μη έγκυρο όνομα μεταβλητής για όνομα αναφοράς" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "" -"η επιλογή «-f» δεν μπορεί να χρησιμοποιηθεί για τη δημιουργία συναρτήσεων" +#: builtins/declare.def:856 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: αδυναμία καταστροφής μεταβλητής πίνακα κατ' αυτόν τον τρόπο" -#: builtins/declare.def:526 execute_cmd.c:5986 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format -msgid "%s: readonly function" -msgstr "%s: συνάρτηση μόνο για ανάγνωση" +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: αδυναμία μετατροπής associative πίνακα σε indexed πίνακα" -#: builtins/declare.def:824 +#: builtins/declare.def:891 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: η σύνθετη εκχώρηση πίνακα απορρίφθηκε" -#: builtins/declare.def:838 -#, c-format -msgid "%s: cannot destroy array variables in this way" -msgstr "%s: αδυναμία καταστροφής μεταβλητής πίνακα κατ' αυτόν τον τρόπο " - -#: builtins/declare.def:845 builtins/read.def:815 -#, c-format -msgid "%s: cannot convert associative to indexed array" -msgstr "%s: αδυναμία μετατροπής associative πίνακα σε indexed πίνακα " - -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "δυναμική φόρτωση μη διαθέσημη" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "αδυναμία ανοίγματος κοινόχρηστου αντικειμένου %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "αδυναμία εύρεσης %s στο κοινόχρηστο αντικείμενο %s: %s" -#: builtins/enable.def:388 -#, fuzzy, c-format +#: builtins/enable.def:422 +#, c-format msgid "%s: dynamic builtin already loaded" -msgstr "%s: δεν φορτώθηκε δυναμικά" +msgstr "%s: δυναμικό builtin ήδη φορτωμένο" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "Η συνάρτηση φορτώματος του %s επιστρέφει λάθος (%d): δεν φορτώθηκε " +msgstr "h συνάρτηση φορτώματος του %s επιστρέφει λάθος (%d): δεν φορτώθηκε" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: δεν φορτώθηκε δυναμικά" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: αδυναμία διαγραφής: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: είναι κατάλογος" @@ -443,7 +452,7 @@ msgstr "%s: όχι κανονικό αρχείο" msgid "%s: file is too large" msgstr "%s: αρχείο πολύ μεγάλο" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: αδυναμία εκτέλεσης δυαδικού αρχείου" @@ -493,7 +502,7 @@ msgstr "τρέχων" #: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" -msgstr "η εργασία %d ξεκίνησε χωρίς έλεγχο εργασιών " +msgstr "η εργασία %d ξεκίνησε χωρίς έλεγχο εργασιών" #: builtins/getopt.c:110 #, c-format @@ -507,7 +516,7 @@ msgstr "%s: η επιλογή απαιτεί ένα όρισμα -- %c\n" #: builtins/hash.def:91 msgid "hashing disabled" -msgstr "hashing απενεργοποιημένο " +msgstr "hashing απενεργοποιημένο" #: builtins/hash.def:139 #, c-format @@ -530,6 +539,8 @@ msgid "" "'\n" "\n" msgstr "" +"'\n" +"\n" #: builtins/help.def:185 #, c-format @@ -539,12 +550,12 @@ msgstr "" "ουδεμία βοήθεια ταιριάζει με «%s». Δοκιμάστε «help help» ή «man -k %s» ή " "«info %s»." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: αδυναμία ανοίγματος: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -565,24 +576,24 @@ msgstr "" "απενεργοποιημένη.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "δεν μπορώ να χρησιμοποιήσω περισσότερες της μιας από τις -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "θέση στο ιστορικό" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: μη έγκυρη χρονοσήμανση" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" -msgstr "" +msgstr "%s: η ανάπτυξη του ιστορικού σταμάτησε" #: builtins/inlib.def:71 #, c-format @@ -602,78 +613,78 @@ msgstr "%s: ορίσματα πρέπει να είναι ID διεργασιώ msgid "Unknown error" msgstr "Άγνωστο σφάλμα" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "αναμενόταν έκφραση" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: μη δικτοδοτημένος πίνακας" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: μη έγκυρη προδιαγραφή περιγραφέα αρχείου" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: μη έγκυρος περιγραφέας αρχείου: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: μη έγκυρος αριθμός γραμμής" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" -msgstr "%s: μη έγκυρη αρχή πίνακα " +msgstr "%s: μη έγκυρη αρχή πίνακα" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" -msgstr "%s: μη έγκυρο κβάντο του callback " +msgstr "%s: μη έγκυρο κβάντο του callback" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" -msgstr "όνομα μεταβλητής πίνακα κενό " +msgstr "όνομα μεταβλητής πίνακα κενό" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "απαιτείται υποστήριξη μεταβλητής πίνακος" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" -msgstr "«%s»: απουσία χαρακτήρα φορμαρίσματος " +msgstr "«%s»: απουσία χαρακτήρα φορμαρίσματος" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: μη έγκυρη προδιαγραφή για φορμά χρόνου" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: μη έγκυρος χαρακτήρας φορμαρίσματος" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "προειδοποίηση: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "πρόβλημα ανάλυσης του format: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "απουσία hex ψηφίου για \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "απουσία ψηφίου unicode για \\%c" @@ -769,25 +780,25 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" -msgstr "%s: μη έγκυρη προδιαγραφή timeout " +msgstr "%s: μη έγκυρη προδιαγραφή timeout" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "σφάλμα ανάγνωσης: %d: %s" #: builtins/return.def:68 msgid "can only `return' from a function or sourced script" -msgstr "«επιστροφή» είναι μόνο δυνατή από συνάρτηση ή sourced script " +msgstr "«επιστροφή» είναι μόνο δυνατή από συνάρτηση ή sourced script" #: builtins/set.def:869 msgid "cannot simultaneously unset a function and a variable" msgstr "«unset» δεν μπορεί να εφαρμοστεί συγχρόνως σε συνάρτηση και μεταβλητή" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: δεν είναι μεταβλητή πίνακα" @@ -806,13 +817,13 @@ msgstr "%s: αδυναμία εξαγωγής" msgid "shift count" msgstr "αριθμός του « shift »" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "" "οι επιλογές κελύφους δεν είναι δυνατόν συγχρόνως να ενεργοποιηθούν και " "απενεργοποιηθούν" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: μη έγκυρο όνομα επιλογής" @@ -828,16 +839,16 @@ msgstr "%s: αρχείο δεν βρέθηκε" #: builtins/suspend.def:102 msgid "cannot suspend" -msgstr "αναστολή αδύνατη " +msgstr "αναστολή αδύνατη" #: builtins/suspend.def:112 msgid "cannot suspend a login shell" -msgstr "ένα κέλυφος σύνδεσης δεν μπορεί ν' ανασταλεί " +msgstr "ένα κέλυφος σύνδεσης δεν μπορεί ν' ανασταλεί" #: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "%s είναι ψευδώνημο του «%s»\n" +msgstr "%s είναι συνώνυμο του «%s»\n" #: builtins/type.def:256 #, c-format @@ -879,16 +890,16 @@ msgstr "%s: μη έγκυρο όρισμα ορίου" msgid "`%c': bad command" msgstr "«%c»: λάθος διαταγή" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: αδύνατον να πάρω το όριο: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "όριο" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: αδυναμία μεταβολής ορίου: %s" @@ -905,9 +916,9 @@ msgstr "`%c': μη έγκυρος τελεστής συμβολικού mode" #: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "`%c': μη έγκυρος χαρακτήρας συμβολικού mode " +msgstr "`%c': μη έγκυρος χαρακτήρας συμβολικού mode" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " γραμμή " @@ -927,172 +938,180 @@ msgstr "Ακύρωση..." msgid "INFORM: " msgstr "INFORM: " -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "προειδοποίηση: " + +#: error.c:488 msgid "unknown command error" msgstr "σφάλμα άγνωστης εντολής" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "λάθος τύπος εντολής" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "bad connector" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "κακό άλμα" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" -msgstr "%s: μεταβλητή χωρίς σύνδεση " +msgstr "%s: μεταβλητή χωρίς σύνδεση" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aη αναμονή για δεδομένα έληξε: αυτόματη αποσύνδεση\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "αδυναμία ανακατεύθυνσης τυπικής εισόδου από /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c»: μη έγκυρος χαρακτήρας μορφοποίησης" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "execute_coproc: coproc [%d:%s] υφίσταται ακόμη " +msgstr "execute_coproc: coproc [%d:%s] υφίσταται ακόμη" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "eval: μέγιστο επίπεδο φωλιάσματος eval ξεπεράστηκε (%d) " +msgstr "eval: μέγιστο επίπεδο φωλιάσματος eval ξεπεράστηκε (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s: μέγιστο επίπεδο φωλιάσματος source ξεπεράστηκε (%d) " +msgstr "%s: μέγιστο επίπεδο φωλιάσματος source ξεπεράστηκε (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "%s: μέγιστο επίπεδο φωλιάσματος συνάρτησης ξεπεράστηκε (%d) " +msgstr "%s: μέγιστο επίπεδο φωλιάσματος συνάρτησης ξεπεράστηκε (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: περιορισμός: δεν μπορεί να περιέχεται «/» σε όνομα εντολής" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: εντολή δεν βρέθηκε" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: αδυναμία εκτέλεσης δυαδικού αρχείου" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" -msgstr "%s: %s: κακός interpreter " +msgstr "%s: %s: κακός interpreter" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: αδυναμία εκτέλεσης δυαδικού αρχείου: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "«%s»: είναι ειδικό builtin" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "αδυναμία αντιγραφής του fd %d στον fd %d" #: expr.c:263 msgid "expression recursion level exceeded" -msgstr "" +msgstr "υπέρβαση του επιπέδου αναδρομικότητας στην έκφραση" #: expr.c:291 msgid "recursion stack underflow" -msgstr "" +msgstr "αρνητική υπερχείλιση στοίβας" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "συντακτικό σφάλμα στην έκφραση" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "απόπειρα ανάθεσης σε μη-μεταβλητή" -#: expr.c:530 -#, fuzzy +#: expr.c:531 msgid "syntax error in variable assignment" -msgstr "συντακτικό σφάλμα στην έκφραση" +msgstr "συντακτικό σφάλμα στην ανάθεση μεταβλητής" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" -msgstr "διαίρεση διά 0" +msgstr "διαίρεση διά του 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" -msgstr "bug: κακό σύμβολο για expassign " +msgstr "bug: κακό σύμβολο για expassign" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "«:» αναμενόταν για μια έκφραση υπό συνθήκη" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "εκθέτης μικρότερος του 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "αναγνωριστικό αναμενόταν μετά από pre-increment ή pre-decrement " +msgstr "αναγνωριστικό αναμενόταν μετά από pre-increment ή pre-decrement" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "λείπει «)»" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "syntax error: αναμενόταν τελεστέος" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: μη έγκυρος αριθμητικός τελεστής" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (το λανθασμένο σύμβολο είναι \"%s\")" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "μη έγκυρη αριθμητική βάση" -#: expr.c:1582 -#, fuzzy +#: expr.c:1587 msgid "invalid integer constant" -msgstr "%s: μη έγκυρος αριθμός γραμμής" +msgstr "μη έγκυρη ακέραιη σταθερά" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "τιμή πολύ μεγάλη για βάση" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: σφάλμα έκφρασης\n" @@ -1101,7 +1120,7 @@ msgstr "%s: σφάλμα έκφρασης\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: αδυναμία πρόσβασης στο γονικό κατάλογο" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "αδυναμία επανάταξης nodelay mode για fd %d" @@ -1115,226 +1134,224 @@ msgstr "" #: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" -msgstr "save_bash_input: ο buffer υπάρχει ήδη για νέο fd %d " +msgstr "save_bash_input: ο buffer υπάρχει ήδη για νέο fd %d" #: jobs.c:543 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -msgstr "" +msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -msgstr "" +msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "η διεργασία κλώνος %d εμφανίζεται στην εργασία που τρέχει %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "διαγραφή σταματημένης εγασίας %d με ομάδα %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" -msgstr "add_process: pid %5ld (%s) μαρκαρισμένη ως ακόμα ζωντανή " +msgstr "add_process: pid %5ld (%s) μαρκαρισμένη ως ακόμα ζωντανή" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: δεν υπάρχει τέτοιο pid" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Σήμα %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Done" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" -msgstr "σταματημένο" +msgstr "Sταματημένο" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" -msgstr "σταματημένο(%s)" +msgstr "Σταματημένο(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" -msgstr "υπό εκτέλεση" +msgstr "Υπό εκτέλεση" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Done(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Έξοδος %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Άγνωστη κατάσταση" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "child setpgid (%ld to %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: διεργασία %ld δεν αποτελεί θυγατρική αυτού του κελύφους" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Δεν υπάρχουν στοιχεία για διεργασία %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: η εργασία %d είναι σταματημένη" -#: jobs.c:3564 -#, fuzzy, c-format +#: jobs.c:3551 +#, c-format msgid "%s: no current jobs" msgstr "%s: δεν υπάρχει τέτοια εργασία" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: η εργασία τερματίστηκε" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: εργασία %d ήδη στο παρασκήνιο" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" -msgstr "" -"waitchld: ενεργοποίηση WNOHANG ώστε ν' αποφευχθεί οριστικό μπλοκάρισμα " +msgstr "waitchld: ενεργοποίηση WNOHANG ώστε ν' αποφευχθεί οριστικό μπλοκάρισμα" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: γραμμή %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(τώρα wd: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: αποτυχία getpgrp" -#: jobs.c:4447 -#, fuzzy +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" -msgstr "initialize_job_control: setpgid" +msgstr "initialize_job_control: όχι έλεγχος εργασιών στο παρασκήνιο" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" -msgstr "" +msgstr "initialize_job_control: line discipline" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" -msgstr "αδυναμία ρύθμισης της ομάδας της διεργασίας του τερματικού (%d) " +msgstr "αδυναμία ρύθμισης της ομάδας της διεργασίας του τερματικού (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "δεν υπάρχει job control σ'αυτό το κέλυφος" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: αποτυχημένη assertion: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" +"\r\n" +"malloc: %s:%d: αποτυχιμένη επιβεβαίωση\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "άγνωστο" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" -msgstr "" +msgstr "malloc: μπλοκ στην ελεύθερη λίστα clobbered" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" -msgstr "free: κλήθηκε με όρισμα ήδη ελευθερωμένο μπλοκ " +msgstr "free: κλήθηκε με όρισμα ήδη ελευθερωμένο μπλοκ" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" -msgstr "free: κλήθηκε με όρισμα ένα μη εκχωρημένο μπλοκ " +msgstr "free: κλήθηκε με όρισμα ένα μη εκχωρημένο μπλοκ" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" -msgstr "free: εντοπίστηκε αρνητική υπερχείληση, mh_nbytes εκτός ορίου " +msgstr "free: εντοπίστηκε αρνητική υπερχείληση, mh_nbytes εκτός ορίου" -#: lib/malloc/malloc.c:1001 -#, fuzzy +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" -msgstr "free: εντοπίστηκε αρνητική υπερχείληση, mh_nbytes εκτός ορίου " +msgstr "free: εντοπίστηκε αρνητική υπερχείληση, magic8 corrupted" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" -msgstr "free: τα μεγέθη των κομματιών στην αρχή και το τέλος διαφέρουν " +msgstr "free: τα μεγέθη των κομματιών στην αρχή και το τέλος διαφέρουν" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" -msgstr "realloc: κλήθηκε με όρισμα ένα μη εκχωρημένο μπλοκ " +msgstr "realloc: κλήθηκε με όρισμα ένα μη εκχωρημένο μπλοκ" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: εντοπίστηκε αρνητική υπερχείληση, mh_nbytes εκτός ορίου" -#: lib/malloc/malloc.c:1141 -#, fuzzy +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" -msgstr "realloc: εντοπίστηκε αρνητική υπερχείληση, mh_nbytes εκτός ορίου" +msgstr "realloc: εντοπίστηκε αρνητική υπερχείληση, magic8 αλλειωμένο" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" -msgstr "realloc: μεγέθη κομματιών σ' αρχή και τέλος διαφέρουν " +msgstr "realloc: μεγέθη κομματιών σ' αρχή και τέλος διαφέρουν" #: lib/malloc/table.c:191 #, c-format @@ -1368,28 +1385,28 @@ msgstr "%s: μη έγκυρη υπηρεσία" #: lib/sh/netopen.c:306 #, c-format msgid "%s: bad network path specification" -msgstr "%s: κακιά προδιαγραφή διαδρομής δικτύου " +msgstr "%s: κακιά προδιαγραφή διαδρομής δικτύου" #: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "μη υποστηριζόμενες δικτιακές υπηρεσίες" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: αδυναμία μεταβολής locale (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: αδυναμία μεταβολής locale (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: αδυναμία μεταβολής locale (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: αδυναμία μεταβολής locale (%s): %s" @@ -1407,141 +1424,141 @@ msgstr "Έχεις νέο μήνυμα στο $_" msgid "The mail in %s has been read\n" msgstr "Το μήνυμα στο %s διαβάστηκε\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "syntax error: απαιτείται αριθμητική έκφραση" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "συντακτικό σφάλμα: δεν αναμενόταν «;»" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "συντακτικό σφάλμα: «((%s))»" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: ο τύπος οδηγίας δεν είναι σωστός %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-document στη γραμμή %d με όριο το τέλος του αρχείου (αντί του «%s»)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: η οδηγία της ανακατεύθυνσης «%d» εκτός ορίων" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" "shell_getc: shell_input_line_size (%zu) υπερβαίνει το SIZE_MAX (%lu): γραμμή " -"κόπηκε " +"κόπηκε" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" -msgstr "ο μέγιστος αριθμός here-document ξεπεράστηκε " +msgstr "ο μέγιστος αριθμός here-document ξεπεράστηκε" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "μη αναμενόμενο EOF κατά την αναζήτηση «%c»" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "μη αναμενόμενο EOF ενώ έψαχνα για «]]»" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error in conditional expression: μη αναμενόμενο σύμβολο «%s»" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" -msgstr "συντακτικό σφάλμα σ' έκφραση υπό συνθήκη " +msgstr "συντακτικό σφάλμα σ' έκφραση υπό συνθήκη" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "μη αναμενόμενο σύμβολο «%s», αναμενόταν «)»" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "αναμενόταν «)»" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "απροσδόκητο όρισμα «%s» στον υπό αίρεση μοναδιαίο τελεστή " +msgstr "απροσδόκητο όρισμα «%s» στον υπό αίρεση μοναδιαίο τελεστή" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" -msgstr "απροσδόκητο όρισμα για τον μοναδιαίο τελεστή " +msgstr "απροσδόκητο όρισμα για τον μοναδιαίο τελεστή" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "απροσδόκητο σύμβολο «%s» βρέθηκε αντί για δυαδικό τελεστή υπό αίρεση " +msgstr "απροσδόκητο σύμβολο «%s» βρέθηκε αντί για δυαδικό τελεστή υπό αίρεση" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" -msgstr "αναμενόταν δυαδικός τελεστής υπό αίρεση " +msgstr "αναμενόταν δυαδικός τελεστής υπό αίρεση" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "απροσδόκητο όρισμα «%s» για δυαδικό τελεστή υπό αίρεση " +msgstr "απροσδόκητο όρισμα «%s» για δυαδικό τελεστή υπό αίρεση" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" -msgstr "απροσδόκητο όρισμα για δυαδικό τελεστή υπό αίρεση " +msgstr "απροσδόκητο όρισμα για δυαδικό τελεστή υπό αίρεση" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "απροσδόκητο σύμβολο «%c» σε εντολή υπό αίρεση " +msgstr "απροσδόκητο σύμβολο «%c» σε εντολή υπό αίρεση" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "απροσδόκητο σύμβολο «%s» σε εντολή υπό αίρεση " +msgstr "απροσδόκητο σύμβολο «%s» σε εντολή υπό αίρεση" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" -msgstr "απροσδόκητο σύμβολο %d σε εντολή υπό αίρεση " +msgstr "απροσδόκητο σύμβολο %d σε εντολή υπό αίρεση" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "συντακτικό σφάλμα κοντά στο μη αναμενόμενο σύμβολο «%s»" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "συντακτικό σφάλμα κοντά σε «%s»" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "syntax error: μη αναμενόμενο τέλος αρχείου" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "συντακτικό σφάλμα" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Χρήση «%s» για έξοδο από το κέλυφος.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "μη αναμενόμενο EOF ενώ έψαχνα «)»" @@ -1563,7 +1580,7 @@ msgstr "progcomp_insert: %s: NULL COMPSPEC" #: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" -msgstr "" +msgstr "print_command: λάθος connector «%d»" #: print_cmd.c:375 #, c-format @@ -1579,94 +1596,96 @@ msgstr "xtrace_set: NULL file pointer" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: μη έγκυρη μορφή χαρακτήρα" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "περιγραφέας αρχείου εκτός ορίων" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ασαφής ανακατεύθυνση" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: αδυναμία εγγραφής πάνω σε υπάρχον αρχείο" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: αδυναμία ανακατεύθυνσης εξόδου" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "αδυναμία δημιουργίας προσωρινού αρχείου για here-document: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: αδυναμία ανάθεσης fd σε μεταβλητή" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port δεν υποστηρίζεται χωρίς δικτύωση" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" -msgstr "" +msgstr "redirection error: ντουμπλάρισμα fd αδύνατον" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "δεν μπόρεσα να βρω /tmp, παρακαλώ να τον δημιουργήσετε!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp πρέπει να είναι ένα έγκυρο όνομα αρχείου" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "" +"κατάσταση βελτιωμένης εμφάνισης δεδομένων παρακάμπτεται στο " +"αλληλοεπιδραστικό κέλυφος" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: μη έγκυρη επιλογή" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "αδυναμία ρύθμισης uid σε %d: effective uid %d " +msgstr "αδυναμία ρύθμισης uid σε %d: effective uid %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "αδυναμί ρύθμισης gid σε %d: effective gid %d " +msgstr "αδυναμί ρύθμισης gid σε %d: effective gid %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" -msgstr "αδυναμία εκκίνησης του debugger, debugging απενεργοποιημένο " +msgstr "αδυναμία εκκίνησης του debugger, debugging απενεργοποιημένο" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: είναι κατάλογος" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Δεν έχω όνομα!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, έκδοση %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1675,314 +1694,314 @@ msgstr "" "Χρήση:\t%s [μακρά επιλογή GNU] [επιλογή] ...\n" "\t%s [μακρά επιλογή GNU] [επιλοη] script-file ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Μακρές επιλογές GNU:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Επιλογές κελύφους:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD ή -c εντολή ή -O shopt_option\t\t(invocation only)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ή επιλογή -o\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Πληκτρολόγησε «%s -c \"help set\"» για πληροφορίες επί των επιλογών " "κελύφους.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Πληκτρολόγησε «%s -c help» για περισσότερες πληροφορίες σχετικά με τις " "ενσωματομένες στο κέλυφος εντολές.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Χρησιμοποίησε την εντολή «bashbug» για αναφορά σφαλμάτων.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "σελίδα του bash: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "" "Γενική βοήθεια για την χρήση του λογισμικού GNU: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: μη έγκυρη λειτουργία" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" -msgstr "Ψεύτικο σήματος " +msgstr "Ψεύτικο σήμα" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Hangup" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Διακοπή" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Quit" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Μη έγκυρη οδηγία" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "BPT trace/trap" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" -msgstr "οδηγία ABORT" +msgstr "Οδηγία ABORT" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" -msgstr "οδηγία EMT" +msgstr "Οδηγία EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Εξαίρεση κινητής υποδιαστολής" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Killed" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Bus error" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Σφάλμα κατάτμησης" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" -msgstr "Κακή κλήση συστήματος " +msgstr "Κακή κλήση συστήματος" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Σπασμένη σωλήνα" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Ρολόι συναγερμού" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" -msgstr "τερματισμός" +msgstr "Τερματισμός" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Επείγουσα κατάσταση IO" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Σταματημένο (σήμα)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Συνέχεια" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Child death or stop" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Σταματημένο (είσοδος tty)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Σταματημένο (έξοδος tty)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O ready" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "όριο CPU" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Όριο αρχείου" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarm (virtual)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarm (profile)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Παράθυρο άλλαξε" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" -msgstr "" +msgstr "Κλείδωμα καταγραφής" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Σήμα χρήστη 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" -msgstr "Σήμα χρήστη 2 " +msgstr "Σήμα χρήστη 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "Δεδομένα εισόδου HFT στην αναμονή" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "επικείμενη έλλειψη ρεύματος" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "επικείμενη πτώση συστήματος" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "μετανάστευση διεργασίας σε άλλη CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "προγραμματιστικό σφάλμα" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" -msgstr "" +msgstr "Κατάσταση επιτήρησης HFT δόθηκε" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" -msgstr "" +msgstr "Κατάσταση επιτήρησης HFT αναιρέθηκε" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" -msgstr "" +msgstr "Στιγμιότυπο ήχου HFT περατώθηκε." -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Αίτηση για πληροφορίες" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Άγνωστο σήμα #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "κακή αντικατάσταση: όχι «%s» που κλείνει στο %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" -msgstr "%s: αδυναμία εκχώρησης λίστας σε στοιχείο του πίνακα " +msgstr "%s: αδυναμία εκχώρησης λίστας σε στοιχείο του πίνακα" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" -msgstr "αδυναμία δημιουργίας σωλήνα για αντικατάσταση διεργασίας " +msgstr "αδυναμία δημιουργίας σωλήνα για αντικατάσταση διεργασίας" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" -msgstr "αδυναμία δημιουργίας θυγατρικής για αντικατάσταση διεργασίας " +msgstr "αδυναμία δημιουργίας θυγατρικής για αντικατάσταση διεργασίας" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "αδυναμία ανοίγματοε επώνυμης σωλήνας %s προς ανάγνωση" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "αδυναμία ανοίγματος επώνυμης σωλήνας %s προς εγγραφή" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" -msgstr "αδυναμία αναπαραγωγής named pipe %s ως fd %d " +msgstr "αδυναμία αναπαραγωγής named pipe %s ως fd %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" -msgstr "αντικατάσταση εντολής: null byte αγνοήθηκε στην είσοδο " +msgstr "αντικατάσταση εντολής: null byte αγνοήθηκε στην είσοδο" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" -msgstr "αδυναμία δημιουργίας σωλήνα για αντικατάσταση εντολής " +msgstr "αδυναμία δημιουργίας σωλήνα για αντικατάσταση εντολής" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" -msgstr "αδυναμία δημιουργίας θυγατρικής για αντικατάσταση εντολής " +msgstr "αδυναμία δημιουργίας θυγατρικής για αντικατάσταση εντολής" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "command_substitute: αδυναμία αναπαραγωγής σωλήνα ως fd 1 " +msgstr "command_substitute: αδυναμία αναπαραγωγής σωλήνα ως fd 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "%s: μη έγκυρο όνομα μεταβλητής ως όνομα αναφοράς " +msgstr "%s: μη έγκυρο όνομα μεταβλητής ως όνομα αναφοράς" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: μη έγκυρη έμμεση επέκταση " +msgstr "%s: μη έγκυρη έμμεση επέκταση" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: μη έγκυρο όνομα μεταβλητής" -#: subst.c:7256 -#, fuzzy, c-format +#: subst.c:7478 +#, c-format msgid "%s: parameter not set" -msgstr "%s: παράμετρος κενή ή δεν έχει οριστεί" +msgstr "%s: παράμετρος δεν έχει οριστεί" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: παράμετρος κενή ή δεν έχει οριστεί" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: έκφραση αρνητική < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: κακή αντικατάσταση" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: αδύνατη ανάθεση κατ' αυτόν τον τρόπο" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1990,12 +2009,12 @@ msgstr "" "μελλοντικές εκδόσεις του κελύφους θα επιβάλουν την αποτίμηση ως μια " "αριθμητική αντικατάσταση" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "κακή αντικατάσταση: δεν υπάρχει «`» που κλείνει στο %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "χωρίς ταίριασμα: %s" @@ -2018,126 +2037,131 @@ msgstr "αναμενόταν «)»" msgid "`)' expected, found %s" msgstr "σναμενόταν «)», βρέθηκε %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: αναμενόταν δυαδικός τελεστής" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" -msgstr "%s: αναμενόταν μοναδιαίος τελεστής " +msgstr "%s: αναμενόταν μοναδιαίος τελεστής" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "απούσα «]»" -#: test.c:899 -#, fuzzy, c-format +#: test.c:914 +#, c-format msgid "syntax error: `%s' unexpected" -msgstr "συντακτικό σφάλμα: δεν αναμενόταν «;»" +msgstr "συντακτικό σφάλμα: δεν αναμενόταν «%s»" #: trap.c:220 msgid "invalid signal number" msgstr "μη έγκυρος αριθμός σήματος" -#: trap.c:325 -#, fuzzy, c-format +#: trap.c:323 +#, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" -msgstr "eval: μέγιστο επίπεδο φωλιάσματος eval ξεπεράστηκε (%d) " +msgstr "trap handler: μέγιστο επίπεδο φωλιάσματος ξεπεράστηκε (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" -msgstr "run_pending_traps: κακή τιμή στην trap_list[%d]: %p " +msgstr "run_pending_traps: κακή τιμή στην trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: ο διαχειριστής σήματος είναι ο SIG_DFL, στέλνει %d (%s) " -"σε μένα " +"σε μένα" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: κακό σήμα %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "σφάλμα κατά την εισαγωγή του ορισμού της συνάρτησης «%s»" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "επίπεδο κελύφους (%d) πολύ υψηλό, επαναφορά στο 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no function context at current scope" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: η μεταβλητή δεν μπορεί να δεχτεί τιμή " +msgstr "%s: η μεταβλητή δεν μπορεί να δεχτεί τιμή" + +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" -#: variables.c:3475 +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s έχει κενό exportstr" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "ο χαρακτήρας %d δεν έίναι έγκυρος στην exportstr για %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "απουσία «=» στην exportstr για %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: head of shell_variables not a function context" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no global_variables context" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: head of shell_variables not a temporary environment scope" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: αδυναμία ανοίγματος ως ΑΡΧΕΙΟ" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: μη έγκυρη τιμή για trace file descriptor" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s: %s: τιμή συμβατότητας εκτός ορίου " +msgstr "%s: %s: τιμή συμβατότητας εκτός ορίου" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Copyright (C) 2020 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2226,12 +2250,16 @@ msgstr "command [-pVv] command [arg ...]" #: builtins.c:78 #, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" #: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..." #: builtins.c:82 @@ -2255,12 +2283,10 @@ msgid "eval [arg ...]" msgstr "eval [arg ...]" #: builtins.c:96 -#, fuzzy msgid "getopts optstring name [arg ...]" -msgstr "getopts optstring name [arg]" +msgstr "getopts optstring όνομα [arg]" #: builtins.c:98 -#, fuzzy msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" @@ -2333,7 +2359,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" #: builtins.c:144 @@ -2381,7 +2408,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] name [name ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" #: builtins.c:174 @@ -2389,7 +2417,6 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -#, fuzzy msgid "wait [-fn] [-p var] [id ...]" msgstr "wait [-n] [id ...]" @@ -2426,11 +2453,13 @@ msgstr "" "COMMANDS; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while COMMANDS; do COMMANDS; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until COMMANDS; do COMMANDS; done" #: builtins.c:200 @@ -2482,7 +2511,6 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [ορίσματα]" #: builtins.c:231 -#, fuzzy msgid "" "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2493,7 +2521,6 @@ msgstr "" "suffix] [name ...]" #: builtins.c:235 -#, fuzzy msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" "F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" @@ -2502,7 +2529,6 @@ msgstr "" "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" #: builtins.c:239 -#, fuzzy msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o option] [-DE] [name ...]" @@ -2515,7 +2541,6 @@ msgstr "" "callback] [-c quantum] [array]" #: builtins.c:244 -#, fuzzy msgid "" "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" @@ -2552,12 +2577,12 @@ msgid "" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -"Αφαίρεση κάθε ΟΝΟΜΑτος από τη λίστα των καθορισμένων ψευδωνύμων.\n" +"Αφαίρεση κάθε ΟΝΟΜΑτος από τη λίστα των καθορισμένων συνωνύμων.\n" " \n" " Επιλογές:\n" -" -a\tαφαίρεση όλων των ψευδωνύμων.\n" +" -a\tαφαίρεση όλων των συνωνύμων.\n" " \n" -" Επιστρέφει επιτυχία εκτός αν το ΟΝΟΜΑ δεν είναι υπαρκτό ψευδώνυμο." +" Επιστρέφει επιτυχία εκτός αν το ΟΝΟΜΑ δεν είναι υπαρκτό συνώνυμο." #: builtins.c:291 msgid "" @@ -2860,7 +2885,6 @@ msgid "" msgstr "" #: builtins.c:557 -#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -2911,7 +2935,7 @@ msgstr "" " -E\tρητή απενεργοποίηση ερμηνείας του backslash διαφυγής\n" " \n" " η «echo» ερμηνεύει τους επόμενους backslash-escaped χαρακτήρες:\n" -" \\a\tσυναγερμός (κουδούνι)\n" +" \a\tσυναγερμός (κουδούνι)\n" " \\b\tbackspace\n" " \\c\tκαταστέλλει την παραπέρα έξοδο\n" " \\e\tχαρακτήρας διαφυγής\n" @@ -2928,7 +2952,7 @@ msgstr "" " \t\tμπορεί να είναι ένα ή δύο εξαδικά ψηφία\n" " \n" " Κατάσταση εξόδου:\n" -" Επιστρέφει επιτυχία εκτός αν συμβεί λάθος εγγραφής. " +" Επιστρέφει επιτυχία εκτός αν συμβεί λάθος εγγραφής." #: builtins.c:597 msgid "" @@ -2950,7 +2974,7 @@ msgstr "" " -n\tδεν επισυνάπτεις μια νέα γραμμή\n" " \n" " Κατάσταση εξόδου:\n" -" Επιστρέφει επιτυχία εκτός αν συμβεί σφάλμα. " +" Επιστρέφει επιτυχία εκτός αν συμβεί σφάλμα." #: builtins.c:612 msgid "" @@ -2998,7 +3022,7 @@ msgstr "" " \n" " Κατάσταση εξόδου:\n" " Επιστρέφει τον ίδιο κωδικό εξόδου με την εντολή ή επιτυχία αν ή εντολή " -"είναι κενή. " +"είναι κενή." #: builtins.c:652 msgid "" @@ -3089,7 +3113,7 @@ msgstr "" " \n" " Τερματίζει ένα κέλυφος σύνδεσης με κατάσταση εξόδου N. Επιστρέφει σφάλμα " "αν δεν εκτελείται\n" -" σ' ένα κέλυφος σύνδεσης. " +" σ' ένα κέλυφος σύνδεσης." #: builtins.c:734 msgid "" @@ -3384,7 +3408,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -3425,7 +3451,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3437,7 +3463,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3523,7 +3549,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3545,7 +3571,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3564,7 +3590,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3585,7 +3611,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -3601,9 +3627,9 @@ msgstr "" " δεν δίνεται, υποτίθεται πως είναι 1.\n" " \n" " Κατάσταση εξόδου:\n" -" Επιστρέφει επιτυχία εκτός αν N είναι αρνητικός ή μαγαλύτερο; από $#. " +" Επιστρέφει επιτυχία εκτός αν N είναι αρνητικός ή μαγαλύτερο; από $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3617,7 +3643,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -3631,7 +3657,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3733,7 +3759,7 @@ msgstr "" " -c ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι ειδικό αρχείο χαρακτήρων.\n" " -d ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι κατάλογος.\n" " -e ΑΡΧΕΙΟ Αληθής αν το αρχείο υπάρχει.\n" -" -f ΑΡΧΕΙΟ Αληθής αν το αρχείο υπάρχει και είναι κανονικό " +" -f ΑΡΧΕΙΟ Αληθής αν το αρχείο υπάρχει και είναι κανονικό " "αρχείο.\n" " -g ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι «set-group-id».\n" " -h ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι συμβολικός σύνδεσμος.\n" @@ -3743,8 +3769,7 @@ msgstr "" " -r ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι αναγνώσιμο από εσάς.\n" " -s ΑΡΧΕΙΟ Αληθής αν το αρχείο υπάρχει και δεν είναι κενό.\n" " -S ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι ένα socket.\n" -" -t FD Αληθής αν ο FD είναι ανοιγμένος σ' ενα " -"τερματικό.\n" +" -t FD Αληθής αν ο FD είναι ανοιγμένος σ' ενα τερματικό.\n" " -u ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι «set-user-id».\n" " -w ΑΡΧΕΙΟ Αληθής αν το αρχείο εγγράψιμο από εσάς.\n" " -x ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι εκτελέσιμο από εσάς.\n" @@ -3806,7 +3831,7 @@ msgstr "" "αποτιμάται σε\n" " ψευδές ή αν δίδεται ένα μη έγκυρο όρισμα." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3818,7 +3843,7 @@ msgstr "" " Συνώνυμο με το «test» builtin, αλλά το τελευταίο όρισμα πρέπει\n" "να είναι ένα «]», ώστε να κλείνει το αντίστοιχο «[»." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -3838,7 +3863,7 @@ msgstr "" " Κατάσταση εξόδου:\n" " Πάντα επιτυχία." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -3882,7 +3907,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -3912,7 +3937,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -3962,7 +3987,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -3980,7 +4005,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4012,7 +4037,7 @@ msgid "" " children." msgstr "" -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4027,7 +4052,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4050,7 +4075,7 @@ msgstr "" " Κατάσταση εξόδου:\n" " Επιστρέφει την κατάσταση της τελευταίας εκτελεσμένης εντολής." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4080,7 +4105,7 @@ msgstr "" " Κατάσταση εξόδου:\n" " Επιστρέφει τη κατάσταση της τελευταίας εκτελεσμένης εντολής." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4100,7 +4125,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4116,7 +4141,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4127,7 +4152,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4148,29 +4173,49 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Ομαδοποιεί εντολές σαν να είναι μία.\n" +" \n" +" Τρέχει ένα σύνολο εντολών μιας ομάδας. Αυτό είναι ένας τρόπος " +"ανακατεύθυνσης\n" +" ενός συνόλου εντολών.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει την κατάσταση της τελευταίας εντολής που εκτελέστηκε." -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Ομαδοποιεί εντολές σαν να είναι μία.\n" +" \n" +" Τρέχει ένα σύνολο εντολών μιας ομάδας. Αυτό είναι ένας τρόπος " +"ανακατεύθυνσης\n" +" ενός συνόλου εντολών.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει την κατάσταση της τελευταίας εντολής που εκτελέστηκε." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4183,7 +4228,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -4197,7 +4242,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4207,8 +4252,16 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Ομαδοποιεί εντολές σαν να είναι μία.\n" +" \n" +" Τρέχει ένα σύνολο εντολών μιας ομάδας. Αυτό είναι ένας τρόπος " +"ανακατεύθυνσης\n" +" ενός συνόλου εντολών.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει την κατάσταση της τελευταίας εντολής που εκτελέστηκε." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4222,8 +4275,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1726 -#, fuzzy +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4235,13 +4287,13 @@ msgid "" msgstr "" "Αποτίμηση αριθμητικής εκφράσεως.\n" " \n" -" Η ΕΚΦΡΑΣΗ αποτιμάται σύμφωνα με τους αριθμητικούς κανόνες.\n" -" Ισοδύναμο με το \"let ΕΚΦΡΑΣΗ\".\n" +" Η ΕΚΦΡΑΣΗ αποτιμάται σύμφωνα με τους κανόνες της αριθμητικής.\n" +" Ισοδύναμο με το `let \"ΕΚΦΡΑΣΗ\"'.\n" " \n" " Κωδικός εξόδου:\n" " Επιστρέφει 1 αν η ΕΚΦΡΑΣΗ αποτιμάται σε 0, αλλιώς επιστρέφει 0." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -4269,7 +4321,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4323,7 +4375,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -4354,7 +4406,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -4381,7 +4433,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -4410,7 +4462,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -4430,7 +4482,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4453,6 +4505,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -4469,7 +4523,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4500,7 +4554,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4513,7 +4567,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -4545,7 +4599,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4587,7 +4641,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4595,19 +4649,8 @@ msgid "" msgstr "" "Διαβάζει γραμμές από αρχείο σε μεταβλητή τύπου πίνακα.\n" " \n" -" Συνώνημο του «mapfile»." +" Συνώνυμο του «mapfile»." -#~ msgid "" -#~ "Returns the context of the current subroutine call.\n" -#~ " \n" -#~ " Without EXPR, returns " -#~ msgstr "" -#~ "Επιστρέφει το context της κλήσης της τρέχουσας υπορουτίνας.\n" -#~ " \n" -#~ " Χωρίς EXPR, επιστρέφει " - -#~ msgid "add_process: process %5ld (%s) in the_pipeline" -#~ msgstr "add_process: διεργασία %5ld (%s) στη the_pipeline " - -#~ msgid "Unknown Signal #" -#~ msgstr "Άγνωστο σήμα #" +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: μη έγκυρο κλειδί associative πίνακα" diff --git a/po/en@boldquot.gmo b/po/en@boldquot.gmo index 15cd5f1ff..21505e33c 100644 Binary files a/po/en@boldquot.gmo and b/po/en@boldquot.gmo differ diff --git a/po/en@boldquot.po b/po/en@boldquot.po index edfa3c7d1..6b388ff2e 100644 --- a/po/en@boldquot.po +++ b/po/en@boldquot.po @@ -32,7 +32,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU bash 5.1-rc3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2020-11-28 12:51-0500\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -46,57 +46,52 @@ msgstr "" msgid "bad array subscript" msgstr "bad array subscript" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: removing nameref attribute" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: cannot convert indexed to associative array" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: invalid associative array key" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: cannot assign to non-numeric index" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: must use subscript when assigning associative array" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: cannot create: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: cannot find keymap for command" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: first non-whitespace character is not ‘\"’" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "no closing ‘%c’ in %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: missing colon separator" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "‘%s’: cannot unbind in command keymap" @@ -116,7 +111,7 @@ msgstr "brace expansion: failed to allocate memory for %u elements" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "brace expansion: failed to allocate memory for ‘%s’" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "‘%s’: invalid alias name" @@ -188,7 +183,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME not set" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "too many arguments" @@ -215,7 +210,7 @@ msgstr "warning: " msgid "%s: usage: " msgstr "%s: usage: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: option requires an argument" @@ -230,7 +225,7 @@ msgstr "%s: numeric argument required" msgid "%s: not found" msgstr "%s: not found" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: invalid option" @@ -240,7 +235,7 @@ msgstr "%s: invalid option" msgid "%s: invalid option name" msgstr "%s: invalid option name" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "‘%s’: not a valid identifier" @@ -253,7 +248,7 @@ msgstr "invalid octal number" msgid "invalid hex number" msgstr "invalid hex number" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "invalid number" @@ -267,88 +262,93 @@ msgstr "%s: invalid signal specification" msgid "`%s': not a pid or valid job spec" msgstr "‘%s’: not a pid or valid job spec" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: readonly variable" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: cannot unset" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s out of range" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s out of range" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: no such job" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: no job control" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "no job control" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: restricted" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "restricted" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: not a shell builtin" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "write error: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "error setting terminal attributes: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "error getting terminal attributes: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error retrieving current directory: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: ambiguous job spec" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "help not available in this version" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: cannot unset: readonly %s" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: cannot unset" @@ -358,108 +358,108 @@ msgstr "%s: cannot unset" msgid "%s: invalid action name" msgstr "%s: invalid action name" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: no completion specification" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "warning: -F option may not work as you expect" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "warning: -C option may not work as you expect" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "not currently executing completion function" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "can only be used in a function" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "cannot use ‘-f’ to make functions" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: readonly function" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: reference variable cannot be an array" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: nameref variable self references not allowed" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: circular name reference" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "‘%s’: invalid variable name for name reference" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "cannot use ‘-f’ to make functions" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: readonly function" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: quoted compound array assignment deprecated" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: cannot destroy array variables in this way" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: cannot convert associative to indexed array" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: quoted compound array assignment deprecated" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "dynamic loading not available" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "cannot open shared object %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "cannot find %s in shared object %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: dynamic builtin already loaded" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "load function for %s returns failure (%d): not loaded" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: not dynamically loaded" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: cannot delete: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: is a directory" @@ -474,7 +474,7 @@ msgstr "%s: not a regular file" msgid "%s: file is too large" msgstr "%s: file is too large" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: cannot execute binary file" @@ -572,12 +572,12 @@ msgstr "" "no help topics match ‘%s’. Try ‘help help’ or ‘man -k %s’ " "or ‘info %s’." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: cannot open: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -598,21 +598,21 @@ msgstr "" "A star (*) next to a name means that the command is disabled.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "cannot use more than one of -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "history position" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: invalid timestamp" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: history expansion failed" @@ -635,78 +635,78 @@ msgstr "%s: arguments must be process or job IDs" msgid "Unknown error" msgstr "Unknown error" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "expression expected" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: not an indexed array" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: invalid file descriptor specification" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: invalid file descriptor: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: invalid line count" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: invalid array origin" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: invalid callback quantum" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "empty array variable name" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "array variable support required" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "‘%s’: missing format character" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "‘%c’: invalid time format specification" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "‘%c’: invalid format character" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "warning: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "format parsing problem: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "missing hex digit for \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "missing unicode digit for \\%c" @@ -863,12 +863,12 @@ msgstr "" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: invalid timeout specification" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "read error: %d: %s" @@ -881,7 +881,7 @@ msgstr "can only ‘return’ from a function or sourced script" msgid "cannot simultaneously unset a function and a variable" msgstr "cannot simultaneously unset a function and a variable" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: not an array variable" @@ -900,11 +900,11 @@ msgstr "%s: cannot export" msgid "shift count" msgstr "shift count" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "cannot set and unset shell options simultaneously" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: invalid shell option name" @@ -971,16 +971,16 @@ msgstr "%s: invalid limit argument" msgid "`%c': bad command" msgstr "‘%c’: bad command" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: cannot get limit: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: cannot modify limit: %s" @@ -999,7 +999,7 @@ msgstr "‘%c’: invalid symbolic mode operator" msgid "`%c': invalid symbolic mode character" msgstr "‘%c’: invalid symbolic mode character" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " line " @@ -1019,96 +1019,106 @@ msgstr "Aborting..." msgid "INFORM: " msgstr "INFORM: " -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "warning: " + +#: error.c:488 msgid "unknown command error" msgstr "unknown command error" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "bad command type" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "bad connector" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "bad jump" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: unbound variable" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atimed out waiting for input: auto-logout\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "cannot redirect standard input from /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: ‘%c’: invalid format character" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] still exists" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: maximum eval nesting level exceeded (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximum source nesting level exceeded (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restricted: cannot specify ‘/’ in command names" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: command not found" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: cannot execute binary file" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: bad interpreter" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: cannot execute binary file: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "‘%s’: is a special builtin" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "cannot duplicate fd %d to fd %d" @@ -1121,68 +1131,68 @@ msgstr "expression recursion level exceeded" msgid "recursion stack underflow" msgstr "recursion stack underflow" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "syntax error in expression" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "attempted assignment to non-variable" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "syntax error in variable assignment" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "division by 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "bug: bad expassign token" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "‘:’ expected for conditional expression" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "exponent less than 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identifier expected after pre-increment or pre-decrement" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "missing ‘)’" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "syntax error: operand expected" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: invalid arithmetic operator" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (error token is “%s”)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "invalid arithmetic base" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "invalid integer constant" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "value too great for base" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: expression error\n" @@ -1191,7 +1201,7 @@ msgstr "%s: expression error\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: cannot access parent directories" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "cannot reset nodelay mode for fd %d" @@ -1210,167 +1220,167 @@ msgstr "save_bash_input: buffer already exists for new fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forked pid %d appears in running job %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "deleting stopped job %d with process group %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marked as still alive" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no such pid" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Done" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Stopped" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Stopped(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Running" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Done(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Unknown status" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "child setpgid (%ld to %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld is not a child of this shell" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No record of process %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: job %d is stopped" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: no current jobs" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: job has terminated" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: job %d already in background" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: turning on WNOHANG to avoid indefinite block" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: line %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp failed" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: no job control in background" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "cannot set terminal process group (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "no job control in this shell" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: failed assertion: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1379,47 +1389,47 @@ msgstr "" "\r\n" "malloc: %s:%d: assertion botched\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "unknown" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: block on free list clobbered" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: called with already freed block argument" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: called with unallocated block argument" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free: underflow detected; magic8 corrupted" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: start and end chunk sizes differ" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: called with unallocated block argument" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: underflow detected; magic8 corrupted" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start and end chunk sizes differ" @@ -1461,22 +1471,22 @@ msgstr "%s: bad network path specification" msgid "network operations not supported" msgstr "network operations not supported" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: cannot change locale (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: cannot change locale (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: cannot change locale (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: cannot change locale (%s): %s" @@ -1494,35 +1504,35 @@ msgstr "You have new mail in $_" msgid "The mail in %s has been read\n" msgstr "The mail in %s has been read\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "syntax error: arithmetic expression required" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "syntax error: ‘;’ unexpected" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "syntax error: ‘((%s))’" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: bad instruction type %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: redirection instruction ‘%d’ out of range" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " @@ -1531,103 +1541,103 @@ msgstr "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "maximum here-document count exceeded" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "unexpected EOF while looking for matching ‘%c’" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "unexpected EOF while looking for ‘]]’" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error in conditional expression: unexpected token ‘%s’" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "syntax error in conditional expression" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "unexpected token ‘%s’, expected ‘)’" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "expected ‘)’" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "unexpected argument ‘%s’ to conditional unary operator" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "unexpected argument to conditional unary operator" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "unexpected token ‘%s’, conditional binary operator expected" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "conditional binary operator expected" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "unexpected argument ‘%s’ to conditional binary operator" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "unexpected argument to conditional binary operator" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "unexpected token ‘%c’ in conditional command" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "unexpected token ‘%s’ in conditional command" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "unexpected token %d in conditional command" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntax error near unexpected token ‘%s’" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "syntax error near ‘%s’" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "syntax error: unexpected end of file" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "syntax error" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use “%s” to leave the shell.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "unexpected EOF while looking for matching ‘)’" @@ -1665,94 +1675,94 @@ msgstr "xtrace_set: NULL file pointer" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ‘%c’: invalid format character" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "file descriptor out of range" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ambiguous redirect" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: cannot overwrite existing file" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: cannot redirect output" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "cannot create temp file for here-document: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: cannot assign fd to variable" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port not supported without networking" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "redirection error: cannot duplicate fd" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "could not find /tmp, please create!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp must be a valid directory name" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "pretty-printing mode ignored in interactive shells" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: invalid option" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "cannot set uid to %d: effective uid %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "cannot set gid to %d: effective gid %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "cannot start debugger; debugging mode disabled" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: Is a directory" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "I have no name!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1761,311 +1771,311 @@ msgstr "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "GNU long options:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Shell options:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o option\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Type ‘%s -c “help set”’ for more information about shell " "options.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Type ‘%s -c help’ for more information about shell builtin commands.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use the ‘bashbug’ command to report bugs.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "bash home page: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "General help using GNU software: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: invalid operation" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Bogus signal" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Hangup" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Interrupt" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Quit" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Illegal instruction" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "BPT trace/trap" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "ABORT instruction" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "EMT instruction" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Floating point exception" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Killed" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Bus error" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Segmentation fault" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Bad system call" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Broken pipe" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Alarm clock" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Terminated" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Urgent IO condition" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Stopped (signal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Continue" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Child death or stop" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Stopped (tty input)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Stopped (tty output)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O ready" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "CPU limit" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "File limit" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarm (virtual)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarm (profile)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Window changed" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Record lock" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "User signal 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "User signal 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "HFT input data pending" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "power failure imminent" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "system crash imminent" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "migrate process to another CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "programming error" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "HFT monitor mode granted" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "HFT monitor mode retracted" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "HFT sound sequence has completed" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Information request" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Unknown Signal #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "bad substitution: no closing ‘%s’ in %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: cannot assign list to array member" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "cannot make pipe for process substitution" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "cannot make child for process substitution" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "cannot open named pipe %s for reading" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "cannot open named pipe %s for writing" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "cannot duplicate named pipe %s as fd %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "command substitution: ignored null byte in input" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "cannot make pipe for command substitution" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "cannot make child for command substitution" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: cannot duplicate pipe as fd 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: invalid variable name for name reference" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: invalid indirect expansion" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: invalid variable name" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: parameter not set" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter null or not set" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expression < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: bad substitution" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: cannot assign in this way" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2073,12 +2083,12 @@ msgstr "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "bad substitution: no closing “`” in %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "no match: %s" @@ -2101,21 +2111,21 @@ msgstr "‘)’ expected" msgid "`)' expected, found %s" msgstr "‘)’ expected, found %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: binary operator expected" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: unary operator expected" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "missing ‘]’" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "syntax error: ‘%s’ unexpected" @@ -2124,100 +2134,106 @@ msgstr "syntax error: ‘%s’ unexpected" msgid "invalid signal number" msgstr "invalid signal number" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "trap handler: maximum trap handler level exceeded (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: bad value in trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: bad signal %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "error importing function definition for ‘%s’" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell level (%d) too high, resetting to 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no function context at current scope" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variable may not be assigned value" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: assigning integer to name reference" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: no function context at current scope" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s has null exportstr" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "invalid character %d in exportstr for %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "no ‘=’ in exportstr for %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: head of shell_variables not a function context" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no global_variables context" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: head of shell_variables not a temporary environment scope" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: cannot open as FILE" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: invalid value for trace file descriptor" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: compatibility value out of range" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +#, fuzzy +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Copyright (C) 2020 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2306,11 +2322,17 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [arg ...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +#, fuzzy +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." #: builtins.c:82 @@ -2410,7 +2432,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" #: builtins.c:144 @@ -2458,7 +2481,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] name [name ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" #: builtins.c:174 @@ -2502,11 +2526,13 @@ msgstr "" "COMMANDS; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while COMMANDS; do COMMANDS; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until COMMANDS; do COMMANDS; done" #: builtins.c:200 @@ -3897,6 +3923,7 @@ msgstr "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." #: builtins.c:994 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3907,7 +3934,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -3996,7 +4025,7 @@ msgstr "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -4016,7 +4045,7 @@ msgstr "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4184,7 +4213,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4224,7 +4253,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4258,7 +4287,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4296,7 +4325,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4314,7 +4343,7 @@ msgstr "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4338,7 +4367,7 @@ msgstr "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4362,7 +4391,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4524,7 +4553,7 @@ msgstr "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4537,7 +4566,7 @@ msgstr "" "must\n" " be a literal ‘]’, to match the opening ‘[’." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4557,7 +4586,7 @@ msgstr "" " Exit Status:\n" " Always succeeds." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4642,7 +4671,7 @@ msgstr "" " Returns success unless a SIGSPEC is invalid or an invalid option is " "given." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4700,7 +4729,7 @@ msgstr "" " Returns success if all of the NAMEs are found; fails if any are not " "found." -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4797,7 +4826,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4829,7 +4858,7 @@ msgstr "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4889,7 +4918,7 @@ msgstr "" " option is given, or if -n is supplied and the shell has no unwaited-for\n" " children." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4915,7 +4944,7 @@ msgstr "" "invalid\n" " option is given." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4939,7 +4968,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4969,7 +4998,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5006,7 +5035,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5034,7 +5063,7 @@ msgstr "" " Exit Status:\n" " The return status is the return status of PIPELINE." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5052,7 +5081,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5090,12 +5119,14 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5108,12 +5139,14 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5126,7 +5159,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5148,7 +5181,7 @@ msgstr "" " Exit Status:\n" " The coproc command returns an exit status of 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -5172,7 +5205,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is readonly." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5190,7 +5223,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5215,7 +5248,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the resumed job." -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5233,7 +5266,7 @@ msgstr "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5287,7 +5320,7 @@ msgstr "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5391,7 +5424,7 @@ msgstr "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5449,7 +5482,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5501,7 +5534,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5556,7 +5589,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5592,7 +5625,8 @@ msgstr "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." -#: builtins.c:1937 +#: builtins.c:1938 +#, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5615,6 +5649,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -5666,7 +5702,7 @@ msgstr "" "assignment\n" " error occurs." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5724,7 +5760,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5746,7 +5782,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5807,7 +5843,7 @@ msgstr "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5887,7 +5923,7 @@ msgstr "" "or\n" " not an indexed array." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5896,3 +5932,7 @@ msgstr "" "Read lines from a file into an array variable.\n" " \n" " A synonym for ‘mapfile’." + +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: invalid associative array key" diff --git a/po/en@quot.gmo b/po/en@quot.gmo index 749c3a704..710a9d7cd 100644 Binary files a/po/en@quot.gmo and b/po/en@quot.gmo differ diff --git a/po/en@quot.po b/po/en@quot.po index 5d978b231..b7668e289 100644 --- a/po/en@quot.po +++ b/po/en@quot.po @@ -29,7 +29,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU bash 5.1-rc3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2020-11-28 12:51-0500\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -43,57 +43,52 @@ msgstr "" msgid "bad array subscript" msgstr "bad array subscript" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: removing nameref attribute" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: cannot convert indexed to associative array" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: invalid associative array key" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: cannot assign to non-numeric index" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: must use subscript when assigning associative array" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: cannot create: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: cannot find keymap for command" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: first non-whitespace character is not ‘\"’" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "no closing ‘%c’ in %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: missing colon separator" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "‘%s’: cannot unbind in command keymap" @@ -113,7 +108,7 @@ msgstr "brace expansion: failed to allocate memory for %u elements" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "brace expansion: failed to allocate memory for ‘%s’" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "‘%s’: invalid alias name" @@ -184,7 +179,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME not set" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "too many arguments" @@ -211,7 +206,7 @@ msgstr "warning: " msgid "%s: usage: " msgstr "%s: usage: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: option requires an argument" @@ -226,7 +221,7 @@ msgstr "%s: numeric argument required" msgid "%s: not found" msgstr "%s: not found" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: invalid option" @@ -236,7 +231,7 @@ msgstr "%s: invalid option" msgid "%s: invalid option name" msgstr "%s: invalid option name" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "‘%s’: not a valid identifier" @@ -249,7 +244,7 @@ msgstr "invalid octal number" msgid "invalid hex number" msgstr "invalid hex number" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "invalid number" @@ -263,88 +258,93 @@ msgstr "%s: invalid signal specification" msgid "`%s': not a pid or valid job spec" msgstr "‘%s’: not a pid or valid job spec" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: readonly variable" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: cannot unset" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s out of range" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s out of range" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: no such job" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: no job control" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "no job control" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: restricted" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "restricted" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: not a shell builtin" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "write error: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "error setting terminal attributes: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "error getting terminal attributes: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error retrieving current directory: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: ambiguous job spec" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "help not available in this version" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: cannot unset: readonly %s" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: cannot unset" @@ -354,108 +354,108 @@ msgstr "%s: cannot unset" msgid "%s: invalid action name" msgstr "%s: invalid action name" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: no completion specification" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "warning: -F option may not work as you expect" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "warning: -C option may not work as you expect" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "not currently executing completion function" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "can only be used in a function" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "cannot use ‘-f’ to make functions" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: readonly function" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: reference variable cannot be an array" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: nameref variable self references not allowed" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: circular name reference" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "‘%s’: invalid variable name for name reference" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "cannot use ‘-f’ to make functions" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: readonly function" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: quoted compound array assignment deprecated" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: cannot destroy array variables in this way" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: cannot convert associative to indexed array" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: quoted compound array assignment deprecated" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "dynamic loading not available" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "cannot open shared object %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "cannot find %s in shared object %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: dynamic builtin already loaded" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "load function for %s returns failure (%d): not loaded" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: not dynamically loaded" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: cannot delete: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: is a directory" @@ -470,7 +470,7 @@ msgstr "%s: not a regular file" msgid "%s: file is too large" msgstr "%s: file is too large" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: cannot execute binary file" @@ -567,12 +567,12 @@ msgid "" msgstr "" "no help topics match ‘%s’. Try ‘help help’ or ‘man -k %s’ or ‘info %s’." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: cannot open: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -591,21 +591,21 @@ msgstr "" "A star (*) next to a name means that the command is disabled.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "cannot use more than one of -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "history position" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: invalid timestamp" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: history expansion failed" @@ -628,78 +628,78 @@ msgstr "%s: arguments must be process or job IDs" msgid "Unknown error" msgstr "Unknown error" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "expression expected" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: not an indexed array" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: invalid file descriptor specification" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: invalid file descriptor: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: invalid line count" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: invalid array origin" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: invalid callback quantum" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "empty array variable name" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "array variable support required" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "‘%s’: missing format character" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "‘%c’: invalid time format specification" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "‘%c’: invalid format character" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "warning: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "format parsing problem: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "missing hex digit for \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "missing unicode digit for \\%c" @@ -853,12 +853,12 @@ msgstr "" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: invalid timeout specification" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "read error: %d: %s" @@ -871,7 +871,7 @@ msgstr "can only ‘return’ from a function or sourced script" msgid "cannot simultaneously unset a function and a variable" msgstr "cannot simultaneously unset a function and a variable" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: not an array variable" @@ -890,11 +890,11 @@ msgstr "%s: cannot export" msgid "shift count" msgstr "shift count" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "cannot set and unset shell options simultaneously" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: invalid shell option name" @@ -961,16 +961,16 @@ msgstr "%s: invalid limit argument" msgid "`%c': bad command" msgstr "‘%c’: bad command" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: cannot get limit: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: cannot modify limit: %s" @@ -989,7 +989,7 @@ msgstr "‘%c’: invalid symbolic mode operator" msgid "`%c': invalid symbolic mode character" msgstr "‘%c’: invalid symbolic mode character" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " line " @@ -1009,96 +1009,106 @@ msgstr "Aborting..." msgid "INFORM: " msgstr "INFORM: " -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "warning: " + +#: error.c:488 msgid "unknown command error" msgstr "unknown command error" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "bad command type" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "bad connector" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "bad jump" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: unbound variable" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atimed out waiting for input: auto-logout\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "cannot redirect standard input from /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: ‘%c’: invalid format character" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] still exists" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: maximum eval nesting level exceeded (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximum source nesting level exceeded (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restricted: cannot specify ‘/’ in command names" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: command not found" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: cannot execute binary file" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: bad interpreter" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: cannot execute binary file: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "‘%s’: is a special builtin" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "cannot duplicate fd %d to fd %d" @@ -1111,68 +1121,68 @@ msgstr "expression recursion level exceeded" msgid "recursion stack underflow" msgstr "recursion stack underflow" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "syntax error in expression" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "attempted assignment to non-variable" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "syntax error in variable assignment" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "division by 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "bug: bad expassign token" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "‘:’ expected for conditional expression" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "exponent less than 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identifier expected after pre-increment or pre-decrement" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "missing ‘)’" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "syntax error: operand expected" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: invalid arithmetic operator" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (error token is “%s”)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "invalid arithmetic base" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "invalid integer constant" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "value too great for base" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: expression error\n" @@ -1181,7 +1191,7 @@ msgstr "%s: expression error\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: cannot access parent directories" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "cannot reset nodelay mode for fd %d" @@ -1200,167 +1210,167 @@ msgstr "save_bash_input: buffer already exists for new fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forked pid %d appears in running job %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "deleting stopped job %d with process group %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marked as still alive" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no such pid" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Done" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Stopped" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Stopped(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Running" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Done(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Unknown status" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "child setpgid (%ld to %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld is not a child of this shell" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No record of process %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: job %d is stopped" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: no current jobs" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: job has terminated" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: job %d already in background" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: turning on WNOHANG to avoid indefinite block" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: line %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp failed" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: no job control in background" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "cannot set terminal process group (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "no job control in this shell" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: failed assertion: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1369,47 +1379,47 @@ msgstr "" "\r\n" "malloc: %s:%d: assertion botched\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "unknown" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: block on free list clobbered" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: called with already freed block argument" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: called with unallocated block argument" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free: underflow detected; magic8 corrupted" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: start and end chunk sizes differ" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: called with unallocated block argument" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: underflow detected; magic8 corrupted" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start and end chunk sizes differ" @@ -1451,22 +1461,22 @@ msgstr "%s: bad network path specification" msgid "network operations not supported" msgstr "network operations not supported" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: cannot change locale (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: cannot change locale (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: cannot change locale (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: cannot change locale (%s): %s" @@ -1484,35 +1494,35 @@ msgstr "You have new mail in $_" msgid "The mail in %s has been read\n" msgstr "The mail in %s has been read\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "syntax error: arithmetic expression required" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "syntax error: ‘;’ unexpected" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "syntax error: ‘((%s))’" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: bad instruction type %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: redirection instruction ‘%d’ out of range" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " @@ -1521,103 +1531,103 @@ msgstr "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "maximum here-document count exceeded" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "unexpected EOF while looking for matching ‘%c’" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "unexpected EOF while looking for ‘]]’" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error in conditional expression: unexpected token ‘%s’" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "syntax error in conditional expression" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "unexpected token ‘%s’, expected ‘)’" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "expected ‘)’" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "unexpected argument ‘%s’ to conditional unary operator" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "unexpected argument to conditional unary operator" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "unexpected token ‘%s’, conditional binary operator expected" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "conditional binary operator expected" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "unexpected argument ‘%s’ to conditional binary operator" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "unexpected argument to conditional binary operator" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "unexpected token ‘%c’ in conditional command" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "unexpected token ‘%s’ in conditional command" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "unexpected token %d in conditional command" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntax error near unexpected token ‘%s’" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "syntax error near ‘%s’" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "syntax error: unexpected end of file" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "syntax error" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use “%s” to leave the shell.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "unexpected EOF while looking for matching ‘)’" @@ -1655,94 +1665,94 @@ msgstr "xtrace_set: NULL file pointer" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ‘%c’: invalid format character" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "file descriptor out of range" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ambiguous redirect" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: cannot overwrite existing file" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: cannot redirect output" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "cannot create temp file for here-document: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: cannot assign fd to variable" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port not supported without networking" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "redirection error: cannot duplicate fd" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "could not find /tmp, please create!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp must be a valid directory name" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "pretty-printing mode ignored in interactive shells" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: invalid option" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "cannot set uid to %d: effective uid %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "cannot set gid to %d: effective gid %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "cannot start debugger; debugging mode disabled" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: Is a directory" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "I have no name!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1751,308 +1761,308 @@ msgstr "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "GNU long options:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Shell options:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o option\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Type ‘%s -c “help set”’ for more information about shell options.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Type ‘%s -c help’ for more information about shell builtin commands.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use the ‘bashbug’ command to report bugs.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "bash home page: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "General help using GNU software: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: invalid operation" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Bogus signal" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Hangup" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Interrupt" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Quit" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Illegal instruction" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "BPT trace/trap" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "ABORT instruction" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "EMT instruction" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Floating point exception" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Killed" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Bus error" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Segmentation fault" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Bad system call" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Broken pipe" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Alarm clock" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Terminated" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Urgent IO condition" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Stopped (signal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Continue" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Child death or stop" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Stopped (tty input)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Stopped (tty output)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O ready" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "CPU limit" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "File limit" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarm (virtual)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarm (profile)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Window changed" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Record lock" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "User signal 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "User signal 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "HFT input data pending" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "power failure imminent" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "system crash imminent" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "migrate process to another CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "programming error" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "HFT monitor mode granted" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "HFT monitor mode retracted" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "HFT sound sequence has completed" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Information request" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Unknown Signal #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "bad substitution: no closing ‘%s’ in %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: cannot assign list to array member" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "cannot make pipe for process substitution" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "cannot make child for process substitution" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "cannot open named pipe %s for reading" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "cannot open named pipe %s for writing" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "cannot duplicate named pipe %s as fd %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "command substitution: ignored null byte in input" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "cannot make pipe for command substitution" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "cannot make child for command substitution" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: cannot duplicate pipe as fd 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: invalid variable name for name reference" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: invalid indirect expansion" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: invalid variable name" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: parameter not set" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter null or not set" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expression < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: bad substitution" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: cannot assign in this way" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2060,12 +2070,12 @@ msgstr "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "bad substitution: no closing “`” in %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "no match: %s" @@ -2088,21 +2098,21 @@ msgstr "‘)’ expected" msgid "`)' expected, found %s" msgstr "‘)’ expected, found %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: binary operator expected" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: unary operator expected" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "missing ‘]’" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "syntax error: ‘%s’ unexpected" @@ -2111,100 +2121,106 @@ msgstr "syntax error: ‘%s’ unexpected" msgid "invalid signal number" msgstr "invalid signal number" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "trap handler: maximum trap handler level exceeded (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: bad value in trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: bad signal %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "error importing function definition for ‘%s’" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell level (%d) too high, resetting to 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no function context at current scope" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variable may not be assigned value" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: assigning integer to name reference" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: no function context at current scope" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s has null exportstr" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "invalid character %d in exportstr for %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "no ‘=’ in exportstr for %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: head of shell_variables not a function context" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no global_variables context" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: head of shell_variables not a temporary environment scope" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: cannot open as FILE" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: invalid value for trace file descriptor" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: compatibility value out of range" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +#, fuzzy +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Copyright (C) 2020 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2293,11 +2309,17 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [arg ...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +#, fuzzy +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." #: builtins.c:82 @@ -2397,7 +2419,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" #: builtins.c:144 @@ -2445,7 +2468,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] name [name ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" #: builtins.c:174 @@ -2489,11 +2513,13 @@ msgstr "" "COMMANDS; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while COMMANDS; do COMMANDS; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until COMMANDS; do COMMANDS; done" #: builtins.c:200 @@ -3873,6 +3899,7 @@ msgstr "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." #: builtins.c:994 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3883,7 +3910,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -3972,7 +4001,7 @@ msgstr "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3992,7 +4021,7 @@ msgstr "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4160,7 +4189,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4200,7 +4229,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4234,7 +4263,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4272,7 +4301,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4290,7 +4319,7 @@ msgstr "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4314,7 +4343,7 @@ msgstr "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4338,7 +4367,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4500,7 +4529,7 @@ msgstr "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4512,7 +4541,7 @@ msgstr "" " This is a synonym for the “test” builtin, but the last argument must\n" " be a literal ‘]’, to match the opening ‘[’." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4532,7 +4561,7 @@ msgstr "" " Exit Status:\n" " Always succeeds." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4616,7 +4645,7 @@ msgstr "" " Returns success unless a SIGSPEC is invalid or an invalid option is " "given." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4672,7 +4701,7 @@ msgstr "" " Returns success if all of the NAMEs are found; fails if any are not " "found." -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4768,7 +4797,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4800,7 +4829,7 @@ msgstr "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4860,7 +4889,7 @@ msgstr "" " option is given, or if -n is supplied and the shell has no unwaited-for\n" " children." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4886,7 +4915,7 @@ msgstr "" "invalid\n" " option is given." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4908,7 +4937,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4938,7 +4967,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4974,7 +5003,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5002,7 +5031,7 @@ msgstr "" " Exit Status:\n" " The return status is the return status of PIPELINE." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5020,7 +5049,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5058,12 +5087,14 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5076,12 +5107,14 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5094,7 +5127,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5116,7 +5149,7 @@ msgstr "" " Exit Status:\n" " The coproc command returns an exit status of 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -5140,7 +5173,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is readonly." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5158,7 +5191,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5182,7 +5215,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the resumed job." -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5200,7 +5233,7 @@ msgstr "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5252,7 +5285,7 @@ msgstr "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5356,7 +5389,7 @@ msgstr "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5414,7 +5447,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5464,7 +5497,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5518,7 +5551,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5554,7 +5587,8 @@ msgstr "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." -#: builtins.c:1937 +#: builtins.c:1938 +#, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5577,6 +5611,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -5628,7 +5664,7 @@ msgstr "" "assignment\n" " error occurs." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5686,7 +5722,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5708,7 +5744,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5768,7 +5804,7 @@ msgstr "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5848,7 +5884,7 @@ msgstr "" "or\n" " not an indexed array." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5857,3 +5893,7 @@ msgstr "" "Read lines from a file into an array variable.\n" " \n" " A synonym for ‘mapfile’." + +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: invalid associative array key" diff --git a/po/eo.gmo b/po/eo.gmo index 586b9ef92..b0227e55d 100644 Binary files a/po/eo.gmo and b/po/eo.gmo differ diff --git a/po/eo.po b/po/eo.po index 65268c3cc..1e781094e 100644 --- a/po/eo.po +++ b/po/eo.po @@ -30,7 +30,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU bash 5.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2020-12-13 10:53+0700\n" "Last-Translator: Sergio Pokrovskij \n" "Language-Team: Esperanto \n" @@ -45,58 +45,53 @@ msgstr "" msgid "bad array subscript" msgstr "Misa tabel-indico" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: ne plu nomreferenco (la atributo nameref forigitas)" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: Maleblas konverti entjerindican tabelon en asocitabelon" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: Misa asocitabela ŝlosilo" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: Valorizato havu nombran indicon" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: Valorizante per asocitabelo uzu indicon" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: Ne prosperis krei: %s" # XXX: internal_error -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: Mankas klavartabelo por komando" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: La unua ne-blankspaca signo ne estas „\"‟" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "Mankas ferma „%c‟ en %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: Mankas disiga dupunkto" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "«%s»: Ne eblas malligi en komandaj klavaĵoj" @@ -119,7 +114,7 @@ msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %u elementoj" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %s" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "%s: MaltaÅ­gas por uzi kiel alinomon" @@ -192,7 +187,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME malhavas valoron" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "Tro multe da argumentoj" @@ -219,7 +214,7 @@ msgstr "Averto: " msgid "%s: usage: " msgstr "%s: Uzmaniero: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: La opcio bezonas argumenton" @@ -234,7 +229,7 @@ msgstr "%s: Necesas nombra argumento" msgid "%s: not found" msgstr "%s: Ne trovita" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: Misa opcio" @@ -244,7 +239,7 @@ msgstr "%s: Misa opcio" msgid "%s: invalid option name" msgstr "%s: Misa opcinomo" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s‟ ne estas taÅ­ga nomo" @@ -257,7 +252,7 @@ msgstr "Misa okuma nombro" msgid "invalid hex number" msgstr "Misa 16uma nombro" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "Misa nombro" @@ -271,88 +266,93 @@ msgstr "%s: Misa signalindiko" msgid "`%s': not a pid or valid job spec" msgstr "„%s‟: Nek proceznumero, nek taÅ­ga laborindiko" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: Nurlega variablo" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: Malaktivigo fiaskis" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s estas ekster sia variejo" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argumento" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s estas ekster sia variejo" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: Ne estas tia laboro" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: Ĉi tiu ŝelo ne disponigas laborregadon" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "Laborregado ne disponeblas" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: Limigita" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "limigita" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "„%s‟ ne estas primitiva komando ŝela" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "Eraro ĉe skribo: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "Eraro ĉe agordado de terminalaj atributoj: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "Eraro ĉe akiro de terminalaj atributoj: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: Eraro ĉe provo determini la kurantan dosierujon: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: Ambigua laborindiko" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "helpilo mankas en ĉi tiu versio" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: Malaktivigo fiaskis: nurlega %s" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: Malaktivigo fiaskis" @@ -362,108 +362,108 @@ msgstr "%s: Malaktivigo fiaskis" msgid "%s: invalid action name" msgstr "%s: Misa nomo de ago" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: Kompletigo ne estas specifita" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "Averto: La opcio -F povas funkcii alie ol vi eble supozas" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "Averto: La opcio -C povas funkcii alie ol vi eble supozas" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "Ni ne estas en plenumado de kompletiga funkcio" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "Uzeblas nur ene de funkcio" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "„-f‟ ne estas uzebla por fari funkciojn" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: Nurlega funkcio" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: Referenca variablo ne povas esti tabelo" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: Nomreferenca variablo ne referencu sin mem" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: Cikla nomreferenco" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "„%s“: Misa variablonomo por nomreferenco" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "„-f‟ ne estas uzebla por fari funkciojn" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: Nurlega funkcio" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: Tutopa tabelvalorizo citila estas evitinda" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: Ĉi tiel ne eblas neniigi tabelvariablojn" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: Ne eblas konverti asocitabelon en entjerindican tabelon" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: Tutopa tabelvalorizo citila estas evitinda" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "Rultempa ŝargo ne disponeblas" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "Ne malfermiĝis dinamika biblioteko %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "Mankas %s en la dinamika biblioteko%s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: primitiva komando dinamika jam ŝargitas" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "Ŝarga funkcio por %s liveris fiaskon (%d): ne ŝargite" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: Ne ŝargita dinamike" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: Ne eblas forigi: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s estas dosierujo" @@ -478,7 +478,7 @@ msgstr "%s: Ne ordinara dosiero" msgid "%s: file is too large" msgstr "%s: Tro granda dosiero" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: Neplenumebla duuma dosiero" @@ -570,17 +570,18 @@ msgstr "" #: builtins/help.def:185 #, c-format -msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" "Helpaĵo pri „%s‟ malestas.\n" "Provu «help help» aÅ­ «man -k %s» aÅ­ «info %s»." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: Fiaskis malfermo de %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -599,21 +600,21 @@ msgstr "" "Steleto (*) tuj post nomo indikas, ke la komando estas malebligita.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "Ne pli ol unu el -anrw estas uzebla" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "pozicio en la historio" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: MaltaÅ­ga tempomarko" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: Historia malvolvo fiaskis" @@ -636,80 +637,80 @@ msgstr "%s: Argumento estu proceznumero aÅ­ laborindiko" msgid "Unknown error" msgstr "Nekonata eraro" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "Mankas esprimo" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: ĝi ne estas entjerindica tabelo" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: Misa indiko de dosiernumero" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: Misa dosiernumero: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: Misa lininombro" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: Misa tabelbazo" # Supozeble callback => retrovoko ?? -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: Misa kvanto ĉe retrovoko" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "Mankas nomo de tabelvariablo" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "necesas subteno de tabelvariabloj" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "„%s‟: Mankas formata signo" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "%c: Misa tempoformato" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "„%c‟: Misa signo formata" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "Averto: %s: %s" # XXX: internal_error -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "Miso ĉe analizado de formato: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "Mankas 16uma cifero por \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "Post „%c‟ mankas unikoda cifero" @@ -751,10 +752,12 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Listigu la kurantan dosierujstakon. La dosierujoj trafas en\n" @@ -862,25 +865,26 @@ msgstr "" "\n" " Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: Misa indiko de atendotempo" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "Lega (read) eraro: %d: %s" #: builtins/return.def:68 msgid "can only `return' from a function or sourced script" -msgstr "„return‟ sencas nur en funkcio aÅ­ punkte vokita („.‟, „source‟) skripto" +msgstr "" +"„return‟ sencas nur en funkcio aÅ­ punkte vokita („.‟, „source‟) skripto" #: builtins/set.def:869 msgid "cannot simultaneously unset a function and a variable" msgstr "Ne eblas samtempe malaktivigi funkcion kaj variablon" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: Ne tabela variablo" @@ -899,11 +903,11 @@ msgstr "%s: Ne eblas eksporti" msgid "shift count" msgstr "Nombrilo de „shift‟" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "Maleblas samtempe ŝalti kaj malŝalti ŝelan opcion" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: Misa nomo de ŝela opcio" @@ -970,16 +974,16 @@ msgstr "%s: MaltaÅ­ga argumento por limo" msgid "`%c': bad command" msgstr "„%c‟: Misa komando" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: Fiaskis provo legi limon: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "limo" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: Malprosperis ŝanĝi limon: %s" @@ -1000,7 +1004,7 @@ msgstr "„%c‟: MaltaÅ­ga simbolo por atingorajta modifilo" msgid "`%c': invalid symbolic mode character" msgstr "„%c‟: La signo ne estas simbolo de atingorajta kategorio" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " linio " @@ -1020,99 +1024,109 @@ msgstr "Ĉesigado ..." msgid "INFORM: " msgstr "INFORMO: " -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "Averto: " + +#: error.c:488 msgid "unknown command error" msgstr "Nekonata komand-eraro" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "Misa komandotipo" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "Misa stir-operacio" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "Misa salto" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: Neligita variablo" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aTro longe sen enigo: AÅ­tomata seancofino\n" # XXX: internal error: -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "Fiaskis provo nomumi la disponaĵon «/dev/null» ĉefenigujo: %s" # XXX: internal error: -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c‟: Misa formatsigno" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: la kunprocezo [%d:%s] ankoraÅ­ ekzistas" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "Eraro en dukto" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: La ingado de „eval“oj superis sian maksimumon (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: La ingado de „source“oj superis sian maksimumon (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: La ingado de funkcioj superis sian maksimumon (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: Malpermesitas uzi „/‟ en komandonomoj" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: Komando ne trovita" # XXX: internal error: -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: Neplenumebla duuma dosiero" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: Misa interpretilo" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: Neplenumebla duuma dosiero: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "„%s‟ estas primitiva komando speciala" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "Ne eblas kunnomumi al dosiernumero %d la dosiernumeron %d" @@ -1125,68 +1139,68 @@ msgstr "Tro profunda rekursio en esprimo" msgid "recursion stack underflow" msgstr "Rekursistako elĉerpita" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "Sintaksa eraro en esprimo" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "Provo valorizi ne-variablon" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "Sintaksa eraro en valorizo de variablo" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "Divido per 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "CIMO: Misa operacisigno en kombinita valorizsimbolo" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "„:‟ mankas kondiĉa esprimo" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "Negativa eksponento" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "Post antaÅ­kremento aperu nomo de variablo" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "Mankas „)‟" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "Sintaksa eraro: Mankas operando" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "Sintaksa eraro: Misa operacisimbolo aritmetika" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (misa simbolo estas „%s‟)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "MaltaÅ­ga bazo nombrosistema" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "MaltaÅ­ga konstanto entjera" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "Tro granda valoro por bazo de nombrosistemo" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: Misa esprimo\n" @@ -1195,7 +1209,7 @@ msgstr "%s: Misa esprimo\n" msgid "getcwd: cannot access parent directories" msgstr "getwd: Ne eblas atingi patrajn dosierujojn" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "Ne eblas reŝalti senprokrastan reĝimon por dosiernumero %d" @@ -1216,172 +1230,172 @@ msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: procezgrupo dukto" # ZZZ: internal_warning -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" # ZZZ: internal_warning -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "Forke farita proceznumero %d aperas en rulata laboro %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "Haltigita laboro %d kun procezgrupo %ld estas forigata" # ifdef DEBUG ... internal_warning(): -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marked as still alive" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: Ne estas tia proceznumero (%ld)!" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Signalo %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Farite" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Haltigita" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Haltigita(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Rulata" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Farite(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Eliro %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Nekonata stato" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(nekropsio elŝutita)" -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (labordosierujo: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "provo atribui (setpgid) procezgrupon %2$ld de la procezido %1$ld" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: La procezo %ld ne estas ido de ĉi tiu ŝelo" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Malestas informoj pri procezo %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: La laboro %d estas haltigita" # XXX: internal_error -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: no current jobs" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: La laboro finiĝis" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: La laboro %d jam estas fona" # XXX: internal warning: -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: WNOHANG iĝas ŝaltita por eviti nedifintan pendiĝon" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: linio %dª: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr "(nekropsio elŝutita)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(nun labordosierujo estas: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp fiaskis" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: laborregado ne funkcias en la fono" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: liniaranĝo" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid()" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ne prosperis atribui grupon (%d) de terminala procezo" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "Ĉi tiu ŝelo ne disponigas laborregadon" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: Malveras la aserto: %s\n" # XXX: debug? -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1391,57 +1405,57 @@ msgstr "" "malloc: %s:%d: aserto sufokita\r\n" # XXX: internal error -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "nekonata" # XXX: debug? -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: Skribdifektita bloko en malokupa listo (free list)" # XXX: debug? -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: La argumento montras blokon jam malokupitan" # XXX: debug? -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: La argumento ne montras generitan memoron" # XXX: debug? -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: Okazis maltroo; mh_nbytes estas ekster sia variejo" # XXX: debug? -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free: Okazis maltroo; «magic8» difektitas" # XXX: debug? -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: La ĉapa kaj vosta longoj de memorpeco ne estas egalaj" # XXX: debug? -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: La argumento ne montras generitan memoron" # XXX: debug? -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: Okazis maltroo; mh_nbytes estas ekster sia variejo" # XXX: debug? -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: Okazis maltroo; «magic8» difektitas" # XXX: debug? -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: La ĉapa kaj vosta longoj de memorpeco ne estas egalaj" @@ -1491,25 +1505,25 @@ msgid "network operations not supported" msgstr "Reta funkciado ne disponeblas" # XXX: internal warning: -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: Maleblas ŝanĝi lokaĵaron (%s)" # XXX: internal warning: -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: Maleblas ŝanĝi lokaĵaron (%s): %s" # XXX: fatal_error -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ne eblas ŝanĝi la lokaĵaron (%s)" # XXX: fatal_error -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ne eblas ŝanĝi la lokaĵaron (%s): %s" @@ -1527,139 +1541,143 @@ msgstr "Nova poŝto en $_" msgid "The mail in %s has been read\n" msgstr "La poŝto en %s estas jam legita\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "Sintaksa eraro: Necesas aritmetika esprimo" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "Sintaksa eraro: Neatendita „;‟" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "Sintaksa eraro: „((%s))‟" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: Misa ordontipo %d" # internal_warning(): -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "Tuj-dokumenton de linio %d limigas dosierfino (mankas „%s‟)" # XXX: programming_error -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: Alidirektada komando „%d‟ ekster sia variejo" # internal_warning(): -#: parse.y:2393 +#: parse.y:2428 #, c-format -msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" -msgstr "shell_getc: shell_input_line_size (%zu) superas SIZE_MAX (%lu): la linio tranĉita" +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) superas SIZE_MAX (%lu): la linio " +"tranĉita" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "La nombro de tuj-documentoj superis sian maksimumon" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "Neatendita dosierfino dum serĉo de responda „%c‟" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "Neatendita dosierfino dum serĉo de „]]‟" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "Sintaksa eraro en kondiĉa esprimo: Neatendita simbolo „%s‟" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "Sintaksa eraro en kondiĉa esprimo" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "Nekonvena simbolo „%s‟ anstataÅ­ „)‟" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "Mankas „)‟" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "La argumento „%s‟ ne konvenas por unuloka kondiĉa operacisimbolo" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "MaltaÅ­ga argumento por unuloka kondiĉa operacisimbolo" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "Misa simbolo „%s‟ anstataÅ­ duloka kondiĉa operacisigno" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "ĉi tie devas esti duloka kondiĉa operacisigno" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "La argumento „%s‟ ne konvenas por duloka kondiĉa operacisimbolo" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "\n" -msgstr "La hejmpaĝo de Baŝo (anglalingva): \n" +msgstr "" +"La hejmpaĝo de Baŝo (anglalingva): \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" -msgstr "Ĝenerala helpilo pri uzo de GNUa programaro: \n" +msgstr "" +"Ĝenerala helpilo pri uzo de GNUa programaro: \n" # XXX: internal_error -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: Misa operacio" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Ŝtopsignalo" # Hangup detected on controlling terminal or death of controlling # process -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Malkonekto" # Interrupt from keyboard -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Interrompo" # Quit from keyboard -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Klavara eliro" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Miskomando" # SIGTRAP 5 Core Trace/breakpoint trap -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "Spurada kontrolpunkto" # Abort signal from abort(3) -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Komando ABORT" # SIGEMT is not specified in POSIX 1003.1-2001, but neverthless appears # on most other Unices, where its default action is typically to termi- # nate the process with a core dump. -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "EMT-komando" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Glitpunkta escepto" # SIGKILL 9 Term Kill signal # Nek kaptebla nek ignorebla (malkiel ABORT) -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Murdu" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Bus-eraro" # SIGSEGV 11 Core Invalid memory reference -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Adreseraro" # SIGSYS 12,-,12 Core Bad argument to routine (SVID) -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Misa sistemvoko" # SIGPIPE 13 Term Broken pipe: write to pipe with no readers -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Rompita dukto" # SIGALRM 14 Term Timer signal from alarm(2) -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Vekhorloĝo" # SIGTERM 15 Term Termination signal -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Finiĝu" # SIGURG 16,23,21 Ign Urgent condition on socket (4.2 BSD) -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Urĝa stato eneliga" # SIGSTOP 17,19,23 Stop Stop process # Nek kaptebla nek ignorebla (samkiel SIGKILL) # Haltu (poste eblos plu iri, vd SIGCONT) -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Haltu (signalo)" # SIGCONT 19,18,25 Continue if stopped -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Pluen" # SIGCHLD 20,17,18 Ign Child stopped or terminated -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Procezido mortis aÅ­ haltis" # SIGTTIN 21,21,26 Stop tty input for background process -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Haltu (pro terminalenigo)" # SIGTTOU 22,22,27 Stop tty output for background process -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Haltu (pro terminaleligo)" # SIGIO 23,29,22 Term I/O now possible (4.2 BSD) -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "Eneligo pretas" # SIGXCPU 24,24,30 Core CPU time limit exceeded (4.2 BSD) -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Ĉefprocesora tempolimo" # SIGXFSZ 25,25,31 Core File size limit exceeded (4.2 BSD) -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Dosiera longolimo" # SIGVTALRM 26,26,28 Term Virtual alarm clock (4.2 BSD) -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Vekilo (virtuala)" # SIGPROF 27,27,29 Term Profiling timer expired -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Vekilo (profilada)" # SIGWINCH 28,28,20 Ign Window resize signal (4.3 BSD, Sun) -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Fenestro ŝanĝiĝis" # SIGLOST -,-,- Term File lock lost -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Dosierŝloso" # SIGUSR1 30,10,16 Term User-defined signal 1 -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Uzulsignalo 1ª" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Uzulsignalo 2ª" # Harbor File Transfer: -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "Pendas HFT-enigo" # SIGPWR 29,30,19 Term Power failure (System V) -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "Energiprovizo paneontas" # SIGDANGER -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "La sistemo estas kraŝonta" # SIGMIGRATE: -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "La procezo iru al alia ĉefprocesoro" # SIGPRE -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "Programeraro" # SIGGRANT (monopola??) -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "HFT-monitorreĝimo jesigita" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "HFT-monitorreĝimo forprenita" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "HFT-sonsekvenco finiĝis" # SIGINFO 29,-,- A synonym for SIGPWR -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Informmendo" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Nekonata signalo n-ro %d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Misa anstataÅ­igo: Mankas ferma „%s‟ en %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: Maleblas valorizi tabelanon per listo" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "Ne prosperis fari dukton por proceza anstataÅ­igo" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "Ne prosperis krei idon por proceza anstataÅ­igo" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "Ne prosperis malfermi nomitan dukton %s porlegan" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "Ne prosperis malfermi nomitan dukton %s por skribado" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "Ne prosperis kunnomumi nomhavan dukton %s kiel dosiernumeron %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "Komanda anstataÅ­igo: nul-bajto en enigaĵo, ignorita" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "Ne prosperis fari dukton por komanda anstataÅ­igo" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "Ne prosperis krei procezidon por komanda anstataÅ­igo" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: Ne prosperis kunnomumi la dosiernumeron 1 al dukto" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: Misa variablonomo por nomreferenco" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: Misa malvolvo malrekta" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: MaltaÅ­ga variablonomo" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: Parametro estas malaktiva" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: Parametro estas NUL aÅ­ malaktiva" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: subĉeno-esprimo < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: Misa anstataÅ­igo" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ĉi tiel ne valorizebla" # XXX: internal warning: -#: subst.c:9814 -msgid "future versions of the shell will force evaluation as an arithmetic substitution" -msgstr "Ontaj versioj de la ŝelo plenumos komputon kiel aritmetikan anstataÅ­igon" +#: subst.c:10111 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"Ontaj versioj de la ŝelo plenumos komputon kiel aritmetikan anstataÅ­igon" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "Misa anstataÅ­igo: Mankas ferma „`‟ en %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "Nenio kongrua: %s" @@ -2180,21 +2203,21 @@ msgstr "Mankas „)‟" msgid "`)' expected, found %s" msgstr "AnstataÅ­ „)‟ troviĝas %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: Tie devas esti duloka operacisigno" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: Tie devas esti unuloka operacisigno" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "Mankas „]‟" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "Sintaksa eraro: Neatendita «%s»" @@ -2203,116 +2226,127 @@ msgstr "Sintaksa eraro: Neatendita «%s»" msgid "invalid signal number" msgstr "Misa signalnumero" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" -msgstr "trap handler: La nivelo de kaptilotraktiloj superis sian maksimumon (%d)" +msgstr "" +"trap handler: La nivelo de kaptilotraktiloj superis sian maksimumon (%d)" # XXX: internal_warning -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: Misa valoro en trap_list[%d]: %p" # XXX: internal_warning -#: trap.c:418 +#: trap.c:416 #, c-format -msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: Signaltraktilo SIG_DFL resendas %d (%s) al mi mem" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Misa signalnumero %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "Eraro ĉe importo de funkcidifino por „%s‟" # XXX: internal_warning -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "%d estas tro granda ŝelnivelo; mallevita ĝis 1" # XXX: internal_error -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: Malestas funkcia kunteksto en ĉi-regiono" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: Variablo ne valorizebla" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: Nomreferenco valorizata per entjero" # XXX: internal_error -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: Malestas funkcia kunteksto en ĉi-regiono" # XXX: internal_error -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "«exportstr» de %s estas NUL" # XXX: internal_error -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "Misa signo %d en eksporta signoĉeno por „%s‟" # XXX: internal_error -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "Mankas „=‟ en eksporta signoĉeno por „%s‟" # XXX: internal_error -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" -msgstr "pop_var_context: La kapo de „shell_variables‟ ne estas funkcia kunteksto" +msgstr "" +"pop_var_context: La kapo de „shell_variables‟ ne estas funkcia kunteksto" # XXX: internal_error -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: Mankas kunteksto de „global_variables‟" # XXX: internal_error -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: La kapo de „shell_variables‟ ne estas provizora regiono" # XXX: internal_error -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: Ne malfermeblas kiel DOSIERO" # XXX: internal_error -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: Misa valoro por spurada dosiernumero (trace file descriptor)" # # XXX: internal_error -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s kongruo-nivelo estas ekster sia variejo" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +#, fuzzy +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Copyright (C) 2020 ĉe «Free Software Foundation, Inc.»" #: version.c:47 version2.c:47 -msgid "License GPLv3+: GNU GPL version 3 or later \n" +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" msgstr "" "La permesilo estas GPLv3+; t.e. GNU GPL, versio 3ª aÅ­ pli nova.\n" "La tekston vd ĉe \n" @@ -2361,7 +2395,9 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] NOMO [NOMO ...]" #: builtins.c:53 -msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" "bind [-lpsvPSVX] [-m KLAVARTABELO] [-f DOSIERNOMO] [-q NOMO]\n" " [-u NOMO] [-r KLAVAÄ´O] [-x KLAVAÄ´O:ŜELKOMANDO]\n" @@ -2396,11 +2432,17 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] KOMANDO [ARG ...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFgiIlnrtux] [-p] [NOMO[=VALORO] ...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +#, fuzzy +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFgiIlnrtux] [-p] NOMO[=VALORO] ..." #: builtins.c:82 @@ -2462,7 +2504,9 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [ŜABLONO ...]" #: builtins.c:123 -msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" msgstr "" "history [-c] [-d POZICIO] [n] aÅ­\n" "history -awr [DOSIERNOMO] aÅ­\n" @@ -2479,7 +2523,9 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [LABORINDIKO ... | PROCEZNUMERO ...]" #: builtins.c:134 -msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" msgstr "" "kill [-s SIGSNOM | -n SIGNUM | -SIGNOM] [PN | LABORINDIKO] ... aÅ­\n" "kill -l [SIGNOM]" @@ -2489,7 +2535,9 @@ msgid "let arg [arg ...]" msgstr "let ARG [ARG ...]" #: builtins.c:138 -msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" msgstr "" "read [-ers] [-a TABELO] [-d DISIG] [-i TEKSTO]\n" " [-n NSIGN] [-N NSIGN] [-p INVIT] [-t TLIM]\n" @@ -2500,7 +2548,8 @@ msgid "return [n]" msgstr "return [N]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o OPCINOMO] [--] [ARG ...]" #: builtins.c:144 @@ -2548,7 +2597,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] NOMO [NOMO ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [LIMO]" #: builtins.c:174 @@ -2584,15 +2634,21 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case VORTO in [ŜABLONO [| ŜABLONO]...) KOMANDOJ ;;]... esac" #: builtins.c:194 -msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" -msgstr "if KOMANDOJ; then KOMANDOJ; [ elif KOMANDOJ; then KOMANDOJ; ]... [ else KOMANDOJ; ] fi" +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if KOMANDOJ; then KOMANDOJ; [ elif KOMANDOJ; then KOMANDOJ; ]... [ else " +"KOMANDOJ; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while KOMANDOJ; do KOMANDOJ; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until KOMANDOJ; do KOMANDOJ; done" #: builtins.c:200 @@ -2646,14 +2702,19 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v VAR] FORMATO [ARGUMENTOJ]" #: builtins.c:231 -msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]" +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" msgstr "" "complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPCIO] [-A AGO] [-G ŜABLONO]\n" " [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO]\n" " [-P PREFIKSO] [-S SUFIKSO] [NOMO ...]" #: builtins.c:235 -msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o OPCIO] [-A AGO] [-G ŜABLONO]\n" " [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO]\n" @@ -2664,13 +2725,17 @@ msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o OPCIO] [-DEI] [NOMO ...]" #: builtins.c:242 -msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "mapfile [-d DISIG] [-n KIOM] [-O ORIGINO] [-s KIOM] [-t] [-u DN]\n" " [-C RETROVOKO] [-c KVANTO] [TABELO]" #: builtins.c:244 -msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-d DISIG] [-n KIOM] [-O ORIGINO] [-s KIOM] [-t]\n" " [-u DN] [-C RETROVOKO] [-c KVANTO] [TABELO]" @@ -2691,7 +2756,8 @@ msgid "" " -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has been\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" " defined." msgstr "" "Difinu aÅ­ listigu alinomojn.\n" @@ -2743,25 +2809,30 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their values\n" -" -s List key sequences that invoke macros and their values\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" -" -X List key sequences bound with -x and associated commands\n" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2847,7 +2918,8 @@ msgid "" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the function.\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" @@ -2899,16 +2971,22 @@ msgstr "" msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of the\n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" -" A null directory name is the same as the current directory. If DIR begins\n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is set,\n" -" the word is assumed to be a variable name. If that variable has a value,\n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" " its value is used for DIR.\n" " \n" " Options:\n" @@ -2924,11 +3002,13 @@ msgid "" " \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" -" `..' is processed by removing the immediately previous pathname component\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" " back to a slash or the beginning of DIR.\n" " \n" " Exit Status:\n" -" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" " -P is used; non-zero otherwise." msgstr "" "Ŝanĝu la kurantan laboran dosierujon de la ŝelo.\n" @@ -3042,7 +3122,8 @@ msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke commands\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -3105,7 +3186,8 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the `local'\n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" @@ -3147,7 +3229,8 @@ msgstr "" " komando „local‟. La opcio „-g‟ ĉi tiun efikon abolas.\n" "\n" " Eliistato:\n" -" Sukceso, krom se aperas misa opcio aÅ­ okazas eraro ĉe valorizo de variablo." +" Sukceso, krom se aperas misa opcio aÅ­ okazas eraro ĉe valorizo de " +"variablo." # typeset [-aAfFgilrtux] [-p] name[=value] ... #: builtins.c:532 @@ -3193,7 +3276,8 @@ msgstr "" msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by a\n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -3217,9 +3301,11 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" -" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" " \t\tHHHH can be one to four hex digits.\n" -" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" " \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" @@ -3343,7 +3429,8 @@ msgstr "" msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the shell,\n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" @@ -3445,7 +3532,8 @@ msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3453,11 +3541,13 @@ msgid "" " -c\texecute COMMAND with an empty environment\n" " -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, unless\n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error occurs." +" Returns success unless COMMAND is not found or a redirection error " +"occurs." msgstr "" "AnstataÅ­igu la ŝelon je la donita komando\n" "\n" @@ -3496,7 +3586,8 @@ msgstr "" msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not executed\n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" " in a login shell." msgstr "" "AdiaÅ­, saluta ŝelo!\n" @@ -3512,13 +3603,15 @@ msgstr "" msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history list.\n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -3532,7 +3625,8 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error occurs." +" Returns success or status of executed command; non-zero if an error " +"occurs." msgstr "" "Eligu aÅ­ plenumu komandojn el la historilisto\n" "\n" @@ -3585,8 +3679,10 @@ msgstr "" msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" @@ -3608,7 +3704,8 @@ msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is displayed.\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3666,7 +3763,8 @@ msgid "" " PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is given." +" Returns success unless PATTERN is not found or an invalid option is " +"given." msgstr "" "Vidigu informon pri prmitivaj komandoj\n" "\n" @@ -3720,7 +3818,8 @@ msgid "" " \n" " If the HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed otherwise.\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." @@ -3901,7 +4000,8 @@ msgid "" " Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" " fixed-width integers with no check for overflow, though division by 0\n" " is trapped and flagged as an error. The following list of operators is\n" -" grouped into levels of equal-precedence operators. The levels are listed\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" " in order of decreasing precedence.\n" " \n" " \tid++, id--\tvariable post-increment, post-decrement\n" @@ -3984,17 +4084,23 @@ msgstr "" # read [-ers] [-a TABELO] [-d DISIG] [-i TEKSTO] [-n NSIGN] [-N NSIGN] # [-p INVIT] [-t TLIM] [-u DN] [NOMO ...] #: builtins.c:994 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with word\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -4006,7 +4112,8 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" " \t\tNCHARS characters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" " \t\tEOF is encountered or read times out, ignoring any\n" " \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" @@ -4024,8 +4131,10 @@ msgid "" " -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times out\n" -" (in which case it's greater than 128), a variable assignment error occurs,\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" "Legu linion el la ĉefenigujo kaj disigu ĝin en kampojn\n" @@ -4072,7 +4181,7 @@ msgstr "" # return [n] # return [N] -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -4094,7 +4203,7 @@ msgstr "" # set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] # set [-abefhkmnptuvxBCHP] [-o OPCINOMO] [--] [ARG ...] -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4137,7 +4246,8 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero status\n" +" or zero if no command exited with a non-zero " +"status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -4161,7 +4271,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -4263,7 +4374,7 @@ msgstr "" # unset [-f] [-v] [name ...] # unset [-f] [-v] [NOMO ...] -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4275,7 +4386,8 @@ msgid "" " -n\ttreat each NAME as a name reference and unset the variable itself\n" " \t\trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that fails,\n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" " tries to unset a function.\n" " \n" " Some variables cannot be unset; also see `readonly'.\n" @@ -4303,12 +4415,13 @@ msgstr "" # export [-fn] [name[=value] ...] or export -p # export [-fn] [NOMO[=VALORO] ...] aÅ­ export -p -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -4338,7 +4451,7 @@ msgstr "" # readonly [-aAf] [name[=value] ...] or readonly -p # readonly [-aAf] [NOMO[=VALORO] ...] aÅ­ readonly -p -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4377,7 +4490,7 @@ msgstr "" " Sukceso, krom se aperas nevalida nomo aÅ­ misa opcio." # shift [n] -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4394,7 +4507,7 @@ msgstr "" # source filename [arguments] # source DOSIERNOMO [ARGUMENTOJ] -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4419,7 +4532,7 @@ msgstr "" " DOSIERNOMO ne legeblas." # suspend [-f] -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4445,7 +4558,7 @@ msgstr "" # test [expr] # test [ESPRIMO] -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4479,7 +4592,8 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last read.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -4500,7 +4614,8 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 lexicographically.\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -4600,7 +4715,7 @@ msgstr "" " argumento." # [ arg... ] -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4610,11 +4725,12 @@ msgstr "" "Ĉi tiu estas sinonimo de la primitivo „test‟; tamen la lasta\n" " argumento devas esti „]‟ fermanta la esprimon komencitan per „[‟." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of its\n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4630,11 +4746,12 @@ msgstr "" # trap [-lp] [[arg] signal_spec ...] # trap [-lp] [[ARG] SIGNALINDIKO ...] -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives signals\n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -4643,26 +4760,34 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" -" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands associated\n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is given." +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." msgstr "" "Kaptu signalojn kaj aliajn eventojn\n" "\n" @@ -4700,7 +4825,7 @@ msgstr "" # type [-afptP] name [name ...] # type [-afptP] NOMO [NOMO ...] -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4726,7 +4851,8 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not found." +" Returns success if all of the NAMEs are found; fails if any are not " +"found." msgstr "" "Vidigu informon pri tipo de komando\n" "\n" @@ -4757,11 +4883,12 @@ msgstr "" # ulimit [-SHacdefilmnpqrstuvx] [limit] # ulimit [-SHacdefilmnpqrstuvx] [LIMO] -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and processes\n" +" Provides control over the resources available to the shell and " +"processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -4854,7 +4981,7 @@ msgstr "" # umask [-p] [-S] [mode] # umask [-p] [-S] [REĜIMO] -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4889,23 +5016,27 @@ msgstr "" # wait [-fn] [id ...] # wait [-fn] [IND ...] -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for each process identified by an ID, which may be a process ID or a\n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" " status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" -" If the -n option is supplied, waits for a single job from the list of IDs,\n" -" or, if no IDs are supplied, for the next job to complete and returns its\n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" " exit status.\n" " \n" " If the -p option is supplied, the process or job identifier of the job\n" " for which the exit status is returned is assigned to the variable VAR\n" -" named by the option argument. The variable will be unset initially, before\n" +" named by the option argument. The variable will be unset initially, " +"before\n" " any assignment. This is useful only when the -n option is supplied.\n" " \n" " If the -f option is supplied, and job control is enabled, waits for the\n" @@ -4943,16 +5074,18 @@ msgstr "" # wait [pid ...] # wait [PN ...] -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for each process specified by a PID and reports its termination status.\n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" " If PID is not given, waits for all currently active child processes,\n" " and the return status is zero. PID must be a process ID.\n" " \n" " Exit Status:\n" -" Returns the status of the last PID; fails if PID is invalid or an invalid\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" " option is given." msgstr "" "Atendu ke procezoj finiĝu, kaj liveru elirstaton\n" @@ -4967,7 +5100,7 @@ msgstr "" # for NAME [in WORDS ... ] ; do COMMANDS; done # for NOMO [in VORTOJ ... ] ; do KOMANDOJ; done -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4991,7 +5124,7 @@ msgstr "" # for (( exp1; exp2; exp3 )); do COMMANDS; done # for (( ESPR1; ESPR2; ESPR3 )); do KOMANDOJ; done -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -5023,7 +5156,7 @@ msgstr "" # select NAME [in WORDS ... ;] do COMMANDS; done # select NONO [in VORTOJ ... ;] do KOMANDOJ; done -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5060,7 +5193,7 @@ msgstr "" # time [-p] PIPELINE # time [-p] DUKTO -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5091,7 +5224,7 @@ msgstr "" # case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac # case VORTO in [ŜABLONO [| ŜABLONO]...) KOMANDOJ ;;]... esac -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5113,16 +5246,21 @@ msgstr "" # [ else COMMANDS; ] fi # if KOMANDOJ; then KOMANDOJ;[ elif KOMANDOJ; then KOMANDOJ; ]... # [ else KOMANDOJ; ] fi -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of the\n" -" entire construct is the exit status of the last command executed, or zero\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" @@ -5140,12 +5278,14 @@ msgstr "" # while COMMANDS; do COMMANDS; done # while KOMANDOJ; do KOMANDOJ; done -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5160,12 +5300,14 @@ msgstr "" # until COMMANDS; do COMMANDS; done # until KOMANDOJ; do KOMANDOJ; done -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5180,7 +5322,7 @@ msgstr "" # coproc [NAME] command [redirections] # coproc [NOMO] KOMANDO [ALIDIREKTADOJ] -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5204,12 +5346,13 @@ msgstr "" # function name { COMMANDS ; } or name () { COMMANDS ; } # function NOMO { KOMANDOJ ; } aÅ­ NOMO () { KOMANDOJ ; } -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" @@ -5228,7 +5371,7 @@ msgstr "" # grouping_braces: { COMMANDS ; } # { KOMANDOJ ; } -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5248,7 +5391,7 @@ msgstr "" # job_spec [&] # LABORINDIKO [&] -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5273,7 +5416,7 @@ msgstr "" # (( expression )) # (( ESPRIMO )) -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5293,13 +5436,16 @@ msgstr "" # [[ expression ]] # [[ ESPRIMO ]] -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries used\n" -" by the `test' builtin, and may be combined using the following operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -5341,7 +5487,7 @@ msgstr "" # help var # variables - Names and meanings of some shell variables -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5448,7 +5594,7 @@ msgstr "" # pushd [-n] [+N | -N | dir] # pushd [-n] [+N | -N | DOSIERUJO] -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5507,7 +5653,7 @@ msgstr "" " Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas." # popd [-n] [+N | -N] -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5556,7 +5702,7 @@ msgstr "" " Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas." # dirs [-clpv] [+N] [-N] -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5610,7 +5756,7 @@ msgstr "" # shopt [-pqsu] [-o] [optname ...] # shopt [-pqsu] [-o] [OPCINOMO ...] -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5649,7 +5795,8 @@ msgstr "" # printf [-v var] format [arguments] # printf [-v VAR] FORMATO [ARGUMENTOJ] -#: builtins.c:1937 +#: builtins.c:1938 +#, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5657,27 +5804,36 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: plain\n" -" characters, which are simply copied to standard output; character escape\n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next successive\n" +" format specifications, each of which causes printing of the next " +"successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in printf(1),\n" +" In addition to the standard format specifications described in " +"printf(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" " \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" -" specifications behave as if a zero value or null string, as appropriate,\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" " had been supplied.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or assignment\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" " error occurs." msgstr "" "Aranĝu kaj eligu ARGUMENTOJn laÅ­ FORMATO.\n" @@ -5709,12 +5865,14 @@ msgstr "" # complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPCIO] [-A AGO] [-G ŜABLONO] # [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO] # [-P PREFIKSO] [-S SUFIKSO] [NOMO ...] -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no options\n" -" are supplied, existing completion specifications are printed in a way that\n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -5729,8 +5887,10 @@ msgid "" " \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. If multiple options are supplied,\n" -" the -D option takes precedence over -E, and both take precedence over -I.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5766,12 +5926,13 @@ msgstr "" # compgen [-abcdefgjksuv] [-o OPCIO] [-A AGO] [-G ŜABLONO] # [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO] # [-P PREFIKSO] [-S SUFIKSO] [VORTO] -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches against\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -5786,13 +5947,16 @@ msgstr "" " Sukceso, krom se aperas misa opcio aÅ­ okazas eraro." # compopt [-o|+o OPCIO] [-DE] [NOMO ...] -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" -" the completion currently being executed. If no OPTIONs are given, print\n" -" the completion options for each NAME or the current completion specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -5844,21 +6008,26 @@ msgstr "" # [-c quantum] [array] # mapfile [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN] [-C RETROVOKO] # [-c KVANTO] [TABELO] -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" " -d delim\tUse DELIM to terminate lines, instead of newline\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" " -s count\tDiscard the first COUNT lines read\n" " -t\tRemove a trailing DELIM from each line read (default newline)\n" -" -u fd\tRead lines from file descriptor FD instead of the standard input\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" " -c quantum\tSpecify the number of lines read between each call to\n" " \t\t\tCALLBACK\n" @@ -5871,11 +6040,13 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly or\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" " not an indexed array." msgstr "" "Legu liniojn el la ĉefenigujo en tabelvariablon\n" @@ -5914,7 +6085,7 @@ msgstr "" # readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] # [-c quantum] [array] -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5923,3 +6094,7 @@ msgstr "" "Legu liniojn el dosiero en tabelvariablon.\n" "\n" " Sinonimo de „mapfile‟." + +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: Misa asocitabela ŝlosilo" diff --git a/po/es.gmo b/po/es.gmo index 06e833a9e..68edd53cc 100644 Binary files a/po/es.gmo and b/po/es.gmo differ diff --git a/po/es.po b/po/es.po index 526963c84..66ac8e661 100644 --- a/po/es.po +++ b/po/es.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the bash package. # Cristian Othón Martínez Vera , 2000 - 2011. # Francisco Javier Serrador -# Antonio Ceballos Roa , 2018, 2019, 2020 +# Antonio Ceballos Roa , 2018, 2019, 2020, 2022 # msgid "" msgstr "" -"Project-Id-Version: GNU bash 5.1\n" +"Project-Id-Version: GNU bash 5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2020-12-08 20:10+0100\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-09-21 08:56+0200\n" "Last-Translator: Antonio Ceballos Roa \n" "Language-Team: Spanish \n" "Language: es\n" @@ -24,57 +24,52 @@ msgstr "" msgid "bad array subscript" msgstr "subíndice de matriz incorrecto" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: se elimina el atributo nameref" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: no se puede convertir la matriz indexada en asociativa" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: clave de matriz asociativa no válida" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: no se puede asignar a un índice que no es numérico" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: se debe usar un subíndice al asignar a una matriz asociativa" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: no se puede crear: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: no se puede encontrar la combinación de teclas para la orden" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: el primer carácter que no es espacio en blanco no es «\"»" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "no hay un `%c' que cierre en %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: falta un «:» separador" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "`%s': no se puede borrar la asignación en la combinación de teclas de órdenes" @@ -94,7 +89,7 @@ msgstr "expansión de llaves: fallo al asignar memoria a %u elementos" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "expansión de llaves: fallo al asignar memoria a «%s»" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nombre de alias inválido" @@ -165,7 +160,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME no está definido" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "demasiados argumentos" @@ -192,7 +187,7 @@ msgstr "aviso: " msgid "%s: usage: " msgstr "%s: modo de empleo: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: la opción requiere un argumento" @@ -207,7 +202,7 @@ msgstr "%s: se requiere un argumento numérico" msgid "%s: not found" msgstr "%s: no encontrado" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: opción inválida" @@ -217,7 +212,7 @@ msgstr "%s: opción inválida" msgid "%s: invalid option name" msgstr "%s: nombre de opción inválido" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': no es un identificador válido" @@ -230,7 +225,7 @@ msgstr "número octal inválido" msgid "invalid hex number" msgstr "número hexadecimal inválido" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "número inválido" @@ -244,88 +239,93 @@ msgstr "%s: la especificación de señal no es válida" msgid "`%s': not a pid or valid job spec" msgstr "`%s': no es un pid o una especificación válida de trabajo" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: variable de sólo lectura" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s: no se puede asignar" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fuera de rango" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argumento" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s fuera de rango" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: no existe ese trabajo" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: no hay control de trabajos" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "no hay control de trabajos" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: restringido" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "restringido" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: no es una orden interna de shell" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "error de escritura: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "error al establecer los atributos de la terminal: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "error al obtener los atributos de la terminal: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error al obtener el directorio actual: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: especificación de trabajo ambigua" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "ayuda no disponible en esta versión" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: no se puede borrar: %s es de solo lectura" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: no se puede borrar" @@ -335,110 +335,110 @@ msgstr "%s: no se puede borrar" msgid "%s: invalid action name" msgstr "%s: nombre de acción inválido" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: no hay especificación para completado" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "aviso: es posible que la opción -F no funcione como se espera" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "aviso: es posible que la opción -C no funcione como se espera" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "no se está ejecutando la función de completado" # sólo se puede usar. sv # De acuerdo. cfuga -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "sólo se puede usar dentro de una función" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "no se puede usar `-f' para hacer funciones" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: función de sólo lectura" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: referencia variable no puede ser una matriz" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: no se permiten las autoreferencias a variables nameref" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: referencia de nombre circular" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "`%s': nombre variable inválido para referencia de nombre" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "no se puede usar `-f' para hacer funciones" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: función de sólo lectura" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: asignación obsoleta de matriz compuesta entrecomillada" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: no se pueden destruir variables de matriz de esta forma" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: no se puede convertir una matriz asociativa a indexada" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: asignación obsoleta de matriz compuesta entrecomillada" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "la carga dinámica no está disponible" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "no se puede abrir el objeto compartido %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "no se puede encontrar %s en el objeto compartido %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: la orden interna dinámica ya está cargada" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "función de carga para %s devuelve fallo (%d): no se ha efectuado la carga" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: no cargado dinámicamente" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: no se puede borrar: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: es un directorio" @@ -455,7 +455,7 @@ msgstr "%s: el fichero es demasiado grande" # file=fichero. archive=archivo. Si no, es imposible traducir tar. sv # De acuerdo. Corregido en todo el fichero. cfuga -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: no se puede ejecutar el fichero binario" @@ -550,12 +550,12 @@ msgstr "" msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "no hay temas de ayuda que coincidan con `%s'. Pruebe `help help' o `man -k %s' o `info %s'." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: no se puede abrir: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -576,21 +576,21 @@ msgstr "" "Un asterisco (*) junto a un nombre significa que la orden está desactivada.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "no se puede usar más de uno de -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "posición en la historia" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: marca de tiempo inválida" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: falló la expansión de la historia" @@ -613,78 +613,78 @@ msgstr "%s: los argumentos deben ser IDs de procesos o trabajos" msgid "Unknown error" msgstr "Error desconocido" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "se esperaba una expresión" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: no es una matriz indexada" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificación de descriptor de fichero inválida" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descriptor de fichero inválido: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: cuenta de líneas inválida" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: origen de matriz inválido" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum de llamada inválido" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "nombre de variable matriz vacío" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "se requiere el soporte de variable de matriz" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "`%s': falta el carácter de formato" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': especificación de formato de tiempo inválida" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "`%c': carácter de formato inválido" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "problema con el análisis del formato: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "falta el dígito hexadecimal para \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "falta el dígito unicode para \\%c" @@ -836,12 +836,12 @@ msgstr "" " \n" " La orden interna `dirs' muestra la pila de directorios." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: especificación del tiempo de expiración inválida" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "error de lectura: %d: %s" @@ -854,7 +854,7 @@ msgstr "sólo se puede usar `return' desde una función o un script leído con ` msgid "cannot simultaneously unset a function and a variable" msgstr "no se puede borrar al mismo tiempo una función y una variable" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: no es una variable de matriz" @@ -873,11 +873,11 @@ msgstr "%s: no se puede exportar" msgid "shift count" msgstr "contador de desplazamiento" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "no se pueden activar y desactivar opciones del shell simultáneamente" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nombre de opción de shell inválido" @@ -944,16 +944,16 @@ msgstr "%s: límite de argumento inválido" msgid "`%c': bad command" msgstr "`%c': orden incorrecta" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: no se puede obtener el límite: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "límite" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: no se puede modificar el límite: %s" @@ -972,7 +972,7 @@ msgstr "`%c': operador de modo simbólico inválido" msgid "`%c': invalid symbolic mode character" msgstr "`%c': carácter de modo simbólico inválido" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " línea " @@ -992,98 +992,110 @@ msgstr "Abortando..." msgid "INFORM: " msgstr "INFORME: " -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "DEBUG aviso: " + +#: error.c:488 msgid "unknown command error" msgstr "error de orden desconocida" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "tipo de orden incorrecto" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "conector erróneo" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "salto erróneo" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: variable sin asignar" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aha expirado mientras esperaba alguna entrada: auto-logout\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "no se puede redirigir la entrada estándar desde /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': carácter de formato inválido" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] aún existe" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "error de tubería" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: nivel máximo de anidamiento de evaluaciones excedido (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: nivel máximo de anidamiento de lecturas con `source' excedido (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: nivel máximo de anidamiento de funciones excedido (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restringido: no se puede especificar `/' en nombres de órdenes" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: orden no encontrada" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +# file=fichero. archive=archivo. Si no, es imposible traducir tar. sv +# De acuerdo. Corregido en todo el fichero. cfuga +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: no se puede ejecutar: no se ha encontrado el fichero requerido" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: intérprete erróneo" # file=fichero. archive=archivo. Si no, es imposible traducir tar. sv # De acuerdo. Corregido en todo el fichero. cfuga -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: no se puede ejecutar fichero binario: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "`%s': es una orden interna especial" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "no se puede duplicar el df %d al df %d" @@ -1096,73 +1108,73 @@ msgstr "se ha excedido el nivel de recursión de la expresión" msgid "recursion stack underflow" msgstr "desbordamiento de la pila de recursión" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "error sintáctico en la expresión" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "se intentó asignar a algo que no es una variable" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "error sintáctico en asignación de variable" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "división por 0" # token en bison fue traducido como terminal. ¿Lo traducimos igual aquí # o lo dejamos como 'unidad' o 'elemento'? cfuga -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "defecto: elemento de asignación de expresión erróneo" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "se esperaba `:' para la expresión condicional" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "exponente menor que 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "se esperaba un identificador después del pre-incremento o pre-decremento" # falta , singular em+ # mmmh, puede faltar más de un paréntesis cfuga # tiene razón Enrique, es singular. cfuga -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "falta un `)'" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "error sintáctico: se esperaba un operando" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "error sintáctico: operador aritmético inválido" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (el elemento de error es \"%s\")" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "base aritmética inválida" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "constante entera inválida" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "valor demasiado grande para la base" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: error de expresión\n" @@ -1171,7 +1183,7 @@ msgstr "%s: error de expresión\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: no se puede acceder a los directorios padre" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "no se puede reestablecer el modo nodelay para el df %d" @@ -1193,168 +1205,168 @@ msgstr "save_bash_input: el almacenamiento intermedio ya existe para el nuevo df msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: tubería de pgrp" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: BUCLE: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: BUCLE: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "el pid `forked' %d aparece en el trabajo en ejecución %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "borrando el trabajo detenido %d con grupo de proceso %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) se marca como vivo aún" # Cambiaría 'hay' por 'existe' em+ -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no existe tal pid" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Señal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Hecho" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Detenido" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Detenido(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Ejecutando" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Hecho(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Salida %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Estado desconocido" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(`core' generado) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (da: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid hijo (%ld a %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld no es un proceso hijo de este shell" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No hay un registro del proceso %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: el trabajo %d está detenido" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: no hay trabajos actuales" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: el trabajo ha terminado" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: el trabajo %d ya está en segundo plano" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: se activa WNOHANG para evitar el bloque indefinido" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: línea %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (`core' generado)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(dir ahora: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: falló getpgrp" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: no hay control de trabajos en segundo plano" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplina de línea" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "no se puede establecer el grupo de proceso de terminal (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "no hay control de trabajos en este shell" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: falló la aserción: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1363,47 +1375,47 @@ msgstr "" "\r\n" "malloc: %s:%d: aserción arruinada\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "desconocido" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: bloque en la lista libre sobreescrito" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: se llamó con un argumento de bloque previamente liberado" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: se llamó con un argumento de bloque sin asignar" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free: se detectó un desbordamiento por debajo; magic8 corrupto" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: los tamaños de los fragmentos del inicio y del final son diferentes" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: se llamó con un argumento de bloque sin asignar" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: se detectó un desbordamiento por debajo; magic8 corrupto" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: los tamaños de los pedazos de inicio y fin son diferentes" @@ -1445,22 +1457,22 @@ msgstr "%s: especificación de ruta de red errónea" msgid "network operations not supported" msgstr "no hay soporte para operaciones de red" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: no se puede cambiar el local (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: no se puede cambiar el local (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: no se puede cambiar el local (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: no se puede cambiar el local (%s): %s" @@ -1478,108 +1490,108 @@ msgstr "Tiene correo nuevo en $_" msgid "The mail in %s has been read\n" msgstr "El correo en %s fue leído\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "error sintáctico: se requiere una expresión aritmética" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "error sintáctico: `;' inesperado" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "error sintáctico: `((%s))'" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo de instrucción %d erróneo" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "el documento-aquí en la línea %d está delimitado por fin-de-fichero (se esperaba `%s')" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: la instrucción de redirección `%d' está fuera de rango" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" msgstr "shell_getc: shell_input_line_size (%zu) excede TAMAÑO_MAX (%lu): línea truncada" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "número máximo de documentos en «here--document» excedido" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF inesperado mientras se buscaba un `%c' coincidente" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "EOF inesperado mientras se buscaba `]]'" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "error sintáctico en la expresión condicional: elemento inesperado `%s'" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "error sintáctico en la expresión condicional" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "elemento inesperado `%s', se esperaba `)'" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "se esperaba `)'" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento inesperado `%s' para el operador unario condicional" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para el operador unario condicional" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "elemento inesperado `%s', se esperaba un operador binario condicional" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "se esperaba un operador binario condicional" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento inesperado `%s' para el operador binario condicional" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para el operador binario condicional" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "elemento inesperado `%c' en la orden condicional" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "elemento inesperado `%s' en la orden condicional" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "elemento inesperado %d en la orden condicional" @@ -1590,12 +1602,12 @@ msgstr "elemento inesperado %d en la orden condicional" # provocado por el símbolo. Simplemente estar cerca del mismo. cfuga # Por consistencia con el siguiente, yo borraría la coma. sv # Cierto. Coma borrada. cfuga -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "error sintáctico cerca del elemento inesperado `%s'" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "error sintáctico cerca de `%s'" @@ -1604,20 +1616,20 @@ msgstr "error sintáctico cerca de `%s'" # no se esperaba el final de la línea em+ # Ojo, que end of file es fin de fichero, no de línea. sv # Se hicieron ambos cambios. cfuga -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "error sintáctico: no se esperaba el final del fichero" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "error sintáctico" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Utilice \"%s\" para dejar el shell.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF inesperado mientras se buscaba un `)' coincidente" @@ -1655,80 +1667,80 @@ msgstr "xtrace_set: puntero NULL a fichero" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != numfich xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': carácter de formato inválido" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "descriptor de fichero fuera de rango" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redireccionamiento ambiguo" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: no se puede sobreescribir un fichero existente" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restringido: no se puede redirigir la salida" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "no se puede crear un fichero temporal para el documento-aquí: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: no se puede asignar el fd a la variable" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "no se admite /dev/(tcp|udp)/anfitrion/puerto sin red" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "error de redirección: no se puede duplicar el df" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "¡no se puede encontrar /tmp, crear por favor!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp debe ser un nombre de directorio válido" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "modo de impresión bonita desactivado en shells interactivos" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opción inválida" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "no se puede establecer el uid %d: uid efectivo %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "no se puede establecer gid a %d: gid efectivo %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "no puede ejecutar el depurador; modo depurado desactivado" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: es un directorio" @@ -1736,11 +1748,11 @@ msgstr "%s: es un directorio" # Yo pondría "no tengo ningún nombre". sv # Revisé el código fuente de bash. Es un mensaje de error cuando no se # encuentra el nombre del usuario que ejecuta el shell. cfuga -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "¡No tengo nombre de usuario!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versión %s-(%s)\n" @@ -1750,7 +1762,7 @@ msgstr "GNU bash, versión %s-(%s)\n" # traducido en otras ocasiones. Sehll script lo henmos traducido # como guión del shell , eso es seguro ... así que puede estar # bien así , ya lo verán otros em+ -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1759,98 +1771,98 @@ msgstr "" "Modo de empleo:\t%s [opción GNU larga] [opción] ...\n" "\t%s [opción GNU larga] [opción] fichero de shell ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Opciones GNU largas:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Opciones del shell:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD o -c orden o -O opción_shopt\t\t(sólo invocación)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s o -o opción\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Teclee `%s -c \"help set\"' para más información sobre las opciones del shell.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Teclee `%s -c help' para más información sobre las órdenes internas del shell.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Utilice la orden `bashbug' para reportar defectos.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "página inicial bash: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "Ayuda general utilizando software GNU: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operación inválida" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Señal ambigua" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Colgar" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Interrumpir" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Salir" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Instrucción ilegal" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "BPT rastreo/captura" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "instrucción ABORT" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "instrucción EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Excepción de coma flotante" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Matado" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Error del bus" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Violación de segmento" @@ -1858,86 +1870,86 @@ msgstr "Violación de segmento" # Es una llamada a una función del sistema em+ # De acuerdo, pero lo que está mal es la forma de invocar la # llamada a la función del sistema, no la llamada en sí cfuga -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Llamada al sistema errónea" # (pipe) no, por favor. Esto ya está traducido en libc, así que a estas # alturas, la gente ya debería saber qué es eso de la tubería. sv # De acuerdo. cfuga -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Tubería rota" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Temporizador" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Terminado" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Condición de E/S urgente" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Detenido (señal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Continúa" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "El proceso hijo ha muerto o está parado" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Detenido (entrada por terminal)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Detenido (salida por terminal)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "E/S listas" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Límite de CPU" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Límite de ficheros" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarma (virtual)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarma (entorno)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Ventana cambiada" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Bloqueo de registro" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Señal de usuario 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Señal de usuario 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "entrada de datos HFT pendiente" @@ -1945,142 +1957,142 @@ msgstr "entrada de datos HFT pendiente" # Suscribo lo anterior. falla suena muy raro. # Yo lo pondría además al revés: fallo de energía inminente. sv # Me gusta como lo sugieres. Cambio hecho. cfuga -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "fallo de energía inminente" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "caída del sistema inminente" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "migrando el proceso a otra CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "error de programación" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "el modo monitor HFT ha sido concedido" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "el modo monitor HTF ha sido retirado" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "la secuencia de sonido HFT ha sido completada" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Solicitud de información" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Señal Desconocida #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "sustitución errónea: no hay un `%s' que cierre en %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: no se puede asignar una lista a un miembro de la matriz" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "no se puede crear la tubería para la sustitución del proceso" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "no se puede crear un proceso hijo para la sustitución del proceso" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "no se puede abrir la tubería llamada %s para lectura" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "no se puede abrir la tubería llamada %s para escritura" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "no se puede duplicar la tubería llamada %s como df %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "sustitución de orden: se ignora byte nulo en la entrada" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "no se puede crear la tubería para la sustitución de la orden" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "no se puede crear un proceso hijo para la sustitución de la orden" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: no se puede duplicar la tubería como df 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: nombre de variable inválido para referencia de nombre" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: expansión indirecta inválida" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: nombre de variable inválido" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: parámetro no establecido" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parámetro nulo o no establecido" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expresión de subcadena < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: sustitución errónea" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: no se puede asignar de esta forma" -#: subst.c:9814 +#: subst.c:10111 msgid "future versions of the shell will force evaluation as an arithmetic substitution" msgstr "versiones futuras del intérprete obligarán la evaluación como una sustitución aritmética" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sustitución errónea: no hay una \"`\" que cierre en %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "no hay coincidencia: %s" @@ -2103,12 +2115,12 @@ msgstr "`)' esperado" msgid "`)' expected, found %s" msgstr "se esperaba `)', se encontró %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: se esperaba un operador binario" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: se esperaba un operador unario" @@ -2120,11 +2132,11 @@ msgstr "%s: se esperaba un operador unario" # Abreviando "falta [al menos] un `]'" saldría: "falta un `]'". # ¿No es mejor "falta algún `]'"? cfuga # Tiene razón Enrique: singular. cfuga -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "falta un `]'" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "error sintáctico: `%s' inesperado" @@ -2133,99 +2145,104 @@ msgstr "error sintáctico: `%s' inesperado" msgid "invalid signal number" msgstr "número de señal inválido" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "manejador de capturas: se ha excedido el nivel máximo de manejadores de capturas (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: valor erróneo en trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: el manejador de señal es SIG_DFL, reenviando %d (%s) a mí mismo" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: señal errónea %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "error al importar la definición de la función para `%s'" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "el nivel de shell (%d) es demasiado alto, se reestablece a 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no hay contexto de función en el ámbito actual" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variable quizá no es valor asignado" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s: no se puede heredar un valor de un tipo incompatible" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: asignando entero a nombre referencia" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: no hay contexto de función en el ámbito actual" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s tiene exportstr nulo" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carácter inválido %d en exportstr para %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "no hay `=' en exportstr para %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: la cabeza de shell_variables no es un contexto de función" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no es un contexto global_variables" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: la cabeza de shell_variables no es un ámbito de entorno temporal" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: no se puede abrir como FICHERO" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: valor de compatibilidad fuera del rango" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Copyright (C) 2022 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "License GPLv3+: GNU GPL version 3 or later \n" @@ -2305,12 +2322,12 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] orden [arg ...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgiIlnrtux] [-p] [nombre[=valor] ...]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgiIlnrtux] [nombre[=valor] ...] o declare -p [-aAfFilnrtux] [nombre ...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgiIlnrtux] [-p] nombre[=valor] ..." +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgiIlnrtux] nombre[=valor] ... o typeset -p [-aAfFilnrtux] [nombre ...]" #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2402,8 +2419,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [-abefhkmnptuvxBCHP] [-o nombre-opción] [--] [arg ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o nombre-opción] [--] [-] [arg ...]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" @@ -2450,8 +2467,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nombre [nombre ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [límite]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" @@ -2490,12 +2507,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C msgstr "if ÓRDENES; then ÓRDENES; [ elif ÓRDENES; then ÓRDENES; ]...[ else ÓRDENES; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while ÓRDENES; do ÓRDENES; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while ÓRDENES; do ÓRDENES-2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until ÓRDENES; do ÓRDENES; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until ÓRDENES; do ÓRDENES-2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -3849,7 +3866,8 @@ msgid "" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" @@ -3893,6 +3911,8 @@ msgstr "" " NOMBRE, la segunda palabra al segundo NOMBRE, y así sucesivamente, con\n" " las palabras restantes asignadas al último NOMBRE. Sólo los caracteres\n" " que se encuentran en $IFS se reconocen como delimitadores de palabras.\n" +" Lo predefinido es que el carácter de barra inclinada inversa escape los\n" +" delimitadores de caracteres y las nuevas líneas.\n" " \n" " Si no se proporciona ningún NOMBRE, la línea leída se guarda en la\n" " variable REPLY.\n" @@ -3929,7 +3949,7 @@ msgstr "" " línea, el tiempo de lectura se agote, o se proporcione un descriptor\n" " de fichero inválido como el argumento de -u." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3949,7 +3969,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve N, o falla si el shell no está ejecutando una función o un script." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4115,7 +4135,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve correcto a menos que se proporcione una opción inválida." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4154,7 +4174,7 @@ msgstr "" " Devuelve correcto a menos que se proporcione una opción inválida o\n" " un NOMBRE sea de sólo lectura." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4188,7 +4208,7 @@ msgstr "" " Devuelve correcto a menos que se proporcione una opción inválida o que\n" " NOMBRE sea inválido." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4227,7 +4247,7 @@ msgstr "" " Devuelve correcto a menos que se proporcione una opción inválida o\n" " el NOMBRE sea inválido." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4245,7 +4265,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve correcto a menos que N sea negativo o mayor que $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4269,7 +4289,7 @@ msgstr "" " Devuelve el estado de la última orden ejecutada del FICHERO; falla si\n" " no se puede leer el FICHERO." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4294,7 +4314,7 @@ msgstr "" " Devuelve correcto a menos que no esté activo el control de trabajos o\n" " suceda un error." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4454,7 +4474,7 @@ msgstr "" " Devuelve correcto si EXPR evalúa a verdadero; falla si EXPR evalúa a\n" " falso o se proporciona un argumento inválido." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4466,7 +4486,7 @@ msgstr "" " Este es un sinónimo para la orden interna \"test\", pero el último\n" " argumento debe ser un `]' literal, que concuerde con el `[' inicial." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4484,7 +4504,7 @@ msgstr "" " Estado de Salida:\n" " Siempre correcto." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4555,7 +4575,7 @@ msgstr "" # No he visto que este fichero incluya la posibilidad de traducir las # palabras que muestra `type -t'. Por esta razón, se dejan en inglés. cfuga -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4610,7 +4630,7 @@ msgstr "" " Devuelve correcto si se encuentran todos los NOMBREs; falla si alguno\n" " no se encuentra." -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4707,7 +4727,7 @@ msgstr "" " Devuelve correcto a menos que se proporcione una opción inválida o suceda\n" " un error." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4740,7 +4760,7 @@ msgstr "" " Devuelve correcto a menos que el MODO sea inválido o se proporcione\n" " una opción inválida." -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4794,7 +4814,7 @@ msgstr "" " opción inválida o si proporciona -n y la shell no tiene ningún hijo al que\n" " esperar." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4817,7 +4837,7 @@ msgstr "" " Devuelve el estado del último PID; falla si PID es inválido o se proporciona\n" " una opción inválida." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4839,7 +4859,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4869,7 +4889,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4906,7 +4926,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4933,7 +4953,7 @@ msgstr "" " Estado de Salida:\n" " El estado de devolución es el estado de devolución de la TUBERÍA." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4951,7 +4971,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4980,43 +5000,43 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Ejecuta órdenes mientras una prueba sea correcta.\n" " \n" -" Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n" -" `while' tenga un estado de salida de cero.\n" +" Expande y ejecuta ÓRDENES-2 mientras la orden final en ÓRDENES\n" +" tenga un estado de salida de cero.\n" " \n" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Ejecuta órdenes mientras una prueba sea correcta.\n" " \n" -" Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n" -" `until' tengan un estado de salida que no sea cero.\n" +" Expande y ejecuta ÓRDENES-2 mientras la orden final en ÓRDENES\n" +" tenga un estado de salida que no sea cero.\n" " \n" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5039,7 +5059,7 @@ msgstr "" " Estado de Salida:\n" " La orden «coproc» devuelve un estado de salida de 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -5061,7 +5081,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve correcto a menos que NOMBRE sea de sólo lectura." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5079,7 +5099,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5104,7 +5124,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado del trabajo reiniciado." -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5122,7 +5142,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve 1 si la EXPRESIÓN evalúa a 0; devuelve 0 en caso contrario." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5170,7 +5190,7 @@ msgstr "" " Estado de Salida:\n" " 0 o 1 dependiendo del valor de la EXPRESIÓN." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5285,7 +5305,7 @@ msgstr "" " \t\tutilizados para decidir qué órdenes se deben guardar en\n" " \t\tel listado histórico.\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5344,7 +5364,7 @@ msgstr "" " Devuelve correcto a menos que se proporcione un argumento\n" " inválido o falle el cambio de directorio." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5398,7 +5418,7 @@ msgstr "" " Devuelve correcto a menos que se proporcione un\n" " argumento inválido o falle el cambio de directorio." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5453,7 +5473,7 @@ msgstr "" " Devuelve correcto, a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5491,7 +5511,7 @@ msgstr "" " Devuelve correcto si se activa NOMBRE_OPCIÓN; falla si se proporciona\n" " una opción inválida o NOMBRE_OPCIÓN está desactivado." -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5510,6 +5530,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" @@ -5539,9 +5561,11 @@ msgstr "" " printf(1) y printf(3), printf interpreta:\n" " \n" " %b\texpande las secuencias de escape de barra invertida en\n" -" el argumento correspondiente\n" -" %q\tcita el argumento de tal forma que se pueda reutilizar como\n" -" entrada del shell.\n" +" \t\tel argumento correspondiente\n" +" %q\tentrecomilla el argumento de tal forma que se pueda reutilizar\n" +" \t\tcomo entrada del shell.\n" +" %Q\tigual que %q, pero aplica la precisión al argumento sin\n" +" \t\tentrecomillar antes de entrecomillarlo\n" " %(fmt)T muestra la cadena fecha hora resultante de usar FMT como\n" " una cadena de formato para strftime(3)\n" " \n" @@ -5554,7 +5578,7 @@ msgstr "" " Devuelve correcto a menos que se proporcione una opción inválida o\n" " suceda un error de escritura o de asignación." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5608,7 +5632,7 @@ msgstr "" " Devuelve correcto a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5629,7 +5653,7 @@ msgstr "" " Devuelve correcto a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5684,7 +5708,7 @@ msgstr "" " Devuelve correcto a menos que se proporcione una opción inválida o\n" " NOMBRE no tenga una especificación de completado definida." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5751,7 +5775,7 @@ msgstr "" " Devuelve correcto a menos que se proporcione una opción inválida o\n" " la MATRIZ sea de sólo lectura o no sea una matriz indexada." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5761,6 +5785,9 @@ msgstr "" " \n" " Sinónimo de `mapfile'." +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: clave de matriz asociativa no válida" + #~ msgid "" #~ "Returns the context of the current subroutine call.\n" #~ " \n" diff --git a/po/et.gmo b/po/et.gmo index c01812548..ac47880e2 100644 Binary files a/po/et.gmo and b/po/et.gmo differ diff --git a/po/et.po b/po/et.po index 58f0e27e4..80c092e67 100644 --- a/po/et.po +++ b/po/et.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 3.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2006-11-11 16:38+0200\n" "Last-Translator: Toomas Soome \n" "Language-Team: Estonian \n" @@ -20,57 +20,52 @@ msgstr "" msgid "bad array subscript" msgstr "vigane massiivi indeks" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:700 -#, fuzzy, c-format -msgid "%s: invalid associative array key" -msgstr "%s: vigane tegevuse nimi" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: mitte-numbrilisele indeksile ei saa omistada" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ei saa luua: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: esimine mitte-tühemik sümbol pole `\"'" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "sulgev `%c' puudub %s sees" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: puudub eraldav koolon" -#: bashline.c:4555 +#: bashline.c:4733 #, fuzzy, c-format msgid "`%s': cannot unbind in command keymap" msgstr "`%s': ei saa lahti siduda" @@ -90,7 +85,7 @@ msgstr "" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "%s: vigane tegevuse nimi" @@ -153,7 +148,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME pole seatud" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "liiga palju argumente" @@ -181,7 +176,7 @@ msgstr "%s: hoiatus: " msgid "%s: usage: " msgstr "%s: hoiatus: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: võti nõuab argumenti" @@ -196,7 +191,7 @@ msgstr "%s: n msgid "%s: not found" msgstr "%s: ei leitud" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: vigane võti" @@ -206,7 +201,7 @@ msgstr "%s: vigane v msgid "%s: invalid option name" msgstr "%s: vigane võtme nimi" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': ei ole lubatud identifikaator" @@ -221,7 +216,7 @@ msgstr "vigane signaali number" msgid "invalid hex number" msgstr "vigane number" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "vigane number" @@ -235,88 +230,93 @@ msgstr "%s: vigane signaali spetsifikatsioon" msgid "`%s': not a pid or valid job spec" msgstr "`%s': ei ole pid ega korrektne töö spetsifikatsioon" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: mittemuudetav muutuja" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: ei saa eemaldada" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s on piiridest väljas" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s on piiridest väljas" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: sellist tööd pole" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: töökontroll puudub" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "töökontroll puudub" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: piiratud" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "piiratud" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ei ole sisekäsk" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "kirjutamise viga: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: segane töö" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ei saa eemaldada: %s on ainult lugemiseks" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: ei saa eemaldada" @@ -326,108 +326,108 @@ msgstr "%s: ei saa eemaldada" msgid "%s: invalid action name" msgstr "%s: vigane tegevuse nimi" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "hoiatus: võti -F ei pruugi töötada nagu te ootate" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "hoiatus: võti -C ei pruugi töötada nagu te ootate" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "saab kasutada ainult funktsioonis" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "võtit `-f' ei saa funktsiooni loomiseks kasutada" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funktsioon ei ole muudetav" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "võtit `-f' ei saa funktsiooni loomiseks kasutada" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: funktsioon ei ole muudetav" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: masiivi muutujaid ei saa nii kustutada" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "dünaamilist laadimist et saa kasutada" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "jagatud objekti %s ei saa avada: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "%s puudub jagatud objektis %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, fuzzy, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: pole dünaamiliselt laetud" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: pole dünaamiliselt laetud" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: ei saa kustutada: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: on kataloog" @@ -442,7 +442,7 @@ msgstr "%s: ei ole tavaline fail" msgid "%s: file is too large" msgstr "%s: fail on liiga suur" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kahendfaili ei õnnestu käivitada" @@ -536,12 +536,12 @@ msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ei saa avada: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -553,21 +553,21 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "" -#: builtins/history.def:340 +#: builtins/history.def:338 #, fuzzy, c-format msgid "%s: invalid timestamp" msgstr "%s: vigane võtme nimi" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "" @@ -590,79 +590,79 @@ msgstr "" msgid "Unknown error" msgstr "Tundmatu viga" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "oodati avaldist" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, fuzzy, c-format msgid "%s: not an indexed array" msgstr "%s: pole massiiv" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%s: vigane võti" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%s: vigane võti" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "%s: vigane tegevuse nimi" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 #, fuzzy msgid "empty array variable name" msgstr "%s: pole massiiv" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: vigane signaali spetsifikatsioon" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, fuzzy, c-format msgid "warning: %s: %s" msgstr "%s: hoiatus: " -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -758,12 +758,12 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "viga lugemisel: %d: %s" @@ -776,7 +776,7 @@ msgstr "" msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: pole massiiv" @@ -795,11 +795,11 @@ msgstr "%s: ei saa eemaldada" msgid "shift count" msgstr "shift arv" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "" @@ -866,16 +866,16 @@ msgstr "" msgid "`%c': bad command" msgstr "`%c': halb käsklus" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ei õnnestu lugeda piirangut: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ei õnnestu muuta piirangut: %s" @@ -894,7 +894,7 @@ msgstr "" msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr "" @@ -914,97 +914,107 @@ msgstr "Katkestan..." msgid "INFORM: " msgstr "" -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "%s: hoiatus: " + +#: error.c:488 msgid "unknown command error" msgstr "tundmatu viga käsus" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: sidumata muutuja" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 #, fuzzy msgid "pipe error" msgstr "kirjutamise viga: %s" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: piiratud: käskudes ei saa kasutada sümboleid `/'" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: käsku ei ole" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: kahendfaili ei õnnestu käivitada" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: halb interpretaator" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kahendfaili ei õnnestu käivitada" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s on shelli sisekäsk\n" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" @@ -1017,70 +1027,70 @@ msgstr "avaldise rekursioon on liiga s msgid "recursion stack underflow" msgstr "" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "süntaksi viga avaldises" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "üritati omistada mitte-muutujale" -#: expr.c:530 +#: expr.c:531 #, fuzzy msgid "syntax error in variable assignment" msgstr "süntaksi viga avaldises" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "nulliga jagamine" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "eksponent on väiksem kui 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "puudub `)'" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "süntaksi viga: oodati operandi" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "süntaksi viga: vigane aritmeetiline operaator" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "vigane aritmeetiline baas" -#: expr.c:1582 +#: expr.c:1587 #, fuzzy msgid "invalid integer constant" msgstr "%s: vigane võti" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "väärtus on baasiks liiga suur" -#: expr.c:1647 +#: expr.c:1652 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "%s: oodati täisarvude avaldist" @@ -1089,7 +1099,7 @@ msgstr "%s: oodati t msgid "getcwd: cannot access parent directories" msgstr "getcwd: vanemkataloogidele ei ole juurdepääsu" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" @@ -1108,215 +1118,215 @@ msgstr "" msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: pid puudub" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: töö %d on peatatud" -#: jobs.c:3564 +#: jobs.c:3551 #, fuzzy, c-format msgid "%s: no current jobs" msgstr "%s: sellist tööd pole" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: töö on lõpetatud" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: töö %d on juba taustal" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:4320 +#: jobs.c:4307 #, fuzzy, c-format msgid "%s: line %d: " msgstr "%s: hoiatus: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 #, fuzzy msgid "unknown" msgstr "%s: tundmatu masin" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "" @@ -1358,22 +1368,22 @@ msgstr "" msgid "network operations not supported" msgstr "" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" @@ -1391,138 +1401,138 @@ msgstr "Teil on uus kiri kaustas $_" msgid "The mail in %s has been read\n" msgstr "Kiri kaustas %s on loetud\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "süntaksi viga: nõutakse aritmeetilist avaldist" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "süntaksi viga: ootamatu `;'" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "süntaksi viga: `((%s))'" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "süntaksi viga tingimuslikus avaldises" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "ootamatu märk `%s', oodati `)'" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "oodati `)'" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "süntaksi viga kohal `%s'" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "süntaksi viga: ootamatu faililõpp" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "süntaksi viga" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Käsuinterpretaatorist väljumiseks kasutage \"%s\".\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "" @@ -1560,94 +1570,94 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "faili deskriptor on piiridest väljas" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: segane ümbersuunamine" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: fail on olemas, ei kirjuta üle" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: piiratud: väljundit ei saa ümber suunata" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:222 +#: redir.c:223 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "$%s: sedasi ei saa omistada" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "viga ümbersuunamisel: fd duplikaadi loomine ei õnnestu" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "/tmp puudub, palun looge see!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp peab olema kataloogi nimi" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: vigane võti" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1632 +#: shell.c:1658 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: on kataloog" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Mul ei ole nime!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1656,321 +1666,321 @@ msgstr "" "Kasuta:\t%s [GNU pikk võti] [võti] ...\n" "\t%s [GNU pikk võti] [võti] skript-fail ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "GNU pikad võtmed:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Käsuinterpretaatori võtmed:\n" -#: shell.c:2043 +#: shell.c:2069 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD või -c käsklus või -O lühivõti\t\t(ainult käivitamine)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s või -o võti\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Vigadest teatamiseks kasutage käsku `bashbug'.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: vigane operatsioon" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "" -#: siglist.c:90 +#: siglist.c:91 #, fuzzy msgid "Bus error" msgstr "süntaksi viga" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: vigane võti" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "%s: vigane tegevuse nimi" -#: subst.c:7256 +#: subst.c:7478 #, fuzzy, c-format msgid "%s: parameter not set" msgstr "%s: parameeter on null või pole seatud" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameeter on null või pole seatud" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: halb asendus" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: sedasi ei saa omistada" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:10367 +#: subst.c:10795 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sulgev `%c' puudub %s sees" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "ei leitud: %s" @@ -1993,21 +2003,21 @@ msgstr "oodati `)'" msgid "`)' expected, found %s" msgstr "oodati `)', saadi %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: eeldati binaarset operaatorit" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: eeldati unaarset operaatorit" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "puudub `]'" -#: test.c:899 +#: test.c:914 #, fuzzy, c-format msgid "syntax error: `%s' unexpected" msgstr "süntaksi viga: ootamatu `;'" @@ -2016,101 +2026,106 @@ msgstr "s msgid "invalid signal number" msgstr "vigane signaali number" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: halb väärtus muutujas trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: signaali käsitleja on SIG_DFL, saadan %d (%s) iseendale" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: vigane signaal %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shelli tase (%d) on liiga kõrge, kasutan väärtust 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: praegune skoop pole funktsiooni kontekst" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: praegune skoop pole funktsiooni kontekst" -#: variables.c:4771 +#: variables.c:4757 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parameeter on null või pole seatud" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: pole global_variables kontekst" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:6387 +#: variables.c:6400 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: ei saa avada: %s" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:6437 +#: variables.c:6450 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s on piiridest väljas" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" #: version.c:47 version2.c:47 @@ -2195,11 +2210,15 @@ msgid "command [-pVv] command [arg ...]" msgstr "" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "" #: builtins.c:82 @@ -2293,7 +2312,7 @@ msgid "return [n]" msgstr "" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "" #: builtins.c:144 @@ -2343,7 +2362,7 @@ msgid "type [-afptP] name [name ...]" msgstr "" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "" #: builtins.c:174 @@ -2385,11 +2404,11 @@ msgid "" msgstr "" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "" #: builtins.c:200 @@ -3195,7 +3214,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -3236,7 +3257,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3248,7 +3269,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3334,7 +3355,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3356,7 +3377,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3375,7 +3396,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3396,7 +3417,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -3407,7 +3428,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3421,7 +3442,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -3435,7 +3456,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3518,7 +3539,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3526,7 +3547,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -3538,7 +3559,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -3582,7 +3603,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -3612,7 +3633,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -3662,7 +3683,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -3680,7 +3701,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3712,7 +3733,7 @@ msgid "" " children." msgstr "" -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3727,7 +3748,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3740,7 +3761,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -3757,7 +3778,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3777,7 +3798,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3793,7 +3814,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3804,7 +3825,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3825,29 +3846,31 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3860,7 +3883,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -3874,7 +3897,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -3885,7 +3908,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -3899,7 +3922,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3910,7 +3933,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -3938,7 +3961,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3992,7 +4015,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -4023,7 +4046,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -4050,7 +4073,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -4079,7 +4102,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -4099,7 +4122,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4122,6 +4145,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -4138,7 +4163,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4169,7 +4194,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4182,7 +4207,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -4214,7 +4239,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4256,13 +4281,17 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +#, fuzzy, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: vigane tegevuse nimi" + #, fuzzy #~ msgid "" #~ "Returns the context of the current subroutine call.\n" diff --git a/po/fi.gmo b/po/fi.gmo index 31ddbe452..7f4b31dda 100644 Binary files a/po/fi.gmo and b/po/fi.gmo differ diff --git a/po/fi.po b/po/fi.po index 6d13f2d30..166fe272d 100644 --- a/po/fi.po +++ b/po/fi.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2009-05-09 15:13+0300\n" "Last-Translator: Pekka Niemi \n" "Language-Team: Finnish \n" @@ -25,59 +25,54 @@ msgstr "" msgid "bad array subscript" msgstr "virheellinen taulukkoindeksi" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: indeksoitua taulukkoa ei voi muuttaa assosiatiiviseksi" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: virheellinen assosiatiivinen indeksi" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ei voida sijoittaa epänumeeriseen indeksiin" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: assosiatiiviseen taulukkoon sijoitettaessa täytyy käyttää " "avainindeksiä" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ei voida luoda: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: komennolle ei löydy näppäinkarttaa" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: ensimmäinen ei-tyhjä merkki ei ole ”\"”" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "ei loppumerkkiä ”%c” rivissä %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: puuttuva kaksoispiste-erotin" -#: bashline.c:4555 +#: bashline.c:4733 #, fuzzy, c-format msgid "`%s': cannot unbind in command keymap" msgstr "”%s”: ei voida irrottaa" @@ -97,7 +92,7 @@ msgstr "" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "”%s”: virheellinen näppäinkartan nimi" @@ -174,7 +169,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME-ympäristömuuttujaa ei ole asetettu" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "liian monta argumenttia" @@ -202,7 +197,7 @@ msgstr "varoitus: " msgid "%s: usage: " msgstr "%s: käyttö: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: valitsin vaatii argumentin" @@ -217,7 +212,7 @@ msgstr "%s: vaaditaan numeerinen argumentti" msgid "%s: not found" msgstr "%s: ei löytynyt" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: virheellinen valitsin" @@ -227,7 +222,7 @@ msgstr "%s: virheellinen valitsin" msgid "%s: invalid option name" msgstr "%s: virheellinen valitsimen nimi" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "”%s”: virheellinen tunniste" @@ -240,7 +235,7 @@ msgstr "virheellinen oktaaliluku" msgid "invalid hex number" msgstr "virheellinen heksadesimaaliluku" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "virheellinen luku" @@ -254,88 +249,93 @@ msgstr "%s: virheellinen signaalimääritys" msgid "`%s': not a pid or valid job spec" msgstr "”%s”: ei ole prosessitunnus eikä kelvollinen työtunniste" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: kirjoitussuojattu muuttuja" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: ei voida poistaa" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s rajojen ulkopuolella" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argumentti" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s rajojen ulkopuolella" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: työtä ei löydy" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: ei työnohjausta" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "ei työnohjausta" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: rajoitettu" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "rajoitettu" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ei ole komentotulkin sisäänrakennettu komento" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "kirjoitusvirhe: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "pääteasetuksia asetettaessa tapahtui virhe: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "pääteasetuksia luettaessa tapahtui virhe: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: nykyhakemistoa luettaessa tapahtui virhe: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: ei ole yksiselitteinen työtunniste" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ei voida poistaa: kirjoitussuojattu %s" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: ei voida poistaa" @@ -345,108 +345,108 @@ msgstr "%s: ei voida poistaa" msgid "%s: invalid action name" msgstr "%s: virheellinen toiminnon nimi" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: ei lavennusmääritystä" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "varoitus: -F -valitsin ei ehkä toimi odotetusti" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "varoitus: -C -valitsin ei ehkä toimi odotetusti" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "tällä hetkellä komennon lavennusfunktiota ei suoriteta" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "voidaan käyttää ainoastaan funktiossa" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "”-f”:ää ei voida käyttää funktioiden luomiseen" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: kirjoitussuojattu funktio" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "”-f”:ää ei voida käyttää funktioiden luomiseen" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: kirjoitussuojattu funktio" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: taulukkomuuttujia ei voi tuhota näin" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: assosiatiivista taulukkoa ei voi muuttaa indeksoiduksi" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "dynaaminen lataus ei ole käytettävissä" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "jaettua objektia %s ei voida avata: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "kohdetta %s ei löydy jaetusta objektista %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, fuzzy, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: ei dynaamisesti ladattu" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: ei dynaamisesti ladattu" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: ei voida poistaa: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: on hakemisto" @@ -461,7 +461,7 @@ msgstr "%s: ei tavallinen tiedosto" msgid "%s: file is too large" msgstr "%s: tiedosto on liian iso" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: binääritiedostoa ei voida suorittaa" @@ -557,12 +557,12 @@ msgstr "" "Ohjeita kohteelle ”%s” ei löydy. Kokeile ”help help”, ”man -k %s” tai \n" "”info %s”." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ei voida avata: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -583,21 +583,21 @@ msgstr "" "Asteriski (*) nimen vieressä tarkoittaa, että komennon käyttö on estetty.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "valitsimista -anrw voidaan käyttää vain yhtä" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "sijainti komentohistoriassa" -#: builtins/history.def:340 +#: builtins/history.def:338 #, fuzzy, c-format msgid "%s: invalid timestamp" msgstr "%s: virheellinen valitsimen nimi" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: historiaviittaus epäonnistui" @@ -620,78 +620,78 @@ msgstr "%s: argumenttien pitää olla prosessi- tai työtunnisteita" msgid "Unknown error" msgstr "Tuntematon virhe" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "odotettiin lauseketta" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, fuzzy, c-format msgid "%s: not an indexed array" msgstr "%s: ei ole taulukkomuuttuja" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: virheellinen tiedostokahvamääritys" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: virheellinen tiedostokahva: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: virheellinen rivimäärä" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: virheellinen taulukkoindeksi" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: virheellinen paluukutsumäärä" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "tyhjä taulukkomuuttujan nimi" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "vaaditaan tukea taulukkomuuttujille" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "”%s”: puuttuva muotoilumerkki" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: virheellinen aikakatkaisumääritys" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "”%c”: virheellinen muotoilumerkki" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "varoitus: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "\\x:stä puuttuu heksadesimaalinumero" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "\\x:stä puuttuu heksadesimaalinumero" @@ -839,12 +839,12 @@ msgstr "" " \n" " Sisäänrakennettu ”dirs”-komento näyttää hakemistopinon sisällön." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: virheellinen aikakatkaisumääritys" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "lukuvirhe: %d: %s" @@ -857,7 +857,7 @@ msgstr "”return” on käytettävissä vain funktiossa tai ladatussa skriptiss msgid "cannot simultaneously unset a function and a variable" msgstr "funktiota ja muuttujaa ei voi poistaa yhtä aikaa" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: ei ole taulukkomuuttuja" @@ -876,13 +876,13 @@ msgstr "%s: ei voida poistaa" msgid "shift count" msgstr "siirtolaskuri" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "" "komentotulkin valitsimia ei voida laittaa päällä ja ottaa pois päältä " "samanaikaisesti" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: virheellinen komentotulkin valitsimen nimi" @@ -949,16 +949,16 @@ msgstr "%s: virheellinen rajoitusargumentti" msgid "`%c': bad command" msgstr "”%c”: virheellinen komento" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: rajoitusta ei saada: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "rajoitus" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: rajoitusta ei voida muokata: %s" @@ -977,7 +977,7 @@ msgstr "”%c”: virheellinen symbolisen tilan operaattori" msgid "`%c': invalid symbolic mode character" msgstr "”%c”: virheellinen symbolisen tilan merkki" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " rivi " @@ -997,96 +997,106 @@ msgstr "Keskeytetään..." msgid "INFORM: " msgstr "" -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "varoitus: " + +#: error.c:488 msgid "unknown command error" msgstr "tuntematon komentovirhe" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "virheellinen komentotyyppi" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "virheellinen liittäjä" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "virheellinen hyppy" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: sitomaton muuttuja" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aaikakatkaisu: automaattinen uloskirjautuminen\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "syötettä ei voida lukea tiedostosta /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "AJAN MUOTOMÄÄRITYS: ”%c”: virheellinen muotoilumerkki" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "putkitusvirhe" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: rajoitettu: komentojen nimissä ei voi käyttää ”/”-merkkiä" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: komentoa ei löydy" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: binääritiedostoa ei voida suorittaa" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: virheellinen tulkki" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: binääritiedostoa ei voida suorittaa" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s on komentotulkin sisäänrakennettu komento\n" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "tiedostokahvaa %d ei voida kopioida kahvaksi %d" @@ -1099,70 +1109,70 @@ msgstr "lausekkeen rekursiomäärä ylittyi" msgid "recursion stack underflow" msgstr "rekursiopinon alivuoto" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "lauseoppivirhe lausekkeessa" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "yritettiin sijoittaa objektiin, joka ei ole muuttuja" -#: expr.c:530 +#: expr.c:531 #, fuzzy msgid "syntax error in variable assignment" msgstr "lauseoppivirhe lausekkeessa" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "jako nollalla" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "bugi: virheellinen sijoitusavainsana" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "”:”:ttä odotettiin ehdolliseen lausekkeeseen" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "eksponentti on pienempi kuin 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "odotettiin muuttujaa ++:n tai --:n jälkeen" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "puuttuva ”)”" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "lauseoppivirhe: odotettiin operandia" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "lauseoppivirhe: virheellinen aritmetiikkaoperaattori" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (virheellinen avainsana on ”%s”)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "virheellinen lukujärjestelmä" -#: expr.c:1582 +#: expr.c:1587 #, fuzzy msgid "invalid integer constant" msgstr "%s: virheellinen rivimäärä" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "liian iso luku lukujärjestelmälle" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: virhe lausekkeessa\n" @@ -1171,7 +1181,7 @@ msgstr "%s: virhe lausekkeessa\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: ylempiin hakemistoihin ei päästä" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" @@ -1190,168 +1200,168 @@ msgstr "save_bash_input: uudella tiedostokahvalla %d on jo puskuri" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp-putki" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "haarautettu prosessi-id %d on ajossa olevalla työllä %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "poistetaan pysäytetty työ %d prosessiryhmästä %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: prosessi %5ld (%s) on merkattu vielä toimivaksi" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: prosessitunnusta ei löydy." -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Signaali %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Valmis" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Pysäytetty" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Pysäytetty(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Ajossa" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Valmis(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Poistui %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Tuntematon tila" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(luotiin core-tiedosto)" -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (työhakemisto: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "lapsiprosessin setpgid (%ld => %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: prosessi %ld ei ole tämän komentotulkin lapsiprosessi" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Prosessista %ld ei ole tietoja" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: työ %d on pysäytetty" -#: jobs.c:3564 +#: jobs.c:3551 #, fuzzy, c-format msgid "%s: no current jobs" msgstr "%s: työtä ei löydy" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: työ on lopetettu" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: työ %d on jo taustalla" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: rivi %d:" -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (luotiin core-tiedosto)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(työhakemisto nyt: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp epäonnistui" -#: jobs.c:4447 +#: jobs.c:4434 #, fuzzy msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: vuonhallinta" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: vuonhallinta" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "päätteen prosessiryhmää ei voitu asettaa (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "tällä komentotulkilla ei ole työnohjausta" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: varmistus epäonnistui: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1360,49 +1370,49 @@ msgstr "" "\r\n" "malloc: %s:%d: varmistus epäonnistui\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "tuntematon" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: vapaitten listan lohko ylikirjoittui" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: kutsuttiin argumenttina jo vapautettu lohko" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: kutsuttuun argumenttina varaamaton lohko" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 #, fuzzy msgid "free: underflow detected; magic8 corrupted" msgstr "free: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: alku- ja loppulohkojen koot eroavat" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: kutsuargumentti on varaamaton lohko" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 #, fuzzy msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: alku- ja loppulohkojen koot eroavat" @@ -1444,22 +1454,22 @@ msgstr "%s: virheellinen verkkopolkumääritys" msgid "network operations not supported" msgstr "verkko-operaatioita ei ole tuettu" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:292 +#: locale.c:294 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "xrealloc: %s:%d: ei voida varata %lu tavua" -#: locale.c:294 +#: locale.c:296 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: %s:%d: ei voida varata %lu tavua" @@ -1477,140 +1487,140 @@ msgstr "Sinulla on uutta postia laatikossa $_" msgid "The mail in %s has been read\n" msgstr "Posti laatikossa %s on luettu\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "lauseoppivirhe: vaaditaan aritmeettinen lauseke" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "lauseoppivirhe: odottamaton ”;”" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "lauseoppivirhe: ”((%s))”" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: virheellinen käskytyyppi %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-dokumentti rivillä %d päättyi tiedoston loppumiseen (haluttiin ”%s”)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: uudelleenohjaus ”%d” rajojen ulkopuolella" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "odottamaton EOF (tiedostonloppu) odotettaessa sulkevaa ”%c”" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "odottamaton EOF odotettaessa ”]]”" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "lauseoppivirhe ehdollisessa lausekkeessa: odottamaton avainsana ”%s”" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "lauseoppivirhe ehdollisessa lausekkeessa" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "odottamaton avainsana ”%s”, odotettiin ”)”" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "odototettiin ”)”" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "odottamaton argumentti ”%s” ehdolliselle unaariselle operaattorille" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "odottamaton argumentti ehdolliselle unaariselle operaattorille" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" "odottamaton avainsana ”%s”, odotettiin ehdollista binääristä operaattoria" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "odotettiin ehdollista binääristä operaattoria" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "odottamaton argumentti ”%s” ehdolliselle binääriselle operaattorille" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "odottamaton argumentti ehdolliselle binääriselle operaattorille" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "odottamaton avainsana ”%c” ehdollisessa komennossa" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "odottamaton avainsana ”%s” ehdollisessa komennossa" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "odottamaton avainsana %d ehdollisessa komennossa" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "lauseoppivirhe lähellä odottamatonta avainsanaa ”%s”" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "lauseoppivirhe lähellä ”%s”" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "lauseoppivirhe: odottamaton tiedostonloppu" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "lauseoppivirhe" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Kirjoita ”%s” poistuaksesi komentotulkista.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "Odottamaton EOF odotettaessa vastaavaa ”)”" @@ -1648,94 +1658,94 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ”%c”: virheellinen muotoilumerkki" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "tiedostokahva rajojen ulkopuolella" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: epämääräinen uudelleenohjaus" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: olemassa olevan tiedoston päälle ei voida kirjoittaa" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: rajoitettu: tulostusta ei voida uudelleenohjata" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "here-dokumentille ei voida luoda väliaikaistiedostoa: %s" -#: redir.c:222 +#: redir.c:223 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port-muotoa ei tueta ilman tietoliikennettä" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "virhe uudelleenohjauksessa: tiedostokahvaa ei voida kopioida" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "/tmp-hakemistoa ei löytynyt, luo se!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp:n pitää olla kelvollinen hakemiston nimi" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: virheellinen valitsin" -#: shell.c:1319 +#: shell.c:1343 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" -#: shell.c:1330 +#: shell.c:1354 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1632 +#: shell.c:1658 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: on hakemisto" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Minulla ei ole nimeä!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versio %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1744,326 +1754,326 @@ msgstr "" "Käyttö:\t%s[GNU:n pitkä valitsin] [valitsin] ...\n" "\t%s [GNU:n pitkä valitsin] [valitsin] komentotiedosto ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "GNU:n pitkät valitsimet:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Komentotulkin valitsimet:\n" -#: shell.c:2043 +#: shell.c:2069 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t-irsD tai -c komento tai -O shopt_option (ainoastaan käynnistettäessä)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s tai -o -valitsin\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Kirjoita ”%s -c 'help set'” saadaksesi lisätietoja komentotulkin " "valitsimista.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Kirjoita ”%s -c help” saadaksesi lisätietoja komentotulkin " "sisäänrakennetuista komennoista.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Raportoi virheet komennolla ”bashbug”.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: virheellinen operaatio" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Väärä signaali" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Linjankatkaisu" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Keskeytys" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Lopetettu" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Virheellinen käsky" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "Jäljitys/katkaisupisteansa" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "ABORT-käsky" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "EMT-käsky" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Liukulukupoikkeus" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Tapettu" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Väylävirhe" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Muistialueen ylitys" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Virheellinen järjestelmäkutsu" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Katkennut putki" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Herätyskello" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Päätetty" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Kiireellinen I/O-ehto" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Pysäytetty (signaali)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Jatka" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Lapsiprosessin kuolema tai pysähtyminen" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Pysäytetty (päätteen syöte)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Pysäytetty (päätteen tuloste)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O on valmis" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "CPU-rajoitus" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Tiedostorajoitus" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Hälytys (virtuaalinen)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Hälytys (profiili)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Ikkuna vaihtunut" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Tietuelukko" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Käyttäjän määrittelemä signaali 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Käyttäjän määrittelemä signaali 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "HFT-syöte odottaa" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "sähkökatko lähellä" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "järjestelmän kaatuminen lähellä" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "siirrä prosessi toiselle CPU:lle" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "ohjelmointivirhe" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "HFT-monitorointitila käytössä" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "HFT-monitorointitila peruttu" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "HFT-äänisekvenssi on valmistunut" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Informaatiopyyntö" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Tuntematon signaali #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "virheellinen korvaus: ei sulkevaa ”%s” jonossa %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "putkea ei voida luoda prosessin korvaamista varten" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "lapsiprosessia ei voida luoda prosessin korvaamista varten" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nimettyä putkea %s ei voida avata lukemista varten" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nimettyä putkea %s ei voida avata kirjoitusta varten" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nimettyä putkea %s ei voida kopioida tiedostokahvaksi %d" -#: subst.c:6213 +#: subst.c:6370 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "virheellinen korvaus: ei sulkevaa ”`” jonossa %s" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "putkea ei voida luoda komennon korvaamista varten" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "ei voida luoda lapsiprosessia komennon korvaamista varten" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: putkea ei voida kopioida tiedostokahvaksi 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: virheellinen rivimäärä" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "%s: virheellinen toiminnon nimi" -#: subst.c:7256 +#: subst.c:7478 #, fuzzy, c-format msgid "%s: parameter not set" msgstr "%s: parametria ei ole tai sitä ei ole asetettu" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametria ei ole tai sitä ei ole asetettu" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: alimerkkijonolauseke < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: virheellinen korvaus" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ei voida asettaa näin" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "virheellinen korvaus: ei sulkevaa ”`” jonossa %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "ei osumia: %s" @@ -2086,21 +2096,21 @@ msgstr "odotettiin ”)”" msgid "`)' expected, found %s" msgstr "odotettiin ”)”, löydettiin %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: odotettiin binääristä operaattoria" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: odotettiin unaarista operaattoria" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "puuttuva ”]”" -#: test.c:899 +#: test.c:914 #, fuzzy, c-format msgid "syntax error: `%s' unexpected" msgstr "lauseoppivirhe: odottamaton ”;”" @@ -2109,17 +2119,17 @@ msgstr "lauseoppivirhe: odottamaton ”;”" msgid "invalid signal number" msgstr "virheellinen signaalinumero" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: virheellinen arvo trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2127,86 +2137,91 @@ msgstr "" "run_pending_traps: signaalikäsittelijä on SIG_DFL, lähetän %d (%s) uudelleen " "itselleni" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: virheellinen signaali %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "virhe tuotaessa ”%s”:n funktiomääritystä" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "komentotulkkitaso (%d) liian korkea, palautetaan 1:ksi" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ei funktiokontekstia nykytilassa" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ei funktiokontekstia nykytilassa" -#: variables.c:4771 +#: variables.c:4757 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parametria ei ole tai sitä ei ole asetettu" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "virheellinen merkki %d %s:n exportstr:ssä" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "ei =:ä kohteen %s exportstr:ssä" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variablesin alku ei ole funktiokonteksti" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ei global_variables-kontekstia" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: shell_variablesin alku ei väliaikaisten ympäristömuuttujien " "ympäristössä" -#: variables.c:6387 +#: variables.c:6400 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: ei voida avata: %s" -#: variables.c:6392 +#: variables.c:6405 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: virheellinen tiedostokahva: %s" -#: variables.c:6437 +#: variables.c:6450 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s rajojen ulkopuolella" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Copyright © 2009 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2301,12 +2316,16 @@ msgstr "command [-pVv] komento [arg ...]" #: builtins.c:78 #, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFilrtux] [-p] [niemi[=arvo] ...]" #: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFilrtux] [-p] nimi[=arvo] ..." #: builtins.c:82 @@ -2413,7 +2432,7 @@ msgstr "return [n]" #: builtins.c:142 #, fuzzy -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o valitsinnimi] [arg ...]" #: builtins.c:144 @@ -2464,7 +2483,7 @@ msgstr "type [-afptP] nimi [nimi ...]" #: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [raja]" #: builtins.c:174 @@ -2510,11 +2529,13 @@ msgstr "" "KOMENNOT; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while KOMENNOT; do KOMENNOT; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until KOMENNOT; do KOMENNOT; done" #: builtins.c:200 @@ -3920,7 +3941,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -3999,7 +4022,7 @@ msgstr "" " Paluuarvo on nolla, ellei törmätä tiedoston loppumiseen, aikarajan\n" " ylitykseen tai mikäli -u:lle annetaan virheellinen tiedostokahva." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -4023,7 +4046,7 @@ msgstr "" "suorittamassa\n" " funktiota tai skriptiä." -#: builtins.c:1054 +#: builtins.c:1055 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4194,7 +4217,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistumisen ellei ole annettu virheellistä valitsinta." -#: builtins.c:1139 +#: builtins.c:1140 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4233,7 +4256,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai NIMI on kirjoitussuojattu." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4267,7 +4290,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai NIMI on virheellinen." -#: builtins.c:1180 +#: builtins.c:1181 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4306,7 +4329,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai NIMI on virheellinen." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4325,7 +4348,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistuneen ellei N ole negatiivinen tai suurempi kuin $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4350,7 +4373,7 @@ msgstr "" "epäonnistuu\n" " mikäli TIEDOSTOA ei voida lukea." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4377,7 +4400,7 @@ msgstr "" "tapahtuu\n" " virhe." -#: builtins.c:1261 +#: builtins.c:1262 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4540,7 +4563,7 @@ msgstr "" " Palauttaa onnistumisen jos LAUSEKE evaluoituu todeksi; epäonnistuu jos\n" " LAUSEKE evaluoituu vääräksi tai on annettu virheellinen argumentti." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4552,7 +4575,7 @@ msgstr "" " Tämä on sisäänrakennetun ”test”-komennon synonyymi, mutta viimeisen\n" " argumentin pitää olla ”]”, joka sulkee avaavan ”[”:n." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4572,7 +4595,7 @@ msgstr "" " Paluuarvo:\n" " Onnistuu aina." -#: builtins.c:1364 +#: builtins.c:1365 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4654,7 +4677,7 @@ msgstr "" "annettu\n" " virheellinen valitsin." -#: builtins.c:1400 +#: builtins.c:1401 #, fuzzy msgid "" "Display information about command type.\n" @@ -4711,7 +4734,7 @@ msgstr "" " Palauttaa onnistuneen mikäli kaikki NIMET löytyivät, muussa tapauksessa\n" " epäonnistuu." -#: builtins.c:1431 +#: builtins.c:1432 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4803,7 +4826,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai tapahtuu virhe." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4838,7 +4861,7 @@ msgstr "" " Palauttaa onnistuneen ellei TILA ole virheellinen tai on annettu \n" " virheellinen valitsin." -#: builtins.c:1502 +#: builtins.c:1503 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4884,7 +4907,7 @@ msgstr "" " Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n" " virheellinen valitsin." -#: builtins.c:1533 +#: builtins.c:1534 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4910,7 +4933,7 @@ msgstr "" " Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n" " virheellinen valitsin." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4932,7 +4955,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4964,7 +4987,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5001,7 +5024,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5030,7 +5053,7 @@ msgstr "" " Paluuarvo:\n" " KOMENTOKETJUN paluuarvo." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5049,7 +5072,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5083,12 +5106,14 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5101,12 +5126,14 @@ msgstr "" " Paluuarvo:\n" " Viimeisen komennon paluuarvo." -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5119,7 +5146,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1671 +#: builtins.c:1672 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5142,7 +5169,7 @@ msgstr "" " Paluuarvo:\n" " KOMENNON paluuarvo." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -5165,7 +5192,7 @@ msgstr "" " Paluuarvo:\n" " Onnistuu, ellei NIMI ole kirjoitussuojattu." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5184,7 +5211,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5210,7 +5237,7 @@ msgstr "" " Paluuarvo:\n" " Työn tila." -#: builtins.c:1726 +#: builtins.c:1727 #, fuzzy msgid "" "Evaluate arithmetic expression.\n" @@ -5229,7 +5256,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa 1, jos LAUSEKKEEN arvo on 0; muuten palauttaa 0." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5283,7 +5310,7 @@ msgstr "" " Paluuarvo:\n" " 0 tai 1 riippuen LAUSEKKEEN arvosta." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5386,7 +5413,7 @@ msgstr "" " HISTIGNORE\tKaksoispistein eroteltu lista mallineista, joita käytetään\n" " \t\tpäätettäessä komentojen tallentamisesta historialistaan.\n" -#: builtins.c:1821 +#: builtins.c:1822 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5445,7 +5472,7 @@ msgstr "" "tai\n" " hakemiston vaihtaminen epäonnistuu." -#: builtins.c:1855 +#: builtins.c:1856 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5493,7 +5520,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen argumentti tai\n" " hakemiston vaihto epäonnistuu." -#: builtins.c:1885 +#: builtins.c:1886 #, fuzzy msgid "" "Display directory stack.\n" @@ -5548,7 +5575,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai tapahtuu virhe." -#: builtins.c:1916 +#: builtins.c:1917 #, fuzzy msgid "" "Set and unset shell options.\n" @@ -5586,7 +5613,7 @@ msgstr "" " Palauttaa onnistuneen, mikäli VALITSIN on käytössä, epäonnistuu jos on\n" " annettu virheellinen VALITSIN tai VALITSIN ei ole käytössä." -#: builtins.c:1937 +#: builtins.c:1938 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5610,6 +5637,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -5646,7 +5675,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" " tapahtuu kirjoitus- tai sijoitusvirhe." -#: builtins.c:1971 +#: builtins.c:1974 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5698,7 +5727,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n" " tapahtuu virhe." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5721,7 +5750,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" " tapahtuu virhe." -#: builtins.c:2016 +#: builtins.c:2019 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5776,7 +5805,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" " NIMELLE ei ole määritetty täydennysmääritystä." -#: builtins.c:2047 +#: builtins.c:2050 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5850,7 +5879,7 @@ msgstr "" " tai TAULUKKO on kirjoitussuojattu." # Changed " characters into ”... -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5860,6 +5889,10 @@ msgstr "" " \n" " ”mapfile”:n synonyymi." +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: virheellinen assosiatiivinen indeksi" + #~ msgid "" #~ "Returns the context of the current subroutine call.\n" #~ " \n" diff --git a/po/fr.gmo b/po/fr.gmo index c093d8c06..39d8520c9 100644 Binary files a/po/fr.gmo and b/po/fr.gmo differ diff --git a/po/fr.po b/po/fr.po index e2f758904..2d503ed4c 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1,15 +1,15 @@ # Messages français pour GNU concernant bash. -# Copyright (C) 2020 Free Software Foundation, Inc. +# Copyright (C) 2022 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Michel Robitaille , 2004 # Christophe Combelles , 2008, 2009, 2010, 2011 -# Frédéric Marchal , 2020 +# Frédéric Marchal , 2022 msgid "" msgstr "" -"Project-Id-Version: bash-5.1\n" +"Project-Id-Version: bash-5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2020-12-11 14:47+0100\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-06-19 10:44+0200\n" "Last-Translator: Frédéric Marchal \n" "Language-Team: French \n" "Language: fr\n" @@ -23,57 +23,52 @@ msgstr "" msgid "bad array subscript" msgstr "mauvais indice de tableau" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: retire l'attribut nameref" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s : impossible de convertir un tableau indexé en associatif" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s : clé non valable pour le tableau associatif" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s : impossible d'assigner à un index non numérique" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s : %s : l'assignation d'un tableau associatif doit se faire avec un indice" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s : impossible de créer : %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command : impossible de trouver le mappage clavier pour la commande" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s : le premier caractère non vide n'est pas « \" »" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "pas de « %c » de fermeture dans %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s : virgule de séparation manquante" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "« %s » : impossible à délier dans la commande keymap" @@ -93,7 +88,7 @@ msgstr "expansion des accolades : échec lors de l'allocation mémoire pour %u msgid "brace expansion: failed to allocate memory for `%s'" msgstr "expansion des accolades : échec de l'allocation mémoire pour « %s »" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "« %s » : nom d'alias non valable" @@ -164,7 +159,7 @@ msgstr "" msgid "HOME not set" msgstr "« HOME » non défini" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "trop d'arguments" @@ -191,7 +186,7 @@ msgstr "avertissement :" msgid "%s: usage: " msgstr "%s : utilisation :" -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s : l'option nécessite un argument" @@ -206,7 +201,7 @@ msgstr "%s : argument numérique nécessaire" msgid "%s: not found" msgstr "%s : non trouvé" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s : option non valable" @@ -216,7 +211,7 @@ msgstr "%s : option non valable" msgid "%s: invalid option name" msgstr "%s : nom d'option non valable" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "« %s » : identifiant non valable" @@ -229,7 +224,7 @@ msgstr "nombre octal non valable" msgid "invalid hex number" msgstr "nombre hexadécimal non valable" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "nombre non valable" @@ -243,88 +238,93 @@ msgstr "%s : indication de signal non valable" msgid "`%s': not a pid or valid job spec" msgstr "« %s » : ce n'est pas un n° de processus ou une spécification de tâche valable" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s : variable en lecture seule" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s : impossible d'assigner" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s : %s hors plage" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s hors plage" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s : tâche inexistante" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s : pas de contrôle de tâche" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "pas de contrôle de tâche" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s : restreint" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "restreint" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s : ceci n'est pas une primitive du shell" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "erreur d'écriture : %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "erreur lors de la définition de l'attribut du terminal : %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "erreur lors de la récupération de l'attribut du terminal : %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s : erreur de détermination du répertoire actuel : %s : %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s : spécification de tâche ambiguë" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "l'aide n'est pas disponible dans cette version" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s : « unset » impossible : %s est en lecture seule" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s : « unset » impossible" @@ -334,108 +334,108 @@ msgstr "%s : « unset » impossible" msgid "%s: invalid action name" msgstr "%s : nom d'action non valable" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s : pas d'indication de complètement" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "avertissement : l'option « -F » peut fonctionner différemment de ce à quoi vous vous attendez" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "avertissement : l'option « -C » peut fonctionner différemment de ce à quoi vous vous attendez" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "fonction de complétion actuellement non en cours d'exécution" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "utilisable seulement dans une fonction" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "« -f » ne peut pas être utilisé pour fabriquer des fonctions" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s : fonction en lecture seule" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s : la variable de référence ne peut pas être un tableau" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s : références bouclées sur la même variable interdites" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s : référence de nom circulaire" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "« %s » : nom de variable invalide pour une référence de nom" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "« -f » ne peut pas être utilisé pour fabriquer des fonctions" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s : fonction en lecture seule" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s : l'assignation d'un tableau composé entre apostrophes est dépréciée" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s : impossible de détruire des variables tableaux de cette façon" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s : impossible de convertir un tableau indexé en tableau associatif" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s : l'assignation d'un tableau composé entre apostrophes est dépréciée" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "chargement dynamique non disponible" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "impossible d'ouvrir l'objet partagé %s : %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "impossible de trouver %s dans l'objet partagé %s : %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s : la primitive dynamique a déjà été chargée" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "la fonction de chargement de %s retourne un échec (%d) : pas chargé" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s : non chargé dynamiquement" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s : impossible d'effacer : %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s : ceci est un répertoire" @@ -450,7 +450,7 @@ msgstr "%s : ceci n'est pas un fichier régulier" msgid "%s: file is too large" msgstr "%s : le fichier est trop grand" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s : ne peut exécuter le fichier binaire" @@ -545,12 +545,12 @@ msgstr "" msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "Aucune rubrique d'aide ne correspond à « %s ». Essayez « help help », « man -k %s » ou « info %s »." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s : impossible d'ouvrir : %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -570,21 +570,21 @@ msgstr "" "Une astérisque (*) à côté d'un nom signifie que la commande est désactivée.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "impossible d'utiliser plus d'une option parmi « -anrw »" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "position dans l'historique" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s : horodatage non valable" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s : l'expansion de l'historique a échoué" @@ -607,78 +607,78 @@ msgstr "%s : les arguments doivent être des identifiants de tâche ou de proces msgid "Unknown error" msgstr "Erreur inconnue" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "une expression est attendue" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s : n'est pas un tableau indexé" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s : spécification de descripteur de fichier non valable" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d : descripteur de fichier non valable : %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s : nombre de lignes non valable" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s : origine de tableau non valable" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s : quantum de callback non valable" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "nom de variable tableau vide" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "nécessité de prise en charge des variables tableaux" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "« %s » : caractère de format manquant" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "« %c » : spécification de format d'heure incorrecte" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "« %c » : caractère de format non permis" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "avertissement : %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "problème d'analyse du format : %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "chiffre hexadécimal manquant pour \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "chiffre unicode manquant pour \\%c" @@ -828,12 +828,12 @@ msgstr "" " \n" " Vous pouvez voir la pile des répertoires avec la commande « dirs »." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s : spécification de délai d'expiration non valable" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "erreur de lecture : %d : %s" @@ -846,7 +846,7 @@ msgstr "« return » n'est possible que depuis une fonction ou depuis un scrip msgid "cannot simultaneously unset a function and a variable" msgstr "« unset » ne peut pas s'appliquer simultanément à une fonction et à une variable" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s : n'est pas une variable tableau" @@ -865,11 +865,11 @@ msgstr "%s : impossible d'exporter" msgid "shift count" msgstr "nombre de « shift »" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "les options du shell ne peuvent pas être simultanément activées et désactivées" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s : nom d'option du shell non valable" @@ -936,16 +936,16 @@ msgstr "%s : argument de limite non valable" msgid "`%c': bad command" msgstr "« %c » : mauvaise commande" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s : impossible d'obtenir la limite : %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "limite" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s : impossible de modifier la limite : %s" @@ -964,7 +964,7 @@ msgstr "« %c » : opérateur de mode symbolique non valable" msgid "`%c': invalid symbolic mode character" msgstr "« %c » : caractère de mode symbolique non valable" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " ligne " @@ -982,98 +982,108 @@ msgstr "Annulation…" #: error.c:287 #, c-format msgid "INFORM: " -msgstr "INFORM: " +msgstr "INFORM : " + +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "avertissement de DÉBOGAGE :" -#: error.c:462 +#: error.c:488 msgid "unknown command error" msgstr "erreur de commande inconnue" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "mauvais type de commande" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "mauvais connecteur" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "mauvais saut" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s : variable sans liaison" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aattente de données expirée : déconnexion automatique\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "l'entrée standard ne peut pas être redirigée depuis /dev/null : %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT : « %c » : caractère de format non valable" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] existe encore" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "erreur de tube" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval : dépassement de la profondeur maximum d'imbrication d'évaluations (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s : dépassement de la profondeur maximum d'imbrication de sources (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s : dépassement de la profondeur maximum d'imbrication de fonctions (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "%s : restriction : « / » ne peut pas être spécifié dans un nom de commande" +msgstr "%s : restriction : « / » ne peut pas être spécifié dans un nom de commande" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" -msgstr "%s : commande introuvable" +msgstr "%s : commande introuvable" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" -msgstr "%s : %s" +msgstr "%s : %s" + +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s : ne peut exécuter : le fichier requis n'a pas été trouvé" -#: execute_cmd.c:5854 +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" -msgstr "%s : %s : mauvais interpréteur" +msgstr "%s : %s : mauvais interpréteur" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s : impossible d'exécuter le fichier binaire : %s" +msgstr "%s : impossible d'exécuter le fichier binaire : %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "« %s » : est une primitive spéciale" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossible de dupliquer le fd %d vers le fd %d" @@ -1086,68 +1096,68 @@ msgstr "dépassement du niveau de récursivité dans l'expression" msgid "recursion stack underflow" msgstr "débordement négatif de la pile de récursivité" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "erreur de syntaxe dans l'expression" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "tentative d'affectation à une non-variable" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "erreur de syntaxe dans l'affectation d'une variable" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "division par 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "bogue : mauvais symbole pour expassign" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "« : » attendu pour une expression conditionnelle" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "exposant négatif" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identifiant attendu après un pré-incrément ou un pré-décrément" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "« ) » manquante" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "erreur de syntaxe : opérande attendu" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "erreur de syntaxe : opérateur arithmétique non valable" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s : %s (le symbole erroné est « %s »)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "base arithmétique non valable" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "constante entière invalide" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "valeur trop grande pour la base" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s : erreur d'expression\n" @@ -1156,7 +1166,7 @@ msgstr "%s : erreur d'expression\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd : ne peut accéder aux répertoires parents" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "impossible de réinitialiser le mode « nodelay » pour le fd %d" @@ -1175,167 +1185,167 @@ msgstr "save_bash_input : le tampon existe déjà pour le nouveau fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline : pgrp pipe" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "le processus cloné n°%d apparaît dans la tâche en fonctionnement %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "suppression de la tâche stoppée %d avec le groupe de processus %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process : pid %5ld (%s) signalé toujours en vie" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid : %ld : n° de processus inexistant" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Fini" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Stoppé" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Stoppé(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "En cours d'exécution" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Fini(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Termine %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "État inconnu" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(core dumped)" -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd : %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "fils setpgid (%ld à %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait : le processus n°%ld n'est pas un fils de ce shell" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for : Aucun enregistrement du processus n°%ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job : la tâche %d est stoppée" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s : pas de tâche actuelle" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s : la tâche s'est terminée" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s : la tâche %d est déjà en arrière plan" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld : activation de WNOHANG pour éviter un blocage définitif" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s : ligne %d : " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(maintenant, wd : %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control : getpgrp a échoué" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control : pas de contrôle de tâche en tâche de fond" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control : discipline de ligne" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control : setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "impossible de régler le groupe de processus du terminal (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "pas de contrôle de tâche dans ce shell" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc : échec de l'assertion : %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1344,47 +1354,47 @@ msgstr "" "\r\n" "malloc : %s:%d : assertion manquée\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "inconnu" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc : bloc écrasé sur liste libre" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free : appelé avec un bloc déjà libéré comme argument" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free : appelé avec un bloc non alloué comme argument" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free : débordement négatif détecté ; « mh_nbytes » est hors plage" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free : débordement négatif détecté ; « magic8 » est hors plage" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free : les tailles de fragment au début et à la fin sont différentes" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc : appelé avec un bloc non alloué comme argument" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc : débordement négatif détecté ; « mh_nbytes » est hors plage" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc : débordement négatif détecté ; « magic8 » est hors plage" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc : les tailles de fragment au début et à la fin sont différentes" @@ -1426,22 +1436,22 @@ msgstr "%s : mauvaise spécification de chemin réseau" msgid "network operations not supported" msgstr "opérations sur le réseau non prises en charge" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale : LC_ALL : impossible de changer le paramètre de langue (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale : LC_ALL : impossible de changer le paramètre de langue (%s) : %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale : %s : impossible de changer le paramètre de langue (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale : %s : impossible de changer le paramètre de langue (%s) : %s" @@ -1459,136 +1469,136 @@ msgstr "Vous avez du nouveau courrier dans $_" msgid "The mail in %s has been read\n" msgstr "Le courrier dans %s a été lu\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "erreur de syntaxe : expression arithmétique nécessaire" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "erreur de syntaxe : « ; » non attendu" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "erreur de syntaxe : « ((%s)) »" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document : le type d'instruction %d est incorrect" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "« here-document » à la ligne %d délimité par la fin du fichier (au lieu de « %s »)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection : l'instruction de redirection « %d » est hors plage" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" msgstr "shell_getc: shell_input_line_size (%zu) dépasse SIZE_MAX (%lu): ligne tronquée" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "nombre maximum de documents en ligne (« here-document ») dépassé" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "fin de fichier (EOF) prématurée lors de la recherche du « %c » correspondant" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "fin de fichier (EOF) prématurée lors de la recherche de « ]] »" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "erreur de syntaxe dans une expression conditionnelle : symbole « %s » inattendu" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "erreur de syntaxe dans une expression conditionnelle" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "symbole inattendu « %s » au lieu de « ) »" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "« ) » attendu" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argument inattendu « %s » pour l'opérateur conditionnel à un argument" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "argument inattendu pour l'opérateur conditionnel à un argument" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "symbole « %s » trouvé à la place d'un opérateur binaire conditionnel" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "opérateur binaire conditionnel attendu" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argument « %s » inattendu pour l'opérateur binaire conditionnel" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "argument inattendu pour l'opérateur binaire conditionnel" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "symbole « %c » inattendu dans la commande conditionnelle" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "symbole « %s » inattendu dans la commande conditionnelle" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "symbole « %d » inattendu dans la commande conditionnelle" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "erreur de syntaxe près du symbole inattendu « %s »" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "erreur de syntaxe près de « %s »" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "erreur de syntaxe : fin de fichier prématurée" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "erreur de syntaxe" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Utilisez « %s » pour quitter le shell.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "fin de fichier (EOF) prématurée lors de la recherche d'une « ) » correspondante" @@ -1626,94 +1636,94 @@ msgstr "xtrace_set : pointeur de fichier NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf : « %c » : caractère de format invalide" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "descripteur de fichier hors plage" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s : redirection ambiguë" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s : impossible d'écraser le fichier existant" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s : restreint : impossible de rediriger la sortie" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "impossible de créer un fichier temporaire pour le « here-document » : %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s : impossible d'affecter le descripteur de fichier à la variable" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port non pris en charge sans réseau" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "erreur de redirection : impossible de dupliquer le descripteur de fichier" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "« /tmp » introuvable, veuillez le créer !" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "« /tmp » doit être un nom de répertoire valable" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "le mode d'affichage amélioré est ignoré dans les shells interactifs" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c : option non valable" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "impossible de changer le uid en %d : uid effectif %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "impossible de changer le gid en %d: gid effectif %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "impossible de démarrer le débogueur: mode déboguage désactivé" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s : Ceci est un répertoire" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Je n'ai pas de nom !" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1722,317 +1732,317 @@ msgstr "" "Utilisation :\t%s [option longue GNU] [option] ...\n" "\t%s [option longue GNU] [option] fichier-script ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Options longues GNU :\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Options du shell :\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD ou -c commande ou -O shopt_option\t\t(invocation seulement)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ou -o option\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Pour en savoir plus sur les options du shell, saisissez « %s -c \"help set\" ».\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Pour en savoir plus sur les primitives du shell, saisissez « %s -c help ».\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Utilisez la commande « bashbug » pour faire un rapport de bogue.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "page d'accueil de bash : \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "Aide générale sur l'utilisation de logiciels GNU : \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask : %d : opération non valable" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Signal falsifié" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Raccroche" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Interrompt" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Quitte" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Instruction incorrecte" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "trace/trap BPT" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Instruction ABORT" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Instruction EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Exception en virgule flottante" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Tué" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Erreur de bus" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Erreur de segmentation" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Mauvais appel système" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Tube brisé" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Horloge d'alarme" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Terminé" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Condition d'E/S urgente" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Stoppé (signal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Continue" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Mort ou arrêt du fils" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Stoppé (entrée tty)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Stoppé (sortie tty)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "E/S prête" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Limite CPU" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Limite fichier" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarme (virtuelle)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarme (profile)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Fenêtre changée" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Verrou d'enregistrement" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Signal utilisateur 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Signal utilisateur 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "données d'entrée HFT en attente" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "coupure d'alimentation imminente" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "panne système imminente" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "migration processus vers un autre CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "erreur de programmation" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "Mode de surveillance HFT accordé" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "Mode de surveillance HFT rétracté" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "Séquence de son HFT terminée" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Demande d'information" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Signal n°%d inconnu" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Mauvaise substitution : pas de « %s » de fermeture dans %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s : impossible d'affecter une liste à un élément de tableau" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "impossible de fabriquer un tube pour une substitution de processus" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "impossible de fabriquer un fils pour une substitution de processus" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "impossible d'ouvrir le tube nommé « %s » en lecture" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "impossible d'ouvrir le tube nommé « %s » en écriture" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "impossible de dupliquer le tube nommé « %s » vers le fd %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "substitution de commande: octet nul ignoré en entrée" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "impossible de fabriquer un tube pour une substitution de commande" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "impossible de fabriquer un processus fils pour une substitution de commande" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute : impossible de dupliquer le tube vers le fd 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s : nom de variable invalide pour une référence de nom" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s : expansion indirecte invalide" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: nom de variable invalide" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s : paramètre non défini" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s : paramètre vide ou non défini" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s : expression de sous-chaîne négative" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s : mauvaise substitution" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s : affectation impossible de cette façon" -#: subst.c:9814 +#: subst.c:10111 msgid "future versions of the shell will force evaluation as an arithmetic substitution" msgstr "les versions futures du shell forceront l'évaluation comme une substitution arithmétique" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "mauvais remplacement : pas de « ` » de fermeture dans %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "pas de correspondance : %s" @@ -2055,21 +2065,21 @@ msgstr "« ) » attendue" msgid "`)' expected, found %s" msgstr "« ) » attendue au lieu de %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s : opérateur binaire attendu" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s : opérateur unaire attendu" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "« ] » manquant" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "erreur de syntaxe : « %s » non attendu" @@ -2078,103 +2088,108 @@ msgstr "erreur de syntaxe : « %s » non attendu" msgid "invalid signal number" msgstr "numéro de signal non valable" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "gestionnaire trap : dépassement de la profondeur maximum du gestionnaire « trap » (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps : mauvaise valeur dans trap_list[%d] : %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps : le gestionnaire de signal est SIG_DFL, renvoi de %d (%s) à moi-même" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" -msgstr "trap_handler : mauvais signal %d" +msgstr "trap_handler : mauvais signal %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "erreur lors de l'importation de la définition de fonction pour « %s »" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "niveau de shell trop élevé (%d), initialisation à 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" -msgstr "make_local_variable : aucun contexte de fonction dans le champ d'application actuel" +msgstr "make_local_variable : aucun contexte de fonction dans le champ d'application actuel" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" -msgstr "%s : la variable ne peut se voir assigner une valeur" +msgstr "%s : la variable ne peut se voir assigner une valeur" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s : impossible d'hériter de la valeur d'un type incompatible" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" -msgstr "%s : assigne un entier à la référence de nom" +msgstr "%s : assigne un entier à la référence de nom" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" -msgstr "all_local_variables : aucun contexte de fonction dans le champ d'application actuel" +msgstr "all_local_variables : aucun contexte de fonction dans le champ d'application actuel" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s a un « exportstr » nul" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "caractère %d non valable dans « exportstr » pour %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "pas de « = » dans « exportstr » pour %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" -msgstr "pop_var_context : le début de « shell_variables » n'est pas un contexte de fonction" +msgstr "pop_var_context : le début de « shell_variables » n'est pas un contexte de fonction" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" -msgstr "pop_var_context : aucun contexte à « global_variables »" +msgstr "pop_var_context : aucun contexte à « global_variables »" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" -msgstr "pop_scope : le début de « shell_variables » n'est pas un champ d'application temporaire d'environnement" +msgstr "pop_scope : le début de « shell_variables » n'est pas un champ d'application temporaire d'environnement" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s : %s : impossible d'ouvrir comme FILE" +msgstr "%s : %s : impossible d'ouvrir comme FILE" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "%s : %s : valeur non valable pour un descripteur de fichier de trace" +msgstr "%s : %s : valeur non valable pour un descripteur de fichier de trace" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s : %s : valeur de compatibilité hors plage" +msgstr "%s : %s : valeur de compatibilité hors plage" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Copyright (C) 2022 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "License GPLv3+: GNU GPL version 3 or later \n" -msgstr "Licence GPLv3+ : GNU GPL version 3 ou ultérieure \n" +msgstr "Licence GPLv3+ : GNU GPL version 3 ou ultérieure \n" #: version.c:86 version2.c:86 #, c-format @@ -2192,12 +2207,12 @@ msgstr "AUCUNE GARANTIE n'est fournie, dans les limites permises par la loi." #: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "%s : impossible d'allouer %lu octets (%lu octets alloués)" +msgstr "%s : impossible d'allouer %lu octets (%lu octets alloués)" #: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "%s : impossible d'allouer %lu octets" +msgstr "%s : impossible d'allouer %lu octets" #: xmalloc.c:165 #, c-format @@ -2250,12 +2265,12 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] commande [arg ...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgiIlnrtux] [-p] [nom[=valeur] ...]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgiIlnrtux] [nom[=valeur] ...] ou declare -p [-aAfFilnrtux] [nom ...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgiIlnrtux] [-p] nom[=valeur] ..." +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgiIlnrtux] nom[=valeur] ... ou typeset -p [-aAfFilnrtux] [nom ...]" #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2342,8 +2357,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [-abefhkmnptuvxBCHP] [-o nom-option] [--] [arg ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o nom-option] [--] [-] [arg ...]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" @@ -2390,8 +2405,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nom [nom ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limite]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limite]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" @@ -2430,12 +2445,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C msgstr "if COMMANDES; then COMMANDES; [ elif COMMANDES; then COMMANDES; ]... [ else COMMANDES; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while COMMANDES; do COMMANDES; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while COMMANDES; do COMMANDES-2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until COMMANDES; do COMMANDES; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until COMMANDES; do COMMANDES-2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -3753,7 +3768,8 @@ msgid "" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" @@ -3796,11 +3812,12 @@ msgstr "" " comme des mots, et le premier mot est assigné au premier NOM, le deuxième mot\n" " au deuxième NOM, et ainsi de suite, le dernier NOM récupérant la liste des mots\n" " restants. Seuls les caractères trouvés dans $IFS sont reconnus comme délimiteurs\n" -" de mots\n" +" de mots. Par défaut, la barre oblique inverse échappe les caractères délimiteurs\n" +" et les sauts de ligne.\n" " \n" " Si aucun NOM n'est fourni, la ligne lue est stockée dans la variable REPLY.\n" " \n" -" Options :\n" +" Options :\n" " -a tableau\taffecte les mots lus séquentiellement aux indices de la variable\n" " \t\ttableau ARRAY en commençant à 0\n" " -d délim\tcontinue jusqu'à ce que le premier caractère de DELIM soit lu,\n" @@ -3827,11 +3844,12 @@ msgstr "" " \t\tde sortie est supérieur à 128 si le délai a expiré\n" " -u fd\tlit depuis le descripteur de fichier FD plutôt que l'entrée standard\n" " \n" -" Code de sortie :\n" -" Le code de retour est 0, à moins qu'une fin de fichier ne survienne, que le délai expire,\n" +" Code de sortie :\n" +" Le code de retour est 0, à moins qu'une fin de fichier ne survienne, que le délai expire\n" +" (auquel cas, il est plus grand que 128), une erreur d'affectation à une variable survient\n" " ou qu'un descripteur de fichier non valable ne soit fourni comme argument à « -u »." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3853,7 +3871,7 @@ msgstr "" " Renvoie N ou le code d'échec si le shell n'est pas en train d'exécuter\n" " une fonction ou un script." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4017,7 +4035,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de succès à moins qu'une option non valable ne soit donnée." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4056,7 +4074,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit\n" " donnée ou que NOM soit en lecture seule." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4090,7 +4108,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit données\n" " ou que NOM ne soit pas valable." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4129,7 +4147,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit\n" " donnée ou que NOM ne soit pas valable." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4147,7 +4165,7 @@ msgstr "" " Code de retour :\n" " Renvoie le code de succès à moins que N soit négatif ou supérieur à $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4171,7 +4189,7 @@ msgstr "" " Renvoie le code de la dernière commande exécutée dans NOMFICHIER, ou le code\n" " d'échec si NOMFICHIER ne peut pas être lu." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4196,7 +4214,7 @@ msgstr "" " Renvoie le code de succès à moins que le contrôle de tâche ne soit pas activé\n" " ou qu'une erreur survienne." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4353,7 +4371,7 @@ msgstr "" " Renvoie le code de succès si EXPR est vraie, le code d'échec si EXPR est fausse ou si\n" " un argument non valable est donné." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4365,7 +4383,7 @@ msgstr "" " Ceci est un synonyme de la primitive « test », mais le dernier argument\n" " doit être le caractère « ] », pour fermer le « [ » correspondant." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4383,7 +4401,7 @@ msgstr "" " Code de retour :\n" " Toujours le code de succès." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4451,7 +4469,7 @@ msgstr "" " Renvoie le code de succès à moins que SIGSPEC ne soit pas valable ou qu'une\n" " option non valable ne soit donnée." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4507,7 +4525,7 @@ msgstr "" " Renvoie le code de succès si tous les NOMs sont trouvés, le code d'échec si l'un\n" " d'entre eux n'est pas trouvé." -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4603,7 +4621,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit fournie ou\n" " qu'une erreur ne survienne." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4636,7 +4654,7 @@ msgstr "" " Renvoie le code de succès à moins que MODE ne soit pas valable ou qu'une\n" " option non valable ne soit donnée." -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4687,7 +4705,7 @@ msgstr "" " ou si une option non valable et fournie ou si -n est employé et que le shell\n" " n'a aucun enfant sur lequel attendre." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4710,7 +4728,7 @@ msgstr "" " Renvoie le code de retour du dernier PID. Échoue si PID n'est pas valable ou\n" " si une option non valable est donnée." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4732,7 +4750,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4762,7 +4780,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4798,7 +4816,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4827,7 +4845,7 @@ msgstr "" " Code de sortie :\n" " Le code de retour est celui du PIPELINE." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4845,7 +4863,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4873,45 +4891,45 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Exécute des commandes aussi longtemps qu'elles réussissent.\n" " \n" -" Effectue une expansion et exécute les COMMANDES aussi longtemps\n" -" que la commande finale du « while » se termine avec un code de\n" -" retour à zéro.\n" +" Effectue une expansion et exécute les COMMANDES-2 aussi longtemps\n" +" que la commande finale de COMMANDES se termine avec un code de retour\n" +" à zéro.\n" " \n" -" Code de sortie :\n" +" Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Exécute des commandes aussi longtemps qu'un test échoue.\n" " \n" -" Effectue une expansion et exécute les commandes « COMMANDES »\n" -" aussi longtemps que les commandes de « until » se terminent avec\n" -" un code de retour différent de zéro.\n" +" Effectue une expansion et exécute les commandes COMMANDES-2\n" +" aussi longtemps que la commande finale de COMMANDES se termine\n" +" avec un code de retour différent de zéro.\n" " \n" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4933,7 +4951,7 @@ msgstr "" " Code de retour :\n" " La commande coproc renvoie le code de sortie 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -4955,7 +4973,7 @@ msgstr "" " Code de retour :\n" " Renvoie le code de succès à moins que NOM ne soit en lecture seule." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4973,7 +4991,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4997,7 +5015,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la commande reprise." -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5015,7 +5033,7 @@ msgstr "" " Code de sortie :\n" " Renvoie 1 si EXPRESSION est évaluée à 0, sinon renvoie 0." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5061,7 +5079,7 @@ msgstr "" " Code de sortie :\n" " 0 ou 1 selon la valeur de l'EXPRESSION." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5165,7 +5183,7 @@ msgstr "" " HISTIGNORE\tUne liste de motifs séparés par un deux-points, utilisés pour\n" " \t\tdécider quelles commandes doivent être conservées dans la liste d'historique.\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5222,7 +5240,7 @@ msgstr "" " Renvoie le code de succès à moins qu'un argument non valable ne soit fourni\n" " ou que le changement de répertoire n'échoue." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5273,7 +5291,7 @@ msgstr "" " Renvoie le code de succès à moins qu'un argument non valable ne soit donné\n" " ou que le changement de répertoire n'échoue." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5326,7 +5344,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit\n" " fournie ou qu'une erreur ne survienne." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5362,7 +5380,7 @@ msgstr "" " Renvoie le code de succès si NOMOPT est active ; échec si une option non valable\n" " est donnée ou si NOMOPT est inactive." -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5381,6 +5399,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" @@ -5395,33 +5415,35 @@ msgid "" msgstr "" "Formate et affiche des ARGUMENTS en contrôlant le FORMAT.\n" " \n" -" Options :\n" +" Options :\n" " -v var\taffecte la sortie à la variable VAR du shell plutôt que de l'afficher\n" " \t\tsur la sortie standard\n" " \n" -" Le FORMAT est une chaîne de caractères qui contient trois types d'objets : des caractères\n" +" Le FORMAT est une chaîne de caractères qui contient trois types d'objets : des caractères\n" " normaux qui sont simplement copiés vers la sortie standard ; des séquences d'échappement\n" " qui sont converties et copiées vers la sortie standard et des spécifications de\n" " format, chacun entraînant l'affichage de l'argument suivant.\n" " \n" -" En plus des formats standards décrits dans printf(1), « printf » interprète :\n" +" En plus des formats standards décrits dans printf(1), « printf » interprète :\n" " \n" " %b\tdéveloppe les séquences d'échappement à contre-oblique dans l'argument correspondant\n" " %q\tprotège les arguments avec des guillemets de façon qu'ils puissent être réutilisés\n" " comme entrée du shell.\n" +" %Q\tcomme %q mais applique une éventuelle précision à l'argument sans guillemets avant\n" +" d'ajouter les guillemets.\n" " %(fmt)T\trenvoie la chaîne date-heure résultant de l'utilisation de FMT comme\n" " \t chaîne de format pour strftime(3)\n" " \n" -" Le format est réutilisé si nécessaire pour consommer tous les arguments. Si il y a\n" -" moins d'arguments que exigé par le format, les spécificateurs de format surnuméraires\n" -" se comportent comme si la valeur zéro ou une chaîne nulle avait été fournie (selon\n" +" Le format est réutilisé si nécessaire pour consommer tous les arguments. S'il y a\n" +" moins d'arguments qu'exigé par le format, les spécificateurs de format surnuméraires\n" +" se comportent comme si la valeur zéro ou une chaîne nulle avait été fournies (selon\n" " ce qui est approprié).\n" " \n" -" Code de sortie :\n" +" Code de sortie :\n" " Renvoie le code de succès à moins qu'une option non valable ne soit donnée ou qu'une\n" " erreur d'écriture ou d'affectation ne survienne." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5473,7 +5495,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit fournie ou\n" " qu'une erreur ne survienne." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5494,7 +5516,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit\n" " fournie ou qu'une erreur ne survienne." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5549,7 +5571,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit fournie\n" " ou que NOM n'ait aucun réglage d'auto-complètement." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5613,7 +5635,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit donnée ou que\n" " le TABLEAU soit en lecture seule ou ne soit pas un tableau indexé." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5623,6 +5645,9 @@ msgstr "" " \n" " Synonyme de « mapfile »." +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s : clé non valable pour le tableau associatif" + #~ msgid "" #~ "Returns the context of the current subroutine call.\n" #~ " \n" diff --git a/po/ga.gmo b/po/ga.gmo index 70423c34e..88309c9d9 100644 Binary files a/po/ga.gmo and b/po/ga.gmo differ diff --git a/po/ga.po b/po/ga.po index 36f1b2749..d62526123 100644 --- a/po/ga.po +++ b/po/ga.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2019-01-16 21:05+0000\n" "Last-Translator: Séamus Ó Ciardhuáin \n" "Language-Team: Irish \n" @@ -24,60 +24,55 @@ msgstr "" msgid "bad array subscript" msgstr "droch-fhoscript eagair" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: aitreabúid nameref (tagairt athróga) á baint" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" "%s: ní féidir eagar innéacsaithe a thiontú go heagar comhthiomsaitheach" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: eochair neamhbhailí eagair chomhthiomsaithigh" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ní féidir sannadh go hinnéacs neamhuimhriúil." -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: caithfear foscript a úsáid le sannadh chuig eagar comhthiomsaitheach" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ní féidir cruthú: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: ní féidir mapa eochrach an ordaithe a aimsiú" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: ní \" an chéad charachtar nach spás bán é." -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "Níl '%c' dúnta i %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: deighilteoir idirstaid ar iarraidh" -#: bashline.c:4555 +#: bashline.c:4733 #, fuzzy, c-format msgid "`%s': cannot unbind in command keymap" msgstr "'%s': ní féidir dícheangail" @@ -98,7 +93,7 @@ msgstr "" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "fairsingiú lúibíní: theip ar leithdháileadh cuimhne le haghaidh '%s'" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "'%s': ainm neamhbhailí ar mhapa eochrach" @@ -176,7 +171,7 @@ msgstr "" msgid "HOME not set" msgstr "Níl HOME socruithe" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "An iomarca argóintí" @@ -203,7 +198,7 @@ msgstr "rabhadh: " msgid "%s: usage: " msgstr "%s: úsáid: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: tá argóint riachtanach don rogha" @@ -218,7 +213,7 @@ msgstr "%s: argóint uimhriúil de dhíth" msgid "%s: not found" msgstr "%s: gan aimsiú" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: rogha neamhbhailí" @@ -228,7 +223,7 @@ msgstr "%s: rogha neamhbhailí" msgid "%s: invalid option name" msgstr "%s: ainm neamhbhailí rogha" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "'%s': ní aitheantóir bailí é" @@ -241,7 +236,7 @@ msgstr "uimhir ochtnártha neamhbhailí" msgid "invalid hex number" msgstr "uimhir heicsidheachúlach neamhbhailí" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "uimhir neamhbhailí" @@ -255,88 +250,93 @@ msgstr "%s: sonrú neamhbhailí comhartha" msgid "`%s': not a pid or valid job spec" msgstr "'%s': ní aitheantas próisis nó sonrú taisc bailí é" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: athróg inléite amháin" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: ní féidir díshocrú" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s as raon" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argóint" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s as raon" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: níl a léithéid de tasc ann." -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: gan rialú tascanna." -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "Gan rialú tascanna." -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: srianta" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "srianta" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ní ordú ionsuite blaoisce é." -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "earráid scríofa: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "earráid agus airíonna teirminéil á socrú: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "earráid agus airíonna teirminéil á fáil: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: earráid ag fáil na comhadlainne reatha: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: sonrú taisc athbhríoch" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "Níl cabhair ar fáil sa leagan seo." -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ní féidir díshocrú: %s inléite amháin" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: ní féidir díshocrú" @@ -346,114 +346,114 @@ msgstr "%s: ní féidir díshocrú" msgid "%s: invalid action name" msgstr "%s: ainm neamhbhailí gnímh" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: níl sonrú iomlánaithe ann." -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "" "Rabhadh: b'fhéidir nach n-oibríonn an rogha -F mar a bheifeá ag súil leis." -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "" "Rabhadh: b'fhéidir nach n-oibríonn an rogha -C mar a bheifeá ag súil leis." -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "níl an fheidhm chomhlánaithe á rith faoi láthair" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "Inúsáidte i bhfeidhmeanna amháin. " -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "Ní féidir '-f' a úsáid chun feidhmeanna a dhéanamh" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: feidhm inléite amháin" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: ní féidir le athróg thagartha bheith ina h-eagar" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" "%s: ní cheadaítear tagairtí don athróg féin i nameref (tagairt athróga)" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: tagairt ainm ciorclach" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "Ní féidir '-f' a úsáid chun feidhmeanna a dhéanamh" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: feidhm inléite amháin" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: cáintear sannadh na gcomheagar athfhriotail" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: ní féidir athróga eagair a scrios mar seo." -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" "%s: ní féidir eagar comhthiomsaitheach a thiontú go heagar innéacsaithe" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: cáintear sannadh na gcomheagar athfhriotail" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "Níl luchtú dinimiciúil ar fáil" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "Ní féidir an réad comhroinnte %s a oscailt: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "Ní féidir %s a aimsiú sa réad comhroinnte %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, fuzzy, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: níl sé luchtaithe go dinimiciúil" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "" "Theip ar an ngníomh luchtála le haghaidh %s (aiscuireadh %d): níor " "luchtáladh é" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: níl sé luchtaithe go dinimiciúil" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: ní féidir scrios: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: is comhadlann é" @@ -468,7 +468,7 @@ msgstr "%s: ní gnáthchomhad é" msgid "%s: file is too large" msgstr "%s: tá an comhad ró-mhór" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ní féidir comhad dénártha a rith" @@ -567,12 +567,12 @@ msgstr "" "Ní mheaitseálann ábhar cabhrach ar bith \"%s\". Bain triail as \"help help\" " "nó \"man -k %s\" nó \"info %s\"." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ní féidir oscailt: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -592,21 +592,21 @@ msgstr "" "Ciallaíonn réalt (*) ar ainm go bhfuil an t-ordú díchumasaithe.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "Ní féidir níos mó ná ceann amháin as -anrw a úsáid." -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "suíomh staire" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: stampa ama neamhbhailí" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: theip ar fhairsingiú staire." @@ -629,78 +629,78 @@ msgstr "%s: is gá le argóintí bheith ina aitheantais phróisis nó taisc" msgid "Unknown error" msgstr "Earráid neamhaithnid" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "Ag súil le slonn" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: ní eagar innéacsaithe é" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: sonrú neamhbhailí tuairisceora comhaid" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: tuairisceoir comhaid neamhbhailí: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: comhaireamh neamhbhailí línte" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: bunphointe neamhbhailí eagair" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: candam neamhbhailí aisghlaoigh" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "ainm folamh athróga eagair" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "tacaíocht le hathróga eagair de dhíth" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "'%s': carachtar formáide ar iarraidh." -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "'%c': sonrú neamhbhailí formáide ama" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "'%c': carachtar formáide neamhbhailí." -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "rabhadh: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "fadhb i bpársáil formáide: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "digit heicsidheachúlach ar iarraidh le haghaidh \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "digit Unicode ar iarraidh le haghaidh \\%c" @@ -861,12 +861,12 @@ msgstr "" " \n" " Taispeánann an t-ordú ionsuite \"dirs\" cruach na gcomhadlann." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: sonrú neamhbhailí teorann ama" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "Earráid léite: %d: %s" @@ -880,7 +880,7 @@ msgstr "" msgid "cannot simultaneously unset a function and a variable" msgstr "Ní féidir feidhm agus athróg a dhíshocrú ag an am céanna." -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: ní athróg eagair é" @@ -899,11 +899,11 @@ msgstr "%s: ní féidir easpórtáil" msgid "shift count" msgstr "comhaireamh iomlaoide" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "Ní féidir roghanna blaoisce a shocrú agus a dhíshocrú ag an am céanna." -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ainm neamhbhailí ar rogha blaoisce" @@ -970,16 +970,16 @@ msgstr "%s: argóint teorann neamhbhailí" msgid "`%c': bad command" msgstr "'%c': droch-ordú" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ní féidir teorainn a fháil: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "teorainn" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ní féidir teorainn a athrú: %s" @@ -998,7 +998,7 @@ msgstr "'%c': oibreoir neamhbhailí móid shiombalaigh" msgid "`%c': invalid symbolic mode character" msgstr "'%c': carachtar neamhbhailí móid shiombalaigh" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " líne " @@ -1018,96 +1018,106 @@ msgstr "Ag tobscor..." msgid "INFORM: " msgstr "EOLAS: " -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "rabhadh: " + +#: error.c:488 msgid "unknown command error" msgstr "earráid ordaithe neamhaithnid" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "droch-chineál ordaithe" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "drochnascóir" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "drochléim" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: athróg neamhcheangailte" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aImithe thar am ag feitheamh le hionchur: logáil amach uathoibríoch\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "Ní féidir an ionchur caighdeánach a atreorú ó /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "FORMÁID_AMA: '%c': carachtar formáide neamhbhaií." -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: tá an comhphróiseas [%d:%s] fós ann" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "earráid phíopa" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: imithe thar uasleibhéal neadaithe eval (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: imithe thar uasleibhéal neadaithe foinse (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: imithe thar uasleibhéal neadaithe feidhme (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: srianta: ní féidir \"/\" a shonrú in ainmneacha ordaithe" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: níor aimsíodh an t-ordú" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: ní féidir comhad dénártha a rith" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: drochléirmhínitheoir" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: ní féidir comhad dénártha a rith: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "Is ordú ionsuite speisialta é '%s'" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" @@ -1121,69 +1131,69 @@ msgstr "Imithe thar leibhéal athchursála sloinn" msgid "recursion stack underflow" msgstr "Gannsreabhadh na cruaiche athchúrsála" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "Earráid chomhréire sa slonn." -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "Deineadh iarracht sannadh go rud nach athróg é." -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "Earráid chomhréire i sannadh athróige." -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "Roinnt ar 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "Fabht: droch-chomhartha expassign" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "Bhíothas ag súil le \":\" le haghaidh sloinn choinníollaigh." -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "Easpónant níos lú ná 0." -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "Ag súil le aitheantóir tar éis réamhincriminte nó réamhdeicriminte" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "\")\" ar iarraidh" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "Earráid chomhréire: bhíothas ag súil le hoibreann." -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "Earráid chomhréire: oibreoir neamhbhailí uimhríochta" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (comhartha earráide '%s')" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "Bonnuimhir uimhríochtúil neamhbhailí." -#: expr.c:1582 +#: expr.c:1587 #, fuzzy msgid "invalid integer constant" msgstr "%s: comhaireamh neamhbhailí línte" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "Tá an luach rómhór don bhonnuimhir." -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: earráid sloinn\n" @@ -1192,7 +1202,7 @@ msgstr "%s: earráid sloinn\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: ní féidir na máthairchomhadlanna a rochtain." -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" @@ -1217,167 +1227,167 @@ msgstr "" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp píopa" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "Tá aitheantas an phróisis ghabhlaithe %d sa tasc %d atá ag rith" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "Tá an tasc stoptha %d leis an ngrúpa próisis %ld á scrios." -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: próiseas %5ld (%s) marcáilte mar fós beo" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: níl an aitheantóir próisis sin ann." -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Comhartha %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Déanta" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Stoptha" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Stoptha(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Ag Rith" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Déanta(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Scoir %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Stádas neamhaithnid" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(cuimhne dumpáilte)" -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (comhadlann oibre: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid macphróisis (%ld go %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: níl an próiseas %ld ina mhacphróiseas den bhlaosc seo." -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: níl taifead den phróiseas %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: tá an tasc %d stoptha." -#: jobs.c:3564 +#: jobs.c:3551 #, fuzzy, c-format msgid "%s: no current jobs" msgstr "%s: níl a léithéid de tasc ann." -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: tá an tasc críochnaithe." -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: tá an tasc %d sa chúlra cheana." -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: ag cumasú WNOHANG chun stad éiginnte a sheachaint" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: líne %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (cuimhne dumpáilte)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(comhadlann oibre anois: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: theip ar getpgrp" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: níl rialú jabanna ar fáil sa chúlra" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: araíonacht líne" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ní féidir an grúpa próisis teirminéil a athrú (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "Níl rialú tascanna sa bhlaosc seo." -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: dearbhú teipthe: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1386,49 +1396,49 @@ msgstr "" "\r\n" "malloc: %s:%d: dearbhú ina phraiseach\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "neamhaithnid" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: bloc ar an liosta saor scriosta" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: glaoite le argóint bhloic á saoradh cheana" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: glaoite le argóint bhloic nár leithdháileadh" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: gannsreabhadh; tá mh_nbytes as raon" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 #, fuzzy msgid "free: underflow detected; magic8 corrupted" msgstr "free: gannsreabhadh; tá mh_nbytes as raon" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: ní ionann méid na smután túis agus deiridh" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: glaoite le argóint bhloic nár leithdháileadh" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: gannsreabhadh; tá mh_nbytes as raon" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 #, fuzzy msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: gannsreabhadh; tá mh_nbytes as raon" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: ní ionann méideanna na smután túis agus deiridh" @@ -1471,22 +1481,22 @@ msgstr "%s: drochshonrú conaire líonra" msgid "network operations not supported" msgstr "Ní thacaítear le oibríochtaí líonra." -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s): %s" @@ -1504,37 +1514,37 @@ msgstr "Tá ríomhphost nua agat i $_" msgid "The mail in %s has been read\n" msgstr "Tá an ríomhphost i %s léite\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "Earráid chomhréire: tá slonn uimhríochtúil de dhith." -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "Earráid chomhréire: ';' gan súil leis." -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "Earráid chomhréire: '((%s))'" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: drochchineál ordaithe %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "Cáipéis leabaithe ag líne %d teormharcáilte le deireadh comhaid (\"%s\" á " "lorg)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: ordú atreoraithe \"%d\" as raon." -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " @@ -1543,106 +1553,106 @@ msgstr "" "shell_getc: tá méid an líne ionchuir blaoisce (%zu) níos mó ná SIZE_MAX " "(%lu): líne giorraithe" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "Imithe thar uasfhad na cáipéise-anseo" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "Deireadh comhaid gan súil leis agus \"%c\" a mheaitseálann á lorg." -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "Deireadh comhaid gan súil leis agus \"]]\" á lorg." -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" "Earráid chomhréire i slonn coinníollach: comhartha \"%s\" gan suil leis." -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "Earráid chomhréire i slonn coinníollach." -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "Comhartha '%s' gan súil leis; ag súil le ')'." -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "Ag súil le \")\"" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "Argóint \"%s\" gan súil lei go hoibreoir aonártha coinníollach." -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "Argóint gan súil lei go hoibreoir coinníollach aonártha ." -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" "Comhartha \"%s\" gan súil leis. Bhíothas ag súil le hoibreoir coinníollach " "dénártha." -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "Bhíothas ag súil le hoibreoir coinníollach dénártha." -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "Argóint '%s' gan súil lei go hoibreoir dénártha coinníollach." -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "Argóint gan súil lei go hoibreoir dénártha coinníollach." -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "Comhartha '%c' gan súil leis in ordú coinníollach." -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "Comhartha \"%s\" gan súil leis in ordú coinníollach." -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "Comhartha %d gan súil leis in ordú coinníollach." -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "Earráid chomhréire in aice comhartha '%s' nach rabhthas ag súil leis." -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "Earráid chomhréire in aice '%s'" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "Earráid chomhréire: deireadh comhaid gan súil leis." -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "Earráid chomhréire" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Úsáid '%s' le scoir den mblaosc.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "Deireadh comhaid gan súil leis agus ')' á lorg le meaitseáil." @@ -1680,100 +1690,100 @@ msgstr "xtrace_set: pointeoir folamh comhaid" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: '%c': carachtar formáide neamhbhailí" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "tuairisceoir comhaid as raon" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: atreorú athbhríoch" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: ní féidir comhad atá ann cheana a fhorscríobh." -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: srianta: ní féidir aschur a atreorú." -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "ní féidir cáipéis shealadach a chruthú don cháipéis leabaithe: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ní féidir tuairisceoir comhaid a shannadh go hathróg." -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "Ní thacaítear le /dev/(tcp|udp)/óstríomhaire/port gan líonrú." -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "Earráid atreoraithe: ní féidir an tuairisceoir comhaid a dhúbailt." -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "Níorbh fhéidir /tmp a aimsiú. Cruthaigh é le do thoil!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "Caithfidh /tmp bheith ina ainm comhadlainne bailí." -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "" "Tabharfar neamhaird ar an mód deaphriontála i mblaoscanna idirghníomhacha." -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: rogha neamhbhailí" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" "Ní féidir an t-aitheantóir úsáideora (uid) a athrú go %d: aitheantóir " "éifeachtach %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" "Ní féidir an t-aitheantóir grúpa (gid) a athrú go %d: aitheantóir " "éifeachtach %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "" "Ní féidir an dífhabhtóir a thosú; tá an mód dífhabhtaithe díchumasaithe." -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: is comhadlann é" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Níl ainm orm!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, leagan %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1782,314 +1792,314 @@ msgstr "" "Úsáid:\t%s [rogha fada GNU] [rogha] ...\n" "\t%s [rogha fada GNU] [rogha] comhad_scripte ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Roghanna fada GNU:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Roghanna blaoisce:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD nó -c ordú nó -O rogha_shopt\t\t(glaoch amháin)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s nó -o rogha\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Úsáid %s -c 'help set' le haghaidh tuilleadh eolais faoi roghanna blaoisce.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Úsáid '%s -c help' le haghaidh tuilleadh eolais faoi orduithe ionsuite " "blaoisce.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Úsáid an t-ordú 'bashbug' le tuarascáil a sheoladh faoi fhabht.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "leathanach baile bash: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "Cabhair ghinearálta le bogearraí GNU: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: oibríocht neamhbhailí" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Droch-chomhartha" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Crochadh" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Idirbhriseadh" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Scoir" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Treoir mídhleathach" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "Rianú/gaistiú brisphointe" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Treoir ABORT" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Treoir EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Eisceacht snámhphointe" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Maraithe" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Earráid bhus" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Fabht deighilte" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Droch-ghlaoch córais" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Píopa briste" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Clog aláraim" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Críochnaithe" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Staid phráinneach I/A" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Stoptha (comhartha)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Lean ar aghaidh" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Bás macphróisis nó stopadh" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Stoptha (ionchur teirminéil)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Stoptha (aschur teirminéil)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/A ullamh" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Teorainn LAP" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Teorainn chomhad" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Aláram (fíorúil)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Aláram (próifíl)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Fuinneog athraithe" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Glas taifid" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Comhartha úsáideora 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Comhartha úsáideora 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "sonraí ionchuir HFT ar feitheamh" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "teip chumhachta ar tí tarlú" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "cliseadh córais ar tí tarlú" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "bog próiseas go LAP eile" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "earráid ríomhchláraithe" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "mód monatóireachta HFT ceadaithe" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "mód monatóireachta HFT cealaithe" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "seicheamh fuaime HFT críochnaithe" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Iarratas faisnéise" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Comhartha neamhaithnid #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Drochionadú: níl '%s' dúnta i %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: ní féidir liosta a shannadh go ball eagair." -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadaíocht próisis." -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadaíocht próisis." -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "Ní féidir píopa ainmnithe %s a oscailt le haghaidh léamh." -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "Ní féidir píopa ainmnithe %s a oscailt le haghaidh scríofa." -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" "Ní féidir an píopa ainmnithe %s a dhúbailt mar thuairisceoir comhaid %d." -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "ionadú orduithe: tugadh neamhaird ar ghiotán neamhnitheach san ionchur" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadú ordaithe." -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadú ordaithe." -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute: ní feidir an píopa a dhúbailt mar thuairisceoir comhaid " "1." -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: fairsingiú neamhbhailí indíreach" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: ainm neamhbhailí athróige" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: paraiméadar gan socrú." -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: paraiméadar neamhnitheach nó gan socrú." -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: slonn fotheaghráin < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: drochionadú" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ní féidir sannadh mar seo." -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2097,12 +2107,12 @@ msgstr "" "i leaganacha den bhlaosc amach anseo, beidh luachálú mar ionadú uimhríochta " "éigeantach" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "drochionadú: níl '`' dúnta i %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "gan meaitseáil: %s" @@ -2125,21 +2135,21 @@ msgstr "Ag súil le ')'" msgid "`)' expected, found %s" msgstr "Ag súil le ')', ach fuarthas %s." -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: ag súil le hoibreoir dénártha." -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: ag súil le hoibreoir aonártha." -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "']' ar iarraidh" -#: test.c:899 +#: test.c:914 #, fuzzy, c-format msgid "syntax error: `%s' unexpected" msgstr "Earráid chomhréire: ';' gan súil leis." @@ -2148,17 +2158,17 @@ msgstr "Earráid chomhréire: ';' gan súil leis." msgid "invalid signal number" msgstr "Uimhir chomhartha neamhbhailí" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "eval: imithe thar uasleibhéal na láimhseálaithe gaistí (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: drochluach sa liosta_gaistí[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2166,84 +2176,89 @@ msgstr "" "run_pending_traps: is SIG_DFL an láimhseálaí comharthaí; %d (%s) á " "athsheoladh chugam féin." -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: droch-chomhartha %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "Earráid agus sainmhíniú na feidhme '%s' á iompórtáil." -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "Tá an leibhéal blaoisce (%d) ró-ard; á athshocrú go 1." -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: níl comhthéacs feidhme sa scóip reatha." -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: ní féidir luach a shannadh ar an athróg" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: slánuimhir a sannadh go tagairt ainm" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: níl comhthéacs feidhme sa scóip reatha" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "Tá teaghrán easpórtála neamhnitheach ag %s" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "Carachtar neamhbhailí %d sa teaghrán easpórtála le haghaidh %s." -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "Níl '=' sa teaghrán easpórtála le haghaidh %s." -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: ní comhthéacs feidhme é ceann shell_variables" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: níl comhthéacs global_variables ann" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: ní scóip shealadach thimpeallachta é ceann shell_variables" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ní féidir a oscailt mar CHOMHAD" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: luach neamhbhailí le haghaidh tuairisceoir comhaid rianaithe" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: luach comhoiriúnachta as raon" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Cóipcheart © 2012 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2336,12 +2351,16 @@ msgstr "command [-pVv] ORDÚ [ARGÓINT ...]" #: builtins.c:78 #, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFgilnrtux] [-p] [AINM[=LUACH] ...]" #: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFgilnrtux] [-p] AINM[=LUACH] ..." #: builtins.c:82 @@ -2445,7 +2464,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o AINM-ROGHA] [--] [ARGÓINT ...]" #: builtins.c:144 @@ -2493,7 +2513,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] ainm [ainm ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [teorainn]" #: builtins.c:174 @@ -2538,11 +2559,13 @@ msgstr "" "ORDUITHE; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while ORDUITHE1; do ORDUITHE2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until ORDUITHE; do ORDUITHE; done" #: builtins.c:200 @@ -3799,7 +3822,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -3840,7 +3865,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3862,7 +3887,7 @@ msgstr "" " Aischuirtear N, nó teip sa chás nach bhfuil an bhlaosc ag rith feidhme " "nó scripte." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3948,7 +3973,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3970,7 +3995,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4006,7 +4031,7 @@ msgstr "" " Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go bhfuil " "AINM neamhbhailí." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4027,7 +4052,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4045,7 +4070,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear rath ach sa chás go bhfuil N diúltach, nó níos mó ná $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4070,7 +4095,7 @@ msgstr "" "AINM_COMHAID.\n" " Teipeann air sa chás nach féidir AINM_CHOMHAID a léamh." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4097,7 +4122,7 @@ msgstr "" " Aischuirtear rath ach sa chás nach bhfuil rialú tascanna cumasaithe,\n" " nó go dtarlaíonn earráid." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4180,7 +4205,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4193,7 +4218,7 @@ msgstr "" " caithfear \"]\" go díreach a bheith ann mar an argóint\n" " dheireanach, le bheith comhoiriúnach leis an \"[\" ag an tús." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4213,7 +4238,7 @@ msgstr "" " Stádas Scortha:\n" " Éiríonn leis i gcónaí." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4257,7 +4282,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4287,7 +4312,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4337,7 +4362,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4371,7 +4396,7 @@ msgstr "" " Aischuirtear rath ach sa chás go bhfuil MÓD neamhbhailí\n" " nó go sonraítear rogha neamhbhailí." -#: builtins.c:1502 +#: builtins.c:1503 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4428,7 +4453,7 @@ msgstr "" "tá\n" " AITHEANTAS neamhbhailí nó má sonraítear rogha neamhbhailí." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4455,7 +4480,7 @@ msgstr "" " ordú má tá AITHEANTAS_PRÓISIS neamhbhailí nó má shonraítear\n" " rogha neamhbhailí." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4477,7 +4502,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4508,7 +4533,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4528,7 +4553,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4557,7 +4582,7 @@ msgstr "" " Stádas Scortha:\n" " Is é stadas aischuir PÍBLÍNE an stádas aischuir ó \"time\"." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4575,7 +4600,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4610,12 +4635,14 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas scortha an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -4628,12 +4655,14 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe deireanach a ritheadh." -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -4646,7 +4675,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe deireanach a ritheadh." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4668,7 +4697,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuireann an t-ordú \"coproc\" stádas scortha de 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -4692,7 +4721,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear rath mura bhfuil AINM inléite amháin." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4710,7 +4739,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4733,7 +4762,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an taisc atosaithe." -#: builtins.c:1726 +#: builtins.c:1727 #, fuzzy msgid "" "Evaluate arithmetic expression.\n" @@ -4754,7 +4783,7 @@ msgstr "" " Aischuirtear 1 más 0 an luach atá ag SLONN; aischuirtear 0 i gcásanna " "eile." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -4782,7 +4811,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4888,7 +4917,7 @@ msgstr "" " HISTIGNORE\tLiosta deighilte le hidirstaid de phatrúin a shonraíonn\n" " \t\tna horduithe a chuirfear leis an liosta staire.\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -4947,7 +4976,7 @@ msgstr "" " Aischuirtear rath ach sa chás go sonraítear argóint neamhbhailí, nó\n" " go dteipeann ar an athrú comhadlainne." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5003,7 +5032,7 @@ msgstr "" " Aischuirtear rath ach sa chás go sonraítear argóint neamhbhailí, nó\n" " go dteipeann ar an athrú comhadlainne." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5060,7 +5089,7 @@ msgstr "" " Aischuirtear rath muna bhfuil rogha neamhbhailí ann nó muna tharla " "earráid." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5099,7 +5128,7 @@ msgstr "" "thugtar\n" " rogha neamhbhailí, nó má tá AINM_ROGHA díchumasaithe." -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5122,6 +5151,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -5138,7 +5169,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5169,7 +5200,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5192,7 +5223,7 @@ msgstr "" " Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go " "dtarlaíonn earráid." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5252,7 +5283,7 @@ msgstr "" " Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí, nó nach\n" " bhfuil sonrú iomlánaithe ann le haghaih AINM." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5340,7 +5371,7 @@ msgstr "" "bhfuil\n" " EAGAR inléite amháin, nó nach eagar innéacsaithe é EAGAR." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5350,6 +5381,10 @@ msgstr "" " \n" " Comhchiallach le \"mapfile\"." +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: eochair neamhbhailí eagair chomhthiomsaithigh" + #~ msgid "" #~ "Returns the context of the current subroutine call.\n" #~ " \n" diff --git a/po/gl.gmo b/po/gl.gmo index 36e79c597..ba7923daf 100644 Binary files a/po/gl.gmo and b/po/gl.gmo differ diff --git a/po/gl.po b/po/gl.po index ae2841891..4f1cd40a3 100644 --- a/po/gl.po +++ b/po/gl.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2012-02-23 14:38+0100\n" "Last-Translator: Leandro Regueiro \n" "Language-Team: Galician \n" @@ -28,59 +28,54 @@ msgstr "" msgid "bad array subscript" msgstr "subíndice de matriz incorrecto" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: non é posíbel converter a matriz de indizada a asociativa" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: índice de matriz asociativa non válido" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: non é posíbel asignar a un índice que non é numérico" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: se debe usar un subíndice ao asignar a unha matriz asociativa" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: non foi posíbel crear: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: non foi posíbel atopar a combinación de teclas " "para a orde" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: o primeiro carácter que non é espazo en branco non é `\"'" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "no hai un `%c' que peche en %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: falta un `:' separador" -#: bashline.c:4555 +#: bashline.c:4733 #, fuzzy, c-format msgid "`%s': cannot unbind in command keymap" msgstr "%s: non se pode borrar a asignación" @@ -100,7 +95,7 @@ msgstr "" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nome de alias non válido" @@ -177,7 +172,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME non está definido" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "demasiados argumentos" @@ -205,7 +200,7 @@ msgstr "aviso: " msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: a opción require un argumento" @@ -220,7 +215,7 @@ msgstr "%s: requírese un argumento numérico" msgid "%s: not found" msgstr "%s: non se atopou" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: opción non válida" @@ -230,7 +225,7 @@ msgstr "%s: opción non válida" msgid "%s: invalid option name" msgstr "%s: nome de opción non válido" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': non é un identificador válido" @@ -243,7 +238,7 @@ msgstr "número octal non válido" msgid "invalid hex number" msgstr "número hexadecimal non válido" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "número non válido" @@ -257,88 +252,93 @@ msgstr "%s: especificación de sinal non válida" msgid "`%s': not a pid or valid job spec" msgstr "`%s': no é un pid ou unha especificación válida de traballo" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: variábel de só lectura" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: non é posíbel borrar" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fóra de rango" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argumento" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s fóra de rango" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: non existe ese traballo" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: no hai control de traballos" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "no ha control de traballos" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: restrinxido" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "restrinxido" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: no é una orde interna do shell" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "erro de escritura: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "erro ao estabelecer os atributos da terminal: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "erro ao obtener os atributos da terminal: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: erro ao obtener o directorio actual: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: especificación de traballo ambigüa" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: non é posíbel borrar: %s é de só lectura" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: non é posíbel borrar" @@ -348,108 +348,108 @@ msgstr "%s: non é posíbel borrar" msgid "%s: invalid action name" msgstr "%s: nome de acción non válido" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: non hai completado de especificación" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "aviso: é posíbel que a opción -F non funcione como se espera" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "aviso: é posíbel que a opción -C non funcione como se espera" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "non se está executando a función de completado" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "só se pode usar dentro dunha función" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "non se pode use `-f' para facer funcións" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: función de só lectura" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" msgstr "`%s': nome de alias non válido" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "non se pode use `-f' para facer funcións" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: función de só lectura" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: non é posíbel destruír variábeis de matriz desta forma" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: non é posíbel converter unha matriz asociativa a indizada" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "a carga dinámica non está dispoñíbel" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "non é posíbel abrir o obxecto compartido %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "non é posíbel atopar %s no obxecto compartido %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, fuzzy, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: non foi cargado dinamicamente" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: non foi cargado dinamicamente" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: non foi posíbel eliminar: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: é un directorio" @@ -464,7 +464,7 @@ msgstr "%s: non é un ficheiro regular" msgid "%s: file is too large" msgstr "%s: o ficheiro é demasiado grande" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: non é posíbel executar o ficheiro binario" @@ -560,12 +560,12 @@ msgstr "" "non hai temas de axuda que coincidan con «%s». Probe «help help» ou «man -k " "%s» ou «info %s»" -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: non foi posíbel abrir: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -586,21 +586,21 @@ msgstr "" "Un asterisco (*) xunto a un nome significa que a orde está desactivada.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "non foi posíbel usar máis dun de -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "posición no historial" -#: builtins/history.def:340 +#: builtins/history.def:338 #, fuzzy, c-format msgid "%s: invalid timestamp" msgstr "%s: nome de opción non válido" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: fallou a expansión do historial" @@ -623,78 +623,78 @@ msgstr "%s: os argumentos deben ser procesos ou IDs de traballos" msgid "Unknown error" msgstr "Erro descoñecido" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "agardábase unha expresión" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: non é unha matriz indizada" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificación de descritor de ficheiro non válida" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descritor de ficheiro non válido: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: conta de liñas non válida" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: orixe de matriz non válido" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum de chamada non válido" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "nome de variábel de matriz baleiro" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "requírese a compatibilidade de variábel de matriz" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "`%s': falta o carácter de formato" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': especificación de formato de tempo non válida" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "`%c': carácter de formato non válido" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "falta o díxito hexadecimal para \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "falta o díxito unicode para \\%c" @@ -846,12 +846,12 @@ msgstr "" " \n" " A orde interna `dirs' mostra a pila de directorios." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: especificación de tempo de expiración non válida" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "erro de lectura: %d: %s" @@ -864,7 +864,7 @@ msgstr "só se pode usar «return» nunha función ou guión lido con «source» msgid "cannot simultaneously unset a function and a variable" msgstr "non é posíbel borrar ao mesmo tempo unha función e unha variábel" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: non é unha variábel de matriz" @@ -883,11 +883,11 @@ msgstr "%s: non é posíbel borrar" msgid "shift count" msgstr "conta de shift" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "non é posíbel activar e desactivar opcións do shell simultaneamente" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome de opción do shell non válido" @@ -954,16 +954,16 @@ msgstr "%s: límite de argumento non válido" msgid "`%c': bad command" msgstr "`%c': orde errónea" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: non é posíbel obter o límite: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "límite" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: non é posíbel modificar o límite: %s" @@ -982,7 +982,7 @@ msgstr "`%c': operador de modo simbólico non válido" msgid "`%c': invalid symbolic mode character" msgstr "`%c': carácter de modo simbólico non válido" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " liña " @@ -1002,96 +1002,106 @@ msgstr "Abortando…" msgid "INFORM: " msgstr "" -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "aviso: " + +#: error.c:488 msgid "unknown command error" msgstr "erro de orde descoñecido" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "tipo de orde erróneo" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "conector erróneo" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "salto erróneo" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: variable sen asignar" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aexpirou mentres agardaba algunha entrada: auto-logout\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "non é posíbel redirixir a saída estándar desde /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': carácter de formato non válido" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "erro de canalización" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restrinxido: non se pode especificar `/' en nomes de ordes" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: non se atopou a orde" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: non é posíbel executar o ficheiro binario" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: intérprete erróneo" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: non é posíbel executar o ficheiro binario" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s é unha orde interna do shell\n" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "no se pode duplicar o df %d ao df %d" @@ -1104,71 +1114,71 @@ msgstr "excedeuse o nivel de recursión da expresión" msgid "recursion stack underflow" msgstr "desbordamento da base da pila de recursión" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "erro de sintaxe na expresión" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "tentouse asignar a algo que non é unha variábel" -#: expr.c:530 +#: expr.c:531 #, fuzzy msgid "syntax error in variable assignment" msgstr "erro de sintaxe na expresión" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "división entre 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "erro: elemento de asignación de expresión erróneo" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "agardábase `:' para a expresión condicional" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "expoñente menor que 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "agardábase un identificador despois do pre-incremento ou pre-decremento" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "falta un `)'" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "erro de sintaxe: agardábase un operando" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "erro de sintaxe: operador aritmético non válido" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (o elemento de erro é \"%s\")" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "base aritmética non válida" -#: expr.c:1582 +#: expr.c:1587 #, fuzzy msgid "invalid integer constant" msgstr "%s: conta de liñas non válida" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "valor demasiado grande para a base" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: erro de expresión\n" @@ -1177,7 +1187,7 @@ msgstr "%s: erro de expresión\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: non é posíbel acceder aos directorios pai" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "non é posíbel restabelecer o modo nodelay para o df %d" @@ -1199,168 +1209,168 @@ msgstr "" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: tubería de pgrp" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "o pid `forked' %d aparece no traballo en execución %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "borrando o trabajo detido %d con grupo de proceso %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) márcase como vivo aínda" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: non existe tal pid" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Sinal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Feito" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Detido" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Detido(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "En execución" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Feito(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Saída %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Estado descoñecido" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(«core» xerado) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (dir agora: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid fillo (%ld a %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld non é un proceso fillo desta shell" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Non hai un rexistro do proceso %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: o traballo %d está detido" -#: jobs.c:3564 +#: jobs.c:3551 #, fuzzy, c-format msgid "%s: no current jobs" msgstr "%s: non existe ese traballo" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: o traballo rematou" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: o trabajo %d xa está en segundo plano" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: actívase WNOHANG para evitar o bloque indefinido" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: liña %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " («core» generado)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(dir agora: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs_control: fallou getpgrp" -#: jobs.c:4447 +#: jobs.c:4434 #, fuzzy msgid "initialize_job_control: no job control in background" msgstr "initialize_jobs_control: disciplina de liña" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_jobs_control: disciplina de liña" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_jobs_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "non é posíbel estabelecer o grupo de procesos de terminal (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "non hai control de trabalos nesta shell" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: fallou a aserción: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1369,51 +1379,51 @@ msgstr "" "\r\n" "malloc: %s:%d: aserción arruinada\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "descoñecido" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: bloque na lista libre sobreescrito" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: chamouse cun argumento de bloque previamente liberado" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: chamouse cun argumento de bloque sen asignar" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 #, fuzzy msgid "free: underflow detected; magic8 corrupted" msgstr "free: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: os tamaños dos anacos de inicio e fin son diferentes" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: chamouse cun argumento de bloque sen asignar" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "realloc: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 #, fuzzy msgid "realloc: underflow detected; magic8 corrupted" msgstr "" "realloc: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: os tamaños dos anacos de inicio e fin son diferentes" @@ -1455,23 +1465,23 @@ msgstr "%s: especificación de ruta de rede errónea" msgid "network operations not supported" msgstr "non hai compatibilidade para operacións de rede" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL non se pode cambiar a configuración rexional (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" "setlocale: LC_ALL: non se pode cambiar a configuración rexional (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s): %s" @@ -1489,140 +1499,140 @@ msgstr "Ten unha nova mensaxe en $_" msgid "The mail in %s has been read\n" msgstr "O correo en %s foi lido\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "error de sintaxe: requírese unha expresión aritmética" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "error sintáctico: `;' non esperado" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "erro de sintaxe: `((%s))'" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo de instrución %d erróneo" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "o documento-aquí na liña %d está delimitado por fin-de-fichero (agardábase `" "%s')" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: a instrucción de redirección `%d' está fóra de rango" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF inesperado mentres se buscaba un `%c' coincidente" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "EOF inesperado mentres se buscaba `]]'" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "error de sintaxe na expresión condicional: elemento inesperado `%s'" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "error sintáctico na expresión condicional" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "elemento inesperado `%s', agardábase `)'" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "agardábase `)'" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento inesperado `%s' para o operador unario condicional" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para o operador unario condicional" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "elemento inesperado `%s', agardábase un operador binario condicional" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "agardábase un operador binario condicional" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento inesperado `%s' para o operador binario condicional" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para o operador binario condicional" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "elemento inesperado `%c' na orde condicional" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "elemento inesperado `%s' na orde condicional" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "elemento inesperado %d na orde condicional" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "error de sintaxe perto do elemento inesperado `%s'" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "erro de sintaxe cerca de «%s»" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "error de sintaxe: non se agardaba o final do fichero" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "erro de sintaxe" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use «%s» para deixar o shell.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF non agardado mentres se buscaba un «)» coincidente" @@ -1660,94 +1670,94 @@ msgstr "xtrace_set: punteiro a ficheiro NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != numfich xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': carácter de formato non válido" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "descritor de ficheiro fóra de rango" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redireccionamento ambigüo" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: non se pode sobreescribir un fichero existente" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restrinxido: no se pode redirixir a saída" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "non se pode crear un fichero temporal para o documento-aquí: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: non é posíbel asignar o gd á variábel" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "non se admite /dev/(tcp|udp)/anfitrion/porto sen rede" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "erro de redirección: non é posíbel duplicar o fd" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "non é posíbel atopar /tmp, por favor creeo!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp debe ser un nome de directorio válido" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opción non válida" -#: shell.c:1319 +#: shell.c:1343 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "non é posíbel restabelecer o modo nodelay para o df %d" -#: shell.c:1330 +#: shell.c:1354 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "non é posíbel restabelecer o modo nodelay para o df %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1632 +#: shell.c:1658 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: é un directorio" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Non teño nome!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versión %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1756,314 +1766,314 @@ msgstr "" "Uso:\t%s [opción GNU longa] [opción] ...\n" "\t%s [opción GNU longa] [opción] guión-do-shell\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Opcións GNU longas:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Opcións do shell:\n" -#: shell.c:2043 +#: shell.c:2069 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD o -c orde ou -O opcion_shopt\t\t(só invocación)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ou -o opción\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Escriba `%s -c \"help set\"' para máis información sobre as opcións do " "shell.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Escriba `%s -c help' para máis información sobre as ordes internas do " "shell.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use a orden `bashbug' para reportar erros.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operación non válida" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Sinal ambigüa" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Colgar" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Interromper" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Saír" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Instrución ilegal" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "BPT rastreo/captura" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "instrución ABORT" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "instrución EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Excepción de coma flotante" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Matado" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Erro no bus" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Violación de segmento" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Chamada ao sistema errónea" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Tubería rota" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Temporizador" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Rematado" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Condicón de E/s urxente" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Detido (sinal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Continúa" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "O proceso fillo morreu ou está parado" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Detido (entrada pola terminal)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Detido (saída pola terminal)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "E/S listas" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Límite de CPU" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Límite de ficheiros" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarma (virtual)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarma (contorno)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Xanela cambiada" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Bloqueo de gravación" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Sinal de usuario 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Sinal de usuario 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "entrada de datos HFT pendente" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "fallo de enerxía inminente" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "caída do sistema inminente" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "migrando o proceso a outra CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "erro de programación" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "o modo monitor HFT foi concedido" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "o modo monitor HTF foi retirado" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "a secuencia de son HFT foi completada" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Solicitude de información" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Sinal descoñecido #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "susbtitución errónea: non hai un `%s' que peche en %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: no é posíbel asignar unha lista a un membro da matriz" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "non é posíbel crear a tubería para a sustitución do proceso" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "non é posíbel crear un proceso fillo para a substitución do proceso" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "non é posíbel abrir a tubería chamada %s para lectura" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "non é posíbel abrir a tubería chamada %s para escritura" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "non é posíbel duplicar a tubería chamada %s como df %d" -#: subst.c:6213 +#: subst.c:6370 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "substitución errónea: non hai unha \"`\" que peche en %s" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "non é posíble crear a tubería para a substitución da orde" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "non é posíbel crear un proceso fillo para a substitución da orde" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: non é posíbel duplicar a tubería como fd 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: conta de liñas non válida" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "`%s': nome de alias non válido" -#: subst.c:7256 +#: subst.c:7478 #, fuzzy, c-format msgid "%s: parameter not set" msgstr "%s: parámetro nulo ou non estabelecido" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parámetro nulo ou non estabelecido" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expresión de subcadea < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: substitución errónea" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: non é posíbel asignar de esta forma" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2071,12 +2081,12 @@ msgstr "" "versiones futuras do intérprete obligarán a evaluación como unha " "substitución aritmética" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substitución errónea: non hai unha \"`\" que peche en %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "non hai concidencia: %s" @@ -2099,21 +2109,21 @@ msgstr "agardábase `)'" msgid "`)' expected, found %s" msgstr "`)' agardábase, atopouse %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: agardábase un operador binario" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: agardábase un operador unario" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "falta un «]»" -#: test.c:899 +#: test.c:914 #, fuzzy, c-format msgid "syntax error: `%s' unexpected" msgstr "error sintáctico: `;' non esperado" @@ -2122,17 +2132,17 @@ msgstr "error sintáctico: `;' non esperado" msgid "invalid signal number" msgstr "número de sinal non válido" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: valor erróneo en trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2140,86 +2150,91 @@ msgstr "" "run_pending_traps: o manexador de sinal é SIG_DFL, reenviando %d (%s) a sí " "mesmo" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinal errónea %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "erro ao importar a definición da función para «%s»" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "o nivel de shell (%d) é demasiado alto, restabelécese a 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: non hai contexto de función no ámbito actual" -#: variables.c:2693 +#: variables.c:2661 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: non é posíbel asignar o gd á variábel" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: non hai contexto de función no ámbito actual" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s ten exportstr nulo" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carácter non válido %d en exportsrt para %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "non hai «=» en exportstr para %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: a cabezak de shell_variables non é un contexto de función" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: non é un contexto global_variables " -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: a cabeza de shell_variables non é un ámbito de ambiente temporal" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: non é posíbel abrir como FICHEIRO" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" -#: variables.c:6437 +#: variables.c:6450 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s fóra de rango" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" #: version.c:47 version2.c:47 @@ -2314,12 +2329,16 @@ msgstr "command [-pVv] orde [arg ...]" #: builtins.c:78 #, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFgilrtux] [-p] [nome[=valor] ...]" #: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFgilrtux] [-p] nome[=valor] ..." #: builtins.c:82 @@ -2422,7 +2441,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opción] [--] [arg ...]" #: builtins.c:144 @@ -2472,7 +2492,7 @@ msgstr "type [-afptP] nome [nome ...]" #: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [límite]" #: builtins.c:174 @@ -2516,11 +2536,13 @@ msgid "" msgstr "if ORDES; then ORDES; [ elif ORDES; then ORDES; ]...[ else ORDES; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while ORDES; do ORDES; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until ORDES; do ORDES; done" #: builtins.c:200 @@ -3509,7 +3531,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -3550,7 +3574,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3562,7 +3586,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3648,7 +3672,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3670,7 +3694,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3689,7 +3713,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3710,7 +3734,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -3721,7 +3745,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3735,7 +3759,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -3761,7 +3785,7 @@ msgstr "" " Devolve con éxito a menos que non estea activo o control de traballos o\n" " se produza un erro." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3844,7 +3868,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3856,7 +3880,7 @@ msgstr "" " Este é un sinónimo para a orde interna \"test\", pero o último\n" " argumento debe ser un `]' literal, que coincida co `[' inicial." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -3875,7 +3899,7 @@ msgstr "" " Estado de saída:\n" " Sempre con éxito." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -3919,7 +3943,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -3949,7 +3973,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -3999,7 +4023,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4017,7 +4041,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4049,7 +4073,7 @@ msgid "" " children." msgstr "" -#: builtins.c:1533 +#: builtins.c:1534 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4074,7 +4098,7 @@ msgstr "" " Devolve o estado de ID; falla se ID non é válido ou se se fornece unha\n" " opción non válida." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4096,7 +4120,7 @@ msgstr "" " Estado de Saída:\n" " Devuelve o estado da última orden executada." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4126,7 +4150,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4146,7 +4170,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4162,7 +4186,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4180,7 +4204,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4201,12 +4225,14 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -4219,12 +4245,14 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -4237,7 +4265,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1671 +#: builtins.c:1672 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -4260,7 +4288,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado de saída da ORDE." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -4274,7 +4302,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4292,7 +4320,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4306,7 +4334,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1726 +#: builtins.c:1727 #, fuzzy msgid "" "Evaluate arithmetic expression.\n" @@ -4325,7 +4353,7 @@ msgstr "" " Estado de Saída:\n" " Devolve 1 se a EXPRESIÓN avalía a 0; devovle 0 de outra maneira." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -4353,7 +4381,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4407,7 +4435,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1821 +#: builtins.c:1822 #, fuzzy msgid "" "Add directories to stack.\n" @@ -4456,7 +4484,7 @@ msgstr "" " \n" " A orde interna `dirs' mostra a rima de directorios." -#: builtins.c:1855 +#: builtins.c:1856 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -4503,7 +4531,7 @@ msgstr "" " \n" " A orde interna `dirs' mostra a pila de directorios." -#: builtins.c:1885 +#: builtins.c:1886 #, fuzzy msgid "" "Display directory stack.\n" @@ -4553,7 +4581,7 @@ msgstr "" "\tlista mostrada por dirs cando se chama sen opcións,\n" "\tcomezando desde cero." -#: builtins.c:1916 +#: builtins.c:1917 #, fuzzy msgid "" "Set and unset shell options.\n" @@ -4590,7 +4618,7 @@ msgstr "" " Devolve con éxito se se activa NOME_OPCIÓN; falla se se fornece\n" " unha opción non válida ou NOME_OPCIÓN está desactivado." -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4613,6 +4641,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -4629,7 +4659,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4660,7 +4690,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4682,7 +4712,7 @@ msgstr "" " Devolve con éxito a menos que se forneza unha opción non válida o\n" " se produza un erro." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -4714,7 +4744,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4756,7 +4786,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4766,6 +4796,10 @@ msgstr "" " \n" " Un sinónimo de `mapfile'." +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: índice de matriz asociativa non válido" + #, fuzzy #~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." #~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." diff --git a/po/hr.gmo b/po/hr.gmo index a7506358e..228b369ee 100644 Binary files a/po/hr.gmo and b/po/hr.gmo differ diff --git a/po/hr.po b/po/hr.po index f68280b6b..624e0d010 100644 --- a/po/hr.po +++ b/po/hr.po @@ -3,78 +3,73 @@ # This file is distributed under the same license as the bash package. # # Tomislav Krznar , 2012, 2013. -# Božidar Putanec , 2018, 2019, 2020, 2021. +# Božidar Putanec , 2018, 2019, 2020, 2021, 2022. msgid "" msgstr "" -"Project-Id-Version: bash 5.1\n" +"Project-Id-Version: bash 5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2021-01-02 13:56-0800\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-06-17 11:19-0700\n" "Last-Translator: Božidar Putanec \n" "Language-Team: Croatian \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Lokalize 19.12.3\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Lokalize 22.07.70\n" #: arrayfunc.c:66 msgid "bad array subscript" msgstr "loši indeks polja" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: uklanjamo atribut nameref" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: nije moguće pretvoriti indeksirano polje u asocijativno polje" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: nevaljan ključ asocijativnog polja" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nenumerički indeks nije moguć" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: indeks je nužan pri dodjeli asocijativnom polju" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nije moguće stvoriti: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: nije moguće pronaći prečac (keymap) za naredbu" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: prvi nebijeli znak nije „\"“" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "nema zaključnog „%c“ u %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: nedostaje separator (dvotočka)" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "„%s“: nije moguće razvezati prečac (keymap) za naredbu" @@ -95,7 +90,7 @@ msgstr "zamjena vitičastih zagrada: nema dovoljno memorije za %u elemenata" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "zamjena vitičastih zagrada: nema dovoljno memorije za „%s“" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: ime aliasa nije valjano" @@ -166,7 +161,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME nije definiran" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "previše argumenata" @@ -193,7 +188,7 @@ msgstr "upozorenje: " msgid "%s: usage: " msgstr "%s: uporaba: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: opcija zahtijeva argument" @@ -208,7 +203,7 @@ msgstr "%s: nužan je numerički argument" msgid "%s: not found" msgstr "%s: nije nađeno" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: nevaljana opcija" @@ -218,7 +213,7 @@ msgstr "%s: nevaljana opcija" msgid "%s: invalid option name" msgstr "%s: nevaljano ime za opciju" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: nije valjano ime" @@ -231,7 +226,7 @@ msgstr "nevaljan oktalni broj" msgid "invalid hex number" msgstr "nevaljan heksadecimalni broj" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "nevaljan broj" @@ -245,88 +240,93 @@ msgstr "%s: nevaljana specifikacija signala" msgid "`%s': not a pid or valid job spec" msgstr "„%s“: nije PID ili nije valjana oznaka posla" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: je samo-za-čitanje varijabla" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s: nije moguće pridružiti" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s je izvan raspona" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s je izvan raspona" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" -msgstr "%s: nema takvoga posla" +msgstr "%s: nema takvog posla" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: nema upravljanja poslovima" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "nema upravljanja poslovima" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: ograničeni način rada" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "ograničeni način rada" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: nije ugrađena naredba ljuske" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "greška pisanja: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "greška pri postavljanju svojstava terminala: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "greška pri preuzimanju svojstava terminala: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: greška u određivanju trenutnog direktorija: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: oznaka posla nije jednoznačna" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "u ovoj inačici pomoć nije dostupna" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nije moguće izbrisati: %s je samo-za-čitanje" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: nije moguće izbrisati" @@ -336,108 +336,108 @@ msgstr "%s: nije moguće izbrisati" msgid "%s: invalid action name" msgstr "%s: nevaljano ime za akciju" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: nema specifikacije za dovršavanje" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "upozorenje: opcija -F možda neće raditi prema očekivanju" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "upozorenje: opcija -C možda neće raditi prema očekivanju" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "funkcija dovršavanja trenutno ne radi" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "može se koristiti samo u funkciji" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "„-f“ se ne može koristiti za definiranje funkcija" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: je samo-za-čitanje funkcija" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: referentna varijabla ne može biti polje (array)" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: nameref varijablu nije dopušteno samoreferencirati" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: kružna referencija imena" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "„%s“: nevaljano ime varijable za referenciju imena" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "„-f“ se ne može koristiti za definiranje funkcija" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: je samo-za-čitanje funkcija" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: dodjela vrijednosti u navodnicima složenom polju je zastarjela" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: nije moguće uništiti varijable polja na ovaj način" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nije moguće pretvoriti asocijativno u indeksirano polje" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: dodjela vrijednosti u navodnicima složenom polju je zastarjela" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "dinamičko učitavanje nije dostupno" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "nije moguće otvoriti dijeljeni objekt %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "nije moguće pronaći %s u dijeljenom objektu %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: dinamički učitljiva ugrađena naredba već je učitana" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "funkcija učitavanja za %s završila je s greškom (%d): nije učitano" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: nije dinamički učitan" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: nije moguće izbrisati: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: je direktorij" @@ -452,7 +452,7 @@ msgstr "%s: nije obična datoteka" msgid "%s: file is too large" msgstr "%s: datoteka je prevelika" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nije moguće izvršiti binarnu datoteku" @@ -489,7 +489,7 @@ msgstr "nijedna naredba nije nađena" #: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 #: builtins/fc.def:412 msgid "history specification" -msgstr "prikaz povijesti" +msgstr "specifikacija povijesti" #: builtins/fc.def:444 #, c-format @@ -551,12 +551,12 @@ msgstr "" "Nema pomoći za „%s“.\n" "Pokušajte s „help help“, „man -k %s“ ili „info %s“." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: Nije moguće otvoriti: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -576,21 +576,21 @@ msgstr "" "Zvjezdica (*) pokraj imena znači da je naredba onemogućena.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "moguć je samo jedan od -a, -n, -r ili -w" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "pozicija u povijesti" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: nevaljan vremenski žig" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: proširenje povijesti nije uspjelo" @@ -613,78 +613,78 @@ msgstr "%s: argumenti moraju biti ID-ovi procesa ili ID-ovi posla" msgid "Unknown error" msgstr "Nepoznata greška" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "očekivan je izraz" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: nije indeksirano polje" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: nevaljana specifikacija deskriptora datoteke" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: nevaljan deskriptor datoteke: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: nevaljan broj (količina) redaka" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: nevaljan početak polja (nevaljan indeks polja)" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: nevaljana količina (redaka između poziva)" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "prazno ime varijable polja" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "nužna je podrška za varijable (vrsta) polje" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "„%s“: nedostaje znak u specifikaciji formata" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: nevaljana specifikacija za format vremena" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: nevaljan znak u specifikaciji formata" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "upozorenje: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "problem s raščlanjivanjem formata: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "nedostaje heksadecimalna znamenka za \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "nedostaje unikodna (unicode) znamenka za \\%c" @@ -782,9 +782,9 @@ msgstr "" "\n" " Argumenti:\n" " +N Zarotira stȏg tako, da N-ti direktorij u stȏgu (brojeći od nule s\n" -" lijeve strane popisa prikazanoga s „dirs“) postane novi vrh stȏga.\n" +" lijeve strane popisa pokazanog s „dirs“) postane novi vrh stȏga.\n" " -N Zarotira stȏg tako, da N-ti direktorij u stȏgu (brojeći od nule s\n" -" desne strane popisa prikazanoga s „dirs“) postane novi vrh stȏga.\n" +" desne strane popisa pokazanog s „dirs“) postane novi vrh stȏga.\n" " DIREKTORIJ Doda DIREKTORIJ na vrh stȏga direktorija i\n" " učini ga novim trenutnim radnim direktorijem.\n" "\n" @@ -820,20 +820,20 @@ msgstr "" "\n" " Argumenti:\n" " +N Ukloni da N-ti direktorij iz stȏga brojeći od nule s lijeve\n" -" strane popisa prikazanoga s „dirs“. Na primjer: „popd +0“\n" +" strane popisa pokazanog s „dirs“. Na primjer: „popd +0“\n" " ukloni prvi, a „popd +1“ ukloni drugi direktorij.\n" " +N Ukloni da N-ti direktorij iz stȏga brojeći od nule s desne\n" -" strane popisa prikazanoga s „dirs“. Na primjer.: „popd -0“\n" +" strane popisa pokazanog s „dirs“. Na primjer.: „popd -0“\n" " ukloni zadnji, a „popd -1“ ukloni predzadnji direktorij.\n" "\n" " Naredba „dirs“ prikaže trenutni sadržaj stȏga direktorija." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: nevaljana specifikacija za istek vremena (timeout)" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "greška čitanja: %d: %s" @@ -846,7 +846,7 @@ msgstr "„return“ je moguć samo iz funkcije ili iz skripte pokrenute sa „s msgid "cannot simultaneously unset a function and a variable" msgstr "nije moguće istovremeno poništiti funkciju i varijablu" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: nije varijabla (vrste) polja" @@ -865,11 +865,11 @@ msgstr "%s: Nije moguće izvesti (export)" msgid "shift count" msgstr "broj (veličina) pomaka" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "nije moguće istovremeno postaviti i poništiti opcije ljuske" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nevaljano ime za opciju ljuske" @@ -936,16 +936,16 @@ msgstr "%s: nevaljan argument za ograničenje" msgid "`%c': bad command" msgstr "„%c“: loša naredba" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nije moguće odrediti vrijednost ograničenja: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "ograničenje" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nije moguće promijeniti ograničenja: %s" @@ -964,7 +964,7 @@ msgstr "„%c“: nevaljan operator u simboličkom načinu" msgid "`%c': invalid symbolic mode character" msgstr "„%c“: nevaljan znak u simboličkom načinu" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " redak " @@ -984,96 +984,106 @@ msgstr "Prekidamo..." msgid "INFORM: " msgstr "informacija: " -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "Dijagnostičko upozorenje: " + +#: error.c:488 msgid "unknown command error" msgstr "nepoznata greška naredbe" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "loša vrsta naredbe" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "loš konektor" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "loš skok" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: nevezana varijabla" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\avrijeme čekanja na ulaz je isteklo: automatska-odjava\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "nije moguće preusmjeriti standardni ulaz iz /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: nevaljan znak za format" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc(): coproc [%d:%s] još uvijek postoji" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "greška cijevi" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: prekoračena je dopuštena razina (dubina) gniježđenja eval (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: prekoračena je dopuštena razina gniježđenja source (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: prekoračena je dopuštena razina gniježđenja funkcije (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ograničenje : znak „/“ nije dopušten u imenima naredba" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: naredba nije pronađena" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: nije moguće izvršiti: potrebna datoteka nije nađena" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: loš interpreter" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: binarnu datoteku %s nije moguće pokrenuti/izvršiti" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "„%s“ je specijalna funkcija ugrađena u ljusku" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nije moguće duplicirati deskriptor datoteke %d u deskriptor datoteke %d" @@ -1086,68 +1096,68 @@ msgstr "prekoračena je dopuštena razina rekurzija izraza" msgid "recursion stack underflow" msgstr "podlijevanje stȏga rekurzija (prazni stȏg)" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "sintaktička greška u izrazu" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "pokušaj dodjeljivanja ne-varijabli (objektu koji nije varijabla)" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "sintaktička greška u dodjeljivanju varijabli" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "dijeljenje s 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "**interna greška** : loš simbol u izrazu za dodjelu" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "znak „:“ je nužan u uvjetnom izrazu" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "eksponent je manji od 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "očekivalo se ime nakon pre-increment ili pre-decrement" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "nedostaje „)“" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "sintaktička greška: očekivan je operand" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "sintaktička greška: nevaljan aritmetički operator" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (simbol greške je „%s“)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "nevaljana aritmetička baza" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "%s: nevaljana cijelo brojna (integer) konstanta" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "vrijednost baze je prevelika" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: greška u izrazu\n" @@ -1156,7 +1166,7 @@ msgstr "%s: greška u izrazu\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd(): nije moguće pristupiti nadređenim direktorijima" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nije moguće onemogućiti „nodelay” način za deskriptor datoteke %d" @@ -1175,167 +1185,167 @@ msgstr "save_bash_input(): međuspremnik već postoji za novi datotečni deskrip msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline(): pgrp pipe (procesna skupina cijevi)" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: PETLJA: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: PETLJA: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "račvani PID %d pripada tekućem poslu %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "uklanjamo zaustavljeni posao %d sa skupinom procesa %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process(): PID %5ld (%s) označen kao još uvijek aktivan" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid(): %ld: PID ne postoji" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Gotovo" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Zaustavljeno" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Zaustavljeno(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Pokrenuto" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Gotovo(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Izlaz %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Nepoznata izlazna vrijednost (izlazni kȏd)Nepoznato" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(snimka (core dump) memorije je spremljena!) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "promijeni skupinu potomka (% ld u% ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: PID %ld nije potomak ove ljuske" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: proces %ld nije nigdje registriran" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: posao %d je zaustavljen" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: nema tekućih poslova" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: posao je završen" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: posao %d je već u pozadini" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld(): WNOHANG je omogućen kako bi se izbjeglo neograničeno blokiranje" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: redak %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (snimka (core dump) memorije je spremljena!)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(radni direktorij je sada: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp() nije uspješna" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: nema upravljanja poslom u pozadini" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplina retka (protokol realizacije stringova/redaka)" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid()" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nije moguće postaviti procesnu skupinu (%d) terminala" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "nema upravljanja poslom u ovoj ljusci" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc(): neuspješni kontrolni test: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1344,47 +1354,47 @@ msgstr "" "\r\n" "malloc(): %s:%d: loše provedeni kontrolni test\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "nepoznato" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc(): zauzeti blok na popisu slobodnih blokova" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free(): pozvana s argumentom bloka koji je već slobodan" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free(): pozvana s argumentom bloka koji se ne koristi" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free(): otkriveno je podlijevanje, mh_nbytes izvan raspona" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free(): otkriveno je podlijevanje; magic8 je oštećen" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free(): veličine početnog i zaključnog (dijela) bloka su različite" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc(): je pozvana s nekorištenim blokom kao argument (blok još nije odabran)" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc(): otkriveno je podlijevanje, mh_nbytes izvan raspona" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc(): otkriveno je podlijevanje; magic8 je oštećen" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc(): veličine početnog i zaključnog (dijela) bloka su različite" @@ -1426,22 +1436,22 @@ msgstr "%s: loša specifikacija za mrežnu stazu" msgid "network operations not supported" msgstr "mrežne operacije nisu podržane" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale(): LC_ALL: nije moguće promijeniti jezično područje (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale(): LC_ALL: nije moguće promijeniti jezično područje (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale(): %s: nije moguće promijeniti jezično područje (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale(): %s: nije moguće promijeniti jezično područje (%s): %s" @@ -1459,138 +1469,138 @@ msgstr "Imate novu poštu u $_" msgid "The mail in %s has been read\n" msgstr "Pošta u %s je već pročitana\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "sintaktička greška: nužan je aritmetički izraz" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "sintaktička greška: neočekivan „;“ znak" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "sintaktička greška: „((%s))“" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document(): loša vrsta instrukcije %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document u retku %d završava sa znakom kraj datoteke (očekivan je „%s“)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection(): instrukcija za preusmjeravanje „%d“ je izvan raspona" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" msgstr "" "shell_getc(): shell_input_line_size (%zu) veća je od SIZE_MAX (%lu):\n" " redak je skraćen" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "maksimalna broj (količina) here-document-a je premašena" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "neočekivan kraj-datoteke (EOF) pri traženju odgovarajućeg „%c“" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "neočekivan kraj datoteke (EOF) pri traženju „]]“" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "sintaktička greška u uvjetnom izrazu: neočekivan simbol „%s“" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "sintaktička greška u uvjetnom izrazu" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "neočekivan simbol „%s“; očekivana je „)“" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "očekivana je „)“" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "neočekivan argument „%s“ za uvjetni unarni operator" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "neočekivan argument za uvjetni unarni operator" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "neočekivani simbol „%s“; očekivan je uvjetni binarni operator" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "očekivan je uvjetni binarni operator" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "neočekivan argument „%s“ uvjetnom binarnom operatoru" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "neočekivan argument uvjetnom binarnom operatoru" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "neočekivan simbol „%c“ u uvjetnoj naredbi" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "neočekivan simbol „%s“ u uvjetnoj naredbi" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "neočekivan simbol %d u uvjetnoj naredbi" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "sintaktička greška blizu neočekivanog simbola „%s“" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "sintaktička greška blizu „%s“" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "sintaktička greška: neočekivani kraj datoteke" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "sintaktička greška" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Koristite \"%s\" za izlaz iz ljuske.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "neočekivani kraj datoteke pri traženju odgovarajuće „)“" @@ -1628,94 +1638,94 @@ msgstr "xtrace_set(): pointer datoteke je NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "deskriptor datoteke xtrace (%d) != broju datoteke u pointeru datoteke xtrace (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf(): „%c“: nevaljan znak za format" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "deskriptor datoteke je izvan raspona" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: preusmjeravanje nije jednoznačno" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nije moguće pisati preko postojeće datoteke" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ograničeno: nije moguće preusmjeriti izlaz" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "nije moguće stvoriti privremenu datoteku za here-document: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nije moguće dodijeliti deskriptor datoteke varijabli" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nije podržan bez umrežavanja" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "greška preusmjeravanja: nije moguće duplicirati deskriptor datoteke" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "nije moguće pronaći /tmp; stvorite taj direktorij!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp mora biti valjano ime direktorija" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "u interaktivnoj ljusci pretty-printing se zanemaruje" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: nevaljana opcija" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "nije moguće postaviti UID na %d: efektivni UID je %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "nije moguće postaviti GID na %d: efektivni GID je %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "nije moguće pokrenuti debugger; dijagnostika je onemogućena" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: to je direktorij" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Nemam ime!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, inačica %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1724,319 +1734,319 @@ msgstr "" "Uporaba: %s [GNU dugačka opcija] [opcija]...\n" " %s [GNU dugačka opcija] [opcija] skripta...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "GNU dugačke opcije:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Kratke opcije:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD ili -c NAREDBA ili -O SHOPT-OPCIJA (samo za pozivanje)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ili -o opcija (može se promijeniti sa „set”)\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Utipkajte „%s -c \"help set\"“ za dodatne obavijesti o opcijama ljuske.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Utipkajte „%s -c help set“ za dodatne obavijesti o ugrađenim naredbama ljuske.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Koristite naredbu „bashbug“ za prijavljivanje grešaka.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "Početna mrežna bash stranica: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "" "Općenita pomoć za korištenje GNU softvera: \n" "Prijavite primjedbe i greške u prijevodu na lokalizacija@linux.hr/\n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask(): %d: nevaljana operacija" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Nepostojeći signal" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Poklopi" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Prekini" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Završi" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Nedopuštena instrukcija" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "BPT trag/zamka instrukcija (Trace/Breakpoint trap)" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "ABORT instrukcija" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "EMT instrukcija" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Iznimka (broja) s pomičnim zarezom" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Ubijen" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Greška sabirnice" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Segmentacijska greška" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Loš sustavski poziv" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" -msgstr "Slomljena cijev" +msgstr "Potrgana cijev" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Budilica" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Završeno" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Žurno U/I stanje" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Zaustavljeno (signalom)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Nastavljanje" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Potomak mrtav ili zaustavljen" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Zaustavljen (ulaz u terminal)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Zaustavljen (izlaz iz terminala)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "U/I je spreman" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Ograničenje (vremena) procesora" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Ograničenje (veličine) datoteke" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarm (virtualni)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarm (profil)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Prozor je promijenjen" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Zapis je zaključan" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Korisnički signal 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Korisnički signal 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "HFT ulazni podaci čekaju" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "neizbježan prekid napajanja" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "neizbježni pad sustava" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "preseli proces na drugi procesor" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "programska greška" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "HFT nadzor je dopušten" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "HFT nadzor je oduzet" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "HFT sekvencija zvukova je završena" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Zahtjev za obavijestima" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Nepoznati signal #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "loša supstitucija: nema zaključnog „%s“ u %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: nije moguće dodijeliti popis elementu polja" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "nije moguće napraviti cijev za zamjenu procesa" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "nije moguće napraviti potomka za zamjenu procesa" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nije moguće otvoriti imenovanu cijev %s za čitanje" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nije moguće otvoriti imenovanu cijev %s za pisanje" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nije moguće duplicirati imenovanu cijev %s kao deskriptor datoteke %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" -msgstr "nevaljana supstitucija: ignorira se prazni (nula) bajt na ulazu" +msgstr "nevaljana supstitucija: zanemaren prazni (nula) bajt u ulazu" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "nije moguće napraviti cijev za zamjenu naredbi" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "nije moguće napraviti potomka za zamjenu naredbi" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute(): nije moguće duplicirati cijev kao deskriptor datoteke 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: nevaljano ime varijable za ime referencije" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: nevaljana neizravna ekspanzija" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "„%s“: nevaljano ime varijable" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: parametar nije postavljen" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametar je prazan ili nedefiniran" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: rezultat od dijela stringa (substring) < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: loša supstitucija" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nije moguće dodijeliti na ovaj način" -#: subst.c:9814 +#: subst.c:10111 msgid "future versions of the shell will force evaluation as an arithmetic substitution" msgstr "buduće inačice ljuske prisilit će vrednovanje kao aritmetičku supstituciju" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "loša supstitucija: nema zaključnog znaka \"`\" u %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "nema podudaranja: %s" @@ -2059,21 +2069,21 @@ msgstr "očekivana je „)“" msgid "`)' expected, found %s" msgstr "očekivana je „)“, a nađen je %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: očekivan je binarni operator" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: očekivan je unarni operator" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "nedostaje „]“" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "sintaktička greška: neočekivan „%s“" @@ -2082,99 +2092,104 @@ msgstr "sintaktička greška: neočekivan „%s“" msgid "invalid signal number" msgstr "nevaljani broj za signal" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "trap handler: prekoračena je dopuštena razina gniježđenja (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps(): loša vrijednost u trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: signalom rukuje SIG_DFL, opet šalje %d (%s) samom sebi" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler(): loš signal %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "greška pri uvozu definicije funkcije za „%s“" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "razina ljuske (%d) je previsoka, vraćamo ju na 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable(): u trenutnom opsegu nema konteksta funkcije" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: varijabli se ne može dodijeliti vrijednost" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s: nije moguće naslijediti vrijednost od nekompatibilne vrste" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: nazivu referencije se dodjeljuje cijeli broj" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables(): u trenutnom opsegu nema konteksta funkcije" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "*** %s ima prazni string za izvoz" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "*** nevaljani znak %d u izvoznom stringu za %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "*** nema „=“ u izvoznom stringu za %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context(): glava „shell_variables“ nije funkcijski kontekst" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context(): nije „global_variables“ kontekst" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope(): vrh od „shell_variables“ nije privremeni raspon valjanosti" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nije moguće otvoriti kao DATOTEKU" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: nevaljana vrijednost za „trace” deskriptora datoteke" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s vrijednost za kompatibilnost je izvan raspona" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Copyright (C) 2022 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "License GPLv3+: GNU GPL version 3 or later \n" @@ -2259,12 +2274,12 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] NAREDBA [ARGUMENT...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgiIlnrtux] [-p] [IME[=VRIJEDNOST]...]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [aAfFgiIlnrtux] [IME[=VRIJEDNOST]...] ili declare -p [-aAfFilnrtux] [IME...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgiIlnrtux] [-p] IME[=VRIJEDNOST]..." +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgiIlnrtux] IME[=VRIJEDNOST]… ili typeset -p [-aAfFilnrtux] [IME...]" #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2363,8 +2378,8 @@ msgid "return [n]" msgstr "return [N]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [-abefhkmnptuvxBCHP] [-o IME_OPCIJE] [--] [ARGUMENT...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o IME_OPCIJE] [--] [-] [ARGUMENT...]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" @@ -2415,8 +2430,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] IME..." #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [LIMIT]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [LIMIT]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" @@ -2455,12 +2470,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C msgstr "if NAREDBE; then NAREDBE; [ elif NAREDBE; then NAREDBE; ]... [ else NAREDBE; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while NAREDBE; do NAREDBE; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while NAREDBE; do NAREDBE-2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until NAREDBE; do NAREDBE; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until NAREDBE; do NAREDBE-2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -2796,10 +2811,10 @@ msgstr "" "\n" " Opcije:\n" " -L slijedi simboličke veze; simboličke veze u DIREKTORIJU razriješi\n" -" nakon obrade zapisa „..“\n" +" nakon obrade instance „..“\n" " -P rabi fizičku strukturu direktorija umjesto da slijedi simboličke\n" " veze; simboličke veze u DIREKTORIJU razriješi prije obrade\n" -" zapisa „..“\n" +" instance „..“\n" " -e ako je dana s opcijom „-P“, i trenutni radni direktorij nije\n" " moguće uspješno odrediti nakon uspješne promjene direktorija,\n" " „cd“ završi s kȏdom različitim od 0.\n" @@ -2948,7 +2963,7 @@ msgstr "" " -f prikaže samo definirane funkcije (ne prikaže varijable)\n" " -F prikaže samo imena funkcija bez definicija\n" " -g stvori globalne varijable samo za upotrebu u funkciji ljuske;\n" -" inače se ignoriraju\n" +" inače su zanemarene\n" " -I ako stvori lokalnu varijablu, neka naslijedi atribute i vrijednost\n" " varijable s istim imenom u prethodnom opsegu\n" " -p prikaže atribute i vrijednost za svako dano IME\n" @@ -3065,7 +3080,7 @@ msgstr "" " \\E znak za escape (ESC)\n" " \\f nova stranica (znak za FF, form feed)\n" " \\n novi redak (znak za LF, line feed)\n" -" \\r na početak novoga retka (Enter, znak za CR, carriage return)\n" +" \\r na početak novog retka (Enter, znak za CR, carriage return)\n" " \\t horizontalni tabulator\n" " \\v vertikalni tabulator\n" " \\\\ backslash (\\)\n" @@ -3139,7 +3154,7 @@ msgstr "" " -f učita ugrađenu naredbu IME iz dijeljenog objekta DATOTEKA\n" " -d ukloni ugrađenu naredbu učitanu s „-f“\n" "\n" -" Bez opcija, omogućena su sva navedena IMENA. Bez imena prikazane su\n" +" Bez opcija, omogućena su sva navedena IMENA. Bez imena pokazane su\n" " omogućene naredbe (ili s „-n“ onemogućene).\n" "\n" " Primjer: da koristite binarnu datoteku „test“ koja se nalazi na stazi\n" @@ -3327,7 +3342,7 @@ msgid "" msgstr "" "Prikaže ili izvrši naredbe iz popisa povijesti.\n" "\n" -" Koristi se za prikazivanje dosadašnjih, za uređivanje ili za ponovno\n" +" Koristi se za pokazivanje dosadašnjih, za uređivanje ili za ponovno\n" " pokretanje naredbi. PRVA i ZADNJA mogu biti brojevi koji specificiraju\n" " raspon ili PRVA može biti string s koji specificira najnoviju naredbu\n" " koja započinje s tim slovima.\n" @@ -3565,7 +3580,7 @@ msgstr "" "\n" " Ako je navedena opcija '-x', dana NAREDBA će se izvršiti tek nakon\n" " zatvaranja svih navedenih poslova u ARGUMENTIMA (tj. njihov ID procesa je\n" -" zamijenjen s ID-om njima nadređenoga procesa).\n" +" zamijenjen s ID-om njima nadređenog procesa).\n" "\n" " Završi s uspjehom osim ako je dana nevaljana opcija ili se dogodila greška.\n" " Ako je dana opcija -x, završi sa izlaznim kȏdom NAREDBE." @@ -3736,7 +3751,8 @@ msgid "" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" @@ -3772,14 +3788,16 @@ msgid "" " (in which case it's greater than 128), a variable assignment error occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -"Pročita redak iz standardnoga ulaza i razdijeli ga na polja.\n" +"Pročita redak iz standardnog ulaza i razdijeli ga na polja.\n" "\n" -" Pročita jedan redak iz standardnoga ulaza (ili navedenog deskriptora\n" +" Pročita jedan redak iz standardnog ulaza (ili navedenog deskriptora\n" " datoteke FD ako je dana opcija „-u“) i dodijeli prvu riječ prvom IMENU,\n" " drugu riječ drugom IMENU, i tako dalje; preostale riječi dodijeli zadnjem\n" " IMENU. Samo se znakovi sadržani u varijabli $IFS prepoznaju kao MEĐA\n" -" (separator riječi). Ako nije navedeno nijedno IME, pročitani redak se\n" -" spremi u varijablu REPLY.\n" +" (separator riječi). Zadano, obratna kosa crta (backslash) maskira znakove\n" +" za separator i znak za novi redak.\n" +"\n" +" Ako nije navedeno nijedno IME, pročitani redak se spremi u varijablu REPLY.\n" "\n" " Opcije:\n" " -a POLJE pročitane riječi dodijeli sekvencijalnim indeksima POLJA\n" @@ -3801,13 +3819,13 @@ msgstr "" " samo ako je ulaz dostupni na specificiranom deskriptoru\n" " datoteke Završi s uspjehom\n" "\n" -" -u FD čita iz deskriptora datoteke FD umjesto iz standardnoga ulaza\n" +" -u FD čita iz deskriptora datoteke FD umjesto iz standardnog ulaza\n" "\n" " Završi s uspjehom osim ako ne naiđe na konac datoteke (EOF) ili je\n" " isteklo vrijeme čekanja ili se dogodila greška pri dodjeli ili je\n" " naveden nevaljani deskriptor datoteke kao argument opciji „-u“." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3826,7 +3844,7 @@ msgstr "" "\n" " Vrati vrijednost N ili 1 ako ljuska ne izvrši funkciju ili skriptu." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3962,7 +3980,7 @@ msgstr "" " hashall == -h\n" " histexpand == -H\n" " history omogući naredbu „history“\n" -" ignoreeof ignorira Ctrl-D; ne završi (ne iziđe iz) ljusku na EOF\n" +" ignoreeof zanemari Ctrl-D; ne završi (ne iziđe iz) ljusku na EOF\n" " interactive-comments dopusti komentiranje u interaktivnim naredbama\n" " keyword == -k\n" " monitor == -m\n" @@ -3984,7 +4002,7 @@ msgstr "" "\n" " Završi s uspjehom osim ako je dana nevaljana opcija." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4021,7 +4039,7 @@ msgstr "" " Završi s uspjehom osim ako je dana nevaljana opcija ili IME je\n" " „samo-za-čitanje“. (bez navodnika)" -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4054,7 +4072,7 @@ msgstr "" " Završi s uspjehom osim ako je dana nevaljana opcija ili nije navedeno\n" " valjano IME." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4081,8 +4099,8 @@ msgstr "" " VRIJEDNOST, prvo mu dodijeli VRIJEDNOST, a zatim ga označi nepromjenjivim.\n" "\n" " Opcije:\n" -" -a svako IME se odnosi na varijable indeksiranoga polja\n" -" -A svako IME se odnosi na varijable asocijativnoga polja\n" +" -a svako IME se odnosi na varijable indeksiranog polja\n" +" -A svako IME se odnosi na varijable asocijativnog polja\n" " -f svako IME se odnosi na funkcije ljuske\n" " -p prikaže popis svih nepromjenjivih varijabli ili funkcija\n" " ovisno o opciji „-f“ (je li ili nije dana).\n" @@ -4091,7 +4109,7 @@ msgstr "" "\n" " Završi s uspjehom osim ako je dana nevaljana opcija ili je IME nevaljano." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4108,7 +4126,7 @@ msgstr "" "\n" " Završi s uspjehom osim ako je N negativni ili veći od $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4131,7 +4149,7 @@ msgstr "" " Završi s kȏdom zadnje izvršene naredbe iz DATOTEKE ili s kȏdom 1 ako se\n" " DATOTEKA ne može pročitati." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4155,7 +4173,7 @@ msgstr "" " Završi s uspjehom osim ako upravljanje poslovima nije omogućeno\n" " ili se dogodila greška." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4281,9 +4299,9 @@ msgstr "" " STRING1 = STRING2 istina ako su stringovi jednaki\n" " STRING1 != STRING2 istina ako stringovi nisu jednaki\n" " STRING1 < STRING2 istina ako se leksikografski prvi string\n" -" razvrsta ispred drugoga\n" +" razvrsta ispred drugog\n" " STRING1 > STRING2 istina ako se leksikografski prvi string\n" -" razvrsta iza drugoga\n" +" razvrsta iza drugog\n" "\n" " Ostali operatori:\n" " -o OPCIJA istina ako je ova OPCIJA ljuske omogućena\n" @@ -4300,7 +4318,7 @@ msgstr "" " Završi s uspjehom ako je IZRAZ istinit, 1 ako je IZRAZ neistinit,\n" " ili 2 ako je dan nevaljan argument." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4312,7 +4330,7 @@ msgstr "" " To je sinonim za ugrađenu funkciju „test“, ali zadnji argument\n" " mora biti zagrada „]“ kao par zagradi „[“ na početku." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4329,7 +4347,7 @@ msgstr "" "\n" " Završi uvijek s kȏdom 0." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4372,7 +4390,7 @@ msgstr "" " specificiranih signala (SIGNAL_SPEC). Ako nema ARGUMENTA (i dan je samo\n" " jedan signal) ili ARGUMENT je „-“, specificirani signal zadobije svoju\n" " originalnu vrijednost (koju je imao na startu ove ljuske). Ako je ARGUMENT\n" -" prazni string, ljuska i njezini potomci ignoriraju svaki SIGNAL_SPEC.\n" +" prazni string, ljuska i njezini potomci zanemare svaki SIGNAL_SPEC.\n" "\n" " Ako je SIGNAL_SPEC 0 ili EXIT, ARGUMENT se izvrši kad zatvorite\n" " (exit) ljusku. Ako je SIGNAL_SPEC DEBUG, ARGUMENT se izvrši prije\n" @@ -4395,7 +4413,7 @@ msgstr "" " Završi s uspjehom osim ako SIGNAL_SPEC nije valjan ili je dana\n" " nevaljana opcija." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4445,7 +4463,7 @@ msgstr "" "\n" " Završi s uspjehom ako se pronađu sva IMENA, inače s 1." -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4539,7 +4557,7 @@ msgstr "" " Završi s uspjehom osim ako je dana nevaljana opcija\n" " ili se dogodila greška." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4571,7 +4589,7 @@ msgstr "" "\n" " Završi s uspjehom osim ako MODE nije valjan ili je dana nevaljana opcija." -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4615,7 +4633,7 @@ msgstr "" " Završi s kȏdom zadnjeg ID-a; s kȏdom 1 ako je ID nevaljan ili je dana\n" " nevaljana opcija ili ako je -n dan, a ljuska nema neočekivane potomke." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4636,7 +4654,7 @@ msgstr "" " Završi s kȏdom zadnjeg PID-a, s kȏdom 1 ako je PID nevaljan,\n" " ili s 2 ako je dana nevaljana opcija." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4648,16 +4666,16 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Izvrši naredbe za svakoga člana u popisu.\n" +"Izvrši naredbe za svakog člana u popisu.\n" "\n" -" Petlja „for“ izvrši sekvenciju naredbi za svakoga člana u popisu stavki.\n" +" Petlja „for“ izvrši sekvenciju naredbi za svakog člana u popisu stavki.\n" " Ako nema operanda „in RIJEČIMA...; podrazumijeva se operand\n" " „in \"$@\"“. Svakom elementu u RIJEČIMA, IME se postavi na taj element\n" " i NAREDBE se izvrše.\n" "\n" " Završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4684,7 +4702,7 @@ msgstr "" "\n" " Završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4708,8 +4726,8 @@ msgstr "" " Proširenjem RIJEČI, „select“ generira i prikaže izbornik na standardnom\n" " izlazu za greške s brojem ispred svake riječi. Ako operand „u RIJEČIMA“\n" " nije naveden, podrazumijeva se operand „in \"$@\"“.\n" -" Nakon izbornika prikaže se PS3 prompt i redak se čita iz standardnoga\n" -" ulaza; ako se redak sastoji od broja koji odgovara jednoj od prikazanih\n" +" Nakon izbornika prikaže se PS3 prompt i redak se čita iz standardnog\n" +" ulaza; ako se redak sastoji od broja koji odgovara jednoj od pokazanih\n" " riječi, onda varijabla IME dobije vrijednost te riječi; ako je redak\n" " prazan, RIJEČI i prompt se ponovno prikažu; ako se pročita EOF (Ctrl-D)\n" " „select“ naredba završi. Bilo koja druga pročitana vrijednost učini da se\n" @@ -4719,7 +4737,7 @@ msgstr "" "\n" " Završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4741,12 +4759,12 @@ msgstr "" " korisnikom i CPU vrijeme potrošeno sustavom za izvršavanje naredbi.\n" "\n" " Izlazni format se može prilagoditi s varijablom okoline TIMEFORMAT.\n" -" Opcija „-p“ ignorira TIMEFORMAT i ispiše izlaz u prenosivom POSIX\n" +" Opcija „-p“ zanemari TIMEFORMAT i ispiše izlaz u prenosivom POSIX\n" " formatu.\n" "\n" " Završi s izlaznim kȏdom CJEVOVODA." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4763,7 +4781,7 @@ msgstr "" "\n" " Završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4788,41 +4806,41 @@ msgstr "" "\n" " „if“ završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Izvršava naredbe tako dugo dok je test uspješan.\n" "\n" -" Izvršava sukcesivne NAREDBE tako dugo dok zadnja naredba u „while“\n" -" NAREDBAMA završava s kȏdom 0.\n" +" Proširi i izvrši NAREDBE-2 tako dugo dok zadnja naredba u NAREDBAMA\n" +" završi s kȏdom 0.\n" "\n" " Završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Izvršava naredbe tako dugo dok test ne uspije.\n" "\n" -" Izvršava sukcesivne NAREDBE tako dugo dok zadnja naredba u\n" -" „until“ NAREDBAMA završi s kȏdom različitim od 0.\n" +" Proširi i izvrši NAREDBE-2 tako dugo dok zadnja naredba u NAREDBAMA\n" +" završi s kȏdom različitim od 0.\n" "\n" " Završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4843,7 +4861,7 @@ msgstr "" "\n" " Naredba coproc završi s kȏdom 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -4864,7 +4882,7 @@ msgstr "" "\n" " Završi s uspjehom osim ako je IME readonly (samo-za-čitanje)." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4881,7 +4899,7 @@ msgstr "" "\n" " Završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4903,7 +4921,7 @@ msgstr "" "\n" " Završi s kȏdom nastavljenog posla." -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4921,7 +4939,7 @@ msgstr "" " Završi s kȏdom 1 ako je rezultat IZRAZA jednak 0;\n" " inače završi s uspjehom." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -4967,7 +4985,7 @@ msgstr "" "\n" " Završi s uspjehom ili 1 ovisno o IZRAZU." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5030,25 +5048,25 @@ msgstr "" " kad argument od „cd“ (direktorij) nije u\n" " trenutnom radnom direktoriju\n" " GLOBIGNORE popis uzoraka koji opisuju imena datoteka koje\n" -" se ignoriraju prilikom ekspanzije imena staza\n" +" su zanemarene prilikom ekspanzije imena staza\n" " HISTFILE ime datoteke koja sadrži povijest vaših naredbi\n" " HISTFILESIZE maksimalni broj redaka datoteke s povijesti naredba\n" " HISTIGNORE popis uzoraka koji opisuju naredbe koje ne treba zapisati\n" " u datoteku koja sadrži povijest vaših naredbi\n" " HISTSIZE maksimalni broj redaka koje trenutna ljuska može dosegnuti\n" -" HOME puni naziv staze do vašega osobnoga direktorija\n" +" HOME puni naziv staze do vašega vlastitog direktorija\n" " HOSTNAME ime računala na kojem se izvršava „bash“\n" " HOSTTYPE vrsta CPU-a na kojem se izvršava „bash“\n" -" IGNOREEOF broj ignoriranih Ctrl-D (EOF) prije zatvaranja ljuske\n" +" IGNOREEOF broj zanemarenih Ctrl-D (EOF) prije zatvaranja ljuske\n" " MACHTYPE vrsta računala na kojem se izvršava „bash“\n" " MAILCHECK kako često (u sekundama) „bash“ gleda ima li nove pošte\n" " MAILPATH popis datoteka koje „bash“ provjeri za novu poštu\n" " OSTYPE distribucija Unix-a no kojem se izvršava ovaj „bash“\n" " PATH popis direktorija u kojima se traže naredbe\n" -" PROMPT_COMMAND naredba koja se izvrši prije ispisa primarnoga prompta\n" +" PROMPT_COMMAND naredba koja se izvrši prije ispisa primarnog prompta\n" " PS1 string koji opisuje primarni prompt\n" " PS2 string koji opisuje sekundarni prompt (zadano, „>“)\n" -" PWD puni naziv staze trenutnog radnoga direktorija\n" +" PWD puni naziv staze trenutnog radnog direktorija\n" " SHELLOPTS popis svih omogućenih opcija ljuske\n" " TERM naziv vrste trenutnog terminala\n" " TIMEFORMAT pravilo za format ispisa „time“ statistika\n" @@ -5067,7 +5085,7 @@ msgstr "" " supstitucije“, obično „^“; treći znak je „komentar\n" " povijesti“, obično „#“.\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5111,16 +5129,16 @@ msgstr "" " DIREKTORIJ Doda DIREKTORIJ na vrh stȏga direktorija i\n" " učini ga novim trenutnim radnim direktorijem.\n" " +N Zarotira stȏg tako, da N-ti direktorij u stȏgu (brojeći od nule s\n" -" lijeve strane popisa prikazanoga s „dirs“) postane novi vrh stȏga.\n" +" lijeve strane popisa pokazanog s „dirs“) postane novi vrh stȏga.\n" " -N Zarotira stȏg tako, da N-ti direktorij u stȏgu (brojeći od nule s\n" -" desne strane popisa prikazanoga s „dirs“) postane novi vrh stȏga.\n" +" desne strane popisa pokazanog s „dirs“) postane novi vrh stȏga.\n" "\n" " Naredba „dirs“ prikaže trenutni sadržaj stȏga direktorija.\n" "\n" " Završi s uspjehom osim ako je dana nevaljana opcija ili promjena\n" " direktorija nije uspjela" -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5158,10 +5176,10 @@ msgstr "" "\n" " Argumenti:\n" " +N Ukloni da N-ti direktorij iz stȏga brojeći od nule s lijeve\n" -" strane popisa prikazanoga s „dirs“. Na primjer: „popd +0“\n" +" strane popisa pokazanog s „dirs“. Na primjer: „popd +0“\n" " ukloni prvi, a „popd +1“ ukloni drugi direktorij.\n" " +N Ukloni da N-ti direktorij iz stȏga brojeći od nule s desne\n" -" strane popisa prikazanoga s „dirs“. Na primjer.: „popd -0“\n" +" strane popisa pokazanog s „dirs“. Na primjer.: „popd -0“\n" " ukloni zadnji, a „popd -1“ ukloni predzadnji direktorij.\n" "\n" " Naredba „dirs“ prikaže trenutni sadržaj stȏga direktorija.\n" @@ -5169,7 +5187,7 @@ msgstr "" " Završi s uspjehom osim ako je dana nevaljana opcija ili promjena\n" " direktorija nije uspjela." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5218,7 +5236,7 @@ msgstr "" "\n" " Završi s uspjehom osim ako je dana nevaljana opcija ili se dogodila greška." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5255,7 +5273,7 @@ msgstr "" " omogućeno, a s 1 ako je onemogućeno. Završi također s 1 ako je dano\n" " nevaljano IME_OPCIJE, a završi s 2 ako je dana nevaljana opcija." -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5274,6 +5292,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" @@ -5304,6 +5324,8 @@ msgstr "" " %b proširi backslash (\\) kontrolne znakove u odgovarajuće\n" " argumente\n" " %q citira argument tako, da se može iskoristiti kao ulaz za ljusku\n" +" %Q kao %q, ali primijeni bilo kakvu preciznost na necitirani\n" +" argument prije citiranja\n" " %(fmt)T koristeći FMT, ispiše date-time string u obliku format stringa\n" " za strftime(3)\n" "\n" @@ -5314,7 +5336,7 @@ msgstr "" " Završi s uspjehom osim ako je dana nevaljana opcija ili se dogodila greška\n" " u pisanju ili greška pri dodijeli." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5365,7 +5387,7 @@ msgstr "" " Završi s uspjehom osim ako je dana nevaljana opcija\n" " ili se dogodila greška." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5384,7 +5406,7 @@ msgstr "" "\n" " Završi s uspjehom osim ako je dana nevaljana opcija ili se dogodila greška." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5436,7 +5458,7 @@ msgstr "" " Završi s uspjehom osim ako nije dana nevaljana opcija ili nije definirana\n" " specifikacija za kompletiranje IMENA." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5470,7 +5492,7 @@ msgid "" " Returns success unless an invalid option is given or ARRAY is readonly or\n" " not an indexed array." msgstr "" -"Pročitane retke iz standardnoga ulaza upiše u varijablu indeksirano polje.\n" +"Pročitane retke iz standardnog ulaza upiše u varijablu indeksirano polje.\n" "\n" " Pročitane retke iz standardnog ulaza (ili ako je navedena opcija -u, iz\n" " deskriptora datoteke FD) upiše u indeksiranu varijablu POLJE. Ako argument\n" @@ -5500,7 +5522,7 @@ msgstr "" " Završi s uspjehom osim ako je POLJE readonly (samo-za-čitanje) ili nije\n" " polje ili je dana nevaljana opcija." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5510,6 +5532,9 @@ msgstr "" "\n" " Sinonim za „mapfile“." +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: nevaljan ključ asocijativnog polja" + #~ msgid "" #~ "Returns the context of the current subroutine call.\n" #~ " \n" diff --git a/po/hu.gmo b/po/hu.gmo index 08cb51155..cfc7843c1 100644 Binary files a/po/hu.gmo and b/po/hu.gmo differ diff --git a/po/hu.po b/po/hu.po index 972911d8f..c6d838829 100644 --- a/po/hu.po +++ b/po/hu.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2019-11-16 17:58+0100\n" "Last-Translator: Balázs Úr \n" "Language-Team: Hungarian \n" @@ -25,58 +25,53 @@ msgstr "" msgid "bad array subscript" msgstr "hibás tömbindex" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: névhivatkozás attribútum eltávolítása" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: nem lehetséges az indexelt tömb asszociatívvá alakítása" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: érvénytelen asszociatívtömb-index" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: a nem-szám indexnek való értékadás nem lehetséges" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: asszociatív tömbhöz való értékadásnál meg kell adni az indexet" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nem hozható létre: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: nem található billentyűkiosztás a parancshoz" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: az első nem szóközkarakter nem „\"”" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "nincs záró „%c” a következőben: %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: hiányzó kettőspont-elválasztó" -#: bashline.c:4555 +#: bashline.c:4733 #, fuzzy, c-format msgid "`%s': cannot unbind in command keymap" msgstr "„%s”: nem lehetséges a kötés megszüntetése" @@ -98,7 +93,7 @@ msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" "szögleteszárójel-kiegészítés: nem sikerült a memóriafoglalás „%s” számára" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "„%s”: érvénytelen alias-név" @@ -174,7 +169,7 @@ msgstr "" msgid "HOME not set" msgstr "Nincs beállítva HOME" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "túl sok argumentum" @@ -201,7 +196,7 @@ msgstr "figyelmeztetés: " msgid "%s: usage: " msgstr "%s: használat: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: a kapcsolónak kötelező argumentuma van" @@ -216,7 +211,7 @@ msgstr "%s: a kötelező argumentum egy szám" msgid "%s: not found" msgstr "%s: nem található" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: érvénytelen kapcsoló" @@ -226,7 +221,7 @@ msgstr "%s: érvénytelen kapcsoló" msgid "%s: invalid option name" msgstr "%s: érvénytelen kapcsolónév" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s”: érvénytelen azonosító" @@ -239,7 +234,7 @@ msgstr "érvénytelen oktális szám" msgid "invalid hex number" msgstr "érvénytelen hexadecimális szám" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "érvénytelen szám" @@ -253,88 +248,93 @@ msgstr "%s: érvénytelen szignálmegadás" msgid "`%s': not a pid or valid job spec" msgstr "„%s”: nem pid vagy munkaazonosító" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: csak olvasható változó" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: nem szüntethető meg" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s kívül esik a tartományon" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argumentum" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s kívül esik a tartományon" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: nincs ilyen munka" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: nincs munkakezelés" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "nincs munkakezelés" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: korlátozott" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "korlátozott" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: nem beépített parancs" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "írási hiba: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "hiba a terminálattribútum beállításakor: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "hiba a terminálattribútum lekérdezésekor: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: hiba a munkakönyvtár lekérdezésekor: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: kétértelmű munkamegadás" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "ebben a verzióban nem érhető el súgó" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nem szüntethető meg: csak olvasható %s" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: nem szüntethető meg" @@ -344,108 +344,108 @@ msgstr "%s: nem szüntethető meg" msgid "%s: invalid action name" msgstr "%s: érvénytelen műveletnév" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: nincs kiegészítés meghatározva" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "figyelmeztetés: a -F kapcsoló nem a várt módon működhet" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "figyelmeztetés: a -C kapcsoló nem a várt módon működhet" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "jelenleg nincs kiegészítési függvény végrehajtás alatt" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "csak függvényben használható" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "nem használható a „-f” függvény létrehozására" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: csak olvasható függvény" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: a referenciaváltozó nem lehet tömb" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: a névhivatkozás változó önhivatkozása nem engedélyezett" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: körkörös névhivatkozás" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "„%s”: érvénytelen változónév a névhivatkozáshoz" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "nem használható a „-f” függvény létrehozására" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: csak olvasható függvény" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: az idézőjelezett összetett tömb értékadása elavult" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: ilyen módon nem lehet tömböt megszüntetni" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nem lehetséges az asszociatív tömb indexeltté alakítása" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: az idézőjelezett összetett tömb értékadása elavult" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "a dinamikus betöltés nem érhető el" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "megosztott objektumfájl megnyitása sikertelen: %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "%s nem található a(z) %s megosztott objektumfájlban: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, fuzzy, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: nem dinamikusan van betöltve" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "%s betöltési függvénye hibát ad vissza (%d): nincs betöltve" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: nem dinamikusan van betöltve" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: nem törölhető: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s egy könyvtár" @@ -460,7 +460,7 @@ msgstr "%s: nem normál fájl" msgid "%s: file is too large" msgstr "%s: a fájl túl nagy" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: bináris nem hajtható végre" @@ -556,12 +556,12 @@ msgstr "" "nem illeszkedik egy szócikk sem a következőre: „%s”.\n" "A „help help”, „man -k '%s'” vagy „info '%s'” parancsok segíthetnek." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nem nyitható meg: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -580,21 +580,21 @@ msgstr "" "A parancs nevét követő csillag (*) azt jelzi, hogy le van tiltva.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "a következő kapcsolók kizárják egymást: -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "előzménypozíció" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: érvénytelen időbélyeg" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: sikertelen előzményből való kiegészítés" @@ -617,78 +617,78 @@ msgstr "%s: az argumentumok folyamat- vagy munkaazonosítók lehetnek" msgid "Unknown error" msgstr "Ismeretlen hiba" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "az értelmező kifejezést várt" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: nem egy indexelt tömb" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: érvénytelen fájlleíró-megadás" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: érvénytelen fájlleíró: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: sorok száma érvénytelen" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: érvénytelen tömbkezdet" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: érvénytelen parancshívási távolság" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "üres tömbváltozó-név" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "a tömbök használata nincs támogatva" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "„%s”: hiányzó formátumkarakter" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c”: érvénytelen időformátum-megadás" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "„%c”: érvénytelen formátumkarakter" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "figyelmeztetés: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "formátumfeldolgozási probléma: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "hiányzó hexadecimális számjegy a következőhöz: \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "hiányzó unicode számjegy a következőhöz: \\%c" @@ -837,12 +837,12 @@ msgstr "" " \n" " A „dirs” beépített parancs listázza a könyvtárvermet." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: érvénytelen időkorlát-megadás" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "olvasási hiba: %d: %s" @@ -857,7 +857,7 @@ msgstr "" msgid "cannot simultaneously unset a function and a variable" msgstr "nem lehet egyszerre függvényt és változót megszüntetni" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: nem egy tömbváltozó" @@ -876,12 +876,12 @@ msgstr "%s: nem exportálható" msgid "shift count" msgstr "shift-szám" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "" "nem lehet egyszerre beállítani és törölni parancsértelmező-beállításokat" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: érvénytelen parancsértelmezőkapcsoló-név" @@ -948,16 +948,16 @@ msgstr "%s: érvénytelen korlátérték" msgid "`%c': bad command" msgstr "„%c”: érvénytelen parancs" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nem kérdezhető le a korlát: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "korlát" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nem módosítható a korlát: %s" @@ -976,7 +976,7 @@ msgstr "„%c”: érvénytelen szimbolikus módoperátor" msgid "`%c': invalid symbolic mode character" msgstr "„%c”: érvénytelen szimbolikus módkarakter" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " sor: " @@ -996,96 +996,106 @@ msgstr "Megszakítás..." msgid "INFORM: " msgstr "INFORM: " -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "figyelmeztetés: " + +#: error.c:488 msgid "unknown command error" msgstr "hiba: érvénytelen parancs" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "hibás parancstípus" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "hibás csatlakozó" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "hibás ugrás" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: kötetlen változó" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aidőtúllépés bemenetre várva: automatikus kijelentkezés\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "szabványos bemenet /dev/null-ra állítása sikertelen: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "IDŐFORMÁTUM: „%c”: érvénytelen formátumkarakter" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: a coproc [%d:%s] még mindig létezik" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "hibás csővezeték" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: a maximális eval beágyazási szint túllépve (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: a maximális source beágyazási szint túllépve (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: a maximális függvénybeágyazási szint túllépve (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: korlátozott: nem adható meg „/” a parancsok nevében" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: parancs nem található" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: bináris nem hajtható végre" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: rossz parancsértelmező" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: a bináris nem hajtható végre: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "„%s”: egy speciális beépített parancs" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nem lehet duplikálni a(z) %d. fájlleírót a(z) %d. helyre" @@ -1098,69 +1108,69 @@ msgstr "a kifejezés rekurziókorlátot" msgid "recursion stack underflow" msgstr "alulcsordult a rekurziós verem" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "szintaktikai hiba a kifejezésben" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "nem változóhoz próbált értéket rendelni" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "szintaktikai hiba a változó-értékadásban" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "0-val osztás" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "bug: rossz expassign token" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "„:” egy feltételkifejezés szükséges" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "0-nál kisebb kitevő" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "prefix növelés vagy csökkentés után azonosító kell következzen" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "hiányzó „)”" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "szintaktikai hiba: operandus kell következzen" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "szintaktikai hiba: érvénytelen aritmetikai operátor" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (hibás token: „%s”)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "érvénytelen számrendszer" -#: expr.c:1582 +#: expr.c:1587 #, fuzzy msgid "invalid integer constant" msgstr "%s: sorok száma érvénytelen" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "túl nagy érték a számrendszerhez" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: hibás kifejezés\n" @@ -1169,7 +1179,7 @@ msgstr "%s: hibás kifejezés\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: nem érhetőek el a szülőkönyvtárak" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nem lehet újraindítani a nodelay módot a(z) %d. fájlleíróhoz" @@ -1189,167 +1199,167 @@ msgstr "save_bash_input: már van puffer a(z) %d. fájlleíróhoz" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp csővezeték" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "a(z) %d számú forkolt pid a(z) %d számú munkában jelent meg" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "%d. számú megállított munka törlése a %ld számú folyamatcsoporttal" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: %5ld. folyamat (%s) még élőként van jelölve" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: nincs ilyen pid" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "%d. szignál" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Kész" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Megállítva" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Megállítva(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Fut" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Kész(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Kilépett(%d)" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Ismeretlen állapot" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(core készült) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (mk: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "gyermek setpgid (innen: %ld ide: %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: %ld. számú folyamat nem gyermeke ennek a parancsértelmezőnek" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Nincs bejegyzés %ld. számú folyamatról" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: %d. számú munka le lett állítva" -#: jobs.c:3564 +#: jobs.c:3551 #, fuzzy, c-format msgid "%s: no current jobs" msgstr "%s: nincs ilyen munka" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: a munka be lett fejezve" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: %d. számú munka már a háttérben van" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: WNOHANG bekapcsolása a korlátlan blokk elkerülésére" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: %d. sor: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (core készült)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(mk most: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp sikertelen" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: nincs munkakezelés a háttérben" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nem állítható be a terminál folyamatcsoportja (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "nincsen munkakezelés ebben a parancsértelmezőben" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: nem teljesülő feltételezés: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1358,49 +1368,49 @@ msgstr "" "\r\n" "malloc: %s:%d: téves feltételezés\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "ismeretlen" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: a szabadlistán lévő blokk felülírva" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: már felszabadított blokkal lett hívva" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: nem lefoglalt blokkal lett hívva" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 #, fuzzy msgid "free: underflow detected; magic8 corrupted" msgstr "free: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: kezdő- és záródarab mérete eltér" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: nem lefoglalt blokkal lett hívva" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 #, fuzzy msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: kezdő- és záródarab mérete eltér" @@ -1442,22 +1452,22 @@ msgstr "%s: hibás hálózatiútvonal-megadás" msgid "network operations not supported" msgstr "a hálózati műveletek nincsenek támogatva" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: nem lehet területi beállításokat váltani (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: nem lehet területi beállításokat váltani (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s): %s" @@ -1475,35 +1485,35 @@ msgstr "Új levél a következőben: $_" msgid "The mail in %s has been read\n" msgstr "A(z) „%s” helyen lévő levél el van olvasva\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "szintaktikai hiba: aritmetikai kifejezés szükséges" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "szintaktikai hiba: váratlan „;”" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "szintaktikai hiba: „((%s))”" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: hibás utasítástípus: %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "a(z) %d. sorban kezdett heredocot EOF zárja („%s” helyett)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: %d. átirányító utasítás kívül esik a tartományon" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " @@ -1512,103 +1522,103 @@ msgstr "" "shell_getc: a shell_input_line_size (%zu) meghaladja a MÉRET_MAXIMUM értékét " "(%lu): a sor csonkolva" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "a maximális here-document szám túllépve" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "váratlan EOF „%c” helyett" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "váratlan EOF „]]” helyett" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "szintaktikai hiba a feltételben: váratlan token: „%s”" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "szintaktikai hiba a feltételben" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "váratlan token (%s) „)” helyett" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "„)” szükséges" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "váratlan argumentum (%s) feltételes egyoperandusú operátorhoz" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "váratlan argumentum feltételes egyoperandusú operátorhoz" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "váratlan token (%s), feltételes kétoperandusú operátor szükséges" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "feltételes kétoperandusú operátor szükséges" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "váratlan argumentum (%s) feltételes kétoperandusú operátorhoz" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "váratlan argumentum feltételes kétoperandusú operátorhoz" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "váratlan token (%c) feltételes parancsban" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "váratlan token (%s) feltételes parancsban" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "váratlan token (%d) feltételes parancsban" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "szintaktikai hiba „%s” váratlan token közelében" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "szintaktikai hiba „%s” közelében" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "szintaktikai hiba: váratlan fájlvége" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "szintaktikai hiba" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "„%s” használatával lehet elhagyni a parancsértelmezőt.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "váratlan EOF „)” helyett" @@ -1646,94 +1656,94 @@ msgstr "xtrace_set: NULL fájlmutató" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c”: érvénytelen formátumkarakter" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "fájlleíró kívül esik a tartományon" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: kétértelmű átirányítás" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nem lehet felülírni létező fájlt" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: korlátozott: nem lehet átirányítani a kimenetet" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "nem lehet a heredocnak átmeneti fájlt létrehozni: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nem lehet változóhoz fájlleírót rendelni" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nincs támogatva hálózat nélkül" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "átirányítási hiba: nem lehet duplikálni a fájlleírót" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "nem található /tmp, hozza létre!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp érvényes könyvtárnév kell legyen" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "a csinos kiírási mód mellőzve van interaktív az parancsértelmezőkben" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: érvénytelen kapcsoló" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "az uid nem állítható be %d értékre: a hatásos uid %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "a gid nem állítható be %d értékre: a hatásos gid %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "nem indítható el a hibakereső; a hibakeresési mód letiltva" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: ez egy könyvtár" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Nincs nevem!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, %s-(%s) verzió\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1742,312 +1752,312 @@ msgstr "" "Használat:\t%s [GNU hosszú kapcsoló] [kapcsoló] ...\n" "\t%s [GNU hosszú kapcsoló] [kapcsoló] parancsfájl ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "GNU hosszú kapcsolók:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Parancsértelmező-kapcsolók:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD vagy -c parancs vagy -O shopt_option\t\t(csak hívás)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s vagy -o kapcsoló\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "A „%s -c \"help set\"” további információt ad a parancsértelmező-" "beállításokról.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "A „%s -c help” további információt ad a beépített parancsokról.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "A „bashbug” paranccsal jelenthet hibákat.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "a bash honlapja: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "" "Általános segítség a GNU szoftverek használatához: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: érvénytelen művelet" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Hibás szignál" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Bontás" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Megszakítás" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Abbahagyás" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Érvénytelen utasítás" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "BPT trace/trap" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "ABORT utasítás" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "EMT utasítás" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Lebegőpontos kivétel" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Kilőve" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Buszhiba" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Szegmenshiba" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Rossz rendszerhívás" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Törött csővezeték" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Ébresztés" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Befejezve" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Sürgős IO körülmény" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Megállítva (szignál)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Folytatás" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Gyermek halála vagy megállítása" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Megállítva (konzolbemenet)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Megállítva (konzolkimenet)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "IO kész" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "CPU-korlátozás" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Fájlkorlátozás" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Ébresztés (virtuális)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Ébresztés (profilozás)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Ablak változott" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Elveszett zárolás" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Felhasználói 1." -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Felhasználói 2." -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "HFT bemeneti adat vár" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "táphiba fenyeget" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "rendszerleállás fenyeget" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "folyamat átvitele másik CPU-ra" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "programozási hiba" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "HFT monitor mód megadva" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "HFT monitor mód visszavonva" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "HFT hangfolyamat befejezve" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Információkérés" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "%d. számú ismeretlen szignál" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "hibás helyettesítés: nincs záró „%s” a következőben: %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: lista nem adható tömbelemnek értékül" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "nem hozható létre a csővezeték a folyamatbehelyettesítéshez" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "nem hozható létre a gyermek a folyamatbehelyettesítéshez" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nem nyitható meg olvasásra a(z) %s csővezeték" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nem nyitható meg írásra a(z) %s csővezeték" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nem duplikálható a(z) %s csővezeték %d. fájlleíróként" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "parancshelyettesítés: figyelmen kívül hagyott null bájt a bemeneten" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "nem hozható létre csővezeték a parancsbehelyettesítéshez" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "nem hozható létre gyermek a parancsbehelyettesítéshez" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: nem duplikálható a csővezeték 1. fájlleíróként" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: érvénytelen változóérték a névhivatkozáshoz" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: az indirekt kiegészítés érvénytelen" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: érvénytelen változónév" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: a paraméter nincs beállítva" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: a paraméter null vagy nincs beállítva" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: részkarakterlánc-kifejezés < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: rossz helyettesítés" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nem lehet így értéket adni" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2055,12 +2065,12 @@ msgstr "" "a parancsértelmező későbbi verziói kötelezővé teszik majd az aritmetikai " "kiértékelést" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "hibás helyettesítés: nincs záró „`” a következőben: %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "nincs találat: %s" @@ -2083,21 +2093,21 @@ msgstr "„)” szükséges" msgid "`)' expected, found %s" msgstr "„)” szükséges %s helyett" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: kétoperandusú operátor szükséges" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: egyoperandusú operátor szükséges" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "hiányzó „]”" -#: test.c:899 +#: test.c:914 #, fuzzy, c-format msgid "syntax error: `%s' unexpected" msgstr "szintaktikai hiba: váratlan „;”" @@ -2106,101 +2116,106 @@ msgstr "szintaktikai hiba: váratlan „;”" msgid "invalid signal number" msgstr "érvénytelen szignálszám" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "elfogáskezelő: a legnagyobb elfogáskezelő-szint túllépve (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: rossz érték a trap_list[%d]-ban: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: szignálkezelő a SIG_DFL, %d (%s) újraküldése önmagunknak" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: rossz szignál: %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "hiba a függvénydefiníció betöltésekor: „%s”" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "a parancsértelmező szintje (%d) túl magas, visszaállítás 1-re" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: nincs függvénykörnyezet az aktuális látókörben" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: nem lehet a változóhoz értéket rendelni" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: egész szám hozzárendelése a névhivatkozáshoz" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: nincs függvénykörnyezet az aktuális látókörben" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s exportstr-je null" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "érvénytelen karakter (%d) %s exportstr-jében" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "nincs „=” %s exportstr-jében" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variables feje nem egy függvénykörnyezet" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nincs global_variables környezet" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables feje nem egy átmeneti környezeti látókör" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nem nyitható meg FILE-ként" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: érvénytelen érték a trace fájlleíróhoz" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: a kompatibilitási érték kívül esik a tartományon" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Copyright (C) 2018 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2291,12 +2306,16 @@ msgstr "command [-pVv] parancs [arg ...]" #: builtins.c:78 #, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFgilnrtux] [-p] [név[=érték] ...]" #: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFgilnrtux] [-p] név[=érték] ..." #: builtins.c:82 @@ -2399,7 +2418,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o beállításnév] [--] [arg ...]" #: builtins.c:144 @@ -2447,7 +2467,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] név [név ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [korlát]" #: builtins.c:174 @@ -2492,11 +2513,13 @@ msgstr "" "PARANCSOK; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while PARANCSOK; do PARANCSOK; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until PARANCSOK; do PARANCSOK; done" #: builtins.c:200 @@ -3883,6 +3906,7 @@ msgstr "" " Ha az utolsó argumentum 0, a let 1-gyel tér vissza, különben 0-val." #: builtins.c:994 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3893,7 +3917,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -3971,7 +3997,7 @@ msgstr "" " A kilépési kód nulla, kivéve ha EOF-ot ér a beolvasás, időtúllépéskor\n" " (ekkor > 128) vagy érvénytelen fájlleíró megadásakor a -u kapcsolónak." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3993,7 +4019,7 @@ msgstr "" " N-nel tér vissza, kivéve ha nem függvényből vagy parancsfájlból akar\n" " visszatérni – ekkor sikertelenséget jelez." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4163,7 +4189,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4205,7 +4231,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha hibás kapcsolót kap, vagy egy NÉV csak\n" " olvasható." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4239,7 +4265,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4277,7 +4303,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4295,7 +4321,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha N negatív vagy nagyobb mint $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4320,7 +4346,7 @@ msgstr "" "sikertelenül,\n" " ha a FÁJLNÉV nem olvasható." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4346,7 +4372,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha a munkakezelés nem támogatott vagy hiba\n" " történt." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4507,7 +4533,7 @@ msgstr "" "vagy\n" " érvénytelen argumentumokat kap." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4519,7 +4545,7 @@ msgstr "" " Ez a „test” beépített parancs szinonimája, de annyiban eltér tőle,\n" " hogy az utolsó argumentuma „]” kell legyen – a nyitó „]”-lel összhangban." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4538,7 +4564,7 @@ msgstr "" " Kilépési kód:\n" " Mindig sikeres." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4621,7 +4647,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha a SZIGNÁL érvénytelen, vagy érvénytelen\n" " kapcsolót kap." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4673,7 +4699,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel lép ki, ha minden NÉV megtalálható, sikertelenül, ha nem." -#: builtins.c:1431 +#: builtins.c:1432 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4770,7 +4796,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve érvénytelen kapcsoló vagy hiba esetében." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4806,7 +4832,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel lép ki, kivéve ha a MÓD vagy egy kapcsoló érvénytelen." -#: builtins.c:1502 +#: builtins.c:1503 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4858,7 +4884,7 @@ msgstr "" " ID kilépési kódjával tér vissza; érvénytelen ID vagy kapcsoló esetén\n" " sikertelenül." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4883,7 +4909,7 @@ msgstr "" "kapcsoló\n" " esetén sikertelenül." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4905,7 +4931,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4936,7 +4962,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4972,7 +4998,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5002,7 +5028,7 @@ msgstr "" " Kilépési kód:\n" " A kilépési kód a CSŐVEZETÉK kilépési kódja lesz." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5022,7 +5048,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5055,12 +5081,14 @@ msgstr "" " Kilépési kód:\n" " Az utoljára végrehajtott parancs kilépési kódja." -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5074,12 +5102,14 @@ msgstr "" " Kilépési kód:\n" " Az utolsónak végrehajtott parancs kilépési kódja." -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5093,7 +5123,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsónak végrehajtott parancs kilépési kódja." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5115,7 +5145,7 @@ msgstr "" " Kilépési kód:\n" " A coproc parancs 0-s kilépési kóddal tér vissza." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -5139,7 +5169,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha a NÉV csak olvasható." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5157,7 +5187,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5181,7 +5211,7 @@ msgstr "" " Kilépési kód:\n" " A visszaállított parancs kilépési kódjával lép ki." -#: builtins.c:1726 +#: builtins.c:1727 #, fuzzy msgid "" "Evaluate arithmetic expression.\n" @@ -5200,7 +5230,7 @@ msgstr "" " Kilépési kód:\n" " 1-gyel tér vissza, ha KIFEJEZÉS értéke 0, különben 0-val." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5249,7 +5279,7 @@ msgstr "" " Kilépési kód:\n" " 0 vagy 1 a KIFEJEZÉSTŐL függően." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5350,7 +5380,7 @@ msgstr "" " HISTIGNORE\tKettőspontokkal elválasztott mintalista, amely mintákra\n" " \t\tilleszkedő parancsok nem kerülnek az előzmények közé\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5408,7 +5438,7 @@ msgstr "" " Sikerrel tér vissza, kivéve érvénytelen argumentum vagy könyvtárváltás\n" " során történő hiba esetén." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5457,7 +5487,7 @@ msgstr "" " Sikerrel tér vissza, kivéve érvénytelen argumentum vagy könyvtárváltás\n" " során történő hiba esetén." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5507,7 +5537,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve érvénytelen argumentum vagy hiba esetén." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5544,7 +5574,8 @@ msgstr "" " Sikerrel tér vissza, ha az OPTNÉV engedélyezve van; sikertelenül, ha\n" " hibás kapcsolókat kap vagy az OPTNÉV tiltva van." -#: builtins.c:1937 +#: builtins.c:1938 +#, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5567,6 +5598,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -5614,7 +5647,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha hibás kapcsolókat kap, vagy az írás/\n" " értékadás hibával járt." -#: builtins.c:1971 +#: builtins.c:1974 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5670,7 +5703,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve érvénytelen kapcsoló és hiba esetén." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5692,7 +5725,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel lép ki, kivéve érvénytelen kapcsoló vagy hiba esetén." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5751,7 +5784,7 @@ msgstr "" "nincs\n" " még megadva." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5823,7 +5856,7 @@ msgstr "" " Sikerrel tér vissza, kivéve érvénytelen kapcsoló vagy csak olvasható,\n" " vagy nem indexelt TÖMB megadása esetén." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5833,6 +5866,10 @@ msgstr "" " \n" " A „mapfile” szinonimája." +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: érvénytelen asszociatívtömb-index" + # see $ help caller #~ msgid "" #~ "Returns the context of the current subroutine call.\n" diff --git a/po/id.gmo b/po/id.gmo index 61f53205e..ca3c6febf 100644 Binary files a/po/id.gmo and b/po/id.gmo differ diff --git a/po/id.po b/po/id.po index b0c244e4b..272e14310 100644 --- a/po/id.po +++ b/po/id.po @@ -1,14 +1,14 @@ # Pesan Bahasa Indonesia untuk bash # Copyright (C) 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Arif E. Nugroho , 2008, 2009, 2010, 2011, 2012, 2013, 2014. +# Arif E. Nugroho , 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021. # msgid "" msgstr "" -"Project-Id-Version: bash 4.3-rc2\n" +"Project-Id-Version: bash 5.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2014-08-06 12:45+0700\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2021-09-17 19:30+0700\n" "Last-Translator: Arif E. Nugroho \n" "Language-Team: Indonesian \n" "Language: id\n" @@ -22,60 +22,55 @@ msgstr "" msgid "bad array subscript" msgstr "array subscript buruk" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: menghapus atribut nameref" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: tidak dapat mengubah index ke array yang berassosiasi" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: kunci array assosiasi tidak valid" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: tidak dapat mengassign ke index tidak-numeric" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: harus menggunakan subscript ketika memberikan assosiasi array" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: tidak dapat membuat: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: tidak dapat menemukan keymap untuk perintah" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: bukan karakter whitespace (spasi) pertama ditemukan `\"'" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "tidak menutup '%c' dalam %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: hilang pemisah colon" -#: bashline.c:4555 -#, fuzzy, c-format +#: bashline.c:4733 +#, c-format msgid "`%s': cannot unbind in command keymap" -msgstr "'%s': tidak dapat melepaskan" +msgstr "'%s': tidak dapat melepaskan dalam peta perintah" #: braces.c:327 #, c-format @@ -83,16 +78,16 @@ msgid "brace expansion: cannot allocate memory for %s" msgstr "brace expansion: cannot allocate memory for %s" #: braces.c:406 -#, fuzzy, c-format +#, c-format msgid "brace expansion: failed to allocate memory for %u elements" -msgstr "brace expansion: failed to allocate memory for %d elements" +msgstr "brace expansion: failed to allocate memory for %u elements" #: braces.c:451 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "brace expansion: failed to allocate memory for `%s'" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nama alias tidak valid" @@ -169,14 +164,13 @@ msgstr "" msgid "HOME not set" msgstr "HOME tidak diset" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "terlalu banyak argumen" #: builtins/cd.def:342 -#, fuzzy msgid "null directory" -msgstr "top direktori yang baru." +msgstr "null direktori" #: builtins/cd.def:353 msgid "OLDPWD not set" @@ -197,7 +191,7 @@ msgstr "peringatan: " msgid "%s: usage: " msgstr "%s: penggunaan: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: pilihan membutuhkan sebuah argumen" @@ -212,7 +206,7 @@ msgstr "%s: argumen numeric dibutuhkan" msgid "%s: not found" msgstr "%s: tidak ditemukan" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: pilihan tidak valid" @@ -222,7 +216,7 @@ msgstr "%s: pilihan tidak valid" msgid "%s: invalid option name" msgstr "%s: nama pilihan tidak valid" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': bukan sebuah identifier yang valid" @@ -235,7 +229,7 @@ msgstr "nomor oktal tidak valid" msgid "invalid hex number" msgstr "nomor hexa tidak valid" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "nomor tidak valid" @@ -249,88 +243,93 @@ msgstr "%s: spesifikasi sinyal tidak valid" msgid "`%s': not a pid or valid job spec" msgstr "`%s': bukan sebuah pid atau spesifikasi pekerjaan yang valid" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: variabel baca-saja" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: tidak dapat unset" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s diluar jangkauan" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argumen" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s diluar jangkauan" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: tidak ada pekerjaan seperti itu" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: tidak ada pengontrol kerja" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "tidak ada pengontrol kerja" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: terbatas" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "terbatas" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: bukan sebuah builtin shell" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "gagal menulis: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "error menentukan atribut terminal: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "error mendapatkan atribut terminal: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error mengambil direktori saat ini: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: spesifikasi pekerjaan ambigu" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" -msgstr "" +msgstr "bantuan tidak tersedia di versi ini" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: tidak dapat unset: baca-saja %s" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: tidak dapat unset" @@ -340,110 +339,110 @@ msgstr "%s: tidak dapat unset" msgid "%s: invalid action name" msgstr "%s: nama aksi tidak valid" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: tidak ada spesifikasi completion" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "" "peringatan: pilihan -F mungkin tidak bekerja seperti yang anda harapkan" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "" "peringatan: pilihan -C mungkin tidak bekerja seperti yang anda harapkan" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "saat ini sedang tidak menjalankan fungsi completion" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "hanya dapat digunakan dalam sebuah fungsi" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "tidak dapat menggunakan `-f' untuk membuat fungsi" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: fungsi baca-saja" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: reference variable cannot be an array" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: nameref variable self references not allowed" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: circular name reference" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 -#, fuzzy, c-format -msgid "`%s': invalid variable name for name reference" -msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid" - -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "tidak dapat menggunakan `-f' untuk membuat fungsi" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: fungsi baca-saja" - -#: builtins/declare.def:824 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "" +msgid "`%s': invalid variable name for name reference" +msgstr "`%s': nilai dari berkas pendeskripsi penelusur tidak valid" -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: tidak dapat menghapus variabel array secara ini" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: tidak dapat mengubah assosiasi ke array index" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: quoted compound array assignment ditinggalkan" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "dynamic loading tidak tersedia" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "tidak dapat membuka object shared %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "tidak dapat menemukan %s dalam shared object %s: %s" -#: builtins/enable.def:388 -#, fuzzy, c-format +#: builtins/enable.def:422 +#, c-format msgid "%s: dynamic builtin already loaded" -msgstr "%s: bukan dinamically loaded" +msgstr "%s: dynamic builtin telah dimuat" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "" +msgstr "muat fungsi untuk %s mengembalikan kegagalan (%d): tidak dimuat" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: bukan dinamically loaded" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: tidak dapat menghapus: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: bukan sebuah direktori" @@ -458,7 +457,7 @@ msgstr "%s: bukan sebuah file umum" msgid "%s: file is too large" msgstr "%s: file terlalu besar" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: tidak dapat menjalankan berkas binary" @@ -545,6 +544,8 @@ msgid "" "'\n" "\n" msgstr "" +"'\n" +"\n" #: builtins/help.def:185 #, c-format @@ -554,12 +555,12 @@ msgstr "" "tidak ada topik bantuan yang cocok dengan `%s'. Coba `help help' atau 'man -" "k %s' atau `info %s'." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: tidak dapat membuka: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -582,21 +583,21 @@ msgstr "" "aktif.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "tidak dapat menggunakan lebih dari satu pilihan dari -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "posisi sejarah" -#: builtins/history.def:340 -#, fuzzy, c-format +#: builtins/history.def:338 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: argumen limit tidak valid" +msgstr "%s: penanda waktu tidak valid" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: expansi sejarah gagal" @@ -619,78 +620,78 @@ msgstr "%s: argumen harus diproses atau ID pekerjaan" msgid "Unknown error" msgstr "Kesalahan tidak diketahui" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "diduga sebuah ekspresi" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: bukan sebuah indeks array" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: spesifikasi file deskripsi tidak valid" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: file deskriptor %s tidak valid" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: jumlah baris tidak valid" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: asal array tidak valid" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: nama aksi tidak valid" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "nama variabel array kosong" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "bantuan array variabel dibutuhkan" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "`%s': hilang karakter format" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': spesifikasi timeout tidak valid" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "`%c': karakter format tidak valid" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "peringatan: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "format parsing problem: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "hilang digit hexa untuk \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "hilang digit hexa untuk \\%c" @@ -844,12 +845,12 @@ msgstr "" " \n" " Builtin `dirs' menampilkan direktori stack." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: spesifikasi timeout tidak valid" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "error baca: %d: %s" @@ -862,7 +863,7 @@ msgstr "hanya dapat `return' dari sebuah fungsi atau script yang disource" msgid "cannot simultaneously unset a function and a variable" msgstr "tidak dapat secara simultan unset sebuah fungsi dan sebuah variable" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: bukan sebuah variabel array" @@ -873,19 +874,19 @@ msgid "%s: not a function" msgstr "%s: bukan sebuah fungsi" #: builtins/setattr.def:194 -#, fuzzy, c-format +#, c-format msgid "%s: cannot export" -msgstr "%s: tidak dapat unset" +msgstr "%s: tidak dapat export" #: builtins/shift.def:72 builtins/shift.def:79 msgid "shift count" msgstr "shift terhitung" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "tidak dapat menset dan menunset pilihan shell secara bersamaan" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nama pilihan shell tidak valid" @@ -923,9 +924,9 @@ msgid "%s is a function\n" msgstr "%s adalah sebuah fungsi\n" #: builtins/type.def:299 -#, fuzzy, c-format +#, c-format msgid "%s is a special shell builtin\n" -msgstr "%s adalah sebuah shell builtin\n" +msgstr "%s adalah sebuah shell builtin spesial\n" #: builtins/type.def:301 #, c-format @@ -952,16 +953,16 @@ msgstr "%s: argumen limit tidak valid" msgid "`%c': bad command" msgstr "`%c': perintah buruk" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: tidak dapat get limit: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "batas" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: tidak dapat memodifikasi batas: %s" @@ -980,7 +981,7 @@ msgstr "`%c': operator mode symbolic tidak valid" msgid "`%c': invalid symbolic mode character" msgstr "`%c': mode karakter symbolic tidak valid" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " baris " @@ -998,99 +999,109 @@ msgstr "membatalkan..." #: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "BERI TAHU: " -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "peringatan: " + +#: error.c:488 msgid "unknown command error" msgstr "perintah error tidak diketahui" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "tipe perintah buruk" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "konektor buruk" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "lompat buruk" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: variabel tidak terikat" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "kehabisan waktu menunggu masukan: otomatis-keluar\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "tidak dapat menyalurkan masukan standar dari /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': karakter format tidak valid" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] masih ada" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4793 -#, fuzzy, c-format +#: execute_cmd.c:4923 +#, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "%s: maximum function nesting level exceeded (%d)" +msgstr "eval: maximum eval nesting level exceeded (%d)" -#: execute_cmd.c:4805 -#, fuzzy, c-format +#: execute_cmd.c:4935 +#, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: maximum source nesting level exceeded (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" "%s: dibatasi: tidak dapat menspesifikasikan '/' dalam nama nama perintah" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: perintah tidak ditemukan" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: tidak dapat menjalankan berkas binary" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interpreter buruk" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: tidak dapat menjalankan berkas binary: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "`%s': adalah sebuah shell builtin" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "tidak dapat menduplikasikan fd %d ke fd %d" @@ -1103,70 +1114,68 @@ msgstr "expresi level rekursi terlewati" msgid "recursion stack underflow" msgstr "rekursi stack underflow" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "syntax error dalam expresi" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "mencoba menempatkan ke bukan sebuah variabel" -#: expr.c:530 -#, fuzzy +#: expr.c:531 msgid "syntax error in variable assignment" -msgstr "syntax error dalam expresi" +msgstr "syntax error dalam menempatkan variabel" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "dibagi oleh 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "bug: tanda expassign buruk" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "`:' diharapkan untuk sebuah pernyataan kondisional" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "eksponen kurang dari 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "idenfier diharapkan setelah pre-increment atau pre-decrement" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "hilang `)'" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "syntax error: operand diharapkan" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: operator arithmetic tidak valid" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (error token adalah \"%s\")" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "basis arithmetic tidak valid" -#: expr.c:1582 -#, fuzzy +#: expr.c:1587 msgid "invalid integer constant" -msgstr "%s: jumlah baris tidak valid" +msgstr "konstanta bulat tidak valid" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "nilai terlalu besar untuk basis" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: expresi error\n" @@ -1175,7 +1184,7 @@ msgstr "%s: expresi error\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: tidak dapat mengakses direktori orang tua" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "tidak dapat mereset mode nodelay untuk fd %d" @@ -1196,168 +1205,167 @@ msgstr "simpan bash_input: buffer telah ada untuk fd %d baru" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -msgstr "" +msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -msgstr "" +msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forked pid %d terlihat dalam pekerjaan yang sedang berjalan %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "menghapus pekerjaan yang terhenti %d dengan proses grup %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) ditandai dengan tetap hidup" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: tidak ada pid seperti itu" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "sinyal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Selesai" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Terhenti" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Terhenti(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Berjalan" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Selesai(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Keluar %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Status tidak diketahui" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(core didump) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "anak setpgid (%ld ke %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld bukan sebuah anak dari shell ini" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Tidak ada catatan untuk proses %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: pekerjaan %d terhenti" -#: jobs.c:3564 -#, fuzzy, c-format +#: jobs.c:3551 +#, c-format msgid "%s: no current jobs" -msgstr "%s: tidak ada pekerjaan seperti itu" +msgstr "%s: tidak ada pekerjaan sekarang" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: pekerjaan telah selesai" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: pekerjaan %d sudah berjalan di belakang (background)" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: mengaktifkan WNOHANG untuk menghindari blok tak terhingga" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: baris %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (core didump)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(wd sekarang: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp gagal" -#: jobs.c:4447 -#, fuzzy +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" -msgstr "initialize_job_control: baris disiplin" +msgstr "initialize_job_control: tidak ada kontrol pekerjaan di belakang" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: baris disiplin" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "tidak dapat menset terminal proses grup (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "tidak ada pengontrol pekerjaan dalam shell ini" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: gagal assertion: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1366,49 +1374,47 @@ msgstr "" "\r\n" "malloc: %s:%d: assertion rusak\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "tidak diketahui" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: blok dalam daftar bebas clobbered" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: dipanggil dengan argumen blok yang sudah dibebaskan" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: dipanggil dengan argumen blok yang tidak dialokasikan" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underflow terdeteksi; mh_nbytes diluar dari jangkauan" -#: lib/malloc/malloc.c:1001 -#, fuzzy +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" -msgstr "free: underflow terdeteksi; mh_nbytes diluar dari jangkauan" +msgstr "free: underflow terdeteksi; magic8 terkorupsi" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: awal dan akhir dari ukuran potongan berbeda" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: dipanggil dengan argumen blok yang tidak teralokasikan" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underflow terdeteksi; my_nbytes diluar dari jangkauan" -#: lib/malloc/malloc.c:1141 -#, fuzzy +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" -msgstr "realloc: underflow terdeteksi; my_nbytes diluar dari jangkauan" +msgstr "realloc: underflow terdeteksi; magic8 terkorupsi" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: awal dan akhir dari ukuran potongan berbeda" @@ -1451,22 +1457,22 @@ msgstr "%s: spesifikasi jalur network buruk" msgid "network operations not supported" msgstr "operasi jaringan tidak dilayani" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: tidak dapat mengubah lokal (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: tidak dapat mengubah local (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: tidak dapat mengubah lokal (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: tidak dapat mengubah lokal (%s): %s" @@ -1484,139 +1490,141 @@ msgstr "Anda memiliki surat baru dalam $_" msgid "The mail in %s has been read\n" msgstr "Surat dalam %s telah dibaca\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "syntax error: membutuhkan ekspresi arithmetic" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "syntax error: `;' tidak terduga" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "syntax error: `((%s))'" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipe instruksi buruk %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "dokumen-disini di baris %d dibatasi oleh akhir-dari-berkas (diinginkan `%s')" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instruksi redireksi `%d' diluar dari jangkauan" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) terlampaui SIZE_MAX (%lu): baris " +"terpotong" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "jumlah maksimal dokumen disini tercapai" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF tidak terduga ketika mencari untuk pencocokan `%c'" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "EOF tidak terduga ketika mencari untuk `]]'" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error dalam ekspresi kondisional: tanda `%s' tidak terduga" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "syntax error dalam ekspresi kondisional" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "tanda `%s' tidak terduga, diduga `)'" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "diduga `)'" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumen tidak terduga `%s' ke operator kondisional unary" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "argumen tidak terduga untuk operasi unary kondisional" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "tanda `%s' tidak terduga, operator binary kondisional diduga" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "operator binary kondisional diduga" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumen `%s' tidak terduga ke operator binary kondisional" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "argumen tidak terduga ke operasi binary kondisional" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "tanda `%c' tidak terduga dalam perintah kondisional" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "tanda `%s' tidak terduga dalam perintah kondisional" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "tanda %d tidak terduga dalam perintah kondisional" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntax error didekat tanda `%s' yang tidak terduga" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "syntax error didekat `%s'" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "syntax error: tidak terduga diakhir dari berkas" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "syntax error" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Gunakan \"%s\" untuk meninggalkan shell.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF tidak terduga ketika mencari untuk pencocokan ')'" @@ -1628,7 +1636,7 @@ msgstr "completion: fungsi `%s' tidak ditemukan" #: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: kemungkinan retry loop" #: pcomplib.c:182 #, c-format @@ -1654,94 +1662,94 @@ msgstr "xtrace_set: berkas penunjuk KOSONG" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: '%c': format karakter tidak valid" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "berkas deskripsi diluar dari jangkauan" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirect ambigu" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: tidak dapat menulis berkas yang sudah ada" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: tidak dapat meredirect keluaran" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "tidak dapat membuat berkas sementara untuk dokumen disini: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: tidak dapat meng-'assign' fd ke variabel" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port tidak dilayani tanpa jaringan" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "redirection error: tidak dapat menduplikasi fd" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "tidak dapat menemukan /tmp, tolong buat!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp harus berupa sebuah nama direktori yang valid" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" -msgstr "" +msgstr "mode pretty-printing diabaikan dalam shells interactive" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: pilihan tidak valid" -#: shell.c:1319 -#, fuzzy, c-format +#: shell.c:1343 +#, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "tidak dapat mereset mode nodelay untuk fd %d" +msgstr "tidak dapat menset uid ke %d: uid efektif %d" -#: shell.c:1330 -#, fuzzy, c-format +#: shell.c:1354 +#, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "tidak dapat mereset mode nodelay untuk fd %d" +msgstr "tidak dapat menset gid ke %d: gid efektif %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "tidak dapat menjalankan debugger; mode debugging tidak aktif" -#: shell.c:1632 -#, fuzzy, c-format +#: shell.c:1658 +#, c-format msgid "%s: Is a directory" -msgstr "%s: bukan sebuah direktori" +msgstr "%s: Direktori" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Aku tidak memiliki nama!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versi %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1750,314 +1758,314 @@ msgstr "" "Penggunaan:\t%s [GNU pilihan panjang] [pilihan] ...\n" "\t%s [GNU pilihan panjang] [pilihan] berkas-script ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "GNU pilihan panjang:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Pilihan shell:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t-ilrsD atau -c perintah atau -O shopt_option\t\t(hanya pemanggilan)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s atau pilihan -o\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Ketik `%s -c \"help set\"' untuk informasi lebih lanjut mengenai pilihan " "shell.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Ketik `%s -c help' untuk informasi lebih lanjut mengenai perintah builting " "shell.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Gunakan perintah 'bashbug' untuk melaporkan bugs.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "bash halaman rumah: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "" +"Bantuan umum menggunakan aplikasi GNU: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operasi tidak valid" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Sinyal palsu" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Hangup" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Interupsi" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Berhenti" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Instruksi ilegal" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "BPT trace/trap" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Instruksi ABORT" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Instruksi EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Floating point exception" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Dibunuh" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Bus error" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Kesalahan segmentasi" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Pemanggilan sistem buruk" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Pipe rusak" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Alarm clock" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Selesai" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Kodisi IO penting" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Terhenti (sinyal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Melanjutkan" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Anak tewas atau berhenti" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Terhenti (tty input)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Terhenti (tty output)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O siap" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Batas CPU" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Batas berkas" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarm (virtual)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarm (profile)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Window berubah" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Catatan terkunci" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Sinyal pengguna 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Sinyal pengguna 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "HFT masukan data tertunda" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "Kelihatannya akan terjadi kegagalan power suply" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "Kelihatannya akan terjadi kerusakan sistem" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "pindahkan proses ke CPU lain" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "error dalam pemrograman" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "HFT mode monitoring diberikan" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "HFT mode monitoring ditarik" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "HFTP sound sequence telah selesai" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Permintaan informasi" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Sinyal tidak diketahui #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substitusi buruk: tidak ada penutupan `%s' dalam %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: tidak dapat meng-assign daftar kedalam anggoya array" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "tidak dapat membuat pipe untuk proses substitusi" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "tidak dapat membuat anak untuk proses substitusi" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "tidak dapat membuka named pipe %s untuk membaca" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "tidak dapat membukan named pipe %s untuk menulis" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "tidak dapat menduplikasi nama pipe %s sebagai fd %d" -#: subst.c:6213 -#, fuzzy +#: subst.c:6370 msgid "command substitution: ignored null byte in input" -msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s" +msgstr "substitusi perintah: mengabaikan byte kosong dalam masukan" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "tidak dapat membuat pipe untuk perintah substitusi" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "tidak dapat membuat anak untuk perintah substitusi" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: tidak dapat menduplikasikan pipe sebagi fd 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid" -#: subst.c:6979 subst.c:6997 subst.c:7169 -#, fuzzy, c-format +#: subst.c:7178 subst.c:7196 subst.c:7369 +#, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: jumlah baris tidak valid" +msgstr "%s: ekspansi tidak langsung tidak valid" -#: subst.c:7013 subst.c:7177 -#, fuzzy, c-format +#: subst.c:7212 subst.c:7377 +#, c-format msgid "%s: invalid variable name" -msgstr "`%s': nama alias tidak valid" +msgstr "`%s': nama variabel tidak valid" -#: subst.c:7256 -#, fuzzy, c-format +#: subst.c:7478 +#, c-format msgid "%s: parameter not set" -msgstr "%s: parameter kosong atau tidak diset" +msgstr "%s: parameter tidak diset" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter kosong atau tidak diset" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expresi < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: substitusi buruk" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: tidak dapat meng-assign dengan cara ini" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2065,12 +2073,12 @@ msgstr "" "versi selanjutnya dari shell akan memaksa evaluasi dari sebuah penggantian " "aritmetika" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "tidak cocok: %s" @@ -2093,40 +2101,40 @@ msgstr "')' diduga" msgid "`)' expected, found %s" msgstr "`)' diduga, ditemukan %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: operator binary diduga" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: operator unary diduga" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "hilang `]'" -#: test.c:899 -#, fuzzy, c-format +#: test.c:914 +#, c-format msgid "syntax error: `%s' unexpected" -msgstr "syntax error: `;' tidak terduga" +msgstr "syntax error: `%s' tidak terduga" #: trap.c:220 msgid "invalid signal number" msgstr "nomor sinyal tidak valid" -#: trap.c:325 -#, fuzzy, c-format +#: trap.c:323 +#, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" -msgstr "%s: maximum function nesting level exceeded (%d)" +msgstr "trap handler: maximum trap handler level exceeded (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: nilai buruk dalam trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2134,88 +2142,93 @@ msgstr "" "run_pending_traps: sinyal handler adalah SIG_DFL, mengirimkan kembali %d " "(%s) kediri sendiri" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinyal buruk %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "error mengimpor definisi fungsi untuk `%s'" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "level shell (%d) terlalu tinggi, mereset ke 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: tidak ada context fungsi di scope ini" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: tidak dapat meng-'assign' fd ke variabel" -#: variables.c:3475 -#, fuzzy, c-format +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid" +msgstr "%s: memberikan integer ke berkas pendeskripsi penelusur" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: tidak ada context fungsi dalam scope ini" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s memiliki exportstr kosong" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "karakter %d tidak valid dalam exporstr untuk %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "bukan `=' dalam exportstr untuk %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: kepala dari shell_variables bukan sebuah fungsi cbntext" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: bukan global_variable context" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: kepala dari shell_variables bukan sebuah scope lingkungan " "sementara" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: tidak dapat membuka sebagai BERKAS" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: nilai dari berkas pendeskripsi penelusur tidak valid" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: diluar jangkauan" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Hak Cipta (C) 2012 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Hak Cipta (C) 2020 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2307,13 +2320,17 @@ msgstr "perintah [-pVv] perintah [argumen ...]" #: builtins.c:78 #, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilnrtux] [-p] [name[=nilai] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" +msgstr "declare [-aAfFgiIlnrtux] [-p] [name[=nilai] ...]" #: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] name[=nilai] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" +msgstr "typeset [-aAfFgiIlnrtux] [-p] name[=nilai] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2336,12 +2353,10 @@ msgid "eval [arg ...]" msgstr "eval [argumen ...]" #: builtins.c:96 -#, fuzzy msgid "getopts optstring name [arg ...]" -msgstr "getopts nama optstring [arg]" +msgstr "getopts nama optstring [arg ...]" #: builtins.c:98 -#, fuzzy msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" msgstr "exec [-cl] [-a nama] [perintah [argumen ...]] [redireksi ...]" @@ -2387,9 +2402,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [spesifikasi pekerjaan ...] atau jobs -x perintah [args]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [spesifikasi pekerjaan ...]" +msgstr "disown [-h] [-ar] [spesifikasi pekerjaan ... | pid ...]" #: builtins.c:134 msgid "" @@ -2416,7 +2430,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nama-pilihan] [--] [argumen ...]" #: builtins.c:144 @@ -2465,17 +2480,16 @@ msgstr "type [-afptP] nama [name ...]" #: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [batas]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [batas]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -#, fuzzy msgid "wait [-fn] [-p var] [id ...]" -msgstr "wait [-n] [id ...]" +msgstr "wait [-fn] [-p var] [id ...]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2510,11 +2524,13 @@ msgstr "" "PERINTAH; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while PERINTAH; do PERINTAH; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until PERINTAH; do PERINTAH; done" #: builtins.c:200 @@ -2566,18 +2582,16 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [argumen]" #: builtins.c:231 -#, fuzzy msgid "" "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o pilihan] [-A action] [-G globpat] [-" -"W daftar kata] [-F fungsi] [-C perintah] [-X filterpat] [-P prefix] [-S " +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o pilihan] [-A action] [-G globpat] " +"[-W daftar kata] [-F fungsi] [-C perintah] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" #: builtins.c:235 -#, fuzzy msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" "F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" @@ -2586,27 +2600,24 @@ msgstr "" "F fungsi] [-C perintah] [-X filterpat] [-P prefix] [-S suffix] [word]" #: builtins.c:239 -#, fuzzy msgid "compopt [-o|+o option] [-DEI] [name ...]" -msgstr "compopt [-o|+o pilihan] [-DE] [nama ...]" +msgstr "compopt [-o|+o pilihan] [-DEI] [nama ...]" #: builtins.c:242 -#, fuzzy msgid "" "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" msgstr "" -"mapfile [-n jumlah] [-O asal] [-s jumlah] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d pembatas] [-n jumlah] [-O asal] [-s jumlah] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" #: builtins.c:244 -#, fuzzy msgid "" "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" msgstr "" -"readarray [-n jumlah] [-O asal] [-s jumlah] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d pembatas] [-n jumlah] [-O asal] [-s jumlah] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" #: builtins.c:256 #, fuzzy @@ -2649,7 +2660,6 @@ msgstr "" " terdefinisi." #: builtins.c:278 -#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" @@ -2661,7 +2671,7 @@ msgstr "" "Hapus setiap NAMA dari daftar yang mendefinisikan aliases.\n" " \n" " Pilihan:\n" -" -a\thapus semua definisi alias.\n" +" -a\thapus semua definisi alias\n" " \n" " Mengembalikan sukses kecuali sebuah NAMA bukan alias yang sudah ada." @@ -2789,7 +2799,6 @@ msgstr "" " Status keluar adalah 0 kecuali N tidak lebih besar atau sama dengan 1." #: builtins.c:354 -#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2814,7 +2823,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status keluar dari SHELL-BUILTIN, atau salah jika SHELL-" "BUILTIN adalah\n" -" bukan sebuah shell builtin.." +" bukan sebuah shell builtin." #: builtins.c:369 msgid "" @@ -2919,7 +2928,6 @@ msgstr "" " Mengembalikan 0 jika direktori berubah; bukan nol jika tidak." #: builtins.c:425 -#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" @@ -2938,7 +2946,7 @@ msgstr "" " \n" " Pilihan:\n" " -L\tmenampilkan nilai dari $PWD jika ini nama dari direktori\n" -" \tyang digunakan sekarang\n" +" \t\tyang digunakan sekarang\n" " -P\tmenampilkan direktori pisik, tanpa link simbolik apapun\n" " \n" " Secara default, `pwd' berlaku seperi jika pilihan `-L' " @@ -2990,7 +2998,6 @@ msgstr "" " Selalu gagal." #: builtins.c:471 -#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -3018,11 +3025,11 @@ msgstr "" " dalam disk ketika sebuah fungsi dengan nama yang sama ada.\n" " \n" " Pilihan:\n" -" -p\tgunakan sebuah nilai default untuk PATH yang menjamin untuk " +" -p gunakan sebuah nilai default untuk PATH yang menjamin untuk " "mencari seluruh\n" -" \tpenggunaan stadar\n" -" -v\tmenampilkan deskripsi dari PERINTAH sama dengan `type' builtin\n" -" -V\tmenampilkan lebih jelas deskripsi dari setiap PERINTAH\n" +" penggunaan stadar\n" +" -v menampilkan deskripsi dari PERINTAH sama dengan `type' builtin\n" +" -V menampilkan lebih jelas deskripsi dari setiap PERINTAH\n" " \n" " Status Keluar:\n" " Mengembalikan status keluar dari PERINTAH, atau gagal jika PERINTAH " @@ -3105,7 +3112,6 @@ msgstr "" "sebuah error terjadi." #: builtins.c:532 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3113,7 +3119,7 @@ msgid "" msgstr "" "Menset nilai variabel dan atribut.\n" " \n" -" Kadaluarsa. Lihat `help declare'." +" Sama dengan `declare'. Lihat `help declare'." #: builtins.c:540 msgid "" @@ -3788,7 +3794,6 @@ msgstr "" " Jika -x digunakan, mengembalikan status keluar dari PERINTAH." #: builtins.c:906 -#, fuzzy msgid "" "Remove jobs from current shell.\n" " \n" @@ -3813,7 +3818,7 @@ msgstr "" " -a\thapus seluruh pekerjaan jika JOBSPEC tidak diberikan\n" " -h\ttandai setiap JOBSPEC sehingga SIGHUP tidak dikirim ke pekerjaan " "jika\n" -" \tshell menerima sebuah SIGHUP\n" +" \t\tshell menerima sebuah SIGHUP\n" " -r\thapus hanya pekerjaan yang sedang berjalan\n" " \n" " Status Keluar:\n" @@ -3965,7 +3970,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -4056,7 +4063,7 @@ msgstr "" " atau sebuah berkas deskripsi disupply sebagai sebuah argumen ke pilihan -" "u." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -4078,7 +4085,7 @@ msgstr "" " Mengembalikan N, atau gagal jika shell tidak menjalan sebuah fungsi atau " "script." -#: builtins.c:1054 +#: builtins.c:1055 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4255,7 +4262,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan." -#: builtins.c:1139 +#: builtins.c:1140 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4295,7 +4302,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah NAMA adalah baca-saja." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4330,7 +4337,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "NAMA tidak valid." -#: builtins.c:1180 +#: builtins.c:1181 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4371,7 +4378,7 @@ msgstr "" " Mengembalikan sukses kecual sebuah pilihan tidak valid diberikan atau " "NAMA tidak valid." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4389,7 +4396,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali N adalah negatif atau lebih besar dari $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4415,7 +4422,7 @@ msgstr "" "BERKAS; gagal jika\n" " NAMA BERKAS tidak dapat dibaca." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4441,7 +4448,7 @@ msgstr "" " Mengembalikan sukses kecuali pengontrol pekerjaan tidak aktif atau " "sebuah error terjadi." -#: builtins.c:1261 +#: builtins.c:1262 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4608,7 +4615,7 @@ msgstr "" "EXPR mengevaluasi ke\n" " salah atau sebuah argumen tidak valid diberikan." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4620,7 +4627,7 @@ msgstr "" " Ini sinonim untuk \"test\" builtin, tetapi argumen terakhir\n" " harus berupa sebuah literal `]', untuk mencocokan dengan pembukaan `['." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4640,7 +4647,7 @@ msgstr "" " Status Keluar:\n" " Selalu sukses." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4721,7 +4728,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah SIGSPEC adalah tidak valid atau " "sebuah pilihan tidak valid diberikan." -#: builtins.c:1400 +#: builtins.c:1401 #, fuzzy msgid "" "Display information about command type.\n" @@ -4784,7 +4791,7 @@ msgstr "" " Mengembalikan sukses jika seluruh dari NAMA ditemukan; gagal jika ada " "yang tidak ditemukan." -#: builtins.c:1431 +#: builtins.c:1432 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4879,7 +4886,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4917,7 +4924,7 @@ msgstr "" " Mengembalikan sukses kecuali MODE tidak valid atau sebuah pilihan tidak " "valid diberikan." -#: builtins.c:1502 +#: builtins.c:1503 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4965,7 +4972,7 @@ msgstr "" "pilihan tidak\n" " valid diberikan." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4991,7 +4998,7 @@ msgstr "" "pilihan tidak valid\n" " diberikan." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -5015,7 +5022,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -5045,7 +5052,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5082,7 +5089,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5110,7 +5117,7 @@ msgstr "" " Status Keluar:\n" " Status kembali adalah status kembali dari PIPELINE." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5128,7 +5135,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan setatus dari perintah terakhir yang dijalankan." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5166,12 +5173,14 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5184,12 +5193,14 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5201,8 +5212,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1671 -#, fuzzy +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5223,9 +5233,9 @@ msgstr "" " Nama baku adalah \"COPROC\".\n" " \n" " Status Keluar:\n" -" Mengembalikan status keluar dari PERINTAH." +" Perintah coproc mengembalikan status keluar 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -5250,7 +5260,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali NAMA adalah baca-saja." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5269,7 +5279,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dieksekusi." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5296,8 +5306,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari pekerjaan yang dilanjutkan." -#: builtins.c:1726 -#, fuzzy +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5310,12 +5319,12 @@ msgstr "" "Evaluasi ekspresi arithmetic.\n" " \n" " EXPRESI dievaluasi berdasarkan dalam aturan evaluasi\n" -" arithmetic. Sama dengan \"let EXPRESI\".\n" +" arithmetic. Sama dengan `let \"EXPRESI\"'.\n" " \n" " Status Keluar:\n" " Mengembalikan 1 jika EXPRESI dievaluasi ke 0; mengembalikan 0 jika tidak." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5372,7 +5381,7 @@ msgstr "" " Status Keluar:\n" " 0 atau 1 tergantun dari nilai dari EKSPRESI." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5486,7 +5495,7 @@ msgstr "" "digunakan untuk menentukan dimana\n" " \t\tperintah seharusnya disimpan dalam daftar sejarah.\n" -#: builtins.c:1821 +#: builtins.c:1822 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5547,7 +5556,7 @@ msgstr "" "atau pemindahan\n" " direktori gagal." -#: builtins.c:1855 +#: builtins.c:1856 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5603,7 +5612,7 @@ msgstr "" "atau pemindahan\n" " direktori gagal." -#: builtins.c:1885 +#: builtins.c:1886 #, fuzzy msgid "" "Display directory stack.\n" @@ -5660,7 +5669,7 @@ msgstr "" " Mengembalikan sukses kecuali ada sebuah pilihan tidak valid diberikan " "atau sebuah error terjadi." -#: builtins.c:1916 +#: builtins.c:1917 #, fuzzy msgid "" "Set and unset shell options.\n" @@ -5699,7 +5708,7 @@ msgstr "" "tidak valid diberikan\n" " atau OPTNAME dinonaktifkan." -#: builtins.c:1937 +#: builtins.c:1938 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5723,6 +5732,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -5764,7 +5775,7 @@ msgstr "" "sebuah penulisan atau penempatan\n" " error terjadi." -#: builtins.c:1971 +#: builtins.c:1974 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5822,7 +5833,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5845,7 +5856,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:2016 +#: builtins.c:2019 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5909,7 +5920,7 @@ msgstr "" "NAMA tidak memiliki\n" " spesifikasi penyelesaian yang terdefinisi." -#: builtins.c:2047 +#: builtins.c:2050 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5987,7 +5998,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "ARRAY adalah baca-saja." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5997,9 +6008,9 @@ msgstr "" " \n" " Sebuah sinonim untuk `mapfile'." -#, fuzzy -#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." -#~ msgstr "Hak Cipta (C) 2013 Free Software Foundation, Inc." +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: kunci array assosiasi tidak valid" #~ msgid "" #~ "Returns the context of the current subroutine call.\n" @@ -6016,6 +6027,9 @@ msgstr "" #~ msgid "Unknown Signal #" #~ msgstr "Sinyal tidak diketahui #" +#~ msgid "Copyright (C) 2013 Free Software Foundation, Inc." +#~ msgstr "Hak Cipta (C) 2013 Free Software Foundation, Inc." + #~ msgid ":" #~ msgstr ":" diff --git a/po/it.gmo b/po/it.gmo index 4bbd10a4e..f23813b05 100644 Binary files a/po/it.gmo and b/po/it.gmo differ diff --git a/po/it.po b/po/it.po index 1defc4061..ec0ebc4cc 100644 --- a/po/it.po +++ b/po/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2011-10-17 09:14+0200\n" "Last-Translator: Sergio Zanchetta \n" "Language-Team: Italian \n" @@ -22,59 +22,54 @@ msgstr "" msgid "bad array subscript" msgstr "indice dell'array errato" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: impossibile convertire un array indicizzato in uno associativo" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: chiave dell'array associativo non valida" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: impossibile assegnare a un indice non numerico" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: deve essere usato un indice nell'assegnazione di un array associativo" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: impossibile creare: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: impossibile trovare una mappatura per il comando" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: il primo carattere non spazio non è \"\"\"" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "carattere di chiusura \"%c\" non presente in %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: separatore di tipo due punti mancante" -#: bashline.c:4555 +#: bashline.c:4733 #, fuzzy, c-format msgid "`%s': cannot unbind in command keymap" msgstr "\"%s\": impossibile eliminare l'associazione" @@ -94,7 +89,7 @@ msgstr "" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "\"%s\": nome alias non valido" @@ -173,7 +168,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME non impostata" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "troppi argomenti" @@ -201,7 +196,7 @@ msgstr "attenzione: " msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: l'opzione richiede un argomento" @@ -216,7 +211,7 @@ msgstr "%s: è necessario un argomento numerico" msgid "%s: not found" msgstr "%s: non trovata" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: opzione non valida" @@ -226,7 +221,7 @@ msgstr "%s: opzione non valida" msgid "%s: invalid option name" msgstr "%s: nome dell'opzione non valido" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "\"%s\": non è un identificatore valido" @@ -239,7 +234,7 @@ msgstr "numero ottale non valido" msgid "invalid hex number" msgstr "numero esadecimale non valido" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "numero non valido" @@ -253,88 +248,93 @@ msgstr "%s: specifica di segnale non valida" msgid "`%s': not a pid or valid job spec" msgstr "\"%s\": non è un pid o un numero di job valido" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: variabile in sola lettura" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: impossibile azzerare" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fuori dall'intervallo" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argomento" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s fuori dall'intervallo" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: job inesistente" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: nessun controllo dei job" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "nessun controllo dei job" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: limitato" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "limitato" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: non è un comando interno di shell" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "errore in scrittura: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "errore nell'impostazione degli attributi del terminale: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "errore nel recupero degli attributi del terminale: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: errore nel recupero della directory corrente: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: specifica di job ambigua" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: impossibile azzerare: %s in sola lettura" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: impossibile azzerare" @@ -344,108 +344,108 @@ msgstr "%s: impossibile azzerare" msgid "%s: invalid action name" msgstr "%s: nome azione non valido" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: nessun completamento specificato" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "attenzione: l'opzione -F potrebbe non funzionare come previsto" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "attenzione: l'opzione -C potrebbe non funzionare come previsto" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "funzione di completamento attualmente non in esecuzione" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "può essere usato solo in una funzione" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "impossibile usare \"-f\" per creare funzioni" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funzione in sola lettura" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" msgstr "\"%s\": nome alias non valido" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "impossibile usare \"-f\" per creare funzioni" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: funzione in sola lettura" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: impossibile eliminare variabili array in questo modo" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: impossibile convertire un array associativo in uno indicizzato" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "caricamento dinamico non disponibile" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "impossibile aprire l'oggetto condiviso %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "impossibile trovare %s nell'oggetto condiviso %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, fuzzy, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: non caricato dinamicamente" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: non caricato dinamicamente" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: impossibile eliminare: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: è una directory" @@ -460,7 +460,7 @@ msgstr "%s: non è un file regolare" msgid "%s: file is too large" msgstr "%s: file troppo grande" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: impossibile eseguire il file binario" @@ -556,12 +556,12 @@ msgstr "" "nessun argomento della guida corrisponde a \"%s\". Provare \"help help\" o " "\"man -k %s\" o \"info %s\"." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: impossibile aprire: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -582,21 +582,21 @@ msgstr "" "Un asterisco (*) vicino a un nome significa che il comando è disabilitato.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "impossibile usare più di uno tra -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "posizione nella cronologia" -#: builtins/history.def:340 +#: builtins/history.def:338 #, fuzzy, c-format msgid "%s: invalid timestamp" msgstr "%s: nome dell'opzione non valido" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: espansione della cronologia non riuscita" @@ -619,78 +619,78 @@ msgstr "%s: gli argomenti devono essere ID di processo o di job" msgid "Unknown error" msgstr "Errore sconosciuto" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "attesa espressione" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: non è un array indicizzato" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: specifica di descrittore di file non valida" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descrittore di file non valido: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: numero di righe non valido" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: origine dell'array non valida" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum di callback non valido" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "nome della variabile array vuoto" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "necessario il supporto alla variabile array" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "\"%s\": manca il carattere di formato" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "\"%c\": specifica di formato dell'orario non valida" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": carattere di formato non valido" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "attenzione: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "cifra esadecimale mancante in \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "cifra unicode mancante in \\%c" @@ -843,12 +843,12 @@ msgstr "" " \n" " Il comando interno \"dirs\" visualizza lo stack delle directory." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: specifica di timeout non valida" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "errore in lettura: %d: %s" @@ -862,7 +862,7 @@ msgstr "" msgid "cannot simultaneously unset a function and a variable" msgstr "impossibile azzerare contemporaneamente una funzione e una variabile" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: non è una variabile array" @@ -881,11 +881,11 @@ msgstr "%s: impossibile azzerare" msgid "shift count" msgstr "numero di scorrimenti" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "impossibile impostare e azzerare opzioni di shell contemporaneamente" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome dell'opzione di shell non valido" @@ -952,16 +952,16 @@ msgstr "%s: argomento di limite non valido" msgid "`%c': bad command" msgstr "\"%c\": comando errato" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: impossibile recuperare il limite: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "limite" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: impossibile modificare il limite: %s" @@ -980,7 +980,7 @@ msgstr "\"%c\": operatore di modo simbolico non valido" msgid "`%c': invalid symbolic mode character" msgstr "\"%c\": carattere di modo simbolico non valido" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " riga " @@ -1000,96 +1000,106 @@ msgstr "Interruzione..." msgid "INFORM: " msgstr "" -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "attenzione: " + +#: error.c:488 msgid "unknown command error" msgstr "errore di comando sconosciuto" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "tipo di comando errato" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "connettore errato" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "salto errato" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: variabile non assegnata" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atempo di attesa scaduto per l'input: auto-logout\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "impossibile redirigere lo standard input da /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: \"%c\": carattere di formato non valido" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "errore della pipe" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: limitato: impossibile specificare \"/\" nei nomi dei comandi" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: comando non trovato" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: impossibile eseguire il file binario" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interprete errato" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: impossibile eseguire il file binario" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s è un comando interno di shell\n" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossibile duplicare fd %d su fd %d" @@ -1102,70 +1112,70 @@ msgstr "superato il livello di ricorsione dell'espressione" msgid "recursion stack underflow" msgstr "underflow dello stack di ricorsione" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "errore di sintassi nell'espressione" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "tentata un'assegnazione a una non variabile" -#: expr.c:530 +#: expr.c:531 #, fuzzy msgid "syntax error in variable assignment" msgstr "errore di sintassi nell'espressione" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "divisione per 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "bug: token di expassign errato" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "atteso \":\" per l'espressione condizionale" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "esponente minore di 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "atteso identificatore dopo un pre-incremento o un pre-decremento" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "\")\" mancante" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "errore di sintassi: atteso un operando" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "errore di sintassi: operatore aritmetico non valido" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (il token dell'errore è \"%s\")" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "base aritmetica non valida" -#: expr.c:1582 +#: expr.c:1587 #, fuzzy msgid "invalid integer constant" msgstr "%s: numero di righe non valido" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "valore troppo grande per la base" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: errore di espressione\n" @@ -1174,7 +1184,7 @@ msgstr "%s: errore di espressione\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: impossibile accedere alle directory padre" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "impossibile reimpostare il modo nodelay per fd %d" @@ -1195,168 +1205,168 @@ msgstr "save_bash_input: buffer già esistente per il nuovo fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pipe pgrp" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "il pid %d del fork appare nel job in esecuzione %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "eliminazione del job %d interrotto con il gruppo di processi %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) segnato come ancora in vita" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: pid inesistente" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Segnale %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Completato" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Fermato" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Fermato(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "In esecuzione" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Eseguito(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Uscita %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Stato sconosciuto" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(core dump creato) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (dir: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid del figlio (%ld a %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: il pid %ld non è un figlio di questa shell" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: nessun record del processo %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: il job %d è fermo" -#: jobs.c:3564 +#: jobs.c:3551 #, fuzzy, c-format msgid "%s: no current jobs" msgstr "%s: job inesistente" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: il job è terminato" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: il job %d è già in background" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: attivato WNOHANG per evitare blocchi indefiniti" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: riga %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (core dump creato)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(dir ora: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp non riuscita" -#: jobs.c:4447 +#: jobs.c:4434 #, fuzzy msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: disciplina di linea" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplina di linea" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "impossibile impostare il gruppo di processi del terminale (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "nessun controllo dei job in questa shell" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: asserzione non riuscita: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1365,49 +1375,49 @@ msgstr "" "\r\n" "malloc: %s:%d: asserzione non riuscita\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "sconosciuto" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: blocco eliminato nell'elenco dei disponibili" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: chiamata con un argomento di blocco già liberato" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: chiamata con un argomento di blocco non allocato" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: riscontrato un underflow; mh_nbytes fuori intervallo" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 #, fuzzy msgid "free: underflow detected; magic8 corrupted" msgstr "free: riscontrato un underflow; mh_nbytes fuori intervallo" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: dimensioni diverse dei blocchi di inizio e di fine" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: chiamata con un argomento di blocco non allocato" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: riscontrato un underflow; mh_nbytes fuori intervallo" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 #, fuzzy msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: riscontrato un underflow; mh_nbytes fuori intervallo" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: dimensioni diverse dei blocchi di inizio e di fine" @@ -1450,22 +1460,22 @@ msgstr "%s: specifica del percorso di rete errata" msgid "network operations not supported" msgstr "operazione di rete non supportata" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: impossibile cambiare la localizzazione (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: impossibile cambiare la localizzazione (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s): %s" @@ -1483,141 +1493,141 @@ msgstr "È presente della nuova posta in $_" msgid "The mail in %s has been read\n" msgstr "La posta in %s è stata letta\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "errore di sintassi: richiesta espressione aritmetica" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "errore di sintassi: \";\" non atteso" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "errore di sintassi: \"((%s))\"" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo di istruzione errata %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-document alla riga %d è delimitato da un EOF (era richiesto \"%s\")" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "make_redirection: istruzione di reindirizzamento \"%d\" fuori dell'intervallo" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF non atteso durante la ricerca di \"%c\"" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "EOF non atteso durante la ricerca di \"]]\"" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" "errore di sintassi nell'espressione condizionale: token non atteso \"%s\"" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "errore di sintassi nell'espressione condizionale" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "token non atteso \"%s\", era atteso \")\"" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "atteso \")\"" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argomento non atteso \"%s\" per l'operatore unario condizionale" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "argomento non atteso per l'operatore unario condizionale" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "token non atteso \"%s\", era atteso un operatore binario condizionale" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "atteso operatore binario condizionale" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argomento non atteso \"%s\" per l'operatore binario condizionale" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "argomento non atteso per l'operatore binario condizionale" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "token non atteso \"%c\" nel comando condizionale" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "token non atteso \"%s\" nel comando condizionale" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "token non atteso %d nel comando condizionale" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "errore di sintassi vicino al token non atteso \"%s\"" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "errore di sintassi vicino a \"%s\"" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "errore di sintassi: EOF non atteso" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "errore di sintassi" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Usare \"%s\" per uscire dalla shell.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF non atteso durante la ricerca di \")\"" @@ -1655,94 +1665,94 @@ msgstr "xtrace_set: puntatore a file NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != numfile xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": carattere di formato non valido" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "descrittore di file fuori dell'intervallo" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirezione ambigua" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: impossibile sovrascrivere il file esistente" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: limitato: impossibile redirigere l'output" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "impossibile creare un file temporaneo per here-document: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: impossibile assegnare fd a una variabile" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port non supportata senza rete" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "errore di reindirizzamento: impossibile duplicare fd" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "impossibile trovare /tmp, è necessario crearla" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp deve essere un nome di directory valido" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opzione non valida" -#: shell.c:1319 +#: shell.c:1343 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "impossibile reimpostare il modo nodelay per fd %d" -#: shell.c:1330 +#: shell.c:1354 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "impossibile reimpostare il modo nodelay per fd %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1632 +#: shell.c:1658 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: è una directory" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Manca il nome" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versione %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1751,314 +1761,314 @@ msgstr "" "Uso:\t%s [opzione lunga GNU] [opzione] ...\n" "\t%s [opzione lunga GNU] [opzione] file-script ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Opzioni lunghe GNU:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Opzioni di shell:\n" -#: shell.c:2043 +#: shell.c:2069 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD o -c comando o -O opzione_shopt\t\t(solo invocazione)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\topzione -%s oppure -o\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Digitare «%s -c \"help set\"» per ulteriori informazioni sulle opzioni di " "shell.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Digitare \"%s -c help\" per ulteriori informazioni sui comandi interni di " "shell.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Usare il comando \"bashbug\" per segnalare i bug.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operazione non valida" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Segnale inesistente" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Chiusura" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Interruzione" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Uscita (con core dump)" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Istruzione non consentita" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "Rilevato trace/breakpoint" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Istruzione ABORT" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Istruzione EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Eccezione in virgola mobile" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Ucciso" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Errore di bus" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Errore di segmentazione" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Chiamata di sistema errata" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Pipe interrotta" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Sveglia" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Terminato" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Condizione di I/O urgente" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Fermato (segnale)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Continuato" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Processo figlio concluso o fermato" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Fermato (input da terminale)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Fermato (output da terminale)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O pronto" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Limite di CPU" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Limite di file" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Timer (virtuale)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Timer (profilo)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Finestra modificata" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Blocco del record" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Segnale 1 dell'utente" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Segnale 2 dell'utente" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "Dati di input HTF in sospeso" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "mancanza di alimentazione imminente" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "crash di sistema imminente" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "processo spostato su un'altra CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "errore di programmazione" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "Modalità di monitoraggio HFT concessa" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "Modalità di monitoraggio HFT revocata" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "la sequenza sonora HFT è stata completata" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Richiesta di informazioni" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Segnale sconosciuto n° %d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "sostituzione errata: nessuna chiusura di \"%s\" in %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: impossibile assegnare una lista a un membro di un array" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "impossibile creare una pipe per la sostituzione del processo" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "impossibile creare un figlio per la sostituzione del processo" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "impossibile aprire la pipe con nome %s in lettura" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "impossibile aprire la pipe con nome %s in scrittura" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "impossibile duplicare una pipe con nome %s come fd %d" -#: subst.c:6213 +#: subst.c:6370 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "sostituzione errata: manca «\"» di chiusura in %s" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "impossibile creare una pipe per la sostituzione del comando" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "impossibile creare un figlio per la sostituzione del comando" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: impossibile duplicare la pipe come fd 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: %s: valore non valido per il descrittore del file di traccia" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: numero di righe non valido" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "\"%s\": nome alias non valido" -#: subst.c:7256 +#: subst.c:7478 #, fuzzy, c-format msgid "%s: parameter not set" msgstr "%s: parametro nullo o non impostato" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametro nullo o non impostato" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expressione di sottostringa < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: sostituzione errata" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: impossibile assegnare in questo modo" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2066,12 +2076,12 @@ msgstr "" "le versioni future della shell forzeranno la valutazione come fosse una " "sostituzione aritmetica" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sostituzione errata: manca «\"» di chiusura in %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "nessuna corrispondenza: %s" @@ -2094,21 +2104,21 @@ msgstr "atteso \")\"" msgid "`)' expected, found %s" msgstr "atteso \")\", trovato %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: atteso operatore binario" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: atteso operatore unario" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "\"]\" mancante" -#: test.c:899 +#: test.c:914 #, fuzzy, c-format msgid "syntax error: `%s' unexpected" msgstr "errore di sintassi: \";\" non atteso" @@ -2117,17 +2127,17 @@ msgstr "errore di sintassi: \";\" non atteso" msgid "invalid signal number" msgstr "numero di segnale non valido" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: valore errato in trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2135,88 +2145,93 @@ msgstr "" "run_pending_traps: il gestore dei segnali è SIG_DFL, viene inviato " "nuovamente %d (%s)" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: segnale errato %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "errore nell'importazione della definizione di funzione per \"%s\"" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "livello di shell (%d) troppo alto, reimpostato a 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: nessun contesto di funzione nell'ambito corrente" -#: variables.c:2693 +#: variables.c:2661 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: impossibile assegnare fd a una variabile" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: nessun contesto di funzione nell'ambito corrente" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s ha exportstr null" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carattere non valido %d in exportstr per %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "nessun \"=\" in exportstr per %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: la prima parte di shell_variables non è un contesto di " "funzione" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nessun contesto global_variables" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: la prima parte di shell_variables non è un ambito temporaneo " "d'ambiente" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: impossibile aprire come FILE" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valore non valido per il descrittore del file di traccia" -#: variables.c:6437 +#: variables.c:6450 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s fuori dall'intervallo" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" #: version.c:47 version2.c:47 @@ -2311,12 +2326,16 @@ msgstr "command [-pVv] comando [arg ...]" #: builtins.c:78 #, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFgilrtux] [-p] [nome[=valore] ...]" #: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFgilrtux] [-p] nome[=valore] ..." #: builtins.c:82 @@ -2419,7 +2438,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opzione] [--] [arg ...]" #: builtins.c:144 @@ -2469,7 +2489,7 @@ msgstr "type [-afptP] nome [nome ...]" #: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [limite]" #: builtins.c:174 @@ -2515,11 +2535,13 @@ msgstr "" "COMANDI; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while COMANDI; do COMANDI; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until COMANDI; do COMANDI; done" #: builtins.c:200 @@ -4014,7 +4036,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -4107,7 +4131,7 @@ msgstr "" "timeout in lettura\n" " o venga fornito un descrittore di file non valido come argomento per -u." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -4129,7 +4153,7 @@ msgstr "" " Restituisce N, oppure insuccesso se la shell non sta eseguendo una " "funzione o uno script." -#: builtins.c:1054 +#: builtins.c:1055 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4315,7 +4339,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce successo a meno che non venga fornita una opzione non valida." -#: builtins.c:1139 +#: builtins.c:1140 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4356,7 +4380,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "NOME sia in sola lettura." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4392,7 +4416,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "il NOME non sia valido." -#: builtins.c:1180 +#: builtins.c:1181 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4432,7 +4456,7 @@ msgstr "" " Restituisce successo a meno che non venga fornita una opzione non valida " "o NOME non sia valido." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4450,7 +4474,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce successo a meno che N non sia negativo o maggiore di $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4475,7 +4499,7 @@ msgstr "" "insuccesso se\n" " il NOMEFILE non può essere letto." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4501,7 +4525,7 @@ msgstr "" " Restituisce successo a meno che non sia abilitato il controllo job o si " "riscontri un errore." -#: builtins.c:1261 +#: builtins.c:1262 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4671,7 +4695,7 @@ msgstr "" "viene valutata\n" " falsa o viene fornito un argomento non valido." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4684,7 +4708,7 @@ msgstr "" "deve\n" " essere un \"]\" letterale per corrispondere al \"[\" di apertura." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4704,7 +4728,7 @@ msgstr "" " Stato di uscita:\n" " Sempre successo." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4790,7 +4814,7 @@ msgstr "" " Restituisce successo a meno che SPEC_SEGNALE non sia valido o si " "fornisca una opzione non valida." -#: builtins.c:1400 +#: builtins.c:1401 #, fuzzy msgid "" "Display information about command type.\n" @@ -4853,7 +4877,7 @@ msgstr "" " Restituisce successo se tutti i NOMI vengono trovati; insuccesso in caso " "contrario." -#: builtins.c:1431 +#: builtins.c:1432 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4950,7 +4974,7 @@ msgstr "" " Restituisce successo a meno che non venga fornita una opzione non valida " "o venga riscontrato un errore." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4987,7 +5011,7 @@ msgstr "" " Restituisce successo a meno che MODO non sia valido o venga fornita una " "opzione non valida." -#: builtins.c:1502 +#: builtins.c:1503 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -5035,7 +5059,7 @@ msgstr "" "fornita una\n" " opzione non valida." -#: builtins.c:1533 +#: builtins.c:1534 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -5063,7 +5087,7 @@ msgstr "" "fornita una opzione non\n" " valida." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -5088,7 +5112,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -5119,7 +5143,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5157,7 +5181,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato di uscita dell'ultimo comando eseguito." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5186,7 +5210,7 @@ msgstr "" " Stato di uscita:\n" " Viene restituito lo stato della PIPELINE." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5205,7 +5229,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5244,12 +5268,14 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5262,12 +5288,14 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5280,7 +5308,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1671 +#: builtins.c:1672 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5306,7 +5334,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato di uscita del COMANDO." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -5332,7 +5360,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce successo a meno che il NOME non sia in sola lettura." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5351,7 +5379,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5375,7 +5403,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato del job ripristinato." -#: builtins.c:1726 +#: builtins.c:1727 #, fuzzy msgid "" "Evaluate arithmetic expression.\n" @@ -5394,7 +5422,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce 1 se ESPRESSIONE è valutata 0, altrimenti restituisce 0." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5451,7 +5479,7 @@ msgstr "" " Stato di uscita:\n" " 0 o 1 a seconda del valore dell'ESPRESSIONE." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5579,7 +5607,7 @@ msgstr "" "decidere quale\n" " \t\tcomando dovrebbe essere salvato nell'elenco della cronologia.\n" -#: builtins.c:1821 +#: builtins.c:1822 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5639,7 +5667,7 @@ msgstr "" "non abbia\n" " successo il cambio di directory." -#: builtins.c:1855 +#: builtins.c:1856 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5691,7 +5719,7 @@ msgstr "" "valido o non\n" " abbia successo il cambio di directory." -#: builtins.c:1885 +#: builtins.c:1886 #, fuzzy msgid "" "Display directory stack.\n" @@ -5745,7 +5773,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita un'opzione non valida o " "si riscontri un errore." -#: builtins.c:1916 +#: builtins.c:1917 #, fuzzy msgid "" "Set and unset shell options.\n" @@ -5786,7 +5814,7 @@ msgstr "" "fornita\n" " una opzione non valida o NOMEOPZ è disabilitato." -#: builtins.c:1937 +#: builtins.c:1938 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5810,6 +5838,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -5856,7 +5886,7 @@ msgstr "" "o si riscontri\n" " un errore di scrittura o assegnazione." -#: builtins.c:1971 +#: builtins.c:1974 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5916,7 +5946,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5940,7 +5970,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:2016 +#: builtins.c:2019 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -6006,7 +6036,7 @@ msgstr "" "o NOME non\n" " abbia una specifica di completamento definita." -#: builtins.c:2047 +#: builtins.c:2050 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -6087,7 +6117,7 @@ msgstr "" "valida, ARRAY sia\n" " in sola lettura oppure non indicizzato." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -6097,6 +6127,10 @@ msgstr "" " \n" " Sinonimo per \"mapfile\"." +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: chiave dell'array associativo non valida" + #, fuzzy #~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." #~ msgstr "Copyright © 2011 Free Software Foundation, Inc." diff --git a/po/ja.gmo b/po/ja.gmo index 59ab5fd07..0314f9e81 100644 Binary files a/po/ja.gmo and b/po/ja.gmo differ diff --git a/po/ja.po b/po/ja.po index 5ecee86cd..332efa3ed 100644 --- a/po/ja.po +++ b/po/ja.po @@ -7,10 +7,10 @@ # Hiroshi Takekawa , , 2020. msgid "" msgstr "" -"Project-Id-Version: GNU bash 5.1\n" +"Project-Id-Version: GNU bash 5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2020-12-20 21:33+0900\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-06-19 23:10+0900\n" "Last-Translator: Hiroshi Takekawa \n" "Language-Team: Japanese \n" "Language: ja\n" @@ -25,57 +25,52 @@ msgstr "" msgid "bad array subscript" msgstr "誤った配列の添字" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: 名前参照属性を削除します" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: インデックス配列から連想配列に変換することはできません" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: 無効な連想配列のキーです" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: 配列の添字に非数字を設定できません" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: 連想配列を設定するときには添字をつけなければいけません" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: %s を作成できません" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: コマンドのキーマップがありません" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: 最初の非空白類文字が `\"' ではありません" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "閉じる `%c' が %s にありません" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: 区切り文字コロン(:)がありません" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "`%s': コマンドキーマップの割り当てを解除できません" @@ -95,7 +90,7 @@ msgstr "中括弧展開: %u 個の要素のメモリの割り当てに失敗し msgid "brace expansion: failed to allocate memory for `%s'" msgstr "中括弧展開: `%s' へのメモリ割り当てに失敗しました" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': 無効なエイリアス名です" @@ -166,7 +161,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME が設定されていません" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "引数が多すぎます" @@ -193,7 +188,7 @@ msgstr "警告: " msgid "%s: usage: " msgstr "%s: 使用法: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: オプションには引数が必要です" @@ -208,7 +203,7 @@ msgstr "%s: 数字の引数が必要です" msgid "%s: not found" msgstr "%s: 見つかりません" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: 無効なオプションです" @@ -218,7 +213,7 @@ msgstr "%s: 無効なオプションです" msgid "%s: invalid option name" msgstr "%s: 無効なオプション名です" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': 有効な識別子ではありません" @@ -231,7 +226,7 @@ msgstr "無効な八進数です" msgid "invalid hex number" msgstr "無効な十六進数です" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "無効な数字です" @@ -245,88 +240,93 @@ msgstr "%s: 無効なシグナル指定です" msgid "`%s': not a pid or valid job spec" msgstr "`%s': pid または有効なジョブ指定ではありません" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: 読み取り専用の変数です" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s: 割り当てできません" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s が範囲外です" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "引数" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s が範囲外です" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: そのようなジョブはありません" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: ジョブ制御が無効になっています" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "ジョブ制御が無効になっています" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: 制限されています" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "制限されています" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: シェルのビルトイン関数ではありません" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "書き込みエラー: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "ターミナル属性の設定時にエラーが発生しました : %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "ターミナル属性の取得時にエラーが発生しました : %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: カレントディレクトリの取得時にエラーが発生しました : %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: 曖昧なジョブ指定です" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "このバージョンではヘルプが利用できません" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: 消去できません: %s は読み取り専用です" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: 消去できません" @@ -336,108 +336,108 @@ msgstr "%s: 消去できません" msgid "%s: invalid action name" msgstr "%s: 無効なアクション名です" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: 補完指定がありません" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "警告: -F オプションは期待通りに動作しないかもしれません" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "警告: -C オプションは期待通りに動作しないかもしれません" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "補完機能は現在実行されていません" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "関数の中でのみ使用できます" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "関数作成時に `-f' を使用できません" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: 読み取り専用関数です" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: 参照変数は配列であってはいけません" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: 自身を参照する名前参照変数は許可されていません" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: 循環名前参照です" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "`%s': 名前参照として無効な変数です" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "関数作成時に `-f' を使用できません" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: 読み取り専用関数です" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: この方法で配列変数を消去することはできません" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: 連想配列からインデックス配列に変換することはできません" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "動的ロードは利用できません" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "共有オブジェクト %s を開くことができません : %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "%s が共有オブジェクト %s に存在しません: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: 動的ビルトインはロード済です" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "関数 %s のロードが失敗を返しました(%d): ロードされませんでした" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: 動的にロードされていません" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: 削除できません: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: ディレクトリです" @@ -452,7 +452,7 @@ msgstr "%s: 通常ファイルではありません" msgid "%s: file is too large" msgstr "%s: ファイルが大きすぎます" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: バイナリファイルを実行できません" @@ -546,12 +546,12 @@ msgstr "" msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "`%s' に一致するヘルプ項目がありません。`help help'、`man -k %s' または `info %s' を試してください" -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: 開くことができません: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -570,21 +570,21 @@ msgstr "" "名前の後にアスタリスク (*) がある場合はそのコマンドが無効になっていることを意味します。\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "-anrw を2つ以上一緒に使用することはできません" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "ヒストリ位置" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: 無効なタイムスタンプです" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: ヒストリの展開に失敗しました" @@ -607,78 +607,78 @@ msgstr "%s: 引数はプロセスIDかジョブIDでなければいけません" msgid "Unknown error" msgstr "不明なエラーです" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "式が予期されます" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: インデックス配列ではありません" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: 無効なファイル記述子指定です" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: 無効なファイル記述子: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: 無効な行数です" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: 無効な配列の原点です" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: コールバックの quantum が無効です" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "空の配列変数名です" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "配列変数のサポートが必要です" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "`%s': 書式指定文字がありません" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': 無効な時間書式指定です" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "`%c': 無効な書式指定文字です" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "警告: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "書式解析問題です: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "\\x 用の十六進数字がありません" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "\\%c 用のユニコード数値がありません" @@ -826,12 +826,12 @@ msgstr "" " \n" " `dirs' ビルトインコマンドでディレクトリスタックを表示します。" -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: 無効なタイムアウト指定です" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "読み込みエラー: %d: %s" @@ -844,7 +844,7 @@ msgstr "`return' は関数または source されたスクリプト内のみで msgid "cannot simultaneously unset a function and a variable" msgstr "変数と関数を同時に消去することはできません" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: 配列変数ではありません" @@ -863,11 +863,11 @@ msgstr "%s: export できません" msgid "shift count" msgstr "シフト回数" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "シェルオプションを同時に有効かつ無効にできません" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: 無効なシェルオプション名です" @@ -934,16 +934,16 @@ msgstr "%s: limit の無効な引数です" msgid "`%c': bad command" msgstr "`%c': 誤ったコマンドです" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: limit を取得できません: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: limit を変更できません : %s" @@ -962,7 +962,7 @@ msgstr "`%c': 無効なシンボリックモード演算子です" msgid "`%c': invalid symbolic mode character" msgstr "`%c': 無効なシンボリックモード文字です" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " 行 " @@ -982,96 +982,106 @@ msgstr "中止しています..." msgid "INFORM: " msgstr "情報: " -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "デバッグ 警告: " + +#: error.c:488 msgid "unknown command error" msgstr "不明なコマンドエラーです" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "誤ったコマンドタイプです" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "誤った接続です" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "誤ったジャンプです" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: 未割り当ての変数です" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\a入力待ちがタイムアウトしました: 自動ログアウト\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "/dev/null から標準入力に対してリダイレクトできません: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': 無効な書式文字です" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "パイプエラー" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: eval の入れ子レベルの最大値を超えています (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: source の入れ子レベルの最大値を超えています (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: 関数の入れ子レベルの最大値を超えています (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: 制限されています: `/' をコマンド名の中に指定できません" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: コマンドが見つかりません" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: 実行できません: 必要なファイルがありません" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: 誤ったインタプリタです" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: バイナリファイルを実行できません: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "`%s': 特殊シェル組み込み関数です" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "fd %d を fd %d に複製できません" @@ -1084,68 +1094,68 @@ msgstr "式の再帰可能レベルを越えました" msgid "recursion stack underflow" msgstr "再帰スタックがアンダーフローしました" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "式に構文エラーがあります" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "非変数に割り当てを行おうとしてます" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "変数の割り当てに構文エラーがあります" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "0 による除算です" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "バグ: 誤った式のトークンです" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "条件式には `:' が予期されます" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "0より小さい指数部です" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "識別子は前置インクリメントまたは前置デクリメントが予期されます" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "`)' がありません" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "構文エラー: オペランドが予期されます" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "構文エラー: 無効な計算演算子です" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (エラーのあるトークンは \"%s\")" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "無効な基底の数値です" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "無効な整数定数です" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "基底の値が大きすぎます" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: 式のエラー\n" @@ -1154,7 +1164,7 @@ msgstr "%s: 式のエラー\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: 親ディレクトリにアクセスできません" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "ファイル記述子(fd) %d を無遅延モードに再設定できません" @@ -1173,167 +1183,167 @@ msgstr "save_bash_input: 新規 fd %d のバッファはすでに存在します msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "実行中のジョブ %2$d で fork した pid %1$d が出現しました" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "プロセスグループ %2$ld のジョブ %1$d を削除しています" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) はまだ存在しているとマークされています" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: そのような pid は存在しません" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "シグナル %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "終了" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "停止" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "停止 (%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "実行中" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "終了(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "終了 %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "不明なステータス" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(コアダンプ) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "子プロセス setpgid (%ld から %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld はこのシェルの子プロセスではありません" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: プロセス %ld の記録がありません" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: ジョブ %d は停止しています" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: カレントジョブがありません" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: ジョブは終了しました" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: ジョブ %d はすでにバックグラウンドで動作しています" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: 不定のブロックを避けるために WNOHANG をオンにしました。" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: %d 行: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (コアダンプ)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp が失敗しました" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: バックグラウンドにジョブコントロールがありません" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "端末プロセスグループを設定できません (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "このシェルではジョブ制御が無効になっています" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: 失敗したアサーション: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1342,47 +1352,47 @@ msgstr "" "\r\n" "malloc: %s:%d: アサーション失敗\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "不明" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: free ブロックリストが壊れています" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: 既に free されたブロックを引数として呼び出されました" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: 未割当のブロックを引数として呼び出されました" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: アンダーフローを検出しました。 mh_nbytes が範囲外です" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free: アンダーフローを検出しました。magic8 壊れています" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: 開始と終了の塊の大きさが異なっています" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: 未割当のブロックを引数として呼び出されました" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: アンダーフローを検出しました。 mh_nbytes が範囲外です" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: アンダーフローを検出しました。magic8 が壊れています" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: 開始と終了の塊の大きさが異なっています" @@ -1424,22 +1434,22 @@ msgstr "%s: ネットワークパス指定に誤りがあります" msgid "network operations not supported" msgstr "ネットワーク操作はサポートされていません" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: ロケールを変更できません (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: ロケールを変更できません (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ロケールを変更できません (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ロケールを変更できません (%s): %s" @@ -1457,136 +1467,136 @@ msgstr "新しいメールが $_ にあります" msgid "The mail in %s has been read\n" msgstr "%s のメールは既読です\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "構文エラー: 数値の式が必要です" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "構文エラー: 予期しない `;' です" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "構文エラー: `((%s))'" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: 誤った指定の種類 %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "ヒアドキュメントの %d 行目でファイル終了 (EOF) に達しました (`%s' が必要)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: リダイレクト指定 `%d' は範囲外です" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" msgstr "" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "ヒアドキュメントの最大数を超えました" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "対応する `%c' を探索中に予期しないファイル終了 (EOF) です" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "`]]' を探索中に予期しないファイル終了 (EOF) です" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "条件式に構文エラー: 予期しないトークン `%s' です" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "条件式に構文エラーがあります" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "予期しないトークン `%s' です。`)' が予期されます" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "`)' が予期されます" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "条件単項演算子に予期しない引数 `%s' です" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "条件単項演算子に予期しない引数です" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "`%s` は予期しないトークンです。条件二項演算子が予期されます" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "条件二項演算子が予期されます" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "条件二項演算子に予期しない引数 `%s' です" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "条件二項演算子に予期しない引数です" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "条件コマンドに予期しないトークン `%c' があります" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "条件コマンドに予期しないトークン `%s' があります" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "条件コマンドに予期しないトークン %d があります" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "予期しないトークン `%s' 周辺に構文エラーがあります" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "`%s' 周辺に構文エラーがあります" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "構文エラー: 予期しないファイル終了 (EOF) です" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "構文エラー" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "シェルから脱出するには \"%s\" を使用してください。\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "対応する `)' を探索中に予期しないファイル終了(EOF)です" @@ -1624,94 +1634,94 @@ msgstr "xtrace_set: NULL ファイルポインタです" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': 無効な書式文字です" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "ファイル記述子が範囲外です" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: 曖昧なリダイレクトです" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: 存在するファイルを上書きできません" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: 制限されています: 出力をリダイレクト出来ません" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "ヒアドキュメント用一時ファイルを作成できません: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ファイル記述子 (fd) を変数に設定することはできません" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "ネットワークが無効な場合 /dev/(tcp|udp)/host/port はサポートされません" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "リダイレクトエラー: ファイル記述子を複製できません" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "/tmp が見つかりません。作成してください!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp は有効なディレクトリ名でなければいけません" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" -msgstr "" +msgstr "pretty-printing モードはインタラクティブシェルでは無視されます" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: 無効なオプション" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "uidを %d に設定できません: 実効uid %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "gidを %d に設定できません: 実効gid %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "デバッガを開始できません。デバッガモードが無効になっています" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: ディレクトリです" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "私は名前がありません!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, バージョン %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1720,317 +1730,317 @@ msgstr "" "使用法:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "GNU 形式の長いオプション:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "シェルオプション:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD, -c command または -O shopt_option\t\t(起動時のみ)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s または -o option\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "シェルオプションの詳細については `%s -c \"help set\"'と入力してください。\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "シェル組み込みコマンドについては `%s -c help' と入力してください。\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "バグ報告をする場合は `bashbug' コマンドを使用してください。\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "bashホームページ: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "GNUソフトウェアを使用する時の一般的なヘルプ : \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: 無効な操作です" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "悪いシグナル" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "停止" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "割り込み" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "終了" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "不正な指定" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "BPT trace/trap" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "ABORT 指定" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "EMT 指定" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "浮動小数点例外" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Killed" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "バスエラー" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "セグメンテーションフォルト" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "誤ったシステムコール" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "パイプが切れました" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "アラーム時計" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Terminated" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "急ぎの IO 状態" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "停止 (シグナル)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "続行" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "子プロセスの死亡または停止 " -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "停止 (tty 入力)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "停止 (tty 出力)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O 用意ができています" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "CPU limit" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "ファイル limit" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "警報 (仮想)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "警報 (プロファイル)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "ウィンドウが変更されました" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "記録のロック" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "ユーザシグナル 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "ユーザシグナル 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "HFT 未決の入力データ" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "電源故障の危険" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "システムクラッシュの危険" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "プロセスを別のCPUに移動" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "プログラミングエラー" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "HFT monitorモードが与えられました" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "HFT monitorモードが奪われました" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "HFT サウンドシーケンスが完了しました" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "情報要求" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "不明なシグナル番号 %d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "誤った代入: 閉じる `%s' が %s に存在しません" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: リストを配列要素に割り当てできません" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "プロセス代入ではパイプを作成できません" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "プロセス代入では子プロセスを作成できません" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "名前付きパイプ %s を読み込み用に開けません" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "名前付きパイプ %s を書き込み用に開けません" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "名前付きパイプ %s をファイル記述子(fd) %d として複製できません" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "コマンド代入: 入力のヌルバイトを無視しました" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "コマンド代入ではパイプを作成できません" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "コマンド代入では子プロセスを作成できません" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: パイプを fd 1 として複製できません" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: 名前参照として無効な変数です" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: 無効な間接展開です" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: 無効な変数名です" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: パラメータが設定されていません" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: パラメータが null または設定されていません" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expression < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: 誤った代入です" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: この方法で割当はできません" -#: subst.c:9814 +#: subst.c:10111 msgid "future versions of the shell will force evaluation as an arithmetic substitution" msgstr "将来のバージョンのシェルでは強制的に数値代入として評価されます" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "誤った代入: %s に閉じる \"`\" がありません" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "一致しません: %s" @@ -2053,21 +2063,21 @@ msgstr "`)' が予期されます" msgid "`)' expected, found %s" msgstr "`)' が予期されますが、見つかったのは %s です" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: 二項演算子が予期されます" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: 単項演算子が予期されます" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "`]'がありません" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "構文エラー: 予期しない `%s' です" @@ -2076,99 +2086,104 @@ msgstr "構文エラー: 予期しない `%s' です" msgid "invalid signal number" msgstr "無効なシグナル番号" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "trap handler: trap handler の最大レベルを超えています (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: trap_list[%d] に誤った値があります: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: シグナルハンドラーは SIG_DFLです。, %d (%s) を自身に再送します。" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: 誤ったシグナル %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "`%s' の関数定義をインポート中にエラーが発生しました" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "シェルレベル (%d) は高すぎます。1に再設定されました" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: 現在のスコープは関数コンテキストではありません" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: 変数が初期化されていないかもしれません" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s: 互換性のないタイプからは継承できません" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: 名前参照に整数を代入しようとしています" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: 現在のスコープは関数コンテキストではありません" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s は null の exportstr を持っています" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s に対する exportstr で %1$d は無効な文字です" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s に対する exportstr に `=' がありません" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variables の先頭です。関数コンテキストではありません" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: global_variables コンテキストではありません" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables の先頭です。一時環境スコープではありません" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ファイルとして開くことができません" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: トレースファイル記述子として無効な値です" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: 値の互換性が範囲外です" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Copyright (C) 2022 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "License GPLv3+: GNU GPL version 3 or later \n" @@ -2248,12 +2263,12 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [arg ...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2340,8 +2355,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" @@ -2388,8 +2403,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] name [name ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" @@ -2428,12 +2443,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C msgstr "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while COMMANDS; do COMMANDS; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while COMMANDS; do COMMANDS-2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until COMMANDS; do COMMANDS; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until COMMANDS; do COMMANDS-2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -3726,7 +3741,8 @@ msgid "" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" @@ -3800,7 +3816,7 @@ msgstr "" " ファイル終了(EOF)、読み込みタイムアウト(この場合は128以上)、変数への代入エ\n" " ラーが発生、 -u に無効なファイル記述子が与えられた場合を除き0を返します。" -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3821,7 +3837,7 @@ msgstr "" " 戻り値 N、またはシェルが関数またはスクリプトを実行していない場合は失敗を\n" " 返します。" -#: builtins.c:1054 +#: builtins.c:1055 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3984,7 +4000,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられない限り成功を返します。" -#: builtins.c:1139 +#: builtins.c:1140 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4023,7 +4039,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるか NAME が読み取り専用の場合を除き成功を返します。" -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4057,7 +4073,7 @@ msgstr "" " 無効なオプションが与えられるか、無効な NAME が与えられない限り成功\n" " を返します。" -#: builtins.c:1180 +#: builtins.c:1181 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4097,7 +4113,7 @@ msgstr "" " 無効なオプションが与えられるか、与えられた NAME が無効な場合を除き成功\n" " を返します。" -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4115,7 +4131,7 @@ msgstr "" " 終了ステータス:\n" " Nが負の値または $# より大きい場合を除き成功を返します。" -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4139,7 +4155,8 @@ msgstr "" " FILENAME で最後に実行したコマンドのステータスを返します。FILENAME が\n" " 読み込めなかった場合は失敗を返します。" -#: builtins.c:1245 +#: builtins.c:1246 +#, fuzzy msgid "" "Suspend shell execution.\n" " \n" @@ -4163,7 +4180,7 @@ msgstr "" " 終了ステータス:\n" " ジョブ制御が有効でないかエラーが発生しない限り成功を返します。" -#: builtins.c:1261 +#: builtins.c:1262 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4318,7 +4335,7 @@ msgstr "" " 式 EXPR の評価値が真(true)の時に成功を返します。EXPR の評価値が偽(false) または\n" " 引数が無効な場合に失敗を返します。" -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4330,7 +4347,7 @@ msgstr "" " これは test 組み込み関数と同義語です。ただし、最後の引数に開始の`['と一致\n" " するように文字`]'を与えなければいけません。" -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4348,7 +4365,7 @@ msgstr "" " 終了ステータス:\n" " 常に成功を返します。" -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4414,7 +4431,7 @@ msgstr "" " 終了ステータス:\n" " SIGSPEC が無効か、無効なオプションを与えられない限り成功を返します。" -#: builtins.c:1400 +#: builtins.c:1401 #, fuzzy msgid "" "Display information about command type.\n" @@ -4470,7 +4487,7 @@ msgstr "" " 全ての NAME が見つかった場合に成功を返します。どれかが見つからなかった場合\n" " は失敗を返します。" -#: builtins.c:1431 +#: builtins.c:1432 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4561,7 +4578,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションを与えるか、エラーが発生しない限り、成功を返します。" -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4593,7 +4610,7 @@ msgstr "" " 終了ステータス:\n" " MODE が無効か、無効なオプションが与えられない限り成功を返します。" -#: builtins.c:1502 +#: builtins.c:1503 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4632,7 +4649,7 @@ msgstr "" " 最後の ID の終了ステータスを返します。IDが無効であるか、無効なオプ\n" " ションが与えられた場合には失敗を返します。" -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4654,7 +4671,7 @@ msgstr "" " 最後の PID の終了ステータスを返します。PIDが無効か、無効なオプションが与えられた\n" " 場合は失敗します。" -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4675,7 +4692,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4705,7 +4722,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4740,7 +4757,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4768,7 +4785,7 @@ msgstr "" " 終了ステータス:\n" " PIPELINE の戻り値が終了ステータスとなります。" -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4786,7 +4803,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4813,12 +4830,13 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドの終了ステータスを返します。" -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -4831,12 +4849,13 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -4849,7 +4868,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1671 +#: builtins.c:1672 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -4872,7 +4891,7 @@ msgstr "" " 終了ステータス:\n" " COMMAND の終了ステータスを返します。" -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -4894,7 +4913,7 @@ msgstr "" " 終了ステータス:\n" " NAME が読み取り専用でない限り成功を返します。" -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4912,7 +4931,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4935,7 +4954,7 @@ msgstr "" " 終了ステータス:\n" " 再開されたジョブの終了ステータスを返します。" -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4953,7 +4972,7 @@ msgstr "" " 終了ステータス:\n" " EXPRESSION の評価値が 0 の場合は 1、それ以外は 0 を返します。" -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5002,7 +5021,7 @@ msgstr "" " 終了ステータス:\n" " EXPRESSION の値に基づいて 0 または 1 を返します。" -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5103,7 +5122,7 @@ msgstr "" " HISTIGNORE\tヒストリ一覧に保存されるコマンドを決める時に使用される\n" " \t\tコロン (:) で区切られたパターンの一覧。\n" -#: builtins.c:1821 +#: builtins.c:1822 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5163,7 +5182,7 @@ msgstr "" " 無効な引数が与えられるかディレクトリ変更が失敗しない限り成功を\n" " 返します。" -#: builtins.c:1855 +#: builtins.c:1856 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5214,7 +5233,7 @@ msgstr "" " 無効な引数が与えられるかディレクトリ変更が失敗しない限り成功を\n" " 返します。" -#: builtins.c:1885 +#: builtins.c:1886 #, fuzzy msgid "" "Display directory stack.\n" @@ -5267,7 +5286,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:1916 +#: builtins.c:1917 #, fuzzy msgid "" "Set and unset shell options.\n" @@ -5303,7 +5322,7 @@ msgstr "" " OPTNAME が有効な場合は成功を返します。無効なオプションが与えられた場合\n" " または OPTNAME が無効な場合は失敗を返します。" -#: builtins.c:1937 +#: builtins.c:1938 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5323,6 +5342,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" @@ -5357,7 +5378,7 @@ msgstr "" " 終了ステータス:\n" " 無効な引数が与えられるか、書き込み、代入エラーが発生しない限り成功を返します。" -#: builtins.c:1971 +#: builtins.c:1974 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5405,7 +5426,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5425,7 +5446,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:2016 +#: builtins.c:2019 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5478,7 +5499,7 @@ msgstr "" " 無効なオプションが与えられるか、 NAME が補完指定として定義されていない場合\n" " を除き、成功を返します。" -#: builtins.c:2047 +#: builtins.c:2050 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5541,7 +5562,7 @@ msgstr "" " 無効なオプションが与えられる、配列が読み取り専用、またはインデックス型配列で無い\n" " 場合を除き成功を返します。" -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/ko.gmo b/po/ko.gmo index e8dbf4963..11fe7d2e9 100644 Binary files a/po/ko.gmo and b/po/ko.gmo differ diff --git a/po/ko.po b/po/ko.po index 013176913..4b3fbc621 100644 --- a/po/ko.po +++ b/po/ko.po @@ -2,14 +2,15 @@ # Copyright (C) 2019 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # SooHyun Kim , 2019. +# Seong-ho Cho , 2022. # msgid "" msgstr "" -"Project-Id-Version: bash-5.0\n" +"Project-Id-Version: bash-5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2019-11-23 16:28+0900\n" -"Last-Translator: SooHyun Kim \n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-06-25 01:50+0900\n" +"Last-Translator: Seong-ho Cho \n" "Language-Team: Korean \n" "Language: ko\n" "MIME-Version: 1.0\n" @@ -17,99 +18,95 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.3.1\n" #: arrayfunc.c:66 msgid "bad array subscript" msgstr "잘못된 배열 첨자" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: 이름 참조 속성을 지우는 중" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "%s: 인덱스 배열을 연관 배열로 변환할 수 없음" +msgstr "%s: 색인 배열을 연관 배열로 변환할 수 없음" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: 유효하지 않은 연관 배열 키" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: 숫자가 아닌 인덱스에 할당할 수 없음" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" -msgstr "%s: %s: 연관 배열을 할당하기 위해서 반드시 첨자를 사용해야 함" +msgstr "%s: %s: 연관 배열을 할당하려면 반드시 첨자를 사용해야 함" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: 생성할 수 없음: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "bash_execute_unix_command: 명령어를 위한 keymap을 찾을 수 없음" +msgstr "bash_execute_unix_command: 명령의 keymap을 찾을 수 없음" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "%s: 공백이 아닌 첫 문자가 '\"' 가 아님" +msgstr "%s: 공백이 아닌 첫 문자가 `\"'가 아님" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" -msgstr "%2$s에 닫는 '%1$c' 없음" +msgstr "%2$s에 닫는 `%1$c' 없음" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" -msgstr "%s: 콜론(:) 구분자 없음" +msgstr "%s: 콜론 구분자 없음" -#: bashline.c:4555 -#, fuzzy, c-format +#: bashline.c:4733 +#, c-format msgid "`%s': cannot unbind in command keymap" -msgstr "'%s': unbind 할 수 없음" +msgstr "`%s': 명령 keymap의 바인딩을 해제할 수 없음" #: braces.c:327 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "괄호 확장: '%s'를 위해 메모리를 할당할 수 없음" +msgstr "괄호 확장: %s의 메모리를 할당할 수 없음" #: braces.c:406 #, c-format msgid "brace expansion: failed to allocate memory for %u elements" -msgstr "괄호 확장: %u개 요소를 위한 메모리 할당 실패" +msgstr "괄호 확장: 요소 %u개에서 메모리 할당 실패" #: braces.c:451 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "괄호 확장: '%s'를 위한 메모리 할당 실패" +msgstr "괄호 확장: `%s'의 메모리 할당 실패" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" -msgstr "'%s': 유효하지 않은 별명" +msgstr "`%s': 부적절한 별명" #: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" -msgstr "줄 편집 활성화되어있지 않음" +msgstr "줄 편집 기능 꺼짐" #: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" -msgstr "'%s': 유효하지 않은 keymap 이름" +msgstr "`%s': 부적절한 keymap 이름" #: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" -msgstr "%s: %s를 읽을 수 없음" +msgstr "%s: %s을(를) 읽을 수 없음" #: builtins/bind.def:328 builtins/bind.def:358 #, c-format @@ -119,17 +116,17 @@ msgstr "`%s': 알 수 없는 함수 이름" #: builtins/bind.def:336 #, c-format msgid "%s is not bound to any keys.\n" -msgstr "%s 는 어느 키에도 bind 되어있지 않음.\n" +msgstr "%s은(는) 어떤 키에도 바인딩하지 않음.\n" #: builtins/bind.def:340 #, c-format msgid "%s can be invoked via " -msgstr "%s 는 다음을 통해 호출될 수 있음 " +msgstr "%s은(는) 다음을 통해 호출될 수 있음 " #: builtins/bind.def:378 builtins/bind.def:395 #, c-format msgid "`%s': cannot unbind" -msgstr "'%s': unbind 할 수 없음" +msgstr "`%s': 바인딩 해제 불가" #: builtins/break.def:77 builtins/break.def:119 msgid "loop count" @@ -137,7 +134,7 @@ msgstr "반복 횟수" #: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "'for', 'while' 또는 'until' 반복문에서만 의미가 있음" +msgstr "'for', 'while', 'until' 반복문에서만 의미 있음" #: builtins/caller.def:136 msgid "" @@ -150,27 +147,35 @@ msgid "" " The value of EXPR indicates how many call frames to go back before the\n" " current one; the top frame is frame 0." msgstr "" +"현재 하위루틴 호출의 컨텍스트를 반환합니다.\n" +" \n" +" <표현식>을 지정하지 않으면 \"$line $filename\"을 반환합니다.\n" +" <표현식>을 지정하면 \"$line $subroutine $filename\"을 반환합니다.\n" +" 추가 정보는 스택 추적을 제공할 때 활용할 수 있습니다.\n" +" \n" +" <표현식>의 값은 현재 호출 프레임에서 얼마나 뒤로 돌아가야 하는지를\n" +" 나타냅니다. 최상단 호출 프레임은 프레임 0번입니다." #: builtins/cd.def:327 msgid "HOME not set" -msgstr "HOME 설정되지 않음" +msgstr "HOME 설정하지 않음" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "인자가 너무 많음" #: builtins/cd.def:342 msgid "null directory" -msgstr "null 디렉토리" +msgstr "디렉터리 값이 비어있음" #: builtins/cd.def:353 msgid "OLDPWD not set" -msgstr "OLDPWD 설정되지 않음" +msgstr "OLDPWD 설정하지 않음" #: builtins/common.c:96 #, c-format msgid "line %d: " -msgstr "%d 줄: " +msgstr "행 %d번: " #: builtins/common.c:134 error.c:264 #, c-format @@ -182,7 +187,7 @@ msgstr "경고: " msgid "%s: usage: " msgstr "%s: 사용법: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: 옵션에 인자가 필요함" @@ -190,243 +195,248 @@ msgstr "%s: 옵션에 인자가 필요함" #: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" -msgstr "%s: 숫자로 된 인자가 필요함" +msgstr "%s: 숫자 인자가 필요함" #: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: 찾을 수 없음" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" -msgstr "%s: 유효하지 않은 옵션" +msgstr "%s: 부적절한 옵션" #: builtins/common.c:223 #, c-format msgid "%s: invalid option name" -msgstr "%s: 유효하지 않은 옵션 이름" +msgstr "%s: 부적절한 옵션 이름" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" -msgstr "`%s': 유효한 식별자가 아님" +msgstr "`%s': 적절한 식별자 아님" #: builtins/common.c:240 msgid "invalid octal number" -msgstr "유효하지 않은 8진수" +msgstr "부적절한 8진수" #: builtins/common.c:242 msgid "invalid hex number" -msgstr "유효하지 않은 16진수" +msgstr "부적절한 16진수" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" -msgstr "유효하지 않은 수" +msgstr "부적절한 숫자" #: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" -msgstr "%s: 유효하지 않은 신호 정의" +msgstr "%s: 부적절한 시그널 정의" #: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "'%s': pid가 아니거나 유효한 job spec이 아님" +msgstr "`%s': PID가 아니거나 적절한 작업 명세 없음" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: 읽기 전용 변수임" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s: 할당할 수 없음" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" -msgstr "%s: %s가 범위를 벗어남" +msgstr "%s: %s이(가) 범위를 벗어남" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "인자" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" -msgstr "%s가 범위를 벗어남" +msgstr "%s이(가) 범위를 벗어남" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" -msgstr "%s: 그러한 job이 없음" +msgstr "%s: 그런 작업이 없음" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" -msgstr "%s: job control이 없음" +msgstr "%s: 작업 컨트롤 없음" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" -msgstr "job control이 없음" +msgstr "작업 컨트롤 없음" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: 제한됨" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "제한됨" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" -msgstr "%s: 쉘 내장이 아님" +msgstr "%s: 셸 내장 명령이 아님" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "쓰기 오류: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "터미널 속성 설정 오류: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "터미널 속성 읽기 오류: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" -msgstr "%s: 현재 디렉토리를 받아오는 데 오류 발생: %s: %s\n" +msgstr "%s: 현재 디렉터리 가져오는 중 오류 발생: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" -msgstr "%s: 모호한 job spec" +msgstr "%s: 모호한 작업 명세" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" -msgstr "이 버전에는 도움말이 없음" +msgstr "이 버전에는 도움말이 없습니다" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" -msgstr "%s: unset할 수 없음: %s가 읽기 전용임" +msgstr "%s: 설정 해제할 수 없음: %s이(가) 읽기 전용임" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" -msgstr "%s: unset할 수 없음" +msgstr "%s: 설정 해제할 수 없음" #: builtins/complete.def:287 #, c-format msgid "%s: invalid action name" -msgstr "%s: 유효하지 않은 액션 이름" +msgstr "%s: 부적절한 액션 이름" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" -msgstr "%s: 완료 사양 없음" +msgstr "%s: 완성 명세 없음" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "경고: -F 옵션이 예상대로 작동하지 않을 수 있음" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "경고: -C 옵션이 예상대로 작동하지 않을 수 있음" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" -msgstr "현재 완료 함수가 실행중이 아님" +msgstr "완성 함수를 현재 실행하고 있지 않음" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" -msgstr "함수에서만 사용될 수 있음" +msgstr "함수에서만 사용할 수 있음" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "함수 구성에 `-f' 옵션을 사용할 수 없음" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: 읽기 전용 함수" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: 참조 변수로 배열이 올 수 없음" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "%s: 이름 참조 변수의 자가 참조는 허용되지 않음" +msgstr "%s: 이름 참조 변수의 자가 참조를 허용하지 않음" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: 순환 이름 참조" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" -msgstr "'%s': 유효하지 않은 이름 참조 변수 이름" - -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "함수를 만들기 위해 '-f'를 사용할 수 없음" +msgstr "`%s': 이름 참조의 부적절한 변수 이름" -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: 읽기 전용 함수임" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: 따옴표를 이용한 복합 배열 할당은 향후 제거될 예정임" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" -msgstr "%s: 이 방법으로 배열 변수를 파괴할 수 없음" +msgstr "%s: 이 방법으로 배열 변수를 해체할 수 없음" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "%s: 참조 배열을 인덱스 배열로 변환할 수 없음" +msgstr "%s: 참조 배열을 색인 배열로 변환할 수 없음" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: 따옴표를 이용한 복합 배열 할당은 향후 제거 예정" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" -msgstr "동적 로딩을 이용할 수 없음" +msgstr "동적 불러오기 불가" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" -msgstr "공유 오브젝트 %s를 열 수 없음: %s" +msgstr "%s 공유 객체를 열 수 없음: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" -msgstr "공유 오브젝트 %2$s에서 %1$s를 찾을 수 없음: %3$s" +msgstr "%2$s 공유 객체에서 %1$s을(를) 찾을 수 없음: %3$s" -#: builtins/enable.def:388 -#, fuzzy, c-format +#: builtins/enable.def:422 +#, c-format msgid "%s: dynamic builtin already loaded" -msgstr "%s: 동적으로 로드되지 않음" +msgstr "%s: 동적 내장 명령을 이미 불러왔습니다" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "%s에 대한 함수 로드가 실패 반환 (%d): 로드되지 않음" +msgstr "%s에 대한 함수 불러오기 중 실패 반환 (%d): 불러오지 않음" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" -msgstr "%s: 동적으로 로드되지 않음" +msgstr "%s: 동적으로 불러오지 않음" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: 삭제할 수 없음: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: 디렉터리임" @@ -434,17 +444,17 @@ msgstr "%s: 디렉터리임" #: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" -msgstr "%s: 일반적인 파일이 아님" +msgstr "%s: 일반 파일이 아님" #: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: 파일이 너무 큼" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" -msgstr "%s: 바이너리 파일을 실행할 수 없음" +msgstr "%s: 이진 파일을 실행할 수 없음" #: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 #, c-format @@ -458,26 +468,26 @@ msgstr "로그아웃\n" #: builtins/exit.def:89 msgid "not login shell: use `exit'" -msgstr "로그인 쉘이 아님: 'exit'를 사용하세요" +msgstr "로그인 셸이 아님: `exit'를 사용하십시오" #: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" -msgstr "정지된 job이 있습니다.\n" +msgstr "멈춘 작업이 있습니다.\n" #: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" -msgstr "실행중인 job이 있습니다.\n" +msgstr "실행 중인 작업이 있습니다.\n" #: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 msgid "no command found" -msgstr "명령어를 찾을 수 없음" +msgstr "명령을 찾을 수 없음" #: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 #: builtins/fc.def:412 msgid "history specification" -msgstr "히스토리 사양" +msgstr "기록 명세" #: builtins/fc.def:444 #, c-format @@ -491,7 +501,7 @@ msgstr "현재" #: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" -msgstr "job %d가 job control 없이 시작함" +msgstr "작업 %d번이 작업 컨트롤 없이 시작했습니다" #: builtins/getopt.c:110 #, c-format @@ -501,7 +511,7 @@ msgstr "%s: 잘못된 옵션 -- %c\n" #: builtins/getopt.c:111 #, c-format msgid "%s: option requires an argument -- %c\n" -msgstr "%s: 옵션이 인자를 필요로 함 -- %c\n" +msgstr "%s: 옵션에 인자가 필요함 -- %c\n" #: builtins/hash.def:91 msgid "hashing disabled" @@ -520,28 +530,27 @@ msgstr "hits\tcommand\n" #: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "다음 키워드에 일치하는 쉘 명령어 '" +msgstr[0] "다음 키워드에 일치하는 셸 명령어 '" #: builtins/help.def:135 msgid "" "'\n" "\n" msgstr "" +"'\n" +"\n" #: builtins/help.def:185 #, c-format -msgid "" -"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "" -"'%s'에 해당하는 도움말 주제가 없습니다. 'man -k %s' 또는 'info %s'를 사용해 " -"보세요." +msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "`%s'에 해당하는 도움말 주제가 없습니다. `man -k %s' 또는 `info %s' 명령을 입력하십시오." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: 열 수 없음: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -552,34 +561,32 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" -"이 쉘 명령어들은 내부적으로 정의되어 있습니다. 목록을 보려면 `help' 를 입력" -"하세요.\n" -"`help name' 을 입력하면 함수 `name' 에 대한 정보를 더 확인할 수 있습니다.\n" -"쉘에 대한 일반적인 정보를 더 확인하려면 `info bash' 를 사용하세요.\n" -"이 목록에 없는 명령어에 대해 더 알아보려면 `man -k' 또는 `info' 를 사용하세" -"요.\n" +"이 셸 명령어는 내부에 지정했습니다. 목록을 보려면 `help'를 입력하십시오.\n" +"`help name'을 입력하면 함수 `name'의 정보를 더 확인할 수 있습니다.\n" +"셸에 대한 일반적인 정보를 더 확인하려면 `info bash'를 사용하십시오.\n" +"이 목록에 없는 명령어에 대해 더 알아보려면 `man -k' 또는 `info'를 사용하십시오.\n" "\n" -"명령어 이름 다음의 별 (*) 은 해당 명령어가 비활성화 되었음을 의미합니다.\n" +"명령어 이름 다음의 별(*) 표시는 해당 명령어의 비활성 상태을 의미합니다.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "-anrw를 한 개 이상 사용할 수 없음" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" -msgstr "히스토리 위치" +msgstr "기록 위치" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" -msgstr "%s: 유효하지 않은 타임스탬프" +msgstr "%s: 부적절한 타임스탬프" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" -msgstr "%s: 히스토리 확장 실패" +msgstr "%s: 기록 확장 실패" #: builtins/inlib.def:71 #, c-format @@ -588,113 +595,113 @@ msgstr "%s: inlib 실패" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" -msgstr "'-x'와 다른 옵션들은 같이 사용할 수 없음" +msgstr "`-x'와 다른 옵션을 같이 사용할 수 없음" #: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "%s: 인자는 반드시 프로세스 또는 job ID이어야 함" +msgstr "%s: 인자는 반드시 프로세스 또는 작업 ID이어야 함" #: builtins/kill.def:274 msgid "Unknown error" msgstr "알 수 없는 오류" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" -msgstr "표현식을 예상함" +msgstr "표현식이 필요합니다" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" -msgstr "%s: 인덱스 배열이 아님" +msgstr "%s: 색인 배열이 아님" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" -msgstr "%s: 유효하지 않은 파일 디스크립터 명세" +msgstr "%s: 부적절한 파일 서술자 명세" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" -msgstr "%d: 유효하지 않은 파일 디스크립터: %s" +msgstr "%d: 부적절한 파일 서술자: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" -msgstr "%s: 유효하지 않은 줄 수" +msgstr "%s: 부적절한 줄 수" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" -msgstr "%s: 유효하지 않은 배열의 시작" +msgstr "%s: 부적절한 배열의 시작" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" -msgstr "%s: 유효하지 않은 콜백 양자" +msgstr "%s: 부적절한 콜백 양자" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "빈 배열 변수 이름" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "배열 변수 지원이 필요함" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" -msgstr "'%s': 서식 문자 없음" +msgstr "`%s': 서식 문자 없음" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" -msgstr "'%c': 유효하지 않은 시간 포맷 사양" +msgstr "`%c': 부적절한 시간 포맷 사양" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" -msgstr "'%c': 유효하지 않은 서식 문자" +msgstr "`%c': 부적절한 서식 문자" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "경고: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" -msgstr "형식 파싱 문제: %s" +msgstr "형식 해석 문제: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "\\x에 16진수 숫자 없음" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" -msgstr "\\%c에 해당하는 유니코드 문자 없음" +msgstr "\\%c에 유니코드 문자 없음" #: builtins/pushd.def:199 msgid "no other directory" -msgstr "다른 디렉토리 없음" +msgstr "다른 디렉터리 없음" #: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" -msgstr "%s: 유효하지 않은 인자" +msgstr "%s: 부적절한 인자" #: builtins/pushd.def:480 msgid "" -msgstr "<현재 디렉토리 없음>" +msgstr "<현재 디렉터리 없음>" #: builtins/pushd.def:524 msgid "directory stack empty" -msgstr "디렉토리 스택이 비어있음" +msgstr "디렉터리 스택이 비어있음" #: builtins/pushd.def:526 msgid "directory stack index" -msgstr "디렉토리 스택 인덱스" +msgstr "디렉터리 스택 색인" #: builtins/pushd.def:701 msgid "" @@ -711,35 +718,30 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown by\n" "\tdirs when invoked without options, starting with zero." msgstr "" -"현재 기억된 디렉토리의 목록을 보여줍니다. 디렉토리들은\n" -" `pushd' 명령을 통해 목록에 경로를 저장할 수 있고; 'popd' \n" -" 명령을 통해 거슬러 올라갈 수 있습니다.\n" +"현재 기억한 디렉터리의 목록을 보여줍니다. 디렉터리는\n" +" `pushd' 명령으로 목록에 경로를 저장할 수 있고 'popd' \n" +" 명령으로 거슬러 올라갈 수 있습니다.\n" " \n" " 옵션:\n" -" -c\t원소를 전부 삭제함으로써 디렉토리 스택을 초기화합니다\n" -" -l\t홈 디렉토리까지 ~로 축약된 상대경로를 표시하지 않습니다\n" -" -p\t한 줄에 하나씩 디렉토리 스택을 표시합니다\n" -" -v\t한 줄에 하나씩 스택의 위치와 함께 디렉토리 스택을 표시합니다\n" +" -c\t원소를 전부 삭제하여 디렉터리 스택을 초기화합니다\n" +" -l\t홈 디렉터리까지 ~ 축약 상대경로를 표시하지 않습니다\n" +" -p\t한 줄에 하나씩 디렉터리 스택을 표시합니다\n" +" -v\t한 줄에 하나씩 스택의 위치와 디렉터리 스택을 표시합니다\n" " \n" " 인자:\n" -" +N\t인자 없이 실행될 때 보여지는 목록의 왼쪽부터 N번째 항목을 보여줍니" -"다.\n" -" \t세는 수는 0부터 시작합니다.\n" +" +N\t인자 없이 실행할 때 dirs에서 보여주는 목록의 왼쪽부터 N번째\n" +" \t항목을 보여줍니다. 세는 수는 0부터 시작합니다.\n" " \n" -" -N\t인자 없이 실행될 때 보여지는 목록의 오른쪽부터 N번째 항목을 보여줍" -"니다.\n" -"\t세는 수는 0부터 시작합니다." +" -N\t인자 없이 실행할 때 dirs에서 보여주는 목록의 오른쪽부터 N번째\n" +" \t 항목을 보여줍니다. 세는 수는 0부터 시작합니다." #: builtins/pushd.def:723 -#, fuzzy msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -763,30 +765,27 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"디렉토리 스택의 최상위에 디렉토리를 추가하거나 스택을 회전\n" -" 하거나, 현재 작업중인 디렉토리에서 스택의 새 최상위를 \n" -" 만듭니다. 인자가 없다면 상위 두 디렉토리를 교환합니다.\n" +"디렉터리 스택의 최상위에 디렉터리를 추가하거나 스택을 회전\n" +" 하거나, 현재 작업중인 디렉터리에서 스택의 새 최상위를 \n" +" 만듭니다. 인자가 없다면 상위 두 디렉터리를 교환합니다.\n" " \n" " 옵션:\n" -" -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" -n\t스택에 디렉터리를 추가할 때 디렉터리 일반 변경 동작을\n" +" \t억제해서 스택만 바뀌게 합니다.\n" " \n" -" Arguments:\n" -" +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" 인자:\n" +" +N\tN번째 디렉터리가 최상단이 되도록(0부터 시작해서\n" +" \t`dirs' 내장 명령 목록 왼쪽부터 갯수를 셈) 스택을 뒤집습니다.\n" " \n" -" -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" -N\tN 번째 디렉터리가 최상단이 되도록(0부터 시작해서\n" +" \t`dirs' 내장 명령 목록 오른쪽부터 갯수를 셈) 스택을 뒤집습니다.\n" " \n" -" dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" dir\t새 현재 작업 디렉터리로 만들 DIR을 상단 디렉터리\n" +" \t 스택에 추가합니다.\n" " \n" -" `dirs' 내장은 디렉토리 스택을 보여줍니다." +" `dirs' 내장 명령은 디렉터리 스택을 보여줍니다." #: builtins/pushd.def:748 -#, fuzzy msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -806,43 +805,43 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"디렉토리 스택에서 항목을 제거합니다. 주어진 인자가 없을 경우\n" -" 최상위 디렉토리를 스택에서 제거하고 새 최상위 디렉토리로 변경합니다.\n" +"디렉터리 스택에서 항목을 제거합니다. 주어진 인자가 없을 경우\n" +" 최상위 디렉터리를 스택에서 제거하고 새 최상위 디렉터리로 변경합니다.\n" " \n" " 옵션:\n" -" -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" -n\t스택에 디렉터리를 제거할 때 디렉터리 일반 변경 동작을\n" +" \t억제해서 스택만 바뀌게 합니다.\n" " \n" -" Arguments:\n" -" +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" 인자:\n" +" +N\t0부터 시작해서 `dirs' 내장 명령 목록 왼쪽부터 갯수를 세어\n" +" \tN번째 항목을 제거합니다. 예: `popd +0'는 첫번째 디렉터리를, \n" +" \t`popd +1'는 두번째 디렉터리를 제거합니다.\n" " \n" -" -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" -N\t0부터 시작해서 `dirs' 내장 명령 목록 오른쪽부터 갯수를 세어\n" +" \tN번째 항목을 제거합니다. 예: `popd -0'는 마지막 디렉터리를, \n" +" \t`popd -1'는 마지막의 그 전 디렉터리를 제거합니다.\n" " \n" -" The `dirs' builtin displays the directory stack." +" `dirs' 내장 명령은 디렉터리 스택을 나타냅니다." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" -msgstr "%s: 유효하지 않은 타임아웃 정의" +msgstr "%s: 부적절한 타임아웃 정의" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "읽기 오류: %d: %s" #: builtins/return.def:68 msgid "can only `return' from a function or sourced script" -msgstr "함수 또는 소스된 스크립트에서만 'return' 할 수 있음" +msgstr "함수 또는 원본 참조 스크립트에서만 'return' 할 수 있음" #: builtins/set.def:869 msgid "cannot simultaneously unset a function and a variable" -msgstr "함수와 변수를 동시에 unset할 수 없음" +msgstr "함수와 변수를 동시에 설정 해제할 수 없음" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: 배열 변수가 아님" @@ -855,20 +854,20 @@ msgstr "%s: 함수가 아님" #: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" -msgstr "%s: export할 수 없음" +msgstr "%s: 환경으로 내보낼 수 없음" #: builtins/shift.def:72 builtins/shift.def:79 msgid "shift count" msgstr "시프트 횟수" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" -msgstr "쉘 옵션을 동시에 set 하고 unset 할 수 없음" +msgstr "셸 옵션을 동시에 설정 및 설정 해제할 수 없음" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" -msgstr "%s: 유효하지 않은 쉘 옵션 이름" +msgstr "%s: 부적절한 셸 옵션 이름" #: builtins/source.def:128 msgid "filename argument required" @@ -885,66 +884,66 @@ msgstr "일시 정지할 수 없음" #: builtins/suspend.def:112 msgid "cannot suspend a login shell" -msgstr "로그인 쉘을 일시 정지할 수 없음" +msgstr "로그인 셸을 일시 정지할 수 없음" #: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "%s는 '%s'의 별칭임\n" +msgstr "%s은(는) `%s'의 별칭임\n" #: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" -msgstr "%s 는 쉘 키워드임\n" +msgstr "%s은(는) 셸 키워드임\n" #: builtins/type.def:275 #, c-format msgid "%s is a function\n" -msgstr "%s 는 함수임\n" +msgstr "%s은(는) 함수임\n" #: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" -msgstr "%s 는 특수한 쉘 내장임\n" +msgstr "%s은(는) 특수 셸 내장 명령임\n" #: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" -msgstr "%s 는 쉘 내장임\n" +msgstr "%s은(는) 셸 내장임\n" #: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" -msgstr "%s 는 %s 임\n" +msgstr "%s은(는) %s 임\n" #: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" -msgstr "%s 는 해시됨 (%s)\n" +msgstr "%s은(는) 해시됨 (%s)\n" #: builtins/ulimit.def:400 #, c-format msgid "%s: invalid limit argument" -msgstr "%s: 유효하지 않은 제한 인자" +msgstr "%s: 부적절한 제한 인자" #: builtins/ulimit.def:426 #, c-format msgid "`%c': bad command" -msgstr "'%c': 잘못된 명령어" +msgstr "`%c': 잘못된 명령어" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: 제한을 읽을 수 없음: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "제한" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" -msgstr "%s: 제한을 변경할 수 없음: %s" +msgstr "%s: 제한을 바꿀 수 없음: %s" #: builtins/umask.def:115 msgid "octal number" @@ -953,14 +952,14 @@ msgstr "8진수" #: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "'%c': 유효하지 않은 심볼릭 모드 연산자" +msgstr "`%c': 부적절한 심볼릭 모드 연산자" #: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "'%c': 유효하지 않은 심볼릭 모드 문자" +msgstr "`%c': 부적절한 심볼릭 모드 문자" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " 줄 " @@ -980,359 +979,368 @@ msgstr "취소중..." msgid "INFORM: " msgstr "정보: " -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "디버깅 경고: " + +#: error.c:488 msgid "unknown command error" -msgstr "알 수 없는 명령어 오류" +msgstr "알 수 없는 명령 오류" -#: error.c:463 +#: error.c:489 msgid "bad command type" -msgstr "잘못된 명령어 타입" +msgstr "잘못된 명령 형식" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "잘못된 커넥터" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "잘못된 점프" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" -msgstr "%s: 해제된 변수" +msgstr "%s: 바인딩 해제한 변수" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\a입력 대기중 시간 초과: 자동으로 로그아웃\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" -msgstr "표준 입력을 /dev/null에서 리다이렉트 할 수 없음: %s" +msgstr "표준 입력을 /dev/null에서 방향재지정 처리할 수 없음: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" -msgstr "TIMEFORMAT: `%c': 유효하지 않은 서식 문자" +msgstr "TIMEFORMAT: `%c': 부적절한 서식 문자" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] 가 여전히 존재" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "파이프 오류" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: 최대 eval 중첩 레벨 초과 (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: 최대 소스 중첩 레벨 초과 (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: 최대 함수 중첩 레벨 초과 (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: 제한됨: 명령 이름에 '/'를 지정할 수 없음" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: 명령어를 찾을 수 없음" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: 실행할 수 없음: 필요한 파일이 없습니다" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: 잘못된 인터프리터" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: 이진 파일을 실행할 수 없음: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" -msgstr "'%s': 특수한 내장 명령임" +msgstr "`%s': 특수한 내장 명령임" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" -msgstr "fd %d를 fd %d로 복제할 수 없음" +msgstr "파일 서술자 %d번을 파일 서술자 %d번으로 복제할 수 없음" #: expr.c:263 msgid "expression recursion level exceeded" -msgstr "표현식 재귀 레벨 초과됨" +msgstr "표현식 재귀 레벨 초과" #: expr.c:291 msgid "recursion stack underflow" msgstr "재귀 스택 언더플로우" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "표현식 문법 오류" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" -msgstr "변수가 아닌 것에 할당을 시도함" +msgstr "비 변수에 할당 시도" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "변수 할당 문법 오류" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "0으로 나눔" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "버그: 잘못된 표현식 토큰" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" -msgstr "조건문에 ':' 예상함" +msgstr "조건문에 ':' 필요함" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "지수가 0보다 작음" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "전위 증가 또는 후위 감소 후에 식별자를 예상함" +msgstr "전위 증가 또는 후위 감소 후에 식별자가 필요함" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "')' 빠짐" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" -msgstr "문법 오류: 피연산자 예상함" +msgstr "문법 오류: 피연산자 필요함" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" -msgstr "문법 오류: 유효하지 않은 산술 연산자" +msgstr "문법 오류: 부적절한 산술 연산자" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (오류 토큰은 \"%s\" 임)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" -msgstr "유효하지 않은 진법" +msgstr "부적절한 진법" -#: expr.c:1582 -#, fuzzy +#: expr.c:1587 msgid "invalid integer constant" -msgstr "%s: 유효하지 않은 줄 수" +msgstr "부적절한 정수 상수" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "해당 진법에서 표현할 수 없는 값" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: 표현식 오류\n" #: general.c:70 msgid "getcwd: cannot access parent directories" -msgstr "getcwd: 부모 디렉터리에 접근할 수 없음" +msgstr "getcwd: 상위 디렉터리에 접근할 수 없음" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" -msgstr "fd %d에 대해 nodelay 모드를 재설정 할 수 없음" +msgstr "파일 서술자 %d번에 nodelay 모드를 초기화할 수 없음" #: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" -msgstr "fd %d에서 bash 입력을 위한 새 파일 디스크립터를 할당할 수 없음" +msgstr "파일 서술자 %d번에서 bash 입력용 새 파일 서술자를 할당할 수 없음" #: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" -msgstr "save_bash_input: 새로운 fd %d를 위한 버퍼가 이미 존재함" +msgstr "save_bash_input: 새 파일 서술자 %d번의 버퍼가 이미 존재함" #: jobs.c:543 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -msgstr "" +msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -msgstr "" +msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "포크된 pid %d가 실행중인 job %d에 나타남" +msgstr "포크한 PID %d번이 실행중인 작업 %d에 나타남" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" -msgstr "프로세스 그룹 %2$ld의 정지된 작업 %1$d 를 삭제중" +msgstr "프로세스 그룹 %2$ld번의 멈춘 작업 %1$d번을 삭제중" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" -msgstr "add_process: pid %5ld (%s) 가 현재도 살아있다고 표시됨" +msgstr "add_process: pid %5ld (%s)이(가) 여전히 살아있다고 나타남" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: 그런 pid가 없음" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" -msgstr "신호 %d" +msgstr "시그널 %d번" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "완료" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "멈춤" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "멈춤(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "실행중" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "완료(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "나감 %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "알 수 없는 상태" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(코어 덤프됨) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" -msgstr "child setpgid (%ld 에서 %ld 로)" +msgstr "child setpgid (%ld에서 %ld(으)로)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" -msgstr "wait: pid %ld는 이 쉘의 자식이 아님" +msgstr "wait: pid %ld번은 이 셸의 자식이 아님" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" -msgstr "wait_for: 프로세스 %ld에 대한 기록 없음" +msgstr "wait_for: 프로세스 %ld번의 기록 없음" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" -msgstr "wait_for_job: job %d 은 정지됨" +msgstr "wait_for_job: 작업 %d번이 멈춤" -#: jobs.c:3564 -#, fuzzy, c-format +#: jobs.c:3551 +#, c-format msgid "%s: no current jobs" -msgstr "%s: 그러한 job이 없음" +msgstr "%s: 현재 작업이 없음" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: 작업이 종료됨" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" -msgstr "%s: job %d는 이미 백그라운드에 있음" +msgstr "%s: 작업 %d번은 이미 백그라운드에 있음" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" -msgstr "waitchld: 정의되지 않은 블록을 피하기 위해 WNOHANG를 켜는 중" +msgstr "waitchld: 미지정 차단 동작 회피 목적으로 WNOHANG를 켜는 중" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: 줄 %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (코어 덤프됨)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp 실패" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" -msgstr "initialize_job_control: 백그라운드에 job control 없음" +msgstr "initialize_job_control: 백그라운드에 작업 컨트롤 없음" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" -msgstr "initialize_job_control: line discipline" +msgstr "initialize_job_control: 라인 제어" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" -msgstr "터미털 프로세스 그룹 (%d)을 설정할 수 없음" +msgstr "터미털 프로세스 그룹(%d)을 설정할 수 없음" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" -msgstr "이 쉘에 job control 없음" +msgstr "이 셸에 작업 제어 없음" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: assertion 실패: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1341,70 +1349,68 @@ msgstr "" "\r\n" "malloc: %s:%d: assertion 망가짐\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "알 수 없음" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" -msgstr "malloc: block on free list clobbered" +msgstr "malloc: 해제 목록 처리중 중단" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: 이미 해제된 블록 인자를 가지고 호출됨" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: 할당되지 않은 블록 인자와 호출됨" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" -msgstr "free: 언더플로우 감지; mh_nbytes가 범위를 벗어남" +msgstr "free: 언더플로우 감지! mh_nbytes가 범위를 벗어남" -#: lib/malloc/malloc.c:1001 -#, fuzzy +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" -msgstr "free: 언더플로우 감지; mh_nbytes가 범위를 벗어남" +msgstr "free: 언더플로우 감지! magic8 손상" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: 시작과 끝의 청크 사이즈가 다름" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: 할당되지 않은 블록 인자를 가지고 호출됨" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" -msgstr "realloc: 언더플로우 감지; mh_nbytes가 범위를 벗어남" +msgstr "realloc: 언더플로우 감지! mh_nbytes가 범위를 벗어남" -#: lib/malloc/malloc.c:1141 -#, fuzzy +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" -msgstr "realloc: 언더플로우 감지; mh_nbytes가 범위를 벗어남" +msgstr "realloc: 언더플로우 감지! magic8 손상" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: 시작과 끝의 청크 사이즈가 다름" #: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" -msgstr "register_alloc: FIND_ALLOC이 할당 테이블이 가득 찼다고 함?\n" +msgstr "register_alloc: FIND_ALLOC이 할당 테이블이 가득참?\n" #: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" -msgstr "register_alloc: %p가 할당된 테이블에 있음?\n" +msgstr "register_alloc: %p이(가) 할당한 테이블에 있음?\n" #: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" -msgstr "register_free: %p가 이미 해제된 테이블에 있음?\n" +msgstr "register_free: %p이(가) 이미 해제한 테이블에 있음?\n" #: lib/sh/fmtulong.c:102 msgid "invalid base" -msgstr "유효하지 않은 진법" +msgstr "부적절한 진법" #: lib/sh/netopen.c:168 #, c-format @@ -1414,7 +1420,7 @@ msgstr "%s: 알 수 없는 호스트" #: lib/sh/netopen.c:175 #, c-format msgid "%s: invalid service" -msgstr "%s: 유효하지 않은 서비스" +msgstr "%s: 부적절한 서비스" #: lib/sh/netopen.c:306 #, c-format @@ -1425,25 +1431,25 @@ msgstr "%s: 잘못된 네트워크 경로 사양" msgid "network operations not supported" msgstr "네트워크 작업은 지원되지 않음" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" -msgstr "setlocale: LC_ALL: 로케일을 바꿀 수 없음 (%s)" +msgstr "setlocale: LC_ALL: 로캘을 바꿀 수 없음 (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" -msgstr "setlocale: LC_ALL: 로케일을 바꿀 수 없음 (%s): %s" +msgstr "setlocale: LC_ALL: 로캘을 바꿀 수 없음 (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" -msgstr "setlocale: %s: 로케일을 바꿀 수 없음 (%s)" +msgstr "setlocale: %s: 로캘을 바꿀 수 없음 (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" -msgstr "setlocale: %s: 로케일을 바꿀 수 없음 (%s): %s" +msgstr "setlocale: %s: 로캘을 바꿀 수 없음 (%s): %s" #: mailcheck.c:439 msgid "You have mail in $_" @@ -1456,148 +1462,145 @@ msgstr "$_에 새로운 메일이 있습니다" #: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" -msgstr "%s에 있는 메일은 읽었습니다\n" +msgstr "%s의 메일을 읽었습니다\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "문법 오류: 산술 표현식이 필요함" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" -msgstr "문법 오류: ';' 예상되지 않음" +msgstr "문법 오류: ';' 필요하지 않음" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "문법 오류: `((%s))'" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: 잘못된 명령어 형식 %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "here-document가 줄 %d 에서 파일의 끝으로 구분됨 (`%s'를 예상함)" +msgstr "here-document가 %d번 행에서 파일의 끝으로 구분함 (`%s'아(가) 필요함)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "make_redirection: 리다이렉션 명령어 `%d' 범위 벗어남" +msgstr "make_redirection: 방향재지정 처리 명령어 `%d' 범위 벗어남" -#: parse.y:2393 +#: parse.y:2428 #, c-format -msgid "" -"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " -"truncated" -msgstr "" -"shell_getc: shell_input_line_size (%zu)가 SIZE_MAX (%lu)를 초과함: 줄 잘림" +msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" +msgstr "shell_getc: shell_input_line_size(%zu)가 SIZE_MAX(%lu)를 초과함: 줄 잘림" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "최대 here-document 카운트 초과" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "'%c'를 찾는 도중 예상하지 못한 파일의 끝" +msgstr "`%c'을(를) 찾는 도중 예상치 못한 파일의 끝" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" -msgstr "']]'를 찾던 도중 예상하지 못한 파일의 끝" +msgstr "']]'를 찾던 도중 예상치 못한 파일의 끝" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" -msgstr "조건 표현식에 문법 오류: 예상하지 못한 토큰 '%s'" +msgstr "조건 표현식에 문법 오류: 예상치 못한 토큰 `%s'" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "조건 표현식에 문법 오류" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "예상되지 않은 토큰 '%s', ')' 예상됨" +msgstr "예상치 못한 토큰 `%s', ')' 필요함" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" -msgstr "')' 예상됨" +msgstr "')' 필요함" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "조건 단항 연산자에 예기치 않은 인자 '%s'" +msgstr "조건 단항 연산자에 예기치 않은 인자 `%s'" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "조건 단항 연산자에 예기치 않은 인자" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "예기치 않은 토큰 '%s', 조건 이항 연산자 예상됨" +msgstr "예기치 않은 토큰 `%s', 조건 이항 연산자 필요함" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" -msgstr "조건 이항 연산자 예상됨" +msgstr "조건 이항 연산자 필요함" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "조건 이항 연산자에 대해 예기치 않은 인자 '%s'" +msgstr "조건 이항 연산자에 대해 예기치 않은 인자 `%s'" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "조건 이항 연산자에 대해 예기치 않은 인자" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "조건 명령어에서 예기치 않은 토큰 '%c'" +msgstr "조건 명령어에서 예기치 않은 토큰 `%c'" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "조건 명령어에서 예기치 않은 토큰 '%s'" +msgstr "조건 명령어에서 예기치 않은 토큰 `%s'" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "조건 명령어에서 예기치 않은 토큰 %d" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "예기치 않은 토큰 '%s' 근처에서 문법 오류" +msgstr "예기치 않은 토큰 `%s' 근처에서 문법 오류" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" -msgstr "'%s' 근처에서 문법 오류" +msgstr "`%s' 근처에서 문법 오류" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "문법 오류: 예기치 않은 파일의 끝" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "문법 오류" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" -msgstr "쉘을 나가려면 \"%s\"를 사용하세요.\n" +msgstr "셸을 나가려면 \"%s\" 명령을 사용하십시오.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "맞는 ')'를 찾던 도중 예기치 않은 파일의 끝" #: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" -msgstr "completion: 함수 `%s' 를 찾을 수 없음" +msgstr "completion: `%s' 함수를 찾을 수 없음" #: pcomplete.c:1722 #, c-format @@ -1617,7 +1620,7 @@ msgstr "print_command: 잘못된 커넥터 `%d'" #: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" -msgstr "xtrace_set: %d: 유효하지 않은 파일 디스크립터" +msgstr "xtrace_set: %d: 부적절한 파일 서술자" #: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" @@ -1628,569 +1631,560 @@ msgstr "xtrace_set: NULL 파일 포인터" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': 잘못된 서식 문자" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" -msgstr "파일 디스크립터 범위 벗어남" +msgstr "파일 서술자 범위 벗어남" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: 모호한 리다이렉트" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: 이미 있는 파일을 덮어쓸 수 없음" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" -msgstr "%s: 제한됨: 출력을 리다이렉트할 수 없음" +msgstr "%s: 제한됨: 출력을 방향 재지정할 수 없음" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "here-document를 위한 임시 파일을 생성할 수 없음: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" -msgstr "%s: fd를 변수에 할당할 수 없음" +msgstr "%s: 파일 서술자를 변수에 할당할 수 없음" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" -msgstr "/dev/(tcp|udp)/host/port 는 네트워킹 없이 지원되지 않음" +msgstr "/dev/(tcp|udp)/host/port는 네트워킹 없이 지원하지 않음" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" -msgstr "리다이렉션 오류: fd를 복제할 수 없음" +msgstr "방향재지정 처리 오류: 파일 서술자를 복제할 수 없음" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" -msgstr "/tmp를 찾을 수 없음, 만들어 주세요!" +msgstr "/tmp를 찾을 수 없음, 만드십시오!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" -msgstr "/tmp는 반드시 유효한 디렉토리 이름이어야 함" +msgstr "/tmp는 반드시 적절한 디렉터리 이름이어야 함" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" -msgstr "상호적 쉘에서는 pretty-printing 모드가 무시됨" +msgstr "대화형 셸에서는 정돈 출력 모드를 무시함" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" -msgstr "%c%c: 유효하지 않은 옵션" +msgstr "%c%c: 부적절한 옵션" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "uid를 %d로 설정할 수 없음: effective uid %d" +msgstr "uid를 %d번으로 설정할 수 없음: 효력상 사용자 ID %d번" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "gid를 %d로 설정할 수 없음: effective gid %d" +msgstr "gid를 %d번으로 설정할 수 없음: 효력상 그룹 ID %d번" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" -msgstr "디버거를 시작할 수 없음; 디버깅 모드 비활성화됨" +msgstr "디버거를 시작할 수 없음! 디버깅 모드 꺼짐" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" -msgstr "%s: 는 디렉터리임" +msgstr "%s: 디렉터리임" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "이름 없음!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" -msgstr "GNU bash, 버전 %s-(%s)\n" +msgstr "GNU 배시, 버전 %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -"사용법:\t%s [GNU 긴 옵션] [옵션] ...\n" -"\t%s [GNU 긴 옵션] [옵션] 스크립트-파일 ...\n" +"사용법:\t%s [] [<옵션>] ...\n" +"\t%s [] [<옵션>] <스크립트파일> ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "GNU 긴 옵션:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" -msgstr "쉘 옵션:\n" +msgstr "셸 옵션:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "\t-ilrsD 또는 -c 명령 또는 -O shopt_option\t\t(invocation 전용)\n" +msgstr "\t-ilrsD 또는 -c <명령> 또는 -O shopt_option\t\t(invocation 전용)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s 또는 -o 옵션\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" -msgstr "" -"`%s -c \"help set\"' 를 사용하면 쉘 옵션에 관해 더 많은 정보를 확인할 수 있습" -"니다.\n" +msgstr "`%s -c \"help set\"' 명령을 사용하면 셸 옵션에 관해 더 많은 정보를 확인할 수 있습니다.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" -msgstr "" -"`%s -c help' 를 사용하면 쉘 내장 명령어에 관해 더 많은 정보를 확인할 수 있습" -"니다.\n" +msgstr "`%s -c help' 명령을 사용하면 셸 내장 명령어에 관해 더 많은 정보를 확인할 수 있습니다.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "버그를 보고하려면 'bashbug' 명령을 사용하세요.\n" +msgstr "버그를 보고하려면 'bashbug' 명령을 사용하십시오.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "bash 홈페이지: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" -msgstr "" -"GNU 소프트웨어를 사용하는데 일반적인 도움말: \n" +msgstr "GNU 소프트웨어 사용자 일반 도움말: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" -msgstr "sigprocmask: %d: 유효하지 않은 작업" +msgstr "sigprocmask: %d: 부적절한 작업" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" -msgstr "Bogus 신호" +msgstr "가짜 시그널" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" -msgstr "Hangup" +msgstr "수행 중단(Hangup)" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "인터럽트" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "나가기" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" -msgstr "Illegal instruction" +msgstr "부적절한 명령" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" -msgstr "BPT trace/trap" +msgstr "BPT 추적/중단" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "ABORT 명령" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "EMT 명령" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "부동 소수점 예외" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" -msgstr "Killed" +msgstr "죽었음" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "버스 오류" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" -msgstr "세그멘테이션 오류" +msgstr "세그먼테이션 오류" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "잘못된 시스템 콜" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" -msgstr "고장난 파이프" +msgstr "파이프 깨짐" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" -msgstr "알람 시계" +msgstr "알림 시계" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" -msgstr "Terminated" +msgstr "중단됨" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" -msgstr "긴급한 IO 상황" +msgstr "긴급 입출력 상태" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" -msgstr "멈춤 (신호)" +msgstr "멈춤 (시그널)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "계속" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" -msgstr "자식이 죽거나 멈춤" +msgstr "하위 요소가 죽거나 멈춤" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "멈춤 (tty 입력)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "멈춤 (tty 출력)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O 준비" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "CPU 제한" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "파일 제한" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" -msgstr "알람 (가상)" +msgstr "알림 (가상)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" -msgstr "알람 (프로파일)" +msgstr "알림 (프로파일)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" -msgstr "윈도우 변경됨" +msgstr "윈도우 바뀜" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "기록 잠금" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" -msgstr "유저 신호 1" +msgstr "사용자 시그널 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" -msgstr "유저 신호 2" +msgstr "사용자 시그널 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "HFT 입력 데이터 대기중" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "전원 문제 임박" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "시스템 충돌 임박" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "다른 CPU로 프로세스 이전" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "프로그래밍 오류" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" -msgstr "HFT 모니터 모드 승인됨" +msgstr "HFT 모니터 모드 승인함" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" -msgstr "HFT 모니터 모드 철회됨" +msgstr "HFT 모니터 모드 철회함" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" -msgstr "HFT 사운드 절차가 완료됨" +msgstr "HFT 사운드 시퀀스가 끝남" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "정보 요청" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" -msgstr "알 수 없는 신호 #%d" +msgstr "알 수 없는 시그널 #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "잘못된 대체: %2$s에 닫는 '%1$s' 없음" +msgstr "잘못된 대체: %2$s에 닫는 `%1$s' 없음" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" -msgstr "%s: 리스트를 배열 멤버에 할당할 수 없음" +msgstr "%s: 리스트를 배열 멤버로 할당할 수 없음" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" -msgstr "프로세스 대체를 위해 파이프를 만들 수 없음" +msgstr "프로세스 대체용 파이프를 만들 수 없음" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" -msgstr "프로세스 대체를 위해 자식을 만들 수 없음" +msgstr "프로세스 대체용 하위 요소를 만들 수 없음" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" -msgstr "읽기를 위해 명명된 파이프 %s를 열 수 없음" +msgstr "읽기용 명명 파이프 %s을(를) 열 수 없음" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" -msgstr "쓰기를 위해 명명된 파이프 %s를 열 수 없음" +msgstr "쓰기용 명명 파이프 %s을(를) 열 수 없음" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" -msgstr "명명된 파이프 %s를 fd %d로 복제할 수 없음" +msgstr "명명된 파이프 %s을(를) 파일 서술자 %d번으로 복제할 수 없음" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" -msgstr "command substitution: 입력의 null 바이트 무시됨" +msgstr "command substitution: 입력의 null 바이트 무시" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" -msgstr "명령어 대체를 위해 파이프를 만들 수 없음" +msgstr "명령어 대체용 파이프를 만들 수 없음" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" -msgstr "명령어 대체를 위해 자식을 만들 수 없음" +msgstr "명령어 대체용 하위 요소를 만들 수 없음" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "command_substitute: 파이프를 fd 1로 복제할 수 없음" +msgstr "command_substitute: 파이프를 파일 서술자 1번으로 복제할 수 없음" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "%s: 이름 참조에 대해 유효하지 않은 변수 이름" +msgstr "%s: 이름 참조에 부적절한 변수 이름" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: 유효하지 않은 간접 확장" +msgstr "%s: 부적절한 간접 확장" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" -msgstr "%s: 유효하지 않은 변수 이름" +msgstr "%s: 부적절한 변수 이름" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" -msgstr "%s: 파라미터 설정되지 않음" +msgstr "%s: 매개변수값 설정 안함" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" -msgstr "%s: 파라미터가 null 또는 설정되지 않음" +msgstr "%s: 매개변수 값이 null 이거나 설정하지 않음" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: 부분 문자열 표현식 < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: 잘못된 대체" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: 이 방법으로 할당할 수 없음" -#: subst.c:9814 -msgid "" -"future versions of the shell will force evaluation as an arithmetic " -"substitution" -msgstr "향후 버전의 쉘에서는 산술 대체로 연산이 강제됩니다" +#: subst.c:10111 +msgid "future versions of the shell will force evaluation as an arithmetic substitution" +msgstr "향후 버전의 셸에서는 산술 대체로 연산이 강제됩니다" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "잘못된 대체: %s에 닫는 \"`\" 없음" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "일치 없음: %s" #: test.c:147 msgid "argument expected" -msgstr "인자 예상됨" +msgstr "인자 필요함" #: test.c:156 #, c-format msgid "%s: integer expression expected" -msgstr "%s: 정수 표현식 예상됨" +msgstr "%s: 정수 표현식 필요함" #: test.c:265 msgid "`)' expected" -msgstr "`)' 예상됨" +msgstr "`)'가 필요함" #: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "`)' 예상되었으나 %s를 발견" +msgstr "`)'가 있어야 하지만, %s이(가) 있습니다" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" -msgstr "%s: 이항 연산자 예상됨" +msgstr "%s: 이항 연산자가 필요합니다" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" -msgstr "%s: 단항 연산자 예상됨" +msgstr "%s: 단항 연산자가 필요합니다" -#: test.c:881 +#: test.c:896 msgid "missing `]'" -msgstr "']' 없음" +msgstr "']' 빠짐" -#: test.c:899 -#, fuzzy, c-format +#: test.c:914 +#, c-format msgid "syntax error: `%s' unexpected" -msgstr "문법 오류: ';' 예상되지 않음" +msgstr "문법 오류: `%s' 필요하지 않음" #: trap.c:220 msgid "invalid signal number" -msgstr "유효하지 않은 신호 번호" +msgstr "부적절한 시그널 번호" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" -msgstr "trap handler: 최대 trap handler 레벨 초과 (%d)" +msgstr "trap handler: 최대 트랩 핸들러 레벨 초과 (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: trap_list[%d]에 잘못된 값: %p" -#: trap.c:418 +#: trap.c:416 #, c-format -msgid "" -"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "" -"run_pending_traps: 신호 핸들러는 SIG_DFL 이고, %d (%s)를 자신에게 보내는 중" +msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_traps: 시그널 핸들러는 SIG_DFL 이고, %d (%s)를 자신에게 다시 보내는 중" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" -msgstr "trap_handler: 잘못된 신호 %d" +msgstr "trap_handler: 잘못된 시그널 %d번" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" -msgstr "'%s'에 대해 함수 정의를 불러오는데 오류 발생" +msgstr "`%s'의 함수 정의 가져오기 오류" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" -msgstr "쉘 레벨 (%d)이 너무 높습니다, 1로 재설정합니다" +msgstr "셸 레벨 (%d)이 너무 높습니다, 1로 재설정합니다" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: 현재 범위에서 함수 컨텍스트 없음" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: 변수는 할당된 값이 될 수 없음" +msgstr "%s: 변수는 할당 값이 아님" + +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s: 비호환 형식의 값을 가져올 수 없음" -#: variables.c:3475 +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: 이름 참조에 정수를 할당하고 있음" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: 현재 범위에서 함수 컨텍스트 없음" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" -msgstr "%s가 null exportstr을 가짐" +msgstr "%s이(가) null exportstr을 가짐" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" -msgstr "%2$s를 위한 exportstr에서 유효하지 않은 문자 %1$d" +msgstr "%2$s의 exportstr에서 부적절한 문자 %1$d" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" -msgstr "%s를 위한 exportstr에 '=' 없음" +msgstr "%s의 exportstr에 '=' 없음" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variables의 시작이 함수의 컨텍스트가 아님" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: 컨텍스트에 global_variables 없음" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables의 시작이 임시 환경 범위가 아님" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s: %s: 파일로써 열 수 없음" +msgstr "%s: %s: <파일>로 열 수 없음" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "%s: %s: 추척 파일 디스크립터에 유효하지 않은 값" +msgstr "%s: %s: 추척 파일 서술자에 부적절한 값" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: 호환 값이 범위를 벗어남" #: version.c:46 version2.c:46 -#, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Copyright (C) 2018 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Copyright (C) 2022 Free Software Foundation, Inc." #: version.c:47 version2.c:47 -msgid "" -"License GPLv3+: GNU GPL version 3 or later \n" -msgstr "" -"라이선스 GPLv3+: GNU GPL version 3 or later \n" +msgid "License GPLv3+: GNU GPL version 3 or later \n" +msgstr "라이선스 GPLv3+: GNU GPL 버전 3 이상 \n" #: version.c:86 version2.c:86 #, c-format @@ -2199,67 +2193,63 @@ msgstr "GNU bash, 버전 %s (%s)\n" #: version.c:91 version2.c:91 msgid "This is free software; you are free to change and redistribute it." -msgstr "This is free software; you are free to change and redistribute it." +msgstr "이 프로그램은 자유 소프트웨어입니다. 자유롭게 바꾸고 재배포할 수 있습니다." #: version.c:92 version2.c:92 msgid "There is NO WARRANTY, to the extent permitted by law." -msgstr "There is NO WARRANTY, to the extent permitted by law." +msgstr "법률이 허용하는 모든 범위내의 보증은 없습니다." #: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "%s: %lu bytes를 할당할 수 없음 (%lu bytes 할당됨)" +msgstr "%s: %lu 바이트를 할당할 수 없음 (%lu 바이트 할당함)" #: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "%s: %lu bytes를 할당할 수 없음" +msgstr "%s: %lu 바이트를 할당할 수 없음" #: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "%s: %s:%d: %lu bytes를 할당할 수 없음 (%lu bytes 할당됨)" +msgstr "%s: %s:%d: %lu 바이트를 할당할 수 없음 (%lu 바이트 할당함)" #: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" -msgstr "%s: %s:%d: %lu bytes를 할당할 수 없음" +msgstr "%s: %s:%d: %lu 바이트를 할당할 수 없음" #: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" -msgstr "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [<이름>[=<값>] ... ]" #: builtins.c:49 msgid "unalias [-a] name [name ...]" -msgstr "unalias [-a] name [name ...]" +msgstr "unalias [-a] <이름> [<이름> ...]" #: builtins.c:53 -msgid "" -"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" -"x keyseq:shell-command] [keyseq:readline-function or readline-command]" -msgstr "" -"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" -"x keyseq:shell-command] [keyseq:readline-function 또는 readline-command]" +msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "bind [-lpsvPSVX] [-m <키매핑>] [-f <파일이름>] [-q <이름>] [-u <이름>] [-r <키시퀀스>] [-x <키시퀀스>:<셸명령>] [<키시퀀스>:<행읽기함수> 또는 <행읽기명령>]" #: builtins.c:56 msgid "break [n]" -msgstr "break [n]" +msgstr "break [<번호>]" #: builtins.c:58 msgid "continue [n]" -msgstr "continue [n]" +msgstr "continue [<번호>]" #: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" -msgstr "builtin [shell-builtin [arg ...]]" +msgstr "builtin [<셸내장명령> [<인자> ...]]" #: builtins.c:63 msgid "caller [expr]" -msgstr "caller [expr]" +msgstr "caller [<표현식>]" #: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [<디렉터리>]" #: builtins.c:68 msgid "pwd [-LP]" @@ -2267,83 +2257,75 @@ msgstr "pwd [-LP]" #: builtins.c:76 msgid "command [-pVv] command [arg ...]" -msgstr "command [-pVv] command [arg ...]" +msgstr "<명령> [-pVv] <명령> [<인자> ...]" #: builtins.c:78 -#, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [<이름>[=<값>] ...]" #: builtins.c:80 -#, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgilnrtux] [-p] <이름>[=<값>] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." -msgstr "local [옵션] name[=value] ..." +msgstr "local [<옵션>] <이름>[=<값>] ..." #: builtins.c:85 msgid "echo [-neE] [arg ...]" -msgstr "echo [-neE] [인자 ...]" +msgstr "echo [-neE] [<인자> ...]" #: builtins.c:89 msgid "echo [-n] [arg ...]" -msgstr "echo [-n] [인자 ...]" +msgstr "echo [-n] [<인자> ...]" #: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" -msgstr "enable [-a] [-dnps] [-f 파일명] [이름 ...]" +msgstr "enable [-a] [-dnps] [-f <파일이름>] [<이름> ...]" #: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [인자 ...]" #: builtins.c:96 -#, fuzzy msgid "getopts optstring name [arg ...]" -msgstr "getopts optstring name [arg]" +msgstr "getopts optstring name [<인자> ...]" #: builtins.c:98 -#, fuzzy msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" -msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a <이름>] [<명령> [<인자> ...]] [<방향재지정> ...]" #: builtins.c:100 msgid "exit [n]" -msgstr "exit [n]" +msgstr "exit [<번호>]" #: builtins.c:102 msgid "logout [n]" -msgstr "logout [n]" +msgstr "logout [<번호>]" #: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "fc [-e ename] [-lnr] [first] [last] 또는 fc -s [pat=rep] [command]" +msgstr "fc [-e <편집기이름>] [-lnr] [<처음>] [<종결>] 또는 fc -s [<패턴>=<대체>] [<명령>]" #: builtins.c:109 msgid "fg [job_spec]" -msgstr "fg [job_spec]" +msgstr "fg []" #: builtins.c:113 msgid "bg [job_spec ...]" -msgstr "bg [job_spec ...]" +msgstr "bg [ ...]" #: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" -msgstr "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p <경로이름>] [-dt] [<이름> ...]" #: builtins.c:119 msgid "help [-dms] [pattern ...]" -msgstr "help [-dms] [패턴 ...]" +msgstr "help [-dms] [<패턴> ...]" #: builtins.c:123 -msgid "" -"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " -"[arg...]" -msgstr "" -"history [-c] [-d 오프셋] [n] 또는 history -anrw [파일명] 또는 history -ps " -"arg [인자...]" +msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +msgstr "history [-c] [-d <오프셋>] [n] 또는 history -anrw [<파일이름>] 또는 history -ps <인자> [<인자>...]" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2351,47 +2333,39 @@ msgstr "jobs [-lnprs] [jobspec ...] 또는 jobs -x command [args]" #: builtins.c:131 msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [ ... | ...]" #: builtins.c:134 -msgid "" -"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " -"[sigspec]" -msgstr "" -"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... 또는 kill -l " -"[sigspec]" +msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" +msgstr "kill [-s <시그널명세> | -n <시그널번호> | -<시그널명세>] | ... 또는 kill -l [<시그널명세>]" #: builtins.c:136 msgid "let arg [arg ...]" -msgstr "let arg [arg ...]" +msgstr "let <인자> [<인자> ...]" #: builtins.c:138 -msgid "" -"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " -"prompt] [-t timeout] [-u fd] [name ...]" -msgstr "" -"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " -"prompt] [-t timeout] [-u fd] [name ...]" +msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" +msgstr "read [-ers] [-a <배열>] [-d <구분자>] [-i <텍스트>] [-n <문자수>] [-N <문자수>] [-p <프롬프트>] [-t <제한시간>] [-u <파일서술자>] [<이름> ...]" #: builtins.c:140 msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [-abefhkmnptuvxBCHP] [-o 옵션이름] [--] [arg ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o <옵션-이름>] [--] [<인자> ...]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [<이름> ...]" #: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" -msgstr "export [-fn] [name[=value] ...] 또는 export -p" +msgstr "export [-fn] [<이름>[=<값>] ...] 또는 export -p" #: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" -msgstr "readonly [-aAf] [name[=value] ...] 또는 readonly -p" +msgstr "readonly [-aAf] [<이름>[=<값>] ...] 또는 readonly -p" #: builtins.c:150 msgid "shift [n]" @@ -2399,11 +2373,11 @@ msgstr "shift [n]" #: builtins.c:152 msgid "source filename [arguments]" -msgstr "source 파일명 [인자들]" +msgstr "source <파일이름> [<인자>]" #: builtins.c:154 msgid ". filename [arguments]" -msgstr ". 파일명 [인자들]" +msgstr ". <파일이름> [<인자>]" #: builtins.c:157 msgid "suspend [-f]" @@ -2411,83 +2385,79 @@ msgstr "suspend [-f]" #: builtins.c:160 msgid "test [expr]" -msgstr "test [expr]" +msgstr "test [<표현식>]" #: builtins.c:162 msgid "[ arg... ]" -msgstr "[ 인자... ]" +msgstr "[ <인자>... ]" #: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" -msgstr "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[<인자>] <시그널_명세> ...]" #: builtins.c:168 msgid "type [-afptP] name [name ...]" -msgstr "type [-afptP] name [name ...]" +msgstr "type [-afptP] <이름> [<이름> ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [<한계값>]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" -msgstr "umask [-p] [-S] [모드]" +msgstr "umask [-p] [-S] [<모드>]" #: builtins.c:177 -#, fuzzy msgid "wait [-fn] [-p var] [id ...]" -msgstr "wait [-fn] [id ...]" +msgstr "wait [-fn] [ ...]" #: builtins.c:181 msgid "wait [pid ...]" -msgstr "wait [pid ...]" +msgstr "wait [ ...]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" -msgstr "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for <이름> [in <여러단어> ... ] ; do <명령>; done" #: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" -msgstr "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( <조건식1>; <조건식2>; <조건식3> )); do <명령>; done" #: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" -msgstr "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select <이름> [in <여러단어> ... ;] do <명령>; done" #: builtins.c:190 msgid "time [-p] pipeline" -msgstr "time [-p] pipeline" +msgstr "time [-p] <파이프라인>" #: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -msgstr "case 단어 in [패턴 [| 패턴]...) 명령어 ;;]... esac" +msgstr "case <단어> in [<패턴> [| <패턴>]...) <명령> ;;]... esac" #: builtins.c:194 -msgid "" -"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " -"COMMANDS; ] fi" -msgstr "" -"if 명령어; then 명령어; [ elif 명령어; then 명령어; ]... [ else 명령어; ] fi" +msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" +msgstr "if <명령>; then <명령>; [ elif <명령>; then <명령>; ]... [ else <명령>; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while 명령어; do 명령어; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while <명령>; do <명령-2>; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until 명령어; do 명령어; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until <명령>; do <명령-2>; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" -msgstr "coproc [NAME] command [redirections]" +msgstr "coproc [<이름>] <명령> [<방향재지정>]" #: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" -msgstr "function name { 명령어 ; } 또는 name () { 명령어 ; }" +msgstr "function <이름> { <명령> ; } 또는 <이름> () { <명령> ; }" #: builtins.c:204 msgid "{ COMMANDS ; }" -msgstr "{ 명령어 ; }" +msgstr "{ <명령> ; }" #: builtins.c:206 msgid "job_spec [&]" @@ -2495,75 +2465,55 @@ msgstr "job_spec [&]" #: builtins.c:208 msgid "(( expression ))" -msgstr "(( 표현식 ))" +msgstr "(( <표현식> ))" #: builtins.c:210 msgid "[[ expression ]]" -msgstr "[[ 표현식 ]]" +msgstr "[[ <표현식> ]]" #: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "" +msgstr "variables - 이름이자 일부 셸 변수를 의미합니다" #: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" -msgstr "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+<갯수> | -<갯수> | <디렉터리>]" #: builtins.c:219 msgid "popd [-n] [+N | -N]" -msgstr "popd [-n] [+N | -N]" +msgstr "popd [-n] [+<갯수> | -<갯수>]" #: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" -msgstr "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+<갯수>] [-<갯수>]" #: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" -msgstr "shopt [-pqsu] [-o] [옵션이름...]" +msgstr "shopt [-pqsu] [-o] [<옵션이름>...]" #: builtins.c:228 msgid "printf [-v var] format [arguments]" -msgstr "printf [-v 변수] format [인자]" +msgstr "printf [-v <변수>] <출력형식> [<인자>]" #: builtins.c:231 -#, fuzzy -msgid "" -"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" -"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " -"suffix] [name ...]" -msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" -"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " -"suffix] [name ...]" +msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]" +msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o <옵션>] [-A <동작>] [-G <글롭패턴>] [-W <단어목록>] [-F <함수>] [-C <명령>] [-X <필터패턴>] [-P <접두어>] [-S <접미어>] [<이름> ...]" #: builtins.c:235 -#, fuzzy -msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" -"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" -msgstr "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " -"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "compgen [-abcdefgjksuv] [-o <옵션>] [-A <동작>] [-G <글롭패턴>] [-W <단어목록>] [-F <함수>] [-C <명령>] [-X <필터패턴>] [-P <접두어>] [-S <접미어>] [<단어>]" #: builtins.c:239 msgid "compopt [-o|+o option] [-DEI] [name ...]" -msgstr "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o <옵션>] [-DEI] [<이름> ...]" #: builtins.c:242 -msgid "" -"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" -msgstr "" -"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" +msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "mapfile [-d <구분자>] [-n <갯수>] [-O <시작>] [-s <갯수>] [-t] [-u <파일서술자>] [-C <콜백>] [-c <양자>] [<배열>]" #: builtins.c:244 -msgid "" -"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" -msgstr "" -"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" +msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "readarray [-d <구분자>] [-n <갯수>] [-O <시작>] [-s <갯수>] [-t] [-u <파일서술자>] [-C <콜백>] [-c <양자>] [<배열>]" #: builtins.c:256 msgid "" @@ -2580,10 +2530,23 @@ msgid "" " -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has " -"been\n" +" alias returns true unless a NAME is supplied for which no alias has been\n" " defined." msgstr "" +"별칭을 지정하거나 표시합니다.\n" +" \n" +" 인자가 없다면, `alias'는 `alias <이름>=<값>' 형식으로 표준 출력에\n" +" 별칭 목록을 출력합니다.\n" +" \n" +" 그렇지 않으면 <값>을 부여한 각 <이름>을 지정합니다.\n" +" <값>에 공백 문자를 덧붙이면 별칭을 확장할 때 별칭 대체 대상\n" +" 문자열의 다음 단어를 확인합니다.\n" +" \n" +" 옵션:\n" +" -p\t재사용 형식으로 지정한 모든 별칭을 출력합니다\n" +" \n" +" 종료 상태:\n" +" 별칭으로 지정한 <이름>을 확인하면 참을 반환합니다." #: builtins.c:278 msgid "" @@ -2594,6 +2557,12 @@ msgid "" " \n" " Return success unless a NAME is not an existing alias." msgstr "" +"지정 별칭의 목록에서 각 <이름>을 제거합니다\n" +" \n" +" 옵션:\n" +" -a\t모든 별칭 지정 항목을 제거합니다.\n" +" \n" +" <이름>이 기존 별칭일 경우 성공을 반환합니다." #: builtins.c:291 msgid "" @@ -2607,35 +2576,61 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" -"move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their " -"values\n" -" -s List key sequences that invoke macros and their " -"values\n" +" -S List key sequences that invoke macros and their values\n" +" -s List key sequences that invoke macros and their values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named " -"function.\n" +" -u function-name Unbind all keys which are bound to the named function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" -" -X List key sequences bound with -x and associated " -"commands\n" +" -X List key sequences bound with -x and associated commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" +"readline 키 바인딩과 값을 설정합니다.\n" +" \n" +" 키 시퀀스를 readline 함수 또는 매크로에 바인딩하거나, readline\n" +" 변수에 설정합니다. 옵션을 지정하지 않은 인자 문법은 ~/.inputrc\n" +" 에서 찾을 수 있는 문법과 동일합니다만 단일 인자로 전달해야 합니다.\n" +" 예: bind '\"\\C-x\\C-r\": re-read-init-file'\n" +" \n" +" 옵션:\n" +" -m <키매핑> <키매핑>을 이 명령 실행동안 사용하는 키매핑\n" +" 으로 활용합니다. 허용할 수 있는 키매핑 이름은 emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" +" vi-command, vi-insert가 있습니다.\n" +" -l 함수 이름 목록.\n" +" -P 함수 이름 및 바인딩 목록.\n" +" -p 입력에 다시 활용할 수 있는 형식의 함수 이름과 바인딩 목록.\n" +" -S 매크로와 값을 실행하는 키 시퀀스 목록\n" +" -s 입력으로 다시 활용할 수 있는 매크로와 값을 실행하는\n" +" 키 시퀀스 목록.\n" +" -V 변수 이름과 값 목록\n" +" -v 입력으로 다시 활용할 수 있는 변수 이름과 값 목록.\n" +" -q <함수이름> 어떤 키가 명명 함수를 실행하는지 요청.\n" +" -u <함수이름> 명명 함수에 바인딩한 모든 키의 바인딩 해제.\n" +" -r <키시퀀스> <키시퀀스>의 바인딩 제거.\n" +" -f <파일이름> <파일이름>의 키 바인딩 읽기.\n" +" -x <키시퀀스>:<셸명령>\t<키시퀀스>를 입력하면 <셸명령>을\n" +" \t\t\t\t실행하게 합.\n" +" -X 입력으로 다시 활용할 수 있는 -x로 지정한 키 시퀀스\n" +" 및 관련 명령 목록\n" +" \n" +" 종료 상태:\n" +" 알 수 없는 옵션을 지정하지 않았거나 오류가 없으면 0을 반환합니다." #: builtins.c:330 msgid "" @@ -2647,6 +2642,13 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" +"for, while, until 반복문을 나갑니다.\n" +" \n" +" FOR, WHILE, UNTIL 반복문을 나갑니다. <횟수>를 지정하면,\n" +" 반복 <횟수>에 도달했을 때 중단합니다.\n" +" \n" +" 종료 상태:\n" +" <횟수>가 1보다 크거나 같으면 0입니다." #: builtins.c:342 msgid "" @@ -2658,6 +2660,13 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" +"for, while, until 반복문을 다시 실행합니다.\n" +" \n" +" FOR, WHILE, UNTIL 반복문의 다음 반복 실행을 진행합니다.\n" +" <횟수>를 지정하면 <횟수> 만큼 다시 실행합니다.\n" +" \n" +" 종료 상태:\n" +" <횟수>가 1보다 크거나 같으면 0입니다." #: builtins.c:354 msgid "" @@ -2665,13 +2674,21 @@ msgid "" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the " -"function.\n" +" as a shell function, but need to execute the builtin within the function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" " not a shell builtin." msgstr "" +"셸 내장 명령을 실행합니다.\n" +" \n" +" <셸내장명령>을 명령 검색 동작 없이 <인자>를 지정하여 실행합니다.\n" +" 셸 내장 명령을 셸 함수로 재구현할 때 쓸만합니다만, 내장 명령은\n" +" 함수 안에서 실행해야합니다.\n" +" \n" +" 종료 상태:\n" +" <셸내장명령>의 종료 상태를 반환하거나 <셸내장명령>이 내장\n" +" 명령이 아닐 경우 거짓을 반환합니다." #: builtins.c:369 msgid "" @@ -2688,27 +2705,29 @@ msgid "" " Returns 0 unless the shell is not executing a shell function or EXPR\n" " is invalid." msgstr "" +"현재 하위루틴 호출 컨텍스트를 반환합니다.\n" +" \n" +" <표현식>이 없다면 \"$line $filename\"을 반환하며, <표현식>을 지정했다면\n" +" \"$line $subroutine $filename\"을 반환합니다. 추가 정보는 스택 트레이스\n" +" 에 활용할 수 있습니다.\n" +" \n" +" <표현식>의 값은 현재 호출 프레임으로부터 얼마나 되돌아가야 하는지를\n" +" 나타냅니다. 최상단 프레임은 프레임 0번입니다." #: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of " -"the\n" +" Change the current directory to DIR. The default DIR is the value of the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory " -"containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon " -"(:).\n" -" A null directory name is the same as the current directory. If DIR " -"begins\n" +" The variable CDPATH defines the search path for the directory containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" +" A null directory name is the same as the current directory. If DIR begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is " -"set,\n" -" the word is assumed to be a variable name. If that variable has a " -"value,\n" +" If the directory is not found, and the shell option `cdable_vars' is set,\n" +" the word is assumed to be a variable name. If that variable has a value,\n" " its value is used for DIR.\n" " \n" " Options:\n" @@ -2724,15 +2743,45 @@ msgid "" " \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" -" `..' is processed by removing the immediately previous pathname " -"component\n" +" `..' is processed by removing the immediately previous pathname component\n" " back to a slash or the beginning of DIR.\n" " \n" " Exit Status:\n" -" Returns 0 if the directory is changed, and if $PWD is set successfully " -"when\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" " -P is used; non-zero otherwise." msgstr "" +"셸 작업 디렉터리를 바꿉니다.\n" +" \n" +" 현재 디렉터리를 <디렉터리>로 바꿉니다. 기본 <디렉터리>는 HOME 셸 변수\n" +" 값입니다.\n" +" \n" +" CDPATH 변수에는 <디렉터리> 값이 들어간 디렉터리 검색 경로를 지정합니다.\n" +" CDPATH의 대안 디렉터리 이름은 콜론으로 구분합니다. 널 디렉터리 이름은 \n" +" 현재 디렉터리와 같습니다. <디렉터리> 값이 슬래시 문자(/)로 시작하면, \n" +" CDPATH 변수를 사용하지 않습니다.\n" +" \n" +" 디렉터리가 없고, `cdable_vars' 셸 옵션을 설정했다면, 단어를 변수 이름으로\n" +" 가정합니다. 변수에 값이 들어가있다면, 해당 값을 <디렉터리> 값으로 활용\n" +" 합니다.\n" +" \n" +" 옵션:\n" +" -L\t강제로 심볼릭 링크를 따라갑니다. <디렉터리>의 심볼릭 링크를\n" +" \t\t`..' 인스턴스를 처리한 다음에 해석합니다.\n" +" -P\t심볼릭 링크를 따르지 않고 실제 디렉터리 구조를 활용합니다.\n" +" \t\t`..' 인스턴스를 처리하기 전에 <디렉터리>의 심볼릭 링크를\n" +" \t\t해석합니다.\n" +" -e\t-P 옵션을 지정하고, 현재 디렉터리를 제대로 식별하지 못하면\n" +" \t\t0이 아닌 상태 값으로 나갑니다\n" +" -@\t이 옵션을 지원하는 시스템에서는 파일 속성이 들어간\n" +" \t\t디렉터리처럼 확장 속성을 가진 파일을 나타냅니다\n" +" \n" +" `-L' 옵션을 지정했을 때와 같이 심볼릭 링크를 따라가는게 기본 동작입니다.\n" +" `..'은 이전 경로 이름 요소를 즉시 제거하여 슬래시 경로로 돌아가거나\n" +" <디렉터리>의 시작점으로 돌아갑니댜.\n" +" \n" +" 종료 상태:\n" +" 디렉터리가 바뀌었고 -P 옵션을 사용했을 때 $PWD 값을 제대로 설정하면\n" +" 0 값을 반환하며, 그렇지 않으면 0이 아닌 값을 반환합니다." #: builtins.c:425 msgid "" @@ -2749,6 +2798,16 @@ msgid "" " Returns 0 unless an invalid option is given or the current directory\n" " cannot be read." msgstr "" +"현재 작업 디렉터리의 이름을 출력합니다.\n" +" \n" +" 옵션:\n" +" -L\t$PWD값의 이름이 현재 작업 디렉터리일 경우 값을 출력\n" +" -P\t심볼릭 링크가 아닌 물리 디렉터리를 출력\n" +" \n" +" 기본적으로 `pwd'에는 `-L' 옵션이 붙어있습니다.\n" +" \n" +" 종료 상태:\n" +" 적절한 옵션이 붙었거나 현재 디렉터리를 읽을 수 있다면 0을 반환합니다." #: builtins.c:442 msgid "" @@ -2761,7 +2820,7 @@ msgid "" msgstr "" "Null 명령.\n" " \n" -" 효과 없음; 아무것도 하지 않습니다.\n" +" 효과 없음. 아무것도 하지 않습니다.\n" " \n" " 종료 상태:\n" " 항상 성공합니다." @@ -2773,7 +2832,7 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" -"성공적인 결과를 반환합니다.\n" +"성공 결과를 반환합니다.\n" " \n" " 종료 상태:\n" " 항상 성공합니다." @@ -2785,19 +2844,17 @@ msgid "" " Exit Status:\n" " Always fails." msgstr "" -"실패한 결과를 반환합니다.\n" +"실패 결과를 반환합니다.\n" " \n" " 종료 상태:\n" " 항상 실패합니다." #: builtins.c:471 -#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke " -"commands\n" +" information about the specified COMMANDs. Can be used to invoke commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -2809,21 +2866,20 @@ msgid "" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -"간단한 명령을 실행하거나 명령에 관한 정보를 표시합니다..\n" +"간단한 명령을 실행하거나 명령 정보를 표시합니다.\n" " \n" -" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke " -"commands\n" -" on disk when a function with the same name exists.\n" +" 셸 함수 탐색을 억제하는 <인자>로 <명령>을 실행하거나, 지정 <명령>의 정보를\n" +" 나타냅니다. 동일한 이름을 가진 함수가 있을 때 디스크의 명령을 실행할 경우\n" +" 활용할 수 있습니다.\n" " \n" " 옵션:\n" -" -p 표준 유틸리티를 전부 찾을 수 있다고 보장된 PATH의\n" -" 기본 값을 사용합니다.\n" -" -v `type' 빌트인과 유사한 명령의 설명을 보여줍니다\n" -" -V 각 명령에 관해 더 상세한 정보를 보여줍니다\n" +" -p 표준 유틸리티를 전부 찾을 수 있다고 보장하는\n" +" PATH 기본값을 사용합니다.\n" +" -v `type' 내장 명령과 비슷하게 <명령>의 설명을 보여줍니다\n" +" -V 각 <명령>의 더 자세한 정보를 보여줍니다\n" " \n" " 종료 상태:\n" -" 명령의 실행 결과를 반환하거나 명령이 없을 경우 오류를 반환합니다." +" <명령>의 실행 결과를 반환하거나 <명령>이 없을 경우 오류를 반환합니다." #: builtins.c:490 msgid "" @@ -2858,14 +2914,50 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the " -"`local'\n" +" When used in a function, `declare' makes NAMEs local, as with the `local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or a variable\n" " assignment error occurs." msgstr "" +"변수 값과 속성을 설정합니다.\n" +" \n" +" 변수를 선언하고 속성을 부여합니다. <이름>을 정하지 않으면,\n" +" 속성과 모든 변수 값을 나타냅니다.\n" +" \n" +" 옵션:\n" +" -f\t함수 이름과 정의로 동작과 표시를 제한합니다\n" +" -F\t함수 이름만 표시를 제한합니다 (디버깅할 때는 행 번호와\n" +" \t\t소스 파일 포함)\n" +" -g\t셸 함수에서 사용할 때 전역 변수를 만듭니다. 아니면 무시\n" +" -I\t지역 변수를 만들 때, 이전 범위의 같은 이름을 가진 속성과\n" +" \t\t변수값을 이어받습니다\n" +" -p\t속성과 각 <이름>의 값을 표시합니다\n" +" \n" +" 속성을 설정하는 옵션:\n" +" -a\t<이름>을 색인 배열로 만듬 (지원할 경우)\n" +" -A\t<이름>을 연관 배열로 만듬 (지원할 경우)\n" +" -i\t<이름>을 `정수' 속성을 가지게 함\n" +" -l\t각 <이름>의 할당 값을 소문자로 변환\n" +" -n\t<이름> 값으로 지정한 이름을 참조하게 함\n" +" -r\t<이름>을 읽기 전용으로 설정\n" +" -t\t<이름>에 `trace' 속성을 가지게 함\n" +" -u\t각 <이름>의 할당 값을 대문자로 변환\n" +" -x\t<이름>을 내보냄\n" +" \n" +" 주어진 속성을 사용하려면 `+'를 끄려면 `-'를 사용합니다.\n" +" \n" +" 정수 속성 변수는 변수에 값을 할당하면 산술 연산을 수행\n" +" 합니다 (`let' 명령 참고).\n" +" \n" +" 함수에서 사용할 때, `declare' 명령은 `local' 명령처럼\n" +" <이름>을 로컬 변수로 만듭니다. `-g' 옵션은 이 동작을\n" +" 억제합니다.\n" +" \n" +" 종료 상태:\n" +" 적절한 옵션을 설정했거나 변수 할당 오류가 없다면\n" +" 성공을 반환합니다." #: builtins.c:532 msgid "" @@ -2891,13 +2983,23 @@ msgid "" " Returns success unless an invalid option is supplied, a variable\n" " assignment error occurs, or the shell is not executing a function." msgstr "" +"지역 변수를 지정합니다.\n" +" \n" +" <이름> 지역 변수를 만들고 <값>을 부여합니다. <옵션>은 `declare'\n" +" 로 받아들일 수 있는 어떤 옵션도 가능합니다.\n" +" \n" +" 지역 변수는 함수 내에서만 활용할 수 있습니다. 하위 요소에서 지정했다면,\n" +" 역시 하위 함수에서만 볼 수 있습니다.\n" +" \n" +" 종료 상태:\n" +" 적절한 옵션을 지정했거나, 변수 할당에 오류가 없거나,\n" +" 셸에서 함수를 실행하면 성공을 반환합니다." #: builtins.c:557 msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by " -"a\n" +" Display the ARGs, separated by a single space character and followed by a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -2921,16 +3023,43 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" -" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " -"HHHH.\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n" " \t\tHHHH can be one to four hex digits.\n" -" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " -"value\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n" " \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"표준 출력에 인자를 기록합니다.\n" +" \n" +" 단일 공백문자로 구분하며 개행 문자가 따라오는 <인자>를\n" +" 표준 출력에 나타냅니다.\n" +" \n" +" 옵션:\n" +" -n\t개행 문자 추가 안함\n" +" -e\t추가 백슬래시 탈출 문자 처리 활성\n" +" -E\t백슬래시 탈출 문자 처리를 명백하게 무시\n" +" \n" +" `echo' 명령은 다음 백슬래시 탈출 문자를 처리합니다:\n" +" \a\t경고 (알림음)\n" +" \\b\t백스페이스\n" +" \\c\t이후 출력 무시\n" +" \\e\t탈출 문자\n" +" \\E\t탈출 문자\n" +" \\f\t폼 피드\n" +" \\n\t개행 문자\n" +" \\r\t캐리지 리턴\n" +" \\t\t수평 탭\n" +" \\v\t수직탭\n" +" \\\\\t백슬래시\n" +" \\0nnn\t8진수 ASCII 코드 문자. NNN은 최대 3자리 8진수\n" +" \\xHH\t16진수 8비트 문자. HH는 2자리 16진수\n" +" \\uHHHH\t16진수 유니코드 문자. HHHH는 4자리 16진수\n" +" \\UHHHHHHHH 16진수 유니코드 문자. HHHHHHHH는 8자리 16진수\n" +" \n" +" 종료 상태:\n" +" 기록 오류가 없으면 성공을 반환합니다." #: builtins.c:597 msgid "" @@ -2944,6 +3073,15 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"표준 출력에 인자를 기록합니다.\n" +" \n" +" <인자> 값과 줄바꿈을 표준 출력에 나타냅니다.\n" +" \n" +" 옵션:\n" +" -n\t개행 문자 추가 안함\n" +" \n" +" 종료 상태:\n" +" 기록 오류가 없다면 성공을 반환합니다." #: builtins.c:612 msgid "" @@ -2971,18 +3109,47 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" +"셸 내장 명령을 사용 혹은 미사용처리 합니다.\n" +" \n" +" 내장 셸 명령을 사용/미사용 처리합니다. 미사용 처리하면 전체 경로 이름을\n" +" 지정하지 않고도 셸 내장명령처럼 동일한 이름을 가진 디스크 명령을 실행할\n" +" 수 있습니다\n" +" \n" +" 옵션:\n" +" -a\t내장 명령의 활성 여부를 나타내는 목록을 출력합니다\n" +" -n\t각 <이름>을 미사용 처리하거나 미사용 내장 명령 목록을 출력합니다\n" +" -p\t재활용 형식으로 내장 명령 목록을 출력합니다\n" +" -s\tPOSIX `특수' 내장 명령 이름만 출력합니다\n" +" \n" +" 동적 불러오기를 제어하는 옵션은 다음과 같습니다:\n" +" -f\t<파일이름> 공유 객체의 내장 <이름>을 불러옵니다\n" +" -d\t-f로 불러온 내장 명령을 제거합니다\n" +" \n" +" 옵션을 지정하지 않으면, 각 <이름>을 사용합니다.\n" +" \n" +" 셸 내장 버전 대신 $PATH에서 찾은 `test'를 활용하려면,\n" +" `enable -n test'를 입력하십시오.\n" +" \n" +" 종료 상태:\n" +" <이름>이 셸 내장 명령이고 오류가 없으면 성공을 반환합니다." #: builtins.c:640 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the " -"shell,\n" +" Combine ARGs into a single string, use the result as input to the shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" " Returns exit status of command or success if command is null." msgstr "" +"인자를 셸 명령으로 실행합니다.\n" +" \n" +" <인자>를 단일 문자열에 결합하여 셸 입력 결과로 할용한 다음,\n" +" 결과를 내는 명령으로 실행합니다.\n" +" \n" +" 종료 상태:\n" +" 명령 값이 있다면 종료 상태를, null 이라면 성공을 반환합니다." #: builtins.c:652 msgid "" @@ -3024,14 +3191,48 @@ msgid "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." msgstr "" +"옵션 인자를 해석합니다.\n" +" \n" +" getopts는 위치 매개변수를 옵션으로 해석하는 셸 프로시저에서\n" +" 활용합니다.\n" +" \n" +" <옵션문자열>에는 식별할 옵션 문자가 들어갑니다. 문자에 콜론이\n" +" 뒤따라 붙을 경우, 옵션에 공백 문자로 구분한 인자가 뒤따라오는\n" +" 것으로 간주합니다.\n" +" \n" +" 실행할 때마다, getopts에서 $name 셸 변수의 다음 옵션을 확인하여\n" +" 해당 옵션이 없을 경우 이름을 초기화하고 OPTIND 셸 변수에 다음\n" +" 인자의 색인을 처리합니다. OPTIND는 셸 또는 셸 스크립트를 실행\n" +" 할 때마다 1로 초기화합니다. 옵션에 인자가 필요하면, getopts에서\n" +" 해당 인자를 OPTARG 셸 변수에 넣습니다.\n" +" \n" +" getopts는 두가지 방법으로 오류를 나타냅니다. OPTSTRING의 첫번째\n" +" 문자가 콜론이면, getopts에서는 오류 보고시 조용한 상태로 바뀝니다.\n" +" 이 때, 어떤 오류 메시지도 나타나지 않습니다. 그런데 부적절한 옵션이\n" +" 나타나면, getopts에서 OPTARG의 잘못된 옵션 문자를 찾아 가리킵니다.\n" +" 필요한 인자가 없다면, getopts는 콜론을 <이름>에 대입하고, OPTARG \n" +" 변수에는 찾은 옵션 문자를 할당합니다. getopts가 미출력 상태가 아니고,\n" +" 부적절한 옵션을 확인했다면, getopts는 '?' 값을 <이름>에 대입하고, \n" +" OPTARG 설정을 해제합니다. 필요한 인자가 없다면 '?' 값이 <이름>에\n" +" 들어가고, OPTARG 변수 설정을 해제하며, 진단 메시지를 출력합니다.\n" +" \n" +" OPTERR 셸 변수값이 0이면, getopts에서는 오류 메시지 출력을 하지\n" +" 않습니다. OPTSTRING 첫번째 문자가 콜론이 아니더라도, 기본적으로\n" +" OPTERR 셸 변수값에는 1이 들어가 있습니다.\n" +" \n" +" getopts는 보통 위치 매개변수를 해석하지만, <인자> 값처럼 인자를\n" +" 지정하면, 해당 값을 먼저 해석합니다.\n" +" \n" +" 종료 상태:\n" +" 옵션을 찾으면 성공을 반환합니다.옵션의 끝에 도달했거나, 오류가\n" +" 나타나면 실패를 반환합니다." #: builtins.c:694 msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " -"specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3039,14 +3240,28 @@ msgid "" " -c\texecute COMMAND with an empty environment\n" " -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, " -"unless\n" +" If the command cannot be executed, a non-interactive shell exits, unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error " -"occurs." +" Returns success unless COMMAND is not found or a redirection error occurs." msgstr "" +"셸을 주어진 명령으로 대체합니다.\n" +" \n" +" 이 셸을 지정 프로그램으로 대체하는 <명령>을 실행합니다.\n" +" <인자>는 <명령>을 따라갑니다. <명령>을 지정하지 않으면,\n" +" 현재 셸의 어떤 방향재지정 명령이든 결과가 나타납니다.\n" +" \n" +" 옵션:\n" +" -a <이름>\t<이름>을 <명령>의 0번째 인자로 전달합니다\n" +" -c\t빈 환경에서 <명령>을 실행합니다\n" +" -l\t<명령>의 0번째 인자로 대시 문자를 둡니다\n" +" \n" +" 명령을 실행할 수 없다면, `execfail' 셸 옵션을 설정하지 않았을 경우,\n" +" 비대화식 셸을 나갑니다.\n" +" \n" +" 종료 상태:\n" +" <명령>이 있거나 방향재지정 실행시 오류가 없다면 성공을 반환합니다." #: builtins.c:715 msgid "" @@ -3055,33 +3270,34 @@ msgid "" " Exits the shell with a status of N. If N is omitted, the exit status\n" " is that of the last command executed." msgstr "" +"셸을 나갑니다.\n" +" \n" +" <번호> 값 상태로 셸을 나갑니다. <번호>를 지정하지 않으면,\n" +" 종료 상태는 최종 명령 실행 상태와 동일합니다." #: builtins.c:724 msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not " -"executed\n" +" Exits a login shell with exit status N. Returns an error if not executed\n" " in a login shell." msgstr "" -"로그인 쉘을 나갑니다.\n" +"로그인 셸을 나갑니다.\n" " \n" -" 종료 상태 N으로 로그인 쉘을 나갑니다. 로그인 쉘에서 실행되지 않는 경우\n" +" 종료 상태 N으로 로그인 셸을 나갑니다. 로그인 셸에서 실행되지 않는 경우\n" " 에러가 발생합니다." #: builtins.c:734 msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history " -"list.\n" +" fc is used to list or edit and re-execute commands from the history list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then " -"EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -3095,9 +3311,30 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error " -"occurs." +" Returns success or status of executed command; non-zero if an error occurs." msgstr "" +"기록 목록의 명령을 표시하거나 실행합니다.\n" +" \n" +" fc는 기록 목록의 명령을 보여주거나 편집하고 다시 실행할 때 사용합니다.\n" +" <처음>과 <종결>은 범위 지정 숫자이며, <처음>은 문자열일 수도 있습니다.\n" +" 이는, 최근 명령이 <처음>에 지정한 문자열로 시작함을 의미합니다.\n" +" \n" +" 옵션:\n" +" -e <편집기이름>\t사용할 편집기를 선택합니다. 기본은 FCEDIT, EDITOR, \n" +" \t\t그 다음은 vi입니다\n" +" -l \t편집하지 않고 목록 행을 보여줍니다\n" +" -n\t목록을 나타낼 때 번호를 생략합니다\n" +" -r\t행 순서를 뒤집습니다 (최신 항목을 먼저)\n" +" \n" +" `fc -s [<패턴>=<대체> ...] [<명령>]' 형식에서, <명령> 은\n" +" <이전>=<최신> 대체 동작을 수행한 다음 다시 실행합니다.\n" +" \n" +" r='fc -s'(으)로 쓸만한 별칭을 만들어 쓸 수 있는데, `r cc'를 입력하면\n" +" `cc'로 시작하는 최근 명령을 실행하고 `r'을 입력하면 직전에 입력한\n" +" 최근 명령을 다시 실행할 수 있습니다.\n" +" \n" +" 종료 상태:\n" +" 성공 또는 실행 명령 상태를 반환합니다. 오류가 있다면 0이 아닌 값을 반환합니다." #: builtins.c:764 msgid "" @@ -3110,28 +3347,41 @@ msgid "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." msgstr "" +"작업을 포그라운드로 이동합니다.\n" +" \n" +" JOB_SPEC으로 식별하는 작업을 포그라운드에 두어, 현재 작업으로\n" +" 전환합니다. JOB_SPEC이 현재 작업이 아니면, 셸의 개념상 현재 작업을\n" +" 활용합니다.\n" +" \n" +" 종료 상태:\n" +" 포그라운드에 있는 명령의 상태를 반환합니다. 오류가 있다면 실패를 반환합니다." #: builtins.c:779 msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if " -"they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's " -"notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"작업을 백그라운드로 이동합니다.\n" +" \n" +" `&'로 시작했을 때와 마찬가지로, 각 JOB_SPEC으로 식별하는 작업을\n" +" 백그라운드에 둡니다. JOB_SPEC이 없다면, 셸의 개념상 현재 작업을\n" +" 활용합니다.\n" +" \n" +" 종료 상태:\n" +" 작업 컨트롤이 있고 오류가 없다면 성공을 반환합니다." #: builtins.c:793 msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is " -"displayed.\n" +" no arguments are given, information about remembered commands is displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3148,6 +3398,24 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" +"프로그램 위치를 기억하거나 표시합니다.\n" +" \n" +" 명령 <이름>의 전체 경로 이름을 판단하거나 기억합니다. 어떤 인자도\n" +" 설정하지 않으면, 기억한 명령의 정보를 표시합니다.\n" +" \n" +" 옵션:\n" +" -d\t각 <이름>의 기억 위치를 소거합니다\n" +" -l\t입력으로 재활용할 형식을 표시합니다\n" +" -p <경로이름>\t<이름> 의 전체 경로 이름으로 <경로이름>을 활용합니다\n" +" -r\t기억한 모든 위치를 소거합니다\n" +" -t\t각 <이름>의 기억 위치를 출력하며 여러 <이름>을 지정했을 경우,\n" +" \t\t<이름>에 해당하는 각 위치를 우선 나타냅니다\n" +" 인자:\n" +" <이름>\t각 <이름>은 $PATH에서 검색하며 기억 명령에 대해 목록에\n" +" \t\t추가합니다.\n" +" \n" +" 종료 상태:\n" +" <이름>을 찾았거나 적절한 옵션을 지정했다면 성공을 반환합니다." #: builtins.c:818 msgid "" @@ -3167,9 +3435,24 @@ msgid "" " PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is " -"given." +" Returns success unless PATTERN is not found or an invalid option is given." msgstr "" +"내장 명령 정보를 표시합니다.\n" +" \n" +" 내장 명령 요약 정보를 표시합니다. <패턴>을 지정하면 <패턴>에 일치\n" +" 하는 모든 명령의 자세한 내용을 나타내며, 그렇지 않으면 도움말 주제 \n" +" 목록을 나타냅니다.\n" +" \n" +" 옵션:\n" +" -d\t각 주제의 간단한 설명을 출력합니다\n" +" -m\t유사 맨 페이지 형식으로 사용법을 출력합니다.\n" +" -s\t<패턴>에 일치하는 주제의 간단한 개요만 출력합니다\n" +" \n" +" 인자:\n" +" <패턴>\t도움말 주제를 지정합니다\n" +" \n" +" 종료 상태:\n" +" <패턴>에 일치하는 주제를 찾았거나 적절한 옵션을 지정하면 성공을 반환합니다." #: builtins.c:842 msgid "" @@ -3199,12 +3482,41 @@ msgid "" " \n" " If the HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed " -"otherwise.\n" +" with each displayed history entry. No time stamps are printed otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" +"기록 목록을 표시하거나 편집합니다.\n" +" \n" +" 기록 목록에 행번호를 붙여 나타내며, 수정한 항목은 `*' 표시가\n" +" 앞에 붙습니다. 인자 N은 최근 항목 N개만 나타냄을 의미합니다.\n" +" \n" +" 옵션:\n" +" -c\t모든 항목을 삭제하여 기록 목록을 지웁니다\n" +" -d <오프셋>\t<오프셋> 포지션에 있는 항목을 삭제합니다. 음수\n" +" \t\t오프셋은 기록 목록 끝부터 거꾸로 셉니다\n" +" \n" +" -a\t이 세선의 기록 파일에 기록 행을 추가합니다\n" +" -n\t기록 파일에서 이미 읽은 부분은 읽지 않고 모든 기록 항목을\n" +" \t\t읽어 기록 목록에 추가합니다\n" +" -r\t기록 파일을 읽고 기록 목록에 내용을 추가합니다\n" +" -w\t현재 기록을 기록 파일에 기록합니다\n" +" \n" +" -p\t각 <인자>의 기록 확장을 수행한 후 기록 목록에 저장하지\n" +" \t\t않고 결과를 표시합니다\n" +" -s\t<인자>를 기록 목록에 단일 항목으로 추가합니다\n" +" \n" +" <파일이름>을 지정하면 기록 파일로 사용합니다. 아니면,\n" +" HISTFILE 변수에 값을 지정했다면 해당 값을 사용하고, \n" +" 아니면 ~/.bash_history를 활용합니다.\n" +" \n" +" HISTTIMEFORMAT 변수에 값을 설정하여 널 상태가 아니라면 해당 값을\n" +" 앞으로 표시할 각 기록 항목에 대한 타임스탬프를 출력할 때 strftime(3)의\n" +" 형식 문자열로 활용합니다. 그렇지 않으면 타임스탬프를 출력하지 않습니다.\n" +" \n" +" 종료 상태:\n" +" 적절한 옵션을 설정했거나 오류가 없다면 성공을 반환합니다." #: builtins.c:879 msgid "" @@ -3229,6 +3541,25 @@ msgid "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." msgstr "" +"작업 상태를 표시합니다.\n" +" \n" +" 활성 작업을 나타냅니다. JOBSPEC에는 해당 작업의 출력을\n" +" 제한합니다. 옵션을 지정하지 않으면 모든 활성 작업 상태를\n" +" 나타냅니다.\n" +" \n" +" 옵션:\n" +" -l\t일반 정보 및 프로세스 ID를 보여줍니다.\n" +" -n\t최근 알림 이후 상태가 바뀐 프로세스만 보여줍니다.\n" +" -p\t프로세스 ID만 보여줍니다\n" +" -r\t출력 대상을 실행 작업으로 제한합니다\n" +" -s\t출력 대상을 멈춘 작업으로 제한합니다\n" +" \n" +" -x 옵션을 지정하면 <인자>에 나타난 모든 작업 명세가 프로세스 그룹의\n" +" 리더 프로세스 ID로 바뀐 후 <명령> 을 실행합니다.\n" +" \n" +" 종료 상태:\n" +" 적절한 옵션을 설정했거나 오류가 없다면 성공을 반환합니다.\n" +" -x 옵션을 사용했다면 <명령>의 종료 상태를 반환합니다." #: builtins.c:906 msgid "" @@ -3246,6 +3577,19 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" +"현재 셸에서 작업을 제거합니다.\n" +" \n" +" 각 인자를 활성 작업 테이블에서 제거합니다. 어떤 도\n" +" 지정하지 않으면, 현재 작업을 지정한 것으로 간주합니다.\n" +" \n" +" 옵션:\n" +" -a\t를 지정하지 않으면 모든 작업을 제거합니다\n" +" -h\t각 을 마킹해서 셸에서 SIGHUP 시그널을 받았다면\n" +" \t\t작업에 해당 시그널을 보내지 않게 합니다.\n" +" -r\t실행 작업만 제거합니다\n" +" \n" +" 종료 상태:\n" +" 적절한 옵션을 지정하고 주어진 값이 올바를 경우 성공을 반환합니다." #: builtins.c:925 msgid "" @@ -3269,6 +3613,25 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" +"작업에 시그널을 보냅니다..\n" +" \n" +" 또는 으로 식별하는 프로세스에 SIGSPEC 또는\n" +" SIGNUM으로 이름이 붙은 시그널을 보냅니다. SIGSPEC, SIGNUM \n" +" 돌 다 없을 경우, SIGTERM을 고려합니다.\n" +" \n" +" 옵션:\n" +" -s <시그널>\t<시그널>은 시그널 이름입니다\n" +" -n <시그널>\t<시그널>은 시그널 번호입니다\n" +" -l\t시그널 이름 목록을 나타냅니다. 인자에 `-l'을 붙이면 나타낼 이름에\n" +" \t\t대한 시그널 번호를 나타내라는 의미입니다\n" +" -L\t-l과 동일한 의미\n" +" \n" +" 두가지 이유로 kill은 셸 내장 명령입니다: 프로세스 ID 대신 작업 ID를\n" +" 허용하며, 만들 수 있는 프로세스 수의 한계에 도달했을 때 강제로 끝내야\n" +" 할 프로세스를 강제로 끝낼 수 있습니다.\n" +" \n" +" 종료 상태:\n" +" 적절한 옵션을 설정했거나 오류가 없다면 성공을 반환합니다." #: builtins.c:949 msgid "" @@ -3277,8 +3640,7 @@ msgid "" " Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" " fixed-width integers with no check for overflow, though division by 0\n" " is trapped and flagged as an error. The following list of operators is\n" -" grouped into levels of equal-precedence operators. The levels are " -"listed\n" +" grouped into levels of equal-precedence operators. The levels are listed\n" " in order of decreasing precedence.\n" " \n" " \tid++, id--\tvariable post-increment, post-decrement\n" @@ -3314,22 +3676,57 @@ msgid "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" +"산술 연산을 처리합니다.\n" +" \n" +" 각 <인자>의 산술 연산을 처리합니다. 오버플로우를 검사하지 않고\n" +" 고정 길이 정수로 처리하며, 0나누기 동작은 잡혀서 오류로 표시합니다.\n" +" 다음 연산자 목록은 동일한 우선순위별로 묶었습니다. 우선순위 수준은\n" +" 우선순위가 감소하는 순서대로 나열했습니다.\n" +" \n" +" \tid++, id--\t변수의 후위 증가, 후위 감소\n" +" \t++id, --id\t변수의 전위 증가, 전위 감소\n" +" \t-, +\t\t음, 양 부호\n" +" \t!, ~\t\t논리, 비트 반전\n" +" \t**\t\t지수 연산\n" +" \t*, /, %\t\t곱하기, 나누기, 나머지\n" +" \t+, -\t\t더하기, 빼기\n" +" \t<<, >>\t\t좌측, 우측 비트 이동\n" +" \t<=, >=, <, >\t비교\n" +" \t==, !=\t\t동등, 상이\n" +" \t&\t\t비트 논리곱\n" +" \t^\t\t비트 배타합\n" +" \t|\t\t비트 논리합\n" +" \t&&\t\t논리 논리곱\n" +" \t||\t\t논리 논리합\n" +" \t<수식> ? <수식> : <수식>\n" +" \t\t\t3항 조건 연산자\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\t할당\n" +" \n" +" 셸 변수를 피연산자로 활용할 수 있습니다. 수식 내 변수 이름은 값으로 \n" +" 바뀝니다(고정 길이 정수로 강제 변환) 변수는 수식에서 활용할 정수 \n" +" 속성을 가질 필요는 없습니다.\n" +" \n" +" 연산자는 우선순위 순서대로 처리합니다. 괄호 내 하위 연산을 우선\n" +" 처리하며, 이 또한 위의 우선순위 규칙을 따릅니다.\n" +" \n" +" 종료 상태:\n" +" <인자>가 0을 계산하면 1을 반환하고 그렇지 않으면 0을 반환합니다." #: builtins.c:994 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with " -"word\n" +" if the -u option is supplied. The line is split into fields as with word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as " -"word\n" -" delimiters.\n" +" the last NAME. Only the characters found in $IFS are recognized as word\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY " -"variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -3341,8 +3738,7 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" " \t\tNCHARS characters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, " -"unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" " \t\tEOF is encountered or read times out, ignoring any\n" " \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" @@ -3360,14 +3756,48 @@ msgid "" " -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times " -"out\n" -" (in which case it's greater than 128), a variable assignment error " -"occurs,\n" +" The return code is zero, unless end-of-file is encountered, read times out\n" +" (in which case it's greater than 128), a variable assignment error occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" +"표준 입력에서 행을 읽고 필드 단위로 분리합니다.\n" +" \n" +" 표준 입력 또는 -u 옵션을 지정했을 경우 파일 서술자에서 단일 행을\n" +" 읽습니다. 행은 단어를 분리할 때처럼 필드로 분리하며, 첫번째 단어는\n" +" 처음 <이름>으로, 두번째 단어는 두번째 <이름>으로 이런 식으로 할당\n" +" 하여 나머지 단어에서도 역시 그 다음 <이름>으로 할당합니다. 오직 $IFS\n" +" 의 문자만 단어 구분자로 인식합니다. 기본적으로 백슬래시 문자는 구분\n" +" 문자와 개행 문자를 이스케이핑합니다.\n" +" \n" +" <이름>을 지정하지 않으면, 해당 행을 REPLY 변수에 저장합니다.\n" +" \n" +" 옵션:\n" +" -a <배열>\t0부터 시작하는 ARRAY 배열 변수의 순차 색인을 읽을\n" +" \t\t단어를 할당합니다\n" +" -d <구분>\t개행 문자가 아닌 DELIM의 첫 글자를 읽을 때까지 계속합니다\n" +" -e\t행 읽기에 readline을 활용합니다\n" +" -i <텍스트>\treadline 초기 텍스트 값으로 TEXT를 활용합니다.\n" +" -n <문자수>\t개행 문자를 기다리기 보다는 <문자수> 만큼의 문자를 읽은 다음\n" +" \t\t반환합니다만, 구분 문자가 나타나기 전에 <문자수> 만큼 읽었을 때 개행 문자가\n" +" \t\t먼저 오면 구분 문자보다 개행 문자를 우선 처리합니다.\n" +" -N <문자수>\tEOF가 나타났거나, 읽기 시간 초과가 있지 않은 한,\n" +" \t\t<문자수> 만큼 문자를 읽은 다음 구분자를 무시하고 값을 반환합니다.\n" +" -p <프롬프트>\t읽기 전, 개행 문자를 제외하고 PROMPT 문자열을 출력합니다\n" +" -r\t문자를 이스케이핑하는 백슬래시 문자를 허용하지 않습니다\n" +" -s\t터미널의 입력에 대해 반향 출력 처리하지 않습니다\n" +" -t <제한시간>\tTIIMEOUT 초 이내에 입력 행을 완전히 읽지 않으면 실패를\n" +" \t\t반환합니다. TMOUT 변수 기본 값은 기본 제한시간입니다. TIMEOUT은\n" +" \t\t분수 값입니다. 이 값을 0으로 지정하면, 어떤 결과를 읽으려 시도하지 않고\n" +" \t\t읽은 결과를 바로 반환하며, 지정 파일 서술자에 입력이 있을 경우에만\n" +" \t\t성공을 반환합니다. 시간을 초과하면 종료 상태값은 128보다 큽니다.\n" +" -u <파일서술자>\t표준 입력 대신 파일 서술자에서 읽습니다.\n" +" \n" +" 종료 상태:\n" +" EOF가 나타나지 않았다거나, 읽기 시간을 초과하지 않았다거나(초과하면 \n" +" 128보다 큰 수 반환), 변수 할당 오류가 없었다거나, -u 옵션에 잘못된 파일\n" +" 서술자를 지정하지 않았다면 0 값을 반환합니다." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3378,8 +3808,17 @@ msgid "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." msgstr "" +"셸 함수로부터 값을 반환합니다.\n" +" \n" +" 함수 또는 소싱 스크립트로 하여금 반환 값을 내놓도록 합니다.\n" +" <횟수>로 지정합니다. <횟수> 값을 생략하면, 반환 상태는\n" +" 스크립트 함수 내 최종 명령 실행 결과에 따릅니다.\n" +" \n" +" 종료 상태:\n" +" <횟수>를 반환하거나, 셸에서 함수 또는 스크립트를\n" +" 실행하지 않으면 실패를 반환합니다." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3422,8 +3861,7 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero " -"status\n" +" or zero if no command exited with a non-zero status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -3447,8 +3885,7 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG and RETURN traps are inherited by shell " -"functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3464,8 +3901,84 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" +"셸 옵션과 위치 매개변수를 설정 또는 설정 해제합니다.\n" +" \n" +" 셸 속성 값 및 위치 매개변수를 바꾸거나, 셸 변수의 이름과 값을\n" +" 표시합니다.\n" +" \n" +" 옵션:\n" +" -a 환경으로 내보내려 수정하거나 만든 변수를 표시합니다.\n" +" -b 작업 중단 알림을 즉시 수행.\n" +" -e 명령이 0 값이 아닌 상태를 내보냈다면 즉시 나감.\n" +" -f 파일 이름 생성 사용 안힘(글로빙).\n" +" -h 찾은 명령 위치 기억.\n" +" -k 명령 이름에 앞선 요소 뿐만 아니라 명령 실행에 필요한 모든\n" +" 할당 인자를 환경에 설정합니다.\n" +" -m 작업 컨트롤을 활성합니다..\n" +" -n 명령은 읽되 실행하지는 않습니다.\n" +" -o <명령-이름>\n" +" <옵션-이름>과 관련한 변수를 설정합니다:\n" +" allexport -a와 동일\n" +" braceexpand -B와 동일\n" +" emacs 이맥스 방식 행 편집 인터페이스 활용\n" +" errexit -e와 동일\n" +" errtrace -E와 동일\n" +" functrace -T와 동일\n" +" hashall -h와 동일\n" +" histexpand -H와 동일\n" +" history 명령 기록 사용\n" +" ignoreeof EOF를 읽고 나서 셸을 나가지 않음\n" +" interactive-comments\n" +" interactive commands에 나타난 주석 허용\n" +" keyword -k와 동일\n" +" monitor -m과 동일\n" +" noclobber -C와 동일\n" +" noexec -n과 동일\n" +" noglob -f와 동일\n" +" nolog 현재 허용하나 무시함\n" +" notify -b와 동일\n" +" nounset -u와 동일\n" +" onecmd -t와 동일\n" +" physical -P와 동일\n" +" pipefail 파이프라인 반환 값은 최종 명령의 0이 아닌\n" +" 종료 상태이거나, 0이 아닌 종료 상태를 반환한 명령이\n" +" 없다면 0 값을 반환함\n" +" posix 배시 동작을 바꾸어 POSIX 표준과 다른 기본 동작\n" +" 부분을 표준에 맞춤\n" +" privileged -p와 동일\n" +" verbose -v와 동일\n" +" vi vi 방식 행 종결 인터페이스\n" +" xtrace -x와 동일\n" +" -p 실제 ID와 효력상 ID가 일치하지 않을 때라도 켭니다.\n" +" $ENV 파일의 처리와 셸 함수 가져오기 동작을 끕니다.\n" +" 이 옵션을 끄면 효력상 사용자 ID와 그룹 ID를 실제\n" +" 사용자 ID와 그룹 ID로 설정합니다.\n" +" -t 명령하나를 읽고 실행한 후 나갑니다.\n" +" -u 설정 해제한 변수를 대체할 때 오류로 간주.\n" +" -v 셸 입력 행을 읽는대로 출력합니다.\n" +" -x 명령과 인자를 실행하는 대로 출력합니다.\n" +" -B 셸에 중괄호 확장을 수행하게 합니다\n" +" -C 이 옵션을 설정하면, 기존 일반 파일에 출력 방향 재지정을 통한\n" +" 내용 덮어쓰기를 허용하지 않습니다.\n" +" -E 이 옵션을 설정하면, ERR 트랩을 셸 함수에서 승계합니다.\n" +" -H ! 방식 기록 대체를 활성화합니다. 이 플래그는 셸이 대화모드일 떄\n" +" 기본적으로 사용 상태입니다..\n" +" -P 이 옵션을 설정하면, 현재 디렉터리를 바꾸는 cd 명령과 같은 그련\n" +" 명령을 실행할 때 심볼릭 링크를 해석하지 않습니다.\n" +" -T 이 옵션을 설정하면, DEBUG와 RETURN을 셸 함수에서 계승합니다..\n" +" -- 남은 인자를 위치 매개변수로 할당합니다. 남은 인자가 없으면\n" +" 위치 매개변수를 삭제합니다.\n" +" - 남은 인자를 위치 매개변수로 할당합니다. -x 옵션과 -v 옵션을 끕니다.\n" +" \n" +" 플래그를 사용하려면 + 를, 아니면 - 기호를 씁니다. 플래그는 셸 실행애\n" +" 활용할 수도 있습니다. 현재 플래그 셋은 $-에 있습니다. 남은 <인자>는\n" +" $1, $2, ... $n 순으로 할당한 위치 매개변수입니다. 지정 <인자>가 없으면\n" +" 모든 셸 변수를 출력합니다.\n" +" \n" +" 종료 상태:\n" +" 적절한 옵션을 지정하면 성공을 반환합니다." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3477,8 +3990,7 @@ msgid "" " -n\ttreat each NAME as a name reference and unset the variable itself\n" " \t\trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that " -"fails,\n" +" Without options, unset first tries to unset a variable, and if that fails,\n" " tries to unset a function.\n" " \n" " Some variables cannot be unset; also see `readonly'.\n" @@ -3486,14 +3998,30 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" +"셸 변수와 함수의 값과 속성 설정을 해제합니다.\n" +" \n" +" 각 <이름>에 대해 관련 변수 또는 함수를 제거합니다.\n" +" \n" +" 옵션:\n" +" -f\t각 <이름>을 셸 함수로 취급합니다.\n" +" -v\t각 <이름>을 셸 변수로 취급합니다.\n" +" -n\t각 <이름>을 이름 참조자로 활용하며, 이름을 참조하는 변수가 아닌\n" +" \t\t변수 자체를 참조하는 이름 설정을 해제합니다\n" +" \n" +" 옵션을 지정하지 않으면, 변수를 우선 설정 해제하려고 하며, 실패했다면,\n" +" 함수 설정 해제를 시도합니다.\n" +" \n" +" 일부 변수는 설정을 해제할 수 없습니다. `readonly' 참조.\n" +" \n" +" 종료 상태:\n" +" 적절한 옵션을 지정했거나 <이름>이 읽기 전용이 아니면 성공을 반환합니다." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before " -"exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -3505,8 +4033,22 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"셸 변수 속성을 내보내기 설정합니다.\n" +" \n" +" 각 <이름>은 명령을 계속 실행해나가면서 환경에 내보내기(export)처리 합니다.\n" +" <값>을 지정했다면 내보내기(export) 전, <값>을 할당합니다.\n" +" \n" +" 옵션:\n" +" -f\t셸 함수를 참조합니다\n" +" -n\t각 <이름>의 내보내기 속성을 제거합니다\n" +" -p\t환경에 내보낸 변수와 함수 목록을 나타냅니다\n" +" \n" +" `--' 인자는 이후 옵션 처리를 막습니다.\n" +" \n" +" 종료 상태:\n" +" 적절한 옵션을 설정했거나 <이름>이 올바르면 성공을 반환합니다." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3526,8 +4068,25 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"셸 변수를 바꾸지 못하게 합니다.\n" +" \n" +" 각 <이름>을 읽기 전용으로 만듭니다. 이 <이름>의 값은 앞으로의 할당\n" +" 동작에서 바뀌지 않습니다. <값>을 지정했다면 읽기 전용으로 지정하기 전\n" +" <값>부터 할당합니다.\n" +" \n" +" 옵션:\n" +" -a\t색인 배열 변수를 참조합니다\n" +" -A\t연관 배열 변수를 참조합니다\n" +" -f\t셸 함수를 참조합니다\n" +" -p\t-f 옵션의 지정 여부에 따라 모든 읽기 전용 변수\n" +" \t\t또는 함수를 표시합니다\n" +" \n" +" `--' 인자는 이후 옵션 처리를 중단합니다.\n" +" \n" +" 종료 상태:\n" +" 적절한 옵션을 지정했거나 <이름>이 올바르면 성공을 반환합니다." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -3537,8 +4096,15 @@ msgid "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." msgstr "" +"위치 매개변수를 이동합니다.\n" +" \n" +" <초기횟수> 값을 지정하지 않으면 , $<초기횟수>+1, $<초기횟수>+2,\n" +" ... $1, $2 ... 로 위치 매개변수 이름을 바꾸며, <초기횟수> 값은 1로 가정합니다.\n" +" \n" +" 종료 상태:\n" +" <횟수>가 양수거나 $# 보다 작거나 같으면 성공을 반환합니다." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3551,8 +4117,17 @@ msgid "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." msgstr "" +"현재 셸의 파일에서 명령을 실행합니다.\n" +" \n" +" 현제 셸의 <파일이름>에서 명령을 읽고 실행합니다. $PATH 항목은 <파일\n" +" 이름>에 있는 디렉터리를 찾을 때 활용합니다. <인자>를 지정했다면, \n" +" <파일이름>을 실행할 때 위치 매개 변수가 따라옵니다.\n" +" \n" +" 종료 상태:\n" +" <파일이름>의 마지막 명령 실행 상태를 반환합니다. <파일이름>을\n" +" 읽지 못하면, 실패를 반환합니다." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -3565,19 +4140,18 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" -"쉘 실행을 일시정지합니다.\n" +"셸 실행을 잠시 멈춥니다.\n" " \n" -" SIGCONT 신호를 받을 때 까지 쉘의 실행을 일시 정지합니다.\n" -" 강제 옵션이 없는 경우 로그인 쉘은 일시 정지될 수 없습니다.\n" +" SIGCONT 시그널를 받을 때 까지 셸의 실행을 일시 정지합니다.\n" +" 강제 옵션이 없는 경우 로그인 셸은 일시 정지될 수 없습니다.\n" " \n" " 옵션:\n" -" -f\t로그인 쉘의 경우에도 일시 정지를 강제합니다.\n" +" -f\t로그인 셸의 경우에도 일시 정지를 강제합니다.\n" " \n" " 종료 상태:\n" -" job control이 활성화되지 않았거나 오류가 발생하지 않으면 성공을 반환합니" -"다." +" 작업 컨트롤이 동작하거나 오류가 없으면 성공을 반환합니다." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3611,8 +4185,7 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last " -"read.\n" +" -N FILE True if the file has been modified since it was last read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -3633,8 +4206,7 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 " -"lexicographically.\n" +" True if STRING1 sorts before STRING2 lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -3659,33 +4231,118 @@ msgid "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." msgstr "" +"조건식을 처리합니다.\n" +" \n" +" <표현식>의 계산 결과에 따라 0(참) 또는 1(거짓) 상태 값을\n" +" 내며 빠져나옵니다. 수식은 단항 수식 또는 이항 수식일 수 있습니다.\n" +" 단항 수식은 보통 파일 상태를 확인할 때 사용합니다. 숫자 비교 \n" +" 연산자와 마찬가지로 문자열 연산자도 있습니다.\n" +" \n" +" 테스트 동작은 인자 갯수에 따릅니다. 완전한 내용을 알아보려면,\n" +" 배시 설명서 페이지를 읽어보십시오.\n" +" \n" +" 파일 연산자:\n" +" \n" +" -a <파일> 파일이 있으면 참.\n" +" -b <파일> 블록 특수 파일이면 참.\n" +" -c <파일> 문자 특수 파일이면 참.\n" +" -d <파일> 파일이 디렉터리면 참.\n" +" -e <파일> 파일이 있으면 참.\n" +" -f <파일> 일반 파일이 있으면 참.\n" +" -g <파일> 파일이 그룹 ID 모음이면 참.\n" +" -h <파일> 파일이 심볼릭 링크면 참.\n" +" -L <파일> 파일이 심볼릭 링크면 참.\n" +" -k <파일> 파일에 `끈적이' 비트 설정이 있으면 참.\n" +" -p <파일> 파일이 명명 파이프면 참.\n" +" -r <파일> 파일을 읽을 수 잇으면 참.\n" +" -s <파일> 비아있지 않은 파일이 있으면 참.\n" +" -S <파일> 소켓 파일이면 참.\n" +" -t <파일서술자> <파일서술자>를 터미널에서 열면 참.\n" +" -u <파일> 파일이 사용자 ID 세트면 참.\n" +" -w <파일> 파일을 기록할 수 있으면 참.\n" +" -x <파일> 파일을 실행할 수 있으면 참.\n" +" -O <파일> 파일을 명백히 소유하면 참.\n" +" -G <파일> 파일을 명백시 소속 그룹에서 소유하면 참.\n" +" -N <파일> 파일을 읽은 후 수정했다면 참.\n" +" \n" +" <파일1> -nt <파일2> 파일1이 파일2보다 최신이면\n" +" (수정일자에 따라)참.\n" +" \n" +" <파일1> -ot <파일2> 파일2가 파일1보다 최신이면 참.\n" +" \n" +" <파일1> -ef <파일2> 파일1이 파일2의 하드링크라면 참.\n" +" \n" +" 문자열 연산자:\n" +" \n" +" -z <문자열> 문자열이 비었으면 참.\n" +" \n" +" -n <문자열>\n" +" <문자열> 문자열이 있으면 참.\n" +" \n" +" <문자열1> = <문자열2>\n" +" 문자열이 같으면 참.\n" +" <문자열1> != <문자열2>\n" +" 문자열이 다르면 참.\n" +" <문자열1> < <문자열2>\n" +" 문자열1이 문자열2보다 문자 순서상 먼저일 경우 참.\n" +" <문자열1> > <문자열2>\n" +" 문자열1이 문자열2보다 문자 순서상 나중일 경우 참.\n" +" \n" +" 기타 연산:\n" +" \n" +" -o <옵션> 셸 <옵션>을 사용할 수 있으면 참.\n" +" -v <변수> 셸 <변수>를 설정하면 참.\n" +" -R <변수> 셸 <변수>를 이름 참조로 설정하면 참.\n" +" \n" +" ! <표현식> 표현식이 거짓이면 참.\n" +" <표현식1> -a <표현식2> <표현식1>, <표현식2>가 모두 참이면 참.\n" +" <표현식1> -o <표현식2> <표현식1> 또는 <표현식2> 둘 중 하나가 참이면 참.\n" +" \n" +" <변수1> <연산자> <변수2> 산술 시험. <연산자>는 -eq, -ne,\n" +" -lt, -le, -gt, or -ge 중 하나.\n" +" \n" +" 산술 이진 연산자는 <인자1>과 <인자2>가 같거나, 다르거나, 작거나, 작고\n" +" 같거나, 크거나, 크고 같을 경우 참을 반환합니다\n" +" \n" +" 종료 상태:\n" +" <표현식>이 참이면 성공을 반환합니다. <표현식>이 거짓을 결과로 냈거나\n" +" 부적절한 인자를 대입하면 실패를 반환합니다." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" " This is a synonym for the \"test\" builtin, but the last argument must\n" " be a literal `]', to match the opening `['." msgstr "" +"조건식을 처리합니다.\n" +" \n" +" \"test\" 내장 명령의 동의 명령입니다만, 마지막 인자는 반드시\n" +" `]' 문자로 마무리하여 열기 괄호 `['와 일치해야합니다." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of " -"its\n" +" Prints the accumulated user and system times for the shell and all of its\n" " child processes.\n" " \n" " Exit Status:\n" " Always succeeds." msgstr "" +"프로세스 시간을 표시합니다.\n" +" \n" +" 셸의 사용자 및 시스템 누적 시간, 하위 프로세스의 누적 시간을\n" +" 나타냅니다.\n" +" \n" +" 종료 상태:\n" +" 항상 성공." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives " -"signals\n" +" Defines and activates handlers to be run when the shell receives signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -3694,37 +4351,60 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " -"If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " -"If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " -"a\n" -" script run by the . or source builtins finishes executing. A " -"SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause " -"the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" +" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands " -"associated\n" +" If no arguments are supplied, trap prints the list of commands associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal " -"number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is " -"given." +" Returns success unless a SIGSPEC is invalid or an invalid option is given." msgstr "" +"시그널과 기타 이벤트를 잡습니다.\n" +" \n" +" 셸에서 시그널 또는 기타 상태를 받았을 때 실행할 핸들러를 지정하고 활성\n" +" 상태로 전환합니다.\n" +" \n" +" <인자>는 <시그널명세>의 시그널을 셸에서 받았을 때 읽고 실행할 명령\n" +" 입니다. <인자>값이 빠지면 (그리고 단일 <시그널명세> 값을 지정하면)\n" +" 또는 값이 `-'으로 설정했다면, 각 지정 시그널을 원래 값으로 되돌립니다.\n" +" <인자>에 널 문자열이 들어갔다면, 각 <시그널명세> 값은 셸과 실행 명령\n" +" 에서 무시합니다.\n" +" \n" +" <시그널명세>가 EXIT(0) 이면 <인자>는 셸을 빠져나갈 떄 실행합니다.\n" +" <시그널명세>가 DEBUG면, 모든 단순 명령을 실행하기 전에 <인자>를\n" +" 실행 합니다. <시그널명세>가 RETURN이면, <인자>는 . 또는 원시 내장 \n" +" 명령 실행을 끝내는 셸 함수 또는 스크립트를 실행할 때마다 실행합니다.\n" +" <오류> <시그널명세> 는 -e 옵션을 넣었을 때, 셸을 빠져나오게 하는 \n" +" 명령 실패를 겪을 때마다 <인자>를 실행합니다.\n" +" \n" +" 어떤 인자도 지정하지 않으면 trap에서 각 시그널 별로 실행하는 명령\n" +" 목록을 출력합니다.\n" +" \n" +" 옵션:\n" +" -l\t시그널 이름과 관련 숫자 목록을 출력합니다\n" +" -p\t각 <시그널명세> 관련 처리 명령을 표시합니다\n" +" \n" +" 각 <시그널명세>는 에 지정한 시그널 이름이거나 시그널\n" +" 번호입니다. 시그널 이름은 대소문자 무관하며, SIG 접두사는 선택사항\n" +" 입니다. 시그널은 \"kill -signal $$\" 처럼 셸에 보낼 수 있습니다.\n" +" \n" +" 종료 상태:\n" +" 적절한 <시그널명세> 또는 옵션을 지정했다면 성공을 반환합니다." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -3750,16 +4430,37 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not " -"found." +" Returns success if all of the NAMEs are found; fails if any are not found." msgstr "" +"명령 형식 정보를 표시합니다.\n" +" \n" +" 각 <이름>에 대해 명령 이름으로 활용할 때 어떻게 해석하는지\n" +" 나타냅니다.\n" +" \n" +" 옵션:\n" +" -a\t<이름>이 들어간 모든 실행 파일 보관 위치를 나타냅니다.\n" +" \t\t별칭, 내장명령, 함수가 해당하며, `-p' 옵션은 사용하지\n" +" \t\t 말아야합니다.\n" +" -f\t셸 함수 찾기 동작을 멈춥니다\n" +" -P\t각 <이름>별로 별칭, 내장 명령, 함수로 해도 PATH 검색을 강제\n" +" \t\t시행하며, 실행 파일 디스크 이름을 반환합니다\n" +" -p\t실행할 디스크 파일 이름을 반환하거나 , `type -t <이름>'을\n" +" \t\t`file'로 반환하지 않으면 아무것도 반환하지 않습니다.\n" +" -t\t<이름>이 별칭, 셸 예약 단어, 셸 함수, 셸 내장 명령, 디스크 파일\n" +" \t\t 또는 없음 여부에 따라 `alias', `keyword', `function', `builtin',\n" +" \t\t `file', `' 중 하나를 반환합니다.\n" +" \n" +" 인자:\n" +" <이름>\t해석할 명령 이름.\n" +" \n" +" 종료 상태:\n" +" 모든 <이름>을 찾으면 성공을 반환, 그렇지 않으면 실패를 반환합니다." -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and " -"processes\n" +" Provides control over the resources available to the shell and processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -3803,8 +4504,52 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"셸 자원 제한을 조정합니다.\n" +" \n" +" 셸과 생성 프로세스를 제어하는 시스템에서 사용할 수 있는 자원의\n" +" 제어 전반을 제공합니다.\n" +" \n" +" 옵션:\n" +" -S\t`soft' 자원 제한을 활용합니다\n" +" -H\t`hard' 자원 제한을 활용합니다\n" +" -a\t현재 모든 제한 현황을 보고합니다\n" +" -b\t소켓 버퍼 킂기\n" +" -c\t생성 핵심 파일 최대 크기\n" +" -d\t프로세스 데이터 세그먼트 최대 크기\n" +" -e\t최대 스케쥴링 우선순위 (`nice')\n" +" -f\t셸과 하위 프로세스에서 작성한 파일의 최대 크기\n" +" -i\t최대 대기 시그널 수\n" +" -k\t프로세스에 할당한 커널 큐 최대 수\n" +" -l\t메모리에서 잠글 프로세스 최대 수\n" +" -m\t최대 점유 설정 크기\n" +" -n\t파일 서술자 개방 최대 갯수\n" +" -p\t파이프 버퍼 크기\n" +" -q\tPOSIX 메시지 큐 최대 바이트 단위 크기\n" +" -r\t최대 실시간 스케쥴링 우선순위\n" +" -s\t최대 스택 크기\n" +" -t\t초단위 최대 CPU 시간\n" +" -u\t최대 사용자 프로세스 수\n" +" -v\t가상 메모리 크기\n" +" -x\t최대 파일 잠금 수\n" +" -P\t가상 터미널 최대 갯수\n" +" -R\t블로킹 전 실시간 프로세스 최대 실행 가능 시간\n" +" -T\t최대 스레드 수\n" +" \n" +" 모든 플랫폼에서 모든 옵션을 활용할 수 있는건 아닙니다.\n" +" \n" +" <한계>값이 주어지면, 지정 자원의 새 값이 됩니다. `soft', `hard', \n" +" `unlimited' <한계> 값은 현재 soft 한계, hard 한계, 한계 없음을 각각\n" +" 의미합니다. 아니면, 지정 자원의 현재 값을 출력합니다. 옵션을 지정\n" +" 하지 않으면, -f 옵션을 설정한 걸로 간주합니다.\n" +" \n" +" 초 단위를 취급하는 -t 옵션과 512 바이트 단위로 증가하는 -p 옵션,\n" +" 그리고 크기를 갖지 않는 프로세스 수를 취급하는 -u 옵션을 제외하고,\n" +" 1024 바이트씩 값을 증가합니다.\n" +" \n" +" 종료 상태:\n" +" 옵션을 올바르게 설정했거나 오류가 없다면 성공을 반환합니다." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -3821,28 +4566,38 @@ msgid "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" +"파일 모드 마스크를 표시하거나 설정합니다.\n" +" \n" +" 사용자 파일 생성 마스크를 <모드>로 설정합니다. <모드>를 생략하면,\n" +" 마스크 현재 값을 출력합니다.\n" +" \n" +" <모드>를 숫자로 시작하면, 8진수로 해석합니다. 그렇지 않으면 chmod(1)\n" +" 에서 인식하는 심볼릭 모드 문자열이 됩니다.\n" +" \n" +" 웁션:\n" +" -p\t<모드>를 생략하면 입력으로 재활용할 형식으로 출력합니다\n" +" -S\t출력 심볼릭을 만듭니다. 그렇지 않으면 8진수로 출력합니다\n" +" \n" +" 종료 상태:\n" +" <모드>가 올바르거나 옵션을 적절하게 설정하면 성공을 반환합니다." -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for each process identified by an ID, which may be a process ID or " -"a\n" +" Waits for each process identified by an ID, which may be a process ID or a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" " status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" -" If the -n option is supplied, waits for a single job from the list of " -"IDs,\n" -" or, if no IDs are supplied, for the next job to complete and returns " -"its\n" +" If the -n option is supplied, waits for a single job from the list of IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns its\n" " exit status.\n" " \n" " If the -p option is supplied, the process or job identifier of the job\n" " for which the exit status is returned is assigned to the variable VAR\n" -" named by the option argument. The variable will be unset initially, " -"before\n" +" named by the option argument. The variable will be unset initially, before\n" " any assignment. This is useful only when the -n option is supplied.\n" " \n" " If the -f option is supplied, and job control is enabled, waits for the\n" @@ -3853,23 +4608,52 @@ msgid "" " option is given, or if -n is supplied and the shell has no unwaited-for\n" " children." msgstr "" +"작업 완료를 기다리며 종료 상태를 반환합니다.\n" +" \n" +" 프로세스 ID 또는 작업 명세가 될 ID로 식별하는 각 프로세스를 \n" +" 기다리며, 중단 상태를 보고합니다. ID가 주어지지 않으면 현재의\n" +" 모든 활성 하위 프로세스를 기다리며, 반환 상태 값은 0입니다.\n" +" ID가 작업 명세라면 작업 파이프라인의 모든 프로세스를 기다립니다.\n" +" \n" +" -n 옵션을 지정하면 ID 목록의 단일 작업을 기다리며, ID를 지정하지\n" +" 않으면, 다음 작업 완료시까지 기다리고 해당 작업의 종료 상태를 반환\n" +" 합니다.\n" +" \n" +" -p 옵션을 지정하면 종료 상태를 반환할 작업의 프로세스 또는 작업\n" +" 식별자룰 옵션 인자가 명명한 <변수>에 할당합니다. 변수는 할당 전\n" +" 설정을 해제할 수 있습니다. 보통 -n 옵션을 지정할 때만 쓸만합니다.\n" +" \n" +" -f 옵션을 지정하고 작업 컨트롤을 사용하면 지정 ID의 상태가 바뀌기를\n" +" 기다리기보다는, 중단 시기를 기다립니다.\n" +" \n" +" 종료 상태:\n" +" 최종 ID의 상태를 반환합니다. ID가 잘못되었거나 잘못된 옵션을 지정\n" +" 했다든지, -n 옵션을 지정하고 셸에서 하위 프로세스를 기다리지 않는\n" +" 다면 실패를 반환합니다." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for each process specified by a PID and reports its termination " -"status.\n" +" Waits for each process specified by a PID and reports its termination status.\n" " If PID is not given, waits for all currently active child processes,\n" " and the return status is zero. PID must be a process ID.\n" " \n" " Exit Status:\n" -" Returns the status of the last PID; fails if PID is invalid or an " -"invalid\n" +" Returns the status of the last PID; fails if PID is invalid or an invalid\n" " option is given." msgstr "" +"프로세스 처리 완료를 기다리고 종료 상태를 반환합니다.\n" +" \n" +" 지정 의 각 프로세스를 기다리며, 종료 상태를 보고합니다.\n" +" 를 지정하지 않으면 모든 현재 하위 활성 프로세스를 기다리며,\n" +" 반환 상태는 0이 됩니다. 는 프로세스 ID여야 합니다.\n" +" \n" +" 종료 상태:\n" +" 최종 PID의 상태를 반환합니다. PID 값이 잘못되었거나,\n" +" 부적절한 옵션을 지정하면 실패를 반환합니다." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3881,8 +4665,17 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"목록 각 구성 요소의 명령을 실행합니다.\n" +" \n" +" `for' 반복문은 항목 목록 각 구성요소의 명령 목록을 실행합니다.\n" +" `in <단어> ...;' 식으로 나타나지 않으면, `in $@\"'으로 가정합니다.\n" +" <단어>의 각 요소에 대해 <이름>을 해당 요소에 설정하고,\n" +" <명령>을 실행합니다.\n" +" \n" +" 종료 상태:\n" +" 최종 명령 실행 상태를 반환합니다." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -3898,8 +4691,21 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"반복문의 산술 연산을 실행합니다.\n" +" \n" +" 다음과 동일합니다\n" +" \t(( <표현식1> ))\n" +" \twhile (( <표현식2> )); do\n" +" \t\t <명령>\n" +" \t\t (( 표현식3 ))\n" +" \tdone\n" +" <표현식1>, <표현식2>, <표현식3> 은 산술 수식입니다. 어떤 수식이든 생략하면\n" +" 1 값을 계산한걸로 간주합니다.\n" +" \n" +" 종료 상태:\n" +" 최종 명령 실행 상태를 반환합니다." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3918,8 +4724,22 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"단어를 목록에서 선택하고 명령을 실행합니다.\n" +" \n" +" <단어>는 단어 목록을 만들 때 확장합니다. 확장 단어는 표준 오류에\n" +" 출력하며, 출력행에 숫자가 붙습니다. 각 `in <단어>'가 없다면 `in \"$@\"'\n" +" 를 고려합니다. 그 다음 PS3 프롬프트를 나타내고 표준 입력에서 \n" +" 읽습니다. 표시 단어 중 하나의 숫자로 행을 구성했다면, <이름>\n" +" 을 해당 단어에 설정합니다. 행이 비어있으면, <단어>와 프롬프트는\n" +" 다시 나타납니다. EOF (파일 끝)을 읽으면, 명령 실행이 끝납니다.\n" +" 다른 값을 읽으면 <이름>을 null로 설정할 수도 있습니다. 읽은 행은\n" +" REPLY 변수에 저장합니다. <명령>은 break 명령을 실행하기 전까지\n" +" 각 선택 때마다 실행합니다.\n" +" \n" +" 종료 상태:\n" +" 마지막 명령 실행 상태를 반환합니다." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3934,8 +4754,20 @@ msgid "" " Exit Status:\n" " The return status is the return status of PIPELINE." msgstr "" +"파이프라인 실행의 소요 시간을 보고합니다.\n" +" \n" +" <파이프라인>을 실행한 후 파이프라인이 멈췄을 때, <파이프라인> 실행에\n" +" 걸린 실제 시간, 사용자 CPU 시간, 시스템 CPU 시간 요약 내용을 출력합니다.\n" +" \n" +" 옵션:\n" +" -p\t이식성이 있는 POSIX 형식의 타이밍 요약 내용을 출력합니다.\n" +" \n" +" TIMEFORMAT 변수의 값은 출력 형식에 활용합니다.\n" +" \n" +" 종료 상태:\n" +" <파이프라인>의 반환 상태가 곧 반환 상태 입니다." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3945,51 +4777,76 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"패턴 일치에 기반하여 명령을 실행합니다.\n" +" \n" +" <패턴>에 일치하는 <단어> 기반으로 <명령>을 별도로 실행합니다.\n" +" `|' 문자로 여러 패턴을 나눌 수 있습니다.\n" +" \n" +" 종료 상태:\n" +" 최종 명령 실행 상태를 반환합니다." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then " -"the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " -"is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. " -"Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of " -"the\n" -" entire construct is the exit status of the last command executed, or " -"zero\n" +" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of the\n" +" entire construct is the exit status of the last command executed, or zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"조건 기반으로 명령을 실행합니다.\n" +" \n" +" `if <명령>' 목록을 실행합니다. 종료 상태값이 0이면, `then <명령>'\n" +" 목록도 실행합니다. 아니면, `elif <명령>' 목록도 실행하며, 종료 상태\n" +" 값이 0이면 관련 `then <명령>' 목록을 실행하여 if 명령의 처리가 끝\n" +" 납니다. 위 과정에 만족하지 않으면 `else <명령>' 목록이 있을 경우\n" +" 실행합니다. 전체 명령 구성의 종료 상태 값은 최종 명령 실행 종료\n" +" 상태값이며, 또는 어떤 조건에서도 참이 아닌 경우 0이 됩니다.\n" +" \n" +" 종료 상태:\n" +" 최종 명령 실행 상태 값을 반환합니다." -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"테스트에 성공하는 동안 명령을 실행합니다.\n" +" \n" +" <명령>의 최종 명령 종료 상태가 0인 동안 <명령-2>로 확장 실행합니다.\n" +" \n" +" 종료 상태:\n" +" 최종 명령 상태를 반환합니다." -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"테스트에 실패하는 동안 명령을 실행합니다.\n" +" \n" +" <명령>의 최종 명령 종료 상태가 0이 아니면 <명령-2>로 확장 실행합니다.\n" +" \n" +" 종료 상태:\n" +" 최종 명령 실행 상태를 반환합니다." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4001,22 +4858,37 @@ msgid "" " Exit Status:\n" " The coproc command returns an exit status of 0." msgstr "" +"<이름>으로 병행 프로세스를 만듭니다.\n" +" \n" +" <명령>을 비동기 실행합니다. 명령의 표준 출력과 표준 입력은 실행하는 \n" +" 셸에서 배열 변수 <이름>의 색인 0번과 1번에 할당한 파일 서술자와\n" +" 파이프로 연결합니다. 기본 <이름>은 \"COPROC\" 입니다.\n" +" \n" +" 종료 상태:\n" +" coproc 명령이 종료 상태 0을 반환합니다." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is " -"invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" " Exit Status:\n" " Returns success unless NAME is readonly." msgstr "" +"셸 함수를 정의합니다.\n" +" \n" +" <이름>을 가진 셸 함수를 만듭니다. 단순 명령으로 실행할 경우, <이름>은\n" +" 셸 컨텍스트를 호출할 때 <명령>을 실행합니다. <이름>을 실행하면, 함수에\n" +" 전달하는 인자는 $1,...$N 이며, 함수 이름은 $FUNCNAME이 됩니다.\n" +" \n" +" 종료 상태:\n" +" <이름>이 읽기 전용이 아니라면 참을 반환합니다." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4026,8 +4898,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"여러 명령을 단위로 묶습니다.\n" +" \n" +" 여러 명령을 그룹 하나로 묶어 실행합니다. 명령 전체를 방향재지정\n" +" 처리하는 방법 중 하나입니다.\n" +" \n" +" 종료 상태:\n" +" 최종 명령 실행 상태를 반환합니다." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4040,8 +4919,17 @@ msgid "" " Exit Status:\n" " Returns the status of the resumed job." msgstr "" +"포그라운드의 작업을 재개합니다.\n" +" \n" +" `fg' 명령의 JOB_SPEC 인자와 동일합니다. 멈춘 작업 또는 백그라운드\n" +" 작업을 재개합니다. JOB_SPEC은 작업 이름 또는 작업 번호를 지정할 수\n" +" 있습니다. JOB_SPEC 다음에 `&'를 입력하여 백그라운드에서 실행하게\n" +" 합니다. `bg' 인자로 지정할 때처럼 작업 명세를 지정합니다.\n" +" \n" +" 종료 상태:\n" +" 재개한 작업의 상태를 반환합니다." -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4051,17 +4939,20 @@ msgid "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" +"산술 연산을 수행합니다.\n" +" \n" +" <표현식>은 산술 연산 규칙에 따라 실행합니다. `let \"<표현식>\"'과 동일합니다.\n" +" \n" +" 종료 상태:\n" +" <표현식> 결과가 0이면 1을 반환하고 그렇지 않으면 0을 반환합니다." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the " -"conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries " -"used\n" -" by the `test' builtin, and may be combined using the following " -"operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries used\n" +" by the `test' builtin, and may be combined using the following operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -4079,8 +4970,28 @@ msgid "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." msgstr "" +"조건 명령을 수행합니다.\n" +" \n" +" <표현식>의 조건문 수행의 처리 결과에 따라 상태값을 0 또는 1로 반환합니다.\n" +" 표현식은 `test' 내장 명령에서 활용하는 동일한 규칙에 따라 작성하며,\n" +" 다음 연산자로 결합합니다:\n" +" ( <표현식> )\t<표현식>의 값을 반환\n" +" ! <표현식>\t\t <표현식> 결과가 거짓이면 참을, 그렇지 않으면 거짓을 반환\n" +" <표현식1> && <표현식2>\t\t<표현식1>과 <표현식2>가 모두 참이면 참을\n" +" \t\t\t\t그렇지 않으면 거짓을 반환\n" +" <표현식1> || <표현식2>\t\t<표현식1> 또는 <표현식2> 둘 중 하나가 참이면 참을\n" +" \t\t\t\t그렇지 않으면 거짓을 반환\n" +" \n" +" `=='과 `!=' 연산자를 사용한다면 우항의 문자열은 패턴으로 활용하며, 패턴 검사를\n" +" 수행합니다. `=~' 연산자를 사용할 때는 우항의 문자열은 정규표현식으로 간주합니다.\n" +" \n" +" && 연산자와 || 연산자는 <표현식1>이 표현식 값을 내는데 충분하다면 <표현식2>를\n" +" 처리하지는 않습니다.\n" +" \n" +" 종료 상태:\n" +" <표현식> 값에 따라 0 또는 1을 반환합니다." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4133,8 +5044,54 @@ msgid "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" msgstr "" - -#: builtins.c:1821 +"일반 셸 변수 이름과 사용법입니다.\n" +" \n" +" BASH_VERSION\t배시 버전 정보입니다.\n" +" CDPATH\t`cd' 인자처럼 디렉터리 검색에 주어지는 콜론으로 구분한\n" +" \t\t디렉터리 목록입니다.\n" +" GLOBIGNORE\t경로 이름을 확장하여 무시할 콜론 이름으로 구분한 파일 이름\n" +" \t\t특징 패턴 목록입니다.\n" +" HISTFILE\t명령을 기록에 저장하는 파일 이름입니다.\n" +" HISTFILESIZE\t파일에 넣을 수 있는 최대 줄 수 입니다.\n" +" HISTSIZE\t동작 중인 셸에서 접근할 수 있는 최대 기록 줄 수 입니다.\n" +" HOME\t로그인 후 접근하는 완전한 경로 이름입니다.\n" +" HOSTNAME\t현재 호스트 이름입니다.\n" +" HOSTTYPE\t이 배시 버전이 실행하고 있는 시스템의 CPU 형식입니다.\n" +" IGNOREEOF\n" +"EOF 문자 입력을 유일한 입력으로 받는 셸의 동작을\n" +" \t\t제어합니다. 설정하면, 이 변수의 값은 셸을 나가기\n" +" \t\t전 빈 줄에 한줄로 나타낼 EOF 문자 수 입니다 (기본 10개).\n" +" \t\t설정을 해제하면, EOF는 입력 끝을 나타냅니다.\n" +" MACHTYPE\t현재 배시를 실행하고 있는 시스템을 설명하는 문자열입니다.\n" +" MAILCHECK\t배시에서 새 메일을 확인하는 초단위 빈도 시간입니다.\n" +" MAILPATH\t배시에서 새 메일을 확인할 콜론 구분 파일 목록입니다.\n" +" OSTYPE\t이 배시 버전을 실행하고 있는 유닉스 버전입니다.\n" +" PATH\t명령을 찾을 때 검색할 콜론 구분 디렉터리 목록입니다.\n" +" PROMPT_COMMAND\t각 기본 프롬프트를 출력하기 전에 실행할\n" +" \t\t명령입니다.\n" +" PS1\t\t기본 프롬프트 문자열입니다.\n" +" PS2\t\t2차 프롬프트 문자열입니다.\n" +" PWD\t\t현재 디렉터리의 전체 경로 이름 입니다.\n" +" SHELLOPTS\t콜론으로 구분한 활성 셸 옵션 목록입니다.\n" +" TERM\t현재 터미널 형식 이름입니다.\n" +" TIMEFORMAT\t`time' 역방향 단어로 표시하는 시간 통계의\n" +" \t\t출력 형식입니다.\n" +" <자동_재개>\tnull 값이 아니라면 자체에서 나타내는 명령행을\n" +" \t\t먼저 나타내고, 현재 멈춘 작업 목록의 첫번째 확인 요소임을\n" +" \t\t의미합니다. 이 상태가 나타나면 작업을 포 그라운드에서\n" +" \t\t실행헙니다. `exact' 값은 명령 단어가 멈춘 작업 목록의\n" +" \t\t명령과 정확히 일치해야 함을 의미합니다.\n" +" \t\t`substring' 값은 명령 단어가 작업의 부분 문자열과\n" +" \t\t일치해야 하는 의미를 담고 있습니다. 다른 값은\n" +" \t\t명령이 멈춘 작업의 접두어여야 하는 의미를 담고 있습니다.\n" +" <기록 문자>\t기록 확장과 빠른 대체를 제어하는 문자입니다.\n" +" \t\t첫번째는 기록 제거 문자로, 보통 `!'을 활용합니다.\n" +" \t\t두번째는 보통 `^'으로 표기하는 `빠른 대체문자' 입니다.\n" +" \t\t세번째는 `기록 주석' 문자로 보통 `#'으로 표기합니다.\n" +" HISTIGNORE\t어떤 명령을 기록 목록에 저장해야 하는지 판단할 때\n" +" \t\t활용하는 콜론 구분 패턴 목록입니다.\n" + +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -4164,8 +5121,33 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"디렉터리를 스택에 추가합니다.\n" +" \n" +" 디렉터리를 디렉터리 스택 상단에 추가하거나, 스택을 돌리거나,\n" +" 스택의 새 상단에 현재 작업 디렉터리를 둡니다. 인자를 지정하지\n" +" 않으면 상단 디렉터리 둘을 바꿉니다.\n" +" \n" +" 옵션:\n" +" -n\t스택에 디렉터리를 추가할 때 디렉터리 일반 변경 동작을\n" +" \t\t막은 상태에서, 스택만 다루게 합니다.\n" +" \n" +" 인자:\n" +" +N\t`dirs' 내장 명령에 나타난 항목을 0부터 시작해서 왼쪽부터\n" +" \t\t세어 N번째 항목을 스택의 최상단에 오도록 회전합니다.\n" +" \n" +" -N\t`dirs' 내장 명령에 나타난 항목을 0부터 시작해서 오른쪽부터\n" +" \t\t세어 N번째 항목을 스택의 최상단에 오도록 회전합니다.\n" +" \n" +" <디렉터리>\t<디렉터리>를 스택 상단에 추가하여 새 현재 작업\n" +" \t\t디렉터리로 지정합니다.\n" +" \n" +" `dirs' 내장 명령은 디렉터리 스택을 표시합니다.\n" +" \n" +" 종료 상태:\n" +" 적절한 인자를 지정하고 디렉터리 변경에 성공하면 성공을 반환\n" +" 합니다." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -4191,8 +5173,32 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"스택에서 디렉터리를 제거합니다.\n" +" \n" +" 디렉터리 스택에서 항목을 제거합니다. 인자를 지정하지 않으면,\n" +" 스택의 상단 디렉터리를 제거하며, 새 상단 디렉터리로 바꿉니다.\n" +" \n" +" 옵션:\n" +" -n\t스택에서 디렉터리를 제거할 때 디렉터리 일반 변경동작을\n" +" \t\t막아 스택만 처리하게합니다.\n" +" \n" +" 인자:\n" +" +N\t0부터 시작해서 `dirs' 내장 명령에 나타난 항목을 왼쪽부터\n" +" \t\t세어 N번째 항목을 제거합니다. 예를 들어 `popd +0' 명령은\n" +" \t\t처음 디렉터리를 `popd +1' 명령은 두번째 디렉터리를\n" +" \t\t제거합니다.\n" +" -N\t0부터 시작해서 `dirs' 내장 명령에 나타난 항목을 오른쪽부터\n" +" \t\t세어 N번째 항목을 제거합니다. 예를 들어 `popd -0' 명령은\n" +" \t\t마지막 디렉터리를 `popd -1' 명령은 마지막에서 두번째의\n" +" \t\t디렉터리를 제거합니다.\n" +" \n" +" `dirs' 내장 명령은 디렉터리 스택을 보여줍니다.\n" +" \n" +" 종료 상태:\n" +" 적절한 인자를 지정했거나 디렉터리를 제대로 이동했다면\n" +" 성공을 반환합니다.전" -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -4220,31 +5226,28 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -"디렉토리 스택을 보여줍니다.\n" +"디렉터리 스택을 표시합니다.\n" " \n" -" 현재 기억된 디렉토리의 목록을 보여줍니다. 디렉토리들은\n" -" `pushd' 명령을 통해 목록에 경로를 저장할 수 있고; 'popd' \n" -" 명령을 통해 거슬러 올라갈 수 있습니다.\n" +" 현재 기억한 디렉터리 목록을 보여줍니다. 디렉터리는\n" +" `pushd' 명령으로 목록에 경로를 저장할 수 있고, 'popd' \n" +" 명령으로 거슬러 올라갈 수 있습니다.\n" " \n" " 옵션:\n" -" -c\t원소를 전부 삭제함으로써 디렉토리 스택을 초기화합니다\n" -" -l\t홈 디렉토리까지 ~로 축약된 상대경로를 표시하지 않습니다\n" -" -p\t한 줄에 하나씩 디렉토리 스택을 표시합니다\n" -" -v\t한 줄에 하나씩 스택의 위치와 함께 디렉토리 스택을 표시합니다\n" +" -c\t원소를 전부 삭제함으로써 디렉터리 스택을 초기화합니다\n" +" -l\t홈 디렉터리까지 ~로 축약된 상대경로를 표시하지 않습니다\n" +" -p\t한 줄에 하나씩 디렉터리 스택을 표시합니다\n" +" -v\t한 줄에 하나씩 스택의 위치 및 디렉터리 스택을 표시합니다\n" " \n" " 인자:\n" -" +N\t인자 없이 실행될 때 보여지는 목록의 왼쪽부터 N번째 항목을 보여줍니" -"다.\n" +" +N\t인자 없이 실행될 때 보여지는 목록의 왼쪽부터 N번째 항목을 보여줍니다.\n" " \t세는 수는 0부터 시작합니다.\n" " \n" -" -N\t인자 없이 실행될 때 보여지는 목록의 오른쪽부터 N번째 항목을 보여줍" -"니다.\n" +" -N\t인자 없이 실행될 때 보여지는 목록의 오른쪽부터 N번째 항목을 보여줍니다.\n" "\t세는 수는 0부터 시작합니다.\n" " 종료 상태:\n" -" 유효하지 않은 옵션이 주어지거나 오류가 발생하지 않는다면 성공을 반환합니" -"다." +" 부적절한 옵션이 주어지거나 오류가 발생하지 않는다면 성공을 반환합니다." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -4263,8 +5266,24 @@ msgid "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." msgstr "" +"셸 옵션을 설정 또는 해제합니다.\n" +" \n" +" <옵션이름> 셸 옵션의 설정을 바꿉니다. 어떤 옵션 인자도 지정하지 않으면\n" +" <옵션이름>에 지정한 항목을 보여주거나, <옵션이름>이 없을 경우 모든\n" +" 셸 옵션을 보여주든지 설정 여부를 함께 나타냅니다.\n" +" \n" +" 옵션:\n" +" -o\t`set -o'로 지정한 <옵션이름>으로 제한합니다\n" +" -p\t각 셸 옵션과 상태를 출력합니다\n" +" -q\t출력을 끕니다\n" +" -s\t각 <옵션이름>을 사용합니다 (설정)\n" +" -u\t각 <옵션이름>을 사용하지 않습니다 (설정해제)\n" +" \n" +" 종료 상태:\n" +" <옵션이름>을 활성화했다면 성공을 반환합니다. 부적절한 옵션을\n" +" 지정했거나 <옵션이름>을 사용하지 않으면 실패를 반환합니다." -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4272,45 +5291,63 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: " -"plain\n" -" characters, which are simply copied to standard output; character " -"escape\n" +" FORMAT is a character string which contains three types of objects: plain\n" +" characters, which are simply copied to standard output; character escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next " -"successive\n" +" format specifications, each of which causes printing of the next successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T\toutput the date-time string resulting from using FMT as a " -"format\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" -" specifications behave as if a zero value or null string, as " -"appropriate,\n" +" specifications behave as if a zero value or null string, as appropriate,\n" " had been supplied.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or " -"assignment\n" +" Returns success unless an invalid option is given or a write or assignment\n" " error occurs." msgstr "" +"<형식>에 따라 <인자>를 구성하고 출력합니다.\n" +" \n" +" 옵션:\n" +" -v <변수>\t표준 출력에 나타내는 대신 셸 <변수>에 할당합니다.\n" +" \n" +" <형식>은 세가지 형식의 객체가 들어간 문자열입니다. 표준 출력에 그냥\n" +" 복사하는 일반 문자, 표준 출력에 변환하여 복사하는 문자 이스케이핑 시퀀스,\n" +" 그리고 다음 뒤따라오는 인자를 형식에 맞춰 출력하는 형식 지정자가 바로\n" +" 세가지 형식 입니다.\n" +" \n" +" 게다가 printf(1)에 표준 형식 지정자에서 printf는 다음과 같이 해석합니다:\n" +" \n" +" %b\t관련 인자의 백슬래시 이스케이프 시퀀스를 확장합니다\n" +" %q\t셸 입력으로 다시 사용할 수 있도록 변수를 따옴표 처리합니다\n" +" %Q\t%q와 비슷하지만, 따옴표 처리하기 전의 인자에 정빌도를 적용합니다\n" +" %(fmt)T\tstrftime(3)의 형식 문자열로 <형식>을 사용하도록 날짜-시간\n" +" \t 문자열을 출력합니다\n" +" \n" +" 형식은 모든 인자에 대해 필요한대로 재활용합니다. 필요한 형식보다\n" +" 적은 인자를 지정했다면, 추가 형식 지정 부분에 대해 적당하게 널 문자열\n" +" 이 들어간 것처럼 처리해줍니다.\n" +" \n" +" 종료 상태:\n" +" 적절한 옵션을 설정했거나 기록, 할당 오류가 나타나지 않으면 성공을\n" +" 반환합니다." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no " -"options\n" -" are supplied, existing completion specifications are printed in a way " -"that\n" +" For each NAME, specify how arguments are to be completed. If no options\n" +" are supplied, existing completion specifications are printed in a way that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -4325,38 +5362,61 @@ msgid "" " \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. If multiple options are " -"supplied,\n" -" the -D option takes precedence over -E, and both take precedence over -" -"I.\n" +" uppercase-letter options are listed above. If multiple options are supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"readline에서 인자를 어떻게 완성 처리할 지 지정합니다.\n" +" \n" +" 각 <이름>에 대해 인자를 어떻게 완성할 지 지정합니다. 옵션을 지정하지\n" +" 않으면, 입력할 때 다시 활용할 수 있게 하는 방식으로 기존 완성 명세를\n" +" 출력합니다.\n" +" \n" +" 옵션:\n" +" -p\t기존 완성 명세를 재사용 형식으로 출력합니다\n" +" -r\t각 <이름>별 완성 명세를 제거하거나, <이름>을 지정하지 않았다면\n" +" \t\t모든 완성 명세를 제거합니다\n" +" -D\t어떤 개별 완성 명세 없이 명령에 대해 기본 완성 명세와 동작을\n" +" \t\t적용합니다\n" +" -E\t\"빈\" 명령에 대해 완성 명세와 동작을 적용합니다 -- 빈 줄 상태에서\n" +" \t\t완성 동작을 시도합니다\n" +" -I\t초기 단어(보통 명령) 완성 명세와 동작을 적용합니다\n" +" \n" +" 완성 동작을 시도할 때 상단에 대문자 옵션 순서대로 동작을 적용합니다. 여러\n" +" 옵션을 지정하면 -D 옵션은 -E 옵션보다 우선하며, 두 옵션은 -I 옵션보다\n" +" 우선합니다.\n" +" \n" +" 종료 상태:\n" +" 적절한 옵션을 지정했거나 오류가 발생하지 않으면 성공을 반환합니다." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches " -"against\n" +" completions. If the optional WORD argument is supplied, matches against\n" " WORD are generated.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"옵션에 따라 가능한 완성 명세를 표시합니다.\n" +" \n" +" 가능한 완성 명세를 만드는 셸 함수에서 사용하도록 의도했습니다.\n" +" 추가 <단어> 인자를 지정하면, <단어>에 일치하는 항목을 만듭니다.\n" +" \n" +" 종료 상태:\n" +" 적절한 옵션을 지정했거나 오류가 없으면 성공을 반환합니다." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are " -"supplied,\n" -" the completion currently being executed. If no OPTIONs are given, " -"print\n" -" the completion options for each NAME or the current completion " -"specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" +" the completion currently being executed. If no OPTIONs are given, print\n" +" the completion options for each NAME or the current completion specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -4378,27 +5438,46 @@ msgid "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." msgstr "" +"자동 완성 옵션을 수정하거나 표시합니다.\n" +"\n" +" 각 <이름> 별로 자동 완성 옵션을 수정하거나, 지정 <이름>이 없다면,\n" +" 현재 실행하는 명령의 자동완성 옵션을 수정합니다. 주어진 <옵션>이 없다면\n" +" 각 <이름> 별 자동 완성 옵션을 출력하거나 현재 자동 완성 명세를 출력합니다.\n" +" \n" +" 옵션:\n" +" \t-o <옵션>\t각 <이름>별 <옵션>을 설정합니다\n" +" \t-D\t\t\"기본\" 명령 자동 완성 옵션을 바꿉니다\n" +" \t-E\t\t\"빈\" 명령 자동 완성 옵션을 바꿉니다\n" +" \t-I\t\t초기 단어의 자동 완성 옵션을 바꿉니다\n" +" \n" +" 지정 옵션을 끄는 `-o' 대신 `+o'를 사용하십시오.\n" +" \n" +" 인자:\n" +" \n" +" 각 <이름>은 `complete' 내장 명령으로 앞서 지정해야 하는 자동 완성\n" +" 명세 명령을 참조합니다. <이름>이 없다면 현재 자동 완성 규칙을 생성하는\n" +" compopt를 호출해야 하며, 현재 실행하는 자동 완성 생성자의 옵션도\n" +" 역시 마찬가지로 수정해야합니다.\n" +" \n" +" 종료 상태:\n" +" 부적절한 옵션을 지정하지 않았거나 <이름>에 자동 완성 명세를 지정했다면\n" +" 성공을 반환합니다." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable " -"ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable " -"MAPFILE\n" +" Read lines from the standard input into the indexed array variable ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" " -d delim\tUse DELIM to terminate lines, instead of newline\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n" " -s count\tDiscard the first COUNT lines read\n" " -t\tRemove a trailing DELIM from each line read (default newline)\n" -" -u fd\tRead lines from file descriptor FD instead of the standard " -"input\n" +" -u fd\tRead lines from file descriptor FD instead of the standard input\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" " -c quantum\tSpecify the number of lines read between each call to\n" " \t\t\tCALLBACK\n" @@ -4411,17 +5490,47 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY " -"before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly " -"or\n" +" Returns success unless an invalid option is given or ARRAY is readonly or\n" " not an indexed array." msgstr "" +"표준 입력을 읽어 색인 배열 변수에 대입합니다.\n" +" \n" +" 표준 입력에서 행을 읽어 색인 <배열> 변수에 넣거나 -u 옵션을 지정하여\n" +" <파일서술자>에서 행을 읽어 색인 <배열> 변수에 넣습니다. <매핑파일>\n" +" 변수는 기본적으로 <배열> 취급합니다.\n" +" \n" +" 옵션:\n" +" -d <구분자>\t개행 문자 대신 <구분자>로 행을 끊습니다.\n" +" -n <갯수>\t\t<갯수>만큼 행을 읽습니다. <갯수> 값이 0이면\n" +" \t\t 모든 행을 복사합니다.\n" +" -O <시작>\t\t<시작> 인덱스에 <배열> 할당을 시작합니다.\n" +" \t\t기본 인덱스는 0 입니다.\n" +" -s <갯수>\t\t처음 <갯수>만큼 읽은 행을 무시합니다\n" +" -t\t\t읽은 각 행 끝에 뒤다라오는 <구분자>를 제거합니다\n" +" \t\t(기본 값은 개행 문자)\n" +" -u <파일서술자>\t표준 입력 대신 <파일서술자>에서 행을 읽습니다\n" +" -C <콜백>\t\t<양자> 행을 읽을 때마다 실행할 <콜백> 입니다\n" +" -c <양자>\t\t<콜백>을 실행할 때마다 읽을 행 갯수를 지정합니다\n" +" \n" +" 인자:\n" +" <배열>\t파일 데이터에 활용할 배열 변수 이름\n" +" \n" +" -c 옵션 없이 -C를 지정하면, 기본 양자 수는 5000입니다. <콜백>을\n" +" 실행하면, 다음 배열 요소의 색인 번호를 할당하고, 해당 요소에 할당할 행을\n" +" 추가 인자로 지정합니다.\n" +" \n" +" <시작> 색인 번호를 제대로 지정하지 않으면, mapfile에서 <배열>에\n" +" 할당하기 전에 <배열>값을 삭제합니다.\n" +" \n" +" 종료 상태:\n" +" 부적절한 옵션을 주지 않았거나 <배열>을 읽기 전용으로 두지 않았거나\n" +" 색인 배열로 올바르게 지정했다면 성공을 반환합니다." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4430,18 +5539,3 @@ msgstr "" "파일에서 줄을 읽어 배열 변수에 넣습니다.\n" " \n" " `mapfile'의 동의어." - -#~ msgid "" -#~ "Returns the context of the current subroutine call.\n" -#~ " \n" -#~ " Without EXPR, returns " -#~ msgstr "" -#~ "현재 서브루틴 콜의 컨텍스트를 반환합니다.\n" -#~ " \n" -#~ " EXPR이 없으면, 다음을 반환 " - -#~ msgid "add_process: process %5ld (%s) in the_pipeline" -#~ msgstr "add_process: 프로세스 %5ld (%s) 는 the_pipeline에 있음" - -#~ msgid "Unknown Signal #" -#~ msgstr "알 수 없는 신호 #" diff --git a/po/lt.gmo b/po/lt.gmo index 31a29ca45..59b429253 100644 Binary files a/po/lt.gmo and b/po/lt.gmo differ diff --git a/po/lt.po b/po/lt.po index 06bdb4492..6bcc068ee 100644 --- a/po/lt.po +++ b/po/lt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2009-03-25 16:49+0200\n" "Last-Translator: Gintautas Miliauskas \n" "Language-Team: Lithuanian \n" @@ -24,57 +24,52 @@ msgstr "" msgid "bad array subscript" msgstr "blogas masyvo indeksas" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:700 -#, fuzzy, c-format -msgid "%s: invalid associative array key" -msgstr "%s: netaisyklingas veiksmo pavadinimas" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nepavyko priskirti prie neskaitinio indekso" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nepavyko sukurti: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: nepavyko rasti keymapo komandai" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: pirmas ne tarpo simbolis nėra „\"“" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "nėra uždarančiojo „%c“ %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: trūksta dvitaškio skirtuko" -#: bashline.c:4555 +#: bashline.c:4733 #, fuzzy, c-format msgid "`%s': cannot unbind in command keymap" msgstr "„%s“: nepavyko atjungti (unbind)" @@ -94,7 +89,7 @@ msgstr "" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "„%s“: netaisyklingas keymap'o pavadinimas" @@ -166,7 +161,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME nenustatytas" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "per daug argumentų" @@ -194,7 +189,7 @@ msgstr "įspėjimas: " msgid "%s: usage: " msgstr "%s: naudojimas: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: parametrui reikia argumento" @@ -209,7 +204,7 @@ msgstr "%s: reikia skaitinio argumento" msgid "%s: not found" msgstr "%s: nerasta" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: negalimas parametras" @@ -219,7 +214,7 @@ msgstr "%s: negalimas parametras" msgid "%s: invalid option name" msgstr "%s: netaisyklingas parametro vardas" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': netaisyklingas identifikatorius" @@ -232,7 +227,7 @@ msgstr "netaisyklingas aštuonetainis skaičius" msgid "invalid hex number" msgstr "netaisyklingas šešioliktainis skaičius" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "netaisyklingas skaičius" @@ -246,88 +241,93 @@ msgstr "%s: netaisyklinga signalo specifikacija" msgid "`%s': not a pid or valid job spec" msgstr "„%s“: ne pid'as ar taisyklinga darbo specifikacija" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: kintamasis tik skaitymui" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: nepavyko ištrinti" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s išėjo už ribų" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argumentas" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s už ribų" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: nėra tokio darbo" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: nėra darbų valdymo" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "nėra darbų valdymo" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: apribota" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "apribota" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ne vidinė aplinkos komanda" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "rašymo klaida: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: klaida skaitant esamą aplanką: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: dviprasmis darbo aprašymas" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nepavyko ištrinti: %s tik skaitymui" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: nepavyko ištrinti" @@ -337,108 +337,108 @@ msgstr "%s: nepavyko ištrinti" msgid "%s: invalid action name" msgstr "%s: netaisyklingas veiksmo pavadinimas" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: nėra baigimo specifikacijos" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "įspėjimas: parametras -F gali neveikti taip, kaip tikitės" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "įspėjimas: parametras -C gali neveikti taip, kaip tikitės" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "galima naudoti tik funkcijoje" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "negalima naudoti „-f“ funkcijoms kurti" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funkcija tik skaitymui" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "negalima naudoti „-f“ funkcijoms kurti" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: funkcija tik skaitymui" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: negalima tokiu būdu sunaikinti masyvų kintamųjų" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "dinaminis įkrovimas negalimas" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "nepavyko atverti bendrojo objekto %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "nepavyko rasti %s bendrajame objekte %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, fuzzy, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: nedinamiškai įkrauta" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: nedinamiškai įkrauta" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: nepavyko ištrinti: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: aplankas" @@ -453,7 +453,7 @@ msgstr "%s: ne paprastas failas" msgid "%s: file is too large" msgstr "%s: failas per didelis" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: negalima vykdyti dvejetainių failų" @@ -551,12 +551,12 @@ msgstr "" "nėra žinyno temų, atitinkančių „%s“. Bandykite „help help“, „man -k %s“ arba " "„info %s“." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nepavyko atverti: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -577,21 +577,21 @@ msgstr "" "Žvaigždutė (*) prie vardo reiškia, kad komanda išjungta.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "negalima naudoti daugiau negu vieno parametro iš -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "istorijos pozicija" -#: builtins/history.def:340 +#: builtins/history.def:338 #, fuzzy, c-format msgid "%s: invalid timestamp" msgstr "%s: netaisyklingas parametro vardas" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: istorijos išskleidimas nesėkmingas" @@ -614,79 +614,79 @@ msgstr "%s: argumentai turi būti procesų arba darbų ID" msgid "Unknown error" msgstr "Nežinoma klaida" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "tikėtasi išraiškos" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, fuzzy, c-format msgid "%s: not an indexed array" msgstr "%s: ne masyvo kintamasis" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: netaisyklinga failo deskriptoriaus specifikacija" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: netaisyklingas failo deskriptorius: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%s: nesamas parametras" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%s: nesamas parametras" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "%s: netaisyklingas veiksmo pavadinimas" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 #, fuzzy msgid "empty array variable name" msgstr "%s: ne masyvo kintamasis" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "„%s“: trūksta formato simbolio" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: klaidinga laiko ribos (timeout) specifikacija" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: netaisyklingas formato simbolis" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "įspėjimas: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "trūksta šešioliktainio skaitmens išraiškoje \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "trūksta šešioliktainio skaitmens išraiškoje \\x" @@ -783,12 +783,12 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: klaidinga laiko ribos (timeout) specifikacija" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "skaitymo klaida: %d: %s" @@ -801,7 +801,7 @@ msgstr "galima grįžti (return) tik iš funkcijos ar scenarijaus" msgid "cannot simultaneously unset a function and a variable" msgstr "negalima kartu ištrinti funkcijos ir kintamojo" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: ne masyvo kintamasis" @@ -820,11 +820,11 @@ msgstr "%s: nepavyko ištrinti" msgid "shift count" msgstr "postūmių skaičius" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "negalima aplinkos nuostatos vienu metu įjungti ir išjungti" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: netaisyklingas aplinkos nuostatos pavadinimas" @@ -891,16 +891,16 @@ msgstr "%s: netaisyklingas limito argumentas" msgid "`%c': bad command" msgstr "`%c': bloga komanda" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nepavyko gauti limito: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "riba" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nepavyko pakeisti limito: %s" @@ -919,7 +919,7 @@ msgstr "„%c“: netaisyklingas simbolinės veiksenos operatorius" msgid "`%c': invalid symbolic mode character" msgstr "„%c“: netaisyklingas simbolinės veiksenos simbolis" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " eilutė " @@ -939,97 +939,107 @@ msgstr "Nutraukiama..." msgid "INFORM: " msgstr "" -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "įspėjimas: " + +#: error.c:488 msgid "unknown command error" msgstr "nežinoma komandos klaida" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "blogas komandos tipas" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "blogas jungtukas" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "blogas šuolis" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: nepriskirtas kintamasis" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\alaukiant įvedimo baigėsi laikas: automatiškai atsijungta\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "nepavyko peradresuoti standartinio įvedimo iš /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: netaisyklingas formato simbolis" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 #, fuzzy msgid "pipe error" msgstr "rašymo klaida: %s" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: apribota: negalima naudoti „/“ komandų pavadinimuose" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: komanda nerasta" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: negalima vykdyti dvejetainių failų" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: blogas interpretatorius" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: negalima vykdyti dvejetainių failų" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s yra aplinkos vidinė komanda\n" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nepavyko dublikuoti fd %d į fd %d" @@ -1042,71 +1052,71 @@ msgstr "viršytas išraiškos rekursijos lygis" msgid "recursion stack underflow" msgstr "rekursijos steko atvirkštinis perpildymas" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "sintaksės klaida išraiškoje" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "bandymas priskirti ne kintamajam" -#: expr.c:530 +#: expr.c:531 #, fuzzy msgid "syntax error in variable assignment" msgstr "sintaksės klaida išraiškoje" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "dalyba iš 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "klaida: bloga expassign leksema" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "sąlygos išraiškoje tikėtasi „:“" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "eksponentė mažesnis už 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "po prieš-didinimo ar prieš-mažinimo operatoriaus tikėtasi identifikatoriaus" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "Trūksta „)“" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "sintaksės klaida: tikėtasi operando" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "sintaksės klaida: netaisyklingas aritmetinis operatorius" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "netaisyklingas aritmetinis pagrindas" -#: expr.c:1582 +#: expr.c:1587 #, fuzzy msgid "invalid integer constant" msgstr "%s: nesamas parametras" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "per didelė pagrindo reikšmė" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: išraiškos klaida\n" @@ -1115,7 +1125,7 @@ msgstr "%s: išraiškos klaida\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: nepavyko pasiekti aukštesnių aplankų" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, fuzzy, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nepavyko dublikuoti fd %d į fd %d" @@ -1134,167 +1144,167 @@ msgstr "save_bash_input: naujam fd %d buferis jau egzistuoja" msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "trinamas sustabdytas darbas %d procesų grupėje %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: tokio pid nėra" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Signalas %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Atlikta" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Atlikta(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Nežinoma būsena" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld nėra šios aplinkos dukterinis procesas" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: nėra proceso %ld įrašo" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: darbas %d yra sustabdytas" -#: jobs.c:3564 +#: jobs.c:3551 #, fuzzy, c-format msgid "%s: no current jobs" msgstr "%s: nėra tokio darbo" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: darbas užsibaigė" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: darbas %d jau fone" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: %d eilutė: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "šioje aplinkoje nėra darbų valdymo" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: pažeista prielaida: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1303,49 +1313,49 @@ msgstr "" "\r\n" "malloc: %s:%d: prielaida pažeista\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "nežinoma" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: blokas iš laisvų blokų sąrašo sugadintas" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: iškviestas su jau atlaisvintu bloku" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: iškviestas su nerezervuotu bloku" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: atvirkštinis perpildymas (underflow); mh_nbytes už ribos" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 #, fuzzy msgid "free: underflow detected; magic8 corrupted" msgstr "free: atvirkštinis perpildymas (underflow); mh_nbytes už ribos" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: iškviestas su nerezervuotu bloku" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: atvirkštinis perpildymas (underflow); mh_nbytes už ribos" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 #, fuzzy msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: atvirkštinis perpildymas (underflow); mh_nbytes už ribos" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi" @@ -1387,22 +1397,22 @@ msgstr "%s: netaisyklingas tinklo kelias" msgid "network operations not supported" msgstr "tinklo operacijos nepalaikomos" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:292 +#: locale.c:294 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "xrealloc: %s:%d: nepavyko išskirti %lu baitų" -#: locale.c:294 +#: locale.c:296 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: %s:%d: nepavyko išskirti %lu baitų" @@ -1420,138 +1430,138 @@ msgstr "Turite naujų laiškų $_" msgid "The mail in %s has been read\n" msgstr "Paštas %s perskaitytas\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "sintaksės klaida: reikia aritmetinės išraiškos" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "sintaksės klaida: netikėtas „;“" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "sintaksės klaida: „((%s))“" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: blogas instrukcijos tipas %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: nukreipimo instrukcija „%d“ už ribų" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "netikėta failo pabaiga ieškant atitinkamo „%c“" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "netikėta failo pabaiga ieškant „]]“" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "sintaksės klaida sąlygos išraiškoje: netikėta leksema „%s“" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "sintaksės klaida sąlygos išraiškoje" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "netikėta leksema „%s“, tikėtasi „)“" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "tikėtasi „)“" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "netikėtas argumentas „%s“ sąlygos unariniam operatoriui" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "netikėtas argumentas sąlygos unariniam operatoriui" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "netikėta leksema „%s“, tikėtasi sąlyginio binarinio operatoriaus" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "tikėtasi sąlygos binarinio operatoriaus" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "netikėtas argumentas „%s“ sąlygos binariniam operatoriui" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "netikėtas argumentas sąlygos binariniam operatoriui" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "netikėta leksema „%c“ sąlygos komandoje" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "netikėta leksema „%s“ sąlygos komandoje" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "netikėta leksema %d sąlygos komandoje" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "sintaksės klaida prie netikėtos leksemos: „%s“" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "sintaksės klaida prie „%s“" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "sintaksės klaida: netikėta failo pabaiga" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "sintaksės klaida" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Naudokite „%s“, jei norite išeiti iš ap.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "netikėta failo pabaiga ieškant atitinkamo „)“" @@ -1589,94 +1599,94 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: netaisyklingas formato simbolis" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "failo deskriptorius už ribų" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ambiguous redirect" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: negalima perrašyti egzistuojančio failo" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: apribota: negalima peradresuoti išvedimo" -#: redir.c:218 +#: redir.c:219 #, fuzzy, c-format msgid "cannot create temp file for here-document: %s" msgstr "nepavyko sukurti laikino failo „here“ dokumentui: %s" -#: redir.c:222 +#: redir.c:223 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: negalima priskirti sąrašo masyvo elementui" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/serveris/prievadas nepalaikoma be tinklo" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "nukreipimo klaida: nepavyko dublikuoti fd" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "nepavyko rasti /tmp, sukurkite šį aplanką!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp turi būti taisyklingas aplanko pavadinimas" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: netaisyklingas parametras" -#: shell.c:1319 +#: shell.c:1343 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "nepavyko dublikuoti fd %d į fd %d" -#: shell.c:1330 +#: shell.c:1354 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "nepavyko dublikuoti fd %d į fd %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1632 +#: shell.c:1658 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: aplankas" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Neturiu vardo!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versija %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1685,325 +1695,325 @@ msgstr "" "Naudojimas:\t%s [GNU ilgas parametras] [parametras] ...\n" "\t%s [GNU ilgas parametras] [parametras] scenarijaus-failas ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "GNU ilgi parametrai:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Aplinkos parametrai:\n" -#: shell.c:2043 +#: shell.c:2069 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t-irsD arba -c komanda arba -O shopt_nustatymas\t\t(tik iškvietimui)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s arba -o nustatymas\n" -#: shell.c:2068 +#: shell.c:2094 #, fuzzy, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Bandykite „%s --help“ arba „%s --usage“, jei norite gauti daugiau " "informacijos.\n" -#: shell.c:2069 +#: shell.c:2095 #, fuzzy, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Bandykite „ldd --help“, jei norite daugiau informacijos." -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Naudokite komandą „bashbug“ klaidoms pranešti.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: netaisyklinga operacija" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "ABORT instrukcija" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Slankaus kablelio klaida" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "" -#: siglist.c:90 +#: siglist.c:91 #, fuzzy msgid "Bus error" msgstr "sintaksės klaida" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Segmentacijos klaida" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Žadintuvas" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Nutraukta" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Sustabdyta (signalas)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Tęsti" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Sustabdyta (tty įvedimas)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Sustabdyta (tty išvedimas)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "CPU riba" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Failų riba" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Langas pakeistas" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "proceso migravimas į kitą CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "programavimo klaida" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Informacijos užklausa" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Nežinomas signalas #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "blogas keitinys: trūksta „%s“ %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: negalima priskirti sąrašo masyvo elementui" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:6213 +#: subst.c:6370 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "blogas keitinys: trūksta „%s“ %s" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: nesamas parametras" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "%s: netaisyklingas veiksmo pavadinimas" -#: subst.c:7256 +#: subst.c:7478 #, fuzzy, c-format msgid "%s: parameter not set" msgstr "%s: parametras tuščias arba nenustatytas" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametras tuščias arba nenustatytas" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: posekio išraiška < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: blogas keitinys" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: negalima tokiu būdu priskirti" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:10367 +#: subst.c:10795 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "blogas keitinys: trūksta „%s“ %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "nėra atitikmenų: %s" @@ -2026,21 +2036,21 @@ msgstr "tikėtasi „)“" msgid "`)' expected, found %s" msgstr "tikėtasi „)“, rasta %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: tikėtasi binarinio operatoriaus" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: tikėtasi unarinio operatoriaus" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "trūksta „]“" -#: test.c:899 +#: test.c:914 #, fuzzy, c-format msgid "syntax error: `%s' unexpected" msgstr "sintaksės klaida: netikėtas „;“" @@ -2049,100 +2059,105 @@ msgstr "sintaksės klaida: netikėtas „;“" msgid "invalid signal number" msgstr "netaisyklingas signalo numeris" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: bloga trap_list[%d] reikšmė: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: signalo doroklė yra SIG_DFL, siunčiamas %d (%s) sau" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: blogas signalas %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "klaida importuojant funkcijos apibrėžimą „%s“" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "aplinkos lygmuo (%d) per aukštas, nustatoma į 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4771 +#: variables.c:4757 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parametras tuščias arba nenustatytas" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "netaisyklingas simbolis %d %s exportstr'e" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s exportstr'e trūksta „=“" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nėra global_variables konteksto" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:6387 +#: variables.c:6400 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: nepavyko atverti: %s" -#: variables.c:6392 +#: variables.c:6405 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: netaisyklingas failo deskriptorius: %s" -#: variables.c:6437 +#: variables.c:6450 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s išėjo už ribų" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Autorinės teisės (C) 2009 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2234,12 +2249,16 @@ msgstr "command [-pVv] komanda [arg ...]" #: builtins.c:78 #, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFilrtux] [-p] [pavadinimas[=reikšmė] ...]" #: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFilrtux] [-p] pavadinimas[=reikšmė] ..." #: builtins.c:82 @@ -2340,7 +2359,7 @@ msgstr "return [n]" #: builtins.c:142 #, fuzzy -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o nustatymas] [arg ...]" #: builtins.c:144 @@ -2391,7 +2410,7 @@ msgstr "type [-afptP] pavadinimas [pavadinimas ...]" #: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [riba]" #: builtins.c:174 @@ -2437,11 +2456,13 @@ msgstr "" "KOMANDOS; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while KOMANDOS; do KOMANDOS; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until KOMANDOS; do KOMANDOS; done" #: builtins.c:200 @@ -3288,7 +3309,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -3329,7 +3352,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3341,7 +3364,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3427,7 +3450,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3449,7 +3472,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3468,7 +3491,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3489,7 +3512,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -3500,7 +3523,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 #, fuzzy msgid "" "Execute commands from a file in the current shell.\n" @@ -3519,7 +3542,7 @@ msgstr "" " Jei nurodyta ARGUMENTŲ, jie tampa poziciniais parametrais iškvietus\n" " FAILĄ." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -3533,7 +3556,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3616,7 +3639,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3624,7 +3647,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -3636,7 +3659,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -3680,7 +3703,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -3710,7 +3733,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -3760,7 +3783,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -3778,7 +3801,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3810,7 +3833,7 @@ msgid "" " children." msgstr "" -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3825,7 +3848,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3838,7 +3861,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -3855,7 +3878,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3875,7 +3898,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3891,7 +3914,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3902,7 +3925,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3923,13 +3946,14 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1647 +#: builtins.c:1648 #, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -3937,13 +3961,14 @@ msgstr "" "Išskleisti ir vykdyti KOMANDAS tol, kol galutinė komanda iš\n" " „while“ komandų grąžina klaidos kodą 0." -#: builtins.c:1659 +#: builtins.c:1660 #, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -3951,7 +3976,7 @@ msgstr "" "Išskleisti ir vykdyti KOMANDAS tol, kol galutinė komanda iš\n" " „until“ komandų grąžina klaidos kodą, nelygų 0." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3964,7 +3989,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -3978,7 +4003,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1699 +#: builtins.c:1700 #, fuzzy msgid "" "Group commands as a unit.\n" @@ -3992,7 +4017,7 @@ msgstr "" "Vykdyti eilę komandų grupėje. Tai yra vienas iš būdų nukreipti\n" " visos eilės komandų įvedimą/išvedimą." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4006,7 +4031,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4017,7 +4042,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -4045,7 +4070,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4099,7 +4124,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -4130,7 +4155,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -4157,7 +4182,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -4186,7 +4211,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -4206,7 +4231,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1937 +#: builtins.c:1938 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -4230,6 +4255,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -4257,7 +4284,7 @@ msgstr "" " Jei pateiktas parametras -v, išvedimas įrašomas į aplinkos kintamąjį\n" " KINT, užuot spausdinus į standartinį išvedimą." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4288,7 +4315,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:2001 +#: builtins.c:2004 #, fuzzy msgid "" "Display possible completions depending on the options.\n" @@ -4306,7 +4333,7 @@ msgstr "" " Jei pateiktas nebūtinasis ŽODŽIO argumentas, išvedami įrašai,\n" " atitinkantys ŽODĮ." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -4338,7 +4365,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4380,13 +4407,17 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +#, fuzzy, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: netaisyklingas veiksmo pavadinimas" + #, fuzzy #~ msgid "" #~ "Returns the context of the current subroutine call.\n" diff --git a/po/nb.gmo b/po/nb.gmo index 894af6926..8d59f1d2d 100644 Binary files a/po/nb.gmo and b/po/nb.gmo differ diff --git a/po/nb.po b/po/nb.po index cdeff4d16..1a2da59c4 100644 --- a/po/nb.po +++ b/po/nb.po @@ -1,82 +1,78 @@ # Norwegian (bokmål) translation of GNU Bash # Copyright (C) 2019 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. +# Johnny A. Solbu , 2022. # Åka Sikrom , 2015-2019. # msgid "" msgstr "" -"Project-Id-Version: bash-5.0\n" +"Project-Id-Version: bash-5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2019-01-08 19:40+0100\n" -"Last-Translator: Åka Sikrom \n" -"Language-Team: Norwegian Bokmaal \n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-07-03 20:40+0200\n" +"Last-Translator: Johnny A. Solbu \n" +"Language-Team: Norwegian Bokmaal \n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2.3\n" #: arrayfunc.c:66 msgid "bad array subscript" msgstr "feil i tabell-underskript" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: fjerner navnref-egenskap" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: indeksert tabell kan ikke konverteres til assosiativ tabell" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: ugyldig nøkkel for assosiativ tabell" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: kan ikke tildeles ikke-numerisk indeks" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: underskript må brukes ved tildeling av assosiative tabeller" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: klarte ikke å opprette: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: fant ikke tastaturoppsett for kommando" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: første ikke-blanktegn må være «\"»" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "avsluttende «%c» mangler i %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: kolon-skilletegn mangler" -#: bashline.c:4555 -#, fuzzy, c-format +#: bashline.c:4733 +#, c-format msgid "`%s': cannot unbind in command keymap" -msgstr "«%s»: klarte ikke å fjerne tildeling" +msgstr "«%s»: kan ikke oppheve bindingen i kommandotastaturet" #: braces.c:327 #, c-format @@ -93,7 +89,7 @@ msgstr "brace-utvidelse: klarte ikke å tildele minne for %u elementer" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "brace-utvidelse: klarte ikke å tildele minne for «%s»" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "«%s»: ugyldig alias" @@ -125,7 +121,7 @@ msgstr "%s er ikke tilknyttet en knapp.\n" #: builtins/bind.def:340 #, c-format msgid "%s can be invoked via " -msgstr "%s kan startes via" +msgstr "%s kan startes via " #: builtins/bind.def:378 builtins/bind.def:395 #, c-format @@ -141,7 +137,6 @@ msgid "only meaningful in a `for', `while', or `until' loop" msgstr "gir bare mening i «for»-, «while»- og «until»-sløyfer" #: builtins/caller.def:136 -#, fuzzy msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -153,24 +148,18 @@ msgid "" " current one; the top frame is frame 0." msgstr "" "Vis konteksten for gjeldende underrutine-kall.\n" -" \n" -" Hvis UTTRykk ikke er valgt, vises «$line $filename». Med UTTRykk vises\n" -" «$line $subroutine $filename». Denne ekstrainformasjonen kan brukes\n" -" til stabelsporing.\n" -" \n" -" Verdien av UTTRykk viser hvor mange kall-rammer programmet skal bevege " -"seg\n" -" gjennom tilbake fra gjeldende ramme. Øverste ramme er 0.\n" -" \n" -" Avslutningsstatus:\n" -" Status er 0, med mindre skallet ikke kjører en skallfunksjon eller\n" -" valgt UTTRykk er ugyldig." +" Uten EXPR, returnerer \"$line $filnavn\". Med EXPR, returnerer\n" +" \"$line $subrutine $filename denne ekstra informasjonen kan brukes til å\n" +" gi en stabelsporing.\n" +" \n" +" Verdien til EXPR indikerer hvor mange anropsrammer som skal gå tilbake før\n" +" nåværende; topprammen er ramme 0." #: builtins/cd.def:327 msgid "HOME not set" msgstr "HOME har ingen verdi" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "for mange argumenter" @@ -190,14 +179,14 @@ msgstr "linje %d: " #: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " -msgstr "advarsel:" +msgstr "advarsel: " #: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: bruk: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: valget krever et argument" @@ -212,7 +201,7 @@ msgstr "%s: valget krever et tall-argument" msgid "%s: not found" msgstr "fant ikke %s" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: ugyldig valg" @@ -222,7 +211,7 @@ msgstr "%s: ugyldig valg" msgid "%s: invalid option name" msgstr "%s: ugyldig valgnavn" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "«%s»: ugyldig navn" @@ -235,7 +224,7 @@ msgstr "ugyldig oktal-tall" msgid "invalid hex number" msgstr "ugldig heksadesimalt tall" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "ugyldig tall" @@ -249,88 +238,93 @@ msgstr "%s: ugyldig signalspesifikasjon" msgid "`%s': not a pid or valid job spec" msgstr "«%s» er hverken hverken et PID eller en gyldig jobbspesifikasjon" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: skrivebeskyttet variabel" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s: kan ikke tildele" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s er utenfor rekkevidde" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s er utenfor rekkevidde" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: jobben finnes ikke" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: ingen jobbkontroll" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "ingen jobbkontroll" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: begrenset" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "begrenset" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ikke innebygd i skall" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "skrivefeil: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "feil under endring av terminal-egenskaper: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "feil under henting av terminal-egenskaper: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: feil under henting av gjeldende mappe: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: flertydig jobbspesifikasjon" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "hjelp er ikke tilgjengelig for denne versjonen" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: klarte ikke å fjerne verdi fra skrivebeskyttet %s" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: klarte ikke å fjerne verdi" @@ -340,108 +334,108 @@ msgstr "%s: klarte ikke å fjerne verdi" msgid "%s: invalid action name" msgstr "%s: ugyldig handlingsnavn" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: ingen spesifikasjon for fullføring" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "advarsel: valget «-F» virker kanskje ikke slik du forventer" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "advarsel: valget «-C» virker kanskje ikke slik du forventer" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "fullføringsfunksjon kjøres ikke nå" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "kan bare brukes i funksjoner" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "valget«-f» kan ikke brukes til å lage funksjoner" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: skrivebeskyttet funksjon" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: referansevariabler kan ikke være tabeller (arrays)" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: navnref.-variabler kan ikke referere til seg selv" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: sirkulær navnreferanse" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "«%s»: ugyldig variabelnavn for navnreferanse" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "valget«-f» kan ikke brukes til å lage funksjoner" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: skrivebeskyttet funksjon" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: sammensatt tabell-tideling i hermetegn er utgått" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: tabellvariabler kan ikke ødelegges på denne måten" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: assosiative tabeller kan ikke konverteres til indekserte tabeller" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: sammensatt tabell-tideling i hermetegn er utgått" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "dynamisk innlasting er ikke tilgjengelig" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "klarte ikke å åpne delt objekt %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "fant ikke %s i delt objekt %s: %s" -#: builtins/enable.def:388 -#, fuzzy, c-format +#: builtins/enable.def:422 +#, c-format msgid "%s: dynamic builtin already loaded" -msgstr "%s: ikke dynamisk innlastet" +msgstr "%s: dynamisk innebygd allerede lastet" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "innlastingsfunksjon for %s førte til feilkode (%d). Ikke lastet inn" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: ikke dynamisk innlastet" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: klarte ikke å slette: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: er en mappe" @@ -456,7 +450,7 @@ msgstr "%s: ikke en vanlig fil" msgid "%s: file is too large" msgstr "%s: fila er for stor" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: klarte ikke å kjøre binærfil" @@ -543,21 +537,20 @@ msgid "" "'\n" "\n" msgstr "" +"'\n" +"\n" #: builtins/help.def:185 #, c-format -msgid "" -"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "" -"ingen hjelpeemner samsvarer med «%s». Prøv «help help», «man -k %s» eller " -"«info %s»." +msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "ingen hjelpeemner samsvarer med «%s». Prøv «help help», «man -k %s» eller «info %s»." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: klarte ikke å åpne: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -568,32 +561,29 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" -"Disse skallkommandoene er internt definert. Skriv «help» for å se denne " -"lista.\n" +"Disse skallkommandoene er internt definert. Skriv «help» for å se denne lista.\n" "Skriv «help name» for å finne ut mer om funksjonen «name».\n" "Bruk «info bash» for å finne generell info om skallet.\n" -"Bruk «man -k» eller «info» for å finne ut mer om kommandoer som ikke er på " -"denne lista.\n" +"Bruk «man -k» eller «info» for å finne ut mer om kommandoer som ikke er på denne lista.\n" "\n" -"Stjerne (*) ved siden av et kommandonavn betyr at gjeldende kommando er " -"slått av.\n" +"Stjerne (*) ved siden av et kommandonavn betyr at gjeldende kommando er slått av.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "du kan ikke bruke flere enn ett av valgene -anrw på én gang" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "historikkposisjon" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: ugyldig tidsstempel" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: historikk-utvidelse mislyktes" @@ -616,78 +606,78 @@ msgstr "%s: argumenter må være prosess- eller jobb-ID-er" msgid "Unknown error" msgstr "Ukjent feil" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "forventet uttrykk" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: ikke en indeksert tabell" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ugyldig spesifikasjon av fildeskriptor" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ugyldig fildeskriptor: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: ugyldig linjeantall" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: ugyldig tabellopphav" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ugyldig tilbakekallsmengde" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "tomt navn på tabellvariabel" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "støtte for tabellvariabler kreves" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "«%s»: formattegn mangler" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: ugyldig spesifikasjon av tidsformat" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: ugyldig formattegn" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "advarsel: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "problem med tolkning av format: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "heks-siffer mangler for \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "unicode-siffer mangler for \\%c" @@ -728,12 +718,10 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Vis liste over mapper som blir husket. Mapper\n" @@ -820,8 +808,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" "Fjerner mapper fra mappestabelen. Hvis ingen argumenter brukes,\n" -" fjerner programmet øverste mappe fra stabelen og bytter til det som " -"deretter er øverste mappe.\n" +" fjerner programmet øverste mappe fra stabelen og bytter til det som deretter er øverste mappe.\n" " \n" " Valg:\n" " -n\tLar være å bytte mappe når mapper fjernes fra stabelen,\n" @@ -838,12 +825,12 @@ msgstr "" " \n" " Den innebygde funksjonen «dirs» viser mappestabelen." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: ugyldig spesifikasjon av tidsavbrudd" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "lesefeil: %d: %s" @@ -854,11 +841,9 @@ msgstr "du kan bare «return» fra en funksjon eller kildeskript" #: builtins/set.def:869 msgid "cannot simultaneously unset a function and a variable" -msgstr "" -"du kan ikke utføre «unset» (tømme både en funksjon og en variabel for " -"verdier) samtidig" +msgstr "du kan ikke utføre «unset» (tømme både en funksjon og en variabel for verdier) samtidig" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: ikke en tabellvariabel" @@ -877,11 +862,11 @@ msgstr "%s: klarte ikke å eksportere" msgid "shift count" msgstr "shift-antall" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "du kan ikke både definere og fjerne skallvalg samtidig" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ugyldig navn på skallvalg" @@ -948,16 +933,16 @@ msgstr "%s: ugyldig grenseargument" msgid "`%c': bad command" msgstr "«%c»: ugyldig kommando" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: klarte ikke å hente grense: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "grense" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: klarte ikke å endre grense: %s" @@ -976,7 +961,7 @@ msgstr "«%c»: ugyldig symbolsk modus-operatør" msgid "`%c': invalid symbolic mode character" msgstr "«%c»: ugyldig symbolsk modustegn" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " linje " @@ -988,7 +973,7 @@ msgstr "forrige kommando: %s\n" #: error.c:172 #, c-format msgid "Aborting..." -msgstr "Abryter …" +msgstr "Avbryter …" #. TRANSLATORS: this is a prefix for informational messages. #: error.c:287 @@ -996,96 +981,106 @@ msgstr "Abryter …" msgid "INFORM: " msgstr "INFORM: " -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "DEBUG-advarsel: " + +#: error.c:488 msgid "unknown command error" msgstr "ukjent kommandofeil" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "ugyldig kommandotype" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "ugyldig tilkobling" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "ugyldig hopp" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: utildelt variabel" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atidsavbrudd for inndata: auto-utlogging\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "klarte ikke å videresende standard inndata fra «/dev/null». %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c» er et ugyldig formattegn" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] finnes fremdeles" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "datarør-feil" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: grensa for nivåer av eval-funksjoner (%d) er overskredet" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: grensa for nivåer av kilder i kilder (%d) er overskredet" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: grensa for nivåer av funksjoner i funksjoner (%d) er overskredet" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ikke tillatt: kommandonavn kan ikke inneholde «/»" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "fant ikke kommando %s" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: kan ikke kjøres: den nødvendige filen ble ikke funnet" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: ugyldig tolk" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: klarte ikke å kjøre binærfil: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "«%s» er en innebygd spesialfunksjon" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "klarte ikke å duplisere fd %d til fd %d" @@ -1098,69 +1093,68 @@ msgstr "grensa for rekursjonsnivåer i uttrykk er overskredet" msgid "recursion stack underflow" msgstr "rekursjonsstabelen er tom" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "uttrykk inneholder syntaksfeil" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "du forsøkte å tilordne en verdi til noe som ikke er en variabel" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "variabeltildeling inneholder syntaksfeil" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "forsøkte å dele på 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "programfeil: ugyldig expassign-symbol" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "forventet «:» for betinget uttrykk" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "eksponent er lavere enn 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "forventet identifikator etter pre-økning eller pre-forminskelse" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "mangler «)»" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "syntaksfeil: forventet operand" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "syntaksfeil: ugyldig aritmetisk operatør" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (feilaktig symbol er «%s»)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "ugyldig aritmetisk grunntall" -#: expr.c:1582 -#, fuzzy +#: expr.c:1587 msgid "invalid integer constant" -msgstr "%s: ugyldig linjeantall" +msgstr "ugyldig heltallskonstant" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "verdien er for høy for grunntallet" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: feil i uttrykk\n" @@ -1169,7 +1163,7 @@ msgstr "%s: feil i uttrykk\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: fikk ikke tilgang til foreldermapper" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "klarte ikke å tilbakestille nodelay-modus for fd %d" @@ -1188,167 +1182,167 @@ msgstr "save_bash_input: mellomlager for ny fd %d finnes allerede" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp-datarør" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -msgstr "" +msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -msgstr "" +msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "kopiert pid %d finnes i kjørende jobb %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "sletter ventende bakgrunnsjobb %d med prosessgruppe %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: markert PID %5ld (%s) som levende" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: pid-en finnes ikke" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Ferdig" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Venter" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Venter(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Kjører" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Ferdig(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Avsluttet %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Ukjent status" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(kjerne lagret i fil) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "underprosess setpgid (%ld til %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld er ikke en underprosess av dette skallet" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ingen kjennskap til prosess %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: prosess %d venter" -#: jobs.c:3564 -#, fuzzy, c-format +#: jobs.c:3551 +#, c-format msgid "%s: no current jobs" -msgstr "%s: jobben finnes ikke" +msgstr "%s: ingen aktuelle jobber" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: jobben er avsluttet" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: jobb %d kjører allerede i bakgrunnen" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: slår på WNOHANG for å unngå kronisk blokkering" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: linje %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (kjerne lagret i fil)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(wd nå: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp mislyktes" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: ingen jobbkontroll i bakgrunn" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: linjeregler" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "klarte ikke å velge terminal-prosessgruppe (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "ingen jobbkontroll i dette skallet" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: mislykket premiss: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1357,49 +1351,47 @@ msgstr "" "\r\n" "malloc: %s:%d: urimelig premiss\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "ukjent" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: rotete blokk på befrielsesliste" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: ble bedt om å behandle blokk som allerede er ledig" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: ble bedt om å behandle blokk som ikke er tildelt" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: tomt. mh_nbytes er utenfor rekkevidde" -#: lib/malloc/malloc.c:1001 -#, fuzzy +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" -msgstr "free: tomt. mh_nbytes er utenfor rekkevidde" +msgstr "fri: underflyt oppdaget; magic8 er skadet" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: start- og sluttdel er av ulik størrelse" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: ble bedt om å behandle blokk som ikke er tildelt" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: tomt. mh_nbytes er utenfor rekkevidde" -#: lib/malloc/malloc.c:1141 -#, fuzzy +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" -msgstr "realloc: tomt. mh_nbytes er utenfor rekkevidde" +msgstr "realloc: underflyt oppdaget; magic8 er skadet" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start- og sluttdel er av ulik størrelse" @@ -1441,22 +1433,22 @@ msgstr "%s: ugyldig spesifikasjon av nettverkssti" msgid "network operations not supported" msgstr "nettverkshandlinger støttes ikke" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: klarte ikke å bytte region (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: klarte ikke å bytte region (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: klarte ikke å bytte region (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: klarte ikke å bytte region (%s): %s" @@ -1474,141 +1466,136 @@ msgstr "Du har ny e-post i $_" msgid "The mail in %s has been read\n" msgstr "Posten i %s er lest\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "syntaksfeil: aritmetisk uttrykk kreves" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "syntaksfeil: uforventet «;»" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "syntaksfeil: «((%s))»" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: %d er en ugyldig instrukstype" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-dokument ved linje %d adskilt av slutt på fil (forventet «%s»)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "" -"make_redirection: videresendinginstruks «%d» er utenfor tillatt rekkevidde" +msgstr "make_redirection: videresendinginstruks «%d» er utenfor tillatt rekkevidde" -#: parse.y:2393 +#: parse.y:2428 #, c-format -msgid "" -"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " -"truncated" -msgstr "" -"shell_getc: «shell_input_line_size» (%zu) overskrider SIZE_MAX (%lu): linja " -"er forkortet" +msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" +msgstr "shell_getc: «shell_input_line_size» (%zu) overskrider SIZE_MAX (%lu): linja er forkortet" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "grensa for maksimalt antall here-dokumenter er overskredet" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "uforventet slutt på fil (EOF) under søk etter «%c»" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "uforventet slutt på fil (EOF) under søk etter «]]»" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaksfeil i betinget uttrykk: forventet ikke symbolet «%s»" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "syntaksfeil i betinget uttrykk" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "forventet ikke symbolet «%s», men «)»" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "forventet «)»" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "«%s» er et uforventet argument for betinget unær operatør" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "uforventet argument for betinget unær operatør" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "«%s» er et uforventet symbol. Forventet betinget binær operatør" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "forventet betinget binæroperatør" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "«%s» er et uforventet argument for betinget binæroperatør" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "uforventet argument for betinget binæroperatør" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "«%c» er et uforventet symbol i en betinget kommando" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "«%s» er et uforventet symbol i en betinget kommando" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "«%d» er et uforventet symbol i en betinget kommando" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaksfeil ved «%s», som er et uforventet symbol" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "syntaksfeil ved «%s»" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "syntaksfeil: uforventet slutt på fil" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "syntaksfeil" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Bruk «%s» for å gå ut av skallet.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "uforventet slutt på fil (EOF) under søk etter «)»" @@ -1646,94 +1633,94 @@ msgstr "xtrace_set: filpeker er NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: ugyldig formattegn" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "fildeskriptor er utenfor tillatt rekkevidde" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: flertydig videresending" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: klarte ikke å overskrive fil" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ikke tillatt: klarte ikke å videresende utdata" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "klarte ikke å lage midlertidig fil for here-dokument: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: klarte ikke å knytte fd til variabel" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port støttes ikke uten nettverkstilkobling" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "videresendingsfeil: klarte ikke å duplisere fd" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "fant ikke «/tmp». Opprett denne mappa!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "«/tmp» må være et gyldig mappenavn" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "pen utskriftsmodus blir ignorert i interaktive skall" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ugyldig valg" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "klarte ikke å velge %d som uid. Effektiv uid: %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "klarte ikke å velge %d som gid. Effektiv gid: %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "klarte ikke å starte feilsøkingsverktøy. Feilsøkingsmodus slått av" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: er en mappe" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Jeg manger navn!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versjon %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1742,323 +1729,317 @@ msgstr "" "Bruk:\t%s [langt GNU-valg] [valg] …\n" "\t%s [langt GNU-valg] [valg] skriptfil …\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Lange GNU-valg:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Skallvalg:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "" -"\t«-ilrsD», «-c kommando» eller «-O kortvalg_valg»\t\t(kun programkall)\n" +msgstr "\t«-ilrsD», «-c kommando» eller «-O kortvalg_valg»\t\t(kun programkall)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t«-%s» eller «-o»\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Skriv «%s -c \"help set\"» for mer informasjon om skallvalg.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Skriv «%s -c help» for mer informasjon om innebygde skallkommandoer.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Bruk kommandoen «bashbug» for å rapportere programfeil.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "bash-nettside: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" -msgstr "" -"Generell hjelp til bruk av GNU-programvare: \n" +msgstr "Generell hjelp til bruk av GNU-programvare: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: ugyldig handling" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Ugyldig signal" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Legg på" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Forstyrr" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Avslutt" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Ugyldig instruks" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "BPT-sporing/-fanging" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "ABORT-instruks" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "EMT-instruks" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Flyttallsfeil" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Drept" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Bussfeil" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Segmenteringsfeil" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Ugyldig systemkall" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Ødelagt datarør" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Alarmklokke" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Avsluttet" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Hastende IO-tilstand" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Stoppet (signal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Fortsett" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Død eller stans av underprosess" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Stoppet (tty-inndata)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Stoppet (tty-utdata)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O klar" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "CPU-grense" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Filgrense" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarm (virtuell)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarm (profil)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Vindu endret" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Husk lås" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Brukersignal 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Brukersignal 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "HFT-inndata venter" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "strømstans er nærliggende" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "systemkræsj er nærliggende" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "flytt prosess til annen CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "programmeringsfeil" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "HFT-skjermmodus tildelt" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "HFT-skjermmodus tilbaketrukket" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "HFT-lydsekvens er fullført" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Informasjonsforespørsel" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "#%d er et ukjent signal" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "ugyldig substitutt: %2$s mangler avsluttende «%1$s»" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: klarte ikke å knytte liste til tabellmedlem" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "klarte ikke å lage datarør for substitusjon av prosess" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "klarte ikke å lage underprosess for substitusjon av prosess" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "klarte ikke å åpne navngitt datarør %s for lesing" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "klarte ikke å åpne navngitt datarør %s for skriving" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "klarte ikke å duplisere navngitt datarør %s som fd %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "kommandosubstitusjon: null-byte i inndata ignorert" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "klarte ikke å lage datarør for substitusjon av kommando" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "klarte ikke å lage underprosess for substitusjon av kommando" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: klarte ikke å duplisere datarør som fd 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: ugyldig variabelnavn for navnreferanse" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: ugyldig indirekte utvidelse" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: ugyldig variabelnavn" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: parameter har ingen verdi" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter har null-verdi eller står tomt" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: understreng-uttrykk < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: ugyldig substitusjon" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: du kan ikke tildele på denne måten" -#: subst.c:9814 -msgid "" -"future versions of the shell will force evaluation as an arithmetic " -"substitution" -msgstr "" -"fremtidige versjoner av skallet skal tvinge evaluering som en aritmetisk " -"substitusjon" +#: subst.c:10111 +msgid "future versions of the shell will force evaluation as an arithmetic substitution" +msgstr "fremtidige versjoner av skallet skal tvinge evaluering som en aritmetisk substitusjon" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "ugyldig substitusjon. %s mangler avsluttende «`»" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "ingen treff på %s" @@ -2081,137 +2062,131 @@ msgstr "forventet «)»" msgid "`)' expected, found %s" msgstr "forventet «)», men fant %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: forventet binær operatør" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: forventet unær operatør" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "«]» mangler" -#: test.c:899 -#, fuzzy, c-format +#: test.c:914 +#, c-format msgid "syntax error: `%s' unexpected" -msgstr "syntaksfeil: uforventet «;»" +msgstr "syntaksfeil: uforventet «%s»" #: trap.c:220 msgid "invalid signal number" msgstr "ugyldig signalnummer" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" -msgstr "" -"fellehåndtering: øvre grense for fellehåndteringsnivå (%d) er overskredet" +msgstr "fellehåndtering: øvre grense for fellehåndteringsnivå (%d) er overskredet" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: ugyldig verdi i «trap_list[%d]»: %p" -#: trap.c:418 +#: trap.c:416 #, c-format -msgid "" -"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "" -"run_pending_traps: SIG_DFL er signalbehandler. Sender %d (%s) til meg selv " -"på nytt" +msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_traps: SIG_DFL er signalbehandler. Sender %d (%s) til meg selv på nytt" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: %d er et ugyldig signal" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "feil under importering av definisjonen av funksjonen «%s»" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "skallnivået (%d) er for høyt. Tilbakestiller til 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ingen funksjonskontekst i gjeldende virkefelt" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variabel kan ikke tilknyttes verdi" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s: kan ikke arve verdi fra inkompatibel type" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: knytter heltall til navnreferanse" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ingen funksjonskontekst i gjeldende virkefelt" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s har exportstr som er null" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%d er et ugyldig tegn i exportstr for %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "exportstr for %s mangler «=»" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" -msgstr "" -"pop_var_context: toppen av «shell_variables» er ikke en funksjonskontekst" +msgstr "pop_var_context: toppen av «shell_variables» er ikke en funksjonskontekst" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: kontekst for «global_variables» mangler" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" -msgstr "" -"pop_scope: toppen av «shell_variables» er ikke et midlertidig miljøfelt" +msgstr "pop_scope: toppen av «shell_variables» er ikke et midlertidig miljøfelt" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: klarte ikke å åpne som FIL" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: ugyldig verdi for sporing av fildeskriptor" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: samspill-verdi er utenfor tillatt rekkevidde" #: version.c:46 version2.c:46 -#, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Opphavsrett (C) 2012 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Opphavsrett (C) 2022 Free Software Foundation, Inc." #: version.c:47 version2.c:47 -msgid "" -"License GPLv3+: GNU GPL version 3 or later \n" -msgstr "" -"Lisens GPLv3+: GNU GPL versjon 3 eller nyere \n" +msgid "License GPLv3+: GNU GPL version 3 or later \n" +msgstr "Lisens GPLv3+: GNU GPL versjon 3 eller nyere \n" #: version.c:86 version2.c:86 #, c-format @@ -2220,13 +2195,11 @@ msgstr "GNU bash, versjon %s (%s)\n" #: version.c:91 version2.c:91 msgid "This is free software; you are free to change and redistribute it." -msgstr "" -"Dette er fri programvare. Du står fritt til å endre og dele den videre." +msgstr "Dette er fri programvare. Du står fritt til å endre og dele den videre." #: version.c:92 version2.c:92 msgid "There is NO WARRANTY, to the extent permitted by law." -msgstr "" -"Det stilles INGEN GARANTI, i den grad dette tillates av gjeldende lovverk." +msgstr "Det stilles INGEN GARANTI, i den grad dette tillates av gjeldende lovverk." #: xmalloc.c:93 #, c-format @@ -2257,13 +2230,8 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] navn [navn …]" #: builtins.c:53 -msgid "" -"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" -"x keyseq:shell-command] [keyseq:readline-function or readline-command]" -msgstr "" -"bind [-lpsvPSVX] [-m tastaturoppsett] [-f filnavn] [-q navn] [-u navn] [-r " -"knappesekv] [-x knappesekv:skallkommando] [knappesekv:readline-funksjon " -"eller readline-kommando]" +msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "bind [-lpsvPSVX] [-m tastaturoppsett] [-f filnavn] [-q navn] [-u navn] [-r knappesekv] [-x knappesekv:skallkommando] [knappesekv:readline-funksjon eller readline-kommando]" #: builtins.c:56 msgid "break [n]" @@ -2294,14 +2262,12 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [arg …]" #: builtins.c:78 -#, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilnrtux] [-p] [navn[=verdi] …]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgiIlnrtux] [-p] [navn[=verdi] …] eller deklarer -p [-aAfFilnrtux] [navn ...]" #: builtins.c:80 -#, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilnrtux] [-p] navn[=verdi] …" +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgilnrtux] [-p] navn[=verdi] … eller typesett -p [-aAfFilnrtux] [navn ...]" #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2324,14 +2290,12 @@ msgid "eval [arg ...]" msgstr "eval [arg …]" #: builtins.c:96 -#, fuzzy msgid "getopts optstring name [arg ...]" -msgstr "getopts valgstreng navn [arg]" +msgstr "getopts valgstreng navn [arg ...]" #: builtins.c:98 -#, fuzzy msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" -msgstr "exec [-cl] [-a navn] [kommando [argumenter …]] [videresending …]" +msgstr "exec [-cl] [-a navn] [kommando [argument …]] [videresending …]" #: builtins.c:100 msgid "exit [n]" @@ -2362,12 +2326,8 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [mønster …]" #: builtins.c:123 -msgid "" -"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " -"[arg...]" -msgstr "" -"history [-c] [-d posisjon] [n] eller history -anrw [filnavn] eller history -" -"ps arg [arg …]" +msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +msgstr "history [-c] [-d posisjon] [n] eller history -anrw [filnavn] eller history -ps arg [arg …]" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2378,32 +2338,24 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [jobbspes … | pid …]" #: builtins.c:134 -msgid "" -"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " -"[sigspec]" -msgstr "" -"kill [-s sigspes | -n signum | -sigspes] pid | jobbspes … eller kill -l " -"[sigspes]" +msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" +msgstr "kill [-s sigspes | -n signum | -sigspes] pid | jobbspes … eller kill -l [sigspes]" #: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg …]" #: builtins.c:138 -msgid "" -"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " -"prompt] [-t timeout] [-u fd] [name ...]" -msgstr "" -"read [-ers] [-a tabell] [-d adskill] [-i tekst] [-n ntegn] [-N ntegn] [-p " -"ledetekst] [-t tidsavbrudd] [-u fd] [navn …]" +msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" +msgstr "read [-ers] [-a tabell] [-d adskill] [-i tekst] [-n ntegn] [-N ntegn] [-p ledetekst] [-t tidsavbrudd] [-u fd] [navn …]" #: builtins.c:140 msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [-abefhkmnptuvxBCHP] [-o valgnavn] [--] [arg …]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o valgnavn] [--] [arg …]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" @@ -2450,17 +2402,16 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] navn [navn …]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [grense]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT [grense]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [modus]" #: builtins.c:177 -#, fuzzy msgid "wait [-fn] [-p var] [id ...]" -msgstr "wait [-fn] [id …]" +msgstr "wait [-fn] [-p var] [id …]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2487,20 +2438,16 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case ORD in [MØNSTER [| MØNSTER] …) KOMMANDOER ;;] … esac" #: builtins.c:194 -msgid "" -"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " -"COMMANDS; ] fi" -msgstr "" -"if KOMMANDOER; then KOMMANDOER; [ elif KOMMANDOER; then KOMMANDOER; ] … " -"[ else KOMMANDOER; ] fi" +msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" +msgstr "if KOMMANDOER; then KOMMANDOER; [ elif KOMMANDOER; then KOMMANDOER; ] … [ else KOMMANDOER; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while KOMMANDOER; do KOMMANDOER; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while KOMMANDOER; do KOMMANDOER-2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until KOMMANDOER; do KOMMANDOER; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until KOMMANDOER; do KOMMANDOER-2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -2551,44 +2498,24 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [argumenter]" #: builtins.c:231 -#, fuzzy -msgid "" -"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" -"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " -"suffix] [name ...]" -msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DEI] [-o valg] [-A handling] [-G globpat] [-" -"W ordliste] [-F funksjon] [-C kommando] [-X filterpat] [-P prefiks] [-S " -"suffiks] [navn …]" +msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]" +msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o valg] [-A handling] [-G globpat] [-W ordliste] [-F funksjon] [-C kommando] [-X filterpat] [-P prefiks] [-S suffiks] [navn …]" #: builtins.c:235 -#, fuzzy -msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" -"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" -msgstr "" -"compgen [-abcdefgjksuv] [-o valg] [-A handling] [-G globpat] [-W ordliste] " -"[-F funksjon] [-C kommando] [-X filtersti] [-P prefiks] [-S suffiks] [ord]" +msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "compgen [-abcdefgjksuv] [-o valg] [-A handling] [-G globpat] [-W ordliste] [-F funksjon] [-C kommando] [-X filtersti] [-P prefiks] [-S suffiks] [ord]" #: builtins.c:239 msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o valg] [-DEI] [navn …]" #: builtins.c:242 -msgid "" -"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" -msgstr "" -"mapfile [-d skilletegn] [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-C " -"tilbakekall] [-c mengde] [tabell]" +msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "mapfile [-d skilletegn] [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-C tilbakekall] [-c mengde] [tabell]" #: builtins.c:244 -msgid "" -"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" -msgstr "" -"readarray [-d skilletegn] [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-" -"C tilbakekall] [-c mengde] [tabell]" +msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "readarray [-d skilletegn] [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-C tilbakekall] [-c mengde] [tabell]" #: builtins.c:256 msgid "" @@ -2605,8 +2532,7 @@ msgid "" " -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has " -"been\n" +" alias returns true unless a NAME is supplied for which no alias has been\n" " defined." msgstr "" "Definer eller vis alias.\n" @@ -2622,8 +2548,7 @@ msgstr "" " -p\tSkriv ut alle definerte alias i brukbart format\n" " \n" " Avslutningsstatus:\n" -" alias avslutter med positiv verdi («true»), med mindre bruker skriver " -"inn et NAVN\n" +" alias avslutter med positiv verdi («true»), med mindre bruker skriver inn et NAVN\n" " som mangler definert alias." #: builtins.c:278 @@ -2640,8 +2565,7 @@ msgstr "" " Valg:\n" " -a\tfjern alle alias-definisjoner.\n" " \n" -" Programmet avslutter som vellykket med mindre bruker velger et aliasNAVN " -"som ikke finnes." +" Programmet avslutter som vellykket med mindre bruker velger et aliasNAVN som ikke finnes." #: builtins.c:291 msgid "" @@ -2655,30 +2579,25 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" -"move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their " -"values\n" -" -s List key sequences that invoke macros and their " -"values\n" +" -S List key sequences that invoke macros and their values\n" +" -s List key sequences that invoke macros and their values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named " -"function.\n" +" -u function-name Unbind all keys which are bound to the named function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" -" -X List key sequences bound with -x and associated " -"commands\n" +" -X List key sequences bound with -x and associated commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2686,45 +2605,35 @@ msgid "" msgstr "" "Velg hurtigtaster og variabler for Readline.\n" " \n" -" Knytt en knappekombinasjon til en Readline-funksjon eller makro, eller " -"gi\n" -" verdi til en Readline-variabel. Argumentsyntaksen tilsvarer det som " -"finnes\n" +" Knytt en knappekombinasjon til en Readline-funksjon eller makro, eller gi\n" +" verdi til en Readline-variabel. Argumentsyntaksen tilsvarer det som finnes\n" " i «~/.inputrc», men må oppgis som ett argument.\n" " F.eks.: bind '\"\\C-x\\C-r\": re-read-init-file'.\n" " \n" " Valg:\n" -" -m OPPSETT Bruk valgt tastaturOPPSETT under kjøring av denne " -"kommandoen.\n" +" -m OPPSETT Bruk valgt tastaturOPPSETT under kjøring av denne kommandoen.\n" " Gyldige oppsettsnavn er «emacs», «emacs-standard»,\n" " «emacs-meta», «emacs-ctlx», «vi», «vi-move»,\n" " «vi-command» og «vi-insert».\n" " -l Vis funksjonsnavn.\n" " -P Vis funksjonsnavn og tildelinger.\n" -" -p Vis funksjoner og tildelinger i et format som kan " -"gjenbrukes\n" +" -p Vis funksjoner og tildelinger i et format som kan gjenbrukes\n" " som inndata.\n" -" -S Vis knappekombinasjoner som kaller makroer og " -"tilhørende verdier\n" -" -s Tilsvarer «-S», men i et format som kan gjenbrukes " -"i inndata.\n" +" -S Vis knappekombinasjoner som kaller makroer og tilhørende verdier\n" +" -s Tilsvarer «-S», men i et format som kan gjenbrukes i inndata.\n" " -V Vis variabelnavn og verdier\n" -" -v Tilsvarer «-V», men i et format som kan gjenbrukes " -"i inndata.\n" +" -v Tilsvarer «-V», men i et format som kan gjenbrukes i inndata.\n" " -q function-name Spør hvilke knapper som kaller aktuell funksjon.\n" -" -u function-name Fjern alle knappekombinasjoner som er tilknyttet " -"aktuell funksjon.\n" +" -u function-name Fjern alle knappekombinasjoner som er tilknyttet aktuell funksjon.\n" " -r KOMB Fjern tildeling av valgt knappeKOMBinasjon.\n" " -f FILNAVN Les knappekombinasjoner fra FILNAVN.\n" " -x KOMB:KOMMANDO\tGjør slik at valgt skallKOMMANDO kjøres når\n" " \t\t\t\tvalgt knappeKOMBinasjon trykkes.\n" -" -X Vis knappekombinasjoner som er tildelt med «-x», og " -"aktuelle kommandoer \n" +" -X Vis knappekombinasjoner som er tildelt med «-x», og aktuelle kommandoer \n" " i et format som kan gjenbrukes i inndata.\n" " \n" " Avslutningsstatus:\n" -" bind avslutter med 0, med mindre bruker tar et ukjent valg eller det " -"oppstår feil." +" bind avslutter med 0, med mindre bruker tar et ukjent valg eller det oppstår feil." #: builtins.c:330 msgid "" @@ -2766,8 +2675,7 @@ msgid "" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the " -"function.\n" +" as a shell function, but need to execute the builtin within the function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" @@ -2777,8 +2685,7 @@ msgstr "" " \n" " Kjør SKALLFUNKSJON med valgte ARGumenter uten å slå opp\n" " kommandonavn. Dette er nyttig når du vil re-implementere en innebygd\n" -" skallkommando som en funksjon, samtidig som du kjører den innenfor en " -"skallfunksjon.\n" +" skallkommando som en funksjon, samtidig som du kjører den innenfor en skallfunksjon.\n" " \n" " Avslutningsstatus:\n" " Statuskoden er den samme som aktuell SKALLFUNKSJON gir, eller\n" @@ -2805,8 +2712,7 @@ msgstr "" " «$line $subroutine $filename». Denne ekstrainformasjonen kan brukes\n" " til stabelsporing.\n" " \n" -" Verdien av UTTRykk viser hvor mange kall-rammer programmet skal bevege " -"seg\n" +" Verdien av UTTRykk viser hvor mange kall-rammer programmet skal bevege seg\n" " gjennom tilbake fra gjeldende ramme. Øverste ramme er 0.\n" " \n" " Avslutningsstatus:\n" @@ -2817,22 +2723,16 @@ msgstr "" msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of " -"the\n" +" Change the current directory to DIR. The default DIR is the value of the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory " -"containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon " -"(:).\n" -" A null directory name is the same as the current directory. If DIR " -"begins\n" +" The variable CDPATH defines the search path for the directory containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" +" A null directory name is the same as the current directory. If DIR begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is " -"set,\n" -" the word is assumed to be a variable name. If that variable has a " -"value,\n" +" If the directory is not found, and the shell option `cdable_vars' is set,\n" +" the word is assumed to be a variable name. If that variable has a value,\n" " its value is used for DIR.\n" " \n" " Options:\n" @@ -2848,13 +2748,11 @@ msgid "" " \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" -" `..' is processed by removing the immediately previous pathname " -"component\n" +" `..' is processed by removing the immediately previous pathname component\n" " back to a slash or the beginning of DIR.\n" " \n" " Exit Status:\n" -" Returns 0 if the directory is changed, and if $PWD is set successfully " -"when\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" " -P is used; non-zero otherwise." msgstr "" "Bytt arbeidsmappe for skallet.\n" @@ -2867,8 +2765,7 @@ msgstr "" " Et null-mappenavn er det samme som gjeldende mappe. Hvis MAP begynner\n" " med skråstrek (/), brukes ikke CDPATH.\n" " \n" -" Hvis valgt mappe ikke finnes, og skallvalget «cdable_vars» har en " -"verdi,\n" +" Hvis valgt mappe ikke finnes, og skallvalget «cdable_vars» har en verdi,\n" " antas ordet å være et variabelnavn. Hvis den variabelen har en verdi,\n" " brukes denne verdien som MAP.\n" " \n" @@ -2887,8 +2784,7 @@ msgstr "" " én skråstrek tilbake eller til begynnelsen av MAP.\n" " \n" " Avslutningsstatus:\n" -" Status er 0 hvis skallet har byttet mappe, og hvis $PWD er valgt uten " -"problemer\n" +" Status er 0 hvis skallet har byttet mappe, og hvis $PWD er valgt uten problemer\n" " ved bruk av «-P». Ellers er status noe annet enn 0." #: builtins.c:425 @@ -2964,8 +2860,7 @@ msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke " -"commands\n" +" information about the specified COMMANDs. Can be used to invoke commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -2979,10 +2874,8 @@ msgid "" msgstr "" "Kjør en enkel kommando, eller vis informasjon om kommandoer.\n" " \n" -" Kjører valgt KOMMANDO med ARG uten oppslag av skallfunksjoner, eller " -"viser\n" -" informasjon om valgte KOMMANDOer. Dette kan brukes til å kalle " -"kommandoer\n" +" Kjører valgt KOMMANDO med ARG uten oppslag av skallfunksjoner, eller viser\n" +" informasjon om valgte KOMMANDOer. Dette kan brukes til å kalle kommandoer\n" " på disk når det finens en funksjon med samme navn.\n" " \n" " Valg:\n" @@ -2992,11 +2885,9 @@ msgstr "" " -V\tskriv ut en mer detaljert beskrivelse av hver KOMMANDO\n" " \n" " Avslutningsstatus:\n" -" Samme som statuskoden fra KOMMANDO, eller mislykket hvis KOMMANDO ikke " -"finnes." +" Samme som statuskoden fra KOMMANDO, eller mislykket hvis KOMMANDO ikke finnes." #: builtins.c:490 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3029,8 +2920,7 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the " -"`local'\n" +" When used in a function, `declare' makes NAMEs local, as with the `local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" @@ -3048,6 +2938,7 @@ msgstr "" " \tkildefil kommer i tillegg ved feilsøking)\n" " -g\tlag globale variabler ved bruk innenfor en skallfunksjon\n" " \t(ignoreres ved annen bruk)\n" +" -I\thvis du oppretter en lokal variabel, arv attributtene og verdien\n" " -p\tvis attributter og verdi av hvert valgt NAVN\n" " \n" " Valg som justerer attributter:\n" @@ -3055,8 +2946,7 @@ msgstr "" " -A\tgjør valgte NAVN til assosiative tabeller (hvis det støttes)\n" " -i\tgi valgte NAVN attributten «integer» (heltall)\n" " -l\tkonverter valgte NAVN til små bokstaver\n" -" -n\tgjør valgt NAVN til en referanse til variabelen med egen verdi som " -"navn\n" +" -n\tgjør valgt NAVN til en referanse til variabelen med egen verdi som navn\n" " -r\tskrivebeskytt valgte NAVN\n" " -t\tgi valgte NAVN attirbutten «trace»\n" " -u\tkonverter valgte NAVN til store bokstaver\n" @@ -3103,8 +2993,7 @@ msgstr "" " Lag en lokal variabel med valgt NAVN og VERDI. Du kan foreta\n" " VALG i henhold til kommandoen «declare».\n" " \n" -" Lokale variabler kan bare brukes innenfor en funksjon. De er kun " -"synlige\n" +" Lokale variabler kan bare brukes innenfor en funksjon. De er kun synlige\n" " for funksjonen de lages innenfor, samt underfunksjoner.\n" " \n" " Avslutningsstatus:\n" @@ -3115,8 +3004,7 @@ msgstr "" msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by " -"a\n" +" Display the ARGs, separated by a single space character and followed by a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -3140,11 +3028,9 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" -" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " -"HHHH.\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n" " \t\tHHHH can be one to four hex digits.\n" -" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " -"value\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n" " \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" @@ -3236,8 +3122,7 @@ msgstr "" " \n" " Valg:\n" " -a\tskriv ut en liste som viser hvilke kommandoer som er slått på\n" -" -n\tslå av hvert valgt NAVN, eller vis en liste over kommandoer som er " -"slått av\n" +" -n\tslå av hvert valgt NAVN, eller vis en liste over kommandoer som er slått av\n" " -p\tskriv ut liste over kommandoer i et gjenbrukbart format\n" " -s\tbare skriv ut navn på innebygde Posix-spesialkommandoer\n" " \n" @@ -3257,8 +3142,7 @@ msgstr "" msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the " -"shell,\n" +" Combine ARGs into a single string, use the result as input to the shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" @@ -3273,7 +3157,6 @@ msgstr "" " Samme som valgt kommando, eller vellykket hvis kommando er null." #: builtins.c:652 -#, fuzzy msgid "" "Parse option arguments.\n" " \n" @@ -3326,17 +3209,13 @@ msgstr "" " kalles, laster inn navnet hvis det ikke finnes, og\n" " indeks for neste argument som skal behandles i skallvariabelen OPTIND.\n" " OPTIND lastes inn til 1 hver gang skallet eller et skallskript kjøres.\n" -" Når et valg krever et argument plasseres argumentet i skallvariabelen " -"OPTARG.\n" +" Når et valg krever et argument plasseres argumentet i skallvariabelen OPTARG.\n" " \n" -" getopts rapporterer feil på én av to måter. Hvis første tegn i " -"VALGSTRENG\n" +" getopts rapporterer feil på én av to måter. Hvis første tegn i VALGSTRENG\n" " er kolon, rapporteres feil uten direkte feilmeldinger til bruker.\n" " Hvis getopts ser et ugyldig valg, plasseres aktuelt valgtegn i OPTARG.\n" -" Hvis et obligatorisk argument ikke er gitt, legger getopts et «:» i NAVN " -"og\n" -" bruker oppdaget valgtegn som OPTARG. Hvis getopts ikke er i " -"stillemodus,\n" +" Hvis et obligatorisk argument ikke er gitt, legger getopts et «:» i NAVN og\n" +" bruker oppdaget valgtegn som OPTARG. Hvis getopts ikke er i stillemodus,\n" " og ser et ugyldig valg, brukes «?» som NAVN, og OPTARG tømmes.\n" " Hvis et obligatorisk argument ikke er gitt, legger getopts et «?»\n" " i NAVN, tømmer OPTARG og skriver ut en feilmelding.\n" @@ -3345,7 +3224,7 @@ msgstr "" " av feilmeldinger, selv hvis første tegn i VALGSTRENG ikke er kolon.\n" " OPTERR har verdien 1 som standard.\n" " \n" -" Getopts tolker vanligvis posisjonsparametre ($0 - $9), men hvis\n" +" Getopts tolker vanligvis posisjonsparametre, men hvis\n" " flere argumenter er gitt, blir disse tolket i stedet.\n" " \n" " Avslutningsstatus:\n" @@ -3357,8 +3236,7 @@ msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " -"specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3366,19 +3244,16 @@ msgid "" " -c\texecute COMMAND with an empty environment\n" " -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, " -"unless\n" +" If the command cannot be executed, a non-interactive shell exits, unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error " -"occurs." +" Returns success unless COMMAND is not found or a redirection error occurs." msgstr "" "Erstatt skallet med valgt kommando.\n" " \n" " Kjør KOMMANDO, og erstatt dette skallet med valgt program.\n" -" ARGUMENTER sendes videre til valgt KOMMANDO. Hvis KOMMANDO ikke er " -"valgt,\n" +" ARGUMENTER sendes videre til valgt KOMMANDO. Hvis KOMMANDO ikke er valgt,\n" " blir videresendinger brukt i gjeldende skall.\n" " \n" " Valg:\n" @@ -3386,13 +3261,11 @@ msgstr "" " -c\t\tkjør valgt KOMMANDO med et tomt miljø\n" " -l\t\tbruk bindestrek som argument nummer null for COMMAND\n" " \n" -" Hvis kommandoen ikke kan kjøres, avsluttes ikke-interaktivt skall, med " -"mindre\n" +" Hvis kommandoen ikke kan kjøres, avsluttes ikke-interaktivt skall, med mindre\n" " skallvalget «execfail» er brukt.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre valgt KOMMANDO ikke finnes eller det oppstår en " -"videresendingsfeil." +" Vellykket, med mindre valgt KOMMANDO ikke finnes eller det oppstår en videresendingsfeil." #: builtins.c:715 msgid "" @@ -3410,29 +3283,25 @@ msgstr "" msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not " -"executed\n" +" Exits a login shell with exit status N. Returns an error if not executed\n" " in a login shell." msgstr "" "Avslutt et innloggingsskall.\n" " \n" -" Avslutter et innloggingsskall med status N. Dette gir feilmelding hvis " -"det\n" +" Avslutter et innloggingsskall med status N. Dette gir feilmelding hvis det\n" " ikke kjøres i et innloggingsskall." #: builtins.c:734 msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history " -"list.\n" +" fc is used to list or edit and re-execute commands from the history list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then " -"EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -3446,20 +3315,16 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error " -"occurs." +" Returns success or status of executed command; non-zero if an error occurs." msgstr "" "Vis eller kjør kommandoer fra historikklista.\n" " \n" -" fc brukes til å vise list eller redigere og kjøre kommandoer på nytt fra " -"historikklista.\n" -" FØRSTE og SISTE kan være tall som angir rekkevidde. FØRSTE kan også være " -"en\n" +" fc brukes til å vise list eller redigere og kjøre kommandoer på nytt fra historikklista.\n" +" FØRSTE og SISTE kan være tall som angir rekkevidde. FØRSTE kan også være en\n" " streng, som betyr nyeste kommando som begynner med denne strengen.\n" " \n" " Valg:\n" -" -e ENAME\tvelg hvilket redigeringsprogram som skal brukes. Standard er " -"FCEDIT, evt. EDITOR\n" +" -e ENAME\tvelg hvilket redigeringsprogram som skal brukes. Standard er FCEDIT, evt. EDITOR\n" " \t\teller vi\n" " -l \tvis linjer i stedet for å redigere\n" " -n\tikke vis linjenumre\n" @@ -3473,8 +3338,7 @@ msgstr "" " betyr å kjøre forrige kommando.\n" " \n" " Avslutningsstatus:\n" -" Enten vellykket, samme som kjørt kommando eller noe annet enn null hvis " -"det oppstår feil." +" Enten vellykket, samme som kjørt kommando eller noe annet enn null hvis det oppstår feil." #: builtins.c:764 msgid "" @@ -3494,17 +3358,14 @@ msgstr "" " allerede oppfattes som gjeldende i skallet.\n" " \n" " Avslutningsstatus:\n" -" Samme som kommandoen som legges i forgrunnen, eller mislykket hvis det " -"oppstår feil." +" Samme som kommandoen som legges i forgrunnen, eller mislykket hvis det oppstår feil." #: builtins.c:779 msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if " -"they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's " -"notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" @@ -3513,8 +3374,7 @@ msgstr "" "Flytt jobber til bakgrunnen.\n" " \n" " Plasser jobber med id-er JOB_SPEC i bakgrunnen, som om de\n" -" ble startet med «&». Hvis JOB_SPEC ikke er oppgitt, brukes jobben som " -"allerede\n" +" ble startet med «&». Hvis JOB_SPEC ikke er oppgitt, brukes jobben som allerede\n" " som gjeldende i skallet.\n" " \n" " Avslutningsstatus:\n" @@ -3525,8 +3385,7 @@ msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is " -"displayed.\n" +" no arguments are given, information about remembered commands is displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3556,8 +3415,7 @@ msgstr "" " -t\t\tskriv ut lagret plassering av valgt(e) NAVN, med\n" " \t\tNAVN foran aktuell plassering hvis flere NAVN er valgt\n" " Argumenter:\n" -" NAVN\t\tProgrammet søker etter hvert NAVN i $PATH og legger det til i " -"lista\n" +" NAVN\t\tProgrammet søker etter hvert NAVN i $PATH og legger det til i lista\n" " \t\tover lagrede kommandoer.\n" " \n" " Avslutningsstatus:\n" @@ -3581,8 +3439,7 @@ msgid "" " PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is " -"given." +" Returns success unless PATTERN is not found or an invalid option is given." msgstr "" "Vis informasjon om innebygde kommandoer.\n" " \n" @@ -3600,8 +3457,7 @@ msgstr "" " MØNSTER\tVelger hjelpeemne\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre et MØNSTER ikke finnes eller bruker tar et ugyldig " -"valg." +" Vellykket, med mindre et MØNSTER ikke finnes eller bruker tar et ugyldig valg." #: builtins.c:842 msgid "" @@ -3631,8 +3487,7 @@ msgid "" " \n" " If the HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed " -"otherwise.\n" +" with each displayed history entry. No time stamps are printed otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." @@ -3648,8 +3503,7 @@ msgstr "" "\t\tNegativ posisjon teller fra slutten.\n" " \n" " -a\tlegg til linjer fra gjeldende økt i historikkfil\n" -" -n\tles alle historikklinjer som ikke allerede er lest inn fra " -"historikkfil\n" +" -n\tles alle historikklinjer som ikke allerede er lest inn fra historikkfil\n" " -r\tles historikkfil og legg til innhold i historikkliste\n" " -w\tlagre gjeldende historikk i historikkfil\n" " \n" @@ -3707,8 +3561,7 @@ msgstr "" " jobber er erstattet med prosess-ID-en til gjeldende prosessgruppeleder.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår " -"feil.\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil.\n" " Hvis «-x» er valgt, hentes statuskode fra aktuell KOMMANDO." #: builtins.c:906 @@ -3734,8 +3587,7 @@ msgstr "" " \n" " Valg:\n" " -a\tfjern alle jobber hvis JOBBSPES ikke er angitt\n" -" -h\tmarker hver JOBBSPES slik at SIGHUP ikke sendes til jobben hvis " -"skallet\n" +" -h\tmarker hver JOBBSPES slik at SIGHUP ikke sendes til jobben hvis skallet\n" " \tmottar et SIGHUP\n" " -r\tbare fjern kjørende jobber\n" " \n" @@ -3767,8 +3619,7 @@ msgstr "" "Send signal til en jobb.\n" " \n" " Gi prosesser (valgt med PID eller JOBBSPES) et signal\n" -" (valgt med SIGSPES eller SIGNUM). Hvis hverken SIGSPES eller SIGNUM er " -"valgt,\n" +" (valgt med SIGSPES eller SIGNUM). Hvis hverken SIGSPES eller SIGNUM er valgt,\n" " brukes SIGTERM.\n" " \n" " Valg:\n" @@ -3778,8 +3629,7 @@ msgstr "" " \tantas disse å være signalnumre som det skal vises navn på\n" " -L\ttilsvarer «-l»\n" " \n" -" Kill er en innebygget skallkommando av to grunner: den tillater bruk av " -"jobb-ID\n" +" Kill er en innebygget skallkommando av to grunner: den tillater bruk av jobb-ID\n" " i stedet for prosess-ID, og lar bruker drepe prosesser hvis grensa for\n" " antall tillatte prosesser er nådd.\n" " \n" @@ -3793,8 +3643,7 @@ msgid "" " Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" " fixed-width integers with no check for overflow, though division by 0\n" " is trapped and flagged as an error. The following list of operators is\n" -" grouped into levels of equal-precedence operators. The levels are " -"listed\n" +" grouped into levels of equal-precedence operators. The levels are listed\n" " in order of decreasing precedence.\n" " \n" " \tid++, id--\tvariable post-increment, post-decrement\n" @@ -3860,8 +3709,7 @@ msgstr "" " \n" " Skallvariabler tillates som operand. Variabelens navn erstattes med\n" " verdien (tvunget til et breddefast heltall) i et uttrykk.\n" -" Variabelen behøver ikke heltallsattributt for å kunne brukes i et " -"uttrykk.\n" +" Variabelen behøver ikke heltallsattributt for å kunne brukes i et uttrykk.\n" " \n" " Operatører regnes ut etter presedens. Underuttrykk i parentes\n" " regnes ut først, og kan overstyre overnevnte presedensregler.\n" @@ -3874,16 +3722,14 @@ msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with " -"word\n" +" if the -u option is supplied. The line is split into fields as with word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as " -"word\n" -" delimiters.\n" +" the last NAME. Only the characters found in $IFS are recognized as word\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY " -"variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -3895,8 +3741,7 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" " \t\tNCHARS characters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, " -"unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" " \t\tEOF is encountered or read times out, ignoring any\n" " \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" @@ -3914,10 +3759,8 @@ msgid "" " -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times " -"out\n" -" (in which case it's greater than 128), a variable assignment error " -"occurs,\n" +" The return code is zero, unless end-of-file is encountered, read times out\n" +" (in which case it's greater than 128), a variable assignment error occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" "Les en linje fra standard inndata og del den opp i felt.\n" @@ -3933,38 +3776,32 @@ msgstr "" " Valg:\n" " -a tabell\tknytt leste ord til sekvens-indekser i \n" " \t\ttabellvariabelen TABELL, talt fra null\n" -" -d skill\tfortsett frem til første SKILLetegn, i stedet for frem til " -"linjeskift\n" +" -d skill\tfortsett frem til første SKILLetegn, i stedet for frem til linjeskift\n" " -e\t\tbruk Readline til å hente linje\n" " -i tekst\tBruk valgt TEKST med Readline\n" -" -n n\tgå tilbake etter å ha lest N antall tegn i stedet for å vente på " -"ny linje,\n" +" -n n\tgå tilbake etter å ha lest N antall tegn i stedet for å vente på ny linje,\n" " \t\tmen bruk skilletegn hvis linja er kortere enn N\n" " \t\tles tegn før skilletegn\n" " -N N\tgå tilbake etter å ha lest nøyaktig N antall tegn, med mindre\n" " \t\tEOF eller tidsavbrudd oppstår (skilletegn ignoreres)\n" -" -p ledet\tskriv ut valgt LEDETekst uten å legge til linjeskift før " -"lesing\n" +" -p ledet\tskriv ut valgt LEDETekst uten å legge til linjeskift før lesing\n" " -r\t\tikke tillat bruk av skråstrek som skiftetegn\n" " -s\t\tikke skriv ut inndata som kommer fra en terminal\n" " -t tidsav\tavbryt og avslutt med feil hvis en hel linje med inndata\n" " \t\tikke blir lest ferdig innen valgt TIDSAVbrudd (i sekunder).\n" -" \t\tStandard avbruddstid hentes fra variabelen TMOUT. TIDSAVbrudd kan " -"være\n" +" \t\tStandard avbruddstid hentes fra variabelen TMOUT. TIDSAVbrudd kan være\n" " \t\tet brøktall. Hvis TIDSAV er 0, går read tilbake umiddelbart,\n" -" \t\tog prøver ikke å lese data. I sistnevnte tilfelle avslutter read " -"bare\n" +" \t\tog prøver ikke å lese data. I sistnevnte tilfelle avslutter read bare\n" " \t\tvellykket hvis inndata er tilgjengelig på valgt fildeskriptor.\n" " \t\tAvslutningsstatus er større enn 128 ved tidsavbrudd\n" " -u fd\t\tles fra fildeskriptor FD i stedet for standard inndata\n" " \n" " Avslutningsstatus:\n" " Null (vellykket), med mindre programmet møter EOF, får tidsavbrudd\n" -" (i så fall er verdien høyere enn 128), det oppstår en variabel-" -"tidelingsfeil,\n" +" (i så fall er verdien høyere enn 128), det oppstår en variabel-tidelingsfeil,\n" " eller valget «-u» argumenteres med en ugyldig fildeskriptor." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3984,7 +3821,7 @@ msgstr "" " Avslutningsstatus:\n" " N, eller mislykket hvis skallet ikke kjører en funksjon eller et skript." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4027,8 +3864,7 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero " -"status\n" +" or zero if no command exited with a non-zero status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -4052,8 +3888,7 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG and RETURN traps are inherited by shell " -"functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -4109,10 +3944,8 @@ msgstr "" " onecmd tilsvarer «-t»\n" " physical tilsvarer «-P»\n" " pipefail returverdi av en kommandokø er statusen for\n" -" siste kommando som avslutter med en annen status " -"enn null,\n" -" eller null hvis alle kommandoer avsluttet med " -"null\n" +" siste kommando som avslutter med en annen status enn null,\n" +" eller null hvis alle kommandoer avsluttet med null\n" " posix endre bash-oppførsel hvor standardoppførselen er\n" " annerledes enn Posix-standarden, slik at bash\n" " samsvarer med Posix\n" @@ -4122,8 +3955,7 @@ msgstr "" " xtrace tilsvarer «-x»\n" " -p Slått på når virkelig og effektiv bruker-ID ikke er like.\n" " Dette slår av behandling av fila $ENV og importering av\n" -" skallfunksjoner. Hvis du slår av dette valget, blir effektiv uid " -"og\n" +" skallfunksjoner. Hvis du slår av dette valget, blir effektiv uid og\n" " gid det samme som virkelig uid og gid.\n" " -t Avslutt når én kommando er lest og kjørt.\n" " -u Behandle udefinerte variabler som en feil.\n" @@ -4152,7 +3984,7 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket, med mindre bruker tar et ugyldig valg." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4164,8 +3996,7 @@ msgid "" " -n\ttreat each NAME as a name reference and unset the variable itself\n" " \t\trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that " -"fails,\n" +" Without options, unset first tries to unset a variable, and if that fails,\n" " tries to unset a function.\n" " \n" " Some variables cannot be unset; also see `readonly'.\n" @@ -4180,8 +4011,7 @@ msgstr "" " Valg:\n" " -f\tbehandle hvert NAVN som en skallfunksjon\n" " -v\tbehandle hvert NAVN som en skallvariabel\n" -" -n\tbehandle hvert NAVN som en navnreferanse, og tilbakestill selve " -"variabelen\n" +" -n\tbehandle hvert NAVN som en navnreferanse, og tilbakestill selve variabelen\n" " \ti stedet for variabelen den refererer til\n" " \n" " Hvis ingen valg er tatt, prøver programmet først å tømme en variabel.\n" @@ -4190,16 +4020,14 @@ msgstr "" " Enkelte variabler kan ikke tømmes. Se også «readonly».\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre bruker tar et ugyldig valg eller et NAVN er " -"skrivebeskyttet." +" Vellykket, med mindre bruker tar et ugyldig valg eller et NAVN er skrivebeskyttet." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before " -"exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -4213,10 +4041,8 @@ msgid "" msgstr "" "Gi skallvariabler eksport-attributt.\n" " \n" -" Markerer hvert valgt NAVN for automatisk eksportering til miljøet ved " -"etterfølgende\n" -" kjørte kommandoer. Hvis VERDI er oppgitt, tildeles VERDI før " -"eksportering.\n" +" Markerer hvert valgt NAVN for automatisk eksportering til miljøet ved etterfølgende\n" +" kjørte kommandoer. Hvis VERDI er oppgitt, tildeles VERDI før eksportering.\n" " \n" " Valg:\n" " -f\thenvis til skallfunksjoner\n" @@ -4226,10 +4052,9 @@ msgstr "" " Bruk argumentet«--» for å slå av videre behandling av valg.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre bruker tar et ugyldig valg, eller et NAVN er " -"ugyldig." +" Vellykket, med mindre bruker tar et ugyldig valg, eller et NAVN er ugyldig." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4251,8 +4076,7 @@ msgid "" msgstr "" "Marker skallvariabler som skrivebeskyttet.\n" " \n" -" Marker hvert valgt NAVN som skrivebeskyttet. Verdier av NAVN kan ikke " -"endres\n" +" Marker hvert valgt NAVN som skrivebeskyttet. Verdier av NAVN kan ikke endres\n" " av etterfølgende tildeling. Hvis VERDI er oppgitt, tildeles denne før\n" " variabelen markeres som skrivebeskyttet.\n" " \n" @@ -4260,8 +4084,7 @@ msgstr "" " -a\thenvis til indekserte tabellvariabler\n" " -A\thenvis til assosiative tabellvariabler\n" " -f\thenvis til skallfunksjoner\n" -" -p\tvis en liste over alle skrivebeskyttede variabler eller " -"funksjoner,\n" +" -p\tvis en liste over alle skrivebeskyttede variabler eller funksjoner,\n" " avhengig av hvorvidt «-f» er valgt\n" " \n" " Bruk argumentet «--» for å slå av videre behandling av valg.\n" @@ -4269,7 +4092,7 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket, med mindre bruker tar et ugyldig valg eller NAVN." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4287,7 +4110,7 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket, med mindre N er negativ eller større enn $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4311,7 +4134,7 @@ msgstr "" " Samme som siste kommando som ble kjørt via FILNAVN, eller\n" " mislykket hvis FILNAVN ikke kan leses." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4326,10 +4149,8 @@ msgid "" msgstr "" "Sett skallkjøring på pause.\n" " \n" -" Sett kjøring av dette skallet på pause inntil det mottar et SIGCONT-" -"signal.\n" -" Innloggingsskall kan ikke settes på pause med mindre du tvinger det " -"fram.\n" +" Sett kjøring av dette skallet på pause inntil det mottar et SIGCONT-signal.\n" +" Innloggingsskall kan ikke settes på pause med mindre du tvinger det fram.\n" " \n" " Valg:\n" " -f\ttving skallpause, selv hvis skallet er et innloggingsskall\n" @@ -4337,7 +4158,7 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket, med mindre jobbkontroll er slått av eller det oppstår feil." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4371,8 +4192,7 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last " -"read.\n" +" -N FILE True if the file has been modified since it was last read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -4393,8 +4213,7 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 " -"lexicographically.\n" +" True if STRING1 sorts before STRING2 lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -4422,8 +4241,7 @@ msgstr "" "Kontroller betinget uttrykk.\n" " \n" " Avslutter med status 0 (positiv, «true») eller 1 (negativ, «false»)\n" -" i henhold til resultatet av valgt UTTRykk. Uttrykk kan være unære eller " -"binære.\n" +" i henhold til resultatet av valgt UTTRykk. Uttrykk kan være unære eller binære.\n" " Unære uttrykk brukes ofte for å undersøke status for en fil.\n" " Streng- og tallkontroll-valg kan også brukes.\n" " \n" @@ -4451,10 +4269,8 @@ msgstr "" " -w FIL Positiv hvis FIL kan overskrives av deg.\n" " -x FIL Positiv hvis FIL kan kjøres av deg.\n" " -O FIL Positiv hvis FIL har deg som effektiv eier.\n" -" -G FIL Positiv hvis FIL har din gruppe som effektiv " -"gruppetilhørighet.\n" -" -N FIL Positiv hvis FIL er blitt endret siden den ble lest " -"sist.\n" +" -G FIL Positiv hvis FIL har din gruppe som effektiv gruppetilhørighet.\n" +" -N FIL Positiv hvis FIL er blitt endret siden den ble lest sist.\n" " \n" " FIL1 -nt FIL2 Positiv hvis FIL1 er nyere enn FIL2 (i følge\n" " endringsdato).\n" @@ -4475,18 +4291,15 @@ msgstr "" " STRENG1 != STRENG2\n" " Positiv hvis STRENGene ikke er like.\n" " STRENG1 < STRENG2\n" -" Positiv hvis STRENG1 havner over STRENG2 når de " -"sorteres leksikografisk.\n" +" Positiv hvis STRENG1 havner over STRENG2 når de sorteres leksikografisk.\n" " STRENG1 > STRENG2\n" -" Positiv hvis STRENG1 havner under STRENG2 når de " -"sorteres leksikografisk.\n" +" Positiv hvis STRENG1 havner under STRENG2 når de sorteres leksikografisk.\n" " \n" " Andre valg:\n" " \n" " -o VALG Positiv hvis skallvalget OPTION er slått på.\n" " -v VAR\t Positiv hvis skallvariabelen VAR har en verdi\n" -" -R VAR\t Positiv hvis skallvariabelen VAR har en verdi, og er en " -"navnreferanse.\n" +" -R VAR\t Positiv hvis skallvariabelen VAR har en verdi, og er en navnreferanse.\n" " ! UTTR Positiv hvis UTTR er usant.\n" " UTTR1 -a UTTR2 Positiv hvis både UTTR1 og UTTR2 er sanne.\n" " UTTR1 -o UTTR2 Positiv hvis enten UTTR1 eller UTTR2 er sanne.\n" @@ -4494,16 +4307,14 @@ msgstr "" " arg1 OP arg2 Aritmetiske tester. OP må være enten «-eq», «-ne»,\n" " «-lt», «-le», «-gt» eller «-ge».\n" " \n" -" Aritmetiske binærvalg gir positiv verdi hvis ARG1 er lik, ulik, mindre " -"enn,\n" +" Aritmetiske binærvalg gir positiv verdi hvis ARG1 er lik, ulik, mindre enn,\n" " lik-eller-mindre-enn, større enn eller større-enn-eller-lik ARG2.\n" " \n" " Avslutningsstatus:\n" -" Vellykket hvis UTTR gir positiv verdi, og mislykket hvis det gir negativ " -"verdi eller\n" +" Vellykket hvis UTTR gir positiv verdi, og mislykket hvis det gir negativ verdi eller\n" " bruker skriver inn et ugyldig argument." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4515,12 +4326,11 @@ msgstr "" " Dette er synonymt med den innebygde kommandoen «test», men\n" " siste argument må være «]» for å samsvare med «[»." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of " -"its\n" +" Prints the accumulated user and system times for the shell and all of its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4528,18 +4338,16 @@ msgid "" msgstr "" "Vis prosesstider.\n" " \n" -" Skriver ut oppsamlet bruker- og systemtid for skallet og alle " -"underprosesser.\n" +" Skriver ut oppsamlet bruker- og systemtid for skallet og alle underprosesser.\n" " \n" " Avslutningsstatus:\n" " Alltid vellykket." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives " -"signals\n" +" Defines and activates handlers to be run when the shell receives signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -4548,43 +4356,33 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " -"If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " -"If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " -"a\n" -" script run by the . or source builtins finishes executing. A " -"SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause " -"the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" +" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands " -"associated\n" +" If no arguments are supplied, trap prints the list of commands associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal " -"number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is " -"given." +" Returns success unless a SIGSPEC is invalid or an invalid option is given." msgstr "" "Fang signaler og andre hendelser.\n" " \n" -" Definerer og slår på brytere som skal kjøres når skallet mottar " -"signaler\n" +" Definerer og slår på brytere som skal kjøres når skallet mottar signaler\n" " eller havner i andre tilstander.\n" " \n" -" ARG er en kommando som skal leses og kjøres når skallet mottar signalet/-" -"ene\n" +" ARG er en kommando som skal leses og kjøres når skallet mottar signalet/-ene\n" " i henhold til SIGNALSPES. Hvis ARG er enten utelatt eller «-»,\n" " og én SIGNALSPES er brukt, tilbakestilles valgt(e) signal(er) til\n" " opprinnelig verdi. Hvis ARG er null, ignoreres SIGNALSPES av skallet\n" @@ -4592,31 +4390,26 @@ msgstr "" " \n" " Hvis en SIGNALSPES er EXIT (0), kjøres ARG når skallet avslutter.\n" " Hvis en SIGNALSPES er DEBUG, kjøres ARG før hver kommando.\n" -" Hvis en SIGNALSPES er RETURN, kjøres ARG hver gang en skallfunksjon, " -"skript\n" +" Hvis en SIGNALSPES er RETURN, kjøres ARG hver gang en skallfunksjon, skript\n" " eller innebygd kommando har kjørt ferdig. Hvis en SIGNALSPES\n" -" er ERR, kjøres ARG hver gang en feilkjørt kommando ville ført til at " -"skallet\n" +" er ERR, kjøres ARG hver gang en feilkjørt kommando ville ført til at skallet\n" " avsluttes når «-e» er valgt.\n" " \n" -" Hvis ingen argumenter er brukt, skriver trap ut en liste over " -"kommandoer\n" +" Hvis ingen argumenter er brukt, skriver trap ut en liste over kommandoer\n" " som er tilknyttet hvert signal.\n" " \n" " Valg:\n" " -l\tskriv ut en liste over signalnavn og tilknyttede numre\n" " -p\tvis trap-kommandoer som er tilknyttet hver SIGNALSPESifikasjon\n" " \n" -" Hver SIGNALSPES er enten et signalnavn fra eller et " -"signalnummer.\n" -" Signalnavn skiller mellom små og store bokstaver. Prefikset «SIG» er " -"valgfritt.\n" +" Hver SIGNALSPES er enten et signalnavn fra eller et signalnummer.\n" +" Signalnavn skiller mellom små og store bokstaver. Prefikset «SIG» er valgfritt.\n" " Du kan sende et signal til skallet med «kill -signal $$».\n" " \n" " Avslutningsstatus:\n" " Vellykket, med mindre en SIGNALSPES eller et valg er ugyldig." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4642,8 +4435,7 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not " -"found." +" Returns success if all of the NAMEs are found; fails if any are not found." msgstr "" "Vis informasjon om kommandotype.\n" " \n" @@ -4651,36 +4443,30 @@ msgstr "" " et kommandonavn.\n" " \n" " Valg:\n" -" -a\tvis alle plasseringer som inneholder en kjørbar fil med oppgitt " -"NAVN.\n" +" -a\tvis alle plasseringer som inneholder en kjørbar fil med oppgitt NAVN.\n" " \tHer inngår alle alias, innebygde kommandoer og funksjoner, med mindre\n" " \t«-p» er valgt i tillegg\n" " -f\tikke slå opp skallfunksjoner\n" " -P\ttving et søk i STI etter NAVN, selv hvis det er et alias,\n" " \tinnebygd kommando eller en funksjon, og vis navn på fila\n" " \tsom ville blitt kjørt\n" -" -p\tvis enten navn på fila som ville blitt kjørt, eller ingenting " -"hvis\n" +" -p\tvis enten navn på fila som ville blitt kjørt, eller ingenting hvis\n" " \t«type -t NAVN» ikke fører til «file».\n" " -t\tbeskriv NAVN som enten «alias», «keyword» (nøkkelord),\n" -" \t«function» (funksjon), «builtin» (innebygd kommando), «file» (fil) " -"eller \n" +" \t«function» (funksjon), «builtin» (innebygd kommando), «file» (fil) eller \n" " \t«'» (ikke funnet), if NAME is an alias, shell\n" " \n" " Argumenter:\n" " NAVN\tKommandonavn som skal tolkes.\n" " \n" " Avslutningsstatus:\n" -" Vellykket hvis alle NAVN finnes, og mislykket hvis ett eller flere ikke " -"finnes." +" Vellykket hvis alle NAVN finnes, og mislykket hvis ett eller flere ikke finnes." -#: builtins.c:1431 -#, fuzzy +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and " -"processes\n" +" Provides control over the resources available to the shell and processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -4726,8 +4512,7 @@ msgid "" msgstr "" "Endre grenser for skallressurser.\n" " \n" -" Lar deg kontrollere mengden ressurser som skal være tilgjengelig for " -"skall og\n" +" Lar deg kontrollere mengden ressurser som skal være tilgjengelig for skall og\n" " prosessene det lager på systemer som tillater det.\n" " \n" " Valg:\n" @@ -4738,9 +4523,9 @@ msgstr "" " -c\tmaksimal størrelse på opprettede kjernefiler\n" " -d\tmaksimal størrelse på datasegment av en prosess\n" " -e\tmaksimal prioritet («nice»-verdi)\n" -" -f\tmaksimal størrelse på filer som skrives av skallet og " -"underprosesser\n" +" -f\tmaksimal størrelse på filer som skrives av skallet og underprosesser\n" " -i\tmaksimalt antall ventende signaler\n" +" -k\tmaksimalt antall k-køer som er tildelt denne prosessen\n" " -l\tmaksimal minnemengde en prosess kan låse\n" " -m\tmaksimal «resident set»-størrelse\n" " -n\tmaksimalt antall åpne fildeskriptorer\n" @@ -4752,26 +4537,24 @@ msgstr "" " -u\tmaksimalt antall brukerprosesser\n" " -v\tstørrelsen på virtuelt minne\n" " -x\tmaksimalt antall fillåser\n" -" -T maksimalt antall tråder\n" +" -P\tmaksimalt antall pseudoterminaler\n" +" -R\tden maksimale tiden en sanntidsprosess kan kjøre før blokkering\n" +" -T\tmaksimalt antall tråder\n" " \n" " Det er ikke alle valg som støttes på alle plattformer.\n" " \n" " Hvis GRENSE er oppgitt, brukes denne som ny verdi for valgt ressurs.\n" -" Du kan også bruke spesialverdiene «soft» (myk), «hard», og " -"«unlimited» (ubegrenset).\n" -" Ellers skriver programmet ut gjeldende verdi av valgt ressurs. Hvis " -"ingenting\n" +" Du kan også bruke spesialverdiene «soft» (myk), «hard», og «unlimited» (ubegrenset).\n" +" Ellers skriver programmet ut gjeldende verdi av valgt ressurs. Hvis ingenting\n" " er valgt, brukes «-f».\n" " \n" -" Verdier oppgis i 1024-byte-enheter, bortsett fra «-t» som oppgis i " -"sekunder,\n" -" «-p» som oppgis i 512-byte-enheter og «-u» som er et uskalert antall " -"prosesser.\n" +" Verdier oppgis i 1024-byte-enheter, bortsett fra «-t» som oppgis i sekunder,\n" +" «-p» som oppgis i 512-byte-enheter og «-u» som er et uskalert antall prosesser.\n" " \n" " Avslutningsstatus:\n" " Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4797,35 +4580,29 @@ msgstr "" " og ellers som en symbolsk modusstreng av typen som brukes av chmod(1).\n" " \n" " Valg:\n" -" -p\tskriv ut i et format som kan gjenbrukes som inndata hvis ingen " -"MODUS er valgt\n" +" -p\tskriv ut i et format som kan gjenbrukes som inndata hvis ingen MODUS er valgt\n" " -S\tgjør utdata symbolsk (ikke skriv ut oktaltall)\n" " \n" " Avslutningsstatus:\n" " Vellykket, med mindre MODUS er ugyldig eller bruker tar et ugyldig valg." -#: builtins.c:1502 -#, fuzzy +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for each process identified by an ID, which may be a process ID or " -"a\n" +" Waits for each process identified by an ID, which may be a process ID or a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" " status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" -" If the -n option is supplied, waits for a single job from the list of " -"IDs,\n" -" or, if no IDs are supplied, for the next job to complete and returns " -"its\n" +" If the -n option is supplied, waits for a single job from the list of IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns its\n" " exit status.\n" " \n" " If the -p option is supplied, the process or job identifier of the job\n" " for which the exit status is returned is assigned to the variable VAR\n" -" named by the option argument. The variable will be unset initially, " -"before\n" +" named by the option argument. The variable will be unset initially, before\n" " any assignment. This is useful only when the -n option is supplied.\n" " \n" " If the -f option is supplied, and job control is enabled, waits for the\n" @@ -4837,51 +4614,48 @@ msgid "" " children." msgstr "" "Vent på fullføring av jobb, og skriv ut avslutningsstatus.\n" -" \n" -" Vent på valgt(e) prosess(er) (valgt med ID, som kan være prosess-ID " -"eller\n" +" \n" +" \n" +" Vent på valgt(e) prosess(er) (valgt med ID, som kan være prosess-ID eller\n" " jobbspesifikasjon), og skriv ut statuskode. Hvis ID ikke er valgt,\n" " venter programmet på alle aktive underprosesser, og avslutter\n" -" med kode null. Hvis ID er en jobbspesifikasjon, venter programmet på " -"alle\n" +" med kode null. Hvis ID er en jobbspesifikasjon, venter programmet på alle\n" " prosesser i kommandokøen for valgt jobb.\n" " \n" -" Hvis «-n» er valgt, skriver programmet ut avslutningsstatus for neste " -"jobb.\n" +" Hvis «-n» er valgt, venter på en enkelt jobb fra listen over IDer,\n" +" eller, hvis ingen IDer er oppgitt skriver programmet ut avslutningsstatus for neste jobb.\n" " \n" " Hvis «f» er valgt og jobbkontroll er slått på, venter programmet på at\n" " valgt ID skal avslutte i stedet for å vente på statusendring.\n" +" \n" " Avslutningsstatus:\n" -" Samme som siste ID, eller mislykket hvis enten ID er ugyldig eller\n" -" bruker tar et ugyldig valg." +" Samme som siste ID: mislykket hvis enten ID er ugyldig eller\n" +" bruker tar et ugyldig valg, eller hvis «-n» er oppgitt og \n" +" skallet ikke har noen uventede barne-prosesser." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for each process specified by a PID and reports its termination " -"status.\n" +" Waits for each process specified by a PID and reports its termination status.\n" " If PID is not given, waits for all currently active child processes,\n" " and the return status is zero. PID must be a process ID.\n" " \n" " Exit Status:\n" -" Returns the status of the last PID; fails if PID is invalid or an " -"invalid\n" +" Returns the status of the last PID; fails if PID is invalid or an invalid\n" " option is given." msgstr "" "Vent på ferdigstillelse av prosess, og rapporter avslutningsstatus.\n" " \n" -" Venter på hver prosess som er valgt med PID, og rapporterer avsluttende " -"statuskode.\n" -" Hvis PID ikke er valgt, venter kommandoen på alle aktive " -"underprosesser,\n" +" Venter på hver prosess som er valgt med PID, og rapporterer avsluttende statuskode.\n" +" Hvis PID ikke er valgt, venter kommandoen på alle aktive underprosesser,\n" " og avslutter med null-status. PID må være en prosess-ID.\n" " \n" " Avslutningsstatus:\n" " Samme som siste PID. Mislykket hvis PID er ugyldig, eller hvis\n" " bruker tar et ugyldig valg." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4902,7 +4676,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørte kommando." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4932,7 +4706,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørte kommando." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4960,15 +4734,14 @@ msgstr "" " består av et tall som tilsvarer antall ord, endres NAVN slik at det\n" " tilsvarer dette tallet. Hvis linja er tom, vises ORD og ledetekst på\n" " nytt. Hvis programmet møter EOF, avslutter kommandoen. Andre\n" -" verdier fører til at NAVN endres til null. Lest linje lagres i " -"variabelen\n" +" verdier fører til at NAVN endres til null. Lest linje lagres i variabelen\n" " REPLY. KOMMANDOER kjøres etter hvert utvalg frem til programmet\n" " støter på en bruddkommando.\n" " \n" " Avslutningsstatus:\n" " Samme som sist kjørt kommando." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4985,10 +4758,8 @@ msgid "" msgstr "" "Rapporter medgått tid i kommandokø-kjøring.\n" " \n" -" Kjør valgt DATARØR og skriv ut en oppsummering av reell tid, bruker-CPU-" -"tid\n" -" og system-CPU-tid som er medgått ved kjøring av DATARØR idet det " -"avsluttes.\n" +" Kjør valgt DATARØR og skriv ut en oppsummering av reell tid, bruker-CPU-tid\n" +" og system-CPU-tid som er medgått ved kjøring av DATARØR idet det avsluttes.\n" " \n" " Valg:\n" " -p\tkjør tidsoppsummering i gjenbrukbart Posix-format.\n" @@ -4998,7 +4769,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som statuskoden fra valgt DATARØR." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5016,21 +4787,16 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørte kommando." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then " -"the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " -"is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. " -"Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of " -"the\n" -" entire construct is the exit status of the last command executed, or " -"zero\n" +" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of the\n" +" entire construct is the exit status of the last command executed, or zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" @@ -5040,53 +4806,51 @@ msgstr "" " \n" " Kjør lista «if KOMMANDOER». Hvis avslutningsstatus er null, kjøres\n" " «then KOMMANDOER». Ellers kjøres hver «elif KOMMANDOER»-liste\n" -" etter tur. Hvis status er null ved sistnevnte, kjøres tilhørende «then " -"KOMMANDOER»\n" +" etter tur. Hvis status er null ved sistnevnte, kjøres tilhørende «then KOMMANDOER»\n" " og if-kommandoen avslutter. Ellers kjøres evt. lista «else KOMMANDOER».\n" -" Avslutningsstatus for hele betingelsesuttrykket er statuskoden fra sist " -"kjørt kommando,\n" +" Avslutningsstatus for hele betingelsesuttrykket er statuskoden fra sist kjørt kommando,\n" " eller null hvis ingen tilstand er sann.\n" " \n" " Avslutningsstatus:\n" " Samme som sist kjørt kommando." -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Kjør kommandoer så lenge en test lykkes.\n" " \n" -" Utvid og kjør KOMMANDOER så lenge siste kommando i\n" +" Utvid og kjør KOMMANDOER-2 så lenge siste kommando i\n" " «while» avslutter med null-status.\n" " \n" " Avslutningsstatus:\n" -" Samme som sist kjørte kommando." +" Returnerer statusen til den siste kommandoen som ble kjørt." -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Kjør kommandoer så lenge en test mislykkes.\n" " \n" -" Utvid og kjør KOMMANDOER så lenge siste kommando i\n" +" Utvid og kjør KOMMANDOER-2 så lenge siste kommando i\n" " «until» avslutter med en annen statuskode enn null.\n" " \n" " Avslutningsstatus:\n" -" Samme som sist kjørte kommando." +" Returnerer statusen til den siste kommandoen som ble kjørt." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5100,22 +4864,19 @@ msgid "" msgstr "" "Lag medprosess med valgt NAVN.\n" " \n" -" Kjør valgt KOMMANDO synkront, med standard inn- og utdata for " -"kommandoen\n" -" som er tilkoblet via et datarør til fildeskriptorer med indeks 0 og 1 i " -"en tabellvariabel \n" +" Kjør valgt KOMMANDO synkront, med standard inn- og utdata for kommandoen\n" +" som er tilkoblet via et datarør til fildeskriptorer med indeks 0 og 1 i en tabellvariabel \n" " med oppgitt NAVN i kjørende skall.\n" "\v StandardNAVN er «COPROC».\n" " \n" " coproc avslutter med kode 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is " -"invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" @@ -5124,16 +4885,14 @@ msgid "" msgstr "" "Definer en skallfunksjon.\n" " \n" -" Lag en skallfunksjon med valgt NAVN. NAVN kjører KOMMANDOer i gjeldende " -"skallkontekst\n" -" når det kjøres som en enkel kommando, og argumenter videresendes til " -"funksjonen som\n" +" Lag en skallfunksjon med valgt NAVN. NAVN kjører KOMMANDOer i gjeldende skallkontekst\n" +" når det kjøres som en enkel kommando, og argumenter videresendes til funksjonen som\n" " $1…$n. Funksjonens navn ligger i $FUNCNAME.\n" " \n" " Avslutningsstatus:\n" " Vellykket, med mindre valgt NAVN er skrivebeskyttet." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5151,7 +4910,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørt kommando." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5169,14 +4928,12 @@ msgstr "" " Tilsvarer argumentet «JOBBSPES» for kommandoen «fg». Gjenoppta\n" " en jobb som venter eller kjører i bakgrunnen. «JOBBSPES» kan\n" " enten være et jobbnavn eller -nummer. Bruk «&» etter JOBBSPES for å\n" -" legge jobben i bakgrunnen, som om jobbspesifikasjonen var et argument " -"for «bg».\n" +" legge jobben i bakgrunnen, som om jobbspesifikasjonen var et argument for «bg».\n" " \n" " Avslutningsstatus:\n" " Samme som statuskoden for gjenopptatt jobb." -#: builtins.c:1726 -#, fuzzy +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5194,16 +4951,13 @@ msgstr "" " Avslutningsstatus:\n" " 1 hvis UTTRYKK blir 0, og ellers 0." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the " -"conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries " -"used\n" -" by the `test' builtin, and may be combined using the following " -"operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries used\n" +" by the `test' builtin, and may be combined using the following operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -5229,10 +4983,8 @@ msgstr "" " \n" " ( UTTRYKK )\tViser verdien av UTTRYKK\n" " ! UTTRYKK\t\tPositiv hvis UTTRYKK er usant, ellers negativ\n" -" UTTR1 && UTTR2\tPositiv hvis både UTTR1 og UTTR2 er sant, ellers " -"negativ\n" -" UTTR1 || UTTR2\tPositiv hvis enten UTTR1 eller UTTR2 er sant, ellers " -"negativ\n" +" UTTR1 && UTTR2\tPositiv hvis både UTTR1 og UTTR2 er sant, ellers negativ\n" +" UTTR1 || UTTR2\tPositiv hvis enten UTTR1 eller UTTR2 er sant, ellers negativ\n" " \n" " Ved bruk av «==» og «!=» brukes etterfølgende streng som\n" " et mønster, og programmet utfører mønsterutlikning.\n" @@ -5245,7 +4997,7 @@ msgstr "" " Avslutningsstatus:\n" " 0 eller 1, avhengig av UTTRYKKets verdi." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5305,11 +5057,9 @@ msgstr "" " \t\tfor mapper som er brukt som argumenter for «cd».\n" " GLOBIGNORE\tEn kolondelt liste over mønstre som beskriver filnavn\n" " \t\tsom skal ignoreres av stinavn-utvidelse.\n" -" HISTFILE\tNavn på fil hvor kommandohistorikk for gjeldende bruker er " -"lagret.\n" +" HISTFILE\tNavn på fil hvor kommandohistorikk for gjeldende bruker er lagret.\n" " HISTFILESIZE\tMaksimalt antall linjer denne fila kan inneholde.\n" -" HISTSIZE\tMaksimalt antall historikklinjer et kjørende skall har tilgang " -"til.\n" +" HISTSIZE\tMaksimalt antall historikklinjer et kjørende skall har tilgang til.\n" " HOME\tFullstendig sti til gjeldende brukers hjemmemappe.\n" " HOSTNAME\tNavn på gjeldende vert.\n" " HOSTTYPE\tType prosessor denne versjonen av Bash kjører på.\n" @@ -5335,8 +5085,7 @@ msgstr "" " TIMEFORMAT\tUtdata-format for tidsstatistikk som vises av\n" " \t\tdet reserverte ordet «time».\n" " auto_resume\tEt kommandoord som dukker opp alene på en linje\n" -" \t\tblir kontrollert mot lista over ventende jobber. Hvis kommandoen " -"finnes\n" +" \t\tblir kontrollert mot lista over ventende jobber. Hvis kommandoen finnes\n" " \t\ti lista, flyttes den til forgrunnen.\n" " \t\tVerdien «exact» betyr at kommandoen må være helt lik\n" " \t\tet kommandonavn i lista over ventende jobber.\n" @@ -5350,7 +5099,7 @@ msgstr "" " HISTIGNORE\tEn kolondelt liste over mønstre som bestemmer\n" " \t\thvilke kommandoer som skal lagres i historikklista.\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5406,7 +5155,7 @@ msgstr "" " Vellykket, med mindre et ugyldig argument er brukt eller\n" " mappebytte mislykkes." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5435,8 +5184,7 @@ msgstr "" "Fjern mapper fra stabelen.\n" " \n" " Fjern oppføringer fra mappestabelen. Hvis ingen argumenter er gitt,\n" -" fjernes øverste mappe fra stabelen, og tar i bruk ny toppmappe som " -"arbeidsmappe.\n" +" fjernes øverste mappe fra stabelen, og tar i bruk ny toppmappe som arbeidsmappe.\n" " \n" " Valg:\n" " -n\tIkke bytt mappe når mapper fjernes fra stabelen\n" @@ -5447,8 +5195,7 @@ msgstr "" " F.eks.: «popd +0» fjerner første mappe, og «popd +1» mappe nr. 2.\n" " \n" " -N\tFjern N-te mappe (talt fra null til høyre, etter «dirs»).\n" -" F.eks.: «popd -0» fjerner siste mappe, og «popd -1» nest siste " -"mappe.\n" +" F.eks.: «popd -0» fjerner siste mappe, og «popd -1» nest siste mappe.\n" " \n" " Bruk kommandoen «dirs» for å vise mappestabelen.\n" " \n" @@ -5456,7 +5203,7 @@ msgstr "" " Vellykket, med mindre et ugyldig argument er brukt eller\n" " mappebytte mislykkes." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5502,7 +5249,7 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5523,10 +5270,8 @@ msgid "" msgstr "" "Juster og tilbakestill skallvalg.\n" " \n" -" Endre innstilling for hvert VALGNAVN. Hvis ingen valg/argumenter er " -"brukt,\n" -" skriver programmet ut alle oppgitte VALGNAVN og viser hvorvidt de har en " -"verdi.\n" +" Endre innstilling for hvert VALGNAVN. Hvis ingen valg/argumenter er brukt,\n" +" skriver programmet ut alle oppgitte VALGNAVN og viser hvorvidt de har en verdi.\n" " Hvis ingen VALGNAVN er oppgitt, skriver programmet ut alle skallvalg.\n" " \n" " Valg:\n" @@ -5540,7 +5285,7 @@ msgstr "" " Vellykket hvis VALGNAVN er slått på, og mislykket hvis enten bruker \n" " tar et ugyldig valg eller VALGNAVN er slått av." -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5548,34 +5293,29 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: " -"plain\n" -" characters, which are simply copied to standard output; character " -"escape\n" +" FORMAT is a character string which contains three types of objects: plain\n" +" characters, which are simply copied to standard output; character escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next " -"successive\n" +" format specifications, each of which causes printing of the next successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T\toutput the date-time string resulting from using FMT as a " -"format\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" -" specifications behave as if a zero value or null string, as " -"appropriate,\n" +" specifications behave as if a zero value or null string, as appropriate,\n" " had been supplied.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or " -"assignment\n" +" Returns success unless an invalid option is given or a write or assignment\n" " error occurs." msgstr "" "Formaterer og skriver ut ARGUMENTER på FORMATets premisser.\n" @@ -5589,35 +5329,29 @@ msgstr "" " - skiftetegn (som konverteres og kopieres til standardutdata), og\n" " - formatspesifikasjoner (som skriver ut påfølgende argument).\n" " \n" -" Printf tolker følgende standard-formatspes. i tillegg til de som " -"står beskrevet i printf(1):\n" +" Printf tolker følgende standard-formatspes. i tillegg til de som står beskrevet i printf(1):\n" " \n" " %b\tutvid omvendt skråstrek-skiftesekvenser i gjeldende argument\n" -" %q\tgi argumentet anførselstegn slik at det kan brukes som skall-" -"inndata\n" -" %(fmt)T skriv ut «date-time»-streng etter bruk av FMT som " -"formatstreng\n" +" %q\tgi argumentet anførselstegn slik at det kan brukes som skall-inndata\n" +" %Q\tsom %q, men bruk hvilken som helst presisjon på argumentet uten anførselstegn før\n" +" \t\tsitering\n" +" %(fmt)T skriv ut «date-time»-streng etter bruk av FMT som formatstreng\n" " med strftime(3)\n" " \n" -" Formatet gjenbrukes etter nødvendighet for å bruke opp alle " -"argumentene.\n" -" Hvis det finnes færre argumenter enn formatet krever, oppfører " -"overflødige\n" +" Formatet gjenbrukes etter nødvendighet for å bruke opp alle argumentene.\n" +" Hvis det finnes færre argumenter enn formatet krever, oppfører overflødige\n" " formatstrenger seg som om de var 0-verdier eller null-strenger.\n" " \n" " Avslutningsstatus:\n" " Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår en\n" " skrive- eller tidelingsfeil." -#: builtins.c:1971 -#, fuzzy +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no " -"options\n" -" are supplied, existing completion specifications are printed in a way " -"that\n" +" For each NAME, specify how arguments are to be completed. If no options\n" +" are supplied, existing completion specifications are printed in a way that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -5632,10 +5366,8 @@ msgid "" " \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. If multiple options are " -"supplied,\n" -" the -D option takes precedence over -E, and both take precedence over -" -"I.\n" +" uppercase-letter options are listed above. If multiple options are supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5643,13 +5375,11 @@ msgstr "" "Velg hvordan argumenter skal fullføres av Readline.\n" " \n" " Velg hvordan argumenter skal fullføres per NAVN.\n" -" Hvis brukeren ikke tar noen valg, blir gjeldende " -"fullføringsspesifikasjoner\n" +" Hvis brukeren ikke tar noen valg, blir gjeldende fullføringsspesifikasjoner\n" " skrevet ut i et format som egner seg til gjenbruk.\n" " \n" " Valg:\n" -" -p\tskriv ut gjeldende fullføringsoppsett i et gjenbrukbart format " -"(standard)\n" +" -p\tskriv ut gjeldende fullføringsoppsett i et gjenbrukbart format (standard)\n" " -r\tfjern en fullføringsspesifikasjon per NAVN\n" " \t(eller fra alle spesifikasjoner hvis ingen NAVN er valgt)\n" " -D\tbruk fullføringer og handlinger som standard for kommandoer uten\n" @@ -5664,13 +5394,12 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches " -"against\n" +" completions. If the optional WORD argument is supplied, matches against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -5685,16 +5414,13 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are " -"supplied,\n" -" the completion currently being executed. If no OPTIONs are given, " -"print\n" -" the completion options for each NAME or the current completion " -"specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" +" the completion currently being executed. If no OPTIONs are given, print\n" +" the completion options for each NAME or the current completion specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -5718,10 +5444,8 @@ msgid "" msgstr "" "Endre eller vis fullføringsvalg.\n" " \n" -" Endre fullføringsvalg per NAVN, eller kjørende fullføringsprosess hvis " -"ingen\n" -" NAVN er valgt. Hvis ingen VALG er brukt, skriv enten ut fullføringsvalg " -"per NAVN,\n" +" Endre fullføringsvalg per NAVN, eller kjørende fullføringsprosess hvis ingen\n" +" NAVN er valgt. Hvis ingen VALG er brukt, skriv enten ut fullføringsvalg per NAVN,\n" " eller gjeldende fullføringsoppsett.\n" " \n" " Valg:\n" @@ -5734,8 +5458,7 @@ msgstr "" " \n" " Argumenter:\n" " \n" -" Hvert NAVN henviser til en kommando som må ha en " -"fullføringsspesifikasjon\n" +" Hvert NAVN henviser til en kommando som må ha en fullføringsspesifikasjon\n" " definert med den innebyde kommandoen «complete». Hvis ingen NAVN\n" " er valgt, må compopt brukes av en funksjon som genererer fullføringer.\n" " Valgene for den aktuelle fullføringsgeneratoren blir i så fall endret.\n" @@ -5744,26 +5467,21 @@ msgstr "" " Vellykket, med mindre bruker tar et ugyldig valg eller NAVN\n" " mangler fullføringsoppsett." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable " -"ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable " -"MAPFILE\n" +" Read lines from the standard input into the indexed array variable ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" " -d delim\tUse DELIM to terminate lines, instead of newline\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n" " -s count\tDiscard the first COUNT lines read\n" " -t\tRemove a trailing DELIM from each line read (default newline)\n" -" -u fd\tRead lines from file descriptor FD instead of the standard " -"input\n" +" -u fd\tRead lines from file descriptor FD instead of the standard input\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" " -c quantum\tSpecify the number of lines read between each call to\n" " \t\t\tCALLBACK\n" @@ -5776,54 +5494,43 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY " -"before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly " -"or\n" +" Returns success unless an invalid option is given or ARRAY is readonly or\n" " not an indexed array." msgstr "" "Legg linjer fra standard inndata i en indeksert tabellvariabel.\n" " \n" -" Legg linjer fra standard inndata i indeksert tabellvariabel TABELL, " -"eller\n" +" Legg linjer fra standard inndata i indeksert tabellvariabel TABELL, eller\n" " fra fildeskriptor FD ved bruk av «-u». Variabelen MAPFILE er\n" " standard TABELL.\n" " \n" " Valg:\n" -" -d skill\tBruk SKILLetegn til å avslutte linjer (i stedet for " -"linjeskift)\n" -" -n antall\tIkke kopier flere enn valgt ANTALL linjer. Hvis ANTALL er " -"0, kopieres alle linjer.\n" -" -O oppr\tTildel til TABELL ved indeks-OPPRinnelse. Standard indeks er " -"0.\n" +" -d skill\tBruk SKILLetegn til å avslutte linjer (i stedet for linjeskift)\n" +" -n antall\tIkke kopier flere enn valgt ANTALL linjer. Hvis ANTALL er 0, kopieres alle linjer.\n" +" -O oppr\tTildel til TABELL ved indeks-OPPRinnelse. Standard indeks er 0.\n" " -s antall \tForkast valgt ANTALL linjer i starten.\n" " -t\t\tFjern etterfølgende linjeskift fra hver lest linje.\n" -" -u fd\t\tLes linjer fra fildeskriptor FD i stedet for standard " -"inndata.\n" -" -C tilbakekall\tVurder TILBAKEKALL hver gang valgt ANTALL linjer er " -"lest.\n" -" -c antall\tVelg antall linjer som skal leses mellom hvert " -"TILBAKEKALL.\n" +" -u fd\t\tLes linjer fra fildeskriptor FD i stedet for standard inndata.\n" +" -C tilbakekall\tVurder TILBAKEKALL hver gang valgt ANTALL linjer er lest.\n" +" -c antall\tVelg antall linjer som skal leses mellom hvert TILBAKEKALL.\n" " \n" " Argumenter:\n" " ARRAY\t\tTabellvariabel-navn som skal brukes i fildata.\n" " \n" " Hvis «-C» er valgt men ikke «-c», brukes standardantallet 5000. Når\n" -" TILBAKEKALL vurderes, argumenteres det i tillegg med indeks av neste " -"tabellelement\n" +" TILBAKEKALL vurderes, argumenteres det i tillegg med indeks av neste tabellelement\n" " samt linjenummeret som skal tildeles aktuelt element.\n" " \n" -" Hvis ingen eksplisitt opprinnelse er gitt, tømmes TABELL før den får " -"tildelt noe.\n" +" Hvis ingen eksplisitt opprinnelse er gitt, tømmes TABELL før den får tildelt noe.\n" " \n" " Avslutningsstatus:\n" " Vellykket, med mindre bruker tar et ugyldig valg eller TABELL enten er\n" " skrivebeskyttet eller en ikke-indeksert tabell." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5833,6 +5540,9 @@ msgstr "" " \n" " Dette er synonymt med «mapfile»." +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: ugyldig nøkkel for assosiativ tabell" + #~ msgid "" #~ "Returns the context of the current subroutine call.\n" #~ " \n" diff --git a/po/nl.gmo b/po/nl.gmo index 51b3d4f61..86de738c3 100644 Binary files a/po/nl.gmo and b/po/nl.gmo differ diff --git a/po/nl.po b/po/nl.po index dcc82d95f..f80f24709 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,5 +1,5 @@ # Dutch translations for GNU bash. -# Copyright (C) 2020 Free Software Foundation, Inc. +# Copyright (C) 2022 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # # «Lernfähiger Software! Ich lach mich kaputt!» @@ -17,17 +17,17 @@ # om stilstaan en niet om finale opgave. Een alternatieve vertaling # zou dus "Stilstand" kunnen zijn. # -# Benno Schulenberg , 2006, 2008, 2010, 2011, 2013, 2014. -# Benno Schulenberg , 2015, 2016, 2019, 2020. -# Erwin Poeze , 2009. -# Julie Vermeersch , 2004. # Erick Branderhorst , 1996. +# Julie Vermeersch , 2004. +# Erwin Poeze , 2009. +# Benno Schulenberg , 2006, 2008, 2010, 2011, 2013, 2014. +# Benno Schulenberg , 2015, 2016, 2019, 2020, 2022. msgid "" msgstr "" -"Project-Id-Version: bash-5.1\n" +"Project-Id-Version: bash-5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2020-12-16 09:57+0100\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-06-23 10:18+0200\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -41,57 +41,52 @@ msgstr "" msgid "bad array subscript" msgstr "ongeldige array-index" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: 'nameref'-eigenschap wordt verwijderd" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: kan geïndexeerd array niet omzetten naar associatief array" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: ongeldige sleutel voor associatief array" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: niet-numerieke index is niet mogelijk" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: een index is nodig bij toekenning aan associatief array" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "Kan %s niet aanmaken: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command(): kan voor opdracht geen toetsenkaart vinden" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: eerste teken dat geen witruimte is is niet '\"'" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "geen sluit-'%c' in %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: ontbrekend scheidingsteken (dubbele punt)" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "Kan '%s' niet losmaken in toetsenkaart" @@ -111,7 +106,7 @@ msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor %u elementen" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor '%s'" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "'%s': ongeldige naam voor alias" @@ -182,7 +177,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME is niet gedefinieerd" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "te veel argumenten" @@ -209,7 +204,7 @@ msgstr "waarschuwing: " msgid "%s: usage: " msgstr "%s: Gebruik: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: optie vereist een argument" @@ -224,7 +219,7 @@ msgstr "%s: vereist een numeriek argument" msgid "%s: not found" msgstr "%s: niet gevonden" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: ongeldige optie" @@ -234,7 +229,7 @@ msgstr "%s: ongeldige optie" msgid "%s: invalid option name" msgstr "%s: ongeldige optienaam" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "'%s': is geen geldige naam" @@ -247,7 +242,7 @@ msgstr "ongeldig octaal getal" msgid "invalid hex number" msgstr "ongeldig hexadecimaal getal" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "ongeldig getal" @@ -261,88 +256,93 @@ msgstr "%s: ongeldige signaalaanduiding" msgid "`%s': not a pid or valid job spec" msgstr "'%s': is geen PID en geen geldige taakaanduiding" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: is een alleen-lezen variabele" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s: kan niet toewijzen" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s valt buiten bereik" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s valt buiten bereik" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: taak bestaat niet" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: geen taakbesturing" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "geen taakbesturing" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: beperkte modus" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "beperkte modus" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: is geen ingebouwde opdracht van de shell" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "schrijffout: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "fout tijdens instellen van terminaleigenschappen: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "fout tijdens verkrijgen van terminaleigenschappen: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: fout tijdens bepalen van huidige map: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: taakaanduiding is niet eenduidig" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "hulp is niet beschikbaar in deze versie" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "Kan '%s' niet verwijderen: %s is alleen-lezen" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "Kan '%s' niet verwijderen" @@ -352,108 +352,108 @@ msgstr "Kan '%s' niet verwijderen" msgid "%s: invalid action name" msgstr "%s: ongeldige actienaam" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: is geen completerings-aanduiding" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "waarschuwing: optie -F functioneert mogelijk niet zoals verwacht" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "waarschuwing: optie -C functioneert mogelijk niet zoals verwacht" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "er wordt momenteel geen completeringsfunctie uitgevoerd" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "kan alleen worden gebruikt binnen een functie" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "'-f' kan niet gebruikt worden om een functie te definiëren" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: is een alleen-lezen functie" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: verwijzingsvariabele mag geen array zijn" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: zelfverwijzing door naamsverwijzingsvariabele is niet toegestaan" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: circulaire naamsverwijzing" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "'%s': ongeldige variabelenaam voor naamsverwijzing" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "'-f' kan niet gebruikt worden om een functie te definiëren" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: is een alleen-lezen functie" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: aangehaalde samengesteld-array-toekenning is verouderd" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: kan array-variabelen niet op deze manier verwijderen" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: kan associatief array niet omzetten naar geïndexeerd array" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: aangehaalde samengesteld-array-toekenning is verouderd" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "dynamisch-laden is niet beschikbaar" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "kan gedeeld object %s niet openen: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "kan %s niet vinden in gedeeld object %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: dynamische ingebouwde functie is reeds geladen" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "laadfunctie voor %s geeft foutcode (%d): is niet geladen" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: is niet dynamisch geladen" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "Kan %s niet verwijderen: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: is een map" @@ -468,7 +468,7 @@ msgstr "%s: is geen normaal bestand" msgid "%s: file is too large" msgstr "%s: bestand is te groot" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kan binair bestand niet uitvoeren" @@ -565,12 +565,12 @@ msgstr "" "Er is geen hulptekst voor '%s'.\n" "Probeer 'help help' of 'man -k %s' of 'info %s'." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "Kan %s niet openen: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -590,21 +590,21 @@ msgstr "" "(Een sterretje (*) naast een naam betekent dat de functie uitgeschakeld is.)\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "slechts één van '-a', '-n', '-r' of '-w' is mogelijk" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "geschiedenispositie" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: ongeldig tijdsstempel" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: geschiedenisexpansie is mislukt" @@ -627,80 +627,80 @@ msgstr "%s: argumenten moeten proces-IDs of taak-IDs zijn" msgid "Unknown error" msgstr "Onbekende fout" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "uitdrukking werd verwacht" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: is geen geïndexeerd array" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ongeldige aanduiding van bestandsdescriptor" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ongeldige bestandsdescriptor: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: ongeldig regelaantal" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: ongeldig array-begin" # Quantum is een hoeveelheid regels, een getal. # Callback is de aan te roepen functie, maar onnodig in de vertaling. -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ongeldige hoeveelheid" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "lege naam van array-variabele" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "ondersteuning van arrayvariabelen is vereist" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "'%s': ontbrekend opmaakteken" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "'%c': ongeldige aanduiding van tijdsopmaak" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "'%c': ongeldig opmaakteken" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "waarschuwing: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "probleem bij ontleden van opmaak: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "ontbrekend hexadecimaal cijfer bij \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "ontbrekend Unicode-cijfer bij \\%c" @@ -844,12 +844,12 @@ msgstr "" "\n" " De opdracht 'dirs' toont de huidige mappenstapel." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: ongeldige aanduiding van tijdslimiet" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "leesfout: %d: %s" @@ -862,7 +862,7 @@ msgstr "kan alleen een 'return' doen uit een functie of een uit script aangeroep msgid "cannot simultaneously unset a function and a variable" msgstr "kan niet tegelijk een functie en een variabele verwijderen" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: is geen array-variabele" @@ -881,11 +881,11 @@ msgstr "Kan '%s' niet exporteren" msgid "shift count" msgstr "shift-aantal" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "kan shell-opties niet tegelijk inschakelen en uitschakelen" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ongeldige shell-optienaam" @@ -952,16 +952,16 @@ msgstr "%s: ongeldige limietwaarde" msgid "`%c': bad command" msgstr "'%c': ongeldige opdracht" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan de limiet niet bepalen: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "limiet" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan de limiet niet wijzigen: %s" @@ -980,7 +980,7 @@ msgstr "'%c': ongeldige operator in symbolische modus" msgid "`%c': invalid symbolic mode character" msgstr "'%c': ongeldig teken in symbolische modus" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " regel " @@ -1000,96 +1000,106 @@ msgstr "Afbreken..." msgid "INFORM: " msgstr "informatie: " -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "DEBUG-waarschuwing: " + +#: error.c:488 msgid "unknown command error" msgstr "onbekende opdrachtfout" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "ongeldig opdrachttype" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "ongeldige verbinder" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "ongeldige sprong" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: ongebonden variabele" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\awachten op invoer duurde te lang -- automatisch afgemeld\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "kan standaardinvoer niet omleiden vanaf /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: '%c': ongeldig opmaakteken" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc(): coproc [%d:%s] bestaat nog steeds" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "pijpfout" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: maximum 'eval'-nestingsniveau is overschreden (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximum 'source'-nestingsniveau is overschreden (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum functie-nestingsniveau is overschreden (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: beperkte modus: '/' in opdrachtnamen is niet toegestaan" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: opdracht niet gevonden" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: kan niet uitvoeren: vereist bestand is niet gevonden" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: ongeldige interpreter" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kan binair bestand %s niet uitvoeren" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "'%s' is een speciale ingebouwde shell-functie" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "kan bestandsdescriptor %d niet dupliceren naar bestandsdescriptor %d" @@ -1102,68 +1112,68 @@ msgstr "recursieniveau van expressies is overschreden" msgid "recursion stack underflow" msgstr "recursiestapel-onderloop" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "syntaxfout in expressie" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "poging tot toewijzing aan een niet-variabele" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "syntaxfout in toewijzing aan variabele" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "deling door nul" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "**interne fout**: onjuist symbool in toewijzingsexpressie" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "':' werd verwacht voor een voorwaardelijke expressie" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "exponent is kleiner dan 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "naam verwacht na pre-increment of pre-decrement" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "ontbrekend ')'" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "syntaxfout: operator verwacht" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "syntaxfout: ongeldige rekenkundige operator" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (het onjuiste symbool is \"%s\")" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "ongeldige rekenkundige basis" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "ongeldige integerconstante" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "waarde is te groot voor basis" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: expressiefout\n" @@ -1172,7 +1182,7 @@ msgstr "%s: expressiefout\n" msgid "getcwd: cannot access parent directories" msgstr "getwd(): kan geen geen toegang verkrijgen tot bovenliggende mappen" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "kan 'nodelay'-modus niet uitschakelen voor bestandsdescriptor %d" @@ -1191,167 +1201,167 @@ msgstr "check_bash_input(): buffer bestaat al voor nieuwe bestandsdescriptor %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline(): procesgroep van pijp" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: LUS: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: LUS: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "afgesplitst PID %d hoort bij draaiende taak %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "verwijderen van gepauzeerde taak %d met procesgroep %ld..." -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process(): PID %5ld (%s) staat gemarkeerd als nog actief" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid(): PID %ld bestaat niet" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Signaal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Klaar" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Gepauzeerd" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Gepauzeerd(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Wordt uitgevoerd" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Klaar(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Onbekende afsluitwaarde" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(geheugendump gemaakt) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (werkmap: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "instellen van procesgroep %2$ld van dochter %1$ld" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait(): PID %ld is geen dochterproces van deze shell" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for(): proces %ld is nergens geregistreerd" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job(): taak %d is gepauzeerd" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: geen lopende taken" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: taak is afgesloten" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: taak %d draait al op de achtergrond" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld(): WNOHANG wordt ingeschakeld om een onbegrensde blokkering te vermijden" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: regel %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (geheugendump gemaakt)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(werkmap is nu: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp() is mislukt" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: geen taakbesturing in de achtergrond" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: lijnprotocol" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid()" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "kan procesgroep (%d) van terminal niet instellen" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "er is geen taakbesturing in deze shell" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc(): controletest is mislukt: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1360,47 +1370,47 @@ msgstr "" "\r\n" "malloc(): %s:%d: controletest is mislukt\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "onbekend" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc(): een pointer op de lijst van vrije blokken is overschreven" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free(): aangeroepen met als argument een blok dat al vrijgegeven is" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free(): aangeroepen met als argument een ongebruikt blok" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free(): onderloop: 'mh_nbytes' valt buiten bereik" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free(): onderloop: 'magic8' is beschadigd" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free(): blokgroottes van begin en eind zijn verschillend" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc(): aangeroepen met als argument een ongebruikt blok" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc(): onderloop: 'mh_nbytes' valt buiten bereik" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc(): onderloop: 'magic8' is beschadigd" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc(): blokgroottes van begin en eind zijn verschillend" @@ -1442,22 +1452,22 @@ msgstr "%s: ongeldige aanduiding van netwerkpad" msgid "network operations not supported" msgstr "netwerkoperaties worden niet ondersteund" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale(): LC_ALL: kan niet van taalregio veranderen (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale(): LC_ALL: kan niet van taalregio veranderen (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s): %s" @@ -1475,136 +1485,136 @@ msgstr "U hebt nieuwe post in $_" msgid "The mail in %s has been read\n" msgstr "De post in %s is gelezen.\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "syntaxfout: een rekenkundige uitdrukking is vereist" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "syntaxfout: onverwachte ';'" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "syntaxfout: '((%s))'" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document(): ongeldig instructietype %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "regel %d van \"hier\"-document eindigt met einde van bestand (verwachtte '%s')" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection(): omleidingsinstructie '%d' valt buiten bereik" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" msgstr "shell_getc(): lengte van invoerregel (%zu) overschrijdt SIZE_MAX (%lu): regel is afgekapt" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "maximum aantal \"hier\"-documenten is overschreden" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende '%c'" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "onverwacht bestandseinde tijdens zoeken naar ']]'" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaxfout in conditionele expressie: onverwacht symbool '%s'" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "syntaxfout in conditionele expressie" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "onverwacht symbool '%s'; ')' werd verwacht" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "')' werd verwacht" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "onverwacht argument '%s' bij eenzijdige conditionele operator" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "onverwacht argument bij eenzijdige conditionele operator" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "onverwacht symbool '%s'; tweezijdige conditionele operator werd verwacht" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "tweezijdige conditionele operator werd verwacht" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "onverwacht argument '%s' bij tweezijdige conditionele operator" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "onverwacht argument bij tweezijdige conditionele operator" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "onverwacht symbool '%c' in conditionele opdracht" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "onverwacht symbool '%s' in conditionele opdracht" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "onverwacht symbool %d in conditionele opdracht" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaxfout nabij onverwacht symbool '%s'" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "syntaxfout nabij '%s'" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "syntaxfout: onverwacht bestandseinde" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "syntaxfout" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Gebruik \"%s\" om de shell te verlaten.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende ')'" @@ -1642,94 +1652,94 @@ msgstr "xtrace_set(): bestandspointer is NIL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace-bestandsdescriptor (%d) != bestandsnummer van xtrace-bestandspointer (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf(): '%c': ongeldig opmaakteken" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "bestandsdescriptor valt buiten bereik" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: omleiding is niet eenduidig" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: kan bestaand bestand niet overschrijven" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: beperkte modus: omleiden van uitvoer is niet toegestaan" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "kan geen tijdelijk bestand maken voor \"hier\"-document: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: kan bestandsdescriptor niet toewijzen aan variabele" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port is niet mogelijk zonder netwerk" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "omleidingsfout: kan bestandsdescriptor niet dupliceren" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "Kan /tmp niet vinden; maak deze aan!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp dient een geldige mapnaam te zijn" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "pretty-printing-modus wordt genegeerd in interactieve shells" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ongeldige optie" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "kan UID niet op %d instellen; effectieve UID is %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "kan GID niet op %d instellen; effectieve GID is %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "kan debugger niet starten; debugging-modus is uitgeschakeld" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: is een map" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Ik heb geen naam!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versie %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1738,320 +1748,320 @@ msgstr "" "Gebruik: %s [opties]\n" " %s [opties] scriptbestand...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Lange opties:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Korte opties:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD, of -c OPDRACHT, of -O SHOPT-OPTIE (enkel bij aanroep)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s, of -o optie (veranderbaar via 'set')\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Typ '%s -c \"help set\"' voor meer informatie over shell-opties.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Typ '%s -c help' voor meer informatie over ingebouwde shell-functies.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Gebruik de opdracht 'bashbug' om fouten in bash te rapporteren.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "Webpagina van 'bash': \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "Algemene hulp bij gebruik van GNU-software: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask(): %d: ongeldige operatie" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Niet-bestaand signaal" # Vroeger ging dit over het afsluiten van een modemverbinding, # tegenwoordig over het afsluiten van een pseudoterminal. -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Opgehangen" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Onderbroken" # Verleden tijd, "Afgesloten", net als de andere actiesignaalnamen. -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Afgesloten" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Ongeldige instructie" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "Traceer/breekpunt-instructie" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "ABORT-instructie" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "EMT-instructie" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Drijvendekomma-berekeningsfout" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Geëlimineerd" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Busfout" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Segmentatiefout" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Onjuiste systeemaanroep" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Gebroken pijp" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Wekker" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Beëindigd" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Urgente in-/uitvoertoestand" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Gepauzeerd (signaal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Doorgaan" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Dochter is geëlimineerd of gestopt" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Gepauzeerd (terminalinvoer)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Gepauzeerd (terminaluitvoer)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O is mogelijk" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "CPU-limiet" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Bestandslimiet" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarm (virtueel)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarm (profiel)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Venster is veranderd" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Recordvergrendeling" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Gebruikerssignaal 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Gebruikerssignaal 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "HFT-invoergegevens staan te wachten" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "stroomstoring dreigt" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "systeemcrash dreigt" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "proces naar andere processor verplaatsen" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "programmeerfout" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "HFT-monitormodus is gegeven" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "HFT-monitormodus is herroepen" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "HFT-geluidssequentie is afgespeeld" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Verzoek om informatie" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Onbekend signaal #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "ongeldige vervanging: geen sluit-'%s' in %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: kan geen lijst toewijzen aan een array-element" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "kan geen pijp maken voor procesvervanging" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "kan geen dochterproces maken voor procesvervanging" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "kan pijp genaamd %s niet openen om te lezen" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "kan pijp genaamd %s niet openen om te schrijven" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "kan pijp genaamd %s niet dupliceren als bestandsdescriptor %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "opdrachtsubstitutie: null-byte in invoer is genegeerd" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "kan geen pijp maken voor opdrachtvervanging" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "kan geen dochterproces maken voor opdrachtvervanging" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute(): kan pijp niet dupliceren als bestandsdescriptor 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: ongeldige variabelenaam voor naamsverwijzing" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: ongeldige indirecte expansie" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: ongeldige variabelenaam" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: parameter is niet ingesteld" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: lege parameter, of niet ingesteld" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: resultaat van deeltekenreeks is kleiner dan nul" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: ongeldige vervanging" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: kan niet op deze manier toewijzen" -#: subst.c:9814 +#: subst.c:10111 msgid "future versions of the shell will force evaluation as an arithmetic substitution" msgstr "toekomstige versies van de shell zullen dit als een rekenkundige vervanging evalueren" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "ongeldige vervanging: geen afsluitende '`' in %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "geen overeenkomst: %s" @@ -2074,21 +2084,21 @@ msgstr "')' werd verwacht" msgid "`)' expected, found %s" msgstr "')' werd verwacht; %s gevonden" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "tweezijdige operator werd verwacht, %s gevonden" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "eenzijdige operator werd verwacht, %s gevonden" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "ontbrekende ']'" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "syntaxfout: onverwachte '%s'" @@ -2097,99 +2107,104 @@ msgstr "syntaxfout: onverwachte '%s'" msgid "invalid signal number" msgstr "ongeldig signaalnummer" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "trap handler: maximum 'trap-handler'-niveau is overschreden (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps(): ongeldige waarde in trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: signaalverwerker is SIG_DFL, herzenden van %d (%s) aan mezelf..." -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler(): ongeldig signaal %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "fout tijdens importeren van functiedefinitie voor '%s'" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell-niveau is te hoog (%d); teruggezet op 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable(): er is geen functiecontext in huidige geldigheidsbereik" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: aan variabele mag geen waarde toegewezen worden" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s: kan geen waarde overerven van incompatibel type" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: toekenning van geheel getal aan naamsverwijzing" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables(): er is geen functiecontext in huidige geldigheidsbereik" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "*** %s heeft lege export-tekenreeks" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "*** ongeldig teken '%d' in export-tekenreeks voor %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "*** geen '=' in export-tekenreeks voor %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context(): top van 'shell_variables' is geen functiecontext" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context(): er is geen 'global_variables'-context" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope(): top van 'shell_variables' is geen tijdelijk geldigheidsbereik" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: Kan %s niet openen als BESTAND" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: ongeldige waarde %s voor 'trace'-bestandsdescriptor" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: compatibiliteitswaarde valt buiten bereik" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Copyright (C) 2022 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "License GPLv3+: GNU GPL version 3 or later \n" @@ -2276,12 +2291,12 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] OPDRACHT [ARGUMENT...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgiIlnrtux] [-p] [NAAM[=WAARDE] ...]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgiIlnrtux] [NAAM[=WAARDE] ...] of declare -p [-aAfFilnrtux] [NAAM ...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgiIlnrtux] [-p] NAAM[=WAARDE]..." +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgiIlnrtux] NAAM[=WAARDE] ... of typeset -p [-aAfFilnrtux] [NAAM ...]" #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2375,8 +2390,8 @@ msgid "return [n]" msgstr "return [N]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [--abefhkmnptuvxBCHP] [-o OPTIENAAM] [--] [ARGUMENT...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o OPTIENAAM] [--] [-] [ARGUMENT...]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" @@ -2423,8 +2438,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] NAAM..." #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [GRENSWAARDE]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [GRENSWAARDE]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" @@ -2463,12 +2478,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C msgstr "if OPDRACHTEN; then OPDRACHTEN; [elif OPDRACHTEN; then OPDRACHTEN;]... [else OPDRACHTEN;] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while OPDRACHTEN; do OPDRACHTEN; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while OPDRACHTEN; do OPDRACHTEN2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until OPDRACHTEN; do OPDRACHTEN; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until OPDRACHTEN; do OPDRACHTEN2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -3747,7 +3762,8 @@ msgid "" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" @@ -3789,8 +3805,11 @@ msgstr "" " als optie '-u' gegeven is) en wijst het eerste woord aan de eerste NAAM toe,\n" " het tweede woord aan de tweede NAAM, en zo verder; de resterende woorden\n" " worden toegewezen aan de laatste NAAM. Alleen de tekens in de variabele\n" -" IFS worden herkend als woordscheidingstekens. Als er geen namen gegeven\n" -" zijn, dan wordt de gelezen regel opgeslagen in de variabele REPLY.\n" +" IFS worden herkend als woordscheidingstekens. Standaard ontdoet een\n" +" backslash scheidingstekens en het nieuweregelteken van hun betekenis.\n" +"\n" +" Als er geen namen gegeven zijn, dan wordt de gelezen regel opgeslagen in\n" +" de variabele REPLY.\n" "\n" " Opties:\n" " -a ARRAY de gelezen woorden toekennen aan de opeenvolgende posities\n" @@ -3819,7 +3838,7 @@ msgstr "" " de tijdslimiet overschreden werd, er een toekenningsfout optrad, of een\n" " ongeldige bestandsdescriptor als argument van '-u' gegeven werd." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3840,7 +3859,7 @@ msgstr "" " uitvoeren is." # Voor de duidelijkheid is de tekstvolgorde veranderd. -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4000,7 +4019,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4037,7 +4056,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of een\n" " NAAM alleen-lezen is." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4069,7 +4088,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4106,7 +4125,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4123,7 +4142,7 @@ msgstr "" "\n" " De afsluitwaarde is 0 tenzij N negatief is of groter dan $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4146,7 +4165,7 @@ msgstr "" " De afsluitwaarde is die van de laatst uitgevoerde opdracht in het gegeven\n" " bestand, of 1 als dit bestand niet gelezen kan worden." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4171,7 +4190,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij taakbeheer uitgeschakeld is of er een fout\n" " optreedt." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4313,7 +4332,7 @@ msgstr "" " De afsluitwaarde is 0 als EXPRESSIE waar is, 1 als EXPRESSIE onwaar is,\n" " en 2 als een ongeldig argument gegeven werd." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4325,7 +4344,7 @@ msgstr "" " Dit is een synoniem voor de ingebouwde functie 'test', behalve dat\n" " het laatste argument een ']' moet zijn, horend bij de begin-'['." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4343,7 +4362,7 @@ msgstr "" "\n" " De afsluitwaarde is altijd 0." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4412,7 +4431,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie of SIGNAALAANDUIDING\n" " gegeven werd." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4463,7 +4482,7 @@ msgstr "" "\n" " De afsluitwaarde is 0 als elke NAAM gevonden werd, anders 1." -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4557,7 +4576,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er een\n" " fout optrad." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4589,7 +4608,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij MODUS ongeldig is of een ongeldige optie\n" " gegeven werd." -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4640,7 +4659,7 @@ msgstr "" " of als een ongeldige optie gegeven werd, of als '-n' gegeven werd maar de\n" " shell geen dochters heeft waarop gewacht wordt." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4662,7 +4681,7 @@ msgstr "" " De afsluitwaarde is die van de laatste PID, 1 als PID ongeldig is,\n" " of 2 als een ongeldige optie gegeven werd." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4683,7 +4702,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4710,7 +4729,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4747,7 +4766,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4772,9 +4791,10 @@ msgstr "" " De uitvoer kan via de omgevingsvariabele TIMEFORMAT aangepast worden.\n" " Optie '-p' negeert deze omgevingsvariabele en toont de tijden in een\n" " overdraagbare standaardopmaak.\n" +"\n" " De afsluitwaarde is die van de PIJPLIJN." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4792,7 +4812,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4820,41 +4840,41 @@ msgstr "" " De afsluitwaarde van de gehele opdracht is die van de laatst uitgevoerde\n" " deelopdracht, of nul als geen enkele 'if' of 'elif' nul opleverde." -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Opdrachten uitvoeren zolang een test slaagt.\n" "\n" -" Voert de gegeven opdrachten uit zolang de laatste opdracht achter\n" -" 'while' een afsluitwaarde van 0 heeft.\n" +" Voert de tweede reeks opdrachten uit zolang de laatste opdracht van\n" +" de eerste reeks een afsluitwaarde van 0 heeft.\n" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Opdrachten uitvoeren zolang een test niet slaagt.\n" "\n" -" Voert de gegeven opdrachten uit zolang de laatste opdracht achter\n" -" 'until' een afsluitwaarde ongelijk aan 0 heeft.\n" +" Voert de tweede reeks opdrachten uit zolang de laatste opdracht van\n" +" de eerste reeks een afsluitwaarde ongelijk aan 0 heeft.\n" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4875,7 +4895,7 @@ msgstr "" "\n" " De afsluitwaarde van coproc is 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -4896,7 +4916,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij NAAM onveranderbaar is." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4913,7 +4933,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4937,7 +4957,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de hervatte taak." -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4954,7 +4974,7 @@ msgstr "" "\n" " De afsluitwaarde is 1 als de EXPRESSIE tot 0 evalueert; anders 0." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5000,7 +5020,7 @@ msgstr "" "\n" " De afsluitwaarde is 0 of 1, afhankelijk van EXPRESSIE." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5098,7 +5118,7 @@ msgstr "" " vervangingsteken, gewoonlijk '^'; het derde teken is het\n" " geschiedeniscommentaarteken, gewoonlijk '#'\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5151,7 +5171,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n" " mapwijziging mislukte." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5200,7 +5220,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n" " mapwijziging mislukte." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5249,7 +5269,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er een\n" " fout optrad." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5288,7 +5308,7 @@ msgstr "" " een ongeldige optienaam gegeven werd, en de afsluitwaarde is 2 als een\n" " ongeldige optie gegeven werd." -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5307,6 +5327,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" @@ -5336,8 +5358,10 @@ msgstr "" " betekent %b dat de backslash-stuurtekens in het betreffende argument\n" " omgezet moeten worden, en betekent %q dat het argument op zo'n manier\n" " aangehaald moet worden dat het als invoer voor de shell hergebruikt\n" -" kan worden. Verder betekent %(OPMAAK)T dat datum-plus-tijd getoond\n" -" moet worden door deze opmaak aan strftime(3) mee te geven.\n" +" kan worden. %Q is als %q, maar een precisie wordt toegepast op het\n" +" onaangehaalde argument vóór het aanhalen. Verder betekent %(OPMAAK)T\n" +" dat datum-plus-tijd getoond moet worden door deze opmaak aan strftime(3)\n" +" mee te geven.\n" "\n" " De gegeven opmaak wordt zo vaak hergebruikt als nodig is om alle argumenten\n" " te consumeren. Als er minder argumenten zijn dan de opmaak verwacht, dan\n" @@ -5347,7 +5371,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er een\n" " schrijf- of toekenningsfout optrad." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5397,7 +5421,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er\n" " een fout optrad." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5417,7 +5441,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er een\n" " fout optrad." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5469,7 +5493,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of voor\n" " NAAM geen completeringsvoorschrift gedefinieerd is." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5532,7 +5556,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij ARRAY alleen-lezen is of geen array is, of\n" " een ongeldige optie gegeven werd." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5542,6 +5566,9 @@ msgstr "" "\n" " Een synoniem voor 'mapfile'." +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: ongeldige sleutel voor associatief array" + #~ msgid "" #~ "Returns the context of the current subroutine call.\n" #~ " \n" diff --git a/po/pl.gmo b/po/pl.gmo index 29d20db96..4adbed028 100644 Binary files a/po/pl.gmo and b/po/pl.gmo differ diff --git a/po/pl.po b/po/pl.po index 338b8bcf5..b8bd94a57 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1,15 +1,15 @@ # Polish translation of bash -# Copyright (C) 2007, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020 Free Software Foundation, Inc. +# Copyright (C) 2007, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2022 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Andrzej M. Krzysztofowicz 2006,2007. -# Jakub Bogusz 2010-2020. +# Jakub Bogusz 2010-2022. # msgid "" msgstr "" -"Project-Id-Version: bash 5.1\n" +"Project-Id-Version: bash 5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2020-12-07 21:15+0100\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-06-19 22:15+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" @@ -23,58 +23,53 @@ msgstr "" msgid "bad array subscript" msgstr "nieprawidłowy indeks tablicy" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: usuwanie atrybutu nameref" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: nie można przekształcić tablicy indeksowanej na asocjacyjną" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: błędny klucz tablicy asocjacyjnej" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nie można przypisać do nienumerycznego indeksu" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: przy przypisaniu do tablicy asocjacyjnej należy użyć nawiasów" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nie można utworzyć: %s" # ??? -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: nie można znaleźć mapy klawiszy dla polecenia" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: pierwszym drukowalnym znakiem nie jest `\"'" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "brak zamykającego `%c' w %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: brak separującego dwukropka" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "`%s': nie można usunąć dowiązania w mapie poleceń" @@ -94,7 +89,7 @@ msgstr "rozwijanie nawiasów: nie udało się przydzielić pamięci dla element msgid "brace expansion: failed to allocate memory for `%s'" msgstr "rozwijanie nawiasów: nie udało się przydzielić pamięci dla `%s'" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': błędna nazwa aliasu" @@ -167,7 +162,7 @@ msgstr "" msgid "HOME not set" msgstr "Nie ustawiono HOME" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "za dużo argumentów" @@ -194,7 +189,7 @@ msgstr "uwaga: " msgid "%s: usage: " msgstr "%s: składnia: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: opcja wymaga argumentu" @@ -209,7 +204,7 @@ msgstr "%s: wymagany argument numeryczny" msgid "%s: not found" msgstr "%s: nie znaleziono" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: nieprawidłowa opcja" @@ -219,7 +214,7 @@ msgstr "%s: nieprawidłowa opcja" msgid "%s: invalid option name" msgstr "%s: nieprawidłowa nazwa opcji" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': nieprawidłowy identyfikator" @@ -232,7 +227,7 @@ msgstr "błędna liczba ósemkowa" msgid "invalid hex number" msgstr "błędna liczba szesnastkowa" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "nieprawidłowa liczba" @@ -246,88 +241,93 @@ msgstr "%s: nieprawidłowo określony sygnał" msgid "`%s': not a pid or valid job spec" msgstr "`%s': nie jest to nr PID ani prawidłowe określenie zadania" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: zmienna tylko do odczytu" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s: nie można przypisać" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s poza zakresem" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s poza zakresem" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: brak takiego zadania" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: brak kontroli zadań" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "brak kontroli zadań" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: ograniczony" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "ograniczony" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: nie jest to polecenie powłoki" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "błąd zapisu: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "błąd podczas ustawiania atrybutów terminala: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "błąd podczas pobierania atrybutów terminala: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: błąd przy określaniu katalogu bieżącego: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: niejednoznaczne określenie zadania" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "pomoc nie jest dostępna w tej wersji" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nie można anulować definicji: %s jest tylko do odczytu" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: nie można anulować definicji" @@ -337,108 +337,108 @@ msgstr "%s: nie można anulować definicji" msgid "%s: invalid action name" msgstr "%s: nieprawidłowa nazwa akcji" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: brak definicji dla uzupełnienia" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "uwaga: opcja -F może działać inaczej niż oczekiwano" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "uwaga: opcja -C może działać inaczej niż oczekiwano" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "aktualnie nie jest wykonywana funkcja dopełniania" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "można używać tylko w funkcji" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "nie można używać `-f' do tworzenia funkcji" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funkcja tylko do odczytu" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: zmienna referencyjna nie może być tablicą" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: zmienna referencyjna nie może wskazywać na siebie" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: cykliczne odwołanie do nazwy" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "`%s': błędna nazwa zmiennej przy odwołaniu do nazwy" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "nie można używać `-f' do tworzenia funkcji" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: funkcja tylko do odczytu" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: przypisanie złożonej tablicy z cytowaniem jest przestarzałe" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: nie można w ten sposób unicestwić zmiennej tablicowej" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nie można przekształcić tablicy asocjacyjnej na indeksowaną" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: przypisanie złożonej tablicy z cytowaniem jest przestarzałe" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "ładowanie dynamiczne nie jest dostępne" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "nie można otworzyć obiektu współdzielonego %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "nie można znaleźć %s w obiekcie współdzielonym %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: dynamiczne polecenie wbudowane już załadowane" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "funkcja ładująca dla %s zwraca niepowodzenie (%d): nie załadowano" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: nie jest ładowany dynamicznie" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: nie można usunąć: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: jest katalogiem" @@ -453,7 +453,7 @@ msgstr "%s: nie jest zwykłym plikiem" msgid "%s: file is too large" msgstr "%s: plik jest za duży" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nie można uruchomić pliku binarnego" @@ -551,12 +551,12 @@ msgstr "" "żaden temat pomocy nie pasuje do `%s'. Spróbuj `help help', `man -k %s'\n" "lub `info %s'." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nie można otworzyć: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -577,21 +577,21 @@ msgstr "" "Gwiazdka (*) po nazwie oznacza, że dane polecenie jest wyłączone.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "nie można używać więcej niż jednego spośród -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "pozycja historii" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: nieprawidłowy znacznik czasu" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: rozwinięcie wg historii nie powiodło się" @@ -614,78 +614,78 @@ msgstr "%s: argumentami muszą być numery procesów lub zadań" msgid "Unknown error" msgstr "Nieznany błąd" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "spodziewano się wyrażenia" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: nie jest tablicą indeksowaną" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: nieprawidłowo określony deskryptor pliku" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: nieprawidłowy deskryptor pliku: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: błędna liczba linii" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: błędny początek tablicy" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: błędna liczba linii między wywołaniami" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "pusta nazwa zmiennej tablicowej" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "wymagana obsługa zmiennych tablicowych" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "`%s': brak znaku formatującego" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': błędne określenie formatu czasu" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "`%c': nieprawidłowy znak formatujący" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "uwaga: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "problem z analizą formatu: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "brak cyfry szesnastkowej dla \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "brak cyfry unikodowej dla \\%c" @@ -834,12 +834,12 @@ msgstr "" " \n" " Zawartość stosu katalogów można zobaczyć za pomocą polecenia `dirs'." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: nieprawidłowo określony limit czasu" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "błąd odczytu: %d: %s" @@ -852,7 +852,7 @@ msgstr "wyjście przez `return' możliwe tylko z funkcji lub skryptu" msgid "cannot simultaneously unset a function and a variable" msgstr "nie można jednocześnie anulować definicji funkcji i zmiennej" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: nie jest zmienną tablicową" @@ -871,11 +871,11 @@ msgstr "%s: nie można wyeksportować" msgid "shift count" msgstr "licznik przesunięcia" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "nie można opcji powłoki jednocześnie ustawić i unieważnić" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nieprawidłowa nazwa opcji powłoki" @@ -942,16 +942,16 @@ msgstr "%s: nieprawidłowy argument stanowiący ograniczenie" msgid "`%c': bad command" msgstr "`%c': złe polecenie" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nie można odczytać ograniczenia: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "ograniczenie" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nie można zmienić ograniczenia: %s" @@ -970,7 +970,7 @@ msgstr "`%c': nieprawidłowy operator trybu symbolicznego" msgid "`%c': invalid symbolic mode character" msgstr "`%c': nieprawidłowy znak trybu symbolicznego" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " linia " @@ -990,96 +990,106 @@ msgstr "Przerywanie..." msgid "INFORM: " msgstr "INFORM: " -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "DIAGNOSTYCZNE ostrzeżenie: " + +#: error.c:488 msgid "unknown command error" msgstr "nieznany błąd polecenia" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "zły rodzaj polecenia" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "zły łącznik" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "zły skok" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: nieustawiona zmienna" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aprzekroczony czas oczekiwania na dane wejściowe: auto-wylogowanie\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "nie można przekierować standardowego wejścia z /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': nieprawidłowy znak formatujący" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: koproces [%d:%s] nadal istnieje" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "błąd potoku" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: przekroczono maksymalny poziom zagnieżdżenia polecenia eval (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia polecenia source (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia funkcji (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ograniczony: nie można podawać `/' w nazwach poleceń" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: nie znaleziono polecenia" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: nie można uruchomić: nie znaleziono wymaganego pliku" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: zły interpreter" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: nie można uruchomić pliku binarnego: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "`%s' jest specjalnym poleceniem wewnętrznym" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nie można skopiować deskryptora pliku %d do %d" @@ -1092,69 +1102,69 @@ msgstr "przekroczone ograniczenie poziomu rekursji dla wyrażenia" msgid "recursion stack underflow" msgstr "niedomiar stosu rekursji" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "błąd składniowy w wyrażeniu" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "próba przypisania do nie-zmiennej" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "błąd składniowy w przypisaniu zmiennej" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "dzielenie przez 0" # ??? -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "błąd: zły prefiks operatora przypisującego" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "spodziewano się `:' w wyrażeniu warunkowym" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "wykładnik mniejszy niż 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "spodziewany identyfikator po operatorze preinkrementacji lub predekrementacji" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "brakujący `)'" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "błąd składni: spodziewany argument" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "błąd składni: nieprawidłowy operator arytmetyczny" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (błędny znacznik to \"%s\")" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "nieprawidłowa podstawa arytmetyczna" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "błędna stała całkowita" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "wartość za duża na podstawę" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: błąd w wyrażeniu\n" @@ -1163,7 +1173,7 @@ msgstr "%s: błąd w wyrażeniu\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: niemożliwy dostęp do katalogów nadrzędnych" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nie można wyłączyć trybu nieblokującego dla deskryptora %d" @@ -1182,168 +1192,168 @@ msgstr "save_bash_input: bufor dla nowego deskryptora %d już istnieje" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: PĘTLA: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: PĘTLA: psi (%d) == storage[psi].bucket_next" # ??? -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "proces o PID %d występuje w działającym zadaniu %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "usuwanie zatrzymanego zadania %d z grupą procesów %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) oznaczony jako nadal żywy" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: brak takiego PID-u" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Sygnał %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Zakończono" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Zatrzymano" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Zatrzymano(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Działa" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Zakończono(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Kod wyjścia %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Stan nieznany" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(zrzut pamięci) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (katalog: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid potomka (%ld na %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: PID %ld nie jest potomkiem tej powłoki" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Brak rekordu dla procesu %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: zadanie %d jest zatrzymane" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: brak bieżących zadań" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: zadanie zostało przerwane" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: zadanie %d już pracuje w tle" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: wyłączanie WNOHANG w celu uniknięcia nieskończonego oczekiwania" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: linia %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (zrzut pamięci)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(katalog: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp nie powiodło się" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: brak kontroli zadań w tle" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: dyscyplina linii" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nie można ustawić grupy procesów terminala (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "w tej powłoce nie ma kontroli zadań" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: założenie, że %s nie jest spełnione\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1352,48 +1362,48 @@ msgstr "" "\r\n" "malloc: %s:%d: spartaczone założenie\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "nieznany" # ??? -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: nieprawidłowy blok na liście wolnych bloków" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: wywołane dla bloku, który już został zwolniony" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: wywołane dla bloku, który nie został przydzielony" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: wykryto niedomiar; mh_nbytes poza zakresem" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free: wykryto niedomiar; uszkodzenie magic8" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: rozmiar początkowy i końcowy fragmentu są różne" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: wywołane dla bloku, który nie został przydzielony" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: wykryto niedomiar; mh_nbytes poza zakresem" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: wykryto niedomiar; uszkodzenie magic8" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: rozmiar początkowy i końcowy fragmentu są różne" @@ -1435,22 +1445,22 @@ msgstr "%s: źle określona ścieżka sieciowa" msgid "network operations not supported" msgstr "operacje sieciowe nie są wspierane" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: nie można zmienić lokalizacji (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: nie można zmienić lokalizacji (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: nie można zmienić lokalizacji (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: nie można zmienić lokalizacji (%s): %s" @@ -1468,136 +1478,136 @@ msgstr "Masz nową pocztę w $_" msgid "The mail in %s has been read\n" msgstr "Poczta w %s jest przeczytana\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "błąd składni: oczekiwano wyrażenia arytmetycznego" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "błąd składni: oczekiwany `;'" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "błąd składni: `((%s))'" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: zły rodzaj instrukcji %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "dokument miejscowy w linii %d ograniczony końcem pliku (oczekiwano `%s')" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instrukcja przekierowania `%d' poza zakresem" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" msgstr "shell_getc: shell_input_line_size (%zu) przekracza SIZE_MAX (%lu): linia skrócona" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "przekroczono maksymalną liczbę dokumentów w miejscu" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "nieoczekiwany EOF podczas poszukiwania pasującego `%c'" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "nieoczekiwany EOF podczas poszukiwania `]]'" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "błąd składni w wyrażeniu warunkowym: nieoczekiwany znacznik `%s'" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "błąd składni w wyrażeniu warunkowym" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "nieoczekiwany znacznik `%s', oczekiwano `)'" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "oczekiwano `)'" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "nieoczekiwany argument `%s' jednoargumentowego operatora warunkowego" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "nieoczekiwany argument jednoargumentowego operatora warunkowego" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "nieoczekiwany argument `%s', oczekiwano dwuarg. operatora warunkowego" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "oczekiwano dwuargumentowego operatora warunkowego" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "nieoczekiwany argument `%s' dwuargumentowego operatora warunkowego" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "nieoczekiwany argument dwuargumentowego operatora warunkowego" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "nieoczekiwany znacznik `%c' w poleceniu warunkowym" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "nieoczekiwany znacznik `%s' w poleceniu warunkowym" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "nieoczekiwany znacznik %d w poleceniu warunkowym" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "błąd składni przy nieoczekiwanym znaczniku `%s'" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "błąd składni przy `%s'" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "błąd składni: nieoczekiwany koniec pliku" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "błąd składni" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Użyj \"%s\", aby opuścić tę powłokę.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "nieoczekiwany EOF podczas poszukiwania pasującego `)'" @@ -1635,94 +1645,94 @@ msgstr "xtrace_set: pusty wskaźnik pliku" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': nieprawidłowy znak formatujący" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "deskryptor pliku poza zakresem" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: niejednoznaczne przekierowanie" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nie można nadpisać istniejącego pliku" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ograniczony: nie można przekierować wyjścia" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "nie można utworzyć pliku tymczasowego dla dokumentu miejscowego: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nie można przypisać deskryptora pliku do zmiennej" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nie są wspierane bez sieci" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "błąd przekierowania: nie można powielić deskryptora pliku" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "nie można znaleźć /tmp, proszę o utworzenie!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp musi być prawidłową nazwą katalogu" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "tryb ładnego wypisywania jest ignorowany w powłokach interaktywnych" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: nieprawidłowa opcja" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "nie można ustawić uid-a na %d: efektywny uid %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "nie można ustawić gid-a na %d: efektywny gid %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "nie można uruchomić debuggera; tryb diagnostyczny wyłączony" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: jest katalogiem" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Nie mam nazwy!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, wersja %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1731,319 +1741,319 @@ msgstr "" "Użycie:\t%s [długa opcja GNU] [opcja] ...\n" "\t%s [długa opcja GNU] [opcja] plik-skryptu ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Długie opcje GNU:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Opcje powłoki:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD lub -c polecenie lub -O shopt_option\t\t(tylko wywołanie)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s lub -o opcja\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Aby uzyskać więcej informacji o opcjach powłoki, napisz `%s -c \"help set\"'.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Aby uzyskać więcej informacji o poleceniach wewnętrznych powłoki,\n" "napisz `%s -c help'.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Do zgłaszania błędów należy używać polecenia `bashbug'.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "strona domowa basha: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "Ogólna pomoc przy użytkowaniu oprogramowania GNU: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: nieprawidłowa operacja" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Błędny sygnał" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Rozłączenie" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Przerwanie" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Wyjście" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Niedozwolona instrukcja" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "Pułapka debuggera/breakpoint" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Instrukcja ABORT" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Pułapka EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Błąd w obliczeniach zmiennoprzecinkowych" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Unicestwiony" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Błąd szyny" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Naruszenie ochrony pamięci" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Błędne wywołanie systemowe" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Przerwany potok" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Budzik" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Zakończony" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Nagłe żądanie we/wy" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Zatrzymany (sygnał)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Kontynuacja" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Śmierć lub zatrzymanie potomka" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Zatrzymany (wejście z tty)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Zatrzymany (wyjście na tty)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "We/wy gotowe" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Przekroczony limit procesora" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Przekroczony limit pliku" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarm (wirtualny)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarm (profiler)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Okno zmienione" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Zasoby utracone" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Sygnał użytkownika 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Sygnał użytkownika 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "Dane wejściowe HFT" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "Bliska awaria zasilania" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "Bliska awaria systemu" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "Przeniesienie procesu na inny procesor" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "Błąd programowania" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "Nadany tryb monitora HFT" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "Wycofany tryb monitora HFT" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "Sekwencja dźwiękowa HFT zakończona" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Żądanie informacji" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Nieznany sygnał #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "złe podstawienie: brak zamykającego `%s' w %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: nie można przypisać listy do elementu tablicy" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "nie można utworzyć potoku dla podstawienia procesu" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "nie można utworzyć procesu potomnego dla podstawienia procesu" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nie można otworzyć nazwanego potoku %s do odczytu" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nie można otworzyć nazwanego potoku %s do zapisu" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nie można powielić nazwanego potoku %s jako deskryptor %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "podstawienie polecenia: zignorowano zerowy bajt na wejściu" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "nie można utworzyć potoku dla podstawienia polecenia" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "nie można utworzyć procesu potomnego dla podstawienia polecenia" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: nie można powielić potoku jako deskryptora 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: nieprawidłowa nazwa zmiennej przy odwołaniu do nazwy" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: błędne rozwinięcie niebezpośrednie" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "`%s': błędna nazwa zmiennej" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: parametr nieustawiony" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametr pusty lub nieustawiony" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: wyrażenie dla podłańcucha < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: złe podstawienie" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nie można przypisywać w ten sposób" -#: subst.c:9814 +#: subst.c:10111 msgid "future versions of the shell will force evaluation as an arithmetic substitution" msgstr "przyszłe wersje powłoki będą wymuszać obliczenie jako podstawienie arytmetyczne" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "złe podstawienie: brak zamykającego \"`\" w %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "brak pasującego: %s" @@ -2066,21 +2076,21 @@ msgstr "oczekiwano `)'" msgid "`)' expected, found %s" msgstr "oczekiwano `)', znaleziono %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: oczekiwano operatora dwuargumentowego" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: oczekiwano operatora jednoargumentowego" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "brakujący `]'" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "błąd składni: oczekiwano `%s'" @@ -2089,99 +2099,104 @@ msgstr "błąd składni: oczekiwano `%s'" msgid "invalid signal number" msgstr "nieprawidłowy numer sygnału" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "obsługa pułapki: przekroczono maksymalny poziom obsługi pułapek (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: zła wartość trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: obsługa sygnału jest ustawiona na SIG_DFL, wysyłając %d (%s) do siebie" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: zły sygnał %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "błąd importu definicji funkcji dla `%s'" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "poziom powłoki (%d) jest za duży, ustawiono na 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: brak kontekstu funkcji w bieżącym zakresie" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: nie można przypisać wartości do zmiennej" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s: nie można odziedziczyć wartości z niezgodnego typu" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: przypisanie wartości całkowitej przy odwołaniu do nazwy" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: brak kontekstu funkcji w bieżącym zakresie" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s ma pusty exportstr" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "nieprawidłowy znak %d w exportstr dla %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "brak `=' w exportstr dla %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: nagłówek shell_variables poza kontekstem funkcji" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: brak kontekstu global_variables" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: nagłówek shell_variables poza zakresem tymczasowego środowiska" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nie można otworzyć jako PLIK" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: nieprawidłowa wartość dla deskryptora pliku do śledzenia" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: wartość zgodności poza zakresem" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Copyright (C) 2022 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "License GPLv3+: GNU GPL version 3 or later \n" @@ -2261,12 +2276,12 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] polecenie [arg ...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgiIlnrtux] [-p] [nazwa[=wartość] ...]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgiIlnrtux] [nazwa[=wartość] ...] lub declare -p [-aAfFilnrtux] [nazwa ...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgiIlnrtux] [-p] nazwa[=wartość] ..." +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgiIlnrtux] nazwa[=wartość] ... lub typeset -p [-aAfFilnrtux] [nazwa ...]" #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2353,8 +2368,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [-abefhkmnptuvxBCHP] [-o nazwa-opcji] [--] [arg ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o nazwa-opcji] [--] [-] [arg ...]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" @@ -2401,8 +2416,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nazwa [nazwa ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ograniczenie]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [ograniczenie]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" @@ -2441,12 +2456,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C msgstr "if POLECENIA; then POLECENIA; [ elif POLECENIA; then POLECENIA; ]... [ else POLECENIA; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while POLECENIA; do POLECENIA; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while POLECENIA; do POLECENIA-2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until POLECENIA; do POLECENIA; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until POLECENIA; do POLECENIA-2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -3771,7 +3786,8 @@ msgid "" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" @@ -3813,7 +3829,8 @@ msgstr "" " podano opcję -u). Wiersz jest dzielony na pola wg reguł podziału na słowa,\n" " pierwsze słowo jest przypisywane pierwszej NAZWIE, drugie - drugiej NAZWIE\n" " itd.; wszystkie pozostałe słowa są przypisywane ostatniej NAZWIE. Jako\n" -" ograniczniki słów są rozpoznawane tylko znaki ze zmiennej $IFS.\n" +" ograniczniki słów są rozpoznawane tylko znaki ze zmiennej $IFS. Domyślnie\n" +" znak odwrotnego ukośnika chroni znaki ograniczników i nowej linii.\n" " \n" " Jeśli nie podano NAZW, odczytany wiersz jest zapisywany w zmiennej REPLY.\n" " \n" @@ -3849,7 +3866,7 @@ msgstr "" " błąd przypisania zmiennej albo podano nieprawidłowy deskryptor dla\n" " argumentu -u." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3870,7 +3887,7 @@ msgstr "" " Zwracane jest N lub niepowodzenie, jeśli powłoka nie wykonuje żadnej\n" " funkcji ani skryptu." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4041,7 +4058,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano nieprawidłową opcję." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4080,7 +4097,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędną opcję lub NAZWA jest tylko do\n" " odczytu." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4113,7 +4130,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano nieprawidłową opcję lub NAZWĘ." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4151,7 +4168,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano nieprawidłową opcję lub NAZWĘ." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4169,7 +4186,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że N jest ujemne lub większe niż $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4193,7 +4210,7 @@ msgstr "" " Zwracany jest stan ostatnio wykonanego polecenia z PLIKU lub błąd, jeśli\n" " PLIKU nie udało się odczytać." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4219,7 +4236,7 @@ msgstr "" " Zwracana jest prawda, chyba że kontrola zadań jest wyłączona lub wystąpi\n" " błąd." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4384,7 +4401,7 @@ msgstr "" " Zwracana jest prawda, jeśli wartością WYRAŻENIA jest prawda; fałsz, gdy\n" " wartością WYRAŻENIA jest fałsz lub podano błędny argument." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4396,7 +4413,7 @@ msgstr "" " Jest to synonim dla wbudowanego polecenia \"test\", ale wymagający, by\n" " ostatnim argumentem był `]' pasujący do początkowego `['." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4414,7 +4431,7 @@ msgstr "" " Stan wyjściowy:\n" " Zawsze prawda." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4483,7 +4500,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędny SYGNAŁ lub błędną opcję." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4538,7 +4555,7 @@ msgstr "" " Zwracana jest prawda, jeśli każda NAZWA zostanie znaleziona; fałsz, jeśli\n" " którakolwiek nie zostanie znaleziona." -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4631,7 +4648,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4665,7 +4682,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędne uprawnienia lub błędną opcję." -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4715,7 +4732,7 @@ msgstr "" " Zwracany jest stan zakończenia ID; niepowodzenie, jeśli ID jest\n" " nieprawidłowe lub podano błędną opcję." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4738,7 +4755,7 @@ msgstr "" " Zwracany jest status ID lub niepowodzenie, jeśli ID jest błędny lub podano\n" " nieprawidłową opcję." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4759,7 +4776,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4788,7 +4805,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4822,7 +4839,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4851,7 +4868,7 @@ msgstr "" " Stan wyjściowy:\n" " Polecenie zwraca status zakończenia POTOKU poleceń." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4869,7 +4886,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4899,43 +4916,43 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Wykonywanie poleceń dopóki test kończy się powodzeniem.\n" " \n" -" Rozwijanie i uruchamianie POLECEŃ dopóki ostatnie polecenie\n" -" w POLECENIACH `while' kończy się z kodem zero.\n" +" Rozwijanie i uruchamianie POLECEŃ-2 dopóki ostatnie polecenie\n" +" w POLECENIACH kończy się z kodem zerowym.\n" " \n" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Wykonywanie poleceń dopóki test nie kończy się powodzeniem.\n" " \n" -" Rozwijanie i uruchamianie POLECEŃ dopóki ostatnie polecenie\n" -" w POLECENIACH `until' kończy się z kodem niezerowym.\n" +" Rozwijanie i uruchamianie POLECEŃ-2 dopóki ostatnie polecenie\n" +" w POLECENIACH kończy się z kodem niezerowym.\n" " \n" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4956,7 +4973,7 @@ msgstr "" " Stan wyjściowy:\n" " Polecenie coproc zwraca status wyjścia 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -4978,7 +4995,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest sukces, chyba że NAZWA jest tylko do odczytu." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4996,7 +5013,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5019,7 +5036,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest stan wznowionego zadania." -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5037,7 +5054,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracane jest 1, jeśli wartością WYRAŻENIA jest 0; 0 w przeciwnym wypadku." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5086,7 +5103,7 @@ msgstr "" " Stan wyjściowy:\n" " 0 lub 1 w zależności od wartości WYRAŻENIA." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5193,7 +5210,7 @@ msgstr "" " \t\tdecydowaniu, które polecenia powinny być zapisywane na liście\n" " \t\thistorii.\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5249,7 +5266,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędny argument lub zmiana katalogu\n" " się nie powiedzie." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5300,7 +5317,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędny argument lub zmiana katalogu\n" " się nie powiedzie." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5353,7 +5370,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5389,7 +5406,7 @@ msgstr "" " Zwracana jest prawda jeśli NAZWA-OPCJI jest włączona; niepowodzenie, jeśli\n" " podano błędną opcję lub NAZWA-OPCJI jest wyłączona." -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5408,6 +5425,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" @@ -5439,6 +5458,7 @@ msgstr "" " \t\targumencie\n" " %q\tcytowanie argumentu w sposób umożliwiający użycie na wejściu\n" " \t\tpowłoki\n" +" %Q\tjak %q, ale zastosowanie precyzji na wejściu przed cytowaniem\n" " %(fmt)T\twypisanie łańcucha daty-czasu otrzymanego z użycia FMT jako\n" " \t łańcucha formatującego dla strftime(3)\n" " \n" @@ -5451,7 +5471,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędną opcję lub zapis albo\n" " przypisanie zakończy się niepowodzeniem." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5501,7 +5521,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5521,7 +5541,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5575,7 +5595,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędną opcję lub NAZWA nie ma\n" " zdefiniowanej specyfikacji dopełniania." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5641,7 +5661,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędną opcję lub TABLICA jest tylko\n" " do odczytu, lub nie jest tablicą indeksowaną." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/pt.gmo b/po/pt.gmo index 3aa7fce79..0f516eeac 100644 Binary files a/po/pt.gmo and b/po/pt.gmo differ diff --git a/po/pt.po b/po/pt.po index af25824ab..d0933599e 100644 --- a/po/pt.po +++ b/po/pt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: bash-5.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2020-12-08 03:20+0000\n" "Last-Translator: Pedro Albuquerque \n" "Language-Team: Portuguese \n" @@ -23,57 +23,54 @@ msgstr "" msgid "bad array subscript" msgstr "subscrito de matriz inválido" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: a remover atributo nameref" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: impossível converter matriz indexada para associativa" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: chave de matriz associativa inválida" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: impossível atribuir a índice não numérico" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: tem de usar subscrito ao atribuir a matriz associativa" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: impossível criar: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "bash_execute_unix_command: impossível encontrar mapa de teclado para o comando" +msgstr "" +"bash_execute_unix_command: impossível encontrar mapa de teclado para o " +"comando" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: o 1º carácter não-espaço não é \"\"\"" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "sem \"%c\" de fecho em %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: separador dois pontos em falta" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "\"%s\": impossível desassociar no mapa de teclado do comando" @@ -93,7 +90,7 @@ msgstr "expansão: falha ao alocar memória para %u elementos" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "expansão: falha ao alocar memória para \"%s\"" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "\"%s\": aliás inválido" @@ -160,14 +157,15 @@ msgstr "" " O valor de EXPR indica quantas chamadas deve recuar antes da\n" " actual; a chamada superior é a chamada 0.\n" " Estado de saída:\n" -" Devolve 0 a não ser que a consola não esteja a executar uma função ou EXPR\n" +" Devolve 0 a não ser que a consola não esteja a executar uma função ou " +"EXPR\n" " seja inválida." #: builtins/cd.def:327 msgid "HOME not set" msgstr "HOME não definida" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "demasiados argumentos" @@ -194,7 +192,7 @@ msgstr "aviso: " msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: a opção requer um argumento" @@ -209,7 +207,7 @@ msgstr "%s: requer um argumento numérico" msgid "%s: not found" msgstr "%s: não encontrado" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: opção inválida" @@ -219,7 +217,7 @@ msgstr "%s: opção inválida" msgid "%s: invalid option name" msgstr "%s: nome de opção inválido" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "\"%s\": identificador inválido" @@ -232,7 +230,7 @@ msgstr "número octal inválido" msgid "invalid hex number" msgstr "número hexadecimal inválido" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "número inválido" @@ -246,88 +244,93 @@ msgstr "%s: especificação de sinal inválida" msgid "`%s': not a pid or valid job spec" msgstr "\"%s\": especificação de pid ou tarefa inválida" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: variável só de leitura" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: impossível desactivar" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fora do intervalo" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argumento" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s fora do intervalo" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: tarefa inexistente" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: sem controlo da tarefa" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "sem controlo da tarefa" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: restrita" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "restrita" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: não é interno da consola" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "erro de escrita: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "erro ao definir atributos do terminal: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "erro ao obter atributos do terminal: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: erro ao obter a pasta actual: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: especificação de tarefa ambígua" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "ajuda indisponível nesta versão" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: impossível desactivar: %s só de leitura" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: impossível desactivar" @@ -337,108 +340,108 @@ msgstr "%s: impossível desactivar" msgid "%s: invalid action name" msgstr "%s: nome de acção inválido" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: sem especificação de conclusão" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "aviso: a opção -F pode não resultar como esperado" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "aviso: a opção -C pode não resultar como esperado" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "a função de conclusão não está em execução" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "só pode ser usado numa função" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "impossível usar \"-f\" para fazer funções" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: função só de leitura" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: variável de referência não pode ser uma matriz" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: não são permitidas auto-referências de nameref" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: referência circular de nome" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "\"%s\": nome de variável inválido para referência de nome" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "impossível usar \"-f\" para fazer funções" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: função só de leitura" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: atribuição de matriz composta citada obsoleta" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: impossível destruir variáveis de matriz assim" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: impossível converter matriz associativa em indexada" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: atribuição de matriz composta citada obsoleta" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "carregamento dinâmico indisponível" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "impossível abrir objecto partilhado %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "impossível encontrar %s no objecto partilhado %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: interno dinâmico já carregado" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "carregamento da função %s devolve falha (%d): não carregada" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: não carregada dinamicamente" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: impossível eliminar: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: é uma pasta" @@ -453,7 +456,7 @@ msgstr "%s: não é um ficheiro normal" msgid "%s: file is too large" msgstr "%s: ficheiro muito grande" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: impossível executar o binário" @@ -545,15 +548,18 @@ msgstr "" #: builtins/help.def:185 #, c-format -msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "nenhum tópico de ajuda para \"%s\". Tente \"help help\", \"man -k %s\" ou \"info %s\"." +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"nenhum tópico de ajuda para \"%s\". Tente \"help help\", \"man -k %s\" ou " +"\"info %s\"." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: impossível abrir: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -564,7 +570,8 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" -"Estes comandos de consola são definidos internamente. Insira \"help\" para ver a lista.\n" +"Estes comandos de consola são definidos internamente. Insira \"help\" para " +"ver a lista.\n" "Insira \"help nome\" para saber mais sobre a função \"nome\".\n" "Use \"info bash\" para saber mais sobre a consola em geral.\n" "Use \"man -k ou \"info\" para saber mais sobre comandos não listados.\n" @@ -572,21 +579,21 @@ msgstr "" "Um asterisco (*) junto a um nome significa que o comando está inactivo.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "impossível usar mais de um -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "posição do histórico" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: datação inválida" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: falha na expansão do histórico" @@ -609,78 +616,78 @@ msgstr "%s: os argumentos têm de ser IDs de processos ou tarefas" msgid "Unknown error" msgstr "Erro desconhecido" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "esperada expressão" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: não é uma matriz indexada" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificação de descritor de ficheiro inválida" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descritor de ficheiro inválido: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: total de linhas inválido" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: origem de matriz inválida" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: callback inválida" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "nome de variável de matriz vazio" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "requerido suporte a variáveis de matriz" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "%s: carácter de formato em falta" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "\"%c\": especificação de formato de hora inválida" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": carácter de formato inválido" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "problema de análise de formato: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "dígito hex em falta para \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "dígito unicode em falta para \\%c" @@ -721,10 +728,12 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Mostrar a lista de pastas actualmente lembradas. As pastas\n" @@ -830,12 +839,12 @@ msgstr "" " \n" " O \"dirs\" interno mostra a pilha de pastas." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: especificação de inacção inválida" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "erro de leitura: %d: %s" @@ -848,7 +857,7 @@ msgstr "só pode usar \"return\" a partir de uma função ou script baseado" msgid "cannot simultaneously unset a function and a variable" msgstr "impossível desactivar simultaneamente uma função e uma variável" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: não é variável de matriz" @@ -867,11 +876,11 @@ msgstr "%s: impossível exportar" msgid "shift count" msgstr "total de trocas" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "impossível definir e desactivar opções da consola em simultâneo" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome de opção da consola inválido" @@ -938,16 +947,16 @@ msgstr "%s: argumento de limite inválido" msgid "`%c': bad command" msgstr "\"%c\": comando errado" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: impossível obter limite: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "limite" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: impossível modificar limite: %s" @@ -966,7 +975,7 @@ msgstr "\"%c\": operador de modo simbólico inválido" msgid "`%c': invalid symbolic mode character" msgstr "\"%c\": carácter de modo simbólico inválido" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " linha " @@ -986,96 +995,106 @@ msgstr "A abortar..." msgid "INFORM: " msgstr "INFORM.: " -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "aviso: " + +#: error.c:488 msgid "unknown command error" msgstr "erro de comando desconhecido" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "tipo de comando errado" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "conector errado" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "salto errado" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: variável desassociada" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aDemasiada inacção à espera de entrada: sessão terminada\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "impossível redireccionar entrada padrão de /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "FORMATOHORA: \"%c\": carácter de formato inválido" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] ainda existe" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "erro de pipe" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: nível máximo de aninhamento de eval excedido (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: nível máximo de aninhamento de fonte excedido (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: nível máximo de aninhamento de função excedido (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restrito: impossível especificar \"/\" em nomes de comando" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: comando não encontrado" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: impossível executar o binário" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interpretador errado" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: impossível executar binário: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "%s: é uma opção interna especial" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossível duplicar fd %d para fd %d" @@ -1088,68 +1107,68 @@ msgstr "nível de recursão da expressão excedido" msgid "recursion stack underflow" msgstr "sub-fluxo da pilha de recursividade" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "erro de sintaxe na expressão" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "tentativa de atribuição a não-variável" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "erro de sintaxe na atribuição de variável" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "divisão por 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "problema: símbolo expassign errado" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "\":\" esperados para expressão condicional" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "expoente menor que 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identificador esperado após pré-incremento ou pré-decremento" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "\")\" em falta" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "erro de sintaxe: operando esperado" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "erro de sintaxe: operador aritmético inválido" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (símbolo de erro é \"%s\")" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "base aritmética inválida" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "constante inteira inválida" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "valor muito grande para a base" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: erro de expressão\n" @@ -1158,7 +1177,7 @@ msgstr "%s: erro de expressão\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: impossível aceder a pastas-mãe" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "impossível repor modo nodelay para fd %d" @@ -1166,7 +1185,8 @@ msgstr "impossível repor modo nodelay para fd %d" #: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" -msgstr "impossível alocar novo descritor de ficheiro para entrada bash de fd %d" +msgstr "" +"impossível alocar novo descritor de ficheiro para entrada bash de fd %d" #: input.c:274 #, c-format @@ -1177,167 +1197,167 @@ msgstr "save_bash_input: buffer já existe para o novo fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pipe pgrp" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "pid %d aparece em tarefa em execução %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "a eliminar tarefa interrompida %d com grupo de processo %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marcado como ainda activo" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: pid não existente" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Sinal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Feito" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Interrompido" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Interrompido(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Em execução" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Feito(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Sair de %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Estado desconhecido" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(núcleo despejado) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid filho (%ld para %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld não é um filho desta consola" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: sem registo do processo %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_tarefa: tarefa %d está interrompida" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: sem tarefas actuais" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: tarefa terminada" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: tarefa %d já em 2º plano" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: a ligar WNOHANG para evitar bloquieo indefinido" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: linha %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (núcleo despejado)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(wd agora: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp falhou" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: sem controlo de tarefa em 2º plano" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplina de linha" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "impossível definir grupo de processo do terminal (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "não há controlo de tarefa nesta consola" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: asserção falhada: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1346,47 +1366,47 @@ msgstr "" "\r\n" "malloc: %s:%d: asserção frustrada\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "desconhecido" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: bloqueio na lista livre clobbered" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: chamado com argumento de bloco já liberto" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: chamado com argumento de bloco não alocado" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: sub-fluxo detectado; mh_nbytes fora do intervalo" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free: sub-fluxo detectado; magic8 corrompido" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: tamanho dos pontos inicial e final difere" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: chamado com argumento de bloco não alocado" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: sub-fluxo detectado; mh_nbytes fora do intervalo" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: sub-fluxo detectado; magic8 corrompido" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: tamanho dos pontos inicial e final difere" @@ -1428,22 +1448,22 @@ msgstr "%s: especificação de caminho de rede errada" msgid "network operations not supported" msgstr "operações de rede não suportadas" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: não pode alterar o idioma (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: não pode alterar o idioma (%s): %s" @@ -1461,136 +1481,142 @@ msgstr "Tem novo correio em $_" msgid "The mail in %s has been read\n" msgstr "O correio em %s já foi lido\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "erro de sintaxe: requerida expressão aritmética" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "erro de sintaxe: \";\" inesperado" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "erro de sintaxe: \"((%s))\"" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo de instrução %d errado" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "here-document na linha %d delimitado por fim-de-ficheiro (desejado \"%s\")" +msgstr "" +"here-document na linha %d delimitado por fim-de-ficheiro (desejado \"%s\")" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "make_redirection: instrução de redireccionamento \"%d\" fora do intervalo" +msgstr "" +"make_redirection: instrução de redireccionamento \"%d\" fora do intervalo" -#: parse.y:2393 +#: parse.y:2428 #, c-format -msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" -msgstr "consola_getc: consola_input_line_size (%zu) excede SIZE_MAX (%lu): linha truncada" +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"consola_getc: consola_input_line_size (%zu) excede SIZE_MAX (%lu): linha " +"truncada" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "total here-document máximo excedido" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF inesperado ao procurar \"%c\" correspondentes" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "EOF inesperado ao procurar \"]]\"" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "erro de sintaxe em expressão condicional: símbolo inesperado \"%s\"" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "erro de sintaxe em expressão condicional" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "símbolo inesperado \"%s\", esperado \")\"" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "esperado \")\"" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento \"%s\" inesperado para operador unário condicional" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para operador unário condicional" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "símbolo \"%s\" inesperado, esperado operador binário condicional" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "esperado operador binário condicional" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento \"%s\" inesperado para operador binário condicional" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para operador binário condicional" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "símbolo \"%c\" inesperado em comando condicional" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "símbolo \"%s\" inesperado em comando condicional" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "símbolo %d inesperado em comando condicional" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "erro de sintaxe junto a símbolo \"%s\" inesperado" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "erro de sintaxe junto a \"%s\"" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "erro de sintaxe: fim de ficheiro inesperado" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "erro de sintaxe" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use \"%s\" para sair da consola.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF inesperado ao procurar o \")\" correspondente" @@ -1628,94 +1654,94 @@ msgstr "xtrace_set: ponteiro de ficheiro NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": carácter de formato inválido" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "descritor de ficheiro fora de alcance" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redireccionamento ambíguo" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: impossível sobrescrever ficheiro existente" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricto: impossível redireccionar saída" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "impossível criar ficheiro temporário para here-document: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: impossível atribuir fd a variável" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port não suportado em trabalho de rede" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "erro de redireccionamento: impossível duplicar fd" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "impossível encontrar /tmp, por favor crie-a!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp tem de ser um nome de pasta válido" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "modo pretty-printing ignorado em consolas interactivas" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opção inválida" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "impossível definir uid como %d: uid efectiva %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "impossível definir gid como %d: gid efectiva %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "impossível iniciar o depurador; modo de depuração desactivado" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: é uma pasta" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Não tenho nome!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versão %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1724,317 +1750,324 @@ msgstr "" "Uso:\t%s [opção longa GNU] [opção] ...\n" "\t%s [opção longa GNU] [opção] script-file ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Opções longas GNU:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Opções da consola:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\tcomando -ilrsD ou -c ou -O shopt_option\t\t(só chamada)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\topção -%s ou -o\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" -msgstr "Insira \"%s -c \"help set\"\" para mais informação sobre opções da consola.\n" +msgstr "" +"Insira \"%s -c \"help set\"\" para mais informação sobre opções da consola.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" -msgstr "Insira \"%s -c help\" para mais informação sobre comandos internos da consola.\n" +msgstr "" +"Insira \"%s -c help\" para mais informação sobre comandos internos da " +"consola.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use o comando \"bashbug\" para reportar erros.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "Página inicial do bash: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "Ajuda geral para usar programas GNU: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operação inválida" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Sinal falso" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Desligar" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Interromper" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Sair" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Instrução ilegal" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "BPT trace/trap" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Instrução ABORT" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Instrução EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Excepção de vírgula flutuante" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Morto" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Erro de bus" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Falha de segmentação" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Chamada de sistema errada" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Pipe quebrado" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Alarme" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Terminado" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Condição IO urgente" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Parado (sinal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Continuar" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Morte ou paragem do filho" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Parado (entrada tty)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Parado (saída tty)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O pronto" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Limite do CPU" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Limite do ficheiro" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarme (virtual)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarme (perfil)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Janela alterada" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Bloqueio de registo" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Sinal de utilizador 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Sinal de utilizador 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "entrada de dados HTF pendente" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "falha de energia iminente" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "acidente do sistema iminente" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "migrar processo para outro CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "erro de programação" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "concedido modo de monitor HTF" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "retirado modo de monitor HTF" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "sequência de som HTF terminou" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Pedido de informação" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Sinal desconhecido #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "má substituição: sem \"%s\" de fecho em %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: impossível atribuir lista a membro de matriz" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "impossível fazer pipe para substituição de processo" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "impossível fazer filho para substituição de processo" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "impossível abrir pipe chamado %s para leitura" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "impossível abrir pipe chamado %s para escrita" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "imossível duplicar pipe chamado %s como fd %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "substituição de comando: byte nulo ignorado na entrada" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "impossível fazer pipe para substituição de comando" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "impossível fazer filho para substituição de comando" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: impossível duplicar pipe como fd 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: nome de variável inválido para referência de nome" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: expansão indirecta inválida" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: nome de variável inválido" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: parâmetro não definido" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parâmetro nulo ou não definido" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expressão de sub-cadeia < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: má substituição" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: impossível atribuir desta forma" -#: subst.c:9814 -msgid "future versions of the shell will force evaluation as an arithmetic substitution" -msgstr "futuras versões da consola vão forçar a avaliação como uma substituição aritmética" +#: subst.c:10111 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"futuras versões da consola vão forçar a avaliação como uma substituição " +"aritmética" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "má substituição: sem \"\"\" de fecho em %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "sem par:%s" @@ -2057,21 +2090,21 @@ msgstr "\")\" esperado" msgid "`)' expected, found %s" msgstr "\")\" esperado, encontrado %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: operador bináro esperado" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: operador unáro esperado" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "\"]\" em falta" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "erro de sintaxe: \"%s\" esperado" @@ -2080,103 +2113,117 @@ msgstr "erro de sintaxe: \"%s\" esperado" msgid "invalid signal number" msgstr "número de sinal inválido" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "gestor de trap: nível máximo de gestor de captura excedido (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: valor errado em trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format -msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "run_pending_traps: gestor de sinal é SIG_DFL, a reenviar %d (%s) para mim próprio" +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: gestor de sinal é SIG_DFL, a reenviar %d (%s) para mim " +"próprio" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinal errado %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "erro ao importar definição de função para \"%s\"" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "nível da consola (%d) muito alto, a repor para 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variável: sem contexto de função no âmbito actual" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: não pode atribuir um valor à variável" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: a atribuir inteiro à referência de nome" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: sem contexto de função no âmbito actual" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s tem exportstr nulo" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carácter %d inválido em exportstr para %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "sem \"=\" em exportstr para %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: cabeça de consola_variables não é contexto de função" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: sem contexto de global_variables" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" -msgstr "pop_scope: cabeça de consola_variables não é âmbito de ambiente temporário" +msgstr "" +"pop_scope: cabeça de consola_variables não é âmbito de ambiente temporário" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: impossível abrir como FICHEIRO" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valor inválido para descritor de ficheiro trace" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: valor de compatibilidade fora do intervalo" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +#, fuzzy +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Copyright (C) 2020 Free Software Foundation, Inc." #: version.c:47 version2.c:47 -msgid "License GPLv3+: GNU GPL version 3 or later \n" -msgstr "Licença GPLv3+: GNU GPL versão 3 ou posterior \n" +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licença GPLv3+: GNU GPL versão 3 ou posterior \n" #: version.c:86 version2.c:86 #, c-format @@ -2220,8 +2267,13 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] nome [nome ...]" #: builtins.c:53 -msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" -msgstr "bind [-lpsvPSVX] [-m mapa de teclado] [-f ficheiro] [-q nome] [-u nome] [-r seqtecl] [-x seqtecl:comando-consola] [seqtecl:função-readline ou comando-readline]" +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m mapa de teclado] [-f ficheiro] [-q nome] [-u nome] [-r " +"seqtecl] [-x seqtecl:comando-consola] [seqtecl:função-readline ou comando-" +"readline]" #: builtins.c:56 msgid "break [n]" @@ -2252,11 +2304,17 @@ msgid "command [-pVv] command [arg ...]" msgstr "comando [-pVv] comando [arg ...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFgiIlnrtux] [-p] [nome[=valor] ...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +#, fuzzy +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFgiIlnrtux] [-p] nome[=valor] ..." #: builtins.c:82 @@ -2316,8 +2374,12 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [padrão ...]" #: builtins.c:123 -msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" -msgstr "history [-c] [-d desvio] [n], history -anrw [ficheiro] ou history -ps arg [arg...]" +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d desvio] [n], history -anrw [ficheiro] ou history -ps arg " +"[arg...]" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2328,23 +2390,32 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [tarefaspec ... | pid ...]" #: builtins.c:134 -msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" -msgstr "kill [-s sigspec | -n signum | -sigspec] pid | tarefaspec ... ou kill -l [sigspec]" +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] pid | tarefaspec ... ou kill -l " +"[sigspec]" #: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" #: builtins.c:138 -msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" -msgstr "read [-ers] [-a matriz] [-d delim] [-i texto] [-n ncars] [-N ncars] [-p prompt] [-t inacção] [-u fd] [nome ...]" +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a matriz] [-d delim] [-i texto] [-n ncars] [-N ncars] [-p " +"prompt] [-t inacção] [-u fd] [nome ...]" #: builtins.c:140 msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opção] [--] [arg ...]" #: builtins.c:144 @@ -2392,7 +2463,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nome [nome ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limite]" #: builtins.c:174 @@ -2428,15 +2500,21 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case PALAVRA in [PADRÃO [| PADRÃO]...) COMANDOS ;;]... esac" #: builtins.c:194 -msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" -msgstr "if COMANDOS; then COMANDOS; [ elif COMANDOS; then COMANDOS; ]... [ else COMANDOS; ] fi" +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if COMANDOS; then COMANDOS; [ elif COMANDOS; then COMANDOS; ]... [ else " +"COMANDOS; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while COMANDOS; do COMANDOS; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until COMANDOS; do COMANDOS; done" #: builtins.c:200 @@ -2488,24 +2566,43 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] formato [argumentos]" #: builtins.c:231 -msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]" -msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o opção] [-A acção] [-G padrãoglobal] [-W listapalavras] [-F função] [-C comando] [-X padrãofiltro] [-P prefixo] [-S sufixo] [nome ...]" +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o opção] [-A acção] [-G " +"padrãoglobal] [-W listapalavras] [-F função] [-C comando] [-X padrãofiltro] " +"[-P prefixo] [-S sufixo] [nome ...]" #: builtins.c:235 -msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" -msgstr "compgen [-abcdefgjksuv] [-o opção] [-A acção] [-G padrãoglobal] [-W listapalavras] [-F função] [-C comando] [-X padrãofiltro] [-P prefixo] [-S sufixo] [palavra]" +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o opção] [-A acção] [-G padrãoglobal] [-W " +"listapalavras] [-F função] [-C comando] [-X padrãofiltro] [-P prefixo] [-S " +"sufixo] [palavra]" #: builtins.c:239 msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o opção] [-DEI] [nome ...]" #: builtins.c:242 -msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" -msgstr "mapfile [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C callback] [-c quantia] [matriz]" +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C " +"callback] [-c quantia] [matriz]" #: builtins.c:244 -msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" -msgstr "readarray [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C callback] [-c quantum] [matriz]" +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C " +"callback] [-c quantum] [matriz]" #: builtins.c:256 msgid "" @@ -2522,7 +2619,8 @@ msgid "" " -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has been\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" " defined." msgstr "" "Definir ou mostrar aliás.\n" @@ -2538,7 +2636,8 @@ msgstr "" " -p\timprimir todos os aliás definidos em formato reutilizável\n" " \n" " Estado de saída:\n" -" alias devolve verdadeiro a não ser que seja fornecido um NOME para o qual\n" +" alias devolve verdadeiro a não ser que seja fornecido um NOME para o " +"qual\n" "ainda não haja um aliás." #: builtins.c:278 @@ -2569,25 +2668,30 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their values\n" -" -s List key sequences that invoke macros and their values\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" -" -X List key sequences bound with -x and associated commands\n" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2596,36 +2700,53 @@ msgstr "" "Definir associações de teclas e variáveis para Readline.\n" " \n" " Associar uma sequência de teclas a uma função ou macro Readline, ou\n" -" defina uma variável Readline. A sintaxe de argumento não-opção é equivalente\n" -" à encontrada em ~/.inputrc, mas tem de ser passada como argumento único:\n" +" defina uma variável Readline. A sintaxe de argumento não-opção é " +"equivalente\n" +" à encontrada em ~/.inputrc, mas tem de ser passada como argumento " +"único:\n" " e.g., bind \"\"\\C-x\\C-r\": re-read-init-file\".\n" " \n" " Opções:\n" -" -m maptecl Use MAPTECL como mapa de teclado para a duração deste\n" -" comando. Nomes de mapas aceitáveis são emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" +" -m maptecl Use MAPTECL como mapa de teclado para a " +"duração deste\n" +" comando. Nomes de mapas aceitáveis são " +"emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, " +"vi-move,\n" " vi-command, e vi-insert.\n" " -l Listar nomes de funções.\n" " -P Listar nomes de funções e associações.\n" -" -p Listar funções funçãos e associações de forma a que possam\n" +" -p Listar funções funçãos e associações de " +"forma a que possam\n" " ser reutilizados como entrada.\n" -" -S Listar sequências de teclas que chamem macros e seus valores\n" -" -s Listar sequências de teclas que chamem macros e seus valores\n" -" de forma a que possam ser reutilizados como entrada.\n" +" -S Listar sequências de teclas que chamem " +"macros e seus valores\n" +" -s Listar sequências de teclas que chamem " +"macros e seus valores\n" +" de forma a que possam ser reutilizados como " +"entrada.\n" " -V Listar nomes de variáveis e seus valores\n" -" -v Listar nomes de variáveis e seus valores de forma a que possam\n" +" -v Listar nomes de variáveis e seus valores de " +"forma a que possam\n" " ser reutilizados como entrada.\n" -" -q nome-função Consultar que teclas chamaram a função em causa.\n" -" -u nome-função Unbind all keys which are bound to the named função.\n" +" -q nome-função Consultar que teclas chamaram a função em " +"causa.\n" +" -u nome-função Unbind all keys which are bound to the named " +"função.\n" " -r seqtecl Remover associação de SEQTECL.\n" -" -f nomefich Ler associações de teclas a partir de NOMEFICH.\n" -" -x seqtecl:comando-consola\tCausa a execuçaõ de COMANDO-SHELL quando\n" +" -f nomefich Ler associações de teclas a partir de " +"NOMEFICH.\n" +" -x seqtecl:comando-consola\tCausa a execuçaõ de COMANDO-SHELL " +"quando\n" " \t\t\t\tSEQTECL for inserido.\n" -" -X Listarsequências de teclas associadas a -x e comandos ligados\n" -" de forma a que possam ser reutilizados como entrada.\n" +" -X Listarsequências de teclas associadas a -x e " +"comandos ligados\n" +" de forma a que possam ser reutilizados como " +"entrada.\n" " \n" " Estado de saída:\n" -" bind devolve 0 a não ser que seja dada uma opção desconhecida ou ocorra um erro." +" bind devolve 0 a não ser que seja dada uma opção desconhecida ou ocorra " +"um erro." #: builtins.c:330 msgid "" @@ -2639,7 +2760,8 @@ msgid "" msgstr "" "Sair de ciclos for, while, ou until.\n" " \n" -" Sai de um ciclo FOR, WHILE ou UNTIL. Se N for especificado, quebrar N ciclos\n" +" Sai de um ciclo FOR, WHILE ou UNTIL. Se N for especificado, quebrar N " +"ciclos\n" " envolventes.\n" " \n" " Estado de saída:\n" @@ -2669,7 +2791,8 @@ msgid "" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the function.\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" @@ -2677,12 +2800,15 @@ msgid "" msgstr "" "Executa comandos internos da consola.\n" " \n" -" Executa SHELL-INTERNO com argumentos ARGs sem realizar procura do comando.\n" +" Executa SHELL-INTERNO com argumentos ARGs sem realizar procura do " +"comando.\n" " Útil quando deseja re-implementar um comando interno da consola como\n" -" função da consola, mas tem de executar o comando interno dentro da função.\n" +" função da consola, mas tem de executar o comando interno dentro da " +"função.\n" " \n" " Estado de saída:\n" -" Devolve o estado de saída de SHELL-INTERNO ou falso se SHELL-INTERNO não\n" +" Devolve o estado de saída de SHELL-INTERNO ou falso se SHELL-INTERNO " +"não\n" " for um comando interno da consola." #: builtins.c:369 @@ -2710,23 +2836,30 @@ msgstr "" " actual; a chamada superior é a chamada 0.\n" " \n" " Estado de saída:\n" -" Devolve 0 a não ser que a consola não esteja a executar uma função ou EXPR\n" +" Devolve 0 a não ser que a consola não esteja a executar uma função ou " +"EXPR\n" " seja inválida." #: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of the\n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" -" A null directory name is the same as the current directory. If DIR begins\n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is set,\n" -" the word is assumed to be a variable name. If that variable has a value,\n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" " its value is used for DIR.\n" " \n" " Options:\n" @@ -2742,25 +2875,32 @@ msgid "" " \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" -" `..' is processed by removing the immediately previous pathname component\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" " back to a slash or the beginning of DIR.\n" " \n" " Exit Status:\n" -" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" " -P is used; non-zero otherwise." msgstr "" "Alterar a pasta de trabalho da consola.\n" " \n" -" Altera a pasta actual para PASTA. A PASTA predefinida é o valor da variável\n" +" Altera a pasta actual para PASTA. A PASTA predefinida é o valor da " +"variável\n" " HOME.\n" " \n" " A variável CDPATH define o caminho de procura para a pasta que contém\n" -" PASTA. Nomes de pasta alternativos em CDPATH são separados por \":\" (:).\n" -" Um nome de pasta nulo é equivalente à pasta actual. Se PASTA começar com\n" +" PASTA. Nomes de pasta alternativos em CDPATH são separados por \":" +"\" (:).\n" +" Um nome de pasta nulo é equivalente à pasta actual. Se PASTA começar " +"com\n" " uma barra (/), CDPATH não é usada.\n" " \n" -" Se a pasta não for encontrada e a opção de consola \"cdable_vars\" estiver definida,\n" -" a palavra é assumida como nome de variável. Se essa variável tiver um valor,\n" +" Se a pasta não for encontrada e a opção de consola \"cdable_vars\" " +"estiver definida,\n" +" a palavra é assumida como nome de variável. Se essa variável tiver um " +"valor,\n" " será usado como PASTA.\n" " \n" " Opções:\n" @@ -2772,15 +2912,19 @@ msgstr "" " -e\tse a opção -P for usada e a pasta de trabalho actual não puder\n" " \t\tser determinada com sucesso, sair com\n" " \t\testado não-zero\n" -" -@\tem sistemas que o suportam, apresentar um ficheiro com atributos\n" +" -@\tem sistemas que o suportam, apresentar um ficheiro com " +"atributos\n" " \t\testendidos como uma pasta contendo os atributos do ficheiro.\n" " \n" -" A predefinição é seguir ligações simbólicas, como se \"-L\" fosse especificada.\n" -" \"..\" é processado colocando o componente de caminho imediatamente anterior\n" +" A predefinição é seguir ligações simbólicas, como se \"-L\" fosse " +"especificada.\n" +" \"..\" é processado colocando o componente de caminho imediatamente " +"anterior\n" " como barra ou o começo de PASTA.\n" " \n" " Estado de saída:\n" -" Devolve 0 se a pasta for alterada e se $PWD for definida com sucesso quando\n" +" Devolve 0 se a pasta for alterada e se $PWD for definida com sucesso " +"quando\n" " -P é usada; caso contrário, não-zero." #: builtins.c:425 @@ -2805,10 +2949,12 @@ msgstr "" " \t\ttrabalho\n" " -P\timprimir a pasta física, sem quaisquer ligações simbólicas\n" " \n" -" Por predefinição, \"pwd\" comporta-se como se \"-L\" fosse especificada.\n" +" Por predefinição, \"pwd\" comporta-se como se \"-L\" fosse " +"especificada.\n" " \n" " Estado de saída:\n" -" Devolve 0 a não ser que seja indicada uma opçãoinválida ou a pasta actual\n" +" Devolve 0 a não ser que seja indicada uma opçãoinválida ou a pasta " +"actual\n" " não possa ser lida." #: builtins.c:442 @@ -2856,7 +3002,8 @@ msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke commands\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -2870,18 +3017,23 @@ msgid "" msgstr "" "Executar um comando simples ou mostrar informação sobre comandos.\n" " \n" -" Executa COMANDO com ARGS suprimindo procura de funções da consola ou mostra\n" -" informação acerca dos COMANDOs especificados. Pode ser usado para chamar comandos\n" +" Executa COMANDO com ARGS suprimindo procura de funções da consola ou " +"mostra\n" +" informação acerca dos COMANDOs especificados. Pode ser usado para " +"chamar comandos\n" " em disco quando existe uma função com o mesmo nome.\n" " \n" " Opções:\n" -" -p usar valor predefinido para CAMINHO que garanta que se encontram\n" +" -p usar valor predefinido para CAMINHO que garanta que se " +"encontram\n" " todos os utilitários padrão\n" -" -v imprimir uma descrição de COMANDO similar ao interno \"type\"\n" +" -v imprimir uma descrição de COMANDO similar ao interno \"type" +"\"\n" " -V imprimir uma descrição mais detalhada de COMANDO\n" " \n" " Estado de saída:\n" -" Devolve o estado de saída de COMANDO ou falha se COMANDO não for encontrado." +" Devolve o estado de saída de COMANDO ou falha se COMANDO não for " +"encontrado." #: builtins.c:490 msgid "" @@ -2916,7 +3068,8 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the `local'\n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" @@ -2932,7 +3085,8 @@ msgstr "" " -f\trestringe acção ou exibição a nomes e definições de função\n" " -F\trestringe exibição só a nomes de função (mais nº de linha e\n" " \t\tficheiro fonte ao depurar)\n" -" -g\tcria variáveis globais quando usado numa função da consola; senão\n" +" -g\tcria variáveis globais quando usado numa função da consola; " +"senão\n" " \t\té ignorada\n" " -I\tse está a criar uma variável local, herdar atributos e valor\n" " \t\tduma variável com o mesmo nome num âmbito anterior\n" @@ -2954,11 +3108,13 @@ msgstr "" " Variáveis com o atributo integer têm avaliação aritmética (veja o\n" " comando \"let\") realizada quando lhe é atribuído um valor.\n" " \n" -" Quando usado numa função, \"declare\" torna NOMEs locais, como o comando\n" +" Quando usado numa função, \"declare\" torna NOMEs locais, como o " +"comando\n" " \"local\". A opção \"-g\" suprime este comportamento.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que seja indicada uma opção inválida ou ocorra um\n" +" Devolve sucesso a não ser que seja indicada uma opção inválida ou " +"ocorra um\n" " erro de atribuição da variável." #: builtins.c:532 @@ -2990,18 +3146,21 @@ msgstr "" " Cria uma variável local chamada NOME e dá-lhe VALOR. OPÇÃO pode\n" " ser qualquer opção aceite por \"declare\".\n" " \n" -" Variáveis locais só podem ser usadas dentro de uma função; só são visíveis\n" +" Variáveis locais só podem ser usadas dentro de uma função; só são " +"visíveis\n" " para a função onde foram definidas e para os seus filhos.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que uma opção inválida seja fornecida, ocorra \n" +" Devolve sucesso a não ser que uma opção inválida seja fornecida, " +"ocorra \n" " um erro de atribuição ou a consola não esteja a executar uma função." #: builtins.c:557 msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by a\n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -3025,9 +3184,11 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" -" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" " \t\tHHHH can be one to four hex digits.\n" -" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" " \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" @@ -3041,9 +3202,11 @@ msgstr "" " Opções:\n" " -n\tnaõ acrescentar nova linha\n" " -e\tpermitir interpretação dos escapes seguintes com barra esquerda\n" -" -E\tsuprimir explicitamente interpretação de escapes com barra esquerda\n" +" -E\tsuprimir explicitamente interpretação de escapes com barra " +"esquerda\n" " \n" -" \"echo\" interpreta os seguintes caracteres de escapes com barra esquerda:\n" +" \"echo\" interpreta os seguintes caracteres de escapes com barra " +"esquerda:\n" " \\a\talerta (bell)\n" " \\b\tbackspace\n" " \\c\tsuprimir mais saídas\n" @@ -3123,7 +3286,8 @@ msgstr "" " \n" " Opções:\n" " -a\timprimir lista de internos mostrando se estão ou não activos\n" -" -n\tdesactivar cada NOME ou mostrar uma lista de internos desactivados\n" +" -n\tdesactivar cada NOME ou mostrar uma lista de internos " +"desactivados\n" " -p\timprimir a lista de internos em formato reutilizável\n" " -s\timprimir só os nomes de internos \"especiais\" Posix\n" " \n" @@ -3137,13 +3301,15 @@ msgstr "" " insira \"enable -n test\".\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que NOME não seja um interno da consola ou ocorra um erro." +" Devolve sucesso a não ser que NOME não seja um interno da consola ou " +"ocorra um erro." #: builtins.c:640 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the shell,\n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" @@ -3151,7 +3317,8 @@ msgid "" msgstr "" "Executa argumentos como comando da consola.\n" " \n" -" Combina ARGs numa única cadeia, usa o resultado como entrada da consola,\n" +" Combina ARGs numa única cadeia, usa o resultado como entrada da " +"consola,\n" " e executa os comandos resultantes.\n" " \n" " Estado de saída:\n" @@ -3199,7 +3366,8 @@ msgid "" msgstr "" "Analisa argumentos da opção.\n" " \n" -" Getopts é usado pelos procedimentos da consola para analisar parâmetros posicionais\n" +" Getopts é usado pelos procedimentos da consola para analisar parâmetros " +"posicionais\n" " como opções.\n" " \n" " CADEIAOPÇÕES contém as letras de opção a reconhecer; se uma letra\n" @@ -3220,7 +3388,8 @@ msgstr "" " Se não houver um argumento requerido, o getopts põe um \":\" no NOME e\n" " define OPTARG como o carácter de opção encontrado. Se o getopts não\n" " estiver em modo silêncio e for vista uma opção inválida, o getopts\n" -" põe \"?\" no NOME e limpa OPTARG. Se não houver um argumento requerido,\n" +" põe \"?\" no NOME e limpa OPTARG. Se não houver um argumento " +"requerido,\n" " é posto \"?\" no NOME, OPTARG é limpo e é imprimida uma mensagem de\n" " diagnóstico.\n" " \n" @@ -3229,7 +3398,8 @@ msgstr "" " CADEIAOPÇÕES não seja \":\". OPTERR tem o valor 1 predefinido.\n" " \n" " O getopts normalmente analisa os parâmetros posicionais, mas se\n" -" os argumentosforem dados como valores ARG, são eles que são analisados.\n" +" os argumentosforem dados como valores ARG, são eles que são " +"analisados.\n" " \n" " Estado de saída:\n" " Devolve sucesso se encontrar uma opção; falha se o fim da opção for\n" @@ -3240,7 +3410,8 @@ msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3248,16 +3419,20 @@ msgid "" " -c\texecute COMMAND with an empty environment\n" " -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, unless\n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error occurs." +" Returns success unless COMMAND is not found or a redirection error " +"occurs." msgstr "" "Substitui a consola com o comando indicado.\n" " \n" -" Executar COMANDO, substituindo esta consola pelo programa especificado.\n" -" ARGUMENTOS tornam-se os argumentos de COMANDO. Se COMANDO não for especificado,\n" +" Executar COMANDO, substituindo esta consola pelo programa " +"especificado.\n" +" ARGUMENTOS tornam-se os argumentos de COMANDO. Se COMANDO não for " +"especificado,\n" " quaisquer redireccionamentos têm efeito na consola actual.\n" " \n" " Opções:\n" @@ -3265,11 +3440,13 @@ msgstr "" " -c\texecuta COMANDO com um ambiente vazio\n" " -l\tpõe uma barra no argumento 0 de COMANDO\n" " \n" -" Se o comando não puder ser executado, uma consola não interactiva sai, a não ser que\n" +" Se o comando não puder ser executado, uma consola não interactiva sai, " +"a não ser que\n" " a opção de consola \"execfail\" esteja definida.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que COMANDO não seja encontrado ou ocorra um erro de redireccionamento." +" Devolve sucesso a não ser que COMANDO não seja encontrado ou ocorra um " +"erro de redireccionamento." #: builtins.c:715 msgid "" @@ -3287,25 +3464,29 @@ msgstr "" msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not executed\n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" " in a login shell." msgstr "" "Sai de uma consola com sessão.\n" " \n" -" Sai de uma consola com sessão com estado de saída N. Devolve um erro se não for\n" +" Sai de uma consola com sessão com estado de saída N. Devolve um erro " +"se não for\n" " executado numa consola com sessão." #: builtins.c:734 msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history list.\n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -3319,17 +3500,21 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error occurs." +" Returns success or status of executed command; non-zero if an error " +"occurs." msgstr "" "Mostra ou executa comandos da lista do histórico.\n" " \n" -" fc é usado para listar ou editar e re-executar comandos da lsiat do histórico.\n" -" PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo, ou PRIMEIRO pode ser\n" +" fc é usado para listar ou editar e re-executar comandos da lsiat do " +"histórico.\n" +" PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo, ou " +"PRIMEIRO pode ser\n" " cadeia, que significa o comando mais recente começado por essa\n" " cadeia.\n" " \n" " Opções:\n" -" -e NOMEED\tseleciona o editor a usar. A predefinição é FCEDIT, depois EDITOR,\n" +" -e NOMEED\tseleciona o editor a usar. A predefinição é FCEDIT, " +"depois EDITOR,\n" " \t\tdepois vi\n" " -l \tlistar linhas em vez de editar\n" " -n\tomitir nºs de linha ao ouvir\n" @@ -3339,11 +3524,13 @@ msgstr "" " re-executado após a substituição VELHO=NOVO ser realizada.\n" " \n" " Um aliás útil a usar aqui é r=\"fc -s\", para que inserir \"r cc\"\n" -" executa o último comando começado por \"cc\" e inserir \"r\" re-executa\n" +" executa o último comando começado por \"cc\" e inserir \"r\" re-" +"executa\n" " o último comando.\n" " \n" " Estado de saída:\n" -" Devolve sucesso ou estado do comando executado; não-zero se ocorrer um erro." +" Devolve sucesso ou estado do comando executado; não-zero se ocorrer um " +"erro." #: builtins.c:764 msgid "" @@ -3369,8 +3556,10 @@ msgstr "" msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" @@ -3378,19 +3567,23 @@ msgid "" msgstr "" "Move a tarefa para 2º plano.\n" " \n" -" Coloca a tarefa identificada com cada JOB_SPEC em 2º plano, como se tivessem\n" -" sido iniciados com \"&\". Se JOB_SPEC não existir, é usada a noção da consola de\n" +" Coloca a tarefa identificada com cada JOB_SPEC em 2º plano, como se " +"tivessem\n" +" sido iniciados com \"&\". Se JOB_SPEC não existir, é usada a noção da " +"consola de\n" " tarefa actual.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que o controlo de tarefas esteja inactivo ou ocorra um erro." +" Devolve sucesso a não ser que o controlo de tarefas esteja inactivo ou " +"ocorra um erro." #: builtins.c:793 msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is displayed.\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3425,7 +3618,8 @@ msgstr "" " \t\tde comandos lembrados.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que NOME não seja encontrado ou indique uma opção inválida." +" Devolve sucesso a não ser que NOME não seja encontrado ou indique uma " +"opção inválida." #: builtins.c:818 msgid "" @@ -3445,12 +3639,14 @@ msgid "" " PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is given." +" Returns success unless PATTERN is not found or an invalid option is " +"given." msgstr "" "Mostra informação sobre comandos internos.\n" " \n" " Mostra breves resumos de comandos internos. Se PADRÃO for\n" -" especificado, dá ajuda detalhada em todos os comandos que cumpram PADRÃO,\n" +" especificado, dá ajuda detalhada em todos os comandos que cumpram " +"PADRÃO,\n" " senão imprime a lista de tópicos de ajuda.\n" " \n" " Opções:\n" @@ -3463,7 +3659,8 @@ msgstr "" " PADRÃO\tPadrão que especifica um tópico de ajuda\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que PADRÃO não seja encontrado ou indique uma opção inválida." +" Devolve sucesso a não ser que PADRÃO não seja encontrado ou indique uma " +"opção inválida." #: builtins.c:842 msgid "" @@ -3493,7 +3690,8 @@ msgid "" " \n" " If the HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed otherwise.\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." @@ -3501,15 +3699,18 @@ msgstr "" "Mostra ou manipula a lista do histórico.\n" " \n" " Mostra a lista do histórico com nºs de linha, prefixando cada entrada\n" -" modificada com um \"*\". Um argumento de N lista só as últimas N entradas.\n" +" modificada com um \"*\". Um argumento de N lista só as últimas N " +"entradas.\n" " \n" " Opções:\n" " -c\tlimpa a lista eliminado todas as entradas\n" " -d desvio\telimina a entrada do histórico na posição DESVIO.\n" " \t\tDesvios negativos contam-se do final da lista do histórico\n" " \n" -" -a\tacrescenta linhas de histórico desta sessão ao ficheiro de histórico\n" -" -n\tlê todas as linhas de histórico ainda não lidas do ficheiro de histórico\n" +" -a\tacrescenta linhas de histórico desta sessão ao ficheiro de " +"histórico\n" +" -n\tlê todas as linhas de histórico ainda não lidas do ficheiro de " +"histórico\n" " \t\te acrescenta-as à lista de histórico\n" " -r\tlê o ficheiro de histórico e acrescenta o conteúdo à lista de\n" " \t\thistórico\n" @@ -3520,14 +3721,19 @@ msgstr "" " -s\tacrescenta ARGs à lista de histórico como entrada única\n" " \n" " Se NOMEFICH for dado, é usado como ficheiro de histórico. Senão,\n" -" se FICHHIST tiver um valor, será usado, caso contrário ~/.bash_history.\n" +" se FICHHIST tiver um valor, será usado, caso contrário ~/." +"bash_history.\n" " \n" -" Se a variável HISTTIMEFORMAT estiver definida e não for nula, o valor é usado\n" -" como cadeia de formato para strftime(3) para imprimir o carimbo associado\n" -" a cada entrada de histórico mostrada. Senão, não são imprimidos quaisquer carimbos.\n" +" Se a variável HISTTIMEFORMAT estiver definida e não for nula, o valor é " +"usado\n" +" como cadeia de formato para strftime(3) para imprimir o carimbo " +"associado\n" +" a cada entrada de histórico mostrada. Senão, não são imprimidos " +"quaisquer carimbos.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro." +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro." #: builtins.c:879 msgid "" @@ -3565,12 +3771,15 @@ msgstr "" " -r\trea cadeiae saída a tarefas em execução\n" " -s\trea cadeiae saída a tarefas paradas\n" " \n" -" Se -x for usado, COMANDO é executado após todas as especificações de tarefas\n" -" que aparecem em ARGS terem sido substituídas pela ID de processo do líder de\n" +" Se -x for usado, COMANDO é executado após todas as especificações de " +"tarefas\n" +" que aparecem em ARGS terem sido substituídas pela ID de processo do " +"líder de\n" " grupo do processo dessat tarefa.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro.\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro.\n" " Se -x for usado, devolve o estado de saída de COMANDO." #: builtins.c:906 @@ -3596,12 +3805,14 @@ msgstr "" " \n" " Opções:\n" " -a\tremove todas as tarefas se JOBSPEC não for indicado\n" -" -h\tmarcar cada JOBSPEC para que SIGHUP não seja enviado para a tarefa\n" +" -h\tmarcar cada JOBSPEC para que SIGHUP não seja enviado para a " +"tarefa\n" " \t\tse a consola receber um SIGHUP\n" " -r\tremove só tarefas em execução\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que uma opção inválida ou JOBSPEC seja indicada." +" Devolve sucesso a não ser que uma opção inválida ou JOBSPEC seja " +"indicada." #: builtins.c:925 msgid "" @@ -3638,12 +3849,14 @@ msgstr "" " \t\tassumidos como nºs de sinal para listar os nomes\n" " -L\tsinónimo de -l\n" " \n" -" Mata um interno da consola por dois motivos: permite usar as IDs de tarefa\n" +" Mata um interno da consola por dois motivos: permite usar as IDs de " +"tarefa\n" " em vez de IDs de processo e permite matar processos se o limite de\n" " processos que pode criar for atingido.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro." +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro." #: builtins.c:949 msgid "" @@ -3652,7 +3865,8 @@ msgid "" " Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" " fixed-width integers with no check for overflow, though division by 0\n" " is trapped and flagged as an error. The following list of operators is\n" -" grouped into levels of equal-precedence operators. The levels are listed\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" " in order of decreasing precedence.\n" " \n" " \tid++, id--\tvariable post-increment, post-decrement\n" @@ -3691,8 +3905,10 @@ msgstr "" "Avalia as expressões aritméticas.\n" " \n" " Avalia cada ARG como uma expressão aritmética. A avaliação é feita em\n" -" inteiros de largura fixa sem verificação de transporte, embora a divisão\n" -" por 0 seja sinalizada como erro. A seguinte lista de operadores é agrupada\n" +" inteiros de largura fixa sem verificação de transporte, embora a " +"divisão\n" +" por 0 seja sinalizada como erro. A seguinte lista de operadores é " +"agrupada\n" " em níveis de igual prioridade. Os níveis estão listados\n" " por ordem de precedência decrescente.\n" " \n" @@ -3717,8 +3933,10 @@ msgstr "" " \t+=, -=, <<=, >>=,\n" " \t&=, ^=, |=\tatribuição\n" " \n" -" As variáveis de consola são permitidas como operandos. O nome da variável\n" -" é substituído pelo seu valor (convertido em inteiro de largura fixa) dentro\n" +" As variáveis de consola são permitidas como operandos. O nome da " +"variável\n" +" é substituído pelo seu valor (convertido em inteiro de largura fixa) " +"dentro\n" " de uma expressão. A variável não tem de ter o seu atributo inteiro\n" " activado para ser usado numa expressão.\n" " \n" @@ -3730,17 +3948,23 @@ msgstr "" " Se o último ARG for avaliado como 0, let devolve 1; senão let devolve 0." #: builtins.c:994 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with word\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -3752,7 +3976,8 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" " \t\tNCHARS characters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" " \t\tEOF is encountered or read times out, ignoring any\n" " \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" @@ -3770,32 +3995,40 @@ msgid "" " -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times out\n" -" (in which case it's greater than 128), a variable assignment error occurs,\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" "Lê uma linha da entrada padrão e divide-a em campos.\n" " \n" " Lê uma linha da entrada padrão ou do descritor de ficheiro FD\n" " se a opção -u for usada. A linha é dividida em campos como na divisão\n" -" de palavras e a primeira palavra é atribuída ao primeiro NOME, a segunda\n" -" ao segundo NOME, e assim por diante, com quaisquer palavras que sobrem \n" -" atribuídas ao último NOME. Só caracteres encontrados em $IFS são reconhecidos\n" +" de palavras e a primeira palavra é atribuída ao primeiro NOME, a " +"segunda\n" +" ao segundo NOME, e assim por diante, com quaisquer palavras que " +"sobrem \n" +" atribuídas ao último NOME. Só caracteres encontrados em $IFS são " +"reconhecidos\n" " como delimitadores de palavras.\n" " \n" " Se não indicar NOMEs, a linha é armazenada na variável RESPONDER.\n" " \n" " Opções:\n" -" -a matriz\tatribui as palavras lidas a índices sequenciais da MATRIZ\n" +" -a matriz\tatribui as palavras lidas a índices sequenciais da " +"MATRIZ\n" " \t\tcomeçando em zero\n" -" -d delim\tcontinua até que o primeiro carácter de DELIM seja lido, em vez de\n" +" -d delim\tcontinua até que o primeiro carácter de DELIM seja lido, " +"em vez de\n" " \t\tnewline\n" " -e\tusa Readline para obter a linha numa consola interactiva\n" " -i texto\tusa TEXTO como texto inicial para Readline\n" " -n ncars\tvolta após ler NCARS caracteres em vez de esperar\n" " \t\tpor newline, mas respeita um delimitador se estiver\n" " \t\tantes de NCARS caracteres\n" -" -N ncars\tvolta após ler exactamente NCARS caracteres, a não ser que\n" +" -N ncars\tvolta após ler exactamente NCARS caracteres, a não ser " +"que\n" " \t\tEOF seja encontrado ou a leitura esteja inactiva, ignorando\n" " \t\tqualquer delimitador\n" " -p prompt\timprime PROMPT na saída sem newline final antes de\n" @@ -3813,11 +4046,13 @@ msgstr "" " -u fd\tlê do descritor de ficheiro FD em vez da entrada padrão\n" " \n" " Estado de saída:\n" -" O código devolvido é zero, a não ser que end-of-file seja encontrado, haja\n" -" inacção (caso em que é maior que 128), ocorra um erro de atribuição de variável,\n" +" O código devolvido é zero, a não ser que end-of-file seja encontrado, " +"haja\n" +" inacção (caso em que é maior que 128), ocorra um erro de atribuição de " +"variável,\n" " ou seja indicado um descritor de ficheiro inválido como argumento de -u." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3835,9 +4070,10 @@ msgstr "" " executado dentro da função ou script.\n" " \n" " Estado de saída:\n" -" Devolve N, ou falha se a consola não estiver a executar uma função ou script." +" Devolve N, ou falha se a consola não estiver a executar uma função ou " +"script." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3880,7 +4116,8 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero status\n" +" or zero if no command exited with a non-zero " +"status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -3904,7 +4141,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3928,10 +4166,12 @@ msgstr "" " Opções:\n" " -a Marca variáveis modificadas ou criadas para exportação.\n" " -b Notifica o fim da tarefa imediatamente.\n" -" -e Sai imediatamente se um comando sair com estado diferente de zero.\n" +" -e Sai imediatamente se um comando sair com estado diferente de " +"zero.\n" " -f Desactiva geração de nome de ficheiro (globbing).\n" " -h Recordar localização de comandos à medida que são procurados.\n" -" -k Todos os argumentos de atribuição são colocados no ambiente para um\n" +" -k Todos os argumentos de atribuição são colocados no ambiente para " +"um\n" " comando, não só os que precedem o nome do comando.\n" " -m Activa o controlo de tarefas.\n" " -n Lê comandos, mas não os executa.\n" @@ -3948,7 +4188,8 @@ msgstr "" " history activa histórico de comandos\n" " ignoreeof a consola não sai após ler EOF\n" " interactive-comments\n" -" permite que comentários apareçam em comandos interactivos\n" +" permite que comentários apareçam em " +"comandos interactivos\n" " keyword igual a -k\n" " monitor igual a -m\n" " noclobber igual a -C\n" @@ -3959,11 +4200,16 @@ msgstr "" " nounset igual a -u\n" " onecmd igual a -t\n" " physical igual a -P\n" -" pipefail o valor devolvido de um pipeline é o estado do\n" -" último comando a sair com estado não-zero,\n" -" ou zero se nenhum saiu com estado não-zero\n" -" posix altera o comportamento do bash onde a operação\n" -" predefinida diferir da norma Posix para cumprir\n" +" pipefail o valor devolvido de um pipeline é o estado " +"do\n" +" último comando a sair com estado não-" +"zero,\n" +" ou zero se nenhum saiu com estado não-" +"zero\n" +" posix altera o comportamento do bash onde a " +"operação\n" +" predefinida diferir da norma Posix para " +"cumprir\n" " a norma\n" " privileged igual a -p\n" " verbose igual a -v\n" @@ -3972,24 +4218,28 @@ msgstr "" " -p Activado sempre que as ID de utilizador reais e efectivas não\n" " coincidam. Desactiva o processamento do ficheiro $ ENV e a \n" " importação de funções da consola. Desligar esta opção faz com\n" -" que os uid e gid efectivos sejam definidos para os uid e gid reais.\n" +" que os uid e gid efectivos sejam definidos para os uid e gid " +"reais.\n" " -t Sair depois de ler e executar um comando.\n" " -u Trata as variáveis ​​não definidas como erro ao substituir.\n" " -v Imprime as linhas de entrada da consola à medida que são lidas.\n" " -x Imprime comandos e seus argumentos à medida que são executados.\n" " -B a consola realizará expansão de suporte\n" -" -C Se definido, não permitir que ficheiros normais existentes sejam\n" +" -C Se definido, não permitir que ficheiros normais existentes " +"sejam\n" " sobrescritos pelo redireccionamento da saída.\n" " -E se definido, ERR é herdada pelas funções de consola.\n" " -H Activa estilo ! de substituição do histórico. Esta bandeira\n" " está activada por predefinição, em consolas interativas.\n" " -P Se definido, não resolve ligações simbólicas ao executar\n" " comandos como \"cd\" que altera a pasta actual.\n" -" -T Se definido, DEBUG e RETURN são herdadas por funções de consola.\n" +" -T Se definido, DEBUG e RETURN são herdadas por funções de " +"consola.\n" " -- Atribui quaisquer outros argumentos aos parâmetros posicionais.\n" " Se não houver mais argumentos, os parâmetros posicionais\n" " são limpos.\n" -" - Atribui quaisquer outros argumentos aos parâmetros posicionais.\n" +" - Atribui quaisquer outros argumentos aos parâmetros " +"posicionais.\n" " As opções -x e -v são desactivadas.\n" " \n" " Usar + em vez de - faz com que as bandeiras sejam desactivadas. As\n" @@ -4001,7 +4251,7 @@ msgstr "" " Estado de saída:\n" " Devolve sucesso a não ser que indique uma opção inválida." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4013,7 +4263,8 @@ msgid "" " -n\ttreat each NAME as a name reference and unset the variable itself\n" " \t\trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that fails,\n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" " tries to unset a function.\n" " \n" " Some variables cannot be unset; also see `readonly'.\n" @@ -4037,14 +4288,16 @@ msgstr "" " Algumas variáveis não podem ser limpas; veja também \"readonly\".\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja só de leitura." +" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja " +"só de leitura." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -4059,7 +4312,8 @@ msgstr "" "Define o atributo de exportação em variáveis de consola.\n" " \n" " Marca cada NOME para exportação automática para o ambiente de futuros\n" -" comandos executados. Se VALOR for fornecido, atribui VALOR antes de exportar.\n" +" comandos executados. Se VALOR for fornecido, atribui VALOR antes de " +"exportar.\n" " \n" " Opções:\n" " -f\trefere funções de consola\n" @@ -4069,9 +4323,10 @@ msgstr "" " Um argumento \"--\" desactiva futuro processamento da opção.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja inválido." +" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja " +"inválido." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4101,15 +4356,17 @@ msgstr "" " -a\trefere a variáveis de matriz indexadas\n" " -A\trefere a variáveis de matriz associativas\n" " -f\trefere a funções de consola\n" -" -p\tmostra uma lista de todas as variáveis ou funções só de leitura,\n" +" -p\tmostra uma lista de todas as variáveis ou funções só de " +"leitura,\n" " \t\tdependendo ou não se a opção -f é indicada\n" " \n" " Um argumento \"--\" desactiva futuro processamento da opção.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja inválido." +" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja " +"inválido." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4127,7 +4384,7 @@ msgstr "" " Estado de saída:\n" " Devolve sucesso a não ser que N seja negativo ou maior que $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4151,7 +4408,7 @@ msgstr "" " Devolve o estado do último comando executado em NOMEFICH; falha se\n" " NOMEFICH não pode ser lido." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4173,9 +4430,10 @@ msgstr "" " -f\tforçar a suspensão, mesmo que seja uma consola com sessão\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que o controlo de tarefa esteja inactivo ou ocorra um erro." +" Devolve sucesso a não ser que o controlo de tarefa esteja inactivo ou " +"ocorra um erro." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4209,7 +4467,8 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last read.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -4230,7 +4489,8 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 lexicographically.\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -4258,8 +4518,10 @@ msgstr "" "Avalia a expressão condicional.\n" " \n" " Sai com estado 0 (verdadeiro) ou 1 (falso) dependendo da\n" -" avaliação de EXPR. As expressões podem ser unárias ou binárias. Expressões\n" -" uinárias são frequentemente usadas para examinar o estado de um ficheiro. Há\n" +" avaliação de EXPR. As expressões podem ser unárias ou binárias. " +"Expressões\n" +" uinárias são frequentemente usadas para examinar o estado de um " +"ficheiro. Há\n" " também operadores de cadeias e operadores de comparação numérica.\n" " \n" " O comportamento do teste depende do número de argumentos. Leia a\n" @@ -4269,14 +4531,17 @@ msgstr "" " \n" " -a FICHEIRO Verdadeiro se o ficheiro existir.\n" " -b FICHEIRO Verdadeiro se o ficheiro for bloqueio especial.\n" -" -c FICHEIRO Verdadeiro se o ficheiro for especial de caracteres.\n" +" -c FICHEIRO Verdadeiro se o ficheiro for especial de " +"caracteres.\n" " -d FICHEIRO Verdadeiro se o ficheiro for uma pasta.\n" " -e FICHEIRO Verdadeiro se o ficheiro existir.\n" -" -f FICHEIRO Verdadeiro se o ficheiro existe e é um ficheiro normal.\n" +" -f FICHEIRO Verdadeiro se o ficheiro existe e é um ficheiro " +"normal.\n" " -g FICHEIRO Verdadeiro se o ficheiro for set-group-id.\n" " -h FICHEIRO Verdadeiro se o ficheiro for uma ligação simbólica.\n" " -L FICHEIRO Verdadeiro se o ficheiro for uma ligação simbólica.\n" -" -k FICHEIRO Verdadeiro se o ficheiro tiver o bit \"sticky\" definido.\n" +" -k FICHEIRO Verdadeiro se o ficheiro tiver o bit \"sticky\" " +"definido.\n" " -p FICHEIRO Verdadeiro se o ficheiro for um pipe com nome.\n" " -r FICHEIRO Verdadeiro se o ficheiro for legível.\n" " -s FICHEIRO Verdadeiro se o ficheiro existe e não está vazio.\n" @@ -4285,16 +4550,23 @@ msgstr "" " -u FICHEIRO Verdadeiro se o ficheiro for set-user-id.\n" " -w FICHEIRO Verdadeiro se o ficheiro for gravável por si.\n" " -x FICHEIRO Verdadeiro se o ficheiro for executável por si.\n" -" -O FICHEIRO Verdadeiro se o ficheiro for efectivamente sua propriedade.\n" -" -G FICHEIRO Verdadeiro se o ficheiro for efectivamente propriedade do seu grupo.\n" -" -N FICHEIRO Verdadeiro se o ficheiro foi modificado desde a última vez que foi lido.\n" +" -O FICHEIRO Verdadeiro se o ficheiro for efectivamente sua " +"propriedade.\n" +" -G FICHEIRO Verdadeiro se o ficheiro for efectivamente " +"propriedade do seu grupo.\n" +" -N FICHEIRO Verdadeiro se o ficheiro foi modificado desde a " +"última vez que foi lido.\n" " \n" -" FICHEIRO1 -nt FICHEIRO2 Verdadeiro se o ficheiro1 for mais novo que\n" -" o ficheiro2 (de acordo com a data de modificação).\n" +" FICHEIRO1 -nt FICHEIRO2 Verdadeiro se o ficheiro1 for mais novo " +"que\n" +" o ficheiro2 (de acordo com a data " +"de modificação).\n" " \n" -" FICHEIRO1 -ot FICHEIRO2 Verdadeiro se ficheiro1 for mais antigo que o ficheiro2.\n" +" FICHEIRO1 -ot FICHEIRO2 Verdadeiro se ficheiro1 for mais antigo que " +"o ficheiro2.\n" " \n" -" FICHEIRO1 -ef FICHEIRO2 Verdadeiro se ficheiro1 for uma ligação rígida a file2.\n" +" FICHEIRO1 -ef FICHEIRO2 Verdadeiro se ficheiro1 for uma ligação " +"rígida a file2.\n" " \n" " Operadores de cadeias:\n" " \n" @@ -4308,15 +4580,20 @@ msgstr "" " CADEIA1 != CADEIA2\n" " Verdadeiro se as cadeias não são iguais.\n" " CADEIA1 < CADEIA2\n" -" Verdadeiro se CADEIA1 ficar antes de CADEIA2 lexicamente.\n" +" Verdadeiro se CADEIA1 ficar antes de CADEIA2 " +"lexicamente.\n" " CADEIA1 > CADEIA2\n" -" Verdadeiro se CADEIA1 ficar após CADEIA2 lexicamente.\n" +" Verdadeiro se CADEIA1 ficar após CADEIA2 " +"lexicamente.\n" " \n" " Outros operadores:\n" " \n" -" -o OPÇÃO Verdadeiro se a opção de consola OPÇÃO está activada.\n" -" -v VAR Verdadeiro se a variável de consola VAR estiver definida.\n" -" -R VAR Verdadeiro se a variável de consola VAR estiver definida e for um nome\n" +" -o OPÇÃO Verdadeiro se a opção de consola OPÇÃO está " +"activada.\n" +" -v VAR Verdadeiro se a variável de consola VAR estiver " +"definida.\n" +" -R VAR Verdadeiro se a variável de consola VAR estiver " +"definida e for um nome\n" " referência.\n" " ! EXPR Verdadeiro se EXPR for falso.\n" " EXPR1 -a EXPR2 Verdadeiro se EXPR1 e EXPR2 forem verdadeiros.\n" @@ -4325,15 +4602,17 @@ msgstr "" " arg1 OP arg2 Testes aritméticos. OP é um de -eq, -ne,\n" " -lt, -le, -gt, ou -ge.\n" " \n" -" Operadores binários aritméticos devolvem verdadeiro se ARG1 for igual, não\n" +" Operadores binários aritméticos devolvem verdadeiro se ARG1 for igual, " +"não\n" " igual, menor que, menor ou igual que, maior que ou maior ou igual que\n" " ARG2.\n" " \n" " Estado de saída:\n" -" Devolve sucesso se EXPR for avaliada como verdadeiro; falha se EXPR for\n" +" Devolve sucesso se EXPR for avaliada como verdadeiro; falha se EXPR " +"for\n" " avaliado como falso ou for indicado um argumento inválido." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4345,11 +4624,12 @@ msgstr "" " Este é um sinónimo para o interno \"test\", mas o último argumento tem\n" " de ser um \"]\" literal, para fechar o \"[\" aberto." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of its\n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4357,17 +4637,19 @@ msgid "" msgstr "" "Mostrar tempos de processo.\n" " \n" -" Imprime os tempos acumulados de utilizador e sistema para a consola e todos\n" +" Imprime os tempos acumulados de utilizador e sistema para a consola e " +"todos\n" " os seus processos-filho.\n" " \n" " Estado de saída:\n" " Sempre com sucesso." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives signals\n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -4376,26 +4658,34 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" -" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands associated\n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is given." +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." msgstr "" "Capturar sinais e outros eventos.\n" " \n" @@ -4404,32 +4694,40 @@ msgstr "" " \n" " ARG é um comando a ser lido e executado quando a consola recebe o(s)\n" " sinal(is) SIGNAL_SPEC. Se ARG estiver ausente (e um único SIGNAL_SPEC\n" -" for fornecido) ou \"-\", cada sinal especificado é reposto no seu valor\n" +" for fornecido) ou \"-\", cada sinal especificado é reposto no seu " +"valor\n" " original. Se ARG for a cadeia nula, cada SIGNAL_SPEC será ignorado\n" " pela consola e pelos comandos que chama.\n" " \n" " Se um SIGNAL_SPEC for EXIT (0) ARG é executado na saída da consola. Se\n" " SIGNAL_SPEC é DEBUG, ARG é executado antes de cada comando simples. Se\n" -" SIGNAL_SPEC é RETURN, ARG é executado cada vez que uma função de consola\n" -" ou um script executado pelo . ou os internos terminam a execução. SIGNAL_SPEC\n" -" de ERR significa executar ARG cada vez que uma falha do comando faça com\n" +" SIGNAL_SPEC é RETURN, ARG é executado cada vez que uma função de " +"consola\n" +" ou um script executado pelo . ou os internos terminam a execução. " +"SIGNAL_SPEC\n" +" de ERR significa executar ARG cada vez que uma falha do comando faça " +"com\n" " que a consola sair quando a opção -e está activa.\n" " \n" " Se nenhum argumento for fornecido, trap imprime a lista de comandos \n" " associados a cada sinal.\n" " \n" " Opções:\n" -" -l imprime uma lista de nomes de sinais e seus números correspondentes\n" +" -l imprime uma lista de nomes de sinais e seus números " +"correspondentes\n" " -p mostra os comandos trap associados a cada SIGNAL_SPEC\n" " \n" -" Cada SIGNAL_SPEC é um nome de sinal em ou um número de sinal.\n" -" Os nomes dos sinais são insensíveis a maiúsculas e o prefixo SIG é opcional.\n" +" Cada SIGNAL_SPEC é um nome de sinal em ou um número de " +"sinal.\n" +" Os nomes dos sinais são insensíveis a maiúsculas e o prefixo SIG é " +"opcional.\n" " Um sinal pode ser enviado para a consola com \"kill -signal $$\".\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que SIGSPEC seja inválido ou indique uma opção inválida." +" Devolve sucesso a não ser que SIGSPEC seja inválido ou indique uma " +"opção inválida." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4455,7 +4753,8 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not found." +" Returns success if all of the NAMEs are found; fails if any are not " +"found." msgstr "" "Mostra informações sobre o tipo de comando.\n" " \n" @@ -4472,8 +4771,10 @@ msgstr "" " \t\tque seria executado\n" " -p\tdevolve o nome do ficheiro em disco que seria executado,\n" " \t\tou nada se \"type -t NOME\" não devolver \"file\"\n" -" -t\tdevolve uma só palavra de entre \"alias\", \"keyword\", \"function\"\n" -" \t\t\"builtin\", \"file\" ou \"\", se NOME for um aliás, palavra reservada\n" +" -t\tdevolve uma só palavra de entre \"alias\", \"keyword\", " +"\"function\"\n" +" \t\t\"builtin\", \"file\" ou \"\", se NOME for um aliás, palavra " +"reservada\n" " \t\tda consola, função de consola, interno da consola, ficheiro em\n" " \t\tdisco, ou não encontrados, respectivamente\n" " \n" @@ -4481,13 +4782,15 @@ msgstr "" " Nome do comando NOME a interpretar.\n" " \n" " Estado de saída:\n" -" Devolve sucesso se todos os NOMEs forem encontrados; falha se algum não for." +" Devolve sucesso se todos os NOMEs forem encontrados; falha se algum não " +"for." -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and processes\n" +" Provides control over the resources available to the shell and " +"processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -4533,7 +4836,8 @@ msgid "" msgstr "" "Modifica os limites de recursos da consola.\n" " \n" -" Fornece controlo sobre os recursos disponíveis para consola e processos\n" +" Fornece controlo sobre os recursos disponíveis para consola e " +"processos\n" " que cria, em sistemas que permitem esse controlo.\n" " \n" " Opções:\n" @@ -4544,7 +4848,8 @@ msgstr "" " -c\to tamanho máximo dos ficheiros núcleo criados\n" " -d\to tamanho máximo do segmento de dados de um processo\n" " -e\ta prioridade máxima de agendamento (\"nice\")\n" -" -f\to tamanho máximo dos ficheiros escritos pela consola e seus filhos\n" +" -f\to tamanho máximo dos ficheiros escritos pela consola e seus " +"filhos\n" " -i\to número máximo de sinais pendentes\n" " -k\to número máximo de kqueues alocados para este processo\n" " -l\to tamanho máximo que um processo pode bloquear na memória\n" @@ -4559,25 +4864,30 @@ msgstr "" " -v\to tamanho da memória virtual\n" " -x\to número máximo de bloqueios de ficheiros\n" " -P\to número máximo de pseudo-terminais\n" -" -R\to tempo máximo que um processo em tempo real pode executar antes de bloquear\n" +" -R\to tempo máximo que um processo em tempo real pode executar antes " +"de bloquear\n" " -T\to número máximo de threads\n" " \n" " Nem todas as opções estão disponíveis em todas as plataformas.\n" " \n" " Se LIMIT for indicada, é o novo valor do recurso especificado; Os\n" " valores LIMIT especiais \"soft\", \"hard\" e \"unlimited\" representam\n" -" o limite flexível actual, o limite rígido actual e nenhum limite, respectivamente.\n" +" o limite flexível actual, o limite rígido actual e nenhum limite, " +"respectivamente.\n" " Caso contrário, é imprimido o valor actual do recurso especificado. Se\n" " nenhuma opção for indicada, então -f é assumido.\n" " \n" -" Os valores estão em incrementos de 1024 bytes, exceto para -t, que é em segundos,\n" -" -p, que é em incrementos de 512 bytes e -u, que é um número de processos\n" +" Os valores estão em incrementos de 1024 bytes, exceto para -t, que é em " +"segundos,\n" +" -p, que é em incrementos de 512 bytes e -u, que é um número de " +"processos\n" " sem escala.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que seja indicada uma opção inválida ou ocorra um erro." +" Devolve sucesso a não ser que seja indicada uma opção inválida ou " +"ocorra um erro." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4596,36 +4906,45 @@ msgid "" msgstr "" "Mostrar ou definir a máscara do modo de ficheiro.\n" " \n" -" Define a máscara do utilizador de criação de ficheiro para MODO. Se MODO\n" +" Define a máscara do utilizador de criação de ficheiro para MODO. Se " +"MODO\n" " for omitido, imprime o valor actual da máscara.\n" " \n" " Se MODO começa com um dígito, é interpretado como um número octal;\n" -" caso contrário, é uma cadeia de modo simbólico como a aceite por chmod(1).\n" +" caso contrário, é uma cadeia de modo simbólico como a aceite por " +"chmod(1).\n" " \n" " Opções:\n" -" -p\tse MODO for omitido, saída de forma a que possa ser reutilizado como entrada\n" -" -S\ttorna a saída simbólica; caso contrário, a saída é um número octal\n" +" -p\tse MODO for omitido, saída de forma a que possa ser reutilizado " +"como entrada\n" +" -S\ttorna a saída simbólica; caso contrário, a saída é um número " +"octal\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que MODO seja inválido ou indique uma opção inválida." +" Devolve sucesso a não ser que MODO seja inválido ou indique uma opção " +"inválida." -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for each process identified by an ID, which may be a process ID or a\n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" " status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" -" If the -n option is supplied, waits for a single job from the list of IDs,\n" -" or, if no IDs are supplied, for the next job to complete and returns its\n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" " exit status.\n" " \n" " If the -p option is supplied, the process or job identifier of the job\n" " for which the exit status is returned is assigned to the variable VAR\n" -" named by the option argument. The variable will be unset initially, before\n" +" named by the option argument. The variable will be unset initially, " +"before\n" " any assignment. This is useful only when the -n option is supplied.\n" " \n" " If the -f option is supplied, and job control is enabled, waits for the\n" @@ -4638,52 +4957,67 @@ msgid "" msgstr "" "Aguarda a conclusão da tarefa e devolve o estado de saída.\n" " \n" -" Espera por cada processo identificado por uma ID, que pode ser uma ID de\n" -" processo ou uma especificação de tarefa e relata o estado final. Se não\n" -" for dada uma ID, aguarda por todos os processos-filho actualmente activos e o\n" -" estado de saída é zero. Se ID for uma especificação de tarefa, espera por\n" +" Espera por cada processo identificado por uma ID, que pode ser uma ID " +"de\n" +" processo ou uma especificação de tarefa e relata o estado final. Se " +"não\n" +" for dada uma ID, aguarda por todos os processos-filho actualmente " +"activos e o\n" +" estado de saída é zero. Se ID for uma especificação de tarefa, espera " +"por\n" " todos os processos no pipeline da tarefa.\n" " \n" -" Se a opção -n for fornecida, espera por uma tarefa única da lista de IDs ou\n" +" Se a opção -n for fornecida, espera por uma tarefa única da lista de " +"IDs ou\n" " se não indicar IDs, pela conclusão da tarefa seguinte devolve\n" " o seu estado de saída.\n" " \n" -" Se a opção -p for indicada, o identificador de processo ou tarefa da tarefa\n" +" Se a opção -p for indicada, o identificador de processo ou tarefa da " +"tarefa\n" " para a qual foi devolvido o estado de saída é atribuído à variável VAR\n" -" nomeada pelo argumento da opção. A variável estará indefinida inicialmente,\n" +" nomeada pelo argumento da opção. A variável estará indefinida " +"inicialmente,\n" " antes de qualquer atribuição. Útil só quando a opção -n é indicada.\n" " \n" -" Se a opção -f for indicada e o controlo de tarefas estiver activo, espera que\n" -" a ID especificada termine, em vez de esperar por uma alteração de estado.\n" +" Se a opção -f for indicada e o controlo de tarefas estiver activo, " +"espera que\n" +" a ID especificada termine, em vez de esperar por uma alteração de " +"estado.\n" " \n" " Estado de saída:\n" -" Devolve o estado da última ID; falha se a ID for inválida ou for indicada\n" +" Devolve o estado da última ID; falha se a ID for inválida ou for " +"indicada\n" " uma opção inválida, ou se -n for indicada e a consola não tiver filhos\n" " inesperados." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for each process specified by a PID and reports its termination status.\n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" " If PID is not given, waits for all currently active child processes,\n" " and the return status is zero. PID must be a process ID.\n" " \n" " Exit Status:\n" -" Returns the status of the last PID; fails if PID is invalid or an invalid\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" " option is given." msgstr "" "Aguarda a conclusão do processo e devolve o estado de saída.\n" " \n" -" Espera por cada processo especificado por uma PID e reporta o estado final.\n" -" Se PID não for dada, aguarda por todos os processos-filho actualmente activos,\n" +" Espera por cada processo especificado por uma PID e reporta o estado " +"final.\n" +" Se PID não for dada, aguarda por todos os processos-filho actualmente " +"activos,\n" " e o estado devolvido é zero. A PID tem de ser uma ID de processo.\n" " \n" " Estado de saída:\n" -" Devolve o estado da última PID; falha se PID for inválido ou for indicada\n" +" Devolve o estado da última PID; falha se PID for inválido ou for " +"indicada\n" " uma opção inválida." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4697,15 +5031,18 @@ msgid "" msgstr "" "Executa comandos para cada membro numa lista.\n" " \n" -" O ciclo \"for\" executa uma seqüência de comandos para cada membro numa\n" -" lista de itens. Se \"in PALAVRAS ...;\" não estiver presente, \" in \"$@\" \" é\n" -" assumido. Para cada elemento em PALAVRAS, NOME está definido para esseelemento,\n" +" O ciclo \"for\" executa uma seqüência de comandos para cada membro " +"numa\n" +" lista de itens. Se \"in PALAVRAS ...;\" não estiver presente, \" in \"$@" +"\" \" é\n" +" assumido. Para cada elemento em PALAVRAS, NOME está definido para " +"esseelemento,\n" " e os COMANDOS são executados.\n" " \n" " Estado de saída:\n" " Devolve o estado do último comando executado." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4729,13 +5066,14 @@ msgstr "" " \t\tCOMANDOS\n" " \t\t(( EXP3 ))\n" " \tdone\n" -" EXP1, EXP2 e EXP3 são expressões aritméicas. Se alguma delas for omitida\n" +" EXP1, EXP2 e EXP3 são expressões aritméicas. Se alguma delas for " +"omitida\n" " comporta-se como se fosse avaliada como 1.\n" " \n" " Estado de saída:\n" " Devolve o estado do último comando executado." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4771,7 +5109,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado do último comando executado." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4789,7 +5127,8 @@ msgstr "" "Reporta o tempo consumido pela execução do pipeline.\n" " \n" " Executa PIPELINE e imprime um resumo do tempo real, tempo de CPU do,\n" -" utilizador e tempo de CPU do sistema na execução de PIPELINE quando terminar.\n" +" utilizador e tempo de CPU do sistema na execução de PIPELINE quando " +"terminar.\n" " \n" " Opções:\n" " -p\timprime o resumo do tempo no formato portátil Posix\n" @@ -4799,7 +5138,7 @@ msgstr "" " Estado de saída:\n" " O estado devolvido é o estado de PIPELINE." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4817,16 +5156,21 @@ msgstr "" " Estado de saída:\n" " Devolve o estado do último comando executado." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of the\n" -" entire construct is the exit status of the last command executed, or zero\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" @@ -4835,22 +5179,29 @@ msgstr "" "Executa comandos com base em condicional.\n" " \n" " A lista \"if COMANDOS\" é executada. Se o estado de saída for zero, é\n" -" executada a lista \"then COMANDOS\". Caso contrário, cada lista \"elif COMANDOS\"\n" -" é executado por sua vez e se o estado de saída for zero, a correspondente\n" -" lista \"then COMANDOS\" é executada e o comando if é concluído. De outra forma,\n" -" a lista \"else COMANDOS\" é executada, se presente. O estado de saída da\n" -" construção inteira é o estado de saída do último comando executado, ou zero\n" +" executada a lista \"then COMANDOS\". Caso contrário, cada lista \"elif " +"COMANDOS\"\n" +" é executado por sua vez e se o estado de saída for zero, a " +"correspondente\n" +" lista \"then COMANDOS\" é executada e o comando if é concluído. De " +"outra forma,\n" +" a lista \"else COMANDOS\" é executada, se presente. O estado de saída " +"da\n" +" construção inteira é o estado de saída do último comando executado, ou " +"zero\n" " se nenhuma condição for verdadeira.\n" " \n" " Estado de saída:\n" " Devolve o estado do último comando executado." -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -4863,12 +5214,14 @@ msgstr "" " Estado de saída:\n" " Devolve o estado do último comando executado." -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -4881,7 +5234,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado do último comando executado." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4895,7 +5248,8 @@ msgid "" msgstr "" "Cria um co-processo chamado NOME.\n" " \n" -" Executa COMANDO assincronamente, com a saída e a entrada padrão ligadas\n" +" Executa COMANDO assincronamente, com a saída e a entrada padrão " +"ligadas\n" " via pipe a descritores de ficheiro atribuídos a índices 0 e 1 de uma \n" " variável de matriz NOME na consola em execução.\n" " O NOME predefinido é \"COPROC\".\n" @@ -4903,12 +5257,13 @@ msgstr "" " Estado de saída:\n" " O comando coproc devolve um estado de saída 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" @@ -4925,7 +5280,7 @@ msgstr "" " Estado de saída:\n" " Devolve sucesso a não ser que NOME seja só de leitura." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4943,7 +5298,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado do último comando executado." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4967,7 +5322,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado da tarefa retomada." -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4986,13 +5341,16 @@ msgstr "" " Estado de saída:\n" " Devolve 1 se EXPRESSÃO avaliar como 0; senão, devolve 0." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries used\n" -" by the `test' builtin, and may be combined using the following operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -5013,22 +5371,29 @@ msgstr "" "Executa o comando condicional.\n" " \n" " Devolve um estado de 0 ou 1, dependendo da avaliação da expressão\n" -" condicional EXPRESSÃO. As expressões são compostas pelas mesmas primárias\n" -" usadas pelo interno \"test\" e pode ser combinado com os seguintes operadores:\n" +" condicional EXPRESSÃO. As expressões são compostas pelas mesmas " +"primárias\n" +" usadas pelo interno \"test\" e pode ser combinado com os seguintes " +"operadores:\n" " \n" " ( EXPRESSÃO )\tDevolve o valor de EXPRESSÃO\n" " ! EXPRESSÃO\t\tVerdadeiro se EXPRESSÃO for falsa; senão falso\n" -" EXPR1 && EXPR2\tVerdadeiro se EXPR1 e EXPR2 forem verdadeiras; senão falso\n" -" EXPR1 || EXPR2\tVerdadeiro se EXPR1 ou EXPR2 forem verdadeiras; senão falso\n" -" \n" -" Quando os operadores \"==\" e \"! =\" são usados, a cadeia à direita do operador\n" -" é usada como padrão e é feita a comparação de padrões. Quando o operador \"= ~\"\n" -" é usado, a cadeia à direita do operador é comparada como expressão regular.\n" +" EXPR1 && EXPR2\tVerdadeiro se EXPR1 e EXPR2 forem verdadeiras; senão " +"falso\n" +" EXPR1 || EXPR2\tVerdadeiro se EXPR1 ou EXPR2 forem verdadeiras; " +"senão falso\n" +" \n" +" Quando os operadores \"==\" e \"! =\" são usados, a cadeia à direita do " +"operador\n" +" é usada como padrão e é feita a comparação de padrões. Quando o " +"operador \"= ~\"\n" +" é usado, a cadeia à direita do operador é comparada como expressão " +"regular.\n" " \n" " Os operadores && e || não avaliam EXPR2 se EXPR1 for suficiente para\n" " determinar o valor da expressão." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5086,9 +5451,11 @@ msgstr "" " BASH_VERSION\tInformações de versão para esta bash.\n" " CDPATH\tUma lista de pastas separadas por \":\" para procurar\n" " \t\tpor pastas dadas como argumentos a \"cd\".\n" -" GLOBIGNORE\tUma lista de padrões separada por \":\" que descreve nomes de\n" +" GLOBIGNORE\tUma lista de padrões separada por \":\" que descreve nomes " +"de\n" " ficheiro a ignorar pela expansão do nome do caminho.\n" -" HISTFILE\tNome de ficheiro onde o seu histórico de comandos é armazenado.\n" +" HISTFILE\tNome de ficheiro onde o seu histórico de comandos é " +"armazenado.\n" " HISTFILESIZE\tNúmero máximo de linhas que este ficheiro pode conter.\n" " HISTSIZE\tNúmero máximo de linhas de histórico a que uma consola em \n" " \t\texecução pode aceder.\n" @@ -5101,7 +5468,8 @@ msgstr "" " \t\tvazia antes que a consola saia (predefinição 10).\n" " \t\tQuando não definido, EOF significa o fim da entrada.\n" " MACHTYPE\tDescrição do sistema actual em que a bash está em execução.\n" -" MAILCHECK\tFrequência, em segundos, com que a bash procura novo correio.\n" +" MAILCHECK\tFrequência, em segundos, com que a bash procura novo " +"correio.\n" " MAILPATH\tLista de ficheiros separados por \":\" onde a bash procura\n" " \t\tnovas mensagens.\n" " OSTYPE\tVersão Unix em que esta versão da bash está em execução.\n" @@ -5124,15 +5492,17 @@ msgstr "" " \t\t\"substring\" significa que a palavra de comando deve ser igual\n" " \t\ta uma sub-cadeia da tarefa. Qualquer outro valor significa que\n" " \t\to comando deve ser um prefixo de uma tarefa interrompida.\n" -" histchars\tCaracteres que controlam a expansão do histórico e substituições\n" +" histchars\tCaracteres que controlam a expansão do histórico e " +"substituições\n" " \t\trápidas. O primeiro carácter é o carácter de subtituição do\n" " \t\thistórico, normalmente \"!\". O 2º é o de substituição rápida,\n" " \t\thabitualmente \"^\". O terceiro é o comentário do histórico,\n" " \t\tnormalmente \"#\".\n" -" HISTIGNORE\tLista de padrões separada por \":\" usados para decidir quais\n" +" HISTIGNORE\tLista de padrões separada por \":\" usados para decidir " +"quais\n" " \t\tos comandos que devem ser gravados na lista de histórico.\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5190,7 +5560,7 @@ msgstr "" " Devolve sucesso a não ser que indique um argumento inválido ou a\n" " troca de pastas falhe." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5240,7 +5610,7 @@ msgstr "" " Devolve sucesso a não ser que indique um argumento inválido ou a troca\n" " de pastas falhe." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5292,9 +5662,10 @@ msgstr "" " \t\tpor zero.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro" -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5330,7 +5701,8 @@ msgstr "" " Devolve sucesso se OPTNOME estiver activado; falha se indicar uma opção\n" " inválida ou OPTNOME esteja desactivada." -#: builtins.c:1937 +#: builtins.c:1938 +#, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5338,27 +5710,36 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: plain\n" -" characters, which are simply copied to standard output; character escape\n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next successive\n" +" format specifications, each of which causes printing of the next " +"successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in printf(1),\n" +" In addition to the standard format specifications described in " +"printf(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" " \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" -" specifications behave as if a zero value or null string, as appropriate,\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" " had been supplied.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or assignment\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" " error occurs." msgstr "" "Formata e imprime ARGUMENTOS sob controlo do FORMATO.\n" @@ -5369,33 +5750,43 @@ msgstr "" " \n" " FORMATO é uma cadeia de caracteres que contém três tipos de objectos: \n" " caracteres simples, que são simplesmente copiados para a saída padrão;\n" -" sequências de escape, que são convertidas e copiadas para a saída padrão; e\n" -" especificações de formato, cada uma das quais causa a impressão do argumento\n" +" sequências de escape, que são convertidas e copiadas para a saída " +"padrão; e\n" +" especificações de formato, cada uma das quais causa a impressão do " +"argumento\n" " sucessivo seguinte.\n" " \n" " Além das especificações de formato padrão descritas em printf (1),\n" " printf interpreta:\n" " \n" " %b\texpande sequências de escape para o argumento correspondente\n" -" %q\tcita o argumento de forma a ser reutilizado como entrada de consola\n" -" %(fmt)T\timprime a cadeia de data-hora resultante da utilização do FMT\n" +" %q\tcita o argumento de forma a ser reutilizado como entrada de " +"consola\n" +" %(fmt)T\timprime a cadeia de data-hora resultante da utilização do " +"FMT\n" " \t\tcomo formato para strftime(3)\n" " \n" -" O formato é reutilizado conforme necessário para consumir todos os argumentos.\n" -" E se há menos argumentos do que o formato requer, especificações de formato\n" -" extra comportam-se como um valor zero ou uma cadeia nula, conforme apropriado,\n" +" O formato é reutilizado conforme necessário para consumir todos os " +"argumentos.\n" +" E se há menos argumentos do que o formato requer, especificações de " +"formato\n" +" extra comportam-se como um valor zero ou uma cadeia nula, conforme " +"apropriado,\n" " tenha sido fornecido.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro de\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro de\n" " escrita ou atribuição." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no options\n" -" are supplied, existing completion specifications are printed in a way that\n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -5410,20 +5801,25 @@ msgid "" " \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. If multiple options are supplied,\n" -" the -D option takes precedence over -E, and both take precedence over -I.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" "Especifica como os argumentos devem ser concluídos por Readline.\n" " \n" -" Para cada NOME, especifica como os argumentos devem ser concluídos. Se não \n" -" fornecer opções, as especificações de conclusão existentes são imprimidas\n" +" Para cada NOME, especifica como os argumentos devem ser concluídos. Se " +"não \n" +" fornecer opções, as especificações de conclusão existentes são " +"imprimidas\n" " de forma a permitir que sejam reutilizadas como entrada.\n" " \n" " Opções:\n" -" -p\timprime especificações de conclusão existentes em formato reutilizável\n" +" -p\timprime especificações de conclusão existentes em formato " +"reutilizável\n" " -r\tremove uma especificação de conclusão para cada NOME, ou, se não\n" " \t\tforneceu NOMEs, todas as especificações de conclusão\n" " -D\taplica as conclusões e acções como predefinição para comandos\n" @@ -5434,18 +5830,22 @@ msgstr "" " \t\tcomando)\n" " \n" " Quando a conclusão é tentada, as acções são aplicadas na ordem em que \n" -" as opções de letras maiúsculas estão listadas acima. Se forem fornecidas múltiplas\n" -" opções, a opção -D toma precedência sobre -E e ambas têm precedência sobre -I.\n" +" as opções de letras maiúsculas estão listadas acima. Se forem fornecidas " +"múltiplas\n" +" opções, a opção -D toma precedência sobre -E e ambas têm precedência " +"sobre -I.\n" " \n" " Estado da saída:\n" -"devolve sucesso a não ser que seja fornecida uma opção inválida ou ocorra um erro." +"devolve sucesso a não ser que seja fornecida uma opção inválida ou ocorra um " +"erro." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches against\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -5458,15 +5858,19 @@ msgstr "" " são geradas comparações com PALAVRA.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro." +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" -" the completion currently being executed. If no OPTIONs are given, print\n" -" the completion options for each NAME or the current completion specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -5490,9 +5894,12 @@ msgid "" msgstr "" "Modifica ou mostra as opções de conclusão.\n" " \n" -" Modifica as opções de conclusão para cada NOME, ou, se não fornecer NOME,\n" -" a conclusão actualmente em execução. Se nenhuma OPÇÃO for fornecida, imprime\n" -" as opções de conclusão para cada NOME ou a especificação de conclusão actual.\n" +" Modifica as opções de conclusão para cada NOME, ou, se não fornecer " +"NOME,\n" +" a conclusão actualmente em execução. Se nenhuma OPÇÃO for fornecida, " +"imprime\n" +" as opções de conclusão para cada NOME ou a especificação de conclusão " +"actual.\n" " \n" " Opções:\n" " \t-o opção\tDefine opção de conclusão OPÇÃO para cada NOME\n" @@ -5504,31 +5911,40 @@ msgstr "" " \n" " Argumentos:\n" " \n" -" Cada NOME refere-se a um comando para o qual uma especificação de conclusão\n" -" deve ter sido anteriormente definida usando o interno \"complete\". Se não\n" +" Cada NOME refere-se a um comando para o qual uma especificação de " +"conclusão\n" +" deve ter sido anteriormente definida usando o interno \"complete\". Se " +"não\n" " forneceu NOMEs, compopt tem de ser chamado por uma função actualmente a\n" -" gerar conclusões e as opções para esse gerador de conclusões actualmente\n" +" gerar conclusões e as opções para esse gerador de conclusões " +"actualmente\n" " em execução são modificadas.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que indique uma opção inválida ou NOME não tenha\n" +" Devolve sucesso a não ser que indique uma opção inválida ou NOME não " +"tenha\n" " uma especificação de conclusão definida." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" " -d delim\tUse DELIM to terminate lines, instead of newline\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" " -s count\tDiscard the first COUNT lines read\n" " -t\tRemove a trailing DELIM from each line read (default newline)\n" -" -u fd\tRead lines from file descriptor FD instead of the standard input\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" " -c quantum\tSpecify the number of lines read between each call to\n" " \t\t\tCALLBACK\n" @@ -5541,25 +5957,31 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly or\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" " not an indexed array." msgstr "" "Lê linhas da entrada padrão para uma variável de matriz indexada.\n" " \n" -" Lê linhas da entrada padrão para a variável de matriz indexada MATRIZ, ou\n" -" do descritor de ficheiro FD se a opção -u for fornecida. A variável MAPFILE\n" +" Lê linhas da entrada padrão para a variável de matriz indexada MATRIZ, " +"ou\n" +" do descritor de ficheiro FD se a opção -u for fornecida. A variável " +"MAPFILE\n" " é a MATRIZ predefinida.\n" " \n" " Opções:\n" " -d delim\tUsa DELIM para terminar as linhas, em vez de nova linha\n" " -n total\tCopia no máximo TOTAL linhas. Se TOTAL for 0, copia todas\n" -" -O origem\tComeça a atribuir a MATRIZ no índice ORIGEM. A predefinição é 0\n" +" -O origem\tComeça a atribuir a MATRIZ no índice ORIGEM. A predefinição " +"é 0\n" " -s total\tDescarta as primeiras TOTAL linhas lidas\n" -" -t\tRemove um DELIM inicial de cada linha lida (predefinição é nova linha)\n" +" -t\tRemove um DELIM inicial de cada linha lida (predefinição é nova " +"linha)\n" " -u fd\tLê linhas do descritor de ficheiro FD em vez da entrada padrão\n" " -C retorno\tAvalia RETORNO cada vez que QUANTUM linhas são lidas\n" " -c quantum\tEspecifica o número de linhas lidas entre cada chamada a\n" @@ -5573,14 +5995,16 @@ msgstr "" " matriz a ser atribuído e a linha a ser atribuída a esse elemento\n" " como argumentos adicionais.\n" " \n" -" Se não for fornecido com uma origem explícita, mapfile limpa MATRIZ antes\n" +" Se não for fornecido com uma origem explícita, mapfile limpa MATRIZ " +"antes\n" " de lhe fazer atribuições.\n" " \n" " Estado de saída:\n" -" Devolve sucesso a não ser que indique uma opção inválida, MATRIZ seja só\n" +" Devolve sucesso a não ser que indique uma opção inválida, MATRIZ seja " +"só\n" " de leitura ou não seja uma matriz indexada." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5590,6 +6014,10 @@ msgstr "" " \n" " Um sinónimo para \"mapfile\"." +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: chave de matriz associativa inválida" + #~ msgid "" #~ "Returns the context of the current subroutine call.\n" #~ " \n" diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo index c61c0b583..6048f5c98 100644 Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ diff --git a/po/pt_BR.po b/po/pt_BR.po index cddc1d903..5d0b79dbe 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: bash 5.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2021-01-07 10:37-0300\n" "Last-Translator: Rafael Fontenelle \n" -"Language-Team: Brazilian Portuguese \n" +"Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,59 +23,55 @@ msgstr "" #: arrayfunc.c:66 msgid "bad array subscript" -msgstr "subscrito de array incorreto" +msgstr "subscript de array incorreto" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: removendo o atributo nameref" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: impossível converter array indexado para associativo" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: chave de array associativo inválida" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: impossível atribuir a índice não numérico" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" -msgstr "%s: %s: deve usar subscrito ao atribuir um array associativo" +msgstr "%s: %s: deve-se usar subscript ao atribuir um array associativo" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: impossível criar: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "bash_execute_unix_command: impossível localizar mapa de teclas para comando" +msgstr "" +"bash_execute_unix_command: impossível localizar mapa de teclas para comando" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: primeiro caractere não-espaço em branco não é `\"'" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "sem `%c' de fechamento em %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s faltando separador dois-pontos" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "`%s': não foi desassociar no comando keymap" @@ -94,7 +91,7 @@ msgstr "expansão de chaves: falha ao alocar memória para %u elementos" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "expansão de chaves: falha ao alocar memória para `%s'" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nome de apelido (alias) inválido" @@ -156,7 +153,8 @@ msgstr "" "Retorna o contexto da chamada de sub-rotina atual.\n" " \n" " Sem EXPR, retorna \"$linha $arquivo\". Com EXPR, retorna\n" -" \"$linha $sub-rotina $arquivo\"; essa informação extra pode ser usada para\n" +" \"$linha $sub-rotina $arquivo\"; essa informação extra pode ser usada " +"para\n" " fornecer um rastro da pilha.\n" " \n" " O valor de EXPR indica quantos quadros de chamada deve voltar antes do\n" @@ -166,7 +164,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME não definida" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "número excessivo de argumentos" @@ -193,7 +191,7 @@ msgstr "aviso: " msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: a opção requer um argumento" @@ -208,7 +206,7 @@ msgstr "%s: requer argumento numérico" msgid "%s: not found" msgstr "%s: não encontrado" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: opção inválida" @@ -218,7 +216,7 @@ msgstr "%s: opção inválida" msgid "%s: invalid option name" msgstr "%s: nome de opção inválido" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': não é um identificador válido" @@ -231,7 +229,7 @@ msgstr "número octal inválido" msgid "invalid hex number" msgstr "número do hexa inválido" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "número inválido" @@ -243,90 +241,97 @@ msgstr "%s: especificação de sinal inválida" #: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "`%s': não é um identificador de processo (pid) nem é uma especificação de trabalho válida" +msgstr "" +"`%s': não é um identificador de processo (pid) nem é uma especificação de " +"trabalho válida" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: a variável permite somente leitura" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: impossível remover definição" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fora dos limites" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argumento" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s fora dos limites" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: trabalho não existe" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: nenhum controle de trabalho" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "nenhum controle de trabalho" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: restrição" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "restrição" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: não é um comando interno do shell" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "erro de escrita: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "erro ao definir atributos do terminal: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "erro ao obter atributos do terminal: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: erro ao obter o diretório atual: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: especificação de trabalho ambígua" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "ajuda não disponível nesta versão" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: impossível remover definição: %s somente-leitura" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: impossível remover definição" @@ -336,108 +341,108 @@ msgstr "%s: impossível remover definição" msgid "%s: invalid action name" msgstr "%s: nome de ação inválido" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: nenhuma especificação de completação" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "aviso: a opção -F pode não funcionar como esperado" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "aviso: a opção -C pode não funcionar como esperado" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "não se está executando atualmente função de completação" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "somente pode ser usado em uma função" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "impossível usar `-f' para criar funções" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: função somente para leitura" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: variável de referência não pode ser um array" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: referência a si próprio da variável nameref não é permitido" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s referência circular de nome" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "\"%s\": nome de variável inválido para referência de nome" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "impossível usar `-f' para criar funções" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: função somente para leitura" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: atribuição de array composto com aspas está obsoleto" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: impossível destruir variáveis de array desta maneira" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: impossível converter array associativo para indexado" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: atribuição de array composto com aspas está obsoleto" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "carregamento dinâmico não está disponível" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "impossível abrir objeto compartilhado %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "impossível localizar %s no objeto compartilhado %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: comando dinâmico já foi carregado" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "função de carregamento para %s retorna falha (%d): não foi carregada" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: não foi carregado dinamicamente" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: impossível excluir: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: é um diretório" @@ -452,7 +457,7 @@ msgstr "%s: não é um arquivo irregular" msgid "%s: file is too large" msgstr "%s: arquivo é muito grande" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: impossível executar o arquivo binário" @@ -544,15 +549,18 @@ msgstr "" #: builtins/help.def:185 #, c-format -msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "nenhum tópico de ajuda corresponde a `%s'. Tente `help help' ou `man -k %s' ou `info %s'." +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"nenhum tópico de ajuda corresponde a `%s'. Tente `help help' ou `man -k %s' " +"ou `info %s'." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: impossível abrir: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -563,30 +571,32 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" -"Esses comandos shell são definidos internamente. Digite `help' para ver essa\n" +"Esses comandos shell são definidos internamente. Digite `help' para ver " +"essa\n" "lista. Digite `help NOME' para descobrir mais sobre a função `NOME'.\n" "Use `info bash' para descobrir mais sobre o shell em geral.\n" -"Use `man -k' ou `info' para descobrir mais sobre comandos que não estão nesta\n" +"Use `man -k' ou `info' para descobrir mais sobre comandos que não estão " +"nesta\n" "lista.\n" "\n" "Um asterisco (*) próximo ao nome significa que o comando está desabilitado.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "impossível usar mais de um dentre -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "posição no histórico" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: marca de tempo inválida" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: expansão do histórico falhou" @@ -609,78 +619,78 @@ msgstr "%s: argumentos devem ser IDs de trabalhos ou processo" msgid "Unknown error" msgstr "Erro desconhecido" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "esperava uma expressão" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: não é um array indexado" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificação de descritor de arquivo inválida" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descritor de arquivo inválido: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: número de linhas inválido" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: origem do array inválido" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantidade de chamadas inválida" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "nome de variável array vazio" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "requer suporte a variável de array" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "`%s': faltando caractere de formato" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': especificação de formato de tempo inválida" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "`%c': caractere de formato inválido" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "problema ao analisar formato: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "faltando dígito hexa para \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "faltando dígito unicode para \\%c" @@ -721,10 +731,12 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Exibe a lista de diretórios atualmente memorizados. Diretórios são\n" @@ -831,25 +843,28 @@ msgstr "" " \n" " O comando interno `dirs' exibe a pilha de diretório." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: especificação de tempo limite inválida" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "erro de leitura: %d: %s" #: builtins/return.def:68 msgid "can only `return' from a function or sourced script" -msgstr "possível retornar (`return') apenas de uma função ou script carregado (com `source')" +msgstr "" +"possível retornar (`return') apenas de uma função ou script carregado (com " +"`source')" #: builtins/set.def:869 msgid "cannot simultaneously unset a function and a variable" -msgstr "impossível simultaneamente remover definição de uma função e uma variável" +msgstr "" +"impossível simultaneamente remover definição de uma função e uma variável" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: não é uma variável array" @@ -868,11 +883,12 @@ msgstr "%s: impossível exportar" msgid "shift count" msgstr "número de shift" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" -msgstr "impossível simultaneamente definir e remover definição de opções do shell" +msgstr "" +"impossível simultaneamente definir e remover definição de opções do shell" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome de opção de shell inválido" @@ -939,16 +955,16 @@ msgstr "%s: argumento limite inválido" msgid "`%c': bad command" msgstr "`%c': comando incorreto" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: impossível obter limite: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "limite" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: impossível modificar limite: %s" @@ -967,7 +983,7 @@ msgstr "`%c': operador de modo simbólico inválido" msgid "`%c': invalid symbolic mode character" msgstr "`%c': caractere de modo simbólico inválido" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " linha " @@ -987,96 +1003,108 @@ msgstr "Abortando..." msgid "INFORM: " msgstr "INFORM: " -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "aviso: " + +#: error.c:488 msgid "unknown command error" msgstr "erro de comando desconhecido" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "tipo de comando incorreto" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "conector incorreto" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "desvio incorreto" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: variável não associada" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" -msgstr "\atempo limite de espera excedido aguardando entrada: fim automático da sessão\n" +msgstr "" +"\atempo limite de espera excedido aguardando entrada: fim automático da " +"sessão\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "impossível redirecionar a entrada padrão para /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': caractere de formato inválido" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] ainda existe" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "erro de `pipe'" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: excedido o nível máximo de aninhamento de `eval' (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: excedido o nível máximo de aninhamento de `function' (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: excedido o nível máximo de aninhamento de avaliação (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restrição: não é permitido especificar `/' em nomes de comandos" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: comando não encontrado" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: impossível executar o arquivo binário" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interpretador incorreto" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: impossível executar o arquivo binário: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "`%s': é um comando interno especial" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossível duplicar fd (descritor de arquivo) %d para fd %d" @@ -1089,68 +1117,68 @@ msgstr "excedido o nível de recursividade da expressão" msgid "recursion stack underflow" msgstr "esvaziamento de pilha de recursão" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "erro de sintaxe na expressão" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "tentativa de atribuição para algo que não é uma variável" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "erro de sintaxe na atribuição de variável" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "divisão por 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "erro de programação: token incorreto passado para expassign()" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "esperava `:' para expressão condicional" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "exponente menor que 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "esperava identificador após pré-acréscimo ou pré-decréscimo" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "faltando `)'" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "erro de sintaxe: esperava operando" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "erro de sintaxe: operador aritmético inválido" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (token de erro é \"%s\")" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "base aritmética inválida" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "contante inteira inválida" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "valor muito grande para esta base de numeração" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: erro de expressão\n" @@ -1159,186 +1187,192 @@ msgstr "%s: erro de expressão\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: impossível acessar os diretórios pais (anteriores)" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" -msgstr "impossível redefinir modo `nodelay' para o descritor de arquivo (fd) %d" +msgstr "" +"impossível redefinir modo `nodelay' para o descritor de arquivo (fd) %d" #: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" -msgstr "impossível alocar novo descritor de arquivo (fd) para a entrada do `bash' a partir do fd %d" +msgstr "" +"impossível alocar novo descritor de arquivo (fd) para a entrada do `bash' a " +"partir do fd %d" #: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" -msgstr "save_bash_input: buffer já existe para o novo descritor de arquivo (fd) %d" +msgstr "" +"save_bash_input: buffer já existe para o novo descritor de arquivo (fd) %d" #: jobs.c:543 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: `pipe' de pgrp" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "identificador de processo (pid) %d bifurcado (fork) aparece no trabalho em execução %d" +msgstr "" +"identificador de processo (pid) %d bifurcado (fork) aparece no trabalho em " +"execução %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "excluindo trabalho parado %d com grupo de processo %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marcado como ainda vivo" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: o identificador do processo (pid) não existe" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Sinal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Concluído" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Parado" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Parado(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Executando" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Concluído(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Fim da execução com status %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Status desconhecido" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(imagem do núcleo gravada)" -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "`setpgid' filho (%ld para %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: o pid %ld não é um processo filho deste shell" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Sem registro do processo %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: trabalho %d está parado" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: nenhum trabalho atual" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: o trabalho terminou" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: o trabalho %d já está em plano de fundo" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: ativando WNOHANG para evitar bloqueio indefinido" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s, linha %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (imagem do núcleo gravada)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(wd agora: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp falhou" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: nenhum controle de trabalho em plano de fundo" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplina da linha" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "impossível definir grupo do processo do terminal (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "nenhum controle de trabalho neste shell" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: asserção falhou: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1347,47 +1381,47 @@ msgstr "" "\r\n" "malloc: %s:%d: asserção remendada\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "desconhecido" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: bloco socado em lista livre" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: chamado com argumento de bloco já liberado" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: chamado com argumento de bloco não alocado" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: esvaziamento de pilha detectado; mh_nbytes fora do limite" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free: esvaziamento de pilha detectado; magic8 corrompido" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: tamanhos de porções do início e do fim são diferentes" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: chamado com argumento de bloco não alocado" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: esvaziamento de pilha detectado; mh_nbytes fora do limite" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: esvaziamento de pilha detectado; magic8 corrompido" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: tamanhos de porções do início e do fim são diferentes" @@ -1429,22 +1463,22 @@ msgstr "%s: especificação de caminho de rede inválida" msgid "network operations not supported" msgstr "sem suporte a operações de rede" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: impossível alterar locale (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: impossível alterar locale (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: impossível alterar locale (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: impossível alterar locale (%s): %s" @@ -1462,136 +1496,140 @@ msgstr "Você tem mensagem nova de correio em $_" msgid "The mail in %s has been read\n" msgstr "As mensagens de correio em %s foram lidas\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "erro de sintaxe: requer expressão aritmética" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "erro de sintaxe: `;' inesperado" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "erro de sintaxe: `((%s))'" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo da instrução incorreto %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "here-document na linha %d delimitado pelo fim do arquivo (desejava `%s')" +msgstr "" +"here-document na linha %d delimitado pelo fim do arquivo (desejava `%s')" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instrução de redirecionamento `%d' fora do limite" -#: parse.y:2393 +#: parse.y:2428 #, c-format -msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" -msgstr "shell_getc: shell_input_line_size (%zu) excede SIZE_MAX (%lu): linha truncada" +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) excede SIZE_MAX (%lu): linha truncada" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "excedido o número máximo de here-document" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "encontrado EOF inesperado enquanto procurava por `%c' correspondente" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "encontrado EOF inesperado enquanto procurava por `]]'" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "erro de sintaxe na expressão condicional: token inesperado `%s'" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "erro de sintaxe na expressão condicional" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "token inesperado `%s', esperava`)'" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "esperava `)'" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento inesperado `%s' para operador unário condicional" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para operador unário condicional" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "token inesperado `%s', esperava operador binário condicional" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "esperava operador binário condicional" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento inesperado `%s' para operador binário condicional" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para operador binário condicional" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "token inesperado `%c' em comando condicional" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "token inesperado `%s' em comando condicional" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "token inesperado %d em comando condicional" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "erro de sintaxe próximo ao token inesperado `%s'" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "erro de sintaxe próximo a `%s'" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "erro de sintaxe: fim prematuro do arquivo" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "erro de sintaxe" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use \"%s\" para sair do shell.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "encontrado EOF inesperado enquanto procurava por `)' correspondente" @@ -1630,94 +1668,94 @@ msgstr "xtrace_set: ponteiro de arquivo NULO" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': caractere de formato inválido" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "descritor de arquivo fora dos limites" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirecionamento ambíguo" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: impossível sobrescrever arquivo existente" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restrição: impossível redirecionar saída" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "impossível criar arquivo temporário para here-document: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: impossível atribuir fd a variável" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "sem suporte a /dev/(tcp|udp)/máquina/porta sem rede" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "erro de redirecionamento: impossível duplicar fd" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "impossível localizar /tmp, por favor crie!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp deve ser um nome de diretório válido" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "modo de impressão bonita ignorada em shells interativos" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opção inválida" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "impossível definir uid para %d: uid efetivo %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "impossível definir gid para %d: gid efetivo %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "possível iniciar o depurador; modo de depuração desabilitado" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: É um diretório" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Eu não tenho nome!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versão %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1726,317 +1764,325 @@ msgstr "" "Utilização:\t%s [opção-longa-GNU] [opção] ...\n" "\t%s [opção-longa-GNU] [opção] arquivo-de-script ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "opções-longas-GNU:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Opções do shell:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD or -c comando ou -O opção-shopt\t\t(somente para chamada)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ou -o opção\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" -msgstr "Digite `%s -c \"help set\"' para mais informações sobre as opções do shell.\n" +msgstr "" +"Digite `%s -c \"help set\"' para mais informações sobre as opções do shell.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" -msgstr "Digite `%s -c help' para mais informações sobre os comandos internos do shell.\n" +msgstr "" +"Digite `%s -c help' para mais informações sobre os comandos internos do " +"shell.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Uso o comando `bashbug' para relatar erros.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "página do bash: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "Ajuda geral sobre uso de software GNU: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operação inválida" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Sinal falso" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Hangup" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Interromper" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Sair" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Instrução ilegal" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "BPT Rastreamento/Captura (BPT trace/trap)" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Instrução ABORT" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Instrução EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Exceção de ponto flutuante" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Morto (Killed)" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Erro do barramento" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Falha de segmentação" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Chamada incorreta do sistema" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "`Pipe' partido (escrita sem leitura)" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Relógio de alarme" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Terminado" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Condição urgente de Entrada/Saída" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Parado (sinal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Continuar" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Processo filho parado ou terminado" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Parado (entrada tty)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Parado (saída tty)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "Entrada/Saída pronta" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Tempo limite de CPU excedido" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Tamanho limite do arquivo excedido" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarme (virtual)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarme (perfil)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Janela mudada" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Registro bloqueado (lock)" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Sinal 1 definido pelo usuário" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Sinal 2 definido pelo usuário" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "entrada de dados HFT pendente" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "falha iminente de energia" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "falha iminente do sistema" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "migrar o processo para outra CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "erro de programação" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "modo monitor HFT autorizado" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "modo monitor HFT rescindido" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "a sequência de som HFT foi completada" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Requisição de informação" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Sinal desconhecido #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substituição incorreta: sem `%s' de fechamento em %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: impossível atribuir uma lista a um membro de um array" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "impossível criar `pipe' para a substituição do processo" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "impossível criar um processo filho para a substituição do processo" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "impossível abrir `pipe' %s para leitura" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "impossível abrir `pipe' %s para escrita" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "impossível duplicar `pipe' %s como descritor de arquivo (fd) %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "substituição de comando: byte nulo ignorado na entrada" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "impossível criar um `pipe' para substituição do comando" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "impossível criar um processo filho para substituição do comando" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "command_substitute: impossível duplicar o `pipe' como descritor de arquivo (fd) 1" +msgstr "" +"command_substitute: impossível duplicar o `pipe' como descritor de arquivo " +"(fd) 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: nome de variável inválido para referência de nome" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: expansão indireta inválida" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: nome de variável inválido" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: parâmetro não inicializado" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parâmetro nulo ou não inicializado" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expressão de substring < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: substituição incorreta" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: impossível atribuir desta maneira" -#: subst.c:9814 -msgid "future versions of the shell will force evaluation as an arithmetic substitution" -msgstr "versões futuras do shell vão forçar avaliação como um substituto aritmético" +#: subst.c:10111 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"versões futuras do shell vão forçar avaliação como um substituto aritmético" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substituição incorreta: sem \"`\" de fechamento em %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "sem correspondência: %s" @@ -2059,21 +2105,21 @@ msgstr "esperava `)'" msgid "`)' expected, found %s" msgstr "esperava `)', encontrado %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: esperava operador binário" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: esperava operador unário" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "faltando `]'" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "erro de sintaxe: `%s' inesperado" @@ -2082,105 +2128,120 @@ msgstr "erro de sintaxe: `%s' inesperado" msgid "invalid signal number" msgstr "número de sinal inválido" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" -msgstr "manipulador de trap: excedido o nível máximo de manipulador de captura (%d)" +msgstr "" +"manipulador de trap: excedido o nível máximo de manipulador de captura (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: valor incorreto em trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format -msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "run_pending_traps: manipulador de sinal é SIG_DFL, enviando novamente %d (%s) para mim mesmo" +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: manipulador de sinal é SIG_DFL, enviando novamente %d " +"(%s) para mim mesmo" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinal incorreto %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "erro ao importar a definição da função para `%s'" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "nível do shell (%d) muito grande, redefinindo para 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: nenhum contexto de função no atual escopo" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: a variável pode não ter um valor atribuído" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: atribuindo inteiro para referência de nome" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: nenhum contexto de função no escopo atual" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s possui a string de exportação nula" # exportstr é uma variável no código fonte do bash (arquivo variiables.c) -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "caractere inválido na %d na exportstr para %s" # exportstr é uma variável no código fonte do bash (arquivo variiables.c) -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "Sem `=' na exportstr para %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: cabeça de shell_variables não é um contexto de função" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nenhum contexto em no global_variables" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" -msgstr "pop_scope: cabeça de shell_variables não é um escopo de ambiente temporário" +msgstr "" +"pop_scope: cabeça de shell_variables não é um escopo de ambiente temporário" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: impossível abrir como ARQUIVO" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valor inválido para rastrear descritor de arquivo" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: valor de compatibilidade fora dos limites" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +#, fuzzy +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Copyright (C) 2020 Free Software Foundation, Inc." #: version.c:47 version2.c:47 -msgid "License GPLv3+: GNU GPL version 3 or later \n" -msgstr "Licença GPLv3+: GNU GPL versão 3 ou posterior .\n" +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licença GPLv3+: GNU GPL versão 3 ou posterior .\n" #: version.c:86 version2.c:86 #, c-format @@ -2224,8 +2285,13 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] nome [nome ...]" #: builtins.c:53 -msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" -msgstr "bind [-lpsvPSVX] [-m mapa-teclas] [-f arquivo] [-q nome] [-u nome] [-r seq-teclas] [-x seq-teclas:comando-shell] [seq-teclas:função-de-readline ou comando-readline]" +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m mapa-teclas] [-f arquivo] [-q nome] [-u nome] [-r seq-" +"teclas] [-x seq-teclas:comando-shell] [seq-teclas:função-de-readline ou " +"comando-readline]" #: builtins.c:56 msgid "break [n]" @@ -2256,11 +2322,17 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] COMANDO [ARG ...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFgiIlnrtux] [-p] [nome[=valor] ...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +#, fuzzy +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFgiIlnrtux] [-p] nome[=valor] ..." #: builtins.c:82 @@ -2301,7 +2373,8 @@ msgstr "logout [n]" #: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "fc [-e EDITOR] [-lnr] [PRIMEIRO] [ÚLTIMO] ou fc -s [ANTIGO=NOVO] [COMANDO]" +msgstr "" +"fc [-e EDITOR] [-lnr] [PRIMEIRO] [ÚLTIMO] ou fc -s [ANTIGO=NOVO] [COMANDO]" #: builtins.c:109 msgid "fg [job_spec]" @@ -2320,8 +2393,12 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [PADRÃO ...]" #: builtins.c:123 -msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" -msgstr "history [-c] [-d POSIÇÃO] [n] ou history -anrw [ARQUIVO] ou history -ps ARG [ARG...]" +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d POSIÇÃO] [n] ou history -anrw [ARQUIVO] ou history -ps ARG " +"[ARG...]" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2332,23 +2409,32 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [ESPEC-JOB ... | pid ...]" #: builtins.c:134 -msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" -msgstr "kill [-s SIGSPEC | -n SIGNUM | -SIGSPEC] PID | ESPEC-JOB ... ou kill -l [SIGSPEC]" +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s SIGSPEC | -n SIGNUM | -SIGSPEC] PID | ESPEC-JOB ... ou kill -l " +"[SIGSPEC]" #: builtins.c:136 msgid "let arg [arg ...]" msgstr "let ARG [ARG ...]" #: builtins.c:138 -msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" -msgstr "read [-ers] [-a ARRAY] [-d DELIM] [-i TEXTO] [-n NCHARS] [-N NCHARS] [-p CONFIRMAR ] [-t TEMPO] [-u FD] [NOME ...]" +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a ARRAY] [-d DELIM] [-i TEXTO] [-n NCHARS] [-N NCHARS] [-p " +"CONFIRMAR ] [-t TEMPO] [-u FD] [NOME ...]" #: builtins.c:140 msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o NOME-OPÇÃO] [--] [ARG ...]" #: builtins.c:144 @@ -2396,7 +2482,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-apt] nome [nome ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limite]" #: builtins.c:174 @@ -2432,15 +2519,21 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case PALAVRA in [PADRÃO [| PADRÃO]...) COMANDOS ;;]... esac" #: builtins.c:194 -msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" -msgstr "if COMANDOS; then COMANDOS; [ elif COMANDOS; then COMANDOS; ]... [ else COMANDOS; ] fi" +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if COMANDOS; then COMANDOS; [ elif COMANDOS; then COMANDOS; ]... [ else " +"COMANDOS; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while COMANDOS; do COMANDOS; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until COMANDOS; do COMANDOS; done" #: builtins.c:200 @@ -2493,24 +2586,43 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] formato [argumentos]" #: builtins.c:231 -msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]" -msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o opção] [-A ação] [-G global] [-W lista-palavras] [-F função] [-C comando] [-X filtro] [-P prefixo] [-S sufixo] [nome ...]" +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o opção] [-A ação] [-G global] [-W " +"lista-palavras] [-F função] [-C comando] [-X filtro] [-P prefixo] [-S " +"sufixo] [nome ...]" #: builtins.c:235 -msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" -msgstr "compgen [-abcdefgjksuv] [-o opção] [-A ação] [-G global] [-W lista-palavras] [-F função] [-C comando] [-X filtro] [-P prefixo] [-S sufixo] [palavra]" +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o opção] [-A ação] [-G global] [-W lista-" +"palavras] [-F função] [-C comando] [-X filtro] [-P prefixo] [-S sufixo] " +"[palavra]" #: builtins.c:239 msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o opção] [-DEI] [nome ...]" #: builtins.c:242 -msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" -msgstr "mapfile [-d delim] [-n número] [-O origem] [-s número] [-t] [-u fd] [-C chamada] [-c quantidade] [array]" +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n número] [-O origem] [-s número] [-t] [-u fd] [-C " +"chamada] [-c quantidade] [array]" #: builtins.c:244 -msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" -msgstr "readarray [-d delim] [-n número] [-O origem] [-s número] [-t] [-u fd] [-C chamada] [-c quantidade] [array]" +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d delim] [-n número] [-O origem] [-s número] [-t] [-u fd] [-C " +"chamada] [-c quantidade] [array]" # help alias #: builtins.c:256 @@ -2528,7 +2640,8 @@ msgid "" " -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has been\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" " defined." msgstr "" "Define ou exibe apelidos (aliases).\n" @@ -2577,25 +2690,30 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their values\n" -" -s List key sequences that invoke macros and their values\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" -" -X List key sequences bound with -x and associated commands\n" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2615,24 +2733,33 @@ msgstr "" " vi, vi-move, vi-command e vi-insert.\n" " -l Lista nomes de funções.\n" " -P Lista nomes e associações de função.\n" -" -p Lista funções e associações em uma forma que pode ser\n" +" -p Lista funções e associações em uma forma que pode " +"ser\n" " usada como entrada.\n" -" -S Lista sequências de teclas que chamam macros e seus\n" +" -S Lista sequências de teclas que chamam macros e " +"seus\n" " valores\n" -" -s Lista sequências de teclas que chamam macros e seus\n" -" valores em uma forma que pode ser usada como entrada.\n" +" -s Lista sequências de teclas que chamam macros e " +"seus\n" +" valores em uma forma que pode ser usada como " +"entrada.\n" " -V Lista nomes e valores de variáveis\n" -" -v Lista nomes e valores de variáveis em uma forma que\n" +" -v Lista nomes e valores de variáveis em uma forma " +"que\n" " pode ser usada como entrada.\n" -" -q nome-função Consulta sobre quais teclas chamam a função informada.\n" -" -u nome-função Desassocia todas teclas que estão associadas à função\n" +" -q nome-função Consulta sobre quais teclas chamam a função " +"informada.\n" +" -u nome-função Desassocia todas teclas que estão associadas à " +"função\n" " informada.\n" " -r seq-teclas Remove a associação para SEQ-TECLAS.\n" " -f arquivo Lê associações de tecla de ARQUIVO.\n" " -x seq-teclas:comando-shell\n" -" Faz com que COMANDO-SHELL seja executado ao inserir\n" +" Faz com que COMANDO-SHELL seja executado ao " +"inserir\n" " SEQ-TECLAS.\n" -" -X Lista sequência de teclas associadas com -x e comandos\n" +" -X Lista sequência de teclas associadas com -x e " +"comandos\n" " associados em uma forma que pode ser usada como\n" " entrada.\n" " \n" @@ -2686,7 +2813,8 @@ msgid "" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the function.\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" @@ -2722,7 +2850,8 @@ msgstr "" "Retorna o contexto da chamada de sub-rotina atual.\n" " \n" " Sem EXPR, retorna \"$linha $arquivo\". Com EXPR, retorna\n" -" \"$linha $sub-rotina $arquivo\"; essa informação extra pode ser usada para\n" +" \"$linha $sub-rotina $arquivo\"; essa informação extra pode ser usada " +"para\n" " fornecer um rastro da pilha.\n" " \n" " O valor de EXPR indica quantos quadros de chamada deve voltar antes do\n" @@ -2737,16 +2866,22 @@ msgstr "" msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of the\n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" -" A null directory name is the same as the current directory. If DIR begins\n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is set,\n" -" the word is assumed to be a variable name. If that variable has a value,\n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" " its value is used for DIR.\n" " \n" " Options:\n" @@ -2762,11 +2897,13 @@ msgid "" " \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" -" `..' is processed by removing the immediately previous pathname component\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" " back to a slash or the beginning of DIR.\n" " \n" " Exit Status:\n" -" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" " -P is used; non-zero otherwise." msgstr "" "Altera o diretório de trabalho do shell.\n" @@ -2774,17 +2911,20 @@ msgstr "" " Altera o diretório atual para DIR, sendo o padrão de DIR o mesmo valor\n" " da variável HOME.\n" " \n" -" A variável CDPATH define o caminho de pesquisa para o diretório contendo\n" +" A variável CDPATH define o caminho de pesquisa para o diretório " +"contendo\n" " DIR. Nomes de diretórios alternativos em CDPATH são separados por\n" " dois-pontos (:). Um nome de diretório nulo é o mesmo que o diretório\n" " atual. Se DIR inicia com uma barra (/), então CDPATH não é usada.\n" " \n" -" Se o diretório não for encontrado e a opção `cdable_vars` estiver definida\n" +" Se o diretório não for encontrado e a opção `cdable_vars` estiver " +"definida\n" " no shell, a palavra é presumida como sendo o nome de uma variável. Se\n" " tal variável possuir um valor, este valor é usado para DIR.\n" " \n" " Opções:\n" -" -L\tforça links simbólicos a serem seguidos: resolver links simbólicos\n" +" -L\tforça links simbólicos a serem seguidos: resolver links " +"simbólicos\n" " \t\tem DIR após processar instâncias de `..'\n" " -P\tusa a estrutura do diretório físico sem seguir links\n" " \t\tsimbólicos: resolve links simbólicos em DIR antes de processar\n" @@ -2795,12 +2935,15 @@ msgstr "" " \t\tatributos estendidos como um diretório contendo os atributos de\n" " \t\tarquivo\n" " \n" -" O padrão é seguir links simbólicos, como se `-L' tivesse sido especificada.\n" -" `..' é processada removendo o componente de caminho imediatamente anterior\n" +" O padrão é seguir links simbólicos, como se `-L' tivesse sido " +"especificada.\n" +" `..' é processada removendo o componente de caminho imediatamente " +"anterior\n" " de volta para uma barra ou para o início de DIR.\n" " \n" " Status de saída:\n" -" Retorna 0, se o diretório tiver sido alterado e se $PWD está definida com\n" +" Retorna 0, se o diretório tiver sido alterado e se $PWD está definida " +"com\n" " sucesso quando a opção -P for usada; do contrário, retorna não-zero." # help pwd @@ -2881,7 +3024,8 @@ msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke commands\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -2943,7 +3087,8 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the `local'\n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" @@ -2952,7 +3097,8 @@ msgid "" msgstr "" "Define valores e atributos de variável.\n" " \n" -" Declara variáveis e a elas fornece atributos. Se nenhum NOME for fornecido,\n" +" Declara variáveis e a elas fornece atributos. Se nenhum NOME for " +"fornecido,\n" " exibe os atributos e valores de todas as variáveis.\n" " \n" " Opções:\n" @@ -2967,11 +3113,13 @@ msgstr "" " -a\tpara fazer NOMEs serem arrrays indexados (se houver suporte)\n" " -A\tpara fazer NOMEs serem arrrays associativos (se houver suporte)\n" " -i\tpara fazer NOMEs terem o atributo `integer'\n" -" -l\tpara converter o valor de cada NOME para minúsculo em sua atribuição\n" +" -l\tpara converter o valor de cada NOME para minúsculo em sua " +"atribuição\n" " -n\tfazer de NOME uma referência à variável chamada por seu valor\n" " -r\tpara fazer de NOMEs somente leitura\n" " -t\tpara fazer NOMEs terem o atributo `trace'\n" -" -u\tpara converter o valor de cada NOME para maiúsculo em sua atribuição\n" +" -u\tpara converter o valor de cada NOME para maiúsculo em sua " +"atribuição\n" " -x\tpra fazer NOMEs exportar\n" " \n" " Usar `+' ao invés de `-' desliga o atributo dado.\n" @@ -3016,7 +3164,8 @@ msgstr "" " Cria uma variável local chamada NOME e lhe dá VALOR. OPÇÃO pode ser\n" " qualquer opção aceita pelo `declare'.\n" " \n" -" Variáveis locais podem ser usadas apenas em uma função; elas são visíveis\n" +" Variáveis locais podem ser usadas apenas em uma função; elas são " +"visíveis\n" " apenas para a função na qual elas foram definidas, bem como para seus\n" " filhos.\n" " \n" @@ -3030,7 +3179,8 @@ msgstr "" msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by a\n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -3054,9 +3204,11 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" -" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" " \t\tHHHH can be one to four hex digits.\n" -" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" " \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" @@ -3178,7 +3330,8 @@ msgstr "" msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the shell,\n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" @@ -3279,7 +3432,8 @@ msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3287,11 +3441,13 @@ msgid "" " -c\texecute COMMAND with an empty environment\n" " -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, unless\n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error occurs." +" Returns success unless COMMAND is not found or a redirection error " +"occurs." msgstr "" "Substitui o shell com o comando fornecido.\n" " \n" @@ -3330,7 +3486,8 @@ msgstr "" msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not executed\n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" " in a login shell." msgstr "" "Sai de um shell de login.\n" @@ -3343,13 +3500,15 @@ msgstr "" msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history list.\n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -3363,12 +3522,14 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error occurs." +" Returns success or status of executed command; non-zero if an error " +"occurs." msgstr "" "Exibe ou executa comandos da lista do histórico.\n" " \n" " fc é usado para listar ou editar e re-executar comandos da lista de\n" -" histórico. PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo\n" +" histórico. PRIMEIRO e ÚLTIMO podem ser números especificando o " +"intervalo\n" " ou PRIMEIRO pode ser uma string, o que significa o comando mais recente\n" " iniciando com aquela string.\n" " \n" @@ -3409,15 +3570,18 @@ msgstr "" " a noção do shell de trabalho atual é usada.\n" " \n" " Status de saída:\n" -" Status do comando colocado em primeiro plano ou falha, se ocorrer um erro." +" Status do comando colocado em primeiro plano ou falha, se ocorrer um " +"erro." # help bg #: builtins.c:779 msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" @@ -3439,7 +3603,8 @@ msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is displayed.\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3458,7 +3623,8 @@ msgid "" msgstr "" "Memoriza ou exibe localizações de programas.\n" " \n" -" Determina e memoriza do caminho completo de cada comando NOME. Se nenhum\n" +" Determina e memoriza do caminho completo de cada comando NOME. Se " +"nenhum\n" " argumento for fornecido, exibe informação sobre comandos memorizados.\n" " \n" " Opções:\n" @@ -3496,7 +3662,8 @@ msgid "" " PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is given." +" Returns success unless PATTERN is not found or an invalid option is " +"given." msgstr "" "Exibe informação sobre comandos internos (builtin).\n" " \n" @@ -3545,7 +3712,8 @@ msgid "" " \n" " If the HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed otherwise.\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." @@ -3558,7 +3726,8 @@ msgstr "" " \n" " Opções:\n" " -c\t\tlimpa a lista de histórico ao excluir todas as entradas\n" -" -d posição\texclui a entrada de histórico na posição POSIÇÃO. Posições\n" +" -d posição\texclui a entrada de histórico na posição POSIÇÃO. " +"Posições\n" " \t\t\tnegativas contam a partir do fim da lista de histórico\n" " \n" " -a\t\tanexa linhas de histórico desta sessão no arquivo de\n" @@ -3717,7 +3886,8 @@ msgid "" " Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" " fixed-width integers with no check for overflow, though division by 0\n" " is trapped and flagged as an error. The following list of operators is\n" -" grouped into levels of equal-precedence operators. The levels are listed\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" " in order of decreasing precedence.\n" " \n" " \tid++, id--\tvariable post-increment, post-decrement\n" @@ -3796,17 +3966,23 @@ msgstr "" # help read #: builtins.c:994 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with word\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -3818,7 +3994,8 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" " \t\tNCHARS characters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" " \t\tEOF is encountered or read times out, ignoring any\n" " \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" @@ -3836,15 +4013,19 @@ msgid "" " -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times out\n" -" (in which case it's greater than 128), a variable assignment error occurs,\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" "Lê uma linha da entrada padrão e separa em campos.\n" "\n" " Lê uma linha da entrada padrão ou do descritor de arquivo FD, caso a\n" -" opção -u seja fornecida. A linha é separada em campos, na mesma forma de\n" -" separação de palavras, e a primeira palavra é atribuída ao primeiro NOME,\n" +" opção -u seja fornecida. A linha é separada em campos, na mesma forma " +"de\n" +" separação de palavras, e a primeira palavra é atribuída ao primeiro " +"NOME,\n" " o segundo ao segundo NOME e por aí vai, com qualquer palavras restantes\n" " atribuídas para o último NOME. Apenas os caracteres encontrados em $IFS\n" " são reconhecidos como delimitadores de palavras.\n" @@ -3860,11 +4041,13 @@ msgstr "" " -e usa Readline para obter a linha\n" " -i texto usa TEXTO como o texto inicial para Readline\n" " -n nchars retorna após ler NCHARS caracteres, ao invés de esperar\n" -" por uma nova linha, mas respeita um delimitador se número\n" +" por uma nova linha, mas respeita um delimitador se " +"número\n" " de caracteres menor que NCHARS sejam lidos antes do\n" " delimitador\n" " -N nchars retorna apenas após ler exatamente NCHARS caracteres, a\n" -" menos que EOF (fim do arquivo) seja encontrado ou `read'\n" +" menos que EOF (fim do arquivo) seja encontrado ou " +"`read'\n" " esgote o tempo limite, ignorando qualquer delimitador\n" " -p prompt mostra a string PROMPT sem remover nova linha antes de\n" " tentar ler\n" @@ -3873,21 +4056,26 @@ msgstr "" " -s não ecoa entrada vindo de um terminal\n" " -t tempo esgota-se o tempo limite e retorna falha, caso uma toda\n" " uma linha não seja lida em TEMPO segundos. O valor da\n" -" variável TMOUT é o tempo limite padrão. TEMPO pode ser um\n" -" número fracionado. SE TEMPO for 0, `read' retorna sucesso\n" +" variável TMOUT é o tempo limite padrão. TEMPO pode ser " +"um\n" +" número fracionado. SE TEMPO for 0, `read' retorna " +"sucesso\n" " apenas se a entrada estiver disponível no descritor de\n" -" arquivo especificado. O status de saída é maior que 128,\n" +" arquivo especificado. O status de saída é maior que " +"128,\n" " se o tempo limite for excedido\n" -" -u fd lê do descritor de arquivo FD, ao invés da entrada padrão\n" +" -u fd lê do descritor de arquivo FD, ao invés da entrada " +"padrão\n" " \n" " Status de saída:\n" " O código de retorno é zero, a menos que o EOF (fim do arquivo) seja\n" -" encontrado, `read' esgote o tempo limite (caso em que o código de retorno\n" +" encontrado, `read' esgote o tempo limite (caso em que o código de " +"retorno\n" " será 128), ocorra erro de atribuição de uma variável ou um descritor de\n" " arquivo inválido seja fornecido como argumento para -u." # help return -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3909,7 +4097,7 @@ msgstr "" " script." # help set -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3952,7 +4140,8 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero status\n" +" or zero if no command exited with a non-zero " +"status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -3976,7 +4165,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3992,18 +4182,21 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" -"Define ou remove definição de valores das opções e dos parâmetros posicionais\n" +"Define ou remove definição de valores das opções e dos parâmetros " +"posicionais\n" "do shell:\n" " \n" " Altera o valor de opções e de parâmetros posicionais do shell ou mostra\n" " os nomes ou valores de variáveis shell.\n" " \n" " Opções:\n" -" -a Marca variáveis, que foram modificadas ou criadas, para exportação.\n" +" -a Marca variáveis, que foram modificadas ou criadas, para " +"exportação.\n" " -b Notifica sobre terminação de trabalho imediatamente.\n" " -e Sai imediatamente se um comando sai com um status não-zero.\n" " -f Desabilita a geração de nome de arquivo (\"globbing\").\n" -" -h Memoriza a localização de comandos à medida em que são procurados.\n" +" -h Memoriza a localização de comandos à medida em que são " +"procurados.\n" " -k Todos argumentos de atribuição são colocados no ambiente para um\n" " comando, e não apenas aqueles que precedem o nome do comando.\n" " -m Controle de trabalho está habilitado.\n" @@ -4021,7 +4214,8 @@ msgstr "" " history habilita histórico de comandos\n" " ignoreeof shell não vai sair após leitura de EOF\n" " interactive-comments\n" -" permite mostrar comentários em comandos interativos\n" +" permite mostrar comentários em comandos " +"interativos\n" " keyword mesmo que -k\n" " monitor mesmo que -m\n" " noclobber mesmo que -C\n" @@ -4033,8 +4227,10 @@ msgstr "" " onecmd mesmo que -t\n" " physical mesmo que -P\n" " pipefail o valor de retorno de uma linha de comandos é o\n" -" status do último comando a sair com status não-zero,\n" -" ou zero se nenhum comando saiu com status não zero\n" +" status do último comando a sair com status não-" +"zero,\n" +" ou zero se nenhum comando saiu com status não " +"zero\n" " posix altera o comportamento do bash, onde a operação\n" " padrão diverge dos padrões do Posix para\n" " corresponder a estes padrões\n" @@ -4042,33 +4238,44 @@ msgstr "" " verbose mesmo que -v\n" " vi usa interface de edição de linha estilo vi\n" " xtrace mesmo que -x\n" -" -p Ligado sempre que IDs de usuário real e efetivo não corresponderem.\n" -" Desabilita processamento do arquivo $ENV e importação de funções da\n" +" -p Ligado sempre que IDs de usuário real e efetivo não " +"corresponderem.\n" +" Desabilita processamento do arquivo $ENV e importação de funções " +"da\n" " shell. Ao desligar essa opção, causa o uid e o gid efetivo serem\n" " os uid e gid reais.\n" " -t Sai após a leitura e execução de um comando.\n" -" -u Trata limpeza (unset) de variáveis como um erro quando substituindo.\n" +" -u Trata limpeza (unset) de variáveis como um erro quando " +"substituindo.\n" " -v Mostra linhas de entrada do shell na medida em que forem lidas.\n" -" -x Mostra comandos e seus argumentos na medida em que forme executados.\n" +" -x Mostra comandos e seus argumentos na medida em que forem " +"executados.\n" " -B o shell vai realizar expansão de chaves\n" " -C Se definido, não permite arquivos normais existentes serem\n" " sobrescritos por redirecionamento da saída.\n" " -E Se definido, a armadilha ERR é herdada por funções do shell.\n" -" -H Habilita substituição de histórico estilo \"!\". Essa sinalização está\n" +" -H Habilita substituição de histórico estilo \"!\". Essa sinalização " +"está\n" " habilitada por padrão quando shell é interativa.\n" -" -P Se definida, não resolve links simbólicos ao sair de comandos, tais\n" +" -P Se definida, não resolve links simbólicos ao sair de comandos, " +"tais\n" " como `cd' (que altera o diretório atual).\n" -" -T Se definido, a armadilha DEBUG e RETURN são herdadas por funções do shell.\n" -" -- Atribui quaisquer argumentos restantes aos parâmetros posicionais.\n" +" -T Se definido, a armadilha DEBUG e RETURN são herdadas por funções " +"do shell.\n" +" -- Atribui quaisquer argumentos restantes aos parâmetros " +"posicionais.\n" " Se não houver argumentos restantes, os parâmetros posicionais são\n" " limpos (unset).\n" -" - Atribui quaisquer argumentos restantes aos parâmetros posicionais.\n" +" - Atribui quaisquer argumentos restantes aos parâmetros " +"posicionais.\n" " As opções -x e -v são desligadas.\n" " \n" " Usar +, ao invés de -, causa essas sinalizações serem desligadas. As\n" " sinalizações também podem ser usadas por meio de chamada do shell. As\n" -" sinalizações atualmente definidas podem ser encontradas em $-. Os n ARGs\n" -" restantes são parâmetros posicionais e são atribuídos, em ordem, a $1, $2,\n" +" sinalizações atualmente definidas podem ser encontradas em $-. Os n " +"ARGs\n" +" restantes são parâmetros posicionais e são atribuídos, em ordem, a $1, " +"$2,\n" " .. $n. Se nenhuma ARG for fornecido, todas as variáveis shell são\n" " mostradas.\n" " \n" @@ -4076,7 +4283,7 @@ msgstr "" " Retorna sucesso, a menos que uma opção inválida seja fornecida." # help unset -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4088,7 +4295,8 @@ msgid "" " -n\ttreat each NAME as a name reference and unset the variable itself\n" " \t\trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that fails,\n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" " tries to unset a function.\n" " \n" " Some variables cannot be unset; also see `readonly'.\n" @@ -4116,12 +4324,13 @@ msgstr "" " um NOME seja somente-leitura." # help export -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -4136,7 +4345,8 @@ msgstr "" "Define atributo de exportação para variáveis shell.\n" " \n" " Marca cada NOME para exportação automática para o ambiente dos comandos\n" -" executados subsequentemente. Se VALOR for fornecido, atribui VALOR antes\n" +" executados subsequentemente. Se VALOR for fornecido, atribui VALOR " +"antes\n" " de exportar.\n" " \n" " Opções:\n" @@ -4151,7 +4361,7 @@ msgstr "" " NOME seja inválido." # help readonly -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4191,7 +4401,7 @@ msgstr "" " NOME seja inválido." # help shift -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4203,14 +4413,15 @@ msgid "" msgstr "" "Desloca parâmetros posicionais.\n" " \n" -" Renomeia os parâmetros posicionais $N+1,$N+2 ... até $1,$2 ... Se N não\n" +" Renomeia os parâmetros posicionais $N+1,$N+2 ... até $1,$2 ... Se N " +"não\n" " for fornecido, presume-se que ele seja 1.\n" " \n" " Status de saída:\n" " Retorna sucesso, a menos que N seja negativo ou maior que $#." # help source -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4235,7 +4446,7 @@ msgstr "" " ARQUIVO não puder ser lido." # help suspend -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4261,7 +4472,7 @@ msgstr "" " ou ocorra um erro." # help test -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4295,7 +4506,8 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last read.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -4316,7 +4528,8 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 lexicographically.\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -4343,8 +4556,10 @@ msgid "" msgstr "" "Avalia expressão condicional.\n" " \n" -" Sai com um status de 0 (verdadeiro) ou 1 (falso) dependendo da avaliação\n" -" de EXPR. As expressões podem ser unárias ou binárias. Expressões unárias\n" +" Sai com um status de 0 (verdadeiro) ou 1 (falso) dependendo da " +"avaliação\n" +" de EXPR. As expressões podem ser unárias ou binárias. Expressões " +"unárias\n" " são normalmente usadas para examinar o status de um arquivo. Há\n" " operadores de strings e também há operadores de comparação numérica.\n" " \n" @@ -4358,7 +4573,8 @@ msgstr "" " -c ARQUIVO Verdadeiro, se arquivo for um caractere especial.\n" " -d ARQUIVO Verdadeiro, se arquivo for um diretório.\n" " -e ARQUIVO Verdadeiro, se arquivo existir.\n" -" -f ARQUIVO Verdadeiro, se arquivo existir e for um arquivo normal.\n" +" -f ARQUIVO Verdadeiro, se arquivo existir e for um arquivo " +"normal.\n" " -g ARQUIVO Verdadeiro, se arquivo for set-group-id.\n" " -h ARQUIVO Verdadeiro, se arquivo for um link simbólico.\n" " -L ARQUIVO Verdadeiro, se arquivo for um link simbólico.\n" @@ -4409,20 +4625,24 @@ msgstr "" " e for uma referência de nome.\n" " ! EXPR Verdadeiro, se a expressão EXPR for falsa.\n" " EXPR1 -a EXPR2 Verdadeiro, se ambas EXPR1 e EXPR2 forem verdadeiras.\n" -" EXPR1 -o EXPR2 Verdadeiro, se ao menos uma das expressões for verdadeira.\n" +" EXPR1 -o EXPR2 Verdadeiro, se ao menos uma das expressões for " +"verdadeira.\n" " \n" -" arg1 OP arg2 Testes aritméticos. OP é um dentre -eq, -ne, -lt, -le,\n" +" arg1 OP arg2 Testes aritméticos. OP é um dentre -eq, -ne, -lt, -" +"le,\n" " -gt, or -ge.\n" " \n" -" Operadores binários de aritmética retornam verdadeiro se ARG1 for igual,\n" +" Operadores binários de aritmética retornam verdadeiro se ARG1 for " +"igual,\n" " não-igual, menor-que, menor-ou-igual-a ou maior-ou-igual-a ARG2.\n" " \n" " Status de saída:\n" -" Retorna sucesso, se EXPR for avaliada como verdadeira; falha, se EXPR for\n" +" Retorna sucesso, se EXPR for avaliada como verdadeira; falha, se EXPR " +"for\n" " avaliada como falsa ou um argumento inválido for informado." # help [ -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4435,11 +4655,12 @@ msgstr "" " argumento deve ser um `]' literal, para corresponder ao `[' que abriu." # help times -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of its\n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4454,11 +4675,12 @@ msgstr "" " Sempre com sucesso." # help trap -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives signals\n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -4467,26 +4689,34 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" -" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands associated\n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is given." +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." msgstr "" "Tratamento de sinais e outros eventos.\n" " \n" @@ -4526,7 +4756,7 @@ msgstr "" " uma opção inválida seja fornecida." # help type -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4552,7 +4782,8 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not found." +" Returns success if all of the NAMEs are found; fails if any are not " +"found." msgstr "" "Exibe informação sobre o tipo de comando.\n" " \n" @@ -4582,11 +4813,12 @@ msgstr "" " deles não for encontrado." # help ulimit -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and processes\n" +" Provides control over the resources available to the shell and " +"processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -4679,7 +4911,7 @@ msgstr "" " ocorra um erro." # help umask -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4715,23 +4947,27 @@ msgstr "" " inválida seja fornecida." # help wait -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for each process identified by an ID, which may be a process ID or a\n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" " status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" -" If the -n option is supplied, waits for a single job from the list of IDs,\n" -" or, if no IDs are supplied, for the next job to complete and returns its\n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" " exit status.\n" " \n" " If the -p option is supplied, the process or job identifier of the job\n" " for which the exit status is returned is assigned to the variable VAR\n" -" named by the option argument. The variable will be unset initially, before\n" +" named by the option argument. The variable will be unset initially, " +"before\n" " any assignment. This is useful only when the -n option is supplied.\n" " \n" " If the -f option is supplied, and job control is enabled, waits for the\n" @@ -4765,16 +5001,18 @@ msgstr "" " filho inesperado." # help wait -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for each process specified by a PID and reports its termination status.\n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" " If PID is not given, waits for all currently active child processes,\n" " and the return status is zero. PID must be a process ID.\n" " \n" " Exit Status:\n" -" Returns the status of the last PID; fails if PID is invalid or an invalid\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" " option is given." msgstr "" "Espera por conclusão de processo e retorna o status de saída.\n" @@ -4789,7 +5027,7 @@ msgstr "" " inválida for fornecida." # help for -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4805,14 +5043,15 @@ msgstr "" " \n" " O loop `for' executa uma sequência de comandos para cada membro em\n" " uma lista de itens. Se `in PALAVRAS ...;' não estiver presente, então\n" -" `in \"$@\"' é presumido. Para cada elemento em PALAVRAS, NOME é definido\n" +" `in \"$@\"' é presumido. Para cada elemento em PALAVRAS, NOME é " +"definido\n" " com aquele elemento e os COMANDOS são executados.\n" " \n" " Status de saída:\n" " Retorna o status do último comando executado." # help for (( (?) -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4843,7 +5082,7 @@ msgstr "" " Retorna o status do último comando executado." # help select -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4881,7 +5120,7 @@ msgstr "" " Retorna o status do último comando executado." # help time -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4911,7 +5150,7 @@ msgstr "" " O status de retorno é o status retornado por LINHA-COMANDOS." # help case -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4930,16 +5169,21 @@ msgstr "" " Retorna o status do último comando executado." # help if -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of the\n" -" entire construct is the exit status of the last command executed, or zero\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" @@ -4960,12 +5204,14 @@ msgstr "" " Retorna o status do último comando executado." # help while -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -4979,12 +5225,14 @@ msgstr "" " Retorna o status do último comando executado." # help until -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -4998,7 +5246,7 @@ msgstr "" " Status de saída:\n" " Retorna o status do último comando executado." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5021,12 +5269,13 @@ msgstr "" " O comando coproc retorna um status de saída de 0." # help function -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" @@ -5044,7 +5293,7 @@ msgstr "" " Retorna sucesso, a menos que NOME seja somente-leitura." # help -m { -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5062,7 +5311,7 @@ msgstr "" " Status de saída:\n" " Retorna o status do último comando executado." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5088,7 +5337,7 @@ msgstr "" " Retorna o status de um trabalho resumido." # help '((' -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5107,13 +5356,16 @@ msgstr "" " Retorna 1, se EXPRESSÃO for avaliada como 0; do contrário, retorna 0." # help '[' -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries used\n" -" by the `test' builtin, and may be combined using the following operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -5157,7 +5409,7 @@ msgstr "" " 0 ou 1 dependendo do valor de EXPRESSÃO." # help variables -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5241,7 +5493,8 @@ msgstr "" " OSTYPE\t\t\tA versão do Unix no qual Bash está sendo executado.\n" " PATH\t\t\tUma lista separada por dois-pontos de diretórios para\n" " \t\t\tpesquisar ao se procurar por comandos.\n" -" PROMPT_COMMAND\tUm comando a ser executado antes de imprimir cada prompt\n" +" PROMPT_COMMAND\tUm comando a ser executado antes de imprimir cada " +"prompt\n" " \t\t\tprimário.\n" " PS1\t\t\t\tA string de prompt primário.\n" " PS2\t\t\t\tA string de prompt secundária.\n" @@ -5272,7 +5525,7 @@ msgstr "" " \t\t\t\thistórico.\n" # help pushd -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5332,7 +5585,7 @@ msgstr "" " a alteração de diretório falhar." # help popd -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5383,7 +5636,7 @@ msgstr "" " a alteração de diretório falhar." # help dirs -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5437,7 +5690,7 @@ msgstr "" " ocorrer um erro." # help shopt -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5474,7 +5727,8 @@ msgstr "" " opção inválida for fornecida ou NOME-OPÇÃO estiver desabilitado." # help printf -#: builtins.c:1937 +#: builtins.c:1938 +#, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5482,27 +5736,36 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: plain\n" -" characters, which are simply copied to standard output; character escape\n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next successive\n" +" format specifications, each of which causes printing of the next " +"successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in printf(1),\n" +" In addition to the standard format specifications described in " +"printf(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" " \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" -" specifications behave as if a zero value or null string, as appropriate,\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" " had been supplied.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or assignment\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" " error occurs." msgstr "" "Formata e imprime ARGUMENTOS sob controle de FORMATO.\n" @@ -5537,12 +5800,14 @@ msgstr "" " ocorra um erro de escrita ou atribuição." # help complete -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no options\n" -" are supplied, existing completion specifications are printed in a way that\n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -5557,8 +5822,10 @@ msgid "" " \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. If multiple options are supplied,\n" -" the -D option takes precedence over -E, and both take precedence over -I.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5570,8 +5837,10 @@ msgstr "" " impressas em uma forma que permite-as serem usadas como entrada.\n" " \n" " Opções:\n" -" -p\timprime especificações existentes de completar em um formato usável\n" -" -r\tremove uma especificação de completar para cada NOME ou, se nenhum\n" +" -p\timprime especificações existentes de completar em um formato " +"usável\n" +" -r\tremove uma especificação de completar para cada NOME ou, se " +"nenhum\n" " \t\tNOME for fornecido, todas as especificações de completar\n" " -D\taplica as completações e ações como sendo o padrão para comandos\n" " \t\tsem qualquer especificação definida\n" @@ -5581,7 +5850,8 @@ msgstr "" " \t\tcomando)\n" " \n" " Ao tentar completar, as ações são fornecidas na ordem em que as opções\n" -" de letras de caixa alta são listadas acima. Se várias opções forem fornecidas,\n" +" de letras de caixa alta são listadas acima. Se várias opções forem " +"fornecidas,\n" " a opção -D tem precedência sobre -E, e ambos têm precedência sobre -I.\n" " sobre -E.\n" " \n" @@ -5590,12 +5860,13 @@ msgstr "" " ocorra um erro." # help compgen -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches against\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -5612,13 +5883,16 @@ msgstr "" " ocorra um erro." # help compopt -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" -" the completion currently being executed. If no OPTIONs are given, print\n" -" the completion options for each NAME or the current completion specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -5669,21 +5943,26 @@ msgstr "" " NOME não tem uma especificação de completação definida." # help mapfile -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" " -d delim\tUse DELIM to terminate lines, instead of newline\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" " -s count\tDiscard the first COUNT lines read\n" " -t\tRemove a trailing DELIM from each line read (default newline)\n" -" -u fd\tRead lines from file descriptor FD instead of the standard input\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" " -c quantum\tSpecify the number of lines read between each call to\n" " \t\t\tCALLBACK\n" @@ -5696,11 +5975,13 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly or\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" " not an indexed array." msgstr "" "Lê linhas da entrada padrão para uma variável array indexado.\n" @@ -5711,23 +5992,28 @@ msgstr "" " \n" " Opções:\n" " -d dlim Usa DELIM para terminar linhas, ao invés de nova linha\n" -" -n número Copia no máximo NÚMERO linhas. Se NÚMERO for 0, todas as\n" +" -n número Copia no máximo NÚMERO linhas. Se NÚMERO for 0, todas " +"as\n" " linhas são copiadas\n" " -O origem Inicia atribuição de ARRAY no índice ORIGEM. O índice\n" " padrão é 0\n" " -s número Descarta as primeiras NÚMERO linhas lidas\n" " -t Remove uma DELIM ao final para cada linha lida\n" " (padrão: nova linha)\n" -" -u fd Lê linhas do descritor de arquivos FD, ao invés da entrada\n" +" -u fd Lê linhas do descritor de arquivos FD, ao invés da " +"entrada\n" " padrão\n" -" -C chamada Avalia CHAMADA a cada vez que QUANTIDADE linhas foram lidas\n" -" -c quantidade Especifica o número de linhas lidas entre cada chamada para\n" +" -C chamada Avalia CHAMADA a cada vez que QUANTIDADE linhas foram " +"lidas\n" +" -c quantidade Especifica o número de linhas lidas entre cada chamada " +"para\n" " CHAMADA\n" " \n" " Argumentos:\n" " ARRAY Nome da variável array para usar para arquivos de dados\n" " \n" -" Se -C for fornecido sem -c, a quantidade padrão é 5000. Quando CHAMADA é\n" +" Se -C for fornecido sem -c, a quantidade padrão é 5000. Quando CHAMADA " +"é\n" " avaliada, é fornecido o índice para o próximo elemento da array ser\n" " atribuído e a linha para ser atribuída àquele elemento como argumentos\n" " adicionais\n" @@ -5740,7 +6026,7 @@ msgstr "" " somente leitura ou não for um array indexado." # help readarray -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5750,6 +6036,10 @@ msgstr "" " \n" " Um sinônimo para `mapfile'." +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: chave de array associativo inválida" + #~ msgid "" #~ "Returns the context of the current subroutine call.\n" #~ " \n" @@ -5824,9 +6114,12 @@ msgstr "" #~ " If FILENAME is given, it is used as the history file. Otherwise,\n" #~ " if HISTFILE has a value, that is used, else ~/.bash_history.\n" #~ " \n" -#~ " If the HISTTIMEFORMAT variable is set and not null, its value is used\n" -#~ " as a format string for strftime(3) to print the time stamp associated\n" -#~ " with each displayed history entry. No time stamps are printed otherwise.\n" +#~ " If the HISTTIMEFORMAT variable is set and not null, its value is " +#~ "used\n" +#~ " as a format string for strftime(3) to print the time stamp " +#~ "associated\n" +#~ " with each displayed history entry. No time stamps are printed " +#~ "otherwise.\n" #~ " \n" #~ " Exit Status:\n" #~ " Returns success unless an invalid option is given or an error occurs." @@ -5852,12 +6145,16 @@ msgstr "" #~ " -s\t\t\tanexa os ARGs à lista de histórico como uma única entrada\n" #~ " \n" #~ " Se ARQUIVO for fornecido, ele é usado como o arquivo de histórico.\n" -#~ " Do contrário, se a variável HISTFILE tiver um valor, este será usado;\n" +#~ " Do contrário, se a variável HISTFILE tiver um valor, este será " +#~ "usado;\n" #~ " senão, usa de ~/.bash_history.\n" #~ " \n" -#~ " Se a variável HISTTIMEFORMAT for definida e não for nula, seu valor é\n" -#~ " usado como uma string de formato para strftime(3) para mostrar a marca\n" -#~ " de tempo associada com cada entrada de histórico exibida. Do contrário,\n" +#~ " Se a variável HISTTIMEFORMAT for definida e não for nula, seu valor " +#~ "é\n" +#~ " usado como uma string de formato para strftime(3) para mostrar a " +#~ "marca\n" +#~ " de tempo associada com cada entrada de histórico exibida. Do " +#~ "contrário,\n" #~ " nenhuma marca de tempo é mostrada.\n" #~ " \n" #~ " Status de saída:\n" @@ -5878,8 +6175,10 @@ msgstr "" #~ " -l\tlist the signal names; if arguments follow `-l' they are\n" #~ " \t\tassumed to be signal numbers for which names should be listed\n" #~ " \n" -#~ " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" -#~ " instead of process IDs, and allows processes to be killed if the limit\n" +#~ " Kill is a shell builtin for two reasons: it allows job IDs to be " +#~ "used\n" +#~ " instead of process IDs, and allows processes to be killed if the " +#~ "limit\n" #~ " on processes that you can create is reached.\n" #~ " \n" #~ " Exit Status:\n" @@ -5937,7 +6236,8 @@ msgstr "" #~ " history enable command history\n" #~ " ignoreeof the shell will not exit upon reading EOF\n" #~ " interactive-comments\n" -#~ " allow comments to appear in interactive commands\n" +#~ " allow comments to appear in interactive " +#~ "commands\n" #~ " keyword same as -k\n" #~ " monitor same as -m\n" #~ " noclobber same as -C\n" @@ -5948,9 +6248,12 @@ msgstr "" #~ " nounset same as -u\n" #~ " onecmd same as -t\n" #~ " physical same as -P\n" -#~ " pipefail the return value of a pipeline is the status of\n" -#~ " the last command to exit with a non-zero status,\n" -#~ " or zero if no command exited with a non-zero status\n" +#~ " pipefail the return value of a pipeline is the status " +#~ "of\n" +#~ " the last command to exit with a non-zero " +#~ "status,\n" +#~ " or zero if no command exited with a non-zero " +#~ "status\n" #~ " posix change the behavior of bash where the default\n" #~ " operation differs from the Posix standard to\n" #~ " match the standard\n" @@ -5958,9 +6261,11 @@ msgstr "" #~ " verbose same as -v\n" #~ " vi use a vi-style line editing interface\n" #~ " xtrace same as -x\n" -#~ " -p Turned on whenever the real and effective user ids do not match.\n" +#~ " -p Turned on whenever the real and effective user ids do not " +#~ "match.\n" #~ " Disables processing of the $ENV file and importing of shell\n" -#~ " functions. Turning this option off causes the effective uid and\n" +#~ " functions. Turning this option off causes the effective uid " +#~ "and\n" #~ " gid to be set to the real uid and gid.\n" #~ " -t Exit after reading and executing one command.\n" #~ " -u Treat unset variables as an error when substituting.\n" @@ -5983,26 +6288,32 @@ msgstr "" #~ " \n" #~ " Using + rather than - causes these flags to be turned off. The\n" #~ " flags can also be used upon invocation of the shell. The current\n" -#~ " set of flags may be found in $-. The remaining n ARGs are positional\n" +#~ " set of flags may be found in $-. The remaining n ARGs are " +#~ "positional\n" #~ " parameters and are assigned, in order, to $1, $2, .. $n. If no\n" #~ " ARGs are given, all shell variables are printed.\n" #~ " \n" #~ " Exit Status:\n" #~ " Returns success unless an invalid option is given." #~ msgstr "" -#~ "Define ou remove definição de valores das opções e dos parâmetros posicionais\n" +#~ "Define ou remove definição de valores das opções e dos parâmetros " +#~ "posicionais\n" #~ "do shell:\n" #~ " \n" -#~ " Altera o valor de opções e de parâmetros posicionais do shell ou mostra\n" +#~ " Altera o valor de opções e de parâmetros posicionais do shell ou " +#~ "mostra\n" #~ " os nomes ou valores de variáveis shell.\n" #~ " \n" #~ " Opções:\n" -#~ " -a Marca variáveis, que foram modificadas ou criadas, para exportação.\n" +#~ " -a Marca variáveis, que foram modificadas ou criadas, para " +#~ "exportação.\n" #~ " -b Notifica sobre terminação de trabalho imediatamente.\n" #~ " -e Sai imediatamente se um comando sai com um status não-zero.\n" #~ " -f Desabilita a geração de nome de arquivo (\"globbing\").\n" -#~ " -h Memoriza a localização de comandos à medida em que são procurados.\n" -#~ " -k Todos argumentos de atribuição são colocados no ambiente para um\n" +#~ " -h Memoriza a localização de comandos à medida em que são " +#~ "procurados.\n" +#~ " -k Todos argumentos de atribuição são colocados no ambiente para " +#~ "um\n" #~ " comando, e não apenas aqueles que precedem o nome do comando.\n" #~ " -m Controle de trabalho está habilitado.\n" #~ " -n Lê comandos, mas não os executa.\n" @@ -6019,7 +6330,8 @@ msgstr "" #~ " history habilita histórico de comandos\n" #~ " ignoreeof shell não vai sair após leitura de EOF\n" #~ " interactive-comments\n" -#~ " permite mostrar comentários em comandos interativos\n" +#~ " permite mostrar comentários em comandos " +#~ "interativos\n" #~ " keyword mesmo que -k\n" #~ " monitor mesmo que -m\n" #~ " noclobber mesmo que -C\n" @@ -6030,43 +6342,61 @@ msgstr "" #~ " nounset mesmo que -u\n" #~ " onecmd mesmo que -t\n" #~ " physical mesmo que -P\n" -#~ " pipefail o valor de retorno de uma linha de comandos é o\n" -#~ " status do último comando a sair com status não-zero,\n" -#~ " ou zero se nenhum comando saiu com status não zero\n" -#~ " posix altera o comportamento do bash, onde a operação\n" +#~ " pipefail o valor de retorno de uma linha de comandos é " +#~ "o\n" +#~ " status do último comando a sair com status não-" +#~ "zero,\n" +#~ " ou zero se nenhum comando saiu com status não " +#~ "zero\n" +#~ " posix altera o comportamento do bash, onde a " +#~ "operação\n" #~ " padrão diverge dos padrões do Posix para\n" #~ " corresponder a estes padrões\n" #~ " privileged mesmo que -p\n" #~ " verbose mesmo que -v\n" #~ " vi usa interface de edição de linha estilo vi\n" #~ " xtrace mesmo que -x\n" -#~ " -p Ligado sempre que IDs de usuário real e efetivo não corresponderem.\n" -#~ " Desabilita processamento do arquivo $ENV e importação de funções da\n" -#~ " shell. Ao desligar essa opção, causa o uid e o gid efetivo serem\n" +#~ " -p Ligado sempre que IDs de usuário real e efetivo não " +#~ "corresponderem.\n" +#~ " Desabilita processamento do arquivo $ENV e importação de " +#~ "funções da\n" +#~ " shell. Ao desligar essa opção, causa o uid e o gid efetivo " +#~ "serem\n" #~ " os uid e gid reais.\n" #~ " -t Sai após a leitura e execução de um comando.\n" -#~ " -u Trata limpeza (unset) de variáveis como um erro quando substituindo.\n" -#~ " -v Mostra linhas de entrada do shell na medida em que forem lidas.\n" -#~ " -x Mostra comandos e seus argumentos na medida em que forme executados.\n" +#~ " -u Trata limpeza (unset) de variáveis como um erro quando " +#~ "substituindo.\n" +#~ " -v Mostra linhas de entrada do shell na medida em que forem " +#~ "lidas.\n" +#~ " -x Mostra comandos e seus argumentos na medida em que forme " +#~ "executados.\n" #~ " -B o shell vai realizar expansão de chaves\n" #~ " -C Se definido, não permite arquivos normais existentes serem\n" #~ " sobrescritos por redirecionamento da saída.\n" #~ " -E Se definido, a armadilha ERR é herdada por funções do shell.\n" -#~ " -H Habilita substituição de histórico estilo \"!\". Essa sinalização está\n" +#~ " -H Habilita substituição de histórico estilo \"!\". Essa " +#~ "sinalização está\n" #~ " habilitada por padrão quando shell é interativa.\n" -#~ " -P Se definida, não resolve links simbólicos ao sair de comandos, tais\n" +#~ " -P Se definida, não resolve links simbólicos ao sair de comandos, " +#~ "tais\n" #~ " como `cd' (que altera o diretório atual).\n" #~ " -T Se definido, a armadilha DEBUG é herdada por funções do shell.\n" -#~ " -- Atribui quaisquer argumentos restantes aos parâmetros posicionais.\n" -#~ " Se não houver argumentos restantes, os parâmetros posicionais são\n" +#~ " -- Atribui quaisquer argumentos restantes aos parâmetros " +#~ "posicionais.\n" +#~ " Se não houver argumentos restantes, os parâmetros posicionais " +#~ "são\n" #~ " limpos (unset).\n" -#~ " - Atribui quaisquer argumentos restantes aos parâmetros posicionais.\n" +#~ " - Atribui quaisquer argumentos restantes aos parâmetros " +#~ "posicionais.\n" #~ " As opções -x e -v são desligadas.\n" #~ " \n" #~ " Usar +, ao invés de -, causa essas sinalizações serem desligadas. As\n" -#~ " sinalizações também podem ser usadas por meio de chamada do shell. As\n" -#~ " sinalizações atualmente definidas podem ser encontradas em $-. Os n ARGs\n" -#~ " restantes são parâmetros posicionais e são atribuídos, em ordem, a $1, $2,\n" +#~ " sinalizações também podem ser usadas por meio de chamada do shell. " +#~ "As\n" +#~ " sinalizações atualmente definidas podem ser encontradas em $-. Os n " +#~ "ARGs\n" +#~ " restantes são parâmetros posicionais e são atribuídos, em ordem, a " +#~ "$1, $2,\n" #~ " .. $n. Se nenhuma ARG for fornecido, todas as variáveis shell são\n" #~ " mostradas.\n" #~ " \n" @@ -6077,8 +6407,10 @@ msgstr "" #~ msgid "" #~ "Create a coprocess named NAME.\n" #~ " \n" -#~ " Execute COMMAND asynchronously, with the standard output and standard\n" -#~ " input of the command connected via a pipe to file descriptors assigned\n" +#~ " Execute COMMAND asynchronously, with the standard output and " +#~ "standard\n" +#~ " input of the command connected via a pipe to file descriptors " +#~ "assigned\n" #~ " to indices 0 and 1 of an array variable NAME in the executing shell.\n" #~ " The default NAME is \"COPROC\".\n" #~ " \n" @@ -6088,7 +6420,8 @@ msgstr "" #~ "Cria um coprocesso chamado NOME.\n" #~ " \n" #~ " Executa COMANDO assincronamente, com a saída padrão e entrada padrão\n" -#~ " do comando conectados via um `pipe' (redirecionamento) para descritores\n" +#~ " do comando conectados via um `pipe' (redirecionamento) para " +#~ "descritores\n" #~ " de arquivo atribuídos para índices 0 e 1 de uma variável array NOME\n" #~ " no shell em execução. O NOME padrão é \"COPROC\".\n" #~ " \n" @@ -6211,7 +6544,8 @@ msgstr "" #~ msgstr "substituição de comando" #~ msgid "Can't reopen pipe to command substitution (fd %d): %s" -#~ msgstr "Impossível reabrir o `pipe' para substituição de comando (fd %d): %s" +#~ msgstr "" +#~ "Impossível reabrir o `pipe' para substituição de comando (fd %d): %s" #~ msgid "$%c: unbound variable" #~ msgstr "$%c: variável não associada" @@ -6295,7 +6629,8 @@ msgstr "" #~ msgstr "de aliases na forma `alias NOME=VALOR' na saída padrão." #~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." -#~ msgstr "Ou então, um alias é definido para cada NOME cujo VALOR for fornecido." +#~ msgstr "" +#~ "Ou então, um alias é definido para cada NOME cujo VALOR for fornecido." #~ msgid "A trailing space in VALUE causes the next word to be checked for" #~ msgstr "Um espaço após VALOR faz a próxima palavra ser verificada para" @@ -6304,34 +6639,45 @@ msgstr "" #~ msgstr "substituição do alias quando o alias é expandido. Alias retorna" #~ msgid "true unless a NAME is given for which no alias has been defined." -#~ msgstr "verdadeiro, a não ser que seja fornecido um NOME sem alias definido." +#~ msgstr "" +#~ "verdadeiro, a não ser que seja fornecido um NOME sem alias definido." -#~ msgid "Remove NAMEs from the list of defined aliases. If the -a option is given," -#~ msgstr "Remove NOMEs da lista de aliases definidos. Se a opção -a for fornecida," +#~ msgid "" +#~ "Remove NAMEs from the list of defined aliases. If the -a option is given," +#~ msgstr "" +#~ "Remove NOMEs da lista de aliases definidos. Se a opção -a for fornecida," #~ msgid "then remove all alias definitions." #~ msgstr "então todas as definições de alias são removidas." #~ msgid "Bind a key sequence to a Readline function, or to a macro. The" -#~ msgstr "Víncula uma sequência de teclas a uma função de leitura de linha, ou a uma" +#~ msgstr "" +#~ "Víncula uma sequência de teclas a uma função de leitura de linha, ou a uma" #~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" -#~ msgstr "macro. A sintaxe é equivalente à encontrada em ~/.inputrc, mas deve ser" +#~ msgstr "" +#~ "macro. A sintaxe é equivalente à encontrada em ~/.inputrc, mas deve ser" -#~ msgid "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." -#~ msgstr "passada como um único argumento: bind '\"\\C-x\\C-r\": re-read-init-file'." +#~ msgid "" +#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." +#~ msgstr "" +#~ "passada como um único argumento: bind '\"\\C-x\\C-r\": re-read-init-file'." #~ msgid "Arguments we accept:" #~ msgstr "Argumentos permitidos:" -#~ msgid " -m keymap Use `keymap' as the keymap for the duration of this" -#~ msgstr " -m MAPA-TECLAS Usar `MAPA-TECLAS' como mapa das teclas pela duração" +#~ msgid "" +#~ " -m keymap Use `keymap' as the keymap for the duration of this" +#~ msgstr "" +#~ " -m MAPA-TECLAS Usar `MAPA-TECLAS' como mapa das teclas pela duração" #~ msgid " command. Acceptable keymap names are emacs," #~ msgstr " deste comando. Os nomes aceitos são emacs," -#~ msgid " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," -#~ msgstr " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +#~ msgid "" +#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +#~ msgstr "" +#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," #~ msgid " vi-command, and vi-insert." #~ msgstr " vi-command, and vi-insert." @@ -6342,8 +6688,10 @@ msgstr "" #~ msgid " -P List function names and bindings." #~ msgstr " -P Listar nomes e associações das funções." -#~ msgid " -p List functions and bindings in a form that can be" -#~ msgstr " -p Listar nomes e associações das funções de uma forma" +#~ msgid "" +#~ " -p List functions and bindings in a form that can be" +#~ msgstr "" +#~ " -p Listar nomes e associações das funções de uma forma" #~ msgid " reused as input." #~ msgstr " que pode ser reutilizada como entrada." @@ -6354,24 +6702,31 @@ msgstr "" #~ msgid " -f filename Read key bindings from FILENAME." #~ msgstr " -f ARQUIVO Ler os vínculos das teclas em ARQUIVO." -#~ msgid " -q function-name Query about which keys invoke the named function." +#~ msgid "" +#~ " -q function-name Query about which keys invoke the named function." #~ msgstr " -q NOME-FUNÇÃO Consultar quais teclas chamam esta função." #~ msgid " -V List variable names and values" #~ msgstr " -V Listar os nomes e os valores das variáveis." -#~ msgid " -v List variable names and values in a form that can" -#~ msgstr " -v Listar os nomes e os valores das variáveis de uma" +#~ msgid "" +#~ " -v List variable names and values in a form that can" +#~ msgstr "" +#~ " -v Listar os nomes e os valores das variáveis de uma" #~ msgid " be reused as input." #~ msgstr " forma que pode ser reutilizada como entrada." -#~ msgid " -S List key sequences that invoke macros and their values" +#~ msgid "" +#~ " -S List key sequences that invoke macros and their " +#~ "values" #~ msgstr "" #~ " -S Listar as sequências de teclas que chamam macros\n" #~ " e seus valores." -#~ msgid " -s List key sequences that invoke macros and their values in" +#~ msgid "" +#~ " -s List key sequences that invoke macros and their " +#~ "values in" #~ msgstr " -s Listar sequências de teclas que chamam macros" #~ msgid " a form that can be reused as input." @@ -6392,7 +6747,8 @@ msgstr "" #~ msgstr "Se N for especificado, prossegue no N-ésimo laço envolvente." #~ msgid "Run a shell builtin. This is useful when you wish to rename a" -#~ msgstr "Executa um comando interno do shell. Útil quando desejamos substituir" +#~ msgstr "" +#~ "Executa um comando interno do shell. Útil quando desejamos substituir" #~ msgid "shell builtin to be a function, but need the functionality of the" #~ msgstr "um comando interno do shell por uma função, mas necessitamos da" @@ -6407,10 +6763,12 @@ msgstr "" #~ msgstr "para DIR. A variável $CDPATH define o caminho de procura para" #~ msgid "the directory containing DIR. Alternative directory names in CDPATH" -#~ msgstr "o diretório que contém DIR. Nomes de diretórios alternativos em CDPATH" +#~ msgstr "" +#~ "o diretório que contém DIR. Nomes de diretórios alternativos em CDPATH" #~ msgid "are separated by a colon (:). A null directory name is the same as" -#~ msgstr "são separados por dois pontos (:). Um nome de diretório nulo é o mesmo" +#~ msgstr "" +#~ "são separados por dois pontos (:). Um nome de diretório nulo é o mesmo" #~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," #~ msgstr "que o diretório atual, i.e. `.'. Se DIR inicia com uma barra (/)," @@ -6419,15 +6777,20 @@ msgstr "" #~ msgstr "então $CDPATH não é usado. Se o diretório não for encontrado, e a" #~ msgid "shell option `cdable_vars' is set, then try the word as a variable" -#~ msgstr "opção `cdable_vars' estiver definida, tentar usar DIR como um nome de" +#~ msgstr "" +#~ "opção `cdable_vars' estiver definida, tentar usar DIR como um nome de" #~ msgid "name. If that variable has a value, then cd to the value of that" -#~ msgstr "variável. Se esta variável tiver valor, então `cd' para o valor desta" +#~ msgstr "" +#~ "variável. Se esta variável tiver valor, então `cd' para o valor desta" -#~ msgid "variable. The -P option says to use the physical directory structure" -#~ msgstr "variável. A opção -P indica para usar a estrutura física do diretório" +#~ msgid "" +#~ "variable. The -P option says to use the physical directory structure" +#~ msgstr "" +#~ "variável. A opção -P indica para usar a estrutura física do diretório" -#~ msgid "instead of following symbolic links; the -L option forces symbolic links" +#~ msgid "" +#~ "instead of following symbolic links; the -L option forces symbolic links" #~ msgstr "em vez de seguir os vínculos simbólicos; a opção -L força seguir os" #~ msgid "to be followed." @@ -6442,19 +6805,27 @@ msgstr "" #~ msgid "makes pwd follow symbolic links." #~ msgstr "com que `pwd' siga os vínculos simbólicos." -#~ msgid "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" -#~ msgstr "Executa COMANDO com ARGs ignorando as funções da shell. Ex: Havendo" +#~ msgid "" +#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +#~ msgstr "" +#~ "Executa COMANDO com ARGs ignorando as funções da shell. Ex: Havendo" #~ msgid "function called `ls', and you wish to call the command `ls', you can" -#~ msgstr "uma função `ls', e se for necessário executar o comando `ls', executa-se" +#~ msgstr "" +#~ "uma função `ls', e se for necessário executar o comando `ls', executa-se" -#~ msgid "say \"command ls\". If the -p option is given, a default value is used" -#~ msgstr "\"command ls\". Se a opção -p for fornecida, o valor padrão é utilizado" +#~ msgid "" +#~ "say \"command ls\". If the -p option is given, a default value is used" +#~ msgstr "" +#~ "\"command ls\". Se a opção -p for fornecida, o valor padrão é utilizado" -#~ msgid "for PATH that is guaranteed to find all of the standard utilities. If" -#~ msgstr "para PATH, garantindo-se o encontro de todos os utilitários padrão. Se" +#~ msgid "" +#~ "for PATH that is guaranteed to find all of the standard utilities. If" +#~ msgstr "" +#~ "para PATH, garantindo-se o encontro de todos os utilitários padrão. Se" -#~ msgid "the -V or -v option is given, a string is printed describing COMMAND." +#~ msgid "" +#~ "the -V or -v option is given, a string is printed describing COMMAND." #~ msgstr "a opção -V ou -v for fornecida, é exibida a descrição do COMANDO." #~ msgid "The -V option produces a more verbose description." @@ -6505,7 +6876,8 @@ msgstr "" #~ msgid "name only." #~ msgstr "somente." -#~ msgid "Using `+' instead of `-' turns off the given attribute instead. When" +#~ msgid "" +#~ "Using `+' instead of `-' turns off the given attribute instead. When" #~ msgstr "Usando `+' em vez de `-' faz o atributo ser desabilitado. Quando" #~ msgid "used in a function, makes NAMEs local, as with the `local' command." @@ -6524,7 +6896,8 @@ msgstr "" #~ msgstr "Exibe ARGs. Se -n for fornecido, o caracter final de nova linha é" #~ msgid "suppressed. If the -e option is given, interpretation of the" -#~ msgstr "suprimido. Se a opção -e for fornecida, a interpretação dos seguintes" +#~ msgstr "" +#~ "suprimido. Se a opção -e for fornecida, a interpretação dos seguintes" #~ msgid "following backslash-escaped characters is turned on:" #~ msgstr "caracteres após a contrabarra é ativada:" @@ -6562,56 +6935,74 @@ msgstr "" #~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." #~ msgstr "\t\\num\to caracter com código ASCII igual a NUM (octal)." -#~ msgid "You can explicitly turn off the interpretation of the above characters" -#~ msgstr "Pode-se explicitamente desabilitar a interpretação dos caracteres acima" +#~ msgid "" +#~ "You can explicitly turn off the interpretation of the above characters" +#~ msgstr "" +#~ "Pode-se explicitamente desabilitar a interpretação dos caracteres acima" #~ msgid "with the -E option." #~ msgstr "através da opção -E." -#~ msgid "Output the ARGs. If -n is specified, the trailing newline is suppressed." -#~ msgstr "Exibe ARGS. Se -n for fornecido, o caracter final de nova linha é suprimido." +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "Exibe ARGS. Se -n for fornecido, o caracter final de nova linha é " +#~ "suprimido." #~ msgid "Enable and disable builtin shell commands. This allows" -#~ msgstr "Habilita e desabilita os comandos internos do shell, permitindo usar" +#~ msgstr "" +#~ "Habilita e desabilita os comandos internos do shell, permitindo usar" #~ msgid "you to use a disk command which has the same name as a shell" -#~ msgstr "um comando de disco que tenha o mesmo nome do comando interno do shell." +#~ msgstr "" +#~ "um comando de disco que tenha o mesmo nome do comando interno do shell." #~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" -#~ msgstr "Se -n for especificado, os NOMEs são desabilitados, senão os nomes são" +#~ msgstr "" +#~ "Se -n for especificado, os NOMEs são desabilitados, senão os nomes são" #~ msgid "NAMEs are enabled. For example, to use the `test' found on your" -#~ msgstr "habilitados. Por exemplo, para usar `test' encontrado pelo PATH em vez" +#~ msgstr "" +#~ "habilitados. Por exemplo, para usar `test' encontrado pelo PATH em vez" #~ msgid "path instead of the shell builtin version, type `enable -n test'." -#~ msgstr "da versão interna do comando, digite `enable -n test'. Em sistemas que" +#~ msgstr "" +#~ "da versão interna do comando, digite `enable -n test'. Em sistemas que" #~ msgid "On systems supporting dynamic loading, the -f option may be used" -#~ msgstr "suportam carregamento dinâmico, pode-se usar a opção -f para carregar" +#~ msgstr "" +#~ "suportam carregamento dinâmico, pode-se usar a opção -f para carregar" #~ msgid "to load new builtins from the shared object FILENAME. The -d" -#~ msgstr "novos comandos internos do objeto compartilhado ARQUIVO. A opção -d" +#~ msgstr "" +#~ "novos comandos internos do objeto compartilhado ARQUIVO. A opção -d" #~ msgid "option will delete a builtin previously loaded with -f. If no" -#~ msgstr "elimina os comandos internos previamente carregados com -f. Se nenhum" +#~ msgstr "" +#~ "elimina os comandos internos previamente carregados com -f. Se nenhum" #~ msgid "non-option names are given, or the -p option is supplied, a list" -#~ msgstr "nome for fornecido, ou se a opção -p for fornecida, uma lista de comandos" +#~ msgstr "" +#~ "nome for fornecido, ou se a opção -p for fornecida, uma lista de comandos" #~ msgid "of builtins is printed. The -a option means to print every builtin" -#~ msgstr "internos é exibida. A opção -a faz com que todos os comandos internos" +#~ msgstr "" +#~ "internos é exibida. A opção -a faz com que todos os comandos internos" #~ msgid "with an indication of whether or not it is enabled. The -s option" #~ msgstr "sejam exibidos indicando se estão habilitados ou não. A opção -s" #~ msgid "restricts the output to the Posix.2 `special' builtins. The -n" -#~ msgstr "restringe a saída aos comandos internos `especiais' Posix.2. A opção" +#~ msgstr "" +#~ "restringe a saída aos comandos internos `especiais' Posix.2. A opção" #~ msgid "option displays a list of all disabled builtins." #~ msgstr "-n exibe a lista de todos os comandos internos desabilitados." -#~ msgid "Read ARGs as input to the shell and execute the resulting command(s)." -#~ msgstr "Ler ARGs como entrada do shell e executar o(s) comando(s) resultante(s)." +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "Ler ARGs como entrada do shell e executar o(s) comando(s) resultante(s)." #~ msgid "Getopts is used by shell procedures to parse positional parameters." #~ msgstr "" @@ -6640,13 +7031,15 @@ msgstr "" #~ msgstr "shell OPTIND. OPTIND é inicializado com 1 cada vez que o script" #~ msgid "a shell script is invoked. When an option requires an argument," -#~ msgstr "do shell é chamado. Quando uma opção requer um argumento, `getopts'" +#~ msgstr "" +#~ "do shell é chamado. Quando uma opção requer um argumento, `getopts'" #~ msgid "getopts places that argument into the shell variable OPTARG." #~ msgstr "coloca este argumento dentro da variável do shell OPTARG." #~ msgid "getopts reports errors in one of two ways. If the first character" -#~ msgstr "`getopts' informa os erros de duas maneiras. Se o primeiro caracter de" +#~ msgstr "" +#~ "`getopts' informa os erros de duas maneiras. Se o primeiro caracter de" #~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" #~ msgstr "OPÇÕES for dois pontos, `getopts' usa o modo silencioso. Neste" @@ -6658,19 +7051,24 @@ msgstr "" #~ msgstr "encontrada, `getopts' coloca o caracter da opção em OPTARG. Se um" #~ msgid "required argument is not found, getopts places a ':' into NAME and" -#~ msgstr "argumento requerido não for encontrado, `getopts' coloca ':' em NOME e" +#~ msgstr "" +#~ "argumento requerido não for encontrado, `getopts' coloca ':' em NOME e" #~ msgid "sets OPTARG to the option character found. If getopts is not in" -#~ msgstr "atribui a OPTARG o caracter de opção encontrado. Se `getopts' não está em" +#~ msgstr "" +#~ "atribui a OPTARG o caracter de opção encontrado. Se `getopts' não está em" #~ msgid "silent mode, and an illegal option is seen, getopts places '?' into" -#~ msgstr "modo silencioso, e uma opção ilegal é encontrada, `getopts' coloca '?' em" +#~ msgstr "" +#~ "modo silencioso, e uma opção ilegal é encontrada, `getopts' coloca '?' em" #~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'" -#~ msgstr "NOME e desativa OPTARG. Se uma opção requerida não é encontrada, uma '?'" +#~ msgstr "" +#~ "NOME e desativa OPTARG. Se uma opção requerida não é encontrada, uma '?'" #~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" -#~ msgstr "é colocada em NOME, OPTARG é desativado, e uma mensagem de diagnóstico é" +#~ msgstr "" +#~ "é colocada em NOME, OPTARG é desativado, e uma mensagem de diagnóstico é" #~ msgid "printed." #~ msgstr "exibida." @@ -6685,16 +7083,19 @@ msgstr "" #~ msgstr "OPTSTRING não seja dois pontos. OPTERR tem o valor 1 por padrão." #~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if" -#~ msgstr "`getopts' normalmente faz a leitura dos parãmetros posicionais ($0 - $9)," +#~ msgstr "" +#~ "`getopts' normalmente faz a leitura dos parãmetros posicionais ($0 - $9)," #~ msgid "more arguments are given, they are parsed instead." #~ msgstr "mas, se mais argumentos forem fornecidos, então estes são lidos." #~ msgid "Exec FILE, replacing this shell with the specified program." -#~ msgstr "Executa ARQUIVO, substituindo esta shell pelo programa especificado." +#~ msgstr "" +#~ "Executa ARQUIVO, substituindo esta shell pelo programa especificado." #~ msgid "If FILE is not specified, the redirections take effect in this" -#~ msgstr "Se ARQUIVO não for especificado, os redirecionamentos são efetivados" +#~ msgstr "" +#~ "Se ARQUIVO não for especificado, os redirecionamentos são efetivados" #~ msgid "shell. If the first argument is `-l', then place a dash in the" #~ msgstr "neste shell. Se o primeiro argumento for `-l', coloca um hífen no" @@ -6712,7 +7113,8 @@ msgstr "" #~ msgstr "Se o arquivo não puder ser executado e o shell não for interativa," #~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" -#~ msgstr "então o shell termina, a menos que a variável \"no_exit_on_failed_exec\"" +#~ msgstr "" +#~ "então o shell termina, a menos que a variável \"no_exit_on_failed_exec\"" #~ msgid "is set." #~ msgstr "esteja inicializada." @@ -6720,7 +7122,8 @@ msgstr "" #~ msgid "is that of the last command executed." #~ msgstr "de saída é igual ao do último comando executado." -#~ msgid "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +#~ msgid "" +#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" #~ msgstr "PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo, ou" #~ msgid "string, which means the most recent command beginning with that" @@ -6729,11 +7132,16 @@ msgstr "" #~ msgid "string." #~ msgstr "mais recente começado por estes caracteres." -#~ msgid " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," -#~ msgstr " -e EDITOR seleciona qual editor usar. O padrão é FCEDIT, depois EDITOR," +#~ msgid "" +#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +#~ msgstr "" +#~ " -e EDITOR seleciona qual editor usar. O padrão é FCEDIT, depois " +#~ "EDITOR," -#~ msgid " then the editor which corresponds to the current readline editing" -#~ msgstr " depois o editor correspondente ao modo de edição atual da leitura" +#~ msgid "" +#~ " then the editor which corresponds to the current readline editing" +#~ msgstr "" +#~ " depois o editor correspondente ao modo de edição atual da leitura" #~ msgid " mode, then vi." #~ msgstr " de linha, e depois o vi." @@ -6744,32 +7152,40 @@ msgstr "" #~ msgid " -n means no line numbers listed." #~ msgstr " -n indica para não listar os números das linhas." -#~ msgid " -r means reverse the order of the lines (making it newest listed first)." -#~ msgstr " -r faz reverter a ordem das linhas (a última torna-se a primeira)." +#~ msgid "" +#~ " -r means reverse the order of the lines (making it newest listed " +#~ "first)." +#~ msgstr "" +#~ " -r faz reverter a ordem das linhas (a última torna-se a primeira)." #~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" -#~ msgstr "No formato `fc -s [ANTIGO=NOVO ...] [COMANDO]', o comando é executado" +#~ msgstr "" +#~ "No formato `fc -s [ANTIGO=NOVO ...] [COMANDO]', o comando é executado" #~ msgid "re-executed after the substitution OLD=NEW is performed." #~ msgstr "novamente após a substituição de ANTIGO por NOVO ser realizada." #~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" -#~ msgstr "Um alias útil a ser usado é r='fc -s' para que, ao se digitar `r cc'," +#~ msgstr "" +#~ "Um alias útil a ser usado é r='fc -s' para que, ao se digitar `r cc'," #~ msgid "runs the last command beginning with `cc' and typing `r' re-executes" #~ msgstr "seja executado o último comando começado por `cc' e, ao se digitar" #~ msgid "Place JOB_SPEC in the foreground, and make it the current job. If" -#~ msgstr "Colocar JOB-ESPECIFICADO no primeiro plano, e torná-lo o trabalho atual." +#~ msgstr "" +#~ "Colocar JOB-ESPECIFICADO no primeiro plano, e torná-lo o trabalho atual." #~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" -#~ msgstr "Se JOB-ESPECIFICADO não estiver presente, a noção do shell do trabalho" +#~ msgstr "" +#~ "Se JOB-ESPECIFICADO não estiver presente, a noção do shell do trabalho" #~ msgid "used." #~ msgstr "atual é utilizada." #~ msgid "Place JOB_SPEC in the background, as if it had been started with" -#~ msgstr "Colocar JOB-ESPECIFICADO no segundo plano, como se tivesse sido ativado" +#~ msgstr "" +#~ "Colocar JOB-ESPECIFICADO no segundo plano, como se tivesse sido ativado" #~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" #~ msgstr "com `&'. Se JOB-ESPECIFICADO não estiver presente, a noção do shell" @@ -6778,18 +7194,22 @@ msgstr "" #~ msgstr "do trabalho atual é utilizada." #~ msgid "For each NAME, the full pathname of the command is determined and" -#~ msgstr "Para cada NOME, o caminho completo do comando é determinado e lembrado." +#~ msgstr "" +#~ "Para cada NOME, o caminho completo do comando é determinado e lembrado." #~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the" -#~ msgstr "Se a opção -p for fornecida, CAMINHO é utilizado como o caminho completo" +#~ msgstr "" +#~ "Se a opção -p for fornecida, CAMINHO é utilizado como o caminho completo" #~ msgid "full pathname of NAME, and no path search is performed. The -r" #~ msgstr "para NOME, e nenhuma procura de caminho é realizada. A opção -r" #~ msgid "option causes the shell to forget all remembered locations. If no" -#~ msgstr "faz com que a shell esqueça todas as localizações lembradas. Sem nenhum" +#~ msgstr "" +#~ "faz com que a shell esqueça todas as localizações lembradas. Sem nenhum" -#~ msgid "arguments are given, information about remembered commands is displayed." +#~ msgid "" +#~ "arguments are given, information about remembered commands is displayed." #~ msgstr "argumento, as informações sobre os comandos lembrados são exibidas." #~ msgid "Display helpful information about builtin commands. If PATTERN is" @@ -6799,10 +7219,12 @@ msgstr "" #~ msgstr "especificado, fornece ajuda detalhada para todos os comandos que" #~ msgid "otherwise a list of the builtins is printed." -#~ msgstr "correspondem ao PADRÃO, senão a lista dos comandos internos é exibida." +#~ msgstr "" +#~ "correspondem ao PADRÃO, senão a lista dos comandos internos é exibida." #~ msgid "Display the history list with line numbers. Lines listed with" -#~ msgstr "Exibe a lista histórica com os números das linhas. Linhas contendo um" +#~ msgstr "" +#~ "Exibe a lista histórica com os números das linhas. Linhas contendo um" #~ msgid "with a `*' have been modified. Argument of N says to list only" #~ msgstr "`*' foram modificadas. O argumento N faz listar somente as últimas" @@ -6810,14 +7232,19 @@ msgstr "" #~ msgid "the last N lines. The -c option causes the history list to be" #~ msgstr "N linhas. A opção -c faz com que a lista histórica seja apagada" -#~ msgid "cleared by deleting all of the entries. The `-w' option writes out the" -#~ msgstr "removendo todas as entradas. A opção `-w' escreve o histórico atual no" +#~ msgid "" +#~ "cleared by deleting all of the entries. The `-w' option writes out the" +#~ msgstr "" +#~ "removendo todas as entradas. A opção `-w' escreve o histórico atual no" -#~ msgid "current history to the history file; `-r' means to read the file and" -#~ msgstr "arquivo de histórico; A opção `-r' significa ler o arquivo e apensar seu" +#~ msgid "" +#~ "current history to the history file; `-r' means to read the file and" +#~ msgstr "" +#~ "arquivo de histórico; A opção `-r' significa ler o arquivo e apensar seu" #~ msgid "append the contents to the history list instead. `-a' means" -#~ msgstr "conteúdo à lista histórica. A opção `-a' significa apensar as linhas de" +#~ msgstr "" +#~ "conteúdo à lista histórica. A opção `-a' significa apensar as linhas de" #~ msgid "to append history lines from this session to the history file." #~ msgstr "histórico desta sessão ao arquivo de histórico." @@ -6826,82 +7253,113 @@ msgstr "" #~ msgstr "A opção `-n' faz ler todas as linhas de histórico ainda não lidas" #~ msgid "from the history file and append them to the history list. If" -#~ msgstr "do arquivo histórico, e apensá-las à lista de histórico. Se ARQUIVO" +#~ msgstr "" +#~ "do arquivo histórico, e apensá-las à lista de histórico. Se ARQUIVO" #~ msgid "FILENAME is given, then that is used as the history file else" #~ msgstr "for fornecido, então este é usado como arquivo de histórico, senão" #~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." -#~ msgstr "se $HISTFILE possui valor, este é usado, senão ~/.bash_history. Se a" +#~ msgstr "" +#~ "se $HISTFILE possui valor, este é usado, senão ~/.bash_history. Se a" #~ msgid "If the -s option is supplied, the non-option ARGs are appended to" -#~ msgstr "opção -s for fornecida, os ARGs, que não forem opções, são apensados à" +#~ msgstr "" +#~ "opção -s for fornecida, os ARGs, que não forem opções, são apensados à" #~ msgid "the history list as a single entry. The -p option means to perform" -#~ msgstr "lista histórica como uma única entrada. A opção -p significa realizar a" +#~ msgstr "" +#~ "lista histórica como uma única entrada. A opção -p significa realizar a" -#~ msgid "history expansion on each ARG and display the result, without storing" -#~ msgstr "expansão da história em cada ARG e exibir o resultado, sem armazenar" +#~ msgid "" +#~ "history expansion on each ARG and display the result, without storing" +#~ msgstr "" +#~ "expansão da história em cada ARG e exibir o resultado, sem armazenar" #~ msgid "anything in the history list." #~ msgstr "nada na lista de histórico." #~ msgid "Lists the active jobs. The -l option lists process id's in addition" -#~ msgstr "Lista os trabalhos ativos. A opção -l lista os ID's dos processos além" +#~ msgstr "" +#~ "Lista os trabalhos ativos. A opção -l lista os ID's dos processos além" #~ msgid "to the normal information; the -p option lists process id's only." -#~ msgstr "das informações usuais; a opção -p lista somente os ID's dos processos." +#~ msgstr "" +#~ "das informações usuais; a opção -p lista somente os ID's dos processos." -#~ msgid "If -n is given, only processes that have changed status since the last" -#~ msgstr "Se -n for fornecido, somente os processos que mudaram de status desde a" +#~ msgid "" +#~ "If -n is given, only processes that have changed status since the last" +#~ msgstr "" +#~ "Se -n for fornecido, somente os processos que mudaram de status desde a" -#~ msgid "notification are printed. JOBSPEC restricts output to that job. The" -#~ msgstr "última notificação são exibidos. JOB-ESPECIFICADO restringe a saída a este" +#~ msgid "" +#~ "notification are printed. JOBSPEC restricts output to that job. The" +#~ msgstr "" +#~ "última notificação são exibidos. JOB-ESPECIFICADO restringe a saída a " +#~ "este" #~ msgid "-r and -s options restrict output to running and stopped jobs only," -#~ msgstr "trabalho. As opções -r e -s restringem a saída apenas aos trabalhos" +#~ msgstr "" +#~ "trabalho. As opções -r e -s restringem a saída apenas aos trabalhos" #~ msgid "respectively. Without options, the status of all active jobs is" -#~ msgstr "executando e parados, respectivamente. Sem opções, o status de todos os" +#~ msgstr "" +#~ "executando e parados, respectivamente. Sem opções, o status de todos os" -#~ msgid "printed. If -x is given, COMMAND is run after all job specifications" -#~ msgstr "trabalhos ativos são exibidos. Se -x for fornecido, COMANDO é executado" +#~ msgid "" +#~ "printed. If -x is given, COMMAND is run after all job specifications" +#~ msgstr "" +#~ "trabalhos ativos são exibidos. Se -x for fornecido, COMANDO é executado" -#~ msgid "that appear in ARGS have been replaced with the process ID of that job's" -#~ msgstr "após todas as especificações de trabalho que aparecem em ARGS terem sido" +#~ msgid "" +#~ "that appear in ARGS have been replaced with the process ID of that job's" +#~ msgstr "" +#~ "após todas as especificações de trabalho que aparecem em ARGS terem sido" #~ msgid "process group leader." #~ msgstr "substituídas pelo ID do processo líder deste grupo de processos." #~ msgid "Removes each JOBSPEC argument from the table of active jobs." -#~ msgstr "Remove cada argumento JOB-ESPECIFICADO da tabela de trabalhos ativos." +#~ msgstr "" +#~ "Remove cada argumento JOB-ESPECIFICADO da tabela de trabalhos ativos." #~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" -#~ msgstr "Envia ao processo identificado pelo PID (ou JOB) o sinal SIGSPEC. Se" +#~ msgstr "" +#~ "Envia ao processo identificado pelo PID (ou JOB) o sinal SIGSPEC. Se" -#~ msgid "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" -#~ msgstr "SIGSPEC não estiver presente, então SIGTERM é assumido. A opção `-l'" +#~ msgid "" +#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +#~ msgstr "" +#~ "SIGSPEC não estiver presente, então SIGTERM é assumido. A opção `-l'" #~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" -#~ msgstr "lista os nomes dos sinais; havendo argumentos após `-l', são assumidos" +#~ msgstr "" +#~ "lista os nomes dos sinais; havendo argumentos após `-l', são assumidos" #~ msgid "be signal numbers for which names should be listed. Kill is a shell" -#~ msgstr "como sendo os números dos sinais cujos nomes devem ser exibidos. Kill" +#~ msgstr "" +#~ "como sendo os números dos sinais cujos nomes devem ser exibidos. Kill" #~ msgid "builtin for two reasons: it allows job IDs to be used instead of" -#~ msgstr "é um comando interno por duas razões: permite o uso do ID do trabalho em" +#~ msgstr "" +#~ "é um comando interno por duas razões: permite o uso do ID do trabalho em" #~ msgid "process IDs, and, if you have reached the limit on processes that" -#~ msgstr "vez do ID do processo e, caso tenha sido atingido o limite de processos que" +#~ msgstr "" +#~ "vez do ID do processo e, caso tenha sido atingido o limite de processos " +#~ "que" -#~ msgid "you can create, you don't have to start a process to kill another one." -#~ msgstr "podem ser criados, não é necessário um novo processo para remover outro." +#~ msgid "" +#~ "you can create, you don't have to start a process to kill another one." +#~ msgstr "" +#~ "podem ser criados, não é necessário um novo processo para remover outro." #~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" #~ msgstr "Cada ARG é uma expressão aritmética a ser avaliada. A avaliação é" #~ msgid "is done in long integers with no check for overflow, though division" -#~ msgstr "feita usando inteiros longos sem verificar estouro, embora a divisão" +#~ msgstr "" +#~ "feita usando inteiros longos sem verificar estouro, embora a divisão" #~ msgid "by 0 is trapped and flagged as an error. The following list of" #~ msgstr "por 0 seja capturada e indicada como erro. A lista abaixo está" @@ -6973,7 +7431,8 @@ msgstr "" #~ msgstr "ativo para ser usada em uma expressão." #~ msgid "Operators are evaluated in order of precedence. Sub-expressions in" -#~ msgstr "Os operadores são avaliados em ordem de precedência. Sub-expressões" +#~ msgstr "" +#~ "Os operadores são avaliados em ordem de precedência. Sub-expressões" #~ msgid "parentheses are evaluated first and may override the precedence" #~ msgstr "entre parênteses são avaliadas primeiro e podem prevalecer sobre as" @@ -6990,53 +7449,76 @@ msgstr "" #~ msgid "One line is read from the standard input, and the first word is" #~ msgstr "Uma linha é lida a partir da entrada padrão, e a primeira palavra é" -#~ msgid "assigned to the first NAME, the second word to the second NAME, and so" -#~ msgstr "atribuída ao primeiro NOME, a segunda ao segundo NOME, e assim por diante," +#~ msgid "" +#~ "assigned to the first NAME, the second word to the second NAME, and so" +#~ msgstr "" +#~ "atribuída ao primeiro NOME, a segunda ao segundo NOME, e assim por diante," -#~ msgid "on, with leftover words assigned to the last NAME. Only the characters" -#~ msgstr "com as palavras restantes atribuídas ao último NOME. Somente os caracteres" +#~ msgid "" +#~ "on, with leftover words assigned to the last NAME. Only the characters" +#~ msgstr "" +#~ "com as palavras restantes atribuídas ao último NOME. Somente os " +#~ "caracteres" #~ msgid "found in $IFS are recognized as word delimiters. The return code is" -#~ msgstr "encontrados em $IFS são reconhecidos como delimitadores. O código de retorno" +#~ msgstr "" +#~ "encontrados em $IFS são reconhecidos como delimitadores. O código de " +#~ "retorno" -#~ msgid "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" -#~ msgstr "é zero, a menos que EOF seja encontrado. Se nenhum NOME for fornecido," +#~ msgid "" +#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" +#~ msgstr "" +#~ "é zero, a menos que EOF seja encontrado. Se nenhum NOME for fornecido," -#~ msgid "line read is stored in the REPLY variable. If the -r option is given," -#~ msgstr "a linha lida é armazenada na variável REPLY. Se a opção -r for fornecida," +#~ msgid "" +#~ "line read is stored in the REPLY variable. If the -r option is given," +#~ msgstr "" +#~ "a linha lida é armazenada na variável REPLY. Se a opção -r for fornecida," #~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" -#~ msgstr "significa entrada `textual', desabilitando a interpretação da contrabarra." +#~ msgstr "" +#~ "significa entrada `textual', desabilitando a interpretação da contrabarra." #~ msgid "the `-p' option is supplied, the string supplied as an argument is" -#~ msgstr "Se a opção `-p' for fornecida a MENSAGEM fornecida como argumento é exibida," +#~ msgstr "" +#~ "Se a opção `-p' for fornecida a MENSAGEM fornecida como argumento é " +#~ "exibida," -#~ msgid "output without a trailing newline before attempting to read. If -a is" -#~ msgstr "sem o caracter de nova linha, antes de efetuar a leitura. Se a opção -a" +#~ msgid "" +#~ "output without a trailing newline before attempting to read. If -a is" +#~ msgstr "" +#~ "sem o caracter de nova linha, antes de efetuar a leitura. Se a opção -a" -#~ msgid "supplied, the words read are assigned to sequential indices of ARRAY," -#~ msgstr "for fornecida, as palavras lidas são atribuídas aos índices sequenciais" +#~ msgid "" +#~ "supplied, the words read are assigned to sequential indices of ARRAY," +#~ msgstr "" +#~ "for fornecida, as palavras lidas são atribuídas aos índices sequenciais" #~ msgid "starting at zero. If -e is supplied and the shell is interactive," -#~ msgstr "do ARRAY, começando por zero. Se a opção -e for fornecida, e a shell for" +#~ msgstr "" +#~ "do ARRAY, começando por zero. Se a opção -e for fornecida, e a shell for" #~ msgid "readline is used to obtain the line." #~ msgstr "interativa, `readline' é utilizado para ler a linha." -#~ msgid "Causes a function to exit with the return value specified by N. If N" +#~ msgid "" +#~ "Causes a function to exit with the return value specified by N. If N" #~ msgstr "Faz a função terminar com o valor de retorno especificado por N." #~ msgid "is omitted, the return status is that of the last command." #~ msgstr "Se N for omitido, retorna o status do último comando executado." #~ msgid " -a Mark variables which are modified or created for export." -#~ msgstr " -a Marcar para exportação as variáveis que são criadas ou modificadas." +#~ msgstr "" +#~ " -a Marcar para exportação as variáveis que são criadas ou " +#~ "modificadas." #~ msgid " -b Notify of job termination immediately." #~ msgstr " -b Notificar imediatamente o término do trabalho." #~ msgid " -e Exit immediately if a command exits with a non-zero status." -#~ msgstr " -e Terminar imediatamente se um comando terminar com status != 0." +#~ msgstr "" +#~ " -e Terminar imediatamente se um comando terminar com status != 0." #~ msgid " -f Disable file name generation (globbing)." #~ msgstr " -f Desabilitar a geração de nome de arquivo (metacaracteres)." @@ -7044,14 +7526,16 @@ msgstr "" #~ msgid " -h Remember the location of commands as they are looked up." #~ msgstr " -h Lembrar da localização dos comandos ao procurá-los." -#~ msgid " -i Force the shell to be an \"interactive\" one. Interactive shells" +#~ msgid "" +#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" #~ msgstr " -i Forçar a shell ser do tipo \"interativa\". `Shells'" #~ msgid " always read `~/.bashrc' on startup." #~ msgstr " interativas sempre lêem `~/.bashrc' ao iniciar." #~ msgid " -k All assignment arguments are placed in the environment for a" -#~ msgstr " -k Todos os argumentos de atribuição são colocados no ambiente," +#~ msgstr "" +#~ " -k Todos os argumentos de atribuição são colocados no ambiente," #~ msgid " command, not just those that precede the command name." #~ msgstr " e não somente os que precedem o nome do comando." @@ -7075,7 +7559,8 @@ msgstr "" #~ msgstr " braceexpand o mesmo que -B" #~ msgid " emacs use an emacs-style line editing interface" -#~ msgstr " emacs usar interface de edição de linha estilo emacs" +#~ msgstr "" +#~ " emacs usar interface de edição de linha estilo emacs" #~ msgid " errexit same as -e" #~ msgstr " errexit o mesmo que -e" @@ -7092,8 +7577,10 @@ msgstr "" #~ msgid " interactive-comments" #~ msgstr " interactive-comments" -#~ msgid " allow comments to appear in interactive commands" -#~ msgstr " permite comentários em comandos interativos" +#~ msgid "" +#~ " allow comments to appear in interactive commands" +#~ msgstr "" +#~ " permite comentários em comandos interativos" #~ msgid " keyword same as -k" #~ msgstr " keyword o mesmo que -k" @@ -7122,11 +7609,15 @@ msgstr "" #~ msgid " physical same as -P" #~ msgstr " physical o mesmo que -P" -#~ msgid " posix change the behavior of bash where the default" -#~ msgstr " posix mudar o comportamento do `bash' onde o padrão" +#~ msgid "" +#~ " posix change the behavior of bash where the default" +#~ msgstr "" +#~ " posix mudar o comportamento do `bash' onde o padrão" -#~ msgid " operation differs from the 1003.2 standard to" -#~ msgstr " for diferente do padrão 1003.2, para tornar" +#~ msgid "" +#~ " operation differs from the 1003.2 standard to" +#~ msgstr "" +#~ " for diferente do padrão 1003.2, para tornar" #~ msgid " match the standard" #~ msgstr " igual ao padrão" @@ -7138,19 +7629,26 @@ msgstr "" #~ msgstr " verbose o mesmo que -v" #~ msgid " vi use a vi-style line editing interface" -#~ msgstr " vi usar interface de edição de linha estilo vi" +#~ msgstr "" +#~ " vi usar interface de edição de linha estilo vi" #~ msgid " xtrace same as -x" #~ msgstr " xtrace o mesmo que -x" -#~ msgid " -p Turned on whenever the real and effective user ids do not match." -#~ msgstr " -p Habilitado sempre que o usuário real e efetivo forem diferentes." +#~ msgid "" +#~ " -p Turned on whenever the real and effective user ids do not match." +#~ msgstr "" +#~ " -p Habilitado sempre que o usuário real e efetivo forem diferentes." #~ msgid " Disables processing of the $ENV file and importing of shell" -#~ msgstr " Desabilita o processamento do arquivo $ENV e importação das funções" +#~ msgstr "" +#~ " Desabilita o processamento do arquivo $ENV e importação das " +#~ "funções" -#~ msgid " functions. Turning this option off causes the effective uid and" -#~ msgstr " da shell. Desabilitando esta opção faz com que o `uid' e `gid'" +#~ msgid "" +#~ " functions. Turning this option off causes the effective uid and" +#~ msgstr "" +#~ " da shell. Desabilitando esta opção faz com que o `uid' e `gid'" #~ msgid " gid to be set to the real uid and gid." #~ msgstr " efetivos sejam feitos o mesmo que o `uid' e `gid' reais." @@ -7159,7 +7657,8 @@ msgstr "" #~ msgstr " -t Sair após ler e executar um comando." #~ msgid " -u Treat unset variables as an error when substituting." -#~ msgstr " -u Tratar como erro as variáveis não inicializadas na substituição." +#~ msgstr "" +#~ " -u Tratar como erro as variáveis não inicializadas na substituição." #~ msgid " -v Print shell input lines as they are read." #~ msgstr " -v Exibir as linhas de entrada da shell ao lê-las." @@ -7192,10 +7691,13 @@ msgstr "" #~ msgstr "Usando + em vez de - faz com que as opções sejam desabilitadas. As" #~ msgid "flags can also be used upon invocation of the shell. The current" -#~ msgstr "opções também podem ser usadas na chamada da shell. O conjunto atual" +#~ msgstr "" +#~ "opções também podem ser usadas na chamada da shell. O conjunto atual" -#~ msgid "set of flags may be found in $-. The remaining n ARGs are positional" -#~ msgstr "de opções pode ser encontrado em $-. Os n ARGs restantes são parâmetros" +#~ msgid "" +#~ "set of flags may be found in $-. The remaining n ARGs are positional" +#~ msgstr "" +#~ "de opções pode ser encontrado em $-. Os n ARGs restantes são parâmetros" #~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" #~ msgstr "posicionais e são atribuídos, em ordem, a $1, $2, .. $n. Se nenhum" @@ -7204,10 +7706,12 @@ msgstr "" #~ msgstr "ARG for fornecido, todas as variáveis da shell são exibidas." #~ msgid "For each NAME, remove the corresponding variable or function. Given" -#~ msgstr "Para cada NOME, remove a variável ou a função correspondente. Usando-se a" +#~ msgstr "" +#~ "Para cada NOME, remove a variável ou a função correspondente. Usando-se a" #~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," -#~ msgstr "opção `-v', `unset' atua somente nas variáveis. Usando-se a opção `-f'" +#~ msgstr "" +#~ "opção `-v', `unset' atua somente nas variáveis. Usando-se a opção `-f'" #~ msgid "unset will only act on functions. With neither flag, unset first" #~ msgstr "`unset' atua somente nas funções. Sem nenhuma opção, inicialmente" @@ -7215,26 +7719,32 @@ msgstr "" #~ msgid "tries to unset a variable, and if that fails, then tries to unset a" #~ msgstr "`unset' tenta remover uma variável e, se falhar, tenta remover uma" -#~ msgid "function. Some variables (such as PATH and IFS) cannot be unset; also" -#~ msgstr "função. Algumas variáveis (como PATH e IFS) não podem ser removidas." +#~ msgid "" +#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" +#~ msgstr "" +#~ "função. Algumas variáveis (como PATH e IFS) não podem ser removidas." #~ msgid "see readonly." #~ msgstr "Veja também o comando `readonly'." #~ msgid "NAMEs are marked for automatic export to the environment of" -#~ msgstr "NOMEs são marcados para serem automaticamente exportados para o ambiente" +#~ msgstr "" +#~ "NOMEs são marcados para serem automaticamente exportados para o ambiente" #~ msgid "subsequently executed commands. If the -f option is given," #~ msgstr "dos comando executados a seguir. Se a opção -f for fornecida," #~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" -#~ msgstr "os NOMEs se referem a funções. Se nenhum nome for fornecido, ou se `-p'" +#~ msgstr "" +#~ "os NOMEs se referem a funções. Se nenhum nome for fornecido, ou se `-p'" #~ msgid "is given, a list of all names that are exported in this shell is" -#~ msgstr "for usado, uma lista com todos os nomes que são exportados nesta shell é" +#~ msgstr "" +#~ "for usado, uma lista com todos os nomes que são exportados nesta shell é" #~ msgid "printed. An argument of `-n' says to remove the export property" -#~ msgstr "exibida. O argumento `-n' faz remover a propriedade de exportação dos" +#~ msgstr "" +#~ "exibida. O argumento `-n' faz remover a propriedade de exportação dos" #~ msgid "from subsequent NAMEs. An argument of `--' disables further option" #~ msgstr "NOMEs subsequentes. O argumento `--' desabilita o processamento de" @@ -7242,29 +7752,40 @@ msgstr "" #~ msgid "processing." #~ msgstr "opções posteriores." -#~ msgid "The given NAMEs are marked readonly and the values of these NAMEs may" -#~ msgstr "Os NOMEs são marcados como somente para leitura, e os valores destes" +#~ msgid "" +#~ "The given NAMEs are marked readonly and the values of these NAMEs may" +#~ msgstr "" +#~ "Os NOMEs são marcados como somente para leitura, e os valores destes" #~ msgid "not be changed by subsequent assignment. If the -f option is given," -#~ msgstr "NOMEs não poderão ser alterados por novas atribuições. Se a opção -f for" +#~ msgstr "" +#~ "NOMEs não poderão ser alterados por novas atribuições. Se a opção -f for" #~ msgid "then functions corresponding to the NAMEs are so marked. If no" -#~ msgstr "fornecida, as funções correspondentes a NOMEs também são marcadas. Sem" +#~ msgstr "" +#~ "fornecida, as funções correspondentes a NOMEs também são marcadas. Sem" -#~ msgid "arguments are given, or if `-p' is given, a list of all readonly names" -#~ msgstr "nenhum argumento, ou se `-p' for usado, uma lista com todos os nomes" +#~ msgid "" +#~ "arguments are given, or if `-p' is given, a list of all readonly names" +#~ msgstr "" +#~ "nenhum argumento, ou se `-p' for usado, uma lista com todos os nomes" -#~ msgid "is printed. An argument of `-n' says to remove the readonly property" -#~ msgstr "somente para leitura é exibida. O argumento `-n' remove a propriedade" +#~ msgid "" +#~ "is printed. An argument of `-n' says to remove the readonly property" +#~ msgstr "" +#~ "somente para leitura é exibida. O argumento `-n' remove a propriedade" #~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" #~ msgstr "somente para leitura. A opção `-a' faz tratar cada NOME como uma" #~ msgid "an array variable. An argument of `--' disables further option" -#~ msgstr "variável tipo array. Um argumento `--' desabilita o processamento de" +#~ msgstr "" +#~ "variável tipo array. Um argumento `--' desabilita o processamento de" -#~ msgid "The positional parameters from $N+1 ... are renamed to $1 ... If N is" -#~ msgstr "Os parâmetros posicionais a partir de $N+1 ... são deslocados para $1 ..." +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is" +#~ msgstr "" +#~ "Os parâmetros posicionais a partir de $N+1 ... são deslocados para $1 ..." #~ msgid "not given, it is assumed to be 1." #~ msgstr "Se N não for especificado, o valor 1 é assumido ($2 vira $1 ...)." @@ -7276,25 +7797,31 @@ msgstr "" #~ msgstr "$PATH são usados para encontrar o diretório contendo o ARQUIVO." #~ msgid "Suspend the execution of this shell until it receives a SIGCONT" -#~ msgstr "Suspender a execução desta shell até que o sinal SIGCONT seja recebido." +#~ msgstr "" +#~ "Suspender a execução desta shell até que o sinal SIGCONT seja recebido." #~ msgid "signal. The `-f' if specified says not to complain about this" #~ msgstr "Se a opção `-f' for especificada indica para não reclamar sobre ser" #~ msgid "being a login shell if it is; just suspend anyway." -#~ msgstr "uma `shell de login', caso seja; simplesmente suspender de qualquer forma." +#~ msgstr "" +#~ "uma `shell de login', caso seja; simplesmente suspender de qualquer forma." #~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on" -#~ msgstr "Termina com status 0 (verdadeiro) ou 1 (falso) conforme EXPR for avaliada." +#~ msgstr "" +#~ "Termina com status 0 (verdadeiro) ou 1 (falso) conforme EXPR for avaliada." #~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" -#~ msgstr "As expressões podem ser unárias ou binárias. As expressões unárias são" +#~ msgstr "" +#~ "As expressões podem ser unárias ou binárias. As expressões unárias são" #~ msgid "expressions are often used to examine the status of a file. There" -#~ msgstr "muito usadas para examinar o status de um arquivo. Existem, também," +#~ msgstr "" +#~ "muito usadas para examinar o status de um arquivo. Existem, também," #~ msgid "are string operators as well, and numeric comparison operators." -#~ msgstr "operadores para cadeias de caracteres (strings) e comparações numéricas." +#~ msgstr "" +#~ "operadores para cadeias de caracteres (strings) e comparações numéricas." #~ msgid "File operators:" #~ msgstr "Operadores para arquivos:" @@ -7303,7 +7830,8 @@ msgstr "" #~ msgstr " -b ARQUIVO Verdade se o arquivo for do tipo especial de bloco." #~ msgid " -c FILE True if file is character special." -#~ msgstr " -c ARQUIVO Verdade se o arquivo for do tipo especial de caracter." +#~ msgstr "" +#~ " -c ARQUIVO Verdade se o arquivo for do tipo especial de caracter." #~ msgid " -d FILE True if file is a directory." #~ msgstr " -d ARQUIVO Verdade se o arquivo for um diretório." @@ -7315,10 +7843,12 @@ msgstr "" #~ msgstr " -f ARQUIVO Verdade se o arquivo existir e for do tipo regular." #~ msgid " -g FILE True if file is set-group-id." -#~ msgstr " -g ARQUIVO Verdade se o arquivo tiver o bit \"set-group-id\" ativo." +#~ msgstr "" +#~ " -g ARQUIVO Verdade se o arquivo tiver o bit \"set-group-id\" ativo." #~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." -#~ msgstr " -h ARQUIVO Verdade se arquivo for um vínculo simbólico. Usar \"-L\"." +#~ msgstr "" +#~ " -h ARQUIVO Verdade se arquivo for um vínculo simbólico. Usar \"-L\"." #~ msgid " -L FILE True if file is a symbolic link." #~ msgstr " -L ARQUIVO Verdade se o arquivo for um vínculo simbólico." @@ -7330,7 +7860,8 @@ msgstr "" #~ msgstr " -p ARQUIVO Verdade se o arquivo for um `named pipe'." #~ msgid " -r FILE True if file is readable by you." -#~ msgstr " -r ARQUIVO Verdade se você tiver autorização para ler o arquivo." +#~ msgstr "" +#~ " -r ARQUIVO Verdade se você tiver autorização para ler o arquivo." #~ msgid " -s FILE True if file exists and is not empty." #~ msgstr " -s ARQUIVO Verdade se o arquivo existir e não estiver vazio." @@ -7344,19 +7875,26 @@ msgstr "" #~ " em um terminal." #~ msgid " -u FILE True if the file is set-user-id." -#~ msgstr " -u ARQUIVO Verdade se o arquivo tiver o bit \"set-user-id\" ativo." +#~ msgstr "" +#~ " -u ARQUIVO Verdade se o arquivo tiver o bit \"set-user-id\" ativo." #~ msgid " -w FILE True if the file is writable by you." -#~ msgstr " -w ARQUIVO Verdade se você tiver autorização para escrever no arquivo." +#~ msgstr "" +#~ " -w ARQUIVO Verdade se você tiver autorização para escrever no " +#~ "arquivo." #~ msgid " -x FILE True if the file is executable by you." -#~ msgstr " -x ARQUIVO Verdade se você tiver autorização para executar o arquivo." +#~ msgstr "" +#~ " -x ARQUIVO Verdade se você tiver autorização para executar o arquivo." #~ msgid " -O FILE True if the file is effectively owned by you." -#~ msgstr " -O ARQUIVO Verdade se o arquivo pertencer ao seu usuário efetivo." +#~ msgstr "" +#~ " -O ARQUIVO Verdade se o arquivo pertencer ao seu usuário efetivo." -#~ msgid " -G FILE True if the file is effectively owned by your group." -#~ msgstr " -G ARQUIVO Verdade se o arquivo pertencer ao seu grupo efetivo." +#~ msgid "" +#~ " -G FILE True if the file is effectively owned by your group." +#~ msgstr "" +#~ " -G ARQUIVO Verdade se o arquivo pertencer ao seu grupo efetivo." #~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" #~ msgstr " ARQ1 -nt ARQ2 Verdade se ARQ1 for mais novo (conforme a data" @@ -7399,14 +7937,18 @@ msgstr "" #~ msgid " STRING1 < STRING2" #~ msgstr " STRING1 < STRING2" -#~ msgid " True if STRING1 sorts before STRING2 lexicographically" -#~ msgstr " Verdade se STRING1 tiver ordenação anterior à STRING2." +#~ msgid "" +#~ " True if STRING1 sorts before STRING2 lexicographically" +#~ msgstr "" +#~ " Verdade se STRING1 tiver ordenação anterior à STRING2." #~ msgid " STRING1 > STRING2" #~ msgstr " STRING1 > STRING2" -#~ msgid " True if STRING1 sorts after STRING2 lexicographically" -#~ msgstr " Verdade se STRING1 tiver ordenação posterior à STRING2." +#~ msgid "" +#~ " True if STRING1 sorts after STRING2 lexicographically" +#~ msgstr "" +#~ " Verdade se STRING1 tiver ordenação posterior à STRING2." #~ msgid "Other operators:" #~ msgstr "Outros operadores:" @@ -7427,9 +7969,11 @@ msgstr "" #~ msgstr " -lt, -le, -gt, ou -ge." #~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," -#~ msgstr "Operadores aritméticos binários retornam verdadeiro se ARG1 for igual," +#~ msgstr "" +#~ "Operadores aritméticos binários retornam verdadeiro se ARG1 for igual," -#~ msgid "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +#~ msgid "" +#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" #~ msgstr "diferente, menor, menor ou igual, maior, ou maior ou igual do que" #~ msgid "than ARG2." @@ -7442,46 +7986,60 @@ msgstr "" #~ msgstr "argumento deve ser o literal `]', para fechar o `[' de abertura." #~ msgid "Print the accumulated user and system times for processes run from" -#~ msgstr "Exibe os tempos acumulados do usuário e do sistema para os processos" +#~ msgstr "" +#~ "Exibe os tempos acumulados do usuário e do sistema para os processos" #~ msgid "the shell." #~ msgstr "executados por esta shell." #~ msgid "The command ARG is to be read and executed when the shell receives" -#~ msgstr "O comando em ARG é para ser lido e executado quando a shell receber o(s)" +#~ msgstr "" +#~ "O comando em ARG é para ser lido e executado quando a shell receber o(s)" #~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" -#~ msgstr "sinal(is) SINAL-ESPEC. Se ARG for omitido, todos os sinais especificados" +#~ msgstr "" +#~ "sinal(is) SINAL-ESPEC. Se ARG for omitido, todos os sinais especificados" #~ msgid "reset to their original values. If ARG is the null string each" -#~ msgstr "retornam aos seus valores originais. Se ARG for uma string nula, cada" +#~ msgstr "" +#~ "retornam aos seus valores originais. Se ARG for uma string nula, cada" #~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." -#~ msgstr "SINAL-ESPEC é ignorado pela shell e pelos comandos chamados por ela." +#~ msgstr "" +#~ "SINAL-ESPEC é ignorado pela shell e pelos comandos chamados por ela." #~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" -#~ msgstr "Se SINAL-ESPEC for EXIT (0) o comando em ARG é executado na saída da" +#~ msgstr "" +#~ "Se SINAL-ESPEC for EXIT (0) o comando em ARG é executado na saída da" #~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" -#~ msgstr "shell. Se SINAL-ESPEC for DEBUG, o comando em ARG é executado após cada" +#~ msgstr "" +#~ "shell. Se SINAL-ESPEC for DEBUG, o comando em ARG é executado após cada" #~ msgid "command. If ARG is `-p' then the trap commands associated with" -#~ msgstr "comando. Se ARG for `-p' então os comandos de captura associados com cada" +#~ msgstr "" +#~ "comando. Se ARG for `-p' então os comandos de captura associados com cada" #~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" #~ msgstr "SINAL-ESPEC são exibidos. Se nenhum argumento for fornecido, ou se" #~ msgid "only `-p' is given, trap prints the list of commands associated with" -#~ msgstr "somente `-p' for fornecido, é exibida a lista dos comandos associados" +#~ msgstr "" +#~ "somente `-p' for fornecido, é exibida a lista dos comandos associados" -#~ msgid "each signal number. SIGNAL_SPEC is either a signal name in " -#~ msgstr "com cada número de sinal. SINAL-ESPEC é um nome de sinal em ou" +#~ msgid "" +#~ "each signal number. SIGNAL_SPEC is either a signal name in " +#~ msgstr "" +#~ "com cada número de sinal. SINAL-ESPEC é um nome de sinal em ou" -#~ msgid "or a signal number. `trap -l' prints a list of signal names and their" -#~ msgstr "um número de sinal. `trap -l' exibe a lista de nomes de sinais com seus" +#~ msgid "" +#~ "or a signal number. `trap -l' prints a list of signal names and their" +#~ msgstr "" +#~ "um número de sinal. `trap -l' exibe a lista de nomes de sinais com seus" #~ msgid "corresponding numbers. Note that a signal can be sent to the shell" -#~ msgstr "números correspondentes. Note que o sinal pode ser enviado para a shell" +#~ msgstr "" +#~ "números correspondentes. Note que o sinal pode ser enviado para a shell" #~ msgid "with \"kill -signal $$\"." #~ msgstr "através do comando \"kill -SINAL $$\"." @@ -7490,13 +8048,19 @@ msgstr "" #~ msgstr "Para cada NOME, indica como este deve ser interpretado caso seja" #~ msgid "If the -t option is used, returns a single word which is one of" -#~ msgstr "Se a opção -t for fornecida, `type' retorna uma única palavra dentre" +#~ msgstr "" +#~ "Se a opção -t for fornecida, `type' retorna uma única palavra dentre" -#~ msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" -#~ msgstr "`alias', `keyword', `function', `builtin', `file' ou `', se NOME for um" +#~ msgid "" +#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +#~ msgstr "" +#~ "`alias', `keyword', `function', `builtin', `file' ou `', se NOME for um" -#~ msgid "alias, shell reserved word, shell function, shell builtin, disk file," -#~ msgstr "alias, uma palavra reservada, função ou comando interno da shell, um arquivo" +#~ msgid "" +#~ "alias, shell reserved word, shell function, shell builtin, disk file," +#~ msgstr "" +#~ "alias, uma palavra reservada, função ou comando interno da shell, um " +#~ "arquivo" #~ msgid "or unfound, respectively." #~ msgstr "em disco, ou não for encontrado, respectivamente." @@ -7510,8 +8074,10 @@ msgstr "" #~ msgid "If the -a flag is used, displays all of the places that contain an" #~ msgstr "Se a opção -a for fornecida, exibe todos os locais que contém um" -#~ msgid "executable named `file'. This includes aliases and functions, if and" -#~ msgstr "arquivo executável chamado `ARQUIVO', incluindo os aliases e funções," +#~ msgid "" +#~ "executable named `file'. This includes aliases and functions, if and" +#~ msgstr "" +#~ "arquivo executável chamado `ARQUIVO', incluindo os aliases e funções," #~ msgid "only if the -p flag is not also used." #~ msgstr "mas somente se a opção -p não for fornecida conjuntamente." @@ -7523,10 +8089,12 @@ msgstr "" #~ msgstr "-a, -p, and -t, respectivamente." #~ msgid "Ulimit provides control over the resources available to processes" -#~ msgstr "Ulimit estabelece controle sobre os recursos disponíveis para os processos" +#~ msgstr "" +#~ "Ulimit estabelece controle sobre os recursos disponíveis para os processos" #~ msgid "started by the shell, on systems that allow such control. If an" -#~ msgstr "iniciados por esta shell, em sistemas que permitem estes controles. Se uma" +#~ msgstr "" +#~ "iniciados por esta shell, em sistemas que permitem estes controles. Se uma" #~ msgid "option is given, it is interpreted as follows:" #~ msgstr "opção for fornecida, é interpretada como mostrado a seguir:" @@ -7541,13 +8109,15 @@ msgstr "" #~ msgstr " -a\ttodos os limites correntes são informados" #~ msgid " -c\tthe maximum size of core files created" -#~ msgstr " -c\to tamanho máximo para os arquivos de imagem do núcleo criados" +#~ msgstr "" +#~ " -c\to tamanho máximo para os arquivos de imagem do núcleo criados" #~ msgid " -d\tthe maximum size of a process's data segment" #~ msgstr " -d\to tamanho máximo do segmento de dados de um processo" #~ msgid " -m\tthe maximum resident set size" -#~ msgstr " -m\to tamanho máximo do conjunto de processos residentes em memória" +#~ msgstr "" +#~ " -m\to tamanho máximo do conjunto de processos residentes em memória" #~ msgid " -s\tthe maximum stack size" #~ msgstr " -s\to tamanho máximo da pilha" @@ -7571,13 +8141,15 @@ msgstr "" #~ msgstr " -v\to tamanho da memória virtual" #~ msgid "If LIMIT is given, it is the new value of the specified resource." -#~ msgstr "Se LIMITE for fornecido, torna-se o novo valor do recurso especificado." +#~ msgstr "" +#~ "Se LIMITE for fornecido, torna-se o novo valor do recurso especificado." #~ msgid "Otherwise, the current value of the specified resource is printed." #~ msgstr "Senão, o valor atual do recurso especificado é exibido." #~ msgid "If no option is given, then -f is assumed. Values are in 1k" -#~ msgstr "Se nenhuma opção for fornecida, então -f é assumido. Os valores são em" +#~ msgstr "" +#~ "Se nenhuma opção for fornecida, então -f é assumido. Os valores são em" #~ msgid "increments, except for -t, which is in seconds, -p, which is in" #~ msgstr "incrementos de 1k, exceto para -t, que é em segundos, -p, que é em" @@ -7588,77 +8160,101 @@ msgstr "" #~ msgid "processes." #~ msgstr "processos." -#~ msgid "The user file-creation mask is set to MODE. If MODE is omitted, or if" -#~ msgstr "MODO é atribuído à máscara de criação de arquivos do usuário. Se omitido," +#~ msgid "" +#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" +#~ msgstr "" +#~ "MODO é atribuído à máscara de criação de arquivos do usuário. Se omitido," -#~ msgid "`-S' is supplied, the current value of the mask is printed. The `-S'" -#~ msgstr "ou se `-S' for especificado, a máscara em uso é exibida. A opção `-S'" +#~ msgid "" +#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" +#~ msgstr "" +#~ "ou se `-S' for especificado, a máscara em uso é exibida. A opção `-S'" -#~ msgid "option makes the output symbolic; otherwise an octal number is output." +#~ msgid "" +#~ "option makes the output symbolic; otherwise an octal number is output." #~ msgstr "exibe símbolos na saída; sem esta opção um número octal é exibido." #~ msgid "If MODE begins with a digit, it is interpreted as an octal number," -#~ msgstr "Se MODO começar por um dígito, é interpretado como sendo um número octal," +#~ msgstr "" +#~ "Se MODO começar por um dígito, é interpretado como sendo um número octal," -#~ msgid "otherwise it is a symbolic mode string like that accepted by chmod(1)." -#~ msgstr "senão devem ser caracteres simbólicos, como os aceitos por chmod(1)." +#~ msgid "" +#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." +#~ msgstr "" +#~ "senão devem ser caracteres simbólicos, como os aceitos por chmod(1)." -#~ msgid "Wait for the specified process and report its termination status. If" -#~ msgstr "Aguardar pelo processo especificado e informar seu status de término. Se N" +#~ msgid "" +#~ "Wait for the specified process and report its termination status. If" +#~ msgstr "" +#~ "Aguardar pelo processo especificado e informar seu status de término. Se N" #~ msgid "N is not given, all currently active child processes are waited for," -#~ msgstr "não for especificado, todos os processos filhos ativos são aguardados," +#~ msgstr "" +#~ "não for especificado, todos os processos filhos ativos são aguardados," #~ msgid "and the return code is zero. N may be a process ID or a job" #~ msgstr "e o código de retorno é zero. N pode ser o ID de um processo ou a" #~ msgid "specification; if a job spec is given, all processes in the job's" -#~ msgstr "especificação de um trabalho; Se for a especificação de um trabalho, todos" +#~ msgstr "" +#~ "especificação de um trabalho; Se for a especificação de um trabalho, todos" #~ msgid "pipeline are waited for." #~ msgstr "os processos presentes no `pipeline' do trabalho são aguardados." #~ msgid "and the return code is zero. N is a process ID; if it is not given," -#~ msgstr "e o código de retorno é zero. N é o ID de um processo; se N não for" +#~ msgstr "" +#~ "e o código de retorno é zero. N é o ID de um processo; se N não for" #~ msgid "all child processes of the shell are waited for." #~ msgstr "especificado, todos os processos filhos da shell são aguardados." #~ msgid "The `for' loop executes a sequence of commands for each member in a" -#~ msgstr "O laço `for' executa a sequência de comandos para cada membro na lista de" +#~ msgstr "" +#~ "O laço `for' executa a sequência de comandos para cada membro na lista de" -#~ msgid "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" -#~ msgstr "items. Se `in PALAVRAS ...;' não estiver presente, então `in \"$@\"'" +#~ msgid "" +#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +#~ msgstr "" +#~ "items. Se `in PALAVRAS ...;' não estiver presente, então `in \"$@\"'" -#~ msgid "assumed. For each element in WORDS, NAME is set to that element, and" -#~ msgstr "(parâmetros posicionais) é assumido. Para cada elemento em PALAVRAS, NOME" +#~ msgid "" +#~ "assumed. For each element in WORDS, NAME is set to that element, and" +#~ msgstr "" +#~ "(parâmetros posicionais) é assumido. Para cada elemento em PALAVRAS, NOME" #~ msgid "the COMMANDS are executed." #~ msgstr "assume seu valor, e os COMANDOS são executados." #~ msgid "The WORDS are expanded, generating a list of words. The" -#~ msgstr "As palavras são expandidas, gerando uma lista de palavras. O conjunto" +#~ msgstr "" +#~ "As palavras são expandidas, gerando uma lista de palavras. O conjunto" #~ msgid "set of expanded words is printed on the standard error, each" -#~ msgstr "de palavras expandidas é enviado para a saída de erro padrão, cada uma" +#~ msgstr "" +#~ "de palavras expandidas é enviado para a saída de erro padrão, cada uma" #~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" -#~ msgstr "precedida por um número. Se `in PALAVRAS' for omitido, `in \"$@\"' é" +#~ msgstr "" +#~ "precedida por um número. Se `in PALAVRAS' for omitido, `in \"$@\"' é" #~ msgid "is assumed. The PS3 prompt is then displayed and a line read" #~ msgstr "assumido. Em seguida o prompt PS3 é exibido, e uma linha é lida da" #~ msgid "from the standard input. If the line consists of the number" -#~ msgstr "entrada padrão. Se a linha consistir do número correspondente ao número" +#~ msgstr "" +#~ "entrada padrão. Se a linha consistir do número correspondente ao número" #~ msgid "corresponding to one of the displayed words, then NAME is set" #~ msgstr "de uma das palavras exibidas, então NOME é atribuído para esta" #~ msgid "to that word. If the line is empty, WORDS and the prompt are" -#~ msgstr "PALAVRA. Se a linha estiver vazia, PALAVRAS e o prompt são exibidos" +#~ msgstr "" +#~ "PALAVRA. Se a linha estiver vazia, PALAVRAS e o prompt são exibidos" #~ msgid "redisplayed. If EOF is read, the command completes. Any other" -#~ msgstr "novamente. Se EOF for lido, o comando termina. Qualquer outro valor" +#~ msgstr "" +#~ "novamente. Se EOF for lido, o comando termina. Qualquer outro valor" #~ msgid "value read causes NAME to be set to null. The line read is saved" #~ msgstr "lido faz com que NOME seja tornado nulo. A linha lida é salva" @@ -7670,28 +8266,42 @@ msgstr "" #~ msgstr "até que o comando `break' ou `return' seja executado." #~ msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" -#~ msgstr "Executar seletivamente COMANDOS tomando por base a correspondência entre" +#~ msgstr "" +#~ "Executar seletivamente COMANDOS tomando por base a correspondência entre" #~ msgid "`|' is used to separate multiple patterns." -#~ msgstr "PALAVRA e PADRÃO. O caracter `|' é usado para separar múltiplos padrões." +#~ msgstr "" +#~ "PALAVRA e PADRÃO. O caracter `|' é usado para separar múltiplos padrões." -#~ msgid "The if COMMANDS are executed. If the exit status is zero, then the then" -#~ msgstr "Os COMANDOS `if' são executados. Se os status de saída for zero, então os" +#~ msgid "" +#~ "The if COMMANDS are executed. If the exit status is zero, then the then" +#~ msgstr "" +#~ "Os COMANDOS `if' são executados. Se os status de saída for zero, então os" -#~ msgid "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" -#~ msgstr "COMANDOS `then' são executados, senão, os COMANDOS `elif' são executados em" +#~ msgid "" +#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +#~ msgstr "" +#~ "COMANDOS `then' são executados, senão, os COMANDOS `elif' são executados " +#~ "em" -#~ msgid "in turn, and if the exit status is zero, the corresponding then COMMANDS" -#~ msgstr "sequência e, se o status de saída for zero, os COMANDOS `then' associados" +#~ msgid "" +#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" +#~ msgstr "" +#~ "sequência e, se o status de saída for zero, os COMANDOS `then' associados" -#~ msgid "are executed and the if command completes. Otherwise, the else COMMANDS" -#~ msgstr "são executados e o `if' termina. Senão, os COMANDOS da cláusula `else'" +#~ msgid "" +#~ "are executed and the if command completes. Otherwise, the else COMMANDS" +#~ msgstr "" +#~ "são executados e o `if' termina. Senão, os COMANDOS da cláusula `else'" -#~ msgid "are executed, if present. The exit status is the exit status of the last" -#~ msgstr "são executados, se houver. O status de saída é o status de saída do" +#~ msgid "" +#~ "are executed, if present. The exit status is the exit status of the last" +#~ msgstr "" +#~ "são executados, se houver. O status de saída é o status de saída do" #~ msgid "command executed, or zero if no condition tested true." -#~ msgstr "último comando executado, ou zero, se nenhuma condição for verdadeira." +#~ msgstr "" +#~ "último comando executado, ou zero, se nenhuma condição for verdadeira." #~ msgid "Expand and execute COMMANDS as long as the final command in the" #~ msgstr "Expande e executa COMANDOS enquanto o comando final nos" @@ -7718,16 +8328,22 @@ msgstr "" #~ msgstr "redirecionar todo um conjunto de comandos." #~ msgid "This is similar to the `fg' command. Resume a stopped or background" -#~ msgstr "Semelhante ao comando `fg'. Prossegue a execução de um trabalho parado ou" +#~ msgstr "" +#~ "Semelhante ao comando `fg'. Prossegue a execução de um trabalho parado ou" #~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" -#~ msgstr "em segundo plano. Se DÍGITOS for especificado, então este trabalho é usado." +#~ msgstr "" +#~ "em segundo plano. Se DÍGITOS for especificado, então este trabalho é " +#~ "usado." -#~ msgid "WORD, then the job whose name begins with WORD is used. Following the" -#~ msgstr "Se for especificado PALAVRA, o trabalho começado por PALAVRA é usado." +#~ msgid "" +#~ "WORD, then the job whose name begins with WORD is used. Following the" +#~ msgstr "" +#~ "Se for especificado PALAVRA, o trabalho começado por PALAVRA é usado." #~ msgid "job specification with a `&' places the job in the background." -#~ msgstr "Seguindo-se a especificação por um `&' põe o trabalho em segundo plano." +#~ msgstr "" +#~ "Seguindo-se a especificação por um `&' põe o trabalho em segundo plano." #~ msgid "BASH_VERSION The version numbers of this Bash." #~ msgstr "BASH_VERSION Os números da versão desta `bash'." @@ -7741,11 +8357,15 @@ msgstr "" #~ msgid "\t\tdirectory." #~ msgstr "\t\tencontrado no diretório atual." -#~ msgid "HISTFILE The name of the file where your command history is stored." -#~ msgstr "HISTFILE O nome do arquivo onde o histórico de comandos é armazenado." +#~ msgid "" +#~ "HISTFILE The name of the file where your command history is stored." +#~ msgstr "" +#~ "HISTFILE O nome do arquivo onde o histórico de comandos é " +#~ "armazenado." #~ msgid "HISTFILESIZE The maximum number of lines this file can contain." -#~ msgstr "HISTFILESIZE O número máximo de linhas que este arquivo pode conter." +#~ msgstr "" +#~ "HISTFILESIZE O número máximo de linhas que este arquivo pode conter." #~ msgid "HISTSIZE The maximum number of history lines that a running" #~ msgstr "HISTSIZE O número máximo de linhas do histórico que uma" @@ -7754,12 +8374,16 @@ msgstr "" #~ msgstr "\t\tshell em execução pode acessar." #~ msgid "HOME The complete pathname to your login directory." -#~ msgstr "HOME O nome completo do caminho do seu diretório de login." +#~ msgstr "" +#~ "HOME O nome completo do caminho do seu diretório de login." -#~ msgid "HOSTTYPE The type of CPU this version of Bash is running under." -#~ msgstr "HOSTTYPE O tipo de CPU sob a qual esta `bash' está executando." +#~ msgid "" +#~ "HOSTTYPE The type of CPU this version of Bash is running under." +#~ msgstr "" +#~ "HOSTTYPE O tipo de CPU sob a qual esta `bash' está executando." -#~ msgid "IGNOREEOF Controls the action of the shell on receipt of an EOF" +#~ msgid "" +#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" #~ msgstr "IGNOREEOF Controla a ação da shell ao receber um caracter" #~ msgid "\t\tcharacter as the sole input. If set, then the value" @@ -7772,13 +8396,16 @@ msgstr "" #~ msgstr "\t\tde forma seguida em uma linha vazia, antes da shell terminar" #~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." -#~ msgstr "\t\t(padrão 10). Caso contrário, EOF significa o fim da entrada de dados." +#~ msgstr "" +#~ "\t\t(padrão 10). Caso contrário, EOF significa o fim da entrada de dados." #~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." -#~ msgstr "MAILCHECK\tFreqüência, em segundos, para a `bash' verificar novo e-mail." +#~ msgstr "" +#~ "MAILCHECK\tFreqüência, em segundos, para a `bash' verificar novo e-mail." #~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" -#~ msgstr "MAILPATH\tUma lista, separada por dois pontos, de nomes de arquivos," +#~ msgstr "" +#~ "MAILPATH\tUma lista, separada por dois pontos, de nomes de arquivos," #~ msgid "\t\tfor new mail." #~ msgstr "\t\tnos quais a `bash' vai verificar se existe novo e-mail." @@ -7787,7 +8414,8 @@ msgstr "" #~ msgstr "OSTYPE\t\tA versão do Unix sob a qual a `bash' está executando." #~ msgid "PATH A colon-separated list of directories to search when" -#~ msgstr "PATH Uma lista, separada por dois pontos, de diretórios a" +#~ msgstr "" +#~ "PATH Uma lista, separada por dois pontos, de diretórios a" #~ msgid "\t\tlooking for commands." #~ msgstr "\t\tserem pesquisados quando os comandos forem procurados." @@ -7808,16 +8436,20 @@ msgstr "" #~ msgstr "TERM O nome do tipo de terminal em uso no momento." #~ msgid "auto_resume Non-null means a command word appearing on a line by" -#~ msgstr "auto_resume Não nulo significa que um comando aparecendo sozinho em" +#~ msgstr "" +#~ "auto_resume Não nulo significa que um comando aparecendo sozinho em" #~ msgid "\t\titself is first looked for in the list of currently" -#~ msgstr "\t\tlinha deve ser procurado primeiro na lista de trabalhos parados." +#~ msgstr "" +#~ "\t\tlinha deve ser procurado primeiro na lista de trabalhos parados." #~ msgid "\t\tstopped jobs. If found there, that job is foregrounded." -#~ msgstr "\t\tSe for encontrado na lista, o trabalho vai para o primeiro plano." +#~ msgstr "" +#~ "\t\tSe for encontrado na lista, o trabalho vai para o primeiro plano." #~ msgid "\t\tA value of `exact' means that the command word must" -#~ msgstr "\t\tO valor `exact' significa que a palavra do comando deve corresponder" +#~ msgstr "" +#~ "\t\tO valor `exact' significa que a palavra do comando deve corresponder" #~ msgid "\t\texactly match a command in the list of stopped jobs. A" #~ msgstr "\t\texatamente a um comando da lista de trabalhos parados." @@ -7829,19 +8461,23 @@ msgstr "" #~ msgstr "\t\tcorresponder a uma parte do trabalho. Qualquer outro valor" #~ msgid "\t\tthe command must be a prefix of a stopped job." -#~ msgstr "\t\tsignifica que o comando deve ser um prefixo de um trabalho parado." +#~ msgstr "" +#~ "\t\tsignifica que o comando deve ser um prefixo de um trabalho parado." #~ msgid "command_oriented_history" #~ msgstr "command_oriented_history" -#~ msgid " Non-null means to save multiple-line commands together on" -#~ msgstr " Se não for nulo significa salvar comandos com múltiplas" +#~ msgid "" +#~ " Non-null means to save multiple-line commands together on" +#~ msgstr "" +#~ " Se não for nulo significa salvar comandos com múltiplas" #~ msgid " a single history line." #~ msgstr " linhas, juntas em uma única linha do histórico." #~ msgid "histchars Characters controlling history expansion and quick" -#~ msgstr "histchars Caracteres que controlam a expansão do histórico e a" +#~ msgstr "" +#~ "histchars Caracteres que controlam a expansão do histórico e a" #~ msgid "\t\tsubstitution. The first character is the history" #~ msgstr "\t\tsubstituição rápida. O primeiro caracter é o de substituição" @@ -7856,10 +8492,12 @@ msgstr "" #~ msgstr "\t\té o de comentário do histórico, geralmente o `#'." #~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter" -#~ msgstr "HISTCONTROL\tCom valor igual a `ignorespace', significa não introduzir" +#~ msgstr "" +#~ "HISTCONTROL\tCom valor igual a `ignorespace', significa não introduzir" #~ msgid "\t\tlines which begin with a space or tab on the history" -#~ msgstr "\t\tlinhas que iniciam por espaço ou tabulação na lista de histórico." +#~ msgstr "" +#~ "\t\tlinhas que iniciam por espaço ou tabulação na lista de histórico." #~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't" #~ msgstr "\t\tCom valor igual a `ignoredups', significa não introduzir linhas" @@ -7871,7 +8509,8 @@ msgstr "" #~ msgstr "\t\t`ignoreboth' significa combinar as duas opções. Remover," #~ msgid "\t\tor set to any other value than those above means to save" -#~ msgstr "\t\tou atribuir algum outro valor que não os acima, significa salvar" +#~ msgstr "" +#~ "\t\tou atribuir algum outro valor que não os acima, significa salvar" #~ msgid "\t\tall lines on the history list." #~ msgstr "\t\ttodas as linhas na lista de histórico." @@ -7880,19 +8519,22 @@ msgstr "" #~ msgstr "Adiciona o diretório no topo da pilha de diretórios, ou rotaciona a" #~ msgid "the stack, making the new top of the stack the current working" -#~ msgstr "pilha, fazendo o diretório atual de trabalho ficar no topo da pilha." +#~ msgstr "" +#~ "pilha, fazendo o diretório atual de trabalho ficar no topo da pilha." #~ msgid "directory. With no arguments, exchanges the top two directories." #~ msgstr "Sem nenhum argumento, troca os dois diretórios do topo." #~ msgid "+N\tRotates the stack so that the Nth directory (counting" -#~ msgstr "+N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" +#~ msgstr "" +#~ "+N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" #~ msgid "\tfrom the left of the list shown by `dirs') is at the top." #~ msgstr "\tpartir da esquerda da lista exibida por `dirs') fique no topo." #~ msgid "-N\tRotates the stack so that the Nth directory (counting" -#~ msgstr "-N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" +#~ msgstr "" +#~ "-N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" #~ msgid "\tfrom the right) is at the top." #~ msgstr "\tpartir da direita) fique no topo." @@ -7933,7 +8575,8 @@ msgstr "" #~ msgid "\tremoves the last directory, `popd -1' the next to last." #~ msgstr "\tremove o último diretório, `popd -1' o penúltimo." -#~ msgid "-n\tsuppress the normal change of directory when removing directories" +#~ msgid "" +#~ "-n\tsuppress the normal change of directory when removing directories" #~ msgstr "-n\tsuprime a troca normal de diretório ao remover-se diretórios" #~ msgid "\tfrom the stack, so only the stack is manipulated." @@ -7948,44 +8591,57 @@ msgstr "" #~ msgid "back up through the list with the `popd' command." #~ msgstr "removidos da lista através do comando `popd'." -#~ msgid "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" #~ msgstr "A opção -l especifica que `dirs' não deve exibir a versão resumida" -#~ msgid "of directories which are relative to your home directory. This means" -#~ msgstr "dos diretórios relativos ao seu diretório `home'. Isto significa que" +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "" +#~ "dos diretórios relativos ao seu diretório `home'. Isto significa que" #~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" -#~ msgstr "`~/bin' deve ser exibido como `/home/você/bin'. A opção -v faz com que" +#~ msgstr "" +#~ "`~/bin' deve ser exibido como `/home/você/bin'. A opção -v faz com que" #~ msgid "causes `dirs' to print the directory stack with one entry per line," #~ msgstr "`dirs' exiba a pilha de diretórios com uma entrada por linha," -#~ msgid "prepending the directory name with its position in the stack. The -p" +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" #~ msgstr "antecedendo o nome do diretório com a sua posição na pilha. A opção" #~ msgid "flag does the same thing, but the stack position is not prepended." #~ msgstr "-p faz a mesma coisa, mas a posição na pilha não é exibida. A opção" -#~ msgid "The -c flag clears the directory stack by deleting all of the elements." +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." #~ msgstr "-c limpa a pilha de diretórios apagando todos os seus elementos." -#~ msgid "+N\tdisplays the Nth entry counting from the left of the list shown by" -#~ msgstr "+N\texibe a n-ésima entrada contada a partir da esquerda da lista exibida" +#~ msgid "" +#~ "+N\tdisplays the Nth entry counting from the left of the list shown by" +#~ msgstr "" +#~ "+N\texibe a n-ésima entrada contada a partir da esquerda da lista exibida" #~ msgid "\tdirs when invoked without options, starting with zero." #~ msgstr "\tpor `dirs', quando este é chamado sem opções, começando por zero." -#~ msgid "-N\tdisplays the Nth entry counting from the right of the list shown by" -#~ msgstr "-N\texibe a n-ésima entrada contada a partir da direita da lista exibida" +#~ msgid "" +#~ "-N\tdisplays the Nth entry counting from the right of the list shown by" +#~ msgstr "" +#~ "-N\texibe a n-ésima entrada contada a partir da direita da lista exibida" #~ msgid "Toggle the values of variables controlling optional behavior." -#~ msgstr "Alterna os valores das variáveis controladoras de comportamentos opcionais." +#~ msgstr "" +#~ "Alterna os valores das variáveis controladoras de comportamentos " +#~ "opcionais." #~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" #~ msgstr "A opção -s ativa (set) cada NOME-OPÇÃO; a opção -u desativa cada" #~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" -#~ msgstr "NOME-OPÇÃO. A opção -q suprime a saída; o status de término indica se" +#~ msgstr "" +#~ "NOME-OPÇÃO. A opção -q suprime a saída; o status de término indica se" #~ msgid "status indicates whether each OPTNAME is set or unset. The -o" #~ msgstr "cada NOME-OPÇÃO foi ativado ou desativado A opção -o restringe" @@ -7997,7 +8653,8 @@ msgstr "" #~ msgstr "Sem nenhuma opção, ou com a opção -p, uma lista com todas as" #~ msgid "settable options is displayed, with an indication of whether or" -#~ msgstr "opções que podem ser ativadas é exibida, com indicação sobre se cada uma" +#~ msgstr "" +#~ "opções que podem ser ativadas é exibida, com indicação sobre se cada uma" #~ msgid "not each is set." #~ msgstr "das opções está ativa ou não." diff --git a/po/ro.gmo b/po/ro.gmo index 3a69a47a6..f1036a704 100644 Binary files a/po/ro.gmo and b/po/ro.gmo differ diff --git a/po/ro.po b/po/ro.po index 13ab3543d..9c79e28ce 100644 --- a/po/ro.po +++ b/po/ro.po @@ -1,124 +1,129 @@ -# Mesajele în limba română pentru pachetul bash -# Copyright (C) 2003 Free Software Foundation, Inc. +# Mesajele în limba română pentru pachetul bash. +# Copyright (C) 2003 - 2022 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. +# # Eugen Hoanca , 2003. # Daniel Șerbănescu , 2019. +# Remus-Gabriel Chelu , 2022. +# +# Cronologia traducerii fișierului „bash”: +# Traducerea inițială, făcută de EH, pentru versiunea bash 3.2 (19% - tradus). +# Actualizare a traducerii pentru versiunea 4.0, făcută de EH (24% - tradus). +# Actualizare a traducerii pentru versiunea 5.0, făcută de DȘ (29% - tradus). +# Actualizare a traducerii pentru versiunea 5.1, făcută de R-GC (100% - tradus). +# Actualizare a traducerii pentru versiunea 5.2-rc1, făcută de R-GC. # msgid "" msgstr "" -"Project-Id-Version: bash 5.0\n" +"Project-Id-Version: bash 5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2019-08-25 10:11+0200\n" -"Last-Translator: Daniel Șerbănescu \n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-06-18 01:02+0200\n" +"Last-Translator: Remus-Gabriel Chelu \n" "Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || ((n%100) > 0 && (n%100) < 20)) ? 1 : 2);\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n" -"%100<=19) ? 1 : 2);\n" -"X-Generator: Poedit 2.2.3\n" +"X-Generator: Poedit 2.3.1\n" "X-Poedit-SourceCharset: UTF-8\n" #: arrayfunc.c:66 msgid "bad array subscript" -msgstr "incluziune greșită în interval" +msgstr "indice de matrice greșit" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: se elimină atributul nameref" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "" +msgstr "%s: nu se poate converti matricea indexată în asociativă" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" -msgstr "%s: nu se poate atribui către index ne-numeric" +msgstr "%s: nu se poate atribui la index ne-numeric" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" -msgstr "" +msgstr "%s: %s: trebuie să fie folosit un indice atunci când se atribuie unei matrice asociative" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nu s-a putut crea: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "" +msgstr "bash_execute_unix_command: nu se poate găsi combinația de taste pentru comandă" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "" +msgstr "%s: primul caracter care nu este spațiu în alb nu este «\"» (ghilimele duble)" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" -msgstr "" +msgstr "nu se închide „%c” în %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" -msgstr "%s: lipsește separatorul două puncte" +msgstr "%s: lipsește separatorul două puncte (:)" -#: bashline.c:4555 -#, fuzzy, c-format +#: bashline.c:4733 +#, c-format msgid "`%s': cannot unbind in command keymap" -msgstr "%s: comandă negăsită" +msgstr "„%s”: nu se poate înlătura combinația de taste atribuită la comandă" +# Aici, trebuie folosit forma de plural, așa cum am făcut-o, sau cea de singular: +# extindere (de) acoladă? #: braces.c:327 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "expansiunea de acolade: nu se poate aloca memorie pentru %s" #: braces.c:406 #, c-format msgid "brace expansion: failed to allocate memory for %u elements" -msgstr "" +msgstr "expansiunea de acolade: a eșuat alocarea memoriei pentru %u elemente" #: braces.c:451 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "expansiunea de acolade: a eșuat alocarea memoriei pentru „%s”" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "„%s”: nume alias nevalid" #: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" -msgstr "sfârșitul de linie nu este activat" +msgstr "editarea liniilor nu este activată" #: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" -msgstr "" +msgstr "`%s': nume de combinație de taste nevalid" #: builtins/bind.def:252 -#, fuzzy, c-format +#, c-format msgid "%s: cannot read: %s" -msgstr "%s: nu s-a putut crea: %s" +msgstr "%s: nu s-a putut citii: %s" #: builtins/bind.def:328 builtins/bind.def:358 -#, fuzzy, c-format +#, c-format msgid "`%s': unknown function name" -msgstr "%s: funcție doar în citire (readonly)" +msgstr "„%s”: nume de funcție necunoscut" #: builtins/bind.def:336 #, c-format @@ -128,12 +133,12 @@ msgstr "%s nu este asociat niciunei taste.\n" #: builtins/bind.def:340 #, c-format msgid "%s can be invoked via " -msgstr "%s poate fi invocat prin " +msgstr "%s poate fi invocat via " #: builtins/bind.def:378 builtins/bind.def:395 -#, fuzzy, c-format +#, c-format msgid "`%s': cannot unbind" -msgstr "%s: comandă negăsită" +msgstr "„%s”: atribuirea nu poate fi ștearsă" #: builtins/break.def:77 builtins/break.def:119 msgid "loop count" @@ -154,22 +159,30 @@ msgid "" " The value of EXPR indicates how many call frames to go back before the\n" " current one; the top frame is frame 0." msgstr "" +"Returnează contextul apelului subrutinei curente.\n" +" \n" +" Fără EXPR, returnează „$linie $nume_fișier”. Cu EXPR, returnează\n" +" „$linie $subrutină $nume_fișier”; aceste informații suplimentare pot să fie\n" +" folosite pentru a furniza o urmărire a stivei.\n" +" \n" +" Valoarea EXPR indică cîte cadre de apel trebuie să se întoarcă înaintea celui\n" +" curent; cadrul superior este cadrul 0." #: builtins/cd.def:327 msgid "HOME not set" -msgstr "HOME nu este stabilit" +msgstr "variabila $HOME nu este definită" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "prea mulți parametri" #: builtins/cd.def:342 msgid "null directory" -msgstr "director null" +msgstr "director nul" #: builtins/cd.def:353 msgid "OLDPWD not set" -msgstr "OLDPWD nu este stabilit" +msgstr "variabila $OLDPWD nu este definită" #: builtins/common.c:96 #, c-format @@ -186,10 +199,10 @@ msgstr "avertizare: " msgid "%s: usage: " msgstr "%s: utilizare: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" -msgstr "%s: opțiunea necesită un parametru" +msgstr "%s: opțiunea necesită un argument" #: builtins/common.c:200 #, c-format @@ -197,269 +210,356 @@ msgid "%s: numeric argument required" msgstr "%s: argument numeric necesar" #: builtins/common.c:207 -#, fuzzy, c-format +#, c-format msgid "%s: not found" -msgstr "%s: comandă negăsită" +msgstr "%s: nu s-a găsit" -#: builtins/common.c:216 shell.c:857 -#, fuzzy, c-format +#: builtins/common.c:216 shell.c:879 +#, c-format msgid "%s: invalid option" -msgstr "%c%c: opțiune invalidă" +msgstr "%s: opțiune nevalidă" #: builtins/common.c:223 -#, fuzzy, c-format +#, c-format msgid "%s: invalid option name" -msgstr "%c%c: opțiune invalidă" +msgstr "%s: nume de opțiune nevalid" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 -#, fuzzy, c-format +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 +#, c-format msgid "`%s': not a valid identifier" -msgstr "`%s' nu este un identificator valid" +msgstr "„%s” nu este un identificator valid" #: builtins/common.c:240 -#, fuzzy msgid "invalid octal number" -msgstr "număr de semnal invalid" +msgstr "număr octal nevalid" #: builtins/common.c:242 -#, fuzzy msgid "invalid hex number" -msgstr "număr de semnal invalid" +msgstr "număr hexazecimal nevalid" -#: builtins/common.c:244 expr.c:1569 -#, fuzzy +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" -msgstr "număr de semnal invalid" +msgstr "număr nevalid" #: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" -msgstr "" - +msgstr "%s: specificație de semnal nevalidă" + +# spec = specificare +# sau +# spec = specificație +# ??? +# de rezolvat +# ------------------------------------ +# Opinii/Idei? +# *** +# după revizarea fișierului, DȘ, spune: +# 1. „→ și eu aș păstra specificație aici și în restul fișierului” +# === +# Ok, rămînem cu «spec, specification = specificație» +# . +# 2. → iar job spec l-aș traduce cu „specificația serviciului” (fiind vorba de un proces care rulează pe computer) +# === +# am tradus «job spec» ca specificație de lucru, +# datorită faptului că «job-urile», nu sunt +# întotdeauna niște servicii, și mai ales datorită +# faptului că adesea sunt o pleiadă de procese, +# grupate (cel mai adesea un proces părinte +# cu fii săi), alteori un grup de procese +# interacționate. #: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "" +msgstr "„%s”: nu este un pid sau o specificație validă de lucru" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" -msgstr "%s: variabilă doar în citire" +msgstr "%s: variabilă protejată la scriere" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s: nu se poate atribui" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" -msgstr "" +msgstr "%s: %s în afara intervalului" -#: builtins/common.c:274 builtins/common.c:276 -#, fuzzy +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" -msgstr "se așteaptă parametru" +msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" -msgstr "" - -#: builtins/common.c:284 +msgstr "%s în afara intervalului" + +# R-GC, scrie: +# după revizarea fișierului, DȘ, spune: +# «→ la fel și aici, și la următoarele apariții ale lui job, → „nu există asemenea serviciu”» +# === +# am tradus «job» ca lucrare, datorită faptului +# că «job-urile», nu sunt întotdeauna niște +# servicii, și mai ales datorită faptului că +# adesea sunt o pleiadă de procese, grupate +# (cel mai adesea un proces părinte cu fii săi), +# alteori un grup de procese interacționate. +#: builtins/common.c:291 #, c-format msgid "%s: no such job" -msgstr "" +msgstr "%s: nu există această lucrare" -#: builtins/common.c:292 -#, fuzzy, c-format +#: builtins/common.c:299 +#, c-format msgid "%s: no job control" -msgstr "nici un control de job în acest shell" +msgstr "%s: nu există un control de lucrări" -#: builtins/common.c:294 -#, fuzzy +#: builtins/common.c:301 msgid "no job control" -msgstr "nici un control de job în acest shell" +msgstr "nu există un control de lucrări" -#: builtins/common.c:304 -#, fuzzy, c-format +#: builtins/common.c:311 +#, c-format msgid "%s: restricted" -msgstr "%s: jobul a fost terminat" +msgstr "%s: restricționat" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" -msgstr "" - -#: builtins/common.c:314 +msgstr "restricționat" + +# R-GC, întreabă: +# Ce facem cu „Shell”? +# Cum îl traducem? +# *** +# după revizarea fișierului, DȘ, spune: +# „→ mă trem că „shell” ar trebui să rămână tot „shell”: https://ro.wikipedia.org/wiki/Shell_(informatic%C4%83)” +# === +# Mda, un răspuns la care mă așteptam; ca un +# fapt divers: nici alte echipe de traducători, +# n-au reușit să „translate” «shell» în altceva +# decît în «shell», au fost încercări (traduceri +# reale) → scoică, cochilie, carapace sau +# ambalaj; cu toate că unele dintre ele, au +# avut oarecare succes, niciuna n-a rezistat +# cu trecerea timpului. +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" -msgstr "" +msgstr "%s: nu este o comandă internă" -#: builtins/common.c:323 -#, fuzzy, c-format +#: builtins/common.c:330 +#, c-format msgid "write error: %s" -msgstr "eroare de legătură (pipe): %s" +msgstr "eroare de scriere: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" -msgstr "" +msgstr "eroare la configurarea atributelor terminalului: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" -msgstr "" +msgstr "eroare la obținerea atributelor terminalului: %s" -#: builtins/common.c:635 +# - Eroare la preluarea... +# - Eroare la obținerea... +# - Eroare la recuperarea... +# Am ales prima variantă, dar este cea mai bună, +# în contextul dat? +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" -msgstr "" +msgstr "%s: eroare la preluarea directorului curent: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 -#, fuzzy, c-format +#: builtins/common.c:708 builtins/common.c:710 +#, c-format msgid "%s: ambiguous job spec" -msgstr "%s: Redirectare ambiguă" +msgstr "%s: specificație de lucrare, ambiguă" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" -msgstr "" - -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 -#, fuzzy, c-format +msgstr "ajutorul nu este disponibil în această versiune" + +# R-GC, scrie: +# după revizarea fișierului, DȘ, spune: +# „→ ce zici de „readonly” = „protejat la scriere” (cam lung dar parcă este mai sugestiv)” +# === +# nu cred c-ar fi o problemă asta, odată ce face +# ca mesajul să fie mai clar, mai sugestiv; dar +# cred că introduce o întrebare: +# de cine/contra cui este protejat? +# *** +# cel puțin de moment, dacă nu definitiv, voi +# aplica sugestia făcută, asupra acestui mesaj +# și aaltora asemănătoare... +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 +#, c-format msgid "%s: cannot unset: readonly %s" -msgstr "%s: nu s-a putut crea: %s" +msgstr "%s: nu se poate deconfigura: %s este protejat la scriere" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 -#, fuzzy, c-format +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 +#, c-format msgid "%s: cannot unset" -msgstr "%s: nu s-a putut crea: %s" +msgstr "%s: nu se poate deconfigura" #: builtins/complete.def:287 #, c-format msgid "%s: invalid action name" -msgstr "" +msgstr "%s: nume de acțiune nevalid" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +# Întrebare: +# nicio... +# sau +# nu există (o)... +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" -msgstr "" +msgstr "%s: nicio specificație de completare" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" -msgstr "" +msgstr "avertisment: este posibil ca opțiunea „-F” să nu funcționeze așa cum vă așteptați" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" -msgstr "" - -#: builtins/complete.def:838 +msgstr "avertisment: este posibil ca opțiunea „-C” să nu funcționeze așa cum vă așteptați" + +# Întrebare: +# - În prezent ... +# - În acest moment ... +# - În momentul actual ... +# este formula adecvată contextului? +#: builtins/complete.def:846 msgid "not currently executing completion function" -msgstr "" +msgstr "în prezent funcția de completare nu rulează" -#: builtins/declare.def:134 -#, fuzzy +#: builtins/declare.def:137 msgid "can only be used in a function" -msgstr "poate fi folosit doar într-o funcție, și face ca variabila NUME" +msgstr "poate fi folosit doar într-o funcție" + +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "nu se poate utiliza „-f” pentru a face funcții" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funcție protejată la scriere" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: variabila de referință nu poate fi o matrice" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "" +msgstr "%s: nu sunt permise auto-referințele la variabile nameref" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" -msgstr "" +msgstr "%s: referință de nume circulară" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +# R-GC, scrie: +# după revizarea fișierului, DȘ, spune: +# „→ cred că s-ar putea pune ghilimele românești” +# === +# corecție aplicată +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" -msgstr "" - -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "" +msgstr "„%s”: nume de variabilă nevalid pentru referință la nume" -#: builtins/declare.def:526 execute_cmd.c:5986 +# Problemă: +# in this way = în acest fel +# in this way = în acest mod +# in this way = de această formă +# Mă refer la această intrare, care dintre cele +# 3 opțiuni, este cea mai bună? +#: builtins/declare.def:856 #, c-format -msgid "%s: readonly function" -msgstr "%s: funcție doar în citire (readonly)" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "" - -#: builtins/declare.def:838 -#, fuzzy, c-format msgid "%s: cannot destroy array variables in this way" -msgstr "$%s: nu se poate asigna în acest mod" +msgstr "%s: nu se pot distruge variabilele matrice în acest fel" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "" +msgstr "%s: nu se poate converti o matrice asociativă într-o matrice indexată" -#: builtins/enable.def:143 builtins/enable.def:151 +# Întrebare: +# - se poate formula mai bine, de exp.: +# alocarea matricei compuse, între ghilimele; este perimată-învechită +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: alocarea de matrice compusă între ghilimele este perimată" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" -msgstr "" +msgstr "încărcarea dinamică nu este disponibilă" -#: builtins/enable.def:343 -#, fuzzy, c-format +#: builtins/enable.def:376 +#, c-format msgid "cannot open shared object %s: %s" -msgstr "nu pot deschide legătura numită %s pentru %s: %s" +msgstr "nu poate deschide obiectul partajat %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" -msgstr "" +msgstr "nu se poate găsi %s în obiectul partajat %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" -msgstr "" +msgstr "%s: comanda internă dinamică a «bash», este deja încărcată" -#: builtins/enable.def:392 +# De revizat... +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "" +msgstr "funcția de încărcare pentru %s returnează eroarea (%d): încărcarea a eșuat" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" -msgstr "" +msgstr "%s: nu este încărcat dinamic" -#: builtins/enable.def:543 -#, fuzzy, c-format +#: builtins/enable.def:577 +#, c-format msgid "%s: cannot delete: %s" -msgstr "%s: nu s-a putut crea: %s" +msgstr "%s: nu se poate șterge: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" -msgstr "%s: este director" +msgstr "%s: este un director" #: builtins/evalfile.c:144 -#, fuzzy, c-format +#, c-format msgid "%s: not a regular file" -msgstr "%s: nu se poate executa fișierul binar" +msgstr "%s: nu este un fișier normal" #: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" -msgstr "" +msgstr "%s: fișierul este prea mare" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nu se poate executa fișierul binar" #: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 -#, fuzzy, c-format +#, c-format msgid "%s: cannot execute: %s" -msgstr "%s: nu s-a putut crea: %s" +msgstr "%s: nu se poate executa: %s" #: builtins/exit.def:64 #, c-format @@ -468,41 +568,40 @@ msgstr "deautentificare\n" #: builtins/exit.def:89 msgid "not login shell: use `exit'" -msgstr "" +msgstr "nu este un shell de autentificare: utilizați „exit”" #: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" -msgstr "" +msgstr "Sunt(există) lucrări oprite.\n" #: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" -msgstr "" +msgstr "Sunt(există) lucrări în execuție.\n" #: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 -#, fuzzy msgid "no command found" -msgstr "%s: comandă negăsită" +msgstr "nu s-a găsit nici-o comandă" #: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 #: builtins/fc.def:412 msgid "history specification" -msgstr "" +msgstr "specificație de istoric" #: builtins/fc.def:444 -#, fuzzy, c-format +#, c-format msgid "%s: cannot open temp file: %s" -msgstr "%s: nu s-a putut crea: %s" +msgstr "%s: nu se poate deschide fișierul temporal: %s" #: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" -msgstr "" +msgstr "actual" #: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" -msgstr "" +msgstr "lucrarea %d a început fără controlul lucrării" #: builtins/getopt.c:110 #, c-format @@ -514,14 +613,21 @@ msgstr "%s: opțiune ilegală -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: opțiunea necesită un parametru: -- %c\n" +# NOTĂ: +# cred că aceasta este cea mai bună traducere posibilă! +# Am frunzărit traducerile celorlalte echipe de traducere latine (nu mi-a scăpat niciuna, în afară de cea galiciană, care obligă la descărcarea fișierului pentru al vedea) +# În cea a echipei spaniole, a tradus mesajul ca: +# asociación desactivada +# ce mi s-a părut cea mai apropiată contextului în care apare mesajul: +# #: builtins/hash.def:91 #: builtins/hash.def:91 msgid "hashing disabled" -msgstr "" +msgstr "asocierea este desactivată" #: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" -msgstr "" +msgstr "%s: tabelul de asociere este gol\n" #: builtins/hash.def:267 #, c-format @@ -531,28 +637,29 @@ msgstr "potriviri\tcomandă\n" #: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Comenzile Shell care se potrivesc cu cuvântul cheie „" +msgstr[1] "Comenzile Shell care se potrivesc cu cuvintele cheie „" +msgstr[2] "Comenzile Shell care se potrivesc cu cuvintele cheie „" #: builtins/help.def:135 msgid "" "'\n" "\n" msgstr "" +"”\n" +"\n" #: builtins/help.def:185 #, c-format -msgid "" -"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "" +msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "niciun subiect de ajutor nu se potrivește cu „%s”. Încercați «help help» sau «man -k %s» sau «info %s»." -#: builtins/help.def:224 -#, fuzzy, c-format +#: builtins/help.def:223 +#, c-format msgid "%s: cannot open: %s" -msgstr "%s: nu s-a putut crea: %s" +msgstr "%s: nu se poate deschide: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -563,129 +670,141 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" +"Aceste comenzi shell, sunt definite intern. Tastează «help», pentru a vedea\n" +"această listă.\n" +"Tastează «help nume_funcție» pentru a afla mai multe despre funcția „nume_funcție”.\n" +"Utilizați «info bash» pentru a afla mai multe despre shell în general.\n" +"Utilizați «man -k» sau «info» pentru a afla mai multe despre comenzile care nu\n" +"sunt în această listă.\n" +"\n" +"O stea (*) în dreptul unui nume înseamnă că acea comandă este dezactivată.\n" +"\n" -#: builtins/history.def:155 +# Propunere: +# Mă gîndesc dacă n-ar suna mai bine fraza, dacă +# înlocuiesc „unul” cu „un argument”, așa: +# nu se poate folosi mai mult de un argument dintre -anrw +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" -msgstr "" +msgstr "nu se poate folosi mai mult de o opțiune dintre „-a, -n, -r sau -w”" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" -msgstr "" +msgstr "poziție în registrul istoric al comenzilor" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" -msgstr "" +msgstr "%s: marcaj de timp nevalid" -#: builtins/history.def:451 -#, fuzzy, c-format +#: builtins/history.def:449 +#, c-format msgid "%s: history expansion failed" -msgstr "%s: se așteaptă expresie întreagă (integer)" +msgstr "%s: a eșuat expansiunea istoriei" #: builtins/inlib.def:71 -#, fuzzy, c-format +#, c-format msgid "%s: inlib failed" -msgstr "%s: variabilă fără limită" +msgstr "%s: a eșuat inlib" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" -msgstr "" +msgstr "nu sunt permise alte opțiuni cu „-x”" #: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "" +msgstr "%s: argumentele trebuie să fie ID-uri de proces sau de lucrări" #: builtins/kill.def:274 -#, fuzzy msgid "Unknown error" -msgstr "Eroare necunoscută %d" +msgstr "Eroare necunoscută" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "se așteaptă expresie" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" -msgstr "" +msgstr "%s: nu este o matrice indexată" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" -msgstr "" +msgstr "%s: specificație de descriptor de fișier nevalidă" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" -msgstr "" +msgstr "%d: descriptor de fișier nevalid: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" -msgstr "" +msgstr "%s: contorizare de linii nevalidă" -#: builtins/mapfile.def:299 -#, fuzzy, c-format +#: builtins/mapfile.def:304 +#, c-format msgid "%s: invalid array origin" -msgstr "%s:subscriere interval invalid" +msgstr "%s: origine matrice nevalid" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" -msgstr "" +msgstr "%s: cuantum de apel invers nevalid" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" -msgstr "" +msgstr "nume de variabilă matrice gol" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" -msgstr "" +msgstr "este necesar suport pentru variabilă matrice" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" -msgstr "" +msgstr "„%s”: lipsește caracterul de format" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" -msgstr "" +msgstr "„%c”: specificație a formatului de timp nevalidă" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" -msgstr "" +msgstr "„%c”: caracter de format nevalid" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" -msgstr "" +msgstr "avertizare: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "problemă cu analizarea formatului: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" -msgstr "" +msgstr "lipsește o cifră hexazecimală pentru \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" -msgstr "" +msgstr "lipsește o cifră unicode pentru \\%c" #: builtins/pushd.def:199 msgid "no other directory" msgstr "niciun alt director" #: builtins/pushd.def:360 -#, fuzzy, c-format +#, c-format msgid "%s: invalid argument" -msgstr "%s necesită un parametru" +msgstr "%s argument nevalid" #: builtins/pushd.def:480 msgid "" @@ -693,12 +812,22 @@ msgstr "" #: builtins/pushd.def:524 msgid "directory stack empty" -msgstr "" +msgstr "stiva de directoare este goală" #: builtins/pushd.def:526 msgid "directory stack index" -msgstr "" - +msgstr "indexul stivei de directoare" + +# R-GC, scrie: +# după revizarea fișierului, DȘ, spune: +# «→ aș pune „directorul personal” în loc de „acasă”» +# === +# nu-mi prea place să amestec numele lucurilor, +# cu definiția lor, în acest caz: +# „directorul acasă → directorul personal al utilizatorului” +# voi face aceasă schimbare, în cazul în care, +# autorul numește home folder, în loc de +# home directory #: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" @@ -714,14 +843,30 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown by\n" "\tdirs when invoked without options, starting with zero." msgstr "" +"Afișează lista curentă a directoarelor memorate. Directoarele\n" +" sunt adăugate la această listă cu comanda «pushd» și sunt eliminate din\n" +" ea, cu comanda «popd».\n" +" \n" +" Opțiuni:\n" +" -c\tgolește stiva de directoare prin ștergerea tuturor elementelor\n" +" -l\tnu afișează versiuni scurtate (cu ~) ale directoarelor în raport cu\n" +" \tdirectorul dumneavoastră «acasă»\n" +" -p\timprimă stiva de directoare cu o intrare pe linie\n" +" -v\timprimă stiva de directoare cu o intrare pe linie, prefixată cu poziția\n" +" \tsa în stivă\n" +" \n" +" Argumente:\n" +" +N\tAfișează a N-a intrare numărând din stânga listei afișate de «dirs»,\n" +" \tatunci când este invocată fără opțiuni, începând cu zero.\n" +" \n" +" -N\tAfișează a N-a intrare numărând din dreapta listei afișate de «dirs»,\n" +"\tatunci când este invocată fără opțiuni, începând cu zero." #: builtins/pushd.def:723 msgid "" @@ -747,6 +892,27 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" +"Adaugă un director în partea de sus a stivei de directoare sau rotește\n" +" stiva, făcând din noul director din partea de sus a stivei, directorul de\n" +" lucru curent. Fără argumente, interschimbă primele două directoare.\n" +" \n" +" Opțiuni:\n" +" -n\tSuprimă schimbarea normală a directorului atunci când se\n" +" \tadaugă directoare la stivă, astfel încât numai stiva este manipulată.\n" +" \n" +" Argumente:\n" +" +N\tRotește stiva astfel încât al N-lea director (numărând din\n" +" \tstânga listei afișate de «dirs», începând cu zero) să fie în\n" +" \tpartea de sus.\n" +" \n" +" -N\tRotește stiva astfel încât al N-lea director (numărând din\n" +" \tdreapta listei afișate de «dirs», începând cu zero) să fie în\n" +" \tpartea de sus.\n" +" \n" +" dir\tAdaugă DIR la stiva de directoare din partea de sus,\n" +" \tfăcându-l noul director de lucru curent.\n" +" \n" +" Comanda internă «dirs» arată stiva curentă de directoare." #: builtins/pushd.def:748 msgid "" @@ -768,67 +934,105 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" +"Elimină intrările din stiva de directoare. Fără argumente, elimină directorul\n" +" din partea de sus a stivei, și trece la cel cea devenit noul director de sus\n" +" a stivei.\n" +" \n" +" Opțiuni:\n" +" -n\tSuprimă schimbarea normală a directorului atunci când se elimină\n" +" \tdirectoare din stivă, astfel încât numai stiva este manipulată.\n" +" \n" +" Argumente:\n" +" +N\tElimină intrarea a N-a numărând din stânga listei afișate de «dirs»,\n" +" \tîncepând cu zero. De exemplu: «popd +0» elimină primul director,\n" +" \t«popd +1» al doilea director, șamd.\n" +" \n" +" -N\tElimină intrarea a N-a numărând din dreapta listei afișate de «dirs»,\n" +" \tîncepând cu zero. De exemplu: «popd -0» elimină ultimul director,\n" +" \t„popd -1” penultimul director, șamd.\n" +" \n" +" Comanda internă «dirs» arată stiva curentă de directoare." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" -msgstr "" +msgstr "%s: specificație a timpului de expirare nevalidă" -#: builtins/read.def:755 -#, fuzzy, c-format +#: builtins/read.def:827 +#, c-format msgid "read error: %d: %s" -msgstr "eroare de legătură (pipe): %s" - +msgstr "eroare de citire: %d: %s" + +# Comentariu: +# Eram un pic indecis asupra formei finale a traducerii, +# așa că am început să trag cu ochiul la traducerile +# celorlalți latini, așa am descoperit la brazilieni, +# francezi și spanioli(în ordine alfabetică), formula +# magică pentru această traducere: +# 1. +# msgstr "possível retornar (`return') apenas de uma função ou script carregado (com `source')" +# 2. +# msgstr "« return » n'est possible que depuis une fonction ou depuis un script exécuté par « source »" +# 3. +# msgstr "sólo se puede usar `return' desde una función o un script leído con `source'" #: builtins/return.def:68 msgid "can only `return' from a function or sourced script" -msgstr "" +msgstr "„return”, se poate utiliza doar de la o funcție sau script executat(ă) de la „source”" +# R-GC, scrie: +# după revizarea fișierului, DȘ, spune: +# „→ nu se pot anula...” +# === +# Ok, corecție aplicată #: builtins/set.def:869 -#, fuzzy msgid "cannot simultaneously unset a function and a variable" -msgstr "poate fi folosit doar într-o funcție, și face ca variabila NUME" +msgstr "nu se pot anula simultan o funcție și o variabilă" -#: builtins/set.def:966 -#, fuzzy, c-format +#: builtins/set.def:969 +#, c-format msgid "%s: not an array variable" -msgstr "%s: variabilă fără limită" +msgstr "%s: nu este o variabilă matrice" #: builtins/setattr.def:189 -#, fuzzy, c-format +#, c-format msgid "%s: not a function" -msgstr "%s: funcție doar în citire (readonly)" +msgstr "%s: nu este o funcție" #: builtins/setattr.def:194 -#, fuzzy, c-format +#, c-format msgid "%s: cannot export" -msgstr "%s: nu s-a putut crea: %s" +msgstr "%s: nu se poate exporta" #: builtins/shift.def:72 builtins/shift.def:79 -#, fuzzy msgid "shift count" -msgstr "shift [n]" - -#: builtins/shopt.def:310 +msgstr "contor deplasare(shift)" + +# R-GC, scrie: +# după revizarea fișierului, DȘ, spune: +# «→ similar și aici: „nu se pot activa ... ”» +# === +# Ok, corecție aplicată +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" -msgstr "" +msgstr "nu se pot activa și dezactiva simultan opțiunile de shell" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" -msgstr "" +msgstr "%s: nume nevalid al opțiunii shell" #: builtins/source.def:128 msgid "filename argument required" -msgstr "" +msgstr "este necesar argumentul nume_de_fișier" #: builtins/source.def:154 -#, fuzzy, c-format +#, c-format msgid "%s: file not found" -msgstr "%s: comandă negăsită" +msgstr "%s: nu s-a găsit fișierul" #: builtins/suspend.def:102 msgid "cannot suspend" -msgstr "" +msgstr "nu se poate suspenda" #: builtins/suspend.def:112 msgid "cannot suspend a login shell" @@ -837,12 +1041,12 @@ msgstr "nu se poate suspenda un shell de autentificare" #: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "" +msgstr "%s este un alias pentru „%s”\n" #: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" -msgstr "" +msgstr "%s este un cuvânt cheie shell\n" #: builtins/type.def:275 #, c-format @@ -852,66 +1056,65 @@ msgstr "%s este o funcție\n" #: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" -msgstr "" +msgstr "%s este o comandă internă specială a shell\n" #: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" -msgstr "" +msgstr "%s este o comandă internă a shell\n" #: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" -msgstr "" +msgstr "%s este %s\n" +# sau: este mărunțit/fragmentat ? #: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" -msgstr "" +msgstr "%s este asociat(hashed) (%s)\n" #: builtins/ulimit.def:400 #, c-format msgid "%s: invalid limit argument" -msgstr "" +msgstr "%s: limită de argument nevalidă" #: builtins/ulimit.def:426 -#, fuzzy, c-format +#, c-format msgid "`%c': bad command" -msgstr "%c%c: opțiune invalidă" +msgstr "„%c”: comandă incorectă" -#: builtins/ulimit.def:455 -#, fuzzy, c-format +#: builtins/ulimit.def:464 +#, c-format msgid "%s: cannot get limit: %s" -msgstr "%s: nu s-a putut crea: %s" +msgstr "%s: nu se poate obține limita: %s" -#: builtins/ulimit.def:481 -#, fuzzy +#: builtins/ulimit.def:490 msgid "limit" -msgstr "limită CPU" +msgstr "limită" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 -#, fuzzy, c-format +#: builtins/ulimit.def:502 builtins/ulimit.def:802 +#, c-format msgid "%s: cannot modify limit: %s" -msgstr "%s: nu s-a putut crea: %s" +msgstr "%s: nu se poate modifica limita: %s" #: builtins/umask.def:115 -#, fuzzy msgid "octal number" -msgstr "număr de semnal invalid" +msgstr "număr octal" #: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "" +msgstr "„%c”: operator de mod simbolic nevalid" #: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "" +msgstr "„%c”: caracter de mod simbolic nevalid" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " -msgstr "" +msgstr " linie " #: error.c:164 #, c-format @@ -921,109 +1124,123 @@ msgstr "ultima comandă: %s\n" #: error.c:172 #, c-format msgid "Aborting..." -msgstr "" +msgstr "Se abandonează..." #. TRANSLATORS: this is a prefix for informational messages. #: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "RAPORT: " + +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "Avertisment de DEPANARE: " -#: error.c:462 +#: error.c:488 msgid "unknown command error" msgstr "eroare de comandă necunoscută" -#: error.c:463 +#: error.c:489 msgid "bad command type" -msgstr "tip rău de comandă" +msgstr "tip de comandă greșit" -#: error.c:464 -#, fuzzy +#: error.c:490 msgid "bad connector" -msgstr "conector greșit `%d'" +msgstr "conector greșit" -#: error.c:465 +#: error.c:491 msgid "bad jump" -msgstr "salt rău" +msgstr "salt eronat" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" -msgstr "%s: variabilă fără limită" +msgstr "%s: variabilă neasociată" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" -msgstr "\aa expirat așteptând introducerea datelor: auto-logout\n" +msgstr "\atimed expirat așteptând introducerea datelor: auto-logout\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" -msgstr "" +msgstr "nu se poate redirecționa intrarea standard de la /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" -msgstr "" +msgstr "TIMEFORMAT: „%c”: caracter de format nevalid" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] încă există" -#: execute_cmd.c:2486 -#, fuzzy +#: execute_cmd.c:2524 msgid "pipe error" -msgstr "eroare de legătură (pipe): %s" +msgstr "eroare de linie de conectare" -#: execute_cmd.c:4793 +# Opinie/Motivație: +# am ales să traduc nesting = suprapunere +# și nu +# nesting = imbricare +# pentru că consider că este vorba de efectul procesului (evaluările, ce vin una după alta,suprapunîndu-se) și nu de-a numi procesul în sine +# În plus, mi se pare că sună mult mai normal la ureche +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "" +msgstr "eval: s-a depășit nivelul maxim de suprapunere de «eval» (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "" +msgstr "%s: s-a depășit nivelul maxim de suprapunere de citiri cu «source» (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: s-a depășit nivelul maxim de suprapunere de funcții (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor" +msgstr "%s: limitat: nu se poate specifica „/” în numele comenzilor" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: comandă negăsită" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" -msgstr "" +msgstr "%s: %s" + +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: nu se poate executa: fișierul necesar nu a fost găsit" -#: execute_cmd.c:5854 -#, fuzzy, c-format +#: execute_cmd.c:6000 +#, c-format msgid "%s: %s: bad interpreter" -msgstr "%s: este director" +msgstr "%s: %s: interpret greșit" -#: execute_cmd.c:5891 -#, fuzzy, c-format +#: execute_cmd.c:6037 +#, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s: nu se poate executa fișierul binar" +msgstr "%s: nu se poate executa fișierul binar: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" -msgstr "" +msgstr "„%s”: este o comandă internă specială" -#: execute_cmd.c:6029 -#, fuzzy, c-format +#: execute_cmd.c:6175 +#, c-format msgid "cannot duplicate fd %d to fd %d" -msgstr "nu se poate duplica fd %d în fd 0: %s" +msgstr "nu se poate duplica descriptorul de fișier %d în descriptorul de fișier %d" #: expr.c:263 msgid "expression recursion level exceeded" @@ -1031,372 +1248,395 @@ msgstr "nivel de recursivitate al expresiei depășit" #: expr.c:291 msgid "recursion stack underflow" -msgstr "stivă recursivă prea puțin folosită (underflow)" +msgstr "stivă recursivă sub nivelul de depășire" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "eroare de sintaxă în expresie" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "s-a încercat asignare către non-variabilă" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "eroare de sintaxă în atribuirea variabilei" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "împărțire la 0" -#: expr.c:592 -#, fuzzy +#: expr.c:593 msgid "bug: bad expassign token" -msgstr "bug: identificator(token) expassign greșit %d" +msgstr "eroare: simbol de atribuire al expresiei greșit" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" -msgstr "`:' așteptat după expresie condițională" +msgstr "se aștepta „:” după expresia condițională" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" -msgstr "" +msgstr "exponent mai mic de 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "" +msgstr "se aștepta un identificator după pre-increment sau pre-decrement" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" -msgstr "`)' lipsă" +msgstr "„)” lipsește" -#: expr.c:1107 expr.c:1487 -#, fuzzy +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" -msgstr "eroare de sintaxă: sfârșit de fișier neașteptat" +msgstr "eroare de sintaxă: se aștepta un operand" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" -msgstr "" +msgstr "eroare de sintaxă: operator aritmetic nevalid" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (identificatorul erorii este „%s”)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" -msgstr "" - -#: expr.c:1582 +msgstr "bază aritmetică nevalidă" + +# R-GC, scrie: +# cum „constantă întreagă nevalidă”, nu mă +# atrăgea prea mult, am adaptat traducerea +# la ce se vede +# *** +# după revizarea fișierului, DȘ, spune: +# «→ un mic typo la „întreg”» +# === +# Ok, corecție aplicată; graba... e de vină +#: expr.c:1587 msgid "invalid integer constant" -msgstr "" +msgstr "constantă de număr întreg nevalidă" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "valoare prea mare pentru bază" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: eroare în expresie\n" #: general.c:70 -#, fuzzy msgid "getcwd: cannot access parent directories" -msgstr "getwd: nu s-au putut accesa directoarele părinte" +msgstr "getcwd: nu s-au putut accesa directoarele părinte" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" -msgstr "" +msgstr "nu se poate redefini modul „nodelay” pentru descriptorul de fișier %d" #: input.c:266 -#, fuzzy, c-format +#, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" -msgstr "" -"nu se poate aloca descriptor de fișier nou pentru inputul bash din fd %d: %s" +msgstr "nu se poate aloca un nou descriptor de fișier pentru intrarea bash din fd %d" #: input.c:274 -#, fuzzy, c-format +#, c-format msgid "save_bash_input: buffer already exists for new fd %d" -msgstr "check_bash_input: buffer deja existent pentru fd nou %d" +msgstr "save_bash_input: memorie tampon deja existentă pentru noul descriptor de fișier %d" #: jobs.c:543 msgid "start_pipeline: pgrp pipe" -msgstr "" +msgstr "start_pipeline: linie de conectare pgrp" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -msgstr "" +msgstr "bgp_delete: BUCLĂ: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -msgstr "" +msgstr "bgp_search: BUCLĂ: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "" +msgstr "pid-ul bifurcat %d apare în lucrarea în execuție %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" -msgstr "" +msgstr "se șterge lucrarea oprită %d cu grupul de procese %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" -msgstr "" +msgstr "add_process: pid %5ld (%s) marcat ca încă în viață" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: nu există un asemenea pid" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Semnal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Finalizat" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" -msgstr "Stopat" +msgstr "Oprit" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Oprit(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "În rulare" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Finalizat(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Ieșire %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Stare necunoscută" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:2020 +# NOTĂ: de aflat ce înseamnă: +# wd = +# ===================================== +# NOTA_BENE: +# pe viitor „istețule” uită-te în fișierul de traducere, +# deschis ca text, și vei avea mari șanse să afli +# răspunsul; fără a «gonglear» ca bezmeticul în Internet +#: jobs.c:2009 #, c-format msgid " (wd: %s)" -msgstr " (wd: %s)" +msgstr " (dir.lucru: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" -msgstr "setpgid copil (de la%ld la %ld)" +msgstr "setpgid proces-copil (de la %ld la %ld)" -#: jobs.c:2617 nojobs.c:664 -#, fuzzy, c-format +# NOTĂ: +# «wait», nu se traduce; aici, și în mesajele următoare, +# face parte din categoria cuvintelor ce nu se traduc. +# Datorită contextului în care se află. +#: jobs.c:2608 nojobs.c:666 +#, c-format msgid "wait: pid %ld is not a child of this shell" -msgstr "așteptați: pid-ul %d nu este rezultat(child) al acestui shell" +msgstr "wait: pid %ld nu este un proces-copil al acestui shell" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" -msgstr "" +msgstr "wait_for: Nu există nicio înregistrare a procesului %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" -msgstr "" +msgstr "wait_for_job: lucrarea %d este oprită" -#: jobs.c:3564 -#, fuzzy, c-format +#: jobs.c:3551 +#, c-format msgid "%s: no current jobs" -msgstr "%s: nu s-a putut crea: %s" +msgstr "%s: nu există lucrări actuale" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" -msgstr "%s: jobul a fost terminat" +msgstr "%s: lucrarea a fost terminată" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" -msgstr "" +msgstr "%s: lucrarea %d se află deja în fundal" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" -msgstr "" +msgstr "waitchld: se activează WNOHANG pentru a evita blocarea pe termen nedefinit" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " -msgstr "" +msgstr "%s: linie %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" -msgstr "(wd actual: %s)\n" +msgstr "(dir.lucru actual: %s)\n" -#: jobs.c:4391 -#, fuzzy +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" -msgstr "initialize_jobs: getpgrp eșuat: %s" +msgstr "initialize_job_control: getpgrp a eșuat" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" -msgstr "" +msgstr "initialize_job_control: nu există control de lucrări în fundal" -#: jobs.c:4463 -#, fuzzy +#: jobs.c:4450 msgid "initialize_job_control: line discipline" -msgstr "initialize_jobs: disciplină linie: %s" +msgstr "initialize_job_control: disciplină linie" -#: jobs.c:4473 -#, fuzzy +#: jobs.c:4460 msgid "initialize_job_control: setpgid" -msgstr "initialize_jobs: getpgrp eșuat: %s" +msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" -msgstr "" +msgstr "nu se poate configura grupul de procese din terminal (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" -msgstr "nici un control de job în acest shell" +msgstr "nu există niciun control de lucrări în acest shell" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" -msgstr "" +msgstr "malloc: a eșuat aserțiunea: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" +"\r\n" +"malloc: %s:%d: aserțiune greșită\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "necunoscut" -#: lib/malloc/malloc.c:882 +# Altă formulă de traducere al mesajului, este: +# „malloc: bloc șters din lista disponibilă ” +# Notă, pentru a decide care dintre aceste traduceri, +# rămîne, e nevoie de colaborarea(opinii, sugestii, +# comentarii, etc) ale utilizatorilor de «bash»... +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" -msgstr "" +msgstr "malloc: bloc suprascris pe lista liberă" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" -msgstr "" +msgstr "free: apelat cu un argument bloc deja eliberat" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" -msgstr "" +msgstr "free: apelat cu un argument de bloc nealocat" -#: lib/malloc/malloc.c:994 +# Am tradus inițial mesajul, ca: +# „free: depășire insuficientă detectată; mh_nbytes în afara intervalului” +# formulă actuală mi se pare mai adecvată. contextului, precum și a mesajului din engleză +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" -msgstr "" +msgstr "free: s-a detectat o depășire insuficientă; mh_nbytes în afara intervalului" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" -msgstr "" +msgstr "free: s-a detectat o depășire insuficientă; magic8 corupt" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" -msgstr "" +msgstr "free: dimensiunile bucăților de început și de sfârșit sunt diferite" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" -msgstr "" +msgstr "realloc: apelat cu un argument de bloc nealocat" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" -msgstr "" +msgstr "realloc: s-a detectat o depășire insuficientă; mh_nbytes țn afara intervalului" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" -msgstr "" +msgstr "realloc: s-a detectat o depășire insuficientă; magic8 corupt" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" -msgstr "" +msgstr "realloc: dimensiunile bucăților de început și de sfârșit, diferă" #: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" -msgstr "" +msgstr "register_alloc: tabelul de alocare este plin cu FIND_ALLOC?\n" #: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" -msgstr "" +msgstr "register_alloc: %p deja în tabel ca fiind alocat?\n" #: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" -msgstr "" +msgstr "register_alloc: %p deja în tabel ca liber?\n" #: lib/sh/fmtulong.c:102 msgid "invalid base" -msgstr "" +msgstr "bază nevalidă" #: lib/sh/netopen.c:168 -#, fuzzy, c-format +#, c-format msgid "%s: host unknown" -msgstr "necunoscut" +msgstr "%s: gazdă necunoscută" #: lib/sh/netopen.c:175 #, c-format msgid "%s: invalid service" -msgstr "" +msgstr "%s: serviciu nevalid" #: lib/sh/netopen.c:306 #, c-format msgid "%s: bad network path specification" -msgstr "" +msgstr "%s: specificație incorectă pentru ruta rețelei" #: lib/sh/netopen.c:347 msgid "network operations not supported" -msgstr "" +msgstr "operațiunile de rețea nu sunt acceptate" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" -msgstr "" +msgstr "setlocale: LC_ALL: nu se poate schimba parametrul de limbă (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" -msgstr "" +msgstr "setlocale: LC_ALL: nu se poate schimba parametrul de limbă (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" -msgstr "" +msgstr "setlocale: %s: nu se poate schimba parametrul de limbă (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" -msgstr "" +msgstr "setlocale: %s: nu se poate schimba parametrul de limbă (%s): %s" #: mailcheck.c:439 msgid "You have mail in $_" @@ -1411,795 +1651,797 @@ msgstr "Aveți mail nou în $_" msgid "The mail in %s has been read\n" msgstr "Mailul din %s a fost citit\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "eroare de sintaxă: expresie aritmetică necesară" -#: make_cmd.c:319 -#, fuzzy +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" -msgstr "eroare de sintaxă: sfârșit de fișier neașteptat" +msgstr "eroare de sintaxă: „;” neașteptat" -#: make_cmd.c:320 -#, fuzzy, c-format +#: make_cmd.c:317 +#, c-format msgid "syntax error: `((%s))'" -msgstr "eroare de sintaxă" +msgstr "eroare de sintaxă: „((%s))”" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tip de instrucțiune greșit %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "" +msgstr "«here-document» la linia %d delimitat de sfârșitul fișierului (se aștepta „%s”)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "" +msgstr "make_redirection: instrucțiunea de redirecționare „%d” este în afara intervalului" -#: parse.y:2393 +#: parse.y:2428 #, c-format -msgid "" -"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " -"truncated" -msgstr "" +msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" +msgstr "shell_getc: shell_input_line_size (%zu) depășește SIZE_MAX (%lu): linie trunchiată" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "numărul maxim de «here-document» a fost depășit" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "EOF neașteptat în căutare după potrivirea „%c”" +msgstr "sfârșit neașteptat al fișierului(EOF) în timp ce se căuta coincidența pentru „%c”" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" -msgstr "EOF neașteptat în căutare după „]]”" +msgstr "sfârșit neașteptat al fișierului(EOF) în timp ce se căuta „]]”" -#: parse.y:4701 -#, fuzzy, c-format +#: parse.y:4457 +#, c-format msgid "syntax error in conditional expression: unexpected token `%s'" -msgstr "eroare de sintaxă neașteptată lângă `%s'" +msgstr "eroare de sintaxă în expresia condițională: simbol neașteptat „%s”" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "eroare de sintaxă în expresia condițională" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "" +msgstr "simbol neașteptat „%s”, așteptat „)”" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "se aștepta „)”" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "" +msgstr "argument neașteptat „%s” pentru operatorul unar condițional" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" -msgstr "" +msgstr "argument neașteptat pentru operatorul unar condițional" -#: parse.y:4865 -#, fuzzy, c-format +#: parse.y:4621 +#, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "%s: se așteaptă operator binar" +msgstr "identificator neașteptat „%s”, se aștepta operator binar condițional" -#: parse.y:4869 -#, fuzzy +#: parse.y:4625 msgid "conditional binary operator expected" -msgstr "%s: se așteaptă operator binar" +msgstr "se aștepta operator binar condițional" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "" +msgstr "argument neașteptat „%s” pentru operatorul binar condițional" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" -msgstr "" +msgstr "argument neașteptat pentru operatorul binar condițional" -#: parse.y:4906 -#, fuzzy, c-format +#: parse.y:4662 +#, c-format msgid "unexpected token `%c' in conditional command" -msgstr "`:' așteptat după expresie condițională" +msgstr "identificator neașteptat „%c” în comanda condițională" -#: parse.y:4909 -#, fuzzy, c-format +#: parse.y:4665 +#, c-format msgid "unexpected token `%s' in conditional command" -msgstr "`:' așteptat după expresie condițională" +msgstr "identificator neașteptat „%s” în comanda condițională" -#: parse.y:4913 -#, fuzzy, c-format +#: parse.y:4669 +#, c-format msgid "unexpected token %d in conditional command" -msgstr "`:' așteptat după expresie condițională" +msgstr "identificator neașteptat %d în comanda condițională" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "eroare de sintaxă neașteptată lângă `%s'" +msgstr "eroare de sintaxă neașteptată lângă „%s”" -#: parse.y:6355 -#, fuzzy, c-format +#: parse.y:6137 +#, c-format msgid "syntax error near `%s'" -msgstr "eroare de sintaxă neașteptată lângă `%s'" +msgstr "eroare de sintaxă neașteptată lângă „%s”" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "eroare de sintaxă: sfârșit de fișier neașteptat" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "eroare de sintaxă" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" -msgstr "Folosiți \"%s\" pentru a părăsi shellul.\n" +msgstr "Utilizați „%s” pentru a părăsi shell-ul.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" -msgstr "EOF neașteptat în căutare după perechea lui „)”" +msgstr "sfârșit neașteptat al fișierului în timp ce se căuta după perechea lui „)”" #: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" -msgstr "" +msgstr "completare: funcția „%s” nu a fost găsită" #: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programable_completion: %s: posibilă buclă de reîncercare" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" -msgstr "" +msgstr "progcomp_insert: %s: COMPSPEC null" #: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" -msgstr "print_command: conector greșitr `%d'" +msgstr "print_command: conector greșit „%d”" #: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" -msgstr "" +msgstr "xtrace_set: %d: descriptor de fișier nevalid" #: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" -msgstr "" +msgstr "xtrace_set: indicatorul pentru fișier este NULL" #: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" -msgstr "" +msgstr "xtrace fd (%d) != nrfișier xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" -msgstr "" +msgstr "cprintf: „%c”: caracter de format nevalid" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" -msgstr "" +msgstr "descriptor de fișier în afara intervalului" -#: redir.c:204 -#, fuzzy, c-format +#: redir.c:205 +#, c-format msgid "%s: ambiguous redirect" -msgstr "%s: Redirectare ambiguă" +msgstr "%s: redirectare ambiguă" -#: redir.c:208 -#, fuzzy, c-format +#: redir.c:209 +#, c-format msgid "%s: cannot overwrite existing file" -msgstr "%s: nu se poate accesa(clobber) fișierul existent" +msgstr "%s: nu se poate suprascrie fișierul existent" -#: redir.c:213 -#, fuzzy, c-format +#: redir.c:214 +#, c-format msgid "%s: restricted: cannot redirect output" -msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor" +msgstr "%s: restricționat: nu se poate redirecționa ieșirea" -#: redir.c:218 -#, fuzzy, c-format +#: redir.c:219 +#, c-format msgid "cannot create temp file for here-document: %s" -msgstr "nu pot face legătură (pipe) pentru substituția procesului: %s" +msgstr "nu se poate crea un fișier temporar pentru «here-document»: %s" -#: redir.c:222 -#, fuzzy, c-format +#: redir.c:223 +#, c-format msgid "%s: cannot assign fd to variable" -msgstr "%s: nu pot asigna listă membrului intervalului" - -#: redir.c:649 +msgstr "%s: nu se poate atribui descriptorul de fișier variabilei" + +# Întrebare: este mai bine/corect +# „..... fără o conexiune de rețea” +# sau, +# ”fără a avea o conexiune la rețea”? +# *** +# după revizarea fișierului, DȘ, spune: +# «→conexiunea trebuie să fie LA rețea în ambele cazuri, „conexiune de rețea” este doar un tip de conexiune (fizică sau virtuală), iar „conexiunea la rețea” reprezintă accesul calculatorului la o rețea anume. (aici se subînțelege o rețea de alte calulatoare fie ea LAN sau WAN)» +# === +# Ok, corecție aplicată +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" -msgstr "" +msgstr "nu se admite «/dev/(tcp|udp)/host/port» fără a avea o conexiune la rețea" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 -#, fuzzy +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" -msgstr "eroare de redirectare" +msgstr "eroare de redirectare: nu se poate duplica descriptorul de fișier" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" -msgstr "" +msgstr "nu s-a putut găsi «/tmp», vă rugăm să-l creați!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" -msgstr "" +msgstr "«/tmp» trebuie să fie un nume de director valid" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" -msgstr "" +msgstr "modul de imprimare „drăguț” este ignorat în shell-urile interactive" -#: shell.c:948 -#, fuzzy, c-format +#: shell.c:972 +#, c-format msgid "%c%c: invalid option" -msgstr "%c%c: opțiune invalidă" +msgstr "%c%c: opțiune nevalidă" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "" +msgstr "nu se poate stabili uid la %d: uid efectiv %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "" +msgstr "nu se poate stabili gid la %d: gid efectiv %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "nu se poate porni depanatorul; modul de depanare a fost dezactivat" -#: shell.c:1632 -#, fuzzy, c-format +#: shell.c:1658 +#, c-format msgid "%s: Is a directory" -msgstr "%s: este director" +msgstr "%s: Este un director" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Nu am nici un nume!" -#: shell.c:2035 -#, fuzzy, c-format +#: shell.c:2061 +#, c-format msgid "GNU bash, version %s-(%s)\n" -msgstr "GNU %s, versiunea %s\n" +msgstr "GNU bash, versiunea %s-(%s)\n" -#: shell.c:2036 +# R-GC, scrie: +# acest mesaj, și următoarele, pot să fie +# vizualizate, rulînd comanda: +# «bash --help». +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -"Folosire:\t%s [GNU opțiune lungă] [opțiune] ...\n" -"\t%s [GNU opțiune lungă] [opțiune] fișier script ...\n" +"Utilizare:\t%s [GNU opțiune lungă] [opțiune] ...\n" +"\t%s [GNU opțiune lungă] [opțiune] fișier-script ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Opțiuni lungi GNU:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Opțiuni ale shell-ului:\n" -#: shell.c:2043 -#, fuzzy +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "\t-irsD sau -c comandă\t\t(doar invocație)\n" +msgstr "\t-ilrsD sau -c comandă sau -O shopt_option\t\t(doar invocare)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s sau -o opțiune\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" -msgstr "" -"Apăsați `%s -c \"set-ajutor\"' pentru mai multe informații despre opțiunile " -"shell-ului.\n" +msgstr "Tastați «%s -c \"help set\"» pentru mai multe informații despre opțiunile shell-ului.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" -msgstr "" -"Apăsați `%s -c ajutor' pentru mai multe informații despre comenzile interne " -"ale shell-ului.\n" +msgstr "Tastați «%s -c help» pentru mai multe informații despre comenzile interne ale shell-ului.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "" +msgstr "Utilizați comanda «bashbug» pentru a raporta erori.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "Pagina principală a lui „bash”: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" -msgstr "" +msgstr "Ajutor general pentru utilizarea software-ului GNU: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" -msgstr "" +msgstr "sigprocmask: %d: operație nevalidă" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Semnal fals" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" -msgstr "Deconectare" +msgstr "Deconectare/Terminare anormală(Hangup)" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Întrerupere" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Părăsire" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Instrucțiune ilegală" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" -msgstr "BPT trace/trap" +msgstr "Punct de întrerupere de urmărire/capturare" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Instrucțiune ABORT" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Instrucțiune EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" -msgstr "Excepție virgulă mobilă" +msgstr "Excepție de virgulă mobilă" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" -msgstr "Terminat(killed)" +msgstr "Omorât" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" -msgstr "Eroare de bus" +msgstr "Eroare de magistrală de date(bus)" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" -msgstr "Eroare de segmentare (Segmentation fault)" +msgstr "Eroare de segmentare" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" -msgstr "Apelare sistem invalidă" +msgstr "Apel de sistem incorect" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" -msgstr "Legătură(pipe) întreruptă" +msgstr "Linie de conectare întreruptă" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" -msgstr "Ceas alarmă" +msgstr "Ceas cu alarmă" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Terminat" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" -msgstr "Condiție IO urgentă" +msgstr "Condiție In/Ieș urgentă" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Oprit (semnal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Continuare" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" -msgstr "Succesor mort sau oprit" +msgstr "Proces-copil mort sau oprit" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Oprit (tty input)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Oprit (tty output)" -#: siglist.c:146 +# Se referă la: dispozitiv(de intrare/de ieșire) +#: siglist.c:147 msgid "I/O ready" -msgstr "I/O pregătit" +msgstr "In/Ieș pregătită" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Limită CPU" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Limită fișier" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarmă (virtual)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarmă (profil)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Fereastră schimbată" -#: siglist.c:170 +# De moment rămîne traducerea veche: +# „Reținere (lock) înregistrare” +# Dar, cred că: +# Blocare înregistrare, este formula corectă... +# *** +# l-am modificat la revizare +#: siglist.c:171 msgid "Record lock" -msgstr "Reținere (lock) înregistrare" +msgstr "Blocare înregistrare" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Semnal utilizator 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Semnal utilizator 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" -msgstr "Date de intrare HFT în curs de rezolvare(pending)" +msgstr "Date de intrare HFT în curs de rezolvare" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "probleme electrice iminente" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" -msgstr "crash de sistem iminent" +msgstr "cădere iminentă a sistemului" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "migrare proces spre alt CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "eroare de programare" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" -msgstr "Mod monitor HFT acordat" +msgstr "Modul de monitor HFT a fost acordat" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" -msgstr "Mod monitor HFT retras" +msgstr "Modul de monitor HFT a fost retras" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" -msgstr "Secvență de sunet HFT completată" +msgstr "Secvența de sunet HFT a fost completată" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" -msgstr "" +msgstr "Solicitare de informație" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" -msgstr "Semnal Necunoscut #%d" +msgstr "Semnal necunoscut #%d" -#: subst.c:1476 subst.c:1666 -#, fuzzy, c-format +#: subst.c:1480 subst.c:1670 +#, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "substituție invalidă: nu există '%s' în %s" +msgstr "înlocuire greșită: nu se închide „%s” în %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" -msgstr "%s: nu pot asigna listă membrului intervalului" +msgstr "%s: nu se poate atribui o listă unui membru al matricei" -#: subst.c:5910 subst.c:5926 -#, fuzzy +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" -msgstr "nu pot face legătură (pipe) pentru substituția procesului: %s" +msgstr "nu se poate crea linia de conectare pentru substituția procesului" -#: subst.c:5985 -#, fuzzy +#: subst.c:6124 msgid "cannot make child for process substitution" -msgstr "nu pot crea un proces copil pentru substituirea procesului: %s" +msgstr "nu se poate crea un proces-copil pentru substituirea procesului: %s" -#: subst.c:6059 -#, fuzzy, c-format +#: subst.c:6198 +#, c-format msgid "cannot open named pipe %s for reading" -msgstr "nu pot deschide legătura numită %s pentru %s: %s" +msgstr "nu se poate deschide linia de conectare numită %s pentru citire" -#: subst.c:6061 -#, fuzzy, c-format +#: subst.c:6200 +#, c-format msgid "cannot open named pipe %s for writing" -msgstr "nu pot deschide legătura numită %s pentru %s: %s" +msgstr "nu se poate deschide linia de conectare numită %s pentru scriere" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" -msgstr "nu se poate duplica țeava numită %s ca fd %d" +msgstr "nu se poate duplica linia de conectare numită %s ca fd %d" -#: subst.c:6213 -#, fuzzy +#: subst.c:6370 msgid "command substitution: ignored null byte in input" -msgstr "substituție invalidă: nu există ')' de final în %s" +msgstr "substituție de comandă: octetul null din intrare este ignorat" -#: subst.c:6353 -#, fuzzy +#: subst.c:6533 msgid "cannot make pipe for command substitution" -msgstr "nu pot face legături(pipes) pentru substituția de comenzi: %s" +msgstr "nu se poate crea linia de conectare pentru substituția de comandă" -#: subst.c:6397 -#, fuzzy +#: subst.c:6580 msgid "cannot make child for command substitution" -msgstr "nu pot crea un copil pentru substituția de comenzi: %s" +msgstr "nu se poate crea un proces-copil pentru substituția de comandă" -#: subst.c:6423 -#, fuzzy +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "command_substitute: nu se poate duplica legătura (pipe) ca fd 1: %s" +msgstr "command_substitute: nu se poate duplica linia de conectare ca descriptor de fișier 1(fd 1)" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "" +msgstr "%s: nume de variabilă nevalid pentru referința numelui" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" -msgstr "" +msgstr "%s: extindere indirectă nevalidă" -#: subst.c:7013 subst.c:7177 -#, fuzzy, c-format +#: subst.c:7212 subst.c:7377 +#, c-format msgid "%s: invalid variable name" -msgstr "%s: variabilă fără limită" +msgstr "%s: nume de variabilă nevalid" -#: subst.c:7256 -#, fuzzy, c-format +#: subst.c:7478 +#, c-format msgid "%s: parameter not set" -msgstr "%s: parametru null sau nesetat" +msgstr "%s: parametru nedefinit" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" -msgstr "%s: parametru null sau nesetat" +msgstr "%s: parametru nul sau nedefinit" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expresie subșir < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" -msgstr "%s: substituție invalidă" +msgstr "%s: substituție nevalidă" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nu se poate asigna în acest mod" -#: subst.c:9814 -msgid "" -"future versions of the shell will force evaluation as an arithmetic " -"substitution" -msgstr "" +#: subst.c:10111 +msgid "future versions of the shell will force evaluation as an arithmetic substitution" +msgstr "versiunile viitoare ale shell-ului vor forța evaluarea ca o substituție aritmetică" -#: subst.c:10367 -#, fuzzy, c-format +#: subst.c:10795 +#, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "substituție invalidă: nu există ')' de final în %s" +msgstr "înlocuire greșită: fără „`” de închidere în %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" -msgstr "" +msgstr "nicio potrivire: %s" #: test.c:147 msgid "argument expected" -msgstr "se așteaptă parametru" +msgstr "se aștepta un parametru" #: test.c:156 #, c-format msgid "%s: integer expression expected" -msgstr "%s: se așteaptă expresie întreagă (integer)" +msgstr "%s: se aștepta o expresie întreagă (integer)" #: test.c:265 msgid "`)' expected" -msgstr "se așteaptă `)'" +msgstr "se aștepta „)'”" #: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "se așteaptă `)', s-a primit %s" +msgstr "se aștepta „)”, s-a găsit %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: se așteaptă operator binar" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: se așteaptă operator unar" -#: test.c:881 +#: test.c:896 msgid "missing `]'" -msgstr "lipsește ']'" +msgstr "lipsește „]”" -#: test.c:899 -#, fuzzy, c-format +#: test.c:914 +#, c-format msgid "syntax error: `%s' unexpected" -msgstr "eroare de sintaxă: sfârșit de fișier neașteptat" +msgstr "eroare de sintaxă: „%s” neașteptat" #: trap.c:220 -#, fuzzy msgid "invalid signal number" -msgstr "număr de semnal invalid" +msgstr "număr de semnal nevalid" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" -msgstr "" +msgstr "gestionarul de capturare: nivelul maxim de gestionări de capturare a fost depășit (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" -msgstr "" +msgstr "run_pending_traps: valoare greșită în trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format -msgid "" -"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "" +msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_traps: gestionarul de semnal este SIG_DFL, se retrimite %d (%s) către mine" -#: trap.c:487 -#, fuzzy, c-format +#: trap.c:509 +#, c-format msgid "trap_handler: bad signal %d" -msgstr "trap_handler: Semnal invalid %d" +msgstr "trap_handler: semnal nevalid %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" -msgstr "eroare în importarea definiției funcției pentru '%s'" +msgstr "eroare în importarea definiției funcției pentru „%s”" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" -msgstr "" +msgstr "nivelul shell-ului (%d) prea mare, se reinițializează la 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" -msgstr "" +msgstr "make_local_variable: nu există context de funcție în domeniul actual" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" -msgstr "" +msgstr "%s: nu este posibil ca variabilei să i se atribuie o valoare" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s: nu se poate moșteni valoarea de la un tip incompatibil" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" -msgstr "" +msgstr "%s: se atribuie un număr întreg referinței de nume" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" -msgstr "" +msgstr "all_local_variables: nu există context de funcție în domeniul actual" -#: variables.c:4771 -#, fuzzy, c-format +#: variables.c:4757 +#, c-format msgid "%s has null exportstr" -msgstr "%s: parametru null sau nesetat" +msgstr "%s are exportstr nul" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" -msgstr "" +msgstr "caracter nevalid %d în exportstr pentru %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" -msgstr "" +msgstr "nu există „=” în exportstr pentru %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" -msgstr "" +msgstr "pop_var_context: partea de sus din shell_variables nu este un context de funcție" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" -msgstr "" +msgstr "pop_var_context: nu există un context global_variables" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" -msgstr "" +msgstr "pop_scope: partea de sus din shell_variables nu este un domeniu de mediu temporar" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" -msgstr "" +msgstr "%s: %s: nu se poate deschide ca FIȘIER" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "" +msgstr "%s: %s: valoare nevalidă pentru descriptorul fișierului de urmărire" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" -msgstr "" +msgstr "%s: %s: valoarea de compatibilitate în afara intervalului" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "" +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Drepturi de autor © 2022 Free Software Foundation, Inc." #: version.c:47 version2.c:47 -msgid "" -"License GPLv3+: GNU GPL version 3 or later \n" -msgstr "" +msgid "License GPLv3+: GNU GPL version 3 or later \n" +msgstr "Licență GPLv3+: GNU GPL versiunea 3 sau ulterioară \n" #: version.c:86 version2.c:86 -#, fuzzy, c-format +#, c-format msgid "GNU bash, version %s (%s)\n" -msgstr "GNU %s, versiunea %s\n" +msgstr "GNU bash, versiunea %s (%s)\n" #: version.c:91 version2.c:91 msgid "This is free software; you are free to change and redistribute it." -msgstr "" +msgstr "Acesta este un software liber; sunteți liber să îl modificați și să îl redistribuiți." #: version.c:92 version2.c:92 msgid "There is NO WARRANTY, to the extent permitted by law." -msgstr "" +msgstr "NU EXISTĂ NICIO GARANȚIE, în măsura permisă de lege." #: xmalloc.c:93 -#, fuzzy, c-format +#, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "xmalloc: nu pot aloca %lu octeți (%lu octeți alocați)" +msgstr "%s: nu se pot aloca %lu octeți (%lu octeți alocați)" #: xmalloc.c:95 -#, fuzzy, c-format +#, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "%s: nu s-a putut crea: %s" +msgstr "%s: nu se pot aloca %lu octeți" #: xmalloc.c:165 -#, fuzzy, c-format +#, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "xmalloc: nu pot aloca %lu octeți (%lu octeți alocați)" +msgstr "%s: %s:%d: nu se pot aloca %lu octeți (%lu octeți alocați)" #: xmalloc.c:167 -#, fuzzy, c-format +#, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" -msgstr "%s: nu s-a putut crea: %s" +msgstr "%s: %s:%d: nu se pot aloca %lu octeți" +# R-GC, scrie: +# acest mesaj, și următoarele, pot să fie +# vizualizate, rulînd comanda: +# «bash -c help», dintr-un shell diferit de «bash»; +# «help», dintr-un shell «bash». #: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [nume[=valoare] ... ]" #: builtins.c:49 -#, fuzzy msgid "unalias [-a] name [name ...]" -msgstr "unalias [-a] [nume ...]" +msgstr "unalias [-a] nume [nume ...]" #: builtins.c:53 -#, fuzzy -msgid "" -"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" -"x keyseq:shell-command] [keyseq:readline-function or readline-command]" -msgstr "" -"bind [-lpvsPVS] [-m keymap] [-f nume_fișier] [-q nume] [-r keyseq] [keyseq:" -"funcție readline]" +msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "bind [-lpsvPSVX] [-m comb_taste] [-f nume_fișier] [-q nume] [-u nume] [-r secv_taste] [-x secv_taste:comandă_shell] [secv_taste:funcție-readline sau comandă-readline]" #: builtins.c:56 msgid "break [n]" @@ -2211,41 +2453,35 @@ msgstr "continue [n]" #: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" -msgstr "builtin [shell-builtin [arg ...]]" +msgstr "builtin [comandă_internă-shell [arg ...]]" #: builtins.c:63 -#, fuzzy msgid "caller [expr]" -msgstr "test [expr]" +msgstr "caller [expr]" #: builtins.c:66 -#, fuzzy msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "cd [-PL] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [dir]" #: builtins.c:68 -#, fuzzy msgid "pwd [-LP]" -msgstr "pwd [-PL]" +msgstr "pwd [-LP]" #: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] comandă [arg ...]" #: builtins.c:78 -#, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-afFrxi] [-p] nume[=valoare] ..." +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgiIlnrtux] [nume[=valoare] ...] sau declare -p [-aAfFilnrtux] [nume ...]" #: builtins.c:80 -#, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-afFrxi] [-p] nume[=valoare] ..." +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgiIlnrtux] nume[=valoare] ... sau typeset -p [-aAfFilnrtux] [nume ...]" #: builtins.c:82 -#, fuzzy msgid "local [option] name[=value] ..." -msgstr "local nume[=valoare] ..." +msgstr "local [opțiune] nume[=valoare] ..." #: builtins.c:85 msgid "echo [-neE] [arg ...]" @@ -2256,129 +2492,104 @@ msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" #: builtins.c:92 -#, fuzzy msgid "enable [-a] [-dnps] [-f filename] [name ...]" -msgstr "enable [-pnds] [-a] [-f nume_fișier] [nume ...]" +msgstr "enable [-a] [-dnps] [-f nume_fișier]] [nume ...]" #: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" #: builtins.c:96 -#, fuzzy msgid "getopts optstring name [arg ...]" -msgstr "getopts optstring nume [arg]" +msgstr "getopts șir_opțiuni nume [arg ...]" #: builtins.c:98 -#, fuzzy msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" -msgstr "exec [-cl] [-a nume] fișier [redirectare ...]" +msgstr "exec [-cl] [-a nume] [comandă [argument ...]] [redirectare ...]" #: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" #: builtins.c:102 -#, fuzzy msgid "logout [n]" -msgstr "logout" +msgstr "logout [n]" #: builtins.c:105 -#, fuzzy msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "fc [-e enume] [-nlr] [prim] [u8ltim] sau fc -s [pat=rep] [cmd]" +msgstr "fc [-e enume] [-lnr] [prim] [ultim] sau fc -s [pat=rep] [comandă]" #: builtins.c:109 msgid "fg [job_spec]" -msgstr "fg [job_spec]" +msgstr "fg [id_lucrare]" #: builtins.c:113 -#, fuzzy msgid "bg [job_spec ...]" -msgstr "bg [job_spec]" +msgstr "bg [id_lucrare ...]" #: builtins.c:116 -#, fuzzy msgid "hash [-lr] [-p pathname] [-dt] [name ...]" -msgstr "hash [-r] [-p nume_cale] [nume ...]" +msgstr "hash [-lr] [-p nume_rută [-dt] [nume ...]" #: builtins.c:119 -#, fuzzy msgid "help [-dms] [pattern ...]" -msgstr "help [tipar ...]" +msgstr "help [-dms] [tipar ...]" #: builtins.c:123 -#, fuzzy -msgid "" -"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " -"[arg...]" -msgstr "" -"history [-c] [n] sau history -awrn [nume_fișier] sau history -ps arg [arg...]" +msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +msgstr "history [-c] [-d decalaj] [n] sau history -anrw [nume_fișier] sau history -ps arg [arg...]" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "jobs [-lnprs] [jobspec ...] sau jobs -x comandă [args]" +msgstr "jobs [-lnprs] [id_lucrare ...] sau jobs -x comandă [args]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [jobspec ...]" +msgstr "disown [-h] [-ar] [id_lucrare ... | pid ...]" #: builtins.c:134 -#, fuzzy -msgid "" -"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " -"[sigspec]" -msgstr "" -"kill [-s sigspec | -n signum | -sigspec] [pid | job]... sau kill -l [sigspec]" +msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" +msgstr "kill [-s id_semnal | -n num_semnal | -id_semnal] pid | id_lucrare ... sau kill -l [id_semnal]" #: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" #: builtins.c:138 -msgid "" -"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " -"prompt] [-t timeout] [-u fd] [name ...]" -msgstr "" +msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" +msgstr "read [-ers] [-a matrice] [-d delim] [-i text] [-n nr_carac] [-N nr_carac [-p prompt] [-t timp] [-u fd] [nume ...]" #: builtins.c:140 msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -#, fuzzy -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [--abefhkmnptuvxBCHP] [-o opțiune] [arg ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o nume-opțiune] [--] [-] [arg ...]" #: builtins.c:144 -#, fuzzy msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "unset [-f] [-v] [nume ...]" +msgstr "unset [-f] [-v] [-n] [nume ...]" #: builtins.c:146 -#, fuzzy msgid "export [-fn] [name[=value] ...] or export -p" -msgstr "export [-nf] [nume ...] sau export -p" +msgstr "export [-fn] [nume[=valoare] ...] sau export -p" #: builtins.c:148 -#, fuzzy msgid "readonly [-aAf] [name[=value] ...] or readonly -p" -msgstr "readonly [-anf] [nume ...] sau readonly -p" +msgstr "readonly [-aAf] [nume[=valoare] ...] sau readonly -p" #: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" #: builtins.c:152 -#, fuzzy msgid "source filename [arguments]" -msgstr "nume fișier sursă" +msgstr "source nume_fișier [argumente]" #: builtins.c:154 -#, fuzzy msgid ". filename [arguments]" -msgstr ". nume fișier" +msgstr ". nume_fișier [argumente]" #: builtins.c:157 msgid "suspend [-f]" @@ -2393,159 +2604,135 @@ msgid "[ arg... ]" msgstr "[ arg... ]" #: builtins.c:166 -#, fuzzy msgid "trap [-lp] [[arg] signal_spec ...]" -msgstr "trap [arg] [signal_spec] sau trap -l" +msgstr "trap [-lp] [[arg] id_semnal ...]" #: builtins.c:168 -#, fuzzy msgid "type [-afptP] name [name ...]" -msgstr "type [-apt] nume [nume ...]" +msgstr "type [-afptP] nume [nume ...]" #: builtins.c:171 -#, fuzzy -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHacdfmstpnuv] [limită]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limită]" #: builtins.c:174 -#, fuzzy msgid "umask [-p] [-S] [mode]" -msgstr "umask [-S] [mod]" +msgstr "umask [-p] [-S] [mod]" #: builtins.c:177 -#, fuzzy msgid "wait [-fn] [-p var] [id ...]" -msgstr "echo [-n] [arg ...]" +msgstr "wait [-fn] [-p var] [id ...]" #: builtins.c:181 -#, fuzzy msgid "wait [pid ...]" -msgstr "wait [n]" +msgstr "wait [pid ...]" #: builtins.c:184 -#, fuzzy msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" -msgstr "for NUME [în EXPRESIE ... ;] execută COMENZI; done" +msgstr "for NUME [in CUVINTE ... ] ; do COMENZI; done" #: builtins.c:186 -#, fuzzy msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" -msgstr "for NUME [în EXPRESIE ... ;] execută COMENZI; done" +msgstr "for (( exp1; exp2; exp3 )); do COMENZI; done" #: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" -msgstr "select NUME [în EXPRESIE ... ;] execută COMENZI; done" +msgstr "select NUME [in CUVINTE ... ;] do COMENZI; done" #: builtins.c:190 msgid "time [-p] pipeline" -msgstr "" +msgstr "time [-p] secvența_de_comenzi(pipeline)" #: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -msgstr "case EXPRESIE în [TIPAR[[TIPAR]..) COMENZI ;;]... esac" +msgstr "case CUVÂNT in [MODEL[[MODEL]..) COMENZI ;;]... esac" #: builtins.c:194 -msgid "" -"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " -"COMMANDS; ] fi" -msgstr "" -"if COMENZI; then COMENZI; [elif COMENZI; then COMENZI; ]... [ else " -"COMENZI; ] fi" +msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" +msgstr "if COMENZI; then COMENZI; [elif COMENZI; then COMENZI; ]... [ else COMENZI; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while COMENZI; do COMENZI; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while COMENZI; do COMENZI-2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until COMENZI; do COMENZI; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until COMENZI; do COMENZI-2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" -msgstr "" +msgstr "coproc [NUME] comanda [redirecționări]" #: builtins.c:202 -#, fuzzy msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" -msgstr "function NUME { COMENZI ; } sau NUME () { COMENZI ; }" +msgstr "function nume { COMENZI ; } sau nume () { COMENZI ; }" #: builtins.c:204 -#, fuzzy msgid "{ COMMANDS ; }" -msgstr "{ COMENZI }" +msgstr "{ COMENZI ; }" #: builtins.c:206 -#, fuzzy msgid "job_spec [&]" -msgstr "fg [job_spec]" +msgstr "id_lucrare [&]" #: builtins.c:208 -#, fuzzy msgid "(( expression ))" -msgstr "se așteaptă expresie" +msgstr "(( expresie ))" #: builtins.c:210 -#, fuzzy msgid "[[ expression ]]" -msgstr "se așteaptă expresie" +msgstr "[[ expresie ]]" #: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "variabile - Numele și înțelesurile unor variabile din shell" +msgstr "variables - Numele și semnificațiile unor variabile din shell" #: builtins.c:215 -#, fuzzy msgid "pushd [-n] [+N | -N | dir]" -msgstr "pushd [dir | +N | -N] [-n]" +msgstr "pushd [-n] [+N | -N | dir]" #: builtins.c:219 -#, fuzzy msgid "popd [-n] [+N | -N]" -msgstr "popd [+N | -N] [-n]" +msgstr "popd [-n] [+N | -N]" #: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" #: builtins.c:226 -#, fuzzy msgid "shopt [-pqsu] [-o] [optname ...]" -msgstr "shopt [-pqsu] [-o opțiune lungă] nume_opt [nume_opt...]" +msgstr "shopt [-pqsu] [-o] [nume_opțiune ...]" #: builtins.c:228 msgid "printf [-v var] format [arguments]" -msgstr "" +msgstr "printf [-v var] format [argumente]" #: builtins.c:231 -msgid "" -"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" -"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " -"suffix] [name ...]" -msgstr "" +msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]" +msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o opțiune] [-A acțiune] [-G tipar_glob] [-W listă_cuvinte] [-F funcție] [-C comandă] [-X tipar_filtru [- P prefix] [-S sufix] [nume ...]" #: builtins.c:235 -msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" -"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" -msgstr "" +msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "compgen [-abcdefgjksuv] [-o opțiune] [-A acțiune] [-G tipar_glob] [-W listă_cuvinte] [-F funcție] [-C comandă] [-X tipar_filtru] [-P prefix] [-S sufix] [cuvânt]" #: builtins.c:239 -#, fuzzy msgid "compopt [-o|+o option] [-DEI] [name ...]" -msgstr "unset [-f] [-v] [nume ...]" +msgstr "compopt [-o|+o opțiune] [-DEI] [nume ...]" #: builtins.c:242 -msgid "" -"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" -msgstr "" +msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "mapfile [-d delim] [-n cont] [-O origin] [-s cont] [-t] [-u fd] [-C apelare] [-c cantitate] [matrice]" #: builtins.c:244 -msgid "" -"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" -msgstr "" - +msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "readarray [-d delim] [-n cantitate] [-O origine] [-s cantitate] [-t] [-u fd] [-C apelare] [-c sumă_de] [matrice]" + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help alias», din «bash»; +# «bash -c "help alias"», din «bash», sau dintr-un +# shell, diferit de «bash». #: builtins.c:256 msgid "" "Define or display aliases.\n" @@ -2561,11 +2748,31 @@ msgid "" " -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has " -"been\n" +" alias returns true unless a NAME is supplied for which no alias has been\n" " defined." msgstr "" +"Definește sau afișează alias.\n" +" \n" +" Fără argumente, «alias» imprimă lista de alias în forma reutilizabilă\n" +" „alias NUME=VALOARE” la ieșirea standard (pe ecran).\n" +" \n" +" În caz contrar, un alias este definit pentru fiecare NUME a cărui VALOARE\n" +" este dată. Un spațiu final în VALOARE, face ca următorul cuvânt să fie\n" +" verificat pentru înlocuirea aliasului atunci când aliasul este extins.\n" +" \n" +" Opțiuni:\n" +" -p\timprimă toate alias definite într-un format reutilizabil\n" +" \n" +" Starea de ieșire:\n" +" «alias» returnează adevărat, cu excepția cazului în care este furnizat\n" +" un NUME pentru care nu a fost definit niciun alias." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help unalias», din «bash»; +# «bash -c "help unalias"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" @@ -2575,7 +2782,19 @@ msgid "" " \n" " Return success unless a NAME is not an existing alias." msgstr "" +"Elimină fiecare NUME din lista de aliasuri definite.\n" +" \n" +" Opțiuni:\n" +" -a\telimină toate definițiile de alias\n" +" \n" +" Returnează succes, cu excepția cazului în care un NUME nu este un alias existent." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help bind», din «bash»; +# «bash -c "help bind"», din «bash», sau dintr-un +# shell, diferit de «bash». #: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" @@ -2588,36 +2807,71 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" -"move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their " -"values\n" -" -s List key sequences that invoke macros and their " -"values\n" +" -S List key sequences that invoke macros and their values\n" +" -s List key sequences that invoke macros and their values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named " -"function.\n" +" -u function-name Unbind all keys which are bound to the named function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" -" -X List key sequences bound with -x and associated " -"commands\n" +" -X List key sequences bound with -x and associated commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" - +"Configurează legăturile de taste și variabilele Readline.\n" +" \n" +" Asociază o secvență de taste cu o funcție Readline sau cu o macrocomandă\n" +" sau configurează o variabilă Readline. Sintaxa argumentului fără opțiune \n" +" este echivalentă cu cea găsită în ~/.inputrc, dar trebuie transmisă ca un\n" +" singur argument; de exp.: bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Opțiuni:\n" +" -m keymap Utilizează KEYMAP ca hartă de taste pe durata acestei\n" +" comenzi. Numele valabile pentru hărți de taste sunt emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" +" vi-command, și vi-insert.\n" +" -l Enumeră numele funcțiilor.\n" +" -P Enumeră numele și asocierile funcțiilor.\n" +" -p Enumeră funcțiile și asocierile într-o formă care poate fi\n" +" reutilizată ca intrare.\n" +" -S Enumeră secvențele de chei care invocă macrocomenzi și\n" +" valorile acestora\n" +" -s Enumeră secvențele de chei care invocă macrocomenzi și\n" +" valorile acestora într-o formă care poate fi reutilizată ca intrare.\n" +" -V Enumeră numele și valorile variabilelor\n" +" -v Enumeră numele și valorile variabilelor într-o formă care\n" +" poate fi reutilizată ca intrare.\n" +" -q nume-funcție Se utilizează pentru a afla care taste invocă funcția numită.\n" +" -u nume-funcție Dezasociază toate tastele care sunt asociate cu funcția numită.\n" +" -r sec-taste Elimină asocierea pentru sec-taste numită.\n" +" -f nume-fișier Citește asocierile de taste din fișierul al cărui nume a fost dat.\n" +" -x sec-taste:comandă-shell\tDetermină executarea comandă-shell când este\n" +" \t\t\t\tintrodusă sec-taste.\n" +" -X Enumeră secvențele de taste asociate cu -x și comenzile asociate într-o\n" +" formă care poate fi reutilizată ca intrare.\n" +" \n" +" Starea de ieșire:\n" +" «bind» returnează 0, cu excepția cazului în care este dată o opțiune nerecunoscută, sau apare o eroare." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help break», din «bash»; +# «bash -c "help break"», din «bash», sau dintr-un +# shell, diferit de «bash». #: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" @@ -2628,7 +2882,20 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" +"Termină buclele for, while, sau until.\n" +" \n" +" Termină o buclă FOR, WHILE sau UNTIL. Dacă se specifică N, termină\n" +" numărul de bucle specificat.\n" +" \n" +" Starea de ieșire:\n" +" Starea de ieșire este 0, cu excepția cazului în care N nu este mai mare sau egal cu 1." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help continue», din «bash»; +# «bash -c "help continue"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" @@ -2639,21 +2906,48 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" +"Reia buclele for, while, sau until.\n" +" \n" +" Reia următoarea iterație a buclei curente FOR, WHILE sau UNTIL.\n" +" Dacă se specifică N, reia bucla și continuă pentru N niveluri în continuare.\n" +" \n" +" Starea de ieșire:\n" +" Starea de ieșire este 0, cu excepția cazului în care N nu este mai mare sau egal cu 1." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help builtin», din «bash»; +# «bash -c "help builtin"», din «bash», sau dintr-un +# shell, diferit de «bash». #: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the " -"function.\n" +" as a shell function, but need to execute the builtin within the function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" " not a shell builtin." msgstr "" +"Execută comenzile interne de shell.\n" +" \n" +" Execută SHELL-BUILTIN cu argumentele ARG fără a efectua căutarea comenzilor.\n" +" Acest lucru este util atunci când doriți să reimplementați o comandă internă de shell\n" +" ca o funcție shell, dar trebuie să executați comanda internă în cadrul funcției.\n" +" \n" +" Starea de ieșire:\n" +" Returnează starea de ieșire a lui SHELL-BUILTIN sau false dacă SHELL-BUILTIN nu\n" +" este o comandă internă de shell." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help caller», din «bash»; +# «bash -c "help caller"», din «bash», sau dintr-un +# shell, diferit de «bash». #: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" @@ -2669,27 +2963,39 @@ msgid "" " Returns 0 unless the shell is not executing a shell function or EXPR\n" " is invalid." msgstr "" +"Returnează contextul apelului subrutinei curente.\n" +" \n" +" Fără EXPR, returnează „$line $filename”. Cu EXPR, returnează\n" +" „$line $subroutine $filename”; aceste informații suplimentare pot fi\n" +" utilizate pentru a furniza o urmărire a stivei.\n" +" \n" +" Valoarea EXPR indică câte cadre de apel trebuie să se întoarcă înaintea\n" +" celui curent; cadrul superior este cadrul 0.\n" +" \n" +" Starea de ieșire:\n" +" Returnează 0, cu excepția cazului în care shell-ul nu execută o funcție shell\n" +" sau EXPR nu este validă." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help cd», din «bash»; +# «bash -c "help cd"», din «bash», sau dintr-un +# shell, diferit de «bash». #: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of " -"the\n" +" Change the current directory to DIR. The default DIR is the value of the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory " -"containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon " -"(:).\n" -" A null directory name is the same as the current directory. If DIR " -"begins\n" +" The variable CDPATH defines the search path for the directory containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" +" A null directory name is the same as the current directory. If DIR begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is " -"set,\n" -" the word is assumed to be a variable name. If that variable has a " -"value,\n" +" If the directory is not found, and the shell option `cdable_vars' is set,\n" +" the word is assumed to be a variable name. If that variable has a value,\n" " its value is used for DIR.\n" " \n" " Options:\n" @@ -2705,16 +3011,53 @@ msgid "" " \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" -" `..' is processed by removing the immediately previous pathname " -"component\n" +" `..' is processed by removing the immediately previous pathname component\n" " back to a slash or the beginning of DIR.\n" " \n" " Exit Status:\n" -" Returns 0 if the directory is changed, and if $PWD is set successfully " -"when\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" " -P is used; non-zero otherwise." msgstr "" - +"Schimbă directorul de lucru al shell-ului.\n" +" \n" +" Schimbă directorul actual cu DIR. DIR implicit este valoarea variabilei de \n" +" shell HOME.\n" +" \n" +" Variabila CDPATH definește calea de căutare pentru directorul care conține\n" +" DIR. Numele alternative ale directoarelor din CDPATH sunt separate prin\n" +" două puncte (:). Numele unui director nul este același cu directorul curent.\n" +" Dacă DIR începe cu o bară oblică (/), atunci CDPATH nu este utilizat.\n" +" \n" +" Dacă directorul nu este găsit și opțiunea de shell „cdable_vars” este setată,\n" +" cuvântul se presupune a fi un nume de variabilă. Dacă acea variabilă are o\n" +" valoare, valoarea ei este utilizată pentru DIR.\n" +" \n" +" Opțiuni:\n" +" -L\tforțează ca legăturile simbolice să fie urmate: rezolvă \n" +" \t\tlegăturile simbolice din DIR după procesarea instanțelor de „..”\n" +" -P\tutilizează structura fizică a directorului fără a urma legăturile\n" +" \t\tsimbolice: rezolvă legăturile simbolice din DIR înainte de a\n" +" \t\tprocesa instanțe de „..”\n" +" -e\tdacă este furnizată opțiunea „-P” și directorul de lucru curent\n" +" \t\tnu poate fi determinat cu succes, iese cu o stare diferită de\n" +" \t\tzero\n" +" -@\tpe sistemele care acceptă acest lucru, prezintă un fișier cu\n" +" \t\tatribute extinse, ca un director care conține atributele fișierului\n" +" \n" +" Modul implicit este să urmeze legături simbolice, ca și cum ar fi fost specificat „-L”.\n" +" „..” este procesat prin eliminarea componentei de cale imediat anterioară până\n" +" la o bară oblică sau la începutul DIR.\n" +" \n" +" Starea de ieșire:\n" +" Returnează 0 dacă directorul este schimbat și dacă $PWD este stabilit cu succes atunci\n" +" când este utilizat „-P”; diferit de zero, în caz contrar." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help pwd», din «bash»; +# «bash -c "help pwd"», din «bash», sau dintr-un +# shell, diferit de «bash». #: builtins.c:425 msgid "" "Print the name of the current working directory.\n" @@ -2730,9 +3073,26 @@ msgid "" " Returns 0 unless an invalid option is given or the current directory\n" " cannot be read." msgstr "" +"Imprimă numele directorului de lucru curent.\n" +" \n" +" Opțiuni:\n" +" -L\timprimă valoarea lui $PWD dacă aceasta numește directorul de\n" +" \t\tlucru curent\n" +" -P\timprimă directorul fizic, fără nicio legătură simbolică\n" +" \n" +" În mod implicit, „pwd” se comportă ca și cum „-L” ar fi fost specificat.\n" +" \n" +" Starea de ieșire:\n" +" Returnează 0, cu excepția cazului în care este dată o opțiune nevalidă\n" +" sau directorul curent nu poate fi citit." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help :», din «bash»; +# «bash -c "help :"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:442 -#, fuzzy msgid "" "Null command.\n" " \n" @@ -2741,8 +3101,19 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" -"Nici un efect, comanda nu face nimic. Un cod de ieșire zero este returnat." +"Comandă nulă.\n" +" \n" +" Fără efect; comanda nu face nimic.\n" +" \n" +" Starea de ieșire:\n" +" Întotdeauna reușește(0)." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help true», din «bash»; +# «bash -c "help true"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:453 msgid "" "Return a successful result.\n" @@ -2750,7 +3121,17 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" +"Returnează un rezultat de succes(0).\n" +" \n" +" Starea de ieșire:\n" +" Întotdeauna reușește(0)." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help false», din «bash»; +# «bash -c "help false"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:462 msgid "" "Return an unsuccessful result.\n" @@ -2758,14 +3139,23 @@ msgid "" " Exit Status:\n" " Always fails." msgstr "" +"Returnează un rezultat nereușit(≠0).\n" +" \n" +" Starea de ieșire:\n" +" Întotdeauna eșuează(≠0)." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help command», din «bash»; +# «bash -c "help command"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke " -"commands\n" +" information about the specified COMMANDs. Can be used to invoke commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -2777,7 +3167,38 @@ msgid "" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" - +"Execută o comandă simplă sau afișează informații despre comenzi.\n" +" \n" +" Rulează COMANDA cu ARGumente care suprimă căutarea funcției shell sau afișează\n" +" informații despre COMENZILE specificate. Se poate utiliza pentru a invoca comenzi\n" +" de pe disc atunci când există o funcție cu același nume.\n" +" \n" +" Opțiuni:\n" +" -p utilizează o valoare implicită pentru PATH ce garantează că se\n" +" vor găsi toate utilitățile standard\n" +" -v imprimă o descriere a COMENZII, similară cu cea a comenzii\n" +" interne «type».\n" +" -V imprimă o descriere mai detaliată pentru fiecare COMANDĂ\n" +" \n" +" Starea de ieșire:\n" +" Returnează starea de ieșire a COMENZII sau eșuează dacă COMANDA nu este găsită." + +# R-GC, scrie: +# am tradus: +# „-I if ... with the same name at a previous scope”, ca: +# „-I dacă ... cu același nume dintr-un scop anterior” +# *** +# Întrebare: +# dacă se traduce, ca: +# „-I dacă ... cu același nume dintr-o sferă de aplicare anterioară”, +# ar fi o traducere mai bună? +# Opinii/Idei? +# ================================== +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help declare», din «bash»; +# «bash -c "help declare"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:490 msgid "" "Set variable values and attributes.\n" @@ -2811,22 +3232,73 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the " -"`local'\n" +" When used in a function, `declare' makes NAMEs local, as with the `local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or a variable\n" " assignment error occurs." msgstr "" - +"Stabilește valorile și atributele variabilelor.\n" +" \n" +" Declară variabilele și-le atribuie atribute. Dacă nu sunt date NUME,\n" +" afișează atributele și valorile tuturor variabilelor.\n" +" \n" +" Opțiuni:\n" +" -f\trestricționează acțiunea sau afișarea, la numele și definițiile funcțiilor\n" +" -F\trestricționează afișarea numai la numele funcțiilor (plus numărul de\n" +" \t\tlinie și fișierul sursă, la depanare)\n" +" -g\tcreează variabile globale atunci când sunt utilizate într-o funcție shell;\n" +" \t\taltfel sunt ignorate\n" +" -I\tdacă se creează o variabilă locală, moștenește atributele și valoarea\n" +" \t\tunei variabile cu același nume dintr-un scop anterior\n" +" -p\tafișează atributele și valoarea fiecărui NUME\n" +" \n" +" Opțiuni care stabilesc atributele:\n" +" -a\tstabilește NUME ca matrice indexată (dacă este acceptat)\n" +" -A\tstabilește NUME ca matrice asociativă (dacă este acceptat)\n" +" -i\tstabilește ca NUME să aibă atributul „integer”\n" +" -l\tpentru a converti valoarea fiecărui NUME în minuscule, la atribuire\n" +" -n\tface din NUME o referință la variabila numită după valoarea acesteia\n" +" -r\tcreează NUME ca numai-citire\n" +" -t\tstabilește ca NUME să aibă atributul „trace”\n" +" -u\tpentru a converti valoarea fiecărui NUME în majuscule, la atribuire\n" +" -x\tpentru a exporta NUME\n" +" \n" +" Utilizarea a „+” în loc de „-”, dezactivează atributul dat.\n" +" \n" +" Variabilele cu atributul întreg au o evaluare aritmetică (vezi comanda\n" +" «let») efectuată atunci când variabilei i se atribuie o valoare.\n" +" \n" +" Când este folosită într-o funcție, «declare» face ca NUME să fie local, ca\n" +" și în cazul comenzii «local». Opțiunea „-g” suprimă acest comportament.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este furnizată o opțiune\n" +" nevalidă sau apare o eroare de atribuire a variabilelor." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help typeset», din «bash»; +# «bash -c "help typeset"», din «bash», sau dintr-un +# shell, diferit de «bash». #: builtins.c:532 msgid "" "Set variable values and attributes.\n" " \n" " A synonym for `declare'. See `help declare'." msgstr "" +"Stabilește valorile și atributele variabilelor.\n" +" \n" +" Un sinonim pentru „declare”. A se vedea „help declare”." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help local», din «bash»; +# «bash -c "help local"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:540 msgid "" "Define local variables.\n" @@ -2841,13 +3313,31 @@ msgid "" " Returns success unless an invalid option is supplied, a variable\n" " assignment error occurs, or the shell is not executing a function." msgstr "" +"Definește variabilele locale.\n" +" \n" +" Creează o variabilă locală numită NUME și îi dă această VALOARE.\n" +" OPȚIUNE poate fi orice opțiune acceptată de «declare».\n" +" \n" +" Variabilele locale pot fi utilizate numai în cadrul unei funcții; sunt\n" +" vizibile numai pentru funcția în care sunt definite și pentru copiii\n" +" acesteia.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes cu excepția cazului în care este furnizată o opțiune\n" +" nevalidă, apare o eroare de atribuire a variabilei sau shell-ul nu execută\n" +" o funcție." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help echo», din «bash»; +# «bash -c "help echo"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:557 msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by " -"a\n" +" Display the ARGs, separated by a single space character and followed by a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -2871,16 +3361,47 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" -" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " -"HHHH.\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n" " \t\tHHHH can be one to four hex digits.\n" -" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " -"value\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n" " \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Scrie argumente la ieșirea standard.\n" +" \n" +" Afișează ARGumentele, separate printr-un singur caracter de spațiu și urmate\n" +" de o nouă linie, în ieșirea standard.\n" +" \n" +" Opțiuni:\n" +" -n\tnu adaugă o nouă linie\n" +" -e\tactivează interpretarea următoarelor eludări de bară oblică inversă\n" +" -E\tsuprimă în mod explicit interpretarea eludărilor de bară oblică inversă\n" +" \n" +" «echo» interpretează următoarele caractere de eludare de bară oblică inversă:\n" +" \a\talertă (clopoțel)\n" +" \\b\tmută cursorul înapoi cu unul sau mai multe spații\n" +" \\c\tsuprimă ieșirea ulterioară\n" +" \\e\tcaracter de eludare\n" +" \\E\tcaracter de eludare\n" +" \\f\talimentare cu „hîrtie”\n" +" \\n\tlinie nouă\n" +" \\r\treturul de caret↵\n" +" \\t\ttabulator orizontal\n" +" \\v\ttabulator vertical\n" +" \\\\\tbară oblică inversă\n" +" \\0nnn\tcaracterul al cărui cod ASCII este NNN (octal). NNN poate fi\n" +" \t\tde la 0 la 3 digiți octali\n" +" \\xHH\tcaracterul de opt biți a cărui valoare este HH (hexazecimal). HH\n" +" \t\tpoate fi unu sau doi digiți hexazecimali\n" +" \\uHHHH\tcaracterul Unicode a cărui valoare este valoarea hexazecimală HHHH.\n" +" \t\tHHHH poate fi de la unu până la patru digiți hexazecimali.\n" +" \\UHHHHHHHH caracterul Unicode a cărui valoare este valoarea hexazecimală\n" +" \t\tHHHHHHHH. HHHHHHHH poate fi de la unu până la opt digiți hexazecimali.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes cu excepția cazului în care apare o eroare de scriere." #: builtins.c:597 msgid "" @@ -2894,7 +3415,22 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Scrie argumente la ieșirea standard.\n" +" \n" +" Afișează ARGumentele la ieșirea standard urmate de o linie nouă.\n" +" \n" +" Opțiuni:\n" +" -n\tnu adaugă o nouă linie\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes cu excepția cazului în care apare o eroare de scriere." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help enable», din «bash»; +# «bash -c "help enable"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:612 msgid "" "Enable and disable shell builtins.\n" @@ -2921,19 +3457,61 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" +"Activează și dezactivează comenzile interne ale shell-ului.\n" +" \n" +" Activează și dezactivează comenzile interne ale shell-ului. Dezactivarea\n" +" vă permite să executați o comandă de pe disc care are același nume ca\n" +" și comanda internă a shell-ului, fără a utiliza calea completă.\n" +" \n" +" Opțiuni:\n" +" -a\tafișează lista comenzilor interne indicând dacă sunt activate sau nu\n" +" -n\tdezactivează fiecare NUME sau afișează o listă de comenzi interne\n" +" \t\tdezactivate\n" +" -p\tafișează lista comenzilor interne într-un format reutilizabil\n" +" -s\tafișează numai numele comenzilor interne „speciale” Posix\n" +" \n" +" Opțiuni care controlează încărcarea dinamică:\n" +" -f\tÎncarcă comanda internă NUME de la obiectul partajat NUME_FIȘIER\n" +" -d\tElimină o comandă internă încărcată cu -f\n" +" \n" +" Fără opțiuni, fiecare NUME este activat.\n" +" \n" +" Pentru a utiliza comanda «test» găsită în $PATH în loc de comanda internă\n" +" de shell, tastați «enable -n test».\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care NUME nu este o comandă shell internă sau apare o eroare." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help eval», din «bash»; +# «bash -c "help eval"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:640 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the " -"shell,\n" +" Combine ARGs into a single string, use the result as input to the shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" " Returns exit status of command or success if command is null." msgstr "" +"Execută argumente ca o comandă de shell.\n" +" \n" +" Combină ARGumentele într-un singur șir, folosește rezultatul ca intrare în\n" +" shell și execută comenzile rezultate.\n" +" \n" +" Starea de ieșire:\n" +" Returnează starea de ieșire a comenzii, sau succes dacă comanda este nulă." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help getopts», din «bash»; +# «bash -c "help getopts"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:652 msgid "" "Parse option arguments.\n" @@ -2974,14 +3552,56 @@ msgid "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." msgstr "" - +"Analizează argumentele opțiunii.\n" +" \n" +" «getopts» este folosit de procedurile shell pentru a analiza parametrii\n" +" poziționali ca opțiuni.\n" +" \n" +" ȘIR_OPȚIUNI conține literele de opțiune care trebuie recunoscute; dacă\n" +" o literă este urmată de două puncte, se așteaptă ca opțiunea să aibă un\n" +" argument, care ar trebui să fie separat de aceasta prin spațiu alb.\n" +" \n" +" De fiecare dată când este invocată, «getopts» va plasa următoarea opțiune\n" +" în variabila shell $nume, inițializând nume dacă nu există, iar indexul\n" +" următorului argument va fi procesat în variabila shell OPTIND. OPTIND este\n" +" inițializată la 1 de fiecare dată când shell-ul sau un script shell este\n" +" invocat. Când o opțiune necesită un argument, «getopts» plasează acel\n" +" argument în variabila shell OPTARG.\n" +" \n" +" «getopts» raportează erorile într-unul dintre următoarele două moduri. Dacă\n" +" primul caracter al lui ȘIR_OPȚIUNI este două puncte, «getopts» utilizează \n" +" raportarea silențioasă a erorilor. În acest mod, nu este afișat niciun mesaj\n" +" de eroare. Dacă se găsește o opțiune nevalidă, «getopts» plasează caracterul\n" +" de opțiune găsit în OPTARG. Dacă nu este găsit un argument necesar, «getopts»\n" +" plasează un „:” în NUME și pune în OPTARG caracterul de opțiune găsit. Dacă\n" +" «getopts» nu este în modul silențios și se găsește o opțiune nevalidă, «getopts»\n" +" plasează „?” în NUME și dezactivează OPTARG. Dacă nu este găsit un argument\n" +" necesar, un „?” este plasat în NUME, OPTARG este dezactivată și este afișat un\n" +" mesaj de diagnosticare.\n" +" \n" +" Dacă variabila shell OPTERR are valoarea 0, «getopts» dezactivează afișarea\n" +" mesajelor de eroare, chiar dacă primul caracter al lui ȘIR_OPȚIUNI nu este \n" +" două puncte „:”. OPTERR are valoarea 1 implicit.\n" +" \n" +" «getopts» analizează în mod normal parametrii de poziție, dar dacă argumentele\n" +" sunt furnizate ca valori ARG, acestea sunt analizate în schimb.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes dacă este găsită o opțiune; eșuează dacă se întâlnește\n" +" sfârșitul opțiunilor sau apare o eroare." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help exec», din «bash»; +# «bash -c "help exec"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:694 msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " -"specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -2989,15 +3609,36 @@ msgid "" " -c\texecute COMMAND with an empty environment\n" " -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, " -"unless\n" +" If the command cannot be executed, a non-interactive shell exits, unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error " -"occurs." +" Returns success unless COMMAND is not found or a redirection error occurs." msgstr "" +"Înlocuiește shell-ul cu comanda dată.\n" +" \n" +" Execută COMANDA, înlocuind acest shell cu programul specificat.\n" +" ARGUMENTELE devin argumente pentru COMANDA. Dacă COMANDA nu este\n" +" specificată, orice redirecționare va avea efect în shell-ul curent.\n" +" \n" +" Opțiuni:\n" +" -a nume\tpasează NUME ca argument zero la COMANDA\n" +" -c\texecută COMANDA într-un mediu gol\n" +" -l\tplasează o liniuță în argumentul zero la COMANDA\n" +" \n" +" Dacă comanda nu poate fi executată, un shell non-interactiv se va închide, \n" +" cu excepția cazului în care opțiunea shell „execfail” este setată.\n" +" \n" +" Starea de ieșire\n" +" Returnează succes, cu excepția cazului în care COMANDA nu este găsită sau\n" +" apare o eroare de redirecționare." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help exit», din «bash»; +# «bash -c "help exit"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:715 msgid "" "Exit the shell.\n" @@ -3005,33 +3646,46 @@ msgid "" " Exits the shell with a status of N. If N is omitted, the exit status\n" " is that of the last command executed." msgstr "" -"Ieste din shell.\n" +"Iese din shell.\n" " \n" -" Iese din shell cu starea lui N. Dacă N este omis, starea de ieșire\n" -" este starea ultimei comenzi executate." +" Iese din shell cu starea lui N. Dacă N este omis, starea de ieșire\n" +" este starea ultimei comenzi executate." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help logout», din «bash»; +# «bash -c "help logout"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:724 msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not " -"executed\n" +" Exits a login shell with exit status N. Returns an error if not executed\n" " in a login shell." msgstr "" +"Iese din shell-ul de autentificare.\n" +" \n" +" Iese din shell-ul de autentificare cu starea de ieșire N. Returnează o eroare\n" +" dacă nu este executată într-un shell de autentificare." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help fc», din «bash»; +# «bash -c "help fc"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:734 msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history " -"list.\n" +" fc is used to list or edit and re-execute commands from the history list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then " -"EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -3045,10 +3699,40 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error " -"occurs." -msgstr "" - +" Returns success or status of executed command; non-zero if an error occurs." +msgstr "" +"Afișează sau execută comenzi din lista istoricului.\n" +" \n" +" «fc» se utilizează pentru a lista sau edita și re-executa comenzi din lista\n" +" istoricului.\n" +" PRIMA și ULTIMA pot fi numere care specifică intervalul sau PRIMA poate fi\n" +" un șir, ceea ce înseamnă cea mai recentă comandă care începe cu acel șir.\n" +" \n" +" Opțiuni:\n" +" -e NUME_EDIT\n" +" \t\tselectează ce editor să utilizat. Implicit este FCEDIT, apoi \n" +" \t\tEDITOR, apoi vi\n" +" -l \tlistează linii în loc să editeze\n" +" -n\tomite numerele de rând la listare\n" +" -r\tinversează ordinea liniilor (cele mai noi sunt listate primele)\n" +" \n" +" Cu formatul «fc -s [tipar=înloc ...] [comanda]», COMANDA este re-executată\n" +" după ce este efectuată înlocuirea VECHE=NOUĂ.\n" +" \n" +" Un alias util de folosit cu aceasta, este «r='fc -s'», astfel încât tastând \n" +" «r cc» se execută ultima comandă ce începe cu „cc” și tastând «r» se execută\n" +" din nou ultima comandă folosită.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succesul sau starea comenzii executate; diferit de zero dacă\n" +" apare o eroare." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help fg», din «bash»; +# «bash -c "help fg"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:764 msgid "" "Move job to the foreground.\n" @@ -3060,28 +3744,54 @@ msgid "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." msgstr "" +"Mută procesul în primul plan.\n" +" \n" +" Plasează procesul identificat de ID_PROC în primul plan, făcându-l procesul\n" +" curent. Dacă ID_PROC nu este prezent, este utilizată noțiunea shell-ului\n" +" despre procesul curent\n" +" \n" +" Starea de ieșire:\n" +" Starea comenzii plasată în prim-plan sau eșec dacă apare o eroare." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help bg», din «bash»; +# «bash -c "help bg"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:779 msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if " -"they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's " -"notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"Mută procesul în fundal.\n" +" \n" +" Plasează procesele identificate de fiecare ID_PROC în fundal, ca și cum ar fi\n" +" fost pornite cu „&”. Dacă ID_PROC nu este prezent, se folosește noțiunea\n" +" shell-ului despre procesul curent.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care controlul procesului nu este\n" +" activat sau apare o eroare." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help hash», din «bash»; +# «bash -c "help hash"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:793 msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is " -"displayed.\n" +" no arguments are given, information about remembered commands is displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3098,7 +3808,33 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" - +"Memorizează sau afișează locațiile programelor.\n" +" \n" +" Determină și memorizează calea completă a fiecărei comenzi NUME. Dacă nu\n" +" sunt date argumente, sunt afișate informații despre comenzile memorate.\n" +" \n" +" Opțiuni:\n" +" -d\tuită locația reținută pentru fiecare NUME\n" +" -l\tafișează într-un format care poate fi reutilizat ca intrare\n" +" -p calenume\n" +" \tutilizează CALENUME drept calea completă a NUME\n" +" -r\tuită toate locațiile memorizate\n" +" -t\tafișează locația reținută a fiecărui NUME, precedând fiecare\n" +" \t\tlocație cu NUMELE corespunzător dacă sunt date mai multe NUME\n" +" Argumente:\n" +" NUME\tFiecare NUME este căutat în $PATH și adăugat la lista comenzilor\n" +" \t\tmemorate.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care NUME nu este găsit sau\n" +" este dată o opțiune nevalidă." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help help», din «bash»; +# «bash -c "help help"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:818 msgid "" "Display information about builtin commands.\n" @@ -3117,10 +3853,33 @@ msgid "" " PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is " -"given." +" Returns success unless PATTERN is not found or an invalid option is given." msgstr "" +"Afișează informații despre comenzile interne.\n" +" \n" +" Afișează scurte rezumate ale comenzilor interne. Dacă TIPAR, este\n" +" specificat, oferă ajutor detaliat pentru toate comenzile care se potrivesc\n" +" cu TIPARul, în caz contrar, este afișată lista temelor de ajutor.\n" +" \n" +" Opțiuni:\n" +" -d\tafișează o scurtă descriere pentru fiecare temă\n" +" -m\tafișează utilizarea în format pseudo-pagină de manual\n" +" -s\tafișează doar un scurt rezumat de utilizare pentru\n" +" \t\tfiecare temă care se potrivește cu TIPAR\n" +" \n" +" Argumente:\n" +" TIPAR \tTIPAR care specifică o temă de ajutor\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care TIPAR nu este găsit sau este\n" +" dată o opțiune nevalidă." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help history», din «bash»; +# «bash -c "help history"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:842 msgid "" "Display or manipulate the history list.\n" @@ -3149,13 +3908,52 @@ msgid "" " \n" " If the HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed " -"otherwise.\n" +" with each displayed history entry. No time stamps are printed otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" - +"Afișează sau manipulează lista istoricului.\n" +" \n" +" Afișează lista istoricului cu numere de linie, prefixând fiecare intrare\n" +" modificată cu un „*”. Un argument de N, listează numai ultimele N intrări.\n" +" \n" +" Opțiuni:\n" +" -c\tșterge lista istoricului ștergând toate intrările\n" +" -d poziție\n" +" \t\tșterge intrarea din istoric de la poziția POZIȚIE. Pozițiile\n" +" \t\tnegative se numără înapoi de la sfârșitul listei istoricului\n" +" \n" +" -a\tadaugă linii istorice din această sesiune la fișierul istoricului\n" +" -n\tcitește toate liniile istorice care nu sunt deja citite din\n" +" \t\tfișierul istoricului și le adaugă la lista istoricului\n" +" -r\tcitește fișierul istoricului și îi adaugă conținutul la lista\n" +" \t\tistoricului\n" +" -w\tscrie istoricul curent în fișierul istoricului\n" +" \n" +" -p\tefectuează extinderea istoricului pentru fiecare ARG și afișează\n" +" \t\trezultatul fără a-l stoca în lista istoricului\n" +" -s\tadaugă ARGumentele la lista istoricului ca o singură intrare\n" +" \n" +" Dacă NUME_FIȘIER este dat, acesta este utilizat ca fișierul istoricului.\n" +" Altfel, dacă HISTFILE are o valoare, aceasta este folosită, dacă nu are,\n" +" se folosește ~/.bash_history.\n" +" \n" +" Dacă variabila HISTTIMEFORMAT este definită și nu este nulă, valoarea ei este\n" +" utilizată ca șir de format pentru strftime(3) pentru a imprima marcajul de\n" +" timp asociat cu fiecare intrare din istoric afișată. În caz contrar, nu se\n" +" imprimă marcajele de timp.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n" +" sau apare o eroare." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help jobs», din «bash»; +# «bash -c "help jobs"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:879 msgid "" "Display status of jobs.\n" @@ -3179,7 +3977,33 @@ msgid "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." msgstr "" - +"Afișează starea proceselor.\n" +" \n" +" Listează procesele active. ID_PROC, restrânge afișarea la acel proces.\n" +" Fără opțiuni, se afișează starea tuturor proceselor active.\n" +" \n" +" Opțiuni:\n" +" -l\tlistează ID-urile proceselor, pe lângă informațiile normale\n" +" -n\tlistează numai procesele care s-au schimbat de la ultima notificare\n" +" -p\tlistează numai ID-urile proceselor\n" +" -r\trestrânge afișarea, la procesele în execuție\n" +" -s\trestrânge afișarea, la procesele oprite\n" +" \n" +" Dacă este furnizată -x, COMANDA este rulată după ce toate specificațiile\n" +" procesului care apar în ARGumente au fost înlocuite cu ID-ul de proces al\n" +" liderului grupului de procese, al procesului respectiv.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n" +" sau apare o eroare.\n" +" Dacă se utilizează „-x”, returnează starea de ieșire a COMENZII." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help disown», din «bash»; +# «bash -c "help disown"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:906 msgid "" "Remove jobs from current shell.\n" @@ -3196,7 +4020,27 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" +"Elimină procese din shell-ul actual.\n" +" \n" +" Elimină fiecare argument ID_PROC din tabelul de procese active. Fără\n" +" niciun ID_PROC, shell-ul folosește noțiunea sa de proces curent.\n" +" \n" +" Opțiuni:\n" +" -a\telimină toate procesele dacă ID_PROC nu este furnizat\n" +" -h\tmarchează fiecare ID_PROC astfel încât SIGHUP să nu fie trimis\n" +" \t\tla proces dacă shell-ul primește un semnal SIGHUP\n" +" -r\telimină numai procesele care rulează\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n" +" sau ID_PROC." +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help kill», din «bash»; +# «bash -c "help kill"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:925 msgid "" "Send a signal to a job.\n" @@ -3219,7 +4063,34 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" - +"Trimite un semnal către un proces.\n" +" \n" +" Trimite proceselor identificate prin PID sau JOBSPEC semnalul numit de\n" +" SIGSPEC sau de SIGNUM. Dacă nici SIGSPEC, nici SIGNUM nu sunt\n" +" prezente, atunci se presupune SIGTERM.\n" +" \n" +" Opțiuni:\n" +" -s sig\tSIG este un nume de semnal\n" +" -n sig\tSIG este un număr de semnal\n" +" -l\tlistează numele semnalelor; dacă după „-l” urmează argumente, se\n" +" \t\tpresupune că sunt numere de semnal pentru care ar trebui listate\n" +" \t\tnume\n" +" -L\tsinonim cu -l\n" +" \n" +" Kill este o comandă internă de shell din două motive: permite utilizarea\n" +" ID-urilor de job în locul ID-urilor de proces și permite omorârea proceselor\n" +" dacă este atinsă limita de procese pe care le puteți crea.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n" +" sau apare o eroare." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help let», din «bash»; +# «bash -c "help let"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:949 msgid "" "Evaluate arithmetic expressions.\n" @@ -3227,8 +4098,7 @@ msgid "" " Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" " fixed-width integers with no check for overflow, though division by 0\n" " is trapped and flagged as an error. The following list of operators is\n" -" grouped into levels of equal-precedence operators. The levels are " -"listed\n" +" grouped into levels of equal-precedence operators. The levels are listed\n" " in order of decreasing precedence.\n" " \n" " \tid++, id--\tvariable post-increment, post-decrement\n" @@ -3264,22 +4134,67 @@ msgid "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" - +"Evaluează expresii aritmetice.\n" +" \n" +" Evaluează fiecare ARGument ca o expresie aritmetică. Evaluarea se face\n" +" în numere întregi cu lățime fixă, fără verificarea depășirii, dar împărțirea\n" +" la 0 este detectată și semnalată ca o eroare. Următoarea listă de operatori\n" +" este grupată în grupuri de operatori cu prioritate egală. Nivelurile sunt\n" +" listate în ordinea descrescătoare a priorității.\n" +" \n" +" \tid++, id--\tpost-incrementare, post-decrementare a variabilei\n" +" \t++id, --id\tpre-incrementare, pre-decrementare a variabilei\n" +" \t-, +\t\tminus unar, plus unar\n" +" \t!, ~\t\tnegații logice și binare\n" +" \t**\t\texponențial\n" +" \t*, /, %\t\tînmulțire, împărțire, rest\n" +" \t+, -\t\tadunare, scădere\n" +" \t<<, >>\t\tdeplasare binară la stânga și la dreapta\n" +" \t<=, >=, <, >\tcomparare\n" +" \t==, !=\t\tegalitate, inegalitate\n" +" \t&\t\tși (AND) binar\n" +" \t^\t\tsau exclusiv (XOR) binar\n" +" \t|\t\tsau (OR) binar\n" +" \t&&\t\tlși (AND) logic\n" +" \t||\t\tsau (OR) logic\n" +" \texpr ? expr : expr\n" +" \t\t\toperator condițional\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tasignare\n" +" \n" +" Variabilele shell sunt permise ca operanzi. Numele variabilei este\n" +" înlocuit cu valoarea acesteia (constrânsă la un număr întreg cu \n" +" lățime fixă) în cadrul unei expresii. Nu este necesar ca variabila să\n" +" aibă atributul întreg activat pentru a fi utilizată într-o expresie.\n" +" \n" +" Operatorii sunt evaluați în ordinea de prioritate. Subexpresiile din\n" +" paranteze sunt evaluate mai întâi și pot suprascrie regulile de\n" +" precedență de mai sus.\n" +" \n" +" Starea de ieșire:\n" +" Dacă ultimul ARGument este evaluat la 0, «let» returnează 1; în caz contrar,\n" +" «let» returnează 0." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help read», din «bash»; +# «bash -c "help read"», din «bash», sau +# dintr-un shell, diferit de «bash». #: builtins.c:994 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with " -"word\n" +" if the -u option is supplied. The line is split into fields as with word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as " -"word\n" -" delimiters.\n" +" the last NAME. Only the characters found in $IFS are recognized as word\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY " -"variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -3291,8 +4206,7 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" " \t\tNCHARS characters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, " -"unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" " \t\tEOF is encountered or read times out, ignoring any\n" " \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" @@ -3310,14 +4224,64 @@ msgid "" " -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times " -"out\n" -" (in which case it's greater than 128), a variable assignment error " -"occurs,\n" +" The return code is zero, unless end-of-file is encountered, read times out\n" +" (in which case it's greater than 128), a variable assignment error occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" - -#: builtins.c:1041 +"Citește o linie din intrarea standard și o împarte în câmpuri.\n" +" \n" +" Citește o singură linie din intrarea standard sau din descriptorul de fișier\n" +" FD dacă este furnizată opțiunea -u. Linia este împărțită în câmpuri ca în\n" +" cazul împărțirii cuvintelor, iar primul cuvânt este atribuit primului NUME, \n" +" al doilea cuvânt celui de-al doilea NUME și așa mai departe, ultimul NUME\n" +" preluând lista cuvintelor rămase. Doar caracterele găsite în $IFS sunt\n" +" recunoscute ca delimitatori de cuvinte. În mod implicit, caracterul bară oblică\n" +" inversă eludează caracterele delimitatoare și linia nouă.\n" +" \n" +" Dacă nu sunt furnizate NUME, linia citită este stocată în variabila REPLY.\n" +" \n" +" Opțiuni:\n" +" -a matrice\n" +" \t\tatribuie cuvintele citite indicilor secvențiali ai variabilei\n" +" \t\tmatrice MATRICE, începând de la zero\n" +" -d delim\tcontinuă până când este citit primul caracter din DELIM, în loc\n" +" \t\tde linia nouă\n" +" -e\tutilizează Readline pentru a obține linia\n" +" -i text\tutilizează TEXT ca text inițial pentru Readline\n" +" -n ncarac\treturnează după citirea a NCARAC caractere în loc să aștepte\n" +" \t\to nouă linie, dar respectă delimitatorul dacă sunt citite mai\n" +" \t\tpuțin de NCARAC caractere înainte de delimitator\n" +" -N ncarac\treturnează numai după citirea exactă a NCARAC caractere, cu\n" +" \t\texcepția cazului în care se întâlnește sfârșitul fișierului sau \n" +" \t\tdacă timpul de citire expiră, eliminând orice delimitatori\n" +" -p prompt\tafișează șirul PROMPT fără un caracter de linie nouă la final,\n" +" \t\tînainte de a încerca să citească\n" +" -r\tnu permite barelor oblice inverse să eludeze niciun caracter\n" +" -s\tnu afișează ieșirea ce vine de la un terminal\n" +" -t timeout\n" +" \t\texpiră și returnează un cod de eroare dacă o linie completă de\n" +" \t\tintrare nu este citită în TIMEOUT secunde. Valoarea variabilei\n" +" \t\tTIMEOUT este timpul de expirare implicit. TIMEOUT poate fi un\n" +" \t\tnumăr fracțional. Dacă TIMEOUT este zero, citirea se termină\n" +" \t\timediat fără a încerca să citească date, și returnează un cod de\n" +" \t\tsucces numai dacă intrarea este disponibilă pe descriptorul de\n" +" \t\tfișier specificat. Starea de ieșire este mai mare de 128 dacă\n" +" \t\ttimpul de expirare este depășit\n" +" -u fd\tcitește din descriptorul de fișier FD în loc de intrarea standard\n" +" \n" +" Starea de ieșire:\n" +" Codul de returnare este zero, cu excepția cazului în care se întâlnește\n" +" sfârșitul fișierului, expirarea timpului de citire (caz în care este mai mare\n" +" de 128), apare o eroare de atribuire a variabilei sau este furnizat un\n" +" descriptor de fișier nevalid ca argument pentru opțiunea „-u”." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help return», din «bash»; +# «bash -c "help return"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3328,8 +4292,29 @@ msgid "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." msgstr "" - -#: builtins.c:1054 +"Returnează dintr-o funcție shell.\n" +" \n" +" Determină ieșirea unei funcții sau a unui script sursă cu valoarea de\n" +" returnare specificată de N. Dacă N este omis, starea de returnare\n" +" este cea a ultimei comenzi executate în funcție sau script.\n" +" \n" +" Starea de ieșire:\n" +" Returnează N sau eșec dacă shell-ul nu execută o funcție sau un script." + +# R-GC, scrie: +# unele dintre definițiile acestui(lung) mesaj, +# sunt adaptări ale muncii altor echipe din TP. +# *** +# Mulțumesc, tuturor acestor echipe: es, fr, pt_BR, pt, it, nl, pl, uk; sper să nu fi uitat +# niciuna dintre cele ce mi-au folosit ca +# inspirație, în traducerea acestui mesaj. +# ================================= +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help set», din «bash»; +# «bash -c "help set"», din «bash», sau dintr-un +# shell, diferit de «bash». +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3372,8 +4357,7 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero " -"status\n" +" or zero if no command exited with a non-zero status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -3397,8 +4381,7 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG and RETURN traps are inherited by shell " -"functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3414,8 +4397,100 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" - -#: builtins.c:1139 +"Stabilește sau anulează valorile opțiunilor de shell și ale parametrilor\n" +"poziționali.\n" +" \n" +" Modifică valoarea atributelor shell și a parametrilor poziționali sau \n" +" afișează numele și valorile variabilelor shell.\n" +" \n" +" Opțiuni:\n" +" -a Marchează variabilele care sunt modificate sau create, pentru export.\n" +" -b Notifică imediat când o sarcină este finalizată.\n" +" -e Termină imediat dacă o comandă termină cu o stare diferită de zero.\n" +" -f Dezactivează folosirea metacaracterelor pentru completarea numelor\n" +" fișierelor (fără „globbing”).\n" +" -h Memorizează locația comenzilor pe măsură ce sunt căutate.\n" +" -k Toate argumentele de atribuire sunt plasate în mediul(environment)\n" +" unei comenzi, nu doar cele care preced numele comenzii.\n" +" -m Activează controlul sarcinii.\n" +" -n Citește comenzile, dar nu le execută.\n" +" -o nume-opțiune\n" +" Stabilește variabila corespunzătoare → nume-opțiune:\n" +" allexport la fel ca -a\n" +" braceexpand la fel ca -B\n" +" emacs utilizează o interfață de editare a liniilor în\n" +" stilul «emacs»\n" +" errexit la fel ca -e\n" +" errtrace la fel ca -E\n" +" functrace la fel ca -T\n" +" hashall la fel ca -h\n" +" histexpand la fel ca -H\n" +" history activează istoricul comenzilor\n" +" ignoreeof shell-ul nu va termina după citirea „EOF”\n" +" interactive-comments\n" +" permite comentariilor să apară în comenzile interactive\n" +" keyword la fel ca -k\n" +" monitor la fel ca -m\n" +" noclobber la fel ca -C\n" +" noexec la fel ca -n\n" +" noglob la fel ca -f\n" +" nolog acceptat în prezent, dar ignorat\n" +" notify la fel ca -b\n" +" nounset la fel ca -u\n" +" onecmd la fel ca -t\n" +" physical la fel ca -P\n" +" pipefail valoarea returnată a unei linii de conectare este\n" +" starea ultimei comenzi care a ieșit cu o stare diferită\n" +" de zero sau zero dacă nicio comandă nu a ieșit cu o\n" +" stare diferită de zero\n" +" posix modifică comportamentul lui «bash» în cazul în care\n" +" operația implicită diferă de standardul Posix, pentru\n" +" a se potrivi cu standardul Posix\n" +" privileged la fel ca -p\n" +" verbose la fel ca -v\n" +" vi utilizează o interfață de editare a liniilor în\n" +" stilul «vi»\n" +" xtrace la fel ca -x\n" +" -p Modul cu privilegii: Activat ori de câte ori ID-urile de utilizator\n" +" reale și efective nu se potrivesc. Dezactivează procesarea \n" +" fișierului $ENV și importul funcțiilor shell. Dezactivarea acestei\n" +" opțiuni face ca uid-ul și gid-ul efectiv să fie stabilite la uid-ul și\n" +" gid-ul real\n" +" -t Termină după citirea și executarea unei comenzi.\n" +" -u Tratează variabilele nedefinite ca pe o eroare la substituire.\n" +" -v Afișează liniile de intrare ale shell-ului pe măsură ce sunt citite.\n" +" -x Afișează comenzile și argumentele lor pe măsură ce sunt executate.\n" +" -B Shell-ul va efectua înlocuirea acoladelor (de exp.: a{b,c} → ab ac)\n" +" -C Dacă este specificată, nu permite ca fișierele obișnuite existente să\n" +" fie suprascrise prin redirecționarea ieșirii.\n" +" -E Dacă este specificată, capturarea ERR este moștenită de funcțiile shell.\n" +" -H Permite înlocuirea istoricului cu un „!”. Această opțiune este activată\n" +" în mod implicit atunci când shell-ul este interactiv.\n" +" -P Dacă este specificată, legăturile simbolice nu sunt urmate la executarea\n" +" comenzilor precum «cd» care schimbă directorul curent.\n" +" -T Dacă este specificată, capturile DEBUG și RETURN sunt moștenite de\n" +" funcțiile shell.\n" +" -- Atribuie toate argumentele rămase parametrilor de poziție.\n" +" Dacă nu există argumente rămase, parametrii de poziție sunt eliminați.\n" +" - Atribuie toate argumentele rămase parametrilor de poziție.\n" +" Opțiunile -x și -v sunt dezactivate.\n" +" \n" +" Utilizarea lui „+” în loc de „-”, face ca aceste opțiuni să fie dezactivate.\n" +" Opțiunile pot fi folosite și la invocarea shell-ului. Setul actual de \n" +" opțiuni poate fi găsit în $-. Restul de n ARG sunt parametri poziționali și\n" +" sunt alocați, în ordine, la $1, $2, .. $n. Dacă nu sunt date ARG, toate \n" +" variabilele shell sunt afișate.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes cu excepția cazului în care este dată o opțiune nevalidă." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help unset», din «bash»; +# «bash -c "help unset"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3427,8 +4502,7 @@ msgid "" " -n\ttreat each NAME as a name reference and unset the variable itself\n" " \t\trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that " -"fails,\n" +" Without options, unset first tries to unset a variable, and if that fails,\n" " tries to unset a function.\n" " \n" " Some variables cannot be unset; also see `readonly'.\n" @@ -3436,14 +4510,37 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" +"Anulează valorile și atributele variabilelor și funcțiilor shell.\n" +" \n" +" Pentru fiecare NUME, elimină variabila sau funcția corespunzătoare.\n" +" \n" +" Opțiuni:\n" +" -f\ttratează fiecare NUME ca pe o funcție shell\n" +" -v\ttratează fiecare NUME ca pe o variabilă shell\n" +" -n\ttratează fiecare NUME ca referință de nume și anulează variabila\n" +" \t\tîn sine, în loc de variabila la care face referire\n" +" \n" +" Fără opțiuni, „unset” încearcă mai întâi să anuleze o variabilă și, dacă\n" +" aceasta nu reușește, încearcă să anuleze o funcție.\n" +" \n" +" Unele variabile nu pot fi anulate; consultați, de asemenea, «readonly».\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n" +" sau un NUME este doar pentru citire." -#: builtins.c:1161 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help export», din «bash»; +# «bash -c "help export"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before " -"exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -3455,8 +4552,30 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"Stabilește atributul de export pentru variabilele shell.\n" +" \n" +" Marchează fiecare NUME pentru export automat în mediul(environment)\n" +" comenzilor executate ulterior. Dacă este furnizată VALOAREa, atribuie\n" +" VALOAREa înainte de a exporta.\n" +" \n" +" Opțiuni:\n" +" -f\tse referă la funcțiile shell\n" +" -n\telimină proprietatea de export din fiecare NUME\n" +" -p\tafișează o listă cu toate variabilele și funcțiile exportate\n" +" \n" +" Un argument de „--” dezactivează procesarea ulterioară a opțiunilor.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n" +" sau NUME nu este valid." -#: builtins.c:1180 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help readonly», din «bash»; +# «bash -c "help readonly"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3476,8 +4595,32 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"Marchează variabilele shell ca neschimbabile.\n" +" \n" +" Marchează fiecare NUME ca fiind doar pentru citire; valorile acestor NUME\n" +" nu pot fi modificate prin atribuirea ulterioară. Dacă este furnizată VALOARE,\n" +" atribuie VALOARE înainte de a marca ca doar pentru citire.\n" +" \n" +" Opțiuni:\n" +" -a\tse referă la variabilele matrice indexate\n" +" -A\tse referă la variabile matrice asociative\n" +" -f\tse referă la funcțiile shell\n" +" -p\tafișează o listă cu toate variabilele sau funcțiile protejate\n" +" \t\tla scriere, în funcție de dacă este dată sau nu opțiunea „-f”\n" +" \n" +" Un argument de „--” dezactivează procesarea ulterioară a opțiunilor.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n" +" sau NUME nu este valid." -#: builtins.c:1202 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help shift», din «bash»; +# «bash -c "help shift"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -3487,8 +4630,22 @@ msgid "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." msgstr "" +"Schimbă parametrii poziționali.\n" +" \n" +" Redenumește parametrii de poziție $N+1,$N+2 ... la $1,$2 ... Dacă N\n" +" nu este dat, se presupune că este 1.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care N este negativ sau mai\n" +" mare decât $#." -#: builtins.c:1214 builtins.c:1229 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help source», din «bash»; +# «bash -c "help source"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3501,8 +4658,24 @@ msgid "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." msgstr "" +"Execută comenzi dintr-un fișier în shell-ul curent.\n" +" \n" +" Citește și execută comenzi din NUME_FIȘIER în shell-ul curent. Intrările \n" +" din $PATH sunt utilizate pentru a găsi directorul care conține NUME_FIȘIER.\n" +" Dacă sunt furnizate ARGUMENTE, acestea devin parametrii de poziție atunci\n" +" când este executat NUME_FIȘIER.\n" +" \n" +" Starea de ieșire:\n" +" Returnează starea ultimei comenzi executate în NUME_FIȘIER; eșuează dacă\n" +" NUME_FIȘIER nu poate fi citit." -#: builtins.c:1245 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help suspend», din «bash»; +# «bash -c "help suspend"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -3515,8 +4688,27 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"Suspendă execuția shell-ului.\n" +" \n" +" Suspendă execuția acestui shell până când primește un semnal SIGCONT.\n" +" Cu excepția cazului în care sunt forțate, shell-urile de autentificare nu pot \n" +" fi suspendate.\n" +" \n" +" Opțiuni:\n" +" -f\tforțează suspendarea, chiar dacă shell-ul este un shell de\n" +" \tautentificare\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care controlul sarcinii nu este\n" +" activat sau apare o eroare." -#: builtins.c:1261 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help test», din «bash»; +# «bash -c "help test"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3550,8 +4742,7 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last " -"read.\n" +" -N FILE True if the file has been modified since it was last read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -3572,8 +4763,7 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 " -"lexicographically.\n" +" True if STRING1 sorts before STRING2 lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -3598,33 +4788,131 @@ msgid "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." msgstr "" - -#: builtins.c:1343 +"Evaluează expresia condițională.\n" +" \n" +" Termină cu starea 0 (adevărat) sau 1 (fals) în funcție de evaluarea EXPR.\n" +" Expresiile pot fi unare sau binare. Expresiile unare sunt adesea folosite\n" +" pentru a examina starea unui fișier. Există de-asemeni operatori de șir și\n" +" operatori de comparație numerică.\n" +" \n" +" Comportamentul testului depinde de numărul de argumente. Citiți pagina\n" +" de manual, «bash», pentru specificația completă.\n" +" \n" +" Operatori de fișiere:\n" +" \n" +" -a FIȘIER Adevărat dacă fișierul există.\n" +" -b FIȘIER Adevărat dacă fișierul este un dispozitiv de blocuri.\n" +" -c FIȘIER Adevărat dacă fișierul este un dispozitiv de caractere.\n" +" -d FIȘIER Adevărat dacă fișierul este un director.\n" +" -e FIȘIER Adevărat dacă fișierul există.\n" +" -f FIȘIER Adevărat dacă fișierul există și este un fișier normal.\n" +" -g FIȘIER Adevărat dacă fișierul are activat bitul „set-group-id”.\n" +" -h FIȘIER Adevărat dacă fișierul este o legătură simbolică.\n" +" -L FIȘIER Adevărat dacă fișierul este o legătură simbolică..\n" +" -k FIȘIER Adevărat dacă fișierul are activat bitul „sticky” (lipicios).\n" +" -p FIȘIER Adevărat dacă fișierul este o linie de conectare numită.\n" +" -r FIȘIER Adevărat dacă fișierul poate fi citit de dumneavoastră.\n" +" -s FIȘIER Adevărat dacă fișierul există și nu este gol.\n" +" -S FIȘIER Adevărat dacă fișierul este un soclu.\n" +" -t DF Adevărat dacă DF(descriptorul de fișier) este deschis pe un terminal.\n" +" -u FIȘIER Adevărat dacă fișierul are activat bitul „set-user-id”.\n" +" -w FIȘIER Adevărat dacă fișierul poate fi scris de dumneavoastră.\n" +" -x FIȘIER Adevărat dacă fișierul poate fi executat de dumneavoastră.\n" +" -O FIȘIER Adevărat dacă fișierul este deținut efectiv de dumneavoastră.\n" +" -G FIȘIER Adevărat dacă fișierul este deținut efectiv de grupul dumneavoastră.\n" +" -N FIȘIER Adevărat dacă fișierul a fost modificat de la ultima citire.\n" +" \n" +" FIȘI1 -nt FIȘI2 Adevărat dacă fișierul 1 este mai nou decât fișierul 2 (conform\n" +" datei modificării).\n" +" \n" +" FIȘI1 -ot FIȘI2 Adevărat dacă fișierul1 este mai vechi decât fișierul2.\n" +" \n" +" FIȘI1 -ef FIȘI2 Adevărat dacă fișierul1 este o legătură dură către fișierul2.\n" +" \n" +" Operatori de șir:\n" +" \n" +" -z ȘIR Adevărat dacă șirul este gol.\n" +" \n" +" -n ȘIR Adevărat dacă șirul nu este gol.\n" +" ȘIR Adevărat dacă șirul nu este gol.\n" +" \n" +" ȘIR1 = ȘIR2 Adevărat dacă șirurile sunt egale.\n" +" ȘIR1 != ȘIR2 Adevărat dacă șirurile nu sunt egale.\n" +" ȘIR1 < ȘIR2 Adevărat dacă ȘIR1 se ordonează lexicografic înainte de ȘIR2.\n" +" ȘIR1 > ȘIR2 Adevărat dacă ȘIR1 se ordonează lexicografic după ȘIR2.n\n" +" \n" +" Alți operatori:\n" +" \n" +" -o OPȚIUNE Adevărat dacă opțiunea shell OPȚIUNE este activată.\n" +" -v VAR Adevărat dacă este definită variabila shell VAR.\n" +" -R VAR Adevărat dacă variabila shell VAR este definită și este o referință\n" +" de nume.\n" +" ! EXPR Adevărat dacă expresia EXPR este falsă.\n" +" EXPR1 -a EXPR2 Adevărat dacă amândouă expresiile EXPR1 și EXPR2 sunt adevărate.\n" +" EXPR1 -o EXPR2 Adevărat dacă fie expresia EXPR1, fie expresia EXPR2 este adevărată.\n" +" \n" +" ARG1 OP ARG2 Teste aritmetice. OP este unul dintre -eq, -ne, -lt, -le, -gt, sau -ge.\n" +" \n" +" Operatorii binari aritmetici returnează adevărat dacă ARG1 este egal, inegal, mai mic\n" +" decât, mai mic decât sau egal, mai mare decât, sau mai mare decât sau egal cu ARG2.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes dacă EXPR este evaluată ca adevărată; eșuează dacă EXPR este\n" +" evaluată ca fiind falsă sau este dat un argument nevalid." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help [», din «bash»; +# «bash -c "help ["», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" " This is a synonym for the \"test\" builtin, but the last argument must\n" " be a literal `]', to match the opening `['." msgstr "" +"Evaluează expresia condițională.\n" +" \n" +" Acesta este un sinonim pentru comanda internă «test», dar ultimul argument\n" +" trebuie să fie un „]” literal, pentru a se potrivi cu „[” de deschidere." -#: builtins.c:1352 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help times», din «bash»; +# «bash -c "help times"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of " -"its\n" +" Prints the accumulated user and system times for the shell and all of its\n" " child processes.\n" " \n" " Exit Status:\n" " Always succeeds." msgstr "" +"Afișează timpii procesului.\n" +" \n" +" Afișează timpii acumulați de utilizator și sistem pentru shell și pentru toate\n" +" procesele sale secundare.\n" +" \n" +" Starea de ieșire:\n" +" Întotdeauna reușește(0)." -#: builtins.c:1364 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help trap», din «bash»; +# «bash -c "help trap"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives " -"signals\n" +" Defines and activates handlers to be run when the shell receives signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -3633,37 +4921,70 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " -"If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " -"If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " -"a\n" -" script run by the . or source builtins finishes executing. A " -"SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause " -"the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" +" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands " -"associated\n" +" If no arguments are supplied, trap prints the list of commands associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal " -"number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is " -"given." -msgstr "" - -#: builtins.c:1400 +" Returns success unless a SIGSPEC is invalid or an invalid option is given." +msgstr "" +"Capturează semnale și alte evenimente.\n" +" \n" +" Definește și activează operatorii care urmează să fie rulați atunci când\n" +" shell-ul primește semnale sau apar alte evenimente.\n" +" \n" +" ARG este o comandă care trebuie citită și executată atunci când shell-ul\n" +" primește semnalul(ele) SIGNAL_SPEC. Dacă ARG este absentă (și este\n" +" furnizat un singur SIGNAL_SPEC) sau „-”, fiecare semnal specificat este\n" +" restabilit la valoarea sa originală. Dacă ARG este un șir nul, fiecare\n" +" SIGNAL_SPEC este ignorat de către shell și de comenzile pe care le invocă.\n" +" \n" +" Dacă un SIGNAL_SPEC este EXIT (0), ARG este executat la ieșirea din shell.\n" +" Dacă un SIGNAL_SPEC este DEBUG, ARG este executat înainte de fiecare comandă\n" +" simplă. Dacă un SIGNAL_SPEC este RETURN, ARG este executat de fiecare dată \n" +" când o funcție shell sau un script rulat din . sau comanda internă «source»\n" +" se termină de executat. Un SIGNAL_SPEC de ERR face ca ARG să fie executat\n" +" de fiecare dată când eșecul unei comenzi ar determina terminarea shell-ului\n" +" atunci când opțiunea „-e” este activată. \n" +" \n" +" Dacă nu sunt furnizate argumente, «trap» afișează lista de comenzi asociate\n" +" fiecărui semnal.\n" +" \n" +" Opțiuni:\n" +" -l\tafișează o listă de nume de semnale și numerele corespunzătoare\n" +" \tale acestora\n" +" -p\tafișează comenzile de captură asociate fiecărui SIGNAL_SPEC\n" +" \n" +" Fiecare SIGNAL_SPEC este fie un nume de semnal în , fie un număr\n" +" de semnal. Numele semnalelor nu fac distincție între majuscule și minuscule,\n" +" iar prefixul SIG este opțional. Un semnal poate fi trimis către shell cu\n" +" «kill -signal $$».\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care un SIGSPEC este nevalid sau \n" +" este dată o opțiune nevalidă." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help type», din «bash»; +# «bash -c "help type"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -3689,16 +5010,45 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not " -"found." -msgstr "" - -#: builtins.c:1431 +" Returns success if all of the NAMEs are found; fails if any are not found." +msgstr "" +"Afișează informații despre comanda «type».\n" +" \n" +" Pentru fiecare NUME, indică cum ar fi interpretat dacă ar fi folosit ca\n" +" nume de comandă.\n" +" \n" +" Opțiuni:\n" +" -a\tafișează toate locațiile care conțin un executabil numit NUME; \n" +" \t\tinclude alias, componente integrate și funcții, dacă și numai\n" +" \t\tdacă opțiunea „-p” nu este, de asemenea, utilizată\n" +" -f\tsuprimă căutarea funcției de shell\n" +" -P\tforțează o căutare PATH pentru fiecare NUME, chiar dacă este un\n" +" \t\talias, o comandă internă sau o funcție, și returnează numele\n" +" \t\tfișierului din disc care va fi executat\n" +" -p\treturnează fie numele fișierului de pe disc care va fi executat,\n" +" \t\tfie nimic dacă «type -t NUME» nu va returna „file”\n" +" -t\tafișează un singur cuvânt care este unul dintre „alias”, „keyword”,\n" +" \t\t„function”, „builtin”, „file” sau „”, dacă NUME este un alias,\n" +" \t\tcuvânt rezervat shell, funcție shell, comandă internă shell,\n" +" \t\tfișier pe disc, sau, respectiv, negăsit\n" +" \n" +" Argumente:\n" +" NUME\tNumele comenzii de interpretat.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes dacă toate NUMEle sunt găsite; eșuează dacă nu sunt găsite." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help ulimit», din «bash»; +# «bash -c "help ulimit"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and " -"processes\n" +" Provides control over the resources available to the shell and processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -3742,8 +5092,61 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" - -#: builtins.c:1482 +"Modifică limitele resurselor shell.\n" +" \n" +" Oferă control asupra resurselor disponibile shell-ului și proceselor pe care\n" +" acesta le creează, pe sisteme care permit un astfel de control.\n" +" \n" +" Opțiuni:\n" +" -S\tutilizează limita de resurse „soft”\n" +" -H\tutilizează limita de resurse „hard”\n" +" -a\tsunt raportate toate limitele curente\n" +" -b\tdimensiunea memoriei tampon a soclului\n" +" -c\tdimensiunea maximă a fișierelor create cu conținutul memoriei (core)\n" +" -d\tdimensiunea maximă a segmentului de date al unui proces\n" +" -e\tprioritatea maximă de planificare („nice”)\n" +" -f\tdimensiunea maximă a fișierelor scrise de shell și subprocesele sale\n" +" -i\tnumărul maxim de semnale în așteptare\n" +" -k\tnumărul maxim de Kcozi alocate pentru acest proces\n" +" -l\tdimensiunea maximă pe care un proces o poate bloca în memorie\n" +" -m\tcantitatea maximă de memorie fizică a unui proces\n" +" -n\tnumărul maxim de descriptori de fișier deschise\n" +" -p\tdimensiunea memoriei tampon a liniei de conectare\n" +" -q\tnumărul maxim de octeți din cozile de mesaje POSIX\n" +" -r\tprioritatea maximă a procesului în timp real\n" +" -s\tdimensiunea maximă a stivei\n" +" -t\tcantitatea maximă de timp a CPU-ului în secunde\n" +" -u\tnumărul maxim de procese ale utilizatorului\n" +" -v\tdimensiunea memoriei virtuale\n" +" -x\tnumărul maxim de blocări ale fișierelor\n" +" -P\tnumărul maxim de pseudoterminale\n" +" -R\ttimpul maxim pe care îl poate rula un proces în timp real înainte\n" +" \tde blocare\n" +" -T\tnumărul maxim de fire(threads)\n" +" \n" +" Nu toate opțiunile sunt disponibile pe toate platformele.\n" +" \n" +" Dacă se dă LIMITA, aceasta este noua valoare a resursei specificate;\n" +" valorile speciale de LIMITĂ: „soft”, „hard” și „unlimited” reprezintă\n" +" limita curentă maleabilă, limita curentă dură și, respectiv, fără limită.\n" +" Altminteri, este afișată valoarea curentă a resursei specificate. Dacă\n" +" nu este dată nicio opțiune, atunci se presupune „-f”.\n" +" \n" +" Valorile sunt în incremente de 1024 de octeți, cu excepția lui „-t”, care\n" +" este în secunde, a lui „-p”, care este în incremente de 512 octeți și a lui\n" +" „-u”, care este un număr nescalat de procese.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este furnizată o opțiune\n" +" nevalidă sau apare o eroare." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help umask», din «bash»; +# «bash -c "help umask"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -3760,28 +5163,47 @@ msgid "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" +"Afișează sau modifică masca pentru accesarea fișierelor nou create.\n" +" \n" +" Stabilește masca de creare a fișierelor de utilizator la MOD. Dacă MOD\n" +" este omis, afișează valoarea curentă a măștii.\n" +" \n" +" Dacă MOD începe cu o cifră, acesta este interpretat ca un număr octal;\n" +" altminteri este interpretat ca un șir în format simbolic ca cel acceptat\n" +" de chmod(1).\n" +" \n" +" Opșiuni\n" +" -p\tdacă MOD este omis, arată ieșirea într-o formă care poate fi\n" +" \treutilizată ca intrare\n" +" -S\tafișează MODul în formatul simbolic; altminteri în formatul octal\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care MOD este nevalid sau\n" +" este dată o opțiune nevalidă." -#: builtins.c:1502 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help wait», din «bash»; +# «bash -c "help wait"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for each process identified by an ID, which may be a process ID or " -"a\n" +" Waits for each process identified by an ID, which may be a process ID or a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" " status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" -" If the -n option is supplied, waits for a single job from the list of " -"IDs,\n" -" or, if no IDs are supplied, for the next job to complete and returns " -"its\n" +" If the -n option is supplied, waits for a single job from the list of IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns its\n" " exit status.\n" " \n" " If the -p option is supplied, the process or job identifier of the job\n" " for which the exit status is returned is assigned to the variable VAR\n" -" named by the option argument. The variable will be unset initially, " -"before\n" +" named by the option argument. The variable will be unset initially, before\n" " any assignment. This is useful only when the -n option is supplied.\n" " \n" " If the -f option is supplied, and job control is enabled, waits for the\n" @@ -3792,23 +5214,63 @@ msgid "" " option is given, or if -n is supplied and the shell has no unwaited-for\n" " children." msgstr "" +"Așteaptă finalizarea lucrării și returnează starea de ieșire.\n" +" \n" +" Așteaptă fiecare proces identificat printr-un ID, care poate fi un ID de\n" +" proces sau o specificație de lucrare și raportează starea de terminare\n" +" a acestuia. Dacă ID-ul nu este dat, așteaptă toate procesele secundare\n" +" active în prezent și starea de returnare este zero. Dacă ID-ul este o\n" +" specificație de lucrare, așteaptă toate procesele din secvența de comenzi\n" +" respectivă a lucrării.\n" +" \n" +" Dacă este furnizată opțiunea „-n”, așteaptă o singură lucrare din lista de\n" +" ID-uri sau, dacă nu sunt furnizate ID-uri, pentru finalizarea următoarei\n" +" lucrări și returnează starea de ieșire.\n" +" \n" +" Dacă este furnizată opțiunea „-p”, identificatorul de proces sau de lucrare al\n" +" lucrării pentru care este returnată starea de ieșire este atribuit variabilei\n" +" VAR numită de argumentul opțiunii. Variabila va fi anulată inițial, înainte\n" +" de orice atribuire. Acest lucru este util numai atunci când este furnizată\n" +" opțiunea „-n”.\n" +" \n" +" Dacă este furnizată opțiunea „-f” și controlul lucrării este activat, \n" +" așteaptă ca ID-ul specificat să se termine, în loc să aștepte ca acesta să\n" +" își schimbe starea.\n" +" \n" +" Starea de ieșire:\n" +" Returnează starea ultimului ID; eșuează dacă ID-ul este nevalid sau este\n" +" dată o opțiune nevalidă sau dacă „-n” este furnizată și shell-ul nu are\n" +" niciun copil pe care să-l aștepte." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for each process specified by a PID and reports its termination " -"status.\n" +" Waits for each process specified by a PID and reports its termination status.\n" " If PID is not given, waits for all currently active child processes,\n" " and the return status is zero. PID must be a process ID.\n" " \n" " Exit Status:\n" -" Returns the status of the last PID; fails if PID is invalid or an " -"invalid\n" +" Returns the status of the last PID; fails if PID is invalid or an invalid\n" " option is given." msgstr "" +"Așteaptă finalizarea procesului și returnează starea de ieșire.\n" +" \n" +" Așteaptă fiecare proces specificat de un PID și raportează starea de terminare a\n" +" acestuia. Dacă nu este dat PID, așteaptă toate procesele copil active în prezent,\n" +" iar starea returnată este zero. PID trebuie să fie un ID de proces.\n" +" \n" +" Starea de ieșire:\n" +" Returnează starea ultimului PID; eșuează dacă PID este nevalid sau este dată\n" +" o opțiune nevalidă." -#: builtins.c:1548 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help for», din «bash»; +# «bash -c "help for"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3820,8 +5282,23 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Execută comenzi pentru fiecare membru dintr-o listă.\n" +" \n" +" Bucla „for” execută o secvență de comenzi pentru fiecare membru dintr-o\n" +" listă de elemente. Dacă „in CUVINTE ...;” nu este prezent, atunci se\n" +" presupune „in \"$@\"”. Pentru fiecare element din CUVINTE, se definește\n" +" NUME ca acel element, și se execută COMENZILE.\n" +" \n" +" Starea de ieșire:\n" +" Returnează starea ultimei comenzi executate." -#: builtins.c:1562 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help 'for (('», din «bash»; +# «bash -c "help 'for (('"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -3837,8 +5314,27 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" - -#: builtins.c:1580 +"Buclă aritmetică „for”.\n" +" \n" +" Echivalentă cu:\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMENZI\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, și EXP3 sunt expresii aritmetice. Dacă orice expresie este\n" +" omisă, se comportă ca și cum aceasta ar avea valoarea 1.\n" +" \n" +" Starea de ieșire:\n" +" Returnează starea ultimei comenzi executate." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help select», din «bash»; +# «bash -c "help select"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3857,8 +5353,31 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" - -#: builtins.c:1601 +"Selectează cuvinte dintr-o listă și execută comenzi.\n" +" \n" +" CUVINTELE sunt expandate, generând o listă de cuvinte. Setul\n" +" de cuvinte expandate este afișat la ieșirea de eroare standard,\n" +" fiecare precedat de un număr. Dacă „în CUVINTE” nu este prezent,\n" +" se presupune „in \"$@\"”. Se afișează apoi promptul PS3 și se citește\n" +" o linie de la intrarea standard. Dacă linia constă din numărul\n" +" corespunzător unuia dintre cuvintele afișate, atunci se definește NUME\n" +" ca acest cuvânt. Dacă linia este goală, CUVINTE și promptul sunt\n" +" reafișate. Dacă este citit sfârșitul fișierului(EOF), comanda se\n" +" finalizează. Orice altă valoare citită face ca NUME să fie definit ca\n" +" null. Linia citită este salvată în variabila „REPLY”. COMENZILE sunt\n" +" executate după fiecare selecție până când este executată o comandă\n" +" de întrerupere(break).\n" +" \n" +" Starea de ieșire:\n" +" Returnează starea ultimei comenzi executate." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help time», din «bash»; +# «bash -c "help time"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3873,8 +5392,27 @@ msgid "" " Exit Status:\n" " The return status is the return status of PIPELINE." msgstr "" +"Raportează timpul consumat de execuția secvenței de comenzi.\n" +" \n" +" Execută SECVENȚA_DE_COMENZI și imprimă un rezumat al timpului real,\n" +" al timpului CPU al utilizatorului și al timpului CPU al sistemului\n" +" petrecut executând SECVENȚA_DE_COMENZI atunci când aceasta termină.\n" +" \n" +" Opțiuni:\n" +" -p\tafișează rezumatul cronometrajului în formatul Posix portabil\n" +" \n" +" Valoarea variabilei TIMEFORMAT este utilizată drept format de ieșire.\n" +" \n" +" Starea de ieșire:\n" +" Starea de returnare este starea de returnare a SECVENȚEI_DE_COMENZI." -#: builtins.c:1618 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help case», din «bash»; +# «bash -c "help case"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3884,51 +5422,104 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Execută comenzi bazate pe potrivirea modelelor.\n" +" \n" +" Execută COMENZI selectiv, pe baza potrivirilor dintre CUVÂNT și MODEL.\n" +" „|” este folosit pentru a separa mai multe modele.\n" +" \n" +" Starea de ieșire:\n" +" Returnează starea ultimei comenzi executate." -#: builtins.c:1630 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help if», din «bash»; +# «bash -c "help if"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then " -"the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " -"is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. " -"Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of " -"the\n" -" entire construct is the exit status of the last command executed, or " -"zero\n" +" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of the\n" +" entire construct is the exit status of the last command executed, or zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" - -#: builtins.c:1647 +"Execută comenzi bazate pe condițional.\n" +" \n" +" Lista „if COMENZI” este executată. Dacă starea sa de ieșire este zero,\n" +" atunci este executată lista „then COMENZI”. În caz contrar, fiecare listă \n" +" „elif COMENZI” este executată pe rând, iar dacă starea sa de ieșire este\n" +" zero, lista corespunzătoare „then COMENZI” este executată și comanda\n" +" «if» se completează. În caz contrar, lista „else COMENZI” este executată,\n" +" dacă este prezentă. Starea de ieșire a întregii construcții este starea de\n" +" ieșire a ultimei comenzi executate sau zero dacă nicio condiție nu a fost\n" +" evaluată ca adevărată.\n" +" \n" +" Starea de ieșire:\n" +" Returnează starea ultimei comenzi executate." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help while», din «bash»; +# «bash -c "help while"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Execută comenzi atâta timp cât un test reușește.\n" +" \n" +" Expandează și execută COMENZI-2 atâta timp cât comanda finală din\n" +" COMENZI are o stare de ieșire zero.\n" +" \n" +" Starea de ieșire:\n" +" Returnează starea ultimei comenzi executate." -#: builtins.c:1659 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help until», din «bash»; +# «bash -c "help until"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Execută comenzi atâta timp cât un test nu reușește.\n" +" \n" +" Expandează și execută COMENZI-2 atâta timp cât comanda finală din\n" +" COMENZI are o stare de ieșire diferită de zero.\n" +" \n" +" Starea de ieșire:\n" +" Returnează starea ultimei comenzi executate." -#: builtins.c:1671 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help coproc», din «bash»; +# «bash -c "help coproc"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3940,22 +5531,51 @@ msgid "" " Exit Status:\n" " The coproc command returns an exit status of 0." msgstr "" +"Creează un coproces numit NUME.\n" +" \n" +" Execută COMANDA în mod asincron, cu ieșirea standard și intrarea standard a\n" +" comenzii conectate printr-o conductă la descriptorii de fișiere alocați\n" +" indicilor 0 și 1 ai unei variabile matrice NUME din shell-ul de execuție.\n" +" NUMELE implicit este „COPROC”.\n" +" \n" +" Starea de ieșire:\n" +" Comanda «coproc» returnează o stare de ieșire de 0." -#: builtins.c:1685 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help function», din «bash»; +# «bash -c "help function"», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is " -"invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" " Exit Status:\n" " Returns success unless NAME is readonly." msgstr "" +"Definește funcția shell.\n" +" \n" +" Creează o funcție de shell numită NUME. Când se invocă ca o comandă simplă,\n" +" NUME rulează COMENZI în contextul shell-ului apelant. Când NUME este \n" +" invocat, argumentele sunt transmise funcției ca $1...$n, iar numele\n" +" funcției este în $FUNCNAME.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care NUME este protejat la scriere" -#: builtins.c:1699 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help -m {», din «bash»; +# «bash -c "help -m {», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -3965,8 +5585,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Grupează comenzile ca o unitate.\n" +" \n" +" Rulează un set de comenzi dintr-un grup. Aceasta este o modalitate\n" +" de a redirecționa un întreg set de comenzi.\n" +" \n" +" Starea de ieșire:\n" +" Returnează starea ultimei comenzi executate." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -3979,8 +5606,24 @@ msgid "" " Exit Status:\n" " Returns the status of the resumed job." msgstr "" +"Reia lucrarea în prim-plan.\n" +" \n" +" Echivalent cu argumentul JOB_SPEC al comenzii «fg». Reia o lucrare\n" +" oprită sau în fundal. JOB_SPEC poate specifica fie un nume de lucrare,\n" +" fie un număr de lucrare. JOB_SPEC urmat de un „&” plasează lucrarea\n" +" în fundal, ca și cum specificația lucrării ar fi fost furnizată ca argument\n" +" pentru «bg».\n" +" \n" +" Starea de ieșire:\n" +" Returnează starea lucrării reluate." -#: builtins.c:1726 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help '(('», din «bash»; +# «bash -c "help '(('», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3990,17 +5633,27 @@ msgid "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" +"Evaluează expresia aritmetică.\n" +" \n" +" EXPRESIA este evaluată conform regulilor de evaluare aritmetică.\n" +" Echivalent cu „let \"EXPRESIA\"”.\n" +" \n" +" Starea de ieșire:\n" +" Returnează 1 dacă EXPRESIA este evaluată la 0; în caz contrar, returnează 0." -#: builtins.c:1738 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help '[['», din «bash»; +# «bash -c "help '[['», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the " -"conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries " -"used\n" -" by the `test' builtin, and may be combined using the following " -"operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries used\n" +" by the `test' builtin, and may be combined using the following operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -4018,8 +5671,37 @@ msgid "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." msgstr "" - -#: builtins.c:1764 +"Execută comanda condițională.\n" +" \n" +" Returnează o stare de 0 sau 1, în funcție de evaluarea expresiei condiționale\n" +" EXPRESIA. Expresiile sunt compuse din aceleași elemente primare folosite de\n" +" comanda INTERNĂ «test» și pot fi combinate folosind următorii operatori:\n" +" \n" +" ( EXPRESIA )\tReturnează valoarea EXPRESIEI\n" +" ! EXPRESIA\tAdevărat dacă EXPRESIA este falsă; altfel fals\n" +" EXPR1 && EXPR2\tAdevărat dacă atât EXPR1 cât și EXPR2 sunt adevărate;\n" +" \t\t\taltfel fals\n" +" EXPR1 || EXPR2\tAdevărat dacă fie EXPR1, fie EXPR2 este adevărată;\n" +" \t\t\taltfel fals\n" +" \n" +" Când se utilizează operatorii „==” și „!=”, șirul din dreapta operatorului\n" +" este utilizat ca model și se realizează potrivirea modelului.\n" +" Când se utilizează operatorul „=~”, șirul din dreapta operatorului se\n" +" potrivește ca expresie regulată.\n" +" \n" +" Operatorii „&&” și „||” nu evaluează EXPR2 dacă EXPR1 este suficientă pentru\n" +" a determina valoarea expresiei.\n" +" \n" +" Starea de ieșire:\n" +" 0 sau 1, în funcție de valoarea EXPRESIEI." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help variables», din «bash»; +# «bash -c "help variables», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4072,8 +5754,67 @@ msgid "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" msgstr "" - -#: builtins.c:1821 +"Numele și utilizarea variabilelor shell comune.\n" +" \n" +" BASH_VERSION\n" +" \tInformații despre versiunea acestui Bash.\n" +" CDPATH\tO listă de directoare separate prin două puncte\n" +" \t\tpentru a căuta directoare date ca argumente pentru «cd».\n" +" GLOBIGNORE\tO listă de modele, separate prin două puncte, care descriu nume\n" +" \t\tde fișiere care trebuie ignorate de extinderea numelui de cale.\n" +" HISTFILE\tNumele fișierului în care este stocat istoricul comenzilor.\n" +" HISTFILESIZE\n" +" \tNumărul maxim de linii pe care acest fișier le poate conține.\n" +" HISTSIZE\tNumărul maxim de linii de istoric pe care le poate accesa un\n" +" \t\tshell care rulează.\n" +" HOME\tCalea completă către directorul dumneavoastră de conectare.\n" +" HOSTNAME\tNumele gazdei curente.\n" +" HOSTTYPE\tTipul de CPU pe care rulează această versiune de Bash.\n" +" IGNOREEOF\tControlează acțiunea shell-ului la primirea unui caracter „EOF”\n" +" \t\tca unică intrare. Dacă este definită, atunci valoarea acesteia\n" +" \t\teste numărul de caractere „EOF” care pot fi văzute într-un rând\n" +" \t\tpe o linie goală înainte ca shell-ul să iasă (implicit 10).\n" +" \t\tCând nu este definită, „EOF” înseamnă sfârșitul intrării.\n" +" MACHTYPE\tUn șir care descrie sistemul curent pe care rulează Bash.\n" +" MAILCHECK\tCât de des, în secunde, verifică Bash dacă există e-mailuri noi.\n" +" MAILPATH\tO listă de nume de fișiere, separate prin două puncte, pe care\n" +" \t\tBash le verifică pentru e-mailuri noi.\n" +" OSTYPE\tVersiunea de Unix pe care rulează această versiune de Bash.\n" +" PATH\tO listă de directoare separate prin două puncte în care se caută,\n" +" \t\tatunci când se caută comenzi.\n" +" PROMPT_COMMAND\n" +" \tO comandă care trebuie executată înainte de afișarea\n" +" \t\tfiecărui prompt primar.\n" +" PS1\t\tȘirul de prompt primar.\n" +" PS2\t\tȘirul de prompt secundar.\n" +" PWD\t\tCalea completă a directorului curent.\n" +" SHELLOPTS\tO listă separată de două puncte, de opțiuni de shell activate.\n" +" TERM\tNumele tipului actual de terminal.\n" +" TIMEFORMAT\tFormatul de ieșire pentru statisticile de timp afișat de\n" +" \t\tcuvântul rezervat „time”.\n" +" auto_resume\tNon-null înseamnă că un cuvânt de comandă care apare singur pe o\n" +" \t\tlinie este căutat mai întâi în lista de lucrări opriteîn prezent.\n" +" \t\tDacă se găsește acolo, lucrarea este în prim plan. O valoare\n" +" \t\t„exact” înseamnă că cuvântul de comandă trebuie să se potrivească\n" +" \t\texact cu o comandă din lista de lucrări oprite. O valoare „sub-\n" +" \t\tstring” înseamnă că cuvântul de comandă trebuie să se potrivească\n" +" \t\tcu un subșir al lucrării. Orice altă valoare înseamnă că\n" +" \t\tcomanda trebuie să fie un prefix al unei lucrări oprite.\n" +" histchars\tCaractere care controlează extinderea istoricului și\n" +" \t\tînlocuirea rapidă. Primul caracter este caracterul\n" +" \t\tde înlocuire a istoricului, de obicei „!”. Al doilea este\n" +" \t\tcaracterul „înlocuire rapidă”, de obicei „^”. Al treilea\n" +" \t\teste caracterul „comentare istoric”, de obicei „#”.\n" +" HISTIGNORE\tO listă de modele separate prin două puncte, utilizată pentru a\n" +" \t\tdecide ce comenzi ar trebui salvate în lista istoricului.\n" + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help pushd», din «bash»; +# «bash -c "help pushd», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -4103,8 +5844,41 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"Adaugă directoare la stivă.\n" +" \n" +" Adaugă un director în partea de sus a stivei de directoare sau \n" +" rotește stiva, făcând din partea de sus a stivei directorul de lucru\n" +" curent. Fără argumente, interschimbă primele două directoare.\n" +" \n" +" Opțiuni:\n" +" -n\tSuprimă schimbarea normală a directorului atunci când se adaugă\n" +" \t\tdirectoare la stivă, astfel încât numai stiva este manipulată.\n" +" \n" +" Argumente:\n" +" +N\tRotește stiva astfel încât al N-lea director (numărând \n" +" \t\tdin stânga listei afișate de «dirs», începând cu zero) să fie\n" +" \t\tîn partea de sus.\n" +" \n" +" -N\tRotește stiva astfel încât al N-lea director (numărând \n" +" \t\tdin dreapta listei afișate de «dirs», începând cu zero) să fie\n" +" \t\tîn partea de sus.\n" +" \n" +" dir\tAdaugă DIR la stiva de directoare din partea de sus, făcându-l\n" +" \t\tnoul director de lucru curent.\n" +" \n" +" Comanda internă «dirs» afișează stiva de directoare.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este furnizat un argument\n" +" nevalid sau dacă schimbarea directorului eșuează." -#: builtins.c:1855 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help popd», din «bash»; +# «bash -c "help popd», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -4130,8 +5904,37 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"Elimină directoare din stivă.\n" +" \n" +" Elimină intrările din stiva de directoare. Fără argumente, elimină\n" +" directorul de sus din stivă, și trece la noul director de sus.\n" +" \n" +" Opțiuni:\n" +" -n\tSuprimă schimbarea normală a directorului atunci când se elimină\n" +" \t\tdirectoare la stivă, astfel încât numai stiva este manipulată.\n" +" \n" +" Argumente:\n" +" +N\tElimină intrarea a N-a numărând din stânga listei afișate\n" +" \t\tde «dirs», începând cu zero. De exemplu: «popd +0»\n" +" \t\telimină primul director, «popd +1» al doilea.\n" +" \n" +" -N\tElimină intrarea a N-a numărând din dreapta listei afișate\n" +" \t\tde «dirs», începând cu zero. De exemplu: «popd -0»\n" +" \t\telimină ultimul director, «popd -1» penultimul.\n" +" \n" +" Comanda internă «dirs» afișează stiva de directoare.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este furnizat un argument\n" +" nevalid sau dacă schimbarea directorului eșuează." -#: builtins.c:1885 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help dirs», din «bash»; +# «bash -c "help dirs», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -4159,8 +5962,40 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" - -#: builtins.c:1916 +"Afișează stiva de directoare.\n" +" \n" +" Afișează lista directoarelor memorate în prezent. Directoarele\n" +" sunt adăugate la această listă cu comanda «pushd» și eliminate\n" +" cu comanda «popd».\n" +" \n" +" Opțiuni:\n" +" -c\tcurăță stiva de directoare ștergând toate elementele\n" +" -l\tnu afișează versiuni de directoare cu prefix „~” în raport \n" +" \t\tcu directorul dumneavoastră «acasă»\n" +" -p\tafișează stiva de directoare cu o intrare pe linie\n" +" -v\tafișează stiva de directoare cu o intrare pe linie, prefixată\n" +" \t\tcu poziția sa în stivă\n" +" \n" +" Argumente:\n" +" +N\tAfișează a N-a intrare numărând din stânga listei afișate\n" +" \t\tde «dirs» atunci când este invocată fără opțiuni, începând\n" +" \t\tcu zero.\n" +" \n" +" -N\tAfișează a N-a intrare numărând din dreapta listei afișate\n" +" \t\tde «dirs» atunci când este invocată fără opțiuni, începând\n" +" \t\tcu zero.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este furnizată o opțiune\n" +" nevalidă sau apare o eroare." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help shopt», din «bash»; +# «bash -c "help shopt», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -4179,8 +6014,32 @@ msgid "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." msgstr "" - -#: builtins.c:1937 +"Activează sau dezactivează opțiunile de shell.\n" +" \n" +" Schimbă configurarea fiecărei opțiuni de shell NUME_OPȚIUNE. Fără\n" +" niciun argument de opțiune, listează fiecare NUME_OPȚIUNE furnizat, \n" +" sau toate opțiunile de shell dacă nu sunt date NUME_OPȚIUNE, cu o\n" +" indicație dacă fiecare este sau nu definită.\n" +" \n" +" Opțiuni:\n" +" -o\trestricționează NUME_OPȚIUNE la cele definite pentru a fi\n" +" \tutilizate cu «set -o»\n" +" -p\tafișează fiecare opțiune de shell cu o indicație a stării acesteia\n" +" -q\tsuprimă ieșirea\n" +" -s\tactivează (definește) fiecare NUME_OPȚIUNE\n" +" -u\tdezactivează (șterge) fiecare NUME_OPȚIUNE\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes dacă NUME_OPȚIUNE este activată; eșuează dacă\n" +" este dată o opțiune nevalidă sau NUME_OPȚIUNE este dezactivată." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help printf», din «bash»; +# «bash -c "help printf», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4188,45 +6047,76 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: " -"plain\n" -" characters, which are simply copied to standard output; character " -"escape\n" +" FORMAT is a character string which contains three types of objects: plain\n" +" characters, which are simply copied to standard output; character escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next " -"successive\n" +" format specifications, each of which causes printing of the next successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T\toutput the date-time string resulting from using FMT as a " -"format\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" -" specifications behave as if a zero value or null string, as " -"appropriate,\n" +" specifications behave as if a zero value or null string, as appropriate,\n" " had been supplied.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or " -"assignment\n" +" Returns success unless an invalid option is given or a write or assignment\n" " error occurs." msgstr "" - -#: builtins.c:1971 +"Formatează și imprimă ARGUMENTELE sub controlul FORMATului.\n" +" \n" +" Opțiuni:\n" +" -v var\tasignează ieșirea variabilei shell VAR, în loc să o\n" +" \t\tafișeze la ieșirea standard\n" +" \n" +" FORMAT este un șir de caractere care conține trei tipuri de obiecte: \n" +" caractere simple, care sunt pur și simplu copiate la ieșirea standard; \n" +" secvențe de eludare de caractere, care sunt convertite și copiate la \n" +" ieșirea standard; și specificații de format, fiecare dintre acestea \n" +" determinând imprimarea următorului argument succesiv.\n" +" \n" +" În plus față de specificațiile de format standard descrise în printf(1),\n" +" «printf» interpretează:\n" +" \n" +" %b\texpandează secvențele de eludare de bară inversată,\n" +" \tîn argumentul corespunzător\n" +" %q\tcitează argumentul într-un mod care poate fi reutilizat\n" +" \tca intrare shell\n" +" %Q\tprecum %q, dar aplică orice precizie argumentului necitat\n" +" \t\tînainte de al cita\n" +" %(fmt)T\tafișează șirul dată-oră rezultat din utilizarea FMT,\n" +" \tca șir de format pentru strftime(3)\n" +" \n" +" Formatul este reutilizat după cum este necesar pentru a consuma toate\n" +" argumentele. Dacă există mai puține argumente decât necesită formatul,\n" +" specificațiile de format suplimentare se comportă ca și cum ar fi fost\n" +" furnizată o valoare zero sau un șir nul, după caz.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes cu excepția cazului în care este dată o opțiune nevalidă\n" +" sau apare o eroare de scriere sau de atribuire." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help complete», din «bash»; +# «bash -c "help complete», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no " -"options\n" -" are supplied, existing completion specifications are printed in a way " -"that\n" +" For each NAME, specify how arguments are to be completed. If no options\n" +" are supplied, existing completion specifications are printed in a way that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -4241,38 +6131,79 @@ msgid "" " \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. If multiple options are " -"supplied,\n" -" the -D option takes precedence over -E, and both take precedence over -" -"I.\n" +" uppercase-letter options are listed above. If multiple options are supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" - -#: builtins.c:2001 +"Specifică modul în care argumentele vor fi completate de Readline.\n" +" \n" +" Pentru fiecare NUME, specifică cum vor fi completate argumentele. Dacă\n" +" nu sunt furnizate opțiuni, specificațiile de completare existente sunt\n" +" imprimate într-un mod care să permită reutilizarea lor ca intrare\n" +" \n" +" Opțiuni:\n" +" -p\tafișează specificațiile de completare existente într-un format\n" +" \t\treutilizabil\n" +" -r\telimină o specificație de completare pentru fiecare NUME sau,\n" +" \t\tdacă nu sunt furnizate NUME, toate specificațiile de completare\n" +" -D\taplicați completările și acțiunile ca implicite pentru comenzi\n" +" \t\tfără nicio completare specifică definită\n" +" -E\taplică completările și acțiunile pentru comenzile „goale” --\n" +" \t\tcând se încearcă completarea într-o linie goală\n" +" -I\taplică completările și acțiunile la cuvântul inițial (de obicei\n" +" \t\tcomanda).\n" +" \n" +" Când se încearcă completarea, acțiunile sunt aplicate în ordinea în care\n" +" opțiunile cu litere mari sunt listate mai sus. Dacă sunt furnizate mai multe\n" +" opțiuni, opțiunea „-D” are prioritate față de „-E” și ambele au prioritate\n" +" față de opțiunea „-I”.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este furnizată o opțiune\n" +" nevalidă sau apare o eroare." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help compgen», din «bash»; +# «bash -c "help compgen», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches " -"against\n" +" completions. If the optional WORD argument is supplied, matches against\n" " WORD are generated.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Afișează posibilele completări în funcție de opțiuni.\n" +" \n" +" Aceasta este destinată să fie utilizată dintr-o funcție shell care generează\n" +" posibile completări. Dacă este furnizat argumentul opțional CUVÂNT, se\n" +" generează potriviri cu CUVÂNT.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este furnizată o opțiune\n" +" nevalidă sau apare o eroare." -#: builtins.c:2016 +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help compopt», din «bash»; +# «bash -c "help compopt», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are " -"supplied,\n" -" the completion currently being executed. If no OPTIONs are given, " -"print\n" -" the completion options for each NAME or the current completion " -"specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" +" the completion currently being executed. If no OPTIONs are given, print\n" +" the completion options for each NAME or the current completion specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -4294,27 +6225,55 @@ msgid "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." msgstr "" - -#: builtins.c:2047 +"Modifică sau afișează opțiunile de completare.\n" +" \n" +" Modifică opțiunile de completare pentru fiecare NUME sau, dacă nu sunt \n" +" furnizate NUME, completarea aflată în curs de executare. Dacă nu sunt \n" +" date OPȚIUNI, afișează opțiunile de completare pentru fiecare NUME sau \n" +" specificația de completare curentă.\n" +" \n" +" Opțiuni:\n" +" \t-o opțiune\n" +" \t\tStabilește opțiunea de completare OPȚIUNE pentru fiecare NUME\n" +" \t-D\tSchimbă opțiunile pentru completarea comenzii „implicite”.\n" +" \t-E\tSchimbă opțiunile pentru completarea comenzii „goale”.\n" +" \t-I\tSchimbă opțiunile de completare a cuvântului inițial\n" +" \n" +" Utilizarea lui „+o” în loc de „-o” dezactivează opțiunea specificată.\n" +" \n" +" Argumente:\n" +" \n" +" Fiecare NUME se referă la o comandă pentru care o specificație de completare\n" +" trebuie să fi fost definită anterior folosind comanda internă «complete». \n" +" Dacă nu sunt furnizate NUME, «compopt» trebuie să fie apelată de o funcție \n" +" care generează completări în acest moment și opțiunile pentru acest \n" +" generator de completare care se execută acum, sunt modificate.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este furnizată o opțiune \n" +" nevalidă sau NUME nu are o specificație de completare definită." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help mapfile», din «bash»; +# «bash -c "help mapfile», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable " -"ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable " -"MAPFILE\n" +" Read lines from the standard input into the indexed array variable ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" " -d delim\tUse DELIM to terminate lines, instead of newline\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n" " -s count\tDiscard the first COUNT lines read\n" " -t\tRemove a trailing DELIM from each line read (default newline)\n" -" -u fd\tRead lines from file descriptor FD instead of the standard " -"input\n" +" -u fd\tRead lines from file descriptor FD instead of the standard input\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" " -c quantum\tSpecify the number of lines read between each call to\n" " \t\t\tCALLBACK\n" @@ -4327,2421 +6286,65 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY " -"before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly " -"or\n" +" Returns success unless an invalid option is given or ARRAY is readonly or\n" " not an indexed array." msgstr "" - -#: builtins.c:2083 +"Citește linii de la intrarea standard într-o variabilă matrice indexată.\n" +" \n" +" Citește linii de la intrarea standard în variabila matrice indexată MATRICE,\n" +" sau din descriptorul de fișier „FD” dacă este furnizată opțiunea „-u”.\n" +" Variabila MAPFILE este MATRICEA implicită.\n" +" \n" +" Opțiuni:\n" +" -d delim Utilizează DELIM pentru a termina liniile, în loc de linie nouă\n" +" -n număr Copiază cel mult NUMĂRul de rânduri. Dacă NUMĂR este 0,\n" +" toate liniile sunt copiate\n" +" -O origin Începe alocarea către MATRICE la indexul ORIGIN. Indicele\n" +" implicit este 0\n" +" -s count Renunță la primele COUNT rânduri citite\n" +" -t Elimină un DELIM final din fiecare linie citită (implicit,\n" +" linie nouă)\n" +" -u fd Citește linii din descriptorul de fișier „FD” în loc de la\n" +" intrarea standard\n" +" -C apelare\n" +" Evaluează APELARE de fiecare dată când sunt citite linii CANTITATE\n" +" -c cantitate\n" +" Specifică numărul de linii citite între fiecare apel către APELARE\n" +" \n" +" Argumente:\n" +" MATRICE\tNume variabilă matrice de utilizat pentru datele fișierului\n" +" \n" +" Dacă „-C” este furnizată fără „-c”, cantitatea implicită este 5000. Când se\n" +" evaluează APELARE, i se furnizează indexul următorului element din matrice\n" +" care urmează să fie atribuit și linia care urmează să fie atribuită\n" +" acelui element ca argumente suplimentare.\n" +" \n" +" Dacă nu este furnizat cu o origine explicită, «mapfile» va șterge MATRICE\n" +" înainte de a-o utiliza pentru asignare.\n" +" \n" +" Starea de ieșire:\n" +" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n" +" sau MATRICE este protejată la scriere sau nu este o matrice indexată." + +# R-GC, scrie: +# acest mesaj, poate să fie vizualizat, rulînd +# comanda: +# «help readarray», din «bash»; +# «bash -c "help array», din «bash», sau +# dintr-un shell, diferit de «bash». +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +"Citește linii dintr-un fișier într-o variabilă de tip matrice.\n" +" \n" +" Un sinonim pentru «mapfile»." -#~ msgid "" -#~ "Returns the context of the current subroutine call.\n" -#~ " \n" -#~ " Without EXPR, returns " -#~ msgstr "" -#~ "Returnează contextul apelului subrutină curent.\n" -#~ " \n" -#~ " Fără EXPR, returnează " - -#~ msgid "Unknown Signal #" -#~ msgstr "Semnal Necunoscut #" - -#~ msgid "Missing `}'" -#~ msgstr "`}' lipsă" - -#~ msgid "brace_expand> " -#~ msgstr "brace_expand> " - -#~ msgid "Attempt to free unknown command type `%d'.\n" -#~ msgstr "Încercare de eliberare(free) tip comandă necunoscută `%d'.\n" - -#~ msgid "Report this to %s\n" -#~ msgstr "Raportaţi asta la %s\n" - -#~ msgid "Stopping myself..." -#~ msgstr "Mă opresc..." - -#~ msgid "Tell %s to fix this someday.\n" -#~ msgstr "Spuneţi lui %s să repare asta într-o bun zi.\n" - -#~ msgid "execute_command: bad command type `%d'" -#~ msgstr "execute_command: tip de comandă greşită `%d'" - -#~ msgid "real\t" -#~ msgstr "real\t" - -#~ msgid "user\t" -#~ msgstr "user\t" - -#~ msgid "sys\t" -#~ msgstr "sis\t" - -#~ msgid "" -#~ "real\t0m0.00s\n" -#~ "user\t0m0.00s\n" -#~ "sys\t0m0.00s\n" -#~ msgstr "" -#~ "real\t0m0.00s\n" -#~ "user\t0m0.00s\n" -#~ "sis\t0m0.00s\n" - -#~ msgid "cannot duplicate fd %d to fd 1: %s" -#~ msgstr "nu se poate duplica fd %d în fd 1: %s" - -#~ msgid "%s: output redirection restricted" -#~ msgstr "%s redirectare spre output limitată" - -#~ msgid "Out of memory!" -#~ msgstr "Memorie plină!" - -#~ msgid "You have already added item `%s'\n" -#~ msgstr "Aţi adăugat deja elementul `%s'\n" - -#~ msgid "You have entered %d (%d) items. The distribution is:\n" -#~ msgstr "Aţi introdus %d (%d) elemente. Distribuţia este:\n" - -#~ msgid "slot %3d: " -#~ msgstr "slot %3d: " - -#~ msgid "" -#~ msgstr "" - -#~ msgid "%s: bg background job?" -#~ msgstr "%s: bg job din fundal?" - -#~ msgid "" -#~ "Redirection instruction from yyparse () '%d' is\n" -#~ "out of range in make_redirection ()." -#~ msgstr "" -#~ "Redirectare instrucţiune din yyparse () '%d' is\n" -#~ "în afara intervalului în make_redirection ()." - -#~ msgid "clean_simple_command () got a command with type %d." -#~ msgstr "clean_simple_command () a primit o comandă de tipul %d." - -#~ msgid "got errno %d while waiting for %d" -#~ msgstr "s-a primit errno %d în aşteptarea lui %d" - -#~ msgid "syntax error near unexpected token `%c'" -#~ msgstr "eroare de sintaxă neaşteptată lângă `%c'" - -#~ msgid "print_command: bad command type `%d'" -#~ msgstr "print_command: tip comandă greşit `%d'" - -#~ msgid "cprintf: bad `%%' argument (%c)" -#~ msgstr "cprintf: parametru `%%' invalid (%c)" - -#~ msgid "option `%s' requires an argument" -#~ msgstr "opţiunea `%s' necesită un parametru" - -#~ msgid "%s: unrecognized option" -#~ msgstr "%s: opţiune necunoscută" - -#~ msgid "`-c' requires an argument" -#~ msgstr "`-c' necesită un parametru" - -#~ msgid "%s: cannot execute directories" -#~ msgstr "%s: directoarele nu se pot executa" - -#~ msgid "Bad code in sig.c: sigprocmask" -#~ msgstr "Cod invalid în sig.c: sigprocmask" - -#~ msgid "can't make pipes for process substitution: %s" -#~ msgstr "nu pot face legături (pipes) pentru substituţia procesului: %s" - -#~ msgid "reading" -#~ msgstr "în citire" - -#~ msgid "writing" -#~ msgstr "în scriere" - -#~ msgid "process substitution" -#~ msgstr "substituire de proces" - -#~ msgid "command substitution" -#~ msgstr "substituire de comenzi" - -#~ msgid "Can't reopen pipe to command substitution (fd %d): %s" -#~ msgstr "" -#~ "Nu se poate redeschide legătura (pipe) către substituţia de comenzi (fd " -#~ "%d): %s" - -#~ msgid "$%c: unbound variable" -#~ msgstr "$%c: variabilă fără limită" - -#~ msgid "%s: bad arithmetic substitution" -#~ msgstr "%s: substituţie aritmetică greşită" - -#~ msgid "-%s: binary operator expected" -#~ msgstr "-%s: se aşteaptă operator binar" - -#~ msgid "%s[%s: bad subscript" -#~ msgstr "%s[%s: subsctipţie invalidă" - -#~ msgid "[%s: bad subscript" -#~ msgstr "[%s: subscripţie invalidă" - -#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: nu pot realoca %lu octeţi (%lu octeţi alocaţi)" - -#~ msgid "digits occur in two different argv-elements.\n" -#~ msgstr "se regăsesc digiţi în două elemente argv diferite.\n" - -#~ msgid "option %c\n" -#~ msgstr "opţiunea %c\n" - -#~ msgid "option a\n" -#~ msgstr "opţiunea a\n" - -#~ msgid "option b\n" -#~ msgstr "opţiunea b\n" - -#~ msgid "option c with value `%s'\n" -#~ msgstr "opţiunea c cu valoarea '%s'\n" - -#~ msgid "?? sh_getopt returned character code 0%o ??\n" -#~ msgstr "?? sh_getopt a returnat codul de caracter 0%o ??\n" - -#~ msgid "non-option ARGV-elements: " -#~ msgstr "elemente ARGV fără opţiuni: " - -#~ msgid "%s: Unknown flag %s.\n" -#~ msgstr "%s: Marcaj (flag) necunoscut %s.\n" - -#~ msgid "Unknown directive `%s'" -#~ msgstr "Directivă necunoscută '%s'" - -#~ msgid "%s must be inside of a $BUILTIN block" -#~ msgstr "%s trebuie sa fie înăuntrul unui bloc $BUILTIN" - -#~ msgid "%s found before $END" -#~ msgstr "s-a găsit %s înainte de $END" - -#~ msgid "%s already has a function (%s)" -#~ msgstr "%s avea deja o funcţie (%s)" - -#~ msgid "%s already had a docname (%s)" -#~ msgstr "%s avea deja un docname (%s)" - -#~ msgid "%s already has short documentation (%s)" -#~ msgstr "%s are deja documentaţie scurtă (%s)" - -#~ msgid "%s already has a %s definition" -#~ msgstr "%s are deja o definiţie %s" - -#~ msgid "mkbuiltins: Out of virtual memory!\n" -#~ msgstr "mkbuiltins: Memorie virtuală plină!\n" - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]" -#~ msgstr "read [-r] [-p prompt] [-a interval] [-e] [nume ...]" - -#~ msgid "times" -#~ msgstr "ori" - -#~ msgid "%[DIGITS | WORD] [&]" -#~ msgstr "%[DIGIŢI | CUVÂNT] [&]" - -#~ msgid "variables - Some variable names and meanings" -#~ msgstr "variabile - Câteva nume de variabile şi ce înseamnă" - -#~ msgid "`alias' with no arguments or with the -p option prints the list" -#~ msgstr "`alias' fără parametri sau cu opţiunea -p printează lista" - -#~ msgid "of aliases in the form alias NAME=VALUE on standard output." -#~ msgstr "aliasurilor în forma alias NUME=VALOARE la ieşirea standard" - -#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." -#~ msgstr "" -#~ "În caz contrar, aliasul este definit pentru fiecare NUME a cărui VALOARE " -#~ "este dată." - -#~ msgid "A trailing space in VALUE causes the next word to be checked for" -#~ msgstr "" -#~ "Un spaţiu la sfârşit în VALOARE va face ca următorul cuvânt sa fie " -#~ "interogat de" - -#~ msgid "alias substitution when the alias is expanded. Alias returns" -#~ msgstr "substituţii de alias când aliasul este extins. Aliasul returnează" - -#~ msgid "true unless a NAME is given for which no alias has been defined." -#~ msgstr "" -#~ "adevărat în afară de cazul în care NUME nu este dat şi pentru care nu a " -#~ "fost definit nici un alias." - -#~ msgid "" -#~ "Remove NAMEs from the list of defined aliases. If the -a option is given," -#~ msgstr "" -#~ "Elimină NUME din lista de aliasuri definite. Dacă este dată opţiunea -a," - -#~ msgid "then remove all alias definitions." -#~ msgstr "atunci şterge toate definiţiile aliasurilor." - -#~ msgid "Bind a key sequence to a Readline function, or to a macro. The" -#~ msgstr "" -#~ "Leagă (bind) o secvenţă de taste de o funcţie Readline, sau de un macro. " - -#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" -#~ msgstr "" -#~ "Sintaxa este echivalentă cu cea întâlnită în ~/.inputrc, dar trebuie" - -#~ msgid "" -#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." -#~ msgstr "" -#~ "trimisă parametru singular: bind '\"\\C-x\\C-r\": re-read-init-file'." - -#~ msgid "Arguments we accept:" -#~ msgstr "Parametri acceptaţi:" - -#~ msgid "" -#~ " -m keymap Use `keymap' as the keymap for the duration of this" -#~ msgstr "" -#~ " -m keymap Foloseşte `keymap' ca şi mapare de taste pentru " -#~ "durata" - -#~ msgid " command. Acceptable keymap names are emacs," -#~ msgstr "" -#~ " acestei comenzi. Nume acceptate de keymaps sunt " -#~ "emacs," - -#~ msgid "" -#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," -#~ msgstr "" -#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," - -#~ msgid " vi-command, and vi-insert." -#~ msgstr " vi-command, şi vi-insert." - -#~ msgid " -l List names of functions." -#~ msgstr " -l Listează numele funcţiilor." - -#~ msgid " -P List function names and bindings." -#~ msgstr "" -#~ " -P Listează numele funcţiilor şi legăturile (bindings)." - -#~ msgid "" -#~ " -p List functions and bindings in a form that can be" -#~ msgstr "" -#~ " -p Listează funcţiile şi legăturile (bindings) într-o " -#~ "formă care" - -#~ msgid " reused as input." -#~ msgstr " poate fi refolosită ca intrare(input)." - -#~ msgid " -r keyseq Remove the binding for KEYSEQ." -#~ msgstr " -r keyseq Elimină legăturile(bindings) pentru KEYSEQ." - -#~ msgid " -f filename Read key bindings from FILENAME." -#~ msgstr "" -#~ " -f nume_fişier Citeşte legăturile (bindings) din NUME_FIŞIER" - -#~ msgid "" -#~ " -q function-name Query about which keys invoke the named function." -#~ msgstr " -q nume_funcţie Verifică tastele care invocă funcţia numită." - -#~ msgid " -V List variable names and values" -#~ msgstr " -V Listează numele variabilelor şi valorile" - -#~ msgid "" -#~ " -v List variable names and values in a form that can" -#~ msgstr "" -#~ " -v Listează numele variabilelor şi valorile într-o " -#~ "formă care poate" - -#~ msgid " be reused as input." -#~ msgstr " fi reutilizată ca date de intrare." - -#~ msgid "" -#~ " -S List key sequences that invoke macros and their " -#~ "values" -#~ msgstr "" -#~ " -S Listează secvenţele de taste care invocă macrourile " -#~ "şi valorile lor" - -#~ msgid "" -#~ " -s List key sequences that invoke macros and their " -#~ "values in" -#~ msgstr "" -#~ " -s Listează secvenţele de taste care invocă macrourile " -#~ "şi valorile lorîntr-o" - -#~ msgid " a form that can be reused as input." -#~ msgstr "" -#~ " formă care poate fi reutilizată ca date de intrare." - -#~ msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified," -#~ msgstr "" -#~ "Ieşire dintr-un ciclu FOR, WHILE sau UNTIL. Daca N este specificat," - -#~ msgid "break N levels." -#~ msgstr "întrerupe N nivele" - -#~ msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop." -#~ msgstr "" -#~ "Continuă urmatoarea iteraţie din ciclul închis FOR, WHILE sau UNTIL." - -#~ msgid "If N is specified, resume at the N-th enclosing loop." -#~ msgstr "Dacă N este specificat, continuă al N-ulea ciclu închis." - -#~ msgid "Run a shell builtin. This is useful when you wish to rename a" -#~ msgstr "" -#~ "Rulează un shell intern. Aceasta este folositoare când doriţi sa " -#~ "redenumiţi " - -#~ msgid "shell builtin to be a function, but need the functionality of the" -#~ msgstr "un shell intern drept funcţie, dar aveţi nevoie de funcţionalitatea" - -#~ msgid "builtin within the function itself." -#~ msgstr "funcţiei interne de asemenea." - -#~ msgid "Change the current directory to DIR. The variable $HOME is the" -#~ msgstr "Schimbă directorul curent cu DIR. Variabila $HOME este" - -#~ msgid "default DIR. The variable $CDPATH defines the search path for" -#~ msgstr "DIR implicit. Variabila $CDPATH defineşte calea de căutare pentru" - -#~ msgid "the directory containing DIR. Alternative directory names in CDPATH" -#~ msgstr "" -#~ "directorul care conţine DIR. Numele de directoare alternative în CDPATH" - -#~ msgid "are separated by a colon (:). A null directory name is the same as" -#~ msgstr "" -#~ "sunt separate de două puncte (:). Un nume de director nul reprezintă " -#~ "referire la" - -#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," -#~ msgstr "directorul curent, i.e. `.'. Dacă DIR începe cu un slash (/)," - -#~ msgid "then $CDPATH is not used. If the directory is not found, and the" -#~ msgstr "atunci $CDPATH nu este folosită. Dacă directorul nu este găsit, şi" - -#~ msgid "shell option `cdable_vars' is set, then try the word as a variable" -#~ msgstr "" -#~ "opţiunea de shell `cdable_vars' este setată, atunci cuvântul este un nume" - -#~ msgid "name. If that variable has a value, then cd to the value of that" -#~ msgstr "" -#~ "de variabilă. Dacă variabila are o valoare, se va face cd pe valoarea " -#~ "acelei" - -#~ msgid "" -#~ "variable. The -P option says to use the physical directory structure" -#~ msgstr "" -#~ "variabile. Opţiunea -P trimite la folosirea structurii fizice de " -#~ "directoare" - -#~ msgid "" -#~ "instead of following symbolic links; the -L option forces symbolic links" -#~ msgstr "" -#~ "în loc de urmarea legăturilor simbolice; opţiunea -L forţează urmarea" - -#~ msgid "to be followed." -#~ msgstr "legăturilor simbolice." - -#~ msgid "Print the current working directory. With the -P option, pwd prints" -#~ msgstr "Afişează directorul de lucru curent. Cu opţiunea -P, pwd afişează" - -#~ msgid "the physical directory, without any symbolic links; the -L option" -#~ msgstr "directoarele simbolice, fără nici o legătură simbolică; opţiunea -L" - -#~ msgid "makes pwd follow symbolic links." -#~ msgstr "face ca pwd să urmeze legăturile simbolice." - -#~ msgid "" -#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" -#~ msgstr "" -#~ "Rulează COMANDA cu PARAMETRI ignorând funcţiile shellului. Dacă aveţi" - -#~ msgid "function called `ls', and you wish to call the command `ls', you can" -#~ msgstr "" -#~ "o funcţie a shellului care se cheamă `ls', şi doriţi sa numiţi comanda " -#~ "`ls', puteţi" - -#~ msgid "" -#~ "say \"command ls\". If the -p option is given, a default value is used" -#~ msgstr "" -#~ "spune \"command ls\". Daca este dată opţiunea -p este folosită o valoare " -#~ "implicită" - -#~ msgid "" -#~ "for PATH that is guaranteed to find all of the standard utilities. If" -#~ msgstr "" -#~ "pentru CALE care e garantată să găsească toate utilitarele standard. Dacă" - -#~ msgid "" -#~ "the -V or -v option is given, a string is printed describing COMMAND." -#~ msgstr "" -#~ "sunt date opţiunile -V sau -v, este tipărit un şir care descrie COMANDA." - -#~ msgid "The -V option produces a more verbose description." -#~ msgstr "Opţiunea -V produce o descriere mult mai detaliată." - -#~ msgid "Declare variables and/or give them attributes. If no NAMEs are" -#~ msgstr "" -#~ "Declară variabile şi/sau le dă atribute. Dacă nu e dat nici un NUME," - -#~ msgid "given, then display the values of variables instead. The -p option" -#~ msgstr "va afişa în loc valorile variabilelor. Opţiunea -p" - -#~ msgid "will display the attributes and values of each NAME." -#~ msgstr "va afişa atributele şi valorile fiecărui NUME." - -#~ msgid "The flags are:" -#~ msgstr "Marcajele(flags) sunt:" - -#~ msgid " -a\tto make NAMEs arrays (if supported)" -#~ msgstr " -a\tpentru a crea intervale de NUME (dacă este suportat)" - -#~ msgid " -f\tto select from among function names only" -#~ msgstr " -f\tpentru a selecta doar prin numele funcţiilor" - -#~ msgid " -F\tto display function names without definitions" -#~ msgstr " -F\tpentru a afişa numele funcţiilor fără definiţii" - -#~ msgid " -r\tto make NAMEs readonly" -#~ msgstr " -r\tpentru a face NUME doar în citire (readonly)" - -#~ msgid " -x\tto make NAMEs export" -#~ msgstr " -x\tpentru a exporta NUME" - -#~ msgid " -i\tto make NAMEs have the `integer' attribute set" -#~ msgstr " -i\tpentru ca NUME să aibe setat atributul de `integer'" - -#~ msgid "Variables with the integer attribute have arithmetic evaluation (see" -#~ msgstr "Variabilele cu atributul integer au evaluarea aritmetică (vezi" - -#~ msgid "`let') done when the variable is assigned to." -#~ msgstr "`let') efectuată când îi este atribuită variabila." - -#~ msgid "When displaying values of variables, -f displays a function's name" -#~ msgstr "La afişarea valorilor variabilelor, -f afişează numele funcţiei" - -#~ msgid "and definition. The -F option restricts the display to function" -#~ msgstr "şi definiţia. Opţiunea -F restrânge afişarea doar la" - -#~ msgid "name only." -#~ msgstr "numele funcţiei." - -#~ msgid "" -#~ "Using `+' instead of `-' turns off the given attribute instead. When" -#~ msgstr "Folosirea `+' în locul `-' dezactivează atributul dat. Când" - -#~ msgid "used in a function, makes NAMEs local, as with the `local' command." -#~ msgstr "" -#~ "este folosit într-o funcţie, se consideră NUME locale, ca şi în comanda " -#~ "`local'." - -#~ msgid "Obsolete. See `declare'." -#~ msgstr "Învechit. Vezi `declare'." - -#~ msgid "Create a local variable called NAME, and give it VALUE. LOCAL" -#~ msgstr "" -#~ "Creează o variabilă locală denumită NUME, şi îi atribuie VALOARE. LOCAL" - -#~ msgid "have a visible scope restricted to that function and its children." -#~ msgstr "" -#~ "să aibă un domeniu vizibil restrâns la acea funcţie şi copilul (children) " -#~ "ei." - -#~ msgid "Output the ARGs. If -n is specified, the trailing newline is" -#~ msgstr "" -#~ "Afişează (output) ARGumenetele. Dacă -n este specificat,sfârşitul de " -#~ "linie este" - -#~ msgid "suppressed. If the -e option is given, interpretation of the" -#~ msgstr "suprimat. Dacă este dată opţiunea -e, interpretarea" - -#~ msgid "following backslash-escaped characters is turned on:" -#~ msgstr "" -#~ "următorului caracterelor speciale (backslash-escaped) este activată:" - -#~ msgid "\t\\a\talert (bell)" -#~ msgstr "\t\\a\talertă (clopoţel (bell))" - -#~ msgid "\t\\b\tbackspace" -#~ msgstr "\t\\b\tbackspace" - -#~ msgid "\t\\c\tsuppress trailing newline" -#~ msgstr "\t\\c\tsuprimă sfârşitul de linie" - -#~ msgid "\t\\E\tescape character" -#~ msgstr "\t\\E\tcaracterul escape" - -#~ msgid "\t\\f\tform feed" -#~ msgstr "\t\\f\ttrecere la început de linie (form feed)" - -#~ msgid "\t\\n\tnew line" -#~ msgstr "\t\\n\tlinie nouă" - -#~ msgid "\t\\r\tcarriage return" -#~ msgstr "\t\\r\tretur de car (carriage return)" - -#~ msgid "\t\\t\thorizontal tab" -#~ msgstr "\t\\t\ttab orizontal" - -#~ msgid "\t\\v\tvertical tab" -#~ msgstr "\t\\v\ttab vertical" - -#~ msgid "\t\\\\\tbackslash" -#~ msgstr "\t\\\\\tbackslash" - -#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." -#~ msgstr "\t\\num\tcaracterul al cărui cod ASCII este NUM (octal)." - -#~ msgid "" -#~ "You can explicitly turn off the interpretation of the above characters" -#~ msgstr "Puteţi dezactiva explicit interpretarea caracterelor de mai sus" - -#~ msgid "with the -E option." -#~ msgstr "cu ajutorul opţiunii -E." - -#~ msgid "" -#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." -#~ msgstr "" -#~ "Afişează (output) ARGumentele. Dacă este specificat -n, sfârşitul de " -#~ "linie este suprimat." - -#~ msgid "Enable and disable builtin shell commands. This allows" -#~ msgstr "" -#~ "Activează şi dezactivează comenzile interne ale shell-ului. Aceasta vă" - -#~ msgid "you to use a disk command which has the same name as a shell" -#~ msgstr "" -#~ "permite utilizarea unei comenzi disk care să aibă acelaşi nume ca şi cea " - -#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" -#~ msgstr "" -#~ "internă a shell-ului. Dacă este folosit -n, NUME devine dezactivat; în " -#~ "caz contrar" - -#~ msgid "NAMEs are enabled. For example, to use the `test' found on your" -#~ msgstr "" -#~ "NUME este activat. De exemplu, pentru a folosi funcţia `test; aflată în" - -#~ msgid "path instead of the shell builtin version, type `enable -n test'." -#~ msgstr "" -#~ "calea(path) dumneavoastră în loc de versiunea internă, tastaţi `enable -n " -#~ "test'." - -#~ msgid "On systems supporting dynamic loading, the -f option may be used" -#~ msgstr "" -#~ "Pe sistemele care suportă încărcarea dinamică, opţiunea -f poate fi " -#~ "folosită" - -#~ msgid "to load new builtins from the shared object FILENAME. The -d" -#~ msgstr "" -#~ "pentru a încărca noile elemente (builtins) din obiectul distribuit " -#~ "(shared object) NUME_FIŞIER. Opţiunea -d" - -#~ msgid "option will delete a builtin previously loaded with -f. If no" -#~ msgstr "va şterge un element (builtin) deja încărcat cu -f. Dacă nu" - -#~ msgid "non-option names are given, or the -p option is supplied, a list" -#~ msgstr "" -#~ "este dat nici un nume non-opţiune, sau este prezentă opţiunea -p, o listă" - -#~ msgid "of builtins is printed. The -a option means to print every builtin" -#~ msgstr "" -#~ "de elemente(builtins) este tipărită. Opţiunea -a înseamnă tipărirea " -#~ "fiecărui " - -#~ msgid "with an indication of whether or not it is enabled. The -s option" -#~ msgstr "" -#~ "element(builtin) cu o indicaţie dacă este sau nu activ. Opţiunea -s" - -#~ msgid "restricts the output to the Posix.2 `special' builtins. The -n" -#~ msgstr "" -#~ "restricţionează output-ul la elementele(builtins) `speciale' Posix 2. " -#~ "Opţiunea" - -#~ msgid "option displays a list of all disabled builtins." -#~ msgstr "-n afişează o listă a tuturor elementelor(builtins) inactive." - -#~ msgid "" -#~ "Read ARGs as input to the shell and execute the resulting command(s)." -#~ msgstr "" -#~ "Citeşte ARGumente ca input al shell-ului şi execută comanda(comenzile) " -#~ "rezultată(e)." - -#~ msgid "Getopts is used by shell procedures to parse positional parameters." -#~ msgstr "" -#~ "Getopts este folosit de procedurile de shell pentru a analiza(parse) " -#~ "parametrii poziţionali." - -#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter" -#~ msgstr "" -#~ "OPTSTRING conţine literele optiunilor care vor fi recunoscute; dacă o " -#~ "literă" - -#~ msgid "is followed by a colon, the option is expected to have an argument," -#~ msgstr "e urmată de două puncte, opţiunea va trebui să aibă un parametru," - -#~ msgid "which should be separated from it by white space." -#~ msgstr "care va fi separat de aceasta printr-un spaţiu." - -#~ msgid "Each time it is invoked, getopts will place the next option in the" -#~ msgstr "" -#~ "De fiecare dată când este invocat, getopts va pune următoarea opţiune în" - -#~ msgid "shell variable $name, initializing name if it does not exist, and" -#~ msgstr "variabile de shell $name, iniţializând name dacă nu există, şi" - -#~ msgid "the index of the next argument to be processed into the shell" -#~ msgstr "indexul următorilor parametri care vor fi procesaţi în variabila" - -#~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" -#~ msgstr "" -#~ "de shell OPTIND. OPTIND este iniţializată cu 1 de fiecare dată când " -#~ "shellul sau" - -#~ msgid "a shell script is invoked. When an option requires an argument," -#~ msgstr "" -#~ "un script al shellului este invocat. Când opţiunea necesită un parametru," - -#~ msgid "getopts places that argument into the shell variable OPTARG." -#~ msgstr "getopts plasează acest parametru în variabila de shell OPTARG." - -#~ msgid "getopts reports errors in one of two ways. If the first character" -#~ msgstr "getopts raportează erori în două feluri. Dacă primul caracter" - -#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" -#~ msgstr "" -#~ "al OPTSTRING este 'două puncte', getopts va folosi raportarea " -#~ "silenţioasă. În" - -#~ msgid "this mode, no error messages are printed. If an illegal option is" -#~ msgstr "" -#~ "acest mod, nici un mesaj de eroare nu este tipărit. Dacă o opţiune " -#~ "ilegală este" - -#~ msgid "seen, getopts places the option character found into OPTARG. If a" -#~ msgstr "întâlnită, getopts plasează caracterul opţiunii în OPTARG. Dacă un" - -#~ msgid "required argument is not found, getopts places a ':' into NAME and" -#~ msgstr "parametru necesar nu este întâlnit, getopts pune ':' la NUME şi" - -#~ msgid "sets OPTARG to the option character found. If getopts is not in" -#~ msgstr "" -#~ "setează OPTARG la caracterul întâlnit al opţiunii. Dacă getopts nu este " -#~ "în" - -#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into" -#~ msgstr "" -#~ "modul silenţios, şi se întâlneşte o opţiune ilegală, getopts pune '?' în" - -#~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'" -#~ msgstr "" -#~ "NUME şi desetează OPTARG. Dacă o opţiune necesară nu este întâlnită, un " -#~ "'?'" - -#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" -#~ msgstr "" -#~ "va fi pus în NUME, OPTARG va fi desetat, şi un mesaj de diagnosticare va " -#~ "fi" - -#~ msgid "printed." -#~ msgstr "afişat." - -#~ msgid "If the shell variable OPTERR has the value 0, getopts disables the" -#~ msgstr "Dacă variabila de shell OPTERR are valoarea 0, getopts dezactivează" - -#~ msgid "printing of error messages, even if the first character of" -#~ msgstr "afişarea mesajelor de eroare, chiar daca primul caracter al" - -#~ msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." -#~ msgstr "OPTSTRING nu este 'două puncte'. OPTERR are implicit valoarea 1." - -#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if" -#~ msgstr "" -#~ "Getopts analizează(parses) normal parametrii poziţionali ($0 - $9), dar " -#~ "dacă" - -#~ msgid "more arguments are given, they are parsed instead." -#~ msgstr "sunt daţi mai mulţi parametri, aceştia sunt analizaţi în loc." - -#~ msgid "Exec FILE, replacing this shell with the specified program." -#~ msgstr "Exec FIŞIER, înlocuind acest shell cu un program specificat." - -#~ msgid "If FILE is not specified, the redirections take effect in this" -#~ msgstr "Dacă FIŞIER nu este specificat, redirectările au efect în acest" - -#~ msgid "shell. If the first argument is `-l', then place a dash in the" -#~ msgstr "" -#~ "shell. Dacă primul parametru este `-l', atunci se va plasa o liniuţă în" - -#~ msgid "zeroth arg passed to FILE, as login does. If the `-c' option" -#~ msgstr "" -#~ "al zero-ulea arg pasat FIŞIERului, cum face login-ul. Dacă opţiunea `-c'" - -#~ msgid "is supplied, FILE is executed with a null environment. The `-a'" -#~ msgstr "este furnizată, FIŞIER este executat cu un mediu null. Opţiunea" - -#~ msgid "option means to make set argv[0] of the executed process to NAME." -#~ msgstr "'-a' înseamnă setarea argv[0] a procesului executat la NUME." - -#~ msgid "If the file cannot be executed and the shell is not interactive," -#~ msgstr "Dacă fişierul nu poate fi executat şi shell-ul nu este interactiv," - -#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" -#~ msgstr "atunci shell-ul iese, dacă variabila \"no_exit_on_failed_exec\"" - -#~ msgid "is set." -#~ msgstr "nu este setată." - -#~ msgid "is that of the last command executed." -#~ msgstr "este aceea a ultimei comenzi executate." - -#~ msgid "" -#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" -#~ msgstr "" -#~ "PRIMUL şi ULTIMUL pot fi numere care specifică intervalul, sau PRIMUL " -#~ "poate fi" - -#~ msgid "string, which means the most recent command beginning with that" -#~ msgstr "" -#~ "un şir care reprezintă cea mai recentă comandă care începea cu acest" - -#~ msgid "string." -#~ msgstr "şir." - -#~ msgid "" -#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," -#~ msgstr "" -#~ " -e ENUME selectează editorul de folosit. implicit este FCEDIT, apoi " -#~ "EDITOR," - -#~ msgid "" -#~ " then the editor which corresponds to the current readline editing" -#~ msgstr "" -#~ " apoi editorul care corespunde cu modul de editare al " -#~ "liniei(readline)" - -#~ msgid " mode, then vi." -#~ msgstr " curente, şi apoi vi." - -#~ msgid " -l means list lines instead of editing." -#~ msgstr " -l reprezintă afişarea liniilor în locul editării acestora." - -#~ msgid " -n means no line numbers listed." -#~ msgstr " -n înseamnă că nu vor fi afişate numerele liniilor." - -#~ msgid "" -#~ " -r means reverse the order of the lines (making it newest listed " -#~ "first)." -#~ msgstr "" -#~ " -r reprezintă inversarea ordinii liniilor (cele mai noi fiind listate " -#~ "primele)." - -#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" -#~ msgstr "Cu `fc -s [pat=rep ...] [comandă]' format, comanda este" - -#~ msgid "re-executed after the substitution OLD=NEW is performed." -#~ msgstr "reexecutată după ce s-a produs substituţia VECHI=NOU." - -#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" -#~ msgstr "Un alias folositor este r='fc -s', aşa că tastând `r cc'" - -#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes" -#~ msgstr "" -#~ "se rulează ultima comandă care începe cu `cc' şi tastând `r' se reexecută" - -#~ msgid "Place JOB_SPEC in the foreground, and make it the current job. If" -#~ msgstr "" -#~ "Aduce JOB_SPEC în prim plan(foreground), ?şi îl face jobul curent. Dacă" - -#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" -#~ msgstr "" -#~ "JOB_SPEC nu este prezent, este folosită noţiunea shell-ului despre jobul" - -#~ msgid "used." -#~ msgstr "curent." - -#~ msgid "Place JOB_SPEC in the background, as if it had been started with" -#~ msgstr "Pune JOB_SPEC în fundal(background), ca şi cum ar fi fost pornit cu" - -#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" -#~ msgstr "" -#~ "`&'. Dacă JOB_SPEC nu este prezent, va fi folosită noţiunea shell-ului " -#~ "despre" - -#~ msgid "job is used." -#~ msgstr "jobul curent." - -#~ msgid "For each NAME, the full pathname of the command is determined and" -#~ msgstr "Pentru fiecare NUME, calea întreagă a comenzii este determinată şi" - -#~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the" -#~ msgstr "" -#~ "reţinută. Daca este furnizată şi opţiunea -p, CALE este folosită ca şi" - -#~ msgid "full pathname of NAME, and no path search is performed. The -r" -#~ msgstr "" -#~ "cale de căutare întreagă a NUMElui, şi nu se mai face căutare în calea " -#~ "curentă. " - -#~ msgid "option causes the shell to forget all remembered locations. If no" -#~ msgstr "" -#~ "Opţiunea -r face ca shell-ul să uite toate locaţiile reţinute. Dacă nu" - -#~ msgid "" -#~ "arguments are given, information about remembered commands is displayed." -#~ msgstr "" -#~ "este furnizat nici un parametru sunt afişate informaţii despre comenzile " -#~ "reţinute." - -#~ msgid "Display helpful information about builtin commands. If PATTERN is" -#~ msgstr "" -#~ "Se afişează informaţii folositoare despre comenzile interne. Dacă TIPAR " -#~ "este" - -#~ msgid "specified, gives detailed help on all commands matching PATTERN," -#~ msgstr "" -#~ "specificat, se dă ajutor detaliat pentru toate comenzile potrivite " -#~ "TIPARului," - -#~ msgid "otherwise a list of the builtins is printed." -#~ msgstr "în caz contrar se va tipări o listă a comenzilor interne." - -#~ msgid "Display the history list with line numbers. Lines listed with" -#~ msgstr "Afişează istoricul cu numerele liniilor. Liniile listate cu" - -#~ msgid "with a `*' have been modified. Argument of N says to list only" -#~ msgstr "un `*' au fost modificate. Parametrul N va aduce afişarea doar " - -#~ msgid "the last N lines. The -c option causes the history list to be" -#~ msgstr "a ultimelor N linii. Opţiunea -c face ca lista istoricului să fie" - -#~ msgid "" -#~ "cleared by deleting all of the entries. The `-w' option writes out the" -#~ msgstr "ştearsă prin ştergerea tuturor intrărilor. Opţiunea `-w' scrie" - -#~ msgid "" -#~ "current history to the history file; `-r' means to read the file and" -#~ msgstr "" -#~ "istoricul curent în fişierul de istoric; `-r' înseamnă citirea " -#~ "fişierului şi" - -#~ msgid "append the contents to the history list instead. `-a' means" -#~ msgstr "adăugare a conţinutului listei istoricului în loc. `-a' înseamnă" - -#~ msgid "to append history lines from this session to the history file." -#~ msgstr "" -#~ "adăugare a liniilor istoricului din această sesiune la fişierul de " -#~ "istoric." - -#~ msgid "Argument `-n' means to read all history lines not already read" -#~ msgstr "" -#~ "Parametrul `-n' înseamnă citirea tuturor liniilor istoricului care nu " -#~ "sunt deja citite" - -#~ msgid "from the history file and append them to the history list. If" -#~ msgstr "" -#~ "din fişierul de istoric şi adăugarea lor la lista istoricului. Dacă" - -#~ msgid "FILENAME is given, then that is used as the history file else" -#~ msgstr "" -#~ "este dat NUME_FIŞIER, acesta va fi utilizat ca fişier de istoric, în caz " -#~ "contrar" - -#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." -#~ msgstr "" -#~ "dacă $HISTFILE are valoare, aceasta este utilizată, altfel ~/." -#~ "bash_history." - -#~ msgid "If the -s option is supplied, the non-option ARGs are appended to" -#~ msgstr "" -#~ "Dacă este furnizată opţiunea -s ARGumentele non-opţiuni sunt adăugate la" - -#~ msgid "the history list as a single entry. The -p option means to perform" -#~ msgstr "lista istoricului ca intrări singure. Opţiunea -p înseamnă" - -#~ msgid "" -#~ "history expansion on each ARG and display the result, without storing" -#~ msgstr "" -#~ "expandarea istoricului la fiecare ARGument şi afişarea rezultatului, fără " -#~ "a stoca" - -#~ msgid "anything in the history list." -#~ msgstr "nimic în lista istoricului." - -#~ msgid "Lists the active jobs. The -l option lists process id's in addition" -#~ msgstr "" -#~ "Listează joburile active. Opţiunea -l listează id-urile proceselor în " -#~ "plus faţă de" - -#~ msgid "to the normal information; the -p option lists process id's only." -#~ msgstr "" -#~ "informaţiile normale; optiunea -p listează doar id-urile proceselor." - -#~ msgid "" -#~ "If -n is given, only processes that have changed status since the last" -#~ msgstr "" -#~ "Dacă este dat -n,sunt afişate doar procesele care şi-au schimbat starea" - -#~ msgid "" -#~ "notification are printed. JOBSPEC restricts output to that job. The" -#~ msgstr "" -#~ "de la ultima notificare. JOBSPEC restricţionează output-ul spre acel " -#~ "job. " - -#~ msgid "-r and -s options restrict output to running and stopped jobs only," -#~ msgstr "" -#~ "Opţiunile -r şi -s restricţionează output-ul doar spre joburile care " -#~ "rulează şi respectiv," - -#~ msgid "respectively. Without options, the status of all active jobs is" -#~ msgstr "care sunt stopate. Fără opţiuni, este afişată starea joburilor" - -#~ msgid "" -#~ "printed. If -x is given, COMMAND is run after all job specifications" -#~ msgstr "" -#~ "active. Dacă este furnizat -x, COMANDĂ este rulată după ce toate " -#~ "specificaţiile" - -#~ msgid "" -#~ "that appear in ARGS have been replaced with the process ID of that job's" -#~ msgstr "" -#~ "joburilor care aparîn ARGS au fost înlocuite cu ID-urile proceselor a" - -#~ msgid "process group leader." -#~ msgstr "liderului de grup al proceselor acelui job(process group-leader)." - -#~ msgid "Removes each JOBSPEC argument from the table of active jobs." -#~ msgstr "Şterge fiecare parametru JOBSPEC din tabela de joburi active." - -#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" -#~ msgstr "Trimite proceselor numite de PID (sau JOB) semnalul SIGSPEC. Dacă" - -#~ msgid "" -#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" -#~ msgstr "SIGSPEC nu este prezent, atunci se asumă SIGTERM. Parametrul `-l'" - -#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" -#~ msgstr "" -#~ "listează numele semnalelor; dacă urmează parametri după `-l' se asumă că" - -#~ msgid "be signal numbers for which names should be listed. Kill is a shell" -#~ msgstr "" -#~ "sunt numere de semnale pentru care numele ar trebui listate. Kill este " -#~ "comandă" - -#~ msgid "builtin for two reasons: it allows job IDs to be used instead of" -#~ msgstr "" -#~ "internă a sehll-ului din două motive: permite utilizarea ID-urilor de " -#~ "joburi în locul" - -#~ msgid "process IDs, and, if you have reached the limit on processes that" -#~ msgstr "ID-urilor de procese, şi, daca s-a ajuns la limita de procese care " - -#~ msgid "" -#~ "you can create, you don't have to start a process to kill another one." -#~ msgstr "" -#~ "se pot crea, nu mai e nevoie să se pornească un proces pentru a omorî " -#~ "altul." - -#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" -#~ msgstr "" -#~ "Fiecare ARGument este o expresie aritmetică ce va fi evaluată. Evaluarea" - -#~ msgid "is done in long integers with no check for overflow, though division" -#~ msgstr "" -#~ "se face în întregi lungi (long integers) fără verificări de overflow, " -#~ "totuşi împărţirea" - -#~ msgid "by 0 is trapped and flagged as an error. The following list of" -#~ msgstr "la 0 este reţinută şi marcată ca eroare. Următoarea listă de" - -#~ msgid "operators is grouped into levels of equal-precedence operators." -#~ msgstr "operatori este grupată în nivele de operatori 'equal-precedence'." - -#~ msgid "The levels are listed in order of decreasing precedence." -#~ msgstr "Nivelele sunt listate în ordinea inversă a întâietăţii." - -#~ msgid "\t-, +\t\tunary minus, plus" -#~ msgstr "\t-, +\t\tplus, minus unar" - -#~ msgid "\t!, ~\t\tlogical and bitwise negation" -#~ msgstr "\t!, ~\t\tnegare logică" - -#~ msgid "\t*, /, %\t\tmultiplication, division, remainder" -#~ msgstr "\t*, /, %\t\tînmulţire, împărţire, rest" - -#~ msgid "\t+, -\t\taddition, subtraction" -#~ msgstr "\t+, -\t\tadăugare, scădere" - -#~ msgid "\t<<, >>\t\tleft and right bitwise shifts" -#~ msgstr "\t<<, >>\t\toperaţii pe un bit la stânga şi la dreapta" - -#~ msgid "\t<=, >=, <, >\tcomparison" -#~ msgstr "\t<=, >=, <, >\tcomparare" - -#~ msgid "\t==, !=\t\tequality, inequality" -#~ msgstr "\t==, !=\t\tegalitate, inegalitate" - -#~ msgid "\t&\t\tbitwise AND" -#~ msgstr "\t&\t\tŞI pe un bit" - -#~ msgid "\t^\t\tbitwise XOR" -#~ msgstr "\t^\t\tSAU exclusiv(XOR) pe un bit" - -#~ msgid "\t|\t\tbitwise OR" -#~ msgstr "\t|\t\tSAU pe un bit" - -#~ msgid "\t&&\t\tlogical AND" -#~ msgstr "\t&&\t\tŞI logic" - -#~ msgid "\t||\t\tlogical OR" -#~ msgstr "\t||\t\tSAU logic" - -#~ msgid "\texpr ? expr : expr" -#~ msgstr "\texpr ? expr : expr" - -#~ msgid "\t\t\tconditional expression" -#~ msgstr "\t\t\texpresie condiţională" - -#~ msgid "\t=, *=, /=, %=," -#~ msgstr "\t=, *=, /=, %=," - -#~ msgid "\t+=, -=, <<=, >>=," -#~ msgstr "\t+=, -=, <<=, >>=," - -#~ msgid "\t&=, ^=, |=\tassignment" -#~ msgstr "\t&=, ^=, |=\tatribuire" - -#~ msgid "is replaced by its value (coerced to a long integer) within" -#~ msgstr "este înlocuit de valoarea sa (trunchiată la un întreg lung) într-o" - -#~ msgid "an expression. The variable need not have its integer attribute" -#~ msgstr "expresie. Variabila nu trebuie să aibă atributul său întreg" - -#~ msgid "turned on to be used in an expression." -#~ msgstr "activat pentru a fi folosită într-o expresie." - -#~ msgid "Operators are evaluated in order of precedence. Sub-expressions in" -#~ msgstr "Operatorii sunt evaluaţi în ordinea întâietăţii. Subexpresiile din" - -#~ msgid "parentheses are evaluated first and may override the precedence" -#~ msgstr "paranteze sunt evaluate primele şi pot suprascrie regulile de" - -#~ msgid "rules above." -#~ msgstr "întâietate de mai sus." - -#~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" -#~ msgstr "" -#~ "Dacă ultimul ARGument este evaluat la 0 let returnează 1; 0 este returnat" - -#~ msgid "otherwise." -#~ msgstr "în caz contrar." - -#~ msgid "One line is read from the standard input, and the first word is" -#~ msgstr "" -#~ "Linia este citită de la intrarea(input) standard, şi primul cuvânt este" - -#~ msgid "" -#~ "assigned to the first NAME, the second word to the second NAME, and so" -#~ msgstr "" -#~ "atribuit primului NUME, al doilea cuvânt celui de-al doilea NUME, şi aşa" - -#~ msgid "" -#~ "on, with leftover words assigned to the last NAME. Only the characters" -#~ msgstr "" -#~ "mai departe, cu cele rămase atribuite ultimelor NUME. Doar caracterele" - -#~ msgid "found in $IFS are recognized as word delimiters. The return code is" -#~ msgstr "" -#~ "găsite în $IFS sunt recunoscute ca delimitatoare de cuvinte. Codul " -#~ "returnat este" - -#~ msgid "" -#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" -#~ msgstr "" -#~ "zero, cu excepţia cazului în care este întâlnit sfârşit de fişier. Dacă " -#~ "nici un NUME" - -#~ msgid "" -#~ "line read is stored in the REPLY variable. If the -r option is given," -#~ msgstr "" -#~ "nu este furnizat, linia citită este stocată în variabila RĂSPUNS. Dacă e " -#~ "dată " - -#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" -#~ msgstr "" -#~ "opţiunea -r, aceasta înseamnă intrare `brută' şi caractere speciale " -#~ "dezactivate." - -#~ msgid "the `-p' option is supplied, the string supplied as an argument is" -#~ msgstr "Dacă este dată opţiunea `-p', şirul furnizat ca argument este" - -#~ msgid "" -#~ "output without a trailing newline before attempting to read. If -a is" -#~ msgstr "trimis la output cu linie nouă înainte de citire. Dacă -a este" - -#~ msgid "" -#~ "supplied, the words read are assigned to sequential indices of ARRAY," -#~ msgstr "" -#~ "furnizată, cuvintele citite sunt atribuite indicilor secvenţiali de " -#~ "INTERVAL," - -#~ msgid "starting at zero. If -e is supplied and the shell is interactive," -#~ msgstr "" -#~ "începând de la zero. Dacă -e este furnizat şi shell-ul este interactiv," - -#~ msgid "readline is used to obtain the line." -#~ msgstr "se va citi linia pentru obţinerea acesteia." - -#~ msgid "" -#~ "Causes a function to exit with the return value specified by N. If N" -#~ msgstr "" -#~ "Cauzează terminarea unei funcţii cu valoarea specificată de N. Dacă N" - -#~ msgid "is omitted, the return status is that of the last command." -#~ msgstr "este omis, starea returnată va fi aceea a ultimei comenzi." - -#~ msgid " -a Mark variables which are modified or created for export." -#~ msgstr "" -#~ " -a Marchează variabilele de modificat sau create pentru export." - -#~ msgid " -b Notify of job termination immediately." -#~ msgstr " -b Notificare de terminare de job imediată." - -#~ msgid " -e Exit immediately if a command exits with a non-zero status." -#~ msgstr "" -#~ " -e Iese imediat dacă există o comandă cu stare diferită de zero." - -#~ msgid " -f Disable file name generation (globbing)." -#~ msgstr " -f Inhibă generarea de nume de fişiere (globalizare)." - -#~ msgid " -h Remember the location of commands as they are looked up." -#~ msgstr " -h Reţine locaţiile comenzilor pe măsura verificării lor." - -#~ msgid "" -#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" -#~ msgstr "" -#~ " -i Forţează shell-ul să fie unul \"interactiv\". Shell-urile " -#~ "interactive" - -#~ msgid " always read `~/.bashrc' on startup." -#~ msgstr " citesc întotdeauna `~/.bashrc' la rulare." - -#~ msgid " -k All assignment arguments are placed in the environment for a" -#~ msgstr " -k Toţi parametrii atribuirii sunt plasaţi în mediu pentru o" - -#~ msgid " command, not just those that precede the command name." -#~ msgstr " comandă, nu doar cele care preced numele comenzii." - -#~ msgid " -m Job control is enabled." -#~ msgstr " -m Controlul job-urilor este activat." - -#~ msgid " -n Read commands but do not execute them." -#~ msgstr " -n Citeşte comenzile, dar nu le execută." - -#~ msgid " -o option-name" -#~ msgstr " -o nume-opţiune" - -#~ msgid " Set the variable corresponding to option-name:" -#~ msgstr " Setează variabila corespunzătoare numelui opţiunii:" - -#~ msgid " allexport same as -a" -#~ msgstr " allexport la fel ca -a" - -#~ msgid " braceexpand same as -B" -#~ msgstr " braceexpand la fel ca -B" - -#~ msgid " emacs use an emacs-style line editing interface" -#~ msgstr "" -#~ " emacs foloseşte o interfaţă de editare de linii stil " -#~ "emacs" - -#~ msgid " errexit same as -e" -#~ msgstr " errexit la fel ca -e" - -#~ msgid " hashall same as -h" -#~ msgstr " hashall la fel ca -h" - -#~ msgid " histexpand same as -H" -#~ msgstr " histexpand la fel ca -H" - -#~ msgid " ignoreeof the shell will not exit upon reading EOF" -#~ msgstr " ignoreeof shellul nu va ieşi după citirea EOF" - -#~ msgid " interactive-comments" -#~ msgstr " interactive-comments" - -#~ msgid "" -#~ " allow comments to appear in interactive commands" -#~ msgstr "" -#~ " permite comentariilor să apară în comenzi " -#~ "interactive." - -#~ msgid " keyword same as -k" -#~ msgstr " keyword la fel ca -k" - -#~ msgid " monitor same as -m" -#~ msgstr " monitor sla fel ca -m" - -#~ msgid " noclobber same as -C" -#~ msgstr " noclobber la fel ca -C" - -#~ msgid " noexec same as -n" -#~ msgstr " noexec la fel ca -n" - -#~ msgid " noglob same as -f" -#~ msgstr " noglob la fel ca -f" - -#~ msgid " notify save as -b" -#~ msgstr " notify la fel ca -b" - -#~ msgid " nounset same as -u" -#~ msgstr " nounset la fel ca -u" - -#~ msgid " onecmd same as -t" -#~ msgstr " onecmd la fel ca -t" - -#~ msgid " physical same as -P" -#~ msgstr " physical la fel ca -P" - -#~ msgid "" -#~ " posix change the behavior of bash where the default" -#~ msgstr "" -#~ " posix schimbă comportamentul bash în care implicit" - -#~ msgid "" -#~ " operation differs from the 1003.2 standard to" -#~ msgstr "" -#~ " operaţiile diferă de standardul 1003.2 pentru" - -#~ msgid " match the standard" -#~ msgstr " a se potrivi standardului" - -#~ msgid " privileged same as -p" -#~ msgstr " privileged la fel ca -p" - -#~ msgid " verbose same as -v" -#~ msgstr " verbose la fel ca -v" - -#~ msgid " vi use a vi-style line editing interface" -#~ msgstr "" -#~ " vi foloseşte o interfaţă de editare de linii stil vi" - -#~ msgid " xtrace same as -x" -#~ msgstr " xtrace la fel ca -x" - -#~ msgid "" -#~ " -p Turned on whenever the real and effective user ids do not match." -#~ msgstr "" -#~ " -p Activat de fiecare dată când id-urile de user real şi efectiv nu " -#~ "se potrivesc." - -#~ msgid " Disables processing of the $ENV file and importing of shell" -#~ msgstr " Inhibă procesarea fişierului $ENV şi importarea funcţiilor" - -#~ msgid "" -#~ " functions. Turning this option off causes the effective uid and" -#~ msgstr "" -#~ " shell-ului. Dezactivarea acestei opţiuni face ca uid-ul şi gid-ul" - -#~ msgid " gid to be set to the real uid and gid." -#~ msgstr " efectiv să fie setate drept uid-ul şi gid-ul real." - -#~ msgid " -t Exit after reading and executing one command." -#~ msgstr " -t Iese după citirea şi executarea unei comenzi." - -#~ msgid " -u Treat unset variables as an error when substituting." -#~ msgstr " -u Tratează variabilele nesetate drept erori în substituţie." - -#~ msgid " -v Print shell input lines as they are read." -#~ msgstr "" -#~ " -v Tipăreşte liniile de intrare(input) ale shell-ului pe măsură ce " -#~ "sunt citite." - -#~ msgid " -x Print commands and their arguments as they are executed." -#~ msgstr "" -#~ " -x Tipăreşte comenzile şi parametrii acestora pe măsura executării." - -#~ msgid " -B the shell will perform brace expansion" -#~ msgstr " -B shell-ul va executa expansiune de legături(brace)" - -#~ msgid " -H Enable ! style history substitution. This flag is on" -#~ msgstr "" -#~ " -H Activează substituţia istoricului stil ! . Acest marcaj(flag) " -#~ "este activat" - -#~ msgid " by default." -#~ msgstr " în mod implicit." - -#~ msgid " -C If set, disallow existing regular files to be overwritten" -#~ msgstr "" -#~ " -C Dacă este setat, nu va permite suprascrierea fişierelor existente" - -#~ msgid " by redirection of output." -#~ msgstr " prin redirectarea output-ului." - -#~ msgid " -P If set, do not follow symbolic links when executing commands" -#~ msgstr "" -#~ " -P Dacă este setat, nu va urma legăturile simbolice în executarea " -#~ "comenzilor" - -#~ msgid " such as cd which change the current directory." -#~ msgstr " precum cd care schimbă directorul curent." - -#~ msgid "Using + rather than - causes these flags to be turned off. The" -#~ msgstr "" -#~ "Folosind + în locul lui - provoacă dezactivarea acestor marcaje(flags)." - -#~ msgid "flags can also be used upon invocation of the shell. The current" -#~ msgstr "" -#~ " Marcajele pot fi folosite de asemenea pentru invocarea shell-ului. " -#~ "Setul" - -#~ msgid "" -#~ "set of flags may be found in $-. The remaining n ARGs are positional" -#~ msgstr "" -#~ "curent de marcaje(flags) poate fi găsit în $-. ARGumentele n rămase sunt" - -#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" -#~ msgstr "" -#~ "parametri poziţionali şi sunt atribuiţi, în ordine, lui $1, $2, .. $n. " -#~ "Dacă nu" - -#~ msgid "ARGs are given, all shell variables are printed." -#~ msgstr "" -#~ "este dat nici un ARGument, sunt tipărite toate variabilele shell-ului." - -#~ msgid "For each NAME, remove the corresponding variable or function. Given" -#~ msgstr "" -#~ "Pentru fiecare NUME, şterge variabila sau funcţia corespunzătoare. Dacă " -#~ "se" - -#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," -#~ msgstr "" -#~ "dă `-v', desetarea(unset) va acţiona numai pe variabile. Dacă se dă `-f'," - -#~ msgid "unset will only act on functions. With neither flag, unset first" -#~ msgstr "" -#~ "desetarea(unset) va acţiona numai pe funcţii. Fără nici un marcaj(flag), " - -#~ msgid "tries to unset a variable, and if that fails, then tries to unset a" -#~ msgstr "" -#~ "desetarea(unset) va încerca întâi pe variabile, şi dacă eşueazăm va " -#~ "încerca" - -#~ msgid "" -#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" -#~ msgstr "" -#~ "pe o funcţie. Anumite variabile ( precum PATH şi IFS) nu pot fi " -#~ "desetate(unset);" - -#~ msgid "see readonly." -#~ msgstr "de asemenea, vedeţi readonly." - -#~ msgid "NAMEs are marked for automatic export to the environment of" -#~ msgstr "NUMEle sunt marcate pentru exportul automat către mediul" - -#~ msgid "subsequently executed commands. If the -f option is given," -#~ msgstr "comenzilor executate ulterior. Dacă este dată opţiunea -f," - -#~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" -#~ msgstr "" -#~ "NUMEle se referă la funcţii. Dacă nu este dat nici un NUME, sau este dat " -#~ "`-p'`," - -#~ msgid "is given, a list of all names that are exported in this shell is" -#~ msgstr "" -#~ "va fi tipărită o listă a tuturor numelor care sunt exportate în acest" - -#~ msgid "printed. An argument of `-n' says to remove the export property" -#~ msgstr "shell. Parametrul `-n' va elimina proprietatea de export " - -#~ msgid "from subsequent NAMEs. An argument of `--' disables further option" -#~ msgstr "" -#~ "din NUMEle ulterioare. Parametrul `--' dezactivează procesarea opţiunilor" - -#~ msgid "processing." -#~ msgstr "viitoare." - -#~ msgid "" -#~ "The given NAMEs are marked readonly and the values of these NAMEs may" -#~ msgstr "NUMEle date sunt marcate readonly şi valorile acestor NUME nu poate" - -#~ msgid "not be changed by subsequent assignment. If the -f option is given," -#~ msgstr "fi schimbat de atribuiri ulterioare. Dacă este dată opţiunea -f," - -#~ msgid "then functions corresponding to the NAMEs are so marked. If no" -#~ msgstr "atunci funcţiile corespunzătoare NUMElor sunt marcate. Dacă nu" - -#~ msgid "" -#~ "arguments are given, or if `-p' is given, a list of all readonly names" -#~ msgstr "" -#~ "sunt furnizaţidaţ paramet, sau este dat parametrul `-p'` o listă de nume " -#~ "readonlyri " - -#~ msgid "" -#~ "is printed. An argument of `-n' says to remove the readonly property" -#~ msgstr "" -#~ "va fi tipărită. Parametrul `-n' va elimina proprietatea de readonly" - -#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" -#~ msgstr "" -#~ "pentru NUMEle ulterioare. Opţiunea `-a' reprezintă tratarea fiecărui " -#~ "NUME ca" - -#~ msgid "an array variable. An argument of `--' disables further option" -#~ msgstr "o variabilă interval. Parametrul `--' dezactivează alte opţiuni" - -#~ msgid "" -#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is" -#~ msgstr "" -#~ "Parametrii poziţionali de la $N+1 ... sunt redenumiţi în $1 ... Dacă N " -#~ "nu este" - -#~ msgid "not given, it is assumed to be 1." -#~ msgstr "furnizat, se presupune că e 1." - -#~ msgid "Read and execute commands from FILENAME and return. The pathnames" -#~ msgstr "Citeşte şi execută comenzi din NUME_FIŞIER şi returnare. Căile" - -#~ msgid "in $PATH are used to find the directory containing FILENAME." -#~ msgstr "" -#~ "din $PATH sunt folosite pentru a găsi directorul care conţine NUME_FIŞIER." - -#~ msgid "Suspend the execution of this shell until it receives a SIGCONT" -#~ msgstr "" -#~ "Suspendă execuţia acestui shell până se va primi un semnal de SIGCONT." - -#~ msgid "signal. The `-f' if specified says not to complain about this" -#~ msgstr " Dacă este specificat `-f' va elimina avertismentele despre acest " - -#~ msgid "being a login shell if it is; just suspend anyway." -#~ msgstr "login shell; va suspenda oricum." - -#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on" -#~ msgstr "Iese cu o stare de 0 (adevăr) sau 1 (falsitate) depinzând de" - -#~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" -#~ msgstr "evaluarea EXPR. Expresiile pot fi unare sau binare. Expresiile" - -#~ msgid "expressions are often used to examine the status of a file. There" -#~ msgstr "" -#~ "unare sunt des folosite pentru a examina starea unui fişier. Mai există" - -#~ msgid "are string operators as well, and numeric comparison operators." -#~ msgstr "operatori de şir de asemenea, şi operator de comparare numerică." - -#~ msgid "File operators:" -#~ msgstr "Operatori de fişier:" - -#~ msgid " -b FILE True if file is block special." -#~ msgstr " -b FIŞIER Adevărat dacă fişierul este bloc special." - -#~ msgid " -c FILE True if file is character special." -#~ msgstr " -c FIŞIER Adevărat dacă fişierul este caracter special." - -#~ msgid " -d FILE True if file is a directory." -#~ msgstr " -b FIŞIER Adevărat dacă fişierul este director." - -#~ msgid " -e FILE True if file exists." -#~ msgstr " -e FIŞIER Adevărat dacă fişierul există." - -#~ msgid " -f FILE True if file exists and is a regular file." -#~ msgstr "" -#~ " -b FIŞIER Adevărat dacă fişierul există şi este fişier " -#~ "obişnuit (regular)." - -#~ msgid " -g FILE True if file is set-group-id." -#~ msgstr "" -#~ " -g FIŞIER Adevărat dacă fişierul are setat id-ul de grup." - -#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." -#~ msgstr "" -#~ " -h FIŞIER Adevărat dacă fişierul este legătură simbolică. " -#~ "Folosiţi \"-L\"." - -#~ msgid " -L FILE True if file is a symbolic link." -#~ msgstr "" -#~ " -L FIŞIER Adevărat dacă fişierul este legătură simbolică." - -#~ msgid " -k FILE True if file has its \"sticky\" bit set." -#~ msgstr "" -#~ " -k FIŞIER Adevărat dacă fişierul are setat \"sticky\" bit." - -#~ msgid " -p FILE True if file is a named pipe." -#~ msgstr "" -#~ " -p FIŞIER Adevărat dacă fişierul este o legătură(pipe) numită." - -#~ msgid " -r FILE True if file is readable by you." -#~ msgstr " -r FIŞIER Adevărat dacă fişierul poate fi citit de tine." - -#~ msgid " -s FILE True if file exists and is not empty." -#~ msgstr " -s FIŞIER Adevărat dacă fişierul există şi nu este vid." - -#~ msgid " -S FILE True if file is a socket." -#~ msgstr " -S FIŞIER Adevărat dacă fişierul este un socket." - -#~ msgid " -t FD True if FD is opened on a terminal." -#~ msgstr " -t FD Adevărat dacă FD este deschis într-un terminal." - -#~ msgid " -u FILE True if the file is set-user-id." -#~ msgstr " -u FIŞIER Adevărat dacă fişierul are setat user id-ul." - -#~ msgid " -w FILE True if the file is writable by you." -#~ msgstr " -w FIŞIER Adevărat dacă fişierul poate fi scris de tine." - -#~ msgid " -x FILE True if the file is executable by you." -#~ msgstr "" -#~ " -x FIŞIER Adevărat dacă fişierul poate fi executat de către " -#~ "tine." - -#~ msgid " -O FILE True if the file is effectively owned by you." -#~ msgstr "" -#~ " -O FIŞIER Adevărat dacă fişierul este efectiv propriu(owned) " -#~ "ţie." - -#~ msgid "" -#~ " -G FILE True if the file is effectively owned by your group." -#~ msgstr "" -#~ " -O FIŞIER Adevărat dacă fişierul este efectiv propriu(owned) " -#~ "grupului tău." - -#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" -#~ msgstr "" -#~ " FIŞIER1 -nt FIŞIER2 Adevărat dacă fişier1 este mai nou decât (potrivit " - -#~ msgid " modification date) file2." -#~ msgstr " datei modificării) fişier2." - -#~ msgid " FILE1 -ot FILE2 True if file1 is older than file2." -#~ msgstr "" -#~ " FIŞIER1 -ot FIŞIER2 Adevărat dacă fişier1 este mai vechi decât fişier2." - -#~ msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." -#~ msgstr "" -#~ " FIŞIER1 -ef FIŞIER2 Adevărat dacă fişier1 este hard link către fişier2." - -#~ msgid "String operators:" -#~ msgstr "Operatori de şiruri:" - -#~ msgid " -z STRING True if string is empty." -#~ msgstr " -z ŞIR Adevărat dacă şirul este vid." - -#~ msgid " -n STRING" -#~ msgstr " -n ŞIR" - -#~ msgid " STRING True if string is not empty." -#~ msgstr " ŞIR Adevărat dacă şirul nu este vid." - -#~ msgid " STRING1 = STRING2" -#~ msgstr " ŞIR1 = ŞIR2" - -#~ msgid " True if the strings are equal." -#~ msgstr " Adevărat dacă şirurile sunt egale." - -#~ msgid " STRING1 != STRING2" -#~ msgstr " ŞIR1 != ŞIR2" - -#~ msgid " True if the strings are not equal." -#~ msgstr " Adevărat dacă şirurile nu sunt egale." - -#~ msgid " STRING1 < STRING2" -#~ msgstr " ŞIR1 < ŞIR2" - -#~ msgid "" -#~ " True if STRING1 sorts before STRING2 lexicographically" -#~ msgstr "" -#~ " Adevărat dacă ŞIR1 se ordonează lexical înaintea lui " -#~ "ŞIR2" - -#~ msgid " STRING1 > STRING2" -#~ msgstr " ŞIR1 > ŞIR2" - -#~ msgid "" -#~ " True if STRING1 sorts after STRING2 lexicographically" -#~ msgstr "" -#~ " Adevărat dacă ŞIR1 se ordonează lexical după ŞIR2" - -#~ msgid "Other operators:" -#~ msgstr "Alţi operatori:" - -#~ msgid " ! EXPR True if expr is false." -#~ msgstr " ! EXPR Adevărat dacă expr e falsă." - -#~ msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." -#~ msgstr " EXPR1 -a EXPR2 Adevărat dacă şi expr1 ŞI expr2 sunt adevărate." - -#~ msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." -#~ msgstr "" -#~ " EXPR1 -a EXPR2 Adevărat dacă una din expr1 sau expr2 e adevărată." - -#~ msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," -#~ msgstr " arg1 OP arg2 Teste aritmetice. OP este unul din -eq, -ne," - -#~ msgid " -lt, -le, -gt, or -ge." -#~ msgstr " -lt, -le, -gt, or -ge." - -#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," -#~ msgstr "Operatorii aritmetici binari returnează adevărat(true) dacă ARG1 " - -#~ msgid "" -#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" -#~ msgstr "" -#~ "este egal cu, nu este egal cu,mai mic, mai mic sau egal, mai mare, mai " -#~ "mare sau egal" - -#~ msgid "than ARG2." -#~ msgstr "decât ARG2." - -#~ msgid "This is a synonym for the \"test\" builtin, but the last" -#~ msgstr "Acesta este un sinonim pentru comanda internă \"test\", dar ultimul" - -#~ msgid "argument must be a literal `]', to match the opening `['." -#~ msgstr "argument trebuie să fie un `]' literal, pentru a închide un `['." - -#~ msgid "Print the accumulated user and system times for processes run from" -#~ msgstr "" -#~ "Afişează timpurile acumulate de user şi sistem pentru procesele rulate din" - -#~ msgid "the shell." -#~ msgstr "shell." - -#~ msgid "The command ARG is to be read and executed when the shell receives" -#~ msgstr "" -#~ "ARGumentele comenzii vor fi citite şi executate când shell-ul primeşte" - -#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" -#~ msgstr "" -#~ "semnal(e). SIGNAL_SPEC. Dacă ARGumentul este absent toate semnalele" - -#~ msgid "reset to their original values. If ARG is the null string each" -#~ msgstr "" -#~ "specifice sunt resetate la valorile lor originale. Dacă ARGumentul este " -#~ "un şir vid" - -#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." -#~ msgstr "" -#~ "fiecare SIGNAL_SPEC este ignorat de shell şi de comanda invocată de " -#~ "acesta." - -#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" -#~ msgstr "" -#~ "Dacă SIGNAL_SPEC este EXIT (0) ARGumentele comenzii sunt executate la " - -#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" -#~ msgstr "" -#~ "ieşirea din shell. Dacă SIGNAL_SPEC este DEBUG, ARGument este executat" - -#~ msgid "command. If ARG is `-p' then the trap commands associated with" -#~ msgstr "" -#~ "după fiecare comandă. Dacă ARGument este `-' atunci vor fi afişate " -#~ "comenzile" - -#~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" -#~ msgstr "trap asociate cu fiecare SIGNAL_SPEC. Dacă nu sunt furnizaţi " - -#~ msgid "only `-p' is given, trap prints the list of commands associated with" -#~ msgstr "" -#~ "parametri sau este dat doar `-p', trap afişează lista de comenzi asociate " -#~ "cu " - -#~ msgid "" -#~ "each signal number. SIGNAL_SPEC is either a signal name in " -#~ msgstr "" -#~ "fiecare număr de semnal. SIGNAL_SPEC este ori un nume de semnal din " -#~ "" - -#~ msgid "" -#~ "or a signal number. `trap -l' prints a list of signal names and their" -#~ msgstr "" -#~ "sau un număr de semnal. `trap -l' tipăreşte o listă de numere de semnale " -#~ "şi " - -#~ msgid "corresponding numbers. Note that a signal can be sent to the shell" -#~ msgstr "" -#~ "numerele corespunzătoare. Notaţi că un semnal poate fi trimis shell-ului" - -#~ msgid "with \"kill -signal $$\"." -#~ msgstr "cu \"kill -signal $$\"." - -#~ msgid "For each NAME, indicate how it would be interpreted if used as a" -#~ msgstr "" -#~ "Pentru fiecare NUME, indică în ce mod va fi interpretat dacă este " -#~ "utilizat ca" - -#~ msgid "If the -t option is used, returns a single word which is one of" -#~ msgstr "" -#~ "Dacă este folosită opţiunea -t, returnează un singur cuvânt care este " -#~ "unul din" - -#~ msgid "" -#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" -#~ msgstr "" -#~ "`alias', `keyword', `function', `builtin', `file' or `', dacă NUME este un" - -#~ msgid "" -#~ "alias, shell reserved word, shell function, shell builtin, disk file," -#~ msgstr "" -#~ "alias, cuvânt rezervat de shell, funcţie de shell, comandă internă, " -#~ "fişier de pe disk," - -#~ msgid "or unfound, respectively." -#~ msgstr "sau negăsit, respectiv." - -#~ msgid "If the -p flag is used, either returns the name of the disk file" -#~ msgstr "" -#~ "Dacă este utilizat marcajul(flag) -p se returnează fie numele fişierului " -#~ "de disk" - -#~ msgid "that would be executed, or nothing if -t would not return `file'." -#~ msgstr "" -#~ "care urmează să fie executat, sau nimic dacă -t nu va returna `fişier'." - -#~ msgid "If the -a flag is used, displays all of the places that contain an" -#~ msgstr "Dacă este folosit -a, se vor afişa toate locurile care conţin" - -#~ msgid "" -#~ "executable named `file'. This includes aliases and functions, if and" -#~ msgstr "" -#~ "un executabil numit `fişier'. Aceasta include aliasuri şi funcţii, şi " -#~ "numai" - -#~ msgid "only if the -p flag is not also used." -#~ msgstr "marcajul(flag) -p nu este folosit de asemenea." - -#~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t," -#~ msgstr "Type acceptă -all, -path şi -type în loc de -a, -p şi -t," - -#~ msgid "respectively." -#~ msgstr "respectiv" - -#~ msgid "Ulimit provides control over the resources available to processes" -#~ msgstr "Ulimit oferă control al resurselor disponibile pentru procesele" - -#~ msgid "started by the shell, on systems that allow such control. If an" -#~ msgstr "" -#~ "rulate de shell, în sisteme care permit acest tip de control. Dacă este" - -#~ msgid "option is given, it is interpreted as follows:" -#~ msgstr "dată o opţiune, este interpretată precum urmează:" - -#~ msgid " -S\tuse the `soft' resource limit" -#~ msgstr " -S\tfoloseşte limita `soft' a resursei" - -#~ msgid " -H\tuse the `hard' resource limit" -#~ msgstr " -H\tfoloseşte limita `hard' a resursei" - -#~ msgid " -a\tall current limits are reported" -#~ msgstr " -a\tsunt raportate toate limitele curente" - -#~ msgid " -c\tthe maximum size of core files created" -#~ msgstr " -c\tmărimea maximă de fişiere core creată" - -#~ msgid " -d\tthe maximum size of a process's data segment" -#~ msgstr " -d\ttmărimea maximă a unui segment de date al procesului" - -#~ msgid " -m\tthe maximum resident set size" -#~ msgstr " -m\tmărimea maximă de rezidenţă" - -#~ msgid " -s\tthe maximum stack size" -#~ msgstr " -s\tmărimea maximă a stivei(stack)" - -#~ msgid " -t\tthe maximum amount of cpu time in seconds" -#~ msgstr " -t\tsuma maximă a timpului cpu în secunde" - -#~ msgid " -f\tthe maximum size of files created by the shell" -#~ msgstr " -f\ttmărimea maximă a fişierelor create de shell" - -#~ msgid " -p\tthe pipe buffer size" -#~ msgstr " -p\tmărimea tamponului de legătură (pipe buffer)" - -#~ msgid " -n\tthe maximum number of open file descriptors" -#~ msgstr " -n\tnumărul maxim de fişiere deschise" - -#~ msgid " -u\tthe maximum number of user processes" -#~ msgstr " -u\tnumărul maxim de procese utilizator" - -#~ msgid " -v\tthe size of virtual memory" -#~ msgstr " -v\tmărimea memoriei virtuale" - -#~ msgid "If LIMIT is given, it is the new value of the specified resource." -#~ msgstr "Dacă este dată LIMITĂ, va fi noua valoare a resursei specificate." - -#~ msgid "Otherwise, the current value of the specified resource is printed." -#~ msgstr "" -#~ "În caz contrar, este tipărită valoarea curentă a resursei specificate." - -#~ msgid "If no option is given, then -f is assumed. Values are in 1k" -#~ msgstr "" -#~ "Dacă nu este dată nici o opţiune se presupune -f. Valorile sunt exprimate" - -#~ msgid "increments, except for -t, which is in seconds, -p, which is in" -#~ msgstr "" -#~ "în incrementări de 1k, exceptând -t, care este în secunde, -p, care este " -#~ "în" - -#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of" -#~ msgstr "incrementări de 512 octeţi, şi -u, care este un număr nescalat de" - -#~ msgid "processes." -#~ msgstr "procese." - -#~ msgid "" -#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" -#~ msgstr "" -#~ "Masca de crearecreation mask) a fişierului utilizatorului e setată la " -#~ "MOD. Dacă" - -#~ msgid "" -#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" -#~ msgstr "" -#~ "MOD este omis sau este dat `-S', este tipărită valoarea curentă a " -#~ "măştii. Opţiunea" - -#~ msgid "" -#~ "option makes the output symbolic; otherwise an octal number is output." -#~ msgstr "" -#~ "`-S' returnează output simbolic; în caz contrar outputul este un număr " -#~ "octal." - -#~ msgid "If MODE begins with a digit, it is interpreted as an octal number," -#~ msgstr "Dacă MOD începe cu un digit, este interpretat ca număr octal," - -#~ msgid "" -#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." -#~ msgstr "în caz contrar este un şir mod simbolic premis de chmod(1)." - -#~ msgid "" -#~ "Wait for the specified process and report its termination status. If" -#~ msgstr "" -#~ "Aşteaptă după procesul specificat şi raportează starea de terminare. Dacă" - -#~ msgid "N is not given, all currently active child processes are waited for," -#~ msgstr "" -#~ "N nu este dat,se aşteaptă după toate procesele copil(child) curente," - -#~ msgid "and the return code is zero. N may be a process ID or a job" -#~ msgstr "" -#~ "şi codul returnat este zero. N poate fi un ID de proces sau o " -#~ "specificaţie" - -#~ msgid "specification; if a job spec is given, all processes in the job's" -#~ msgstr "de job; Dacă este dată o specificaţie de job,se aşteaptă după" - -#~ msgid "pipeline are waited for." -#~ msgstr " toate procesele din legătură(pipeline)." - -#~ msgid "and the return code is zero. N is a process ID; if it is not given," -#~ msgstr "" -#~ "şi codul returnat este zero. N este un ID de proces; dacă nu este dat," - -#~ msgid "all child processes of the shell are waited for." -#~ msgstr "se va aştepta după doate procesele copil(child) din shell." - -#~ msgid "The `for' loop executes a sequence of commands for each member in a" -#~ msgstr "" -#~ "Ciclul `for' execută o secvenţă de comenzi pentru fiecare membru dintr-o" - -#~ msgid "" -#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" -#~ msgstr "" -#~ "listă de elemente. Dacă `in CUVINTE...;' nu este prezent, atunci `in \"$@" -#~ "\"'" - -#~ msgid "" -#~ "assumed. For each element in WORDS, NAME is set to that element, and" -#~ msgstr "" -#~ "este presupus. Pentru fiecare element din CUVINTE, NUME este setat ca " -#~ "acel" - -#~ msgid "the COMMANDS are executed." -#~ msgstr "element şi COMENZI sunt executate." - -#~ msgid "The WORDS are expanded, generating a list of words. The" -#~ msgstr "CUVINTEle sunt expandate, generând o listă de cuvinte. Setul de" - -#~ msgid "set of expanded words is printed on the standard error, each" -#~ msgstr "" -#~ "de cuvinte expandate este tipărit la dispozitivul de eroare standard, " -#~ "fiecare" - -#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" -#~ msgstr "" -#~ "fiind precedat de un număr. Dacă `in CUVINTE' nu este prezent, `in \"$@" -#~ "\"'" - -#~ msgid "is assumed. The PS3 prompt is then displayed and a line read" -#~ msgstr "" -#~ "este presupus. Promptul PS3 este apoi afişat şi o linie va fi citită de" - -#~ msgid "from the standard input. If the line consists of the number" -#~ msgstr "" -#~ "la intrare(input) standard. Dacă linia e alcătuită dintr-unul din " -#~ "numerele" - -#~ msgid "corresponding to one of the displayed words, then NAME is set" -#~ msgstr "corespunzătoare unuia din cuvintele afişate, atunci NUME este setat" - -#~ msgid "to that word. If the line is empty, WORDS and the prompt are" -#~ msgstr "" -#~ "drept cuvântul respectiv. Dacă linia este vidă, CUVINTEle şi promptul " -#~ "sunt" - -#~ msgid "redisplayed. If EOF is read, the command completes. Any other" -#~ msgstr "" -#~ "reafişate. Dacă se citeşte EOF, comanda ajunge la sfârşit. Orice altă" - -#~ msgid "value read causes NAME to be set to null. The line read is saved" -#~ msgstr "" -#~ "valoare citită va face ca NUMEle setat să fie setat null. Linia citită " -#~ "este salvată" - -#~ msgid "in the variable REPLY. COMMANDS are executed after each selection" -#~ msgstr "" -#~ "în variabila RĂSPUNS. COMENZIle sunt executate după fiecare selecţie" - -#~ msgid "until a break or return command is executed." -#~ msgstr "până când se execută o comandă break sau return." - -#~ msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" -#~ msgstr "" -#~ "Execută selectiv COMENZI bazându-se pe potrivirea CUVÂNTului în TIPAR." - -#~ msgid "`|' is used to separate multiple patterns." -#~ msgstr " `|' este folosit pentru a separa mai multe tipare." - -#~ msgid "" -#~ "The if COMMANDS are executed. If the exit status is zero, then the then" -#~ msgstr "" -#~ "COMENZIle if sunt executate. Dacă starea de ieşire este zero, atunc" - -#~ msgid "" -#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" -#~ msgstr "" -#~ "COMENZIle then sunt executate. În caz contrar, fiecare din COMENZIle " -#~ "elif sunt executate" - -#~ msgid "" -#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" -#~ msgstr "" -#~ "pe rând, şi dacă starea de ieşire este zero, atunci COMENZIle then " -#~ "corespunzătoare" - -#~ msgid "" -#~ "are executed and the if command completes. Otherwise, the else COMMANDS" -#~ msgstr "" -#~ "sunt executate şi comanda if se termină. În caz contrar, COMENZIle else" - -#~ msgid "" -#~ "are executed, if present. The exit status is the exit status of the last" -#~ msgstr "" -#~ "sunt executate, în cazul în care sunt prezente. Starea de ieşire este " -#~ "starea de ieşire" - -#~ msgid "command executed, or zero if no condition tested true." -#~ msgstr "" -#~ "a ultimei comenzi executate, sau zero dacă nici o condiţie nu s-a dovedit " -#~ "adevărată." - -#~ msgid "Expand and execute COMMANDS as long as the final command in the" -#~ msgstr "Expandează şi execută COMENZI atâta timp cât comanda finală din" - -#~ msgid "`while' COMMANDS has an exit status of zero." -#~ msgstr "COMENZIle `while' au o stare de ieşire de zero." - -#~ msgid "`until' COMMANDS has an exit status which is not zero." -#~ msgstr "COMENZIle `until' au o stare de ieşire diferită de zero." - -#~ msgid "Create a simple command invoked by NAME which runs COMMANDS." -#~ msgstr "Crează o comandă simplă invocată de NUME care rulează COMENZI." - -#~ msgid "Arguments on the command line along with NAME are passed to the" -#~ msgstr "Parametrii din linia de comandă împreună cu NUMEle sunt pasaţi" - -#~ msgid "function as $0 .. $n." -#~ msgstr "funcţiei drept $0 .. $n." - -#~ msgid "Run a set of commands in a group. This is one way to redirect an" -#~ msgstr "" -#~ "Rulează un set de comenzi dintr-un grup. Aceasta este o cale de a " -#~ "redirecta un" - -#~ msgid "entire set of commands." -#~ msgstr "întreg set de comenzi." - -#~ msgid "This is similar to the `fg' command. Resume a stopped or background" -#~ msgstr "" -#~ "Aceasta este similară comenzii `fg'. Continuă(resume) un job stopat sau " -#~ "din" - -#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" -#~ msgstr "" -#~ "fundal(background). Dacă se specifică DIGIŢI, atunci este folosit acel " -#~ "job. Dacă" - -#~ msgid "" -#~ "WORD, then the job whose name begins with WORD is used. Following the" -#~ msgstr "" -#~ "se specifică CUVÂNT, atunci e folosit jobul al cărui nume începe cu " -#~ "CUVÂNT." - -#~ msgid "job specification with a `&' places the job in the background." -#~ msgstr "" -#~ "Specificând jobului un `&' după, va plasa jobul în fundal(background)." - -#~ msgid "BASH_VERSION The version numbers of this Bash." -#~ msgstr "BASH_VERSION Numărul de versiune a acestui Bash." - -#~ msgid "CDPATH A colon separated list of directories to search" -#~ msgstr "" -#~ "CDPATH O listă de directoare separată prin două-puncte pentru a " -#~ "se" - -#~ msgid "\t\twhen the argument to `cd' is not found in the current" -#~ msgstr "" -#~ "\t\tcăuta atunci când parametrii specificaţi comenzii `cd' nu sunt găsiţi " -#~ "în" - -#~ msgid "\t\tdirectory." -#~ msgstr "\t\tdirectorul curent." - -#~ msgid "" -#~ "HISTFILE The name of the file where your command history is stored." -#~ msgstr "" -#~ "HISTFILE Numele fişierului unde istoricul comenzilor voastre este " -#~ "stocat." - -#~ msgid "HISTFILESIZE The maximum number of lines this file can contain." -#~ msgstr "" -#~ "HISTFILESIZE Numărul maxim de linii pe care acest fişier poate să le " -#~ "conţină." - -#~ msgid "HISTSIZE The maximum number of history lines that a running" -#~ msgstr "" -#~ "HISTSIZE Numărul maxim de linii de istoric care pot fi accesate" - -#~ msgid "\t\tshell can access." -#~ msgstr "\t\tde un shell activ." - -#~ msgid "HOME The complete pathname to your login directory." -#~ msgstr "HOME Calea completă către directorul vostru de login." - -#~ msgid "" -#~ "HOSTTYPE The type of CPU this version of Bash is running under." -#~ msgstr "" -#~ "HOSTTYPE Tipul de CPU pe care rulează această versiune de Bash." - -#~ msgid "" -#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" -#~ msgstr "" -#~ "IGNOREEOF Controlează acţiunea shell-ului la întâlnirea unui " -#~ "caracter" - -#~ msgid "\t\tcharacter as the sole input. If set, then the value" -#~ msgstr "" -#~ "\t\tEOF ca singură intrare(input). Dacă este setat, atunci valoarea" - -#~ msgid "\t\tof it is the number of EOF characters that can be seen" -#~ msgstr "\t\tacestuia este numărul de caractere EOF care pot fi întâlnite" - -#~ msgid "\t\tin a row on an empty line before the shell will exit" -#~ msgstr "\t\tpe rând într-o linie vidă înainte de ieşirea shell-ului." - -#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." -#~ msgstr "" -#~ "\t\t(implicit 10). Când este desetat(unset), EOF semnifică sfârşitul " -#~ "intrării(input)." - -#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." -#~ msgstr "" -#~ "MAILCHECK\tCât de des, în secunde, Bash-ul să verifice dacă există mail " -#~ "nou." - -#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" -#~ msgstr "" -#~ "MAILPATH\tO listă de fişiere separate prin două-puncte pe care Bash o " -#~ "verifică" - -#~ msgid "\t\tfor new mail." -#~ msgstr "\t\tpentru mail nou." - -#~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." -#~ msgstr "" -#~ "OSTYPE\t\tVersiunea de Unix pe care această versiune de Bash rulează." - -#~ msgid "PATH A colon-separated list of directories to search when" -#~ msgstr "" -#~ "PATH O listă de directoare separată prin două-puncte care se va" - -#~ msgid "\t\tlooking for commands." -#~ msgstr "\t\tindexa în căutarea comenzilor." - -#~ msgid "PROMPT_COMMAND A command to be executed before the printing of each" -#~ msgstr "" -#~ "PROMPT_COMMAND O comandă care va fi executată înainte de tipărirea " -#~ "fiecărui" - -#~ msgid "\t\tprimary prompt." -#~ msgstr "\t\tprompt primar." - -#~ msgid "PS1 The primary prompt string." -#~ msgstr "PS1 Şirul promptului primar." - -#~ msgid "PS2 The secondary prompt string." -#~ msgstr "PS2 Şirul promptului secundar." - -#~ msgid "TERM The name of the current terminal type." -#~ msgstr "TERM Numele tipului de terminal curent." - -#~ msgid "auto_resume Non-null means a command word appearing on a line by" -#~ msgstr "" -#~ "auto_resume Dacă nu e vid rezultă că un cuvânt comandă ce apare pe o " -#~ "linie" - -#~ msgid "\t\titself is first looked for in the list of currently" -#~ msgstr "\t\tsingur este prima dată căutat în lista " - -#~ msgid "\t\tstopped jobs. If found there, that job is foregrounded." -#~ msgstr "" -#~ "\t\tjoburilor.curente stopate. Dacă este găsit acolo, acel job este adus " -#~ "în prim-plan(foreground)." - -#~ msgid "\t\tA value of `exact' means that the command word must" -#~ msgstr "\t\tO valoare de `exact' înseamnă că acel cuvânt comandă trebuie" - -#~ msgid "\t\texactly match a command in the list of stopped jobs. A" -#~ msgstr "" -#~ "\t\tsă se potrivească perfect unei comenzi din lista de joburi stopate. O" - -#~ msgid "\t\tvalue of `substring' means that the command word must" -#~ msgstr "\t\tvaloare de `substring' înseamnă că acel cuvânt comandă trebuie" - -#~ msgid "\t\tmatch a substring of the job. Any other value means that" -#~ msgstr "" -#~ "\t\tsă se potrivească unui subşir al jobului. Orice altă valoare " -#~ "înseamnă că" - -#~ msgid "\t\tthe command must be a prefix of a stopped job." -#~ msgstr "\t\tacea comandă trebuie să fie prefixul unui job stopat." - -#~ msgid "command_oriented_history" -#~ msgstr "command_oriented_history" - -#~ msgid "" -#~ " Non-null means to save multiple-line commands together on" -#~ msgstr "" -#~ " Nevid reprezintă salvarea mai multor linii de comandă " -#~ "împreună într-o" - -#~ msgid " a single history line." -#~ msgstr " singură linie de istoric." - -#~ msgid "histchars Characters controlling history expansion and quick" -#~ msgstr "" -#~ "histchars Caractere care controlează expansiunea istoricului şi" - -#~ msgid "\t\tsubstitution. The first character is the history" -#~ msgstr "" -#~ "\t\tsubstituţii rapide. Primul caracter este caracterul de substituţie al" - -#~ msgid "\t\tsubstitution character, usually `!'. The second is" -#~ msgstr "\t\tistoricului, de obicei `!'. Al doilea este" - -#~ msgid "\t\tthe `quick substitution' character, usually `^'. The" -#~ msgstr "\t\tcaracterul de `quick substitution', de obicei `^'. Al treilea" - -#~ msgid "\t\tthird is the `history comment' character, usually `#'." -#~ msgstr "\t\teste caracterul de `history comment', de obicei `#'." - -#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter" -#~ msgstr "" -#~ "HISTCONTROL\tSetează o valoare de `ignorespace', care înseamnă să nu" - -#~ msgid "\t\tlines which begin with a space or tab on the history" -#~ msgstr "\t\tintroduci în lista de istoric linii care încep cu un" - -#~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't" -#~ msgstr "" -#~ "\t\tspaţiu sau un tab. Setează o valoare de `ignoredups', care înseamnă" - -#~ msgid "\t\tenter lines which match the last entered line. Set to" -#~ msgstr "" -#~ "\t\ta nu se introduce linii care sunt asemănătoare ultimei linii " -#~ "introduse." - -#~ msgid "\t\t`ignoreboth' means to combine the two options. Unset," -#~ msgstr "" -#~ "\t\tSetează o valaore de `ignoreboth' însemnând combinarea celor două " -#~ "opţiuni." - -#~ msgid "\t\tor set to any other value than those above means to save" -#~ msgstr "" -#~ "\t\t Desetat(unset) sau setat la orice altă valoare decât acelea de mai " -#~ "sus" - -#~ msgid "\t\tall lines on the history list." -#~ msgstr "\t\taînseamnă salvarea tuturor liniilor în lista istoricului." - -#~ msgid "Adds a directory to the top of the directory stack, or rotates" -#~ msgstr "" -#~ "Adaugă un director în partea superioară a stivei de directoare, sau " -#~ "roteşte" - -#~ msgid "the stack, making the new top of the stack the current working" -#~ msgstr "stiva, făcând noul element superior al listei directorul curent" - -#~ msgid "directory. With no arguments, exchanges the top two directories." -#~ msgstr "" -#~ "de lucru. Fără parametri, interchimbă cele două directoare superioare." - -#~ msgid "+N\tRotates the stack so that the Nth directory (counting" -#~ msgstr "+N\tRoteşte stiva astfel încât al N-ulea director (numărând" - -#~ msgid "\tfrom the left of the list shown by `dirs') is at the top." -#~ msgstr "\tde la stânga listei afişată de `dirs') va fi în vârf(top)." - -#~ msgid "-N\tRotates the stack so that the Nth directory (counting" -#~ msgstr "-N\tRoteşte stiva astfel încât al N-ulea director (numărând" - -#~ msgid "\tfrom the right) is at the top." -#~ msgstr "\tde la dreapta) va fi în vârf." - -#~ msgid "-n\tsuppress the normal change of directory when adding directories" -#~ msgstr "" -#~ "-n\tinhibă schimbarea normală de directoare la adăugarea directoarelor" - -#~ msgid "\tto the stack, so only the stack is manipulated." -#~ msgstr "\tîn stivă, astfel încât doar stiva să fie manipulată." - -#~ msgid "dir\tadds DIR to the directory stack at the top, making it the" -#~ msgstr "dir\tadaugă DIR în vârful stivei de directoare, făcându-l" - -#~ msgid "You can see the directory stack with the `dirs' command." -#~ msgstr "Puteţi vedea stiva de directoare cu ajutorul comenzii `dirs'." - -#~ msgid "Removes entries from the directory stack. With no arguments," -#~ msgstr "Şterge intrările din stiva de directoare. Fără parametri, " - -#~ msgid "removes the top directory from the stack, and cd's to the new" -#~ msgstr "şterge directorul superior din stivă, şi face cd la noul" - -#~ msgid "+N\tremoves the Nth entry counting from the left of the list" -#~ msgstr "+N\tşterge al N-ulea element numărând din stânga listei" - -#~ msgid "\tshown by `dirs', starting with zero. For example: `popd +0'" -#~ msgstr "\tafişate de `dirs', începând cu zero. De exemplu: `popd +0'" - -#~ msgid "\tremoves the first directory, `popd +1' the second." -#~ msgstr "\tşterge primul director, `popd +1' al doilea." - -#~ msgid "-N\tremoves the Nth entry counting from the right of the list" -#~ msgstr "-N\tşterge al N-ulea element numărând din dreapta listei" - -#~ msgid "\tshown by `dirs', starting with zero. For example: `popd -0'" -#~ msgstr "\tafişate de `dirs', începând cu zero. De exemplu: `popd -0'" - -#~ msgid "\tremoves the last directory, `popd -1' the next to last." -#~ msgstr "\tşterge ultimul director, `popd -1' penultimul." - -#~ msgid "" -#~ "-n\tsuppress the normal change of directory when removing directories" -#~ msgstr "" -#~ "-n\tinhibă schimbarea normală de directoare când se şterg diurectoare" - -#~ msgid "\tfrom the stack, so only the stack is manipulated." -#~ msgstr "\tdin stivă, astfel încât numai stiva să fie manipulată." - -#~ msgid "Display the list of currently remembered directories. Directories" -#~ msgstr "Afişează lista curentă de directoare reţinute. Directoarele" - -#~ msgid "find their way onto the list with the `pushd' command; you can get" -#~ msgstr "" -#~ "îşi gasesc locul în listă cu ajutorul comenzii `pushd'; puteţi merge" - -#~ msgid "back up through the list with the `popd' command." -#~ msgstr "prin listă cu ajutorul comenzii `popd'." - -#~ msgid "" -#~ "The -l flag specifies that `dirs' should not print shorthand versions" -#~ msgstr "" -#~ "Parametrul(flag) -l specifică faptul că `dirs' nu ar trebui să " -#~ "tipărească " - -#~ msgid "" -#~ "of directories which are relative to your home directory. This means" -#~ msgstr "" -#~ "versiuni prescurtate ale directoarelor care au legătură(relative) cu home-" -#~ "directory-ul." - -#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" -#~ msgstr "" -#~ " Aceasta înseamnă că `~/bin' poate fi afişat ca `/homes/bfox/bin' " -#~ "Parametrul" - -#~ msgid "causes `dirs' to print the directory stack with one entry per line," -#~ msgstr "" -#~ "-v face ca `dirs' să afişeze stiva de directoare doar câte o intrare pe " -#~ "linie," - -#~ msgid "" -#~ "prepending the directory name with its position in the stack. The -p" -#~ msgstr "prefixând numele directorului cu poziţia în stivă. Parametrul -p" - -#~ msgid "flag does the same thing, but the stack position is not prepended." -#~ msgstr "face acelaşi lucru, dar poziţia în stivă nu este prefix." - -#~ msgid "" -#~ "The -c flag clears the directory stack by deleting all of the elements." -#~ msgstr "" -#~ "Parametrul(flag) -c şterge stiva de directoare prin ştergerea tuturor " -#~ "elementelor." - -#~ msgid "" -#~ "+N\tdisplays the Nth entry counting from the left of the list shown by" -#~ msgstr "+N\tafişează a N-a intrare numărând de la stânga listei afişate de" - -#~ msgid "\tdirs when invoked without options, starting with zero." -#~ msgstr "\tdirs atunci când e invocată fără opţiuni, începând cu zero." - -#~ msgid "" -#~ "-N\tdisplays the Nth entry counting from the right of the list shown by" -#~ msgstr "-N\tafişează a N-a intrare numărând de la dreapta listei afişate de" - -#~ msgid "Toggle the values of variables controlling optional behavior." -#~ msgstr "" -#~ "Schimbă(toggle) valorile variabilelor, controlând comportamentul opţional." - -#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" -#~ msgstr "" -#~ "Parametrul -s înseamnă activarea(setarea) fiecărei NUME_OPT; parametrul -u" - -#~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" -#~ msgstr "desetează(unset) fiecare NUME_OPT. Parametrul -q inhibă output-ul;" - -#~ msgid "status indicates whether each OPTNAME is set or unset. The -o" -#~ msgstr "" -#~ "starea de ieşire indică dacă fiecare NUME_OPT este setat sau desetat." - -#~ msgid "option restricts the OPTNAMEs to those defined for use with" -#~ msgstr "" -#~ " Parametrul -o restricţionează NUME_OPT la acelea definite pentru a fi " - -#~ msgid "`set -o'. With no options, or with the -p option, a list of all" -#~ msgstr "" -#~ "folosite cu `set -o'. Fără nici o opţiune, sau cu opţiunea -p, este " -#~ "afişată" - -#~ msgid "settable options is displayed, with an indication of whether or" -#~ msgstr "" -#~ "o listă a tuturor opţiunilor setabile, ceea ce indică dacă fiecare este" - -#~ msgid "not each is set." -#~ msgstr "setată sau nu." +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: cheie de matrice asociativă nevalidă" diff --git a/po/ru.gmo b/po/ru.gmo index e1f1613e5..ec59728a8 100644 Binary files a/po/ru.gmo and b/po/ru.gmo differ diff --git a/po/ru.po b/po/ru.po index 56e477b77..4cf2cbc57 100644 --- a/po/ru.po +++ b/po/ru.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 5.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2021-02-17 11:04+0200\n" "Last-Translator: Pavlo Marianov \n" "Language-Team: Russian \n" @@ -17,64 +17,61 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Poedit 2.2.1\n" #: arrayfunc.c:66 msgid "bad array subscript" msgstr "неправильный индекс массива" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: удаляется атрибут nameref" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: не удаётся преобразовать индекс в ассоциативный массив" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: недопустимый ключ ассоциативного массива" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: не удаётся присвоить значение нечисловому индексу" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" -msgstr "%s: %s: необходимо использовать индекс при назначении ассоциативному массиву" +msgstr "" +"%s: %s: необходимо использовать индекс при назначении ассоциативному массиву" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не удаётся создать файл: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: не удаётся найти раскладку для команды" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: первый непробельный символ не является «\"»" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "нет закрывающего «%c» в %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: отсутствует разделитель-двоеточие" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "«%s»: не удаётся отменить привязку в keymap команды" @@ -94,7 +91,7 @@ msgstr "расширение скобки: не удалось выделить msgid "brace expansion: failed to allocate memory for `%s'" msgstr "расширение скобки: не удалось выделить память для «%s»" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "«%s»: недопустимый псевдоним" @@ -167,7 +164,7 @@ msgstr "" msgid "HOME not set" msgstr "Не задана переменная HOME" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "слишком много аргументов" @@ -194,7 +191,7 @@ msgstr "предупреждение: " msgid "%s: usage: " msgstr "%s: использование: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: для параметра требуется аргумент" @@ -209,7 +206,7 @@ msgstr "%s: требуется числовой аргумент" msgid "%s: not found" msgstr "%s: не найден" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: недопустимый параметр" @@ -219,7 +216,7 @@ msgstr "%s: недопустимый параметр" msgid "%s: invalid option name" msgstr "%s: недопустимое название параметра" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "«%s»: это недопустимый идентификатор" @@ -232,7 +229,7 @@ msgstr "недопустимое восьмеричное число" msgid "invalid hex number" msgstr "недопустимое шестнадцатеричное число" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "недопустимое число" @@ -246,88 +243,93 @@ msgstr "%s: недопустимое указание сигнала" msgid "`%s': not a pid or valid job spec" msgstr "«%s»: это не идентификатор процесса и не допустимый указатель задания" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: переменная только для чтения" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: не удаётся выполнить сброс" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s за пределами диапазона" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "аргумент" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s за пределами диапазона" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: нет такого задания" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: нет управления заданиями" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "нет управления заданиями" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: ограниченный режим" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "ограниченный режим" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: это не не встроенная команда bash" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "ошибка записи: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "ошибка назначения атрибутов терминала: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "ошибка получения атрибутов терминала: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: ошибка определения текущего каталога: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: неоднозначный указатель задания" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "справка отсутствует в этой версии" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не удаётся выполнить сброс: %s доступен только для чтения" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: не удаётся выполнить сброс" @@ -337,108 +339,108 @@ msgstr "%s: не удаётся выполнить сброс" msgid "%s: invalid action name" msgstr "%s: недопустимое название действия" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: нет определения завершения" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "предупреждение: параметр -F может работать не так, как ожидается" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "предупреждение: параметр -C может работать не так, как ожидается" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "сейчас не выполняет функцию завершения" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "можно использовать только внутри функции" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "«-f» нельзя использовать для создания функций" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: значение функции можно только считать" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: ссылочная переменная не может быть массивом" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: переменные nameref, ссылающиеся сами на себя, не допускаются" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: круговая ссылка на имя" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "«%s»: недопустимое название переменной для ссылки на имя" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "«-f» нельзя использовать для создания функций" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: значение функции можно только считать" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: присвоение составного массива в кавычках устарело" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: переменные массива нельзя уничтожить таким образом" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: не удаётся преобразовать ассоциативный массив в индексированный" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: присвоение составного массива в кавычках устарело" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "динамическая загрузка недоступна" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "не удаётся открыть общий объект %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "не удаётся найти %s в общем объекте %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: динамически встроенная команда уже загружена" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "загрузка функции %s завершилась ошибкой (%d): не загружена" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: не загружается динамически" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: не удаётся удалить: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: это каталог" @@ -453,7 +455,7 @@ msgstr "%s: это не обычный файл" msgid "%s: file is too large" msgstr "%s: файл слишком велик" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: не удаётся запустить бинарный файл" @@ -546,15 +548,18 @@ msgstr "" #: builtins/help.def:185 #, c-format -msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "нет разделов справки, соответствующих «%s». Попробуйте ввести «help help» или «man -k %s» или «info %s»." +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"нет разделов справки, соответствующих «%s». Попробуйте ввести «help help» " +"или «man -k %s» или «info %s»." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не удаётся открыть файл: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -565,29 +570,32 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" -"Показанные ниже команды определены внутри командного процессора. Чтобы вывести полный список, введите «help».\n" +"Показанные ниже команды определены внутри командного процессора. Чтобы " +"вывести полный список, введите «help».\n" "Чтобы вывести справку по функции «name», введите «help name».\n" "Чтобы вывести справку по командному процессору, введите «info bash».\n" -"Чтобы вывести справку по командам, которые отсутствуют в этом списке, введите «man -k» или «info».\n" +"Чтобы вывести справку по командам, которые отсутствуют в этом списке, " +"введите «man -k» или «info».\n" "\n" -"Звёздочка (*) рядом с названием команды означает, что эта команда отключена.\n" +"Звёздочка (*) рядом с названием команды означает, что эта команда " +"отключена.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "нельзя использовать больше одного параметра -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "положение журнала команд" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: недопустимая метка времени" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: не удалось расширить журнал команд" @@ -610,78 +618,78 @@ msgstr "%s: аргументами должны быть идентификат msgid "Unknown error" msgstr "Неизвестная ошибка" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "ожидается выражение" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: это не индексированный массив" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: недопустимое указание дескриптора файла" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: invalid недопустимый дескриптор файла: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: недопустимое число строк" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: недопустимое начало массива" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: недопустимый квант обратного вызова" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "пустое имя переменной массива" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "требуется поддержка переменных массива" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "«%s»: отсутствует символ форматирования" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: недопустимое указание формата времени" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: недопустимый символ форматирования" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "предупреждение: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "ошибка анализа формата: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "отсутствует шестнадцатеричная цифра для \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "отсутствует цифра Юникода для \\%c" @@ -722,10 +730,12 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Выводит список запомненных на данный момент каталогов. Каталоги\n" @@ -773,7 +783,8 @@ msgid "" msgstr "" "Добавляет каталог в начало стека каталогов или выполняет\n" " ротацию стека, помещая в начало стека текущий рабочий\n" -" каталог. Если аргументы не указаны, меняет местами два первых каталога.\n" +" каталог. Если аргументы не указаны, меняет местами два первых " +"каталога.\n" " \n" " Параметры:\n" " -n\tпредотвращает обычное изменение каталога при добавлении\n" @@ -831,12 +842,12 @@ msgstr "" " \n" " Встроенная команда dirs показывает стек каталогов." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: недопустимое указание тайм-аута" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "ошибка чтения: %d: %s" @@ -849,7 +860,7 @@ msgstr "возврат можно выполнить только из функ msgid "cannot simultaneously unset a function and a variable" msgstr "нельзя одновременно сбросить функцию и переменную" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: это не переменная массива" @@ -868,11 +879,11 @@ msgstr "%s: не удаётся экспортировать" msgid "shift count" msgstr "счётчик смещений" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "нельзя одновременно задать и сбросить параметры командного процессора" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: недопустимое название параметра командного процессора" @@ -939,16 +950,16 @@ msgstr "%s: недопустимый аргумент ограничения" msgid "`%c': bad command" msgstr "«%c»: недопустимая команда" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: не удаётся получить ограничение: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "ограничение" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: не удаётся изменить ограничение: %s" @@ -967,7 +978,7 @@ msgstr "«%c»: недопустимый оператор символьного msgid "`%c': invalid symbolic mode character" msgstr "«%c»: недопустимый знак символьного режима" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " строка " @@ -987,96 +998,108 @@ msgstr "Прерывание..." msgid "INFORM: " msgstr "ИНФО: " -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "предупреждение: " + +#: error.c:488 msgid "unknown command error" msgstr "неизвестная ошибка команды" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "неверный тип команды" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "неверный соединитель" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "ошибка перехода" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: не заданы границы переменной" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aпревышено время ожидания ввода: auto-logout\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "не удаётся перенаправить стандартный ввод из /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c»: недопустимый символ форматирования" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] всё ещё существует" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "ошибка конвейера" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: достигнут максимальный уровень вложенности eval (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: достигнут максимальный уровень вложенности source (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: достигнут максимальный уровень вложенности функций (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "%s: ограниченный режим: в названиях команд нельзя использовать косую черту «/»" +msgstr "" +"%s: ограниченный режим: в названиях команд нельзя использовать косую черту " +"«/»" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: команда не найдена" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: не удаётся запустить бинарный файл" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: неверный интерпретатор" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: не удаётся запустить бинарный файл: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "«%s»: это специальная встроенная команда" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "не удаётся скопировать файловый дескриптор %d в %d" @@ -1089,68 +1112,69 @@ msgstr "слишком много вложенных выражений" msgid "recursion stack underflow" msgstr "отрицательное переполнение стека вложенных выражений" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "синтаксическая ошибка в выражении" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "значение можно присвоить только переменной" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "синтаксическая ошибка в назначении переменной" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "деление на 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "ошибка: недопустимый маркер присвоения выражения" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "в условном выражении должен быть символ «:»" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "экспонента меньше нуля" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "после предварительного инкремента или декремента ожидается идентификатор " +msgstr "" +"после предварительного инкремента или декремента ожидается идентификатор " -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "отсутствует символ «)»" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "синтаксическая ошибка: ожидается операнд" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "ошибка синтаксиса: недопустимый математический оператор" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (неверный маркер «%s»)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "недопустимое математическое основание" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "недопустимая целочисленная константа" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "слишком большое значение для основания" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: ошибка выражения\n" @@ -1159,7 +1183,7 @@ msgstr "%s: ошибка выражения\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: нет доступа к родительским каталогам" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не удаётся сбросить режим nodelay для файлового дескриптора %d" @@ -1167,7 +1191,9 @@ msgstr "не удаётся сбросить режим nodelay для файл #: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" -msgstr "не удаётся выделить новый дескриптор для входных данных bash из файлового дескриптора %d" +msgstr "" +"не удаётся выделить новый дескриптор для входных данных bash из файлового " +"дескриптора %d" #: input.c:274 #, c-format @@ -1178,167 +1204,171 @@ msgstr "save_bash_input: у нового файлового дескриптор msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "идентификатор дочернего процесса %d принадлежит запущенному заданию %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "удаление остановленного задания %d с группой процесса %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" -msgstr "add_process: процесс с идентификатором %5ld (%s) помечен как всё ещё активный" +msgstr "" +"add_process: процесс с идентификатором %5ld (%s) помечен как всё ещё активный" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: нет процесса с таким идентификатором" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Завершён" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Остановлен" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Остановлен (%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Запущен" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Завершён (%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Выход %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Состояние неизвестно" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(образ памяти сброшен на диск) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (рабочий каталог: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "дочерний setpgid (%ld к %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" -msgstr "wait: процесс %ld не является дочерним процессом этого командного процессора" +msgstr "" +"wait: процесс %ld не является дочерним процессом этого командного процессора" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: нет записей процесса %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: задание %d остановлено" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: нет текущих заданий" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: выполнение задания прервано" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: задание %d уже выполняется в фоновом режиме" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" -msgstr "waitchld: включается WNOHANG, чтобы предотвратить появление неопределённого блока" +msgstr "" +"waitchld: включается WNOHANG, чтобы предотвратить появление неопределённого " +"блока" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: строка %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (образ памяти сброшен на диск)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(рабочий каталог: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: ошибка вызова getpgrp " -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: нельзя управлять заданиями в фоновом режиме" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: дисциплина строки" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "не удаётся задать группу процесса терминала (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "этот командный процессор не может управлять заданиями" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: ошибка утверждения: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1347,47 +1377,51 @@ msgstr "" "\\r\n" "malloc: %s:%d: утверждение не удалось\\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "неизвестно" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: блок в списке свободных затёрт" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: вызван с аргументом уже освобождённого блока" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: вызван с аргументом невыделенного блока" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" -msgstr "free: обнаружено отрицательное переполнение; mh_nbytes байт за пределами диапазона" +msgstr "" +"free: обнаружено отрицательное переполнение; mh_nbytes байт за пределами " +"диапазона" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free: обнаружено отрицательное переполнение; magic8 повреждён" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: размеры начального и конечного блока отличаются" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: вызван с аргументом невыделенного блока" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" -msgstr "realloc: обнаружено отрицательное переполнение; mh_nbytes байт за пределами диапазона" +msgstr "" +"realloc: обнаружено отрицательное переполнение; mh_nbytes байт за пределами " +"диапазона" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: обнаружено отрицательное переполнение; magic8 повреждён" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: размеры начального и конечного блока отличаются" @@ -1429,22 +1463,22 @@ msgstr "%s: недопустимое указание сетевого пути" msgid "network operations not supported" msgstr "сетевые операции не поддерживаются" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: не удаётся изменить язык (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: не удаётся изменить язык (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: не удаётся изменить язык (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: не удаётся изменить язык (%s): %s" @@ -1462,136 +1496,142 @@ msgstr "Для вас есть почта в $_" msgid "The mail in %s has been read\n" msgstr "Сообщения в %s были прочитаны\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "синтаксическая ошибка: требуется математическое выражение" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "синтаксическая ошибка: ожидается «;»" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "синтаксическая ошибка: «((%s))»" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: недопустимый тип инструкции %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "блок here-document в строке %d разделён знаком конца файла (ожидался «%s»)" +msgstr "" +"блок here-document в строке %d разделён знаком конца файла (ожидался «%s»)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "make_redirection: инструкция перенаправления «%d» вышла за пределы диапазона" +msgstr "" +"make_redirection: инструкция перенаправления «%d» вышла за пределы диапазона" -#: parse.y:2393 +#: parse.y:2428 #, c-format -msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" -msgstr "shell_getc: shell_input_line_size (%zu) превысил SIZE_MAX (%lu): строка обрезана" +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) превысил SIZE_MAX (%lu): строка " +"обрезана" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "достигнуто максимальное число переменных here-document" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "неожиданный конец файла во время поиска «%c»" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "неожиданный конец файла во время поиска «]]»" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "синтаксическая ошибка в условном выражении: неожиданный маркер «%s»" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "синтаксическая ошибка в условном выражении" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неожиданный маркер «%s», ожидался «)»" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "ожидается символ «)»" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неожиданный аргумент «%s» для условного унарного оператора" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "неожиданный аргумент для условного унарного оператора" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неожиданный маркер «%s», ожидается условный бинарный оператор" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "ожидается условный бинарный оператор" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неожиданный аргумент «%s» для условного бинарного оператора" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "неожиданный аргумент для условного бинарного оператора" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неожиданный маркер «%c» в условной команде" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неожиданный маркер «%s» в условной команде" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "неожиданный маркер %d в условной команде" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "синтаксическая ошибка рядом с неожиданным маркером «%s»" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "синтаксическая ошибка рядом с «%s»" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "синтаксическая ошибка: неожиданный конец файла" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "синтаксическая ошибка" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Для выхода из командного процессора используйте «%s».\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "неожиданный конец файла во время поиска «)»" @@ -1629,94 +1669,94 @@ msgstr "xtrace_set: пустой указатель на файл" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: недопустимый символ форматирования" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "файловый дескриптор за пределами диапазона" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: неоднозначное перенаправление" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: не удаётся перезаписать существующий файл" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ограниченный режим: не удаётся перенаправить вывод" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не удаётся создать временный файл для блока here-document: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: не удаётся присвоить файловый дескриптор переменной" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port не поддерживается без сети" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "ошибка перенаправления: не удаётся создать копию файлового дескриптора" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "не удалось найти /tmp; создайте этот каталог" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp должен быть допустимым названием каталога" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "режим печати игнорируется в интерактивных командных процессорах" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: недопустимый параметр" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "не удаётся установить UID %d: эффективный UID %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "не удаётся установить GID %d: эффективный GID %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "не удаётся запустить отладчик: режим отладки отключён" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: это каталог" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Не удаётся определить название" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, версия %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1725,317 +1765,329 @@ msgstr "" "Использование:\t%s [длинные параметры GNU] [параметры] ...\n" "\t\t%s [длинные параметры GNU] [параметры] файл_скрипта ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Длинные параметры GNU:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Параметры командного процессора:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "\t-irsD или -c команда или -O короткие_параметры\t\t(только при запуске)\n" +msgstr "" +"\t-irsD или -c команда или -O короткие_параметры\t\t(только при запуске)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s или -o параметр\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" -msgstr "Для получения дополнительных сведений о параметрах командного процессора введите «%s -c \"help set\"».\n" +msgstr "" +"Для получения дополнительных сведений о параметрах командного процессора " +"введите «%s -c \"help set\"».\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" -msgstr "Для получения дополнительных сведений о встроенных командах введите «%s -c help».\n" +msgstr "" +"Для получения дополнительных сведений о встроенных командах введите «%s -c " +"help».\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Для отправки сообщений об ошибках используйте команду «bashbug».\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "Домашняя страница bash: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" -msgstr "Общая справка по использованию программ GNU: \n" +msgstr "" +"Общая справка по использованию программ GNU: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: недопустимая операция" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Фиктивный сигнал" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Отбой" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Прерывание" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Выход" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Недопустимая инструкция" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "Трасса/ловушка BPT" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Инструкция ABORT" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Инструкция EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Исключение при обработке чисел с плавающей точкой" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Убит" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Ошибка шины" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Ошибка сегментации" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Неверный системный вызов" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Конвейер не работает" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Сигнал часов" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Прерван" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Срочное событие ввода/вывода" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Остановлен (сигналом)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Продолжение" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Смерть или остановка дочернего процесса" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Остановлен (ввод с tty)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Остановлен (вывод на tty)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "Готов к вводу/выводу" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Ограничение ЦП" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Ограничение величины файла" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Сигнал часов (виртуальный)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Сигнал часов (профиль)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Окно изменено" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Запись блокирована" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Сигнал пользователя 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Сигнал пользователя 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "Ожидание входных данных HFT" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "неизбежна ошибка питания" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "неизбежно падение системы" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "процесс переносится на другой ЦП" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "программная ошибка" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "Установлен режим монитора HFT" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "Выход из режима монитора HFT" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "Последовательность звуков HFT завершена" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Информационный запрос" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Неизвестный номер сигнала %d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "неверная подстановка: нет закрывающей «%s» в %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: не удаётся присвоить список элементу массива" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "не удаётся создать конвейер для подстановки процесса" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "не удаётся создать дочерний процесс для подстановки" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "не удаётся открыть именованный конвейер %s для чтения" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "не удаётся открыть именованный конвейер %s для записи" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" -msgstr "не удаётся скопировать именованный конвейер %s в файловый дескриптор %d" +msgstr "" +"не удаётся скопировать именованный конвейер %s в файловый дескриптор %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "подстановка команды: во входных данных проигнорирован нулевой байт" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "не удаётся создать конвейер для подстановки команды" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "не удаётся создать дочерний процесс для подстановки команды" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "command_substitute: не удаётся скопировать конвейер в файловый дескриптор 1" +msgstr "" +"command_substitute: не удаётся скопировать конвейер в файловый дескриптор 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: недопустимое название переменной для ссылки на имя" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: недопустимое непрямое раскрытие" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: недопустимое имя переменной" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: параметр не задан" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: параметр не задан или пустой" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: заданное подстрокой выражение меньше нуля" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: недопустимая подстановка" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: такое присвоение невозможно" -#: subst.c:9814 -msgid "future versions of the shell will force evaluation as an arithmetic substitution" -msgstr "в будущих версиях командный процессор оценка будет выполняться как математическая подстановка" +#: subst.c:10111 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"в будущих версиях командный процессор оценка будет выполняться как " +"математическая подстановка" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "неверная подстановка: нет закрывающей «`» в %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "нет совпадений: %s" @@ -2058,21 +2110,21 @@ msgstr "ожидается символ «)»" msgid "`)' expected, found %s" msgstr "ожидается символ «)», обнаружено %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: ожидается бинарный оператор" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: ожидается унарный оператор" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "отсутствует символ «]»" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "синтаксическая ошибка: неожиданный «%s»" @@ -2081,103 +2133,121 @@ msgstr "синтаксическая ошибка: неожиданный «%s» msgid "invalid signal number" msgstr "недопустимый номер сигнала" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" -msgstr "обработка ловушек: достигнут максимальный уровень вложенности обработки ловушек (%d)" +msgstr "" +"обработка ловушек: достигнут максимальный уровень вложенности обработки " +"ловушек (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: неверное значение в trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format -msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "run_pending_traps: обработчик сигнала — SIG_DFL; повторная отправка %d (%s) самому себе" +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: обработчик сигнала — SIG_DFL; повторная отправка %d (%s) " +"самому себе" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: неверный сигнал %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "ошибка импорта определения функции для «%s»" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "слишком высокий уровень командного процессора (%d); сбрасывается до 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: в текущей области отсутствует контекст функции" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: переменной не может быть присвоено значение" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: целое числе присваивается ссылке на имя" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: в текущей области отсутствует контекст функции" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s имеет пустую exportstr" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "недопустимый символ %d в exportstr для %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "отсутствует «=» в exportstr для %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" -msgstr "pop_var_context: заголовок shell_variables не является контекстом функции" +msgstr "" +"pop_var_context: заголовок shell_variables не является контекстом функции" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: отсутствует контекст global_variables" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" -msgstr "pop_scope: заголовок shell_variables не является областью временного окружения" +msgstr "" +"pop_scope: заголовок shell_variables не является областью временного " +"окружения" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: не удаётся открыть как ФАЙЛ" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: недопустимое значение для дескриптора файла трассировки" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: значение совместимости за пределами диапазона" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +#, fuzzy +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "© Free Software Foundation, Inc, 2020." #: version.c:47 version2.c:47 -msgid "License GPLv3+: GNU GPL version 3 or later \n" -msgstr "Лицензия GPLv3+: GNU GPL версии 3 или более поздней \n" +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Лицензия GPLv3+: GNU GPL версии 3 или более поздней \n" #: version.c:86 version2.c:86 #, c-format @@ -2186,7 +2256,9 @@ msgstr "GNU bash, версия %s (%s)\n" #: version.c:91 version2.c:91 msgid "This is free software; you are free to change and redistribute it." -msgstr "Это свободное программное обеспечение. Вы можете изменять и распространять его." +msgstr "" +"Это свободное программное обеспечение. Вы можете изменять и распространять " +"его." #: version.c:92 version2.c:92 msgid "There is NO WARRANTY, to the extent permitted by law." @@ -2221,8 +2293,13 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] имя [имя ...]" #: builtins.c:53 -msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" -msgstr "bind [-lpvsPSVX] [-m раскладка] [-f файл] [-q имя] [-u name] [-r послед_клавиш] [-x послед_клавиш:команда_shell] [послед_клавиш:фнкц_readline или команда_readline]" +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPSVX] [-m раскладка] [-f файл] [-q имя] [-u name] [-r " +"послед_клавиш] [-x послед_клавиш:команда_shell] [послед_клавиш:фнкц_readline " +"или команда_readline]" #: builtins.c:56 msgid "break [n]" @@ -2253,11 +2330,17 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] команда [аргумент ...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFgiIlnrtux] [-p] [имя[=значение] ...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +#, fuzzy +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFgiIlnrtux] [-p] имя[=значение] ..." #: builtins.c:82 @@ -2298,7 +2381,9 @@ msgstr "logout [n]" #: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "fc [-e редактор] [-lnr] [первая] [последняя] или fc -s [шаблон=замена] [команда]" +msgstr "" +"fc [-e редактор] [-lnr] [первая] [последняя] или fc -s [шаблон=замена] " +"[команда]" #: builtins.c:109 msgid "fg [job_spec]" @@ -2317,8 +2402,12 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [шаблон ...]" #: builtins.c:123 -msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" -msgstr "history [-c] [-d смещение] [n] или history -anrw [файл] или history -ps аргумент [аргумент...]" +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d смещение] [n] или history -anrw [файл] или history -ps " +"аргумент [аргумент...]" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2329,23 +2418,32 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [задание ... | pid ...]" #: builtins.c:134 -msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" -msgstr "kill [-s назв_сигнала | -n номер_сигнала | -назв_сигнала] ид_процесса | назв_задания] ... или kill -l [назв_сигнала]" +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s назв_сигнала | -n номер_сигнала | -назв_сигнала] ид_процесса | " +"назв_задания] ... или kill -l [назв_сигнала]" #: builtins.c:136 msgid "let arg [arg ...]" msgstr "let аргумент [аргумент ...]" #: builtins.c:138 -msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" -msgstr "read [-ers] [-a массив] [-d разделитель] [-i текст] [-n число_символов] [-N число_символов] [-p приглашение] [-t тайм-аут] [-u fd] [имя ...]" +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a массив] [-d разделитель] [-i текст] [-n число_символов] [-N " +"число_символов] [-p приглашение] [-t тайм-аут] [-u fd] [имя ...]" #: builtins.c:140 msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o параметр] [--] [аргумент ...]" #: builtins.c:144 @@ -2393,7 +2491,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] имя [имя ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ограничение]" #: builtins.c:174 @@ -2429,15 +2528,21 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case СЛОВО in [ШАБЛОН [| ШАБЛОН]...) КОМАНДЫ ;;]... esac" #: builtins.c:194 -msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" -msgstr "if КОМАНДЫ; then КОМАНДЫ; [ elif КОМАНДЫ; then КОМАНДЫ; ]... [ else КОМАНДЫ; ] fi" +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if КОМАНДЫ; then КОМАНДЫ; [ elif КОМАНДЫ; then КОМАНДЫ; ]... [ else " +"КОМАНДЫ; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while КОМАНДЫ; do КОМАНДЫ; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until КОМАНДЫ; do КОМАНДЫ; done" #: builtins.c:200 @@ -2466,7 +2571,8 @@ msgstr "[[ выражение ]]" #: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "переменные — имена и значения некоторых переменных командного процессора" +msgstr "" +"переменные — имена и значения некоторых переменных командного процессора" #: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" @@ -2489,24 +2595,43 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v переменная] формат [аргументы]" #: builtins.c:231 -msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]" -msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o параметр] [-A действие] [-G глоб_шаблон] [-W список_слов] [-F функция] [-C команда] [-X фильтр_шабл] [-P префикс] [-S суффикс] [имя ...]" +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o параметр] [-A действие] [-G " +"глоб_шаблон] [-W список_слов] [-F функция] [-C команда] [-X фильтр_шабл] [-P " +"префикс] [-S суффикс] [имя ...]" #: builtins.c:235 -msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" -msgstr "compgen [-abcdefgjksuv] [-o параметр] [-A действие] [-G глоб_шабл] [-W список_слов] [-F функция] [-C команда] [-X фильтр_шабл] [-P префикс] [-S суффикс] [слово]" +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o параметр] [-A действие] [-G глоб_шабл] [-W " +"список_слов] [-F функция] [-C команда] [-X фильтр_шабл] [-P префикс] [-S " +"суффикс] [слово]" #: builtins.c:239 msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o параметр] [-DEI] [имя ...]" #: builtins.c:242 -msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" -msgstr "mapfile [-d разделитель] [-n число] [-O начало] [-s число] [-t] [-u fd] [-C callback] [-c quantum] [массив]" +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d разделитель] [-n число] [-O начало] [-s число] [-t] [-u fd] [-C " +"callback] [-c quantum] [массив]" #: builtins.c:244 -msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" -msgstr "readarray [-d разделитель] [-n число] [-O начало] [-s число] [-t] [-u fd] [-C callback] [-c quantum] [массив]" +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d разделитель] [-n число] [-O начало] [-s число] [-t] [-u fd] [-" +"C callback] [-c quantum] [массив]" #: builtins.c:256 msgid "" @@ -2523,7 +2648,8 @@ msgid "" " -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has been\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" " defined." msgstr "" "Определение или отображение псевдонимов.\n" @@ -2561,40 +2687,6 @@ msgstr "" #: builtins.c:291 #, fuzzy -#| msgid "" -#| "Set Readline key bindings and variables.\n" -#| " \n" -#| " Bind a key sequence to a Readline function or a macro, or set a\n" -#| " Readline variable. The non-option argument syntax is equivalent to\n" -#| " that found in ~/.inputrc, but must be passed as a single argument:\n" -#| " e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" -#| " \n" -#| " Options:\n" -#| " -m keymap Use KEYMAP as the keymap for the duration of this\n" -#| " command. Acceptable keymap names are emacs,\n" -#| " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" -#| " vi-command, and vi-insert.\n" -#| " -l List names of functions.\n" -#| " -P List function names and bindings.\n" -#| " -p List functions and bindings in a form that can be\n" -#| " reused as input.\n" -#| " -S List key sequences that invoke macros and their values\n" -#| " -s List key sequences that invoke macros and their values\n" -#| " in a form that can be reused as input.\n" -#| " -V List variable names and values\n" -#| " -v List variable names and values in a form that can\n" -#| " be reused as input.\n" -#| " -q function-name Query about which keys invoke the named function.\n" -#| " -u function-name Unbind all keys which are bound to the named function.\n" -#| " -r keyseq Remove the binding for KEYSEQ.\n" -#| " -f filename Read key bindings from FILENAME.\n" -#| " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" -#| " \t\t\t\tKEYSEQ is entered.\n" -#| " -X\t\t List key sequences bound with -x and associated commands\n" -#| " in a form that can be reused as input.\n" -#| " \n" -#| " Exit Status:\n" -#| " bind returns 0 unless an unrecognized option is given or an error occurs." msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2606,25 +2698,30 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their values\n" -" -s List key sequences that invoke macros and their values\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" -" -X List key sequences bound with -x and associated commands\n" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2633,14 +2730,18 @@ msgstr "" "Определение привязок клавиш и переменных readline.\n" " \n" " Привязывает последовательность клавиш функции readline или макросу\n" -" или задаёт переменную readline. Синтаксис аргументов без параметров аналогичен\n" -" синтаксису файла ~/.inputrc, но всё должно передаваться в одном аргументе,\n" +" или задаёт переменную readline. Синтаксис аргументов без параметров " +"аналогичен\n" +" синтаксису файла ~/.inputrc, но всё должно передаваться в одном " +"аргументе,\n" " например bind '\"\\C-x\\C-r\": перечитать-init-файл'.\n" " \n" " Параметры:\n" -" -m раскладка использовать указанную раскладку во время выполнения\n" +" -m раскладка использовать указанную раскладку во время " +"выполнения\n" " данной команды. Допустимые раскладки: emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" " vi-command и vi-insert.\n" " -l вывести названия функций\n" " -P вывести названия функций и их привязки\n" @@ -2655,16 +2756,19 @@ msgstr "" " -v вывести имена переменных и их значения\n" " в формате для повторного использования\n" " -q имя_функции\t вывести клавиши, вызывающие указанную функцию\n" -" -u имя_функции отвязать все клавиши, привязанные к указанной функции\n" +" -u имя_функции отвязать все клавиши, привязанные к указанной " +"функции\n" " -r посл-клавиш удалить привязку для последовательности клавиш\n" " -f файл прочитать привязки из файла\n" " -x посл-клавиш:кмнд-shell выполнить команду bash, если введена\n" " \t\t\t\tпоследовательность клавиш\n" -" -X\t\t вывести последовательности клавиш, привязанные с помощью -x, и связанные команды\n" +" -X\t\t вывести последовательности клавиш, привязанные с помощью -" +"x, и связанные команды\n" " в формате для повторного использования\n" " \n" " Состояние выхода:\n" -" bind возвращает 0, если был указан допустимый параметр или не возникла ошибка." +" bind возвращает 0, если был указан допустимый параметр или не возникла " +"ошибка." #: builtins.c:330 msgid "" @@ -2678,7 +2782,8 @@ msgid "" msgstr "" "Прерывание цикла for, while или until.\n" " \n" -" Прерывает цикл for, while или until. Если указано N, прерывает N вложенных\n" +" Прерывает цикл for, while или until. Если указано N, прерывает N " +"вложенных\n" " циклов.\n" " \n" " Состояние выхода:\n" @@ -2704,22 +2809,13 @@ msgstr "" #: builtins.c:354 #, fuzzy -#| msgid "" -#| "Execute shell builtins.\n" -#| " \n" -#| " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" -#| " lookup. This is useful when you wish to reimplement a shell builtin\n" -#| " as a shell function, but need to execute the builtin within the function.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -#| " not a shell builtin.." msgid "" "Execute shell builtins.\n" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the function.\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" @@ -2728,11 +2824,14 @@ msgstr "" "Выполнение встроенных команд.\n" " \n" " Выполняет встроенную команду bash с аргументами\n" -" без поиска команды. Это полезно, если нужно переопределить встроенную команду\n" -" как функцию командного процессора, в этой функции нужно выполнить встроенную команду.\n" +" без поиска команды. Это полезно, если нужно переопределить встроенную " +"команду\n" +" как функцию командного процессора, в этой функции нужно выполнить " +"встроенную команду.\n" " \n" " Состояние выхода:\n" -" Возвращает состояние выхода встроенной команды или ложь, если указанная команда bash\n" +" Возвращает состояние выхода встроенной команды или ложь, если указанная " +"команда bash\n" " не является встроенной." #: builtins.c:369 @@ -2752,7 +2851,8 @@ msgid "" msgstr "" "Возвращает контекст вызова текущей подпрограммы.\n" " \n" -" Если выражение не указано, возвращает «$line $filename». Если выражение указано, возвращает\n" +" Если выражение не указано, возвращает «$line $filename». Если выражение " +"указано, возвращает\n" " «$line $subroutine $filename». Эти дополнительные данные можно\n" " использовать для трассировки стека.\n" " \n" @@ -2760,57 +2860,31 @@ msgstr "" " для возврата к текущему кадру. Первый кадр имеет номер 0.\n" " \n" " Состояние выхода:\n" -" Возвращает 0, если командный процессор не выполняет функцию, или выражение\n" +" Возвращает 0, если командный процессор не выполняет функцию, или " +"выражение\n" " является допустимым." #: builtins.c:387 #, fuzzy -#| msgid "" -#| "Change the shell working directory.\n" -#| " \n" -#| " Change the current directory to DIR. The default DIR is the value of the\n" -#| " HOME shell variable.\n" -#| " \n" -#| " The variable CDPATH defines the search path for the directory containing\n" -#| " DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" -#| " A null directory name is the same as the current directory. If DIR begins\n" -#| " with a slash (/), then CDPATH is not used.\n" -#| " \n" -#| " If the directory is not found, and the shell option `cdable_vars' is set,\n" -#| " the word is assumed to be a variable name. If that variable has a value,\n" -#| " its value is used for DIR.\n" -#| " \n" -#| " Options:\n" -#| " -L\tforce symbolic links to be followed: resolve symbolic links in\n" -#| " \tDIR after processing instances of `..'\n" -#| " -P\tuse the physical directory structure without following symbolic\n" -#| " \tlinks: resolve symbolic links in DIR before processing instances\n" -#| " \tof `..'\n" -#| " -e\tif the -P option is supplied, and the current working directory\n" -#| " \tcannot be determined successfully, exit with a non-zero status\n" -#| " -@ on systems that support it, present a file with extended attributes\n" -#| " as a directory containing the file attributes\n" -#| " \n" -#| " The default is to follow symbolic links, as if `-L' were specified.\n" -#| " `..' is processed by removing the immediately previous pathname component\n" -#| " back to a slash or the beginning of DIR.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns 0 if the directory is changed, and if $PWD is set successfully when\n" -#| " -P is used; non-zero otherwise." msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of the\n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" -" A null directory name is the same as the current directory. If DIR begins\n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is set,\n" -" the word is assumed to be a variable name. If that variable has a value,\n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" " its value is used for DIR.\n" " \n" " Options:\n" @@ -2826,25 +2900,31 @@ msgid "" " \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" -" `..' is processed by removing the immediately previous pathname component\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" " back to a slash or the beginning of DIR.\n" " \n" " Exit Status:\n" -" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" " -P is used; non-zero otherwise." msgstr "" "Смена рабочего каталога командного процессора.\n" " \n" -" Изменяет текущий каталог на указанный каталог. Каталог по умолчанию хранится в\n" +" Изменяет текущий каталог на указанный каталог. Каталог по умолчанию " +"хранится в\n" " переменной $HOME командного процессора.\n" " \n" " Переменная $CDPATH определяет путь поиска каталога, содержащего\n" -" указанный каталог. Альтернативные каталоги в $CDPATH разделяются двоеточием (:).\n" -" Пустое название каталога соответствует текущему каталогу. Если каталог начинается\n" +" указанный каталог. Альтернативные каталоги в $CDPATH разделяются " +"двоеточием (:).\n" +" Пустое название каталога соответствует текущему каталогу. Если каталог " +"начинается\n" " с косой черты (/), переменная $CDPATH не используется.\n" " \n" " Если каталог не найден и задан параметр «cdable_vars»,\n" -" слово считается названием переменной. Если эта переменная содержит значение,\n" +" слово считается названием переменной. Если эта переменная содержит " +"значение,\n" " оно используется для каталога.\n" " \n" " Параметры:\n" @@ -2855,32 +2935,24 @@ msgstr "" " \tобработки «..»\n" " -e\tесли указан параметр -P, и не удаётся определить текущий\n" " \tрабочий каталог, команда завершается с ненулевым состоянием\n" -" -@ на системах, которые это поддерживают, представляет файл с расширенными\n" +" -@ на системах, которые это поддерживают, представляет файл с " +"расширенными\n" " атрибутами как каталог, содержащий атрибуты файла\n" " \n" -" По умолчанию выполняется переход по символьным ссылкам (как при указании параметра «-L»).\n" -" «..» обрабатывается путём удаления первого компонента пути до косой черты\n" +" По умолчанию выполняется переход по символьным ссылкам (как при указании " +"параметра «-L»).\n" +" «..» обрабатывается путём удаления первого компонента пути до косой " +"черты\n" " или из начала каталога.\n" " \n" " Состояние выхода:\n" -" Возвращает 0, если каталог был изменён, и если $PWD был успешно установлен\n" -" при использовании параметра -P. В противном случае возвращается ненулевое состояние." +" Возвращает 0, если каталог был изменён, и если $PWD был успешно " +"установлен\n" +" при использовании параметра -P. В противном случае возвращается " +"ненулевое состояние." #: builtins.c:425 #, fuzzy -#| msgid "" -#| "Print the name of the current working directory.\n" -#| " \n" -#| " Options:\n" -#| " -L\tprint the value of $PWD if it names the current working\n" -#| " \tdirectory\n" -#| " -P\tprint the physical directory, without any symbolic links\n" -#| " \n" -#| " By default, `pwd' behaves as if `-L' were specified.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns 0 unless an invalid option is given or the current directory\n" -#| " cannot be read." msgid "" "Print the name of the current working directory.\n" " \n" @@ -2950,26 +3022,12 @@ msgstr "" #: builtins.c:471 #, fuzzy -#| msgid "" -#| "Execute a simple command or display information about commands.\n" -#| " \n" -#| " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -#| " information about the specified COMMANDs. Can be used to invoke commands\n" -#| " on disk when a function with the same name exists.\n" -#| " \n" -#| " Options:\n" -#| " -p\tuse a default value for PATH that is guaranteed to find all of\n" -#| " \tthe standard utilities\n" -#| " -v\tprint a description of COMMAND similar to the `type' builtin\n" -#| " -V\tprint a more verbose description of each COMMAND\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns exit status of COMMAND, or failure if COMMAND is not found." msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke commands\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -2983,12 +3041,15 @@ msgid "" msgstr "" "Выполнение простой команды или вывод информации о командах.\n" " \n" -" Выполняет команду с аргументами без поиска функции командного процессора\n" -" или выводит информацию об указанных командах. Можно использовать для вызова команд\n" +" Выполняет команду с аргументами без поиска функции командного " +"процессора\n" +" или выводит информацию об указанных командах. Можно использовать для " +"вызова команд\n" " с диска, когда функция с таким именем уже существует.\n" " \n" " Параметры:\n" -" -p\tиспользовать значение по умолчанию для $PATH, чтобы гарантированно\n" +" -p\tиспользовать значение по умолчанию для $PATH, чтобы " +"гарантированно\n" " \tнайти все стандартные команды\n" " -v\tвывести описание команды аналогично встроенной команде «type»\n" " -V\tвывести более подробное описание каждой команды\n" @@ -2998,42 +3059,6 @@ msgstr "" #: builtins.c:490 #, fuzzy -#| msgid "" -#| "Set variable values and attributes.\n" -#| " \n" -#| " Declare variables and give them attributes. If no NAMEs are given,\n" -#| " display the attributes and values of all variables.\n" -#| " \n" -#| " Options:\n" -#| " -f\trestrict action or display to function names and definitions\n" -#| " -F\trestrict display to function names only (plus line number and\n" -#| " \tsource file when debugging)\n" -#| " -g\tcreate global variables when used in a shell function; otherwise\n" -#| " \tignored\n" -#| " -p\tdisplay the attributes and value of each NAME\n" -#| " \n" -#| " Options which set attributes:\n" -#| " -a\tto make NAMEs indexed arrays (if supported)\n" -#| " -A\tto make NAMEs associative arrays (if supported)\n" -#| " -i\tto make NAMEs have the `integer' attribute\n" -#| " -l\tto convert NAMEs to lower case on assignment\n" -#| " -n\tmake NAME a reference to the variable named by its value\n" -#| " -r\tto make NAMEs readonly\n" -#| " -t\tto make NAMEs have the `trace' attribute\n" -#| " -u\tto convert NAMEs to upper case on assignment\n" -#| " -x\tto make NAMEs export\n" -#| " \n" -#| " Using `+' instead of `-' turns off the given attribute.\n" -#| " \n" -#| " Variables with the integer attribute have arithmetic evaluation (see\n" -#| " the `let' command) performed when the variable is assigned a value.\n" -#| " \n" -#| " When used in a function, `declare' makes NAMEs local, as with the `local'\n" -#| " command. The `-g' option suppresses this behavior.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is supplied or a variable\n" -#| " assignment error occurs." msgid "" "Set variable values and attributes.\n" " \n" @@ -3066,7 +3091,8 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the `local'\n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" @@ -3075,14 +3101,16 @@ msgid "" msgstr "" "Указание значений переменных и атрибутов.\n" " \n" -" Объявление переменных и назначение им атрибутов. Если имена не указаны,\n" +" Объявление переменных и назначение им атрибутов. Если имена не " +"указаны,\n" " выводит атрибуты и значения всех переменных.\n" " \n" " Параметры:\n" " -f\tограничить действие или вывести имена функций и их определения\n" " -F\tвывести только имена функций (а также номер строки\n" " \tв исходном файле при отладке)\n" -" -g\tсоздать глобальные переменные при использовании в функции командного процессора; в противном случае\n" +" -g\tсоздать глобальные переменные при использовании в функции " +"командного процессора; в противном случае\n" " \tигнорируется\n" " -p\tвывести атрибуты и значения каждого имени\n" " \n" @@ -3091,7 +3119,8 @@ msgstr "" " -A\tсделать имена ассоциативными массивами (если поддерживается)\n" " -i\tназначить именам атрибут «integer»\n" " -l\tперевести имена в нижний регистр при назначении\n" -" -n\tсделать имя ссылкой на переменную с именем, соответствующим её значению\n" +" -n\tсделать имя ссылкой на переменную с именем, соответствующим её " +"значению\n" " -r\tотключить запись в имена\n" " -t\tназначить именам атрибут «trace»\n" " -l\tперевести имена в верхний регистр при назначении\n" @@ -3100,9 +3129,11 @@ msgstr "" " Знак «+» вместо «-» отключает указанный атрибут.\n" " \n" " Переменные с атрибутом «integer» содержат математическое выражение (см.\n" -" команду «let»), которое рассчитывается при назначении значения переменной.\n" +" команду «let»), которое рассчитывается при назначении значения " +"переменной.\n" " \n" -" При использовании в функции «declare» делает имена локальными как при использовании\n" +" При использовании в функции «declare» делает имена локальными как при " +"использовании\n" " данной команды. Параметр «-g» отключает это поведение.\n" " \n" " Состояние выхода:\n" @@ -3111,10 +3142,6 @@ msgstr "" #: builtins.c:532 #, fuzzy -#| msgid "" -#| "Set variable values and attributes.\n" -#| " \n" -#| " Obsolete. See `help declare'." msgid "" "Set variable values and attributes.\n" " \n" @@ -3140,52 +3167,26 @@ msgid "" msgstr "" "Определение локальных переменных.\n" " \n" -" Создаёт локальную переменную с указанным именем и присваивает ей указанное значение. Параметром может быть\n" +" Создаёт локальную переменную с указанным именем и присваивает ей " +"указанное значение. Параметром может быть\n" " любой параметр, принимаемый командой «declare».\n" " \n" -" Локальные переменные можно использовать только внутри функции. Они видны\n" +" Локальные переменные можно использовать только внутри функции. Они " +"видны\n" " только той функции, в которой они определены, и её дочерним функциям.\n" " \n" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр, не возникла\n" -" ошибка присвоения переменной или командный процессор не выполняет функцию." +" ошибка присвоения переменной или командный процессор не выполняет " +"функцию." #: builtins.c:557 #, fuzzy -#| msgid "" -#| "Write arguments to the standard output.\n" -#| " \n" -#| " Display the ARGs, separated by a single space character and followed by a\n" -#| " newline, on the standard output.\n" -#| " \n" -#| " Options:\n" -#| " -n\tdo not append a newline\n" -#| " -e\tenable interpretation of the following backslash escapes\n" -#| " -E\texplicitly suppress interpretation of backslash escapes\n" -#| " \n" -#| " `echo' interprets the following backslash-escaped characters:\n" -#| " \\a\talert (bell)\n" -#| " \\b\tbackspace\n" -#| " \\c\tsuppress further output\n" -#| " \\e\tescape character\n" -#| " \\E\tescape character\n" -#| " \\f\tform feed\n" -#| " \\n\tnew line\n" -#| " \\r\tcarriage return\n" -#| " \\t\thorizontal tab\n" -#| " \\v\tvertical tab\n" -#| " \\\\\tbackslash\n" -#| " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -#| " \t0 to 3 octal digits\n" -#| " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -#| " \tcan be one or two hex digits\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless a write error occurs." msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by a\n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -3209,9 +3210,11 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" -" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" " \t\tHHHH can be one to four hex digits.\n" -" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" " \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" @@ -3219,15 +3222,19 @@ msgid "" msgstr "" "Вывод аргументов на стандартный вывод.\n" " \n" -" Выводит аргументы, разделённые пробелом, добавляя в конце символ новой строки,\n" +" Выводит аргументы, разделённые пробелом, добавляя в конце символ новой " +"строки,\n" " на стандартный вывод.\n" " \n" " Параметры:\n" " -n\tне добавлять символ новой строки\n" -" -e\tвключить интерпретацию символов, экранированных обратной косой чертой\n" -" -E\tявно отключить интерпретацию символов, экранированных обратной косой чертой\n" +" -e\tвключить интерпретацию символов, экранированных обратной косой " +"чертой\n" +" -E\tявно отключить интерпретацию символов, экранированных обратной " +"косой чертой\n" " \n" -" echo интерпретирует следующие символы, экранированные обратной косой чертой:\n" +" echo интерпретирует следующие символы, экранированные обратной косой " +"чертой:\n" " \\a\tоповещение (звуковой сигнал)\n" " \\b\tbackspace\n" " \\c\tотключение дальнейшего вывода\n" @@ -3239,9 +3246,11 @@ msgstr "" " \\t\tгоризонтальная табуляция\n" " \\v\tвертикальная табуляция\n" " \\\\\tобратная косая черта\n" -" \\0nnn\tсимвол с ASCII-кодом NNN (восьмеричным) NNN может быть длиной\n" +" \\0nnn\tсимвол с ASCII-кодом NNN (восьмеричным) NNN может быть " +"длиной\n" " \tот 0 до 3 восьмеричных цифр\n" -" \\xHH\tвосьмиразрядный символ, значение которого — HH (шестнадцатеричное) HH\n" +" \\xHH\tвосьмиразрядный символ, значение которого — HH " +"(шестнадцатеричное) HH\n" " \tможет быть одной или двумя шестнадцатеричными цифрами\n" " \n" " Состояние выхода:\n" @@ -3261,7 +3270,8 @@ msgid "" msgstr "" "Вывод аргументов на стандартный вывод.\n" " \n" -" Выводит аргументы на стандартный вывод, добавляя в конце символ новой строки.\n" +" Выводит аргументы на стандартный вывод, добавляя в конце символ новой " +"строки.\n" " \n" " Параметры:\n" " -n\tне добавлять символ новой строки\n" @@ -3297,13 +3307,16 @@ msgid "" msgstr "" "Включение и отключение встроенных команд командного процессора.\n" " \n" -" Включает и отключает команды, встроенные в командный процессор. Отключение позволит\n" -" выполнить команду с диска, название которой совпадает с названием встроенной команды,\n" +" Включает и отключает команды, встроенные в командный процессор. " +"Отключение позволит\n" +" выполнить команду с диска, название которой совпадает с названием " +"встроенной команды,\n" " без указания полного пути к ней.\n" " \n" " Параметры:\n" " -a\tпоказать список встроенных команд и их состояние\n" -" -n\tотключить все указанные имена или вывести список отключённых команд\n" +" -n\tотключить все указанные имена или вывести список отключённых " +"команд\n" " -p\tпоказать список встроенных команд\n" " -s\tпоказать только названия встроенных команд «special» Posix\n" " \n" @@ -3317,13 +3330,15 @@ msgstr "" " а не встроенную в командный процессор, введите «enable -n test».\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если указанное имя не является встроенной командой или не произошла ошибка." +" Возвращает успех, если указанное имя не является встроенной командой или " +"не произошла ошибка." #: builtins.c:640 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the shell,\n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" @@ -3339,44 +3354,6 @@ msgstr "" #: builtins.c:652 #, fuzzy -#| msgid "" -#| "Parse option arguments.\n" -#| " \n" -#| " Getopts is used by shell procedures to parse positional parameters\n" -#| " as options.\n" -#| " \n" -#| " OPTSTRING contains the option letters to be recognized; if a letter\n" -#| " is followed by a colon, the option is expected to have an argument,\n" -#| " which should be separated from it by white space.\n" -#| " \n" -#| " Each time it is invoked, getopts will place the next option in the\n" -#| " shell variable $name, initializing name if it does not exist, and\n" -#| " the index of the next argument to be processed into the shell\n" -#| " variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" -#| " a shell script is invoked. When an option requires an argument,\n" -#| " getopts places that argument into the shell variable OPTARG.\n" -#| " \n" -#| " getopts reports errors in one of two ways. If the first character\n" -#| " of OPTSTRING is a colon, getopts uses silent error reporting. In\n" -#| " this mode, no error messages are printed. If an invalid option is\n" -#| " seen, getopts places the option character found into OPTARG. If a\n" -#| " required argument is not found, getopts places a ':' into NAME and\n" -#| " sets OPTARG to the option character found. If getopts is not in\n" -#| " silent mode, and an invalid option is seen, getopts places '?' into\n" -#| " NAME and unsets OPTARG. If a required argument is not found, a '?'\n" -#| " is placed in NAME, OPTARG is unset, and a diagnostic message is\n" -#| " printed.\n" -#| " \n" -#| " If the shell variable OPTERR has the value 0, getopts disables the\n" -#| " printing of error messages, even if the first character of\n" -#| " OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" -#| " \n" -#| " Getopts normally parses the positional parameters ($0 - $9), but if\n" -#| " more arguments are given, they are parsed instead.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success if an option is found; fails if the end of options is\n" -#| " encountered or an error occurs." msgid "" "Parse option arguments.\n" " \n" @@ -3421,11 +3398,13 @@ msgstr "" " getopts используется процедурами командного процессора для анализа\n" " позиционных параметров.\n" " \n" -" «строка_параметров» содержит буквы распознаваемых параметров. Если после\n" +" «строка_параметров» содержит буквы распознаваемых параметров. Если " +"после\n" " буквы идёт двоеточие, считается, что у параметра есть аргумент,\n" " который должен быть отделён пробелом.\n" " \n" -" При каждом своём вызове getopts поместит следующий параметр в переменную\n" +" При каждом своём вызове getopts поместит следующий параметр в " +"переменную\n" " $имя, проинициализировав это имя, если оно не существует,\n" " и проиндексирует следующий обрабатываемый аргумент в переменной\n" " $OPTIND. Переменная $OPTIND инициализируется при каждом вызове\n" @@ -3433,51 +3412,40 @@ msgstr "" " getopts помещает этот аргумент в переменную $OPTARG.\n" " \n" " getopts сообщает об ошибках двумя способами. Если первый символ\n" -" в «строке_параметров» является двоеточием, getopts включает режим молчания. В этом\n" +" в «строке_параметров» является двоеточием, getopts включает режим " +"молчания. В этом\n" " режиме сообщения об ошибках не выводятся. Если указан неверный\n" " параметр, getopts помещает символ параметра в переменную $OPTARG. Если\n" " обязательный аргумент не найден, getopts помещает «:» в «имя»\n" -" и задаёт для $OPTARG символ найденного параметра. Если getopts не в режиме\n" +" и задаёт для $OPTARG символ найденного параметра. Если getopts не в " +"режиме\n" " молчания, и был указан неверный параметр, getopts помещает «?»\n" -" в НАЗВАНИЕ и удаляет переменную OPTARG. Если обязательный аргумент не найден, в НАЗВАНИЕ\n" +" в НАЗВАНИЕ и удаляет переменную OPTARG. Если обязательный аргумент не " +"найден, в НАЗВАНИЕ\n" " помещается «?», переменная OPTARG удаляется и выводится диагностическое\n" " сообщение.\n" " \n" " Если переменная OPTERR имеет значение 0, getopts отключает\n" " вывод сообщений об ошибках, даже если первый символ переменной\n" -" OPTSTRING не является двоеточием. По умолчанию переменная OPTERR имеет значение 1.\n" +" OPTSTRING не является двоеточием. По умолчанию переменная OPTERR имеет " +"значение 1.\n" " \n" " Getopts обычно анализирует позиционные параметры ($0–$9), но если\n" " задано больше аргументов, анализируются последние.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если найден параметр. Возвращает ошибку, если достигнут\n" +" Возвращает успех, если найден параметр. Возвращает ошибку, если " +"достигнут\n" " конец параметров или возникла ошибка." #: builtins.c:694 #, fuzzy -#| msgid "" -#| "Replace the shell with the given command.\n" -#| " \n" -#| " Execute COMMAND, replacing this shell with the specified program.\n" -#| " ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" -#| " any redirections take effect in the current shell.\n" -#| " \n" -#| " Options:\n" -#| " -a name\tpass NAME as the zeroth argument to COMMAND\n" -#| " -c\t\texecute COMMAND with an empty environment\n" -#| " -l\t\tplace a dash in the zeroth argument to COMMAND\n" -#| " \n" -#| " If the command cannot be executed, a non-interactive shell exits, unless\n" -#| " the shell option `execfail' is set.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless COMMAND is not found or a redirection error occurs." msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3485,16 +3453,20 @@ msgid "" " -c\texecute COMMAND with an empty environment\n" " -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, unless\n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error occurs." +" Returns success unless COMMAND is not found or a redirection error " +"occurs." msgstr "" "Замена командного процессора указанной командой.\n" " \n" -" Выполняет команду, заменяя текущий командный процессор указанной программой.\n" -" Указанные аргументы становятся аргументами для команды. Если команда не указана,\n" +" Выполняет команду, заменяя текущий командный процессор указанной " +"программой.\n" +" Указанные аргументы становятся аргументами для команды. Если команда не " +"указана,\n" " все перенаправления будет выполняться в текущем командном процессоре.\n" " \n" " Параметры:\n" @@ -3506,7 +3478,8 @@ msgstr "" " закроется (если только на задан «execfail»).\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если команда не была найдена или не возникла ошибка перенаправления." +" Возвращает успех, если команда не была найдена или не возникла ошибка " +"перенаправления." #: builtins.c:715 msgid "" @@ -3524,7 +3497,8 @@ msgstr "" msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not executed\n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" " in a login shell." msgstr "" "Выход из командного процессора login.\n" @@ -3536,13 +3510,15 @@ msgstr "" msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history list.\n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -3556,12 +3532,15 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error occurs." +" Returns success or status of executed command; non-zero if an error " +"occurs." msgstr "" "Отображение или выполнение команд из журнала.\n" " \n" -" fc выводит список команд из журнала или позволяет изменить и повторно выполнить их.\n" -" Аргументы «первая» и «последняя» могут быть числами, определяющими диапазон.\n" +" fc выводит список команд из журнала или позволяет изменить и повторно " +"выполнить их.\n" +" Аргументы «первая» и «последняя» могут быть числами, определяющими " +"диапазон.\n" " Аргумент «первая» также может быть строкой, которая означает\n" " последнюю команду, начинающуюся с этой строки.\n" " \n" @@ -3576,11 +3555,13 @@ msgstr "" " выполняется повторно после замены старая=новая.\n" " \n" " Полезный псевдоним для команды — r='fc -s'. Так если ввести «r cc»,\n" -" будет выполнена последняя команда, начинающаяся с «cc», а если ввести «r»,\n" +" будет выполнена последняя команда, начинающаяся с «cc», а если ввести " +"«r»,\n" " будет выполнена последняя команда.\n" " \n" " Состояние выхода:\n" -" Возвращает успех или состояние выполненной команды. В случае ошибки возвращает ненулевое состояние." +" Возвращает успех или состояние выполненной команды. В случае ошибки " +"возвращает ненулевое состояние." #: builtins.c:764 msgid "" @@ -3600,14 +3581,17 @@ msgstr "" " текущее задание.\n" " \n" " Состояние выхода:\n" -" Возвращает состояние команды, переведённой в интерактивный режим, или ошибку, если возникла ошибка." +" Возвращает состояние команды, переведённой в интерактивный режим, или " +"ошибку, если возникла ошибка." #: builtins.c:779 msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" @@ -3620,35 +3604,17 @@ msgstr "" " текущего задания.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если не включено управление заданиями или не произошла ошибка." +" Возвращает успех, если не включено управление заданиями или не произошла " +"ошибка." #: builtins.c:793 #, fuzzy -#| msgid "" -#| "Remember or display program locations.\n" -#| " \n" -#| " Determine and remember the full pathname of each command NAME. If\n" -#| " no arguments are given, information about remembered commands is displayed.\n" -#| " \n" -#| " Options:\n" -#| " -d\t\tforget the remembered location of each NAME\n" -#| " -l\t\tdisplay in a format that may be reused as input\n" -#| " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -#| " -r\t\tforget all remembered locations\n" -#| " -t\t\tprint the remembered location of each NAME, preceding\n" -#| " \t\teach location with the corresponding NAME if multiple\n" -#| " \t\tNAMEs are given\n" -#| " Arguments:\n" -#| " NAME\t\tEach NAME is searched for in $PATH and added to the list\n" -#| " \t\tof remembered commands.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless NAME is not found or an invalid option is given." msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is displayed.\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3683,28 +3649,11 @@ msgstr "" " \t\tзапомненных команд.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если команда была найдена или был указан допустимый параметр." +" Возвращает успех, если команда была найдена или был указан допустимый " +"параметр." #: builtins.c:818 #, fuzzy -#| msgid "" -#| "Display information about builtin commands.\n" -#| " \n" -#| " Displays brief summaries of builtin commands. If PATTERN is\n" -#| " specified, gives detailed help on all commands matching PATTERN,\n" -#| " otherwise the list of help topics is printed.\n" -#| " \n" -#| " Options:\n" -#| " -d\toutput short description for each topic\n" -#| " -m\tdisplay usage in pseudo-manpage format\n" -#| " -s\toutput only a short usage synopsis for each topic matching\n" -#| " \tPATTERN\n" -#| " \n" -#| " Arguments:\n" -#| " PATTERN\tPattern specifiying a help topic\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless PATTERN is not found or an invalid option is given." msgid "" "Display information about builtin commands.\n" " \n" @@ -3722,12 +3671,14 @@ msgid "" " PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is given." +" Returns success unless PATTERN is not found or an invalid option is " +"given." msgstr "" "Вывод информации о встроенных командах.\n" " \n" " Показывает краткую справку о встроенных командах. Если указан\n" -" шаблон, выводит подробную справку по всем командам, удовлетворяющим шаблону.\n" +" шаблон, выводит подробную справку по всем командам, удовлетворяющим " +"шаблону.\n" " В противном случае выводится список разделов справки.\n" " \n" " Параметры:\n" @@ -3740,40 +3691,11 @@ msgstr "" " ШАБЛОН\tшаблон, определяющий раздел справки\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был найден шаблон или был указан допустимый параметр." +" Возвращает успех, если был найден шаблон или был указан допустимый " +"параметр." #: builtins.c:842 #, fuzzy -#| msgid "" -#| "Display or manipulate the history list.\n" -#| " \n" -#| " Display the history list with line numbers, prefixing each modified\n" -#| " entry with a `*'. An argument of N lists only the last N entries.\n" -#| " \n" -#| " Options:\n" -#| " -c\tclear the history list by deleting all of the entries\n" -#| " -d offset\tdelete the history entry at offset OFFSET.\n" -#| " \n" -#| " -a\tappend history lines from this session to the history file\n" -#| " -n\tread all history lines not already read from the history file\n" -#| " -r\tread the history file and append the contents to the history\n" -#| " \tlist\n" -#| " -w\twrite the current history to the history file\n" -#| " \tand append them to the history list\n" -#| " \n" -#| " -p\tperform history expansion on each ARG and display the result\n" -#| " \twithout storing it in the history list\n" -#| " -s\tappend the ARGs to the history list as a single entry\n" -#| " \n" -#| " If FILENAME is given, it is used as the history file. Otherwise,\n" -#| " if $HISTFILE has a value, that is used, else ~/.bash_history.\n" -#| " \n" -#| " If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" -#| " as a format string for strftime(3) to print the time stamp associated\n" -#| " with each displayed history entry. No time stamps are printed otherwise.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is given or an error occurs." msgid "" "Display or manipulate the history list.\n" " \n" @@ -3801,7 +3723,8 @@ msgid "" " \n" " If the HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed otherwise.\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." @@ -3809,14 +3732,16 @@ msgstr "" "Отображение или изменение журнала команд.\n" " \n" " Выводит журнал команд с номерами строк и звёздочками (*) перед всеми\n" -" изменёнными записями. С аргументом N показываются только последние N записей.\n" +" изменёнными записями. С аргументом N показываются только последние N " +"записей.\n" " \n" " Параметры:\n" " -c\tочистить журнал, удалив из него все записи\n" " -d смещение\tудалить запись журнала по указанному смещению\n" " \n" " -a\tдобавить журнал текущего сеанса в файл журнала\n" -" -n\tпрочитать все записи, которые ещё не были прочитаны из файла журнала\n" +" -n\tпрочитать все записи, которые ещё не были прочитаны из файла " +"журнала\n" " -r\tпрочитать файл журнала и добавить его содержимое\n" " \tв журнал\n" " -w\tзаписать текущий журнал в файл журнала\n" @@ -3827,38 +3752,21 @@ msgstr "" " -s\tдобавить аргументы в журнал как одну запись\n" " \n" " Если указан файл, он используется как файл журнала. В противном случае\n" -" если $HISTFILE содержит значение, используется этот файл, иначе — файл ~/.bash_history.\n" +" если $HISTFILE содержит значение, используется этот файл, иначе — файл " +"~/.bash_history.\n" " \n" -" Если переменная $HISTTIMEFORMAT задана и не является пустой, её значение\n" +" Если переменная $HISTTIMEFORMAT задана и не является пустой, её " +"значение\n" " используется как строка форматирования для strftime(3) для вывода метки\n" -" времени для каждой показанной записи журнала. В противном случае метки времени не будут показаны.\n" +" времени для каждой показанной записи журнала. В противном случае метки " +"времени не будут показаны.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла ошибка." +" Возвращает успех, если был указан допустимый параметр или не возникла " +"ошибка." #: builtins.c:879 #, fuzzy -#| msgid "" -#| "Display status of jobs.\n" -#| " \n" -#| " Lists the active jobs. JOBSPEC restricts output to that job.\n" -#| " Without options, the status of all active jobs is displayed.\n" -#| " \n" -#| " Options:\n" -#| " -l\tlists process IDs in addition to the normal information\n" -#| " -n\tlist only processes that have changed status since the last\n" -#| " \tnotification\n" -#| " -p\tlists process IDs only\n" -#| " -r\trestrict output to running jobs\n" -#| " -s\trestrict output to stopped jobs\n" -#| " \n" -#| " If -x is supplied, COMMAND is run after all job specifications that\n" -#| " appear in ARGS have been replaced with the process ID of that job's\n" -#| " process group leader.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is given or an error occurs.\n" -#| " If -x is used, returns the exit status of COMMAND." msgid "" "Display status of jobs.\n" " \n" @@ -3883,11 +3791,14 @@ msgid "" msgstr "" "Отображение состояния заданий.\n" " \n" -" Выводит список активных заданий. Если указан номер задания, выводится только это задание.\n" -" Если не указать параметры, будет показано состояние всех активных заданий.\n" +" Выводит список активных заданий. Если указан номер задания, выводится " +"только это задание.\n" +" Если не указать параметры, будет показано состояние всех активных " +"заданий.\n" " \n" " Параметры:\n" -" -l\tпоказать идентификаторы процессов в дополнение к обычной информации\n" +" -l\tпоказать идентификаторы процессов в дополнение к обычной " +"информации\n" " -n\tпоказать только те процессы, у которых изменилось состояние\n" " \tс момента после последнего уведомления\n" " -p\tпоказать только идентификаторы процессов\n" @@ -3899,25 +3810,12 @@ msgstr "" " лидера группы процессов задания.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла ошибка.\n" +" Возвращает успех, если был указан допустимый параметр или не возникла " +"ошибка.\n" " Если указан параметр -x, возвращает состояние выхода команды." #: builtins.c:906 #, fuzzy -#| msgid "" -#| "Remove jobs from current shell.\n" -#| " \n" -#| " Removes each JOBSPEC argument from the table of active jobs. Without\n" -#| " any JOBSPECs, the shell uses its notion of the current job.\n" -#| " \n" -#| " Options:\n" -#| " -a\tremove all jobs if JOBSPEC is not supplied\n" -#| " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -#| " \tshell receives a SIGHUP\n" -#| " -r\tremove only running jobs\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option or JOBSPEC is given." msgid "" "Remove jobs from current shell.\n" " \n" @@ -3949,25 +3847,6 @@ msgstr "" #: builtins.c:925 #, fuzzy -#| msgid "" -#| "Send a signal to a job.\n" -#| " \n" -#| " Send the processes identified by PID or JOBSPEC the signal named by\n" -#| " SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" -#| " SIGTERM is assumed.\n" -#| " \n" -#| " Options:\n" -#| " -s sig\tSIG is a signal name\n" -#| " -n sig\tSIG is a signal number\n" -#| " -l\tlist the signal names; if arguments follow `-l' they are\n" -#| " \tassumed to be signal numbers for which names should be listed\n" -#| " \n" -#| " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" -#| " instead of process IDs, and allows processes to be killed if the limit\n" -#| " on processes that you can create is reached.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is given or an error occurs." msgid "" "Send a signal to a job.\n" " \n" @@ -3998,15 +3877,19 @@ msgstr "" " Параметры:\n" " -s сигнал\tназвание сигнала\n" " -n сигнал\tномер сигнала\n" -" -l\t\tпоказывает названия сигналов; если после аргументов указано «-l»,\n" -" \tони считаются номерами сигналов, для которых необходимо показать названия\n" +" -l\t\tпоказывает названия сигналов; если после аргументов указано «-" +"l»,\n" +" \tони считаются номерами сигналов, для которых необходимо показать " +"названия\n" " \n" -" kill — это встроенная команда, предназначенная для двух задач: использовать\n" +" kill — это встроенная команда, предназначенная для двух задач: " +"использовать\n" " номера заданий вместо номеров процессов и убивать процессы\n" " при достижении предельного числа процессов.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла ошибка." +" Возвращает успех, если был указан допустимый параметр или не возникла " +"ошибка." #: builtins.c:949 msgid "" @@ -4015,7 +3898,8 @@ msgid "" " Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" " fixed-width integers with no check for overflow, though division by 0\n" " is trapped and flagged as an error. The following list of operators is\n" -" grouped into levels of equal-precedence operators. The levels are listed\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" " in order of decreasing precedence.\n" " \n" " \tid++, id--\tvariable post-increment, post-decrement\n" @@ -4053,9 +3937,11 @@ msgid "" msgstr "" "Расчёт математических выражений.\n" " \n" -" Выполняет расчёт всех аргументов в математическом выражении. Расчёт выполняется\n" +" Выполняет расчёт всех аргументов в математическом выражении. Расчёт " +"выполняется\n" " для целых чисел фиксированной ширины с без проверки на переполнение.\n" -" Однако деление на 0 перехватывается и выдаётся ошибка. Указанные ниже операторы объединены\n" +" Однако деление на 0 перехватывается и выдаётся ошибка. Указанные ниже " +"операторы объединены\n" " в группы с одинаковым приоритетом. Группы перечислены\n" " в порядке уменьшения приоритета.\n" " \n" @@ -4080,8 +3966,10 @@ msgstr "" " \t+=, -=, <<=, >>=,\n" " \t&=, ^=, |=\tприсвоение\n" " \n" -" в качестве операндов можно использовать переменные командного процессора. Название переменной\n" -" заменяется её значением (приводится к целому числу фиксированной ширины)\n" +" в качестве операндов можно использовать переменные командного " +"процессора. Название переменной\n" +" заменяется её значением (приводится к целому числу фиксированной " +"ширины)\n" " в выражении. У переменной не должен быть включён атрибут integer,\n" " чтобы её можно было использовать в выражении.\n" " \n" @@ -4090,62 +3978,27 @@ msgstr "" " выше правила старшинства.\n" " \n" " Состояние выхода:\n" -" Если последний АРГУМЕНТ имеет значение 0, let возвращает 1. В противном случае let возвращает 0." +" Если последний АРГУМЕНТ имеет значение 0, let возвращает 1. В противном " +"случае let возвращает 0." #: builtins.c:994 #, fuzzy -#| msgid "" -#| "Read a line from the standard input and split it into fields.\n" -#| " \n" -#| " Reads a single line from the standard input, or from file descriptor FD\n" -#| " if the -u option is supplied. The line is split into fields as with word\n" -#| " splitting, and the first word is assigned to the first NAME, the second\n" -#| " word to the second NAME, and so on, with any leftover words assigned to\n" -#| " the last NAME. Only the characters found in $IFS are recognized as word\n" -#| " delimiters.\n" -#| " \n" -#| " If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" -#| " \n" -#| " Options:\n" -#| " -a array\tassign the words read to sequential indices of the array\n" -#| " \t\tvariable ARRAY, starting at zero\n" -#| " -d delim\tcontinue until the first character of DELIM is read, rather\n" -#| " \t\tthan newline\n" -#| " -e\t\tuse Readline to obtain the line in an interactive shell\n" -#| " -i text\tUse TEXT as the initial text for Readline\n" -#| " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -#| " \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -#| " \t\tcharacters are read before the delimiter\n" -#| " -N nchars\treturn only after reading exactly NCHARS characters, unless\n" -#| " \t\tEOF is encountered or read times out, ignoring any delimiter\n" -#| " -p prompt\toutput the string PROMPT without a trailing newline before\n" -#| " \t\tattempting to read\n" -#| " -r\t\tdo not allow backslashes to escape any characters\n" -#| " -s\t\tdo not echo input coming from a terminal\n" -#| " -t timeout\ttime out and return failure if a complete line of input is\n" -#| " \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -#| " \t\tvariable is the default timeout. TIMEOUT may be a\n" -#| " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -#| " \t\twithout trying to read any data, returning success only if\n" -#| " \t\tinput is available on the specified file descriptor. The\n" -#| " \t\texit status is greater than 128 if the timeout is exceeded\n" -#| " -u fd\t\tread from file descriptor FD instead of the standard input\n" -#| " \n" -#| " Exit Status:\n" -#| " The return code is zero, unless end-of-file is encountered, read times out\n" -#| " (in which case it's greater than 128), a variable assignment error occurs,\n" -#| " or an invalid file descriptor is supplied as the argument to -u." msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with word\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -4157,7 +4010,8 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" " \t\tNCHARS characters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" " \t\tEOF is encountered or read times out, ignoring any\n" " \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" @@ -4175,52 +4029,68 @@ msgid "" " -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times out\n" -" (in which case it's greater than 128), a variable assignment error occurs,\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" "Чтение строки со стандартного ввода и разделение её на поля.\n" " \n" " Читает одну строку со стандартного ввода или из файлового дескриптора,\n" " если указан параметр -u. Строка разделяется на поля по словам.\n" -" Первое слово присваивается первому указанному имени, второе слово — второму\n" +" Первое слово присваивается первому указанному имени, второе слово — " +"второму\n" " имени и так далее.\n" -" Оставшиеся слова присваиваются последнему указанному имени. В качестве разделителей слов используются только символы\n" +" Оставшиеся слова присваиваются последнему указанному имени. В качестве " +"разделителей слов используются только символы\n" " из переменной $IFS.\n" " \n" -" Если имена не указаны, прочитанная строка сохраняется в переменной $REPLY.\n" +" Если имена не указаны, прочитанная строка сохраняется в переменной " +"$REPLY.\n" " \n" " Параметры:\n" " -a массив\tпоследовательно присвоить прочитанные слова указателям\n" " \t\tмассива, начиная с нуля\n" " -d разделитель\tпродолжить до первого разделителя,\n" " \t\tа не до символа новой строки\n" -" -e\t\tс помощью readline получить строку в интерактивном командном процессоре\n" +" -e\t\tс помощью readline получить строку в интерактивном командном " +"процессоре\n" " -i текст\t\tиспользовать текст в качестве исходного для readline\n" -" -n число_знаков\tвыполнить возврат после прочтения числа знаков, а не ждать\n" -" \t\tсимвола новой строки; учитывать разделитель, если до него было прочитано\n" +" -n число_знаков\tвыполнить возврат после прочтения числа знаков, а не " +"ждать\n" +" \t\tсимвола новой строки; учитывать разделитель, если до него было " +"прочитано\n" " \t\tменьше указанного числа знаков\n" -" -N число_знаков\tвыполнить возврат только после прочтения указанного числа знаков,\n" -" \t\tесли только не был получен конец строки или не истекло время ожидания, игнорируя все разделители\n" +" -N число_знаков\tвыполнить возврат только после прочтения указанного " +"числа знаков,\n" +" \t\tесли только не был получен конец строки или не истекло время " +"ожидания, игнорируя все разделители\n" " -p приглашение\tпоказать приглашение без символа новой строки в конце\n" " \t\tперед тем как читать\n" " -r\t\tне выполнять экранирование символами косой черты\n" " -s\t\tне показывать данные, полученные из терминала\n" -" -t тайм-аут\tпрекратить ожидание и вывести ошибку, если полная входная\n" -" \t\tстрока не была прочитана за указанное число секунд В переменной $TMOUT хранится\n" +" -t тайм-аут\tпрекратить ожидание и вывести ошибку, если полная " +"входная\n" +" \t\tстрока не была прочитана за указанное число секунд В переменной " +"$TMOUT хранится\n" " \t\tзначение тайм-аута по умолчанию. Время ожидания\n" -" \t\tможет быть дробным числом. Если тайм-аут равен 0, read немедленно выполняет возврат,\n" +" \t\tможет быть дробным числом. Если тайм-аут равен 0, read немедленно " +"выполняет возврат,\n" " \t\tне пытаясь прочитать никакие данные. Успех возвращается,\n" -" \t\tтолько если входные данные доступны по указанному файловому дескриптору. \n" +" \t\tтолько если входные данные доступны по указанному файловому " +"дескриптору. \n" " \t\tСостояние выхода больше 128, если время ожидания было превышено.\n" " -u fd\t\tчитать из файлового дескриптора, а не со стандартного входа\n" " \n" " Состояние выхода:\n" -" Состояние выхода будет нулевым, если не был встречен конец файла, не истекло время ожидания\n" -" (в этом случае состояние выхода будет больше 128), не возникла ошибка присвоения переменной\n" +" Состояние выхода будет нулевым, если не был встречен конец файла, не " +"истекло время ожидания\n" +" (в этом случае состояние выхода будет больше 128), не возникла ошибка " +"присвоения переменной\n" " или не был указан недопустимый файловый дескриптор как аргумент для -u." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -4238,91 +4108,11 @@ msgstr "" " последней команды, выполненной в функции или скрипте.\n" " \n" " Состояние выхода:\n" -" Возвращает N или ошибку, если командный процессор не выполняет функцию или скрипт." +" Возвращает N или ошибку, если командный процессор не выполняет функцию " +"или скрипт." -#: builtins.c:1054 +#: builtins.c:1055 #, fuzzy -#| msgid "" -#| "Set or unset values of shell options and positional parameters.\n" -#| " \n" -#| " Change the value of shell attributes and positional parameters, or\n" -#| " display the names and values of shell variables.\n" -#| " \n" -#| " Options:\n" -#| " -a Mark variables which are modified or created for export.\n" -#| " -b Notify of job termination immediately.\n" -#| " -e Exit immediately if a command exits with a non-zero status.\n" -#| " -f Disable file name generation (globbing).\n" -#| " -h Remember the location of commands as they are looked up.\n" -#| " -k All assignment arguments are placed in the environment for a\n" -#| " command, not just those that precede the command name.\n" -#| " -m Job control is enabled.\n" -#| " -n Read commands but do not execute them.\n" -#| " -o option-name\n" -#| " Set the variable corresponding to option-name:\n" -#| " allexport same as -a\n" -#| " braceexpand same as -B\n" -#| " emacs use an emacs-style line editing interface\n" -#| " errexit same as -e\n" -#| " errtrace same as -E\n" -#| " functrace same as -T\n" -#| " hashall same as -h\n" -#| " histexpand same as -H\n" -#| " history enable command history\n" -#| " ignoreeof the shell will not exit upon reading EOF\n" -#| " interactive-comments\n" -#| " allow comments to appear in interactive commands\n" -#| " keyword same as -k\n" -#| " monitor same as -m\n" -#| " noclobber same as -C\n" -#| " noexec same as -n\n" -#| " noglob same as -f\n" -#| " nolog currently accepted but ignored\n" -#| " notify same as -b\n" -#| " nounset same as -u\n" -#| " onecmd same as -t\n" -#| " physical same as -P\n" -#| " pipefail the return value of a pipeline is the status of\n" -#| " the last command to exit with a non-zero status,\n" -#| " or zero if no command exited with a non-zero status\n" -#| " posix change the behavior of bash where the default\n" -#| " operation differs from the Posix standard to\n" -#| " match the standard\n" -#| " privileged same as -p\n" -#| " verbose same as -v\n" -#| " vi use a vi-style line editing interface\n" -#| " xtrace same as -x\n" -#| " -p Turned on whenever the real and effective user ids do not match.\n" -#| " Disables processing of the $ENV file and importing of shell\n" -#| " functions. Turning this option off causes the effective uid and\n" -#| " gid to be set to the real uid and gid.\n" -#| " -t Exit after reading and executing one command.\n" -#| " -u Treat unset variables as an error when substituting.\n" -#| " -v Print shell input lines as they are read.\n" -#| " -x Print commands and their arguments as they are executed.\n" -#| " -B the shell will perform brace expansion\n" -#| " -C If set, disallow existing regular files to be overwritten\n" -#| " by redirection of output.\n" -#| " -E If set, the ERR trap is inherited by shell functions.\n" -#| " -H Enable ! style history substitution. This flag is on\n" -#| " by default when the shell is interactive.\n" -#| " -P If set, do not resolve symbolic links when executing commands\n" -#| " such as cd which change the current directory.\n" -#| " -T If set, the DEBUG trap is inherited by shell functions.\n" -#| " -- Assign any remaining arguments to the positional parameters.\n" -#| " If there are no remaining arguments, the positional parameters\n" -#| " are unset.\n" -#| " - Assign any remaining arguments to the positional parameters.\n" -#| " The -x and -v options are turned off.\n" -#| " \n" -#| " Using + rather than - causes these flags to be turned off. The\n" -#| " flags can also be used upon invocation of the shell. The current\n" -#| " set of flags may be found in $-. The remaining n ARGs are positional\n" -#| " parameters and are assigned, in order, to $1, $2, .. $n. If no\n" -#| " ARGs are given, all shell variables are printed.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is given." msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4365,7 +4155,8 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero status\n" +" or zero if no command exited with a non-zero " +"status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -4389,7 +4180,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -4405,15 +4197,19 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" -"Присвоение или удаление значений параметров командного процессора и позиционных параметров.\n" +"Присвоение или удаление значений параметров командного процессора и " +"позиционных параметров.\n" " \n" -" Изменяет значение атрибутов командного процессора и позиционных параметров или\n" +" Изменяет значение атрибутов командного процессора и позиционных " +"параметров или\n" " выводит названия и значения переменных командного процессора.\n" " \n" " Параметры:\n" -" -a пометить переменные, которые были изменены или созданы для экспорта\n" +" -a пометить переменные, которые были изменены или созданы для " +"экспорта\n" " -b немедленно уведомить о завершении задания\n" -" -e немедленно выйти, если команда выполняет выход с ненулевым состоянием\n" +" -e немедленно выйти, если команда выполняет выход с ненулевым " +"состоянием\n" " -f отключить генерацию имён файлов (подстановка)\n" " -h запомнить расположение команд, как они выглядели ранее\n" " -k поместить в окружение для команды все аргументы присвоения,\n" @@ -4424,16 +4220,19 @@ msgstr "" " Задаёт переменную, соответствующую названию параметра:\n" " allexport эквивалент -a\n" " braceexpand эквивалент -B\n" -" emacs использовать стиль emacs для редактирования строк\n" +" emacs использовать стиль emacs для редактирования " +"строк\n" " errexit эквивалент -e\n" " errtrace эквивалент -E\n" " functrace эквивалент -T\n" " hashall эквивалент -h\n" " histexpand эквивалент -H\n" " history включить журнал команд\n" -" ignoreeof не закрывать командный процессор после получения конца файла\n" +" ignoreeof не закрывать командный процессор после получения " +"конца файла\n" " interactive-comments\n" -" разрешить показ комментариев в интерактивных командах\n" +" разрешить показ комментариев в интерактивных " +"командах\n" " keyword эквивалент -k\n" " monitor эквивалент -m\n" " noclobber эквивалент -C\n" @@ -4444,17 +4243,22 @@ msgstr "" " nounset эквивалент -u\n" " onecmd эквивалент -t\n" " physical эквивалент -P\n" -" pipefail возвращаемое значение конвейера является состоянием\n" -" последней команды, завершившейся с ненулевым состоянием,\n" -" или нулём, если не было команды, завершившейся с ненулевым состоянием\n" +" pipefail возвращаемое значение конвейера является " +"состоянием\n" +" последней команды, завершившейся с ненулевым " +"состоянием,\n" +" или нулём, если не было команды, завершившейся с " +"ненулевым состоянием\n" " posix изменить поведение bash там, где операции\n" -" по умолчанию отличаются от стандарта Posix, чтобы\n" +" по умолчанию отличаются от стандарта Posix, " +"чтобы\n" " соответствовать этому стандарту\n" " privileged эквивалент -p\n" " verbose эквивалент -v\n" " vi использовать стиль vi для редактирования строк\n" " xtrace эквивалент -x\n" -" -p Включён, когда реальный и эффективный идентификаторы пользователя не совпадают.\n" +" -p Включён, когда реальный и эффективный идентификаторы пользователя " +"не совпадают.\n" " Отключает обработку файла $ENV и импорт функций командного\n" " процессора. Если отключить этот параметр, эффективные UID и GID\n" " будут назначены реальным UID и GID.\n" @@ -4465,12 +4269,16 @@ msgstr "" " -B Командный процессор развернёт скобки.\n" " -C Если задано, запретить перезапись существующих обычных файлов\n" " вследствие перенаправления вывода.\n" -" -E Если задано, ловушка ERR наследуется функциями командного процессора.\n" -" -H Включить замену журнала с использованием !. По умолчанию этот флаг\n" +" -E Если задано, ловушка ERR наследуется функциями командного " +"процессора.\n" +" -H Включить замену журнала с использованием !. По умолчанию этот " +"флаг\n" " установлен, если командный процессор интерактивный.\n" -" -P Если задано, не разрешать символьные ссылки при выполнении команд,\n" +" -P Если задано, не разрешать символьные ссылки при выполнении " +"команд,\n" " таких как cd, которые изменяют текущий каталог.\n" -" -T Если задано, ловушка DEBUG наследуется функциями командного процессора.\n" +" -T Если задано, ловушка DEBUG наследуется функциями командного " +"процессора.\n" " -- Назначить все оставшиеся аргументы позиционным параметрам.\n" " Если аргументов не осталось, позиционные параметры\n" " удаляются.\n" @@ -4478,34 +4286,18 @@ msgstr "" " Параметры -x и -v выключены.\n" " \n" " Если вместо - указать +, флаги будут выключены. \n" -" Флаги также можно использовать до вызова командного процессора. Текущий\n" -" набор флагов можно просмотреть в $-. Оставшиеся n аргументов являются позиционными\n" +" Флаги также можно использовать до вызова командного процессора. " +"Текущий\n" +" набор флагов можно просмотреть в $-. Оставшиеся n аргументов являются " +"позиционными\n" " параметрами и назначаются в порядке $1, $2, .. $n. Если\n" " аргументы не указаны, выводятся все переменные командного процессора.\n" " \n" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр." -#: builtins.c:1139 +#: builtins.c:1140 #, fuzzy -#| msgid "" -#| "Unset values and attributes of shell variables and functions.\n" -#| " \n" -#| " For each NAME, remove the corresponding variable or function.\n" -#| " \n" -#| " Options:\n" -#| " -f\ttreat each NAME as a shell function\n" -#| " -v\ttreat each NAME as a shell variable\n" -#| " -n\ttreat each NAME as a name reference and unset the variable itself\n" -#| " \trather than the variable it references\n" -#| " \n" -#| " Without options, unset first tries to unset a variable, and if that fails,\n" -#| " tries to unset a function.\n" -#| " \n" -#| " Some variables cannot be unset; also see `readonly'.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is given or a NAME is read-only." msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4517,7 +4309,8 @@ msgid "" " -n\ttreat each NAME as a name reference and unset the variable itself\n" " \t\trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that fails,\n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" " tries to unset a function.\n" " \n" " Some variables cannot be unset; also see `readonly'.\n" @@ -4532,23 +4325,27 @@ msgstr "" " Параметры:\n" " -f\tсчитать каждое указанное имя функцией командного процессора\n" " -v\tсчитать каждое указанное имя переменной командного процессора\n" -" -n\tсчитать каждое указанное имя ссылкой на название и удалить саму переменную,\n" +" -n\tсчитать каждое указанное имя ссылкой на название и удалить саму " +"переменную,\n" " \tа не переменную, на которую указывает ссылка\n" " \n" -" Если параметры не указаны, unset сначала пытается удалить переменную. Если это не удаётся,\n" +" Если параметры не указаны, unset сначала пытается удалить переменную. " +"Если это не удаётся,\n" " пытается удалить функцию.\n" " \n" " Некоторые переменные нельзя удалить. См. также «readonly».\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или указанное имя доступно для записи." +" Возвращает успех, если был указан допустимый параметр или указанное имя " +"доступно для записи." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -4563,7 +4360,8 @@ msgstr "" "Установка атрибута экспорта для переменных командного процессора.\n" " \n" " Помечает все имена для автоматического экспорта в среду для\n" -" последующих выполняемых команд. Если указано значение, оно присваивается перед экспортом.\n" +" последующих выполняемых команд. Если указано значение, оно " +"присваивается перед экспортом.\n" " \n" " Параметры:\n" " -f\tиспользовать функции командного процессора\n" @@ -4575,26 +4373,8 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр или имя." -#: builtins.c:1180 +#: builtins.c:1181 #, fuzzy -#| msgid "" -#| "Mark shell variables as unchangeable.\n" -#| " \n" -#| " Mark each NAME as read-only; the values of these NAMEs may not be\n" -#| " changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" -#| " before marking as read-only.\n" -#| " \n" -#| " Options:\n" -#| " -a\trefer to indexed array variables\n" -#| " -A\trefer to associative array variables\n" -#| " -f\trefer to shell functions\n" -#| " -p\tdisplay a list of all readonly variables or functions, depending on\n" -#| " whether or not the -f option is given\n" -#| " \n" -#| " An argument of `--' disables further option processing.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is given or NAME is invalid." msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4617,14 +4397,16 @@ msgstr "" "Запрет изменения переменных командного процессора.\n" " \n" " Делает каждое имя доступным только чтения. Значения этих имён нельзя\n" -" будет изменить в будущем. Если указано значение, присваивает это значение\n" +" будет изменить в будущем. Если указано значение, присваивает это " +"значение\n" " перед тем, как сделать его доступным только для чтения.\n" " \n" " Параметры:\n" " -a\tссылаться на переменные индексированного массива\n" " -A\tссылаться на переменные ассоциативного массива\n" " -f\tиспользовать функции командного процессора\n" -" -p\tвывести список всех переменных или функций, доступных только для чтения,\n" +" -p\tвывести список всех переменных или функций, доступных только для " +"чтения,\n" " в зависимости от того, указан ли параметр -f\n" " \n" " Аргумент «--» отключает дальнейшую обработку параметров.\n" @@ -4632,7 +4414,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр или имя." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4650,7 +4432,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если N положительный или меньше $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4665,16 +4447,18 @@ msgid "" msgstr "" "Выполнение команд из файла в текущем командном процессоре.\n" " \n" -" Читает и выполняет команды из указанного файла в текущем командном процессоре. \n" +" Читает и выполняет команды из указанного файла в текущем командном " +"процессоре. \n" " Файла ищется в каталогах, указанных в переменной $PATH.\n" " Если указаны аргументы, они становятся позиционными параметрами\n" " при выполнении файла.\n" " \n" " Состояние выхода:\n" -" Возвращает состояние последней выполненной команды из файла. Возвращает ошибку,\n" +" Возвращает состояние последней выполненной команды из файла. Возвращает " +"ошибку,\n" " если файл не удаётся прочитать." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4689,94 +4473,21 @@ msgid "" msgstr "" "Приостановка работы командного процессора.\n" " \n" -" Приостанавливает работу текущего командного процессора до получения сигнала SIGCONT.\n" -" Работу командных процессоров login можно приостановить только в принудительном режиме.\n" +" Приостанавливает работу текущего командного процессора до получения " +"сигнала SIGCONT.\n" +" Работу командных процессоров login можно приостановить только в " +"принудительном режиме.\n" " \n" " Параметры:\n" -" -f\tпринудительно приостановить работу, даже если командный процессор — login\n" +" -f\tпринудительно приостановить работу, даже если командный " +"процессор — login\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если не включено управление заданиями или не произошла ошибка." +" Возвращает успех, если не включено управление заданиями или не произошла " +"ошибка." -#: builtins.c:1261 +#: builtins.c:1262 #, fuzzy -#| msgid "" -#| "Evaluate conditional expression.\n" -#| " \n" -#| " Exits with a status of 0 (true) or 1 (false) depending on\n" -#| " the evaluation of EXPR. Expressions may be unary or binary. Unary\n" -#| " expressions are often used to examine the status of a file. There\n" -#| " are string operators and numeric comparison operators as well.\n" -#| " \n" -#| " The behavior of test depends on the number of arguments. Read the\n" -#| " bash manual page for the complete specification.\n" -#| " \n" -#| " File operators:\n" -#| " \n" -#| " -a FILE True if file exists.\n" -#| " -b FILE True if file is block special.\n" -#| " -c FILE True if file is character special.\n" -#| " -d FILE True if file is a directory.\n" -#| " -e FILE True if file exists.\n" -#| " -f FILE True if file exists and is a regular file.\n" -#| " -g FILE True if file is set-group-id.\n" -#| " -h FILE True if file is a symbolic link.\n" -#| " -L FILE True if file is a symbolic link.\n" -#| " -k FILE True if file has its `sticky' bit set.\n" -#| " -p FILE True if file is a named pipe.\n" -#| " -r FILE True if file is readable by you.\n" -#| " -s FILE True if file exists and is not empty.\n" -#| " -S FILE True if file is a socket.\n" -#| " -t FD True if FD is opened on a terminal.\n" -#| " -u FILE True if the file is set-user-id.\n" -#| " -w FILE True if the file is writable by you.\n" -#| " -x FILE True if the file is executable by you.\n" -#| " -O FILE True if the file is effectively owned by you.\n" -#| " -G FILE True if the file is effectively owned by your group.\n" -#| " -N FILE True if the file has been modified since it was last read.\n" -#| " \n" -#| " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" -#| " modification date).\n" -#| " \n" -#| " FILE1 -ot FILE2 True if file1 is older than file2.\n" -#| " \n" -#| " FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" -#| " \n" -#| " String operators:\n" -#| " \n" -#| " -z STRING True if string is empty.\n" -#| " \n" -#| " -n STRING\n" -#| " STRING True if string is not empty.\n" -#| " \n" -#| " STRING1 = STRING2\n" -#| " True if the strings are equal.\n" -#| " STRING1 != STRING2\n" -#| " True if the strings are not equal.\n" -#| " STRING1 < STRING2\n" -#| " True if STRING1 sorts before STRING2 lexicographically.\n" -#| " STRING1 > STRING2\n" -#| " True if STRING1 sorts after STRING2 lexicographically.\n" -#| " \n" -#| " Other operators:\n" -#| " \n" -#| " -o OPTION True if the shell option OPTION is enabled.\n" -#| " -v VAR\t True if the shell variable VAR is set\n" -#| " -R VAR\t True if the shell variable VAR is set and is a name reference.\n" -#| " ! EXPR True if expr is false.\n" -#| " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" -#| " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" -#| " \n" -#| " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" -#| " -lt, -le, -gt, or -ge.\n" -#| " \n" -#| " Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" -#| " less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" -#| " than ARG2.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" -#| " false or an invalid argument is given." msgid "" "Evaluate conditional expression.\n" " \n" @@ -4810,7 +4521,8 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last read.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -4831,7 +4543,8 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 lexicographically.\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -4859,7 +4572,8 @@ msgstr "" "Расчёт условного выражения.\n" " \n" " Возвращает состояние 0 (истина) или 1 (ложь) после\n" -" расчёта выражения. Выражения могут быть унарными или бинарными. Унарные\n" +" расчёта выражения. Выражения могут быть унарными или бинарными. " +"Унарные\n" " выражения часто используются для определения состояния файла. Также\n" " доступны стоковые операторы и операторы сравнения чисел.\n" " \n" @@ -4873,7 +4587,8 @@ msgstr "" " -c ФАЙЛ Истина, если файл представляет символьное устройство.\n" " -d ФАЙЛ Истина, если файл является каталогом.\n" " -e ФАЙЛ Истина, если файл существует.\n" -" -f ФАЙЛ Истина, если файл существует и является обычным файлом.\n" +" -f ФАЙЛ Истина, если файл существует и является обычным " +"файлом.\n" " -g ФАЙЛ Истина, если для файла установлен бит SGID.\n" " -h ФАЙЛ Истина, если файл является символьной ссылкой.\n" " -L ФАЙЛ Истина, если файл является символьной ссылкой.\n" @@ -4882,12 +4597,15 @@ msgstr "" " -r ФАЙЛ Истина, если вы можете прочитать файл.\n" " -s ФАЙЛ Истина, если файл существует и не является пустым.\n" " -S ФАЙЛ Истина, если файл является сокетом.\n" -" -t ФД Истина, если файловый дескриптор ФД открыт в терминале.\n" +" -t ФД Истина, если файловый дескриптор ФД открыт в " +"терминале.\n" " -u ФАЙЛ Истина, если для файла установлен бит SUID.\n" " -w ФАЙЛ Истина, если вы можете выполнить запись в файл.\n" " -x ФАЙЛ Истина, если вы можете выполнить файл.\n" -" -O ФАЙЛ Истина, если вы являетесь эффективным владельцем файла.\n" -" -G ФАЙЛ Истина, если ваша группа является эффективным владельцем файла.\n" +" -O ФАЙЛ Истина, если вы являетесь эффективным владельцем " +"файла.\n" +" -G ФАЙЛ Истина, если ваша группа является эффективным " +"владельцем файла.\n" " -N ФАЙЛ Истина, если файл был изменён после последнего чтения.\n" " \n" " ФАЙЛ1 -nt ФАЙЛ2 Истина, если файл1 новее файла2 (согласно\n" @@ -4895,7 +4613,8 @@ msgstr "" " \n" " ФАЙЛ1 -ot ФАЙЛ2 Истина, если файл1 старее файла2.\n" " \n" -" ФАЙЛ1 -ef ФАЙЛ2 Истина, если файл1 является жёсткой ссылкой на файл2.\n" +" ФАЙЛ1 -ef ФАЙЛ2 Истина, если файл1 является жёсткой ссылкой на " +"файл2.\n" " \n" " Строковые операторы:\n" " \n" @@ -4909,31 +4628,38 @@ msgstr "" " СТРОКА1 != СТРОКА2\n" " Истина, если строки не совпадают.\n" " СТРОКА1 < СТРОКА2\n" -" Истина, если СТРОКА1 сортируется до СТРОКИ2 лексикографически.\n" +" Истина, если СТРОКА1 сортируется до СТРОКИ2 " +"лексикографически.\n" " СТРОКА1 > СТРОКА2\n" -" Истина, если СТРОКА1 сортируется после СТРОКИ2 лексикографически.\n" +" Истина, если СТРОКА1 сортируется после СТРОКИ2 " +"лексикографически.\n" " \n" " Остальные операторы:\n" " \n" " -o ПАРАМЕТР Истина, если параметр командного процессора включён.\n" " -v ПЕР\t Истина, если переменная командного процессора задана\n" -" -R ПЕР\t Истина, если переменная командного процессора задана и является именованной ссылкой.\n" +" -R ПЕР\t Истина, если переменная командного процессора задана и " +"является именованной ссылкой.\n" " ! ВЫРАЖ Истина, если выражение возвращает ложь.\n" " ВЫРАЖ1 -a ВЫРАЖ2 Истина, если оба выражения возвращают истину.\n" -" ВЫРАЖ1 -o ВЫРАЖ2 Истина, если хотя бы одно из выражений возвращает истину.\n" +" ВЫРАЖ1 -o ВЫРАЖ2 Истина, если хотя бы одно из выражений возвращает " +"истину.\n" " \n" -" арг1 ОП арг2 Математические проверки. ОП может быть одним из следующих: -eq, -ne,\n" +" арг1 ОП арг2 Математические проверки. ОП может быть одним из " +"следующих: -eq, -ne,\n" " -lt, -le, -gt или -ge.\n" " \n" -" Математические бинарные операторы возвращают истину, если АРГУМЕНТ1 равен, не равен,\n" +" Математические бинарные операторы возвращают истину, если АРГУМЕНТ1 " +"равен, не равен,\n" " меньше, меньше или равен либо больше или равен\n" " АРГУМЕНТУ2.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если выражение истинно, или ошибку, если выражение ложно\n" +" Возвращает успех, если выражение истинно, или ошибку, если выражение " +"ложно\n" " или указан недопустимый аргумент." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4945,11 +4671,12 @@ msgstr "" " Это синоним встроенной команды test, но последним аргументом должна\n" " быть скобка «]», соответствующая открывающей «[»." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of its\n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4957,17 +4684,19 @@ msgid "" msgstr "" "Отображение времени процесса.\n" " \n" -" Показывает объединённые значения времени пользователя и системы для командного\n" +" Показывает объединённые значения времени пользователя и системы для " +"командного\n" " процессора и всех его дочерних процессов.\n" " \n" " Состояние выхода:\n" " Всегда возвращает успех." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives signals\n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -4976,26 +4705,34 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" -" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands associated\n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is given." +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." msgstr "" "Захват сигналов и других событий.\n" " \n" @@ -5003,16 +4740,22 @@ msgstr "" " командный процессор получает сигналы или при других условиях.\n" " \n" " Аргумент — это команда, которая считывается и выполняется, когда\n" -" командный процессор получает указанные сигнал(ы). Если аргумент отсутствует (и указан один сигнал)\n" +" командный процессор получает указанные сигнал(ы). Если аргумент " +"отсутствует (и указан один сигнал)\n" " или указано «-», для всех указанных сигналов восстанавливаются\n" -" исходные значения. Если аргумент — пустая строка, все указанные сигналы игнорируются\n" +" исходные значения. Если аргумент — пустая строка, все указанные сигналы " +"игнорируются\n" " командным процессором и вызываемыми им командами.\n" " \n" -" Если сигнал — EXIT (0), аргумент выполняется при выходе из командного процессора. Если\n" -" сигнал — DEBUG, аргумент выполняется перед каждой простой командой. Если\n" +" Если сигнал — EXIT (0), аргумент выполняется при выходе из командного " +"процессора. Если\n" +" сигнал — DEBUG, аргумент выполняется перед каждой простой командой. " +"Если\n" " сигнал — RETURN, аргумент выполняется каждый раз, когда функция\n" -" или скрипт выполняется в . или исходные встроенные команды завершают свою работу. Сигнал\n" -" ERR означает выполнение аргумента каждый раз, когда ошибка команды приведёт\n" +" или скрипт выполняется в . или исходные встроенные команды завершают " +"свою работу. Сигнал\n" +" ERR означает выполнение аргумента каждый раз, когда ошибка команды " +"приведёт\n" " к выходу из командного процессора, когда включён параметр -e.\n" " \n" " Если аргументы не указаны, trap выводит список команд, связанных\n" @@ -5022,41 +4765,18 @@ msgstr "" " -l\tпоказать названия сигналов и их номера\n" " -p\tпоказать команды trap, связанные с каждым сигналом\n" " \n" -" Идентификатор сигнала — это название сигнала в или номер сигнала.\n" -" Названия сигналов не зависят от регистра, а префикс SIG не является обязательным. \n" -" Сигнал можно отправить в командный процессор командой «kill -signal $$».\n" +" Идентификатор сигнала — это название сигнала в или номер " +"сигнала.\n" +" Названия сигналов не зависят от регистра, а префикс SIG не является " +"обязательным. \n" +" Сигнал можно отправить в командный процессор командой «kill -signal $" +"$».\n" " \n" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый сигнал или параметр." -#: builtins.c:1400 +#: builtins.c:1401 #, fuzzy -#| msgid "" -#| "Display information about command type.\n" -#| " \n" -#| " For each NAME, indicate how it would be interpreted if used as a\n" -#| " command name.\n" -#| " \n" -#| " Options:\n" -#| " -a\tdisplay all locations containing an executable named NAME;\n" -#| " \tincludes aliases, builtins, and functions, if and only if\n" -#| " \tthe `-p' option is not also used\n" -#| " -f\tsuppress shell function lookup\n" -#| " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -#| " \tbuiltin, or function, and returns the name of the disk file\n" -#| " \tthat would be executed\n" -#| " -p\treturns either the name of the disk file that would be executed,\n" -#| " \tor nothing if `type -t NAME' would not return `file'.\n" -#| " -t\toutput a single word which is one of `alias', `keyword',\n" -#| " \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -#| " \treserved word, shell function, shell builtin, disk file, or not\n" -#| " \tfound, respectively\n" -#| " \n" -#| " Arguments:\n" -#| " NAME\tCommand name to be interpreted.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success if all of the NAMEs are found; fails if any are not found." msgid "" "Display information about command type.\n" " \n" @@ -5082,25 +4802,30 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not found." +" Returns success if all of the NAMEs are found; fails if any are not " +"found." msgstr "" "Вывод информации о типе команды.\n" " \n" -" Для каждого указанного имени показывает, как оно будет интерпретировано при\n" +" Для каждого указанного имени показывает, как оно будет интерпретировано " +"при\n" " использовании в качестве названия команды.\n" " \n" " Параметры:\n" -" -a\tпоказать все местоположения, где есть исполняемый файл с указанным именем,\n" +" -a\tпоказать все местоположения, где есть исполняемый файл с указанным " +"именем,\n" " \tвключая псевдонимы, встроенные команды и функции, а также при условии\n" " \tчто не используется параметр «-p»\n" " -f\tне искать функции командного процессора\n" -" -P\tпринудительно искать в $PATH все указанные имена, даже если это псевдоним,\n" +" -P\tпринудительно искать в $PATH все указанные имена, даже если это " +"псевдоним,\n" " \tвстроенная команда или функция, и возвращать название файла на диске,\n" " \tкоторый будет запущен\n" " -p\tвозвращает название файла на диске, который будет запущен,\n" " \tили ничего, если «type -t имя» не возвращает «file».\n" " -t\tвывести одно из слов «alias», «keyword»,\n" -" \t«function», «builtin», «file» или «», если указанное имя является, соответственно,\n" +" \t«function», «builtin», «file» или «», если указанное имя является, " +"соответственно,\n" " \tпсевдонимом, зарезервированным словом, функцией, встроенной командой\n" " \tкомандного процессора, файлом на диске или имя не было найдено\n" " \n" @@ -5108,57 +4833,16 @@ msgstr "" " ИМЯ\tназвание интерпретируемой команды\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если все указанные имена были найдены, или ошибку в противном случае." +" Возвращает успех, если все указанные имена были найдены, или ошибку в " +"противном случае." -#: builtins.c:1431 +#: builtins.c:1432 #, fuzzy -#| msgid "" -#| "Modify shell resource limits.\n" -#| " \n" -#| " Provides control over the resources available to the shell and processes\n" -#| " it creates, on systems that allow such control.\n" -#| " \n" -#| " Options:\n" -#| " -S\tuse the `soft' resource limit\n" -#| " -H\tuse the `hard' resource limit\n" -#| " -a\tall current limits are reported\n" -#| " -b\tthe socket buffer size\n" -#| " -c\tthe maximum size of core files created\n" -#| " -d\tthe maximum size of a process's data segment\n" -#| " -e\tthe maximum scheduling priority (`nice')\n" -#| " -f\tthe maximum size of files written by the shell and its children\n" -#| " -i\tthe maximum number of pending signals\n" -#| " -l\tthe maximum size a process may lock into memory\n" -#| " -m\tthe maximum resident set size\n" -#| " -n\tthe maximum number of open file descriptors\n" -#| " -p\tthe pipe buffer size\n" -#| " -q\tthe maximum number of bytes in POSIX message queues\n" -#| " -r\tthe maximum real-time scheduling priority\n" -#| " -s\tthe maximum stack size\n" -#| " -t\tthe maximum amount of cpu time in seconds\n" -#| " -u\tthe maximum number of user processes\n" -#| " -v\tthe size of virtual memory\n" -#| " -x\tthe maximum number of file locks\n" -#| " -T the maximum number of threads\n" -#| " \n" -#| " Not all options are available on all platforms.\n" -#| " \n" -#| " If LIMIT is given, it is the new value of the specified resource; the\n" -#| " special LIMIT values `soft', `hard', and `unlimited' stand for the\n" -#| " current soft limit, the current hard limit, and no limit, respectively.\n" -#| " Otherwise, the current value of the specified resource is printed. If\n" -#| " no option is given, then -f is assumed.\n" -#| " \n" -#| " Values are in 1024-byte increments, except for -t, which is in seconds,\n" -#| " -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" -#| " number of processes.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is supplied or an error occurs." msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and processes\n" +" Provides control over the resources available to the shell and " +"processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -5204,7 +4888,8 @@ msgid "" msgstr "" "Изменение ограничений ресурсов командного процессора.\n" " \n" -" Позволяет контролировать ресурсы, доступные командному процессору и создаваемым\n" +" Позволяет контролировать ресурсы, доступные командному процессору и " +"создаваемым\n" " им процессам, в системах, где возможен такой контроль.\n" " \n" " Параметры:\n" @@ -5215,7 +4900,8 @@ msgstr "" " -c\tмаксимальный размер создаваемых core-файлов\n" " -d\tмаксимальный размер сегмента данных процесса\n" " -e\tмаксимальный приоритет планирования («nice»)\n" -" -f\tмаксимальный размер файлов, записываемых командным процессором и его дочерними процессами\n" +" -f\tмаксимальный размер файлов, записываемых командным процессором и " +"его дочерними процессами\n" " -i\tмаксимальное число ожидающих сигналов\n" " -l\tмаксимальный объём, который процесс может заблокировать в памяти\n" " -m\tмаксимальный объём резидентной памяти\n" @@ -5232,20 +4918,24 @@ msgstr "" " \n" " Не все параметры доступны на всех платформах.\n" " \n" -" Если указано ограничение, оно является новым значением для указанного ресурса.\n" +" Если указано ограничение, оно является новым значением для указанного " +"ресурса.\n" " Специальные значения «soft», «hard» и «unlimited» означают,\n" -" соответственно, текущее мягкое ограничение, текущее жёсткое ограничение и отсутствие ограничения.\n" +" соответственно, текущее мягкое ограничение, текущее жёсткое ограничение " +"и отсутствие ограничения.\n" " В противном случае выводится текущее значение указанного ресурса. Если\n" " параметр не указан, подразумевается использование параметра -f.\n" " \n" -" Значения задаются с шагом 1024 байт, кроме параметра -t с шагом в секундах,\n" +" Значения задаются с шагом 1024 байт, кроме параметра -t с шагом в " +"секундах,\n" " параметра -p с шагом 512 байт и параметра -u, представляющего\n" " количество процессов.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла ошибка." +" Возвращает успех, если был указан допустимый параметр или не возникла " +"ошибка." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -5264,52 +4954,46 @@ msgid "" msgstr "" "Отображение или указание маски режима для файлов.\n" " \n" -" Задаёт маску РЕЖИМ для файлов, создаваемых пользователем. Если РЕЖИМ не указан,\n" +" Задаёт маску РЕЖИМ для файлов, создаваемых пользователем. Если РЕЖИМ не " +"указан,\n" " выводит текущее значение маски.\n" " \n" -" Если РЕЖИМ начинается с цифры, он интерпретируется как восьмеричное число.\n" -" В противном случае он считается символьной строкой как для команды chmod(1).\n" +" Если РЕЖИМ начинается с цифры, он интерпретируется как восьмеричное " +"число.\n" +" В противном случае он считается символьной строкой как для команды " +"chmod(1).\n" " \n" " Параметры:\n" -" -p\tесли РЕЖИМ не указан, вывести маску, пригодную для повторного использования\n" -" -S\tвывести маску в символьном виде, в противном случае выводится восьмеричное число\n" +" -p\tесли РЕЖИМ не указан, вывести маску, пригодную для повторного " +"использования\n" +" -S\tвывести маску в символьном виде, в противном случае выводится " +"восьмеричное число\n" " \n" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый РЕЖИМ или параметр." -#: builtins.c:1502 +#: builtins.c:1503 #, fuzzy -#| msgid "" -#| "Wait for job completion and return exit status.\n" -#| " \n" -#| " Waits for each process identified by an ID, which may be a process ID or a\n" -#| " job specification, and reports its termination status. If ID is not\n" -#| " given, waits for all currently active child processes, and the return\n" -#| " status is zero. If ID is a a job specification, waits for all processes\n" -#| " in that job's pipeline.\n" -#| " \n" -#| " If the -n option is supplied, waits for the next job to terminate and\n" -#| " returns its exit status.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns the status of the last ID; fails if ID is invalid or an invalid\n" -#| " option is given." msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for each process identified by an ID, which may be a process ID or a\n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" " status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" -" If the -n option is supplied, waits for a single job from the list of IDs,\n" -" or, if no IDs are supplied, for the next job to complete and returns its\n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" " exit status.\n" " \n" " If the -p option is supplied, the process or job identifier of the job\n" " for which the exit status is returned is assigned to the variable VAR\n" -" named by the option argument. The variable will be unset initially, before\n" +" named by the option argument. The variable will be unset initially, " +"before\n" " any assignment. This is useful only when the -n option is supplied.\n" " \n" " If the -f option is supplied, and job control is enabled, waits for the\n" @@ -5323,9 +5007,11 @@ msgstr "" "Ожидание завершения задания и возврат состояния выхода.\n" " \n" " Ожидает завершения всех процессов, заданных идентификаторами\n" -" (идентификатор процесса или номер задания), и возвращает их состояние выхода. Если идентификатор\n" +" (идентификатор процесса или номер задания), и возвращает их состояние " +"выхода. Если идентификатор\n" " не указан, ожидает завершения всех активных дочерних процессов\n" -" и возвращает нулевое состояние выхода. Если идентификатор не является номером задания, ожидает завершения\n" +" и возвращает нулевое состояние выхода. Если идентификатор не является " +"номером задания, ожидает завершения\n" " всех процессов в конвейере данного задания.\n" " \n" " Если указан параметр -n, ожидает завершения следующего задания\n" @@ -5335,29 +5021,33 @@ msgstr "" " Возвращает состояние последнего идентификатора. Возвращает ошибку, если\n" " указан недопустимый идентификатор или параметр." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for each process specified by a PID and reports its termination status.\n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" " If PID is not given, waits for all currently active child processes,\n" " and the return status is zero. PID must be a process ID.\n" " \n" " Exit Status:\n" -" Returns the status of the last PID; fails if PID is invalid or an invalid\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" " option is given." msgstr "" "Ожидание завершения процесса и возврат состояния выхода.\n" " \n" -" Ожидает завершения всех процессов, заданных идентификаторами (PID), и возвращает их состояние выхода.\n" +" Ожидает завершения всех процессов, заданных идентификаторами (PID), и " +"возвращает их состояние выхода.\n" " Если идентификатор процесса не указан, ожидает завершения всех активных\n" -" дочерних процессов и возвращает нулевое состояние выхода. PID должен быть идентификатором процесса.\n" +" дочерних процессов и возвращает нулевое состояние выхода. PID должен " +"быть идентификатором процесса.\n" " \n" " Состояние выхода:\n" " Возвращает состояние последнего идентификатора. Возвращает ошибку, если\n" " указан недопустимый идентификатор или параметр." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -5373,13 +5063,14 @@ msgstr "" " \n" " Цикл «for» выполняет последовательность команд для каждого элемента\n" " списка. Если операнд «in СЛОВА ...;» отсутствует, подразумевается\n" -" операнд «in \"$@\"». Каждому элементу в списке СЛОВА присваивается ИМЯ и для него\n" +" операнд «in \"$@\"». Каждому элементу в списке СЛОВА присваивается ИМЯ " +"и для него\n" " выполняются КОМАНДЫ.\n" " \n" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -5403,13 +5094,14 @@ msgstr "" " \t\tКОМАНДЫ\n" " \t\t(( ВЫРАЖ3 ))\n" " \tdone\n" -" ВЫРАЖ1, ВЫРАЖ2 и ВЫРАЖ3 — это математические выражения. Если любое из выражений\n" +" ВЫРАЖ1, ВЫРАЖ2 и ВЫРАЖ3 — это математические выражения. Если любое из " +"выражений\n" " не указано, считается, что оно возвращает 1.\n" " \n" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5432,20 +5124,26 @@ msgstr "" " \n" " СЛОВА разворачиваются, формируя список слов. \n" " Набор развёрнутых слов выводится в поток ошибок с номерами\n" -" в начале строк. Если операнд «in СЛОВА ...;» отсутствует, подразумевается\n" -" операнд «in \"$@\"». Затем выводится приглашение $PS3 и со стандартного ввода\n" +" в начале строк. Если операнд «in СЛОВА ...;» отсутствует, " +"подразумевается\n" +" операнд «in \"$@\"». Затем выводится приглашение $PS3 и со стандартного " +"ввода\n" " считывается строка. Если строка состоит из номера,\n" " соответствующего одному из показанных слов, этому слову\n" -" присваивается указанное имя. Если строка пустая, будут повторно показаны указанные слова\n" -" и приглашение. Если прочитан символ конца файла, команда завершает свою работу. Если прочитаны\n" -" любые другие значения, указанному имени присваивается пустое значение. Прочитанная строка\n" -" сохраняется в переменную $REPLY. Команды выполняются после каждой выборки,\n" +" присваивается указанное имя. Если строка пустая, будут повторно " +"показаны указанные слова\n" +" и приглашение. Если прочитан символ конца файла, команда завершает свою " +"работу. Если прочитаны\n" +" любые другие значения, указанному имени присваивается пустое значение. " +"Прочитанная строка\n" +" сохраняется в переменную $REPLY. Команды выполняются после каждой " +"выборки,\n" " пока не будет выполнена команда прерывания.\n" " \n" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5462,18 +5160,20 @@ msgid "" msgstr "" "Вывод времени, потраченного на выполнение конвейера.\n" " \n" -" Выполняет конвейер и выводит значения реального времени, пользовательского времени\n" +" Выполняет конвейер и выводит значения реального времени, " +"пользовательского времени\n" " и системного времени ЦП, потраченного на выполнения конвейера.\n" " \n" " Параметры:\n" " -p\tпоказать значения времени в формате Posix\n" " \n" -" Для форматирования выходных данных используется значение переменной $TIMEFORMAT.\n" +" Для форматирования выходных данных используется значение переменной " +"$TIMEFORMAT.\n" " \n" " Состояние выхода:\n" " Возвращаемое состояние соответствует состоянию выхода конвейера." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5491,16 +5191,21 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of the\n" -" entire construct is the exit status of the last command executed, or zero\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" @@ -5508,23 +5213,30 @@ msgid "" msgstr "" "Выполнение команд в зависимости от условий.\n" " \n" -" Сначала выполняется список «if КОМАНДЫ». Если состояние выхода нулевое,\n" -" выполняется список «then КОМАНДЫ». В противном случае выполняется по очереди\n" +" Сначала выполняется список «if КОМАНДЫ». Если состояние выхода " +"нулевое,\n" +" выполняется список «then КОМАНДЫ». В противном случае выполняется по " +"очереди\n" " все списки «elif КОМАНДЫ», и если их состояние выхода будет нулевым,\n" -" выполнится список «then КОМАНДЫ», и команда if завершится. В противном случае\n" -" выполнится список «else КОМАНДЫ», если он указан. Состояние выхода всей\n" -" конструкции соответствует состоянию выхода последней выполненной команды или будет нулевым,\n" +" выполнится список «then КОМАНДЫ», и команда if завершится. В противном " +"случае\n" +" выполнится список «else КОМАНДЫ», если он указан. Состояние выхода " +"всей\n" +" конструкции соответствует состоянию выхода последней выполненной команды " +"или будет нулевым,\n" " если ни одна проверка условия не возвратила истину.\n" " \n" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5537,12 +5249,14 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5555,18 +5269,8 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1671 +#: builtins.c:1672 #, fuzzy -#| msgid "" -#| "Create a coprocess named NAME.\n" -#| " \n" -#| " Execute COMMAND asynchronously, with the standard output and standard\n" -#| " input of the command connected via a pipe to file descriptors assigned\n" -#| " to indices 0 and 1 of an array variable NAME in the executing shell.\n" -#| " The default NAME is \"COPROC\".\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns the exit status of COMMAND." msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5581,19 +5285,22 @@ msgstr "" "Создание дополнительного процесса с указанным именем.\n" " \n" " Выполняет команду асинхронно, когда стандартный вывод и стандартный\n" -" вход команды подключены через конвейер к дескрипторам файлов, которые назначены\n" -" указателям 0 и 1 массива переменных ИМЯ в активном командном процессоре.\n" +" вход команды подключены через конвейер к дескрипторам файлов, которые " +"назначены\n" +" указателям 0 и 1 массива переменных ИМЯ в активном командном " +"процессоре.\n" " Имя по умолчанию — «COPROC».\n" " \n" " Состояние выхода:\n" " Возвращает состояние выхода команды." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" @@ -5602,15 +5309,17 @@ msgid "" msgstr "" "Определение функции командного процессора.\n" " \n" -" Создаёт функцию командного процессора с указанным именем. При запуске в качестве простой команды\n" -" ИМЯ выполняет КОМАНДЫ в контексте вызывающего их командного процессора. При вызове ИМЕНИ\n" +" Создаёт функцию командного процессора с указанным именем. При запуске в " +"качестве простой команды\n" +" ИМЯ выполняет КОМАНДЫ в контексте вызывающего их командного процессора. " +"При вызове ИМЕНИ\n" " аргументы передаются в функцию как $1...$n, а функция получает\n" " название $FUNCNAME.\n" " \n" " Состояние выхода:\n" " Возвращает успех, если переменная ИМЯ доступно для записи." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5622,13 +5331,14 @@ msgid "" msgstr "" "Группировка команд.\n" " \n" -" Выполняет набор команд, объединённых в группу. Это единственный способ перенаправления\n" +" Выполняет набор команд, объединённых в группу. Это единственный способ " +"перенаправления\n" " всего набора команд.\n" " \n" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5644,24 +5354,18 @@ msgstr "" "Возобновление работы задания в интерактивном режиме.\n" " \n" " Аналогично аргументу JOB_SPEC для команды «fg». Возобновляет\n" -" работу остановленного или фонового задания. Через JOB_SPEC можно задать название\n" -" или номер задания. Если после номера задания указать «&», задание будет переведено\n" +" работу остановленного или фонового задания. Через JOB_SPEC можно задать " +"название\n" +" или номер задания. Если после номера задания указать «&», задание будет " +"переведено\n" " в фоновый режим, как если бы идентификатор задания был указан как\n" " аргумент для команды «bg».\n" " \n" " Состояние выхода:\n" " Возвращает состояние возобновлённого задания." -#: builtins.c:1726 +#: builtins.c:1727 #, fuzzy -#| msgid "" -#| "Evaluate arithmetic expression.\n" -#| " \n" -#| " The EXPRESSION is evaluated according to the rules for arithmetic\n" -#| " evaluation. Equivalent to \"let EXPRESSION\".\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5679,13 +5383,16 @@ msgstr "" " Состояние выхода:\n" " Возвращает 1, если выражение равно 0, в противном случае возвращает 0." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries used\n" -" by the `test' builtin, and may be combined using the following operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -5706,16 +5413,22 @@ msgstr "" "Выполнение условной команды.\n" " \n" " Возвращает состояние 0 или 1 в зависимости от результата расчёта\n" -" условного выражения. Выражения составляются из тех же примитивов, которые используются\n" -" во встроенной команде «test». Их можно объединить с помощью следующих операторов:\n" +" условного выражения. Выражения составляются из тех же примитивов, " +"которые используются\n" +" во встроенной команде «test». Их можно объединить с помощью следующих " +"операторов:\n" " \n" " ( выражение )\tВозвращает значение выражения\n" -" ! выражение\tВозвращает истину, если выражение ложно, в противном случае возвращает ложь\n" -" ВЫРАЖ1 && ВЫРАЖ2\tВозвращает истину, если оба выражения истинны, в противном случае возвращает ложь\n" -" ВЫРАЖ1 || ВЫРАЖ2\tВозвращает истину, если хотя бы одно из выражений истинно, в противном случае возвращает ложь\n" +" ! выражение\tВозвращает истину, если выражение ложно, в противном " +"случае возвращает ложь\n" +" ВЫРАЖ1 && ВЫРАЖ2\tВозвращает истину, если оба выражения истинны, в " +"противном случае возвращает ложь\n" +" ВЫРАЖ1 || ВЫРАЖ2\tВозвращает истину, если хотя бы одно из выражений " +"истинно, в противном случае возвращает ложь\n" " \n" " Если используются операторы «==» и «!=», строка справа от\n" -" оператора используется как шаблон, и выполняется сопоставление по шаблону.\n" +" оператора используется как шаблон, и выполняется сопоставление по " +"шаблону.\n" " Если используется оператор «=~», строка справа от оператора\n" " оценивается как регулярное выражение.\n" " \n" @@ -5725,7 +5438,7 @@ msgstr "" " Состояние выхода:\n" " 0 или 1 в зависимости от значения выражения." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5783,7 +5496,8 @@ msgstr "" " BASH_VERSION\tНомер версии bash.\n" " CDPATH\t\tСписок каталогов, разделённых двоеточиями, для поиска\n" " \t\tв них каталогов, указанных как аргументы для «cd».\n" -" GLOBIGNORE\tСписок шаблонов, разделённых двоеточиями и описывающих имена файлов,\n" +" GLOBIGNORE\tСписок шаблонов, разделённых двоеточиями и описывающих имена " +"файлов,\n" " \t\tкоторые будут игнорироваться при развёртывании пути.\n" " HISTFILE\t\tИмя файла, в котором хранится журнал команд.\n" " HISTFILESIZE\tЧисло строк в файле журнала.\n" @@ -5792,11 +5506,15 @@ msgstr "" " HOME\t\tПолный путь к вашему домашнему каталогу.\n" " HOSTNAME\t\tИмя данной системы.\n" " HOSTTYPE\t\tТип процессора, на котором работает данная версия bash.\n" -" IGNOREEOF\tУправляет действием командного процессора при получении символа\n" -" \t\tсимвола конца файла в качестве единственных входных данных. Если задано, тогда значение\n" +" IGNOREEOF\tУправляет действием командного процессора при получении " +"символа\n" +" \t\tсимвола конца файла в качестве единственных входных данных. Если " +"задано, тогда значение\n" " \t\tявляется числом символов EOF, которые могут быть\n" -" \t\tпрочитаны подряд в пустой строке, после чего командный процессор будет закрыт\n" -" \t\t(по умолчанию — 10). Если не задано, EOF означает конец входных данных.\n" +" \t\tпрочитаны подряд в пустой строке, после чего командный процессор " +"будет закрыт\n" +" \t\t(по умолчанию — 10). Если не задано, EOF означает конец входных " +"данных.\n" " MACHTYPE\t\tСтрока с описанием текущей системы, в которой запущен bash.\n" " MAILCHECK\tКак часто (в секундах) bash проверяет наличие новой почты.\n" " MAILPATH\t\tСписок имён файлов, разделённых двоеточиями, в которых bash\n" @@ -5809,13 +5527,15 @@ msgstr "" " PS1\t\tОсновная строка приглашения.\n" " PS2\t\tДополнительная строка приглашения.\n" " PWD\t\tПолный путь до текущего каталога.\n" -" SHELLOPTS\tСписок включённых параметров командного процессора, разделённых двоеточиями.\n" +" SHELLOPTS\tСписок включённых параметров командного процессора, " +"разделённых двоеточиями.\n" " TERM\t\tНазвание текущего типа терминала.\n" " TIMEFORMAT\tФормат вывода данных о времени, показываемых\n" " \t\tкомандой time.\n" " auto_resume\tНепустое значение означает слово в строке запуска команды,\n" " \t\tкоторое сначала ищется в списке\n" -" \t\tостановленных заданий. Если команда найдена, задание переводится в интерактивный режим.\n" +" \t\tостановленных заданий. Если команда найдена, задание переводится в " +"интерактивный режим.\n" " \t\tЗначение «exact» означает, что слово команды должно\n" " \t\tточно совпадать с командой в списке остановленных заданий. \n" " \t\tЗначение «substring» означает, что слово команды\n" @@ -5826,39 +5546,12 @@ msgstr "" " \t\tподстановку журнала. Обычно это «!». Второй символ\n" " \t\tозначает «быструю подстановку». Обычно это «^». \n" " \t\tТретий символ означает примечание журнала. Обычно это «#».\n" -" HISTIGNORE\tСписок шаблонов, разделённых двоеточиями и описывающих команды,\n" +" HISTIGNORE\tСписок шаблонов, разделённых двоеточиями и описывающих " +"команды,\n" " \t\tкоторые должны быть сохранены в журнале.\n" -#: builtins.c:1821 +#: builtins.c:1822 #, fuzzy -#| msgid "" -#| "Add directories to stack.\n" -#| " \n" -#| " Adds a directory to the top of the directory stack, or rotates\n" -#| " the stack, making the new top of the stack the current working\n" -#| " directory. With no arguments, exchanges the top two directories.\n" -#| " \n" -#| " Options:\n" -#| " -n\tSuppresses the normal change of directory when adding\n" -#| " \tdirectories to the stack, so only the stack is manipulated.\n" -#| " \n" -#| " Arguments:\n" -#| " +N\tRotates the stack so that the Nth directory (counting\n" -#| " \tfrom the left of the list shown by `dirs', starting with\n" -#| " \tzero) is at the top.\n" -#| " \n" -#| " -N\tRotates the stack so that the Nth directory (counting\n" -#| " \tfrom the right of the list shown by `dirs', starting with\n" -#| " \tzero) is at the top.\n" -#| " \n" -#| " dir\tAdds DIR to the directory stack at the top, making it the\n" -#| " \tnew current working directory.\n" -#| " \n" -#| " The `dirs' builtin displays the directory stack.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid argument is supplied or the directory\n" -#| " change fails." msgid "" "Add directories to stack.\n" " \n" @@ -5892,7 +5585,8 @@ msgstr "" " \n" " Добавляет каталог в начало стека каталогов или выполняет\n" " ротацию стека, помещая в начало стека текущий рабочий\n" -" каталог. Если аргументы не указаны, меняет местами два первых каталога.\n" +" каталог. Если аргументы не указаны, меняет местами два первых " +"каталога.\n" " \n" " Параметры:\n" " -n\tпредотвращает обычное изменение каталога при добавлении\n" @@ -5916,32 +5610,8 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или удалось\n" " перейти в каталог." -#: builtins.c:1855 +#: builtins.c:1856 #, fuzzy -#| msgid "" -#| "Remove directories from stack.\n" -#| " \n" -#| " Removes entries from the directory stack. With no arguments, removes\n" -#| " the top directory from the stack, and changes to the new top directory.\n" -#| " \n" -#| " Options:\n" -#| " -n\tSuppresses the normal change of directory when removing\n" -#| " \tdirectories from the stack, so only the stack is manipulated.\n" -#| " \n" -#| " Arguments:\n" -#| " +N\tRemoves the Nth entry counting from the left of the list\n" -#| " \tshown by `dirs', starting with zero. For example: `popd +0'\n" -#| " \tremoves the first directory, `popd +1' the second.\n" -#| " \n" -#| " -N\tRemoves the Nth entry counting from the right of the list\n" -#| " \tshown by `dirs', starting with zero. For example: `popd -0'\n" -#| " \tremoves the last directory, `popd -1' the next to last.\n" -#| " \n" -#| " The `dirs' builtin displays the directory stack.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid argument is supplied or the directory\n" -#| " change fails." msgid "" "Remove directories from stack.\n" " \n" @@ -5991,32 +5661,8 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или удалось\n" " перейти в каталог." -#: builtins.c:1885 +#: builtins.c:1886 #, fuzzy -#| msgid "" -#| "Display directory stack.\n" -#| " \n" -#| " Display the list of currently remembered directories. Directories\n" -#| " find their way onto the list with the `pushd' command; you can get\n" -#| " back up through the list with the `popd' command.\n" -#| " \n" -#| " Options:\n" -#| " -c\tclear the directory stack by deleting all of the elements\n" -#| " -l\tdo not print tilde-prefixed versions of directories relative\n" -#| " \tto your home directory\n" -#| " -p\tprint the directory stack with one entry per line\n" -#| " -v\tprint the directory stack with one entry per line prefixed\n" -#| " \twith its position in the stack\n" -#| " \n" -#| " Arguments:\n" -#| " +N\tDisplays the Nth entry counting from the left of the list shown by\n" -#| " \tdirs when invoked without options, starting with zero.\n" -#| " \n" -#| " -N\tDisplays the Nth entry counting from the right of the list shown by\n" -#| " \tdirs when invoked without options, starting with zero.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is supplied or an error occurs." msgid "" "Display directory stack.\n" " \n" @@ -6066,27 +5712,11 @@ msgstr "" " \tпоказанного при вызове без параметров, начиная с нуля.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла ошибка." +" Возвращает успех, если был указан допустимый параметр или не возникла " +"ошибка." -#: builtins.c:1916 +#: builtins.c:1917 #, fuzzy -#| msgid "" -#| "Set and unset shell options.\n" -#| " \n" -#| " Change the setting of each shell option OPTNAME. Without any option\n" -#| " arguments, list all shell options with an indication of whether or not each\n" -#| " is set.\n" -#| " \n" -#| " Options:\n" -#| " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" -#| " -p\tprint each shell option with an indication of its status\n" -#| " -q\tsuppress output\n" -#| " -s\tenable (set) each OPTNAME\n" -#| " -u\tdisable (unset) each OPTNAME\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success if OPTNAME is enabled; fails if an invalid option is\n" -#| " given or OPTNAME is disabled." msgid "" "Set and unset shell options.\n" " \n" @@ -6107,8 +5737,10 @@ msgid "" msgstr "" "Установка и удаление параметров командного процессора.\n" " \n" -" Изменяет настройки указанных параметров командного процессора. Если не указать\n" -" аргумент с параметром, выводит все параметры командного процессора, показывая\n" +" Изменяет настройки указанных параметров командного процессора. Если не " +"указать\n" +" аргумент с параметром, выводит все параметры командного процессора, " +"показывая\n" " какой из них установлен, а какой нет.\n" " \n" " Параметры:\n" @@ -6122,37 +5754,8 @@ msgstr "" " Возвращает успех, если указанный параметр включён. Возвращает ошибку,\n" " если был указан недопустимый параметр или параметр отключён." -#: builtins.c:1937 +#: builtins.c:1938 #, fuzzy -#| msgid "" -#| "Formats and prints ARGUMENTS under control of the FORMAT.\n" -#| " \n" -#| " Options:\n" -#| " -v var\tassign the output to shell variable VAR rather than\n" -#| " \t\tdisplay it on the standard output\n" -#| " \n" -#| " FORMAT is a character string which contains three types of objects: plain\n" -#| " characters, which are simply copied to standard output; character escape\n" -#| " sequences, which are converted and copied to the standard output; and\n" -#| " format specifications, each of which causes printing of the next successive\n" -#| " argument.\n" -#| " \n" -#| " In addition to the standard format specifications described in printf(1),\n" -#| " printf interprets:\n" -#| " \n" -#| " %b\texpand backslash escape sequences in the corresponding argument\n" -#| " %q\tquote the argument in a way that can be reused as shell input\n" -#| " %(fmt)T output the date-time string resulting from using FMT as a format\n" -#| " string for strftime(3)\n" -#| " \n" -#| " The format is re-used as necessary to consume all of the arguments. If\n" -#| " there are fewer arguments than the format requires, extra format\n" -#| " specifications behave as if a zero value or null string, as appropriate,\n" -#| " had been supplied.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is given or a write or assignment\n" -#| " error occurs." msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -6160,27 +5763,36 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: plain\n" -" characters, which are simply copied to standard output; character escape\n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next successive\n" +" format specifications, each of which causes printing of the next " +"successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in printf(1),\n" +" In addition to the standard format specifications described in " +"printf(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" " \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" -" specifications behave as if a zero value or null string, as appropriate,\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" " had been supplied.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or assignment\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" " error occurs." msgstr "" "Форматирует и выводит аргументы согласно указанному формату.\n" @@ -6191,56 +5803,43 @@ msgstr "" " \n" " ФОРМАТ — это символьная строка, содержащая три типа объектов: простые\n" " символы, которые копируются на стандартный вывод, экранирующие\n" -" последовательности, которые преобразовываются и копируются на стандартный\n" +" последовательности, которые преобразовываются и копируются на " +"стандартный\n" " вывод, и спецификации, которые активируют вывод следующего успешного\n" " аргумента.\n" " \n" -" В дополнение к стандартным спецификациям формата, описанным в printf(1),\n" +" В дополнение к стандартным спецификациям формата, описанным в " +"printf(1),\n" " printf интерпретирует:\n" " \n" -" %b\tразвёртывание экранирующих последовательностей с обратной косой чертой в соответствующий аргумент;\n" -" %q\tзаключение аргумента в кавычки, чтобы его можно было повторно использовать в качестве входных данных для командного процессора;\n" -" %(fmt)T вывод строки дата-время, полученной после использования FMT в качестве\n" +" %b\tразвёртывание экранирующих последовательностей с обратной косой " +"чертой в соответствующий аргумент;\n" +" %q\tзаключение аргумента в кавычки, чтобы его можно было повторно " +"использовать в качестве входных данных для командного процессора;\n" +" %(fmt)T вывод строки дата-время, полученной после использования FMT в " +"качестве\n" " строки форматирования для strftime(3)\n" " \n" -" Если необходимо задействовать все аргументы, формат используется повторно. Если\n" +" Если необходимо задействовать все аргументы, формат используется " +"повторно. Если\n" " аргументов меньше, чем требуется для форматирования, дополнительные\n" " спецификации форматирования интерпретируются как содержащие нулевое\n" " или пустое значение.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла ошибка\n" +" Возвращает успех, если был указан допустимый параметр или не возникла " +"ошибка\n" " записи или присвоения." -#: builtins.c:1971 +#: builtins.c:1974 #, fuzzy -#| msgid "" -#| "Specify how arguments are to be completed by Readline.\n" -#| " \n" -#| " For each NAME, specify how arguments are to be completed. If no options\n" -#| " are supplied, existing completion specifications are printed in a way that\n" -#| " allows them to be reused as input.\n" -#| " \n" -#| " Options:\n" -#| " -p\tprint existing completion specifications in a reusable format\n" -#| " -r\tremove a completion specification for each NAME, or, if no\n" -#| " \tNAMEs are supplied, all completion specifications\n" -#| " -D\tapply the completions and actions as the default for commands\n" -#| " \twithout any specific completion defined\n" -#| " -E\tapply the completions and actions to \"empty\" commands --\n" -#| " \tcompletion attempted on a blank line\n" -#| " \n" -#| " When completion is attempted, the actions are applied in the order the\n" -#| " uppercase-letter options are listed above. The -D option takes\n" -#| " precedence over -E.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is supplied or an error occurs." msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no options\n" -" are supplied, existing completion specifications are printed in a way that\n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -6255,20 +5854,24 @@ msgid "" " \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. If multiple options are supplied,\n" -" the -D option takes precedence over -E, and both take precedence over -I.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" "Определение количества аргументов, завершаемых функцией readline.\n" " \n" -" Для каждого имени нужно указать количество завершаемых аргументов. Если параметры\n" +" Для каждого имени нужно указать количество завершаемых аргументов. Если " +"параметры\n" " не указаны, выводятся существующие спецификации завершения формате\n" " для повторного использования.\n" " \n" " Параметры:\n" -" -p\tвывести существующие спецификации завершения в формате для повторного использования\n" +" -p\tвывести существующие спецификации завершения в формате для " +"повторного использования\n" " -r\tудалить спецификации завершения для каждого имени или,\n" " \tесли имена не указаны, все спецификации\n" " -D\tприменить завершения и действия как стандартные для команд,\n" @@ -6281,14 +5884,16 @@ msgstr "" " высокий приоритет, чем -E.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла ошибка." +" Возвращает успех, если был указан допустимый параметр или не возникла " +"ошибка." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches against\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -6297,45 +5902,25 @@ msgstr "" "Вывод возможных завершений в зависимости от параметров.\n" " \n" " compgen предназначен для использования в функциях bash, генерирующих\n" -" возможные завершения. Если указан необязательный аргумент слово, выполняет\n" +" возможные завершения. Если указан необязательный аргумент слово, " +"выполняет\n" " сопоставление со сгенерированным словом.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла ошибка." +" Возвращает успех, если был указан допустимый параметр или не возникла " +"ошибка." -#: builtins.c:2016 +#: builtins.c:2019 #, fuzzy -#| msgid "" -#| "Modify or display completion options.\n" -#| " \n" -#| " Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" -#| " the completion currently being executed. If no OPTIONs are given, print\n" -#| " the completion options for each NAME or the current completion specification.\n" -#| " \n" -#| " Options:\n" -#| " \t-o option\tSet completion option OPTION for each NAME\n" -#| " \t-D\t\tChange options for the \"default\" command completion\n" -#| " \t-E\t\tChange options for the \"empty\" command completion\n" -#| " \n" -#| " Using `+o' instead of `-o' turns off the specified option.\n" -#| " \n" -#| " Arguments:\n" -#| " \n" -#| " Each NAME refers to a command for which a completion specification must\n" -#| " have previously been defined using the `complete' builtin. If no NAMEs\n" -#| " are supplied, compopt must be called by a function currently generating\n" -#| " completions, and the options for that currently-executing completion\n" -#| " generator are modified.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is supplied or NAME does not\n" -#| " have a completion specification defined." msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" -" the completion currently being executed. If no OPTIONs are given, print\n" -" the completion options for each NAME or the current completion specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -6360,8 +5945,10 @@ msgstr "" "Изменение или вывод параметров завершения.\n" " \n" " Изменяет параметры завершения для каждого имени или, если имена\n" -" не указаны, для текущего завершения. Если параметры не указаны, выводит\n" -" параметры завершения для каждого имени или текущую спецификацию завершения.\n" +" не указаны, для текущего завершения. Если параметры не указаны, " +"выводит\n" +" параметры завершения для каждого имени или текущую спецификацию " +"завершения.\n" " \n" " Параметры:\n" " \t-o параметр\tзадать параметр завершения для каждого имени\n" @@ -6373,8 +5960,10 @@ msgstr "" " Аргументы:\n" " \n" " Каждое имя ссылается на команду, для которой уже должна быть определена\n" -" спецификация завершения с помощью встроенной команды «complete». Если имена\n" -" не указаны, функция, которая сейчас генерирует завершения, должна вызвать\n" +" спецификация завершения с помощью встроенной команды «complete». Если " +"имена\n" +" не указаны, функция, которая сейчас генерирует завершения, должна " +"вызвать\n" " compopt, и должны измениться параметры для текущего\n" " генератора завершения.\n" " \n" @@ -6382,52 +5971,27 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или для имени\n" " определена спецификация завершения." -#: builtins.c:2047 +#: builtins.c:2050 #, fuzzy -#| msgid "" -#| "Read lines from the standard input into an indexed array variable.\n" -#| " \n" -#| " Read lines from the standard input into the indexed array variable ARRAY, or\n" -#| " from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" -#| " is the default ARRAY.\n" -#| " \n" -#| " Options:\n" -#| " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied.\n" -#| " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0.\n" -#| " -s count \tDiscard the first COUNT lines read.\n" -#| " -t\t\tRemove a trailing newline from each line read.\n" -#| " -u fd\t\tRead lines from file descriptor FD instead of the standard input.\n" -#| " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -#| " -c quantum\tSpecify the number of lines read between each call to CALLBACK.\n" -#| " \n" -#| " Arguments:\n" -#| " ARRAY\t\tArray variable name to use for file data.\n" -#| " \n" -#| " If -C is supplied without -c, the default quantum is 5000. When\n" -#| " CALLBACK is evaluated, it is supplied the index of the next array\n" -#| " element to be assigned and the line to be assigned to that element\n" -#| " as additional arguments.\n" -#| " \n" -#| " If not supplied with an explicit origin, mapfile will clear ARRAY before\n" -#| " assigning to it.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is given or ARRAY is readonly or\n" -#| " not an indexed array." msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" " -d delim\tUse DELIM to terminate lines, instead of newline\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" " -s count\tDiscard the first COUNT lines read\n" " -t\tRemove a trailing DELIM from each line read (default newline)\n" -" -u fd\tRead lines from file descriptor FD instead of the standard input\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" " -c quantum\tSpecify the number of lines read between each call to\n" " \t\t\tCALLBACK\n" @@ -6440,25 +6004,32 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly or\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" " not an indexed array." msgstr "" "Чтение строк со стандартного ввода в переменную индексированного массива.\n" " \n" -" Читает строки со стандартного ввода в переменную указанного индексированного массива\n" -" или из указанного файлового дескриптора, если указан параметр -u. Переменная $MAPFILE\n" +" Читает строки со стандартного ввода в переменную указанного " +"индексированного массива\n" +" или из указанного файлового дескриптора, если указан параметр -u. " +"Переменная $MAPFILE\n" " является массивом по умолчанию.\n" " \n" " Параметры:\n" -" -n число\tкопировать указанное число строк Если число равно 0, копируются все строки.\n" -" -O начало\tначать присвоение массиву, начиная с заданного указателя По умолчанию указатель равен 0.\n" +" -n число\tкопировать указанное число строк Если число равно 0, " +"копируются все строки.\n" +" -O начало\tначать присвоение массиву, начиная с заданного указателя " +"По умолчанию указатель равен 0.\n" " -s число \tотбросить указанное число первых строк\n" " -t\t\tудалить завершающие переводы строки изо всех прочитанных строк\n" -" -u fd\t\tчитать строки из файлового дескриптора, а не со стандартного входа\n" +" -u fd\t\tчитать строки из файлового дескриптора, а не со стандартного " +"входа\n" " -C callback\tоценивать callback при чтении каждой строки quantum\n" " -c quantum\tчисло строк, читаемых от каждого вызова до callback\n" " \n" @@ -6466,7 +6037,8 @@ msgstr "" " МАССИВ\t\tназвание переменной массива, используемой для данных файла.\n" " \n" " Если параметр -C указан без -c, quantum по умолчанию равен 5000. Когда\n" -" оценивается callback, он предоставляет указатель на следующий присваиваемый\n" +" оценивается callback, он предоставляет указатель на следующий " +"присваиваемый\n" " элемента массива и на строку, присваиваемую этому элементу,\n" " в качестве дополнительных аргументов.\n" " \n" @@ -6474,10 +6046,11 @@ msgstr "" " операции присвоения.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или массив доступен для записи\n" +" Возвращает успех, если был указан допустимый параметр или массив " +"доступен для записи\n" " и является индексированным." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -6487,6 +6060,10 @@ msgstr "" " \n" " Синоним команды «mapfile»." +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: недопустимый ключ ассоциативного массива" + #~ msgid "" #~ "Returns the context of the current subroutine call.\n" #~ " \n" @@ -6524,7 +6101,8 @@ msgstr "" #~ msgstr "brace_expand> " #~ msgid "Attempt to free unknown command type `%d'.\n" -#~ msgstr "Попытка освободить память структуры команды неизвестного типа `%d'.\n" +#~ msgstr "" +#~ "Попытка освободить память структуры команды неизвестного типа `%d'.\n" #~ msgid "Report this to %s\n" #~ msgstr "Сообщите об этом по адресу %s\n" @@ -6633,7 +6211,9 @@ msgstr "" #~ msgstr "подстановка команд" #~ msgid "Can't reopen pipe to command substitution (fd %d): %s" -#~ msgstr "Невозможно вновь открыть канал для подстановки команд (файловый дексриптор %d): %s" +#~ msgstr "" +#~ "Невозможно вновь открыть канал для подстановки команд (файловый " +#~ "дексриптор %d): %s" #~ msgid "$%c: unbound variable" #~ msgstr "$%c: не заданы границы" @@ -6651,7 +6231,8 @@ msgstr "" #~ msgstr "[%s: неверный индекс" #~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xmalloc: невозможно заново выделить %lu байтов (выделено %lu байтов)" +#~ msgstr "" +#~ "xmalloc: невозможно заново выделить %lu байтов (выделено %lu байтов)" #~ msgid "digits occur in two different argv-elements.\n" #~ msgstr "цифры встречаются в двух разных элементах argv.\n" @@ -6720,40 +6301,50 @@ msgstr "" #~ msgstr "случае, для каждого ИМЕНИ определяется псевдокоманда со ЗНАЧЕНИЕМ." #~ msgid "A trailing space in VALUE causes the next word to be checked for" -#~ msgstr "Если на конце ЗНАЧЕНИЯ есть пробелы, при разворачивании псевдокоманды" +#~ msgstr "" +#~ "Если на конце ЗНАЧЕНИЯ есть пробелы, при разворачивании псевдокоманды" #~ msgid "alias substitution when the alias is expanded. Alias returns" #~ msgstr "следующее слово проверяется на подстановку псевдокоманд. Alias" #~ msgid "true unless a NAME is given for which no alias has been defined." -#~ msgstr "возвращает true, если только не задано ИМЯ, для которого нет псевдокоманд." +#~ msgstr "" +#~ "возвращает true, если только не задано ИМЯ, для которого нет псевдокоманд." -#~ msgid "Remove NAMEs from the list of defined aliases. If the -a option is given," -#~ msgstr "Удаляет ИМЕНА из списка определённых псевдокоманд. Если задан параметр -a," +#~ msgid "" +#~ "Remove NAMEs from the list of defined aliases. If the -a option is given," +#~ msgstr "" +#~ "Удаляет ИМЕНА из списка определённых псевдокоманд. Если задан параметр -a," #~ msgid "then remove all alias definitions." #~ msgstr "удаляет все определения псевдокоманд." #~ msgid "Bind a key sequence to a Readline function, or to a macro. The" -#~ msgstr "Связывает последовательность клавиш с функцией Readline или с макросом." +#~ msgstr "" +#~ "Связывает последовательность клавиш с функцией Readline или с макросом." #~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" #~ msgstr "Синтаксис тот же, что и в ~/.inputrc, но должен передаваться" -#~ msgid "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." +#~ msgid "" +#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." #~ msgstr "одним аргументом: bind '\"\\C-x\\C-r\": re-read-init-file'." #~ msgid "Arguments we accept:" #~ msgstr "Принимаемые аргументы:" -#~ msgid " -m keymap Use `keymap' as the keymap for the duration of this" -#~ msgstr " -m раскладка Использовать во время работы программы указанную" +#~ msgid "" +#~ " -m keymap Use `keymap' as the keymap for the duration of this" +#~ msgstr "" +#~ " -m раскладка Использовать во время работы программы указанную" #~ msgid " command. Acceptable keymap names are emacs," #~ msgstr " раскладку. Допустимые имена раскладок: emacs," -#~ msgid " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," -#~ msgstr " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +#~ msgid "" +#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +#~ msgstr "" +#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," #~ msgid " vi-command, and vi-insert." #~ msgstr " vi-command и vi-insert." @@ -6764,7 +6355,8 @@ msgstr "" #~ msgid " -P List function names and bindings." #~ msgstr " -P Вывести список имён функций и связей." -#~ msgid " -p List functions and bindings in a form that can be" +#~ msgid "" +#~ " -p List functions and bindings in a form that can be" #~ msgstr " -p Вывести список имён функций и связей в виде," #~ msgid " reused as input." @@ -6776,26 +6368,40 @@ msgstr "" #~ msgid " -f filename Read key bindings from FILENAME." #~ msgstr " -f имя_файла Прочесть связи из файла." -#~ msgid " -q function-name Query about which keys invoke the named function." -#~ msgstr " -q имя_функции Запрос, какие клавиши вызовут указанную функцию." +#~ msgid "" +#~ " -q function-name Query about which keys invoke the named function." +#~ msgstr "" +#~ " -q имя_функции Запрос, какие клавиши вызовут указанную функцию." #~ msgid " -V List variable names and values" #~ msgstr " -V Вывести список имён и значений переменных." -#~ msgid " -v List variable names and values in a form that can" -#~ msgstr " -v Вывести список имён и значений переменных в виде," +#~ msgid "" +#~ " -v List variable names and values in a form that can" +#~ msgstr "" +#~ " -v Вывести список имён и значений переменных в виде," #~ msgid " be reused as input." #~ msgstr " который можно использовать на входе" -#~ msgid " -S List key sequences that invoke macros and their values" -#~ msgstr " -S Вывести список последовательностей клавиш, вызывающих макросы и их значений." +#~ msgid "" +#~ " -S List key sequences that invoke macros and their " +#~ "values" +#~ msgstr "" +#~ " -S Вывести список последовательностей клавиш, " +#~ "вызывающих макросы и их значений." -#~ msgid " -s List key sequences that invoke macros and their values in" -#~ msgstr " -s Вывести список последовательностей клавиш, вызывающих макросы" +#~ msgid "" +#~ " -s List key sequences that invoke macros and their " +#~ "values in" +#~ msgstr "" +#~ " -s Вывести список последовательностей клавиш, вызывающих " +#~ "макросы" #~ msgid " a form that can be reused as input." -#~ msgstr " и их значений в виде, который можно использовать на входе" +#~ msgstr "" +#~ " и их значений в виде, который можно использовать на " +#~ "входе" #~ msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified," #~ msgstr "Выйти из цикла FOR, WHILE или UNTIL. Если указано N," @@ -6822,64 +6428,89 @@ msgstr "" #~ msgstr "Изменить текущий каталог на заданный. Переменная $HOME содержит" #~ msgid "default DIR. The variable $CDPATH defines the search path for" -#~ msgstr "каталог по умолчанию. Переменная $CDPATH определяет путь, в котором" +#~ msgstr "" +#~ "каталог по умолчанию. Переменная $CDPATH определяет путь, в котором" #~ msgid "the directory containing DIR. Alternative directory names in CDPATH" -#~ msgstr "ищется каталог, содержащий КАТАЛОГ. Альтернативные каталоги в CDPATH" +#~ msgstr "" +#~ "ищется каталог, содержащий КАТАЛОГ. Альтернативные каталоги в CDPATH" #~ msgid "are separated by a colon (:). A null directory name is the same as" -#~ msgstr "разделяются точкой с запятой (:). Пустое имя каталога -- то же самое," +#~ msgstr "" +#~ "разделяются точкой с запятой (:). Пустое имя каталога -- то же самое," #~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," -#~ msgstr "что текущий каталог, т.е. `.'. Если КАТАЛОГ начинается с дроби (/)," +#~ msgstr "" +#~ "что текущий каталог, т.е. `.'. Если КАТАЛОГ начинается с дроби (/)," #~ msgid "then $CDPATH is not used. If the directory is not found, and the" -#~ msgstr "$CDPATh не используется. Если каталог не найден, и установлен параметр" +#~ msgstr "" +#~ "$CDPATh не используется. Если каталог не найден, и установлен параметр" #~ msgid "shell option `cdable_vars' is set, then try the word as a variable" -#~ msgstr "оболочки `cdable_vars', делается попытка интерпретировать это слово как имя" +#~ msgstr "" +#~ "оболочки `cdable_vars', делается попытка интерпретировать это слово как " +#~ "имя" #~ msgid "name. If that variable has a value, then cd to the value of that" -#~ msgstr "переменной. Если эта переменная имеет значение, каталог меняется на это" +#~ msgstr "" +#~ "переменной. Если эта переменная имеет значение, каталог меняется на это" -#~ msgid "variable. The -P option says to use the physical directory structure" -#~ msgstr "значение. Параметр -P указывает использовать физическую структуру каталогов," +#~ msgid "" +#~ "variable. The -P option says to use the physical directory structure" +#~ msgstr "" +#~ "значение. Параметр -P указывает использовать физическую структуру " +#~ "каталогов," -#~ msgid "instead of following symbolic links; the -L option forces symbolic links" -#~ msgstr "а не следовать символчиеским ссылкам, параметр -L заставляет следовать" +#~ msgid "" +#~ "instead of following symbolic links; the -L option forces symbolic links" +#~ msgstr "" +#~ "а не следовать символчиеским ссылкам, параметр -L заставляет следовать" #~ msgid "to be followed." #~ msgstr "символическим ссылкам." #~ msgid "Print the current working directory. With the -P option, pwd prints" -#~ msgstr "Вывести имя текущего рабочего каталога. С параметром -P pwd выводит" +#~ msgstr "" +#~ "Вывести имя текущего рабочего каталога. С параметром -P pwd выводит" #~ msgid "the physical directory, without any symbolic links; the -L option" -#~ msgstr "физический каталог, без символических ссылок, параметр -L заставляет" +#~ msgstr "" +#~ "физический каталог, без символических ссылок, параметр -L заставляет" #~ msgid "makes pwd follow symbolic links." #~ msgstr "pwd следовать символическим ссылкам." -#~ msgid "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" -#~ msgstr "Выполняет КОМАНДУ с АРГУМЕНТАМИ, игнорируя функции оболочки. Если у вас есть" +#~ msgid "" +#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +#~ msgstr "" +#~ "Выполняет КОМАНДУ с АРГУМЕНТАМИ, игнорируя функции оболочки. Если у вас " +#~ "есть" #~ msgid "function called `ls', and you wish to call the command `ls', you can" -#~ msgstr "функция оболочки `ls', а вы хотите вызвать команду `ls', можно использовать" +#~ msgstr "" +#~ "функция оболочки `ls', а вы хотите вызвать команду `ls', можно " +#~ "использовать" -#~ msgid "say \"command ls\". If the -p option is given, a default value is used" -#~ msgstr "\"command ls\". Если задан параметр -p, используется значение $PATH" +#~ msgid "" +#~ "say \"command ls\". If the -p option is given, a default value is used" +#~ msgstr "" +#~ "\"command ls\". Если задан параметр -p, используется значение $PATH" -#~ msgid "for PATH that is guaranteed to find all of the standard utilities. If" +#~ msgid "" +#~ "for PATH that is guaranteed to find all of the standard utilities. If" #~ msgstr "по умолчанию, что гарантирует отыскание стандартных утилит. Если" -#~ msgid "the -V or -v option is given, a string is printed describing COMMAND." +#~ msgid "" +#~ "the -V or -v option is given, a string is printed describing COMMAND." #~ msgstr "задан параметр -V или -v, выводится строка, описывающая КОМАНДУ." #~ msgid "The -V option produces a more verbose description." #~ msgstr "Параметр -V создаёт более подробное описание." #~ msgid "Declare variables and/or give them attributes. If no NAMEs are" -#~ msgstr "Объявляет переменные и/или придаёт им атрибуты. Если не заданы ИМЕНА," +#~ msgstr "" +#~ "Объявляет переменные и/или придаёт им атрибуты. Если не заданы ИМЕНА," #~ msgid "given, then display the values of variables instead. The -p option" #~ msgstr "выводит вместо этого значения переменных. Параметр -p выведет" @@ -6923,11 +6554,13 @@ msgstr "" #~ msgid "name only." #~ msgstr "функции." -#~ msgid "Using `+' instead of `-' turns off the given attribute instead. When" +#~ msgid "" +#~ "Using `+' instead of `-' turns off the given attribute instead. When" #~ msgstr "Использование `+' вместо `-' выключает заданный атрибут. При" #~ msgid "used in a function, makes NAMEs local, as with the `local' command." -#~ msgstr "использовании в функции делает ИМЕНа локальными, как команда `local'." +#~ msgstr "" +#~ "использовании в функции делает ИМЕНа локальными, как команда `local'." #~ msgid "Obsolete. See `declare'." #~ msgstr "Устарела. См. `declare'." @@ -6942,7 +6575,8 @@ msgstr "" #~ msgstr "Выводит АРГУМЕНТЫ. Если задано -n, подавляется завершающий переход" #~ msgid "suppressed. If the -e option is given, interpretation of the" -#~ msgstr "на новую строку. Если задан параметр -e, интерпретируются следующие" +#~ msgstr "" +#~ "на новую строку. Если задан параметр -e, интерпретируются следующие" #~ msgid "following backslash-escaped characters is turned on:" #~ msgstr "экранированные символы:" @@ -6980,14 +6614,18 @@ msgstr "" #~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." #~ msgstr "\t\\число\tсимвол, восьмеричный ASCII-код которого равен ЧИСЛУ" -#~ msgid "You can explicitly turn off the interpretation of the above characters" +#~ msgid "" +#~ "You can explicitly turn off the interpretation of the above characters" #~ msgstr "Вы можете явно выключить интерпретацию вышеприведённых символов" #~ msgid "with the -E option." #~ msgstr "параметром -E." -#~ msgid "Output the ARGs. If -n is specified, the trailing newline is suppressed." -#~ msgstr "Выводит АРГУМЕНТЫ. Если задано -n, подавляется завершающий переход на новую строку." +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "Выводит АРГУМЕНТЫ. Если задано -n, подавляется завершающий переход на " +#~ "новую строку." #~ msgid "Enable and disable builtin shell commands. This allows" #~ msgstr "Включает и блокирует встроенные команды оболочки. Это позволяет" @@ -6996,10 +6634,12 @@ msgstr "" #~ msgstr "использовать внешние команды с теми же именами, что команды" #~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" -#~ msgstr "оболочки. При использовании -n ИМЕНА блокируются, в противном случае" +#~ msgstr "" +#~ "оболочки. При использовании -n ИМЕНА блокируются, в противном случае" #~ msgid "NAMEs are enabled. For example, to use the `test' found on your" -#~ msgstr "включаются. Например, чтобы использовать файл `test', а не встроенную" +#~ msgstr "" +#~ "включаются. Например, чтобы использовать файл `test', а не встроенную" #~ msgid "path instead of the shell builtin version, type `enable -n test'." #~ msgstr "в оболочку версию, введите enable -n test'. На системах," @@ -7008,7 +6648,8 @@ msgstr "" #~ msgstr "поддерживающих динамическую загрузку можно использовать параметр -f" #~ msgid "to load new builtins from the shared object FILENAME. The -d" -#~ msgstr "чтобы загрузить новые встроенные команды из разделяемого объекта ФАЙЛ." +#~ msgstr "" +#~ "чтобы загрузить новые встроенные команды из разделяемого объекта ФАЙЛ." #~ msgid "option will delete a builtin previously loaded with -f. If no" #~ msgstr "Параметр -d удаляет команды, загруженные -f. Если имена, кроме" @@ -7017,7 +6658,8 @@ msgstr "" #~ msgstr "как в параметрах, не заданы, или если задан параметр -p, выводится" #~ msgid "of builtins is printed. The -a option means to print every builtin" -#~ msgstr "список встроенных команд. Параметр -a требует вывести все встроенные" +#~ msgstr "" +#~ "список встроенных команд. Параметр -a требует вывести все встроенные" #~ msgid "with an indication of whether or not it is enabled. The -s option" #~ msgstr "команды с информацией, блокированы ли они. Параметр -s выводит" @@ -7028,17 +6670,22 @@ msgstr "" #~ msgid "option displays a list of all disabled builtins." #~ msgstr "всех блокированных встроенных команд." -#~ msgid "Read ARGs as input to the shell and execute the resulting command(s)." -#~ msgstr "Читает АРГУМЕНТЫ как входной текст оболочки и выполняет полученные команды." +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "Читает АРГУМЕНТЫ как входной текст оболочки и выполняет полученные " +#~ "команды." #~ msgid "Getopts is used by shell procedures to parse positional parameters." -#~ msgstr "Getopts используется процедурами оболочки для анализа параметров командной" +#~ msgstr "" +#~ "Getopts используется процедурами оболочки для анализа параметров командной" #~ msgid "OPTSTRING contains the option letters to be recognized; if a letter" #~ msgstr "строки. СТРОКА_ПАРАМЕТРОВ содержит буквы параметров, которые нужно" #~ msgid "is followed by a colon, the option is expected to have an argument," -#~ msgstr "распознать. Если за буквой следует двоеточие, параметр должен иметь" +#~ msgstr "" +#~ "распознать. Если за буквой следует двоеточие, параметр должен иметь" #~ msgid "which should be separated from it by white space." #~ msgstr "аргумент, отделённый от него промежутком." @@ -7053,7 +6700,8 @@ msgstr "" #~ msgstr "следующего аргумента в переменную оболочки OPTIND. OPTIND" #~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" -#~ msgstr "принимает значение 1 при каждом вызове оболочки или скрипта оболочки." +#~ msgstr "" +#~ "принимает значение 1 при каждом вызове оболочки или скрипта оболочки." #~ msgid "a shell script is invoked. When an option requires an argument," #~ msgstr "Если параметр требует аргумента, getopts помещает этот аргумент" @@ -7062,16 +6710,19 @@ msgstr "" #~ msgstr "в переменную оболочки OPTARG." #~ msgid "getopts reports errors in one of two ways. If the first character" -#~ msgstr "getopts сообщает об ошибках одним из двух способов. Если первый символ" +#~ msgstr "" +#~ "getopts сообщает об ошибках одним из двух способов. Если первый символ" #~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" -#~ msgstr "OPTSTRING -- двоеточие, getopts использует бесшумный способ. В этом" +#~ msgstr "" +#~ "OPTSTRING -- двоеточие, getopts использует бесшумный способ. В этом" #~ msgid "this mode, no error messages are printed. If an illegal option is" #~ msgstr "случае сообщения об ошибках не выводятся. Если найден недопустимый" #~ msgid "seen, getopts places the option character found into OPTARG. If a" -#~ msgstr "параметр, getopts помещает найденный символ в OPTARG. Если не найден" +#~ msgstr "" +#~ "параметр, getopts помещает найденный символ в OPTARG. Если не найден" #~ msgid "required argument is not found, getopts places a ':' into NAME and" #~ msgstr "требуемый аргумент, getopts помещает в ИМЯ ':', а в OPTARG --" @@ -7128,7 +6779,8 @@ msgstr "" #~ msgstr "Если файл не может быть запущен, а оболочка не интерактивна," #~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" -#~ msgstr "производится выход из оболочки, если только не установлена переменная" +#~ msgstr "" +#~ "производится выход из оболочки, если только не установлена переменная" #~ msgid "is set." #~ msgstr "\"no_exit_on_failed_exec\"" @@ -7136,8 +6788,10 @@ msgstr "" #~ msgid "is that of the last command executed." #~ msgstr "завершения будет таким же, как у последней выполненной команды." -#~ msgid "FIRST and LAST can be numbers specifying the range, or FIRST can be a" -#~ msgstr "ПЕРВАЯ и ПОСЛЕДНЯЯ могут быть числами, ограничивающими диапазон, или" +#~ msgid "" +#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +#~ msgstr "" +#~ "ПЕРВАЯ и ПОСЛЕДНЯЯ могут быть числами, ограничивающими диапазон, или" #~ msgid "string, which means the most recent command beginning with that" #~ msgstr "же ПЕРВАЯ может быть строкой, означающей самую недавнюю команду," @@ -7145,10 +6799,13 @@ msgstr "" #~ msgid "string." #~ msgstr "начинающуюся с этой строки." -#~ msgid " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," -#~ msgstr " -e ИМЯ_РЕДАКТОРА выбирает используемый редактор. По умолчанию FCEDIT," +#~ msgid "" +#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +#~ msgstr "" +#~ " -e ИМЯ_РЕДАКТОРА выбирает используемый редактор. По умолчанию FCEDIT," -#~ msgid " then the editor which corresponds to the current readline editing" +#~ msgid "" +#~ " then the editor which corresponds to the current readline editing" #~ msgstr " затем EDITOR, затем редактор, соответствуюший текущему режиму" #~ msgid " mode, then vi." @@ -7160,11 +6817,14 @@ msgstr "" #~ msgid " -n means no line numbers listed." #~ msgstr " -n не выводить номера строк." -#~ msgid " -r means reverse the order of the lines (making it newest listed first)." +#~ msgid "" +#~ " -r means reverse the order of the lines (making it newest listed " +#~ "first)." #~ msgstr " -r вывести строки в обратном порядке (в начале самые новые)." #~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" -#~ msgstr "В формате `fc -s [шаблон=замена] [команда] команда выполняется заново" +#~ msgstr "" +#~ "В формате `fc -s [шаблон=замена] [команда] команда выполняется заново" #~ msgid "re-executed after the substitution OLD=NEW is performed." #~ msgstr "после того, как произведена подстановка." @@ -7176,7 +6836,8 @@ msgstr "" #~ msgstr "команду, начинающуюся с `cc', а `r' заново выполняет последнюю" #~ msgid "Place JOB_SPEC in the foreground, and make it the current job. If" -#~ msgstr "Возвращает задачу с указанным номером из фонового режима и делает её" +#~ msgstr "" +#~ "Возвращает задачу с указанным номером из фонового режима и делает её" #~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" #~ msgstr "текущей задачей. Если номер не задан, используется представление" @@ -7185,10 +6846,12 @@ msgstr "" #~ msgstr "оболочки о текущей задаче." #~ msgid "Place JOB_SPEC in the background, as if it had been started with" -#~ msgstr "Переводит задачу с указанным номером в фоновый режим, как если бы она" +#~ msgstr "" +#~ "Переводит задачу с указанным номером в фоновый режим, как если бы она" #~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" -#~ msgstr "была запущена с `&'. Если номер не задан, используется представление" +#~ msgstr "" +#~ "была запущена с `&'. Если номер не задан, используется представление" #~ msgid "job is used." #~ msgstr "оболочки о текущей задаче." @@ -7205,14 +6868,17 @@ msgstr "" #~ msgid "option causes the shell to forget all remembered locations. If no" #~ msgstr "список положений в памяти. Если аргументы не заданы, выводится" -#~ msgid "arguments are given, information about remembered commands is displayed." +#~ msgid "" +#~ "arguments are given, information about remembered commands is displayed." #~ msgstr "информация о запомненных командах." #~ msgid "Display helpful information about builtin commands. If PATTERN is" -#~ msgstr "Вывести полезную информацию о встроенных командах. Если задан ШАБЛОН," +#~ msgstr "" +#~ "Вывести полезную информацию о встроенных командах. Если задан ШАБЛОН," #~ msgid "specified, gives detailed help on all commands matching PATTERN," -#~ msgstr "вывести подробную справку по всем командам, соответствующим ШАБЛОНУ," +#~ msgstr "" +#~ "вывести подробную справку по всем командам, соответствующим ШАБЛОНУ," #~ msgid "otherwise a list of the builtins is printed." #~ msgstr "в противном случае вывести список встроенных команд." @@ -7221,15 +6887,18 @@ msgstr "" #~ msgstr "Вывести историю команд в виде списка с номерами строк. Изменённые" #~ msgid "with a `*' have been modified. Argument of N says to list only" -#~ msgstr "строки помечаются символом `*'. Аргумент N указывает выводить только" +#~ msgstr "" +#~ "строки помечаются символом `*'. Аргумент N указывает выводить только" #~ msgid "the last N lines. The -c option causes the history list to be" #~ msgstr "последние N строк. Параметр -c очищает историю команд, удаляя" -#~ msgid "cleared by deleting all of the entries. The `-w' option writes out the" +#~ msgid "" +#~ "cleared by deleting all of the entries. The `-w' option writes out the" #~ msgstr "все строки. Параметр `-w' записывает текущую историю в указанный" -#~ msgid "current history to the history file; `-r' means to read the file and" +#~ msgid "" +#~ "current history to the history file; `-r' means to read the file and" #~ msgstr "файл; `-r' читает такой файл и дополняет его содержимым историю" #~ msgid "append the contents to the history list instead. `-a' means" @@ -7256,7 +6925,8 @@ msgstr "" #~ msgid "the history list as a single entry. The -p option means to perform" #~ msgstr "Параметр -p выполняет развёртывание каждого АРГУМЕНТА и выводит" -#~ msgid "history expansion on each ARG and display the result, without storing" +#~ msgid "" +#~ "history expansion on each ARG and display the result, without storing" #~ msgstr "результат, не сохраняя ничего в списке истории команд." #~ msgid "anything in the history list." @@ -7268,41 +6938,53 @@ msgstr "" #~ msgid "to the normal information; the -p option lists process id's only." #~ msgstr "идентификаторы процессов: параметр -p выодит только идентификаторы." -#~ msgid "If -n is given, only processes that have changed status since the last" +#~ msgid "" +#~ "If -n is given, only processes that have changed status since the last" #~ msgstr "Если задано -n, выводятся только процессы, статус которых изменился" -#~ msgid "notification are printed. JOBSPEC restricts output to that job. The" -#~ msgstr "со времени последнего уведомления. Если задан номер задачи, выводится" +#~ msgid "" +#~ "notification are printed. JOBSPEC restricts output to that job. The" +#~ msgstr "" +#~ "со времени последнего уведомления. Если задан номер задачи, выводится" #~ msgid "-r and -s options restrict output to running and stopped jobs only," #~ msgstr "только она. Параметры -r и -s выводит только работающие или только" #~ msgid "respectively. Without options, the status of all active jobs is" -#~ msgstr "остановленные задачи соответственно. Без параметров выодится статус" +#~ msgstr "" +#~ "остановленные задачи соответственно. Без параметров выодится статус" -#~ msgid "printed. If -x is given, COMMAND is run after all job specifications" -#~ msgstr "всех активных задач. Если задано -x, в КОМАНДЕ вместо всех АРГУМЕНТОВ" +#~ msgid "" +#~ "printed. If -x is given, COMMAND is run after all job specifications" +#~ msgstr "" +#~ "всех активных задач. Если задано -x, в КОМАНДЕ вместо всех АРГУМЕНТОВ" -#~ msgid "that appear in ARGS have been replaced with the process ID of that job's" +#~ msgid "" +#~ "that appear in ARGS have been replaced with the process ID of that job's" #~ msgstr "(номеров задач) подставляется идентификатор лидера соответствующей" #~ msgid "process group leader." #~ msgstr "группы процессов, и КОМАНДА выполняется." #~ msgid "Removes each JOBSPEC argument from the table of active jobs." -#~ msgstr "Удаляет все задачи, заданные спецификациями в аргументе, из таблицы задач." +#~ msgstr "" +#~ "Удаляет все задачи, заданные спецификациями в аргументе, из таблицы задач." #~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" -#~ msgstr "Посылает указанным процессам (заданным PID или спецификацией) сигнал" +#~ msgstr "" +#~ "Посылает указанным процессам (заданным PID или спецификацией) сигнал" -#~ msgid "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +#~ msgid "" +#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" #~ msgstr "SIGSPEC. Если отсутствует SIGSPEC, посылается SIGTERM. Аргументом" #~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" -#~ msgstr "параметра `-l' служит список сигналов. Если он присутствует, выводятся" +#~ msgstr "" +#~ "параметра `-l' служит список сигналов. Если он присутствует, выводятся" #~ msgid "be signal numbers for which names should be listed. Kill is a shell" -#~ msgstr "названия сигналов с этими номерами. Kill является встроенной командой" +#~ msgstr "" +#~ "названия сигналов с этими номерами. Kill является встроенной командой" #~ msgid "builtin for two reasons: it allows job IDs to be used instead of" #~ msgstr "оболочки по двум причинам: она позволяет использовать номера задач," @@ -7310,14 +6992,16 @@ msgstr "" #~ msgid "process IDs, and, if you have reached the limit on processes that" #~ msgstr "а не процессов, и если вы исчерпаете лимит созданных процессов," -#~ msgid "you can create, you don't have to start a process to kill another one." +#~ msgid "" +#~ "you can create, you don't have to start a process to kill another one." #~ msgstr "вы не сможете запустить новый процесс, уничтожающий один из старых." #~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" #~ msgstr "Каждый аргумент рассматривается как арифметическое выражение." #~ msgid "is done in long integers with no check for overflow, though division" -#~ msgstr "Вычисление производится над длинными целыми без контроля переполнения," +#~ msgstr "" +#~ "Вычисление производится над длинными целыми без контроля переполнения," #~ msgid "by 0 is trapped and flagged as an error. The following list of" #~ msgstr "хотя деление на ноль отслеживается и считается ошибкой. Операции в" @@ -7406,47 +7090,61 @@ msgstr "" #~ msgid "One line is read from the standard input, and the first word is" #~ msgstr "Со стандартного ввода считывается одна строка, первое её слово" -#~ msgid "assigned to the first NAME, the second word to the second NAME, and so" +#~ msgid "" +#~ "assigned to the first NAME, the second word to the second NAME, and so" #~ msgstr "становится значением первого ИМЕНИ, второе -- второго ИМЕНИ и т.д." -#~ msgid "on, with leftover words assigned to the last NAME. Only the characters" -#~ msgstr "Последнему ИМЕНИ присваивается весь остаток строки. Разделителями слов" +#~ msgid "" +#~ "on, with leftover words assigned to the last NAME. Only the characters" +#~ msgstr "" +#~ "Последнему ИМЕНИ присваивается весь остаток строки. Разделителями слов" #~ msgid "found in $IFS are recognized as word delimiters. The return code is" #~ msgstr "считаются только символы, входящие в $IFS. Код возврата равен нулю," -#~ msgid "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" +#~ msgid "" +#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" #~ msgstr "за исключением случая, если встретился конец файла. Если ИМЕНА не" -#~ msgid "line read is stored in the REPLY variable. If the -r option is given," -#~ msgstr "заданы, прочитанная строка помещается в переменную REPLY. Если задан" +#~ msgid "" +#~ "line read is stored in the REPLY variable. If the -r option is given," +#~ msgstr "" +#~ "заданы, прочитанная строка помещается в переменную REPLY. Если задан" #~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" -#~ msgstr "параметр -r, это означает `сырой' ввод, т.е. символ \\ не экранирует" +#~ msgstr "" +#~ "параметр -r, это означает `сырой' ввод, т.е. символ \\ не экранирует" #~ msgid "the `-p' option is supplied, the string supplied as an argument is" -#~ msgstr "символы. Если задано `-p', перед чтением на вывод в качестве аргумента" +#~ msgstr "" +#~ "символы. Если задано `-p', перед чтением на вывод в качестве аргумента" -#~ msgid "output without a trailing newline before attempting to read. If -a is" -#~ msgstr "подаётся заданная строка (без завершающего символа перевода строки)." +#~ msgid "" +#~ "output without a trailing newline before attempting to read. If -a is" +#~ msgstr "" +#~ "подаётся заданная строка (без завершающего символа перевода строки)." -#~ msgid "supplied, the words read are assigned to sequential indices of ARRAY," +#~ msgid "" +#~ "supplied, the words read are assigned to sequential indices of ARRAY," #~ msgstr "Если задано -a, прочитанные слова становятся значениями элементов" #~ msgid "starting at zero. If -e is supplied and the shell is interactive," -#~ msgstr "МАССИВА, начиная с нулевого. Если задано -c и оболочка интерактивна," +#~ msgstr "" +#~ "МАССИВА, начиная с нулевого. Если задано -c и оболочка интерактивна," #~ msgid "readline is used to obtain the line." #~ msgstr "чтобы получить строку используется readline." -#~ msgid "Causes a function to exit with the return value specified by N. If N" +#~ msgid "" +#~ "Causes a function to exit with the return value specified by N. If N" #~ msgstr "Заставляет функцию завершить работу с кодом возврата, заданным N." #~ msgid "is omitted, the return status is that of the last command." #~ msgstr "Если N опущено, им становится код возврата последней команды." #~ msgid " -a Mark variables which are modified or created for export." -#~ msgstr " -a Экспортировать переменные, которые изменялись или создавались." +#~ msgstr "" +#~ " -a Экспортировать переменные, которые изменялись или создавались." #~ msgid " -b Notify of job termination immediately." #~ msgstr " -b Немедленно выводить сообщения о завершении задач." @@ -7460,7 +7158,8 @@ msgstr "" #~ msgid " -h Remember the location of commands as they are looked up." #~ msgstr " -h Запоминать расположение обработанных команд." -#~ msgid " -i Force the shell to be an \"interactive\" one. Interactive shells" +#~ msgid "" +#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" #~ msgstr " -i Сделать оболочку \"интерактивной\". Интерактивные оболочки" #~ msgid " always read `~/.bashrc' on startup." @@ -7491,7 +7190,8 @@ msgstr "" #~ msgstr " braceexpand то же, что -B" #~ msgid " emacs use an emacs-style line editing interface" -#~ msgstr " emacs использовать стиль редактирования строк emacs" +#~ msgstr "" +#~ " emacs использовать стиль редактирования строк emacs" #~ msgid " errexit same as -e" #~ msgstr " errexit то же, что -e" @@ -7508,8 +7208,10 @@ msgstr "" #~ msgid " interactive-comments" #~ msgstr " interactive-comments" -#~ msgid " allow comments to appear in interactive commands" -#~ msgstr " допускает комментарии в интерактивных командах" +#~ msgid "" +#~ " allow comments to appear in interactive commands" +#~ msgstr "" +#~ " допускает комментарии в интерактивных командах" #~ msgid " keyword same as -k" #~ msgstr " keyword то же, что -k" @@ -7538,10 +7240,12 @@ msgstr "" #~ msgid " physical same as -P" #~ msgstr " physical то же, что -P" -#~ msgid " posix change the behavior of bash where the default" +#~ msgid "" +#~ " posix change the behavior of bash where the default" #~ msgstr " posix привести поведение bash, по умолчанию не" -#~ msgid " operation differs from the 1003.2 standard to" +#~ msgid "" +#~ " operation differs from the 1003.2 standard to" #~ msgstr " соответствующее стандарту 1003.2, в" #~ msgid " match the standard" @@ -7559,14 +7263,18 @@ msgstr "" #~ msgid " xtrace same as -x" #~ msgstr " xtrace то же, что -x" -#~ msgid " -p Turned on whenever the real and effective user ids do not match." -#~ msgstr " -p Если реальный и эффективный uid не совпадают, включается всегда." +#~ msgid "" +#~ " -p Turned on whenever the real and effective user ids do not match." +#~ msgstr "" +#~ " -p Если реальный и эффективный uid не совпадают, включается всегда." #~ msgid " Disables processing of the $ENV file and importing of shell" #~ msgstr " Отключает обработку файла $ENV и импорт функций оболочки." -#~ msgid " functions. Turning this option off causes the effective uid and" -#~ msgstr " При выключении этого параметра эффективные uid и gid становятся" +#~ msgid "" +#~ " functions. Turning this option off causes the effective uid and" +#~ msgstr "" +#~ " При выключении этого параметра эффективные uid и gid становятся" #~ msgid " gid to be set to the real uid and gid." #~ msgstr " равными реальным." @@ -7575,7 +7283,8 @@ msgstr "" #~ msgstr " -t Завершить работу после чтения и выполнения одной команды." #~ msgid " -u Treat unset variables as an error when substituting." -#~ msgstr " -u При подстановке считать не установленные переменные ошибками." +#~ msgstr "" +#~ " -u При подстановке считать не установленные переменные ошибками." #~ msgid " -v Print shell input lines as they are read." #~ msgstr " -v Выводить прочитанные строки входного текста оболочки." @@ -7599,7 +7308,8 @@ msgstr "" #~ msgstr " обычных файлов при перенаправлении вывода." #~ msgid " -P If set, do not follow symbolic links when executing commands" -#~ msgstr " -P Не следовать символическим ссылкам при выполнении таких команд," +#~ msgstr "" +#~ " -P Не следовать символическим ссылкам при выполнении таких команд," #~ msgid " such as cd which change the current directory." #~ msgstr " как cd, т.е. изменяющих текущий каталог." @@ -7608,9 +7318,11 @@ msgstr "" #~ msgstr "Использование + вместо - отключает флаг. Эти флаги могут также" #~ msgid "flags can also be used upon invocation of the shell. The current" -#~ msgstr "использоваться при запуске оболочки. Текущий набор флагов содержится" +#~ msgstr "" +#~ "использоваться при запуске оболочки. Текущий набор флагов содержится" -#~ msgid "set of flags may be found in $-. The remaining n ARGs are positional" +#~ msgid "" +#~ "set of flags may be found in $-. The remaining n ARGs are positional" #~ msgstr "в $-. Остальные n аргументов -- позиционные параметры, и им, по" #~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" @@ -7623,7 +7335,8 @@ msgstr "" #~ msgstr "Для каждого ИМЕНИ удаляет соответствующую переменную или функцию." #~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," -#~ msgstr "Если задано -v, unset влияет только на переменные, если -f -- только" +#~ msgstr "" +#~ "Если задано -v, unset влияет только на переменные, если -f -- только" #~ msgid "unset will only act on functions. With neither flag, unset first" #~ msgstr "на функции. Без флагов unset в первую очередь пытается удалить" @@ -7631,7 +7344,8 @@ msgstr "" #~ msgid "tries to unset a variable, and if that fails, then tries to unset a" #~ msgstr "переменную, если это не удаётся -- функцию. Некоторые переменные" -#~ msgid "function. Some variables (such as PATH and IFS) cannot be unset; also" +#~ msgid "" +#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" #~ msgstr "(такие как PATH и IFS) не могут быть удалены. См." #~ msgid "see readonly." @@ -7658,19 +7372,24 @@ msgstr "" #~ msgid "processing." #~ msgstr "параметров." -#~ msgid "The given NAMEs are marked readonly and the values of these NAMEs may" -#~ msgstr "Заданные ИМЕНА помечаются только для чтения, и значения этих ИМЁН не" +#~ msgid "" +#~ "The given NAMEs are marked readonly and the values of these NAMEs may" +#~ msgstr "" +#~ "Заданные ИМЕНА помечаются только для чтения, и значения этих ИМЁН не" #~ msgid "not be changed by subsequent assignment. If the -f option is given," -#~ msgstr "могут изменяться в последующих присваиваниях. Если задан параметр -f," +#~ msgstr "" +#~ "могут изменяться в последующих присваиваниях. Если задан параметр -f," #~ msgid "then functions corresponding to the NAMEs are so marked. If no" #~ msgstr "так помечаются функции с соответствующими ИМЕНАМИ. Если аргументы" -#~ msgid "arguments are given, or if `-p' is given, a list of all readonly names" +#~ msgid "" +#~ "arguments are given, or if `-p' is given, a list of all readonly names" #~ msgstr "не заданы, или если задано `-p', выводится список имён только для" -#~ msgid "is printed. An argument of `-n' says to remove the readonly property" +#~ msgid "" +#~ "is printed. An argument of `-n' says to remove the readonly property" #~ msgstr "чтения. Аргумент `-n' указывает снять свойство `только для чтения'" #~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" @@ -7679,8 +7398,10 @@ msgstr "" #~ msgid "an array variable. An argument of `--' disables further option" #~ msgstr "как массив. Аргумент `--' прекращает дальнейшую обработку" -#~ msgid "The positional parameters from $N+1 ... are renamed to $1 ... If N is" -#~ msgstr "Позиционные параметры начиная с $N+1 переобозначаются как $1,... Если" +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is" +#~ msgstr "" +#~ "Позиционные параметры начиная с $N+1 переобозначаются как $1,... Если" #~ msgid "not given, it is assumed to be 1." #~ msgstr "N не задано, оно предполагается равным 1." @@ -7719,7 +7440,8 @@ msgstr "" #~ msgstr " -b ФАЙЛ Истина, если файл -- специальный блочный файл." #~ msgid " -c FILE True if file is character special." -#~ msgstr " -c ФАЙл Истина, если файл -- специальный символьный файл." +#~ msgstr "" +#~ " -c ФАЙл Истина, если файл -- специальный символьный файл." #~ msgid " -d FILE True if file is a directory." #~ msgstr " -d ФАЙЛ Истина, если файл -- каталог." @@ -7728,19 +7450,23 @@ msgstr "" #~ msgstr " -e ФАЙЛ Истина, если файл существует." #~ msgid " -f FILE True if file exists and is a regular file." -#~ msgstr " -f ФАЙЛ Истина, если файл существует и является обычным файлом." +#~ msgstr "" +#~ " -f ФАЙЛ Истина, если файл существует и является обычным файлом." #~ msgid " -g FILE True if file is set-group-id." #~ msgstr " -g ФАЙЛ Истина, если у файла установлен атрибут SGID." #~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." -#~ msgstr " -h ФАЙЛ Истина, если файл -- символическая ссылка. Используйте \"-L\"." +#~ msgstr "" +#~ " -h ФАЙЛ Истина, если файл -- символическая ссылка. Используйте " +#~ "\"-L\"." #~ msgid " -L FILE True if file is a symbolic link." #~ msgstr " -L ФАЙЛ Истина, если файл -- символическая ссылка." #~ msgid " -k FILE True if file has its \"sticky\" bit set." -#~ msgstr " -k ФАЙЛ Истина, если у файла устанолвен \"бит привязчивости\"." +#~ msgstr "" +#~ " -k ФАЙЛ Истина, если у файла устанолвен \"бит привязчивости\"." #~ msgid " -p FILE True if file is a named pipe." #~ msgstr " -p ФАЙЛ Истина, если файл -- именованный канал." @@ -7755,7 +7481,9 @@ msgstr "" #~ msgstr " -S ФАЙЛ Истина, если файл -- сокет." #~ msgid " -t FD True if FD is opened on a terminal." -#~ msgstr " -t FD Истина, если файл с дескриптором FD связан с терминалом." +#~ msgstr "" +#~ " -t FD Истина, если файл с дескриптором FD связан с " +#~ "терминалом." #~ msgid " -u FILE True if the file is set-user-id." #~ msgstr " -u ФАЙЛ Истина, если у файла установлен атрибут SUID." @@ -7769,11 +7497,14 @@ msgstr "" #~ msgid " -O FILE True if the file is effectively owned by you." #~ msgstr " -O ФАЙЛ Истина, если вы -- эффективный владелец файла." -#~ msgid " -G FILE True if the file is effectively owned by your group." -#~ msgstr " -G ФАЙЛ Истина, если ваша группа -- эффективная группа файла." +#~ msgid "" +#~ " -G FILE True if the file is effectively owned by your group." +#~ msgstr "" +#~ " -G ФАЙЛ Истина, если ваша группа -- эффективная группа файла." #~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" -#~ msgstr " ФАЙЛ1 -nt ФАЙЛ2 Истина, если файл1 более новый (по дате последнего" +#~ msgstr "" +#~ " ФАЙЛ1 -nt ФАЙЛ2 Истина, если файл1 более новый (по дате последнего" #~ msgid " modification date) file2." #~ msgstr " изменения), чем файл2." @@ -7811,14 +7542,20 @@ msgstr "" #~ msgid " STRING1 < STRING2" #~ msgstr " СТРОКА1 < СТРОКА2" -#~ msgid " True if STRING1 sorts before STRING2 lexicographically" -#~ msgstr " Истина, если СТРОКА1 лексикографически стоит раньше СТРОКИ2" +#~ msgid "" +#~ " True if STRING1 sorts before STRING2 lexicographically" +#~ msgstr "" +#~ " Истина, если СТРОКА1 лексикографически стоит раньше " +#~ "СТРОКИ2" #~ msgid " STRING1 > STRING2" #~ msgstr " СТРОКА1 > СТРОКА2" -#~ msgid " True if STRING1 sorts after STRING2 lexicographically" -#~ msgstr " Истина, если СТРОКА1 лексикографически стоит позже СТРОКИ2" +#~ msgid "" +#~ " True if STRING1 sorts after STRING2 lexicographically" +#~ msgstr "" +#~ " Истина, если СТРОКА1 лексикографически стоит позже " +#~ "СТРОКИ2" #~ msgid "Other operators:" #~ msgstr "Прочие операции:" @@ -7839,9 +7576,11 @@ msgstr "" #~ msgstr " -lt, -le, -gt или -ge." #~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," -#~ msgstr "Бинарные арифметические операции возвращают истину, если АРГ1 равен," +#~ msgstr "" +#~ "Бинарные арифметические операции возвращают истину, если АРГ1 равен," -#~ msgid "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +#~ msgid "" +#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" #~ msgstr "не равен, меньше, меньше или равен, больше или больше или равен" #~ msgid "than ARG2." @@ -7860,22 +7599,27 @@ msgstr "" #~ msgstr "запущенных из оболочки." #~ msgid "The command ARG is to be read and executed when the shell receives" -#~ msgstr "Команда АРГ должна быть прочитана и выполнена при получении оболочкой" +#~ msgstr "" +#~ "Команда АРГ должна быть прочитана и выполнена при получении оболочкой" #~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" -#~ msgstr "указанного(ых) сигнала(ов). Если АРГ не задан, все указанные сигналы" +#~ msgstr "" +#~ "указанного(ых) сигнала(ов). Если АРГ не задан, все указанные сигналы" #~ msgid "reset to their original values. If ARG is the null string each" -#~ msgstr "обрабатываются обработчиками по умолчанию. Если АРГ -- пустая строка," +#~ msgstr "" +#~ "обрабатываются обработчиками по умолчанию. Если АРГ -- пустая строка," #~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." -#~ msgstr "все указанные сигналы будут игнорироваться оболочкой и вызываемыми ей" +#~ msgstr "" +#~ "все указанные сигналы будут игнорироваться оболочкой и вызываемыми ей" #~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" #~ msgstr "командами. Если задан сигнал EXIT (0), команда АРГ выполняется при" #~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" -#~ msgstr "выходе из оболочки, если DEBUG, АРГ выполняется при выполнении каждой" +#~ msgstr "" +#~ "выходе из оболочки, если DEBUG, АРГ выполняется при выполнении каждой" #~ msgid "command. If ARG is `-p' then the trap commands associated with" #~ msgstr "команды. Если АРГ -- `-p', выводятся команды, связанные с заданными" @@ -7886,10 +7630,12 @@ msgstr "" #~ msgid "only `-p' is given, trap prints the list of commands associated with" #~ msgstr "trap выводит список команд, связанных со всеми сигналами. Сигнал" -#~ msgid "each signal number. SIGNAL_SPEC is either a signal name in " +#~ msgid "" +#~ "each signal number. SIGNAL_SPEC is either a signal name in " #~ msgstr "задаётся либо своим именем в , либо номером. `trap -l'" -#~ msgid "or a signal number. `trap -l' prints a list of signal names and their" +#~ msgid "" +#~ "or a signal number. `trap -l' prints a list of signal names and their" #~ msgstr "выводит список имён сигналов и соответствующих им номеров." #~ msgid "corresponding numbers. Note that a signal can be sent to the shell" @@ -7904,26 +7650,33 @@ msgstr "" #~ msgid "If the -t option is used, returns a single word which is one of" #~ msgstr "Если задан параметр -t, возвращает слово -- `alias', `keyword'," -#~ msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +#~ msgid "" +#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" #~ msgstr "`function', `builtin', `file' или `' -- если, соответственно, ИМЯ" -#~ msgid "alias, shell reserved word, shell function, shell builtin, disk file," +#~ msgid "" +#~ "alias, shell reserved word, shell function, shell builtin, disk file," #~ msgstr "является псевдокомандой, зарезервированным словом, функцией, или" #~ msgid "or unfound, respectively." #~ msgstr "встроенной командой оболочки, дисковым файлом или не найдено." #~ msgid "If the -p flag is used, either returns the name of the disk file" -#~ msgstr "При использовании флага -p либо возвращается имя выполняемого дискового файла," +#~ msgstr "" +#~ "При использовании флага -p либо возвращается имя выполняемого дискового " +#~ "файла," #~ msgid "that would be executed, or nothing if -t would not return `file'." #~ msgstr "либо ничего, если -t вернуло бы значение, отличное от `file'" #~ msgid "If the -a flag is used, displays all of the places that contain an" -#~ msgstr "При использовании флага -a выводится расположение всех исполняемых файлов" +#~ msgstr "" +#~ "При использовании флага -a выводится расположение всех исполняемых файлов" -#~ msgid "executable named `file'. This includes aliases and functions, if and" -#~ msgstr "с указанным именем. Если одновременно не используется флаг -p и только" +#~ msgid "" +#~ "executable named `file'. This includes aliases and functions, if and" +#~ msgstr "" +#~ "с указанным именем. Если одновременно не используется флаг -p и только" #~ msgid "only if the -p flag is not also used." #~ msgstr "тогда, выводятся также псевдокоманды и функции." @@ -7983,16 +7736,19 @@ msgstr "" #~ msgstr " -v\tразмер виртуальной памяти" #~ msgid "If LIMIT is given, it is the new value of the specified resource." -#~ msgstr "Если задано ОГРАНИЧЕНИЕ, оно задёт новое значение для указанного ресурса." +#~ msgstr "" +#~ "Если задано ОГРАНИЧЕНИЕ, оно задёт новое значение для указанного ресурса." #~ msgid "Otherwise, the current value of the specified resource is printed." -#~ msgstr "В противном случае выводится текущее значение для указанного ресурса." +#~ msgstr "" +#~ "В противном случае выводится текущее значение для указанного ресурса." #~ msgid "If no option is given, then -f is assumed. Values are in 1k" #~ msgstr "Если параметры не заданы, предполагается, что задано -f. Значения" #~ msgid "increments, except for -t, which is in seconds, -p, which is in" -#~ msgstr "измеряются в КБ, кроме -t, измеряемого в секундах, -p, единица измерения" +#~ msgstr "" +#~ "измеряются в КБ, кроме -t, измеряемого в секундах, -p, единица измерения" #~ msgid "increments of 512 bytes, and -u, which is an unscaled number of" #~ msgstr "которого -- 512 байтов, и -u, задающего безразмерное число" @@ -8000,38 +7756,52 @@ msgstr "" #~ msgid "processes." #~ msgstr "процессов." -#~ msgid "The user file-creation mask is set to MODE. If MODE is omitted, or if" -#~ msgstr "Устанавливает маску создания пользователем файлов в РЕЖИМ. Если опущен" +#~ msgid "" +#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" +#~ msgstr "" +#~ "Устанавливает маску создания пользователем файлов в РЕЖИМ. Если опущен" -#~ msgid "`-S' is supplied, the current value of the mask is printed. The `-S'" -#~ msgstr "РЕЖИМ или задан параметр -S выводится текущее значение маски. Параметр" +#~ msgid "" +#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" +#~ msgstr "" +#~ "РЕЖИМ или задан параметр -S выводится текущее значение маски. Параметр" -#~ msgid "option makes the output symbolic; otherwise an octal number is output." +#~ msgid "" +#~ "option makes the output symbolic; otherwise an octal number is output." #~ msgstr "-S делает вывод символическим, в противном случае используется" #~ msgid "If MODE begins with a digit, it is interpreted as an octal number," -#~ msgstr "восьмеричое число. Если РЕЖИм начинается с цифры, он интерпретируется" +#~ msgstr "" +#~ "восьмеричое число. Если РЕЖИм начинается с цифры, он интерпретируется" -#~ msgid "otherwise it is a symbolic mode string like that accepted by chmod(1)." -#~ msgstr "как восьмеричное число, в противном случае как строка, принимаемая chmod(1)." +#~ msgid "" +#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." +#~ msgstr "" +#~ "как восьмеричное число, в противном случае как строка, принимаемая " +#~ "chmod(1)." -#~ msgid "Wait for the specified process and report its termination status. If" -#~ msgstr "Подождать завершения указанного процесса и сообщить код завершения. Если" +#~ msgid "" +#~ "Wait for the specified process and report its termination status. If" +#~ msgstr "" +#~ "Подождать завершения указанного процесса и сообщить код завершения. Если" #~ msgid "N is not given, all currently active child processes are waited for," -#~ msgstr "N не задано, ожидается завершение работы всех активных дочерних процессов" +#~ msgstr "" +#~ "N не задано, ожидается завершение работы всех активных дочерних процессов" #~ msgid "and the return code is zero. N may be a process ID or a job" #~ msgstr "и код возврата равен 0. N может быть идентификатором процесса" #~ msgid "specification; if a job spec is given, all processes in the job's" -#~ msgstr "или спецификацией задачи, если задана спецификация задачи, ожидается" +#~ msgstr "" +#~ "или спецификацией задачи, если задана спецификация задачи, ожидается" #~ msgid "pipeline are waited for." #~ msgstr "завершение работы всех процессов конвейера задачи." #~ msgid "and the return code is zero. N is a process ID; if it is not given," -#~ msgstr "и код возврата равен 0. N -- идентификатор процесса, если он не задан," +#~ msgstr "" +#~ "и код возврата равен 0. N -- идентификатор процесса, если он не задан," #~ msgid "all child processes of the shell are waited for." #~ msgstr "ожидается завершение работы всех дочерних процессов оболочки." @@ -8039,10 +7809,13 @@ msgstr "" #~ msgid "The `for' loop executes a sequence of commands for each member in a" #~ msgstr "Цикл `for' выполняет последовательность команд для каждого члена" -#~ msgid "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" -#~ msgstr "списка. Если отсутствует `in СЛОВА ...;', предполагается, что задано" +#~ msgid "" +#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +#~ msgstr "" +#~ "списка. Если отсутствует `in СЛОВА ...;', предполагается, что задано" -#~ msgid "assumed. For each element in WORDS, NAME is set to that element, and" +#~ msgid "" +#~ "assumed. For each element in WORDS, NAME is set to that element, and" #~ msgstr "`in \"$@\"'. Для каждого из СЛОВ ИМЕНИ присваивается его значение" #~ msgid "the COMMANDS are executed." @@ -8052,13 +7825,15 @@ msgstr "" #~ msgstr "СЛОВА разворачиваются и образуют список слов. Полученный список" #~ msgid "set of expanded words is printed on the standard error, each" -#~ msgstr "выводится на стандартный поток ошибок, каждому приписывается спереди" +#~ msgstr "" +#~ "выводится на стандартный поток ошибок, каждому приписывается спереди" #~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" #~ msgstr "число. Если `in СЛОВА' отсутствует, предполагается заданным" #~ msgid "is assumed. The PS3 prompt is then displayed and a line read" -#~ msgstr "`in \"$@\"'. Затем выводится приглашение PS3 и со стандартного ввода" +#~ msgstr "" +#~ "`in \"$@\"'. Затем выводится приглашение PS3 и со стандартного ввода" #~ msgid "from the standard input. If the line consists of the number" #~ msgstr "считывается строка. Если строка состоит из числа, соответствующего" @@ -8079,34 +7854,47 @@ msgstr "" #~ msgstr "сохраняется в переменной REPLY. После каждого выбора выполняются" #~ msgid "until a break or return command is executed." -#~ msgstr "КОМАНДЫ до тех пор, пока не будет выполнена команда break или return." +#~ msgstr "" +#~ "КОМАНДЫ до тех пор, пока не будет выполнена команда break или return." #~ msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" -#~ msgstr "Выполняет КОМАНДЫ в зависимости от того, какому ШАБЛОНУ соответствует" +#~ msgstr "" +#~ "Выполняет КОМАНДЫ в зависимости от того, какому ШАБЛОНУ соответствует" #~ msgid "`|' is used to separate multiple patterns." -#~ msgstr "СЛОВО. Для разделения нескольких допустимых шаблонов используется `|'." +#~ msgstr "" +#~ "СЛОВО. Для разделения нескольких допустимых шаблонов используется `|'." -#~ msgid "The if COMMANDS are executed. If the exit status is zero, then the then" -#~ msgstr "Выполняются КОМАНДЫ, заданные в if. Если код возврата нулевой, выполняются" +#~ msgid "" +#~ "The if COMMANDS are executed. If the exit status is zero, then the then" +#~ msgstr "" +#~ "Выполняются КОМАНДЫ, заданные в if. Если код возврата нулевой, выполняются" -#~ msgid "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +#~ msgid "" +#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" #~ msgstr "КОМАНДЫ then, иначе по очереди выполняются КОМАНДЫ elif, и если код" -#~ msgid "in turn, and if the exit status is zero, the corresponding then COMMANDS" -#~ msgstr "возврата нулевой, выполняются соответствующие КОМАНДЫ then и выполнение" +#~ msgid "" +#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" +#~ msgstr "" +#~ "возврата нулевой, выполняются соответствующие КОМАНДЫ then и выполнение" -#~ msgid "are executed and the if command completes. Otherwise, the else COMMANDS" -#~ msgstr "команды if завершается. В противном случае выполняются КОМАНДЫ else," +#~ msgid "" +#~ "are executed and the if command completes. Otherwise, the else COMMANDS" +#~ msgstr "" +#~ "команды if завершается. В противном случае выполняются КОМАНДЫ else," -#~ msgid "are executed, if present. The exit status is the exit status of the last" +#~ msgid "" +#~ "are executed, if present. The exit status is the exit status of the last" #~ msgstr "если они присутствуют. Код возврата равен коду возврата последней" #~ msgid "command executed, or zero if no condition tested true." -#~ msgstr "выполненной команды, либо нулю, если ни одно условие не было истинным." +#~ msgstr "" +#~ "выполненной команды, либо нулю, если ни одно условие не было истинным." #~ msgid "Expand and execute COMMANDS as long as the final command in the" -#~ msgstr "Разворачивает и выполняет КОМАНДЫ до тех пор, пока последняя команда" +#~ msgstr "" +#~ "Разворачивает и выполняет КОМАНДЫ до тех пор, пока последняя команда" #~ msgid "`while' COMMANDS has an exit status of zero." #~ msgstr "предложения `while' не завершит работу с нулевым кодом возврата." @@ -8130,12 +7918,15 @@ msgstr "" #~ msgstr "перенаправление для целого набора команд." #~ msgid "This is similar to the `fg' command. Resume a stopped or background" -#~ msgstr "Похоже на команду `fg'. Продолжает выполнение остановленной или фоновой" +#~ msgstr "" +#~ "Похоже на команду `fg'. Продолжает выполнение остановленной или фоновой" #~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" -#~ msgstr "задачи. Если заданы ЦИФРЫ, использяется задача с этим номером, а если" +#~ msgstr "" +#~ "задачи. Если заданы ЦИФРЫ, использяется задача с этим номером, а если" -#~ msgid "WORD, then the job whose name begins with WORD is used. Following the" +#~ msgid "" +#~ "WORD, then the job whose name begins with WORD is used. Following the" #~ msgstr "СЛОВО -- задача, имя которой начинается с этого слова. Завершение" #~ msgid "job specification with a `&' places the job in the background." @@ -8150,7 +7941,8 @@ msgstr "" #~ msgid "\t\twhen the argument to `cd' is not found in the current" #~ msgstr "\t\tаргумент команды `cd', если он не найден в текущем" -#~ msgid "HISTFILE The name of the file where your command history is stored." +#~ msgid "" +#~ "HISTFILE The name of the file where your command history is stored." #~ msgstr "HISTFILE Имя файла, где сохраняется история команд." #~ msgid "HISTFILESIZE The maximum number of lines this file can contain." @@ -8165,11 +7957,15 @@ msgstr "" #~ msgid "HOME The complete pathname to your login directory." #~ msgstr "HOME Полный путь к домашнему каталогу." -#~ msgid "HOSTTYPE The type of CPU this version of Bash is running under." -#~ msgstr "HOSTTYPE Тип процессора, на котором работает эта версия Bash." +#~ msgid "" +#~ "HOSTTYPE The type of CPU this version of Bash is running under." +#~ msgstr "" +#~ "HOSTTYPE Тип процессора, на котором работает эта версия Bash." -#~ msgid "IGNOREEOF Controls the action of the shell on receipt of an EOF" -#~ msgstr "IGNOREEOF Управляет действиями, совершаемыми оболочкой при вводе" +#~ msgid "" +#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" +#~ msgstr "" +#~ "IGNOREEOF Управляет действиями, совершаемыми оболочкой при вводе" #~ msgid "\t\tcharacter as the sole input. If set, then the value" #~ msgstr "\t\tсимвола конца файла. Если установлена, её значение -- число" @@ -8181,10 +7977,12 @@ msgstr "" #~ msgstr "\t\tв пустой строке, после чего оболочка завершит работу" #~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." -#~ msgstr "\t\t(по умолчанию 10). Если не установлена, EOF обозначает конец ввода." +#~ msgstr "" +#~ "\t\t(по умолчанию 10). Если не установлена, EOF обозначает конец ввода." #~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." -#~ msgstr "MAILCHECK\tКак часто, в секундах, Bash проверяет наличие новой почты." +#~ msgstr "" +#~ "MAILCHECK\tКак часто, в секундах, Bash проверяет наличие новой почты." #~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" #~ msgstr "MAILPATH\tРазделённый запятыми список имён файлов, где Bash" @@ -8217,7 +8015,8 @@ msgstr "" #~ msgstr "TERM Имя типа текущего терминала." #~ msgid "auto_resume Non-null means a command word appearing on a line by" -#~ msgstr "auto_resume Ненулевые значения слов команд, встречающиеся в строке" +#~ msgstr "" +#~ "auto_resume Ненулевые значения слов команд, встречающиеся в строке" #~ msgid "\t\titself is first looked for in the list of currently" #~ msgstr "\t\tотдельно, сначала ищутся в списке остановленных" @@ -8243,8 +8042,10 @@ msgstr "" #~ msgid "command_oriented_history" #~ msgstr "command_oriented_history" -#~ msgid " Non-null means to save multiple-line commands together on" -#~ msgstr " Ненулевое значение означает, что многострочные команды" +#~ msgid "" +#~ " Non-null means to save multiple-line commands together on" +#~ msgstr "" +#~ " Ненулевое значение означает, что многострочные команды" #~ msgid " a single history line." #~ msgstr " будут сохраняться в одной строке истории." @@ -8342,7 +8143,8 @@ msgstr "" #~ msgid "\tremoves the last directory, `popd -1' the next to last." #~ msgstr "\tудаляет последний каталог, `popd -1' -- предпоследний." -#~ msgid "-n\tsuppress the normal change of directory when removing directories" +#~ msgid "" +#~ "-n\tsuppress the normal change of directory when removing directories" #~ msgstr "-n\tподавляет обычную смену каталога при удалении каталогов из" #~ msgid "\tfrom the stack, so only the stack is manipulated." @@ -8352,15 +8154,19 @@ msgstr "" #~ msgstr "Выводит список запомненных на данный момент каталогов. Каталоги" #~ msgid "find their way onto the list with the `pushd' command; you can get" -#~ msgstr "попадают в список при использовании команды `pushd', вы можете забрать" +#~ msgstr "" +#~ "попадают в список при использовании команды `pushd', вы можете забрать" #~ msgid "back up through the list with the `popd' command." #~ msgstr "их из списка командой `popd'." -#~ msgid "The -l flag specifies that `dirs' should not print shorthand versions" -#~ msgstr "Флаг -l указывает, что `dirs' не должна выводит сокращённые варианты" +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "" +#~ "Флаг -l указывает, что `dirs' не должна выводит сокращённые варианты" -#~ msgid "of directories which are relative to your home directory. This means" +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" #~ msgstr "каталогов, заданных относительно домашнего. Это означает, что" #~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" @@ -8369,22 +8175,27 @@ msgstr "" #~ msgid "causes `dirs' to print the directory stack with one entry per line," #~ msgstr "заставляет `dirs' выводить каталоги по одному в строке, предваряя" -#~ msgid "prepending the directory name with its position in the stack. The -p" -#~ msgstr "имя каталога номером его позиции в стеке. Флаг -p делает то же самое," +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "" +#~ "имя каталога номером его позиции в стеке. Флаг -p делает то же самое," #~ msgid "flag does the same thing, but the stack position is not prepended." #~ msgstr "но не добавляются номера позиций. Флаг -c очищает стек каталогов," -#~ msgid "The -c flag clears the directory stack by deleting all of the elements." +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." #~ msgstr "удаляя все его элементы." -#~ msgid "+N\tdisplays the Nth entry counting from the left of the list shown by" +#~ msgid "" +#~ "+N\tdisplays the Nth entry counting from the left of the list shown by" #~ msgstr "+N\tвыводит N-й каталог, считая с левой стороны списка, выводимого" #~ msgid "\tdirs when invoked without options, starting with zero." #~ msgstr "\tdirs при вызове без параметров, начиная с нуля." -#~ msgid "-N\tdisplays the Nth entry counting from the right of the list shown by" +#~ msgid "" +#~ "-N\tdisplays the Nth entry counting from the right of the list shown by" #~ msgstr "-N\tвыводит N-й каталог, считая с правой стороны списка, выводимого" #~ msgid "Toggle the values of variables controlling optional behavior." diff --git a/po/sk.gmo b/po/sk.gmo index c6c89c52b..22b4af340 100644 Binary files a/po/sk.gmo and b/po/sk.gmo differ diff --git a/po/sk.po b/po/sk.po index f0b750fd7..663505dea 100644 --- a/po/sk.po +++ b/po/sk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2011-03-16 21:22+0100\n" "Last-Translator: Ivan Masár \n" "Language-Team: Slovak \n" @@ -22,58 +22,53 @@ msgstr "" msgid "bad array subscript" msgstr "chybný index poľa" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: nie je možné previesť indexované pole na asociatívne" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: neplatný kľúč asociatívneho poľa" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nie je možné priradiť nenumerickému indexu" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: pri priraďovaní asociatívnemu poľu je potrebné použiť index" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nie je možné vytvoriť: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: nie je možné nájsť klávesovú mapu pre príkaz" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: prvý znak (okrem bielych znakov) nie je „\"“" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "chýba zatvárajúca „%c“ v %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: chýba oddeľovač dvojbodka" -#: bashline.c:4555 +#: bashline.c:4733 #, fuzzy, c-format msgid "`%s': cannot unbind in command keymap" msgstr "„%s“: nie je možné zrušiť väzbu (unbind)" @@ -93,7 +88,7 @@ msgstr "" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: neplatný názov aliasu" @@ -168,7 +163,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME nebola nastavená" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "príliš veľa argumentov" @@ -196,7 +191,7 @@ msgstr "upozornenie: " msgid "%s: usage: " msgstr "%s: použitie " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: voľba vyžaduje argument" @@ -211,7 +206,7 @@ msgstr "%s: vyžaduje sa numerický argument" msgid "%s: not found" msgstr "%s: nenájdené" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: neplatná voľba" @@ -221,7 +216,7 @@ msgstr "%s: neplatná voľba" msgid "%s: invalid option name" msgstr "%s: neplatný názov voľby" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: nie je platný identifikátor" @@ -234,7 +229,7 @@ msgstr "neplatné osmičkové číslo" msgid "invalid hex number" msgstr "neplatné šestnástkové číslo" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "neplatné číslo" @@ -248,88 +243,93 @@ msgstr "%s: neplatné určenie signálu" msgid "`%s': not a pid or valid job spec" msgstr "„%s“: nie je pid ani platný špecifikátor úlohy" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: premenná len na čítanie" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: nie je možné zrušiť" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s je mimo rozsahu" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s mimo rozsahu" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: taká úloha neexistuje" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: riadenie úloh nedostupné" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "riadenie úloh nedostupné" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: obmedzené" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "obmedzené" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: nie je vstavaný príkaz (builtin) shellu" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "chyba zapisovania: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "chyba pri nastavovaní atribútov terminálu: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "chyba pri zisťovaní atribútov terminálu: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: chyba pri zisťovaní aktuálneho adresára: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: nejednoznačné určenie úlohy" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nie je možné zrušiť: len na čítanie %s" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: nie je možné zrušiť" @@ -339,108 +339,108 @@ msgstr "%s: nie je možné zrušiť" msgid "%s: invalid action name" msgstr "%s: neplatný názov akcie" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: chýba špecifikácia dokončovania" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "upozornenie: voľba -F nemusí fungovať tak ako očakávate" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "upozornenie: voľba -C nemusí fungovať tak ako očakávate" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "momentálne sa nevykonáva funkcia doplňovania" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "je možné použiť iba vo funkcii" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "nie je možné použiť „-f“ pre tvorbu funkcií" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funkcia iba na čítanie" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" msgstr "„%s“: neplatný názov aliasu" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "nie je možné použiť „-f“ pre tvorbu funkcií" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: funkcia iba na čítanie" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: nie je možné takto robiť deštrukciu premenných polí" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nie je možné previesť asociatívne pole na indexované" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "dynamické načítavanie nie je dostupné" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "nie je možné otvoriť zdieľaný objekt %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "nemožem nájsť %s v zdieľanom objekte %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, fuzzy, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: nie je dynamicky načítané" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: nie je dynamicky načítané" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: nie je možné zmazať: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: je adresár" @@ -455,7 +455,7 @@ msgstr "%s: nie je obyčajný súbor" msgid "%s: file is too large" msgstr "%s: súbor je príliš veľký" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nie je možné vykonať binárny súbor" @@ -552,12 +552,12 @@ msgstr "" "pre „%s“ neboli nájdené zodpovedajúce témy pomocníka.\n" "Skúste „help help“ alebo „man -k %s“ alebo „info %s“." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nie je možné otvoriť: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -578,21 +578,21 @@ msgstr "" "Hviezdička (*) vedľa názvu znamená, že príkaz je vypnutý.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "nie je možné použiť viac ako jednu z volieb -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "poloha histórie" -#: builtins/history.def:340 +#: builtins/history.def:338 #, fuzzy, c-format msgid "%s: invalid timestamp" msgstr "%s: neplatný názov voľby" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: rozšírenie histórie zlyhalo" @@ -615,78 +615,78 @@ msgstr "%s: argumenty musia byť ID procesov alebo úloh" msgid "Unknown error" msgstr "Neznáma chyba" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "očakával sa výraz" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: nie je indexované pole" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: neplatná špecifikácia popisovača súboru" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neplatný popisovač súboru: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: neplatný počet riadkov" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: neplatný začiatok poľa" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neplatné kvantum spätného volania" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "názov prázdnej premennej poľa" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "vyžaduje sa podpora premennej poľa" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "„%s“: chýba formátovací znak" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: neplatná špecifikácia formátu času" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: neplatný formátovací znak" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "upozornenie: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "chýba hexadecimálna číslica v \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "chýba číslica Unicode pre \\%c" @@ -837,12 +837,12 @@ msgstr "" " \n" " Zásobník adresárov môžete zobraziť vstavaným príkazom „dirs“." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: neplatná špecifikácia expirácie (timeout)" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "chyba pri čítaní: %d: %s" @@ -857,7 +857,7 @@ msgstr "" msgid "cannot simultaneously unset a function and a variable" msgstr "nie je možné zároveň zrušiť funkciu a premennú" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: nie je premenná poľa" @@ -876,11 +876,11 @@ msgstr "%s: nie je možné zrušiť" msgid "shift count" msgstr "posun o" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "nie je možné zároveň nastaviť aj zrušiť voľby shellu" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: neplatný názov voľby shellu" @@ -947,16 +947,16 @@ msgstr "%s: neplatný argument limitu" msgid "`%c': bad command" msgstr "„%c“: chybný príkaz" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nie je možné zistiť limit: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "obmedzenie" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nie je možné zmeniť limit: %s" @@ -975,7 +975,7 @@ msgstr "„%c“: neplatný operátor symbolického režimu" msgid "`%c': invalid symbolic mode character" msgstr "„%c“: neplatný znak symbolického režimu" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " riadok " @@ -995,96 +995,106 @@ msgstr "Ruší sa..." msgid "INFORM: " msgstr "" -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "upozornenie: " + +#: error.c:488 msgid "unknown command error" msgstr "chyba neznámeho príkazu" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "chybný typ príkazu" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "chybný konektor" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "chybný skok" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: neviazaná premenná" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\ačas vypršal pri čakaní na vstup: automatické odhlásenie\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "nie je možné presmerovať štandardný vstup z /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: neplatný formátovácí znak" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "chyba rúry" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: obmedzené: nie jemožné uviesť „/“ v názvoch príkazov" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: príkaz nenájdený" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: nie je možné vykonať binárny súbor" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: chybný interpreter" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: nie je možné vykonať binárny súbor" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s je vstavaný príkaz (builtin) shellu\n" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nie je možné duplikovať fd %d na fd %d" @@ -1097,70 +1107,70 @@ msgstr "bola prekročená úroveň rekurzie výrazu" msgid "recursion stack underflow" msgstr "podtečenie zásobníka rekurzie" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "chyba syntaxe vo výraze" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "pokus o priradenie mimo premennej" -#: expr.c:530 +#: expr.c:531 #, fuzzy msgid "syntax error in variable assignment" msgstr "chyba syntaxe vo výraze" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "delenie nulou" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "chyba: chybný expassign token" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "pre podmienený výraz sa očakáva „:“" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "exponent menší ako 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "po pre-inkrementácii alebo pre-dekrementácii sa očakáva identifikátor" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "chýba „)“" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "chyba syntaxe: očakáva sa operand" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "chyba syntaxe: neplatný aritmetický operátor" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (chybný token je „%s”)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "neplatný aritmetický základ" -#: expr.c:1582 +#: expr.c:1587 #, fuzzy msgid "invalid integer constant" msgstr "%s: neplatný počet riadkov" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "hodnota je ako základ príliš veľká" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: chyba výrazu\n" @@ -1169,7 +1179,7 @@ msgstr "%s: chyba výrazu\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: nie je možné pristupovať k rodičovským adresárom" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nie j emožné resetovať nodelay režim fd %d" @@ -1188,168 +1198,168 @@ msgstr "save_bash_input: bufer už existuje pre nový fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp rúra" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "pid %d získaný pomocou fork sa vyskytuje v bežiacej úlohe %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "mažem zastavenú úlohu %d so skupinou procesu %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) je stále označený ako živý" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: taký pid neexistuje" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Signál %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Hotovo" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Zastavené" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Zastavené(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Beží" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Hotovo(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Ukončenie %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Neznámy stav" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(bol uložený výpis pamäte) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid detského procesu (%ld to %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld nie je dieťa tohto shellu" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Neexistuje záznam o procese %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: úloha %d je zastavená" -#: jobs.c:3564 +#: jobs.c:3551 #, fuzzy, c-format msgid "%s: no current jobs" msgstr "%s: taká úloha neexistuje" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: úloha skončila" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: úloha %d už je v pozadí" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: zapína sa WNOHANG aby sme sa vyhli neurčitému blokovaniu" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: riadok %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (bol uložený výpis pamäte)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(wd teraz: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: funkcia getpgrp zlyhala" -#: jobs.c:4447 +#: jobs.c:4434 #, fuzzy msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: riadkový systém" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: riadkový systém" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nie je možné nastaviť skupinu procesu terminálu (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "v tomto shelli nie je riadenie úloh" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: zlyhal predpoklad: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1358,49 +1368,49 @@ msgstr "" "\r\n" "malloc: %s:%d: zbabraný predpoklad\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "neznámy" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: blok na zozname voľných zaprataný" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: zavolaný s argumentom už uvoľneného bloku" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: zavolaný s argumentom nealokovaného bloku" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: bolo detekované podtečenie; mh_nbytes mimo rozsahu" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 #, fuzzy msgid "free: underflow detected; magic8 corrupted" msgstr "free: bolo detekované podtečenie; mh_nbytes mimo rozsahu" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: veľkosti začiatočného a konečného bloku (chunk) sa líšia" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: zavolaný s argumentom nealokovaného bloku" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: bolo detekované podtečenie; mh_nbytes mimo rozsahu" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 #, fuzzy msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: bolo detekované podtečenie; mh_nbytes mimo rozsahu" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: veľkosti začiatočného a konečného bloku (chunk) sa líšia" @@ -1442,22 +1452,22 @@ msgstr "%s: chybná špecifikácia sieťovej cesty" msgid "network operations not supported" msgstr "sieťové operácie nie sú podporované" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: nemožno zmeniť locale (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: nemožno zmeniť locale (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: nie je možné zmeniť locale (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: nie je možné zmeniť locale (%s): %s" @@ -1475,139 +1485,139 @@ msgstr "Máte novú poštu v súbore $_" msgid "The mail in %s has been read\n" msgstr "Pošta v súbore %s bola prečítaná\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "chyba syntaxe: vyžaduje sa aritmetický výraz" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "chyba syntaxe: neočakávaná „;“" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "chyba syntaxe: „((%s))“" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: chybný typ inštrukcie %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-document na riadku %d oddelený znakom konca riadku (očakávalo sa „%s”)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: inštrukcia presmerovania „%d“ mimo rozsahu" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "neočakávaný koniec súboru počas hľadania zodpovedajúceho „%c“" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "neočakávaný koniec súboru počas hľadania „]]“" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "chyba syntaxe v podmienečnom príkaze: neočakávaný token „%s“" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "chyba syntaxe v podmienečnom príkaze" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "neočakávaný token „%s“, očakávalo sa `)'" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "očakávalo sa `)'" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "neočakávaný argument „%s“ podmienečného unárneho operátora" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "neočakávaný argument podmienečného unárneho operátora" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "neočakávaný token „%s“, očakáva sa podmienečný binárny operátor" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "očakáva sa podmienečný binárny operátor" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "neočakávaný argument „%s“ v podmienečnom binárnom operátore" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "neočakávaný argument v podmienečnom binárnom operátore" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "neočakávaný token „%c“ v podmienečnom príkaze" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "neočakávaný token „%s“ v podmienečnom príkaze" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "neočakávaný token %d v podmienečnom príkaze" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "chyba syntaxe neďaleko neočakávaného tokenu „%s“" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "chyba syntaxe neďaleko „%s“" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "chyba syntaxe: neočakávaný koniec súboru" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "chyba syntaxe" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Na opustenie shellu použite „%s“.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "neočakávaný koniec súboru počas hľadania zodpovedajúceho „)“" @@ -1645,94 +1655,94 @@ msgstr "xtrace_set: ukazovateľ súboru je NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: neplatný formátovací znak" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "popisovač súboru mimo rozsahu" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: nejednoznačné presmerovanie" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nie je možné prepísať existujúci súbor" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ombedzené: nie je možné presmerovať výstup" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "nie je možné vytvoriť odkladací súbor pre here-document: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nie je možné priradiť popisovač súboru premennej" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nie je podporovaný bez podpory sietí" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "chyba presmerovania: nie je možné duplikovať fd" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "nenašiel sa /tmp, vytvorte ho prosím!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp musí byť platný názov adresára" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: neplatná voľba" -#: shell.c:1319 +#: shell.c:1343 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "nie j emožné resetovať nodelay režim fd %d" -#: shell.c:1330 +#: shell.c:1354 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "nie j emožné resetovať nodelay režim fd %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1632 +#: shell.c:1658 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: je adresár" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Nemám meno!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, verzia %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1741,313 +1751,313 @@ msgstr "" "Použitie:\t%s [GNU dlhá voľba] [voľba] ...\n" "\t%s [GNU dlhá voľba] [voľba] súbor-skriptu ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "GNU dlhé voľby:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Voľby shellu:\n" -#: shell.c:2043 +#: shell.c:2069 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD alebo -c príkaz alebo -O krátka_voľba\t\t(iba vyvolanie)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s alebo -o voľba\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Napísaním „%s -c \"help set\"“ získate viac informácií o voľbách shellu.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Napísaním „%s -c help“ získate viac informácií o vstavaných príkazoch " "(builtins) shellu.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Na ohlasovanie chýb použite príkaz „bashbug“.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: neplatná operácia" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Neplatný signál" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Zavesenie" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Prerušenie" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Ukončenie" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Neplatná inštrukcia" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "BPT trace/trap" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "inštrukcia ABORT" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "inštrukcia EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Výnimka pri operácii s plávajúcou desatinnou čiarkou" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Zabitý" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "chyba zbernice" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Chyba segmentácie" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Chybné systémové volanie" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Prerušená rúra" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Budík" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Ukončené" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Naliehavý stav V/V" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Zastavené (signál)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Pokračovať" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Zastavenie alebo zabitie detského procesu" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Zastavené (vstup z tty)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Zastavené (výstup na tty)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "V/V pripravený" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "obmedzenie CPU" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "obmedzenie súborov" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Budík (virtuálny)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Budík (profil)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Okno sa zmenilo" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Zámok záznamu" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Používateľský signál 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Používateľský signál 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "čaká sa na vstupné údaje HFT" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "nastane výpadok napájania" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "nastane havária systému" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "presunúť proces na iný CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "chyba programovania" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "udelený režim monitoru HFT" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "stiahnutý režim monitoru HFT" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "dokončila sa zvuková sekvencia HFT" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Žiadosť o informácie" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Neznámy signál #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "chybná substitúcia: chýba „%s“ v %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: nie je možné priradiť zoznam položke poľa" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "nie je možné vytvoriť rúru pre substitúciu procesov" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "nie je možné vytvoriť potomka pre substitúciu procesov" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nie je možné otvoriť pomenovanú rúru %s na čítanie" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nie je možné otvoriť pomenovanú rúru %s na zápis" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nie je možné duplikovať pomenovanú rúru %s ako fd %d" -#: subst.c:6213 +#: subst.c:6370 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "chybná substitúcia: : v reťazci %s chýba uzatvárajúci „`”" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "nie je možné vytvoriť rúru pre substitúciu príkazov" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "nie je možné vytvoriť potomka pre substitúciu príkazov" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: nie je možné duplikovať rúru ako fd 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: neplatný počet riadkov" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "„%s“: neplatný názov aliasu" -#: subst.c:7256 +#: subst.c:7478 #, fuzzy, c-format msgid "%s: parameter not set" msgstr "%s: parameter je null alebo nenastavený" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter je null alebo nenastavený" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: výraz podreťazca < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: chybná substitúcia" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nie je možné vykonať priradenie takýmto spôsobom" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2055,12 +2065,12 @@ msgstr "" "budúce verzie shellu budú vynucovať vyhodnocovanie ako aritmetickú " "substitúciu" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "chybná substitúcia: : v reťazci %s chýba uzatvárajúci „`”" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "bez zhody: %s" @@ -2083,21 +2093,21 @@ msgstr "očakávala sa „)“" msgid "`)' expected, found %s" msgstr "očakávala sa „)“, bolo nájdené %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: očakával sa binárny operátor" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: očakával sa unárny operátor" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "chýba „]“" -#: test.c:899 +#: test.c:914 #, fuzzy, c-format msgid "syntax error: `%s' unexpected" msgstr "chyba syntaxe: neočakávaná „;“" @@ -2106,101 +2116,106 @@ msgstr "chyba syntaxe: neočakávaná „;“" msgid "invalid signal number" msgstr "neplatné číslo signálu" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: chybná hodnota v trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: obsluha signálu je SIG_DFL, znovu posielam %d (%s) sebe" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: chybný signál %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "chyba pri importe definície funkcie „%s“" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "úroveň shellu (%d) je príliš vysoká, nastavujem späť na 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: v aktuálnom rozsahu sa nenachádza kontext funkcie" -#: variables.c:2693 +#: variables.c:2661 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: nie je možné priradiť popisovač súboru premennej" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: v aktuálnom rozsahu sa nenachádza kontext funkcie" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s má null exportstr" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "neplatný znak %d v exportstr %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "žiadne „=“ v exportstr %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: hlavička shell_variables nie je kontext funkcie" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: chýba kontext global_variables" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: hlavička shell_variables nie je dočasný rozsah prostredia" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nemožno otvoriť ako SÚBOR" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru" -#: variables.c:6437 +#: variables.c:6450 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s je mimo rozsahu" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" #: version.c:47 version2.c:47 @@ -2297,12 +2312,16 @@ msgstr "command [-pVv] command [arg ...]" #: builtins.c:78 #, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFgilrtux] [-p] [názov[=hodnota] ...]" #: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFgilrtux] [-p] name[=value] ..." #: builtins.c:82 @@ -2406,7 +2425,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o názov_voľby] [arg ...]" #: builtins.c:144 @@ -2456,7 +2476,7 @@ msgstr "type [-afptP] názov [názov ...]" #: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [obmedzenie]" #: builtins.c:174 @@ -2502,11 +2522,13 @@ msgstr "" "PRÍKAZY; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while PRÍKAZY; do PRÍKAZY; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until PRÍKAZY; do PRÍKAZY; done" #: builtins.c:200 @@ -3891,7 +3913,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -3974,7 +3998,7 @@ msgstr "" " Vráti 0 ak sa nenarazí pri čítaní nakoniec súboru, nevyprší čas na\n" " čítanie a ako argument -u nebol je zadaný neplatný popisovač." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3995,7 +4019,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti N alebo zlyhá ak shell nevykonáva funkciu či skript." -#: builtins.c:1054 +#: builtins.c:1055 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4167,7 +4191,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba." -#: builtins.c:1139 +#: builtins.c:1140 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4207,7 +4231,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je NÁZOV iba na čítanie a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4242,7 +4266,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je NÁZOV neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1180 +#: builtins.c:1181 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4282,7 +4306,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je NÁZOV neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4300,7 +4324,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nestalo, že je N záporné alebo väčšie ako $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4324,7 +4348,7 @@ msgstr "" " Vráti návratovú hodnotu posledného príkazu v SÚBORe; zlyhá ak nie je\n" " možné SÚBOR načítať." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4348,7 +4372,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nestalo, že je vypnuté riadenie úloh a nevyskytla sa chyba." -#: builtins.c:1261 +#: builtins.c:1262 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4510,7 +4534,7 @@ msgstr "" " Vráti 0 ak VÝR vyhodnotí ako pravdivý; zlyhá ako sa VÝR vyhodnotí\n" " ako nepravdivý alebo je zadaný neplatný argument." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4522,7 +4546,7 @@ msgstr "" " Toto je synonymum vsatavanej funkcie „test“, ale posledný\n" " argument musí byť literál „]“, ktorý uzatvára otvárajúcu „[“." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4541,7 +4565,7 @@ msgstr "" " Návratová hodnota:\n" " Vždy vráti 0." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4621,7 +4645,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je SIGSPEC neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1400 +#: builtins.c:1401 #, fuzzy msgid "" "Display information about command type.\n" @@ -4677,7 +4701,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak boli nájdené všetky NÁZVY; zlyhá ak nie." -#: builtins.c:1431 +#: builtins.c:1432 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4768,7 +4792,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4802,7 +4826,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je REŽIM neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1502 +#: builtins.c:1503 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4846,7 +4870,7 @@ msgstr "" " Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná\n" " neplatná voľba." -#: builtins.c:1533 +#: builtins.c:1534 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4872,7 +4896,7 @@ msgstr "" " Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná neplatná\n" " voľba." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4894,7 +4918,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4924,7 +4948,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4959,7 +4983,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4987,7 +5011,7 @@ msgstr "" " Návratová hodnota:\n" " Návratová hodnota je návratová hodnota RÚRY." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5005,7 +5029,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5042,12 +5066,14 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5060,12 +5086,14 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5078,7 +5106,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1671 +#: builtins.c:1672 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5101,7 +5129,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu PRÍKAZu." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -5126,7 +5154,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nestalo, že je NÁZOV iba na čítanie." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5144,7 +5172,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5168,7 +5196,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu obnovenej úlohy." -#: builtins.c:1726 +#: builtins.c:1727 #, fuzzy msgid "" "Evaluate arithmetic expression.\n" @@ -5187,7 +5215,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 1 ak sa VÝRAZ vyhodnotí na 0; inak vráti 0." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5235,7 +5263,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 alebo 1 v závislosti na hodnote VÝRAZu." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5339,7 +5367,7 @@ msgstr "" " HISTIGNORE\tBodkočiarkami oddelený zoznam vzoriek, ktoré\n" " \t\tsa používajú na rozhodovanie, či sa príkaz uloží do histórie.\n" -#: builtins.c:1821 +#: builtins.c:1822 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5396,7 +5424,7 @@ msgstr "" " Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n" " chyba pri zmene adresára." -#: builtins.c:1855 +#: builtins.c:1856 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5447,7 +5475,7 @@ msgstr "" " Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n" " chyba pri zmene adresára." -#: builtins.c:1885 +#: builtins.c:1886 #, fuzzy msgid "" "Display directory stack.\n" @@ -5499,7 +5527,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa chyba." -#: builtins.c:1916 +#: builtins.c:1917 #, fuzzy msgid "" "Set and unset shell options.\n" @@ -5537,7 +5565,7 @@ msgstr "" " Vráti 0 ak je OPTNAME zapnuté; zlyhá ak bola zadaná\n" " neplatná voľba alebo OPTNAME je vypnuté." -#: builtins.c:1937 +#: builtins.c:1938 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5561,6 +5589,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -5602,7 +5632,7 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba pri\n" " zápise či priradení." -#: builtins.c:1971 +#: builtins.c:1974 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5655,7 +5685,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5675,7 +5705,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:2016 +#: builtins.c:2019 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5733,7 +5763,7 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba a NÁZOV nemá definovanú\n" " špecifikáciu dopĺňania." -#: builtins.c:2047 +#: builtins.c:2050 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5808,7 +5838,7 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba a POLE nie je len na čítanie a\n" " nie je to indexované pole." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5818,6 +5848,10 @@ msgstr "" " \n" " Synonymum k „mapfile“." +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: neplatný kľúč asociatívneho poľa" + #, fuzzy #~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." #~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." diff --git a/po/sl.gmo b/po/sl.gmo index db02245a7..2615432b9 100644 Binary files a/po/sl.gmo and b/po/sl.gmo differ diff --git a/po/sl.po b/po/sl.po index d1ad41359..107fcea6e 100644 --- a/po/sl.po +++ b/po/sl.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2013-03-09 20:21+0100\n" "Last-Translator: Klemen Košir \n" "Language-Team: Slovenian \n" @@ -25,58 +25,53 @@ msgstr "" msgid "bad array subscript" msgstr "slab podpis polja" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: ni mogoče pretvoriti zabeleženega polja v povezano polje" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: neveljaven ključ povezanega polja" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ni mogoče dodeliti v ne-številčno kazalo" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: treba je uporabiti podpis pri dodeljevanju povezanega polja" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ni mogoče ustvariti: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: ni mogoče najti tipkovne razvrstitve za ukaz" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: prvi znak brez presledka ni `\"'" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "brez zaključka `%c' v %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: manjka ločilnik dvopičja" -#: bashline.c:4555 +#: bashline.c:4733 #, fuzzy, c-format msgid "`%s': cannot unbind in command keymap" msgstr "`%s': ni mogoče odvezati" @@ -96,7 +91,7 @@ msgstr "" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': neveljaven vzdevek" @@ -172,7 +167,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME ni nastavljen" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "preveč argumentov" @@ -200,7 +195,7 @@ msgstr "opozorilo: " msgid "%s: usage: " msgstr "%s: uporaba: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: možnost zahteva argument" @@ -215,7 +210,7 @@ msgstr "%s: zahtevan je števni argument" msgid "%s: not found" msgstr "%s: ni mogoče najti" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: neveljavna možnost" @@ -225,7 +220,7 @@ msgstr "%s: neveljavna možnost" msgid "%s: invalid option name" msgstr "%s: neveljavno ime možnosti" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': neveljavno določilo" @@ -238,7 +233,7 @@ msgstr "neveljavno osmiško število" msgid "invalid hex number" msgstr "neveljavno šestnajstiško število" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "neveljavno število" @@ -252,88 +247,93 @@ msgstr "%s: neveljavno določilo signala" msgid "`%s': not a pid or valid job spec" msgstr "`%s': ni določilo opravila ali neveljavno določilo posla" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: spremenljivka le za branje" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: ni mogoče ponastaviti" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s izven dosega" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s izven dosega" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: ni takšnega posla" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: ni nadzora posla" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "ni nadzora posla" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: omejeno" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "omejeno" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ni vgrajena lupina" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "napaka med pisanjem: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "napaka med nastavljanjem atributov terminala: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "napaka med pridobivanjem atributov terminala: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: napaka med pridobivanjem trenutne mape: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: dvoumno določilo posla" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ni mogoče ponastaviti: samo za branje %s" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: ni mogoče ponastaviti" @@ -343,108 +343,108 @@ msgstr "%s: ni mogoče ponastaviti" msgid "%s: invalid action name" msgstr "%s: neveljavno ime dejanja" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: ni določila dopolnjevanja" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "Opozorilo: možnost -F morda ne bo delovala po pričakovanjih" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "Opozorilo: možnost -C morda ne bo delovala po pričakovanjih" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "trenutno se ne izvaja funkcija dopolnjevanja" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "se lahko uporabi samo v funkciji" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "ni mogoče uporabiti `-f' za ustvarjanje funkcij" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funkcija samo za branje" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" msgstr "`%s': neveljaven vzdevek" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "ni mogoče uporabiti `-f' za ustvarjanje funkcij" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: funkcija samo za branje" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: na ta način ni mogoče uničiti spremenljivk polja" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: ni mogoče pretvoriti povezanega polja v zabeleženo polje" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "dinamično nalaganje ni na voljo" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "ni mogoče odpreti predmeta v souporabi %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "ni mogoče najti %s v predmetu v souporabi %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, fuzzy, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: ni dinamično naloženo" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: ni dinamično naloženo" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: ni mogoče izbrisati: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: je mapa" @@ -459,7 +459,7 @@ msgstr "%s: ni običajna datoteka" msgid "%s: file is too large" msgstr "%s: datoteka je prevelika" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ni mogoče izvesti binarne datoteke" @@ -557,12 +557,12 @@ msgstr "" "nobena tema pomoči se ne ujema s `%s'. Poskusite `help help' ali `man -k " "%s' ali `info %s'." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ni mogoče odpreti: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -583,21 +583,21 @@ msgstr "" "Zvezdica (*) poleg imena pomeni, da je ukaz onemogočen.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "ni mogoče uporabiti več kot eno od -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "položaj zgodovine" -#: builtins/history.def:340 +#: builtins/history.def:338 #, fuzzy, c-format msgid "%s: invalid timestamp" msgstr "%s: neveljavno ime možnosti" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: razširitev zgodovine je spodletela" @@ -620,78 +620,78 @@ msgstr "%s: argumenti morajo biti določila opravila ali posla" msgid "Unknown error" msgstr "Neznana napaka" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "izraz je bil pričakovan" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: ni zabeleženo polje" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: neveljavno določilo opisnika datoteke" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neveljaven opisnik datoteke: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: neveljavno štetje vrstic" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: neveljaven izvor polja" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neveljaven del povratnega klica" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "prazno ime spremenljivke polja" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "potrebna podpora spremenljivke polja" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "`%s': manjka znak oblike" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': neveljavno določilo vrste časa" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "`%c': neveljaven znak oblike" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "opozorilo: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "manjka šestnajstiška števka za \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "manjka števka s podporo unicode za \\%c" @@ -842,12 +842,12 @@ msgstr "" " \n" " Ukaz lupine `dirs' prikaže sklad map." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: neveljavno določilo časovne omejitve" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "napaka med branjem: %d: %s" @@ -860,7 +860,7 @@ msgstr "`return' lahko vrne samo iz funkcije ali skripte z izvorno kodo" msgid "cannot simultaneously unset a function and a variable" msgstr "ni mogoče ponastaviti funkcije in spremenljivke hkrati" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: ni spremenljivka polja" @@ -879,11 +879,11 @@ msgstr "%s: ni mogoče ponastaviti" msgid "shift count" msgstr "štetje premika" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "ni mogoče nastaviti in ponastaviti možnosti lupine hkrati" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: neveljavno ime možnosti lupine" @@ -950,16 +950,16 @@ msgstr "%s: neveljaven argument omejitve" msgid "`%c': bad command" msgstr "`%c': slab ukaz" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ni mogoče dobiti omejitve: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "omejitev" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ni mogoče spremeniti omejitve: %s" @@ -978,7 +978,7 @@ msgstr "`%c': neveljaven operator simbolnega načina" msgid "`%c': invalid symbolic mode character" msgstr "`%c': neveljaven znak simbolnega načina" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " vrstica " @@ -998,96 +998,106 @@ msgstr "Prekinjanje ..." msgid "INFORM: " msgstr "" -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "opozorilo: " + +#: error.c:488 msgid "unknown command error" msgstr "neznana napaka ukaza" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "slaba vrsta ukaza" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "slab povezovalnik" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "slab skok" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: nedoločena spremenljivka" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\apotekla je časovna omejitev med čakanjem na vnos: samodejna odjava\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "ni mogoče preusmeriti običajnega vnosa iz /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': neveljaven znak oblike" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "napaka cevi" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: omejeno: ni mogoče določiti `/' v imenih ukaza" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: ukaza ni mogoče najti" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: ni mogoče izvesti binarne datoteke" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: slab tolmač" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: ni mogoče izvesti binarne datoteke" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s je vgrajena lupina\n" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "ni mogoče podvajati fd %d v fd %d" @@ -1100,70 +1110,70 @@ msgstr "stopnja rekurzivnosti izraza presežena" msgid "recursion stack underflow" msgstr "prekoračitev spodnje meje sklada rekurzivnosti" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "skladenjska napaka v izrazu" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "poskus dodelitve ne-spremenljivki" -#: expr.c:530 +#: expr.c:531 #, fuzzy msgid "syntax error in variable assignment" msgstr "skladenjska napaka v izrazu" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "delitev z 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "hrošč: slab žeton expassign" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "`:' pričakovano za pogojni izraz" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "eksponent je manjši kot 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "po predhodnem večanju ali manjšanju je pričakovano določilo" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "manjka `)'" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "skladenjska napaka: pričakovan operand" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "skladenjska napaka: neveljaven aritmetični operand" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (žeton napake je \"%s\")" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "neveljavna aritmetična zbirka" -#: expr.c:1582 +#: expr.c:1587 #, fuzzy msgid "invalid integer constant" msgstr "%s: neveljavno štetje vrstic" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "vrednost je prevelika za zbirko" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: napaka izraza\n" @@ -1172,7 +1182,7 @@ msgstr "%s: napaka izraza\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: ni mogoče dostopati do nadrejenih map" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "ni mogoče ponastaviti načina brez zakasnitve za fd %d" @@ -1191,168 +1201,168 @@ msgstr "save_bash_input: medpomnilnik že obstaja za nov fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: cev pgrp" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "razvejen id opravila %d se pojavi v izvajajočem se poslu %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "brisanje ustavljenega posla %d s skupino opravila %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: id opravila %5ld (%s) je označen kot še živ" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ni takšnega določila opravila" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Končano" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Zaustavljeno" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Zaustavljeno(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Se izvaja" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Končano(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Končaj %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Neznano stanje" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(izpis jedra) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "podrejeno opravilo setpgid (%ld v %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: opravilo z id %ld ni podrejeno opravilo te lupine" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: ni zapisov o opravilu %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: posel %d je zaustavljen" -#: jobs.c:3564 +#: jobs.c:3551 #, fuzzy, c-format msgid "%s: no current jobs" msgstr "%s: ni takšnega posla" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: posel je uničen" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: posel %d se že izvaja v ozadju" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: vklop WNOHANG za preprečitev nedoločenosti bloka" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: vrstica %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (izpis jedra)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(wd zdaj: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp je spodletel" -#: jobs.c:4447 +#: jobs.c:4434 #, fuzzy msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: vrstična disciplina" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: vrstična disciplina" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ni mogoče nastaviti skupine opravil terminala (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "brez nadzora posla v tej lupini" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: spodletela trditev: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1361,51 +1371,51 @@ msgstr "" "\r\n" "malloc: %s:%d: trditev je bila slabo izpeljana\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "neznano" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: vsebina bloka na prostem seznamu je bila prepisana" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: poklican z že sproščenim argumentom bloka" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: klic z nedodeljenim argumentom bloka" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: zaznana prekoračitev spodnje meje; mh_nbytes je izven dosega" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 #, fuzzy msgid "free: underflow detected; magic8 corrupted" msgstr "free: zaznana prekoračitev spodnje meje; mh_nbytes je izven dosega" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "" "free: velikosti začetnih in končnih podatkovnih kosov \"chunk\" se " "razlikujejo" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: klic z nedodeljenim argumentom bloka" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: zaznana prekoračitev spodnje meje; mh_nbytes je izven dosega" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 #, fuzzy msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: zaznana prekoračitev spodnje meje; mh_nbytes je izven dosega" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "" "realloc: velikosti začetnih in končnih podatkovnih kosov \"chunk\" se " @@ -1449,22 +1459,22 @@ msgstr "%s: slabo določilo omrežne poti" msgid "network operations not supported" msgstr "omrežno opravilo ni podprto" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: ni mogoče spremeniti jezikovne oznake (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: ni mogoče spremeniti jezikovne oznake (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ni mogoče spremeniti jezikovne oznake (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ni mogoče spremeniti jezikovne oznake (%s): %s" @@ -1482,138 +1492,138 @@ msgstr "Imate novo pošto v $_" msgid "The mail in %s has been read\n" msgstr "Pošta v %s je bila prebrana\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "skladenjska napaka: potreben je aritmetični izraz" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "skladenjska napaka: `;' nepričakovano" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "skladenjska napaka: `((%s))'" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: slaba vrsta navodila %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document v vrstici %d razmejen z end-of-file (želeno `%s')" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: navodilo preusmeritve `%d' je izven dosega" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "nepričakovan konec datoteke med iskanjem ujemanja z `%c'" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "nepričakovan konec datoteke med iskanjem ujemanja z `]]'" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "skladenjska napaka v pogojnem izrazu: nepričakovan žeton `%s'" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "skladenjska napaka v pogojnem izrazu" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "nepričakovan žeton `%s', pričakovan je bil `)'" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "pričakovan `)'" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "nepričakovan argument `%s' do pogojnega enoslovnega operatorja" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "nepričakovan argument do pogojnega enoslovnega operatorja" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "nepričakovan žeton `%s', pričakovan je binarni pogojni operator" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "pričakovan je binarni pogojni operator" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "nepričakovan argument `%s' do pogojnega binarnega operatorja" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "nepričakovan argument do pogojnega binarnega operatorja" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "nepričakovan žeton `%c' v pogojnem ukazu" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "nepričakovan žeton `%s' v pogojnem ukazu" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "nepričakovan žeton %d v pogojnem ukazu" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "skladenjska napaka blizu nepričakovanega žetona `%s'" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "skladenjska napaka blizu `%s'" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "skladenjska napaka: nepričakovan konec datoteke" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "skladenjska napaka" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Uporabite \"%s\", če želite zapustiti lupino.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "nepričakovan konec datoteke med iskanjem ujemanja z `)'" @@ -1651,94 +1661,94 @@ msgstr "xtrace_set: prazen kazalec datoteke NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': neveljaven znak oblike" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "opisnik datoteke je izven dosega" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: dvoumna preusmeritev" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: ni mogoče prepisati obstoječe datoteke" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: omejitev: ni mogoče preusmeriti izhoda" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "ni mogoče ustvariti začasne datoteke za here-document: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ni mogoče dodeliti fd spremenljivki" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port ni podprt brez omrežja" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "napaka preusmeritve: ni mogoče podvajati fd" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "ni mogoče najti /tmp, ustvarite ga!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp mora biti veljavno ime mape" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: neveljavna možnost" -#: shell.c:1319 +#: shell.c:1343 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "ni mogoče ponastaviti načina brez zakasnitve za fd %d" -#: shell.c:1330 +#: shell.c:1354 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "ni mogoče ponastaviti načina brez zakasnitve za fd %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1632 +#: shell.c:1658 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: je mapa" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Ni imena!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, različica %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1747,322 +1757,322 @@ msgstr "" "Uporaba:\t%s [dolga možnost GNU] [možnost] ...\n" "\t%s [dolga možnost GNU] [možnost] skriptni dokument ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Dolge možnosti GNU:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Možnosti lupine:\n" -#: shell.c:2043 +#: shell.c:2069 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD ali ukaz -c ali -O shopt_option\t\t(samo sklicevanje)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ali možnost -o\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Vpišite `%s -c \"help set\"' za več podrobnosti o možnostih lupine.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Vpišite `%s -c help' za več podrobnosti o možnostih ukazov lupine.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Uporabite ukaz `bashbug' za poročanje hroščev.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: neveljavno opravilo" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Lažen signal" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Odloži" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Prekini" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Končaj" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Neveljaven ukaz" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "BPT trace/trap" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "ukaz ABORT" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "ukaz EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Izjema s plavajočo vejico" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Uničen" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Napaka vodila" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Napaka segmentacije" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Slab sistemski klic" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Prekinjena cev" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Budilka" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Zaključen" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Nujen pogoj IO" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Ustavljen (signal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Nadaljuj" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Podrejeno opravilo je uničeno ali zaustavljeno" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Ustavljen (vhod TTY)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Ustavljen (izhod TTY)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O je pripravljen" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "omejitev CPE" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "omejitev datoteke" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Budilka (navidezna)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Budilka (profil)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Okno se je spremenilo" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Zaklep zapisa" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Signal uporabnika 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Signal uporabnika 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "vnos podatkov HFT je na čakanju" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "izpad električnega toka je neizbežen" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "sesutje sistema je neizbežno" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "preseli opravilo na drug CPE" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "napaka programiranja" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "način nadzora HFT je odobren" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "način nadzora HFT je umaknjen" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "zaporedje zvoka HFT je končano" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "zahteva po podatkih" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Neznan signal #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "slaba zamenjava: ni zaključka `%s' v %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: ni mogoče dodeliti seznama članu polja" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "ni mogoče ustvariti cevi za zamenjavo opravila" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "ni mogoče ustvariti podrejenega opravila za zamenjavo opravila" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "ni mogoče odpreti imenovane cevi %s za branje" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "ni mogoče odpreti imenovane cevi %s za pisanje" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "ni mogoče podvajati imenovane cevi %s kot fd %d" -#: subst.c:6213 +#: subst.c:6370 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "slaba zamenjava: ni zaključka \"`\" v %s" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "ni mogoče ustvariti cevi za zamenjavo ukaza" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "ni mogoče ustvariti podrejenega opravila za zamenjavo ukaza" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: ni mogoče podvajati cevi kot fd 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: neveljavno štetje vrstic" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "`%s': neveljaven vzdevek" -#: subst.c:7256 +#: subst.c:7478 #, fuzzy, c-format msgid "%s: parameter not set" msgstr "%s: parameter je prazen ali pa ni določen" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter je prazen ali pa ni določen" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: izraz podniza < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: slaba zamenjava" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ni mogoče dodeliti na tak način" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" "prihodnje različice lupine bodo prisilile ocenitev kot aritmetično zamenjavo" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "slaba zamenjava: ni zaključka \"`\" v %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "ni ujemanja: %s" @@ -2085,21 +2095,21 @@ msgstr "pričakovan je `)'" msgid "`)' expected, found %s" msgstr "pričakovan je `)', najden je %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: pričakuje se binarni operator" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: pričakuje se enosnoven operator" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "manjka `]'" -#: test.c:899 +#: test.c:914 #, fuzzy, c-format msgid "syntax error: `%s' unexpected" msgstr "skladenjska napaka: `;' nepričakovano" @@ -2108,101 +2118,106 @@ msgstr "skladenjska napaka: `;' nepričakovano" msgid "invalid signal number" msgstr "neveljavna števka signala" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: slaba vrednost v trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: ročnik signala je SIG_DFL, ponovno pošiljanje %d (%s) sebi" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: slab signal %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "napaka med uvozom določila funkcije `%s'" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "raven lupine (%d) je previsoka, ponastavljanje na 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: v trenutnem dosegu ni vsebine funkcije" -#: variables.c:2693 +#: variables.c:2661 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: ni mogoče dodeliti fd spremenljivki" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: v trenutnem dosegu ni vsebine funkcije" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s ima prazen exportstr" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "neveljaven znak %d v exportstr za %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "ni `=' v exportstr za %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: glava shell_variables ni vsebina funkcije" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ni vsebine global_variables" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: glava shell_variables ni trenuten obseg okolja" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ni mogoče odpreti kot DATOTEKO" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" -#: variables.c:6437 +#: variables.c:6450 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s izven dosega" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Avtorske pravice (C) 2009 Free Software Foundation, Inc.\n" #: version.c:47 version2.c:47 @@ -2297,12 +2312,16 @@ msgstr "ukaz [-pVv] ukaz [arg ...]" #: builtins.c:78 #, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFgilrtux] [-p] [ime[=vrednost] ...]" #: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFgilrtux] [-p] ime[=vrednost] ..." #: builtins.c:82 @@ -2407,7 +2426,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o ime_možnosti] [--] [arg ...]" #: builtins.c:144 @@ -2457,7 +2477,7 @@ msgstr "type [-afptP] ime [ime ...]" #: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [meja]" #: builtins.c:174 @@ -2502,11 +2522,13 @@ msgstr "" "if UKAZI; then UKAZI; [ elif UKAZI; then UKAZI; ]... [ else UKAZI; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while UKAZI; do UKAZI; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until UKAZI; do UKAZI; done" #: builtins.c:200 @@ -3893,7 +3915,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -3974,7 +3998,7 @@ msgstr "" " omejitev prekoračena ali če je dan neveljaven opisnik datotek kot\n" " argument v -u." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3994,7 +4018,7 @@ msgstr "" " Stanje končanja\n" " Vrne N ali neuspešno, če lupina ne izvede funkcije ali skripta." -#: builtins.c:1054 +#: builtins.c:1055 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4167,7 +4191,7 @@ msgstr "" " Stanje končanja\n" " Vrne uspešno, razen če je dana neveljavna možnost." -#: builtins.c:1139 +#: builtins.c:1140 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4206,7 +4230,7 @@ msgstr "" " Vrne uspešno, razen če je dana neveljavna možnost ali če je IME samo\n" " za branje." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4240,7 +4264,7 @@ msgstr "" " Vrne uspešno, razen če je dana neveljavna možnost ali če je\n" " neveljavno IME." -#: builtins.c:1180 +#: builtins.c:1181 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4280,7 +4304,7 @@ msgstr "" " Vrne uspešno, razen če je dana neveljavna možnost ali če je\n" " neveljavno IME." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4298,7 +4322,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspešno, razen če je N negativen ali večji kot $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4322,7 +4346,7 @@ msgstr "" " Vrne stanje zadnjega izvršenega ukaza v IMENU_DATOTEKE; vrne\n" " neuspešno, če IMENA_DATOTEKE ni mogoče brati." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4348,7 +4372,7 @@ msgstr "" " Vrne uspešno, razen če nadzor posla ni omogočen ali če pride do\n" " napake." -#: builtins.c:1261 +#: builtins.c:1262 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4510,7 +4534,7 @@ msgstr "" " Vrne uspešno, če IZRAZ ovrednoti prav, neuspešno vrne, če IZRAZ \n" " ovrednoti napak ali če je dan neveljaven argument." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4522,7 +4546,7 @@ msgstr "" " To je sopomenka za vgrajeno lupino \"test\", toda zadnji argument\n" " mora biti dobesedni `]' za ujemanje z uklepajem `['." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4541,7 +4565,7 @@ msgstr "" " Stanje končanja:\n" " Vedno uspešno." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4621,7 +4645,7 @@ msgstr "" " Vrne uspešno, razen če je SIGSPEC neveljaven ali je dana neveljavna " "možnost." -#: builtins.c:1400 +#: builtins.c:1401 #, fuzzy msgid "" "Display information about command type.\n" @@ -4679,7 +4703,7 @@ msgstr "" " Vrne uspešno, če so vsa IMENA najdena; vrne neuspešno, če katero\n" " ni najdeno." -#: builtins.c:1431 +#: builtins.c:1432 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4772,7 +4796,7 @@ msgstr "" " Vrne uspešno, razen če je dana neveljavna možnost ali če pride do\n" " napake." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4806,7 +4830,7 @@ msgstr "" " Vrne uspešno, razen če je NAČIN neveljaven ali če je dana neveljavna\n" " možnost." -#: builtins.c:1502 +#: builtins.c:1503 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4851,7 +4875,7 @@ msgstr "" " Vrne stanje ID-ja; vrne neuspešno, če je ID neveljaven ali če je dana\n" " neveljavna možnost." -#: builtins.c:1533 +#: builtins.c:1534 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4876,7 +4900,7 @@ msgstr "" " Vrne stanje ID-ja; neuspešno, če je ID neveljaven ali če je dana\n" " neveljavna možnost." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4899,7 +4923,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvršenega ukaza." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4930,7 +4954,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvršenega ukaza." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4967,7 +4991,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvršenega ukaza." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4996,7 +5020,7 @@ msgstr "" " Stanje končanja:\n" " Stanje končanja je stanje končanja CEVOVODA." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5014,7 +5038,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvršenega ukaza." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5048,12 +5072,14 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvršenega ukaza." -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5066,12 +5092,14 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvršenega ukaza." -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5084,7 +5112,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvršenega ukaza." -#: builtins.c:1671 +#: builtins.c:1672 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5107,7 +5135,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje končanja UKAZA." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -5131,7 +5159,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspešno, razen če je IME samo za branje." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5149,7 +5177,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvršenega ukaza." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5173,7 +5201,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje obnovljenega posla." -#: builtins.c:1726 +#: builtins.c:1727 #, fuzzy msgid "" "Evaluate arithmetic expression.\n" @@ -5192,7 +5220,7 @@ msgstr "" " Stanje končanja:\n" " Vrne 1, če je IZRAZ enakovreden; sicer vrne 0." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5246,7 +5274,7 @@ msgstr "" " Stanje končanja:\n" " 0 ali 1, odvisno od vrednosti IZRAZA." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5350,7 +5378,7 @@ msgstr "" " HISTIGNORE\tZ dvopičjem ločen seznam vzorcev, ki so uporabljeni \n" " \t\tza odločanje, kateri ukazi naj se shranijo na seznam zgodovine.\n" -#: builtins.c:1821 +#: builtins.c:1822 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5407,7 +5435,7 @@ msgstr "" " Vrne uspešno, razen če je predložen neveljaven argument ali če\n" " sprememba mape spodleti." -#: builtins.c:1855 +#: builtins.c:1856 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5458,7 +5486,7 @@ msgstr "" " Vrne uspešno, razen če je predložen neveljaven argument ali če\n" " sprememba mape spodleti." -#: builtins.c:1885 +#: builtins.c:1886 #, fuzzy msgid "" "Display directory stack.\n" @@ -5510,7 +5538,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspešno, razen če je dana neveljavna možnost ali če pride do napake." -#: builtins.c:1916 +#: builtins.c:1917 #, fuzzy msgid "" "Set and unset shell options.\n" @@ -5547,7 +5575,7 @@ msgstr "" " Vrne uspešno, če je IME_MOŽNOSTI omogočeno; neuspešno, če je\n" " dana neveljavna možnost ali če je IME_MOŽNOSTI onemogočeno." -#: builtins.c:1937 +#: builtins.c:1938 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5571,6 +5599,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -5613,7 +5643,7 @@ msgstr "" "napake\n" " branja ali dodelitve." -#: builtins.c:1971 +#: builtins.c:1974 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5669,7 +5699,7 @@ msgstr "" " Vrne uspešno, razen če je predložena neveljavna možnost ali če pride\n" " do napake." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5691,7 +5721,7 @@ msgstr "" " Vrne uspešno, razen če je predložena neveljavna možnost ali če pride\n" " do napake." -#: builtins.c:2016 +#: builtins.c:2019 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5749,7 +5779,7 @@ msgstr "" " Vrne uspešno, razen če je predložena neveljavna možnost ali pa IME\n" " nima določenega določila dopolnjevanja." -#: builtins.c:2047 +#: builtins.c:2050 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5827,7 +5857,7 @@ msgstr "" " Vrne uspešno, razen če je dana neveljavna možnost oz. je POLJE samo\n" " za branje ali pa ni zabeleženo polje." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5837,6 +5867,10 @@ msgstr "" " \n" " Je sopomenka za `mapfile'." +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: neveljaven ključ povezanega polja" + #, fuzzy #~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." #~ msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc." diff --git a/po/sr.gmo b/po/sr.gmo index d7b5b9fe4..609b01835 100644 Binary files a/po/sr.gmo and b/po/sr.gmo differ diff --git a/po/sr.po b/po/sr.po index 166d85ce1..63cabb302 100644 --- a/po/sr.po +++ b/po/sr.po @@ -4,13 +4,14 @@ # Marko Uskokovic , 2007, 2008. # Serbian linux distribution cp6Linux # Copyright © 2007 Marko Uskokovic -# Мирослав Николић , 2014—2020. +# Мирослав Николић , 2014—2022. +# msgid "" msgstr "" -"Project-Id-Version: bash-5.1\n" +"Project-Id-Version: bash-5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2020-12-09 10:27+0200\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-08-22 00:19+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" @@ -24,57 +25,52 @@ msgstr "" msgid "bad array subscript" msgstr "лоша подскрипта низа" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: уклањам атрибут упуте назива" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: не могу да претворим пописани низ у придружив" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: неисправан кључ придруживог низа" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: не могу да доделим у не-бројевни попис" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: мора користити индекс приликом додељивања придруживог низа" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не могу да направим: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "баш_изврши_јуникс_наредбу: не могу да нађем мапу кључа за наредбу" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: први не-празан знак није \"" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "нема затварајућег „%c“ у %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: недостаје раздвојник двотачке" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "„%s“: не могу да развежем у мапи тастера наредбе" @@ -94,7 +90,7 @@ msgstr "ширење заграде: нисам успео да доделим msgid "brace expansion: failed to allocate memory for `%s'" msgstr "ширење заграде: нисам успео да доделим меморију за „%s“" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: неисправан назив алијаса" @@ -165,7 +161,7 @@ msgstr "" msgid "HOME not set" msgstr "„HOME“ није подешено" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "превише аргумената" @@ -192,7 +188,7 @@ msgstr "упозорење:" msgid "%s: usage: " msgstr "%s: употреба:" -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: опција захтева аргумент" @@ -207,7 +203,7 @@ msgstr "%s: потребан је бројевни аргумент" msgid "%s: not found" msgstr "%s: не постоји" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: неисправна опција" @@ -217,7 +213,7 @@ msgstr "%s: неисправна опција" msgid "%s: invalid option name" msgstr "%s: неисправан назив опције" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: није исправан одредник" @@ -230,7 +226,7 @@ msgstr "неисправан октални број" msgid "invalid hex number" msgstr "неисправан хексадецимални број" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "неисправан број" @@ -244,88 +240,93 @@ msgstr "%s: неисправна одредба сигнала" msgid "`%s': not a pid or valid job spec" msgstr "„%s“: није пиб или исправна одредба посла" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: променљива само за читање" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s: не могу да доделим" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: „%s“ је ван опсега" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "аргумент" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "„%s“ је ван опсега" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: нема таквог посла" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: нема управљања послом" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "нема управљања послом" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: ограничено" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "ограничено" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: није уграђеност шкољке" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "грешка писања: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "грешка подешавања особина терминала: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "грешка добављања особина терминала: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: грешка довлачења текућег директоријума: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: нејасна одредба посла" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "помоћ није доступна у овом издању" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не могу да расподесим: „%s“ је само за читање" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: не могу да расподесим" @@ -335,108 +336,108 @@ msgstr "%s: не могу да расподесим" msgid "%s: invalid action name" msgstr "%s: неисправан назив радње" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: нема одредбе довршавања" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "упозорење: опција „-F“ можда неће радити како сте очекивали" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "упозорење: опција „-C“ можда неће радити како сте очекивали" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "тренутно не обавља функцију довршавања" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "може бити коришћено једино у функцији" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "не можете користити „-f“ да направите функције" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: функција само за читање" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: променљива упуте не може бити низ" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: самоупућивање променљиве упуте назива није дозвољено" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: кружна упута назива" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "%s: неисправан назив променљиве за упуту назива" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "не можете користити „-f“ да направите функције" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: функција само за читање" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: додела низа цитираног споја је застарела" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: не могу да уништим променљиве низа на овај начин" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: не могу да претворим придруживи низ у пописани" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: додела низа цитираног споја је застарела" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "променљиво учитавање није доступно" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "не могу да отворим дељени предмет „%s“: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "не могу да нађем „%s“ у дељеном предмету „%s“: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: динамичка уградња је већ учитана" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "функција учитавања за „%s“ није успела (%d): није учитано" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: није динамички учитано" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: не могу да обришем: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: је директоријум" @@ -451,7 +452,7 @@ msgstr "%s: није обична датотека" msgid "%s: file is too large" msgstr "%s: датотека је превелика" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: не могу да извршим бинарну датотеку" @@ -547,12 +548,12 @@ msgstr "" msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "нема тема помоћи које одговарају „%s“. Покушајте „help help“ или „man -k %s“ или „info %s“." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не могу да отворим: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -571,21 +572,21 @@ msgstr "" "Звездица (*) поред назива значи да је наредба искључена.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "не могу користити више од једног „-anrw“" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "положај историјата" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: неисправна ознака времена" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: није успело ширење историјата" @@ -608,78 +609,78 @@ msgstr "%s: аргументи морају бити процеси или ИБ- msgid "Unknown error" msgstr "Непозната грешка" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "очекиван је израз" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: није пописани низ" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: неисправна одредба описника датотеке" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: неисправан описник датотеке: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: неисправан број реда" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: неисправно порекло низа" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: неисправна количина опозива" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "празан назив променљиве низа" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "потребна је подршка променљиве низа" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "„%s“: недостаје знак записа" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: неисправна одредба записа времена" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: неисправан знак записа" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "упозорење: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "проблем обраде записа: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "недостаје хексадецимална цифра за \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "недостаје цифра уникода за \\%c" @@ -829,12 +830,12 @@ msgstr "" " \n" " Уграђено „dirs“ приказује спремник директоријума." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: неисправна одредба временског истека" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "грешка читања: %d: %s" @@ -847,7 +848,7 @@ msgstr "могу једино да „испишем“ из функције и msgid "cannot simultaneously unset a function and a variable" msgstr "не могу истовремено да расподесим функцију и променљиву" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: није променљива низа" @@ -866,11 +867,11 @@ msgstr "%s: не могу да извезем" msgid "shift count" msgstr "број помака" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "не могу истовремено да подесим и да расподесим опције шкољке" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: неисправан назив опције шкољке" @@ -937,16 +938,16 @@ msgstr "%s: неисправан аргумент ограничења" msgid "`%c': bad command" msgstr "„%c“: лоша наредба" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: не могу да добавим ограничење: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "ограничење" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: не могу да изменим ограничење: %s" @@ -965,7 +966,7 @@ msgstr "„%c“: неисправан оператер симболичког msgid "`%c': invalid symbolic mode character" msgstr "„%c“: неисправан знак симболичког режима" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " ред " @@ -985,96 +986,106 @@ msgstr "Прекидам..." msgid "INFORM: " msgstr "ПОДАЦИ: " -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "упозорење ПРОЧИШЋАВАЊА:" + +#: error.c:488 msgid "unknown command error" msgstr "непозната грешка наредбе" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "лоша врста наредбе" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "лош спајач" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "лош скок" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: несвезана променљива" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aистекло је време чекајући на улаз: сам се одјављујем\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "не могу да преусмерим стандардни улаз из „/dev/null:“: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "ЗАПИСВРЕМЕНА: „%c“: неисправан знак записа" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "изврши_копроц: копроцес [%d:%s] још увек постоји" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "грешка спојке" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "процена: премашен је највећи ниво угнежђивања процене (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: премашен је највећи ниво угнежђивања извора (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: премашен је највећи ниво угнежђивања функције (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ограничено: не могу да наведем / у називима наредби" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: нема такве наредбе" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: не могу да извршим: нисам нашао потребну датотеку" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: лош тумач" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: не могу да извршим бинарну датотеку: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "„%s“: јесте посебна уграђеност" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "не могу да удвостручим „fd %d“ у „fd %d“" @@ -1087,68 +1098,68 @@ msgstr "премашен је ниво дубачења израза" msgid "recursion stack underflow" msgstr "недоток спремника дубачења" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "садржајна грешка у изразу" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "покушано је додељивање у не-променљиву" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "садржајна грешка у додели променљиве" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "дељење 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "грешка: лош симбол доделе израза" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "„:“ је очекивано за условни израз" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "изложилац је мањи од 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "одредник је очекиван након пре-увећања или пре-умањења" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "недостаје )" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "садржајна грешка: очекиван је операнд" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "садржајна грешка: неисправан аритметички оператор" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (симбол грешке је „%s“)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "неисправна аритметичка основа" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "неисправна константа целог броја" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "вредност је превише велика за основу" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: грешка израза\n" @@ -1157,7 +1168,7 @@ msgstr "%s: грешка израза\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: не могу да приступим родитељском директоријуму" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не могу да поништим режим без-кашњења за фд „%d“" @@ -1176,167 +1187,167 @@ msgstr "save_bash_input: већ постоји међумеморија за н msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: „pgrp“ спојка" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "исцепљени пиб „%d“ се јавља у покренутом послу „%d“" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "бришем заустављени посао „%d“ са групом процеса %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: пиб %5ld (%s) је означен да је још жив" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: нема таквог пиб-а" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Урађен" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Заустављен" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Заустављен(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Покренут" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Урађен(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Изађи из „%d“" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Непознато стање" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(језгрени избачај)" -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "сетпгиб порода (%ld у %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: пиб %ld није пород ове шкољке" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Нема записа о процесу %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: посао „%d“ је заустављен" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: нема текућих послова" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: посао је завршио" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: посао „%dд је већ у позадини" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: укључујем „WNOHANG“ да избегнем неодређени блок" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: ред %d:" -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (језгрени избачај)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(„wd“ сада: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: није успело „getpgrp“" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: нема контроле посла у позадини" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: дисциплина реда" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "не могу да подесим групу процеса терминала (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "нема управљања послом у овој шкољци" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: тврдња није успела: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1345,47 +1356,47 @@ msgstr "" "\r\n" "malloc: %s:%d: тврдња је лоше изведена\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "непознато" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: блок на слободном списку је преписан" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: позвана са већ ослобођеним аргументом блока" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: позвана са недодељеним аргументом блока" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: откривена је недовољност тока; mh_n-бајтова је ван опсега" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free: откривена је недовољност тока; „magic8“ је оштећено" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: почетна и крајња величина дела се разликују" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: позвана са недодељеним аргументом блока" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: откривена је недовољност тока; mh_n-бајтова је ван опсега" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: откривена је недовољност тока; „magic8“ је оштећено" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: почетна и крајња величина дела се разликују" @@ -1427,22 +1438,22 @@ msgstr "%s: лоша одредба путање мреже" msgid "network operations not supported" msgstr "радње мреже нису подржане" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: не могу да изменим језик (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: не могу да изменим језик (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: не могу да изменим језик (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: не могу да изменим језик (%s): %s" @@ -1460,136 +1471,136 @@ msgstr "Имате нову пошту у $_" msgid "The mail in %s has been read\n" msgstr "Пошта у „%s“ је прочитана\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "садржајна грешка: потребан је аритметички израз" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "садржајна грешка: није очекивано „;“" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "садржајна грешка: „((%s))“" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: лоша врста упутства „%d“" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "овде-документ у %d. реду је ограничен крајем-датотеке (тражи се „%s“)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: упутсво преусмерења „%d“ је ван опсега" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" msgstr "shell_getc: величина_реда_улаза_шкољке (%zu) је премашила НАЈВЕЋУ_ВЕЛИЧИНУ (%lu): ред је скраћен" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "премашен је највећи број „овде-документ“" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "неочекивани крај датотеке приликом тражења поклапања „%c“" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "неочекивани крај датотеке приликом тражења „]]“" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "садржајна грешка у условном изразу: неочекивани симбол „%s“" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "садржајна грешка у условном изразу" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неочекивани симбол „%s“, очекивана је )" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "очекивана је )" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неочекивани аргумент „%s“ условном једночланом оператору" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "неочекивани аргумент условном једночланом оператору" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неочекивани симбол „%s“, очекиван је условни двочлани оператор" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "очекиван је условни двочлани оператор" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неочекивани аргумент „%s“ условном двочланом оператору" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "неочекивани аргумент условном двочланом оператору" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неочекивани симбол „%c“ у условној наредби" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неочекивани симбол „%s“ у условној наредби" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "неочекивани симбол „%d“ у условној наредби" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "садржајна грешка близу неочекиваног симбола „%s“" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "садржајна грешка близу „%s“" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "садржајна грешка: неочекивани крај датотеке" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "садржајна грешка" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Користите „%s“ да напустите шкољку.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "неочекивани крај датотеке приликом тражења поклапајуће )" @@ -1627,94 +1638,94 @@ msgstr "xtrace_set: НИШТАВАН указивач датотеке" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: неисправан знак записа" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "описник датотеке је ван опсега" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: нејасно преусмерење" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: не могу да препишем постојећу датотеку" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ограничено: не могу да преусмерим излаз" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не могу да направим привремену датотеку за документ-овде: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: не могу да доделим фд променљивој" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "„/dev/(tcp|udp)/домаћин/прикључник“ није подржано без умрежавања" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "грешка преусмерења: не могу да удвостручим фд" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "не могу да нађем „/tmp“, направите га!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "„/tmp“ мора бити исправан назив директоријума" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "режим уредног исписа је занемарен у међудејственим шкољкама" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: неисправна опција" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "не могу да подесим јиб на %d: стварни јиб %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "не могу да подесим гиб на %d: стварни гиб %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "не могу да покренем прочишћавача; режим прочишћавања је искључен" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: је директоријум" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Немам назив!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "Гну баш, издање %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1723,317 +1734,317 @@ msgstr "" "Употреба:\t%s [Гнуова дуга опција] [опција] ...\n" " \t%s [Гнуова дуга опција] [опција] датотека-списа ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Гнуове дуге опције:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Опције шкољке:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t„-ilrsD“ или наредба „-c“ или -O шопц_опција\t\t(призивање само)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t„-%s“ или опција „-o“\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Укуцајте „%s -c \"help set\"“ за више података о опцијама шкољке.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Укуцајте „%s -c help“ за више података о уграђеним наредбама шкољке.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Користите наредбу „bashbug“ да известите о грешкама.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "Матична страница баша: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "Општа помоћ коришћења Гну софтвера: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: неисправна операција" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Нетачан сигнал" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Обустави" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Прекини" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Изађи" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Неисправна инструкција" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "Прати/ухвати БПТ" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Инструкција „ABORT“" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Инструкција „EMT“" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Изузетак покретног зареза" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Убијен" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Грешка сабирнице" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Неуспех сегментације" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Лош системски позив" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Сломљена спојка" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Аларм" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Окончано" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Хитан УИ услов" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Заустављен (сигнал)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Настави" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Пород је преминуо или заустављен" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Заустављен (улаз конзоле)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Заустављен (излаз конзоле)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "Спреман на У/И" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Ограничење процесора" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Ограничење датотеке" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Аларм (виртуелни)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Аларм (профил)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Промењени прозор" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Закључавање снимка" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Кориснички сигнал 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Кориснички сигнал 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "Улазни ХФТ подаци на чекању" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "неизбежан пад напајања" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "неизбежан пад система" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "пребацује процес на други процесор" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "грешка програмирања" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "Осигуран је режим ХФТ праћења" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "Понови је испраћен режим ХФТ праћења" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "Низ ХФТ звука је завршен" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Захтев за подацима" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Непознат сигнал #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "лоша замена: нема затварајуће „%s“ у „%s“" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: не могу да доделим списак члану низа" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "не могу да начиним спојку за замену процеса" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "не могу да начиним пород за замену процеса" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "не могу да отворим именовану спојку „%s“ за читање" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "не могу да отворим именовану спојку „%s“ за писање" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "не могу да удвостручим именовану спојку „%s“ као фд %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "замена наредбе: занемарих ништавни бајт у улазу" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "не могу да начиним спојку за замену наредбе" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "не могу да начиним пород за замену наредбе" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: не могу да удвостручим спојку као фд 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: неисправан назив променљиве за упуту назива" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: неисправно посредно ширење" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: неисправан назив променљиве" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: параметар није подешен" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: параметар је ништаван или није подешен" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: израз подниске < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: лоша замена" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: не могу дадоделим на овај начин" -#: subst.c:9814 +#: subst.c:10111 msgid "future versions of the shell will force evaluation as an arithmetic substitution" msgstr "будућа издања шкољке ће приморати процену као аритметичку замену" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "лоша замена: нема затварајућег „`“ у „%s“" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "нема поклапања: %s" @@ -2056,21 +2067,21 @@ msgstr "очекивана је )" msgid "`)' expected, found %s" msgstr "очекивана је ), а пронађена %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: очекиван је двочлани оператор" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: очекиван је једночлани оператор" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "недостаје ]" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "садржајна грешка: није очекивано „%s“" @@ -2079,99 +2090,104 @@ msgstr "садржајна грешка: није очекивано „%s“" msgid "invalid signal number" msgstr "неисправан сигнални број" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "руковалац изузетком: премашен је највећи ниво руковаоца изузецима (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: лоша вредност у „trap_list[%d]“: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: руковалац сигналом је „SIG_DFL“, поново шаљем %d (%s) мени самом" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: лош сигнал %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "грешка увоза одреднице функције за „%s“" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "ниво шкољке (%d) је превисок, поново постављам на 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: нема садржаја функције на текућем досегу" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: вредности не може бити додељена вредност" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s: не могу да наследим вредност из несагласне врсте" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: додељујем цео број упути назива" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variable: нема садржаја функције на текућем досегу" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s има ништавну ниску извоза" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "неисправан знак %d у нисци извоза за „%s“" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "нема = у нисци извоза за „%s“" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: глава променљивих шкољке није садржајност функције" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: нема садржаја општих променљивих" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: глава променљивих шкољке није привремени досег окружења" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: не могу да отворим као ДАТОТЕКУ" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: неисправна вредност за описник праћења датотеке" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: вреднсот сагласности је ван опсега" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Ауторска права © 2020 Задужбина слободног софтвера, Доо." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Ауторска права © 2022. Фондација слободног софтвера, Доо." #: version.c:47 version2.c:47 msgid "License GPLv3+: GNU GPL version 3 or later \n" @@ -2251,12 +2267,12 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [арг ...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgiIlnrtux] [-p] [назив[=вредност] ...]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgiIlnrtux] [назив[=вредност] ...] или declare -p [-aAfFilnrtux] [назив ...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgiIlnrtux] [-p] назив[=вредност] ..." +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgiIlnrtux] [-p] назив[=вредност] ... или typeset -p [-aAfFilnrtux] [назив ...]" #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2343,8 +2359,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [-abefhkmnptuvxBCHP] [-o назив-опције] [--] [арг ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o назив-опције] [--] [-] [арг ...]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" @@ -2391,8 +2407,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] назив [назив ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ограничење]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [ограничење]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" @@ -2431,12 +2447,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C msgstr "if НАРЕДБЕ; then НАРЕДБЕ; [ elif НАРЕДБЕ; then НАРЕДБЕ; ]... [ else НАРЕДБЕ; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while НАРЕДБЕ; do НАРЕДБЕ; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while НАРЕДБЕ; do НАРЕДБЕ-2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until НАРЕДБЕ; do НАРЕДБЕ; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until НАРЕДБЕ; do НАРЕДБЕ-2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -3729,7 +3745,8 @@ msgid "" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" @@ -3771,7 +3788,8 @@ msgstr "" " ако је достављена опција „-u“. Ред је подељен на поља као при дељењу\n" " речи, а прва реч се додељује првом НАЗИВУ, друга реч другом НАЗИВУ,\n" " и тако редом, са сваком наредном речју додељеном последњем НАЗИВУ.\n" -" Само знаци пронађени у „$IFS“ се признају за граничнике речи.\n" +" Само знаци пронађени у „$IFS“ се признају за граничнике речи. По основи,\n" +" знак контра косе црте мења значење знакова граничника и новог реда.\n" " \n" " Ако нису достављени НАЗИВИ, читани ред је смештен у променљивој ОДГОВОР.\n" " \n" @@ -3805,7 +3823,7 @@ msgstr "" " читања (у том случају је већи од 128), ако не дође до грешке доделе променљиве,\n" " или ако се не достави неисправан описник датотеке као аргумент опције „-u“." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3825,7 +3843,7 @@ msgstr "" " Излазно стање:\n" " Даје N, или неуспех ако шкољка не извршава функцију или спис." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3988,7 +4006,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако није дата неисправна опција." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4026,7 +4044,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако није дата неисправна опција или ако је НАЗИВ само за читање." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4058,7 +4076,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако је дата неисправна опција или је НАЗИВ неисправан." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4096,7 +4114,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако није дата неисправна опција или ако је НАЗИВ неисправан." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4114,7 +4132,7 @@ msgstr "" " Излазно стање:\n" " Резултати су успешни осим ако N није негативно иливеће од $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4138,7 +4156,7 @@ msgstr "" " Даје стање последње извршене наредбе у ДАТОТЕЦИ; не успева\n" " ако назив ДАТОТЕКЕ не може бити прочитан." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4162,7 +4180,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако није укључено управљање послом или ако не дође до грешке." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4313,7 +4331,7 @@ msgstr "" " Даје позитиван резултат ако се ИЗРАЗ процени на тачно; неуспех ако се ИЗРАЗ процени\n" " на нетачно или ако је дат неисправан аргумент." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4325,7 +4343,7 @@ msgstr "" " Ово је синоним за уграђеност „test“, али последњи аргумент мора\n" " бити дословна ], да поклопи отворену [." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4343,7 +4361,7 @@ msgstr "" " Излазно стање:\n" " Увек успешно." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4409,7 +4427,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим за неисправну ОДРЕДБА_СИГНАЛА или за неисправну опцију." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4463,7 +4481,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат ако су пронађени сви НАЗИВИ; неуспех ако ниједан није пронађен." -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4557,7 +4575,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако се не достави неисправна опција или ако не дође до грешке." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4589,7 +4607,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако је РЕЖИМ неисправан или ако је дата неисправна опција." -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4640,7 +4658,7 @@ msgstr "" " дата неисправна опција, или ако је достављено „-n“ а шкољка нема „unwaited-for“\n" " пород." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4662,7 +4680,7 @@ msgstr "" " Исписује стање последњег ПИБ-а; неуспех ако је ПИБ неисправан или ако је дата\n" " неисправна опција." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4684,7 +4702,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4714,7 +4732,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4750,7 +4768,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4779,7 +4797,7 @@ msgstr "" " Излазно стање:\n" " Стање резултата јесте стање резултата СПОЈНОГРЕДА." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4797,7 +4815,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4824,43 +4842,43 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Извршава наредбе након што се проба успешно обави.\n" " \n" -" Шири и извршава НАРЕДБЕ након што завршна наредба у „while“ НАРЕДБАМА\n" +" Шири и извршава НАРЕДБЕ-2 након што завршна наредба у НАРЕДБАМА\n" " има излазно стање нуле.\n" " \n" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Извршава наредбе након што се проба успешно обави.\n" +"Извршава наредбе све док проба не буде неуспела.\n" " \n" -" Шири и извршава НАРЕДБЕ након што завршна наредба у „until“ НАРЕДБАМА\n" +" Шири и извршава НАРЕДБЕ-2 након што завршна наредба у НАРЕДБАМА\n" " има излазно стање које није нула.\n" " \n" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4882,7 +4900,7 @@ msgstr "" " Излазно стање:\n" " Наредба копроцеса даје излазно стање 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -4904,7 +4922,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако је НАЗИВ само за читање." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4922,7 +4940,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4945,7 +4963,7 @@ msgstr "" " Излазно стање:\n" " Даје стање настављеног посла." -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4963,7 +4981,7 @@ msgstr "" " Излазно стање:\n" " Даје 1 ако се ИЗРАЗ процени на 0; у супротном даје 0." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5009,7 +5027,7 @@ msgstr "" " Излазно стање:\n" " 0 или 1 у зависности од вредност ИЗРАЗА." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5112,7 +5130,7 @@ msgstr "" " ЗАНЕМАРИИСТОРИЈАТ Списак шаблона раздвојен двотачком коришћених за одлучивање\n" " о наредбама које требају бити сачуване на списку историјата.\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5168,7 +5186,7 @@ msgstr "" " Даје позитиван резултат осим ако није достављен неисправан аргумент или замена\n" " директоријума не успе." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5218,7 +5236,7 @@ msgstr "" " Даје позитиван резултат осим ако није достављен неисправан аргумент или измена\n" " директоријума не успе." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5270,7 +5288,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако се не достави неисправна опција или ако не дође до грешке." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5306,7 +5324,7 @@ msgstr "" " Даје позитиван резултат ако је НАЗИВ_ОПЦИЈЕ укључен; неуспех ако је дата\n" " неисправна опција или ако је НАЗИВ_ОПЦИЈЕ искључен." -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5325,6 +5343,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" @@ -5353,6 +5373,8 @@ msgstr "" " \n" " %b\tшири низове прекида контра косе црте у одговарајући аргумент\n" " %q\tцитира аргумент на начин како би био коришћен као улаз шкољке\n" +" %Q\tкао %q, али примењује сваку тачност на нецитирани аргумент пре\n" +" \t\tцитирања\n" " %(fmt)T исписује ниску датум-време резултирајући коришћењем ФМТ-а као\n" " ниске записа за „strftime(3)“\n" " \n" @@ -5364,7 +5386,7 @@ msgstr "" " Даје позитиван резултат осим ако није дата неисправна опција или ако не\n" " дође до грешке писања или доделе." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5412,7 +5434,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако се не достави неисправна опција или ако не дође до грешке." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5431,7 +5453,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако се не достави неисправна опција или ако не дође до грешке." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5484,7 +5506,7 @@ msgstr "" " Даје позитиван резултат осим ако се не достави неисправна опција или НАЗИВ\n" " нема одређену одредбу довршавања." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5549,7 +5571,7 @@ msgstr "" " Даје позитиван резултат осим ако није дата неисправна опција или ако је НИЗ само\n" " за читање или није индексирани низ." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5559,6 +5581,9 @@ msgstr "" " \n" " Синоним за „mapfile“." +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: неисправан кључ придруживог низа" + #~ msgid "" #~ "Returns the context of the current subroutine call.\n" #~ " \n" diff --git a/po/sv.gmo b/po/sv.gmo index 9f406df3f..804ca8fe0 100644 Binary files a/po/sv.gmo and b/po/sv.gmo differ diff --git a/po/sv.po b/po/sv.po index f76bd168b..7a12ea0be 100644 --- a/po/sv.po +++ b/po/sv.po @@ -1,16 +1,16 @@ # Swedish translation of bash -# Copyright © 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020 Free Software Foundation, Inc. +# Copyright © 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2022 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # -# Göran Uddeborg , 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020. +# Göran Uddeborg , 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2022. # -# $Revision: 1.30 $ +# $Revision: 1.31 $ msgid "" msgstr "" -"Project-Id-Version: bash 5.1\n" +"Project-Id-Version: bash 5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2020-12-09 21:35+0100\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-06-17 22:31+0200\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -24,57 +24,52 @@ msgstr "" msgid "bad array subscript" msgstr "felaktigt vektorindex" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: tar bort attributet namnreferens" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: det går inte att konvertera en indexerad vektor till associativ" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: ogiltig nyckel till associativ vektor" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: det går inte att tilldela till ickenumeriska index" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: måste använda index vid tilldelning av associativ vektor" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: det går inte att skapa: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: det går inte att hitta en tangentbindning för kommandot" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: första ickeblanka tecknet är inte '\"'" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "ingen avslutande ”%c” i %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: kolonseparator saknas" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "”%s”: det går inte att avbinda i kommandotangentbindning" @@ -82,7 +77,7 @@ msgstr "”%s”: det går inte att avbinda i kommandotangentbindning" #: braces.c:327 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "klammerexpansion: kan inte allokera minne för %s" +msgstr "klammerexpansion: det går inte att allokera minne för %s" #: braces.c:406 #, c-format @@ -94,7 +89,7 @@ msgstr "klammerexpansion: misslyckades att allokera minne för %u element" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "klammerexpansion: misslyckades att allokera minne för ”%s”" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "”%s”: ogiltigt aliasnamn" @@ -165,7 +160,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME är inte satt" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "för många argument" @@ -192,7 +187,7 @@ msgstr "varning: " msgid "%s: usage: " msgstr "%s: användning: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: flaggan kräver ett argument" @@ -207,7 +202,7 @@ msgstr "%s: numeriskt argument krävs" msgid "%s: not found" msgstr "%s: finns inte" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: ogiltig flagga" @@ -217,7 +212,7 @@ msgstr "%s: ogiltig flagga" msgid "%s: invalid option name" msgstr "%s: ogiltigt flaggnamn" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "”%s”: inte en giltig identifierare" @@ -230,7 +225,7 @@ msgstr "ogiltigt oktalt tal" msgid "invalid hex number" msgstr "ogiltigt hexadecimalt tal" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "ogiltigt tal" @@ -244,88 +239,93 @@ msgstr "%s: ogiltig signalspecifikation" msgid "`%s': not a pid or valid job spec" msgstr "”%s”: inte en pid eller giltig jobbspecifikation" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: endast läsbar variabel" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s: det går inte att tilldela" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s utanför giltigt intervall" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s utanför giltigt intervall" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: inget sådant jobb" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: ingen jobbstyrning" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "ingen jobbstyrning" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: begränsat" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "begränsat" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: inte inbyggt i skalet" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "skrivfel: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "fel när terminalattribut ställdes in: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "fel när terminalattribut hämtades: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: fel när aktuell katalog hämtades: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: tvetydig jobbspecifikation" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "hjälp är inte tillgängligt i denna version" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: det går inte att ta bort tilldelning: endast läsbar %s" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: det går inte att ta bort tilldelning" @@ -335,108 +335,108 @@ msgstr "%s: det går inte att ta bort tilldelning" msgid "%s: invalid action name" msgstr "%s: ogiltigt åtgärdsnamn" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: ingen kompletteringsspecifikation" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "varning: flaggan -F fungerar kanske inte som du väntar dig" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "varning: flaggan -C fungerar kanske inte som du väntar dig" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "kör inte en kompletteringsfunktion" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "kan endast användas i en funktion" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "det går inte att använda ”-f” för att göra funktioner" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: endast läsbar funktion" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: en referensvariabel kan inte vara en vektor" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: att en namnreferensvariabel självrefererar är inte tillåtet" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: cirkulär namnreferens" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "”%s”: ogiltigt variabelnamn för referens" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "det går inte att använda ”-f” för att göra funktioner" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: endast läsbar funktion" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: citerad sammansatt tilldelning av vektorer undanbedes" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: det går inte att förstöra vektorvariabler på detta sätt" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: det går inte att konvertera en associativ vektor till indexerad" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: citerad sammansatt tilldelning av vektorer undanbedes" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "dynamisk laddning är inte tillgängligt" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "det går inte att öppna delat objekt %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" -msgstr "kan inte hitta %s i det delade objektet %s: %s" +msgstr "det går inte att hitta %s i det delade objektet %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: den dynamiska inbyggda är redan inläst" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "inläsningsfunktionen för %s returnerar misslyckande (%d): inte inläst" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: inte dynamiskt laddad" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: kan inte ta bort: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: är en katalog" @@ -451,7 +451,7 @@ msgstr "%s: inte en normal fil" msgid "%s: file is too large" msgstr "%s: filen är för stor" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: det går inte att köra binär fil" @@ -546,12 +546,12 @@ msgstr "" msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "inget hjälpämne matchar ”%s”. Prova ”help help” eller ”man -k %s” eller ”info %s”." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: det går inte att öppna: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -571,21 +571,21 @@ msgstr "" "En stjärna (*) bredvid ett namn betyder att det kommandot är avstängt.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "det går inte att använda mer än en av -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "historieposition" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: ogiltig tidsstämpel" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: historieexpansionen misslyckades" @@ -608,78 +608,78 @@ msgstr "%s: argument måste vara processer eller jobb-id:n" msgid "Unknown error" msgstr "Okänt fel" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "uttryck förväntades" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: inte en indexerad vektor" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ogiltig filbeskrivarspecifikation" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ogiltig filbeskrivare: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: ogiltigt radantal" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: ogiltig vektorstart" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ogiltigt kvantum för återanrop" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "tomt vektorvariabelnamn" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "stöd för vektorvariabler krävs" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "”%s”: formateringstecken saknas" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "”%c”: ogiltig specifikation av tidsformat" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "”%c”: ogiltigt formateringstecken" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "varning: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "formattolkningsproblem: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "hexadecimal siffra saknas för \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "unicode-siffra saknas för \\%c" @@ -829,12 +829,12 @@ msgstr "" " \n" " Den inbyggda ”dirs” visar katalogstacken." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: ogiltig tidsgränsspecifikation" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "läsfel: %d: %s" @@ -847,7 +847,7 @@ msgstr "det går bara att göra ”return” från en funktion eller källinläs msgid "cannot simultaneously unset a function and a variable" msgstr "det går inte att samtidigt ta bort en funktion och en variabel" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: inte en vektorvariabel" @@ -866,11 +866,11 @@ msgstr "%s: det går inte att exportera" msgid "shift count" msgstr "skiftantal" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "det går inte att sätta och ta bort skalflaggor samtidigt" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ogiltigt skalflaggsnamn" @@ -937,16 +937,16 @@ msgstr "%s: ogiltigt gränsargument" msgid "`%c': bad command" msgstr "”%c”: felaktigt kommando" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan inte avgöra gränsen: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "gräns" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan inte ändra gränsen: %s" @@ -965,7 +965,7 @@ msgstr "”%c”: ogiltig operator för symboliskt läge" msgid "`%c': invalid symbolic mode character" msgstr "”%c”: ogiltigt tecken för symboliskt läge" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " rad " @@ -985,96 +985,106 @@ msgstr "Avbryter..." msgid "INFORM: " msgstr "INFORMATION: " -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "FELSÖKNINGS-varning: " + +#: error.c:488 msgid "unknown command error" msgstr "okänt kommandofel" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "felaktig kommandotyp" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "felaktig anslutning" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "felaktigt hopp" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: obunden variabel" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atiden gick ut i väntan på indata: automatisk utloggning\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "det går inte att omdirigera standard in från /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: ”%c”: ogiltigt formateringstecken" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] finns fortfarande" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "rörfel" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: maximal nästning av eval överskriden (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximal nästning av source överskriden (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximal nästning av funktioner överskriden (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: begränsat: det går inte att ange ”/” i kommandonamn" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: kommandot finns inte" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: det går inte att köra: en nödvändig fil finns inte" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: felaktig tolk" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: det går inte att köra binär fil: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "”%s”: är en speciell inbyggd" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "det går inte att duplicera fb %d till fb %d" @@ -1087,68 +1097,68 @@ msgstr "rekursionsnivå i uttryck överskriden" msgid "recursion stack underflow" msgstr "underspill i rekursionsstacken" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "syntaxfel i uttrycket" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "försök att tilldela till en icke-variabel" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "syntaxfel i variabeltilldelning" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "division med 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "fel: felaktig expassign-symbol" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "”:” förväntades i villkorligt uttryck" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "exponenten är mindre än 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "en identifierare förväntades efter pre-ökning eller pre-minskning" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "”)” saknas" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "syntaxfel: en operand förväntades" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "syntaxfel: ogiltig aritmetisk operator" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (felsymbol är ”%s”)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "ogiltig aritmetisk bas" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "felaktig heltalskonstant" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "värdet är för stort för basen" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: uttrycksfel\n" @@ -1157,7 +1167,7 @@ msgstr "%s: uttrycksfel\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: det går inte att komma åt föräldrakatalogen" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "det går inte att återställa fördröjningsfritt läge för fb %d" @@ -1176,167 +1186,167 @@ msgstr "save_bash_input: buffert finns redan för ny fb %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp rör" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "avgrenad pid %d finns i körande jobb %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "tar bort stoppat jobb %d med processgrupp %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) markerad som fortfarande vid liv" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ingen sådan pid" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Klart" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Stoppad" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Stoppad(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Kör" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Klart(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Avslut %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Okänd status" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(minnesutskrift skapad) " -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (ak: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "barns setpgid (%ld till %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld är inte ett barn till detta skal" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ingen uppgift om process %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: jobb %d är stoppat" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: inga aktuella jobb" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: jobbet har avslutat" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: jobb %d är redan i bakgrunden" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: slår på WNOHANG för att undvika oändlig blockering" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: rad %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (minnesutskrift skapad)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(ak nu: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp misslyckades" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: ingen jobbstyrning i bakgrunden" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: linjedisciplin" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "det går inte att sätta terminalprocessgrupp (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "ingen jobbstyrning i detta skal" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: försäkran misslyckades: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1345,47 +1355,47 @@ msgstr "" "\r\n" "malloc: %s:%d: försäkran gick fel\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "okänd" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: block på frilista överskrivet" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: anropad med redan frigjort block som argument" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: anropad med oallokerat block som argument" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underspill upptäckt: mh_nbytes utanför giltigt intervall" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free: underspill upptäckt: magic8 är trasig" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: start- och slutstyckesstorlekar skiljer" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: anropat med oallokerat block som argument" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underspill upptäckt: mh_nbytes utanför giltigt intervall" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: underspill upptäckt: magic8 är trasig" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start- och slutstyckesstorlekar skiljer" @@ -1427,22 +1437,22 @@ msgstr "%s: felaktig specifikation av nätverkssökväg" msgid "network operations not supported" msgstr "nätverksoperationer stöds inte" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: det går inte att ändra lokal (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: det går inte att ändra lokal (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: det går inte att ändra lokal (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: det går inte att ändra lokal (%s): %s" @@ -1460,136 +1470,136 @@ msgstr "Du har ny post i $_" msgid "The mail in %s has been read\n" msgstr "Posten i %s har lästs\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "syntaxfel: aritmetiskt uttryck krävs" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "syntaxfel: oväntat ”;”" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "syntaxfel: ”((%s))”" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: felaktig instruktionstyp %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "här-dokument på rad %d avgränsas av filslut (ville ha ”%s”)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: omdirigeringsinstruktion ”%d” utanför giltigt intervall" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" msgstr "shell_getc: shell_input_line_size (%zu) överstiger SIZE_MAX (%lu): raden avhuggen" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "maximalt antal av här-dokument överskridet" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "oväntat filslut vid sökning efter matchande ”%c”" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "oväntat filslut vid sökning efter ”]]”" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaxfel i villkorligt uttryck: oväntad symbol ”%s”" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "syntaxfel i villkorligt uttryck" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "oväntad symbol ”%s”, ”)” förväntades" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "”)” förväntades" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "oväntat argument ”%s” till villkorlig unär operator" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "oväntat argument till villkorlig unär operator" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "oväntad symbol ”%s”, villkorlig binär operator förväntades" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "villkorlig binär operator förväntades" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "oväntat argument ”%s” till villkorlig binär operator" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "oväntat argument till villkorlig binär operator" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "oväntad symbol ”%c” i villkorligt kommando" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "oväntad symbol ”%s” i villkorligt kommando" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "oväntad symbol %d i villkorligt kommando" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaxfel nära den oväntade symbolen ”%s”" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "syntaxfel nära ”%s”" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "syntaxfel: oväntat filslut" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "syntaxfel" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Använd ”%s” för att lämna skalet.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "oväntat filslut när matchande ”)” söktes" @@ -1627,94 +1637,94 @@ msgstr "xtrace_set: NULL-filpekare" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ”%c”: ogiltigt formateringstecken" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "filbeskrivare utanför giltigt intervall" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: tvetydig omdirigering" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: det går inte att skriva över en existerande fil" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: begränsat: det går inte att omdirigera utdata" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "det går inte att skapa temporärfil för här-dokument: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: det går inte att tilldela fb till variabel" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port stöds inte utan nätverksfunktion" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "omdirigeringsfel: det går inte att duplicera fb" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "hittade inte /tmp, var god skapa!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp måste vara ett giltigt katalognamn" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "läget för snygg utskrift ignoreras i interaktiva skal" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ogiltig flagga" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "det går sätta uid till %d: effektiv uid %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "det går inte att sätta gid till %d: effektiv gid %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "kan inte starta felsökaren, felsökningsläge avaktiverat" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: är en katalog" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Jag har inget namn!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1723,319 +1733,319 @@ msgstr "" "Användning:\t%s [GNU lång flagga] [flagga] ...\n" "\t\t%s [GNU lång flagga] [flagga] skriptfil ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "GNU långa flaggor:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Skalflaggor:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD eller -c kommando eller -O shopt_flagga\t\t(bara uppstart)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s eller -o flagga\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Skriv ”%s -c 'help set'” för mer information om skalflaggor.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Skriv ”%s -c help” för mer information om inbyggda skalkommandon.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" "Använd kommandot ”bashbug” för att rapportera fel.\n" "Skicka synpunkter på översättningen till .\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "bash hemsida: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "Allmän hjälp i att använda GNU-program: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: ogiltig operation" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Felaktig signal" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Avringd" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Avbruten" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Lämnad" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Otillåten instruktion" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "Brytpunkt/spårningsfälla" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "ABORT-instruktion" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Emulatorfälla" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Flyttalsfel" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Dödad" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Bussfel" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Segmenteringsfel" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Felaktigt systemanrop" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Brutet rör" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Alarmklocka" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Avslutat" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Viktigt I/O-tillstånd" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Stoppad (signal)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Återupptagen" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Barn dött eller stoppat" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Stoppad (terminalläsning)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Stoppad (terminalskrivning)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O möjligt" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "CPU-gräns" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Filgräns" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Alarm (virtuell tid)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Alarm (profilering)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Ändrat fönster" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Postlås" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Användarsignal 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Användarsignal 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "HFT-indata väntar" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "strömavbrott omedelbart förestående" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "systemkrasch omedelbart förestående" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "migrera process till en annan CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "programmeringsfel" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "HFT-övervakningsläge givet" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "HFT-övervakare borttagen" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "HFT-ljudsekvens har avslutat" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Informationsbegäran" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Okänd signal nr %d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "felaktig substitution: ingen avslutande ”%s” i %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: det går inte att tilldela listor till vektormedlemmar" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "det går inte att skapa rör för processubstitution" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "det går inte att skapa barn för processubstitution" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "det går inte att öppna namngivet rör %s för läsning" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "det går inte att öppna namngivet rör %s för skrivning" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "det går inte att duplicera namngivet rör %s som fb %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "kommandoersättning: ignorerade nollbyte i indata" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "det går inte att skapa rör för kommandosubstitution" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "det går inte att skapa barn för kommandosubstitution" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: det går inte att duplicera rör som fb 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: ogiltigt variabelnamn för referens" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: felaktig indirekt expansion" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: felaktigt variabelnamn" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: parametern är inte satt" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametern tom eller inte satt" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: delstränguttryck < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: felaktig substitution" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: det går inte att tilldela på detta sätt" -#: subst.c:9814 +#: subst.c:10111 msgid "future versions of the shell will force evaluation as an arithmetic substitution" msgstr "framtida versioner av skalet kommer att framtvinga evaluering som en aritmetisk substitution" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "felaktig ersättning: ingen avslutande ”`” i %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "ingen matchning: %s" @@ -2058,21 +2068,21 @@ msgstr "”)” förväntades" msgid "`)' expected, found %s" msgstr "”)” förväntades, fann %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: binär operator förväntades" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: unär operator förväntades" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "”]” saknas" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "syntaxfel: oväntat ”%s”" @@ -2081,99 +2091,104 @@ msgstr "syntaxfel: oväntat ”%s”" msgid "invalid signal number" msgstr "ogiltigt signalnummer" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "fällhanterare: maximal nivå av fällhanterare överskriden (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: felaktigt värde i trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: signalhanterare är SIG_DFL, skickar om %d (%s) till mig själv" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: felaktig signal %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "fel vid import av funktionsdefinition för ”%s”" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "skalnivå (%d) för hög, återställer till 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ingen funktionskontext i aktuellt sammanhang" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variabeln får inte tilldelas ett värde" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s: det går inte att ärva ett värde från en inkompatibel typ" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: tilldelar ett heltal till en namnreferens" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ingen funktionskontext i aktuellt sammanhang" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s har tom exportstr" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "ogiltigt tecken %d i exportstr för %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "inget ”=” i exportstr för %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: huvudet på shell_variables är inte en funktionskontext" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ingen kontext global_variables" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: huvudet på shell_variables är inte en temporär omgivningsräckvidd" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: går inte att öppna som FILE" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: ogiltigt värde för spårningsfilbeskrivare" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: kompatibilitetsvärde utanför giltigt intervall" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Copyright © 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Copyright © 2022 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "License GPLv3+: GNU GPL version 3 or later \n" @@ -2253,12 +2268,12 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] kommando [arg ...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgiIlnrtux] [-p] [namn[=värde] …]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgiIlnrtux] [namn[=värde] …] eller declare -p [-aAfFilnrtux] [namn …]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgiIlnrtux] [-p] namn[=värde] ..." +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgiIlnrtux] namn[=värde] … eller typeset -p [-aAfFilnrtux] [namn …]" #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2345,8 +2360,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [-abefhkmnptuvxBCHP] [-o flaggnamn] [--] [arg ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o flaggnamn] [--] [-] [arg …]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" @@ -2393,8 +2408,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] namn [namn ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [gräns]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [gräns]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" @@ -2433,12 +2448,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C msgstr "if KOMMANDON; then KOMMANDON; [ elif KOMMANDON; then KOMMANDON; ]... [ else KOMMANDON; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while KOMMANDON; do KOMMANDON; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while KOMMANDON; do KOMMANDON-2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until KOMMANDON; do KOMMANDON; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until KOMMANDON; do KOMMANDON-2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -3748,7 +3763,8 @@ msgid "" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" @@ -3790,7 +3806,9 @@ msgstr "" " flaggan -u ges. Raden delas upp i fält som vid orduppdelning, och första\n" " ordet tilldelas det första NAMNet, andra ordet till det andra NAMNet, och\n" " så vidare, med eventuella återstående ord tilldelade till det sista\n" -" NAMNet. Endast tecknen som finns i $IFS används som ordavgränsare.\n" +" NAMNet. Endast tecknen som finns i $IFS används som ordavgränsare. Som\n" +" standard skyddar tecknet omvänt snedstreck avgränsningstecken och\n" +" nyrad.\n" " \n" " Om inga NAMN anges, lagras den inlästa raden i variabeln REPLY.\n" " \n" @@ -3825,7 +3843,7 @@ msgstr "" " (då den är större än 128), ett fel vid variabeltilldelning inträffar eller\n" " en ogiltig filbeskrivare ges som argument till -u." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3846,7 +3864,7 @@ msgstr "" " Returnerar N, eller misslyckande om skalet inte kör en funktion eller\n" " skript." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4012,7 +4030,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om inte en ogiltig flagga ges." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4051,7 +4069,7 @@ msgstr "" " Returnerar framgång om inte en ogiltig flagga ges eller NAMN endast är\n" " läsbart." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4083,7 +4101,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om inte en ogiltig flagga ges eller NAMN är ogiltigt." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4121,7 +4139,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om inte en ogiltig flagga ges eller NAMN är ogiltigt." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4139,7 +4157,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om inte N är negativt eller större än $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4162,7 +4180,7 @@ msgstr "" " Returnerar status på det sista kommandot som körs i FILNAMN, misslyckas\n" " om FILNAMN inte kan läsas." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4187,7 +4205,7 @@ msgstr "" " Returnerar framgång om inte jobbstyrning inte är aktiverat eller ett fel\n" " inträffar." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4344,7 +4362,7 @@ msgstr "" " Returnerar framgång om UTTR beräknas till sant. Misslyckas ifall UTTR\n" " beräknas till falskt eller ett ogiltigt argument ges." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4356,7 +4374,7 @@ msgstr "" " Detta är en synonym till det inbyggda ”test”, men det sista argumentet\n" " måste vara en bokstavlig ”]”, för att matcha den inledande ”[”." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4374,7 +4392,7 @@ msgstr "" " Slutstatus:\n" " Lyckas alltid." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4441,7 +4459,7 @@ msgstr "" " Returnerar framgång om inte en SIGSPEC är ogiltig eller en ogiltig flagga\n" " ges." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4495,7 +4513,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om alla NAMNen finns, misslyckas om något inte finns." -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4590,7 +4608,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om inte en ogiltig flagga anges eller ett fel inträffar." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4624,7 +4642,7 @@ msgstr "" " Returnerar framgång om inte RÄTTIGHETER är ogiltig eller en ogiltig flagga\n" " ges." -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4674,7 +4692,7 @@ msgstr "" " Returnerar status på den sista ID, misslyckas ifall ID är ogiltig\n" " eller en ogiltig flagga ges." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4696,7 +4714,7 @@ msgstr "" " Returnerar status på den sista PID, misslyckas ifall PID är ogiltig\n" " eller en ogiltig flagga ges." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4718,7 +4736,7 @@ msgstr "" " Slutstatus:\n" " Returnerar status för det sist exekverade kommandot." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4748,7 +4766,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen från det sist exekverade kommandot." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4783,7 +4801,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen från det sist exekverade kommandot." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4812,7 +4830,7 @@ msgstr "" " Slutstatus:\n" " Returstatusen är returstatusen från RÖR." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4830,7 +4848,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen från det sist exekverade kommandot." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4858,43 +4876,43 @@ msgstr "" " Slutstatus:\n" " Returnerar status från det sist exekverade kommandot." -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Exekvera kommandon så länge ett test lyckas.\n" " \n" -" Expandera och exekvera KOMMANDON så länge det sista kommandot i\n" -" ”while”-KOMMANDONa har en slutstatus på noll.\n" +" Expandera och exekvera KOMMANDON-2 så länge det sista kommandot i\n" +" KOMMANDON har en slutstatus på noll.\n" " \n" " Slutstatus:\n" " Returnerar statusen från det sist exekverade kommandot." -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Exekvera kommandon så länge ett test inte lyckas.\n" " \n" -" Expandera och exekvera KOMMANDON så länge det sista kommandot i\n" -" ”until”-KOMMANDONa har en slutstatus som inte är noll.\n" +" Expandera och exekvera KOMMANDON-2 så länge det sista kommandot i\n" +" KOMMANDON har en slutstatus som inte är noll.\n" " \n" " Slutstatus:\n" " Returnerar statusen från det sist exekverade kommandot." -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4916,7 +4934,7 @@ msgstr "" " Slutstatus:\n" " Kommandot coproc returnerar slutstatusen 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -4938,7 +4956,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om inte NAMN endast är läsbart." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4956,7 +4974,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen från det sist exekverade kommandot." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4980,7 +4998,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen på det återupptagna jobbet." -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4998,7 +5016,7 @@ msgstr "" " Slutstatus:\n" " Returnerar 1 om UTTRYCK beräknas till 0, returnerar 0 annars." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5045,7 +5063,7 @@ msgstr "" " Slutstatus:\n" " 0 eller 1 beroende på värdet av UTTRYCK." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5150,7 +5168,7 @@ msgstr "" " HISTIGNORE\tEn kolonseparerad lista av mönster som används för att\n" " \t\tbestämma vilka kommandon som skall sparas i historielistan.\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5208,7 +5226,7 @@ msgstr "" " Returnerar framgång om inte ett ogiltigt argument ges eller bytet av\n" " katalog misslyckas." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5258,7 +5276,7 @@ msgstr "" " Returnerar framgång om inte ett ogiltigt argument ges eller bytet av\n" " katalog misslyckas." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5310,7 +5328,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om inte en ogiltig flagga ges eller ett fel inträffar." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5346,7 +5364,7 @@ msgstr "" " Returnerar framgång om FLGNAMN är aktiverat, misslyckas om en ogiltig\n" " flagga ges eller FLGNAMN är avaktiverat." -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5365,6 +5383,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" @@ -5394,6 +5414,8 @@ msgstr "" " %b\texpandera bakstrecksstyrsekvenser i motsvarande argument\n" " %q\tcitera argumentet på ett sätt som kan återanvändas som\n" " \t\tindata till ett skal\n" +" %Q\tsom %q, men tillämpa eventuell precision på det ociterade\n" +" \t\tciterande\n" " %(fmt)T skriv ut datum-/tidsträngen som blir resultatet av att\n" " använda FMT som en formatsträng till strftime(3)\n" " \n" @@ -5406,7 +5428,7 @@ msgstr "" " Returnerar framgång om inte en ogiltig flagga ges eller ett skriv-\n" " eller tilldelningsfel inträffar." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5455,7 +5477,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om inte en ogiltig flagga ges eller ett fel inträffar." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5475,7 +5497,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om inte en ogiltig flagga ges eller ett fel inträffar." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5530,7 +5552,7 @@ msgstr "" " Returnerar framgång om inte en ogiltig flagga ges eller NAMN inte har\n" " någon kompletteringsspecifikation definierad." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5596,7 +5618,7 @@ msgstr "" " Returnerar framgång om inte en ogiltig flagga ges eller VEKTOR är\n" " oföränderlig eller inte en indexerad vektor." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/tr.gmo b/po/tr.gmo index 49558623c..ecd482e3a 100644 Binary files a/po/tr.gmo and b/po/tr.gmo differ diff --git a/po/tr.po b/po/tr.po index cb0e0cb1f..f0a7e8428 100644 --- a/po/tr.po +++ b/po/tr.po @@ -4,14 +4,16 @@ # # Nilgün Belma Bugüner , 2006. # Volkan Gezer , 2013, 2014, 2017. +# Emir SARI , 2022 +# msgid "" msgstr "" -"Project-Id-Version: bash 4.4\n" +"Project-Id-Version: bash-5.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2017-05-05 11:49+0100\n" -"Last-Translator: Volkan Gezer \n" -"Language-Team: Turkish \n" +"PO-Revision-Date: 2022-04-11 23:00+0300\n" +"Last-Translator: Emir SARI \n" +"Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,23 +24,23 @@ msgstr "" #: arrayfunc.c:66 msgid "bad array subscript" -msgstr "hatalı dizi indisi" +msgstr "hatalı dizilim indisi" #: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 #: variables.c:3133 #, c-format msgid "%s: removing nameref attribute" -msgstr "%s: removing nameref niteliği kaldırılıyor" +msgstr "%s: nameref özniteliği kaldırılıyor" #: arrayfunc.c:446 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "%s: indisli dizi, ilişkisel diziye dönüştürülemez" +msgstr "%s: indisli dizilim, ilişkisel dizilime dönüştürülemez" #: arrayfunc.c:700 #, c-format msgid "%s: invalid associative array key" -msgstr "%s: geçersiz ilişkisel dizi anahtarı" +msgstr "%s: geçersiz ilişkisel dizilim anahtarı" #: arrayfunc.c:702 #, c-format @@ -48,7 +50,7 @@ msgstr "%s: sayısal olmayan indise atama yapılamaz" #: arrayfunc.c:747 #, c-format msgid "%s: %s: must use subscript when assigning associative array" -msgstr "%s: %s: ilişkisel bir dizi ataması yapılırken indis kullanılmalıdır" +msgstr "%s: %s: ilişkisel bir dizilim ataması yapılırken indis kullanılmalıdır" #: bashhist.c:452 #, c-format @@ -72,12 +74,12 @@ msgstr "%2$s içinde kapatan `%1$c' yok" #: bashline.c:4519 #, c-format msgid "%s: missing colon separator" -msgstr "%s: ikinokta imi eksik" +msgstr "%s: iki nokta imi eksik" #: bashline.c:4555 -#, fuzzy, c-format +#, c-format msgid "`%s': cannot unbind in command keymap" -msgstr "`%s': kısayol değiştirilemiyor" +msgstr "`%s': komut düğme eşleminde bağıntı kaldırılamıyor" #: braces.c:327 #, c-format @@ -85,9 +87,9 @@ msgid "brace expansion: cannot allocate memory for %s" msgstr "destek genişletme: %s için bellek ayrılamıyor" #: braces.c:406 -#, fuzzy, c-format +#, c-format msgid "brace expansion: failed to allocate memory for %u elements" -msgstr "destek genişletme: %d öge için bellek ayrılamıyor" +msgstr "destek genişletme: %u öge için bellek ayrılamıyor" #: braces.c:451 #, c-format @@ -97,7 +99,7 @@ msgstr "destek genişletme: `%s' için bellek ayrılamıyor" #: builtins/alias.def:131 variables.c:1844 #, c-format msgid "`%s': invalid alias name" -msgstr "`%s': geçersiz takma isim" +msgstr "`%s': geçersiz takma ad" #: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" @@ -106,7 +108,7 @@ msgstr "satır düzenleme etkin değil" #: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" -msgstr "`%s': kısayol ismi geçersiz" +msgstr "`%s': düğme eşlem adı geçersiz" #: builtins/bind.def:252 #, c-format @@ -116,7 +118,7 @@ msgstr "%s: okunamıyor: %s" #: builtins/bind.def:328 builtins/bind.def:358 #, c-format msgid "`%s': unknown function name" -msgstr "`%s': işlev ismi bilinmiyor" +msgstr "`%s': işlev adı bilinmiyor" #: builtins/bind.def:336 #, c-format @@ -139,10 +141,9 @@ msgstr "döngü sayısı" #: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "sadece bir `for', `while' veya `until' döngüsünde anlamlı" +msgstr "yalnızca bir `for', `while' veya `until' döngüsünde anlamlı" #: builtins/caller.def:136 -#, fuzzy msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -153,19 +154,14 @@ msgid "" " The value of EXPR indicates how many call frames to go back before the\n" " current one; the top frame is frame 0." msgstr "" -"Geçerli alt yordam çağrısının bağlamını döndürür.\n" +"Geçerli altrutin çağrısının bağlamını döndürür.\n" " \n" -" İFADE olmadan, \"$satır $dosyaadı\" döndürür. İFADE ile " -"kullanıldığında\n" -" \"$satır $altyordam $dosyaadı\" döndürür; bu ek bilgi bir yığın izi " -"sağlamak\n" -" için kullanılabilir.\n" +" İFADE olmadan, \"$satır $dosyaadı\" döndürür. İFADE ile \"$satır\n" +" $altrutin $dosyaadı\" döndürür; bu ek bilgi bir yığın izlemesi sağlamak\n" +" için kullanılabilir.\n" " \n" -" İFADE değeri, geçerli çerçeveden önce kaç tane çerçeve çağrılacağını\n" -" belirtir. Üst çerçeve 0. çerçevedir. \n" -" Çıkış Durumu:\n" -" İFADE geçersiz olmadığı ve bir kabuk işlevi çalıştırmadığı durumda 0 " -"döndürür." +" İFADE'nin değeri, geçerli çağrı biriminden önce kaç tane geri gidilmesi\n" +" gerektiğini belirtir; en üst çerçeve, 0. çerçevedir." #: builtins/cd.def:327 msgid "HOME not set" @@ -173,7 +169,7 @@ msgstr "HOME atanmamış" #: builtins/cd.def:335 builtins/common.c:161 test.c:901 msgid "too many arguments" -msgstr "çok fazla argüman" +msgstr "pek fazla argüman" #: builtins/cd.def:342 msgid "null directory" @@ -186,7 +182,7 @@ msgstr "OLDPWD boş" #: builtins/common.c:96 #, c-format msgid "line %d: " -msgstr "satır %d: " +msgstr "%d. satır: " #: builtins/common.c:134 error.c:264 #, c-format @@ -201,17 +197,17 @@ msgstr "%s: kullanım: " #: builtins/common.c:193 shell.c:516 shell.c:844 #, c-format msgid "%s: option requires an argument" -msgstr "%s: seçenek bir argüman gerektirir" +msgstr "%s: seçenek bir argüman gerektiriyor" #: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" -msgstr "%s: sayısal argüman gerekli" +msgstr "%s: sayısal argüman gerekiyor" #: builtins/common.c:207 #, c-format msgid "%s: not found" -msgstr "%s:yok" +msgstr "%s: yok" #: builtins/common.c:216 shell.c:857 #, c-format @@ -221,12 +217,12 @@ msgstr "%s: seçenek geçersiz" #: builtins/common.c:223 #, c-format msgid "%s: invalid option name" -msgstr "%s: seçenek ismi geçersiz" +msgstr "%s: seçenek adı geçersiz" #: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" -msgstr "`%s': geçerli bir belirteç değil" +msgstr "`%s': geçerli bir tanımlayıcı değil" #: builtins/common.c:240 msgid "invalid octal number" @@ -253,12 +249,12 @@ msgstr "`%s': geçerli bir iş belirtimi veya süreç numarası değil" #: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" -msgstr "%s: salt okunur değişken" +msgstr "%s: saltokunur değişken" #: builtins/common.c:274 #, c-format msgid "%s: %s out of range" -msgstr "%s: %s aralık dışı" +msgstr "%s: %s erim dışı" #: builtins/common.c:274 builtins/common.c:276 msgid "argument" @@ -267,7 +263,7 @@ msgstr "argüman" #: builtins/common.c:276 #, c-format msgid "%s out of range" -msgstr "%s aralık dışı" +msgstr "%s erim dışı" #: builtins/common.c:284 #, c-format @@ -305,12 +301,12 @@ msgstr "yazma hatası: %s" #: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" -msgstr "uçbirim nitelikleri ayarlanırken hata: %s" +msgstr "uçbirim öznitelikleri ayarlanırken hata: %s" #: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" -msgstr "uçbirim nitelikleri alınırken hata: %s" +msgstr "uçbirim öznitelikleri alınırken hata: %s" #: builtins/common.c:635 #, c-format @@ -329,7 +325,7 @@ msgstr "bu sürümde yardım kullanılamıyor" #: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 #, c-format msgid "%s: cannot unset: readonly %s" -msgstr "%s:unset yapılamaz: %s salt okunur" +msgstr "%s: unset yapılamaz: %s saltokunur" #: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 #, c-format @@ -361,28 +357,28 @@ msgstr "şuan tamamlama işlevi çalıştırılmıyor" #: builtins/declare.def:134 msgid "can only be used in a function" -msgstr "sadece bir işlevde kullanılabilir" +msgstr "yalnızca bir işlevde kullanılabilir" #: builtins/declare.def:363 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "%s: referans değeri bir dizi olamaz" +msgstr "%s: başvuru değeri bir dizilim olamaz" #: builtins/declare.def:374 variables.c:3385 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "%s: nameref değişkeninin kendine yaptığı referanslara izin verilmiyor" +msgstr "%s: nameref değişkeninin kendine yaptığı başvurulara izin verilmiyor" #: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 #: variables.c:3382 #, c-format msgid "%s: circular name reference" -msgstr "%s: çembersel isim referansı" +msgstr "%s: çembersel ad başvurusu" #: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 #, c-format msgid "`%s': invalid variable name for name reference" -msgstr "`%s': dosya izleme tanımlayıcısı için geçersiz değer" +msgstr "%s: ad başvuarusu için geçersiz değişken adı" #: builtins/declare.def:514 msgid "cannot use `-f' to make functions" @@ -391,7 +387,7 @@ msgstr "işlev yapmak için `-f' kullanılamaz" #: builtins/declare.def:526 execute_cmd.c:5986 #, c-format msgid "%s: readonly function" -msgstr "%s: salt okunur işlev" +msgstr "%s: saltokunur işlev" #: builtins/declare.def:824 #, c-format @@ -406,11 +402,11 @@ msgstr "%s: dizi değişkenleri bu yolla iptal edilemez" #: builtins/declare.def:845 builtins/read.def:815 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "%s: ilişkisel dizi, indisli diziye dönüştürülemez" +msgstr "%s: ilişkisel dizilim, indisli dizilime dönüştürülemez" #: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" -msgstr "özdevimli yükleme mümkün değil" +msgstr "devingen yükleme olanaklı değil" #: builtins/enable.def:343 #, c-format @@ -423,19 +419,19 @@ msgid "cannot find %s in shared object %s: %s" msgstr "%2$s paylaşımlı nesnesinde %1$s bulunamıyor: %3$s" #: builtins/enable.def:388 -#, fuzzy, c-format +#, c-format msgid "%s: dynamic builtin already loaded" -msgstr "%s: özdevimli olarak yüklenmemiş" +msgstr "%s: devinen yerleşiği halihazırda yüklenmiş" #: builtins/enable.def:392 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "%s için yükleme ifadesi hata döndürdü (%d): yüklenmedi" +msgstr "%s için yükleme işlevi hata döndürdü (%d): yüklenmedi" #: builtins/enable.def:517 #, c-format msgid "%s: not dynamically loaded" -msgstr "%s: özdevimli olarak yüklenmemiş" +msgstr "%s: devingen olarak yüklenmemiş" #: builtins/enable.def:543 #, c-format @@ -502,7 +498,7 @@ msgstr "%s: geçici dosya açılamıyor: %s" #: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" -msgstr "şimdiki" +msgstr "geçerli" #: builtins/fg_bg.def:161 #, c-format @@ -512,21 +508,21 @@ msgstr "%d. iş, iş denetimsiz başlamış" #: builtins/getopt.c:110 #, c-format msgid "%s: illegal option -- %c\n" -msgstr "%s: kuraldışı seçenek -- %c\n" +msgstr "%s: kural dışı seçenek -- %c\n" #: builtins/getopt.c:111 #, c-format msgid "%s: option requires an argument -- %c\n" -msgstr "%s: seçenek bir argüman gerektirir -- %c\n" +msgstr "%s: seçenek bir argüman gerektiriyor -- %c\n" #: builtins/hash.def:91 msgid "hashing disabled" -msgstr "çitleme iptal edildi" +msgstr "sağlama iptal edildi" #: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" -msgstr "%s: çitleme tablosu boş\n" +msgstr "%s: sağlama tablosu boş\n" #: builtins/hash.def:267 #, c-format @@ -544,14 +540,13 @@ msgid "" "'\n" "\n" msgstr "" +"'\n" +"\n" #: builtins/help.def:185 #, c-format -msgid "" -"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "" -"`%s' ile ilgili bir yardım metni yok. `help help' veya `man -k %s' ya da " -"`info %s'.yazmayı deneyebilirsiniz." +msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "`%s' ile ilgili yardım konusu yok. `help help', `man -k %s', `info %s' yazmayı deneyin." #: builtins/help.def:224 #, c-format @@ -570,12 +565,12 @@ msgid "" "\n" msgstr "" "Bu kabuk komutları dahili olarak tanımlı. Listeyi görmek için `help'yazın.\n" -"`AD' gibi bir işlev hakkında bilgi almak için `help AD' yazınız.\n" -"Kabuk hakkında genel bir bilgi edinmek için `info bash'yazınız.\n" -"Bu listede olmayan komutlar hakkında bilgi bulmak isterseniz,\n" -"`man -k' veya `info' yazın.\n" +"`AD' gibi bir işlev hakkında bilgi almak için `help AD' yazın. Kabuk hakkında\n" +"genel bir bilgi edinmek için `info bash' yazın.\n" +"Bu listede olmayan\n" +"komutlar hakkında bilgi bulmak isterseniz `man -k' veya `info' yazın.\n" "\n" -"Bir ismin yanında bir yıldız imi (*) varsa komut iptal edilmiş demektir.\n" +"Bir adın yanında bir yıldız imi (*) varsa komut iptal edilmiş demektir.\n" "\n" #: builtins/history.def:155 @@ -632,7 +627,7 @@ msgstr "%s: dosya tanıtıcı belirtimi geçersiz" #: builtins/mapfile.def:279 builtins/read.def:315 #, c-format msgid "%d: invalid file descriptor: %s" -msgstr "%d: dosya tanıtıcı geçersiz: %s" +msgstr "%d: dosya açıklayıcısı geçersiz: %s" #: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format @@ -642,7 +637,7 @@ msgstr "%s: geçersiz satır sayısı" #: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" -msgstr "%s: geçersiz dizi kökeni" +msgstr "%s: geçersiz dizilim kökeni" #: builtins/mapfile.def:316 #, c-format @@ -651,7 +646,7 @@ msgstr "%s: geçersiz geri çağırım niceliği" #: builtins/mapfile.def:349 msgid "empty array variable name" -msgstr "boş bir dizi değişken adı" +msgstr "boş bir dizilim değişken adı" #: builtins/mapfile.def:370 msgid "array variable support required" @@ -680,7 +675,7 @@ msgstr "uyarı: %s: %s" #: builtins/printf.def:788 #, c-format msgid "format parsing problem: %s" -msgstr "biçim ayıklama sorunu: %s" +msgstr "biçim ayrıştırma sorunu: %s" #: builtins/printf.def:885 msgid "missing hex digit for \\x" @@ -689,7 +684,7 @@ msgstr "\\x için onaltılık rakam eksik" #: builtins/printf.def:900 #, c-format msgid "missing unicode digit for \\%c" -msgstr "evrensel kod rakamı eksik \\%c" +msgstr "\\%c için unicode rakamı eksik" #: builtins/pushd.def:199 msgid "no other directory" @@ -727,12 +722,10 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Geçerli hatırlanan dizinlerin listesini görüntüler. Dizinler\n" @@ -778,26 +771,26 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"Dizin yığıtının en üstüne bir dizin ekler, ya da geçerli çalışma\n" -" dizini yığıtın tepesine gelecek şekilde yığıtı döndürür. Hiç\n" +"Dizin yığınının en üstüne bir dizin ekler veya geçerli çalışma\n" +" dizini yığının tepesine gelecek şekilde yığını döndürür. Hiç\n" " argüman verilmemişse en üstteki iki dizini yer değiştirir.\n" " \n" " Seçenekler\n" -" -n\tYığıta dizin eklenirken dizinin normal değişimini yoksayar\n" -" \tböylece sadece yığıt değiştirilir.\n" +" -n\tYığına dizin eklenirken dizinin normal değişimini yok sayar\n" +" \tböylece yalnızca yığın değiştirilir.\n" " Argümanlar:\n" " +N\t(`dirs' tarafından gösterilen listenin solundan saymaya\n" " \tsıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n" -" \tyığıtı döndürür.\n" +" \tyığını döndürür.\n" " \n" " -N\t(`dirs' tarafından gösterilen listenin sağından saymaya\n" " \tsıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n" -" \tyığıtı döndürür.\n" +" \tyığını döndürür.\n" " \n" -" dizin\tDiZiNi yeni çalışma dizini yaparak dizin yığıtının\n" +" dizin\tDiZiNi yeni çalışma dizini yaparak dizin yığınının\n" " \ttepesine ekler.\n" " \n" -" Dizin yığıtını `dirs' komutuyla görebilirsiniz." +" Dizin yığınını `dirs' komutuyla görebilirsiniz." #: builtins/pushd.def:748 msgid "" @@ -819,13 +812,13 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"Dizin yığıtından girdileri siler. Hiç argüman verilmemişse,\n" -" yığıtın en üstündeki dizini yığıttan kaldırır ve yığıtın\n" +"Dizin yığınından girdileri siler. Hiç argüman verilmemişse\n" +" yığının en üstündeki dizini yığından kaldırır ve yığının\n" " tepesinde kalan dizine geçer.\n" " \n" " Seçenekler:\n" -" -n\tdizinleri yığıttan silerken normal dizin değişikliğini\n" -" \tengeller, böylece sadece yığıt değiştirilmiş olur. \n" +" -n\tdizinleri yığından silerken normal dizin değişikliğini\n" +" \tengeller, böylece yalnızca yığın değiştirilmiş olur. \n" " \n" " Argümanlar:\n" " +N\t`dirs' tarafından gösterilen listenin solundan saymaya\n" @@ -835,7 +828,7 @@ msgstr "" " \tsıfırla başlandığında N'inci girdiyi siler. Örneğin,\n" " \t`popd -0' son dizini `popd -1' sonuncudan öncekini siler. \n" " \n" -" Dizin yığıtını `dirs' komutuyla görebilirsiniz." +" Dizin yığınını `dirs' komutuyla görebilirsiniz." #: builtins/read.def:280 #, c-format @@ -849,7 +842,7 @@ msgstr "okuma hatası: %d: %s" #: builtins/return.def:68 msgid "can only `return' from a function or sourced script" -msgstr "sadece bir işlev veya betikten kaynaklı olarak `return' yapılabilir" +msgstr "yalnızca bir işlev veya betikten kaynaklı olarak `return' yapılabilir" #: builtins/set.def:869 msgid "cannot simultaneously unset a function and a variable" @@ -881,11 +874,11 @@ msgstr "kabuk seçenekleri aynı anda hem atanıp hem de iptal edilemez" #: builtins/shopt.def:428 #, c-format msgid "%s: invalid shell option name" -msgstr "%s: kabuk seçenek ismi geçersiz" +msgstr "%s: kabuk seçenek adı geçersiz" #: builtins/source.def:128 msgid "filename argument required" -msgstr "dosya ismi argüman gerekir" +msgstr "dosya adı argüman gerekir" #: builtins/source.def:154 #, c-format @@ -991,7 +984,7 @@ msgstr "Çıkılıyor..." #: error.c:287 #, c-format msgid "INFORM: " -msgstr "BİLGİLENDİR:" +msgstr "BİLGİLENDİR: " #: error.c:462 msgid "unknown command error" @@ -1050,7 +1043,7 @@ msgstr "%s: azami kaynak yuvalama sınırı aşıldı (%d)" #: execute_cmd.c:4913 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)" +msgstr "%s: azami işlev yuvalama sınırı aşıldı (%d)" #: execute_cmd.c:5467 #, c-format @@ -1093,20 +1086,19 @@ msgstr "ifade özyineleme düzeyi aşıldı" #: expr.c:291 msgid "recursion stack underflow" -msgstr "özyineleme yığıtı alttan taştı" +msgstr "özyineleme yığını alttan taştı" #: expr.c:477 msgid "syntax error in expression" -msgstr "ifadede sözdizimi hatası" +msgstr "ifadede sözdizim hatası" #: expr.c:521 msgid "attempted assignment to non-variable" msgstr "değişken olmayana atama yapmaya çalışıldı" #: expr.c:530 -#, fuzzy msgid "syntax error in variable assignment" -msgstr "ifadede sözdizimi hatası" +msgstr "değişken atamada sözdizim hatası" #: expr.c:544 expr.c:911 msgid "division by 0" @@ -1134,11 +1126,11 @@ msgstr "eksik `)'" #: expr.c:1107 expr.c:1487 msgid "syntax error: operand expected" -msgstr "sözdizimi hatası: terim umuluyordu" +msgstr "sözdizim hatası: terim umuluyordu" #: expr.c:1489 msgid "syntax error: invalid arithmetic operator" -msgstr "sözdizimi hatası: geçersiz aritmetik işleci" +msgstr "sözdizim hatası: geçersiz aritmetik işleci" #: expr.c:1513 #, c-format @@ -1150,9 +1142,8 @@ msgid "invalid arithmetic base" msgstr "geçersiz sayı tabanı" #: expr.c:1582 -#, fuzzy msgid "invalid integer constant" -msgstr "%s: geçersiz satır sayısı" +msgstr "geçersiz tamsayı sabiti" #: expr.c:1598 msgid "value too great for base" @@ -1175,8 +1166,7 @@ msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor" #: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" -msgstr "" -"fd %d tanıtıcısındaki bash girdisi için yeni dosya tanıtıcısı ayrılamıyor" +msgstr "fd %d tanıtıcısındaki bash girdisi için yeni dosya tanıtıcısı ayrılamıyor" #: input.c:274 #, c-format @@ -1256,7 +1246,7 @@ msgstr "Bilinmeyen durum" #: jobs.c:2001 #, c-format msgid "(core dumped) " -msgstr "(çekirdek döküldü)" +msgstr "(çekirdek döküldü) " #: jobs.c:2020 #, c-format @@ -1284,9 +1274,9 @@ msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: iş %d durdu" #: jobs.c:3564 -#, fuzzy, c-format +#, c-format msgid "%s: no current jobs" -msgstr "%s: böyle bir iş yok" +msgstr "%s: geçerli iş yok" #: jobs.c:3571 #, c-format @@ -1322,9 +1312,8 @@ msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp başarısız" #: jobs.c:4447 -#, fuzzy msgid "initialize_job_control: no job control in background" -msgstr "initialize_job_control: satır düzeni" +msgstr "initialize_job_control: arka planda iş denetimi yok" #: jobs.c:4463 msgid "initialize_job_control: line discipline" @@ -1378,9 +1367,8 @@ msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: alttan taşma saptandı; mh_nbytes aralık dışında" #: lib/malloc/malloc.c:1001 -#, fuzzy msgid "free: underflow detected; magic8 corrupted" -msgstr "free: alttan taşma saptandı; mh_nbytes aralık dışında" +msgstr "free: alttan taşma saptandı; magic8 hasarlı" #: lib/malloc/malloc.c:1009 msgid "free: start and end chunk sizes differ" @@ -1395,9 +1383,8 @@ msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: alttan taşma saptandı; mh_nbytes aralık dışında" #: lib/malloc/malloc.c:1141 -#, fuzzy msgid "realloc: underflow detected; magic8 corrupted" -msgstr "realloc: alttan taşma saptandı; mh_nbytes aralık dışında" +msgstr "realloc: alttan taşma saptandı; magic8 hasarlı" #: lib/malloc/malloc.c:1150 msgid "realloc: start and end chunk sizes differ" @@ -1476,16 +1463,16 @@ msgstr "%s'deki posta okundu\n" #: make_cmd.c:317 msgid "syntax error: arithmetic expression required" -msgstr "sözdizimi hatası: aritmetik ifadesi gerekli" +msgstr "sözdizim hatası: aritmetik ifadesi gerekli" #: make_cmd.c:319 msgid "syntax error: `;' unexpected" -msgstr "sözdizimi hatası: `;' beklenmiyordu" +msgstr "sözdizim hatası: `;' beklenmiyordu" #: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" -msgstr "sözdizimi hatası: `((%s))'" +msgstr "sözdizim hatası: `((%s))'" #: make_cmd.c:572 #, c-format @@ -1504,12 +1491,8 @@ msgstr "make_redirection: yönlendirme yönergesi `%d' aralık dışında" #: parse.y:2393 #, c-format -msgid "" -"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " -"truncated" -msgstr "" -"shell_getc: shell_input_line_size (%zu) SIZE_MAX değerini aşıyor (%lu): " -"satır kırpıldı" +msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" +msgstr "shell_getc: shell_input_line_size (%zu) SIZE_MAX değerini aşıyor (%lu): satır kırpıldı" #: parse.y:2826 msgid "maximum here-document count exceeded" @@ -1527,16 +1510,16 @@ msgstr "`]]' aranırken beklenmedik dosya sonu" #: parse.y:4701 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" -msgstr "koşullu ifadede sözdizimi hatası: beklenmedik dizgecik `%s'" +msgstr "koşullu ifadede sözdizim hatası: beklenmedik jeton `%s'" #: parse.y:4705 msgid "syntax error in conditional expression" -msgstr "koşullu ifadede sözdizimi hatası" +msgstr "koşullu ifadede sözdizim hatası" #: parse.y:4783 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "beklenmedik dizgecik `%s', `)' umuluyordu" +msgstr "beklenmedik jeton `%s', `)' umuluyordu" #: parse.y:4787 msgid "expected `)'" @@ -1554,7 +1537,7 @@ msgstr "koşullu tek terimli işlece beklenmedik argüman" #: parse.y:4865 #, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "beklenmedik dizgecik `%s', koşullu iki terimli işleç umuluyordu" +msgstr "beklenmedik jeton `%s', koşullu iki terimli işleç umuluyordu" #: parse.y:4869 msgid "conditional binary operator expected" @@ -1572,35 +1555,35 @@ msgstr "koşullu iki terimli işlece beklenmedik argüman" #: parse.y:4906 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "koşullu komutta beklenmeyen dizgecik `%c'" +msgstr "koşullu komutta beklenmeyen jeton `%c'" #: parse.y:4909 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "koşullu komutta beklenmeyen dizgecik `%s'" +msgstr "koşullu komutta beklenmeyen jeton `%s'" #: parse.y:4913 #, c-format msgid "unexpected token %d in conditional command" -msgstr "koşullu komutta beklenmeyen dizgecik %d" +msgstr "koşullu komutta beklenmeyen jeton %d" #: parse.y:6336 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "beklenmeyen dizgecik `%s' yakınında sözdizimi hatası" +msgstr "beklenmeyen jeton `%s' yakınında sözdizim hatası" #: parse.y:6355 #, c-format msgid "syntax error near `%s'" -msgstr "`%s' yakınında sözdizimi hatası" +msgstr "`%s' yakınında sözdizim hatası" #: parse.y:6365 msgid "syntax error: unexpected end of file" -msgstr "sözdizimi hatası: beklenmeyen dosya sonu" +msgstr "sözdizim hatası: beklenmeyen dosya sonu" #: parse.y:6365 msgid "syntax error" -msgstr "sözdizimi hatası" +msgstr "sözdizim hatası" #: parse.y:6428 #, c-format @@ -1725,7 +1708,7 @@ msgstr "%s: Bir dizin" #: shell.c:1881 msgid "I have no name!" -msgstr "Hiç ismim yok!" +msgstr "Adsızım ben!" #: shell.c:2035 #, c-format @@ -1751,25 +1734,22 @@ msgstr "Kabuk seçenekleri:\n" #: shell.c:2043 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "\t-ilrsD veya -c KOMUT veya -O shopt_seçeneği\t\t(sadece çağrı için)\n" +msgstr "\t-ilrsD veya -c KOMUT veya -O shopt_seçeneği\t\t(yalnızca çağrı için)\n" #: shell.c:2062 #, c-format msgid "\t-%s or -o option\n" -msgstr "\t-%s ya da -o seçeneği\n" +msgstr "\t-%s veya -o seçeneği\n" #: shell.c:2068 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" -msgstr "" -"Kabuk seçenekleriyle ilgili daha fazla bilgi için `%s -c \"help set\"' " -"yazın.\n" +msgstr "Kabuk seçenekleriyle ilgili daha fazla bilgi için `%s -c \"help set\"' yazın.\n" #: shell.c:2069 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" -msgstr "" -"Kabuk yerleşik komutlarıyla ilgili bilgi almak için `%s -c help' yazın.\n" +msgstr "Kabuk yerleşik komutlarıyla ilgili bilgi almak için `%s -c help' yazın.\n" #: shell.c:2070 #, c-format @@ -1786,8 +1766,7 @@ msgstr "bash ana sayfası: \n" #: shell.c:2073 #, c-format msgid "General help using GNU software: \n" -msgstr "" -"GNU yazılımı kullanımı hakkında genel yardım: \n" +msgstr "GNU yazılımı kullanımı hakkında genel yardım: \n" #: sig.c:757 #, c-format @@ -1980,21 +1959,21 @@ msgstr "süreç ikamesi için alt süreç yapılamıyor" #: subst.c:6059 #, c-format msgid "cannot open named pipe %s for reading" -msgstr "isimli boru %s okumak için açılamıyor" +msgstr "adlı boru %s okumak için açılamıyor" #: subst.c:6061 #, c-format msgid "cannot open named pipe %s for writing" -msgstr "isimli boru %s yazmak için açılamıyor" +msgstr "adlı boru %s yazmak için açılamıyor" #: subst.c:6084 #, c-format msgid "cannot duplicate named pipe %s as fd %d" -msgstr "isimli boru %s fd %d olarak yinelenemiyor" +msgstr "adlı boru %s fd %d olarak yinelenemiyor" #: subst.c:6213 msgid "command substitution: ignored null byte in input" -msgstr "komut ikamesi: girdideki null bayt yoksayıldı" +msgstr "komut ikamesi: girdideki null bayt yok sayıldı" #: subst.c:6353 msgid "cannot make pipe for command substitution" @@ -2024,19 +2003,19 @@ msgid "%s: invalid variable name" msgstr "%s: geçersiz değişken adı" #: subst.c:7256 -#, fuzzy, c-format +#, c-format msgid "%s: parameter not set" -msgstr "%s: parametre boş ya da değer atanmamış" +msgstr "%s: parametre ayarlanmamış" #: subst.c:7258 #, c-format msgid "%s: parameter null or not set" -msgstr "%s: parametre boş ya da değer atanmamış" +msgstr "%s: parametre boş veya değer atanmamış" #: subst.c:7503 subst.c:7518 #, c-format msgid "%s: substring expression < 0" -msgstr "%s: altdizge ifadesi < 0" +msgstr "%s: altdizi ifadesi < 0" #: subst.c:9281 subst.c:9302 #, c-format @@ -2049,12 +2028,8 @@ msgid "$%s: cannot assign in this way" msgstr "$%s: bu yolla atama yapılmaz" #: subst.c:9814 -msgid "" -"future versions of the shell will force evaluation as an arithmetic " -"substitution" -msgstr "" -"kabuk gelecekteki sürümlerinde, bir aritmetik ikame olarak değerlendirmeye " -"zorlayacak" +msgid "future versions of the shell will force evaluation as an arithmetic substitution" +msgstr "kabuk gelecekteki sürümlerinde, bir aritmetik ikame olarak değerlendirmeye zorlayacak" #: subst.c:10367 #, c-format @@ -2099,18 +2074,18 @@ msgid "missing `]'" msgstr "eksik `]'" #: test.c:899 -#, fuzzy, c-format +#, c-format msgid "syntax error: `%s' unexpected" -msgstr "sözdizimi hatası: `;' beklenmiyordu" +msgstr "sözdizim hatası: '%s' beklenmiyordu" #: trap.c:220 msgid "invalid signal number" msgstr "geçersiz sinyal numarası" #: trap.c:325 -#, fuzzy, c-format +#, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" -msgstr "eval: azami eval yuvalama sınırı aşıldı (%d)" +msgstr "tuzak işleyicisi: en yüksek tuzak işleyicisi düzeyi aşıldı (%d)" #: trap.c:414 #, c-format @@ -2119,10 +2094,8 @@ msgstr "run_pending_traps:trap_list[%d] içinde hatalı değer: %p" #: trap.c:418 #, c-format -msgid "" -"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "" -"run_pending_traps: sinyal yakalayıcı SIG_DFL'dir, kendime %d (%s) göndererek" +msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_traps: sinyal yakalayıcı SIG_DFL'dir, kendime %d (%s) göndererek" #: trap.c:487 #, c-format @@ -2151,7 +2124,7 @@ msgstr "%s: değişkene değer atanmamış olabilir" #: variables.c:3475 #, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: isim referansına tamsayı ataması" +msgstr "%s: ad başvurusuna tamsayı ataması" #: variables.c:4404 msgid "all_local_variables: no function context at current scope" @@ -2182,8 +2155,7 @@ msgstr "pop_var_context: genel değişkenler bağlamı yok" #: variables.c:5424 msgid "pop_scope: head of shell_variables not a temporary environment scope" -msgstr "" -"pop_scope: kabuk değişkenlerinin başı bir geçici ortam etki alanı değil" +msgstr "pop_scope: kabuk değişkenlerinin başı bir geçici ortam etki alanı değil" #: variables.c:6387 #, c-format @@ -2201,17 +2173,12 @@ msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: uyumlulukdeğeri aralık dışı" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "Telif Hakkı (C) 2012 Özgür Yazılım Vakfı A.Ş." +msgstr "Telif hakkı (C) 2020 Free Software Foundation, Inc." #: version.c:47 version2.c:47 -msgid "" -"License GPLv3+: GNU GPL version 3 or later \n" -msgstr "" -"Lisans GPLv3+: GNU GPL sürüm 3 veya sonrası \n" +msgid "License GPLv3+: GNU GPL version 3 or later \n" +msgstr "Lisans GPLv3+: GNU GPL sürüm 3 veya sonrası \n" #: version.c:86 version2.c:86 #, c-format @@ -2248,20 +2215,15 @@ msgstr "%s: %s:%d: %lu bayt ayrılamıyor" #: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" -msgstr "alias [-p] [isim[=değer] ... ]" +msgstr "alias [-p] [ad[=değer] ... ]" #: builtins.c:49 msgid "unalias [-a] name [name ...]" -msgstr "unalias [-a] isim [isim ...]" +msgstr "unalias [-a] ad [ad ...]" #: builtins.c:53 -msgid "" -"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" -"x keyseq:shell-command] [keyseq:readline-function or readline-command]" -msgstr "" -"bind [-lpvsPVSX] [-m anahtar eşleniği] [-f dosyaadı] [-q isim] [-u isim] [-r " -"anahtar sırası] [-x keyseq:kabuk-komutu] [keyseq:satırokuma-işlevi veya " -"satırokuma-komutu]" +msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "bind [-lpvsPVSX] [-m anahtar eşleniği] [-f dosyaadı] [-q ad] [-u ad] [-r anahtar sırası] [-x keyseq:kabuk-komutu] [keyseq:satırokuma-işlevi veya satırokuma-komutu]" #: builtins.c:56 msgid "break [n]" @@ -2292,18 +2254,16 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [arg ...]" #: builtins.c:78 -#, fuzzy msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilnrtux] [-p] [isim[=değer] ...]" +msgstr "declare [-aAfFgiIlnrtux] [-p] [ad[=değer] ...]" #: builtins.c:80 -#, fuzzy msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilnrtux] [-p] isim[=değer] ..." +msgstr "typeset [-aAfFgiIlnrtux] [-p] ad[=değer] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." -msgstr "local [seçenek] isim[=değer] ..." +msgstr "local [seçenek] ad[=değer] ..." #: builtins.c:85 msgid "echo [-neE] [arg ...]" @@ -2315,21 +2275,19 @@ msgstr "echo [-n] [arg ...]" #: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" -msgstr "enable [-a] [-dnps] [-f dosyaadı] [isim ...]" +msgstr "enable [-a] [-dnps] [-f dosyaadı] [ad ...]" #: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" #: builtins.c:96 -#, fuzzy msgid "getopts optstring name [arg ...]" -msgstr "getopts optstring isim [arg]" +msgstr "getopts seçenekdizisi ad [arg ...]" #: builtins.c:98 -#, fuzzy msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" -msgstr "exec [-cl] [-a isim] [komut [argümanlar ...]] [yönlendirme ...]" +msgstr "exec [-cl] [-a ad] [komut [argüman ...]] [y. yönlendirme ...]" #: builtins.c:100 msgid "exit [n]" @@ -2353,19 +2311,15 @@ msgstr "bg [görev_tan ...]" #: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" -msgstr "hash [-lr] [-p yoladı] [-dt] [isim ...]" +msgstr "hash [-lr] [-p yoladı] [-dt] [ad ...]" #: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [desen ...]" #: builtins.c:123 -msgid "" -"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " -"[arg...]" -msgstr "" -"history [-c] [-d başlangıç] [n] veya history -anrw [dosyaadı] veya history -" -"ps arg [arg...]" +msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +msgstr "history [-c] [-d başlangıç] [n] veya history -anrw [dosyaadı] veya history -ps arg [arg...]" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2376,24 +2330,16 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [görevtan ... | pid ...]" #: builtins.c:134 -msgid "" -"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " -"[sigspec]" -msgstr "" -"kill [-s sinspec | -n signum | -sigspec] pid | görevtan ... veya kill -l " -"[sigspec]" +msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" +msgstr "kill [-s sinspec | -n signum | -sigspec] pid | görevtan ... veya kill -l [sigspec]" #: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" #: builtins.c:138 -msgid "" -"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " -"prompt] [-t timeout] [-u fd] [name ...]" -msgstr "" -"read [-ers] [-a dizi] [-d sonlandırıcı] [-i metin] [-n nkarakter] [-N " -"nkarakter] [-p istem] [-t zamanaşımı] [-u fd] [isim ...]" +msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" +msgstr "read [-ers] [-a dizi] [-d sonlandırıcı] [-i metin] [-n nkarakter] [-N nkarakter] [-p istem] [-t zamanaşımı] [-u fd] [ad ...]" #: builtins.c:140 msgid "return [n]" @@ -2405,15 +2351,15 @@ msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "unset [-f] [-v] [-n] [isim ...]" +msgstr "unset [-f] [-v] [-n] [ad ...]" #: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" -msgstr "export [-fn] [isim[=değer] ...] veya export -p" +msgstr "export [-fn] [ad[=değer] ...] veya export -p" #: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" -msgstr "readonly [-aAf] [isim[=değer] ...] veya readonly -p" +msgstr "readonly [-aAf] [ad[=değer] ...] veya readonly -p" #: builtins.c:150 msgid "shift [n]" @@ -2445,7 +2391,7 @@ msgstr "trap [-lp] [[arg] sinyal_tan ...]" #: builtins.c:168 msgid "type [-afptP] name [name ...]" -msgstr "type [-afptP] isim [isim ...]" +msgstr "type [-afptP] ad [ad ...]" #: builtins.c:171 msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" @@ -2456,9 +2402,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [kip]" #: builtins.c:177 -#, fuzzy msgid "wait [-fn] [-p var] [id ...]" -msgstr "wait [-n] [id ...]" +msgstr "wait [-fn] [-p değişken] [kimlik ...]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2466,7 +2411,7 @@ msgstr "wait [pid ...]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" -msgstr "for İSİM [in KELİMELER ... ] ; do KOMUTLAR; done" +msgstr "for AD [in SÖZCÜKLER ... ] ; do KOMUTLAR; done" #: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" @@ -2474,7 +2419,7 @@ msgstr "for (( ifade1; ifade2; ifade3 )); do KOMUTLAR; done" #: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" -msgstr "select İSİM [in KELİMELER ... ;] do KOMUTLAR; done" +msgstr "select AD [in SÖZCÜKLER ... ;] do KOMUTLAR; done" #: builtins.c:190 msgid "time [-p] pipeline" @@ -2482,15 +2427,11 @@ msgstr "time [-p] zamantüneli" #: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -msgstr "case KELİME in [DESEN [| DESEN]...) KOMUTLAR ;;]... esac" +msgstr "case SÖZCÜK in [DİZGİ [| DİZGİ]...) KOMUTLAR ;;]... esac" #: builtins.c:194 -msgid "" -"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " -"COMMANDS; ] fi" -msgstr "" -"if KOMUTLAR; then KOMUTLAR; [ elif KOMUTLAR; then KOMUTLAR; ]... [ else " -"KOMUTLAR; ] fi" +msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" +msgstr "if KOMUTLAR; then KOMUTLAR; [ elif KOMUTLAR; then KOMUTLAR; ]... [ else KOMUTLAR; ] fi" #: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" @@ -2502,11 +2443,11 @@ msgstr "until KOMUTLAR; do KOMUTLAR; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" -msgstr "coproc [isim] command [yönlendirmeler]" +msgstr "coproc [ad] command [yönlendirmeler]" #: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" -msgstr "function isim { KOMUTLAR ; } veya isim () { KOMUTLAR ; }" +msgstr "function ad { KOMUTLAR ; } veya ad () { KOMUTLAR ; }" #: builtins.c:204 msgid "{ COMMANDS ; }" @@ -2526,7 +2467,7 @@ msgstr "[[ ifade ]]" #: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "variables - Bazı kabuk değişkenlerinin isim ve anlamları" +msgstr "variables - Bazı kabuk değişkenlerinin ad ve anlamları" #: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" @@ -2549,47 +2490,24 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] biçim [argümanlar]" #: builtins.c:231 -#, fuzzy -msgid "" -"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" -"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " -"suffix] [name ...]" -msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o seçenek] [-A işlem] [-G genelyol] [-" -"W kelimelistesi] [-F işlev] [-C komut] [-X süzgeçyolu] [-P önek] [-S sonek] " -"[isim ...]" +msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]" +msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o seçenek] [-A eylem] [-G global kısım] [-W sözcük listesi] [-F işlev] [-C komut] [-X süzgeç] [-P önek] [-S sonek] [ad ...]" #: builtins.c:235 -#, fuzzy -msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" -"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" -msgstr "" -"compgen [-abcdefgjksuv] [-o seçenek] [-A işlem] [-G genelyol] [-W " -"kelimelistesi] [-F işlev] [-C komut] [-X süzgeçyolu] [-P önek] [-S sonek] " -"[kelime]" +msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "compgen [-abcdefgjksuv] [-o seçenek] [-A eylem] [-G global kısım] [-W sözcük listesi] [-F işlev] [-C komut] [-X süzgeç] [-P önek] [-S sonek] [sözcük]" #: builtins.c:239 -#, fuzzy msgid "compopt [-o|+o option] [-DEI] [name ...]" -msgstr "compopt [-o|+o seçenek] [-DE] [isim ...]" +msgstr "compopt [-o|+o seçenek] [-DEI] [ad ...]" #: builtins.c:242 -msgid "" -"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" -msgstr "" -"mapfile [-d sonlandrc] [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C " -"geriçağırım] [-c parçacık] [dizi]" +msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "mapfile [-d sonlandrc] [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C geriçağırım] [-c parçacık] [dizi]" #: builtins.c:244 -#, fuzzy -msgid "" -"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" -msgstr "" -"readarray [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C geriçağırım] [-c " -"parçacık] [dizi]" +msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "readarray [-d sınırlandırıcı] [-n sayım] [-O köken] [-s sayım] [-t] [-u fd] [-C geri çağırma] [-c kuantum] [dizilim]" #: builtins.c:256 msgid "" @@ -2606,25 +2524,23 @@ msgid "" " -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has " -"been\n" +" alias returns true unless a NAME is supplied for which no alias has been\n" " defined." msgstr "" "Rumuz tanımla veya görüntüle.\n" " \n" -" `alias' argümansız kullanıldığında standart çıktıda kullanılabilecek " -"tüm\n" -" rumuzları `alias İSİM=DEĞER' biçiminde listeler.\n" +" `alias' argümansız kullanıldığında standart çıktıda kullanılabilecek tüm\n" +" rumuzları `alias AD=DEĞER' biçiminde listeler.\n" " \n" -" Diğer durumda DEĞERi verilmiş her İSİM için bir rumuz tanımlanır.\n" -" DEĞERdeki boşluk, rumuz genişletildiğinde sonraki kelimenin rumuz\n" +" Diğer durumda DEĞERi verilmiş her AD için bir rumuz tanımlanır.\n" +" DEĞERdeki boşluk, rumuz genişletildiğinde sonraki sözcüğün rumuz\n" " ikamesi için denetlenmesine sebep olur.\n" " \n" " Seçenekler:\n" -" -p\tTüm rumuzları tekrar kullanılabilir biçimde listele\n" +" -p\tTüm rumuzları yeniden kullanılabilir biçimde listele\n" " \n" " Çıkış Durumu:\n" -" Hiçbir şeyin rumuzu olmayan bir İSİM verilmedikçe alias doğru döndürür." +" Hiçbir şeyin rumuzu olmayan bir AD verilmedikçe alias doğru döndürür." #: builtins.c:278 msgid "" @@ -2640,7 +2556,7 @@ msgstr "" " Seçenekler:\n" " -a\ttüm rumuz tanımlamalarını kaldır\n" " \n" -" İSİM mevcut olmayan bir rumuz olmadığı takdirde doğru\n" +" AD mevcut olmayan bir rumuz olmadığı takdirde doğru\n" " döndür." #: builtins.c:291 @@ -2655,74 +2571,64 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" -"move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their " -"values\n" -" -s List key sequences that invoke macros and their " -"values\n" +" -S List key sequences that invoke macros and their values\n" +" -s List key sequences that invoke macros and their values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named " -"function.\n" +" -u function-name Unbind all keys which are bound to the named function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" -" -X List key sequences bound with -x and associated " -"commands\n" +" -X List key sequences bound with -x and associated commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -"Readline tuş atamalarını ve değişkenlerini ayarla.\n" +"Readline düğme atamalarını ve değişkenlerini ayarla.\n" " \n" -" Bir tuş dizilimini bir Readline işlevine veya makrosuna bağlar ya da\n" +" Bir düğme dizilimini bir Readline işlevine veya makrosuna bağlar veya\n" " bir Readline değişkeni atar. Seçeneksiz argüman sözdizimi ~/.initrc\n" " içinde bulunana eşdeğerdir, ama tek bir argüman olarak aktarılması\n" " gerekir: bind '\"\\C-x\\C-r\": re-read-init-file'.\n" " \n" " Seçenekler:\n" -" -m TUŞDİZİSİ Bu komut süresince kısayol olarak TUŞDİZİSİ\n" -" kullanılır. Olası kısayol isimleri: emacs,\n" +" -m DÜĞMEEŞLEM Bu komut süresince kısayol olarak DÜĞMEEŞLEM\n" +" kullanılır. Olası kısayol adları: emacs,\n" " emacs-standard, emacs-meta, emacs-ctlx, vi,\n" " vi-move, vi-command ve vi-insert.\n" -" -l İşlev isimlerini listeler.\n" -" -P İşlev isimlerini ve kısayolları listeler.\n" -" -p İşlev isimlerini ve kısayolları, girdi olarak\n" +" -l İşlev adlarını listeler.\n" +" -P İşlev adlarını ve kısayolları listeler.\n" +" -p İşlev adlarını ve kısayolları, girdi olarak\n" " kullanılabilir biçimde listeler.\n" -" -S Makroları çağıran tuş dizilerini ve değerlerini\n" +" -S Makroları çağıran düğme dizilerini ve değerlerini\n" " listeler\n" -" -s Makroları çağıran tuş dizilerini ve değerlerini\n" -" girdi olarak kullanılabilir biçimde listeler. " -"-V Değişken isimlerini ve değerlerini listeler.\n" -" -v Değişken isimlerini ve değerlerini girdi olarak\n" +" -s Makroları çağıran düğme dizilerini ve değerlerini\n" +" girdi olarak kullanılabilir biçimde listeler.\n" +" -V Değişken adlarını ve değerlerini listeler.\n" +" -v Değişken adlarını ve değerlerini girdi olarak\n" " kullanılabilir biçimde listeler.\n" -" -q İŞLEV İsmi belirtilen İŞLEVi çağıran tuşlar hakkında " -"sorgu.\n" -" -u İŞLEV İsmi belirtilen İŞLEVi çağıran tüm tuş " -"kısayollarını\n" +" -q İŞLEV Adı belirtilen İŞLEVi çağıran düğmeler hakkında sorgu.\n" +" -u İŞLEV Adı belirtilen İŞLEVi çağıran tüm düğme kısayollarını\n" " kaldırır.\n" -" -r TUŞDİZİSİ TUŞDİZİSİ için mevcut kısayolları kaldırır.\n" -" -x TUŞDİZİSİ:KABUK-KOMUTU\tTUŞDİZİSİnin her girilişinde KABUK-" -"KOMUTUnun\n" +" -r DÜĞMEDİZİSİ DÜĞMEDİZİSİ için mevcut kısayolları kaldırır.\n" +" -x DÜĞMEDİZİSİ:KABUK-KOMUTU\tDÜĞMEDİZİSİnin her girilişinde KABUK-KOMUTUnun\n" " \t\t\t\tçalıştırılmasını sağlar.\n" -" -X Tuş dizilerini -x ve ilişkili komutlarını tekrar " -"bir girdi olarak kullanılabilecek\n" -" biçimde listeler.\n" +" -X Düğme dizilerini -x ve ilişkili komutlarını yeniden\n" +" bir girdi olarak kullanılabilecek biçimde listeler.\n" " \n" " Çıkış Durumu:\n" -" tanınmayan bir seçenek girilmediği veya bir hata oluşmadığı durumda 0 " -"döndürür." +" tanınmayan bir seçenek girilmediği veya bir hata oluşmadığı durumda 0 döndürür." #: builtins.c:330 msgid "" @@ -2736,8 +2642,7 @@ msgid "" msgstr "" "for, while veya until döngülerinden çık.\n" " \n" -" Bir FOR, WHILE veya UNTIL döngüsünden çık. Eğer N belirtilmişse, N " -"ilişkili\n" +" Bir FOR, WHILE veya UNTIL döngüsünden çık. Eğer N belirtilmişse N ilişkili\n" " döngüden çık.\n" " \n" " Çıkış Durumu:\n" @@ -2756,20 +2661,29 @@ msgstr "" "for, while veya until döngülerine devam et.\n" " \n" " İlişkili FOR, WHILE veya UNTIL döngüsünün sonraki adımına devam eder.\n" -" N tanımlanmışsa, N'inci ilişkili döngüye devam eder.\n" +" N tanımlanmışsa N'inci ilişkili döngüye devam eder.\n" " \n" " Çıkış Durumu:\n" " N, 1 veya daha büyük olmadığında çıkış durumu 0'dır." #: builtins.c:354 #, fuzzy +#| msgid "" +#| "Execute shell builtins.\n" +#| " \n" +#| " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +#| " lookup. This is useful when you wish to reimplement a shell builtin\n" +#| " as a shell function, but need to execute the builtin within the function.\n" +#| " \n" +#| " Exit Status:\n" +#| " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +#| " not a shell builtin.." msgid "" "Execute shell builtins.\n" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the " -"function.\n" +" as a shell function, but need to execute the builtin within the function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" @@ -2778,14 +2692,11 @@ msgstr "" "Kabuk dahillerini çalıştır.\n" " \n" " Komut araması yapmadan KABUK-DAHİLİ, ARGÜMANLAR argümanları ile\n" -" çalıştır. Bu, bir KABUK-DAHİLİ, bir kabuk işlevi olarak tekrar uygulamak " -"isteyip\n" -" işlev içerisinde dahili olanı da çalıştırmanız gerektiğinizde " -"kullanışlıdır.\n" +" çalıştır. Bu, bir KABUK-DAHİLİ, bir kabuk işlevi olarak yeniden uygulamak isteyip\n" +" işlev içerisinde dahili olanı da çalıştırmanız gerektiğinizde kullanışlıdır.\n" " \n" " Çıkış Durumu:\n" -" KABUK-DAHİLİnin çıkış durumunu veya eğer KABUK-DAHİLİ değilse false " -"döndürür." +" KABUK-DAHİLİnin çıkış durumunu veya eğer KABUK-DAHİLİ değilse false döndürür." #: builtins.c:369 msgid "" @@ -2804,38 +2715,29 @@ msgid "" msgstr "" "Geçerli alt yordam çağrısının bağlamını döndürür.\n" " \n" -" İFADE olmadan, \"$satır $dosyaadı\" döndürür. İFADE ile " -"kullanıldığında\n" -" \"$satır $altyordam $dosyaadı\" döndürür; bu ek bilgi bir yığın izi " -"sağlamak\n" +" İFADE olmadan, \"$satır $dosyaadı\" döndürür. İFADE ile kullanıldığında\n" +" \"$satır $altyordam $dosyaadı\" döndürür; bu ek bilgi bir yığın izi sağlamak\n" " için kullanılabilir.\n" " \n" " İFADE değeri, geçerli çerçeveden önce kaç tane çerçeve çağrılacağını\n" " belirtir. Üst çerçeve 0. çerçevedir. \n" " Çıkış Durumu:\n" -" İFADE geçersiz olmadığı ve bir kabuk işlevi çalıştırmadığı durumda 0 " -"döndürür." +" İFADE geçersiz olmadığı ve bir kabuk işlevi çalıştırmadığı durumda 0 döndürür." #: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of " -"the\n" +" Change the current directory to DIR. The default DIR is the value of the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory " -"containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon " -"(:).\n" -" A null directory name is the same as the current directory. If DIR " -"begins\n" +" The variable CDPATH defines the search path for the directory containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" +" A null directory name is the same as the current directory. If DIR begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is " -"set,\n" -" the word is assumed to be a variable name. If that variable has a " -"value,\n" +" If the directory is not found, and the shell option `cdable_vars' is set,\n" +" the word is assumed to be a variable name. If that variable has a value,\n" " its value is used for DIR.\n" " \n" " Options:\n" @@ -2851,53 +2753,40 @@ msgid "" " \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" -" `..' is processed by removing the immediately previous pathname " -"component\n" +" `..' is processed by removing the immediately previous pathname component\n" " back to a slash or the beginning of DIR.\n" " \n" " Exit Status:\n" -" Returns 0 if the directory is changed, and if $PWD is set successfully " -"when\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" " -P is used; non-zero otherwise." msgstr "" "Kabuk çalışma dizinini değiştir.\n" " \n" -" Geçerli dizini DİZİN olarak değiştir. Öntanımlı dizin kabuk değişkeninin " -"EV\n" +" Geçerli dizini DİZİN olarak değiştir. Öntanımlı dizin kabuk değişkeninin EV\n" " dizini değeridir.\n" " \n" -" CDPATH değişkeni, DİZİN içeren dizinler için arama yolunu tanımlar. " -"CDPATH\n" -" için alternatif dizin isimleri iki nokta (:) ile ayrılır.\n" -" Boş dizin adı, geçerli dizinle aynıdır. Eğer DİZİN bölü (/) ile " -"başlıyorsa, CDPATH\n" +" CDPATH değişkeni, DİZİN içeren dizinler için arama yolunu tanımlar. CDPATH\n" +" için alternatif dizin adları iki nokta (:) ile ayrılır.\n" +" Boş dizin adı, geçerli dizinle aynıdır. Eğer DİZİN bölü (/) ile başlıyorsa CDPATH\n" " kullanılmaz.\n" " \n" -" Eğer dizin bulunamazsa ve kabuk seçeneği `cdable_vars' ayarlanmışsa, " -"kelime\n" -" bir değişken adı olarak varsayılır. Eğer değişken bir değere sahipse, " -"değeri DİZİN\n" +" Eğer dizin bulunamazsa ve kabuk seçeneği `cdable_vars' ayarlanmışsa sözcük\n" +" bir değişken adı olarak varsayılır. Eğer değişken bir değere sahipse değeri DİZİN\n" " için kullanılır\n" " \n" " Seçenekler:\n" -" -L\tsembolik bağlantıların takip edilmesini zorla: '..' " -"örneklerinin\n" +" -L\tsembolik bağlantıların takip edilmesini zorla: '..' örneklerinin\n" " \t\tişlenmesinden sonra DİZİN içindeki sembolik bağlantıları çöz\n" -" -P\tsembolik bağlantıları takip etmeden fiziksel dizini kullan: '..' " -"örneklerinin\n" +" -P\tsembolik bağlantıları takip etmeden fiziksel dizini kullan: '..' örneklerinin\n" " \t\tişlenmesinden önce DİZİN içindeki sembolik bağlantıları çöz\n" -" -e\teğer -P seçeneği belirtilmişse ve geçerli çalışma dizini " -"başarılı şekilde\n" -" \tbelirlenemiyorsa, sıfır olmayan bir durumla çık\n" -" -@\tdestekleyen sistemlerde, dosya niteliklerini içeren bir dizin " -"olarak uzatılmış\n" +" -e\teğer -P seçeneği belirtilmişse ve geçerli çalışma dizini başarılı şekilde\n" +" \tbelirlenemiyorsa sıfır olmayan bir durumla çık\n" +" -@\tdestekleyen sistemlerde, dosya niteliklerini içeren bir dizin olarak uzatılmış\n" " niteliklere sahip bir dosya sun \n" -" Öntanımlı olan `-L' tanımlanmış gibi sembolik bağlantıları takip " -"etmektir.\n" +" Öntanımlı olan `-L' tanımlanmış gibi sembolik bağlantıları takip etmektir.\n" " \n" " Çıkış Durumu:\n" -" Eğer dizin değişmişse ve -P kullanıldığında $PWD başarılı ayarlanırsa 0; " -"diğer durumda\n" +" Eğer dizin değişmişse ve -P kullanıldığında $PWD başarılı ayarlanırsa 0; diğer durumda\n" " sıfır olmayan bir değer döndürür." #: builtins.c:425 @@ -2915,11 +2804,10 @@ msgid "" " Returns 0 unless an invalid option is given or the current directory\n" " cannot be read." msgstr "" -"Geçerli çalışma dizininin ismini yazdır.\n" +"Geçerli çalışma dizininin adını yazdır.\n" " \n" " Seçenekler:\n" -" -L\teğer geçerli çalışma dizinini isimlendirmişse $PWD değerini " -"yazdır\n" +" -L\teğer geçerli çalışma dizinini adlandırmışsa $PWD değerini yazdır\n" " -P\thiçbir sembolik bağlantı kullanmadan fiziksel dizini yazdır\n" " \n" " Öntanımlı olarak `pwd', `-L' tanımlanmış şekilde davranır.\n" @@ -2972,8 +2860,7 @@ msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke " -"commands\n" +" information about the specified COMMANDs. Can be used to invoke commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -2987,15 +2874,12 @@ msgid "" msgstr "" "Basit bir komut çalıştır veya komutlar hakkında bilgi görüntüle.\n" " \n" -" KOMUTU ARGümanları ile kabuk işlevi aramasını ihmal ederek çalıştırır " -"veya\n" -" belirtilen KOMUTlar hakkında bilgi görüntüler. Aynı isimde bir işlev " -"varsa\n" +" KOMUTU ARGümanları ile kabuk işlevi aramasını ihmal ederek çalıştırır veya\n" +" belirtilen KOMUTLAR hakkında bilgi görüntüler. Aynı adda bir işlev varsa\n" " diskte komutları çalıştırmak için kullanılabilir.\n" " \n" " Seçenekler:\n" -" -p YOL için, tüm standart yardımcıları bulabilmek için bir " -"öntanımlı değer\n" +" -p YOL için, tüm standart yardımcıları bulabilmek için bir öntanımlı değer\n" " \tkullan\n" " -v `type' dahilisine benzer bir KOMUT açıklaması göster\n" " -V her KOMUTun fazla açıklamasını göster\n" @@ -3005,6 +2889,42 @@ msgstr "" #: builtins.c:490 #, fuzzy +#| msgid "" +#| "Set variable values and attributes.\n" +#| " \n" +#| " Declare variables and give them attributes. If no NAMEs are given,\n" +#| " display the attributes and values of all variables.\n" +#| " \n" +#| " Options:\n" +#| " -f\trestrict action or display to function names and definitions\n" +#| " -F\trestrict display to function names only (plus line number and\n" +#| " \t\tsource file when debugging)\n" +#| " -g\tcreate global variables when used in a shell function; otherwise\n" +#| " \t\tignored\n" +#| " -p\tdisplay the attributes and value of each NAME\n" +#| " \n" +#| " Options which set attributes:\n" +#| " -a\tto make NAMEs indexed arrays (if supported)\n" +#| " -A\tto make NAMEs associative arrays (if supported)\n" +#| " -i\tto make NAMEs have the `integer' attribute\n" +#| " -l\tto convert NAMEs to lower case on assignment\n" +#| " -n\tmake NAME a reference to the variable named by its value\n" +#| " -r\tto make NAMEs readonly\n" +#| " -t\tto make NAMEs have the `trace' attribute\n" +#| " -u\tto convert NAMEs to upper case on assignment\n" +#| " -x\tto make NAMEs export\n" +#| " \n" +#| " Using `+' instead of `-' turns off the given attribute.\n" +#| " \n" +#| " Variables with the integer attribute have arithmetic evaluation (see\n" +#| " the `let' command) performed when the variable is assigned a value.\n" +#| " \n" +#| " When used in a function, `declare' makes NAMEs local, as with the `local'\n" +#| " command. The `-g' option suppresses this behavior.\n" +#| " \n" +#| " Exit Status:\n" +#| " Returns success unless an invalid option is supplied or a variable\n" +#| " assignment error occurs." msgid "" "Set variable values and attributes.\n" " \n" @@ -3037,8 +2957,7 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the " -"`local'\n" +" When used in a function, `declare' makes NAMEs local, as with the `local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" @@ -3047,43 +2966,37 @@ msgid "" msgstr "" "Değişken değer ve niteliklerini ayarla.\n" " \n" -" Değişkenleri ayarla ve nitelik ver. Eğer İSİM verilmemişse, tüm " -"değişkenlerin, niteliklerini ve değerlerini görüntüle.\n" +" Değişkenleri ayarla ve nitelik ver. Eğer AD verilmemişse tüm değişkenlerin, niteliklerini ve değerlerini görüntüle.\n" " \n" " Seçenekler:\n" -" -f\teylemi veya işlev ismi ile tanımları gösterimini kısıtla\n" -" -F\tsadece işlev isim gösterimlerini kısıtla (ek olarak satır sayısı " -"ve hata ayıklarken\n" +" -f\teylemi veya işlev adı ile tanımları gösterimini kısıtla\n" +" -F\tyalnızca işlev ad gösterimlerini kısıtla (ek olarak satır sayısı ve hata ayıklarken\n" " \t\tkaynak dosyayı)\n" -" -g\tbir kabuk fonksiyonunda kullanıldığında evrensel değişken " -"oluştur,\n" -" \t\taksi takdirde yoksayılır\n" -" -p\ther İSİMin değeri ve niteliklerini görüntüle\n" +" -g\tbir kabuk işlevinde kullanıldığında evrensel değişken oluştur,\n" +" \t\taksi takdirde yok sayılır\n" +" -p\ther AD'ın değeri ve niteliklerini görüntüle\n" " \n" " Nitelik ayarlayan seçenekler:\n" -" -a\tİSİMleri indisli diziler yapmak için (destekleniyorsa)\n" -" -A\tİSİMleri ilişkisel dizi yapmak için (destekleniyorsa)\n" -" -i\tİSİMleri `integer' niteliği sahibi yapmak için\n" -" -l\tİSİMleri atamada küçük harfe dönüştürmek için\n" -" -n\tİSİMi değeriyle isimlendirilmiş bir değişkene referans yapmak " -"için\n" -" -r\tİSİMleri salt okunur yapmak için\n" -" -t\tİSİMlerin `trace' niteliği sahibi yapmak için\n" -" -u\tİSİMleri atamada büyük harfe dönüştürmek için\n" -" -x\tİSİMleri dışarı çıkarabilir yapmak için\n" +" -a\tAD'ları indisli diziler yapmak için (destekleniyorsa)\n" +" -A\tAD'ları ilişkisel dizi yapmak için (destekleniyorsa)\n" +" -i\tAD'ları `integer' niteliği sahibi yapmak için\n" +" -l\tAD'ları atamada küçük harfe dönüştürmek için\n" +" -n\tAD'ı değeriyle ad bir değişkene referans yapmak için\n" +" -r\tAD'ları saltokunur yapmak için\n" +" -t\tAD'ların `trace' niteliği sahibi yapmak için\n" +" -u\tAD'ları atamada büyük harfe dönüştürmek için\n" +" -x\tAD'ları dışarı çıkarabilir yapmak için\n" " \n" " `-' yerine `+' kullanmak belirtilen niteliği kapatır.\n" " \n" -" Tamsayı niteliğine sahip değişkenler, bir değere atandıklarında " -"aritmetik değerlendirmeye tabi tutulurlar (`let' komutuna bakın).\n" +" Tamsayı niteliğine sahip değişkenler, bir değere atandıklarında aritmetik değerlendirmeye tabi tutulurlar (`let' komutuna bakın).\n" " \n" -" Bir fonksiyonda kullanıldığında, `declare' İSİMleri, `local' komutu\n" +" Bir işlevde kullanıldığında, `declare' AD'ları, `local' komutu\n" "gibi yerel\n" " yapar. `-g' seçeneği bu davranışı iptal eder.\n" " \n" " Çıkış Durumu:\n" -" Geçersiz bir değer sağlanmadığı veya değişken atama hatası olmadığı " -"sürece\n" +" Geçersiz bir değer sağlanmadığı veya değişken atama hatası olmadığı sürece\n" " başarılı döner." #: builtins.c:532 @@ -3092,7 +3005,7 @@ msgid "" " \n" " A synonym for `declare'. See `help declare'." msgstr "" -"Değişken isim ve niteliklerini ayarla.\n" +"Değişken ad ve niteliklerini ayarla.\n" " \n" " `declare' ile eş anlamlıdır. Bkz. `help declare'." @@ -3112,25 +3025,52 @@ msgid "" msgstr "" "Yerel değişkenleri tanımla.\n" " \n" -" İSİM adıyla bir yerel değişken oluştur ve DEĞER ata. SEÇENEK `declare'\n" +" AD adıyla bir yerel değişken oluştur ve DEĞER ata. SEÇENEK `declare'\n" " tarafından kabul edilen herhangi bir seçenek olabilir.\n" " \n" -" Yerel değişkenler sadece bir işlev içerisinde kullanılabilirler ve " -"tanımlandıkları\n" +" Yerel değişkenler yalnızca bir işlev içerisinde kullanılabilirler ve tanımlandıkları\n" " işleve ve alt işlevlerine görünebilirler.\n" " \n" " Çıkış Durumu:\n" -" Geçersiz bir seçenek verilmediğinde, bir değişken hatası oluşmadığında " -"veya\n" +" Geçersiz bir seçenek verilmediğinde, bir değişken hatası oluşmadığında veya\n" " kabuk bir işlev çalıştırmıyorsa başarılı döner." #: builtins.c:557 #, fuzzy +#| msgid "" +#| "Write arguments to the standard output.\n" +#| " \n" +#| " Display the ARGs, separated by a single space character and followed by a\n" +#| " newline, on the standard output.\n" +#| " \n" +#| " Options:\n" +#| " -n\tdo not append a newline\n" +#| " -e\tenable interpretation of the following backslash escapes\n" +#| " -E\texplicitly suppress interpretation of backslash escapes\n" +#| " \n" +#| " `echo' interprets the following backslash-escaped characters:\n" +#| " \\a\talert (bell)\n" +#| " \\b\tbackspace\n" +#| " \\c\tsuppress further output\n" +#| " \\e\tescape character\n" +#| " \\E\tescape character\n" +#| " \\f\tform feed\n" +#| " \\n\tnew line\n" +#| " \\r\tcarriage return\n" +#| " \\t\thorizontal tab\n" +#| " \\v\tvertical tab\n" +#| " \\\\\tbackslash\n" +#| " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +#| " \t\t0 to 3 octal digits\n" +#| " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +#| " \t\tcan be one or two hex digits\n" +#| " \n" +#| " Exit Status:\n" +#| " Returns success unless a write error occurs." msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by " -"a\n" +" Display the ARGs, separated by a single space character and followed by a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -3154,11 +3094,9 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" -" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " -"HHHH.\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n" " \t\tHHHH can be one to four hex digits.\n" -" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " -"value\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n" " \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" @@ -3186,8 +3124,7 @@ msgstr "" " \\t\tyatay sekme\n" " \\v\tdikey sekme\n" " \\\\\tters bölü\n" -" \\0nnn\tASCII kodu NNN (sekizlik) olan karakter. NNN 0-3 arası " -"sekizli\n" +" \\0nnn\tASCII kodu NNN (sekizlik) olan karakter. NNN 0-3 arası sekizli\n" " \t\trakamlardan oluşabilir.\n" " \\xHH\tdeğeri HH (onaltılık) olan sekiz bit karakter. HH bir veya iki\n" " \t\tonaltılık rakam olabilir\n" @@ -3245,35 +3182,32 @@ msgid "" msgstr "" "Kabuk yerleşiklerini etkinleştir/devre dışı bırak.\n" " \n" -" Dahili kabuk komutlarını etkinleştirir ve devre dışı bırakır. Devre " -"dışı\n" -" bırakmak bir kabuk yerleşiği ile aynı isme sahip bir disk komutunu tam\n" +" Dahili kabuk komutlarını etkinleştirir ve devre dışı bırakır. Devre dışı\n" +" bırakmak bir kabuk yerleşiği ile aynı ada sahip bir disk komutunu tam\n" " bir yol adı kullanmadan çalıştırmanızı sağlar. \n" " Seçenekler:\n" -" -a\ttüm yerleşikler listesini etkin olup olmadıkları bilgisi ile " -"yazdır\n" -" -n\ther İSİMi devre dışı bırak veya devre dışı olanları listele\n" -" -p\tyerleşik listesini tekrar kullanılabilir biçimde yazdır\n" -" -s\tsadece Posix `özel' yerleşiklerinin isimlerini yazdır\n" +" -a\ttüm yerleşikler listesini etkin olup olmadıkları bilgisi ile yazdır\n" +" -n\ther AD'ı devre dışı bırak veya devre dışı olanları listele\n" +" -p\tyerleşik listesini yeniden kullanılabilir biçimde yazdır\n" +" -s\tyalnızca Posix `özel' yerleşiklerinin adlarını yazdır\n" " \n" " Hareketli yüklemeyi denetleyen seçenekler:\n" -" -f\tİSİM yerleşiğini paylaşılan DOSYAADI nesnesinden yükle\n" +" -f\tAD yerleşiğini paylaşılan DOSYAADI nesnesinden yükle\n" " -d\t-f ile yüklenmiş bir yerleşiği kaldır\n" " \n" -" Seçenek olmazsa her İSİM etkinleştirilir.\n" +" Seçenek olmazsa her AD etkinleştirilir.\n" " \n" " Kabuk yerleşiği sürümü yerine $PATH içerisinde bulunan `test' kullanmak\n" " için `enable -n test' yazın.\n" " \n" " Çıktı Durumu:\n" -" İSİM bir kabuk yerleşiği değilse ve hata oluşmazsa başarılı döner." +" AD bir kabuk yerleşiği değilse ve hata oluşmazsa başarılı döner." #: builtins.c:640 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the " -"shell,\n" +" Combine ARGs into a single string, use the result as input to the shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" @@ -3281,8 +3215,7 @@ msgid "" msgstr "" "Argümanları kabuk komutu olarak çalıştır.\n" " \n" -" ARGümanları tek bir dizgeye birleştir, sonucu kabuğa girdi olarak " -"kullan,\n" +" ARGümanları tek bir diziye birleştir, sonucu kabuğa girdi olarak kullan,\n" " ve sonuçlanan komutları çalıştır.\n" " \n" " Çıkış Durumu:\n" @@ -3290,6 +3223,44 @@ msgstr "" #: builtins.c:652 #, fuzzy +#| msgid "" +#| "Parse option arguments.\n" +#| " \n" +#| " Getopts is used by shell procedures to parse positional parameters\n" +#| " as options.\n" +#| " \n" +#| " OPTSTRING contains the option letters to be recognized; if a letter\n" +#| " is followed by a colon, the option is expected to have an argument,\n" +#| " which should be separated from it by white space.\n" +#| " \n" +#| " Each time it is invoked, getopts will place the next option in the\n" +#| " shell variable $name, initializing name if it does not exist, and\n" +#| " the index of the next argument to be processed into the shell\n" +#| " variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +#| " a shell script is invoked. When an option requires an argument,\n" +#| " getopts places that argument into the shell variable OPTARG.\n" +#| " \n" +#| " getopts reports errors in one of two ways. If the first character\n" +#| " of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +#| " this mode, no error messages are printed. If an invalid option is\n" +#| " seen, getopts places the option character found into OPTARG. If a\n" +#| " required argument is not found, getopts places a ':' into NAME and\n" +#| " sets OPTARG to the option character found. If getopts is not in\n" +#| " silent mode, and an invalid option is seen, getopts places '?' into\n" +#| " NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +#| " is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +#| " printed.\n" +#| " \n" +#| " If the shell variable OPTERR has the value 0, getopts disables the\n" +#| " printing of error messages, even if the first character of\n" +#| " OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +#| " \n" +#| " Getopts normally parses the positional parameters ($0 - $9), but if\n" +#| " more arguments are given, they are parsed instead.\n" +#| " \n" +#| " Exit Status:\n" +#| " Returns success if an option is found; fails if the end of options is\n" +#| " encountered or an error occurs." msgid "" "Parse option arguments.\n" " \n" @@ -3331,59 +3302,39 @@ msgid "" msgstr "" "Seçenek argümanlarını ayıklar.\n" " \n" -" Getopts kabuk betikleri tarafından konumsal parametreleri " -"çözümlemekte\n" +" Getopts kabuk betikleri tarafından konumsal parametreleri çözümlemekte\n" " kullanılır.\n" " \n" -" SÇNDİZGESİ tanınan seçenek karakterlerini içerir; bir karakterden " -"sonra\n" -" bir ikinokta imi (:) geliyorsa seçeneğin ondan bir boşlukla ayrılmış " -"bir\n" +" SÇNSİ tanınan seçenek karakterlerini içerir; bir karakterden sonra\n" +" bir ikinokta imi (:) geliyorsa seçeneğin ondan bir boşlukla ayrılmış bir\n" " argümana sahip olacağı umulur.\n" " \n" -" Her çağrılışında getopts işlenecek sonraki argümanın indisini " -"OPTIND\n" -" kabuk değişkenine ve AD değişkenini de mevcut değilse " -"ilklendirerek\n" -" sonraki seçeneği $AD kabuk değişkenine yerleştirir. OPTIND kabuğun ya " -"da\n" -" bir kabuk betiğinin her çağrılışında 1 ile ilklendirilir. Bir " -"seçenek\n" -" bir argüman gerektirdiğinde getopts argümanı OPTARG " -"değişkenine\n" +" Her çağrılışında getopts işlenecek sonraki argümanın indisini OPTIND\n" +" kabuk değişkenine ve AD değişkenini de mevcut değilse ilklendirerek\n" +" sonraki seçeneği $AD kabuk değişkenine yerleştirir. OPTIND kabuğun veya\n" +" bir kabuk betiğinin her çağrılışında 1 ile ilklendirilir. Bir seçenek\n" +" bir argüman gerektirdiğinde getopts argümanı OPTARG değişkenine\n" " yerleştirir.\n" " \n" -" getopts hataları iki yolla raporlayabilir. Eğer SÇNDİZGESİnin " -"ilk\n" -" karakteri bir ':' ise sessiz hata raporlaması kullanılır. Bu " -"kipte\n" -" hiçbir hata iletisi basılmaz. Bir geçersiz seçenek saptanırsa " -"getopt\n" -" OPTARG'a bulunan seçenek karakterini yerleştirir. Bir gerekli " -"argüman\n" -" verilmemişse, getopts AD'a bir ':' yerleştirir. Getopts sessiz " -"kipte\n" -" değilse ve geçersiz bir seçenek görüldüğünde, getopts ? karakterini " -"AD'a\n" -" yerleştirir ve OPTARG değişkenini kaldırır. Eğer bir gerekli " -"argüman\n" -" bulunamazsa ve getopts sessiz kipte değilse AD'a ? " -"karakteri\n" +" getopts hataları iki yolla raporlayabilir. Eğer SÇNSİnin ilk\n" +" karakteri bir ':' ise sessiz hata raporlaması kullanılır. Bu kipte\n" +" hiçbir hata iletisi basılmaz. Bir geçersiz seçenek saptanırsa getopt\n" +" OPTARG'a bulunan seçenek karakterini yerleştirir. Bir gerekli argüman\n" +" verilmemişse getopts AD'a bir ':' yerleştirir. Getopts sessiz kipte\n" +" değilse ve geçersiz bir seçenek görüldüğünde, getopts ? karakterini AD'a\n" +" yerleştirir ve OPTARG değişkenini kaldırır. Eğer bir gerekli argüman\n" +" bulunamazsa ve getopts sessiz kipte değilse AD'a ? karakteri\n" " yerleştirilir, OPTARG kaldırılır ve bir tanı iletisi basılır.\n" " \n" -" OPTERR değişkeninin değeri 0 ise SÇNDİZGESİnin ilk karakteri bir " -"':'\n" -" olmasa bile hata iletileri gösterilmez. OPTERR değişkeninin " -"öntanımlı\n" +" OPTERR değişkeninin değeri 0 ise SÇNSİnin ilk karakteri bir ':'\n" +" olmasa bile hata iletileri gösterilmez. OPTERR değişkeninin öntanımlı\n" " değeri 1'dir.\n" " \n" -" Getopts normalde konumsal parametreleri ($0 - $9) çözümlese de " -"başka\n" +" Getopts normalde konumsal parametreleri ($0 - $9) çözümlese de başka\n" " argümanlar verilmişse bunları çözümler.\n" " \n" " Çıktı Durumu:\n" -" Bir seçenek bulunduğunda başarılı, seçenek sonuna gelindiğinde veya " -"bir hata oluştuğunda başarısız döner.\n" +" Bir seçenek bulunduğunda başarılı, seçenek sonuna gelindiğinde veya bir hata oluştuğunda başarısız döner.\n" " encountered or an error occurs." #: builtins.c:694 @@ -3391,8 +3342,7 @@ msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " -"specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3400,27 +3350,24 @@ msgid "" " -c\texecute COMMAND with an empty environment\n" " -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, " -"unless\n" +" If the command cannot be executed, a non-interactive shell exits, unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error " -"occurs." +" Returns success unless COMMAND is not found or a redirection error occurs." msgstr "" "Kabuğu verilen komutla değiştir.\n" " \n" " KOMUTU, belirtilen program ile değiştirerek çalıştır.\n" -" ARGÜMANLAR, KOMUTUN argümanları olur. Eğer KOMUT belirtilmemişse, tüm\n" +" ARGÜMANLAR, KOMUTUN argümanları olur. Eğer KOMUT belirtilmemişse tüm\n" " yönlendirmeler geçerli kabukta uygulanır.\n" " \n" " Seçenekler:\n" -" -a isim\tİSMİ, KOMUTun sıfırıncı argümanına ata\n" +" -a ad\tAD'ı, KOMUT'un sıfırıncı argümanına ata\n" " -c\tKOMUTu boş bir ortamla çalıştır\n" " -l\tKOMUTun sıfırıncı argümanına bir çizgi koy\n" " \n" -" Eğer komut çalıştırılamıyorsa, `execfail' ayarlanmadığı sürece " -"etkileşimsiz kabuk\n" +" Eğer komut çalıştırılamıyorsa `execfail' ayarlanmadığı sürece etkileşimsiz kabuk\n" " çıkış yapar.\n" " \n" " Çıkış Durumu:\n" @@ -3442,8 +3389,7 @@ msgstr "" msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not " -"executed\n" +" Exits a login shell with exit status N. Returns an error if not executed\n" " in a login shell." msgstr "" "Oturum kabuğundan çık.\n" @@ -3455,15 +3401,13 @@ msgstr "" msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history " -"list.\n" +" fc is used to list or edit and re-execute commands from the history list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then " -"EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -3477,18 +3421,14 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error " -"occurs." +" Returns success or status of executed command; non-zero if an error occurs." msgstr "" "Geçmiş listesindeki komutları görüntüle veya çalıştır\n" " \n" -" fc, komut geçmişi listesindeki komutları listelemek, düzenlemek " -"ve\n" -" yeniden çalıştırmak için kullanılır. İLK ve SON olarak numara " -"vererek\n" -" bir aralık belirtilebileceği gibi İLK bir dizge de olabilir, bu " -"takdirde\n" -" bu dizge ile başlayan en son komut anlamına gelir.\n" +" fc, komut geçmişi listesindeki komutları listelemek, düzenlemek ve\n" +" yeniden çalıştırmak için kullanılır. İLK ve SON olarak numara vererek\n" +" bir aralık belirtilebileceği gibi İLK bir dizi de olabilir, bu takdirde\n" +" bu dizi ile başlayan en son komut anlamına gelir.\n" " \n" " Seçenekler:\n" " -e DÜZENLEYİCİ ile hangi düzenleyicinin kullanılacağı belirtilir.\n" @@ -3505,8 +3445,7 @@ msgstr "" " r' yazarak en son komut çalıştırılabilir.\n" " \n" " Çıktı Durumu:\n" -" Başarılı veya çalıştırılan komut durumu döndürülür; hata oluştuğunda " -"sıfır harici değer döner." +" Başarılı veya çalıştırılan komut durumu döndürülür; hata oluştuğunda sıfır harici değer döner." #: builtins.c:764 msgid "" @@ -3532,31 +3471,26 @@ msgstr "" msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if " -"they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's " -"notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" -"İşi arkaplana taşı.\n" +"İşi arka plana taşı.\n" " \n" " `&' ile başlatılmışçasına İŞ_BELİRTİMİni artalana yerleştirir.\n" -" İŞ_BELİRTİMİ verilmemişse, iş belirtimi olarak o an ki iş " -"kullanılır. \n" +" İŞ_BELİRTİMİ verilmemişse iş belirtimi olarak o an ki iş kullanılır. \n" " Çıktı Durumu:\n" -" İş kontrolü etkin olmadığı veya bir hata oluşmadığı sürece başarılı " -"döner." +" İş denetimi etkin olmadığı veya bir hata oluşmadığı sürece başarılı döner." #: builtins.c:793 msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is " -"displayed.\n" +" no arguments are given, information about remembered commands is displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3576,6 +3510,24 @@ msgstr "" #: builtins.c:818 #, fuzzy +#| msgid "" +#| "Display information about builtin commands.\n" +#| " \n" +#| " Displays brief summaries of builtin commands. If PATTERN is\n" +#| " specified, gives detailed help on all commands matching PATTERN,\n" +#| " otherwise the list of help topics is printed.\n" +#| " \n" +#| " Options:\n" +#| " -d\toutput short description for each topic\n" +#| " -m\tdisplay usage in pseudo-manpage format\n" +#| " -s\toutput only a short usage synopsis for each topic matching\n" +#| " \t\tPATTERN\n" +#| " \n" +#| " Arguments:\n" +#| " PATTERN\tPattern specifiying a help topic\n" +#| " \n" +#| " Exit Status:\n" +#| " Returns success unless PATTERN is not found or an invalid option is given." msgid "" "Display information about builtin commands.\n" " \n" @@ -3593,30 +3545,58 @@ msgid "" " PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is " -"given." +" Returns success unless PATTERN is not found or an invalid option is given." msgstr "" "Dahili komutlar hakkında bilgi görüntüle.\n" " \n" -" Dahili komutların özetlerini görüntüler. Eğer DESEN belirtilmişse,\n" -" DESEN ile eşleşen tüm komutlar hakkında ayrıntılı bilgi verir, aksi\n" +" Dahili komutların özetlerini görüntüler. Eğer DİZGİ belirtilmişse\n" +" DİZGİ ile eşleşen tüm komutlar hakkında ayrıntılı bilgi verir, aksi\n" " halde, yardım konuları yazdırılır.\n" " \n" " Seçenekler:\n" " -d\ther konu için kısa açıklama yazdır\n" " -m\tkullanımı pseudo-man sayfası biçiminde yazdır\n" -" -s\tsadece DESEN ile eşleşen konular için kısa kullanım\n" +" -s\tyalnızca DİZGİ ile eşleşen konular için kısa kullanım\n" " \t\tbilgisi yazdır\n" " \n" " Argümanlar:\n" -" DESEN\tBir yardım konusunu belirten desen\n" +" DİZGİ\tBir yardım konusunu belirten desen\n" " \n" " Çıktı Durumu:\n" -" DESEN bulunmadığı veya geçersiz bir seçenek verilmediğinde başarılı " -"döner." +" DİZGİ bulunmadığı veya geçersiz bir seçenek verilmediğinde başarılı döner." #: builtins.c:842 #, fuzzy +#| msgid "" +#| "Display or manipulate the history list.\n" +#| " \n" +#| " Display the history list with line numbers, prefixing each modified\n" +#| " entry with a `*'. An argument of N lists only the last N entries.\n" +#| " \n" +#| " Options:\n" +#| " -c\tclear the history list by deleting all of the entries\n" +#| " -d offset\tdelete the history entry at position OFFSET.\n" +#| " \n" +#| " -a\tappend history lines from this session to the history file\n" +#| " -n\tread all history lines not already read from the history file\n" +#| " \t\tand append them to the history list\n" +#| " -r\tread the history file and append the contents to the history\n" +#| " \t\tlist\n" +#| " -w\twrite the current history to the history file\n" +#| " \n" +#| " -p\tperform history expansion on each ARG and display the result\n" +#| " \t\twithout storing it in the history list\n" +#| " -s\tappend the ARGs to the history list as a single entry\n" +#| " \n" +#| " If FILENAME is given, it is used as the history file. Otherwise,\n" +#| " if HISTFILE has a value, that is used, else ~/.bash_history.\n" +#| " \n" +#| " If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +#| " as a format string for strftime(3) to print the time stamp associated\n" +#| " with each displayed history entry. No time stamps are printed otherwise.\n" +#| " \n" +#| " Exit Status:\n" +#| " Returns success unless an invalid option is given or an error occurs." msgid "" "Display or manipulate the history list.\n" " \n" @@ -3644,8 +3624,7 @@ msgid "" " \n" " If the HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed " -"otherwise.\n" +" with each displayed history entry. No time stamps are printed otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." @@ -3654,7 +3633,7 @@ msgstr "" " \n" " Seçeneksiz kullanıldığında komut geçmişi listesini satır numaraları ile\n" " gösterir. Değişiklik yapılmış satırlarda numaralardan önce bir `*'\n" -" vardır. Argüman olarak N belirtildiğinde sadece son N satır listelenir.\n" +" vardır. Argüman olarak N belirtildiğinde yalnızca son N satır listelenir.\n" " \n" " Seçenekler:\n" " -c\tkomut geçmişi listesini tüm girdilerini silerek temizler.\n" @@ -3671,16 +3650,15 @@ msgstr "" " \tdepolamadan görüntüle\n" " -s\tARGümanları geçmiş listesine tek bir girdi olarak ekle\n" " \n" -" DOSYAİSMİ verilmezse, HISTFILE değişkenindeki değer, o da yoksa\n" +" DOSYAİSMİ verilmezse HISTFILE değişkenindeki değer, o da yoksa\n" " ~/.bash_history dosyası kullanılır.\n" " \n" " HISTTIMEFORMAT kabuk değişkeni tanımlanmış ve anlamlı bir değere\n" -" sahipse, değeri, gösterilen her geçmiş girdisi ile ilişkili zaman\n" +" sahipse değeri, gösterilen her geçmiş girdisi ile ilişkili zaman\n" " damgasını basacak olan strftime(3) işlevine biçim girdisi olur; aksi\n" " takdirde hiç zaman damgası basılmaz. \n" " Çıktı Durumu:\n" -" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde " -"başarılı döner." +" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde başarılı döner." #: builtins.c:879 msgid "" @@ -3711,22 +3689,20 @@ msgstr "" " Seçenekler olmadan, tüm etkin görev durumları görüntülenir.\n" " \n" " Seçenekler:\n" -" -l\tile normal bilgilere ek olarak süreç kimliklerini de (PID) " -"listele\n" -" -n\tile sadece kullanıcının durumları hakkında aldığı son uyarıdan\n" +" -l\tile normal bilgilere ek olarak süreç kimliklerini de (PID) listele\n" +" -n\tile yalnızca kullanıcının durumları hakkında aldığı son uyarıdan\n" " \t\tberi durumları değişen işler hakkında bilgi gösterir.\n" -" -p\tile işlerin sadece süreç kimliklerini listeler\n" -" -r\tile sadece çalışmakta olan,\n" -" -s\tile ise sadece durmuş olan işler listelenir.\n" +" -p\tile işlerin yalnızca süreç kimliklerini listeler\n" +" -r\tile yalnızca çalışmakta olan,\n" +" -s\tile ise yalnızca durmuş olan işler listelenir.\n" " \n" -" -x seçeneği verilmişse, ARGümanlar ile belirtilen tüm iş belirtimleri,\n" +" -x seçeneği verilmişse ARGümanlar ile belirtilen tüm iş belirtimleri,\n" " işlerin süreç grup liderinin süreç grup kimliğine yerleştirilip KOMUT\n" " çalıştırılır.\n" " \n" " Çıktı Durumu:\n" -" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde " -"başarılı döner.\n" -" -x kullanılmışsa, KOMUTun çıkış durumu döndürülür." +" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde başarılı döner.\n" +" -x kullanılmışsa KOMUTun çıkış durumu döndürülür." #: builtins.c:906 msgid "" @@ -3746,16 +3722,14 @@ msgid "" msgstr "" "Görevleri geçerli kabuktan kaldır.\n" " \n" -" Her İŞTANIMı argümanını etkin görevler tablosundan kaldırır. İŞTANIMı " -"olmadan,\n" +" Her İŞTANIMı argümanını etkin görevler tablosundan kaldırır. İŞTANIMı olmadan,\n" " kabuk geçerli görev kavramını kullanır.\n" " \n" " Seçenekler:\n" " -a\tİŞTANIMı belirtilmemişse tüm görevleri kaldır\n" -" -h\ther İŞTANIMını işaretle, böylece kabul bir SIGHUP aldığında göreve " -"SIGHUP\n" +" -h\ther İŞTANIMını işaretle, böylece kabul bir SIGHUP aldığında göreve SIGHUP\n" " \t\tgönderme\n" -" -r\tsadece çalışan görevleri kaldırremove \n" +" -r\tyalnızca çalışan görevleri kaldırremove \n" " \n" " Çıkış Durumu:\n" " Geçersiz bir seçenek veya İŞTANIMı girilmedikçe başarılı döner." @@ -3791,21 +3765,17 @@ msgstr "" " Seçenekler:\n" " -s sig\tSİNYAL bir sinyal\n" " -n sig\tSİNYAL bir sinyal numarası\n" -" -l\t-l seçeneği ile sinyal isimleri listelenir.\n" +" -l\t-l seçeneği ile sinyal adları listelenir.\n" " \t\tArgümanlı -l seçeneğinde argümanların listelenecek\n" -" sinyal isimlerinin numaraları olduğu varsayılır. \n" +" sinyal adlarının numaraları olduğu varsayılır. \n" " -L\t, -l anahtarının eş anlamlısıdır\n" -" Kill iki sebepten dolayı bir kabuk yerleşiğidir: süreç kimlikleri yerine " -"iş\n" -" kimliklerinin kullanımını mümkün kılar ve eğer oluşturabileceğiniz " -"süreç\n" -" sayısı sınırını aşarsanız başka bir süreci öldürecek bir süreci " -"başlatmak\n" +" Kill iki sebepten dolayı bir kabuk yerleşiğidir: süreç kimlikleri yerine iş\n" +" kimliklerinin kullanımını mümkün kılar ve eğer oluşturabileceğiniz süreç\n" +" sayısı sınırını aşarsanız başka bir süreci öldürecek bir süreci başlatmak\n" " zorunda kalmazsınız.\n" " \n" " Çıktı Durumu:\n" -" Geçersiz bir seçenek belirtilmediği veya bir hata oluşmadığında başarılı " -"döner." +" Geçersiz bir seçenek belirtilmediği veya bir hata oluşmadığında başarılı döner." #: builtins.c:949 msgid "" @@ -3814,8 +3784,7 @@ msgid "" " Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" " fixed-width integers with no check for overflow, though division by 0\n" " is trapped and flagged as an error. The following list of operators is\n" -" grouped into levels of equal-precedence operators. The levels are " -"listed\n" +" grouped into levels of equal-precedence operators. The levels are listed\n" " in order of decreasing precedence.\n" " \n" " \tid++, id--\tvariable post-increment, post-decrement\n" @@ -3882,8 +3851,8 @@ msgstr "" " \t&=, ^=, |=\tatamalar\n" " \n" " Kabuk değişkenleri terim olarak kullanılabilir. İfade içinde değişken\n" -" ismi değeriyle değiştirilir (sabit genişlikli tamsayıya zorlanır).\n" -" Bir kabuk değişkeni ifade içinde kullanılırken tamsayı niteliğinin\n" +" adı değeriyle değiştirilir (sabit genişlikli tamsayıya zorlanır).\n" +" Bir kabuk değişkeni ifade içinde kullanılırken tamsayı niteliğinin\n" " etkinleştirilmesini gerektirmez.\n" " \n" " İşleçler öncelik sırasına göre değerlendirilir. Parantez içine alınmış\n" @@ -3898,16 +3867,13 @@ msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with " -"word\n" +" if the -u option is supplied. The line is split into fields as with word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as " -"word\n" +" the last NAME. Only the characters found in $IFS are recognized as word\n" " delimiters.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY " -"variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -3919,8 +3885,7 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" " \t\tNCHARS characters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, " -"unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" " \t\tEOF is encountered or read times out, ignoring any\n" " \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" @@ -3938,10 +3903,8 @@ msgid "" " -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times " -"out\n" -" (in which case it's greater than 128), a variable assignment error " -"occurs,\n" +" The return code is zero, unless end-of-file is encountered, read times out\n" +" (in which case it's greater than 128), a variable assignment error occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" @@ -3956,14 +3919,14 @@ msgid "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -"Bir kabuk fonksiyonundan dön.\n" +"Bir kabuk işlevinden dön.\n" " \n" -" Bir fonksiyon veya kaynak betiğinin N ile belirtilen dönüş değeri ile\n" -" çıkmasına neden olur. N girilmezse, dönüş durumu fonksiyon veya\n" +" Bir işlev veya kaynak betiğinin N ile belirtilen dönüş değeri ile\n" +" çıkmasına neden olur. N girilmezse dönüş durumu işlev veya\n" " betikte çalıştırılmış en son komutun dönüş durumudur.\n" " \n" " Çıkış Durumu:\n" -" N veya kabul bir fonksiyon ya da betik çalıştırmıyorsa başarısız döner." +" N veya kabul bir işlev veya betik çalıştırmıyorsa başarısız döner." #: builtins.c:1054 msgid "" @@ -4008,8 +3971,7 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero " -"status\n" +" or zero if no command exited with a non-zero status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -4033,8 +3995,7 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG and RETURN traps are inherited by shell " -"functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -4053,24 +4014,21 @@ msgstr "" "Kabuk seçenekleri ve konumsal parametrelerin değerlerini ata veya kaldır\n" " \n" " Kabuk nitelikleri veya konumsal parametre değerlerini değiştir veya\n" -" kabuk değişkenlerinin isim ve değerlerini görüntüle.\n" +" kabuk değişkenlerinin ad ve değerlerini görüntüle.\n" " \n" " Seçenekler:\n" " -a Müteakip komutların ortamına aktarılmak üzere değiştirilen veya\n" " oluşturulan işlev ve değişkenleri imler.\n" -" -b Sonlandırılan artalan işlerin durumunun anında raporlanmasını " -"sağlar.\n" -" -e Bir komut sıfırdan farklı bir çıkış durumu ile çıkarsa anında " -"çıkar.\n" -" -f Dosya ismi üretimini (globbing) iptal eder.\n" -" -h Çalıştırmak için aranan komutları bulur ve yerlerini hatırlar " -"(hash).\n" -" -k Atama deyimleri şeklindeki tüm argümanları komut isminden önce\n" +" -b Sonlandırılan artalan işlerin durumunun anında raporlanmasını sağlar.\n" +" -e Bir komut sıfırdan farklı bir çıkış durumu ile çıkarsa anında çıkar.\n" +" -f Dosya adı üretimini (globbing) iptal eder.\n" +" -h Çalıştırmak için aranan komutları bulur ve yerlerini hatırlar (hash).\n" +" -k Atama deyimleri şeklindeki tüm argümanları komut adından önce\n" " belirtmek yerine ortama yerleştirir.\n" " -m İş denetimi etkinleştirilir.\n" " -n Komutları okur ama onları çalıştırmaz.\n" -" -o seçenek-ismi\n" -" seçenek-ismi olarak aşağıdakilerden biri verildiğinde karşılığı\n" +" -o seçenek-adı\n" +" seçenek-adı olarak aşağıdakilerden biri verildiğinde karşılığı\n" " olan seçenekler kullanılmış olur:\n" " allexport -a ile aynı\n" " braceexpand -B ile aynı\n" @@ -4090,36 +4048,28 @@ msgstr "" " noclobber -C ile aynı\n" " noexec -n ile aynı\n" " noglob -f ile aynı\n" -" nolog o an kabul edilir ama yoksayılır\n" +" nolog o an kabul edilir ama yok sayılır\n" " notify -b ile aynı\n" " nounset -u ile aynı\n" " onecmd -t ile aynı\n" " physical -P ile aynı\n" -" pipefail bir boruhattının dönüş değeri ya sıfırdan farklı " -"bir\n" -" durumla çıkan son (en sağdaki) komutun değeridir " -"ya\n" -" da boruhattındaki tüm komutlar başarılıysa " -"sıfırdır\n" -" posix Standart uyumu için POSIX 1003.2 " -"standardındakinden\n" -" farklı öntanımlı işlemde Bash davranışını " -"değiştirir\n" +" pipefail bir boru hattının dönüş değeri ya sıfırdan farklı bir\n" +" durumla çıkan son (en sağdaki) komutun değeridir ya\n" +" da boru hattındaki tüm komutlar başarılıysa sıfırdır\n" +" posix Standart uyumu için POSIX 1003.2 standardındakinden\n" +" farklı öntanımlı işlemde Bash davranışını değiştirir\n" " privileged -p ile aynı\n" " verbose -v ile aynı\n" " vi vi tarzı bir satır düzenleme arayüzü kullanılır\n" " xtrace -x ile aynı\n" -" -p Ayrıcalıklı kipi etkinleştirir. Bu kipte, $BASH_ENV ve $ENV " -"dosyaları\n" +" -p Ayrıcalıklı kipi etkinleştirir. Bu kipte, $BASH_ENV ve $ENV dosyaları\n" " işlenmez, kabuk işlevleri ortamdan miras alınmaz. Kabuk, gerçek\n" " kullanıcı (grup) kimliği ile aynı olmayan etkin kullanıcı (grup)\n" " kimliği ile başlatılmışsa ve -p seçeneği verilmemişse, bu eylemler\n" " alınır ve etkin kullanıcı (grup) kimliği, gerçek kullanıcı (grup)\n" " kimliğine ayarlanır. Başlatırken -p seçeneği verilmişse, etkin\n" -" kullanıcı (grup) kimliği sıfırlanmaz. Bu seçeneğin kapatılması " -"etkin\n" -" kullanıcı ve grup kimliklerinin gerçek kullanıcı ve grup " -"kimliklerine\n" +" kullanıcı (grup) kimliği sıfırlanmaz. Bu seçeneğin kapatılması etkin\n" +" kullanıcı ve grup kimliklerinin gerçek kullanıcı ve grup kimliklerine\n" " ayarlanmasına sebep olur.\n" " -t Tek bir komutu okuyup çalıştırdıktan sonra çıkar..\n" " -u Parametre yorumlaması uygulanırken bir hata sonucu değişkenlerin\n" @@ -4137,7 +4087,7 @@ msgstr "" " -T Etkinse DEBUG ve RETURN üstündeki tuzaklar kabuk işlevlerince\n" " miras alınır.\n" " -- Geri kalan argümanları konumsal parametrelere ata. Eğer kalan\n" -" argüman yoksa, konumsal parametrelerin ataması kaldırılır.\n" +" argüman yoksa konumsal parametrelerin ataması kaldırılır.\n" " - Seçeneklerin sonunu belirtir. Kalan tüm argümanlar konumsal\n" " parametrelere ayarlanır. -x ve -v seçenekleri kapatılır.\n" "\n" @@ -4162,8 +4112,7 @@ msgid "" " -n\ttreat each NAME as a name reference and unset the variable itself\n" " \t\trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that " -"fails,\n" +" Without options, unset first tries to unset a variable, and if that fails,\n" " tries to unset a function.\n" " \n" " Some variables cannot be unset; also see `readonly'.\n" @@ -4177,8 +4126,7 @@ msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before " -"exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -4240,9 +4188,8 @@ msgstr "" " \n" " DOSYAİSMİndeki komutlar okunur ve çalıştırılır. DOSYAİSMİ içermiyorsa\n" " DOSYAİSMİnin yerini bulmak için $PATH değişkeni kullanılır. Bash POSIX\n" -" kipinde değilse ve $PATH içinde DOSYAİSMİ yoksa bulunulan dizine " -"bakılır.\n" -" Verilmiş ARGÜMANlar varsa, DOSYAİSMİ çalıştırılırken bunlar konumsal\n" +" kipinde değilse ve $PATH içinde DOSYAİSMİ yoksa bulunulan dizine bakılır.\n" +" Verilmiş ARGÜMANlar varsa DOSYAİSMİ çalıştırılırken bunlar konumsal\n" " parametreler haline gelir. Aksi takdirde, konumsal parametreler\n" " değiştirilmez.\n" " \n" @@ -4298,8 +4245,7 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last " -"read.\n" +" -N FILE True if the file has been modified since it was last read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -4320,8 +4266,7 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 " -"lexicographically.\n" +" True if STRING1 sorts before STRING2 lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -4348,10 +4293,10 @@ msgid "" msgstr "" "Koşullu ifade değerlendir.\n" " \n" -" İFADEnin değerlendirilmesine bağlı olarak 0 (doğru) veya 1 (yanlış)\n" -" durumu ile çıkar. İfadeler tek terimli ya da iki terimli olabilir.\n" -" Tek terimli ifadeler çoğunlukla bir dosyanın durumunu saptamakta\n" -" kullanılır. Dizge işleçleri ve sayısal karşılaştırma işleçleri de\n" +" İFADE'nin değerlendirilmesine bağlı olarak 0 (doğru) veya 1 (yanlış)\n" +" durumu ile çıkar. İfadeler tek terimli veya iki terimli olabilir.\n" +" Tek terimli ifadeler çoğunlukla bir dosyanın durumunu saptamakta\n" +" kullanılır. Dizi işleçleri ve sayısal karşılaştırma işleçleri de\n" " vardır.\n" " \n" " Dosya işleçleri:\n" @@ -4366,7 +4311,7 @@ msgstr "" " -h DOSYA DOSYA varsa ve bir sembolik bağ ise doğrudur.\n" " -L DOSYA DOSYA varsa ve bir sembolik bağ ise doğrudur.\n" " -k DOSYA DOSYA dosya varsa ve yapışkan biti 1 ise doğrudur.\n" -" -p DOSYA DOSYA varsa ve bir isimli boru (FIFO) ise doğrudur.\n" +" -p DOSYA DOSYA varsa ve bir adlı boru (FIFO) ise doğrudur.\n" " -r DOSYA DOSYA varsa ve okuyabiliyorsanız doğrudur.\n" " -s DOSYA DOSYA varsa ve uzunluğu sıfırdan büyükse doğrudur.\n" " -S DOSYA DOSYA varsa ve bir soketse doğrudur.\n" @@ -4379,51 +4324,47 @@ msgstr "" " -N DOSYA DOSYA varsa ve son okunduğundan beri değiştirilmişse\n" " doğrudur.\n" " \n" -" DOSYA1 -nt DOSYA2 dosya1, dosya2'den değişiklik tarihine göre\n" -" daha yeni ise ya da dosya1 mevcutken dosya2 yoksa\n" -" doğrudur.\n" +" DOSYA1 -nt DOSYA2 dosya1, dosya2'den değişiklik tarihine göre\n" +" daha yeni ise veya dosya1 mevcutken dosya2 yoksa\n" +" doğrudur.\n" " \n" -" DOSYA1 -ot DOSYA2 dosya1, dosya2 den daha eski ise ya da dosya2\n" -" mevcutken dosya1 yoksa doğrudur.\n" +" DOSYA1 -ot DOSYA2 dosya1, dosya2 den daha eski ise veya dosya2\n" +" mevcutken dosya1 yoksa doğrudur.\n" " \n" -" DOSYA1 -ef DOSYA2 dosya1 ile dosya2 aynı aygıt ve aynı dosya " -"düğümünü\n" -" gösteriyorsa (ona sabit bağ ise) doğrudur.\n" +" DOSYA1 -ef DOSYA2 dosya1 ile dosya2 aynı aygıt ve aynı dosya düğümünü\n" +" gösteriyorsa (ona sabit bağ ise) doğrudur.\n" " \n" -" Dizge işleçleri:\n" +" Dizi işleçleri:\n" " \n" -" -z DİZGE dizge uzunluğu sıfırsa doğrudur.\n" +" -z dizi uzunluğu sıfırsa doğrudur.\n" " \n" -" -n DİZGE\n" -" DİZGE dizge uzunluğu sıfırdan farklıysa doğrudur.\n" +" -n \n" +" dizi uzunluğu sıfırdan farklıysa doğrudur.\n" " \n" -" DİZGE1 = DİZGE2 dizgeler aynıysa doğrudur.\n" -" DİZGE1 != DİZGE2 dizgeler aynı değilse doğrudur.\n" -" DİZGE1 < DİZGE2 dizge1 yerele göre sıralamada dizge2'den\n" +" 1 = DİZİ2 diziler aynıysa doğrudur.\n" +" 1 != DİZİ2 diziler aynı değilse doğrudur.\n" +" 1 < DİZİ2 dizi1 yerele göre sıralamada dizi2'den\n" " önceyse doğrudur.\n" -" DİZGE1 > DİZGE2 dizge1 yerele göre sıralamada dizge2'den\n" +" 1 > DİZİ2 dizi1 yerele göre sıralamada dizi2'den\n" " sonraysa doğrudur.\n" " \n" " Diğer işleçler:\n" " \n" " -o SEÇENEK Kabuk seçeneği SEÇENEK etkinse doğrudur.\n" " -v DEĞŞ Kabuk DEĞŞ ayarlanmış ise true.\n" -" -R DEĞŞ Kabuk DEĞŞ ayarlanmış ve bir isim referansı ise true\n" +" -R DEĞŞ Kabuk DEĞŞ ayarlanmış ve bir ad referansı ise true\n" " ! İFADE İFADE yanlışsa doğrudur.\n" " İFADE1 -a İFADE2 İFADE1 ve İFADE2 her ikisi de doğruysa doğrudur.\n" " İFADE1 -o İFADE2 İFADE1 veya İFADE2 doğruysa doğrudur.\n" " \n" -" arg1 İM arg2 Aritmetik sınamalar. İM bunlardan biri " -"olmalıdır:\n" +" arg1 İM arg2 Aritmetik sınamalar. İM bunlardan biri olmalıdır:\n" " -eq, -ne, -lt, -le, -gt veya -ge.\n" " \n" -" Bir aritmetik ifadede ARG1 ve ARG2 arasında, aranan eşitlik, " -"eşitsizlik,\n" +" Bir aritmetik ifadede ARG1 ve ARG2 arasında, aranan eşitlik, eşitsizlik,\n" " küçüklük, büyüklük, küçüklük veya eşitlik, büyüklük veya eşitlik varsa\n" " ifadenin sonucu doğrudur. \n" " Çıktı Durumu:\n" -" Eğer İFADE true olursa başarılı, İFADE false ile sonuçlanırsa veya " -"geçersiz\n" +" Eğer İFADE true olursa başarılı, İFADE false ile sonuçlanırsa veya geçersiz\n" " argümanda başarısız döner." #: builtins.c:1343 @@ -4442,8 +4383,7 @@ msgstr "" msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of " -"its\n" +" Prints the accumulated user and system times for the shell and all of its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4462,8 +4402,7 @@ msgstr "" msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives " -"signals\n" +" Defines and activates handlers to be run when the shell receives signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -4472,49 +4411,41 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " -"If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " -"If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " -"a\n" -" script run by the . or source builtins finishes executing. A " -"SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause " -"the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" +" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands " -"associated\n" +" If no arguments are supplied, trap prints the list of commands associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal " -"number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is " -"given." +" Returns success unless a SIGSPEC is invalid or an invalid option is given." msgstr "" "\rtrap [-lp] [ARG SİNYAL ...]\n" " ARGüman içindeki komutlar, kabuk SİNYAL sinyalini aldığında okunur ve\n" -" çalıştırılır. ARGüman verilmezse (ve tek bir SİNYAL varsa) ya da `-'\n" -" verilirse, belirtilen tüm sinyallere kabuk başlatıldığındaki değerleri\n" -" yerleştirilir. ARGüman bir boş dizge ise her SİNYAL sinyali kabuk ve\n" -" onu çağıran komutlar tarafından yoksayılır. Eğer SİNYAL 0 ya da EXIT\n" +" çalıştırılır. ARGüman verilmezse (ve tek bir SİNYAL varsa) veya `-'\n" +" verilirse belirtilen tüm sinyallere kabuk başlatıldığındaki değerleri\n" +" yerleştirilir. ARGüman bir boş dizi ise her SİNYAL sinyali kabuk ve\n" +" onu çağıran komutlar tarafından yok sayılır. Eğer SİNYAL 0 veya EXIT\n" " ise ARGüman kabuk çıkarken çalıştırılır. Eğer SİNYAL olarak DEBUG\n" -" verilmişse, ARGüman komutu her basit komuttan önce çalıştırılır. -p\n" +" verilmişse ARGüman komutu her basit komuttan önce çalıştırılır. -p\n" " seçeneği verilmişse trap, her SİNYAL ile ilişkili trap komutlarını\n" -" gösterir. Hiç ARGüman verilmemişse veya sadece -p verilmişse, trap\n" +" gösterir. Hiç ARGüman verilmemişse veya yalnızca -p verilmişse trap\n" " her SİNYAL ile ilişkili komutların listesini basar. Her SİNYAL ya\n" -" dosyasındaki bir sinyal ismi ya da bir sinyal numarası\n" -" olarak verilmelidir. Sinyal isimleri harf büyüklüğüne duyarsızdır ve\n" -" SIG öneki isteğe bağlıdır. -l seçeneği kabuğun sinyal isimlerini\n" +" dosyasındaki bir sinyal adı veya bir sinyal numarası\n" +" olarak verilmelidir. Sinyal adları harf büyüklüğüne duyarsızdır ve\n" +" SIG öneki isteğe bağlıdır. -l seçeneği kabuğun sinyal adlarını\n" " numaraları ile birlikte listelemesini sağlar. Kabuğa bir sinyal\n" " göndermek isterseniz \"kill -SİGNAL $$\" sözdizimini kullanabilirsiniz." @@ -4544,17 +4475,60 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not " -"found." +" Returns success if all of the NAMEs are found; fails if any are not found." msgstr "" #: builtins.c:1431 #, fuzzy +#| msgid "" +#| "Modify shell resource limits.\n" +#| " \n" +#| " Provides control over the resources available to the shell and processes\n" +#| " it creates, on systems that allow such control.\n" +#| " \n" +#| " Options:\n" +#| " -S\tuse the `soft' resource limit\n" +#| " -H\tuse the `hard' resource limit\n" +#| " -a\tall current limits are reported\n" +#| " -b\tthe socket buffer size\n" +#| " -c\tthe maximum size of core files created\n" +#| " -d\tthe maximum size of a process's data segment\n" +#| " -e\tthe maximum scheduling priority (`nice')\n" +#| " -f\tthe maximum size of files written by the shell and its children\n" +#| " -i\tthe maximum number of pending signals\n" +#| " -k\tthe maximum number of kqueues allocated for this process\n" +#| " -l\tthe maximum size a process may lock into memory\n" +#| " -m\tthe maximum resident set size\n" +#| " -n\tthe maximum number of open file descriptors\n" +#| " -p\tthe pipe buffer size\n" +#| " -q\tthe maximum number of bytes in POSIX message queues\n" +#| " -r\tthe maximum real-time scheduling priority\n" +#| " -s\tthe maximum stack size\n" +#| " -t\tthe maximum amount of cpu time in seconds\n" +#| " -u\tthe maximum number of user processes\n" +#| " -v\tthe size of virtual memory\n" +#| " -x\tthe maximum number of file locks\n" +#| " -P\tthe maximum number of pseudoterminals\n" +#| " -T\tthe maximum number of threads\n" +#| " \n" +#| " Not all options are available on all platforms.\n" +#| " \n" +#| " If LIMIT is given, it is the new value of the specified resource; the\n" +#| " special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +#| " current soft limit, the current hard limit, and no limit, respectively.\n" +#| " Otherwise, the current value of the specified resource is printed. If\n" +#| " no option is given, then -f is assumed.\n" +#| " \n" +#| " Values are in 1024-byte increments, except for -t, which is in seconds,\n" +#| " -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +#| " number of processes.\n" +#| " \n" +#| " Exit Status:\n" +#| " Returns success unless an invalid option is supplied or an error occurs." msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and " -"processes\n" +" Provides control over the resources available to the shell and processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -4619,7 +4593,7 @@ msgstr "" " -p\tİletişim tüneli tamponunun boyu\n" " -q\tPOSIX ileti kuyruklarındaki azami bayt miktarı\n" " -r\tAzami anında çalıştırma zamanlaması önceliği\n" -" -s\tYığıtın azami boyu\n" +" -s\tYığının azami boyu\n" " -t\tİşlemci zamanının saniye cinsinden azami miktarı\n" " -u\tTek bir kullanıcının kullanabileceği azami süreç sayısı\n" " -v\tBir sürecin kullanabileceği sanal belleğin azami miktarı\n" @@ -4628,7 +4602,7 @@ msgstr "" " \n" " Tüm seçenekler tüm platformlarda kullanılabilir olmayabilir.\n" " \n" -" SINIR verilmişse, belirtilen özkaynağın yeni değeridir; özel sınır\n" +" SINIR verilmişse belirtilen özkaynağın yeni değeridir; özel sınır\n" " değerleri mevcut donanımsal sınır için `hard', mevcut yazılımsal sınır\n" " için `soft' ve sınırsız için `unlimited''dir. Aksi takdirde, belirtilen\n" " özkaynak için mevcut değer gösterilir. Hiç seçenek verilmezse -f\n" @@ -4638,8 +4612,7 @@ msgstr "" " için 512 baytlık blok sayısı olarak, -n ve -u için birimsiz, kalan\n" " seçenekler için 1024 baytlık blok sayısı olarak belirtilmelidir. \n" " Çıktı Durumu:\n" -" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde " -"başarılı döner." +" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde başarılı döner." #: builtins.c:1482 msgid "" @@ -4661,26 +4634,37 @@ msgstr "" #: builtins.c:1502 #, fuzzy +#| msgid "" +#| "Wait for job completion and return exit status.\n" +#| " \n" +#| " Waits for each process identified by an ID, which may be a process ID or a\n" +#| " job specification, and reports its termination status. If ID is not\n" +#| " given, waits for all currently active child processes, and the return\n" +#| " status is zero. If ID is a a job specification, waits for all processes\n" +#| " in that job's pipeline.\n" +#| " \n" +#| " If the -n option is supplied, waits for the next job to terminate and\n" +#| " returns its exit status.\n" +#| " \n" +#| " Exit Status:\n" +#| " Returns the status of the last ID; fails if ID is invalid or an invalid\n" +#| " option is given." msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for each process identified by an ID, which may be a process ID or " -"a\n" +" Waits for each process identified by an ID, which may be a process ID or a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" " status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" -" If the -n option is supplied, waits for a single job from the list of " -"IDs,\n" -" or, if no IDs are supplied, for the next job to complete and returns " -"its\n" +" If the -n option is supplied, waits for a single job from the list of IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns its\n" " exit status.\n" " \n" " If the -p option is supplied, the process or job identifier of the job\n" " for which the exit status is returned is assigned to the variable VAR\n" -" named by the option argument. The variable will be unset initially, " -"before\n" +" named by the option argument. The variable will be unset initially, before\n" " any assignment. This is useful only when the -n option is supplied.\n" " \n" " If the -f option is supplied, and job control is enabled, waits for the\n" @@ -4693,45 +4677,36 @@ msgid "" msgstr "" "Sürecin tamamlanmasını bekle ve çıkış durumunu döndür.\n" " \n" -" Belirtilen süreci bekler ve sonlandırma durumunu raporlar. Eğer ID " -"verilmemişse\n" -" geçerli tüm alt süreçler beklenir ve dönüş kodu sıfırdır. Eğer ID bir " -"görev tanımıysa\n" +" Belirtilen süreci bekler ve sonlandırma durumunu raporlar. Eğer ID verilmemişse\n" +" geçerli tüm alt süreçler beklenir ve dönüş kodu sıfırdır. Eğer ID bir görev tanımıysa\n" " görevin iletişim tünelindeki tüm süreçler beklenir.\n" " \n" -" -n seçeneği verilirse, sonraki görevin sonlanması beklenir ve çıkış " -"durumunı döndürür.\n" +" -n seçeneği verilirse sonraki görevin sonlanması beklenir ve çıkış durumunı döndürür.\n" " \n" " Çıkış Durumu:\n" -" Kimlik durumunu döndürür, kimlik geçersizse veya geçersiz bir seçenek " -"verilmişse\n" +" Kimlik durumunu döndürür, kimlik geçersizse veya geçersiz bir seçenek verilmişse\n" " başarısız olur." #: builtins.c:1533 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for each process specified by a PID and reports its termination " -"status.\n" +" Waits for each process specified by a PID and reports its termination status.\n" " If PID is not given, waits for all currently active child processes,\n" " and the return status is zero. PID must be a process ID.\n" " \n" " Exit Status:\n" -" Returns the status of the last PID; fails if PID is invalid or an " -"invalid\n" +" Returns the status of the last PID; fails if PID is invalid or an invalid\n" " option is given." msgstr "" "Sürecin tamamlanmasını bekle ve çıkış durumunu döndür.\n" " \n" -" PID tarafından belirtilen her süreci bekler ve sonlandırma durumunu " -"raporlar.\n" -" Eğer PID verilmemişse geçerli tüm alt süreçler beklenir ve dönüş kodu " -"sıfırdır.\n" +" PID tarafından belirtilen her süreci bekler ve sonlandırma durumunu raporlar.\n" +" Eğer PID verilmemişse geçerli tüm alt süreçler beklenir ve dönüş kodu sıfırdır.\n" " PID bir süreç kimliği olmalıdır.\n" " \n" " Çıkış Durumu:\n" -" Son PID'nin durumunu döndürür, PID geçersizse veya geçersiz bir seçenek " -"verilmişse\n" +" Son PID'nin durumunu döndürür, PID geçersizse veya geçersiz bir seçenek verilmişse\n" " başarısız olur." #: builtins.c:1548 @@ -4748,12 +4723,9 @@ msgid "" msgstr "" "Bir listedeki her üye için komut çalıştır.\n" " \n" -" `for' döngüsü bir öge listesindeki her üye için komut sırasını " -"çalıştırır.\n" -" Eğer `in KELİMELER ...;' belirtilmemişse `in \"$@\"' varsayılır. " -"KELİMELER\n" -" içerisindeki her eleman için, İSİM bu elemana atanır ve KOMUTLAR " -"çalıştırılır.\n" +" `for' döngüsü bir öge listesindeki her üye için komut sırasını çalıştırır.\n" +" Eğer `in SÖZCÜKLER ...;' belirtilmemişse `in \"$@\"' varsayılır. SÖZCÜKLER\n" +" içerisindeki her eleman için, AD bu elemana atanır ve KOMUTLAR çalıştırılır.\n" " \n" " Çıkış Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." @@ -4782,8 +4754,7 @@ msgstr "" " \t\tKOMUTLAR\n" " \t\t(( İFADE3 ))\n" " \tdone\n" -" İFADE1, İFADE2 ve İFADE3 aritmetik ifadelerdir. Eğer ifadelerden biri " -"yoksa\n" +" İFADE1, İFADE2 ve İFADE3 aritmetik ifadelerdir. Eğer ifadelerden biri yoksa\n" " 1'e değerlendirilmiş şekilde davranır.\n" " \n" " Çıkış Durumu:\n" @@ -4808,24 +4779,16 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Listeden kelimeleri seç ve komutları çalıştır.\n" -" \n" -" `SÖZ ...;' listesi yorumlanarak öğe listesi üretilir. Öğe " -"listesindeki\n" -" her öğenin başına bir numara eklenerek standart hataya çıktılanır. " -"Eğer\n" -" `in SÖZ ... ;' parçası verilmezse, in \"$@\"' verilmiş gibi konuma " -"bağlı\n" -" parametreler basılır ve standart girdide PS3 istemi ile girdi " -"beklenir.\n" -" Listede belirtilen numaralardan biri girdi olarak verilirse, o " -"konuma\n" -" bağlı SÖZcük ile AD eşleştirilir. Girdi satırı boş verilirse, " -"dosyasonu\n" -" okununcaya kadar komut istemi tekrarlanır. Listede belirtilenler " -"dışında\n" -" verilen her değer için AD null ile eşleştirilir. Okunan satır " -"$REPLY\n" +"Listeden sözcükleri seç ve komutları çalıştır.\n" +" \n" +" `SÖZ ...;' listesi yorumlanarak öğe listesi üretilir. Öğe listesindeki\n" +" her öğenin başına bir numara eklenerek standart hataya çıktılanır. Eğer\n" +" `in SÖZ ... ;' parçası verilmezse in \"$@\"' verilmiş gibi konuma bağlı\n" +" parametreler basılır ve standart girdide PS3 istemi ile girdi beklenir.\n" +" Listede belirtilen numaralardan biri girdi olarak verilirse o konuma\n" +" bağlı SÖZcük ile AD eşleştirilir. Girdi satırı boş verilirse dosyasonu\n" +" okununcaya kadar komut istemi yinelenir. Listede belirtilenler dışında\n" +" verilen her değer için AD null ile eşleştirilir. Okunan satır $REPLY\n" " değişkeninde tutulur. Her seçimden sonra bir break komutu ile\n" " sonlandırılıncaya kadar komutlar çalıştırılır.\n" " \n" @@ -4849,8 +4812,7 @@ msgid "" msgstr "" "Veriyolu çalıştırması tarafından harcanan zamanı bildir.\n" " \n" -" VERİYOLUnu çalıştır ve sonlandığında kullanıcı işlemci zamanı ile " -"sistem\n" +" VERİYOLUnu çalıştır ve sonlandığında kullanıcı işlemci zamanı ile sistem\n" " işlemci zamanını içeren gerçek zamanın bir özetini yazdır.\n" " \n" " Seçenekler:\n" @@ -4883,17 +4845,12 @@ msgstr "" msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then " -"the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " -"is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. " -"Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of " -"the\n" -" entire construct is the exit status of the last command executed, or " -"zero\n" +" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of the\n" +" entire construct is the exit status of the last command executed, or zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" @@ -4901,11 +4858,11 @@ msgid "" msgstr "" "Komutları şartlara göre çalıştırır.\n" " \n" -" `if KOMUTlar;' listesi çalıştırılır; çıkış durumu sıfırsa\n" -" `then KOMUTlar;' listesi çalıştırılır, değilse `elif KOMUTlar;'\n" -" listesi çalıştırılır; bunun çıkış durumu sıfırsa `then KOMUTlar;'\n" +" `if KOMUTLAR;' listesi çalıştırılır; çıkış durumu sıfırsa\n" +" `then KOMUTLAR;' listesi çalıştırılır, değilse `elif KOMUTLAR;'\n" +" listesi çalıştırılır; bunun çıkış durumu sıfırsa `then KOMUTLAR;'\n" " listesi çalıştırılır ve if komutu tamamlanır, değilse varsa\n" -" `else KOMUTlar;' listesi çalıştırılır ve if komutu tamamlanır.\n" +" `else KOMUTLAR;' listesi çalıştırılır ve if komutu tamamlanır.\n" " Oluşumun tamamının dönüş durumu çalıştırılmış olan son komutun\n" " çıkış durumudur. Bir komut çalıştırılmamışsa ve hiçbir koşul\n" " doğru sonuç vermemişse sıfır döner. Çıkış Durumu:\n" @@ -4941,8 +4898,8 @@ msgid "" msgstr "" "Bir sınama başarısız oluncaya kadar komutları çalıştır.\n" " \n" -" `until KOMUTlar; listesinin çıkış durumu sıfırdan farklı olduğu sürece\n" -" `do KOMUTlar;' listesi çalıştırılır.\n" +" `until KOMUTLAR; listesinin çıkış durumu sıfırdan farklı olduğu sürece\n" +" `do KOMUTLAR;' listesi çalıştırılır.\n" " \n" " Çıktı Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." @@ -4965,8 +4922,7 @@ msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is " -"invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" @@ -4986,7 +4942,7 @@ msgid "" msgstr "" "Komutları bir birim olarak grupla.\n" " \n" -" KOMUTlar bir grup olarak çalıştırılır. Bu, bir komut kümesini bir\n" +" KOMUTLAR bir grup olarak çalıştırılır. Bu, bir komut kümesini bir\n" " yönlendirmede kullanmanın tek yoludur.\n" " \n" " Çıktı Durumu:\n" @@ -5009,7 +4965,7 @@ msgstr "" " \n" " `fg' komutunu İŞ_BELİRTİMİ argümanı ile kullanmaya eşdeğerdir.\n" " Durmuş veya artalandaki bir işin önalanda sürdürülmesini sağlar.\n" -" İŞ_BELİRTİMİ bir iş ismi veya iş numarası olarak belirtilebilir.\n" +" İŞ_BELİRTİMİ bir iş adı veya iş numarası olarak belirtilebilir.\n" " İŞ_BELİRTİMİ'nden sonra bir & gelmesi işin `bg' komutununa argüman\n" " olarak kullanılmış gibi artalana yerleştirilmesine sebep olur.\n" " \n" @@ -5018,6 +4974,14 @@ msgstr "" #: builtins.c:1726 #, fuzzy +#| msgid "" +#| "Evaluate arithmetic expression.\n" +#| " \n" +#| " The EXPRESSION is evaluated according to the rules for arithmetic\n" +#| " evaluation. Equivalent to \"let EXPRESSION\".\n" +#| " \n" +#| " Exit Status:\n" +#| " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5039,12 +5003,9 @@ msgstr "" msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the " -"conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries " -"used\n" -" by the `test' builtin, and may be combined using the following " -"operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries used\n" +" by the `test' builtin, and may be combined using the following operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -5064,25 +5025,23 @@ msgid "" msgstr "" "Koşullu komut çalıştır.\n" " \n" -" Koşullu İFADEnin değerine bağlı olarak 0 ya da 1 durumu ile döner.\n" -" İfadeler test yerleşiği tarafından kullanılan aynı ilkelerle " -"oluşturulur\n" +" Koşullu İFADE'nin değerine bağlı olarak 0 veya 1 durumu ile döner.\n" +" İfadeler test yerleşiği tarafından kullanılan aynı ilkelerle oluşturulur\n" " ve aşağıdaki işleçler kullanılarak biraraya getirilebilirler:\n" "\n" -" ( İFADE ) İFADEnin değeri döner\n" +" ( İFADE ) İFADE'nin değeri döner\n" " ! İFADE İFADE yanlışsa doğru, doğruysa yanlıştır.\n" " İFADE1 && İFADE2 İFADE1 ve İFADE2 her ikisi de doğruysa doğrudur\n" " İFADE1 || İFADE2 İFADE1 veya İFADE2 doğruysa doğrudur\n" "\n" -" `==' ve `!=' işleçleri kullanıldığında, işlecin sağındaki dizge bir " -"kalıp\n" +" `==' ve `!=' işleçleri kullanıldığında, işlecin sağındaki dizi bir kalıp\n" " olarak ele alınır ve kalıp eşleştirmesi uygulanır. `=~' kullanıldığında\n" -" işlecin sağındaki dizge düzenli ifade olarak eşleştirilir. \n" -" İFADE1, ifadenin değeri için tek başına yeterli ise && ve || İFADE2'yi\n" -" çalıştırmaz.\n" -" \n" -" Çıkış Durumu:\n" -" İFADE değerine göre 0 veya 1." +" işlecin sağındaki dizi düzenli ifade olarak eşleştirilir.\n" +" İFADE1, ifadenin değeri için tek başına yeterli ise && ve || İFADE2'yi\n" +" çalıştırmaz.\n" +" \n" +" Çıkış Durumu:\n" +" İFADE değerine göre 0 veya 1." #: builtins.c:1764 msgid "" @@ -5142,44 +5101,44 @@ msgstr "" " BASH_VERSION\tBu Bash'in sürüm bilgisi.\n" " CDPATH\t`cd'ye argüman olarak verilecek dizinlerin aranacağı\n" " \t\tdizinlerin iki nokta imi ayraçlı listesi.\n" -" GLOBIGNORE\tDosyayolu yorumlaması tarafından yoksayılacak dosya\n" -" \t\tisimlerini belirten kalıpların ikinokta imi ayraçlı\n" +" GLOBIGNORE\tDosyayolu yorumlaması tarafından yok sayılacak dosya\n" +" \t\tadlarını belirten kalıpların ikinokta imi ayraçlı\n" " \t\tlistesi.\n" -" HISTFILE\tKomut geçmişinizin saklanacağı dosyanın ismi.\n" +" HISTFILE\tKomut geçmişinizin saklanacağı dosyanın adı.\n" " HISTFILESIZE\tBu dosyanın içerebileceği azami satır sayısı.\n" " HISTSIZE\tÇalışan bir kabuğun erişebileceği geçmiş satırlarının\n" " \t\tazami sayısı.\n" " HOME\tKullanıcının ev dizininin tam yolu.\n" -" HOSTNAME\tMakinenizin ağdaki konak ismi.\n" +" HOSTNAME\tMakinenizin ağdaki konak adı.\n" " HOSTTYPE\tBash'in bu sürümünün altında çalıştığı işlemcinin türü\n" " IGNOREEOF\tTek girdi olarak EOF karakteri alındığında kabuğun\n" -" \t\teylemini kontrol eder. Atandığında değeri, kabuk\n" +" \t\teylemini denetler. Atandığında değeri, kabuk\n" " \t\tçıkmadan önce bir girdi satırındaki ilk karakter\n" " \t\tolarak okunabilen ardışık EOF karakterlerinin sayısını\n" -" \t\tgösterir (öntanımlı 10). Eğer değişken mevcut değilse,\n" +" \t\tgösterir (öntanımlı 10). Eğer değişken mevcut değilse\n" " \t\tEOF girdi sonunu belirtir.\n" -" MACHTYPE\tBash'in üzerinde çalıştığı sistemi açıklayan dizge.\n" +" MACHTYPE\tBash'in üzerinde çalıştığı sistemi açıklayan dizi.\n" " MAILCHECK\tBash'in yeni postaya kaç saniyede bir bakacağı.\n" " MAILPATH\tBash'in yeni posta var mı diye bakacağı dosya\n" -" \t\tisimlerinin ikinokta imi ayraçlı listesi.\n" +" \t\tad ikinokta imi ayraçlı listesi.\n" " OSTYPE\tBash'in üzerinde çalıştığı çekirdeğin türü.\n" " PATH\tKomutları ararken bakılacak dizinlerin ikinokta imi\n" " \t\tayraçlı listesi.\n" " PROMPT_COMMAND\tBirincil komut istemi ($PS1) basılmadan önce\n" " \t\tçalıştırılacak komut\n" -" PS1\tBirincil komut istemi dizgesi.\n" -" PS2\tİkincil komut istemi dizgesi.\n" +" PS1\tBirincil komut istemi dizisi.\n" +" PS2\tİkincil komut istemi dizisi.\n" " PWD\tÇalışma dizininizin tam yolu.\n" " SHELLOPTS\tEtkin kabuk seçeneklerinin ikinokta imi ayraçlı listesi\n" -" TERM\tGeçerli uçbirim türünün ismi.\n" +" TERM\tGeçerli uçbirim türünün adı.\n" " TIMEFORMAT\ttime anahtar sözcüğü ile başlayan zamanlama bilgisinin\n" -" \t\tnasıl belirtileceğini gösteren biçim dizgesi.\n" -" auto_resume\tDeğerin boş olmaması durmuş işin isminin onu\n" +" \t\tnasıl belirtileceğini gösteren biçim dizisi.\n" +" auto_resume\tDeğerin boş olmaması durmuş işin adının onu\n" " \t\tbaşlatmakta kullanılan komut satırı olduğudur ve\n" " \t\toradaysa iş önalana alınır. `exact' değeri, komut\n" " \t\tsözcüğünün durmuş işler listesindeki komutla tam\n" " \t\tolarak eşleşmesi gerektiği anlamına gelir. `substring'\n" -" \t\tdeğeri, komut sözcüğünün işin bir altdizgesi ile\n" +" \t\tdeğeri, komut sözcüğünün işin bir altdizisi ile\n" " \t\teşleşmesi gerektiğini belirtir. Bunlar dışında bir\n" " \t\tdeğer komutun durmuş bir işe önek olması gerektiği\n" " \t\tanlamına gelir.\n" @@ -5189,7 +5148,7 @@ msgstr "" " \t\tyorumlama karakteridir ve normalde ! işaretidir.\n" " \t\tİkinci karakter, bir satırdaki ilk karakter olduğunda\n" " \t\t`hızlı ikame'yi imleyen karakterdir ve normalde ^\n" -" \t\timidir. İstemlik olan üçüncü karakter ise, bir\n" +" \t\timidir. İstemlik olan üçüncü karakter ise bir\n" " \t\tsözcüğün ilk karakteri olarak bulunduğunda satırın\n" " \t\tkalanının açıklama olmasını sağlayan karakterdir ve\n" " \t\tnormalde # imidir.\n" @@ -5229,27 +5188,27 @@ msgid "" msgstr "" "Dizinleri yığına ekle.\n" " \n" -" Dizin yığıtının en üstüne bir dizin ekler, ya da geçerli çalışma\n" -" dizini yığıtın tepesine gelecek şekilde yığıtı döndürür. Hiç\n" +" Dizin yığınının en üstüne bir dizin ekler veya geçerli çalışma\n" +" dizini yığının tepesine gelecek şekilde yığını döndürür. Hiç\n" " argüman verilmemişse en üstteki iki dizini yer değiştirir.\n" " \n" " Seçenekler:\n" -" -n\tdizinleri yığıta eklerken normal dizin değişikliğini engeller,\n" -" \t\tböylece sadece yığıt değiştirilmiş olur.\n" +" -n\tdizinleri yığına eklerken normal dizin değişikliğini engeller,\n" +" \t\tböylece yalnızca yığın değiştirilmiş olur.\n" " \n" " Argümanlar:\n" " +N\t(`dirs' tarafından gösterilen listenin solundan saymaya\n" " \t\tsıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n" -" \t\tyığıtı döndürür.\n" +" \t\tyığını döndürür.\n" " \n" " -N\t(`dirs' tarafından gösterilen listenin sağından saymaya\n" " \t\tsıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n" -" \t\tyığıtı döndürür.\n" +" \t\tyığını döndürür.\n" " \n" -" dizin\tDİZİNi yeni çalışma dizini yaparak dizin yığıtının\n" +" dizin\tDİZİNi yeni çalışma dizini yaparak dizin yığınının\n" " \t\ttepesine ekler.\n" " \n" -" Dizin yığıtını `dirs' komutuyla görebilirsiniz.\n" +" Dizin yığınını `dirs' komutuyla görebilirsiniz.\n" " \n" " Çıkış Durumu:\n" " Geçersiz bir argüman belirtilmediği veya dizin değişikliği başarısız\n" @@ -5281,15 +5240,15 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" -"Dizin yığıtından girdileri sil.\n" +"Dizin yığınından girdileri sil.\n" " \n" -" Dizin yığıtından girdileri siler. Hiç argüman verilmemişse,\n" -" yığıtın en üstündeki dizini yığıttan kaldırır ve yığıtın\n" +" Dizin yığınından girdileri siler. Hiç argüman verilmemişse\n" +" yığının en üstündeki dizini yığından kaldırır ve yığının\n" " tepesinde kalan dizine geçer. \n" " \n" " Seçenekler:\n" -" -n\tdizinleri yığıttan silerken normal dizin değişikliğini\n" -" \t\tengeller, böylece sadece yığıt değiştirilmiş olur. \n" +" -n\tdizinleri yığından silerken normal dizin değişikliğini\n" +" \t\tengeller, böylece yalnızca yığın değiştirilmiş olur. \n" " \n" " Argümanlar:\n" " +N\t\t`dirs' tarafından gösterilen listenin solundan saymaya\n" @@ -5300,7 +5259,7 @@ msgstr "" " \t\tsıfırla başlandığında N'inci girdiyi siler. Örneğin,\n" " \t\t`popd -0' son dizini `popd -1' sonuncudan öncekini siler. \n" " \n" -" Dizin yığıtını `dirs' komutuyla görebilirsiniz. \n" +" Dizin yığınını `dirs' komutuyla görebilirsiniz.\n" " Çıkış Durumu:\n" " Geçersiz bir argüman belirtilmediği veya dizin değişikliği başarısız\n" " olmadıkça başarılı döner." @@ -5333,18 +5292,18 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -"Dizin yığıtını görüntüle.\n" +"Dizin yığınını görüntüle.\n" " \n" " O an anımsanan dizinleri listeler. Dizinler listeye `pushd'\n" " komutuyla eklenir; listeden tek tek geri almak içinse `popd'\n" " komutu kullanılır.\n" " \n" " Seçenekler:\n" -" -c\ttüm girdileri silerek dizin yığıtını boşaltır.\n" +" -c\ttüm girdileri silerek dizin yığınını boşaltır.\n" " -l\t`dirs'in dizinleri ev dizininize göreli kısayollar\n" " \t\tolarak göstermemesine yol açar.\n" -" -p\tyığıttaki konumu göstermemesi dışında aynı çıktıyı verir.\n" -" -v\t`dirs'in dizin yığıtını dizin adının önüne yığıt konumunu\n" +" -p\tyığıntaki konumu göstermemesi dışında aynı çıktıyı verir.\n" +" -v\t`dirs'in dizin yığınını dizin adının önüne yığın konumunu\n" " \t\tekleyerek her satırda bir girdi göstermesini sağlar.\n" " \n" " Argümanlar:\n" @@ -5356,8 +5315,7 @@ msgstr "" " \t\tsıfırla başlayarak sayılan N'inci girdiyi gösterir.\n" " \n" " Çıkış Durumu:\n" -" Geçersiz seçenek belirtilmediği veya bir hata oluşmadığı sürece başarılı " -"döner." +" Geçersiz seçenek belirtilmediği veya bir hata oluşmadığı sürece başarılı döner." #: builtins.c:1916 msgid "" @@ -5387,80 +5345,63 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: " -"plain\n" -" characters, which are simply copied to standard output; character " -"escape\n" +" FORMAT is a character string which contains three types of objects: plain\n" +" characters, which are simply copied to standard output; character escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next " -"successive\n" +" format specifications, each of which causes printing of the next successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T\toutput the date-time string resulting from using FMT as a " -"format\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" -" specifications behave as if a zero value or null string, as " -"appropriate,\n" +" specifications behave as if a zero value or null string, as appropriate,\n" " had been supplied.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or " -"assignment\n" +" Returns success unless an invalid option is given or a write or assignment\n" " error occurs." msgstr "" -"BİÇİMin denetimi altında ARGümanları standart çıktıya biçimleyerek " -"yazar\n" +"BİÇİM'in denetimi altında ARGÜMAN'ları biçimleyerek yazdırır\n" " \n" " Seçenekler:\n" " -v değişken\tseçeneği çıktının standart çıktıya\n" -" \t\tbasılması yerine DEĞİŞKENe atanmasını sağlar.\n" +" \t\t\tbasılması yerine DEĞİŞKEN'e atanmasını sağlar.\n" " \n" -" BİÇİM üç tür nesne içeren bir dizgedir: salt karakterler\n" -" basitçe standart çıktıya kopyalanır, öncelenmiş karakterler\n" -" dönüştürülüp standart çıktıya kopyalanır ve biçim belirtimleri;\n" -" belirtimlerin her biri sırayla karşı düşen ARGümanların basılmasını\n" -" sağlar.\n" +" BİÇİM, üç tür nesne içeren bir dizidir: Salt karakterler basitçe\n" +" standart çıktıya kopyalanır, öncelenmiş karakterler dönüştürülüp\n" +" standart çıktıya kopyalanır ve biçim belirtimleri; belirtimlerin\n" +" her biri sırayla karşı düşen argümanların basılmasını sağlar.\n" " \n" -" Standart printf(1) biçimlerine ek olarak, printf aşağıdakileri de " -"yorumlar:\n" +" Standart printf(1) biçimlerine ek olarak, printf şunları da yorumlar:\n" " \n" -" %b\ttersbölü öncelemeli karakterlerin karşı düşen ARGümanda " -"yorumlanmasını sağlar\n" -" %q\tARGümanın kabuk girdisi olarak kullanılabilecek biçimde " -"kullanılabilmesi\n" +" %b\ttersbölü öncelemeli karakterlerin karşı düşen argümanda yorumlar\n" +" %q\tagrgümanın kabuk girdisi olarak kullanılabilecek biçimde biçimler\n" " \t\tiçin alıntılar.\n" -" %(fmt)T\tstrftime(3) için bir biçim dizgesi olarak FMT tarafından " -"kullanılmak üzere\n" -" \t\ttarih zaman dizgesi çıktısısı verir\n" +" %(fmt)T\tstrftime(3) için bir biçim dizisi olarak FMT tarafından\n" +" \t\tkullanılmak üzere tarih zaman dizisi çıktısısı verir\n" " \n" -" Biçim argümanların tümünün kullanılabilmesi için gerektiğinde yeniden " -"kullanılır.\n" -" Biçimin gerektirdiğinden daha az argüman varsa, ek biçim tanımlamaları " -"uygun olduğu\n" -" şekilde sıfır değeri veya BOŞ (null) dizge değeri olarak davranırlar.\n" +" Biçim argümanların tümünün kullanılabilmesi için gerektiğinde yeniden\n" +" kullanılır. Biçimin gerektirdiğinden daha az argüman varsa ek biçim\n" +" tanımlamaları uygun olduğu şekilde sıfır değeri veya BOŞ (null) dizi\n" +" değeri olarak davranırlar.\n" " \n" " Çıkış Durumu:\n" -" Geçersiz bir seçenek belirtilmediği veya yazılmadığı takdirde ya da bir " -"atama\n" -" hatası oluşmadığı sürece başarılı döner." +" Geçersiz bir seçenek belirtilmediği veya yazılmadığı takdirde veya bir\n" +" atama hatası oluşmadığı sürece başarılı döner." #: builtins.c:1971 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no " -"options\n" -" are supplied, existing completion specifications are printed in a way " -"that\n" +" For each NAME, specify how arguments are to be completed. If no options\n" +" are supplied, existing completion specifications are printed in a way that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -5475,10 +5416,8 @@ msgid "" " \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. If multiple options are " -"supplied,\n" -" the -D option takes precedence over -E, and both take precedence over -" -"I.\n" +" uppercase-letter options are listed above. If multiple options are supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5489,8 +5428,7 @@ msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches " -"against\n" +" completions. If the optional WORD argument is supplied, matches against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -5500,22 +5438,18 @@ msgstr "" " \n" " Olası tamamlamaları üretmek üzere bir kabuk işlevinin içinde kullanmak\n" " amacıyla tasarlanmıştır. İsteğe bağlı SÖZCÜK argümanı sağlandığı\n" -" takdirde eşleşmelerden sadece SÖZCÜK ile eşleşenler üretilir.\n" +" takdirde eşleşmelerden yalnızca SÖZCÜK ile eşleşenler üretilir.\n" " \n" " Çıktı Durumu:\n" -" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde " -"başarılı döner." +" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde başarılı döner." #: builtins.c:2016 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are " -"supplied,\n" -" the completion currently being executed. If no OPTIONs are given, " -"print\n" -" the completion options for each NAME or the current completion " -"specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" +" the completion currently being executed. If no OPTIONs are given, print\n" +" the completion options for each NAME or the current completion specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -5542,22 +5476,17 @@ msgstr "" msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable " -"ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable " -"MAPFILE\n" +" Read lines from the standard input into the indexed array variable ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" " -d delim\tUse DELIM to terminate lines, instead of newline\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n" " -s count\tDiscard the first COUNT lines read\n" " -t\tRemove a trailing DELIM from each line read (default newline)\n" -" -u fd\tRead lines from file descriptor FD instead of the standard " -"input\n" +" -u fd\tRead lines from file descriptor FD instead of the standard input\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" " -c quantum\tSpecify the number of lines read between each call to\n" " \t\t\tCALLBACK\n" @@ -5570,13 +5499,11 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY " -"before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly " -"or\n" +" Returns success unless an invalid option is given or ARRAY is readonly or\n" " not an indexed array." msgstr "" @@ -5589,837 +5516,3 @@ msgstr "" "Bir dosyadaki satırları bir dizi değişkenine oku.\n" " \n" " `mapfile' ile eşanlamlıdır." - -#, fuzzy -#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." -#~ msgstr "Telif Hakkı (C) 2016 Özgür Yazılım Vakfı A.Ş." - -#~ msgid "" -#~ "Returns the context of the current subroutine call.\n" -#~ " \n" -#~ " Without EXPR, returns " -#~ msgstr "" -#~ "Geçerli altyordam çağrısının bağlamı döndürür.\n" -#~ " \n" -#~ " İFADE olmadan, şu döner " - -#~ msgid "add_process: process %5ld (%s) in the_pipeline" -#~ msgstr "add_process: %5ld (%s) süreci iletişim_tünelinde" - -#~ msgid "Unknown Signal #" -#~ msgstr "Bilinmeyen Sinyal #" - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -#~ msgid "times" -#~ msgstr "times" - -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Telif Hakkı (C) 2009 Free Software Foundation, Inc.\n" - -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Lisans GPLv2+: GNU GPL sürüm 2 veya sonrası \n" - -#~ msgid " " -#~ msgstr " " - -#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," -#~ msgstr "İFADE olmaksızın \"$line $filename\" döner. İFADE ile ise" - -#~ msgid "returns \"$line $subroutine $filename\"; this extra information" -#~ msgstr "\"$line $subroutine $filename\" döner; bu ek bilgi" - -#~ msgid "can be used used to provide a stack trace." -#~ msgstr "bir yığıt izini sürmek için kullanılabilir." - -#~ msgid "" -#~ "The value of EXPR indicates how many call frames to go back before the" -#~ msgstr "" -#~ "İFADE değeri şu ankinden önce kaç çağrı çerçevesinin geri döneceğini" - -#~ msgid "current one; the top frame is frame 0." -#~ msgstr "belirtir; tepe çerçeve 0. çerçevedir." - -#~ msgid "%s: invalid number" -#~ msgstr "%s: sayı geçersiz" - -#~ msgid "Shell commands matching keywords `" -#~ msgstr "Bu anahtar sözcüklere uygun kabuk komutları: `" - -#~ msgid "Display the list of currently remembered directories. Directories" -#~ msgstr "" -#~ "\rdirs [-clpv] [+N] [-N]\n" -#~ " O an anımsanan dizinleri listeler. Dizinler listeye" - -#~ msgid "find their way onto the list with the `pushd' command; you can get" -#~ msgstr "`pushd' komutuyla eklenir; listeden tek tek geri almak içinse" - -#~ msgid "back up through the list with the `popd' command." -#~ msgstr "`popd' komutu kullanılır." - -#~ msgid "" -#~ "The -l flag specifies that `dirs' should not print shorthand versions" -#~ msgstr "-l seçeneği `dirs'in dizinleri ev dizininize göreli kısayollar" - -#~ msgid "" -#~ "of directories which are relative to your home directory. This means" -#~ msgstr "" -#~ "olarak göstermemesine yol açar. Yani `~/bin' yerine `/homes/bfox/bin'" - -#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" -#~ msgstr "gibi bir gösterimle karşılaşabilirsiniz. -v seçeneği `dirs'in" - -#~ msgid "causes `dirs' to print the directory stack with one entry per line," -#~ msgstr "dizin yığıtını dizin adının önüne yığıt konumunu ekleyerek her" - -#~ msgid "" -#~ "prepending the directory name with its position in the stack. The -p" -#~ msgstr "satırda bir girdi göstermesini sağlar. -p seçeneği yığıttaki" - -#~ msgid "flag does the same thing, but the stack position is not prepended." -#~ msgstr "konumu göstermemesi dışında aynı çıktıyı verir." - -#~ msgid "" -#~ "The -c flag clears the directory stack by deleting all of the elements." -#~ msgstr "-c seçeneği tüm girdileri silerek dizin yığıtını boşaltır." - -#~ msgid "" -#~ "+N displays the Nth entry counting from the left of the list shown by" -#~ msgstr "+N dirs seçeneksiz çağrıldığında gösterdiği listenin solundan" - -#~ msgid " dirs when invoked without options, starting with zero." -#~ msgstr " sıfırla başlayarak sayılan N'inci girdiyi gösterir." - -#~ msgid "" -#~ "-N displays the Nth entry counting from the right of the list shown by" -#~ msgstr "-N dirs seçeneksiz çağrıldığında gösterdiği listenin sağından" - -#~ msgid "Adds a directory to the top of the directory stack, or rotates" -#~ msgstr "Dizin yığıtının en üstüne bir dizin ekler, ya da geçerli çalışma" - -#~ msgid "the stack, making the new top of the stack the current working" -#~ msgstr "dizini yığıtın tepesine gelecek şekilde yığıtı döndürür." - -#~ msgid "directory. With no arguments, exchanges the top two directories." -#~ msgstr "Hiç argüman verilmemişse en üstteki iki dizini yer değiştirir." - -#~ msgid "+N Rotates the stack so that the Nth directory (counting" -#~ msgstr "+N (`dirs' tarafından gösterilen listenin solundan saymaya" - -#~ msgid " from the left of the list shown by `dirs', starting with" -#~ msgstr " sıfırla başlandığında) N'inci dizin tepeye gelecek şekilde" - -#~ msgid " zero) is at the top." -#~ msgstr " yığıtı döndürür." - -#~ msgid "-N Rotates the stack so that the Nth directory (counting" -#~ msgstr "-N (`dirs' tarafından gösterilen listenin sağından saymaya" - -#~ msgid " from the right of the list shown by `dirs', starting with" -#~ msgstr " sıfırla başlandığında) N'inci dizin tepeye gelecek şekilde" - -#~ msgid "-n suppress the normal change of directory when adding directories" -#~ msgstr "+n dizinleri yığıta eklerken normal dizin değişikliğini engeller," - -#~ msgid " to the stack, so only the stack is manipulated." -#~ msgstr " böylece sadece yığıt değiştirilmiş olur." - -#~ msgid "dir adds DIR to the directory stack at the top, making it the" -#~ msgstr "dir DİZİNi yeni çalışma dizini yaparak dizin yığıtının" - -#~ msgid " new current working directory." -#~ msgstr " tepesine ekler." - -#~ msgid "You can see the directory stack with the `dirs' command." -#~ msgstr "Dizin yığıtını `dirs' komutuyla görebilirsiniz." - -#~ msgid "Removes entries from the directory stack. With no arguments," -#~ msgstr "Dizin yığıtından girdileri siler. Hiç argüman verilmemişse," - -#~ msgid "removes the top directory from the stack, and cd's to the new" -#~ msgstr "yığıtın en üstündeki dizini yığıttan kaldırır ve" - -#~ msgid "+N removes the Nth entry counting from the left of the list" -#~ msgstr "+N `dirs' tarafından gösterilen listenin solundan saymaya" - -#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" -#~ msgstr " sıfırla başlandığında N'inci girdiyi siler. Örneğin," - -#~ msgid " removes the first directory, `popd +1' the second." -#~ msgstr " `popd +0' ilk dizini `popd +1' ikincisini siler." - -#~ msgid "-N removes the Nth entry counting from the right of the list" -#~ msgstr "-N `dirs' tarafından gösterilen listenin sağından saymaya" - -#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" -#~ msgstr " sıfırla başlandığında N'inci girdiyi siler. Örneğin," - -#~ msgid " removes the last directory, `popd -1' the next to last." -#~ msgstr " `popd -0' son dizini `popd -1' sonuncudan öncekini siler." - -#~ msgid "" -#~ "-n suppress the normal change of directory when removing directories" -#~ msgstr "" -#~ "-n dizinleri yığıttan silerken normal dizin değişikliğini engeller," - -#~ msgid " from the stack, so only the stack is manipulated." -#~ msgstr " böylece sadece yığıt değiştirilmiş olur." - -#~ msgid "allocated" -#~ msgstr "ayrılmış" - -#~ msgid "freed" -#~ msgstr "serbest bırakılmış" - -#~ msgid "requesting resize" -#~ msgstr "yeniden boyutlandırma isteniyor" - -#~ msgid "just resized" -#~ msgstr "yeniden boyutlandırıldı" - -#~ msgid "bug: unknown operation" -#~ msgstr "yazılım hatası: unknown operation" - -#~ msgid "malloc: watch alert: %p %s " -#~ msgstr "malloc: yakalama alarmı: %p %s " - -#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: %lu bayt yeniden ayrılamıyor (%lu bayt ayrıldı)" - -#~ msgid "xrealloc: cannot allocate %lu bytes" -#~ msgstr "xrealloc: %lu bayt yeniden ayrılamıyor" - -#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: %s:%d: %lu bayt yeniden ayrılamıyor (%lu bayt ayrıldı)" - -#~ msgid "" -#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" -#~ " break N levels." -#~ msgstr "" -#~ "\rbreak [N]\n" -#~ " FOR, WHILE veya UNTIL döngülerinden çıkılmasını sağlar. N " -#~ "verilmişse,\n" -#~ " dışa doğru N. döngüden çıkılır. N >= 1 olmalıdır." - -#~ msgid "" -#~ "Run a shell builtin. This is useful when you wish to rename a\n" -#~ " shell builtin to be a function, but need the functionality of the\n" -#~ " builtin within the function itself." -#~ msgstr "" -#~ "\rbuiltin [kabuk-yerleşiği [argümanlar]]\n" -#~ " Bir kabuk yerleşiğini çalıştırır. Bu bir kabuk işlevinin bir " -#~ "kabul\n" -#~ " yerleşiği ile aynı isimde atanması durumunda faydalıdır, fakat " -#~ "işlevin\n" -#~ " içinde yerleşiğin işlevselliğinin sağlanması gerekir." - -#~ msgid "" -#~ "Print the current working directory. With the -P option, pwd prints\n" -#~ " the physical directory, without any symbolic links; the -L option\n" -#~ " makes pwd follow symbolic links." -#~ msgstr "" -#~ "\rpwd [-LP]\n" -#~ " Geçerli çalışma dizinini basar. -P seçeneği ile sembolik bağlar\n" -#~ " olmaksızın fiziksel dizini basar; -L seçeneği ile sembolik bağları " -#~ "izler." - -#~ msgid "Return a successful result." -#~ msgstr "" -#~ "\rtrue\n" -#~ " Başarılı bir sonuç döndürür." - -#~ msgid "" -#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell\n" -#~ " function called `ls', and you wish to call the command `ls', you can\n" -#~ " say \"command ls\". If the -p option is given, a default value is " -#~ "used\n" -#~ " for PATH that is guaranteed to find all of the standard utilities. " -#~ "If\n" -#~ " the -V or -v option is given, a string is printed describing " -#~ "COMMAND.\n" -#~ " The -V option produces a more verbose description." -#~ msgstr "" -#~ "\rcommand [-pVv] KOMUT [ARGümanlar ...]\n" -#~ " KOMUT komutunu KOMUT isimli kabuk işlevini yoksayarak " -#~ "ARGümanlarla\n" -#~ " çalıştırır. Örneğin, `ls' isimli bir kabuk işlevi varsa ve siz " -#~ "`ls'\n" -#~ " komutunu çalıştırmak istiyorsanız \"command ls\" " -#~ "diyebilirsiniz.\n" -#~ " -p seçeneği verilmişse, tüm standart uygulamaların bulunmasını " -#~ "garanti\n" -#~ " eden PATH için bir öntanımlı değer kullanılır. -V ya da -v " -#~ "seçeneği\n" -#~ " verilmişse, KOMUTu açıklayan bir dizge basılır. -V seçeneği " -#~ "daha\n" -#~ " ayrıntılı açıklama üretilmesini sağlar. " - -#~ msgid "" -#~ "Declare variables and/or give them attributes. If no NAMEs are\n" -#~ " given, then display the values of variables instead. The -p option\n" -#~ " will display the attributes and values of each NAME.\n" -#~ " \n" -#~ " The flags are:\n" -#~ " \n" -#~ " -a\tto make NAMEs arrays (if supported)\n" -#~ " -f\tto select from among function names only\n" -#~ " -F\tto display function names (and line number and source file name " -#~ "if\n" -#~ " \tdebugging) without definitions\n" -#~ " -i\tto make NAMEs have the `integer' attribute\n" -#~ " -r\tto make NAMEs readonly\n" -#~ " -t\tto make NAMEs have the `trace' attribute\n" -#~ " -x\tto make NAMEs export\n" -#~ " \n" -#~ " Variables with the integer attribute have arithmetic evaluation (see\n" -#~ " `let') done when the variable is assigned to.\n" -#~ " \n" -#~ " When displaying values of variables, -f displays a function's name\n" -#~ " and definition. The -F option restricts the display to function\n" -#~ " name only.\n" -#~ " \n" -#~ " Using `+' instead of `-' turns off the given attribute instead. " -#~ "When\n" -#~ " used in a function, makes NAMEs local, as with the `local' command." -#~ msgstr "" -#~ "\rdeclare [-afFirtx] [-p] [İSİM[=DEĞER] ...]\n" -#~ " Değişkenlerin özellikleri ile bildirilmesini sağlar. Hiçbir İSİM\n" -#~ " verilmezse değişkenleri ve değerlerini listeler. -p seçeneği ile her\n" -#~ " İSİM için değerler ve özellikleri gösterecektir.\n" -#~ "\n" -#~ " Seçenekler:\n" -#~ "\n" -#~ " -a Her İSİM bir dizi değişkenidir(destekleniyorsa)\n" -#~ " -f Sadece işlev isimleri kullanılır.\n" -#~ " -F Tanımları olmaksızın sadece işlev isimleri (ve hata " -#~ "ayıklaması\n" -#~ " yapılıyorsa kaynak dosya isimleri ve satır sayıları) " -#~ "gösterilir\n" -#~ " -i Her İSİMe `integer' özniteliği verir.\n" -#~ " -r İSİMleri salt-okunur yapar.\n" -#~ " -t Her İSİMe `trace' özniteliği verir.\n" -#~ " -x İSİMleri ihraç edilebilir yapar\n" -#~ "\n" -#~ " Tamsayı öznitelikli değişkenlere bir DEĞER atandığında aritmetik\n" -#~ " değerlendirme uygulanır (bkz, `let').\n" -#~ "\n" -#~ " Değişken değerleri gösterilirken, -f bir işlevin ismini ve " -#~ "tanımını\n" -#~ " gösterir. -F seçeneği ile sadece işlev isminin gösterilmesini " -#~ "sağlar.\n" -#~ "\n" -#~ " `-' yerine `+' kullanarak belirtilen öznitelik kapatılabilir.\n" -#~ " Bir işlevde kullanıldığında declare her İSİMi `local' komutu " -#~ "kullanılmış\n" -#~ " gibi yerel yapar." - -#~ msgid "Obsolete. See `declare'." -#~ msgstr "" -#~ "\rtypeset [-afFirtx] [-p] İSİM[=DEĞER] ...\n" -#~ " Geçersiz (eski). `declare'ye bakın." - -#~ msgid "" -#~ "Create a local variable called NAME, and give it VALUE. LOCAL\n" -#~ " can only be used within a function; it makes the variable NAME\n" -#~ " have a visible scope restricted to that function and its children." -#~ msgstr "" -#~ "\rlocal [seçenek] İSİM[=DEĞER] ...\n" -#~ " İSİM isimli bir yerel değişken oluşturulup, ona DEĞER atar.\n" -#~ " local sadece bir işlev içinde kullanılabilir; İSİM değişkeninin\n" -#~ " sadece işlev ve çocuklarının etki alanında görünür olmasını sağlar." - -#~ msgid "" -#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." -#~ msgstr "" -#~ "\recho [-neE] [ARG ...]\n" -#~ " ARGümanlarını çıktılar. -n belirtilmişse, satırsonu bastırılır." - -#~ msgid "" -#~ "Enable and disable builtin shell commands. This allows\n" -#~ " you to use a disk command which has the same name as a shell\n" -#~ " builtin without specifying a full pathname. If -n is used, the\n" -#~ " NAMEs become disabled; otherwise NAMEs are enabled. For example,\n" -#~ " to use the `test' found in $PATH instead of the shell builtin\n" -#~ " version, type `enable -n test'. On systems supporting dynamic\n" -#~ " loading, the -f option may be used to load new builtins from the\n" -#~ " shared object FILENAME. The -d option will delete a builtin\n" -#~ " previously loaded with -f. If no non-option names are given, or\n" -#~ " the -p option is supplied, a list of builtins is printed. The\n" -#~ " -a option means to print every builtin with an indication of whether\n" -#~ " or not it is enabled. The -s option restricts the output to the " -#~ "POSIX.2\n" -#~ " `special' builtins. The -n option displays a list of all disabled " -#~ "builtins." -#~ msgstr "" -#~ "\renable [-n] [-p] [-f DOSYAİSMİ] [-ads] [İSİM ...]\n" -#~ " Yerleşik kabuk komutlarını etkinleştirir ve kaldırır. Bir " -#~ "kabuk\n" -#~ " yerleşiği ile aynı isme sahip bir disk komutunun tam dosya " -#~ "yolu\n" -#~ " belirtmeksizin kullanılabilmesini mümkün kılar. -n " -#~ "seçeneği\n" -#~ " kullanılmışsa İSİMler kullanımdan kaldırılır; aksi takdirde " -#~ "İSİMler\n" -#~ " etkin kılınır. Örneğin `test' yerleşiği yerine `test' " -#~ "uygulamasının\n" -#~ " yerleşik komut olarak kullanılmasını sağlamak için `enable -n " -#~ "test'\n" -#~ " yazmalısınız. Dinamik yüklemenin desteklendiği sistemlerde, -" -#~ "f\n" -#~ " seçeneği ile yeni bir İSİM yerleşik komutunun DOSYAİSMİ ile " -#~ "belirtilen\n" -#~ " paylaşımlı nesneden yüklenmesi sağlanır. -d seçeneği -f ile " -#~ "yüklenen\n" -#~ " yerleşiği silmek için kullanılır. Hiç seçenek verilmezse ya da -" -#~ "p\n" -#~ " seçeneği verilirse kabuk yerleşiklerinin bir listesi gösterilir. -" -#~ "a\n" -#~ " seçeneği ile her yerleşik etkin olup olmadığı belirtilerek " -#~ "listelenir.\n" -#~ " -s seçeneği ile sadece POSIX'e özel yerleşikleri içerir. -n " -#~ "seçeneği\n" -#~ " bir İSİM belirtilmeksizin kullanılırsa kullanımdan " -#~ "kaldırılmış\n" -#~ " yerleşikleri listeler." - -#~ msgid "" -#~ "Read ARGs as input to the shell and execute the resulting command(s)." -#~ msgstr "" -#~ "\reval [ARG ...]\n" -#~ " Kabuğa girilmiş biçimleriyle ARG'ları okur ve sonuçlanan komutları " -#~ "çalıştır." - -#~ msgid "" -#~ "Exec FILE, replacing this shell with the specified program.\n" -#~ " If FILE is not specified, the redirections take effect in this\n" -#~ " shell. If the first argument is `-l', then place a dash in the\n" -#~ " zeroth arg passed to FILE, as login does. If the `-c' option\n" -#~ " is supplied, FILE is executed with a null environment. The `-a'\n" -#~ " option means to make set argv[0] of the executed process to NAME.\n" -#~ " If the file cannot be executed and the shell is not interactive,\n" -#~ " then the shell exits, unless the shell option `execfail' is set." -#~ msgstr "" -#~ "\rexec [-cl] [-a AD] DOSYA [YÖNLENDİRMELER]]\n" -#~ " DOSYA'yı yeni bir süreç oluşturmadan kabukla değiştirip çalıştırır.\n" -#~ " Eğer DOSYA belirtilmemişse, kabukta YÖNLENDİRMELER etkili olur.\n" -#~ " Eğer ilk argüman -l ise, login'in yaptığı gibi DOSYAya aktarılan\n" -#~ " sıfırıncı argümana bir tire yerleştirilir. -c seçeneği verilmişse,\n" -#~ " DOSYA boş bir ortamda çalıştırılır. -a seçeneği verilirse kabuk,\n" -#~ " DOSYAya ADı 0. argüman (argv[0]) olarak aktarır. Eğer DOSYA\n" -#~ " çalıştırılamazsa ve kabuk etkileşimli değilse, `execfail' kabuk\n" -#~ " değişkeni etkin olmadıkça kabuk çıkar." - -#~ msgid "Logout of a login shell." -#~ msgstr "" -#~ "\rlogout\n" -#~ " Oturum kabuğundan çıkıp oturumu kapatır." - -#~ msgid "" -#~ "For each NAME, the full pathname of the command is determined and\n" -#~ " remembered. If the -p option is supplied, PATHNAME is used as the\n" -#~ " full pathname of NAME, and no path search is performed. The -r\n" -#~ " option causes the shell to forget all remembered locations. The -d\n" -#~ " option causes the shell to forget the remembered location of each " -#~ "NAME.\n" -#~ " If the -t option is supplied the full pathname to which each NAME\n" -#~ " corresponds is printed. If multiple NAME arguments are supplied " -#~ "with\n" -#~ " -t, the NAME is printed before the hashed full pathname. The -l " -#~ "option\n" -#~ " causes output to be displayed in a format that may be reused as " -#~ "input.\n" -#~ " If no arguments are given, information about remembered commands is " -#~ "displayed." -#~ msgstr "" -#~ "\rhash [-lr] [-p DOSYAYOLU] [-dt] [AD]\n" -#~ " AD argümanları olarak belirtilen komutların tam dosya yollarını\n" -#~ " hatırlar, böylece müteakip çağrılarda aranmalarına gerek kalmaz.\n" -#~ " Komutlar $PATH içinde listelenmiş dizinler aranarak bulunur. -p\n" -#~ " seçeneği dosya yolu aramalarını engeller ve ADın konumu olarak\n" -#~ " DOSYAYOLU kullanılır. -r seçeneği hatırlanan tüm konumları kabuğun\n" -#~ " unutmasına sebep olur. -d seçeneği her AD için hatırlanan konumun\n" -#~ " kabuk tarafından unutulmasına sebep olur. -t seçeneği verildiğinde\n" -#~ " her ADa karşılık gelen dosya konumları basılır. -t seçeneği ile çok\n" -#~ " sayıda AD verilirse, AD hatırlanan tam dosya yolundan önce basılır.\n" -#~ " -l seçeneği çıktının girdi olarak tekrar kullanılmasını sağlayacak\n" -#~ " biçimde basılmasını sağlar. Hiç argüman belirtilmezse ya da sadece\n" -#~ " -l seçeneği belirtilirse hatırlanan komutlar hakkında bilgi basılır." - -#~ msgid "" -#~ "Display helpful information about builtin commands. If PATTERN is\n" -#~ " specified, gives detailed help on all commands matching PATTERN,\n" -#~ " otherwise a list of the builtins is printed. The -s option\n" -#~ " restricts the output for each builtin command matching PATTERN to\n" -#~ " a short usage synopsis." -#~ msgstr "" -#~ "\rhelp [-s] [KALIP]\n" -#~ " Yerleşik komutlar hakkında yardım bilgisi gösterir. KALIP " -#~ "belirtilmişse,\n" -#~ " help KALIP ile eşleşen tüm komutlar için yardım bilgisi gösterir, " -#~ "aksi\n" -#~ " takdirde yerleşikler listelenir. -s seçeneği ile yardım bilgisi " -#~ "yerine\n" -#~ " komutun kullanımını gösteren sözdizimini basar." - -#~ msgid "" -#~ "By default, removes each JOBSPEC argument from the table of active jobs.\n" -#~ " If the -h option is given, the job is not removed from the table, but " -#~ "is\n" -#~ " marked so that SIGHUP is not sent to the job if the shell receives a\n" -#~ " SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove " -#~ "all\n" -#~ " jobs from the job table; the -r option means to remove only running " -#~ "jobs." -#~ msgstr "" -#~ "\rdisown [-h] [-ar] [İŞ_BELİRTİMİ ...]\n" -#~ " Seçeneksiz kullanımda her İŞ_BELİRTİMİ etkin işler tablosundan\n" -#~ " kaldırılır. -h seçeneği ile iş tablodan kaldırılmaz ama imlenir\n" -#~ " böylece kabuk bir SIGHUP alırsa bunu işe göndermez. İŞ_BELİRTİMİ\n" -#~ " verilmeden -a seçeneğinin kullanılması durumunda iş tablosundaki\n" -#~ " tüm işler kaldırılır. İŞ_BELİRTİMİ verilmeden -r seçeneğinin\n" -#~ " kullanılması durumunda ise sadece çalışmakta olan işler kaldırılır." - -#~ msgid "" -#~ "One line is read from the standard input, or from file descriptor FD if " -#~ "the\n" -#~ " -u option is supplied, and the first word is assigned to the first " -#~ "NAME,\n" -#~ " the second word to the second NAME, and so on, with leftover words " -#~ "assigned\n" -#~ " to the last NAME. Only the characters found in $IFS are recognized " -#~ "as word\n" -#~ " delimiters. If no NAMEs are supplied, the line read is stored in the " -#~ "REPLY\n" -#~ " variable. If the -r option is given, this signifies `raw' input, " -#~ "and\n" -#~ " backslash escaping is disabled. The -d option causes read to " -#~ "continue\n" -#~ " until the first character of DELIM is read, rather than newline. If " -#~ "the -p\n" -#~ " option is supplied, the string PROMPT is output without a trailing " -#~ "newline\n" -#~ " before attempting to read. If -a is supplied, the words read are " -#~ "assigned\n" -#~ " to sequential indices of ARRAY, starting at zero. If -e is supplied " -#~ "and\n" -#~ " the shell is interactive, readline is used to obtain the line. If -n " -#~ "is\n" -#~ " supplied with a non-zero NCHARS argument, read returns after NCHARS\n" -#~ " characters have been read. The -s option causes input coming from a\n" -#~ " terminal to not be echoed.\n" -#~ " \n" -#~ " The -t option causes read to time out and return failure if a " -#~ "complete line\n" -#~ " of input is not read within TIMEOUT seconds. If the TMOUT variable " -#~ "is set,\n" -#~ " its value is the default timeout. The return code is zero, unless " -#~ "end-of-file\n" -#~ " is encountered, read times out, or an invalid file descriptor is " -#~ "supplied as\n" -#~ " the argument to -u." -#~ msgstr "" -#~ "\rread [-ers] [-u DSYTNT] [-t ZMAŞM] [-p İSTEM] [-a DİZİ]\n" -#~ " [-n KRKSAY] [-d AYRAÇ] [İSİM ...]\n" -#~ " Standart girdiden ya da -u seçeneği ile sağlanan DoSYaTaNıTıcıdan " -#~ "tek\n" -#~ " satır okur ve ilk sözcük ilk İSİMe, ikinci sözcük ikinci İSİMe ve " -#~ "böyle\n" -#~ " giderek, aradaki sözcükler ve ayraçlar son İSİMe kadar atanır. " -#~ "Satırı\n" -#~ " sözcüklere ayırmakta sadece $IFS değişkeninin değerindeki " -#~ "karakterler\n" -#~ " kullanılır. Tersbölü satırın devam ettirilmesi için ve kendinden " -#~ "sonra\n" -#~ " gelen özel karakterlerin yorumlanması için kullanılabilir. Hiç " -#~ "isim\n" -#~ " verilmemişse, satırın tamamı okunur ve REPLY değişkenine atanır. -" -#~ "r\n" -#~ " verildiğinde tersbölü bir önceleme karakteri olarak ele " -#~ "alınmaz,\n" -#~ " dolayısıyla tersbölü-satırsonu çifti satırın alt satırda devam " -#~ "edeceğini\n" -#~ " belirtmekte kullanılamaz. -d ile satırın satırsonu karakterine " -#~ "kadar\n" -#~ " değil AYRAÇ karakterine kadar okunması sağlanır. -p ile " -#~ "girdi\n" -#~ " beklendiğini belirtecek İSTEM dizgesi satırsonu karakteri " -#~ "olmaksızın\n" -#~ " görüntülenir. İstem sadece girdi bir uçbirimden gelecekse " -#~ "gösterilir.\n" -#~ " -a ile sözcükler sırayla DİZİ dizisinin elemanlarına atanır; dizinin " -#~ "ilk\n" -#~ " elemanının indisi 0'dır; atama yapılmadan önce DİZİ dizisinin " -#~ "tüm\n" -#~ " elemanları silinir; diğer İSİM argümanları yoksayılır. -e ile " -#~ "kabuk\n" -#~ " etkileşimliyse, satırı sağlamak için readline kullanılır. -n " -#~ "ile\n" -#~ " satırın okunması KRKSAYıncı karakterde sona erer; satırın kalanı " -#~ "yok\n" -#~ " sayılır. -s ile sessiz kipe girilir, girdi bir uçbirimden " -#~ "geliyorsa\n" -#~ " karakterler yansılanmaz. -t ile satır ZMAŞM saniye sonra " -#~ "hala\n" -#~ " sonlandırılmamışsa read zamanaşımına düşer ve hata döner. " -#~ "$TMOUT\n" -#~ " değişkeni bir değerle atanmışsa değeri öntanımlı zamanaşımı " -#~ "değeri\n" -#~ " olarak ele alınır. Bu seçenek, girdi bir uçbirim ya da " -#~ "boruhattından\n" -#~ " okunmuyorsa etkisizdir. Dosyasonu karakteri (Ctrl-D) " -#~ "saptanmadıkça,\n" -#~ " okuma zamanaşımına düşmedikçe ya da -u seçeneği ile sağlanan\n" -#~ " DoSYaTaNıTıcı geçersiz olmadıkça dönüş durumu sıfırdır." - -#~ msgid "" -#~ "Causes a function to exit with the return value specified by N. If N\n" -#~ " is omitted, the return status is that of the last command." -#~ msgstr "" -#~ "\rreturn [N]\n" -#~ " Bir işlevin N değeri ile dönerek çıkmasına sebep olur. N verilmezse\n" -#~ " son komutun dönüş durumu döner." - -#~ msgid "" -#~ "For each NAME, remove the corresponding variable or function. Given\n" -#~ " the `-v', unset will only act on variables. Given the `-f' flag,\n" -#~ " unset will only act on functions. With neither flag, unset first\n" -#~ " tries to unset a variable, and if that fails, then tries to unset a\n" -#~ " function. Some variables cannot be unset; also see readonly." -#~ msgstr "" -#~ "\runset [-f] [-v] [AD ...]\n" -#~ " ADı belirtilen her işlev ya da değişken kaldırılır. -v verilmişse,\n" -#~ " işlem sadece kabuk değişkenlerine uygulanır. -f verilmişse, işlem\n" -#~ " sadece kabuk işlevlerine uygulanır ve işlev tanımı kaldırılır.\n" -#~ " Hiçbir seçenek verilmemişse, unset önce bir değişkeni kaldırmayı\n" -#~ " dener, başarısız olursa bir işlevi kaldırmayı dener. Salt-okunur\n" -#~ " değişkenler ve işlevler kaldırılamaz." - -#~ msgid "" -#~ "NAMEs are marked for automatic export to the environment of\n" -#~ " subsequently executed commands. If the -f option is given,\n" -#~ " the NAMEs refer to functions. If no NAMEs are given, or if `-p'\n" -#~ " is given, a list of all names that are exported in this shell is\n" -#~ " printed. An argument of `-n' says to remove the export property\n" -#~ " from subsequent NAMEs. An argument of `--' disables further option\n" -#~ " processing." -#~ msgstr "" -#~ "\rexport [-nf] [İSİM[=DEĞER] ...]\n" -#~ "export -p\n" -#~ " Ortamdaki çocuk sürece aktarılacak her İSİM'i imler. -f " -#~ "verilmişse\n" -#~ " İSİM'ler kabuk işlevleridir, aksi takdirde kabuk " -#~ "değişkenleridir.\n" -#~ " -n seçeneği verilirse aktarılacak İSİM'ler artık imlenmez. " -#~ "İSİM\n" -#~ " verilmemişse veya -p seçeneği verilmişse aktarılan İSİM'lerin " -#~ "listesi\n" -#~ " gösterilir. -p seçeneği çıktının girdi olarak tekrar " -#~ "kullanılabilir\n" -#~ " biçimde gösterilmesini sağlar. Bir değişken isminden sonra " -#~ "=DEĞER\n" -#~ " geliyorsa değer değişkenin değeri yapılır. `--' ile seçenek " -#~ "işlemleri\n" -#~ " kapatılır." - -#~ msgid "" -#~ "The given NAMEs are marked readonly and the values of these NAMEs may\n" -#~ " not be changed by subsequent assignment. If the -f option is given,\n" -#~ " then functions corresponding to the NAMEs are so marked. If no\n" -#~ " arguments are given, or if `-p' is given, a list of all readonly " -#~ "names\n" -#~ " is printed. The `-a' option means to treat each NAME as\n" -#~ " an array variable. An argument of `--' disables further option\n" -#~ " processing." -#~ msgstr "" -#~ "\rreadonly [-af] [İSİM[=DEĞER] ...]\n" -#~ "readonly -p\n" -#~ " Her İSİM'i salt-okunur olarak imler. Bu İSİM'lerin değerleri\n" -#~ " müteakip çağrılarda değiştirilemez. -f seçeneği verilirse, her\n" -#~ " İSİM bir kabuk işlevi olarak imlenir. -a seçeneği verilirse, her\n" -#~ " isim bir dizi değişkeni olarak ele alınır. Hiç argüman verilmezse\n" -#~ " veya -p seçeneği verilirse salt-okunur isimlerin hepsi basılır. Bir\n" -#~ " değişken isminden sonra bir =DEĞER geliyorsa DEĞER değişkenin değeri\n" -#~ " yapılır. `--' ile seçenek işlemleri kapatılır." - -#~ msgid "" -#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" -#~ " not given, it is assumed to be 1." -#~ msgstr "" -#~ "\rshift [N]\n" -#~ " $N+1 ... konumsal parametreleri $1 ... olarak ele alınır.\n" -#~ " N verilmezse 1 kabul edilir." - -#~ msgid "" -#~ "Suspend the execution of this shell until it receives a SIGCONT\n" -#~ " signal. The `-f' if specified says not to complain about this\n" -#~ " being a login shell if it is; just suspend anyway." -#~ msgstr "" -#~ "\rsuspend [-f]\n" -#~ " Bu kabuğun çalışmasını bir SIGCONT sinyali alana kadar askıya alır.\n" -#~ " -f seçeneği kullanıldığında kabuk bir giriş kabuğu olsa bile askıya " -#~ "alınır." - -#~ msgid "" -#~ "Print the accumulated user and system times for processes run from\n" -#~ " the shell." -#~ msgstr "" -#~ "\rtimes\n" -#~ " Kabukta çalışan süreçlerden toplanan kullanıcı ve sistem zamanlarını " -#~ "basar." - -#~ msgid "" -#~ "For each NAME, indicate how it would be interpreted if used as a\n" -#~ " command name.\n" -#~ " \n" -#~ " If the -t option is used, `type' outputs a single word which is one " -#~ "of\n" -#~ " `alias', `keyword', `function', `builtin', `file' or `', if NAME is " -#~ "an\n" -#~ " alias, shell reserved word, shell function, shell builtin, disk " -#~ "file,\n" -#~ " or unfound, respectively.\n" -#~ " \n" -#~ " If the -p flag is used, `type' either returns the name of the disk\n" -#~ " file that would be executed, or nothing if `type -t NAME' would not\n" -#~ " return `file'.\n" -#~ " \n" -#~ " If the -a flag is used, `type' displays all of the places that " -#~ "contain\n" -#~ " an executable named `file'. This includes aliases, builtins, and\n" -#~ " functions, if and only if the -p flag is not also used.\n" -#~ " \n" -#~ " The -f flag suppresses shell function lookup.\n" -#~ " \n" -#~ " The -P flag forces a PATH search for each NAME, even if it is an " -#~ "alias,\n" -#~ " builtin, or function, and returns the name of the disk file that " -#~ "would\n" -#~ " be executed." -#~ msgstr "" -#~ "\rtype [-afptP] AD [AD ...]\n" -#~ " Her ADın bir komut ismi olarak kullanılırsa nasıl yorumlanması\n" -#~ " gerektiğini belirtir.\n" -#~ "\n" -#~ " -t seçeneği verildiğinde, AD bir takma ad ise `alias', bir işlev ise\n" -#~ " `function', bir yerleşik komut ise `builtin', bir disk dosyası ise \n" -#~ " `file' veya bir anahtar sözcük ise `keyword' sözcüğünü basar.\n" -#~ "\n" -#~ " -p seçeneği verildiğinde, AD, `type -t AD' çıktısı file sonucunu\n" -#~ " vermiyorsa hiçbir şey dönmez, aksi takdirde çalıştırılacak disk\n" -#~ " dosyasının ismi basılır.\n" -#~ "\n" -#~ " -a seçeneği verildiğinde, isim çalıştırılabilir dosyasının\n" -#~ " bulunabileceği yerleri basar. Bu, sadece ve sadece -p seçeneği\n" -#~ " kullanılmamışsa takma adları, yerleşik komutları ve işlevleri\n" -#~ " de içerir.\n" -#~ "\n" -#~ " -f seçeneği belirtilmişse type kabuk işlevlerini bulmaya çalışmaz.\n" -#~ "\n" -#~ " -P seçeneği her ADiçin, bir takma ad, yerleşik komut veya işlev " -#~ "olmasa\n" -#~ " bile bir yol araması yapılmasını için zorlar ve çalıştırılabilir " -#~ "disk\n" -#~ " dosyası ismi ile döner." - -#~ msgid "" -#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if\n" -#~ " `-S' is supplied, the current value of the mask is printed. The `-" -#~ "S'\n" -#~ " option makes the output symbolic; otherwise an octal number is " -#~ "output.\n" -#~ " If `-p' is supplied, and MODE is omitted, the output is in a form\n" -#~ " that may be used as input. If MODE begins with a digit, it is\n" -#~ " interpreted as an octal number, otherwise it is a symbolic mode " -#~ "string\n" -#~ " like that accepted by chmod(1)." -#~ msgstr "" -#~ "\rumask [-p] [-S] [KİP]\n" -#~ " Kabuk sürecinin dosya oluşturma maskesini KİP olarak ayarlar.\n" -#~ " -S seçeneği bir KİP olmaksızın verilirse, maske sembolik kipte\n" -#~ " gösterilir. -S seçeneği çıktının sembolik olmasını sağlar, yoksa\n" -#~ " sekizlik değer basılır. -p seçeneği bir KİP olmaksızın verilirse,\n" -#~ " maske, kabuğa girdi olarak verilebilecek biçemde gösterilir. KİP\n" -#~ " bir rakam ile başlıyorsa sekizlik bir sayı olarak yorumlanır;\n" -#~ " rakamla başlamıyorsa, chmod(1) komutundaki gibi bir sembolik kip\n" -#~ " maskesi olarak yorumlanır. Eğer KİP verilmezse, maskenin mevcut\n" -#~ " değeri gösterilir." - -#~ msgid "" -#~ "Wait for the specified process and report its termination status. If\n" -#~ " N is not given, all currently active child processes are waited for,\n" -#~ " and the return code is zero. N is a process ID; if it is not given,\n" -#~ " all child processes of the shell are waited for." -#~ msgstr "" -#~ "\rwait [N]\n" -#~ " Belirtilen süreci bekler ve sonlandırma durumunu raporlar. N\n" -#~ " verilmezse, o an etkin olan tüm süreçler için beklenir ve sıfır\n" -#~ " durumu ile dönülür. N bir süreç kimliğidir; verilmezse kabuğun\n" -#~ " tüm alt süreçleri için beklenir." - -#~ msgid "" -#~ "Create a simple command invoked by NAME which runs COMMANDS.\n" -#~ " Arguments on the command line along with NAME are passed to the\n" -#~ " function as $0 .. $n." -#~ msgstr "" -#~ "\rfunction AD { KOMUTlar ; }\n" -#~ "\tveya\n" -#~ "AD () { KOMUTlar ; }\n" -#~ " ADıyla çağrılarak KOMUTları çalıştıran basit bir komut oluşturur.\n" -#~ " AD ile birlikte verilen komut satırı argümanları işleve $0 .. $N\n" -#~ " olarak aktarılır." - -#~ msgid "" -#~ "Toggle the values of variables controlling optional behavior.\n" -#~ " The -s flag means to enable (set) each OPTNAME; the -u flag\n" -#~ " unsets each OPTNAME. The -q flag suppresses output; the exit\n" -#~ " status indicates whether each OPTNAME is set or unset. The -o\n" -#~ " option restricts the OPTNAMEs to those defined for use with\n" -#~ " `set -o'. With no options, or with the -p option, a list of all\n" -#~ " settable options is displayed, with an indication of whether or\n" -#~ " not each is set." -#~ msgstr "" -#~ "\rshopt [-pqsu] [-o UZUN-SEÇENEK] SÇNKADI [SÇNKADI...]\n" -#~ " İsteğe bağlı kabuk davranışlarını kontrol eden değişken değerlerini " -#~ "açıp\n" -#~ " kapar. -s ile belirtilen her SÇNKADInı etkinleştirir. -u ile " -#~ "belirtilen\n" -#~ " her SÇNKADInı iptal eder. -q ile normal çıktıyı engeller; dönüş " -#~ "durumu\n" -#~ " SÇNKADInın etkin olup olmadığını gösterir. -o ile set yerleşiğinin " -#~ "-o\n" -#~ " seçeneğinde kullanılabilecek SÇNKADI değerlerini sınırlar. Seçeneksiz " -#~ "ya\n" -#~ " da -p seçeneği ile tüm atanabilir seçenekleri etkin olup " -#~ "olmadıklarını\n" -#~ " belirterek listeler." - -#~ msgid "" -#~ "For each NAME, specify how arguments are to be completed.\n" -#~ " If the -p option is supplied, or if no options are supplied, " -#~ "existing\n" -#~ " completion specifications are printed in a way that allows them to " -#~ "be\n" -#~ " reused as input. The -r option removes a completion specification " -#~ "for\n" -#~ " each NAME, or, if no NAMEs are supplied, all completion " -#~ "specifications." -#~ msgstr "" -#~ "\rcomplete [-abcdefgjksuv] [-pr] [-o SEÇENEK] [-A EYLEM] [-G KALIP]\n" -#~ " [-W SÖZLİST] [-P ÖNEK] [-S SONEK] [-X SÜZGEÇ] [-F İŞLEV]\n" -#~ " [-C KOMUT] [AD ...]\n" -#~ " Her AD için argümanların nasıl tamamlanmaları gerektiği belirtilir.\n" -#~ " -p seçeneği verilirse veya hiç seçenek verilmezse, mevcut tamamlama\n" -#~ " belirtimleri girdi olarak yeniden kullanılabilir şekilde basılır.\n" -#~ " -r seçeneği her AD için tamamlama belirtimini kaldırır,\n" -#~ " hiç AD belirtilmezse tümü kaldırılır." diff --git a/po/uk.gmo b/po/uk.gmo index e7db7cc74..eda38affa 100644 Binary files a/po/uk.gmo and b/po/uk.gmo differ diff --git a/po/uk.po b/po/uk.po index 318d7cd4d..0c3568d07 100644 --- a/po/uk.po +++ b/po/uk.po @@ -4,13 +4,13 @@ # # Myhailo Danylenko , 2009. # Maxim V. Dziumanenko , 2010. -# Yuri Chornoivan , 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020. +# Yuri Chornoivan , 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2022. msgid "" msgstr "" -"Project-Id-Version: bash 5.1\n" +"Project-Id-Version: bash 5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2020-12-07 21:17+0200\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-06-17 19:34+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -19,64 +19,59 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Lokalize 20.11.70\n" +"X-Generator: Lokalize 20.12.0\n" #: arrayfunc.c:66 msgid "bad array subscript" msgstr "неправильний індекс масиву" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: вилучаємо атрибут nameref" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: неможливо перетворити індексований масив на асоціативний" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: неправильний ключ асоціативного масиву" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: означення нечислових елементів неможливе" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: при означенні асоціативних масивів слід вказувати ключ" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не вдалося створити: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: не вдалося знайти відповідне призначення для команди" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: перший непробільний символ не є «\"»" # c-format -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "нема заключної «%c» у %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: пропущено двокрапку-роздільник" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "«%s»: не вдалося зняти призначення у мапі ключів команди" @@ -96,7 +91,7 @@ msgstr "розкриття дужок: не вдалося отримати об msgid "brace expansion: failed to allocate memory for `%s'" msgstr "розкриття дужок: не вдалося отримати об’єм пам’яті для «%s»" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "«%s»: некоректна назва замінника" @@ -167,7 +162,7 @@ msgstr "" msgid "HOME not set" msgstr "змінну HOME не встановлено" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "забагато аргументів" @@ -194,7 +189,7 @@ msgstr "попередження: " msgid "%s: usage: " msgstr "%s: використовуйте: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: параметр потребує аргументу" @@ -209,7 +204,7 @@ msgstr "%s: потрібен числовий аргумент" msgid "%s: not found" msgstr "%s: не знайдено" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: неправильний параметр" @@ -219,7 +214,7 @@ msgstr "%s: неправильний параметр" msgid "%s: invalid option name" msgstr "%s: некоректна назва параметра" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "«%s»: неправильний ідентифікатор" @@ -232,7 +227,7 @@ msgstr "неправильне вісімкове число" msgid "invalid hex number" msgstr "неправильне шістнадцяткове число" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "неправильне число" @@ -246,88 +241,93 @@ msgstr "%s: сигнал вказано з помилками" msgid "`%s': not a pid or valid job spec" msgstr "«%s»: не є ідентифікатором процесу чи завдання" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: змінна призначена лише для читання" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s: не вдалося встановити значення" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s виходить за встановлені межі" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "аргумент" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s виходить за встановлені межі" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: нема такого завдання" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: керування завданнями не ввімкнене" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "керування завданнями не ввімкнене" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: заборонено обмеженнями" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "заборонено обмеженнями" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: не є вбудованою командою оболонки" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "помилка запису: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "помилка встановлення параметрів термінала: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "помилка отримання параметрів термінала: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: помилка отримання поточного каталогу: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: завдання вказано неоднозначно" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "у цій версії не можна скористатися довідкою" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не вдалося знищити: %s лише для читання" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: не вдалося знищити" @@ -337,108 +337,108 @@ msgstr "%s: не вдалося знищити" msgid "%s: invalid action name" msgstr "%s: неправильна назва дії" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: не вказано специфікація завершення" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "попередження: можливо параметр -F працює не так, як ви очікуєте" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "попередження: можливо параметр -C працює не так, як ви очікуєте" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "наразі функція завершення рядку не виконується" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "може використовуватися лише усередині функції" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "`-f' не використовується для створення функцій" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: незмінна функція" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: еталонна змінна не може бути масивом" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: не можна використовувати циклічне посилання у змінній посилання" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: циклічне посилання за назвою" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "«%s»: некоректна назва змінної для посилання за назвою" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "`-f' не використовується для створення функцій" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: незмінна функція" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: встановлення значень для складеного масиву у лапках вважається застарілим" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: неможливо знищити масив таким чином" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: неможливо перетворити асоціативний масив на індексований" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: встановлення значень для складеного масиву у лапках вважається застарілим" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "динамічне завантаження недоступне" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "не вдалося відкрити колективний об’єкт %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "не вдалося знайти %s у колективному об’єкті %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: динамічне вбудовування вже завантажено" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "функцією завантаження для %s повернуто повідомлення щодо помилки (%d): не завантажено" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: завантажений не динамічно" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: не вдалося вилучити: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: це каталог" @@ -453,7 +453,7 @@ msgstr "%s: не є звичайним файлом" msgid "%s: file is too large" msgstr "%s: файл завеликий" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: не вдалося виконати бінарний файл" @@ -549,12 +549,12 @@ msgstr "" msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "«%s» не відповідає жодний розділ довідки. Спробуйте `help help' чи `man -k %s' або `info %s'." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не вдалося відкрити: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -574,21 +574,21 @@ msgstr "" "Зірочка (*) поряд з назвою команди означає, що команда заборонена.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "-anrw можуть зустрічатися лише один раз" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "позиція у журналу команд" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s: некоректна часова позначка" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: невдалий пошук по журналу команд" @@ -611,78 +611,78 @@ msgstr "%s: аргументи мають бути ідентифікатора msgid "Unknown error" msgstr "Невідома помилка" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "очікувався вираз" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: не є індексованим масивом" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: неправильно вказаний дескриптор файла" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: неправильний дескриптор файла: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: неправильна кількість рядків" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: неправильний початковий індекс" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: неправильний крок виклику функції" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "порожня назва змінної-масиву" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "змінні-масиви не підтримуються" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "«%s»: пропущено символ у шаблоні" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: помилкове визначення формату часу" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: помилковий символ у шаблоні" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "попередження: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "проблема з обробкою форматування: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "пропущено шістнадцяткову цифру у \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "пропущено цифру Unicode у \\%c" @@ -833,12 +833,12 @@ msgstr "" " \n" " Вбудована команда `dirs' показує стек каталогів." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: некоректне визначення часу очікування" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "помилка читання: %d: %s" @@ -851,7 +851,7 @@ msgstr "`return' працює лише у функції чи скрипті, з msgid "cannot simultaneously unset a function and a variable" msgstr "не можна одночасно знищити і функцію і змінну" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: не є масивом" @@ -870,11 +870,11 @@ msgstr "%s: не вдалося експортувати" msgid "shift count" msgstr "кількість зсувів" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "не можна одночасно встановлювати й скасовувати параметри оболонки" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: неправильна назва параметра оболонки" @@ -943,16 +943,16 @@ msgstr "%s: помилковий аргумент обмеження" msgid "`%c': bad command" msgstr "«%c»: неправильна команда" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: не вдалося отримати значення обмеження: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "значення обмеження" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: не вдалося змінити обмеження: %s" @@ -971,7 +971,7 @@ msgstr "«%c»: помилковий оператор у символьному msgid "`%c': invalid symbolic mode character" msgstr "«%c»: помилковий символ у символьному режимі" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " рядок " @@ -991,96 +991,106 @@ msgstr "Припинення..." msgid "INFORM: " msgstr "ІНФОРМАЦІЯ: " -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "Діагностичне попередження: " + +#: error.c:488 msgid "unknown command error" msgstr "невідома помилка команди" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "неправильний тип команди" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "неправильний з’єднувальний оператор" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "неправильний перехід" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: неозначена змінна" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aчас очікування вводу вичерпано: автоматичний вихід\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "не вдалося переспрямувати /dev/null на стандартний ввід: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c»: помилковий символ шаблону" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] все ще існує" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "помилка каналу" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: перевищено максимальний рівень вкладеності eval (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: перевищено максимальний рівень вкладеності джерела (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: перевищено максимальний рівень вкладеності функцій (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: обмеження: не можна вказувати `/' у назві команди" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: команду не знайдено" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: не вдалося виконати: не знайдено потрібного файла" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: неправильний інтерпретатор" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: не вдалося виконати бінарний файл: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "%s є спеціальною вбудованою командою оболонки" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "не вдалося створити копію файлового дескриптору %d у %d" @@ -1093,68 +1103,68 @@ msgstr "рівень вкладення виразів перевищено" msgid "recursion stack underflow" msgstr "нестача стеку рекурсії" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "синтаксична помилка у виразі" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "спроба призначення не-змінної" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "синтаксична помилка при спробі надати змінній значення" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "ділення на 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "вада: неправильна лексема у виразі" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "очікувалася `:' умовного виразу" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "експонента менша за 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "пре-інкремент чи пре-декремент потребують ідентифікатор" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "відсутня `)'" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "синтаксична помилка: очікувався операнд" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "синтаксична помилка: помилковий арифметичний оператор" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (позначка помилки \"%s\")" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "некоректна арифметична основа" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "некоректна ціла стала" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "завелике значення основи" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: помилка у виразі\n" @@ -1163,7 +1173,7 @@ msgstr "%s: помилка у виразі\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: не вдалося отримати доступ до каталогів вищого рівня" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не вдалося перевстановити режим без затримки файлового дескриптору %d" @@ -1182,167 +1192,167 @@ msgstr "save_bash_input: для нового файлового дескрипт msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "ідентифікатор відгалуженого процесу %d знайдено у поточному завданні %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "вилучення зупиненого завдання %d, що має групу процесів %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: ідентифікатор процесу %5ld (%s) вказує на його працездатність" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ідентифікатор процесу не існує" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Завершено" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Зупинено" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Зупинено(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Працює" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Зроблено(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Вихід %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Невідомий стан" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(збережено знімок оперативної пам’яті)" -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (РД: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "зміна групи дочірнього процесу (%ld на %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: процес %ld не є відгалуженим від цієї оболонки" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Нема запису для процесу %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: завдання %d зупинене" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s: немає поточних завдань" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: завдання завершилося" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: завдання %d вже працює в фоні" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: увімкнути WNOHANG, щоб уникнути нескінченного блокування" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: рядок %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (збережено знімок оперативної пам’яті)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(тепер РД: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: помилка getpgrp" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: немає керування завданнями у тлі" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: алгоритм реалізації рядків" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "не вдалося встановити групу процесу для термінала (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "ця оболонка не може керувати завданнями" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: умова не виконується: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1351,47 +1361,47 @@ msgstr "" "\r\n" "malloc: %s:%d: потрібна умова не виконується\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "невідомий" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: зайнятий блок у списку вільних" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: аргумент є вже звільненим блоком" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: блок ще не виділено" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: виявлено перехід за нижню границю блоку; mh_nbytes не вкладається у рамки" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free: виявлено перехід за нижню границю блоку; magic8 пошкоджено" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: розмір у записах на початку та в кінці блоку відрізняється" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: блок ще не виділено" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: виявлено перехід за нижню границю блоку; mh_nbytes не вкладається у рамки" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: виявлено перехід за нижню границю блоку; magic8 пошкоджено" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: розмір у записах на початку та в кінці блоку відрізняється" @@ -1433,22 +1443,22 @@ msgstr "%s: неправильно вказаний мережевий шлях" msgid "network operations not supported" msgstr "мережеві операції не підтримуються" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: не вдалося змінити локаль (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: не вдалося змінити локаль (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: не вдалося змінити локаль (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: не вдалося змінити локаль (%s): %s" @@ -1466,136 +1476,136 @@ msgstr "Нова пошта у $_" msgid "The mail in %s has been read\n" msgstr "Пошту у %s прочитано\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "синтаксична помилка: потрібен арифметичний вираз" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "синтаксична помилка: неочікувана `;'" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "синтаксична помилка: `((%s))'" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: неправильний тип інструкції %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document з рядка %d закінчено кінцем файла (очікувалося «%s»)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: інструкція переспрямування `%d' поза межами" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" msgstr "shell_getc: shell_input_line_size (%zu) перевищує обмеження SIZE_MAX (%lu): рядок обрізано" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "перевищено максимальну можливу кількість here-document" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "файл скінчився раніше, ніж було знайдено відповідний «%c»" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "файл скінчився раніше, ніж було знайдено `]]'" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "синтаксична помилка в умовному виразі: неочікувана лексема «%s»" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "синтаксична помилка в умовному виразі" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неочікувана лексема «%s», очікувалася `)'" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "очікувалася `)'" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неочікуваний аргумент унарного умовного оператора «%s»" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "неочікуваний аргумент унарного умовного оператора" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неочікувана лексема «%s», очікувався бінарний умовний оператор" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "очікувався бінарний умовний оператор" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неочікуваний аргумент бінарного умовного оператора «%s»" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "неочікуваний аргумент бінарного умовного оператора" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неочікувана лексема «%c» в умовній команді" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неочікувана лексема «%s» в умовній команді" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "неочікувана лексема %d в умовній команді" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "синтаксична помилка коло неочікуваної лексеми «%s»" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "синтаксична помилка коло «%s»" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "синтаксична помилка: раптово скінчився файл" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "синтаксична помилка" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Використовуйте \"%s\", щоб вийти з оболонки.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "файл скінчився, перш ніж було знайдено відповідну `)'" @@ -1633,94 +1643,94 @@ msgstr "xtrace_set: нульовий вказівник на файл" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "дескриптор файла xtrace (%d) не дорівнює номеру файла у вказівнику xtrace (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: неправильний символ шаблону" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "дескриптор файла поза можливими межами" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: неоднозначне переспрямування" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: заборонено перезаписувати наявні файли" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: обмеження: переспрямування виводу заборонене" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не вдалося створити тимчасовий файл для here-document: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: не вдалося надати змінній значення дескриптора файла" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port не підтримується" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "помилка переспрямування: не вдалося створити копію дескриптора файла" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "не вдалося знайти /tmp, будь ласка створіть його!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp має бути чинною назвою каталогу" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "режим форматованого виведення даних у інтерактивних оболонках буде проігноровано" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: помилковий параметр" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "не вдалося встановити uid %d: ефективним є uid %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "не вдалося встановити gid %d: ефективним є gid %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "не вдалося запустити засіб діагностики: режим діагностування вимкнено" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: це каталог" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "У мене нема назви!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, версія %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1729,317 +1739,317 @@ msgstr "" "Використовуйте:\t%s [довгий параметр GNU] [параметр] ...\n" "\t%s [довгий параметр GNU] [параметр] файл_сценарію ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Довгі параметри GNU:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Параметри оболонки:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD чи -c команда чи -O параметр_shopt\t\t(тільки на початку)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s чи -o параметр\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Введіть `%s -c \"help set\"', щоб отримати більше інформації про параметри оболонки.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Введіть `%s -c help', щоб отримати більше інформації про вбудовані команди оболонки.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Щоб повідомити про помилку в програмі, використовуйте команду `bashbug'.\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "Домашня сторінка bash: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "Загальна довідкова інформація щодо використання програмного забезпечення GNU: \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: некоректна операція" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Ненаявний сигнал" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Зависання" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Переривання" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Вихід" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Помилкова інструкція" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "Точка зупину trace/trap" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Інструкція ABORT" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Інструкція EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Помилка обчислень з рухомою комою" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Вбитий" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Помилка шини" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Помилка адресування" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Помилковий системний виклик" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Зламаний канал" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Таймер" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Припинено" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Невідкладні події В/В" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Зупинено (сигнал)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Продовження" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Зупинка чи припинення дочірнього процесу" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Зупинено (ввід з термінала)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Зупинено (вивід на термінал)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "В/В готовий" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Обмеження часу CPU" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Обмеження розміру файла" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Таймер (віртуальний)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Таймер (профілювання)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Зміна вікна" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Блокування втрачено" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Сигнал користувача 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Сигнал користувача 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "Вхідні дані HFT очікують" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "наближається втрата живлення" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "наближається аварійна ситуація" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "перенесення процесу на інший CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "помилка програмування" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "Режим монітору HFT надано" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "Режим монітору HFT відкликано" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "Завершено звукову послідовність HFT" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "Інформаційний запит" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Невідомий сигнал №%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "неправильна заміна: немає заключної «%s» у %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: неможливо означити елемент масиву списком" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "не вдалося створити канал для підставляння процесу" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "не вдалося створити дочірній процес для підставляння процесу" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "не вдалося відкрити іменований канал %s для читання" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "не вдалося відкрити іменований канал %s для запису" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "не вдалося здублювати іменований канал %s як fd %d" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "заміна команди: проігноровано порожній байт у вхідних даних" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "не вдалося створити канал для підставляння команди" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "не вдалося створити дочірній процес для підставляння команди" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: не вдалося створити копію каналу із файловим дескриптором 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: некоректна назва змінної для посилання за назвою" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: некоректне непряме розгортання" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s: некоректна назва змінної" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s: параметр не встановлено" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: параметр нульової довжини чи не вказаний" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: підрядок коротший за 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: неправильна заміна" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: не можна призначити таким чином" -#: subst.c:9814 +#: subst.c:10111 msgid "future versions of the shell will force evaluation as an arithmetic substitution" msgstr "у наступних версіях оболонки буде виконуватися обчислення для заміни арифметичних виразів" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "неправильна заміна: немає заключної \"`\" у %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "нема відповідника: %s" @@ -2062,21 +2072,21 @@ msgstr "очікувалася `)'" msgid "`)' expected, found %s" msgstr "очікувалася `)', отримано %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: очікувався бінарний оператор" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: очікувався унарний оператор" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "відсутня `]'" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "синтаксична помилка: неочікуване `%s'" @@ -2085,99 +2095,104 @@ msgstr "синтаксична помилка: неочікуване `%s'" msgid "invalid signal number" msgstr "неправильний номер сигналу" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "обробник пасток: досягнуто максимального рівня для обробника пасток (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: неправильне значення у trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: обробник сигналу є SIG_DFL, %d (%s) повторно надсилається собі" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: неправильний сигнал %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "помилка імпортування означення функції «%s»" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "рівень оболонки (%d) занадто високий, перевстановлено у 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: немає контексту функції у поточній області" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: змінною не може бути значення, яке приймають інші змінні" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s: неможливо успадкувати значення несумісного типу" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: присвоєння цілого числа посиланню з назвою" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: немає контексту функції у поточній області" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s має нульове значення рядка експортування" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "Помилковий символ %d у рядку експорту для %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "немає `=' у рядку експорту для %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: перший елемент shell_variables не є контекстом функції" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: немає контексту global_variables" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: перший елемент shell_variables не є тимчасовим оточенням виконання" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: не вдалося відкрити ФАЙЛ" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: некоректне значення дескриптора файла трасування" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: значення сумісності не належить припустимому діапазону значень" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "© Free Software Foundation, Inc., 2020" +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "© Free Software Foundation, Inc., 2022" #: version.c:47 version2.c:47 msgid "License GPLv3+: GNU GPL version 3 or later \n" @@ -2257,12 +2272,12 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] команда [аргумент ...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgiIlnrtux] [-p] [назва[=значення] ...]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgiIlnrtux] [назва[=значення] ...] або declare -p [-aAfFilnrtux] [назва ...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgiIlnrtux] [-p] назва[=значення] ..." +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgiIlnrtux] назва[=значення] ... або typeset -p [-aAfFilnrtux] [назва ...]" #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2349,8 +2364,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [-abefhkmnptuvxBCHP] [-o назва-параметра] [--] [аргумент ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o назва-параметра] [--] [-] [аргумент ...]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" @@ -2397,8 +2412,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] назва [назва ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [обмеження]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [обмеження]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" @@ -2437,12 +2452,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C msgstr "if КОМАНДИ; then КОМАНДИ; [ elif КОМАНДИ; then КОМАНДИ; ]... [ else КОМАНДИ; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while КОМАНДИ; do КОМАНДИ; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while КОМАНДИ; do КОМАНДИ-2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until КОМАНДИ; do КОМАНДИ; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until КОМАНДИ; do КОМАНДИ-2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -3764,7 +3779,8 @@ msgid "" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" @@ -3807,6 +3823,8 @@ msgstr "" " призначується першій НАЗВІ, друге слово — другій НАЗВІ тощо, якщо\n" " залишаться непризначені слова, їх буде призначено останній НАЗВІ. Як\n" " роздільники полів розпізнаються символи, вказані у змінній $IFS.\n" +" Типово, символ зворотної похилої риски екранує символи роздільника\n" +" та розриву рядка.\n" " \n" " Якщо НАЗВ не вказано, рядок цілком буде збережено у змінній REPLY.\n" " \n" @@ -3841,7 +3859,7 @@ msgstr "" " очікування (значення, більше за 128), якщо сталася помилка під час\n" " встановлення значення змінної, або якщо із -u вказано неправильний файловий дескриптор." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3861,7 +3879,7 @@ msgstr "" " Код завершення:\n" " Команда повертає N, або помилку, якщо викликана не у функції чи сценарії." -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4028,7 +4046,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказані правильні параметри." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4066,7 +4084,7 @@ msgstr "" " Команда завершується невдало, якщо вказано неправильний параметр чи НАЗВА\n" " доступна лише для читання." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4098,7 +4116,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказано правильні параметри та НАЗВИ." -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4136,7 +4154,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказано правильні параметри та НАЗВИ." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4154,7 +4172,7 @@ msgstr "" " Код завершення:\n" " Команда завершується невдало, якщо N менше за нуль чи більше за $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4177,7 +4195,7 @@ msgstr "" " Команда повертає код завершення останньої команди, виконаної у ФАЙЛІ, або\n" " помилку, якщо ФАЙЛ не вдалося прочитати." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4202,7 +4220,7 @@ msgstr "" " Команда завершується невдало, якщо не ввімкнене керування завданнями чи\n" " якщо трапиться помилка." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4358,7 +4376,7 @@ msgstr "" " Команда завершується успішно, якщо ВИРАЗ істинний; невдало, якщо вказано\n" " помилковий аргумент чи ВИРАЗ хибний." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4370,7 +4388,7 @@ msgstr "" " Це синонім до вбудованої команди \"test\", але на відміну від неї останнім\n" " аргументом має бути `]'." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4388,7 +4406,7 @@ msgstr "" " Код завершення:\n" " Команда завжди успішна." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4451,7 +4469,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказані правильні параметри та СИГНАЛИ." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4501,7 +4519,7 @@ msgstr "" " Команда завершується успішно, якщо буде знайдено усі НАЗВИ; невдало, якщо\n" " хоч одне з них не вдасться знайти." -#: builtins.c:1431 +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4597,7 +4615,7 @@ msgstr "" " Команда завершується невдало, якщо вказано неправильний параметр чи\n" " трапилася помилка під час виконання." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4630,7 +4648,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказано правильну МАСКУ та параметри." -#: builtins.c:1502 +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4683,7 +4701,7 @@ msgstr "" " неправильні параметри чи ІДЕНТИФІКАТОР або якщо вказано -n і оболонка не\n" " має неочікуваних дочірніх процесів." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4706,7 +4724,7 @@ msgstr "" " Команда повертає код завершення процесу з останнім вказаним ідентифікатором.\n" " Повертає код помилки, якщо вказано неправильний ІДЕНТИФІКАТОР чи параметр." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4727,7 +4745,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4757,7 +4775,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4792,7 +4810,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4820,7 +4838,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення ЛАНЦЮЖКА-КОМАНД." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4838,7 +4856,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4865,44 +4883,44 @@ msgstr "" " Команда повертає код завершення останньої виконаної команди або нуль,\n" " якщо жодна з перевірених умов не була істинною." -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Циклічно виконує команди поки виконується умова.\n" " \n" -" Виконуватиме КОМАНДИ, поки остання команда з КОМАНД у `while'\n" +" Виконуватиме КОМАНДИ-2, поки остання команда з КОМАНД\n" " не завершиться невдало.\n" " \n" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "Виконує команди доки умову не буде виконано.\n" " \n" -" Виконуватиме КОМАНДИ, поки остання команда з КОМАНД у `until'\n" +" Виконуватиме КОМАНДИ-2, поки остання команда з КОМАНД\n" " не завершиться успішно.\n" " \n" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." # WTF? How can it return exit code of _asynchronous_ process... -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4924,7 +4942,7 @@ msgstr "" " Код завершення:\n" " Команда coproc повертає стан виходу 0." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -4946,7 +4964,7 @@ msgstr "" " Код завершення:\n" " Команда завершується невдало, якщо НАЗВА є незмінною." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4964,7 +4982,7 @@ msgstr "" " Код завершення:\n" " Конструкція повертає код завершення останньої виконаної команди." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -4987,7 +5005,7 @@ msgstr "" " Код завершення:\n" " Команда повертає статус продовженого завдання." -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5005,7 +5023,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо результат обчислення ненульовий." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5051,7 +5069,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо ВИРАЗ істинний." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5153,7 +5171,7 @@ msgstr "" " HISTIGNORE\tРозділений двокрапкою список шаблонів, що використовуються\n" " \t\tпри визначенні, чи зберігати команду у списку журналу.\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5211,7 +5229,7 @@ msgstr "" " Команда завершується невдало, якщо вказаний неправильний аргумент чи\n" " якщо не вдалося змінити поточну каталог." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5262,7 +5280,7 @@ msgstr "" " Команда завершується невдало, якщо вказано помилковий аргумент чи якщо\n" " не вдалося змінити поточний каталог." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5314,7 +5332,7 @@ msgstr "" " Команда завершується невдало, якщо вказано неправильний параметр чи якщо\n" " трапиться помилка." -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5350,7 +5368,7 @@ msgstr "" " Команда завершується успішно, якщо ПАРАМЕТР ввімкнено; невдало, якщо\n" " вказано неправильні параметри чи ПАРАМЕТР вимкнено." -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5369,6 +5387,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" @@ -5400,18 +5420,21 @@ msgstr "" " \t\tзворотної похилої риски) у відповідному аргументі.\n" " %q\tВзяти аргумент в лапки так, щоб його можна було використати як\n" " \t\tввід оболонки\n" +" %Q\tподібна до %q, але буде застосовано довільну точність до аргументу\n" +" \t\tбез лапок до застосування лапок\n" " %(формат)T – вивести рядок дати і часу з використанням ФОРМАТУ\n" " для форматування даних strftime(3)\n" " \n" " Визначене форматування використовується так, щоб було оброблено усі аргументи.\n" " Якщо аргументів виявиться менше за кількість визначених форматів, для зайвих\n" -" специфікаторів форматів буде використано нульові значення або порожні рядки, залежно від типу форматування.\n" +" специфікаторів форматів буде використано нульові значення або порожні рядки,\n" +" залежно від типу форматування.\n" " \n" " Код завершення:\n" " Команда завершується невдало лише якщо вказано неправильний параметр або\n" " якщо трапиться помилка запису чи присвоєння." -#: builtins.c:1971 +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5463,7 +5486,7 @@ msgstr "" " Команда завершується успішно, якщо вказано правильні параметри та не\n" " трапиться помилки під час виконання." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5484,7 +5507,7 @@ msgstr "" " Команда завершується успішно, якщо вказано правильні параметри і не\n" " трапиться помилки під час виконання." -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5539,7 +5562,7 @@ msgstr "" " Команда завершується успішно, якщо вказано правильні параметри та\n" " вказівки завершень для НАЗВ існують." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5610,7 +5633,7 @@ msgstr "" " Команда завершується невдало лише якщо вказано неправильний параметр або\n" " якщо МАСИВ є незмінним." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5620,6 +5643,9 @@ msgstr "" " \n" " Синонім до `mapfile'." +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: неправильний ключ асоціативного масиву" + #~ msgid "" #~ "Returns the context of the current subroutine call.\n" #~ " \n" diff --git a/po/vi.gmo b/po/vi.gmo index 256ec8eef..f97a37d60 100644 Binary files a/po/vi.gmo and b/po/vi.gmo differ diff --git a/po/vi.po b/po/vi.po index 583c7050a..aa9ad4b85 100644 --- a/po/vi.po +++ b/po/vi.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" "PO-Revision-Date: 2015-10-18 07:47+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" @@ -26,58 +26,53 @@ msgstr "" msgid "bad array subscript" msgstr "sai chỉ số mảng" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: không thể chuyển đổi mảng kiểu chỉ số sang mảng kết hợp" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: khóa mảng liên kết không hợp lệ" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: không thể gán cho chỉ số không thuộc kiểu số" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: phải sử dụng chỉ số phụ khi gán mảng kết hợp" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: không thể tạo: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: không tìm thấy ánh xạ phím (keymap) cho câu lệnh" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: ký tự khác khoảng trắng đầu tiên không phải là “\"”" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "thiếu dấu đóng “%c” trong %s" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: thiếu dấu hai chấm phân cách" -#: bashline.c:4555 +#: bashline.c:4733 #, fuzzy, c-format msgid "`%s': cannot unbind in command keymap" msgstr "“%s”: không thể tháo" @@ -97,7 +92,7 @@ msgstr "khai triển ngoặc ôm: gặp lỗi khi phân bổ bộ nhớ cho “% msgid "brace expansion: failed to allocate memory for `%s'" msgstr "khai triển ngoặc ôm: gặp lỗi khi phân bổ bộ nhớ cho “%s”" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "“%s”: tên bí danh không hợp lệ" @@ -172,7 +167,7 @@ msgstr "" msgid "HOME not set" msgstr "Chưa đặt biến môi trường HOME" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "quá nhiều đối số" @@ -200,7 +195,7 @@ msgstr "cảnh báo: " msgid "%s: usage: " msgstr "%s: cách dùng: " -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s: tùy chọn cần một đối số" @@ -215,7 +210,7 @@ msgstr "%s: cần đối số thuộc kiểu số" msgid "%s: not found" msgstr "%s: không tìm thấy" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s: tùy chọn không hợp lệ" @@ -225,7 +220,7 @@ msgstr "%s: tùy chọn không hợp lệ" msgid "%s: invalid option name" msgstr "%s: tên tùy chọn không hợp lệ" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "“%s”: không phải là định danh hợp lệ" @@ -238,7 +233,7 @@ msgstr "số bát phân không hợp lệ" msgid "invalid hex number" msgstr "số thập lục không hợp lệ" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "số không hợp lệ" @@ -252,88 +247,93 @@ msgstr "%s: sai đặc tả tín hiệu" msgid "`%s': not a pid or valid job spec" msgstr "“%s”: không phải một pid hoặc đặc tả công việc hợp lệ" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s: biến chỉ đọc" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, fuzzy, c-format +msgid "%s: cannot assign" +msgstr "%s: không thể hủy đặt" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s: %s nằm ngoài phạm vi" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "đối số" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s nằm ngoài phạm vi" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s: không có công việc như vậy" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s: không có điều khiển công việc" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "không có điều khiển công việc" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s: bị hạn chế" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "bị hạn chế" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s: không phải là lệnh tích hợp trong hệ vỏ" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "lỗi ghi: %s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "lỗi đặt các thuộc tính thiết bị cuối: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "lỗi lấy các thuộc tính thiết bị cuối: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: lỗi lấy thư mục hiện thời: %s: %s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: đặc tả công việc chưa rõ ràng" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "trợ giúp không sẵn có ở phiên bản này" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: không thể hủy đặt: %s chỉ đọc" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: không thể hủy đặt" @@ -343,108 +343,108 @@ msgstr "%s: không thể hủy đặt" msgid "%s: invalid action name" msgstr "%s: tên hành động không hợp lệ" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s: không có đặc tả tự hoàn thiện" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "cảnh báo: tùy chọn “-F” có thể không hoạt động như mong đợi" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "cảnh báo: tùy chọn “-C” có thể không hoạt động như bạn mong đợi" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" msgstr "hiện thời không thực thi chức năng tự hoàn thiện" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "chỉ có thể dùng trong một hàm" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "không thể dùng “-f” để tạo hàm" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: hàm chỉ đọc" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: biến tham chiếu không thể là một mảng" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: biến nameref tự tham chiếu là không được phép" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: tên tham chiếu quẩn tròn" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "không thể dùng “-f” để tạo hàm" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s: hàm chỉ đọc" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: gán mảng phức hợp được trích dẫn đã lạc hậu" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: không thể hủy biến mảng bằng cách này" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: không thể chuyển đổi mảng kết hợp sang mảng chỉ số" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: gán mảng phức hợp được trích dẫn đã lạc hậu" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "không có chức năng nạp động" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "không thể mở đối tượng dùng chung %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "không tìm thấy %s trong đối tượng dùng chung %s: %s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, fuzzy, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s không được tải động" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "tải hàm cho %s trả về lỗi nghiêm trọng (%d): nên không được tải" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s không được tải động" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: không thể xóa: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: là thư mục" @@ -459,7 +459,7 @@ msgstr "%s: không phải là tập tin thường" msgid "%s: file is too large" msgstr "%s: tập tin quá lớn" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: không thể thực hiện tập tin nhị phân" @@ -554,12 +554,12 @@ msgstr "" "không có trợ giúp cho “%s”. Hãy chạy lệnh “help help” hoặc “man -k %s” hay " "“info %s”." -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: không thể mở: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -579,21 +579,21 @@ msgstr "" "Dấu sao (*) bên cạnh tên nghĩa là lệnh bị tắt.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "chỉ có thể dùng một của những tùy chọn -anrw" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "vị trí lịch sử" -#: builtins/history.def:340 +#: builtins/history.def:338 #, fuzzy, c-format msgid "%s: invalid timestamp" msgstr "%s: đối số không hợp lệ" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: gặp lỗi khi khai triển lịch sử" @@ -616,78 +616,78 @@ msgstr "%s: đối số phải là ID tiến trình hoặc công việc" msgid "Unknown error" msgstr "Lỗi không rõ" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "cần biểu thức" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: không phải là mảng chỉ số" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: đặc tả bộ mô tả tập tin không hợp lệ" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: bộ mô tả tập tin không hợp lệ: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: sai số lượng dòng" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: gốc mảng không hợp lệ" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: lượng gọi ngược không hợp lệ" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "tên biến mảng vẫn trống" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "cần hỗ trợ biến mảng" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "“%s”: thiếu ký tự định dạng" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "“%c”: đặc tả định dạng thời gian không đúng" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "“%c”: ký tự định dạng không hợp lệ" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "cảnh báo: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "vấn đề phân tích cú pháp định dạng: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "thiếu chữ số thập lục phân cho \\x" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "thiếu chữ số unicode cho \\%c" @@ -835,12 +835,12 @@ msgstr "" "\n" " Lệnh “dirs” hiển thị ngăn xếp thư mục." -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: sai đặc tả thời gian chờ tối đa" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "lỗi đọc: %d: %s" @@ -853,7 +853,7 @@ msgstr "chỉ có thể “return” từ một hàm hoặc văn lệnh được msgid "cannot simultaneously unset a function and a variable" msgstr "không thể hủy đặt đồng thời một hàm VÀ một biến" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: không phải biến mảng" @@ -872,11 +872,11 @@ msgstr "%s: không thể xuất" msgid "shift count" msgstr "số lượng dịch" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "không thể đồng thời đặt và hủy đặt các tùy chọn hệ vỏ" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: tên tùy chọn hệ vỏ không hợp lệ" @@ -943,16 +943,16 @@ msgstr "%s: đối số giới hạn không hợp lệ" msgid "`%c': bad command" msgstr "“%c”: câu lệnh sai" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: không thể lấy giới hạn: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "giới hạn" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: không thể sửa đổi giới hạn: %s" @@ -971,7 +971,7 @@ msgstr "“%c”: toán tử chế độ ký hiệu không hợp lệ" msgid "`%c': invalid symbolic mode character" msgstr "“%c”: ký tự chế độ ký hiệu không hợp lệ" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " dòng " @@ -991,96 +991,106 @@ msgstr "Hủy bỏ…" msgid "INFORM: " msgstr "THBÁO:" -#: error.c:462 +#: error.c:310 +#, fuzzy, c-format +msgid "DEBUG warning: " +msgstr "cảnh báo: " + +#: error.c:488 msgid "unknown command error" msgstr "lỗi lệnh không rõ" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "kiểu lệnh sai" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "bộ kết nối sai" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "nhảy sai" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: biến chưa liên kết" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aquá thời hạn đợi dữ liệu nhập: tự động đăng xuất\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "không thể chuyển hướng đầu vào chuẩn từ /dev/null: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "ĐỊNH DẠNG THỜI GIAN: “%c”: ký tự định dạng không hợp lệ" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "lỗi ống dẫn" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: vượt quá mức độ eval lồng nhau tối đa (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: vượt quá mức độ nguồn lồng nhau tối đa (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: vượt quá mức độ các hàm lồng nhau tối đa (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: bị hạn chế: không thể dùng “/” trong tên lệnh" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s: không tìm thấy lệnh" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, fuzzy, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: không thể thực hiện tập tin nhị phân" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: bộ thông dịch sai" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: không thể thực hiện tập tin nhị phân: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "“%s”: là lệnh tích hợp đặc biệt" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "không thể nhân đôi fd %d thành fd %d" @@ -1093,70 +1103,70 @@ msgstr "vượt quá ngưỡng đệ quy của biểu thức" msgid "recursion stack underflow" msgstr "tràn ngược ngăn xếp đệ quy" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "lỗi cú pháp trong biểu thức" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "thử gán cho thứ không phải biến" -#: expr.c:530 +#: expr.c:531 #, fuzzy msgid "syntax error in variable assignment" msgstr "lỗi cú pháp trong biểu thức" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "chia cho không" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "lỗi: “token expassign” sai" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "cần “:” cho biểu thức điều kiện" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "số mũ nhỏ hơn 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "cần định danh sau tăng/giảm dần trước" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "thiếu “)”" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "lỗi cú pháp: cần toán hạng" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "lỗi cú pháp: toán tử số học không hợp lệ" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (thẻ bài lỗi là \"%s\")" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "cơ số (toán học) không hợp lệ" -#: expr.c:1582 +#: expr.c:1587 #, fuzzy msgid "invalid integer constant" msgstr "%s: sai số lượng dòng" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "cơ số có giá trị quá lớn" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: lỗi biểu thức\n" @@ -1165,7 +1175,7 @@ msgstr "%s: lỗi biểu thức\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: không thể truy cập thư mục cấp trên" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "không thể đặt lại chế độ “nodelay” cho fd %d" @@ -1185,169 +1195,169 @@ msgstr "save_bash_input: đã có bộ đệm cho fd mới %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "pid được tánh nhánh %d có vẻ đang chạy trong công việc %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "đang xóa công việc bị dừng chạy %d với nhóm tiến trình %ld" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) được đánh dấu vẫn hoạt động" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: không có pid như vậy" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "Tín hiệu %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "Xong" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "Bị dừng" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "Bị dừng(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "Đang chạy" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "Xong(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "Thoát %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "Không rõ trạng thái" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(xuất ra core)" -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid tiến trình con (%ld thành %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld không phải là tiến trình con của hệ vỏ này" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Không có mục ghi về tiến trình %ld" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: công việc %d bị dừng chạy" -#: jobs.c:3564 +#: jobs.c:3551 #, fuzzy, c-format msgid "%s: no current jobs" msgstr "%s: không có công việc như vậy" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: công việc bị chấm dứt" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: công việc %d đã đang chạy nền" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: đang bật WNOHANG để tránh bị chặn vô hạn" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: dòng %d: " -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (xuất ra core)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(wd ngay: %s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp bị lỗi" -#: jobs.c:4447 +#: jobs.c:4434 #, fuzzy msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: kỷ luật dòng" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: kỷ luật dòng" # Nghĩa chữ : dừng dịch -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "không thể đặt nhóm tiến trình cuối cùng (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "không có điều khiển công việc trong hệ vỏ này" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: khẳng định gặp lỗi: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1356,51 +1366,51 @@ msgstr "" "\r\n" "malloc: %s:%d: khẳng định bị sai\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "không rõ" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "" "malloc (cấp phát bộ nhớ): khối bộ nhớ dành riêng trên danh sách các khối còn " "trống bị ghi vào" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: đã được gọi với đối số khối đã được giải phóng" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: đã được gọi với đối số khối chưa cấp phát" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: phát hiện sự tràn ngược; mh_nbytes ở ngoại phạm vi" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 #, fuzzy msgid "free: underflow detected; magic8 corrupted" msgstr "free: phát hiện sự tràn ngược; mh_nbytes ở ngoại phạm vi" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: kích cỡ đoạn đầu và cuối không trùng" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: đã được gọi với đối số khối chưa cấp phát" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: phát hiện sự tràn ngược; mh_nbytes nằm ngoài phạm vi cho phép" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 #, fuzzy msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: phát hiện sự tràn ngược; mh_nbytes nằm ngoài phạm vi cho phép" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: kích cỡ đoạn đầu và cuối không trùng" @@ -1442,22 +1452,22 @@ msgstr "%s: đặc tả đường dẫn mạng sai" msgid "network operations not supported" msgstr "không hỗ trợ thao tác mạng" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: không thể chuyển đổi miền địa phương (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: không thể chuyển đổi miền địa phương (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: không thể chuyển đổi miền địa phương (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: không thể chuyển đổi miền địa phương (%s): %s" @@ -1475,138 +1485,138 @@ msgstr "Bạn có thư mới trong $_" msgid "The mail in %s has been read\n" msgstr "Đã đọc thư trong %s\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "lỗi cú pháp: cần biểu thức số học" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "lỗi cú pháp: gặp dấu chấm phẩy “;” bất thường" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "lỗi cú pháp: “((%s))”" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: kiểu chỉ lệnh sai %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "tài liệu này ở dòng %d định giới bằng kết thúc tập tin (muốn “%s”)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: chỉ dẫn chuyển hướng “%d” nằm ngoài phạm vi" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "vượt quá số lượng tài-liệu-đây tối đa" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "gặp kết thúc tập tin bất thường trong khi tìm “%c” tương ứng" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "gặp kết thúc tập tin bất thường trong khi tìm “]]”" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "gặp lỗi cú pháp trong biểu thức điều kiện: thẻ bài bất thường “%s”" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "gặp lỗi cú pháp trong biểu thức điều kiện" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "gặp thẻ bài bất thường “%s”, cần “)”" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "cần “)”" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "đối số bất thường “%s” cho toán tử một ngôi điều kiện" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "đối số bất thường cho toán tử một ngôi điều kiện" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "thẻ bài bất thường “%s”, cần toán tử hai ngôi điều kiện" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "cần toán tử hai ngôi điều kiện" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "đối số bất thường “%s” cho toán tử hai ngôi điều kiện" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "đối số bất thường cho toán tử hai ngôi điều kiện" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "gặp thẻ bài bất thường “%c” trong câu lệnh điều kiện" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "gặp thẻ bài bất thường “%s” trong câu lệnh điều kiện" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "gặp thẻ bài bất thường “%d” trong câu lệnh điều kiện" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "có lỗi cú pháp ở gần thẻ bài bất thường “%s”" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "lỗi cú pháp ở gần “%s”" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "lỗi cú pháp: kết thúc tập tin bất thường" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "lỗi cú pháp" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Dùng \"%s\" để rời hệ vỏ.\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "gặp kết thúc tập tin bất thường trong khi tìm “)” tương ứng" @@ -1645,94 +1655,94 @@ msgstr "xtrace_set: con trỏ tập tin NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: “%c”: ký tự định dạng không hợp lệ" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "bộ mô tả tập tin ở ngoại phạm vi" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: chuyển hướng chưa rõ ràng" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: không thể ghi đè lên tập tin đã có" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: bị hạn chế: không thể chuyển hướng kết xuất" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "không thể tạo tập tin tạm thời cho tài liệu này: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: không thể gán fd vào biến" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port không được hỗ trợ nếu không có mạng" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "lỗi chuyển hướng: không thể nhân đôi fd" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "không tìm thấy /tmp, hãy tạo mới!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "“/tmp” phải là tên thư mục hợp lệ" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: tùy chọn không hợp lệ" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "không thể đặt uid thành %d: uid chịu tác động %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "không thể đặt gid thành %d: gid chịu tác động %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: Là một thư mục" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "Không có tên!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, phiên bản %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1741,324 +1751,324 @@ msgstr "" "Cách dùng:\t%s [tùy chọn GNU dài] [tùy chọn] …\n" "\t\t%s [tùy chọn GNU dài] [tùy chọn] tập-tin-văn-lệnh …\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "Tùy chọn dài:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Tùy chọn:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD hoặc -c lệnh hay -O tùy-chọn-ngắn\t\t(chỉ gọi)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s hoặc -o tùy-chọn\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Gõ “%s -c \"help set\"” để xem thông tin về các tùy chọn hệ vỏ.\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Gõ “%s -c help” để xem thông tin về các lệnh hệ vỏ tích hợp.\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" "Dùng lệnh “bashbug” để thông báo lỗi.\n" "Báo cáo các lỗi dịch cho: .\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "Trang chủ bash: \n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "" "Trợ giúp chung về cách sử dụng phần mềm GNU : \n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: thao tác không hợp lệ" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "Tín hiệu giả" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "Treo" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "Ngắt" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "Thoát" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "Câu lệnh không được phép" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "Theo vết/đặt bẫy BPT" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "Câu lệnh HỦY BỎ" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "Câu lệnh EMT" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "Lỗi dấu chấm động" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "Bị giết" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "Lỗi bus" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "Lỗi phân đoạn" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "Lỗi lệnh gọi hệ thống" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "Ống dẫn hỏng" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "Đồng hồ báo thức" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "Bị chấm dứt" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "Điều kiện IO gấp" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "Bị dừng (tín hiệu)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "Tiếp tục" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "Tiến trình con đã giết hoặc dừng" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "Bị dừng (tty nhập)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "Bị dừng (tty xuất)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O sẵn sàng" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "Giới hạn CPU" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "Giới hạn tập tin" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "Báo động (ảo)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "Báo động (hồ sơ)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "Cửa sổ bị thay đổi" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "Khóa bản ghi" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "Tín hiệu người dùng 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "Tín hiệu người dùng 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "Dữ liệu nhập HFT bị hoãn" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "sắp bị mất điện đột ngột" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "hệ thống sắp sụp đổ" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "chuyển tiến trình sang CPU khác" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "lỗi lập trình" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "Có chế độ màn hình HFT" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "Không có chế độ màn hình HFT" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "Đã hoàn thành chuỗi âm thanh HFT" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "yêu cầu thông tin" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "Tín hiệu lạ #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "sai chỉ số phụ: không có đóng “%s” trong %s" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: không thể gán danh sách cho bộ phận của mảng" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "không thể tạo ống dẫn để thay thế tiến trình" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "không thể tạo tiến trình con để thay thế tiến trình" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "không thể mở ống dẫn đặt tên %s để đọc" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "không thể mở ống dẫn có tên %s để ghi" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "không thể nhân đôi ống dẫn đặt tên %s thành fd %d" -#: subst.c:6213 +#: subst.c:6370 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "sai thay thế: không có \"“\" đóng trong %s" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "không thể tạo ống dẫn để thay thế lệnh" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "không thể tạo tiến trình con để thay thế lệnh" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: không thể nhân đôi ống dẫn thành fd 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: triển khai gián tiếp không hợp lệ" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "“%s”: tên biến không hợp lệ" -#: subst.c:7256 +#: subst.c:7478 #, fuzzy, c-format msgid "%s: parameter not set" msgstr "%s: tham số null hoặc chưa được đặt" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: tham số null hoặc chưa được đặt" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: biểu thức chuỗi con < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: thay thế sai" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: không thể gán bằng cách này" -#: subst.c:9814 +#: subst.c:10111 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" "phiên bản hệ vỏ mới sẽ ép buộc ước lượng dưới dạng một hàm thay thế số học" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sai thay thế: không có \"“\" đóng trong %s" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "không khớp: %s" @@ -2081,21 +2091,21 @@ msgstr "cần “)”" msgid "`)' expected, found %s" msgstr "cần “)” nhưng lại nhận được %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: cần toán tử hai ngôi" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: cần toán tử một ngôi" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "thiếu “]”" -#: test.c:899 +#: test.c:914 #, fuzzy, c-format msgid "syntax error: `%s' unexpected" msgstr "lỗi cú pháp: gặp dấu chấm phẩy “;” bất thường" @@ -2104,17 +2114,17 @@ msgstr "lỗi cú pháp: gặp dấu chấm phẩy “;” bất thường" msgid "invalid signal number" msgstr "số thứ tự tín hiệu không hợp lệ" -#: trap.c:325 +#: trap.c:323 #, fuzzy, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "eval: vượt quá mức độ eval lồng nhau tối đa (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: giá trị sai trong danh sách trap_list[%d]: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2122,89 +2132,94 @@ msgstr "" "run_pending_traps: bộ xử lý tín hiệu là SIG_DFL, đang gửi lại %d (%s) cho " "chính mình" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: tín hiệu sai %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "gặp lỗi khi nhập vào định nghĩa hàm cho “%s”" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "cấp hệ vỏ (%d) quá cao nên đặt lại thành 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: không có ngữ cảnh hàm ở phạm vi hiện thời" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: không thể gán giá trị cho biến" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "" + +#: variables.c:3459 #, fuzzy, c-format msgid "%s: assigning integer to name reference" msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: không có ngữ cảnh hàm ở phạm vi hiện thời" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s có exportstr null" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "sai ký tự %d trong exportstr cho %s" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "không có “=” trong exportstr cho %s" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: đầu của shell_variables (các biến hệ vỏ) không phải là ngữ " "cảnh hàm" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "" "pop_var_context: không có ngữ cảnh global_variables (các biến toàn cục)" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: đầu của shell_variables (các biến hệ vỏ) không phải là phạm vi " "môi trường tạm thời" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: không thể mở như là TẬP-TIN" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: sai đặt giá trị cho bộ mô tả tập tin vết" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: giá trị so sánh nằm ngoài phạm vi" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgid "Copyright (C) 2022 Free Software Foundation, Inc." msgstr "Tác quyền (C) năm 2014 của Tổ chức Quỹ Phần mềm Tự do, Inc." #: version.c:47 version2.c:47 @@ -2294,12 +2309,16 @@ msgstr "command [-pVv] LỆNH [Đ.SỐ …]" #: builtins.c:78 #, fuzzy -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgid "" +"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] " +"[name ...]" msgstr "declare [-aAfFgilnrtux] [-p] [TÊN[=GIÁ-TRỊ] …]" #: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgid "" +"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] " +"[name ...]" msgstr "typeset [-aAfFgilnrtux] [-p] TÊN[=GIÁ-TRỊ] …" #: builtins.c:82 @@ -2402,7 +2421,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +#, fuzzy +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o TÊN-TÙY-CHỌN] [--] [ĐỐI-SỐ …]" #: builtins.c:144 @@ -2450,7 +2470,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] TÊN [TÊN …]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [GIỚI-HẠN]" #: builtins.c:174 @@ -2495,11 +2516,13 @@ msgstr "" "[ else CÁC;CÂU;LỆNH; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "while COMMANDS; do COMMANDS-2; done" msgstr "while CÁC;CÂU;LỆNH; do CÁC;CÂU;LỆNH; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" +#, fuzzy +msgid "until COMMANDS; do COMMANDS-2; done" msgstr "until CÁC;CÂU;LỆNH; do CÁC;CÂU;LỆNH; done" #: builtins.c:200 @@ -3861,7 +3884,9 @@ msgid "" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as " "word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter " +"characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY " "variable.\n" @@ -3944,7 +3969,7 @@ msgstr "" " Mã trả lại là số không, nếu không gặp kết thúc tập tin, hay chờ quá\n" " lâu, hoặc đưa ra bộ mô tả tập tin sai làm đối số cho “-u”." -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3965,7 +3990,7 @@ msgstr "" " Trả lại N, hoặc bị lỗi nếu hệ vỏ không đang chạy một hàm hay văn\n" " lệnh." -#: builtins.c:1054 +#: builtins.c:1055 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4138,7 +4163,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công trừ phi gặp tùy chọn sai." -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4177,7 +4202,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay TÊN chỉ-đọc." -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4210,7 +4235,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn hay TÊN sai," -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4248,7 +4273,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay TÊN không hợp lệ." -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4266,7 +4291,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công trừ khi N âm hay lớn hơn $#." -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4289,7 +4314,7 @@ msgstr "" " Trả lại trạng thái của câu lệnh cuối cùng được thực thi trong\n" " TẬP-TIN; không thành công nếu không thể đọc TẬP-TIN." -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4314,7 +4339,7 @@ msgstr "" " Trả lại thành công trừ khi chức năng điều khiển công việc không\n" " được bật hoặc gặp lỗi." -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4473,7 +4498,7 @@ msgstr "" " Trả lại thành công nếu BTHỨC định giá là Đúng; không thành công\n" " nếu BTHỨC định giá thành Sai hay đối số được chỉ ra sai." -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4485,7 +4510,7 @@ msgstr "" " Lệnh này cùng chức năng lệnh tích hợp \"test\", nhưng đối số cuối\n" " cùng phải là ký tự “]” để khớp với “[” ở đầu." -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4504,7 +4529,7 @@ msgstr "" " Trạng thái thoát:\n" " Lúc nào cũng thành công." -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4581,7 +4606,7 @@ msgstr "" " Trả lại thành công trừ phi đưa ra ĐTTH sai hay tùy chọn\n" " sai." -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4638,7 +4663,7 @@ msgstr "" " Trả lại thành công nếu tìm thấy tất cả các TÊN; bị lỗi nếu không tìm " "thấy." -#: builtins.c:1431 +#: builtins.c:1432 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4732,7 +4757,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay có lỗi phát sinh." -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4765,7 +4790,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không có CHẾ_ĐỘ sai hay tùy chọn sai." -#: builtins.c:1502 +#: builtins.c:1503 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4813,7 +4838,7 @@ msgstr "" " Trả về trạng thái của ID cuối; không thành công nếu ID sai hoặc đưa\n" " ra tùy chọn sai." -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4837,7 +4862,7 @@ msgstr "" " Trả lại trạng thái của PID; không thành công nếu PID sai, hoặc nếu\n" " đưa ra tùy chọn sai." -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4860,7 +4885,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của câu lệnh cuối cùng được chạy." -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4890,7 +4915,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của câu lệnh cuối cùng được chạy." -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4924,7 +4949,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của câu lệnh cuối cùng được chạy." -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4953,7 +4978,7 @@ msgstr "" " Trạng thái thoát:\n" " Trạng thái trả về là trạng thái trả về của ỐNG-DẪN." -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4971,7 +4996,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của câu lệnh cuối cùng được chạy." -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5006,12 +5031,14 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của câu lệnh cuối cùng được chạy." -#: builtins.c:1647 +#: builtins.c:1648 +#, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5025,12 +5052,14 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của câu lệnh cuối cùng được chạy." -#: builtins.c:1659 +#: builtins.c:1660 +#, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS " +"has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." @@ -5044,7 +5073,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của câu lệnh cuối cùng được chạy." -#: builtins.c:1671 +#: builtins.c:1672 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5066,7 +5095,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái thoát của câu LỆNH." -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -5089,7 +5118,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu TÊN không phải chỉ đọc." -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5107,7 +5136,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của câu lệnh cuối cùng được chạy." -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5130,7 +5159,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của công việc đã tiếp tục lại." -#: builtins.c:1726 +#: builtins.c:1727 #, fuzzy msgid "" "Evaluate arithmetic expression.\n" @@ -5149,7 +5178,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại 1 nếu BTHỨC tính là 0; không thì trả lại 0." -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5198,7 +5227,7 @@ msgstr "" " Trạng thái thoát:\n" " 0 hay 1 phụ thuộc vào giá trị của BTHỨC." -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5302,7 +5331,7 @@ msgstr "" " HISTIGNORE\tDanh sách mẫu cách bằng dấu hai chấm dùng để quyết định\n" " \tnhững câu lệnh nào nên được lưu vào danh sách lịch sử.\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5356,7 +5385,7 @@ msgstr "" " Trả lại thành công nếu không đưa ra đối số sai, cũng không sai\n" " chuyển đổi thư mục." -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5404,7 +5433,7 @@ msgstr "" " Trả lại thành công nếu không đưa ra đối số sai, cũng không sai\n" " chuyển đổi thư mục." -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5457,7 +5486,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả về thành công nếu không đưa ra tùy chọn sai hay gặp lỗi." -#: builtins.c:1916 +#: builtins.c:1917 #, fuzzy msgid "" "Set and unset shell options.\n" @@ -5494,7 +5523,8 @@ msgstr "" " Trả lại thành công nếu TÊN_TÙY_CHỌN được bật; không thành công nếu\n" " đưa ra tùy chọn sai hay TÊN_TÙY_CHỌN bị tắt." -#: builtins.c:1937 +#: builtins.c:1938 +#, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5517,6 +5547,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" " \t string for strftime(3)\n" @@ -5560,7 +5592,7 @@ msgstr "" " Trả lại thành công trừ phi đưa ra tùy chọn sai hay gặp lỗi khi ghi\n" " hay gán." -#: builtins.c:1971 +#: builtins.c:1974 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5612,7 +5644,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay gặp lỗi." -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5633,7 +5665,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay gặp lỗi." -#: builtins.c:2016 +#: builtins.c:2019 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5692,7 +5724,7 @@ msgstr "" " Trả lại thành công trừ phi đưa ra tùy chọn sai, hoặc TÊN có một\n" " đặc tả tự hoàn thiện được xác định." -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5765,7 +5797,7 @@ msgstr "" " Trả lại thành công trừ phi đưa ra tùy chọn sai và MẢNG không phải\n" " chỉ đọc hay không là một mảng chỉ số." -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5775,6 +5807,10 @@ msgstr "" " \n" " Giống với “mapfile”." +#, c-format +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: khóa mảng liên kết không hợp lệ" + #, fuzzy #~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." #~ msgstr "Tác quyền (C) năm 2015 của Tổ chức Quỹ Phần mềm Tự do, Inc." diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo index 6d2dc9f92..e3171aefc 100644 Binary files a/po/zh_CN.gmo and b/po/zh_CN.gmo differ diff --git a/po/zh_CN.po b/po/zh_CN.po index 4477a8124..1869a358d 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -9,107 +9,89 @@ # liushuyu , 2016. # Mingye Wang , 2015, 2016. # Boyuan Yang <073plan@gmail.com>, 2018, 2019, 2020. +# Wenbin Lv , 2021, 2022. # -# KNOWN DEFECTS (easy fixes, tedious work; sorted by priority): -# 0. Translation coverage when upstream sends new strings. +# 本翻译目前采用的格式约定,和其他注意事项: # -# 1. Argument lists in `help` are translated, but the `help blah` text still -# refers to the original name like WORDS. -# -# These long helps should be changed to follow their `help` synopsis. Use -# <参数> to refer to `参数' in the one-line synopsis. -# -# 2. Passive voice. When used inappropriately, they sound even worse in -# Chinese than in English. In fact huge amounts of `被' is what you use to -# spot translated text. (You don't always need `被' for passive voice -# either.) -# -# 3. Typography. -# a. Capitalization. English convensions mangle command names in help text -# if it's the first word of the sentense (e.g. `Getopts blah blah...'). -# Do yourself a favor and change the names back into lowercase. -# b. Quotes. Chinese has no `typewriter quote' convension, and standard -# “curly quotes” should be used. -# c. Colons. We don't use `: ` in Chinese; use `:`. Sometimes `:` is seen -# w/o a space (worse). -# d. Other stuff like parentheses and whitespace. Alignment can be quite -# important for Feeling Good(TM). +# 1. 冒号:冒号左边最近的分句含有中文字符时,使用中文冒号,否则使用英文冒号。 +# 2. 引号:永远使用 " ",除非被引用的字符是 " 或 ',此时保留原文(一般是 ` ')。 +# 3. 括号:括号内含有中文字符时,使用中文括号,否则使用英文括号。 +# 4. 命令帮助中,单行用法里的可替换词语(如“名称”)在完整帮助中应写成 <名称>, +# 尖括号两边按照英文括号的原则加空格。 +# 5. 注意统一术语,不确定的术语先搜索此文件看看。新术语强烈推荐“术语在线”网站。 +# 6. 经常查看上下文(源代码)对翻译的正确率很有帮助。 # msgid "" msgstr "" -"Project-Id-Version: bash 5.1\n" +"Project-Id-Version: bash 5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2020-12-07 22:28-0500\n" -"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-06-18 14:25+0800\n" +"Last-Translator: Wenbin Lv \n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.4.2\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.1\n" #: arrayfunc.c:66 msgid "bad array subscript" msgstr "数组下标不正确" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" -msgstr "%s:正在移除名称引用属性" +msgstr "%s: 正在移除名称引用属性" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "%s:无法将索引数组转化为关联数组" +msgstr "%s: 无法将索引数组转换为关联数组" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s:无效的关联数组键" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" -msgstr "%s:无法为非数字的索引赋值" +msgstr "%s: 无法为非数值的索引赋值" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" -msgstr "%s:%s:为关联数组赋值时必须使用下标" +msgstr "%s: %s: 为关联数组赋值时必须使用下标" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" -msgstr "%s:无法创建: %s" +msgstr "%s: 无法创建:%s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "bash_execute_unix_command: 无法为命令找到键映射" +msgstr "bash_execute_unix_command: 无法找到命令的键映射" -#: bashline.c:4459 +# 为了可读性,不改动外层引号 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "%s:第一个非空字符不是“\"”" +msgstr "%s: 第一个非空白字符不是 `\"'" -#: bashline.c:4488 +# %c == ' 或 ",为了可读性,不改动外层引号 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" -msgstr "%2$s 中没有闭合的“%1$c”" +msgstr "%2$s 中没有右 `%1$c'" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" -msgstr "%s:缺少冒号分隔符" +msgstr "%s: 缺少冒号分隔符" -#: bashline.c:4555 -#, fuzzy, c-format -#| msgid "`%s': cannot unbind" +#: bashline.c:4733 +#, c-format msgid "`%s': cannot unbind in command keymap" -msgstr "“%s”: 无法解除绑定" +msgstr "\"%s\": 无法解除绑定命令键映射" #: braces.c:327 #, c-format @@ -124,12 +106,12 @@ msgstr "大括号展开:为 %u 个元素分配内存失败" #: braces.c:451 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "大括号展开:为“%s”分配内存失败" +msgstr "大括号展开:为 \"%s\"分配内存失败" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" -msgstr "“%s”: 无效的别名" +msgstr "\"%s\": 无效的别名" #: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" @@ -138,17 +120,17 @@ msgstr "未启用行编辑" #: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" -msgstr "“%s”: 无效的键映射名" +msgstr "\"%s\": 无效的键映射名" #: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" -msgstr "%s:无法读取: %s" +msgstr "%s: 无法读取:%s" #: builtins/bind.def:328 builtins/bind.def:358 #, c-format msgid "`%s': unknown function name" -msgstr "“%s”: 未知函数名" +msgstr "\"%s\": 未知的函数名" #: builtins/bind.def:336 #, c-format @@ -159,12 +141,12 @@ msgstr "%s 未与任何键绑定。\n" #: builtins/bind.def:340 #, c-format msgid "%s can be invoked via " -msgstr "%s 可以被调用,通过 " +msgstr "%s 已被绑定到 " #: builtins/bind.def:378 builtins/bind.def:395 #, c-format msgid "`%s': cannot unbind" -msgstr "“%s”: 无法解除绑定" +msgstr "\"%s\": 无法解除绑定" #: builtins/break.def:77 builtins/break.def:119 msgid "loop count" @@ -172,23 +154,9 @@ msgstr "循环计数" #: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "仅在 `for', `while', 或者`until' 循环中有意义" +msgstr "仅在 \"for\"、\"while\" 或者 \"until\" 循环中有意义" #: builtins/caller.def:136 -#, fuzzy -#| msgid "" -#| "Return the context of the current subroutine call.\n" -#| " \n" -#| " Without EXPR, returns \"$line $filename\". With EXPR, returns\n" -#| " \"$line $subroutine $filename\"; this extra information can be used to\n" -#| " provide a stack trace.\n" -#| " \n" -#| " The value of EXPR indicates how many call frames to go back before the\n" -#| " current one; the top frame is frame 0.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns 0 unless the shell is not executing a shell function or EXPR\n" -#| " is invalid." msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -199,30 +167,25 @@ msgid "" " The value of EXPR indicates how many call frames to go back before the\n" " current one; the top frame is frame 0." msgstr "" -"返回当前子调用的上下文。\n" -" \n" -" 不带有 EXPR 时,返回 \"$line $filename\"。带有 EXPR 时,返回\n" -" \"$line $subroutine $filename\";这个额外的信息可以被用于提供\n" -" 栈追踪。\n" +"返回当前子例程调用的上下文。\n" " \n" -" EXPR 的值 显示了到当前调用帧需要回去多少个调用帧;顶部帧\n" -" 是第 0 帧。\n" +" 不带有 <表达式> 时,返回 \"$line $filename\"。带有 <表达式> 时,\n" +" 返回 \"$line $subroutine $filename\";这个额外的信息可以用来提供\n" +" 栈跟踪 (stack trace)。\n" " \n" -" 退出状态:\n" -" 除非 shell 不在执行一个 shell 函数或者 EXPR 无效,否则返回结\n" -" 果为0。" +" <表达式> 的值表示从当前调用帧需要回去多少个调用帧;栈顶帧是第 0 帧。" #: builtins/cd.def:327 msgid "HOME not set" msgstr "HOME 未设定" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "参数太多" #: builtins/cd.def:342 msgid "null directory" -msgstr "空目录" +msgstr "空值目录" #: builtins/cd.def:353 msgid "OLDPWD not set" @@ -241,37 +204,37 @@ msgstr "警告:" #: builtins/common.c:148 #, c-format msgid "%s: usage: " -msgstr "%s:用法:" +msgstr "%s: 用法:" -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" -msgstr "%s:选项需要一个参数" +msgstr "%s: 选项需要一个参数" #: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" -msgstr "%s:需要数字参数" +msgstr "%s: 需要数值参数" #: builtins/common.c:207 #, c-format msgid "%s: not found" -msgstr "%s:未找到" +msgstr "%s: 未找到" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" -msgstr "%s:无效选项" +msgstr "%s: 无效的选项" #: builtins/common.c:223 #, c-format msgid "%s: invalid option name" -msgstr "%s:无效的选项名" +msgstr "%s: 无效的选项名" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" -msgstr "“%s”: 不是有效的标识符" +msgstr "\"%s\": 不是有效的标识符" #: builtins/common.c:240 msgid "invalid octal number" @@ -281,237 +244,241 @@ msgstr "无效的八进制数" msgid "invalid hex number" msgstr "无效的十六进制数" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" -msgstr "无效数字" +msgstr "无效的数字" #: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" -msgstr "%s:无效的信号声明" +msgstr "%s: 无效的信号说明符" #: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "“%s”: 不是有效的进程号或者任务声明" +msgstr "\"%s\": 不是一个 pid 或有效的任务说明符" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" -msgstr "%s:只读变量" +msgstr "%s: 只读变量" + +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s: 无法赋值" -#: builtins/common.c:274 +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" -msgstr "%s:%s 越界" +msgstr "%s: %s超出范围" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "参数" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" -msgstr "%s 越界" +msgstr "%s超出范围" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" -msgstr "%s:无此任务" +msgstr "%s: 无此任务" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" -msgstr "%s:无任务控制" +msgstr "%s: 无任务控制" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "无任务控制" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" -msgstr "%s:受限的" +msgstr "%s: 受限" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" -msgstr "受限的" +msgstr "受限" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" -msgstr "%s:不是 shell 内建" +msgstr "%s: 不是 shell 内建" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" -msgstr "写错误: %s" +msgstr "写入错误:%s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" -msgstr "设定终端属性时出错: %s" +msgstr "设定终端属性时出错:%s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" -msgstr "获取终端属性时出错: %s" +msgstr "获取终端属性时出错:%s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" -msgstr "%s:获取当前目录时出错: %s:%s\n" +msgstr "%s: 获取当前目录时出错:%s:%s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" -msgstr "%s:模糊的任务声明" +msgstr "%s: 有歧义的任务说明符" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" -msgstr "此版本内帮助不可用" +msgstr "帮助在当前版本中不可用" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" -msgstr "%s:无法取消设定: 只读 %s" +msgstr "%s: 无法取消设定:只读%s" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" -msgstr "%s:无法取消设定" +msgstr "%s: 无法取消设定" #: builtins/complete.def:287 #, c-format msgid "%s: invalid action name" -msgstr "%s:无效的动作名" +msgstr "%s: 无效的动作名" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" -msgstr "%s:没有补全声明" +msgstr "%s: 没有补全规约" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" -msgstr "警告: -F 选项可能不像您预期的那样工作" +msgstr "警告:-F 选项可能不像您预期的那样工作" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" -msgstr "警告: -C 选项可能不像您预期的那样工作" +msgstr "警告:-C 选项可能不像您预期的那样工作" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" -msgstr "当前未执行补全功能" +msgstr "当前未在执行补全函数" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "只能在函数中使用" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "无法用 \"-f\" 生成函数" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s: 只读函数" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "%s:引用变量不能为数组" +msgstr "%s: 引用变量不能为数组" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "%s:不允许名称引用变量引用自身" +msgstr "%s: 不允许名称引用变量引用自身" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" -msgstr "%s:循环变量名引用" +msgstr "%s: 循环的名称引用" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" -msgstr "“%s”: 无效的名称引用变量名" - -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "无法用 `-f' 生成函数" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s:只读函数" +msgstr "\"%s\": 名称引用变量引用的变量名无效" -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s:引号内的复合数组赋值已被弃用" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" -msgstr "%s:无法以这种方式销毁数组变量" +msgstr "%s: 无法以这种方式销毁数组变量" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "%s:无法将关联数组转化为索引数组" +msgstr "%s: 无法将关联数组转换为索引数组" + +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: 带引号的复合数组赋值已被弃用" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "动态加载不可用" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" -msgstr "无法打开共享对象 %s:%s" +msgstr "无法打开共享目标 %s:%s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" -msgstr "无法在共享对象 %2$s 中找到 %1$s: %3$s" +msgstr "无法在共享目标 %2$s 中找到 %1$s:%3$s" -#: builtins/enable.def:388 -#, fuzzy, c-format -#| msgid "%s: not dynamically loaded" +#: builtins/enable.def:422 +#, c-format msgid "%s: dynamic builtin already loaded" -msgstr "%s:未以动态方式加载" +msgstr "%s: 动态内建已经加载" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "为 %s 载入函数失败 (%d): 未载入" +msgstr "%s 的加载函数返回失败 (%d):未加载" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" -msgstr "%s:未以动态方式加载" +msgstr "%s: 未动态加载" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" -msgstr "%s:无法删除: %s" +msgstr "%s: 无法删除:%s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" -msgstr "%s:是一个目录" +msgstr "%s: 是一个目录" #: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" -msgstr "%s:不是常规文件" +msgstr "%s: 不是普通文件" #: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" -msgstr "%s:文件太大" +msgstr "%s: 文件太大" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" -msgstr "%s:无法执行二进制文件" +msgstr "%s: 无法执行二进制文件" #: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 #, c-format msgid "%s: cannot execute: %s" -msgstr "%s:无法执行: %s" +msgstr "%s: 无法执行:%s" #: builtins/exit.def:64 #, c-format @@ -520,12 +487,12 @@ msgstr "注销\n" #: builtins/exit.def:89 msgid "not login shell: use `exit'" -msgstr "不是登录 shell: 使用 `exit'" +msgstr "不是登录 shell:使用 \"exit\"" #: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" -msgstr "有停止的任务。\n" +msgstr "有已停止的任务。\n" #: builtins/exit.def:123 #, c-format @@ -539,12 +506,12 @@ msgstr "未找到命令" #: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 #: builtins/fc.def:412 msgid "history specification" -msgstr "历史声明" +msgstr "历史说明符" #: builtins/fc.def:444 #, c-format msgid "%s: cannot open temp file: %s" -msgstr "%s:无法打开临时文件: %s" +msgstr "%s: 无法打开临时文件:%s" #: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" @@ -558,12 +525,12 @@ msgstr "在不带任务控制的情况下启动了任务 %d" #: builtins/getopt.c:110 #, c-format msgid "%s: illegal option -- %c\n" -msgstr "%s:非法选项 -- %c\n" +msgstr "%s: 非法的选项 -- %c\n" #: builtins/getopt.c:111 #, c-format msgid "%s: option requires an argument -- %c\n" -msgstr "%s:选项需要一个参数 -- %c\n" +msgstr "%s: 选项需要一个参数 -- %c\n" #: builtins/hash.def:91 msgid "hashing disabled" @@ -572,7 +539,7 @@ msgstr "已禁用哈希" #: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" -msgstr "%s:哈希表为空\n" +msgstr "%s: 哈希表为空\n" #: builtins/hash.def:267 #, c-format @@ -582,25 +549,27 @@ msgstr "命中\t命令\n" #: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "Shell 命令匹配关键字“" +msgstr[0] "匹配关键字 \"" #: builtins/help.def:135 msgid "" "'\n" "\n" msgstr "" +"\" 的 shell 命令\n" +"\n" #: builtins/help.def:185 #, c-format msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "没有与“%s”匹配的帮助主题。尝试使用“help help”、“man -k %s”或“info %s”。" +msgstr "没有与 \"%s\" 匹配的帮助主题。尝试使用 \"help help\" 或 \"man -k %s\" 或 \"info %s\"。" -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" -msgstr "%s:无法打开: %s" +msgstr "%s: 无法打开:%s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -611,123 +580,123 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" -"这些 shell 命令是内部定义的。请输入 `help' 以获取一个列表。\n" -"输入 `help 名称' 以得到有关函数`名称'的更多信息。\n" -"使用 `info bash' 来获得关于 shell 的更多一般性信息。\n" -"使用 `man -k' 或 `info' 来获取不在列表中的命令的更多信息。\n" +"这些 shell 命令是内部定义的。输入 \"help\" 以获取本列表。\n" +"输入 \"help 名称\" 以得到有关函数 \"名称\" 的更多信息。\n" +"使用 \"info bash\" 来获得关于 shell 的更多一般性信息。\n" +"使用 \"man -k\" 或 \"info\" 来获取不在本列表中的命令的更多信息。\n" "\n" -"名称旁边的星号(*)表示该命令被禁用。\n" +"名称旁边的星号 (*) 表示该命令被禁用。\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "最多只能使用 -anrw 选项中的一个" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "历史位置" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" -msgstr "%s:无效时间戳" +msgstr "%s: 无效的时间戳" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" -msgstr "%s:历史扩展失败" +msgstr "%s: 历史展开失败" #: builtins/inlib.def:71 #, c-format msgid "%s: inlib failed" -msgstr "%s:inlib 失败" +msgstr "%s: inlib 失败" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" -msgstr "其他选项不能与 `-x' 同时使用" +msgstr "其他选项不能与 \"-x\" 同时使用" #: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "%s:参数必须是进程或任务 ID" +msgstr "%s: 参数必须是进程或任务 ID" #: builtins/kill.def:274 msgid "Unknown error" msgstr "未知错误" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "需要表达式" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" -msgstr "%s:不是一个索引数组" +msgstr "%s: 不是一个索引数组" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" -msgstr "%s:无效的文件描述符声明" +msgstr "%s: 指定的文件描述符无效" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" -msgstr "%d: 无效的文件描述符: %s" +msgstr "%d: 无效的文件描述符:%s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" -msgstr "%s:无效的行数" +msgstr "%s: 无效的行数" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" -msgstr "%s:无效的数组基数" +msgstr "%s: 无效的数组起始" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" -msgstr "%s:无效的回调量子" +msgstr "%s: 无效的回调间隔" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" -msgstr "空数组变量名" +msgstr "空的数组变量名" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "需要数组变量支持" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" -msgstr "“%s”: 缺少格式字符" +msgstr "\"%s\": 缺少格式字符" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" -msgstr "“%c”:无效的时间格式声明" +msgstr "\"%c\": 指定的时间格式无效" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" -msgstr "“%c”:无效格式字符" +msgstr "\"%c\": 无效的格式字符" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" -msgstr "警告: %s:%s" +msgstr "警告:%s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" -msgstr "格式解析问题: %s" +msgstr "格式解析出现问题:%s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" -msgstr "使用了 \\x 但缺少十六进制位" +msgstr "使用了 \\x 但缺少十六进制数" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "使用了 \\%c 但缺少 unicode 数" @@ -739,7 +708,7 @@ msgstr "无其他目录" #: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" -msgstr "%s:无效参数" +msgstr "%s: 无效的参数" #: builtins/pushd.def:480 msgid "" @@ -774,24 +743,22 @@ msgid "" " -N\tDisplays the Nth entry counting from the right of the list shown by\n" "\tdirs when invoked without options, starting with zero." msgstr "" -"显示当前记住的目录列表。 目录\n" -" 通过 `pushd' 命令加入这个列表;您可以\n" -" 使用 `popd' 命令对列表进行遍历。\n" -" \n" -" 选项:\n" -" -c\t删除所有元素以清除目录栈\n" -" -l\t不打印与家目录相关的以波浪号\n" -" \t为前缀的目录\n" +"显示当前记住的目录列表。 使用 \"pushd\" 命令将目录加入这个列表;\n" +" 使用 \"popd\" 命令逐个回到之前加入列表的目录。\n" +" \n" +" 选项:\n" +" -c\t删除所有元素以清空目录栈\n" +" -l\t打印目录时,不表示为以波浪号 (~) 为前缀的,\n" +" \t相对于您的主目录的路径\n" " -p\t每行一个条目打印目录栈\n" -" -v\t以栈位置为前缀,每行一个条目\n" -" \t打印目录栈\n" +" -v\t每行一个条目打印目录栈,前面加上在栈中的位置\n" " \n" -" 参数:\n" -" +N\t以 dirs 不带选项输出的顺序显示列表从左起第N个条目,\n" -" \t从 0 开始。\n" +" 参数:\n" +" +N\t显示 dirs 不带选项启动时显示的目录列表中左起第 N 个目录,\n" +" \t从零开始。\n" " \n" -" -N\t以 dirs 不带选项输出的顺序显示列表从右起第N个项目,\n" -"\t从 0 开始。" +" -N\t显示 dirs 不带选项启动时显示的目录列表中右起第 N 个目录,\n" +" \t从零开始。" #: builtins/pushd.def:723 msgid "" @@ -817,27 +784,23 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"在目录栈顶部加入一个目录,或者论询\n" -" 目录栈,是当前工作目录成为新的栈顶\n" -" 不带参数时,交换栈顶的两个目录。\n" +"将目录添加到目录栈顶,或者轮转栈直到当前工作目录成为\n" +" 新的栈顶。不带参数时,交换栈顶的两个目录。\n" " \n" " 选项:\n" -" -n\t抑制增加栈中目录时通常的改变目录的操作,\n" -" \t从而只进行栈操作。\n" +" -n\t阻止添加目录至栈时通常的改变目录操作,从而仅对栈\n" +" \t进行操作。\n" " \n" " 参数:\n" -" +N\t轮转栈使得第N个目录(`dirs' 的\n" -" \t输出列表中左起,从0开始)\n" -" \t升至栈顶。\n" +" +N\t轮转栈,使得第 N 个目录(\"dirs\" 显示的列表中左起,\n" +" \t从零开始)移动到栈顶。\n" " \n" -" -N\t轮转栈使得第N个目录(`dirs' 的\n" -" \t输出列表中右起,从0开始)\n" -" \t升至栈顶\n" +" -N\t轮转栈,使得第 N 个目录(\"dirs\" 显示的列表中右起,\n" +" \t从零开始)移动到栈顶。\n" " \n" -" dir\t添加目录至栈顶,并\n" -" \t使其成为新的当前工作目录。\n" +" 目录\t将 <目录> 添加到栈顶,使其成为当前工作目录。\n" " \n" -" `dirs' 内建命令显示目录栈." +" \"dirs\" 内建可以显示目录栈。" #: builtins/pushd.def:748 msgid "" @@ -859,69 +822,65 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"从目录栈中删除条目。不带参数时,删除\n" -" 栈顶目录并改变至新的栈顶目录。\n" +"从目录栈中删除条目。不带参数时,删除栈顶目录,并改变目录至新的栈顶目录。\n" " \n" " 选项:\n" -" -n\t抑制从栈中删除目录时通常的改变目录操作,\n" -" \t从而只进行栈操作。\n" +" -n\t阻止从栈中删除目录时通常的改变目录操作,从而仅对栈进行操作。\n" " \n" " 参数:\n" -" +N\t从 `dirs' 输出的列表中,\n" -" \t删除左起第N个条目,计数从0开始。例如:`popd +0'\n" -" \t删除第一个目录,`popd +1' 删除第二个。\n" +" +N\t删除第 N 个目录(\"dirs\" 显示的列表中左起,从零开始)。\n" +" \t例如:\"popd +0\" 删除第一个目录,\"popd +1\" 删除第二个。\n" " \n" -" -N\t从 `dirs' 输出的列表中,\n" -" \t删除右起第N个条目,计数从0开始,例如:`popd -0'\n" -" \t删除最后一个条目,`popd -1' 删除倒数第二个。\n" +" -N\t删除第 N 个目录(\"dirs\" 显示的列表中右起,从零开始)。\n" +" \t例如:\"popd -0\" 删除最后一个目录,\"popd -1\" 删除倒数第二个。\n" " \n" -" `dirs' 内建变量显示目录栈。" +" \"dirs\" 内建可以显示目录栈。" -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" -msgstr "%s:无效的超时声明" +msgstr "%s: 指定的超时时间无效" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" -msgstr "读错误: %d: %s" +msgstr "读取错误:%d: %s" #: builtins/return.def:68 msgid "can only `return' from a function or sourced script" -msgstr "只能从函数或者源脚本返回(`return')" +msgstr "只能在函数或者被 source 的脚本中使用 \"return\"" #: builtins/set.def:869 msgid "cannot simultaneously unset a function and a variable" msgstr "无法同时取消设定一个函数和一个变量" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" -msgstr "%s:不是数组变量" +msgstr "%s: 不是数组变量" #: builtins/setattr.def:189 #, c-format msgid "%s: not a function" -msgstr "%s:不是函数" +msgstr "%s: 不是函数" #: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" -msgstr "%s:无法导出" +msgstr "%s: 无法导出" #: builtins/shift.def:72 builtins/shift.def:79 msgid "shift count" -msgstr "位移计数" +msgstr "移位次数" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "无法同时设定和取消设定 shell 选项" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" -msgstr "%s:无效的 shell 选项名" +msgstr "%s: 无效的 shell 选项名" #: builtins/source.def:128 msgid "filename argument required" @@ -930,7 +889,7 @@ msgstr "需要文件名参数" #: builtins/source.def:154 #, c-format msgid "%s: file not found" -msgstr "%s:文件未找到" +msgstr "%s: 未找到文件" #: builtins/suspend.def:102 msgid "cannot suspend" @@ -943,7 +902,7 @@ msgstr "无法挂起一个登录 shell" #: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "%s 是“%s”的别名\n" +msgstr "%s 是 \"%s\" 的别名\n" #: builtins/type.def:256 #, c-format @@ -978,26 +937,26 @@ msgstr "%s 已被录入哈希表 (%s)\n" #: builtins/ulimit.def:400 #, c-format msgid "%s: invalid limit argument" -msgstr "%s:无效的 limit 参数" +msgstr "%s: 无效的限制参数" #: builtins/ulimit.def:426 #, c-format msgid "`%c': bad command" -msgstr "“%c”:命令错误" +msgstr "\"%c\": 错误的命令" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" -msgstr "%s:无法获取 limit 值: %s" +msgstr "%s: 无法获取限制:%s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" -msgstr "limit" +msgstr "限制" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" -msgstr "%s:无法修改 limit 值: %s" +msgstr "%s: 无法修改限制:%s" #: builtins/umask.def:115 msgid "octal number" @@ -1006,494 +965,504 @@ msgstr "八进制数" #: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "“%c”:无效的符号状态运算符" +msgstr "\"%c\": 无效的符号模式运算符" #: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "“%c”:无效的符号状态字符" +msgstr "\"%c\": 无效的符号模式字符" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " -msgstr "行" +msgstr " 行 " #: error.c:164 #, c-format msgid "last command: %s\n" -msgstr "上一个命令: %s\n" +msgstr "上一个命令:%s\n" #: error.c:172 #, c-format msgid "Aborting..." -msgstr "中止..." +msgstr "正在中止..." #. TRANSLATORS: this is a prefix for informational messages. #: error.c:287 #, c-format msgid "INFORM: " -msgstr "报告:" +msgstr "信息:" -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "调试警告:" + +#: error.c:488 msgid "unknown command error" msgstr "未知的命令错误" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "错误的命令类型" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "错误的条件连接符" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "错误的跳转" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" -msgstr "%s:未绑定的变量" +msgstr "%s: 未绑定的变量" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" -msgstr "\a 等待输入超时:自动注销\n" +msgstr "\a等待输入超时:自动注销\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" -msgstr "无法从 /dev/null 重定向标准输入: %s" +msgstr "无法从 /dev/null 重定向标准输入:%s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" -msgstr "时间格式: `%c': 无效的格式字符" +msgstr "时间格式:\"%c\": 无效的格式字符" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: 副进程 [%d:%s] 仍然存在" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "管道错误" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: 超出最大 eval 嵌套层数 (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s:超出最大 source 嵌套层数 (%d)" +msgstr "%s: 超出最大 source 嵌套层数 (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "%s:超出最大函数嵌套层数 (%d)" +msgstr "%s: 超出最大函数嵌套层数 (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "%s:受限的: 无法在命令名中使用 `/'" +msgstr "%s: 受限:无法在命令名中使用 \"/\"" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" -msgstr "%s:未找到命令" +msgstr "%s: 未找到命令" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" -msgstr "%s:%s" +msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s: 无法执行:找不到需要的文件" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" -msgstr "%s:%s:解释器错误" +msgstr "%s: %s: 错误的解释器" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s:无法执行二进制文件: %s" +msgstr "%s: 无法执行二进制文件:%s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" -msgstr "“%s”: 特殊内建" +msgstr "\"%s\": 是特殊内建" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "无法复制文件描述符 %d 到文件描述符 %d" #: expr.c:263 msgid "expression recursion level exceeded" -msgstr "表达式递归层次越界" +msgstr "超出表达式递归层数上限" #: expr.c:291 msgid "recursion stack underflow" msgstr "递归栈下溢" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "表达式中有语法错误" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "尝试给非变量赋值" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "变量赋值中有语法错误" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "除以 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" -msgstr "错误:表达式赋值符号错误" +msgstr "bug: 错误的表达式赋值记号" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" -msgstr "条件表达式需要 `:'" +msgstr "条件表达式需要 \":\"" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "指数小于 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "预增符或预减符后应跟有标识符" +msgstr "前缀自增或前缀自减运算符之后需要标识符" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" -msgstr "缺少“)”" +msgstr "缺少 \")\"" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" -msgstr "语法错误: 需要操作数" +msgstr "语法错误:需要操作数" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" -msgstr "语法错误: 无效的算术运算符" +msgstr "语法错误:无效的算术运算符" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "%s%s%s:%s (错误符号是 \"%s\")" +msgstr "%s%s%s: %s(错误记号是 \"%s\")" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" -msgstr "无效的算术进制" +msgstr "无效的算术底数" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "无效的整数常数" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" -msgstr "数值太大不可为算术进制的基" +msgstr "值对于底数而言过大" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" -msgstr "%s:表达式错误\n" +msgstr "%s: 表达式错误\n" #: general.c:70 msgid "getcwd: cannot access parent directories" msgstr "getcwd: 无法访问父目录" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" -msgstr "无法为文件描述符 %d 重置nodelay模式" +msgstr "无法为文件描述符 %d 重置 nodelay 模式" #: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" -msgstr "无法从文件描述符 %d 为 bash 的输入获取一个新的文件描述符" +msgstr "无法从文件描述符 %d 为 bash 的输入分配一个新的文件描述符" #: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" -msgstr "save_bash_input: 已经存在新的文件描述符 %d 的缓冲区" +msgstr "save_bash_input: 新的文件描述符 %d 的缓冲区已存在" #: jobs.c:543 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: 进程组管道" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "叉分 (fork) 出的的进程号 %d 出现在运行中的任务 %d 中" +msgstr "进程复制 (fork) 产生的 pid %d 出现在运行中的任务 %d 中" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "删除进程组 %2$ld 中已停止的任务 %1$d" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" -msgstr "add_process: 进程号 %5ld(%s) 标注为仍活着" +msgstr "add_process: pid %5ld (%s) 标记为仍存活" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" -msgstr "describe_pid: %ld: 无此进程号" +msgstr "describe_pid: %ld: 无此 pid" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "信号 %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "已完成" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "已停止" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "已停止(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "运行中" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "已完成(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "退出 %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "未知状态" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(核心已转储)" -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" -msgstr " (工作目录: %s)" +msgstr " (工作目录:%s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" -msgstr "子进程 setpgid (%ld 到 %ld)" +msgstr "子进程 setpgid(%ld 到 %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" -msgstr "wait: 进程号 %ld 不是当前 shell 的子进程" +msgstr "wait: pid %ld 不是当前 shell 的子进程" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" -msgstr "wiat_for: 没有进程 %ld 的记录" +msgstr "wait_for: 没有进程 %ld 的记录" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: 任务 %d 已停止" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" -msgstr "%s:无当前任务" +msgstr "%s: 无当前任务" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" -msgstr "%s:任务已经终止" +msgstr "%s: 任务已经终止" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" -msgstr "%s:任务 %d 已在后台" +msgstr "%s: 任务 %d 已在后台" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: 打开 WNOHANG 以避免无限阻塞" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " -msgstr "%s:行 %d: " +msgstr "%s: 第 %d 行:" -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr "(核心已转储)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" -msgstr "(当前工作目录:%s)\n" +msgstr "(当前工作目录:%s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp 失败" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control: 后台无任务控制" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: 行规则" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" -msgstr "无法设定终端进程组(%d)" +msgstr "无法设定终端进程组 (%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "此 shell 中无任务控制" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" -msgstr "malloc: 断言失败: %s\n" +msgstr "malloc: 断言失败:%s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" "\r\n" -"malloc: %s:%d:断言已修补\r\n" +"malloc: %s:%d: 断言已搞砸\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "未知" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" -msgstr "malloc: 空闲链表中的块损坏" +msgstr "malloc: 空闲列表中的块损坏" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" -msgstr "free:调用时用了已经释放的块作为参数" +msgstr "free: 调用时用了已经释放的块作为参数" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: 调用时用了未分配的块作为参数" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" -msgstr "free: 检测到下溢;mh_nbytes 越界" +msgstr "free: 检测到下溢;mh_nbytes 超出范围" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free: 检测到下溢;magic8 损坏" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" -msgstr "free: 其实和末尾块大小不一致" +msgstr "free: 起始和末尾组块大小不一致" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" -msgstr "realloc:调用时用了未分配的块作为参数" +msgstr "realloc: 调用时用了未分配的块作为参数" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" -msgstr "realloc: 检测到下溢;mh_nbytes 越界" +msgstr "realloc: 检测到下溢;mh_nbytes 超出范围" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: 检测到下溢;magic8 损坏" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" -msgstr "realloc: 其实和末尾块大小不一致" +msgstr "realloc: 起始和末尾组块大小不一致" #: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" -msgstr "register_alloc: 分配表已经充满了 FIND_ALLOC?\n" +msgstr "register_alloc: 使用 FIND_ALLOC 时分配表已满?\n" #: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" -msgstr "register_alloc: %p 在表中显示为已分配?\n" +msgstr "register_alloc: %p 已在表中显示为已分配?\n" #: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" -msgstr "register_free: %p 在表中显示为已释放?\n" +msgstr "register_free: %p 已在表中显示为未分配?\n" #: lib/sh/fmtulong.c:102 msgid "invalid base" -msgstr "无效的基" +msgstr "无效的底数" #: lib/sh/netopen.c:168 #, c-format msgid "%s: host unknown" -msgstr "%s:未知主机" +msgstr "%s: 未知的主机" #: lib/sh/netopen.c:175 #, c-format msgid "%s: invalid service" -msgstr "%s:无效的服务" +msgstr "%s: 无效的服务" #: lib/sh/netopen.c:306 #, c-format msgid "%s: bad network path specification" -msgstr "%s:错误的网络路径声明" +msgstr "%s: 指定的网络路径无效" #: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "不支持网络操作" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" -msgstr "setlocale:LC_ALL:无法改变区域选项 (%s)" +msgstr "setlocale: LC_ALL: 无法改变区域设置 (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" -msgstr "setlocale:LC_ALL:无法改变区域选项 (%s):%s" +msgstr "setlocale: LC_ALL: 无法改变区域设置 (%s):%s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" -msgstr "setlocale:%s:无法改变区域选项 (%s)" +msgstr "setlocale: %s: 无法改变区域设置 (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" -msgstr "setlocale:%s:无法改变区域选项 (%s):%s" +msgstr "setlocale: %s: 无法改变区域设置 (%s):%s" #: mailcheck.c:439 msgid "You have mail in $_" @@ -1508,158 +1477,159 @@ msgstr "您在 $_ 中有新邮件" msgid "The mail in %s has been read\n" msgstr "%s 中的邮件已被读过\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "语法错误:需要算术表达式" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" -msgstr "语法错误:需要 `;'" +msgstr "语法错误:未预期的 \";\"" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" -msgstr "语法错误:`((%s))'" +msgstr "语法错误:\"((%s))\"" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" -msgstr "make_here_document:错误的指令类型 %d" +msgstr "make_here_document: 错误的指令类型 %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "立即文档在第 %d 行被文件结束符分隔 (需要“%s”)" +msgstr "立即文档在第 %d 行被文件结束符分隔(需要 \"%s\")" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "make_redirection:重定向指令“%d”越界" +msgstr "make_redirection: 重定向指令 \"%d\" 超出范围" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" -msgstr "shell_getc:shell_input_line_size (%zu) 超过 SIZE_MAX (%lu):行被截断" +msgstr "shell_getc: shell_input_line_size (%zu) 超过 SIZE_MAX (%lu):行已被截断" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" -msgstr "超出最大立即文档数量" +msgstr "超出最大立即文档计数" -#: parse.y:3581 parse.y:3957 parse.y:4556 +# %c 可能为引号 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "寻找匹配的“%c”时遇到了未预期的文件结束符" +msgstr "寻找匹配的 `%c' 时遇到了未预期的 EOF" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" -msgstr "寻找“]]”时遇到了未预期的文件结束符" +msgstr "寻找 \"]]\" 时遇到了未预期的 EOF" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" -msgstr "条件表达式中有语法错误:未预期的符号“%s”" +msgstr "条件表达式中有语法错误:未预期的记号 \"%s\"" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "条件表达式中有语法错误" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "未预期的符号“%s” ,需要“)”" +msgstr "未预期的记号 \"%s\",需要 \")\"" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" -msgstr "需要“)”" +msgstr "需要 \")\"" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "一元条件运算符使用了未预期的参数“%s”" +msgstr "一元条件运算符使用了未预期的参数 \"%s\"" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "一元条件运算符使用了未预期的参数" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "未预期的符号“%s”,需要二元条件运算符" +msgstr "未预期的记号 \"%s\",需要二元条件运算符" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "需要二元条件运算符" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "二元条件运算符使用了未预期的参数“%s”" +msgstr "二元条件运算符使用了未预期的参数 \"%s\"" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "二元条件运算符使用了未预期的参数" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "条件命令中有未预期的符号“%c”" +msgstr "条件命令中有未预期的记号 \"%c\"" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "条件命令中有未预期的符号“%s”" +msgstr "条件命令中有未预期的记号 \"%s\"" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" -msgstr "条件命令中有未预期的符号 %d" +msgstr "条件命令中有未预期的记号 %d" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "未预期的符号“%s”附近有语法错误" +msgstr "未预期的记号 \"%s\" 附近有语法错误" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" -msgstr "“%s”附近有语法错误" +msgstr "\"%s\" 附近有语法错误" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" -msgstr "语法错误: 未预期的文件结尾" +msgstr "语法错误:未预期的文件结束符" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "语法错误" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "使用 \"%s\" 退出 shell 。\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" -msgstr "寻找匹配的“)”时遇到了未预期的文件结束符" +msgstr "寻找匹配的 \")\" 时遇到了未预期的 EOF" #: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" -msgstr "补全:未找到函数 “%s”" +msgstr "补全:未找到函数 \"%s\"" #: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "programmable_completion: %s:疑似重试循环" +msgstr "programmable_completion: %s: 可能的重试循环" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" -msgstr "progcomp_insert: %s:空的补全声明" +msgstr "progcomp_insert: %s: COMPSPEC 为 NULL" #: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" -msgstr "print_command: 错误的条件连接符 `%d'" +msgstr "print_command: 错误的条件连接符 \"%d\"" #: print_cmd.c:375 #, c-format @@ -1668,102 +1638,102 @@ msgstr "xtrace_set: %d: 无效的文件描述符" #: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" -msgstr "xtrace_set: 空的文件指针" +msgstr "xtrace_set: 文件指针为 NULL" #: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" -msgstr "cprintf: `%c': 无效的格式字符" +msgstr "cprintf: \"%c\": 无效的格式字符" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "文件描述符超出范围" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" -msgstr "%s:模糊的重定向" +msgstr "%s: 有歧义的重定向" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" -msgstr "%s:无法覆盖已存在的文件" +msgstr "%s: 无法覆盖已存在的文件" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" -msgstr "%s:受限的: 无法重定向输出" +msgstr "%s: 受限:无法重定向输出" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" -msgstr "无法为立即文档创建临时文件: %s" +msgstr "无法为立即文档创建临时文件:%s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" -msgstr "%s:无法将文件描述符赋值给变量" +msgstr "%s: 无法将文件描述符赋值给变量" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "没有网络时不支持 /dev/(tcp|udp)/host/port" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" -msgstr "重定向错误: 无法复制文件描述符" +msgstr "重定向错误:无法复制文件描述符" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" -msgstr "无法找到 /tmp ,请创建!" +msgstr "无法找到 /tmp,请创建!" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp 必须为有效的目录名" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "在交互式 shell 中将忽略美化输出模式" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: 无效的选项" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "无法将 uid 设为 %d: 有效 uid %d" +msgstr "无法将 uid 设为 %d:有效 uid %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "无法将 gid 设为 %d: 有效 gid %d" +msgstr "无法将 gid 设为 %d:有效 gid %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "无法启动调试器;调试模式已禁用" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" -msgstr "%s:是一个目录" +msgstr "%s: 是一个目录" # 这个是查看用户的 /etc/passwd 信息得到的名字。既然是用户的名字,就叫做无名氏吧。(有点想写“红领巾”来着。) -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "无名氏!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash,版本 %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1772,324 +1742,324 @@ msgstr "" "用法:\t%s [GNU 长选项] [选项] ...\n" "\t%s [GNU 长选项] [选项] 脚本文件 ...\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" -msgstr "GNU 长选项:\n" +msgstr "GNU 长选项:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" -msgstr "Shell 选项:\n" +msgstr "Shell 选项:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "\t-irsD 或 -c <命令> 或 -O \t\t(仅适合调用)\n" +msgstr "\t-ilrsD 或 -c <命令> 或 -O \t\t(仅适合调用)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s 或 -o <选项>\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" -msgstr "请输入`%s -c \"help set\"' 以获得关于 shell 选项的更多信息\n" +msgstr "请输入 `%s -c \"help set\"' 以获得关于 shell 选项的更多信息。\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" -msgstr "请输入 `%s -c help' 以获得关于 shell 内建命令的更多信息.\n" +msgstr "请输入 `%s -c help' 以获得关于 shell 内建命令的更多信息。\n" # 写如何报告程序错误的地方应该提到如何报告翻译问题。 -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -"请使用“bashbug”命令来报告程序错误。\n" +"请使用 \"bashbug\" 命令来报告程序错误。\n" "请将翻译错误报告到 。\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" -msgstr "bash 首页:\n" +msgstr "bash 主页:\n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "使用 GNU 软件的通用帮助:\n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: 无效的操作" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "伪信号" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "挂断" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "中断" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "退出" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" -msgstr "非法的指令" +msgstr "非法指令" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" -msgstr "断点追踪/陷阱" +msgstr "断点跟踪或陷阱" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" -msgstr "放弃指令" +msgstr "中止指令" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" -msgstr "模拟器陷阱指令" +msgstr "EMT 指令" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" -msgstr "浮点数异常" +msgstr "浮点异常" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "已杀死" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "总线错误" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "段错误" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "错误的系统调用" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" -msgstr "管道破裂" +msgstr "断开的管道" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "闹钟" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "已终止" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "紧急 I/O 状况" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" -msgstr "已停止(信号)" +msgstr "已停止(信号)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "继续" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" -msgstr "子进程已死或者停止" +msgstr "子进程已死或已停止" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" -msgstr "已停止(tty 输入)" +msgstr "已停止(tty 输入)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" -msgstr "已停止(tty 输出)" +msgstr "已停止(tty 输出)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O 就绪" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "CPU 限制" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "文件限制" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" -msgstr "报警(虚拟)" +msgstr "闹钟(虚拟)" # Personally I treat this as something coming from alarm() by a profiler. -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" -msgstr "报警(分析)" +msgstr "闹钟(性能分析)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "窗口已改变" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "记录锁" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" -msgstr "用户信号1" +msgstr "用户信号 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" -msgstr "用户信号2" +msgstr "用户信号 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" -msgstr "HFT 待输入数据" +msgstr "HFT 输入数据待处理" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "即将停电" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "系统即将崩溃" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "迁移进程至另一个 CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "编程错误" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "已授予 HFT 监视模式" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "已撤销 HFT 监视模式" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "已完成 HFT 声音序列" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "信息请求" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "未知信号 #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "错误的替换: 在 %2$s 中没有闭合的 `%1$s'" +msgstr "错误的替换:在 %2$s 中没有右 `%1$s'" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" -msgstr "%s:无法将链表赋值给数组成员" +msgstr "%s: 无法将列表赋值给数组成员" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "无法为进程替换创建管道" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "无法为进程替换创建子进程" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" -msgstr "无法打开命名管道 %s 以读取" +msgstr "无法打开命名管道 %s 进行读取" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "无法打开命名管道 %s 进行写入" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "无法将命名管道 %s 作为文件描述符 %d 复制" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "命令替换:忽略输入中的 null 字节" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "无法为命令替换创建管道" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "无法为命令替换创建子进程" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: 无法将管道复制为文件描述符 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "%s:无效的引用变量名" +msgstr "%s: 名称引用变量引用的变量名无效" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" -msgstr "%s:无效的间接展开" +msgstr "%s: 无效的间接展开" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" -msgstr "%s:无效的变量名" +msgstr "%s: 无效的变量名" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" -msgstr "%s:参数未设置" +msgstr "%s: 参数未设置" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" -msgstr "%s:参数为空或未设置" +msgstr "%s: 参数为空或未设置" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" -msgstr "%s:子串表达式 < 0" +msgstr "%s: 子串表达式 < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" -msgstr "%s:错误的替换" +msgstr "%s: 错误的替换" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" -msgstr "$%s:无法这样赋值" +msgstr "$%s: 无法这样赋值" -#: subst.c:9814 +#: subst.c:10111 msgid "future versions of the shell will force evaluation as an arithmetic substitution" -msgstr "未来版本的 shell 会强制估值为算术替换" +msgstr "未来版本的 shell 会强制求值为算术替换" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "错误的替换: 在 %s 中没有闭合的 \"`\"" +msgstr "错误的替换:在 %s 中没有右 \"`\"" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" -msgstr "无匹配: %s" +msgstr "无匹配:%s" #: test.c:147 msgid "argument expected" @@ -2098,137 +2068,142 @@ msgstr "需要参数" #: test.c:156 #, c-format msgid "%s: integer expression expected" -msgstr "%s:需要整数表达式" +msgstr "%s: 需要整数表达式" #: test.c:265 msgid "`)' expected" -msgstr "需要“)”" +msgstr "需要 \")\"" #: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "需要“)”,却找到 %s" +msgstr "需要 \")\",却找到 %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" -msgstr "%s:需要二元表达式" +msgstr "%s: 需要二元运算符" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" -msgstr "%s:需要一元表达式" +msgstr "%s: 需要一元运算符" -#: test.c:881 +#: test.c:896 msgid "missing `]'" -msgstr "缺少 `]'" +msgstr "缺少 \"]\"" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" -msgstr "语法错误:需要 `%s'" +msgstr "语法错误:未预期的 \"%s\"" #: trap.c:220 msgid "invalid signal number" -msgstr "无效的信号数" +msgstr "无效的信号编号" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" -msgstr "trap handler: 超出最大的 trap handler 层次 (%d)" +msgstr "trap handler: 超出最大的 trap handler 层数 (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" -msgstr "run_pending_traps: trap_list[%d] 中的错误值: %p" +msgstr "run_pending_traps: 错误的 trap_list[%d] 值:%p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "run_pending_traps: 信号处理器是 SIG_DFL,重新发送 %d (%s) 给自己" +msgstr "run_pending_traps: 信号处理程序是 SIG_DFL,重新发送 %d (%s) 给自己" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: 错误的信号 %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" -msgstr "“%s”函数定义导入错误" +msgstr "导入 \"%s\" 的函数定义时出错" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" -msgstr "shell 层次 (%d) 太高,重置为 1" +msgstr "shell 层数 (%d) 太高,重置为 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: 当前作用域中没有函数上下文" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" -msgstr "%s:变量不可赋值" +msgstr "%s: 变量不可赋值" + +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s: 无法从不兼容的类型继承值" -#: variables.c:3475 +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" -msgstr "%s:将整数赋值给名称引用" +msgstr "%s: 将整数赋值给名称引用" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: 当前作用域中没有函数上下文" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s 的 exportstr 为空" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s 的 exportstr 中有无效的字符 %1$d" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" -msgstr "%s 的 exportstr 中没有“=”" +msgstr "%s 的 exportstr 中没有 \"=\"" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variables 的头部不是函数上下文" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: 没有 global_variables 上下文" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables 的头部不是临时环境作用域" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s:%s:无法作为文件打开" +msgstr "%s: %s: 无法作为 FILE 打开" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "%s:%s:追踪文件描述符的值无效" +msgstr "%s: %s: 跟踪文件描述符的值无效" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s:%s:兼容版本数值越界" +msgstr "%s: %s: 兼容性的值超出范围" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "版权所有 (C) 2020 自由软件基金会" +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "Copyright (C) 2022 自由软件基金会" #: version.c:47 version2.c:47 msgid "License GPLv3+: GNU GPL version 3 or later \n" -msgstr "许可证 GPLv3+: GNU GPL 许可证第三版或者更新版本 \n" +msgstr "许可证 GPLv3+:GNU GPL 许可证第三版或者更新版本 \n" #: version.c:86 version2.c:86 #, c-format @@ -2246,22 +2221,22 @@ msgstr "在法律许可的情况下特此明示,本软件不提供任何担保 #: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "%s:无法分配 %lu 字节 (已分配 %lu 字节)" +msgstr "%s: 无法分配 %lu 字节(已分配 %lu 字节)" #: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "%s:无法分配 %lu 字节" +msgstr "%s: 无法分配 %lu 字节" #: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "%s:%s:%d:无法分配 %lu 字节 (已分配 %lu 字节)" +msgstr "%s: %s:%d: 无法分配 %lu 字节(已分配 %lu 字节)" #: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" -msgstr "%s:%s:%d:无法分配 %lu 字节" +msgstr "%s: %s:%d: 无法分配 %lu 字节" #: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" @@ -2285,7 +2260,7 @@ msgstr "continue [n]" #: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" -msgstr "builtin [shell 内建 [参数 ...]]" +msgstr "builtin [shell-内建 [参数 ...]]" #: builtins.c:63 msgid "caller [expr]" @@ -2304,16 +2279,16 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] 命令 [参数 ...]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgiIlnrtux] [-p] [名称[=值] ...]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgiIlnrtux] [名称[=值] ...] 或 declare -p [-aAfFilnrtux] [名称 ...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgiIlnrtux] [-p] 名称[=值] ..." +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgiIlnrtux] 名称[=值] ... 或 typeset -p [-aAfFilnrtux] [名称 ...]" #: builtins.c:82 msgid "local [option] name[=value] ..." -msgstr "local [option] 名称[=值] ..." +msgstr "local [选项] 名称[=值] ..." #: builtins.c:85 msgid "echo [-neE] [arg ...]" @@ -2349,15 +2324,15 @@ msgstr "logout [n]" #: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "fc [-e 编辑器名] [-lnr] [起始] [终结] 或 fc -s [模式=替换串] [命令]" +msgstr "fc [-e 编辑器名] [-lnr] [起始] [终止] 或 fc -s [模式=替换串] [命令]" #: builtins.c:109 msgid "fg [job_spec]" -msgstr "fg [任务声明]" +msgstr "fg [任务说明符]" #: builtins.c:113 msgid "bg [job_spec ...]" -msgstr "bg [任务声明 ...]" +msgstr "bg [任务说明符 ...]" #: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" @@ -2373,15 +2348,15 @@ msgstr "history [-c] [-d 偏移量] [n] 或 history -anrw [文件名] 或 histor #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "jobs [-lnprs] [任务声明 ...] 或 jobs -x 命令 [参数]" +msgstr "jobs [-lnprs] [任务说明符 ...] 或 jobs -x 命令 [参数]" #: builtins.c:131 msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [任务声明 ... | pid ...]" +msgstr "disown [-h] [-ar] [任务说明符 ... | pid ...]" #: builtins.c:134 msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" -msgstr "kill [-s 信号声明 | -n 信号编号 | -信号声明] 进程号 | 任务声明 ... 或 kill -l [信号声明]" +msgstr "kill [-s 信号说明符 | -n 信号编号 | -信号说明符] pid | 任务说明符 ... 或 kill -l [信号说明符]" #: builtins.c:136 msgid "let arg [arg ...]" @@ -2389,15 +2364,15 @@ msgstr "let 参数 [参数 ...]" #: builtins.c:138 msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" -msgstr "read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字] [-n 读取字符数] [-N 读取字符数] [-p 提示符] [-t 超时] [-u 文件描述符] [名称 ...]" +msgstr "read [-ers] [-a 数组] [-d 分隔符] [-i 文本] [-n 字符数] [-N 字符数] [-p 提示符] [-t 超时] [-u fd] [名称 ...]" #: builtins.c:140 msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [--abefhkmnptuvxBCHP] [-o 选项名] [--] [参数 ...]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o 选项名] [--] [-] [参数 ...]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" @@ -2437,15 +2412,15 @@ msgstr "[ 参数... ]" #: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" -msgstr "trap [-lp] [[参数] 信号声明 ...]" +msgstr "trap [-lp] [[参数] 信号说明符 ...]" #: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] 名称 [名称 ...]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [限制]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [限制]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" @@ -2453,11 +2428,11 @@ msgstr "umask [-p] [-S] [模式]" #: builtins.c:177 msgid "wait [-fn] [-p var] [id ...]" -msgstr "wait [-fn] [-p 变量] [编号 ...]" +msgstr "wait [-fn] [-p 变量] [id ...]" #: builtins.c:181 msgid "wait [pid ...]" -msgstr "wait [进程号 ...]" +msgstr "wait [pid ...]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2469,27 +2444,27 @@ msgstr "for (( 表达式1; 表达式2; 表达式3 )); do 命令; done" #: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" -msgstr "select NAME [in 词语 ... ;] do 命令; done" +msgstr "select 名称 [in 词语 ... ;] do 命令; done" #: builtins.c:190 msgid "time [-p] pipeline" -msgstr "time [-p] 管道" +msgstr "time [-p] 流水线" #: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -msgstr "case 词 in [模式 [| 模式]...) 命令 ;;]... esac" +msgstr "case 词语 in [模式 [| 模式]...) 命令 ;;]... esac" #: builtins.c:194 msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" msgstr "if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while 命令; do 命令; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while 命令; do 命令-2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until 命令; do 命令; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until 命令; do 命令-2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -2505,7 +2480,7 @@ msgstr "{ 命令 ; }" #: builtins.c:206 msgid "job_spec [&]" -msgstr "job_spec [&]" +msgstr "任务说明符 [&]" #: builtins.c:208 msgid "(( expression ))" @@ -2540,16 +2515,12 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] 格式 [参数]" #: builtins.c:231 -#, fuzzy -#| msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]" msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]" -msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o 选项] [-A 动作] [-G 全局模式] [-W 词语列表] [-F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [名称 ...]" +msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o 选项] [-A 动作] [-G 全局模式] [-W 词语列表] [-F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [名称 ...]" #: builtins.c:235 -#, fuzzy -#| msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" -msgstr "compgen [-abcdefgjksuv] [-o 选项] [-A 动作] [-G 全局模式] [-W 词语列表] [-F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [词语]" +msgstr "compgen [-abcdefgjksuv] [-o 选项] [-A 动作] [-G 全局模式] [-W 词语列表] [-F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [词语]" #: builtins.c:239 msgid "compopt [-o|+o option] [-DEI] [name ...]" @@ -2557,11 +2528,11 @@ msgstr "compopt [-o|+o 选项] [-DEI] [名称 ...]" #: builtins.c:242 msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" -msgstr "mapfile [-d 分隔符] [-n 计数] [-O 起始序号] [-s 计数] [-t] [-u fd] [-C 回调] [-c 量子] [数组]" +msgstr "mapfile [-d 分隔符] [-n 计数] [-O 起始] [-s 计数] [-t] [-u fd] [-C 回调] [-c 间隔] [数组]" #: builtins.c:244 msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" -msgstr "readarray [-d 定界符] [-n 计数] [-O 起始序号] [-s 计数] [-t] [-u fd] [-C 回调] [-c 量子] [数组]" +msgstr "readarray [-d 分隔符] [-n 计数] [-O 起始] [-s 计数] [-t] [-u fd] [-C 回调] [-c 间隔] [数组]" #: builtins.c:256 msgid "" @@ -2583,18 +2554,18 @@ msgid "" msgstr "" "定义或显示别名。\n" " \n" -" 不带参数时,`alias' 以可重用的格式\n" -" `alias 名称=值'在标准输出设备上打印别名列表。\n" +" 不带参数时,\"alias\" 以可重用的格式 \"alias 名称=值\" 将别名列表\n" +" 打印到标准输出。\n" " \n" -" 否则,对于每个给定值的名称定义一个别名。\n" -" 值末尾的空格会使下一个词被检测作为别名替换展开。\n" +" 否则,对于每一个给出了 <值> 的 <名称> 定义一个别名。如果 <值> 的\n" +" 末尾是空格,那么在展开该别名后,还会继续检查下一个词是否可以\n" +" 进行别名替换。\n" " \n" " 选项:\n" -" -p\t以可重用的格式打印所有的已定义的别名\n" +" -p\t以可重用的格式打印所有已定义的别名\n" " \n" " 退出状态:\n" -" 除非一个没有定义的名字被作为参数提供,否则 alias \n" -" 返回值为真。" +" alias 返回真,除非提供了一个尚未定义别名的 <名称>。" #: builtins.c:278 msgid "" @@ -2605,12 +2576,12 @@ msgid "" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -"从别名定义列表中删除每一个“名字”。\n" +"从已定义的别名列表中删除每一个 <名称>。\n" " \n" " 选项:\n" " -a\t删除所有的别名定义\n" " \n" -" 返回成功,除非“名字”不是一个已存在的别名。" +" 返回成功,除非 <名称> 不是一个已存在的别名。" #: builtins.c:291 msgid "" @@ -2651,30 +2622,31 @@ msgstr "" "设定 Readline 键绑定和变量。\n" " \n" " 绑定一个键序列到一个 Readline 函数或者宏,或者设定一个\n" -" Readline 变量。非选项参数的语法和 ~/.inputrc 文件中的等\n" -" 同,但是必须作为一个参数被传递,\n" -" 例如,bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" Readline 变量。非选项参数的语法和 ~/.inputrc 文件的语法相同,\n" +" 但是必须以单一参数的形式传递给 bind,\n" +" 例如,bind '\"\\C-x\\C-r\": re-read-init-file'。\n" " \n" " 选项:\n" -" -m 键映射 在此命令执行过程中使用指定的键映射。\n" -" 可被接受的键映射名字有 emacs、emacs-standard、emacs-meta、\n" -" emacs-ctlx、vi、vi-move、vi-command、和 vi-insert。\n" -" -l 列出函数名称。\n" -" -P 列出函数名称和绑定。\n" -" -p 以可以重新用作输入的格式列出函数名称和绑定。\n" -" -S 列出可以启动宏的键序列以及它们的值\n" -" -s 以可以重新用作输入的格式列出可以启动宏的键以及它们的值。\n" -" -V 列出变量名成和它们的值\n" -" -v 以可以重新用作输入的格式列出变量的名称和它们的值\n" -" -q 函数名 查询指定的函数可以由哪些键启动。\n" -" -u 函数名 反绑定所有绑定至指定函数的键。\n" -" -r 键序列 取消指定键序列的绑定。\n" -" -f 文件名 从指定文件中读取键绑定。\n" -" -x 键序列:shell命令\t当指定的键序列被输入时,执行指定的 shell 命令。\n" -" -X 以可被重用的形式列出用 -x 绑定的键序列和命令。\n" +" -m 键映射 在此命令执行过程中使用指定的 <键映射>。可被接受的\n" +" 键映射名称有 emacs、emacs-standard、emacs-meta、\n" +" emacs-ctlx、vi、vi-move、vi-command 和 vi-insert。\n" +" -l 列出函数名称。\n" +" -P 列出函数名称和绑定。\n" +" -p 以可以重新用作输入的格式列出函数名称和绑定。\n" +" -S 列出可以启动宏的键序列以及它们的值。\n" +" -s 以可以重新用作输入的格式列出可以启动宏的键序列\n" +" 以及它们的值。\n" +" -V 列出变量名称以及它们的值。\n" +" -v 以可以重新用作输入的格式列出变量名称以及它们的值。\n" +" -q 函数名 查询指定的函数可以由哪些键启动。\n" +" -u 函数名 解除绑定所有绑定至指定函数的键。\n" +" -r 键序列 取消 <键序列> 的绑定。\n" +" -f 文件名 从 <文件名> 中读取键绑定。\n" +" -x 键序列:shell-命令\t当 <键序列> 被输入时,执行 。\n" +" -X 以可以重新用作输入的格式列出用 -x 绑定的键序列和命令。\n" " \n" " 退出状态:\n" -" 除非使用了无法辨认的选项或者错误发生,否则返回0." +" bind 返回 0,除非使用了无法识别的选项,或者有错误发生。" #: builtins.c:330 msgid "" @@ -2686,13 +2658,13 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -"退出 for、while 或 until 循环\n" +"退出 for、while 或 until 循环。\n" " \n" -" 退出一个 FOR、WHILE 或 UNTIL 循环。如果指定了N,则跳出N重\n" -" 循环\n" +" 退出一个 FOR、WHILE 或 UNTIL 循环。如果指定了 N,则跳出\n" +" 从里往外数共 N 重循环。\n" " \n" " 退出状态:\n" -" 退出状态为0除非 N 不大于或等于 1。" +" 退出状态为 0,除非 N 不大于等于 1。" #: builtins.c:342 msgid "" @@ -2706,11 +2678,11 @@ msgid "" msgstr "" "继续 for、while 或 until 循环。\n" " \n" -" 继续当前 FOR、WHILE 或 UNTIL 循环的下一步。\n" -" 如果指定了 N, 则继续当前的第 N 重循环。\n" +" 继续进行当前 FOR、WHILE 或 UNTIL 循环的下一次迭代。\n" +" 如果指定了 N, 则继续进行从里往外数第 N 重循环的下一次迭代。\n" " \n" " 退出状态:\n" -" 退出状态为 0 除非 N 不大于或等于1。" +" 退出状态为 0,除非 N 不大于等于 1。" #: builtins.c:354 msgid "" @@ -2726,13 +2698,13 @@ msgid "" msgstr "" "执行 shell 内建。\n" " \n" -" 带参数 ARGs 执行 SHELL-BUILTIN 内建,并且不做命令查询\n" -" 在希望以 shell 函数的形式来重新实现 shell 内建,\n" -" 并且希望在函数之内执行该 shell 内建的情况下有用处。\n" +" 带 <参数> 执行 ,并且跳过命令查找流程。在希望以 shell 函数\n" +" 的形式重新实现 shell 内建,并且希望在该函数中执行该 shell 内建的情况下\n" +" 很有用。\n" " \n" " 退出状态:\n" -" 以 SHELL-BUILTIN 内建的退出状态为准,或者如果 SHELL-BUILTIN 不是一个\n" -" shell 内建时为假。" +" 返回 的退出状态,或者如果 不是一个 shell 内建\n" +" 时返回假。" #: builtins.c:369 msgid "" @@ -2749,18 +2721,16 @@ msgid "" " Returns 0 unless the shell is not executing a shell function or EXPR\n" " is invalid." msgstr "" -"返回当前子调用的上下文。\n" +"返回当前子例程调用的上下文。\n" " \n" -" 不带有 EXPR 时,返回 \"$line $filename\"。带有 EXPR 时,返回\n" -" \"$line $subroutine $filename\";这个额外的信息可以被用于提供\n" -" 栈追踪。\n" +" 不带有 <表达式> 时,返回 \"$line $filename\"。带有 <表达式> 时,\n" +" 返回 \"$line $subroutine $filename\";这个额外的信息可以用来提供\n" +" 栈跟踪 (stack trace)。\n" " \n" -" EXPR 的值 显示了到当前调用帧需要回去多少个调用帧;顶部帧\n" -" 是第 0 帧。\n" +" <表达式> 的值表示从当前调用帧需要回去多少个调用帧;栈顶帧是第 0 帧。\n" " \n" " 退出状态:\n" -" 除非 shell 不在执行一个 shell 函数或者 EXPR 无效,否则返回结\n" -" 果为0。" +" 返回 0,除非 shell 不在执行一个 shell 函数,或者 <表达式> 无效。" #: builtins.c:387 msgid "" @@ -2800,27 +2770,29 @@ msgid "" msgstr "" "改变 shell 工作目录。\n" " \n" -" 改变当前目录至 DIR 目录。默认的 DIR 目录是 shell 变量 HOME\n" -" 的值。\n" +" 改变当前目录至 <目录>。默认的 <目录> 是 shell 变量 HOME 的值。\n" " \n" -" 变量 CDPATH 定义了含有 DIR 的目录的搜索路径,其中不同的目录名称由冒号 (:)分隔。\n" -" 一个空的目录名称表示当前目录。如果要切换到的 DIR 由斜杠 (/) 开头,则 CDPATH\n" -" 不会用上变量。\n" +" 变量 CDPATH 定义了搜索含有 <目录> 的目录的搜索路径。CDPATH 中额外的\n" +" 目录名称以冒号 (:) 隔开。空的 CDPATH 表示当前目录。如果 <目录> 以\n" +" 斜杠 (/) 开头,则不会使用 CDPATH。\n" " \n" -" 如果路径找不到,并且 shell 选项 `cdable_vars' 被设定,则参数词被假定为一个\n" -" 变量名。如果该变量有值,则它的值被当作 DIR 目录。\n" +" 如果找不到目录,并且 shell 选项 \"cdable_vars\" 被设定,则假定参数是一个\n" +" 变量名。如果该变量有值,则它的值被当作 <目录>。\n" " \n" " 选项:\n" -" -L\t强制跟随符号链接: 在处理 `..' 之后解析 DIR 中的符号链接。\n" -" -P\t使用物理目录结构而不跟随符号链接: 在处理 `..' 之前解析 DIR 中的符号链接。\n" -" -e\t如果使用了 -P 参数,但不能成功确定当前工作目录时,返回非零的返回值。\n" -" -@\t在支持拓展属性的系统上,将一个有这些属性的文件当作有文件属性的目录。\n" +" -L\t强制跟随符号链接: 在处理 \"..\" 之后解析 <目录> 中的符号链接\n" +" -P\t使用物理目录结构而不跟随符号链接: 在处理 \"..\" 之前\n" +" \t\t解析 <目录> 中的符号链接\n" +" -e\t如果使用了 -P 选项,但无法成功确定当前工作目录时,以非零状态退出\n" +" -@\t在支持扩展属性的系统上,将一个具有扩展属性的文件当作\n" +" \t\t含有文件属性的目录。\n" " \n" -" 默认情况下跟随符号链接,如同指定 `-L'。\n" -" `..' 使用移除向前相邻目录名成员直到 DIR 开始或一个斜杠的方式处理。\n" +" 默认情况下,跟随符号链接,正如指定了 \"-L\" 一样。\n" +" \"..\" 的处理方式是,移除路径名中的上一个组成部分,以 <目录> 的开头\n" +" 或者斜杠为界限。\n" " \n" " 退出状态:\n" -" 如果目录改变,或在使用 -P 选项时 $PWD 修改成功时返回 0,否则非零。" +" 如果目录改变,或在使用 -P 选项时 $PWD 修改成功,则返回 0;否则返回非零。" #: builtins.c:425 msgid "" @@ -2841,12 +2813,12 @@ msgstr "" " \n" " 选项:\n" " -L\t打印 $PWD 变量的值,如果它包含了当前的工作目录\n" -" -P\t打印当前的物理路径,不带有任何的符号链接\n" +" -P\t打印当前的物理目录,而不包含任何的符号链接\n" " \n" -" 默认情况下,`pwd' 的行为和带 `-L' 选项一致\n" +" 默认情况下,\"pwd\" 的行为和给定了 \"-L\" 时一致。\n" " \n" " 退出状态:\n" -" 除非使用了无效选项或者当前目录不可读,否则返回状态为0。" +" 返回 0,除非使用了无效的选项,或者无法读取当前目录。" #: builtins.c:442 msgid "" @@ -2871,7 +2843,7 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" -"返回一个成功结果。\n" +"返回一个成功的结果。\n" " \n" " 退出状态:\n" " 总是成功。" @@ -2907,56 +2879,18 @@ msgid "" msgstr "" "执行一个简单命令或者显示命令的相关信息。\n" " \n" -" 带 ARGS 参数运行 COMMAND 命令且抑制 shell 函数查询,或显示\n" -" 指定的 COMMAND 命令的信息。可以在存在相同名称的函数定义的\n" -" 情况下用于启动磁盘上的命令。\n" +" 带 <参数> 运行 <命令> 且阻止 shell 函数查找流程,或显示指定的 <命令>\n" +" 的信息。可以在已存在同名函数的情况下用于启动磁盘上的命令。\n" " \n" " 选项:\n" -" -p\t使用 PATH 变量的一个默认值以确保所有的标准工具都能被找到。\n" -" -v\t打印 COMMAND 命令的描述,和 `type' 内建相似\n" -" -V\t打印每个 COMMAND 命令的详细描述\n" +" -p 使用 PATH 变量的一个默认值,以确保所有的标准工具都能被找到\n" +" -v 打印 <命令> 的描述,和 \"type\" 内建相似\n" +" -V 打印每个 <命令> 的更详细的描述\n" " \n" -" 退出状态\n" -" 返回 COMMAND 命令的返回状态,或者当找不到 COMMAND 命令时失败。" +" 退出状态:\n" +" 返回 <命令> 的退出状态,或者当找不到 <命令> 时则返回失败。" #: builtins.c:490 -#, fuzzy -#| msgid "" -#| "Set variable values and attributes.\n" -#| " \n" -#| " Declare variables and give them attributes. If no NAMEs are given,\n" -#| " display the attributes and values of all variables.\n" -#| " \n" -#| " Options:\n" -#| " -f\trestrict action or display to function names and definitions\n" -#| " -F\trestrict display to function names only (plus line number and\n" -#| " \t\tsource file when debugging)\n" -#| " -g\tcreate global variables when used in a shell function; otherwise\n" -#| " \t\tignored\n" -#| " -p\tdisplay the attributes and value of each NAME\n" -#| " \n" -#| " Options which set attributes:\n" -#| " -a\tto make NAMEs indexed arrays (if supported)\n" -#| " -A\tto make NAMEs associative arrays (if supported)\n" -#| " -i\tto make NAMEs have the `integer' attribute\n" -#| " -l\tto convert the value of each NAME to lower case on assignment\n" -#| " -n\tmake NAME a reference to the variable named by its value\n" -#| " -r\tto make NAMEs readonly\n" -#| " -t\tto make NAMEs have the `trace' attribute\n" -#| " -u\tto convert the value of each NAME to upper case on assignment\n" -#| " -x\tto make NAMEs export\n" -#| " \n" -#| " Using `+' instead of `-' turns off the given attribute.\n" -#| " \n" -#| " Variables with the integer attribute have arithmetic evaluation (see\n" -#| " the `let' command) performed when the variable is assigned a value.\n" -#| " \n" -#| " When used in a function, `declare' makes NAMEs local, as with the `local'\n" -#| " command. The `-g' option suppresses this behavior.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is supplied or a variable\n" -#| " assignment error occurs." msgid "" "Set variable values and attributes.\n" " \n" @@ -2996,38 +2930,38 @@ msgid "" " Returns success unless an invalid option is supplied or a variable\n" " assignment error occurs." msgstr "" -"设定变量值和属性。\n" +"设定变量的值和属性。\n" " \n" -" 声明变量并且赋予它们属性。如果没有给定名称,\n" +" 声明变量并且赋予它们属性。如果没有给定 <名称>,\n" " 则显示所有变量的属性和值。\n" " \n" " 选项:\n" -" -f\t限制动作或显示为仅函数名称和定义\n" -" -F\t限制仅显示函数名称 (以及调试时显示行号和源文件名)\n" -" -g\t当用于 shell 函数内时创建全局变量; 否则忽略\n" -" -p\t显示每个 NAME 变量的属性和值\n" +" -f\t限制仅操作或显示函数的名称和定义\n" +" -F\t限制仅显示函数名称(以及调试时显示行号和源文件名)\n" +" -g\t在 shell 函数内部使用时创建全局变量;否则忽略\n" +" -I\t当创建局部变量时,继承上一个作用域的同名变量的属性和值\n" +" -p\t显示每个 <名称> 的属性和值\n" " \n" " 设定属性的选项:\n" -" -a\t使 NAME 成为下标数组 (如果支持)\n" -" -A\t使 NAME 成为关联数组 (如果支持)\n" -" -i\t使 NAME 带有 `integer' (整数)属性\n" -" -l\t将 NAME 在赋值时转为小写\n" -" -n\t使 NAME 成为指向一个以其值为名称的变量的引用\n" -" -r\t将 NAME 变为只读\n" -" -t\t使 NAME 带有 `trace' (追踪)属性\n" -" -u\t将每个 NAME 在赋值时转为大写\n" -" -x\t将 NAME 导出\n" +" -a\t使 <名称> 成为索引数组(如果支持)\n" +" -A\t使 <名称> 成为关联数组(如果支持)\n" +" -i\t使 <名称> 带有 \"整数\" (integer) 属性\n" +" -l\t将 <名称> 的值在赋值时转换为小写\n" +" -n\t使 <名称> 成为一个对以它的值为名称的变量的引用\n" +" -r\t将 <名称> 变为只读\n" +" -t\t使 <名称> 带有 \"跟踪\" (trace) 属性\n" +" -u\t使 <名称> 的值在赋值时转换为大写\n" +" -x\t将 <名称> 导出\n" " \n" -" 用 `+' 代替 `-' 会关闭指定选项。\n" +" 用 \"+\" 代替 \"-\" 会关闭指定的属性。\n" " \n" -" 带有整数属性的变量在赋值时将使用算术估值(见\n" -" `let' 命令)\n" +" 带有 \"整数\" 属性的变量被赋值时将使用算术求值(见 \"let\" 命令)。\n" " \n" -" 在函数中使用时,`declare' 使 NAME 成为本地变量,和 `local'\n" -" 命令一致。`-g' 选项抑制此行为。\n" +" 在函数中使用时,\"declare\" 使 <名称> 成为局部变量,和 \"local\"\n" +" 命令一致。\"-g\" 选项阻止此行为。\n" " \n" " 退出状态:\n" -" 返回成功,除非提供了无效选项或者发生变量赋值错误。" +" 返回成功,除非使用了无效的选项,或者发生变量赋值错误。" #: builtins.c:532 msgid "" @@ -3035,9 +2969,9 @@ msgid "" " \n" " A synonym for `declare'. See `help declare'." msgstr "" -"设置变量的值和属性。\n" +"设定变量的值和属性。\n" " \n" -" `declare' 的等价形式。参见 `help declare'。" +" 同 \"declare\"。参见 \"help declare\"。" #: builtins.c:540 msgid "" @@ -3053,17 +2987,18 @@ msgid "" " Returns success unless an invalid option is supplied, a variable\n" " assignment error occurs, or the shell is not executing a function." msgstr "" -"定义本地变量。\n" +"定义局部变量。\n" " \n" -" 创建一个以 NAME 为名称的变量,并且将 VALUE 赋值给它。\n" -" OPTION 选项可以是任何能被 `declare' 接受的选项。\n" +" 创建一个名为 <名称> 的变量,并且将 <值> 赋给它。<选项> 可以是任何\n" +" 能被 \"declare\" 接受的选项。\n" " \n" -" 本地变量只能在函数内部被使用,它们只能在定义它们的函数内\n" -" 部以及子函数中可见。\n" +" 局部变量只能在函数内部使用,它们只对定义它们的函数及其子函数可见。\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的选项、发生了赋值错误或者 shell 不在执行一个函数。" +" 返回成功,除非使用了无效的选项、发生了赋值错误,或者 shell 不在\n" +" 执行一个函数。" +# 此字符串可以很好地测试各个 po 编辑器对转义字符的支持是否有 bug(手动斜眼)。poedit(至少在 <=3.0.1 版本中)对 \a 的处理存在 bug,如果你修改了这条翻译,请用纯文本编辑器检查一下 msgstr 里的 \a 前面是否是两个反斜杠。就算你用的不是 poedit,也最好检查一下所有的转义字符,看看是不是和 msgid 里的一致,如不一致请修改。 #: builtins.c:557 msgid "" "Write arguments to the standard output.\n" @@ -3102,33 +3037,34 @@ msgid "" msgstr "" "将参数写到标准输出。\n" " \n" -" 在标准输出上,显示用空格分割的 ARG 参数后跟一个换行。\n" +" 在标准输出上显示 <参数>,以空格隔开,后面跟一个换行。\n" " \n" " 选项:\n" " -n\t不要追加换行\n" -" -e\t启用下列反斜杠转义的解释\n" -" -E\t显式地抑制对于反斜杠转义的解释\n" +" -e\t启用对下列反斜杠转义字符的解释\n" +" -E\t显式地阻止对反斜杠转义字符的解释\n" " \n" -" `echo' 对下列反斜杠字符进行转义:\n" -" \a\t警告(响铃)\n" +" \"echo\" 对下列反斜杠转义字符进行解释:\n" +" \\a\t警报(响铃)\n" " \\b\t退格\n" -" \\c\t抑制更多的输出\n" +" \\c\t阻止后续的输出\n" " \\e\t转义字符\n" -" \\f\t换页字符\n" +" \\E\t转义字符\n" +" \\f\t换页\n" " \\n\t换行\n" " \\r\t回车\n" -" \\t\t横向制表符\n" -" \\v\t纵向制表符\n" +" \\t\t水平制表符\n" +" \\v\t垂直制表符\n" " \\\\\t反斜杠\n" -" \\0nnn\t以 NNN(八进制)为 ASCII 码的字符。NNN 可以是 0 到 3 个八进制位\n" -" \\xHH\t以 HH(十六进制)为值的八比特字符。HH 可以是一个或两个十六进制位\n" -" \\uHHHH\t以 HHHH(十六进制)为值的 Unicode 字符。HHHH 可以是一个到\n" -" \t\t四个十六进制位。\n" -" \\UHHHHHHHH 以 HHHHHHHH(十六进制)为值的 Unicode 字符。\n" -" \t\tHHHHHHHH 可以是一到八个十六进制位。\n" +" \\0nnn\tASCII 码为 NNN(八进制)的字符。NNN 可以是 0 至 3 位的八进制数。\n" +" \\xHH\t值为 HH(十六进制)的 8 位字符。HH 可以是一至两位的十六进制数。\n" +" \\uHHHH\t值为 HHHH(十六进制)的 Unicode 字符。HHHH 可以是一至四位的\n" +" \t\t十六进制数。\n" +" \\UHHHHHHHH 值为 HHHHHHHH(十六进制)的 Unicode 字符。\n" +" \t\tHHHHHHHH 可以是一至八位的十六进制数。\n" " \n" " 退出状态:\n" -" 返回成功除非有写错误发生。" +" 返回成功,除非有写入错误发生。" #: builtins.c:597 msgid "" @@ -3142,15 +3078,15 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -"写参数至标准输出设备。\n" +"将参数写到标准输出。\n" " \n" -" 在标准输出设备上显示 ARGs 参数和一个换行。\n" +" 在标准输出上显示 <参数>,后面跟一个换行。\n" " \n" " 选项:\n" -" -n\t不附加换行\n" +" -n\t不要追加换行\n" " \n" " 退出状态:\n" -" 除非写错误发生,否则返回成功。" +" 返回成功,除非有写入错误发生。" #: builtins.c:612 msgid "" @@ -3180,27 +3116,26 @@ msgid "" msgstr "" "启用和禁用 shell 内建。\n" " \n" -" 启用和禁用 shell 的内建命令。禁用使您能够执行一个和内建\n" +" 启用和禁用 shell 的内建命令。禁用命令使您能够执行和内建\n" " 命令同名的磁盘上的命令,而无须使用完整的路径名。\n" " \n" -" \n" " 选项:\n" -" -a\t打印一个内建的列表,并显示其中每一个是否启用\n" -" -n\t禁用每一个 NAME 内建或者显示一个被禁用的内建的列表\n" -" -p\t以可重用的格式打印一个内建的列表\n" -" -s\t仅打印Posix `special' 内建的名称\n" +" -a\t打印内建列表,并显示其中每一个是否启用\n" +" -n\t禁用每一个 <名称> 或者显示被禁用的内建的列表\n" +" -p\t以可重用的格式打印内建列表\n" +" -s\t仅打印 Posix \"特殊\" 内建的名称\n" " \n" " 控制动态加载的选项:\n" -" -f\t从共享对象 FILENAME 文件中加载 NAME 内建\n" +" -f\t从共享对象 <文件名> 中加载 <名称> 内建\n" " -d\t删除以 -f 选项加载的内建\n" " \n" -" 不带选项时,每一个 NAME 内建都被启用。\n" +" 不带选项时,启用每一个 <名称>。\n" " \n" -" 如果要使用 $PATH 中找到的 `test' 而不是 shell 内建的版本,\n" -" 输入 `enable -n test'。\n" +" 要使用 $PATH 中找到的 \"test\" 而不是 shell 内建的版本,\n" +" 请输入 \"enable -n test\"。\n" " \n" " 退出状态:\n" -" 返回成功,除非 NAME 不是一个 shell 内建或者有错误发生。" +" 返回成功,除非 <名称> 不是一个 shell 内建,或者有错误发生。" #: builtins.c:640 msgid "" @@ -3214,52 +3149,12 @@ msgid "" msgstr "" "将参数作为 shell 命令执行。\n" " \n" -" 将 ARGs 合成一个字符串,用结果作为 shell 的输入,\n" -" 并且执行得到的命令。\n" +" 将 <参数> 组合成一个字符串,用结果作为 shell 的输入,并执行得到的命令。\n" " \n" " 退出状态:\n" -" 以命令的状态退出,或者在命令为空的情况下返回成功。" +" 返回命令的退出状态,或者在命令为空的情况下返回成功。" #: builtins.c:652 -#, fuzzy -#| msgid "" -#| "Parse option arguments.\n" -#| " \n" -#| " Getopts is used by shell procedures to parse positional parameters\n" -#| " as options.\n" -#| " \n" -#| " OPTSTRING contains the option letters to be recognized; if a letter\n" -#| " is followed by a colon, the option is expected to have an argument,\n" -#| " which should be separated from it by white space.\n" -#| " \n" -#| " Each time it is invoked, getopts will place the next option in the\n" -#| " shell variable $name, initializing name if it does not exist, and\n" -#| " the index of the next argument to be processed into the shell\n" -#| " variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" -#| " a shell script is invoked. When an option requires an argument,\n" -#| " getopts places that argument into the shell variable OPTARG.\n" -#| " \n" -#| " getopts reports errors in one of two ways. If the first character\n" -#| " of OPTSTRING is a colon, getopts uses silent error reporting. In\n" -#| " this mode, no error messages are printed. If an invalid option is\n" -#| " seen, getopts places the option character found into OPTARG. If a\n" -#| " required argument is not found, getopts places a ':' into NAME and\n" -#| " sets OPTARG to the option character found. If getopts is not in\n" -#| " silent mode, and an invalid option is seen, getopts places '?' into\n" -#| " NAME and unsets OPTARG. If a required argument is not found, a '?'\n" -#| " is placed in NAME, OPTARG is unset, and a diagnostic message is\n" -#| " printed.\n" -#| " \n" -#| " If the shell variable OPTERR has the value 0, getopts disables the\n" -#| " printing of error messages, even if the first character of\n" -#| " OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" -#| " \n" -#| " Getopts normally parses the positional parameters ($0 - $9), but if\n" -#| " more arguments are given, they are parsed instead.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success if an option is found; fails if the end of options is\n" -#| " encountered or an error occurs." msgid "" "Parse option arguments.\n" " \n" @@ -3301,41 +3196,37 @@ msgid "" msgstr "" "解析选项参数。\n" " \n" -" getopts 被 shell 过程用于解析可定位的参数作为选项。\n" +" getopts 可在 shell 过程中使用,将位置参数解析为选项。\n" " \n" " \n" -" OPTSTRING 字符串包含待识别的选项字母;如果一个字母后面跟\n" -" 着分号,则该选项需要一个参数,而该参数应用空格与选项分开。\n" +" <选项字符串> 包含待识别的选项字母;如果一个字母后面跟着一个冒号,\n" +" 则该选项需要一个参数,参数与选项之间应当用空格隔开。\n" " \n" " \n" -" 每次启动时,getopts 会将下一个选项放到 shell 变量 $name\n" -" 中,如果 name 变量不存在则先将其初始化,而下一个待处\n" -" 理的参数序号放入 shell 变量 OPTIND 中。OPTIND 变量在每\n" -" 次 shell 或者 shell 脚本启动时都被初始化为1。当一个选项要\n" -" 求有一个参数时,getopts 将参数放入 shell 变量 OPTARG\n" -" 中。\n" +" 每次被调用时,getopts 会将下一个选项放到 shell 变量 $<名称> 中,\n" +" 如果 <名称> 变量不存在则先将其初始化,并将下一个待处理的参数的序号\n" +" 放入 shell 变量 OPTIND 中。OPTIND 变量在每次 shell 或者 shell 脚本\n" +" 启动时都被初始化为 1。当一个选项要求有一个参数时,getopts 将该参数\n" +" 放入 shell 变量 OPTARG 中。\n" " \n" -" getopts 有两种报告错误的方法。如果 OPTSTRING 变量的第\n" -" 一个字符是冒号,getopts 使用沉默错误报告。在这种模式\n" -" 下,不会打印错误消息。如果看到了一个无效的选项,\n" -" getopts 将找到的选项字符放至 OPTARG 变量中。如果一个必\n" -" 须的选项没有找到,getopts 放一个 ':' 到 NAME 变量中并且设\n" -" 置 OPTARG 变量为找到的选项字符。如果 getopts 不在沉默模\n" -" 式中,并且遇到了一个无效的选项,getopts 放置一个 '?' 到 NAME \n" -" 变量中并且取消设定 OPTARG变量。如果必须的选项没有找到,\n" -" 一个'?'会被放入 NAME变量中,OPTARG 将被取消设定,并且会\n" -" 打印一个诊断信息。\n" +" getopts 有两种报告错误的方法。如果 <选项字符串> 的第一个字符是\n" +" 冒号,getopts 使用沉默错误报告。在此模式下,不会打印错误消息。\n" +" 如果遇到了一个无效的选项,getopts 将找到的选项字符放入 OPTARG\n" +" 变量中。如果没有找到必需的参数,getopts 放置一个 \":\" 到 <名称>\n" +" 变量中,并且将 OPTARG 变量设置为找到的选项字符。如果 getopts 不处于\n" +" 沉默模式,并且遇到了一个无效的选项,getopts 放置 \"?\" 到 <名称> 变量\n" +" 中并且取消设定 OPTARG 变量。如果没有找到必需的参数,一个 \"?\" 会被\n" +" 放入 <名称> 变量中,OPTARG 将被取消设定,并且会打印一个诊断信息。\n" " \n" -" 如果 shell 变量 OPTERR 的值为0,getopts 禁用\n" -" 错误信息的打印,即使 OPTSTRING 变量的第一个字符不是一\n" -" 个冒号。OPTERR 的默认值为1.\n" +" 如果 shell 变量 OPTERR 的值为 0,getopts 会禁用错误信息的打印,\n" +" 即使 <选项字符串> 的第一个字符不是冒号。OPTERR 的默认值为 1。\n" " \n" -" getopts 通常解析可定位的参数($0 - $9),不过如果提供了\n" -" 更多的参数,它们反而会被解析。\n" +" getopts 通常解析位置参数,不过如果在 <参数> 中提供了参数,则转而\n" +" 解析它们。\n" " \n" " 退出状态:\n" -" 如果一个选项被找到则返回成功;如果遇到了选项的结尾或者\n" -" 有错误发生则返回失败。" +" 如果找到了一个选项,则返回成功;如果遇到了选项的末尾或者有错误发生,\n" +" 则返回失败。" #: builtins.c:694 msgid "" @@ -3358,20 +3249,19 @@ msgid "" msgstr "" "使用指定命令替换 shell。\n" " \n" -" 执行 COMMAND 命令,以指定的程序替换这个 shell。\n" -" ARGUMENTS 参数成为 COMMAND命令的参数。如果\n" -" 没有指定COMMAND 命令,则任何的重定向在当前 shell 中生效。\n" +" 执行 <命令>,以指定的程序替换这个 shell。以 <参数> 作为 <命令> 的参数。\n" +" 如果没有指定 <命令>,则任何的 <重定向> 都在当前 shell 中生效。\n" " \n" " 选项:\n" -" -a 名称\t作为第0个参数传递给 COMMAND 命令\n" -" -c\t\t在一个空环境中执行 COMMAND 命令\n" -" -l\t\t在COMMAND 命令的第0个参数中加一个短线\n" +" -a 名称\t将 <名称> 作为第 0 个参数传递给 <命令>\n" +" -c\t在一个空的环境中执行 <命令>\n" +" -l\t在 <命令> 的第 0 个参数中放置一个短横线 (-)\n" " \n" -" 如果命令不能被执行,则退出一个非交互式的 shell,除非\n" -" shell 选项`execfail' 已经设定。\n" +" 如果无法执行命令,则退出一个非交互式的 shell,除非设定了 shell 选项\n" +" \"execfail\"。\n" " \n" " 退出状态:\n" -" 返回成功除非 COMMAND 命令没有找到或者出现一个重定向错误。" +" 返回成功,除非未找到 <命令>,或者出现一个 <重定向> 错误。" #: builtins.c:715 msgid "" @@ -3380,10 +3270,10 @@ msgid "" " Exits the shell with a status of N. If N is omitted, the exit status\n" " is that of the last command executed." msgstr "" -"退出shell。\n" +"退出 shell。\n" " \n" -" 以状态 N 退出 shell。 如果 N 被省略,则退出状态\n" -" 为最后一个执行的命令的退出状态。" +" 退出 shell,退出状态为 N。如果 N 被省略,则退出状态为最后一个执行的\n" +" 命令的退出状态。" #: builtins.c:724 msgid "" @@ -3392,10 +3282,10 @@ msgid "" " Exits a login shell with exit status N. Returns an error if not executed\n" " in a login shell." msgstr "" -"退出一个登录 shell.\n" +"退出一个登录 shell。\n" " \n" -" 以状态 N 退出一个登录 shell。如果不在登录 shell 中执行,则\n" -" 返回一个错误。" +" 退出一个登录 shell,退出状态为 N。如果不在登录 shell 中执行,\n" +" 则返回一个错误。" #: builtins.c:734 msgid "" @@ -3425,27 +3315,25 @@ msgid "" msgstr "" "从历史列表中显示或者执行命令。\n" " \n" -" fc 被用于从历史列表中列出或者重新编辑并执行命令。\n" -" FIRST 和 LAST 变量可以是数字用于指定范围,或者 FIRST 可以是\n" -" 字符串,意味着以这个字符串打头的最近的一个命令。\n" -" \n" +" fc 可用于从历史列表中列出命令,或者编辑并重新执行命令。\n" +" <起始> 和 <终止> 可以是用来指定范围的数字,或者 <起始> 可以是\n" +" 字符串,表示以这个字符串打头的最近的一个命令。\n" " \n" " 选项:\n" -" -e ENAME\t选择使用哪个编辑器。默认的是 FCEDIT, 然后是 EDITOR,\n" -" \t\t然后是 vi\n" -" -l \t列出行而不编辑\n" -" -n\t列举时省略行号\n" -" -r\t反转行的顺序(最新行在前)\n" +" -e 编辑器名\t选择使用哪个编辑器。默认使用 FCEDIT,然后\n" +" \t\t\t是 EDITOR,然后是 vi\n" +" -l\t\t列出行而不编辑\n" +" -n\t\t列举时省略行号\n" +" -r\t\t反转行的顺序(新的在前)\n" " \n" -" 用 `fc -s [模式=替换 ...] [命令]' 的格式,COMMAND 命令会在 OLD=NEW\n" -" 替换之后被重新执行。\n" -" \n" -" r='fc -s' 是一个有用的别名,这样的话输入 `r cc'会执行最后一个以 `cc'\n" -" 开头的命令,输入 `r'会重新执行最后一个命令。\n" +" 使用 \"fc -s [模式=替换串 ...] [命令]\" 的格式,<命令> 会在完成\n" +" <模式>=<替换串> 的替换之后被重新执行。\n" " \n" +" r='fc -s' 是一个有用的别名,这样的话输入 \"r cc\" 会执行最后一个以 \"cc\"\n" +" 开头的命令,输入 \"r\" 会重新执行最后一个命令。\n" " \n" " 退出状态:\n" -" 返回成功,或者执行的命令的状态;如果错误发生则返回非零。" +" 返回成功,或者执行的命令的状态;如果有错误发生,则返回非零。" #: builtins.c:764 msgid "" @@ -3460,12 +3348,11 @@ msgid "" msgstr "" "将任务移至前台。\n" " \n" -" 将以 JOB_SPEC 标识的任务放至前台,使其成为\n" -" 当前任务。如果 JOB_SPEC 不存在,shell 观念中的当前任务 \n" -" 将被使用。\n" +" 将以 <任务说明符> 指定的任务放至前台,使其成为当前任务。\n" +" 如果没有给出 <任务说明符>,shell 观念中的当前任务将会被使用。\n" " \n" " 退出状态:\n" -" 放至前台的命令状态,或者当错误发生时为失败。" +" 放至前台的命令的状态,或者当错误发生时则返回失败。" #: builtins.c:779 msgid "" @@ -3478,14 +3365,13 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" -"移动任务至后台。\n" +"将任务移至后台。\n" " \n" -" 将 JOB_SPEC 标识的任务放至后台,就像它们\n" -" 是带 `&' 启动的一样。如果 JOB_SPEC 不存在,shell 观念中的\n" -" 当前任务将会被使用。\n" +" 将以 <任务说明符> 指定的任务放至后台,就像它们是带 \"&\" 启动的一样。\n" +" 如果没有给出 <任务说明符>,shell 观念中的当前任务将会被使用。\n" " \n" " 退出状态:\n" -" 返回成功除非任务管理没有启用或者错误发生。" +" 返回成功,除非任务控制没有启用,或者有错误发生。" #: builtins.c:793 msgid "" @@ -3511,23 +3397,23 @@ msgid "" msgstr "" "记住或显示程序位置。\n" " \n" -" 确定并记住每一个给定 NAME 名称的命令的完整路径。\n" +" 确定并记住每个命令 <名称> 的完整路径名。\n" " 如果不提供参数,则显示已经记住的命令的信息。\n" " \n" " 选项:\n" -" -d\t\t忘记每一个已经记住的 NAME 的位置\n" -" -l\t\t以可作为输入重用的格式显示\n" -" -p pathname\t使用 pathname 路径作为 NAME 命令的全路径\n" -" -r\t\t忘记所有记住的位置\n" -" -t\t\t打印记住的每一个 NAME 名称的位置,如果指定了多个\n" -" \t\tNAME 名称,则每个位置前面会加上相应的 NAME 名称\n" -" \t\t\n" +" -d\t忘记每一个 <名称> 的已经记住的位置\n" +" -l\t以可重新用作输入的格式显示\n" +" -p 路径名\t使用 <路径名> 作为 <命令> 的完整路径名\n" +" -r\t忘记所有已经记住的位置\n" +" -t\t打印每一个 <名称> 的已经记住的位置,如果指定了多个\n" +" \t\t<名称>,则在每个位置前面加上对应的 <名称>\n" +" \n" " 参数:\n" -" NAME\t\t每个 NAME 名称会在 $PATH 路径变量中被搜索,并且添加到记住的命令\n" -" 列表中。\n" +" 名称\t会在 $PATH 中搜索每个 <名称>,并且添加到已经记住的命令\n" +" \t\t列表中。\n" " \n" " 退出状态:\n" -" 返回成功,除非 NAME 命令没有找到或者使用了无效的选项。" +" 返回成功,除非没有找到 <名称>,或者使用了无效的选项。" #: builtins.c:818 msgid "" @@ -3551,21 +3437,19 @@ msgid "" msgstr "" "显示内建命令的相关信息。\n" " \n" -" 显示内建命令的简略信息。如果指定了 PATTERN 模式,\n" -" 给出所有匹配 PATTERN 模式的命令的详细帮助,否则打\n" -" 印一个帮助主题列表\n" +" 显示内建命令的简略信息。如果指定了 <模式>,给出所有匹配 <模式>\n" +" 的命令的详细帮助,否则打印帮助主题列表。\n" " \n" " 选项:\n" " -d\t输出每个主题的简短描述\n" -" -m\t以伪 man 手册的格式显示使用方法\n" -" -s\t为每一个匹配 PATTERN 模式的主题仅显示一个用法\n" -" \t简介\n" +" -m\t以伪 man 手册的格式显示用法\n" +" -s\t仅对每一个匹配 <模式> 的主题输出简短的用法提要\n" " \n" " 参数:\n" -" PATTERN\t指定帮助主题的模式\n" +" 模式\t用来确定帮助主题的模式\n" " \n" " 退出状态:\n" -" 返回成功,除非未找到 PATTERN 模式没有找到或者使用了无效选项。" +" 返回成功,除非没有找到 <模式>,或者使用了无效的选项。" #: builtins.c:842 msgid "" @@ -3602,32 +3486,30 @@ msgid "" msgstr "" "显示或操纵历史列表。\n" " \n" -" 带行号显示历史列表,将每个被修改的条目加上 `*' 前缀。\n" +" 带行号显示历史列表,将每个被修改的条目加上 \"*\" 前缀。\n" " 参数 N 会仅列出最后的 N 个条目。\n" " \n" " 选项:\n" -" -c\t删除所有条目从而清空历史列表。\n" -" -d 偏移量\t从指定位置删除历史列表。负偏移量将从历史条目末尾\n" -" \t\t开始计数\n" +" -c\t删除所有条目从而清空历史列表\n" +" -d 偏移量\t删除位于 <偏移量> 的历史条目。负的 <偏移量> 表示从\n" +" \t\t历史列表末尾开始倒数\n" " \n" -" -a\t将当前会话的历史行追加到历史文件中\n" -" -n\t从历史文件中读取所有未被读取的行\n" -" \t\t并且将它们附加到历史列表\n" +" -a\t将当前会话的历史追加到历史文件中\n" +" -n\t从历史文件中读取所有未被读取的行,并且将它们追加到历史列表\n" " -r\t读取历史文件并将内容追加到历史列表中\n" " -w\t将当前历史写入到历史文件中\n" " \n" -" -p\t对每一个 ARG 参数展开历史并显示结果,而不存储到历史列表中\n" -" -s\t以单条记录追加 ARG 到历史列表中\n" +" -p\t对每一个 <参数> 执行历史展开并显示结果,而不存储到历史列表中\n" +" -s\t将 <参数> 作为单一条目追加到历史列表中\n" " \n" -" 如果给定了 FILENAME 文件名,则它将被作为历史文件。否则\n" -" 如果 $HISTFILE 变量有值的话使用之,不然使用 ~/.bash_history 文件。\n" +" 如果给定了 <文件名>,则将其用作历史文件。否则,如果 HISTFILE 变量\n" +" 有值的话,则使用它,否则使用 ~/.bash_history 文件。\n" " \n" -" 如果 $HISTTIMEFORMAT 变量被设定并且不为空,它的值会被用于\n" -" strftime(3) 的格式字符串来打印与每一个显示的历史条目想关联的\n" -" 时间戳,否则不打印时间戳。\n" +" 如果 HISTTIMEFORMAT 变量被设定并且不为空,它的值会被用作 strftime(3)\n" +" 的格式字符串,以打印每个显示的历史条目的时间戳。否则,不打印时间戳。\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的选项或者发生错误。" +" 返回成功,除非使用了无效的选项,或者有错误发生。" #: builtins.c:879 msgid "" @@ -3654,22 +3536,22 @@ msgid "" msgstr "" "显示任务状态。\n" " \n" -" 列出活动的任务。JOBSPEC 限制仅输出指定的任务。\n" -" 不带选项时,所有活动任务的状态都会显示。\n" +" 列出活动的任务。<任务说明符> 限制仅输出指定的任务。\n" +" 不带选项时,显示所有活动任务的状态。\n" " \n" " 选项:\n" -" -l\t在正常信息基础上列出进程号\n" -" -n\t仅列出上次通告之后改变了状态的进程\n" -" -p\t仅列出进程号\n" +" -l\t在正常信息的基础上列出进程 ID\n" +" -n\t仅列出上次通知之后改变了状态的进程\n" +" -p\t仅列出进程 ID\n" " -r\t限制仅输出运行中的任务\n" -" -s\t限制仅输出停止的任务\n" +" -s\t限制仅输出已停止的任务\n" " \n" -" 如果使用了 -x 选项,ARG 参数中的所有任务声明会被替换为该任务\n" -" 的进程组头领的进程号,然后执行 COMMAND 命令。\n" +" 如果使用了 -x 选项,<参数> 中的所有任务说明符会被替换为该任务\n" +" 的进程组头领的进程 ID,然后用替换后的参数执行 <命令>。\n" " \n" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者有错误发生。\n" -" 如果使用 -x 选项,则返回 COMMAND 命令的退出状态。" +" 如果使用了 -x 选项,则返回 <命令> 的退出状态。" #: builtins.c:906 msgid "" @@ -3689,17 +3571,17 @@ msgid "" msgstr "" "从当前 shell 中删除任务。\n" " \n" -" 从活动任务表中删除每一个 JOBSPEC 参数。不带任何\n" -" JOBSPEC 参数时,shell 使用观念中的当前任务。\n" +" 从活动任务列表中删除每一个 <任务说明符> 参数。不带任何 <任务说明符>\n" +" 时,shell 使用它的观念中的当前任务。\n" " \n" " 选项:\n" -" -a\t如果不提供 JOBSPEC 参数,则删除所有任务\n" -" -h\t标识每个 JOBSPEC 任务,从而当 shell 接收到 SIGHUP\n" +" -a\t如果不提供 <任务说明符>,则删除所有任务\n" +" -h\t标记每个 <任务说明符> 对应的任务,从而当 shell 接收到 SIGHUP\n" " \t\t信号时不发送 SIGHUP 给指定任务\n" " -r\t仅删除运行中的任务\n" " \n" " 退出状态:\n" -" 返回成功除非使用了无效的选项或者 JOBSPEC 声明。" +" 返回成功,除非使用了无效的选项或者 <任务说明符>。" #: builtins.c:925 msgid "" @@ -3725,21 +3607,22 @@ msgid "" msgstr "" "向一个任务发送一个信号。\n" " \n" -" 向以 PID 进程号或者 JOBSPEC 任务声明指定的进程发送一个以\n" -" SIGSPEC 信号声明或 SIGNUM 信号编号命名的信号。如果没有指定\n" -" SIGSPEC 或 SIGNUM,那么假定发送 SIGTERM 信号。\n" +" 向以 或者 <任务说明符> 指定的进程发送一个以 <信号说明符> 或\n" +" <信号编号> 指定的信号。如果没有指定 <信号说明符> 和 <信号编号>,\n" +" 那么假定发送 SIGTERM 信号。\n" " \n" " 选项:\n" -" -s sig\tSIG 是信号名称\n" -" -n sig\tSIG 是信号编号\n" -" -l\t列出信号名称;如果参数后跟 `-l'则被假设为信号编号,\n" -" \t\t而相应的信号名称会被列出\n" +" -s 信号\t<信号> 是信号名称\n" +" -n 信号\t<信号> 是信号编号\n" +" -l\t列出所有信号名称;如果 \"-l\" 后有参数,则假定它们是信号编号,\n" +" \t\t并列出对应的信号名称\n" +" -L\t同 -l\n" " \n" -" Kill 成为 shell 内建有两个理由:它允许使用任务编号而不是进程号,\n" -" 并且在可以创建的进程数上限达到是允许进程被杀死。\n" +" kill 成为 shell 内建有两个理由:它允许使用任务 ID 代替进程 ID,\n" +" 并且在您可以创建的进程数达到上限时仍可以杀死进程。\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的选项或者有错误发生。" +" 返回成功,除非使用了无效的选项,或者有错误发生。" #: builtins.c:949 msgid "" @@ -3784,22 +3667,20 @@ msgid "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -"估值算术表达式。\n" -" \n" -" 将每个 ARG 参赛作为算术表达式来估值。估值的计算以定宽的整\n" -" 数完成,不带溢出检测,不过除 0 是被置陷阱的并且会报一个错\n" -" 误。下列操作符被按照相同的算术优先级组合。列表的顺序按照\n" -" 优先级从高至低。\n" +"对算术表达式进行求值。\n" " \n" +" 将每个 <参数> 作为算术表达式进行求值。求值在固定宽度的整数中完成,\n" +" 没有溢出检测,不过除以 0 的异常会被捕获,并且会报一个错误。下面的运算符\n" +" 列表中,同一行的运算符的优先级相等。列表按照优先级从高到低进行排序。\n" " \n" -" \tid++, id--\t变量后置加,后置减\n" -" \t++id, --id\t变量前置加,前置减\n" -" \t-, +\t\t一元减法,一元加法\n" -" \t!, ~\t\t逻辑和位取反\n" +" \tid++, id--\t变量的后缀自增、后缀自减\n" +" \t++id, --id\t变量的前缀自增、前缀自减\n" +" \t-, +\t\t一元负号、正号\n" +" \t!, ~\t\t逻辑和按位取反\n" " \t**\t\t指数\n" -" \t*, /, %\t\t乘法,除法,取余数\n" -" \t+, -\t\t增加,减少\n" -" \t<<, >>\t\t向左和向右按位移位\n" +" \t*, /, %\t\t乘法、除法、取余数\n" +" \t+, -\t\t加法、减法\n" +" \t<<, >>\t\t按位左移、按位右移\n" " \t<=, >=, <, >\t比较\n" " \t==, !=\t\t等于,不等于\n" " \t&\t\t按位与\n" @@ -3808,18 +3689,19 @@ msgstr "" " \t&&\t\t逻辑与\n" " \t||\t\t逻辑或\n" " \texpr ? expr : expr\n" -" \t\t\t条件操作符\n" +" \t\t\t条件运算符\n" " \t=, *=, /=, %=,\n" " \t+=, -=, <<=, >>=,\n" " \t&=, ^=, |=\t赋值\n" " \n" -" Shell 变量允许作为操作数。表达式中的变量的名称会被取代以值\n" -" (强制转换为定宽的整数)。表达式中的变量不需要打开整数属性。\n" +" shell 变量允许作为操作数。变量的名称会被它的值替代(强制转换为固定\n" +" 宽度的整数)。变量不需要打开 \"整数\" 属性就可以在表达式中使用。\n" " \n" -" 操作符按照优先级进行估值。括号中的子表达式将被先估值,并可取代上述表达式规则。\n" +" 运算符按照优先级顺序进行求值。括号中的子表达式将最先求值,\n" +" 并可以覆盖上述优先级规则。\n" " \n" " 退出状态:\n" -" 如果最后一个 ARG 参数估值为 0,则 let 返回 1; 否则 let 返回 0。" +" 如果最后一个 <参数> 求值结果为 0,则 let 返回 1; 否则 let 返回 0。" #: builtins.c:994 msgid "" @@ -3830,7 +3712,8 @@ msgid "" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" @@ -3866,40 +3749,41 @@ msgid "" " (in which case it's greater than 128), a variable assignment error occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -"从标准输入读取一行并将其分为不同的域。\n" +"从标准输入读取一行,并将其分割为不同的字段。\n" " \n" -" 从标准输入读取单独的一行,或者如果使用了 -u 选项,从文件描述符 FD 中读取。\n" -" 该行被分割成域,如同词语分割一样,并且第一个词被赋值给第一个 NAME 变量,第二\n" -" 个词被赋值给第二个 NAME 变量,如此继续,直到剩下所有的词被赋值给最后一个 NAME\n" -" 变量。只有 $IFS 变量中的字符被认作是词语分隔符。\n" +" 从标准输入读取单独的一行,或者如果使用了 -u 选项,从文件描述符 中\n" +" 读取。该行会被分割成字段,如同分割词语一样,并且第一个词被赋值给第一个\n" +" <名称>,第二个词被赋值给第二个 <名称>,以此类推,剩下所有的词被赋值给\n" +" 最后一个 <名称>。只有 $IFS 中的字符会被视为词语分隔符。默认情况下,\n" +" 反斜杠字符可以转义分隔符和换行符。\n" " \n" -" 如果没有提供 NAME 变量,则读取的行被存放在 REPLY 变量中。\n" +" 如果没有提供 <名称>,则读取的行被存放在 REPLY 变量中。\n" " \n" " 选项:\n" -" -a array\t将词语赋值给 ARRAY 数组变量的序列下标成员,从零开始\n" -" -d delim\t持续读取直到读入 DELIM 变量中的第一个字符,而不是换行符\n" +" -a 数组\t将词语按顺序赋值给 <数组> 变量的各个成员,索引从零开始\n" +" -d 分隔符\t继续读取,直到遇到 <分隔符> 的第一个字符,而不是换行符\n" " -e\t使用 Readline 获取行\n" -" -i text\t使用 TEXT 文本作为 Readline 的初始文字\n" -" -n nchars\t读取 nchars 个字符之后返回,而不是等到读取换行符。\n" -" \t\t但是分隔符仍然有效,如果遇到分隔符之前读取了不足 nchars 个字符。\n" -" -N nchars\t在准确读取了 nchars 个字符之后返回,除非遇到文件结束符或者读超时,\n" -" \t\t任何的分隔符都被忽略\n" -" -p prompt\t在尝试读取之前输出 PROMPT 提示符并且不带\n" -" \t\t换行符\n" +" -i 文本\t使用 <文本> 作为 Readline 的初始文字\n" +" -n 字符数\t读取 <字符数> 个字符之后返回,而不是等到读取换行符。\n" +" \t\t但是如果读取了不到 <字符数> 个字符就遇到了分隔符,\n" +" \t\t则分隔符仍然生效\n" +" -N 字符数\t仅在恰好读取了 <字符数> 个字符之后返回,除非遇到 EOF\n" +" \t\t或者读取超时。忽略所有的分隔符\n" +" -p 提示符\t在尝试进行读取之前先输出 <提示符>(不加换行)\n" " -r\t不允许反斜杠转义任何字符\n" -" -s\t不回显终端的任何输入\n" -" -t timeout\t如果在 TIMEOUT 秒内没有读取一个完整的行则超时并且返回失败。\n" -" \t\tTMOUT 变量的值是默认的超时时间。TIMEOUT 可以是小数。\n" -" \t\t如果 TIMEOUT 是 0,那么仅当在指定的文件描述符上输入有效的时候,\n" -" \t\tread 才返回成功;否则它将立刻返回而不尝试读取任何数据。\n" -" \t\t如果超过了超时时间,则返回状态码大于 128\n" -" -u fd\t从文件描述符 FD 中读取,而不是标准输入\n" +" -s\t不回显来自终端的输入\n" +" -t 超时\t如果在 <超时> 秒内没有读取一个完整的行则超时并且返回失败。\n" +" \t\t默认的超时时间是 TMOUT 变量的值。<超时> 可以是小数。\n" +" \t\t如果 <超时> 是 0,read 会立即返回而不尝试读取任何数据,\n" +" \t\t且仅当可以从指定的文件描述符获取输入时,才返回成功。\n" +" \t\t如果超过了超时时间,则退出状态大于 128\n" +" -u fd\t从文件描述符 中读取,而不是标准输入\n" " \n" " 退出状态:\n" -" 返回码为零,除非遇到了文件结束符、读超时(且返回码不大于128)、\n" -" 出现了变量赋值错误或者无效的文件描述符作为参数传递给了 -u 选项。" +" 返回码为零,除非遇到了文件结束符、读取超时(此时返回码大于 128)、\n" +" 发生了变量赋值错误,或者 -u 选项的参数中的文件描述符无效。" -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3912,14 +3796,13 @@ msgid "" msgstr "" "从一个 shell 函数返回。\n" " \n" -" 使一个函数或者被引用的脚本以指定的返回值 N 退出。\n" -" 如果 N 被省略,则返回状态就是\n" -" 函数或脚本中的最后一个执行的命令的状态。\n" +" 使一个函数或者被 source 的脚本退出,返回值为 N。如果 N 被\n" +" 省略,则返回状态为函数或脚本中最后一个被执行的命令的返回状态。\n" " \n" " 退出状态:\n" -" 返回 N,或者如果 shell 不在执行一个函数或引用脚本时,失败。" +" 返回 N,或者如果 shell 不在执行一个函数或脚本时,返回失败。" -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4004,83 +3887,76 @@ msgid "" msgstr "" "设定或取消设定 shell 选项和位置参数的值。\n" " \n" -" 改变 shell 选项和位置参数的值,或者显示 shell 变量的\n" -" 名称和值。\n" +" 改变 shell 属性和位置参数的值,或者显示 shell 变量的名称和值。\n" " \n" " 选项:\n" -" -a 标记修改的或者创建的变量为导出。\n" -" -b 立即通告任务终结。\n" +" -a 标记修改的或者创建的变量为导出变量。\n" +" -b 在任务终止时立即进行通知。\n" " -e 如果一个命令以非零状态退出,则立即退出。\n" -" -f 禁用文件名生成(模式匹配)。\n" -" -h 当查询命令时记住它们的位置\n" -" -k 所有的赋值参数被放在命令的环境中,而不仅仅是\n" -" 命令名称之前的参数。\n" +" -f 禁用文件名生成(通配符匹配)。\n" +" -h 查找命令时记住它们的位置。\n" +" -k 所有的赋值参数都会进入命令的环境,而不仅仅是命令名称\n" +" 之前的参数。\n" " -m 启用任务控制。\n" -" -n 读取命令但不执行\n" +" -n 读取命令但不执行。\n" " -o 选项名\n" -" 设定与选项名对应的变量:\n" +" 设定与 <选项名> 对应的变量:\n" " allexport 与 -a 相同\n" " braceexpand 与 -B 相同\n" -" emacs 使用 emacs 风格的行编辑界面\n" +" emacs 使用 emacs 风格的行编辑界面\n" " errexit 与 -e 相同\n" " errtrace 与 -E 相同\n" " functrace 与 -T 相同\n" " hashall 与 -h 相同\n" " histexpand 与 -H 相同\n" " history 启用命令历史\n" -" ignoreeof shell 读取文件结束符时不会退出\n" +" ignoreeof shell 读取到 EOF 时不会退出\n" " interactive-comments\n" -" 允许在交互式命令中显示注释\n" +" 允许交互式命令中出现注释\n" " keyword 与 -k 相同\n" " monitor 与 -m 相同\n" " noclobber 与 -C 相同\n" " noexec 与 -n 相同\n" " noglob 与 -f 相同\n" -" nolog 目前可接受但是被忽略\n" +" nolog 目前可接受,但会被忽略\n" " notify 与 -b 相同\n" " nounset 与 -u 相同\n" " onecmd 与 -t 相同\n" " physical 与 -P 相同\n" -" pipefail 管道的返回值是最后一个非零返回值的命令的返回结果,\n" -" 或者当所有命令都返回零是也为零。\n" -" posix 改变默认时和 Posix 标准不同的 bash 行为\n" -" 以匹配标准\n" +" pipefail 流水线的返回值是最后一个以非零状态退出的命令的退出\n" +" 状态,或者如果没有命令以非零状态退出,则返回零。\n" +" posix 改变 bash 中默认操作和 Posix 标准不同的行为,\n" +" 以符合标准\n" " privileged 与 -p 相同\n" " verbose 与 -v 相同\n" " vi 使用 vi 风格的行编辑界面\n" " xtrace 与 -x 相同\n" -" -p 无论何时当真实的有效的用户身份不匹配时打开。\n" -" 禁用对 $ENV 文件的处理以及导入 shell 函数。\n" -" 关闭此选项会导致有效的用户编号和组编号设定\n" -" 为真实的用户编号和组编号\n" +" -p 只要真实用户 ID 和有效用户 ID 不匹配时就会被打开。\n" +" 禁用对 $ENV 文件的处理以及 shell 函数的导入。关闭此选项\n" +" 会导致有效 uid 和 gid 被设定为真实 uid 和 gid。\n" " -t 读取并执行一个命令之后退出。\n" -" -u 替换时将为设定的变量当作错误对待。\n" -" -v 读取 shell 输入行时将它们打印。\n" -" -x 执行命令时打印它们以及参数。\n" -" -B shell 将执行花括号扩展。\n" -" -C 设定之后禁止以重定向输出的方式覆盖常\n" -" 规文件。\n" -" -E 设定之后 ERR 陷阱会被 shell 函数继承。\n" -" -H 启用 ! 风格的历史替换。当 shell 是交互式的\n" -" 时候这个标识位默认打开。\n" -" -P 设定之后类似 cd 的会改变当前目录的命令不\n" -" 追踪符号链接。\n" -" -T 设定之后 DEBUG 陷阱会被 shell 函数继承。\n" -" -- 任何剩余的参数会被赋值给位置参数。如果没\n" -" 有剩余的参数,位置参数不会被设置。\n" -" - 任何剩余的参数会被赋值给位置参数。\n" -" -x 和 -v 选项已关闭。\n" -" \n" -" 使用 + 而不是 - 会使标志位被关闭。标志位也可以在\n" -" shell 被启动时使用。当前的标志位设定可以在 $- 变\n" -" 量中找到。剩余的 ARG 参数是位置参数并且是按照\n" -" $1, $2, .. $n 的顺序被赋值的。如果没有给定 ARG\n" -" 参数,则打印所有的 shell 变量。\n" +" -u 替换时将未设定的变量视为错误。\n" +" -v 读取 shell 输入行时将其打印。\n" +" -x 执行命令时打印命令及其参数。\n" +" -B shell 会执行大括号展开。\n" +" -C 设定之后,禁止以重定向输出的方式覆盖普通文件。\n" +" -E 设定之后,ERR 陷阱会被 shell 函数继承。\n" +" -H 启用 ! 风格的历史替换。当 shell 是交互式的时候这个标志默认打开。\n" +" -P 设定之后,当执行会改变当前目录的命令,例如 cd 时,不解析符号链接。\n" +" -T 设定之后,DEBUG 和 RETURN 陷阱会被 shell 函数继承。\n" +" -- 将所有剩余的参数赋值给位置参数。\n" +" 如果没有剩余的参数,则取消设定位置参数。\n" +" - 将所有剩余的参数赋值给位置参数。\n" +" 关闭 -x 和 -v 选项。\n" +" \n" +" 使用 + 而不是 - 会关闭标志。标志也可以在 shell 被启动时使用。当前已设定的\n" +" 标志可以在 $- 变量中找到。剩余的 n 个 <参数> 是位置参数,并且会被按顺序\n" +" 赋值给 $1, $2, .. $n。如果没有给定 <参数>,则打印所有的 shell 变量。\n" " \n" " 退出状态:\n" -" 返回成功除非使用了无效的参数。" +" 返回成功,除非使用了无效的参数。" -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4102,21 +3978,23 @@ msgid "" msgstr "" "取消设定 shell 变量和函数的值和属性。\n" " \n" -" 对每一个 NAME 名称,删除对应的变量或函数。\n" +" 对于每一个 <名称>,删除对应的变量或函数。\n" " \n" " 选项:\n" -" -f\t将每个 NAME 视为函数\n" -" -v\t将每个 NAME 视为变量\n" -" -n\t将每个 NAME 视为名称引用,只取消其本身而非其指向的变量\n" +" -f\t将每个 <名称> 视为 shell 函数\n" +" -v\t将每个 <名称> 视为 shell 变量\n" +" -n\t将每个 <名称> 视为名称引用,并取消设定该变量本身,而不是\n" +" \t\t其引用的变量\n" " \n" -" 不带选项时,unset 首先尝试取消设定一个变量,如果失败,再尝试取消设定一个函数。\n" +" 不带选项时,unset 首先尝试取消设定一个变量,如果失败,再尝试取消设定\n" +" 一个函数。\n" " \n" -" 某些变量不可以被取消设定;参见 `readonly'。\n" +" 某些变量不可以被取消设定;参见 \"readonly\"。\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的选项或者 NAME 名称为只读。" +" 返回成功,除非使用了无效的选项,或者 <名称> 为只读。" -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4133,22 +4011,22 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -"为 shell 变量设定导出属性。\n" +"为 shell 变量设定 \"导出\" 属性。\n" " \n" -" 标记每个 NAME 名称为自动导出到后续命令执行的环境。如果提供了 VALUE\n" -" 则导出前将 VALUE 作为赋值。\n" +" 标记每个 <名称>,将其自动导出到后续执行的命令的环境。\n" +" 如果提供了 <值>,则导出前将其赋值为 <值>。\n" " \n" " 选项:\n" -" -f\t指 shell 函数\n" -" -n\t删除每个 NAME 名称的导出属性\n" +" -f\t所指代的是 shell 函数\n" +" -n\t删除每个 <名称> 的 \"导出\" 属性\n" " -p\t显示所有导出的变量和函数的列表\n" " \n" -" `--' 的参数禁用进一步的选项处理。\n" +" 参数 \"--\" 禁用后续的选项处理。\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的选项或者 NAME 名称。" +" 返回成功,除非使用了无效的选项,或者 <名称> 无效。" -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4170,21 +4048,21 @@ msgid "" msgstr "" "标记 shell 变量为不可改变。\n" " \n" -" 标记每一个 NAME 名称为只读;这些 NAME 变量的值将不可以被后续的赋值\n" -" 操作所改变。如果提供了 VALUE,则在标记为只读之前将 VALUE 值赋给变量。\n" +" 标记每一个 <名称> 为只读;这些 <名称> 的值将不可以被后续的赋值操作\n" +" 所改变。如果提供了 <值>,则在标记为只读之前将 <值> 赋给变量。\n" " \n" " 选项:\n" -" -a\t指下标数组变量\n" -" -A\t指关联数组标量\n" -" -f\t指 shell 函数\n" -" -p\t显示只读变量或函数列表,取决于是否提供了 -f 选项\n" +" -a\t所指代的是索引数组变量\n" +" -A\t所指代的是关联数组变量\n" +" -f\t所指代的是 shell 函数\n" +" -p\t显示所有只读变量或者函数的列表,取决于是否提供了 -f 选项\n" " \n" -" `--' 的参数禁用进一步的选项处理。\n" +" 参数 \"--\" 禁用后续的选项处理。\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的选项或者 NAME 名称。" +" 返回成功,除非使用了无效的选项,或者 <名称> 无效。" -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4196,13 +4074,13 @@ msgid "" msgstr "" "移位位置参数。\n" " \n" -" 重命名位置参数 $N+1、$N+2 ... 到 $1、$2 ... 如果没有给定 N,\n" -" 则假设为1.\n" +" 将位置参数 $N+1,$N+2 ... 重命名为 $1,$2 ...。如果没有给定 N,\n" +" 则假定 N 为 1。\n" " \n" " 退出状态:\n" -" 返回成功,除非 N 为负或者大于 $#。" +" 返回成功,除非 N 为负数或者大于 $#。" -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4217,14 +4095,15 @@ msgid "" msgstr "" "在当前 shell 中执行一个文件中的命令。\n" " \n" -" 在当前 shell 中读取并执行 FILENAME 文件中的命令。$PATH 变量中的\n" -" 条目被用于寻找包含 FILENAME 文件的目录。如果提供了任何的 ARGUMENTS\n" -" 参数,则它们将成为 FILENAME 文件执行时的位置参数。\n" +" 在当前 shell 中读取并执行 <文件名> 中的命令。将使用 $PATH 变量中的\n" +" 条目寻找包含 <文件名> 的目录。如果提供了 <参数>,则它们将成为\n" +" <文件名> 执行时的位置参数。\n" " \n" " 退出状态:\n" -" 返回 FILENAME 文件中最后一个命令的状态;如果 FILENAME 文件不可读则失败。" +" 返回 <文件名> 中最后一个被执行的命令的状态;如果无法读取 <文件名>,\n" +" 则返回失败。" -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4237,18 +4116,18 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" -"挂起 shell 执行。\n" +"挂起 shell 的执行。\n" " \n" -" 挂起 shell 的执行直到收到 SIGCONT 信号。\n" +" 挂起此 shell 的执行,直到它收到 SIGCONT 信号。\n" " 登录 shell 不可以被挂起,除非强制执行。\n" " \n" " 选项:\n" -" -f\t强制挂起,即使是登录 shell。\n" +" -f\t强制挂起,即使此 shell 是登录 shell。\n" " \n" " 退出状态:\n" -" 返回成功,除非没有启用任务控制或者有错误发生。" +" 返回成功,除非没有启用任务控制,或者有错误发生。" -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4328,91 +4207,95 @@ msgid "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." msgstr "" -"对条件表达式进行估值。\n" -" \n" -" 根据 EXPR 表达式的估值以状态 0 (真) 或 1 (伪) 退出。\n" -" 表达式可以是一元或者二元的。一元表达式通常用于检测\n" -" 文件状态。同时还有字符串操作符和数字比较操作符。\n" -" \n" -" 文件操作符:\n" -" \n" -" -a 文件 如果文件存在则为真。\n" -" -b 文件 如果文件为块特殊文件则为真。\n" -" -c 文件 如果文件为字符特殊文件则为真。\n" -" -d 文件 如果文件为目录则为真。\n" -" -e 文件 如果文件存在则为真。\n" -" -f 文件 如果文件存在且为常规文件则为真。\n" -" -g 文件 如果文件的组属性设置打开则为真。\n" -" -h 文件 如果文件为符号链接则为真。\n" -" -L 文件 如果文件为符号链接则为真。\n" -" -k 文件 如果文件的粘滞 (sticky) 位设定则为真。\n" -" -p 文件 如果文件为命名管道则为真。\n" -" -r 文件 如果文件对于您是可读的则为真。\n" -" -s 文件 如果文件存在且不为空则为真。\n" -" -S 文件 如果文件是套接字则为真。\n" -" -t 文件描述符 如果文件描述符在一个终端上打开则为真。\n" -" -u 文件 如果文件的用户数行设置打开则为真。\n" -" -w 文件 如果文件对您是可写的则为真\n" -" -x 文件 如果文件对您是可执行的则为真。\n" -" -O 文件 如果文件是被您所有的则为真。\n" -" -G 文件 如果文件被您的组所有则为真。\n" -" -N 文件 如果文件上次被读取之后修改过则为真。\n" -" \n" -" FILE1 -nt FILE2 如果 file1 文件新于 file2 文件则为真(根据\n" -" 修改日期)。\n" -" \n" -" FILE1 -ot FILE2 如果 file1 文件旧于 file2 文件则为真。\n" -" \n" -" FILE1 -ef FILE2 如果 file1 文件是 file2 文件的硬链接则为真。\n" -" \n" -" 字符串操作符\n" -" \n" -" -z 字符串 如果字符串为空则为真。\n" +"对条件表达式进行求值。\n" " \n" -" -n 字符串\n" -" 字符串 如果字符串不为空则为真。\n" +" 根据 <表达式> 的求值结果,以状态 0(真)或 1(假)退出。\n" +" 表达式可以是一元的或者二元的。一元表达式通常用于检测文件状态。\n" +" 同时还有字符串运算符和数值比较运算符。\n" " \n" -" STRING1 = STRING2\n" -" 如果 string1 和 string2 字符串相同则为真。\n" -" STRING1 != STRING2\n" -" 如果 string1 和 string2 字符串不相同则为真。\n" -" STRING1 < STRING2\n" -" 如果按字典排序 string1 在 string2 串之前则为真。\n" -" STRING1 > STRING2\n" -" 如果按字典排序 string1 在 string2 串之前则为真。\n" +" test 的行为取决于参数的数量。请阅读 bash 手册页以获取完整的\n" +" 说明文档。\n" +" \n" +" 文件运算符:\n" +" \n" +" -a 文件 如果 <文件> 存在则为真。\n" +" -b 文件 如果 <文件> 为块特殊文件则为真。\n" +" -c 文件 如果 <文件> 为字符特殊文件则为真。\n" +" -d 文件 如果 <文件> 为目录则为真。\n" +" -e 文件 如果 <文件> 存在则为真。\n" +" -f 文件 如果 <文件> 存在且为普通文件则为真。\n" +" -g 文件 如果 <文件> 设置了 setgid 位则为真。\n" +" -h 文件 如果 <文件> 为符号链接则为真。\n" +" -L 文件 如果 <文件> 为符号链接则为真。\n" +" -k 文件 如果 <文件> 设置了粘滞位 (sticky bit) 则为真。\n" +" -p 文件 如果 <文件> 为命名管道则为真。\n" +" -r 文件 如果 <文件> 对您是可读的则为真。\n" +" -s 文件 如果 <文件> 存在且不为空则为真。\n" +" -S 文件 如果 <文件> 是套接字则为真。\n" +" -t FD 如果文件描述符 已在一个终端上打开则为真。\n" +" -u 文件 如果 <文件> 设置了 setuid 位则为真。\n" +" -w 文件 如果 <文件> 对您是可写的则为真。\n" +" -x 文件 如果 <文件> 对您是可执行的则为真。\n" +" -O 文件 如果 <文件> 是被您(有效 uid)所有的则为真。\n" +" -G 文件 如果 <文件> 是被您的组(有效 gid)所有的则为真。\n" +" -N 文件 如果 <文件> 上次读取之后被修改过则为真。\n" +" \n" +" 文件1 -nt 文件2 如果 <文件1> 新于 <文件2> 则为真(根据修改日期)。\n" " \n" -" 其他操作符:\n" +" 文件1 -ot 文件2 如果 <文件1> 旧于 <文件2> 则为真。\n" " \n" -" -o 选项 如果指定 shell 选项启用则为真。\n" -" -v VAR 如果指定 Shell 变量 VAR 已赋值则为真。\n" -" -R VAR 如果指定 Shell 变量 VAR 已赋值且为名称引用则为真。\n" -" ! EXPR 如果表达式 expr 为假则为真。\n" -" EXPR1 -a EXPR2 如果 expr1 和 expr2 都为真则为真。\n" -" EXPR1 -o EXPR2 如果 expr1 和 expr2 有一个为真则为真。\n" +" 文件1 -ef 文件2 如果 <文件1> 是到 <文件2> 的硬链接则为真。\n" " \n" -" arg1 OP arg2 算术测试。OP操作符可以是 -eq、-ne、\n" -" -lt、-le、-gt、或 -ge 中的一个。\n" +" 字符串运算符:\n" " \n" -" 二元算术操作返回真,如果 ARG1 参数等于、不等于、\n" -" 小于、小于等于、大于、或者大于等于 ARG2 参数。\n" +" -z 字符串 如果 <字符串> 为空则为真。\n" +" \n" +" -n 字符串\n" +" 字符串 如果 <字符串> 不为空则为真。\n" +" \n" +" 字符串1 = 字符串2\n" +" 如果两个字符串相等则为真。\n" +" 字符串1 != 字符串2\n" +" 如果两个字符串不相等则为真。\n" +" 字符串1 < 字符串2\n" +" 如果按字典序 <字符串1> 在 <字符串2> 之前则为真。\n" +" 字符串1 > 字符串2\n" +" 如果按字典序 <字符串1> 在 <字符串2> 之后则为真。\n" +" \n" +" 其他运算符:\n" +" \n" +" -o 选项 如果指定的 shell 选项 <选项> 启用则为真。\n" +" -v 变量 如果指定的 shell 变量 <变量> 已设定则为真。\n" +" -R 变量 如果指定的 shell 变量 <变量> 已设定且为名称引用则为真。\n" +" ! 表达式 如果 <表达式> 为假则为真。\n" +" 表达式1 -a 表达式2\n" +" 如果 <表达式1> 和 <表达式2> 都为真则为真。\n" +" 表达式1 -o 表达式2\n" +" 如果 <表达式1> 和 <表达式2> 中任何一个为真则为真。\n" +" \n" +" 参数1 运算符 参数2\n" +" 算术测试。<运算符> 可以是 -eq、-ne、\n" +" -lt、-le、-gt 或 -ge 中的一个。\n" +" \n" +" 二元算术运算符返回真,如果 <参数1> 等于、不等于、小于、小于等于、\n" +" 大于,或者大于等于 <参数2>。\n" " \n" " 退出状态:\n" -" 如果 EXPR 表达式估值为真则返回成功;如果 EXPR 表达式估值\n" -" 为假或者使用了无效的参数则返回失败。" +" 如果 <表达式> 求值结果为真则返回成功;如果 <表达式> 求值结果为假,\n" +" 或者使用了无效的参数,则返回失败。" -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" " This is a synonym for the \"test\" builtin, but the last argument must\n" " be a literal `]', to match the opening `['." msgstr "" -"估值条件表达式。\n" +"对条件表达式进行求值。\n" " \n" -" 是内建命令 \"test\" 的同义词,但是最后一个参数必须是\n" -" 字符 `]',以匹配起始的 `['。" +" 同 \"test\" 内建,但是最后一个参数必须是字符 \"]\",以匹配起始的 \"[\"。" -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4422,17 +4305,16 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" -"显示进程时间\n" +"显示进程时间。\n" " \n" -" 打印 shell 及其所有子进程的累计用户空间和\n" -" 系统空间执行时间。\n" +" 打印此 shell 及其所有子进程的累计用户和系统时间。\n" " \n" -" 退出状态\n" +" 退出状态:\n" " 总是成功。" # EXIT and DEBUG should be as-is. Use before you translate, please. # The -signal is only an example; Read carefully. -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4466,34 +4348,36 @@ msgid "" " Exit Status:\n" " Returns success unless a SIGSPEC is invalid or an invalid option is given." msgstr "" -"对信号和其他事件设陷阱。\n" +"为信号和其他事件设置陷阱。\n" " \n" -" 定义一个处理器,在 shell 接收到信号和其他条件下执行。\n" +" 定义并激活当 shell 接收到信号或满足其他条件时执行的处理程序。\n" " \n" -" ARG 参数是当 shell 接收到 SIGNAL_SPEC 信号时读取和执行的命令。\n" -" 如果没有指定 ARG 参数 (并且只给出一个 SIGNAL_SPEC 信号) 或者\n" -" ARG 参数为\n" -" `-',每一个指定的参数会被重置为原始值。如果 ARG 参数是一个空串,则每一个\n" -" SIGNAL_SPEC 信号会被 shell 和它启动的命令忽略。\n" +" <参数> 是当 shell 接收到 <信号说明符> 时读取和执行的命令。如果\n" +" 没有指定 <参数>(并且只给出一个 <信号说明符>)或者 <参数> 为 \"-\",\n" +" 则每一个指定的信号会被重置为原始值。如果 <参数> 是空字符串,则每一个\n" +" <信号说明符> 会被 shell 和它启动的命令忽略。\n" " \n" -" 如果一个 SIGNAL_SPEC 信号是 EXIT (0) ,则 ARG 命令会在 shell 退出时被\n" -" 执行。如果一个 SIGNAL_SPEC 信号是 DEBUG,则 ARG命令会在每一个简单命\n" -" 令之前执行。\n" +" 如果一个 <信号说明符> 是 EXIT (0),则 <参数> 会在 shell 退出时被执行。\n" +" 如果一个 <信号说明符> 是 DEBUG,则 <参数> 会在每一个简单命令之前执行。\n" +" 如果一个 <信号说明符> 是 RETURN,则 <参数> 会在每一个 shell 函数或者\n" +" 通过 . 或 source 内建执行的脚本执行结束时被执行。如果一个 <信号说明符>\n" +" 是 ERR,则 <参数> 会在命令返回失败,并且假如启用了 -e 选项,本次失败就\n" +" 会导致 shell 退出的情况下被执行。\n" " \n" -" 如果不提供参数,trap 打印列表显示每一个与每一个信号相关联的命令。\n" +" 如果不提供参数,trap 打印与每一个信号相关联的命令列表。\n" " \n" " 选项:\n" -" -l\t打印一个信号名称和它们对应的编号的列表\n" -" -p\t打印与每个 SIGNAL_SPEC 信号相关联的陷阱命令\n" +" -l\t打印信号名称以及和它们对应的编号的列表\n" +" -p\t打印与每个 <信号说明符> 相关联的陷阱命令\n" " \n" -" 每一个 SIGNAL_SPEC 信号可以是 中的信号名称或者信号编号。\n" -" 信号名称大小写敏感且可以使用 SIG 前缀。信号可用 \"kill -信号 $$\"\n" -" 发送给 shell。\n" +" 每一个 <信号说明符> 可以是 中的信号名称或者信号编号。信号名称\n" +" 是大小写敏感的,并且 SIG 前缀是可选的。可以使用 \"kill -信号 $$\" 给 shell\n" +" 发送信号。\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的选项或者 SIGSPEC。" +" 返回成功,除非使用了无效的 <信号说明符>,或者无效的选项。" -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4521,76 +4405,29 @@ msgid "" " Exit Status:\n" " Returns success if all of the NAMEs are found; fails if any are not found." msgstr "" -"显示命令类型的信息。\n" +"显示关于命令类型的信息。\n" " \n" -" 对于每一个 NAME 名称,指示如果作为命令它将如何被解释。\n" +" 对于每一个 <名称>,指出如果作为命令名使用时,它将如何被解释。\n" " \n" " 选项:\n" -" -a\t显示所有包含名称为 NAME 的可执行文件的位置;\n" -" \t\t包括别名、内建和函数。仅当 `-p' 选项没有使用时\n" -" -f\t抑制 shell 函数查询\n" -" -P\t为每个 NAME 名称惊醒 PATH 路径搜索,即使它是别名、\n" -" \t\t内建或函数,并且返回将被执行的磁盘上文件的名称。\n" -" -p\t返回将被执行的磁盘上文件的名称,或者当 `type -t NAME'\n" -" \t不返回 `file' 时,不返回任何值。\n" -" -t\t返回下列词中的任何一个 `alias'、`keyword'、\n" -" \t`function'、`builtin'、`file' 或者 `',相应地如果 NAME 是\n" -" \t一个别名、shell 保留字、shell 函数、shell 内建、\n" -" \t磁盘文件或没有找到。\n" +" -a\t当且仅当没有同时使用 \"-p\" 选项时,显示所有包含名为 <名称>\n" +" \t\t的可执行文件的位置;包括别名、内建和函数\n" +" -f\t阻止 shell 函数查找流程\n" +" -P\t强制对每个 <名称> 搜索 PATH,即使它是别名、内建或函数,\n" +" \t\t并且返回将被执行的磁盘上的文件的名称\n" +" -p\t返回将被执行的磁盘上的文件的名称,或者当 \"type -t 名称\"\n" +" \t\t不返回 \"file\" 时,不返回任何值\n" +" -t\t返回下列单词中的一个:\"alias\"、\"keyword\"、\"function\"、\n" +" \t\t\"builtin\"、\"file\" 或者 \"\",分别表示 <名称> 是一个别名、\n" +" \t\tshell 保留字、shell 函数、shell 内建、磁盘文件或者未找到\n" " \n" " 参数:\n" -" NAME\t将要解析的命令。\n" +" 名称\t需要解释的命令。\n" " \n" " 退出状态:\n" -" 如果所有的 NAME 命令都找到则返回成功;任何一个找不到则失败。" - -#: builtins.c:1431 -#, fuzzy -#| msgid "" -#| "Modify shell resource limits.\n" -#| " \n" -#| " Provides control over the resources available to the shell and processes\n" -#| " it creates, on systems that allow such control.\n" -#| " \n" -#| " Options:\n" -#| " -S\tuse the `soft' resource limit\n" -#| " -H\tuse the `hard' resource limit\n" -#| " -a\tall current limits are reported\n" -#| " -b\tthe socket buffer size\n" -#| " -c\tthe maximum size of core files created\n" -#| " -d\tthe maximum size of a process's data segment\n" -#| " -e\tthe maximum scheduling priority (`nice')\n" -#| " -f\tthe maximum size of files written by the shell and its children\n" -#| " -i\tthe maximum number of pending signals\n" -#| " -k\tthe maximum number of kqueues allocated for this process\n" -#| " -l\tthe maximum size a process may lock into memory\n" -#| " -m\tthe maximum resident set size\n" -#| " -n\tthe maximum number of open file descriptors\n" -#| " -p\tthe pipe buffer size\n" -#| " -q\tthe maximum number of bytes in POSIX message queues\n" -#| " -r\tthe maximum real-time scheduling priority\n" -#| " -s\tthe maximum stack size\n" -#| " -t\tthe maximum amount of cpu time in seconds\n" -#| " -u\tthe maximum number of user processes\n" -#| " -v\tthe size of virtual memory\n" -#| " -x\tthe maximum number of file locks\n" -#| " -P\tthe maximum number of pseudoterminals\n" -#| " -T\tthe maximum number of threads\n" -#| " \n" -#| " Not all options are available on all platforms.\n" -#| " \n" -#| " If LIMIT is given, it is the new value of the specified resource; the\n" -#| " special LIMIT values `soft', `hard', and `unlimited' stand for the\n" -#| " current soft limit, the current hard limit, and no limit, respectively.\n" -#| " Otherwise, the current value of the specified resource is printed. If\n" -#| " no option is given, then -f is assumed.\n" -#| " \n" -#| " Values are in 1024-byte increments, except for -t, which is in seconds,\n" -#| " -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" -#| " number of processes.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is supplied or an error occurs." +" 如果所有的 <名称> 都被找到则返回成功;任何一个未找到则失败。" + +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4640,47 +4477,49 @@ msgid "" msgstr "" "修改 shell 资源限制。\n" " \n" -" 在允许此类控制的系统上,提供对于 shell 及其创建的进程所可用的\n" -" 资源的控制。\n" +" 在允许此类控制的系统上,提供对于 shell 及其创建的进程可使用的资源的\n" +" 控制。\n" " \n" " 选项:\n" -" -S\t使用软 (`soft') 资源限制\n" -" -H\t使用硬 (`hard') 资源限制\n" -" -a\t所有当前限制都被报告\n" -" -b\t套接字缓存尺寸\n" -" -c\t创建的核文件的最大尺寸\n" -" -d\t一个进程的数据区的最大尺寸\n" -" -e\t最高的调度优先级 (`nice')\n" -" -f\t有 shell 及其子进程可以写的最大文件尺寸\n" -" -i\t最多的可以挂起的信号数\n" +" -S\t使用 \"软\" (soft) 资源限制\n" +" -H\t使用 \"硬\" (hard) 资源限制\n" +" -a\t报告当前的所有限制\n" +" -b\t套接字缓冲区大小\n" +" -c\t创建的核心文件的最大大小\n" +" -d\t一个进程的数据段的最大大小\n" +" -e\t调度优先级 (nice) 的最大值\n" +" -f\tshell 及其子进程可以写的最大文件大小\n" +" -i\t可以挂起的最大信号数量\n" " -k\t分配给此进程的最大 kqueue 数量\n" -" -l\t一个进程可以锁定的最大内存尺寸\n" -" -m\t最大的内存进驻尺寸\n" -" -n\t最多的打开的文件描述符个数\n" -" -p\t管道缓冲区尺寸\n" -" -q\tPOSIX 信息队列的最大字节数\n" +" -l\t一个进程可以锁定的最大内存大小\n" +" -m\t驻留集的最大大小\n" +" -n\t打开的文件描述符的最大个数\n" +" -p\t管道缓冲区大小\n" +" -q\tPOSIX 消息队列的最大字节数\n" " -r\t实时调度的最大优先级\n" -" -s\t最大栈尺寸\n" -" -t\t最大的CPU时间,以秒为单位\n" +" -s\t最大栈大小\n" +" -t\t最大的 CPU 时间,以秒为单位\n" " -u\t最大用户进程数\n" -" -v\t虚拟内存尺寸\n" -" -x\t最大的文件锁数量\n" -" -P\t最大伪终端数量\n" +" -v\t虚拟内存大小\n" +" -x\t文件锁的最大数量\n" +" -P\t伪终端的最大数量\n" +" -R\t实时进程阻塞前可运行的最大时间\n" " -T\t最大线程数量\n" " \n" -" 并非所有选项在所有系统上可用。\n" +" 并非所有选项都在所有系统上可用。\n" " \n" -" 如果提供了 LIMIT 变量,则它为指定资源的新的值;特别的 LIMIT 值为\n" -" `soft'、`hard'和`unlimited',分别表示当前的软限制,硬限制和无限制。\n" -" 否则打印指定资源的当前限制值,不带选项则假定为 -f\n" +" 如果提供了 <限制>,则它将成为指定的资源的新的值;特殊的 <限制> 值为\n" +" \"soft\"、\"hard\" 和 \"unlimited\",分别表示当前的软限制、当前的硬限制,\n" +" 以及无限制。否则,打印指定资源的当前限制值。如果未提供选项,则假定\n" +" 为 -f。\n" " \n" -" 取值都是 1024 字节为单位,除了 -t 以秒为单位,-p 以 512 字节递增,\n" -" -u 为无范围的进程数量。\n" +" 限制值的单位都是 1024 字节,除了 -t 单位是秒,-p 单位是 512 字节,\n" +" -u 为未经缩放的进程数量。\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的选项或者错误发生。" +" 返回成功,除非使用了无效的选项,或者有错误发生。" -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4699,39 +4538,19 @@ msgid "" msgstr "" "显示或设定文件模式掩码。\n" " \n" -" 设定用户文件创建掩码为 MODE 模式。如果省略了 MODE,则\n" -" 打印当前掩码的值。\n" +" 设定用户文件创建掩码为 <模式>。如果省略 <模式>,则打印当前掩码的值。\n" " \n" -" 如果 MODE 模式以数字开头,则被当作八进制数解析;否则是一个\n" -" chmod(1) 可接收的符号模式串。\n" +" 如果 <模式> 以数字开头,则按照八进制数进行解释;否则视为一个\n" +" chmod(1) 可接受的符号模式串。\n" " \n" " 选项:\n" -" -p\t如果省略 MODE 模式,以可重用为输入的格式输入\n" +" -p\t如果省略 <模式>,以可重用作输入的格式输出\n" " -S\t以符号形式输出,否则以八进制数格式输出\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的 MODE 模式或者选项。" - -#: builtins.c:1502 -#, fuzzy -#| msgid "" -#| "Wait for job completion and return exit status.\n" -#| " \n" -#| " Waits for each process identified by an ID, which may be a process ID or a\n" -#| " job specification, and reports its termination status. If ID is not\n" -#| " given, waits for all currently active child processes, and the return\n" -#| " status is zero. If ID is a job specification, waits for all processes\n" -#| " in that job's pipeline.\n" -#| " \n" -#| " If the -n option is supplied, waits for the next job to terminate and\n" -#| " returns its exit status.\n" -#| " \n" -#| " If the -f option is supplied, and job control is enabled, waits for the\n" -#| " specified ID to terminate, instead of waiting for it to change status.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns the status of the last ID; fails if ID is invalid or an invalid\n" -#| " option is given." +" 返回成功,除非使用了无效的 <模式> 或者选项。" + +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4760,19 +4579,26 @@ msgid "" msgstr "" "等待任务完成并返回退出状态。\n" " \n" -" 等待以 ID 编号识别的进程,其中 ID 可以是进程编号或者任务声明,\n" -" 并报告它的终止状态。如果 ID 没有给出,则等待所有的当前活跃子\n" -" 进程,并且返回状态为零。如果 ID 是任务声明,等待任务管道中的\n" -" 所有进程。\n" +" 等待以 指定的进程,其中 可以是进程 ID 或者任务说明符,\n" +" 并报告它的终止状态。如果没有指定 ,则等待当前活跃的所有子\n" +" 进程,并且返回状态为零。如果 是任务说明符,则等待该任务的\n" +" 流水线中的所有进程。\n" " \n" -" 若给定了 -n 选项,等待下一个任务完成并返回其状态。\n" +" 若给定了 -n 选项,从 列表中等待单个任务完成,或者,\n" +" 如果没有提供 ,等待下一个任务完成并返回其退出状态。\n" +" \n" +" 若给定了 -p 选项, 被返回退出状态的任务的进程 ID 或任务 ID 将被赋值\n" +" 给选项的参数指定的 <变量>。该变量会首先被取消设定,然后才会进行赋值。\n" +" 该选项只有和 -n 选项同时使用时才有用。\n" +" \n" +" 若给定了 -f 选项,且启用了任务控制,则等待指定的 终止,\n" +" 而不是等待它改变状态。\n" " \n" -" 若给定了 -f 选项,且已启用了任务控制,则等待指定的 ID 终止\n" -" 而非等待它改变状态。\n" " 退出状态:\n" -" 返回最后一个 ID 进程的状态;如果使用了无效的 ID 或者选项则失败。" +" 返回最后一个 的状态;如果使用了无效的 ,或者使用了无效的\n" +" 选项,或者给定了 -n 选项但 shell 没有尚未等待的子进程,则失败。" -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4786,13 +4612,13 @@ msgid "" msgstr "" "等待进程完成并且返回退出状态。\n" " \n" -" 等待指定进程并报告它的终止状态。如果没有提供 PID,则当前所有的活跃\n" -" 子进程都会被等待,并且返回码为零。PID 必须为进程号。\n" +" 等待以 指定的进程并报告它的终止状态。如果没有提供 ,则等待当前\n" +" 所有活跃的子进程,并且返回码为零。 必须为进程 ID。\n" " \n" " 退出状态:\n" -" 返回进程 ID 的状态;如果 PID 是无效的进程号或者指定了无效的选项则失败。" +" 返回最后一个 的状态;如果 无效,或者使用了无效的选项,则失败。" -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4806,14 +4632,14 @@ msgid "" msgstr "" "为列表中的每个成员执行命令。\n" " \n" -" “for”循环为列表中的每个成员执行一系列的命令。如果没有\n" -" “in <词语> ...;”则假定使用“in \"$@\"”。对于 <词语> 中的每\n" -" 个元素,<名称> 变量被设定为该元素后执行 <命令>。\n" +" \"for\" 循环为列表中的每个成员执行一系列的命令。\n" +" 如果没有 \"in 词语 ...;\" ,则假定使用 `in \"$@\"'。对于 <词语> 中的\n" +" 每个元素,<名称> 被设定为该元素,然后执行 <命令>。\n" " \n" " 退出状态:\n" " 返回最后执行的命令的状态。" -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4832,18 +4658,18 @@ msgstr "" "算术 for 循环。\n" " \n" " 等价于\n" -" \t(( EXP1 ))\n" -" \twhile (( EXP2 )); do\n" -" \t\t命令们\n" -" \t\t(( EXP3 ))\n" +" \t(( 表达式1 ))\n" +" \twhile (( 表达式2 )); do\n" +" \t\t命令\n" +" \t\t(( 表达式3 ))\n" " \tdone\n" -" EXP1、EXP2 和 EXP3 都是算术表达式。如果省略任何表达式,\n" -" 则等同于使用了估值为1的表达式。\n" +" <表达式1>、<表达式2> 和 <表达式3> 都是算术表达式。如果省略任何表达式,\n" +" 则等价于使用了求值结果为 1 的表达式。\n" " \n" " 退出状态:\n" " 返回最后执行的命令的状态。" -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4864,19 +4690,19 @@ msgid "" msgstr "" "从列表中选取词并且执行命令。\n" " \n" -" <词语...> 被展开,生成一个词的列表。展开的词集合被打印\n" -" 在标准错误输出设备上,每个以一个数字做前缀。如果没有 `in WORDS'\n" -" 则假定使用`in \"$@\"'。PS3提示符会被显示并且从标准输入读入一行\n" -" 如果该行由被显示的词对应的数字组成,则 NAME 变量被设定为相应\n" -" 的词。如果行为空,则 WORDS 变量和提示符被重新显示。如果读取了\n" -" 文件结束符,则命令完成。读入任何其他的值会导致 NAME 变量被设定\n" -" 为空。读入的行被存放在变量 REPLY 中。COMMANDS 命令在每次选择\n" -" 之后执行直到执行一个 break 命令。\n" +" <词语> 被展开,生成一个词语列表。展开后的词语集合被打印到\n" +" 标准错误,每个词语前面打印一个数字。如果没有 \"in 词语\" ,则假定\n" +" 使用 `in \"$@\"'。然后,会显示一个 PS3 提示符,并且从标准输入读取\n" +" 一行。如果该行是所显示的词之一所对应的数字,则 <名称> 被设定为\n" +" 相应的词。如果该行为空,则会重新显示 <词语> 和提示符。如果读到了\n" +" EOF,则命令完成。读入任何其他的值会导致 <名称> 变量被设定为空。\n" +" 读入的行被存放在变量 REPLY 中。<命令> 会在每次选择之后被执行,\n" +" 直到执行到 break 命令。\n" " \n" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4891,20 +4717,20 @@ msgid "" " Exit Status:\n" " The return status is the return status of PIPELINE." msgstr "" -"报告管道执行的消耗时间。\n" +"报告流水线执行消耗的时间。\n" " \n" -" 执行 PIPELINE 并且打印 PIPELINE 终结时实际时间、用户 CPU 时间和系统\n" -" CPU 时间的总结。\n" +" 执行 <流水线> 并且打印 <流水线> 终止时消耗的真实时间、用户 CPU 时间\n" +" 和系统 CPU 时间的总结。\n" " \n" " 选项:\n" -" -p\t用可迁移的 POSIX 格式打印用时总结。\n" +" -p\t用可移植的 POSIX 格式打印用时总结。\n" " \n" -" TIMEFORMAT 变量的值被作为输出格式。\n" +" 使用 TIMEFORMAT 变量的值作为输出格式。\n" " \n" " 退出状态:\n" -" 返回状态即PIPELINE 的返回状态。" +" 返回状态是 <流水线> 的返回状态。" -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4916,13 +4742,13 @@ msgid "" msgstr "" "基于模式匹配来执行命令。\n" " \n" -" 基于 PATTERN 模式匹配的词 WORD,有选择的执行 COMMANDS 命令。\n" -" `|' 用于分隔多个模式。\n" +" 根据和 <词语> 匹配的 <模式> ,选择性地执行 <命令>。\n" +" \"|\" 用于分隔多个模式。\n" " \n" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4939,52 +4765,50 @@ msgid "" msgstr "" "根据条件执行命令。\n" " \n" -" `if COMMANDS'列表被执行。如果退出状态为零,则执行`then COMMANDS' \n" -" 列表。否则按顺序执行每个 `elif COMMANDS'列表,并且如果它的退出状态为\n" -" 零,则执行对应的 `then COMMANDS' 列表并且 if 命令终止。否则如果存在的\n" -" 情况下,执行 `else COMMANDS'列表。整个结构的退出状态是最后一个执行\n" -" 的命令的状态,或者如果没有条件测试为真的话,为零。\n" +" 执行 \"if 命令\" 列表。如果退出状态为零,则执行 \"then 命令\" 列表。\n" +" 否则按顺序执行每个 \"elif 命令\" 列表,如果某一个的退出状态为零,则执行\n" +" 对应的 \"then 命令\" 列表,然后 if 命令完成。否则,执行 \"else 命令\"\n" +" 列表(如果有的话)。整个结构的退出状态是最后一个执行的命令的状态,\n" +" 或者如果没有一个条件的测试结果为真,则退出状态为零。\n" " \n" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"只要测试成功即执行命令。\n" +"只要测试仍然成功,就执行命令。\n" " \n" -" 只要在 `while' COMMANDS 中的最终命令返回结果为0,则\n" -" 展开并执行 COMMANDS 命令。\n" +" 只要 <命令> 中的最后一个命令的退出状态仍然为 0,就展开并执行 <命令-2>。\n" " \n" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"当测试不同过时执行命令。\n" +"只要测试仍然不成功,就执行命令。\n" " \n" -" `until' COMMANDS 命令的最终命令返回状态不为 0 时,\n" -" 展开并执行 COMMANDS 命令。\n" +" 只要 <命令> 中的最后一个命令的退出状态仍然不为 0,就展开并执行 <命令-2>。\n" " \n" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4996,17 +4820,17 @@ msgid "" " Exit Status:\n" " The coproc command returns an exit status of 0." msgstr "" -"创建一个以 NAME 为名的副进程。\n" +"创建一个名为 <名称> 的副进程。\n" " \n" -" 异步执行 COMMANDS 命令,在执行 shell 中的数组变量 NAME\n" -" 的 0 号和 1 号元素作为文件描述符,以一个管道连接命令\n" -" 分别作为命令的标准输出和输入设备。\n" -" 默认的 NAME 是 \"COPROC\"。\n" +" 异步执行 <命令>,并将命令的标准输出和标准输入通过管道连接到执行该命令\n" +" 的 shell 的文件描述符,再将两个文件描述符分别赋值给数组变量 <名称> 的\n" +" 索引为 0 和 1 的元素。\n" +" 默认的 <名称> 是 \"COPROC\"。\n" " \n" " 退出状态:\n" -" 副进程会返回退出状态 0。" +" coproc 命令返回退出状态 0。" -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -5020,15 +4844,14 @@ msgid "" msgstr "" "定义 shell 函数。\n" " \n" -" 创建一个以 NAME 为名的 shell 函数。当作为一个简单的命令启用时,\n" -" NAME 函数执行调用 shell 的上下文中的 COMMANDs 命令。当 NAME\n" -" 被启用时,参数作为 $1...$n 被传递给函数,函数的名字储存在变量\n" -" $FUNCNAME 中。\n" +" 创建一个名为 <名称> 的 shell 函数。当作为一个简单命令被调用时,\n" +" <名称> 在调用它的 shell 的上下文中执行 <命令>。当 <名称> 被调用时,\n" +" 传递给函数的参数储存在 $1...$n 中,函数名储存在 $FUNCNAME 中。\n" " \n" " 退出状态:\n" -" 返回成功除非 NAME 为只读。" +" 返回成功,除非 <名称> 为只读。" -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -5040,13 +4863,12 @@ msgid "" msgstr "" "将命令组合为一个单元。\n" " \n" -" 运行组中的命令集合。这是对整个命令集合\n" -" 做重定向的方法之一。\n" +" 运行一个组中的命令集合。这是对整个命令集合进行重定向的方法之一。\n" " \n" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5059,27 +4881,17 @@ msgid "" " Exit Status:\n" " Returns the status of the resumed job." msgstr "" -"在前台继续任务\n" +"在前台继续任务。\n" " \n" -" 对于 JOB_SPEC 参数来说和 `fg' 命令等同。继续一个\n" -" 停止的或者后台任务。JOB_SPEC 可以指定一个任务\n" -" 名字或任务号。在 JOB_SPEC 后加上一个 `&' 将会把\n" -" 任务放至后台,就像任务声明被作为 `bg' 命令的参数\n" +" 等价于向 \"fg\" 命令传递 <任务说明符> 参数。继续一个已停止的任务或\n" +" 后台任务。<任务说明符> 可以是任务名称或任务编号。在 <任务说明符>\n" +" 后加上一个 \"&\" 会把任务放至后台,就像该任务说明符被作为 \"bg\" 的参数\n" " 执行一样。\n" " \n" " 退出状态:\n" " 返回被继续的任务的状态。" -#: builtins.c:1726 -#, fuzzy -#| msgid "" -#| "Evaluate arithmetic expression.\n" -#| " \n" -#| " The EXPRESSION is evaluated according to the rules for arithmetic\n" -#| " evaluation. Equivalent to \"let EXPRESSION\".\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5089,15 +4901,14 @@ msgid "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -"估值算术表达式。\n" +"对算术表达式进行求值。\n" " \n" -" 表达式按照算术法则进行估值。\n" -" 等价于 \"let 表达式\".\n" +" 对 <表达式> 按照算术求值的规则进行求值。等价于 \"let <表达式>\"。\n" " \n" -" 退出状态\n" -" 如果表达式估值为0则返回 1;否则返回0。" +" 退出状态:\n" +" 如果 <表达式> 求值结果为 0,则返回 1;否则返回 0。" -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5123,25 +4934,26 @@ msgid "" msgstr "" "执行条件命令。\n" " \n" -" 根据条件表达式 EXPRESSION 的估值返回状态0或1。表达式按照\n" -" `test' 内建的相同条件组成,或者可以有下列操作符连接而成:\n" +" 根据条件表达式 <表达式> 的求值结果返回状态 0 或 1。表达式的基本元素\n" +" 与 \"test\" 内建相同,且可以通过下列运算符进行组合:\n" " \n" -" ( EXPRESSION )\t返回 EXPRESSION 表达式的值\n" -" ! EXPRESSION\t\t如果 EXPRESSION表达式为假则为真,否则为假\n" -" EXPR1 && EXPR2\t如果 EXPR1 和 EXPR2 表达式均为真则为真,否则为假\n" -" EXPR1 || EXPR2\t如果 EXPR1 和 EXPR2 表达式中有一个为真则为真,否则为假\n" +" ( 表达式 )\t\t返回 <表达式> 的值\n" +" ! 表达式\t\t\t如果 <表达式> 为假则为真,否则为假\n" +" 表达式1 && 表达式2\t如果 <表达式1> 和 <表达式2> 均为真则为真,\n" +" \t\t\t\t否则为假\n" +" 表达式1 || 表达式2\t如果 <表达式1> 和 <表达式2> 中任何一个为真\n" +" \t\t\t\t则为真,否则为假\n" " \n" -" 当使用 `==' 和 `!=' 操作符时,操作符右边的字符串被用作模式并且执行一个\n" -" 匹配。当使用 `=~' 操作符时,操作符右边的字符串被当作正则表达式来进行\n" -" 匹配。\n" +" 当使用 \"==\" 和 \"!=\" 运算符时,运算符右边的字符串被视为模式,进行模式匹配。\n" +" 当使用 \"=~\" 运算符时,运算符右边的字符串被视为正则表达式来进行匹配。\n" " \n" -" 操作符 && 和 || 将不对 EXPR2 表达式进行估值,如果 EXPR1 表达式足够确定\n" -" 整个表达式的值。\n" +" 如果 <表达式1> 足够确定整个表达式的值,运算符 && 和 || 将不会对\n" +" <表达式2> 进行求值。\n" " \n" " 退出状态:\n" -" 根据 EXPRESSION 的值为0或1。" +" 根据 <表达式> 的值返回 0 或 1。" -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5194,49 +5006,45 @@ msgid "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" msgstr "" -"常用 shell 变量名称和使用。\n" +"常用 shell 变量名称和用法。\n" " \n" " BASH_VERSION\t当前 Bash 的版本信息。\n" -" CDPATH\t用于 `cd' 命令参数搜索的分号分隔的目录列表\n" -" GLOBIGNORE\t路径扩展时忽略的文件名匹配模式列表,\n" -" \t\t以分号分隔。\n" -" HISTFILE\t您的命令历史存放的文件名称。\n" +" CDPATH\t用于搜索 \"cd\" 的参数中的目录的,以冒号分隔的目录列表\n" +" GLOBIGNORE\t路径名展开时要忽略的文件名的模式列表,以冒号分隔。\n" +" HISTFILE\t存储您的命令历史的文件名称。\n" " HISTFILESIZE\t历史文件最多可以保存的行数。\n" " HISTSIZE\t一个运行的 shell 最多可以访问的历史命令行数。\n" -" HOME\t您的登录目录的完整路径。\n" +" HOME\t您的登录目录的完整路径名。\n" " HOSTNAME\t当前主机的主机名。\n" -" HOSTTYPE\t当前版本的 BASH 在其之上运行的 CPU 类型。\n" -" IGNOREEOF\t控制 shell 收到文件结束符作为单一输入后的\n" -" \t\t动作。如果设定这个变量,则它的值是 shell 退出之前在\n" -" \t\t一个空行上可以连续看到的文件结束符数量(默认为10)。\n" -" \t\t未设定时,文件结束符标志着输入的结束。\n" +" HOSTTYPE\t运行当前版本 BASH 的 CPU 的类型。\n" +" IGNOREEOF\t控制 shell 收到 EOF 作为唯一输入字符后的动作。如果\n" +" \t\t该变量被设定,则它的值是 shell 退出之前在一个空行上\n" +" \t\t可以连续读取到的 EOF 数量(默认为 10)。如果未设定,\n" +" \t\tEOF 标志着输入的结束。\n" " MACHTYPE\t描述当前运行 Bash 的系统的字符串。\n" -" MAILCHECK\tBash 检测新邮件的频率,以秒为单位。\n" -" MAILPATH\tBash 从中检测新邮件的文件列表,以分号分隔。\n" -" OSTYPE\t运行 Bash 的 Unix 版本。\n" -" PATH\t当寻找命令时搜索的目录列表,以冒号分隔。\n" -" PROMPT_COMMAND\t打印每一个主提示符之前执行的命\n" -" \t\t令。\n" +" MAILCHECK\tBash 检查新邮件的频率,以秒为单位。\n" +" MAILPATH\tBash 从中检查新邮件的文件列表,以冒号分隔。\n" +" OSTYPE\t运行当前版本 Bash 的 Unix 版本。\n" +" PATH\t寻找命令时搜索的目录列表,以冒号分隔。\n" +" PROMPT_COMMAND\t每次打印主提示符之前执行的命令。\n" " PS1\t\t主提示符字符串。\n" -" PS2\t\t从提示符字符串。\n" -" PWD\t\t当前目录的完整路径。\n" +" PS2\t\t次提示符字符串。\n" +" PWD\t\t当前目录的完整路径名。\n" " SHELLOPTS\t已启用的 shell 选项列表,以冒号分隔。\n" " TERM\t当前终端类型的名称。\n" -" TIMEFORMAT\t以关键则 `time' 显示的时间统计信息的输出\n" -" \t\t格式。\n" -" auto_resume\t非空时,一个单独的命令词会首先被在当前\n" -" \t\t停止的任务列表中搜索。如果找到则该任务被置于前台。\n" -" \t\t如果值为 `exact' 则意味着命令词必须精确匹配停止任务\n" -" \t\t列表中的命令。如果值为 `substring' 则意味着命令词必\n" -" \t\t须匹配任务的一个子字符串。任何其他的值意味着命令词\n" -" \t\t必须是停止任务的一个前缀。\n" +" TIMEFORMAT\t保留字 \"time\" 显示的时间统计信息的输出格式。\n" +" auto_resume\t非空时,一个单独的命令词会首先被在当前已停止的\n" +" \t\t任务列表中搜索。如果找到,则该任务被置于前台。\n" +" \t\t如果值为 \"exact\" 则意味着命令词必须精确匹配已停止的\n" +" \t\t任务列表中的命令。如果值为 \"substring\" 则意味着命令词\n" +" \t\t必须匹配任务的一个子字符串。任何其他的值意味着命令词\n" +" \t\t必须是已停止的任务的一个前缀。\n" " histchars\t控制历史展开和快速替换的字符。第一个字符是\n" -" \t\t历史替换字符,通常是 `!'。第二个字符是快速替换字符,\n" -" \t\t通常是 `^'。第三个是历史注释字符,通常是 `#'。\n" -" HISTIGNORE\t用于决定哪些命令被存入历史文件的模式\n" -" \t\t列表,以冒号分隔。\n" +" \t\t历史替换字符,通常是 \"!\"。第二个字符是快速替换字符,\n" +" \t\t通常是 \"^\"。第三个字符是历史注释字符,通常是 \"#\"。\n" +" HISTIGNORE\t用于决定哪些命令被存入历史文件的模式列表,以冒号分隔。\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5268,28 +5076,28 @@ msgid "" msgstr "" "将目录添加到栈中。\n" " \n" -" 将目录添加到目录栈顶,或着旋转栈直到当前工作目录成为\n" +" 将目录添加到目录栈顶,或者轮转栈直到当前工作目录成为\n" " 新的栈顶。不带参数时,交换栈顶的两个目录。\n" " \n" " 选项:\n" -" -n\t抑制添加目录至栈时通常的改变目录操作,从而仅对栈\n" -" \t进行操作。\n" +" -n\t阻止添加目录至栈时通常的改变目录操作,从而仅对栈\n" +" \t\t进行操作。\n" " \n" " 参数:\n" -" +N\t旋转栈从而第 N 个目录 (`dirs' 显示的列表中左起,从零开始)\n" -" \t将移动到栈顶。\n" +" +N\t轮转栈,使得第 N 个目录(\"dirs\" 显示的列表中左起,\n" +" \t\t从零开始)移动到栈顶。\n" " \n" -" -N\t旋转栈从而第 N 个目录 (`dirs' 显示的列表中右起,从零开始)\n" -" \t将移动到栈顶。\n" +" -N\t轮转栈,使得第 N 个目录(\"dirs\" 显示的列表中右起,\n" +" \t\t从零开始)移动到栈顶。\n" " \n" -" dir\t将 DIR 目录添加到栈顶,并且使其成为当前工作目录。\n" +" 目录\t将 <目录> 添加到栈顶,使其成为当前工作目录。\n" " \n" -" `dirs' 内建显示目录栈。\n" +" \"dirs\" 内建可以显示目录栈。\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的参数或者目录转换失败。" +" 返回成功,除非使用了无效的参数,或者改变目录失败。" -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5317,26 +5125,24 @@ msgid "" msgstr "" "从栈中删除目录。\n" " \n" -" 从目录栈中删除条目。不带参数时,删除栈顶目录,并改变至新的栈\n" -" 顶目录。\n" +" 从目录栈中删除条目。不带参数时,删除栈顶目录,并改变目录至新的栈顶目录。\n" " \n" " 选项:\n" -" -n\t抑制从栈中删除目录时通常的目录变换操作,从而仅对栈\n" -" \t进行操作。\n" +" -n\t阻止从栈中删除目录时通常的改变目录操作,从而仅对栈进行操作。\n" " \n" " 参数:\n" -" +N\t删除第 N 个目录 (`dirs' 显示的目录列表中左起,从零开始)。\n" -" \t例如:`popd +0' 删除第一个目录,`popd +1' 删除第二个。\n" +" +N\t删除第 N 个目录(\"dirs\" 显示的列表中左起,从零开始)。\n" +" \t\t例如:\"popd +0\" 删除第一个目录,\"popd +1\" 删除第二个。\n" " \n" -" -N\t删除第 N 个目录 (`dirs' 显示的目录列表中右起,从零开始)。\n" -" \t例如:`popd -0' 删除最后一个目录,,`popd -1' 删除倒数第二个。\n" +" -N\t删除第 N 个目录(\"dirs\" 显示的列表中右起,从零开始)。\n" +" \t\t例如:\"popd -0\" 删除最后一个目录,\"popd -1\" 删除倒数第二个。\n" " \n" -" `dirs' 内建显示目录栈。\n" +" \"dirs\" 内建可以显示目录栈。\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的参数或者目录变换失败。" +" 返回成功,除非使用了无效的参数,或者改变目录失败。" -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5366,26 +5172,27 @@ msgid "" msgstr "" "显示目录栈。\n" " \n" -" 显示当前记住的目录列表。通过 `pushd' 命令可以将目录存入列表\n" -" 中;`popd' 命令可用于遍历弹出列表。\n" +" 显示当前记住的目录列表。 使用 \"pushd\" 命令将目录加入这个列表;\n" +" 使用 \"popd\" 命令逐个回到之前加入列表的目录。\n" " \n" " 选项:\n" " -c\t删除所有元素以清空目录栈\n" -" -l\t不打印与主目录相关的波浪号前缀的目录\n" +" -l\t打印目录时,不表示为以波浪号 (~) 为前缀的,\n" +" \t\t相对于您的主目录的路径\n" " -p\t每行一个条目打印目录栈\n" -" -v\t每行一个条目,以栈中位置为前缀打印目录栈\n" +" -v\t每行一个条目打印目录栈,前面加上在栈中的位置\n" " \n" " 参数:\n" -" +N\t显示 dirs 不带选项启动时显示的目录列表左起中第\n" -" \tN 个目录,从零开始。\n" +" +N\t显示 dirs 不带选项启动时显示的目录列表中左起第 N 个目录,\n" +" \t\t从零开始。\n" " \n" -" -N\t显示 dirs 不带选项启动时显示的目录列表右起中第\n" -" \tN 个目录,从零开始。\n" +" -N\t显示 dirs 不带选项启动时显示的目录列表中右起第 N 个目录,\n" +" \t\t从零开始。\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的选项或者发生错误。" +" 返回成功,除非使用了无效的选项,或者有错误发生。" -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5406,22 +5213,22 @@ msgid "" msgstr "" "设定和取消设定 shell 选项。\n" " \n" -" 改变每个 shell 选项 OPTNAME 的设定。不带参数时,\n" -" 列出每个提供的 OPTNAME,否则列出所有 shell 选项;\n" -" 同时标注每一个选项是否被设定。\n" +" 改变每个 shell 选项 <选项名> 的设定。不带选项时,列出每个提供的\n" +" <选项名>,或者如果没有提供 <选项名> 时,列出所有 shell 选项,同时\n" +" 标注每一个选项是否被设定。\n" " \n" " 选项:\n" -" -o\t限制 OPTNAME 为定义用于`set -o' 的选项\n" +" -o\t限制 <选项名>,只使用可被 \"set -o\" 设置的选项\n" " -p\t打印每个 shell 选项并标注它的状态。\n" -" -q\t抑制输出\n" -" -s\t启用(设定)每个 OPTNAME 选项\n" -" -u\t禁用(取消设定)每个 OPTNAME 选项\n" +" -q\t阻止输出\n" +" -s\t启用(设定)每个 <选项名>\n" +" -u\t禁用(取消设定)每个 <选项名>\n" " \n" " 退出状态:\n" -" 如果 OPTNAME 选项被启用则返回成功;如果是\n" -" 无效的选项或 OPTNAME 被禁用则失败。" +" 如果 <选项名> 被启用则返回成功;如果使用了无效的选项,或者 <选项名>\n" +" 被禁用,则返回失败。" -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5440,6 +5247,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" @@ -5452,49 +5261,31 @@ msgid "" " Returns success unless an invalid option is given or a write or assignment\n" " error occurs." msgstr "" -"在 FORMAT 的控制下格式化并打印 ARGUMENTS 参数。\n" +"在 <格式> 的控制下格式化并打印 <参数>。\n" " \n" " 选项:\n" -" -v var\t将输出赋值给 shell 变量 VAR 而不显示在标准输出上\n" +" -v 变量\t将输出赋值给 shell 变量 <变量>,而不是将它显示在\n" +" \t\t标准输出上\n" +" \n" +" FORMAT 是包含三种类型的对象的字符串:普通字符,会被简单地复制到标准输出;\n" +" 字符转义序列,会在转义之后复制到标准输出;格式说明符,每个都会让 shell 打印\n" +" 下一个多余的参数。\n" " \n" -" FORMAT 是包含三种对象的字符串:简单地被拷贝到标准输出的普通字符;\n" -" 被变换之后拷贝到标准输入的转义字符;以及每个都会影响到下个参数的打印的格式化声明。\n" +" 除了 printf(1) 中描述的标准格式说明符以外,printf 还可解析:\n" " \n" -" 在 printf(1) 中描述的标准控制声明之外,printf 解析:\n" +" %b\t展开对应参数中的反斜杠转义序列\n" +" %q\t以可以重新用作 shell 输入的格式给参数加上引号\n" +" %Q\t类似 %q,但是精度要求会在加引号之前对尚未加引号的参数生效\n" +" %(格式)T\t将 <格式> 作为 strftime(3) 的格式字符串,并输出产生的\n" +" \t 日期-时间字符串\n" " \n" -" %b\t扩展对应参数中的反斜杠转义序列\n" -" %q\t以可作为 shell 输入的格式引用参数\n" -" %(fmt)T\t以 FMT 为供给 strftime(3) 的格式输出日期时间字符串\n" +" 有必要时,会重新使用格式串以消耗所有参数。如果参数的数量少于格式串要求\n" +" 的数量,则视为将零值或空字符串(视情况而定)提供给了多余的格式说明符。\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的选项或者写或赋值错误发生。" - -#: builtins.c:1971 -#, fuzzy -#| msgid "" -#| "Specify how arguments are to be completed by Readline.\n" -#| " \n" -#| " For each NAME, specify how arguments are to be completed. If no options\n" -#| " are supplied, existing completion specifications are printed in a way that\n" -#| " allows them to be reused as input.\n" -#| " \n" -#| " Options:\n" -#| " -p\tprint existing completion specifications in a reusable format\n" -#| " -r\tremove a completion specification for each NAME, or, if no\n" -#| " \t\tNAMEs are supplied, all completion specifications\n" -#| " -D\tapply the completions and actions as the default for commands\n" -#| " \t\twithout any specific completion defined\n" -#| " -E\tapply the completions and actions to \"empty\" commands --\n" -#| " \t\tcompletion attempted on a blank line\n" -#| " -I\tapply the completions and actions to the initial (usually the\n" -#| " \t\tcommand) word\n" -#| " \n" -#| " When completion is attempted, the actions are applied in the order the\n" -#| " uppercase-letter options are listed above. If multiple options are supplied,\n" -#| " the -D option takes precedence over -E, and both take precedence over -I.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is supplied or an error occurs." +" 返回成功,除非使用了无效的选项,或者发生了写入或赋值错误。" + +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5522,25 +5313,24 @@ msgid "" msgstr "" "指定 Readline 如何补全参数。\n" " \n" -" 声明对于每一个 NAME 名称如何补全参数。如果不带选项,\n" -" 现有的补全声明会以可以重用为输入的格式打印出来。\n" +" 指定对于每一个 <名称> 如何补全参数。如果不带选项,现有的补全规约会以\n" +" 可以重新用作输入的格式打印出来。\n" " \n" " 选项:\n" -" -p\t以可重用的格式打印现有的补全声明。\n" -" -r\t对于每个 NAME 名称删除补全声明,或者如果没有提供 NAME\n" -" \t名称,删除所有的补全声明。\n" -" -D\t对于没有补全声明定义的命令,设定默认的补全动作\n" -" -E\t对于 \"empty\" 命令设定补全动作,—— 对于空行的补全。\n" -" -I\t将补全和动作应用在首单词(通常是所给命令)上\n" +" -p\t以可重用的格式打印现有的补全规约\n" +" -r\t对每一个 <名称> 删除补全规约,或者,如果没有提供 <名称> ,\n" +" \t\t删除所有的补全规约\n" +" -D\t设定默认的补全和动作,给没有定义补全规约的命令使用\n" +" -E\t对于 \"空\" (empty) 命令设定补全动作 -- 对于空行的补全\n" +" -I\t将补全和动作应用在首个单词(通常是所给命令)上\n" " \n" -" 尝试补全时,按照上述大写字母选项的顺序进行动作。\n" -" 如果给出了多个选项,-D 选项优先级高于 -E 选项,且\n" -" 这两个选项优先级均高于 -I。\n" +" 尝试补全时,按照上述大写字母选项的顺序进行动作。如果给出了多个选项,\n" +" -D 选项优先级高于 -E 选项,且这两个选项优先级均高于 -I。\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的选项或者错误发生。" +" 返回成功,除非使用了无效的选项,或者有错误发生。" -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5553,14 +5343,13 @@ msgid "" msgstr "" "依据选项显示可能的补全。\n" " \n" -" 意图在能产生可能的补全的 shell 函数内部使用。\n" -" 如果提供了可选的 WORD 参数,则产生按照 WORD\n" -" 进行的匹配。\n" +" 设计意图是在用来生成可能的补全的 shell 函数的内部使用。\n" +" 如果提供了可选的 <词语> 参数,则依据 <词语> 产生匹配。\n" " \n" " 退出状态:\n" -" 除非使用了无效选项或者错误发生,否则返回成功。" +" 返回成功,除非使用了无效的选项,或者有错误发生。" -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5590,27 +5379,27 @@ msgid "" msgstr "" "修改或显示补全选项。\n" " \n" -" 修改每个 NAME 名称的补全选项,或如果没有提供 NAME 名称,执行当前的补全。\n" -" 如果不带选项,打印每个 NAME 名称的补全选项或当前的补全声明。\n" +" 修改每个 <名称> 的补全选项,或者如果没有提供 <名称>,修改正在执行的补全的\n" +" 选项。如果没有提供 <选项>,打印每个 <名称> 的补全选项或者当前的补全规约。\n" " \n" " 选项:\n" -" \t-o option\t为每个 NAME 名称设定补全选项 option\n" -" \t-D\t\t为 \"default\" 命令补全改变选项\n" -" \t-E\t\t为 \"empty\" 命令补全改变选项\n" -" \t-I\t\t为首单词的补全改变选项\n" +" \t-o 选项\t\t为每个 <名称> 设定补全选项 <选项>\n" +" \t-D\t\t修改 \"默认\" (default) 命令的补全选项\n" +" \t-E\t\t修改 \"空\" (empty) 命令的补全选项\n" +" \t-I\t\t修改首个单词的补全选项\n" " \n" -" 使用 `+o' 而不是 `-o' 可以关闭指定的选项。\n" +" 使用 \"+o\" 代替 \"-o\" 可以关闭指定的选项。\n" " \n" " 参数:\n" " \n" -" 每个 NAME 名称都对应一个之前以通过 `complete' 内建定义了的补全声明的\n" -" 命令。如果不提供 NAME 名称,当前生成补全的函数必须调用 compopt,\n" -" 并且当前执行的补全生成器选项会被修改。\n" +" 每个 <名称> 都对应一个之前已通过 \"complete\" 内建定义了补全规约的命令。\n" +" 如果没有提供 <名称>,compopt 必须由当前正在生成补全的函数进行调用,\n" +" 并且当前正在执行的补全生成器的选项会被修改。\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的选项或者 NAME 名称没有定义补全声明。" +" 返回成功,除非使用了无效的选项,或者 <名称> 没有定义补全规约。" -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5644,33 +5433,34 @@ msgid "" " Returns success unless an invalid option is given or ARRAY is readonly or\n" " not an indexed array." msgstr "" -"从标准输入读取行到下标数组变量中。\n" +"从标准输入读取行到索引数组变量中。\n" " \n" -" 从标准输入读取行到下标数组变量 ARRAY 中,或者如果使用了 -u 选项,\n" -" 从文件描述符 FD 中读取。MAPFILE 变量是默认的 ARRAY 变量。\n" +" 从标准输入读取行到索引数组变量 <数组> 中,或者如果使用了 -u 选项,\n" +" 从文件描述符 中读取。默认的 <数组> 是 MAPFILE 变量。\n" " \n" " 选项:\n" -" -d delim\t使用 DELIM 而非换行符断行\n" -" -n count\t最多拷贝 COUNT 行,如果 COUNT 为 0,则拷贝所有行。\n" -" -O origin\t从下标 ORIGIN 开始 赋值给 ARRAY 变量。默认下标是0.\n" -" -s count \t丢弃最先读取的 COUNT 行。\n" -" -t\t\t从读取的每行末尾删除一个换行符。\n" -" -u fd\t\t从文件描述符 FD 中读取行而不是标准输入。\n" -" -C callback\t每 QUANTUM 次读行之后对 CALLBACK 回调进行估值。\n" -" -c quantum\t定义每次调用 CALLBACK 回调之间读取的行数。\n" +" -d 分隔符\t使用 <分隔符> 而非换行符标志一行的结束\n" +" -n 计数\t最多复制 <计数> 行。如果 <计数> 为 0,则复制所有行\n" +" -O 起始\t从索引 <起始> 开始赋值给 <数组> 变量。默认索引是 0\n" +" -s 计数\t丢弃最初读取的 <计数> 行\n" +" -t\t从读取的每行末尾删除一个 <分隔符>(默认为换行符)\n" +" -u fd\t从文件描述符 中读取行,而不是标准输入\n" +" -C 回调\t每读取 <间隔> 行之后对 <回调> 进行求值\n" +" -c 间隔\t指定每次调用 <回调> 之前读取的行数\n" " \n" " 参数:\n" -" ARRAY\t\t存储数据使用的数组变量\n" +" 数组\t存储文件数据使用的数组变量名\n" " \n" -" 如果使用了 -C 而没有 -c,默认的量子是5000。当对 CALLBACK 估值时,\n" -" 下一个将被赋值的数组元素的下标作为额外参数被传递。\n" +" 如果使用了 -C 而没有 -c,默认的间隔是 5000。当对 <回调> 进行求值时,\n" +" 下一个将被赋值的数组元素的索引以及将被赋给那个元素的行会作为额外参数\n" +" 被传递给它。\n" " \n" -" 如果没有显式指定起始下标,mapfile 将在赋值前清空 ARRAY 变量。\n" +" 如果没有显式指定起始索引,mapfile 会在赋值前清空 <数组>。\n" " \n" " 退出状态:\n" -" 返回成功,除非使用了无效的选项,或者 ARRAY 变量只读或不是下标数组。" +" 返回成功,除非使用了无效的选项,或者 <数组> 为只读或不是索引数组。" -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5678,7 +5468,10 @@ msgid "" msgstr "" "从一个文件中读取行到数组变量中。\n" " \n" -" 一个 `mapfile'的同义词。" +" 同 \"mapfile\"。" + +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: 无效的关联数组键" #~ msgid "" #~ "Returns the context of the current subroutine call.\n" diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo index 75d5bc104..9dd7546f0 100644 Binary files a/po/zh_TW.gmo and b/po/zh_TW.gmo differ diff --git a/po/zh_TW.po b/po/zh_TW.po index 665d53e0e..91724f83e 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -5,78 +5,73 @@ # Zi-You Dai , 2008. # Mingye Wang (Arthur2e5) , 2015. # Wei-Lun Chao , 2015. -# Yi-Jyun Pan , 2018, 2019, 2020. +# Yi-Jyun Pan , 2018, 2019, 2020, 2021. msgid "" msgstr "" -"Project-Id-Version: bash 5.1\n" +"Project-Id-Version: bash 5.2-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2020-12-08 06:39+0800\n" +"POT-Creation-Date: 2022-01-11 14:50-0500\n" +"PO-Revision-Date: 2022-07-28 01:08+0800\n" "Last-Translator: Yi-Jyun Pan \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.4.2\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.1.1\n" #: arrayfunc.c:66 msgid "bad array subscript" msgstr "陣列下標不正確" -#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 -#: variables.c:3133 +#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268 +#: variables.c:3101 #, c-format msgid "%s: removing nameref attribute" msgstr "%s:正在移除 nameref 屬性" -#: arrayfunc.c:446 builtins/declare.def:851 +#: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: 無法將索引陣列轉化為關聯陣列" -#: arrayfunc.c:700 -#, c-format -msgid "%s: invalid associative array key" -msgstr "%s: 無效的關聯陣列鍵值" - -#: arrayfunc.c:702 +#: arrayfunc.c:777 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: 無法指派為非數字的索引" -#: arrayfunc.c:747 +#: arrayfunc.c:822 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: 指派為關聯陣列時必須使用下標" -#: bashhist.c:452 +#: bashhist.c:455 #, c-format msgid "%s: cannot create: %s" msgstr "%s: 無法建立: %s" -#: bashline.c:4310 +#: bashline.c:4479 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: 無法為指令找到按鍵映射" -#: bashline.c:4459 +#: bashline.c:4637 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: 第一個非空字元不是「\"」" -#: bashline.c:4488 +#: bashline.c:4666 #, c-format msgid "no closing `%c' in %s" msgstr "%2$s 中沒有閉合的「%1$c」" -#: bashline.c:4519 +#: bashline.c:4697 #, c-format msgid "%s: missing colon separator" msgstr "%s: 缺少冒號分隔符" -#: bashline.c:4555 +#: bashline.c:4733 #, c-format msgid "`%s': cannot unbind in command keymap" msgstr "「%s」: 無法在命令按鍵映射中解除綁定" @@ -96,7 +91,7 @@ msgstr "大括號展開:為 %u 個元素分配記憶體失敗" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "大括號展開:為「%s」分配記憶體失敗" -#: builtins/alias.def:131 variables.c:1844 +#: builtins/alias.def:131 variables.c:1817 #, c-format msgid "`%s': invalid alias name" msgstr "「%s」: 無效的別名" @@ -144,7 +139,6 @@ msgid "only meaningful in a `for', `while', or `until' loop" msgstr "僅在「for」,「while」, 或者「until」迴圈中有意義" #: builtins/caller.def:136 -#, fuzzy msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -158,21 +152,17 @@ msgstr "" "回傳目前子呼叫的語境。\n" " \n" " 不帶有 EXPR 時,回傳「$line $filename」。帶有 EXPR 時,回傳\n" -" 「$line $subroutine $filename」;這個額外的資訊可以被用於提供\n" -" 堆疊追蹤。\n" +" 「$line $subroutine $filename」;提供堆疊追蹤時可以用到這個\n" +" 延伸資訊。\n" " \n" " EXPR 的值顯示了到目前呼叫框格需要回去多少個呼叫框格;頂部框格\n" -" 是第 0 框格。\n" -" \n" -" 結束狀態:\n" -" 除非 shell 不在執行一個 shell 函數或者 EXPR 無效,否則回傳結\n" -" 果為 0。" +" 是第 0 框格。" #: builtins/cd.def:327 msgid "HOME not set" msgstr "未設定 HOME" -#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#: builtins/cd.def:335 builtins/common.c:161 test.c:916 msgid "too many arguments" msgstr "太多參數" @@ -199,7 +189,7 @@ msgstr "警告:" msgid "%s: usage: " msgstr "%s:用法:" -#: builtins/common.c:193 shell.c:516 shell.c:844 +#: builtins/common.c:193 shell.c:524 shell.c:866 #, c-format msgid "%s: option requires an argument" msgstr "%s:選項需要一個參數" @@ -214,7 +204,7 @@ msgstr "%s:需要數字參數" msgid "%s: not found" msgstr "%s:沒有找到" -#: builtins/common.c:216 shell.c:857 +#: builtins/common.c:216 shell.c:879 #, c-format msgid "%s: invalid option" msgstr "%s:無效選項" @@ -224,7 +214,7 @@ msgstr "%s:無效選項" msgid "%s: invalid option name" msgstr "%s:無效選項名稱" -#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373 #, c-format msgid "`%s': not a valid identifier" msgstr "「%s」:不是一個有效的識別符" @@ -237,7 +227,7 @@ msgstr "無效的八進位數字" msgid "invalid hex number" msgstr "無效的十六進位數字" -#: builtins/common.c:244 expr.c:1569 +#: builtins/common.c:244 expr.c:1574 msgid "invalid number" msgstr "無效數字" @@ -251,88 +241,93 @@ msgstr "%s:無效的訊號規格" msgid "`%s': not a pid or valid job spec" msgstr "「%s」:不是一個 pid 或有效的工作規格" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:266 error.c:536 #, c-format msgid "%s: readonly variable" msgstr "%s:唯讀的變數" -#: builtins/common.c:274 +#: builtins/common.c:273 +#, c-format +msgid "%s: cannot assign" +msgstr "%s:無法指定" + +#: builtins/common.c:281 #, c-format msgid "%s: %s out of range" msgstr "%s:%s 超出範圍" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:281 builtins/common.c:283 msgid "argument" msgstr "參數" -#: builtins/common.c:276 +#: builtins/common.c:283 #, c-format msgid "%s out of range" msgstr "%s 超出範圍" -#: builtins/common.c:284 +#: builtins/common.c:291 #, c-format msgid "%s: no such job" msgstr "%s:沒有此類工作" -#: builtins/common.c:292 +#: builtins/common.c:299 #, c-format msgid "%s: no job control" msgstr "%s:沒有工作控制" -#: builtins/common.c:294 +#: builtins/common.c:301 msgid "no job control" msgstr "沒有工作控制" -#: builtins/common.c:304 +#: builtins/common.c:311 #, c-format msgid "%s: restricted" msgstr "%s:受限的" -#: builtins/common.c:306 +#: builtins/common.c:313 msgid "restricted" msgstr "受限的" -#: builtins/common.c:314 +#: builtins/common.c:321 #, c-format msgid "%s: not a shell builtin" msgstr "%s:不是一個內建 shell" -#: builtins/common.c:323 +#: builtins/common.c:330 #, c-format msgid "write error: %s" msgstr "寫入時發生錯誤:%s" -#: builtins/common.c:331 +#: builtins/common.c:338 #, c-format msgid "error setting terminal attributes: %s" msgstr "設定終端屬性時發生錯誤: %s" -#: builtins/common.c:333 +#: builtins/common.c:340 #, c-format msgid "error getting terminal attributes: %s" msgstr "取得終端屬性時發生錯誤: %s" -#: builtins/common.c:635 +#: builtins/common.c:642 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s:檢索目前目錄時發生錯誤:%s:%s\n" -#: builtins/common.c:701 builtins/common.c:703 +#: builtins/common.c:708 builtins/common.c:710 #, c-format msgid "%s: ambiguous job spec" msgstr "%s:模稜兩可的工作規格" -#: builtins/common.c:964 +#: builtins/common.c:971 msgid "help not available in this version" msgstr "這個版本沒有可用的說明" -#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: 無法取消設定: 唯讀 %s" -#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830 #, c-format msgid "%s: cannot unset" msgstr "%s: 無法取消設定" @@ -342,108 +337,108 @@ msgstr "%s: 無法取消設定" msgid "%s: invalid action name" msgstr "%s:無效的功能名稱" -#: builtins/complete.def:486 builtins/complete.def:634 -#: builtins/complete.def:865 +#: builtins/complete.def:486 builtins/complete.def:642 +#: builtins/complete.def:873 #, c-format msgid "%s: no completion specification" msgstr "%s:沒有完成的規格" -#: builtins/complete.def:688 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "警告:-F 選項可能無法按預期工作" -#: builtins/complete.def:690 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "警告:-C 選項可能無法按預期工作" -#: builtins/complete.def:838 +#: builtins/complete.def:846 msgid "not currently executing completion function" -msgstr "目前未執行補完功能" +msgstr "目前未執行自動完成功能" -#: builtins/declare.def:134 +#: builtins/declare.def:137 msgid "can only be used in a function" msgstr "只能用在函數中" -#: builtins/declare.def:363 builtins/declare.def:756 +#: builtins/declare.def:437 +msgid "cannot use `-f' to make functions" +msgstr "無法用「-f」產生函數" + +#: builtins/declare.def:464 execute_cmd.c:6132 +#, c-format +msgid "%s: readonly function" +msgstr "%s:唯讀函數" + +#: builtins/declare.def:521 builtins/declare.def:804 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: 引用變數不能為陣列" -#: builtins/declare.def:374 variables.c:3385 +#: builtins/declare.def:532 variables.c:3359 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: 不允許名稱引用變數引用自身" -#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 -#: variables.c:3382 +#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286 +#: variables.c:3356 #, c-format msgid "%s: circular name reference" msgstr "%s: 迴圈變數名引用" -#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "「%s」:無效的引用變數名" -#: builtins/declare.def:514 -msgid "cannot use `-f' to make functions" -msgstr "無法用「-f」產生函數" - -#: builtins/declare.def:526 execute_cmd.c:5986 -#, c-format -msgid "%s: readonly function" -msgstr "%s:唯讀函數" - -#: builtins/declare.def:824 -#, c-format -msgid "%s: quoted compound array assignment deprecated" -msgstr "%s:不建議使用引用的複合陣列指定" - -#: builtins/declare.def:838 +#: builtins/declare.def:856 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: 無法以這種方式銷毀陣列變數" -#: builtins/declare.def:845 builtins/read.def:815 +#: builtins/declare.def:862 builtins/read.def:887 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: 無法將關聯陣列轉化為索引陣列" -#: builtins/enable.def:143 builtins/enable.def:151 +#: builtins/declare.def:891 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s:不建議使用引用的複合陣列指定" + +#: builtins/enable.def:145 builtins/enable.def:153 msgid "dynamic loading not available" msgstr "動態載入不可用" -#: builtins/enable.def:343 +#: builtins/enable.def:376 #, c-format msgid "cannot open shared object %s: %s" msgstr "無法開啟共享物件 %s: %s" -#: builtins/enable.def:371 +#: builtins/enable.def:405 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "無法在共享物件 %2$s 中找到 %1$s: %3$s" -#: builtins/enable.def:388 +#: builtins/enable.def:422 #, c-format msgid "%s: dynamic builtin already loaded" msgstr "%s: 已經載入動態內建指令" -#: builtins/enable.def:392 +#: builtins/enable.def:426 #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "為 %s 載入函式時回傳錯誤 (%d):尚未載入" -#: builtins/enable.def:517 +#: builtins/enable.def:551 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: 未以動態方式載入" -#: builtins/enable.def:543 +#: builtins/enable.def:577 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: 無法刪除: %s" -#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959 #, c-format msgid "%s: is a directory" msgstr "%s: 是一個目錄" @@ -458,7 +453,7 @@ msgstr "%s: 不是一般檔案" msgid "%s: file is too large" msgstr "%s: 檔案太大" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: 無法執行二進位檔案" @@ -552,12 +547,12 @@ msgstr "" msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "沒有與「%s」符合的說明主題。嘗試「help help」或「man -k %s」或「info %s」。" -#: builtins/help.def:224 +#: builtins/help.def:223 #, c-format msgid "%s: cannot open: %s" msgstr "%s: 無法開啟: %s" -#: builtins/help.def:524 +#: builtins/help.def:523 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -576,21 +571,21 @@ msgstr "" "名稱旁邊的星號(*)表示該指令被停用。\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:159 msgid "cannot use more than one of -anrw" msgstr "最多能使用 -anrw 選項之一" -#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 -#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215 +#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247 msgid "history position" msgstr "歷史記錄位置" -#: builtins/history.def:340 +#: builtins/history.def:338 #, c-format msgid "%s: invalid timestamp" msgstr "%s:無效時間戳" -#: builtins/history.def:451 +#: builtins/history.def:449 #, c-format msgid "%s: history expansion failed" msgstr "%s: 歷史記錄擴充套件失敗" @@ -613,78 +608,78 @@ msgstr "%s: 參數必須是行程或工作 ID" msgid "Unknown error" msgstr "未知錯誤" -#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658 msgid "expression expected" msgstr "需要表示式" -#: builtins/mapfile.def:178 +#: builtins/mapfile.def:180 #, c-format msgid "%s: not an indexed array" msgstr "%s: 不是一個索引陣列" -#: builtins/mapfile.def:271 builtins/read.def:308 +#: builtins/mapfile.def:276 builtins/read.def:336 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: 無效的檔案描述符規格" -#: builtins/mapfile.def:279 builtins/read.def:315 +#: builtins/mapfile.def:284 builtins/read.def:343 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: 無效的檔案描述符: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:293 builtins/mapfile.def:331 #, c-format msgid "%s: invalid line count" msgstr "%s: 無效的列數" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid array origin" msgstr "%s: 無效的陣列原點" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:321 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: 無效的回呼定量" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:354 msgid "empty array variable name" msgstr "空陣列變數名" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:375 msgid "array variable support required" msgstr "需要陣列變數支援" -#: builtins/printf.def:419 +#: builtins/printf.def:430 #, c-format msgid "`%s': missing format character" msgstr "「%s」: 缺少格式字元" -#: builtins/printf.def:474 +#: builtins/printf.def:485 #, c-format msgid "`%c': invalid time format specification" msgstr "「%c」: 無效的時間格式規格" -#: builtins/printf.def:676 +#: builtins/printf.def:708 #, c-format msgid "`%c': invalid format character" msgstr "「%c」: 無效格式字元" -#: builtins/printf.def:702 +#: builtins/printf.def:734 #, c-format msgid "warning: %s: %s" msgstr "警告: %s: %s" -#: builtins/printf.def:788 +#: builtins/printf.def:822 #, c-format msgid "format parsing problem: %s" msgstr "格式解析問題: %s" -#: builtins/printf.def:885 +#: builtins/printf.def:919 msgid "missing hex digit for \\x" msgstr "使用了 \\x 但缺少十六進位數字" -#: builtins/printf.def:900 +#: builtins/printf.def:934 #, c-format msgid "missing unicode digit for \\%c" msgstr "使用了 \\%c 但缺少萬國碼數字" @@ -834,12 +829,12 @@ msgstr "" " \n" " 「dirs」內建變數顯示目錄堆疊。" -#: builtins/read.def:280 +#: builtins/read.def:308 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: 無效的逾時規格" -#: builtins/read.def:755 +#: builtins/read.def:827 #, c-format msgid "read error: %d: %s" msgstr "讀取錯誤: %d: %s" @@ -852,7 +847,7 @@ msgstr "只能從函數或者原始指令稿「return」" msgid "cannot simultaneously unset a function and a variable" msgstr "無法同時取消設定一個函數和一個變數" -#: builtins/set.def:966 +#: builtins/set.def:969 #, c-format msgid "%s: not an array variable" msgstr "%s: 不是陣列變數" @@ -871,11 +866,11 @@ msgstr "%s:無法匯出" msgid "shift count" msgstr "位移計數" -#: builtins/shopt.def:310 +#: builtins/shopt.def:323 msgid "cannot set and unset shell options simultaneously" msgstr "無法同時設定和取消設定 shell 選項" -#: builtins/shopt.def:428 +#: builtins/shopt.def:444 #, c-format msgid "%s: invalid shell option name" msgstr "%s: 無效的 shell 選項名稱" @@ -915,12 +910,12 @@ msgstr "%s 是一個函數\n" #: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" -msgstr "%s 是特別的 shell 內建物件\n" +msgstr "%s 是特別的 shell 內建命令\n" #: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" -msgstr "%s 是 shell 內建物件\n" +msgstr "%s 是 shell 內建命令\n" #: builtins/type.def:323 builtins/type.def:408 #, c-format @@ -942,16 +937,16 @@ msgstr "%s: 無效的 limit 參數" msgid "`%c': bad command" msgstr "「%c」:不當的指令" -#: builtins/ulimit.def:455 +#: builtins/ulimit.def:464 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s:不能得到 limit: %s" -#: builtins/ulimit.def:481 +#: builtins/ulimit.def:490 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#: builtins/ulimit.def:502 builtins/ulimit.def:802 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s:不能修改 limit: %s" @@ -970,7 +965,7 @@ msgstr "「%c」: 無效的符號狀態運算子" msgid "`%c': invalid symbolic mode character" msgstr "「%c」: 無效的符號狀態字元" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:89 error.c:373 error.c:375 error.c:377 msgid " line " msgstr " 列 " @@ -990,96 +985,106 @@ msgstr "中止…" msgid "INFORM: " msgstr "通知:" -#: error.c:462 +#: error.c:310 +#, c-format +msgid "DEBUG warning: " +msgstr "除錯警告:" + +#: error.c:488 msgid "unknown command error" msgstr "不明指令錯誤" -#: error.c:463 +#: error.c:489 msgid "bad command type" msgstr "不當的指令類型" -#: error.c:464 +#: error.c:490 msgid "bad connector" msgstr "不當的連接器" -#: error.c:465 +#: error.c:491 msgid "bad jump" msgstr "錯誤的跳轉" -#: error.c:503 +#: error.c:529 #, c-format msgid "%s: unbound variable" msgstr "%s: 未綁定的變數" -#: eval.c:242 +#: eval.c:243 msgid "\atimed out waiting for input: auto-logout\n" msgstr "\a 等待輸入逾時:自動登出\n" -#: execute_cmd.c:537 +#: execute_cmd.c:555 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "無法從 /dev/null 重定向標準輸入: %s" -#: execute_cmd.c:1297 +#: execute_cmd.c:1317 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "時間格式:「%c」: 無效的格式字元" -#: execute_cmd.c:2362 +#: execute_cmd.c:2391 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc:coproc [%d:%s] 仍然存在" -#: execute_cmd.c:2486 +#: execute_cmd.c:2524 msgid "pipe error" msgstr "管道錯誤" -#: execute_cmd.c:4793 +#: execute_cmd.c:4923 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval:超出最大 eval 巢狀層數 (%d)" -#: execute_cmd.c:4805 +#: execute_cmd.c:4935 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: 超出最大來源巢狀層數 (%d)" -#: execute_cmd.c:4913 +#: execute_cmd.c:5043 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: 超出最大函數巢狀層數 (%d)" -#: execute_cmd.c:5467 +#: execute_cmd.c:5598 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: 受限的: 無法在指令名稱中使用「/」" -#: execute_cmd.c:5574 +#: execute_cmd.c:5715 #, c-format msgid "%s: command not found" msgstr "%s:指令找不到" -#: execute_cmd.c:5816 +#: execute_cmd.c:5957 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5854 +#: execute_cmd.c:5975 +#, c-format +msgid "%s: cannot execute: required file not found" +msgstr "%s:無法執行:找不到必須檔案" + +#: execute_cmd.c:6000 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: 不當的直譯器" -#: execute_cmd.c:5891 +#: execute_cmd.c:6037 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: 無法執行二進位檔案: %s" -#: execute_cmd.c:5977 +#: execute_cmd.c:6123 #, c-format msgid "`%s': is a special builtin" msgstr "「%s」: 特殊內建" -#: execute_cmd.c:6029 +#: execute_cmd.c:6175 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "無法複製檔案描述符 %d 到檔案描述符 %d" @@ -1092,68 +1097,68 @@ msgstr "表示式遞迴層次超出範圍" msgid "recursion stack underflow" msgstr "遞迴堆疊下限溢位" -#: expr.c:477 +#: expr.c:478 msgid "syntax error in expression" msgstr "表示式語法錯誤" -#: expr.c:521 +#: expr.c:522 msgid "attempted assignment to non-variable" msgstr "嘗試指派給非變數" -#: expr.c:530 +#: expr.c:531 msgid "syntax error in variable assignment" msgstr "變數定義語法錯誤" -#: expr.c:544 expr.c:911 +#: expr.c:545 expr.c:912 msgid "division by 0" msgstr "除 0" -#: expr.c:592 +#: expr.c:593 msgid "bug: bad expassign token" msgstr "錯誤:不當的表示式字組" -#: expr.c:646 +#: expr.c:647 msgid "`:' expected for conditional expression" msgstr "條件表示式需要「:」" -#: expr.c:972 +#: expr.c:973 msgid "exponent less than 0" msgstr "指數小於 0" -#: expr.c:1029 +#: expr.c:1030 msgid "identifier expected after pre-increment or pre-decrement" msgstr "預增符或預減符後應跟有識別符" -#: expr.c:1056 +#: expr.c:1057 msgid "missing `)'" msgstr "缺少「)」" -#: expr.c:1107 expr.c:1487 +#: expr.c:1108 expr.c:1492 msgid "syntax error: operand expected" msgstr "語法錯誤: 需要運算元" -#: expr.c:1489 +#: expr.c:1494 msgid "syntax error: invalid arithmetic operator" msgstr "語法錯誤: 無效的算術運算子" -#: expr.c:1513 +#: expr.c:1518 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (錯誤字組是「%s」)" -#: expr.c:1573 +#: expr.c:1578 msgid "invalid arithmetic base" msgstr "無效的算術進位" -#: expr.c:1582 +#: expr.c:1587 msgid "invalid integer constant" msgstr "無效的整數常數" -#: expr.c:1598 +#: expr.c:1603 msgid "value too great for base" msgstr "數值太大不可為算術進位的基底" -#: expr.c:1647 +#: expr.c:1652 #, c-format msgid "%s: expression error\n" msgstr "%s: 表示式錯誤\n" @@ -1162,7 +1167,7 @@ msgstr "%s: 表示式錯誤\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: 無法存取上層目錄" -#: input.c:99 subst.c:6069 +#: input.c:99 subst.c:6208 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "無法為檔案描述符 %d 重設無延遲模式" @@ -1181,167 +1186,167 @@ msgstr "save_bash_input: 已經存在提供給新 fd %d 的緩衝區" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: 行程群組管道" -#: jobs.c:906 +#: jobs.c:907 #, c-format msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:959 +#: jobs.c:960 #, c-format msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" -#: jobs.c:1283 +#: jobs.c:1279 #, c-format msgid "forked pid %d appears in running job %d" msgstr "產生的行程識別碼 %d 顯示為執行中的工作 %d" -#: jobs.c:1402 +#: jobs.c:1397 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "刪除行程群組 %2$ld 中已停止的工作 %1$d" -#: jobs.c:1511 +#: jobs.c:1502 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: 行程識別碼 %5ld(%s) 標註為仍活著" -#: jobs.c:1850 +#: jobs.c:1839 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: 無此行程識別碼" -#: jobs.c:1865 +#: jobs.c:1854 #, c-format msgid "Signal %d" msgstr "訊號 %d" -#: jobs.c:1879 jobs.c:1905 +#: jobs.c:1868 jobs.c:1894 msgid "Done" msgstr "已完成" -#: jobs.c:1884 siglist.c:122 +#: jobs.c:1873 siglist.c:123 msgid "Stopped" msgstr "停止" -#: jobs.c:1888 +#: jobs.c:1877 #, c-format msgid "Stopped(%s)" msgstr "已停止(%s)" -#: jobs.c:1892 +#: jobs.c:1881 msgid "Running" msgstr "執行中" -#: jobs.c:1909 +#: jobs.c:1898 #, c-format msgid "Done(%d)" msgstr "已完成(%d)" -#: jobs.c:1911 +#: jobs.c:1900 #, c-format msgid "Exit %d" msgstr "結束 %d" -#: jobs.c:1914 +#: jobs.c:1903 msgid "Unknown status" msgstr "不明狀態" -#: jobs.c:2001 +#: jobs.c:1990 #, c-format msgid "(core dumped) " msgstr "(核心已傾印)" -#: jobs.c:2020 +#: jobs.c:2009 #, c-format msgid " (wd: %s)" msgstr " (工作目錄: %s)" -#: jobs.c:2259 +#: jobs.c:2250 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "子行程 setpgid (%ld 到 %ld)" -#: jobs.c:2617 nojobs.c:664 +#: jobs.c:2608 nojobs.c:666 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: 行程識別碼 %ld 不是目前 shell 的子行程" -#: jobs.c:2893 +#: jobs.c:2884 #, c-format msgid "wait_for: No record of process %ld" msgstr "wiat_for: 沒有行程 %ld 的紀錄" -#: jobs.c:3236 +#: jobs.c:3223 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: 工作 %d 已停止" -#: jobs.c:3564 +#: jobs.c:3551 #, c-format msgid "%s: no current jobs" msgstr "%s:目前沒有工作" -#: jobs.c:3571 +#: jobs.c:3558 #, c-format msgid "%s: job has terminated" msgstr "%s: 工作已經終止" -#: jobs.c:3580 +#: jobs.c:3567 #, c-format msgid "%s: job %d already in background" msgstr "%s: 工作 %d 已在背景執行" -#: jobs.c:3806 +#: jobs.c:3793 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: 開啟 WNOHANG 以避免無限阻塞" -#: jobs.c:4320 +#: jobs.c:4307 #, c-format msgid "%s: line %d: " msgstr "%s: 第 %d 列:" -#: jobs.c:4334 nojobs.c:919 +#: jobs.c:4321 nojobs.c:921 #, c-format msgid " (core dumped)" msgstr " (核心已傾印)" -#: jobs.c:4346 jobs.c:4359 +#: jobs.c:4333 jobs.c:4346 #, c-format msgid "(wd now: %s)\n" msgstr "(目前工作目錄:%s)\n" -#: jobs.c:4391 +#: jobs.c:4378 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp 失敗" -#: jobs.c:4447 +#: jobs.c:4434 msgid "initialize_job_control: no job control in background" msgstr "initialize_job_control:背景中沒有工作控制" -#: jobs.c:4463 +#: jobs.c:4450 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: 列規律" -#: jobs.c:4473 +#: jobs.c:4460 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4494 jobs.c:4503 +#: jobs.c:4481 jobs.c:4490 #, c-format msgid "cannot set terminal process group (%d)" msgstr "無法設定終端行程群組(%d)" -#: jobs.c:4508 +#: jobs.c:4495 msgid "no job control in this shell" msgstr "此 shell 中無工作控制" -#: lib/malloc/malloc.c:353 +#: lib/malloc/malloc.c:367 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: 主張失敗: %s\n" -#: lib/malloc/malloc.c:369 +#: lib/malloc/malloc.c:383 #, c-format msgid "" "\r\n" @@ -1350,47 +1355,47 @@ msgstr "" "\r\n" "malloc: %s:%d: 主張已修補\r\n" -#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941 msgid "unknown" msgstr "不明" -#: lib/malloc/malloc.c:882 +#: lib/malloc/malloc.c:892 msgid "malloc: block on free list clobbered" msgstr "malloc: 空閒串列中的區塊損壞" -#: lib/malloc/malloc.c:972 +#: lib/malloc/malloc.c:980 msgid "free: called with already freed block argument" msgstr "free: 用已經釋放的區塊做為呼叫參數" -#: lib/malloc/malloc.c:975 +#: lib/malloc/malloc.c:983 msgid "free: called with unallocated block argument" msgstr "free: 用未分配的區塊做為呼叫參數" -#: lib/malloc/malloc.c:994 +#: lib/malloc/malloc.c:1001 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: 檢測到下限溢位;mh_nbytes 超出範圍" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1007 msgid "free: underflow detected; magic8 corrupted" msgstr "free: 偵測到下限溢位;magic8 損壞" -#: lib/malloc/malloc.c:1009 +#: lib/malloc/malloc.c:1014 msgid "free: start and end chunk sizes differ" msgstr "free: 啟始和末尾區塊大小不一致" -#: lib/malloc/malloc.c:1119 +#: lib/malloc/malloc.c:1176 msgid "realloc: called with unallocated block argument" msgstr "realloc: 用未分配的區塊做為呼叫參數" -#: lib/malloc/malloc.c:1134 +#: lib/malloc/malloc.c:1191 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: 檢測到下限溢位;mh_nbytes 超出範圍" -#: lib/malloc/malloc.c:1141 +#: lib/malloc/malloc.c:1197 msgid "realloc: underflow detected; magic8 corrupted" msgstr "realloc: 偵測到下限溢位;magic8 損壞" -#: lib/malloc/malloc.c:1150 +#: lib/malloc/malloc.c:1205 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: 啟始和末尾區塊大小不一致" @@ -1432,22 +1437,22 @@ msgstr "%s:不當的網路路徑規格" msgid "network operations not supported" msgstr "不支援網路操作" -#: locale.c:217 +#: locale.c:219 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: 無法變更語區選項 (%s)" -#: locale.c:219 +#: locale.c:221 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: 無法變更語區選項 (%s): %s" -#: locale.c:292 +#: locale.c:294 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: 無法變更語區選項 (%s)" -#: locale.c:294 +#: locale.c:296 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: 無法變更語區選項 (%s): %s" @@ -1465,143 +1470,143 @@ msgstr "您有新郵件在 $_" msgid "The mail in %s has been read\n" msgstr "郵件在 %s 已閱讀\n" -#: make_cmd.c:317 +#: make_cmd.c:314 msgid "syntax error: arithmetic expression required" msgstr "語法錯誤:需要算式" -#: make_cmd.c:319 +#: make_cmd.c:316 msgid "syntax error: `;' unexpected" msgstr "語法錯誤:「;」意外" -#: make_cmd.c:320 +#: make_cmd.c:317 #, c-format msgid "syntax error: `((%s))'" msgstr "語法錯誤:「((%s))」" -#: make_cmd.c:572 +#: make_cmd.c:569 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document:不當的指示類型 %d" -#: make_cmd.c:657 +#: make_cmd.c:668 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "立即檔案在第 %d 列被檔案結束符分隔 (需要「%s」)" -#: make_cmd.c:756 +#: make_cmd.c:769 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection:重新導向指示「%d」超出範圍" -#: parse.y:2393 +#: parse.y:2428 #, c-format msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" msgstr "shell_getc: shell_input_line_size (%zu) 超過 SIZE_MAX (%lu):列被截斷" -#: parse.y:2826 +#: parse.y:2921 msgid "maximum here-document count exceeded" msgstr "超過此處檔案上限最大值" -#: parse.y:3581 parse.y:3957 parse.y:4556 +#: parse.y:3684 parse.y:4244 parse.y:6148 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "尋找符合的「%c」時遇到了未預期的檔案結束符" -#: parse.y:4696 +#: parse.y:4452 msgid "unexpected EOF while looking for `]]'" msgstr "尋找「]]」時遇到了未預期的檔案結束符" -#: parse.y:4701 +#: parse.y:4457 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "條件表示式中有語法錯誤: 未預期的字組「%s」" -#: parse.y:4705 +#: parse.y:4461 msgid "syntax error in conditional expression" msgstr "語法錯誤,在有條件的表示式" -#: parse.y:4783 +#: parse.y:4539 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "未預期的字組「%s」,需要「)」" -#: parse.y:4787 +#: parse.y:4543 msgid "expected `)'" msgstr "預期「)」" -#: parse.y:4815 +#: parse.y:4571 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "一元條件運算子使用了未預期的參數「%s」" -#: parse.y:4819 +#: parse.y:4575 msgid "unexpected argument to conditional unary operator" msgstr "一元條件運算子使用了未預期的參數" -#: parse.y:4865 +#: parse.y:4621 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "未預期的字組「%s」,需要二元條件運算子" -#: parse.y:4869 +#: parse.y:4625 msgid "conditional binary operator expected" msgstr "需要二元條件運算子" -#: parse.y:4891 +#: parse.y:4647 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "二元條件運算子使用了未預期的參數「%s」" -#: parse.y:4895 +#: parse.y:4651 msgid "unexpected argument to conditional binary operator" msgstr "二元條件運算子使用了未預期的參數" -#: parse.y:4906 +#: parse.y:4662 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "條件指令中有未預期的字組「%c」" -#: parse.y:4909 +#: parse.y:4665 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "條件指令中有未預期的字組「%s」" -#: parse.y:4913 +#: parse.y:4669 #, c-format msgid "unexpected token %d in conditional command" msgstr "條件指令中有未預期的字組 %d" -#: parse.y:6336 +#: parse.y:6118 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "未預期的字組「%s」附近有語法錯誤" -#: parse.y:6355 +#: parse.y:6137 #, c-format msgid "syntax error near `%s'" msgstr "「%s」附近有語法錯誤" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error: unexpected end of file" msgstr "語法錯誤: 未預期的檔案結尾" -#: parse.y:6365 +#: parse.y:6151 msgid "syntax error" msgstr "語法錯誤" -#: parse.y:6428 +#: parse.y:6216 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "使用「%s」結束 shell。\n" -#: parse.y:6602 +#: parse.y:6394 msgid "unexpected EOF while looking for matching `)'" msgstr "尋找符合的「)」時遇到了未預期的檔案結束符" #: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" -msgstr "補完: 未找到函數「%s」" +msgstr "自動完成: 未找到函數「%s」" #: pcomplete.c:1722 #, c-format @@ -1611,7 +1616,7 @@ msgstr "programmable_completion:%s:可能重試迴圈" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" -msgstr "progcomp_insert: %s: 空的補完規格" +msgstr "progcomp_insert: %s: 空的自動完成規格" #: print_cmd.c:302 #, c-format @@ -1632,94 +1637,94 @@ msgstr "xtrace_set: 空的檔案指標" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1540 +#: print_cmd.c:1545 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf:「%c」: 無效的格式字元" -#: redir.c:149 redir.c:197 +#: redir.c:150 redir.c:198 msgid "file descriptor out of range" msgstr "檔案描述符超出範圍" -#: redir.c:204 +#: redir.c:205 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: 模稜兩可的重定向" -#: redir.c:208 +#: redir.c:209 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: 無法覆寫已存在的檔案" -#: redir.c:213 +#: redir.c:214 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: 受限的: 無法重定向輸出" -#: redir.c:218 +#: redir.c:219 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "無法為立即檔案建立暫存檔案: %s" -#: redir.c:222 +#: redir.c:223 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: 無法將檔案描述符指派給變數" -#: redir.c:649 +#: redir.c:650 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "沒有網路時不支援 /dev/(tcp|udp)/host/port" -#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303 msgid "redirection error: cannot duplicate fd" msgstr "重定向錯誤: 無法複製檔案描述符" -#: shell.c:347 +#: shell.c:353 msgid "could not find /tmp, please create!" msgstr "無法找到 /tmp,請建立" -#: shell.c:351 +#: shell.c:357 msgid "/tmp must be a valid directory name" msgstr "/tmp 必須為有效的目錄名稱" -#: shell.c:804 +#: shell.c:826 msgid "pretty-printing mode ignored in interactive shells" msgstr "已在互動式 shell 中忽略美化輸出模式" -#: shell.c:948 +#: shell.c:972 #, c-format msgid "%c%c: invalid option" msgstr "%c%c:無效選項" -#: shell.c:1319 +#: shell.c:1343 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "無法設定 UID 至 %d:有效的 UID %d" -#: shell.c:1330 +#: shell.c:1354 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "無法設定 GID 至 %d:有效的 GID %d" -#: shell.c:1518 +#: shell.c:1544 msgid "cannot start debugger; debugging mode disabled" msgstr "無法開啟偵錯器;偵錯模式已停用" -#: shell.c:1632 +#: shell.c:1658 #, c-format msgid "%s: Is a directory" msgstr "%s: 是一個目錄" -#: shell.c:1881 +#: shell.c:1907 msgid "I have no name!" msgstr "我沒有名字!" -#: shell.c:2035 +#: shell.c:2061 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash,版本 %s-(%s)\n" -#: shell.c:2036 +#: shell.c:2062 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1728,317 +1733,317 @@ msgstr "" "用法:\t%s [GNU 長選項] [選項] …\n" "\t%s [GNU 長選項] [選項] 指令稿檔案 …\n" -#: shell.c:2038 +#: shell.c:2064 msgid "GNU long options:\n" msgstr "GNU 長選項:\n" -#: shell.c:2042 +#: shell.c:2068 msgid "Shell options:\n" msgstr "Shell 選項:\n" -#: shell.c:2043 +#: shell.c:2069 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD 或 -c <指令> 或 -O \t\t(僅適合呼叫)\n" -#: shell.c:2062 +#: shell.c:2088 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o 選項\n" -#: shell.c:2068 +#: shell.c:2094 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "輸入「%s -c \"help set\"」更多關於 shell 選項的訊息。\n" -#: shell.c:2069 +#: shell.c:2095 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "輸入「%s -c help」更多關於內建 shell 指令的訊息。\n" -#: shell.c:2070 +#: shell.c:2096 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "使用「bashbug」指令通報程式錯誤。\n" -#: shell.c:2072 +#: shell.c:2098 #, c-format msgid "bash home page: \n" msgstr "bash 官網:\n" -#: shell.c:2073 +#: shell.c:2099 #, c-format msgid "General help using GNU software: \n" msgstr "GNU 軟體的常見使用說明:\n" -#: sig.c:757 +#: sig.c:765 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask:%d:無效操作" -#: siglist.c:47 +#: siglist.c:48 msgid "Bogus signal" msgstr "偽訊號" -#: siglist.c:50 +#: siglist.c:51 msgid "Hangup" msgstr "掛斷" -#: siglist.c:54 +#: siglist.c:55 msgid "Interrupt" msgstr "中止" -#: siglist.c:58 +#: siglist.c:59 msgid "Quit" msgstr "結束" -#: siglist.c:62 +#: siglist.c:63 msgid "Illegal instruction" msgstr "無效指令" -#: siglist.c:66 +#: siglist.c:67 msgid "BPT trace/trap" msgstr "斷點追蹤/陷阱" -#: siglist.c:74 +#: siglist.c:75 msgid "ABORT instruction" msgstr "放棄指令" -#: siglist.c:78 +#: siglist.c:79 msgid "EMT instruction" msgstr "模擬器陷阱指令" -#: siglist.c:82 +#: siglist.c:83 msgid "Floating point exception" msgstr "期望浮點數" -#: siglist.c:86 +#: siglist.c:87 msgid "Killed" msgstr "強制結束" -#: siglist.c:90 +#: siglist.c:91 msgid "Bus error" msgstr "匯流排錯誤" -#: siglist.c:94 +#: siglist.c:95 msgid "Segmentation fault" msgstr "程式記憶體區段錯誤" -#: siglist.c:98 +#: siglist.c:99 msgid "Bad system call" msgstr "無效系統呼叫" -#: siglist.c:102 +#: siglist.c:103 msgid "Broken pipe" msgstr "管線損壞" -#: siglist.c:106 +#: siglist.c:107 msgid "Alarm clock" msgstr "鬧鐘" -#: siglist.c:110 +#: siglist.c:111 msgid "Terminated" msgstr "終止" -#: siglist.c:114 +#: siglist.c:115 msgid "Urgent IO condition" msgstr "緊急 I/O 狀況" -#: siglist.c:118 +#: siglist.c:119 msgid "Stopped (signal)" msgstr "停止(信號)" -#: siglist.c:126 +#: siglist.c:127 msgid "Continue" msgstr "繼續" -#: siglist.c:134 +#: siglist.c:135 msgid "Child death or stop" msgstr "子行程已死或者停止" -#: siglist.c:138 +#: siglist.c:139 msgid "Stopped (tty input)" msgstr "停止(tty 輸入)" -#: siglist.c:142 +#: siglist.c:143 msgid "Stopped (tty output)" msgstr "停止(tty 輸出)" -#: siglist.c:146 +#: siglist.c:147 msgid "I/O ready" msgstr "I/O 就緒" -#: siglist.c:150 +#: siglist.c:151 msgid "CPU limit" msgstr "CPU 限制" -#: siglist.c:154 +#: siglist.c:155 msgid "File limit" msgstr "檔案限制" -#: siglist.c:158 +#: siglist.c:159 msgid "Alarm (virtual)" msgstr "警報(虛擬)" -#: siglist.c:162 +#: siglist.c:163 msgid "Alarm (profile)" msgstr "警報(側寫)" -#: siglist.c:166 +#: siglist.c:167 msgid "Window changed" msgstr "已變更視窗" -#: siglist.c:170 +#: siglist.c:171 msgid "Record lock" msgstr "記錄鎖" -#: siglist.c:174 +#: siglist.c:175 msgid "User signal 1" msgstr "使用者訊號 1" -#: siglist.c:178 +#: siglist.c:179 msgid "User signal 2" msgstr "使用者訊號 2" -#: siglist.c:182 +#: siglist.c:183 msgid "HFT input data pending" msgstr "HFT 待輸入資料" -#: siglist.c:186 +#: siglist.c:187 msgid "power failure imminent" msgstr "即將停止電源" -#: siglist.c:190 +#: siglist.c:191 msgid "system crash imminent" msgstr "系統即將崩潰" -#: siglist.c:194 +#: siglist.c:195 msgid "migrate process to another CPU" msgstr "遷移行程至另一個 CPU" -#: siglist.c:198 +#: siglist.c:199 msgid "programming error" msgstr "程式設計錯誤" -#: siglist.c:202 +#: siglist.c:203 msgid "HFT monitor mode granted" msgstr "已授予 HFT 監視模式" -#: siglist.c:206 +#: siglist.c:207 msgid "HFT monitor mode retracted" msgstr "已復原 HFT 監視模式" -#: siglist.c:210 +#: siglist.c:211 msgid "HFT sound sequence has completed" msgstr "已完成 HFT 聲音序列" -#: siglist.c:214 +#: siglist.c:215 msgid "Information request" msgstr "資訊請求" -#: siglist.c:222 siglist.c:224 +#: siglist.c:223 siglist.c:225 #, c-format msgid "Unknown Signal #%d" msgstr "不明訊號 #%d" -#: subst.c:1476 subst.c:1666 +#: subst.c:1480 subst.c:1670 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "錯誤的取代: 在 %2$s 中沒有閉合的「%1$s」" -#: subst.c:3281 +#: subst.c:3307 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: 無法將串列指派給陣列成員" -#: subst.c:5910 subst.c:5926 +#: subst.c:6048 subst.c:6064 msgid "cannot make pipe for process substitution" msgstr "無法為行程取代建立管道" -#: subst.c:5985 +#: subst.c:6124 msgid "cannot make child for process substitution" msgstr "無法為行程取代建立子行程" -#: subst.c:6059 +#: subst.c:6198 #, c-format msgid "cannot open named pipe %s for reading" msgstr "無法開啟命名管道 %s 進 readline-" -#: subst.c:6061 +#: subst.c:6200 #, c-format msgid "cannot open named pipe %s for writing" msgstr "無法開啟命名管道 %s 進行寫入" -#: subst.c:6084 +#: subst.c:6223 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "無法將命名管道 %s 做為檔案描述符 %d 複製" -#: subst.c:6213 +#: subst.c:6370 msgid "command substitution: ignored null byte in input" msgstr "指令取代:在輸入中忽略了空位元組" -#: subst.c:6353 +#: subst.c:6533 msgid "cannot make pipe for command substitution" msgstr "無法為指令取代建立管道" -#: subst.c:6397 +#: subst.c:6580 msgid "cannot make child for command substitution" msgstr "無法為指令取代建立子行程" -#: subst.c:6423 +#: subst.c:6613 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: 無法將管道複製為檔案描述符 1" -#: subst.c:6883 subst.c:9952 +#: subst.c:7082 subst.c:10252 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: 無效的引用變數名" -#: subst.c:6979 subst.c:6997 subst.c:7169 +#: subst.c:7178 subst.c:7196 subst.c:7369 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: 無效的間接擴充" -#: subst.c:7013 subst.c:7177 +#: subst.c:7212 subst.c:7377 #, c-format msgid "%s: invalid variable name" msgstr "%s:無效的變數名稱" -#: subst.c:7256 +#: subst.c:7478 #, c-format msgid "%s: parameter not set" msgstr "%s:參數未設定" -#: subst.c:7258 +#: subst.c:7480 #, c-format msgid "%s: parameter null or not set" msgstr "%s: 參數為空或未設定" -#: subst.c:7503 subst.c:7518 +#: subst.c:7727 subst.c:7742 #, c-format msgid "%s: substring expression < 0" msgstr "%s: 子串表示式 < 0" -#: subst.c:9281 subst.c:9302 +#: subst.c:9560 subst.c:9587 #, c-format msgid "%s: bad substitution" msgstr "%s: 錯誤的取代" -#: subst.c:9390 +#: subst.c:9678 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: 無法如此指派" -#: subst.c:9814 +#: subst.c:10111 msgid "future versions of the shell will force evaluation as an arithmetic substitution" msgstr "未來版本的 shell 會強制以算術取代求值" -#: subst.c:10367 +#: subst.c:10795 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "錯誤的取代: 在 %s 中沒有閉合的「`」" -#: subst.c:11434 +#: subst.c:11874 #, c-format msgid "no match: %s" msgstr "無符合: %s" @@ -2061,21 +2066,21 @@ msgstr "需要「)」" msgid "`)' expected, found %s" msgstr "需要「)」,得到 %s" -#: test.c:466 test.c:799 +#: test.c:469 test.c:814 #, c-format msgid "%s: binary operator expected" msgstr "%s: 需要二元表示式" -#: test.c:756 test.c:759 +#: test.c:771 test.c:774 #, c-format msgid "%s: unary operator expected" msgstr "%s: 需要一元表示式" -#: test.c:881 +#: test.c:896 msgid "missing `]'" msgstr "缺少「]」" -#: test.c:899 +#: test.c:914 #, c-format msgid "syntax error: `%s' unexpected" msgstr "語法錯誤:非預期的「%s」" @@ -2084,99 +2089,104 @@ msgstr "語法錯誤:非預期的「%s」" msgid "invalid signal number" msgstr "無效訊號數字" -#: trap.c:325 +#: trap.c:323 #, c-format msgid "trap handler: maximum trap handler level exceeded (%d)" msgstr "捕捉處理函式:達到最大捕捉處理函式等級 (%d)" -#: trap.c:414 +#: trap.c:412 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: trap_list[%d] 中的錯誤值: %p" -#: trap.c:418 +#: trap.c:416 #, c-format msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps:訊號處理是 SIG_DFL,resending %d (%s) to myself" -#: trap.c:487 +#: trap.c:509 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler:不當的訊號 %d" -#: variables.c:421 +#: variables.c:424 #, c-format msgid "error importing function definition for `%s'" msgstr "錯誤,輸入的函數定義為「%s」" -#: variables.c:833 +#: variables.c:838 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell 層次 (%d) 太高,重設為 1" -#: variables.c:2674 +#: variables.c:2642 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: 目前作用域中沒有函數語境" -#: variables.c:2693 +#: variables.c:2661 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: 變數不可指派值" -#: variables.c:3475 +#: variables.c:2818 variables.c:2874 +#, c-format +msgid "%s: cannot inherit value from incompatible type" +msgstr "%s:無法從不相容的類型繼承數值" + +#: variables.c:3459 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s:指定數字至名稱參考" -#: variables.c:4404 +#: variables.c:4390 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: 目前作用域中沒有函數語境" -#: variables.c:4771 +#: variables.c:4757 #, c-format msgid "%s has null exportstr" msgstr "%s 有空的 exportstr" -#: variables.c:4776 variables.c:4785 +#: variables.c:4762 variables.c:4771 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s 的 exportstr 中有無效的字元 %1$d" -#: variables.c:4791 +#: variables.c:4777 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s 的 exportstr 中沒有「=」" -#: variables.c:5331 +#: variables.c:5317 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variables 的前端不是函數語境" -#: variables.c:5344 +#: variables.c:5330 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: 沒有 global_variables 語境" -#: variables.c:5424 +#: variables.c:5410 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables 的前端不是臨時環境作用域" -#: variables.c:6387 +#: variables.c:6400 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: 無法做為檔案開啟" -#: variables.c:6392 +#: variables.c:6405 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: 追蹤檔案描述符的值無效" -#: variables.c:6437 +#: variables.c:6450 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: 相容版本數值超出範圍" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2020 Free Software Foundation, Inc." -msgstr "著作權所有 (C) 2020 自由軟體基金會" +msgid "Copyright (C) 2022 Free Software Foundation, Inc." +msgstr "著作權所有 (C) 2022 自由軟體基金會" #: version.c:47 version2.c:47 msgid "License GPLv3+: GNU GPL version 3 or later \n" @@ -2237,7 +2247,7 @@ msgstr "continue [n]" #: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" -msgstr "builtin [shell 內建物件 [參數 …]]" +msgstr "builtin [shell 內建命令 [參數 …]]" #: builtins.c:63 msgid "caller [expr]" @@ -2256,12 +2266,12 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] 指令 [參數 …]" #: builtins.c:78 -msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgiIlnrtux] [-p] [名稱[=值] ...]" +msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]" +msgstr "declare [-aAfFgiIlnrtux] [name[=value] ...] 或 declare -p [-aAfFilnrtux] [name ...]" #: builtins.c:80 -msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgiIlnrtux] [-p] 名稱[=值] ..." +msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]" +msgstr "typeset [-aAfFgiIlnrtux] name[=value] ... 或 typeset -p [-aAfFilnrtux] [name ...]" #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2348,8 +2358,8 @@ msgid "return [n]" msgstr "return [n]" #: builtins.c:142 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [--abefhkmnptuvxBCHP] [-o 選項名] [--] [參數 …]" +msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" +msgstr "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" @@ -2396,8 +2406,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] 名稱 [名稱 …]" #: builtins.c:171 -msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" @@ -2436,12 +2446,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C msgstr "if 指令 ; then 指令 ; [ elif 指令 ; then 指令 ; ]… [ else 指令 ; ] fi" #: builtins.c:196 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "while 指令 ; do 指令 ; done" +msgid "while COMMANDS; do COMMANDS-2; done" +msgstr "while COMMANDS; do COMMANDS-2; done" #: builtins.c:198 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "until 指令 ; do 指令 ; done" +msgid "until COMMANDS; do COMMANDS-2; done" +msgstr "until COMMANDS; do COMMANDS-2; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -2673,14 +2683,14 @@ msgid "" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" " not a shell builtin." msgstr "" -"執行 shell 內建物件。\n" +"執行 shell 內建命令。\n" " \n" -" 帶 <參數> 執行 而不做指令查詢\n" -" 在希望以 shell 函數的形式來重新實現 shell 內建物件,\n" -" 但需要在函數之內執行該 shell 內建物件的情況下有用處。\n" +" 帶 <參數> 執行 而不做指令查詢\n" +" 在希望以 shell 函數的形式來重新實現 shell 內建命令,\n" +" 但需要在函數之內執行該 shell 內建命令的情況下有用處。\n" " \n" " 結束狀態:\n" -" 以 的結束狀態為準,或者如果 不是一個 shell 內建物件時\n" +" 以 的結束狀態為準,或者如果 不是一個 shell 內建命令時\n" " 回傳 false。" #: builtins.c:369 @@ -2869,43 +2879,6 @@ msgstr "" " 回傳 COMMAND 指令的回傳狀態,或者當找不到 COMMAND 指令時失敗。" #: builtins.c:490 -#, fuzzy -#| msgid "" -#| "Set variable values and attributes.\n" -#| " \n" -#| " Declare variables and give them attributes. If no NAMEs are given,\n" -#| " display the attributes and values of all variables.\n" -#| " \n" -#| " Options:\n" -#| " -f\trestrict action or display to function names and definitions\n" -#| " -F\trestrict display to function names only (plus line number and\n" -#| " \t\tsource file when debugging)\n" -#| " -g\tcreate global variables when used in a shell function; otherwise\n" -#| " \t\tignored\n" -#| " -p\tdisplay the attributes and value of each NAME\n" -#| " \n" -#| " Options which set attributes:\n" -#| " -a\tto make NAMEs indexed arrays (if supported)\n" -#| " -A\tto make NAMEs associative arrays (if supported)\n" -#| " -i\tto make NAMEs have the `integer' attribute\n" -#| " -l\tto convert the value of each NAME to lower case on assignment\n" -#| " -n\tmake NAME a reference to the variable named by its value\n" -#| " -r\tto make NAMEs readonly\n" -#| " -t\tto make NAMEs have the `trace' attribute\n" -#| " -u\tto convert the value of each NAME to upper case on assignment\n" -#| " -x\tto make NAMEs export\n" -#| " \n" -#| " Using `+' instead of `-' turns off the given attribute.\n" -#| " \n" -#| " Variables with the integer attribute have arithmetic evaluation (see\n" -#| " the `let' command) performed when the variable is assigned a value.\n" -#| " \n" -#| " When used in a function, `declare' makes NAMEs local, as with the `local'\n" -#| " command. The `-g' option suppresses this behavior.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is supplied or a variable\n" -#| " assignment error occurs." msgid "" "Set variable values and attributes.\n" " \n" @@ -2947,19 +2920,21 @@ msgid "" msgstr "" "設定變數值和屬性。\n" " \n" -" 規範變數並且賦予它們屬性。如果沒用指定名稱,\n" -" 則顯示所有變數的屬性和值。\n" +" 宣告變數並賦予其屬性。若未指定 <名稱>,\n" +" 則顯示所有變數的屬性和數值。\n" " \n" " 選項:\n" " -f\t限制動作或顯示為只有函數名稱和定義\n" -" -F\t限制僅顯示函數名稱 (以及列號和原始檔名於偵錯時)\n" -" -g\t當用於 shell 函數內時建立全域變數 ; 否則忽略\n" +" -F\t限制僅顯示函數名稱(偵錯時另包含列號和原始檔名)\n" +" -g\t用於 shell 函數時建立全域變數 ; 否則忽略\n" +" -I\t如果建立的是本地變數,則繼承上個作用域中,\n" +" \t\t同名變數的屬性及數值。\n" " -p\t顯示每個 <名稱> 變數的屬性和值\n" " \n" " 設定屬性的選項:\n" " -a\t使 <名稱> 成為索引陣列 (如果支援)\n" " -A\t使 <名稱> 成為關聯陣列 (如果支援)\n" -" -i\t使 <名稱> 帶有「integer」(整數)屬性\n" +" -i\t使 <名稱> 帶有「integer」(整數)屬性\n" " -l\t將每個 <名稱> 的值在指派時轉為小寫\n" " -n\t使 <名稱> 成為指向一個以其值為名稱的變數引用\n" " -r\t將 <名稱> 變為唯讀\n" @@ -2967,16 +2942,15 @@ msgstr "" " -u\t將每個 <名稱> 的值在指派時轉為大寫\n" " -x\t將 <名稱> 匯出\n" " \n" -" 用「+」代替「-」會關閉指定選項。\n" +" 用「+」代替「-」會關閉指定屬性。\n" " \n" -" 帶有整數屬性的變數在指派時將使用算術求值(見\n" -" 「let」指令)\n" +" 帶有整數屬性的變數,會在指派時執行算術求值(見「let」指令)\n" " \n" " 在函數中使用時,「declare」使 <名稱> 成為本機變數,和「local」\n" -" 指令一致。「-g」選項壓制這個行為\n" +" 指令一致。「-g」選項會壓制本行為\n" " \n" " 結束狀態:\n" -" 回傳成功除非使用了無效選項或者發生錯誤。" +" 回傳成功,除非使用了無效選項,或者發生錯誤。" #: builtins.c:532 msgid "" @@ -3127,7 +3101,7 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -"啟用和停用 shell 內建物件。\n" +"啟用和停用 shell 內建命令。\n" " \n" " 啟用和停用 shell 的內建指令。停用使您能夠執行一個和內建\n" " 指令同名磁碟上的指令,而無須使用完整的路徑名。\n" @@ -3145,11 +3119,11 @@ msgstr "" " \n" " 不帶選項時,每一個 <名稱> 內建都被啟用。\n" " \n" -" 如果要使用 $PATH 中找到的「test」而不是 shell 內建物件的版本,\n" +" 如果要使用 $PATH 中找到的「test」而不是 shell 內建命令的版本,\n" " 輸入「enable -n test」。\n" " \n" " 結束狀態:\n" -" 回傳成功,除非 <名稱> 不是一個 shell 內建物件或者有錯誤發生。" +" 回傳成功,除非 <名稱> 不是一個 shell 內建命令或者有錯誤發生。" #: builtins.c:640 msgid "" @@ -3170,45 +3144,6 @@ msgstr "" " 以指令的狀態結束,或者在指令為空的情況下回傳成功。" #: builtins.c:652 -#, fuzzy -#| msgid "" -#| "Parse option arguments.\n" -#| " \n" -#| " Getopts is used by shell procedures to parse positional parameters\n" -#| " as options.\n" -#| " \n" -#| " OPTSTRING contains the option letters to be recognized; if a letter\n" -#| " is followed by a colon, the option is expected to have an argument,\n" -#| " which should be separated from it by white space.\n" -#| " \n" -#| " Each time it is invoked, getopts will place the next option in the\n" -#| " shell variable $name, initializing name if it does not exist, and\n" -#| " the index of the next argument to be processed into the shell\n" -#| " variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" -#| " a shell script is invoked. When an option requires an argument,\n" -#| " getopts places that argument into the shell variable OPTARG.\n" -#| " \n" -#| " getopts reports errors in one of two ways. If the first character\n" -#| " of OPTSTRING is a colon, getopts uses silent error reporting. In\n" -#| " this mode, no error messages are printed. If an invalid option is\n" -#| " seen, getopts places the option character found into OPTARG. If a\n" -#| " required argument is not found, getopts places a ':' into NAME and\n" -#| " sets OPTARG to the option character found. If getopts is not in\n" -#| " silent mode, and an invalid option is seen, getopts places '?' into\n" -#| " NAME and unsets OPTARG. If a required argument is not found, a '?'\n" -#| " is placed in NAME, OPTARG is unset, and a diagnostic message is\n" -#| " printed.\n" -#| " \n" -#| " If the shell variable OPTERR has the value 0, getopts disables the\n" -#| " printing of error messages, even if the first character of\n" -#| " OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" -#| " \n" -#| " Getopts normally parses the positional parameters ($0 - $9), but if\n" -#| " more arguments are given, they are parsed instead.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success if an option is found; fails if the end of options is\n" -#| " encountered or an error occurs." msgid "" "Parse option arguments.\n" " \n" @@ -3250,14 +3185,12 @@ msgid "" msgstr "" "解析選項參數。\n" " \n" -" Getopts 被 shell 過程用於解析可定位的參數做為選項。\n" -" \n" -" \n" -" <選項字串> 字串包含待識別的選項字母;如果一個字母後面跟\n" -" 著分號,則該選項需要一個參數,而該參數應用空格與選項分開。\n" +" Getopts 被 shell 過程用來將可定位的參數解析為選項。\n" " \n" +" <選項字串> 字串包含待識別的選項字母。如果一個字母後面跟\n" +" 著分號,則該選項需要一個參數,這個參數應利用空格與選項分開。\n" " \n" -" 每次啟動時,getopts 會將下一個選項放到 shell 變數 $name\n" +" 每次呼叫時,getopts 會將下一個選項放到 shell 變數 $name\n" " 中,如果 name 變數不存在則先將其初始化,而下一個待處\n" " 理的參數序號放入 shell 變數 OPTIND 中。OPTIND 變數在每\n" " 次 shell 或者 shell 指令稿啟動時都被初始化為 1。當一個選項要\n" @@ -3265,26 +3198,24 @@ msgstr "" " 中。\n" " \n" " getopts 有兩種通報錯誤的方法。如果 <選項字串> 變數的第\n" -" 一個字元是冒號,getopts 使用沉默錯誤通報。在這種模式\n" -" 下,不會印發生錯誤誤訊息。如果看到了一個無效的選項,\n" -" getopts 將找到的選項字元放至 OPTARG 變數中。如果一個必\n" -" 須的選項沒有找到,getopts 放一個「:」到 <名稱> 變數中並且設\n" -" 置 OPTARG 變數為找到的選項字元。如果 getopts 不在沉默模\n" -" 式中,並且遇到了一個無效的選項,getopts 放置一個「?」到 <名稱> \n" -" 變數中並且取消設定 OPTARG 變數。如果必須的選項沒有找到,\n" -" 一個「?」會被放入 <名稱> 變數中,OPTARG 將被取消設定,並且會\n" -" 印出一個診斷資訊。\n" -" \n" -" 如果 shell 變數 OPTERR 的值為 0,getopts 停用\n" -" 錯誤資訊的印出,即使 <選項字串> 變數的第一個字元不是一\n" -" 個冒號。OPTERR 的預設值為 1。\n" -" \n" -" Getopts 通常解析可定位的參數($0 - $9),不過如果提供了\n" -" 更多的參數,它們反而會被解析。\n" +" 一個字元是冒號,getopts 進入靜默錯誤回報模式。在這種模式\n" +" 下,不會輸出錯誤訊息。若看到了無效選項,getopts 將找到的\n" +" 選項字元放至 OPTARG 變數中。如果找不到必要引數,getopts\n" +" 會放一個「:」到 <名稱> 變數,並將 OPTARG 設為找到的選項字元\n" +" 。如果 getopts 不在靜默模式中,並且遇到了一個無效的選項,\n" +" getopts 會放置一個「?」到 <名稱> 變數,並取消設定 OPTARG。\n" +" 如果找不到必要引數,則會在 NAME 放置「?」、取消設定 OPTARG,\n" +" 並且會輸出診斷資訊。\n" +" \n" +" 如果 shell 變數 OPTERR 的值為 0,getopts 停止輸出錯誤訊息,\n" +" 即使 <選項字串> 變數的第一個字元不是冒號。OPTERR 的預設值為 1。\n" +" \n" +" Getopts 通常解析可定位的參數($0 - $9),不過如果提供了\n" +" 更多的參數,會改解析這些引數。\n" " \n" " 結束狀態:\n" -" 如果一個選項被找到則回傳成功;如果遇到了選項的結尾或者\n" -" 有錯誤發生則回傳失敗。" +" 找到選項則回傳成功;如果選項提早結束,或者有錯誤發生,\n" +" 則回傳失敗。" #: builtins.c:694 msgid "" @@ -3683,7 +3614,7 @@ msgstr "" " -l\t列出訊號名稱;如果參數後跟「-l」則被假設為訊號編號,\n" " \t而相應的訊號名稱會被列出\n" " \n" -" Kill 成為 shell 內建物件有兩個理由:它允許使用工作編號而不是行程識別碼,\n" +" Kill 成為 shell 內建命令有兩個理由:它允許使用工作編號而不是行程識別碼,\n" " 並且在可以建立的行程數上限達到時允許行程被砍除。\n" " \n" " 結束狀態:\n" @@ -3778,7 +3709,8 @@ msgid "" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" " the last NAME. Only the characters found in $IFS are recognized as word\n" -" delimiters.\n" +" delimiters. By default, the backslash character escapes delimiter characters\n" +" and newline.\n" " \n" " If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" @@ -3814,23 +3746,23 @@ msgid "" " (in which case it's greater than 128), a variable assignment error occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -"從標準輸入讀取一列並將其分為不同的區域。\n" +"從標準輸入讀取一列,並將其分為不同的區域。\n" " \n" -" 從標準輸入讀取單獨的一列,或者如果使用了 -u 選項,從檔案描述符 FD 中讀取。\n" -" 該列被分割成區域,如同字詞分割一樣,並且第一個字詞被指派給第一個 <名稱> 變數,第二\n" -" 個字詞被指派給第二個 <名稱> 變數,如此繼續,直到剩下所有的字詞被指派給最後一個 <名稱>\n" -" 變數。只有 $IFS 變數中的字元被認做是字詞分隔符。\n" +" 從標準輸入讀取單獨的一列,或者如果使用了 -u 選項,從檔案描述元 FD 中讀取。\n" +" 該列會分割成區域,如同字詞分割一樣,並且第一個字詞被指派給第一個 NAME 變數,第二\n" +" 個字詞被指派給第二個 NAME 變數,如此繼續,直到剩下所有的字詞被指派給最後一個 <名稱>\n" +" 變數。只有 $IFS 變數中的字元被認做是字詞分隔符。預設情況下,反斜線字元會跳脫分割字元和換行。\n" " \n" -" 如果沒有提供 <名稱> 變數,則讀取的列被存放在 REPLY 變數中。\n" +" 如果沒有提供 NAME 變數,則讀取的列會存放在 REPLY 變數中。\n" " \n" " 選項:\n" " -a array\t將字詞指派給 ARRAY 陣列變數的序列索引成員,從零開始。\n" " -d delim\t持續讀取直到讀入 DELIM 變數中的第一個字元,而不是換列符\n" " -e\t使用 Readline 取得列\n" " -i text\t使用 TEXT 文字做為 Readline 的初始文字\n" -" -n nchars\t讀取 nchars 個字元之後回傳,而不是等到讀取換列符。\n" -" \t\t但是分隔符仍然有效,如果遇到分隔符之前讀取了不足 nchars 個字元。\n" -" -N nchars\t在準確讀取了 nchars 個字元之後回傳,除非遇到檔案結束符或者讀取逾時,\n" +" -n nchars\t讀取 NCHARS 個字元之後回傳,而不是等到讀取換列符。\n" +" \t\t但如果遇到分隔符之前讀取了不足 NCHARS 個字元,分隔符仍然有效。\n" +" -N nchars\t在準確讀取了 NCHARS 個字元之後回傳,除非遇到檔案結束符或者讀取逾時,\n" " \t\t任何的分隔符都被忽略\n" " -p prompt\t在嘗試讀取之前輸出 PROMPT 提示符並且不帶\n" " \t\t換列符\n" @@ -3838,16 +3770,16 @@ msgstr "" " -s\t不顯示終端的任何輸入\n" " -t timeout\t如果在 TIMEOUT 秒內沒有讀取一個完整的列則逾時並且回傳失敗。\n" " \t\tTMOUT 變數的值是預設逾時時間。\n" -" \t\tTIMEOUT 可以是小數。如果 TIMEOUT 是 0,那麼僅當在指定的檔案描述符上\n" -" \t\t輸入有效的時候,read 才回傳成功。\n" +" \t\tTIMEOUT 可以是小數。如果 TIMEOUT 是 0,則立即回傳而不嘗試\n" +" \t\t讀取任何資料,如果指定的檔案描述符有輸入,則回傳成功\n" " \t\t如果超過了逾時時間,則回傳狀態碼大於 128\n" " -u fd\t從檔案描述符 FD 中讀取,而不是標準輸入\n" " \n" " 結束狀態:\n" -" 回傳碼為零,除非遇到了檔案結束符,讀取逾時,或者無效的文\n" -" 件描述符做為參數傳遞給了 -u 選項。" +" 回傳碼為 0,除非遇到了檔案結束符、讀取逾時,或將無效的檔案\n" +" 描述符,作為參數傳向 -u 選項。" -#: builtins.c:1041 +#: builtins.c:1042 msgid "" "Return from a shell function.\n" " \n" @@ -3867,7 +3799,7 @@ msgstr "" " 結束狀態:\n" " 回傳 N,或者如果 shell 不在執行一個函數或引用指令稿時,失敗。" -#: builtins.c:1054 +#: builtins.c:1055 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4026,7 +3958,7 @@ msgstr "" " 結束狀態:\n" " 回傳成功除非使用了無效的參數。" -#: builtins.c:1139 +#: builtins.c:1140 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4062,7 +3994,7 @@ msgstr "" " 結束狀態:\n" " 回傳成功,除非使用了無效的選項或者 NAME 名稱為唯讀。" -#: builtins.c:1161 +#: builtins.c:1162 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4094,7 +4026,7 @@ msgstr "" " 結束狀態:\n" " 回傳成功,除非使用了無效的選項或者 <名稱>。" -#: builtins.c:1180 +#: builtins.c:1181 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4130,7 +4062,7 @@ msgstr "" " 結束狀態:\n" " 回傳成功,除非使用了無效的選項或者 <名稱>。" -#: builtins.c:1202 +#: builtins.c:1203 msgid "" "Shift positional parameters.\n" " \n" @@ -4148,7 +4080,7 @@ msgstr "" " 結束狀態:\n" " 回傳成功,除非 N 為負或者大於 $#。" -#: builtins.c:1214 builtins.c:1229 +#: builtins.c:1215 builtins.c:1230 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4170,7 +4102,7 @@ msgstr "" " 結束狀態:\n" " 回傳 <檔名> 檔案中最後一個指令的狀態;如果 <檔名> 檔案不可讀則失敗。" -#: builtins.c:1245 +#: builtins.c:1246 msgid "" "Suspend shell execution.\n" " \n" @@ -4194,7 +4126,7 @@ msgstr "" " 結束狀態:\n" " 回傳成功,除非沒有啟用工作控制或者有錯誤發生。" -#: builtins.c:1261 +#: builtins.c:1262 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4346,7 +4278,7 @@ msgstr "" " 如果 EXPR 表示式求值為真則回傳成功;如果 EXPR 表示式求值\n" " 為假或者使用了無效的參數則回傳失敗。" -#: builtins.c:1343 +#: builtins.c:1344 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4358,7 +4290,7 @@ msgstr "" " 是內建指令「test」的同義詞,但是最後一個參數必須是\n" " 字元「]」,以符合起始的「[」。" -#: builtins.c:1352 +#: builtins.c:1353 msgid "" "Display process times.\n" " \n" @@ -4376,7 +4308,7 @@ msgstr "" " 結束狀態:\n" " 一律成功。" -#: builtins.c:1364 +#: builtins.c:1365 msgid "" "Trap signals and other events.\n" " \n" @@ -4437,7 +4369,7 @@ msgstr "" " 結束狀態:\n" " 回傳成功,除非使用了無效的選項或者 SIGSPEC。" -#: builtins.c:1400 +#: builtins.c:1401 msgid "" "Display information about command type.\n" " \n" @@ -4467,74 +4399,27 @@ msgid "" msgstr "" "顯示指令類型的資訊。\n" " \n" -" 對於每一個 <名稱>,指示如果做為指令它將如何被解釋。\n" +" 對於每一個 NAME,指示用作指令名稱時的解釋方式。\n" " \n" " 選項:\n" -" -a\t顯示所有包含名稱為 <名稱> 的可執行檔案的位置;\n" -" \t包括別名、內建和函數。僅當「-p」選項沒有使用時\n" +" -a\t顯示所有包含名為 NAME 的可執行檔案的位置。\n" +" \t包括別名、內建和函數(若且唯若 “-p” 選項未使用時)。\n" " -f\t抑制 shell 函數查詢\n" -" -P\t為每個 <名稱> 驚醒 PATH 路徑搜尋,即使它是別名、\n" -" \t內建或函數,並且回傳將被執行的磁碟上檔案的名稱。\n" -" -p\t回傳將被執行的磁碟上檔案的名稱,或者當「type -t <名稱>」\n" -" \t不回傳「file」時,不回傳任何值。\n" -" -t\t回傳下列詞中的任何一個「alias」、「keyword」、\n" -" \t「function」、「builtin」、「file」或者「」,如果 <名稱> 是相應的\n" -" \t一個別名、shell 保留字、shell 函數、shell 內建物件、\n" -" \t磁碟檔案或沒有找到。\n" +" -P\t為每個 NAME 強制進行 PATH 路徑搜尋,即使它是別名、\n" +" \t內建或函數,並回傳將被執行的磁碟檔案名稱。\n" +" -p\t回傳將被執行的磁碟上檔案的名稱,或者在 “type -t NAME”\n" +" \t回傳值不是 “file” 時,不回傳任何值。\n" +" -t\t回傳 “alias”、“keyword”、“function”、“builtin”、“file”\n" +" \t或 “”,對應到 NAME 是別名、shell 保留字、shell 函數、\n" +" \t內建命令、磁碟檔案或找不到檔案。\n" " \n" -" 參數:\n" -" <名稱>\t將要解析的指令。\n" +" 引數:\n" +" NAME\t將要解析的指令。\n" " \n" " 結束狀態:\n" -" 如果所有的 <名稱> 指令都找到則回傳成功;任何找不到則失敗。" - -#: builtins.c:1431 -#, fuzzy -#| msgid "" -#| "Modify shell resource limits.\n" -#| " \n" -#| " Provides control over the resources available to the shell and processes\n" -#| " it creates, on systems that allow such control.\n" -#| " \n" -#| " Options:\n" -#| " -S\tuse the `soft' resource limit\n" -#| " -H\tuse the `hard' resource limit\n" -#| " -a\tall current limits are reported\n" -#| " -b\tthe socket buffer size\n" -#| " -c\tthe maximum size of core files created\n" -#| " -d\tthe maximum size of a process's data segment\n" -#| " -e\tthe maximum scheduling priority (`nice')\n" -#| " -f\tthe maximum size of files written by the shell and its children\n" -#| " -i\tthe maximum number of pending signals\n" -#| " -k\tthe maximum number of kqueues allocated for this process\n" -#| " -l\tthe maximum size a process may lock into memory\n" -#| " -m\tthe maximum resident set size\n" -#| " -n\tthe maximum number of open file descriptors\n" -#| " -p\tthe pipe buffer size\n" -#| " -q\tthe maximum number of bytes in POSIX message queues\n" -#| " -r\tthe maximum real-time scheduling priority\n" -#| " -s\tthe maximum stack size\n" -#| " -t\tthe maximum amount of cpu time in seconds\n" -#| " -u\tthe maximum number of user processes\n" -#| " -v\tthe size of virtual memory\n" -#| " -x\tthe maximum number of file locks\n" -#| " -P\tthe maximum number of pseudoterminals\n" -#| " -T\tthe maximum number of threads\n" -#| " \n" -#| " Not all options are available on all platforms.\n" -#| " \n" -#| " If LIMIT is given, it is the new value of the specified resource; the\n" -#| " special LIMIT values `soft', `hard', and `unlimited' stand for the\n" -#| " current soft limit, the current hard limit, and no limit, respectively.\n" -#| " Otherwise, the current value of the specified resource is printed. If\n" -#| " no option is given, then -f is assumed.\n" -#| " \n" -#| " Values are in 1024-byte increments, except for -t, which is in seconds,\n" -#| " -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" -#| " number of processes.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is supplied or an error occurs." +" 若找到所有的 NAME,則回傳成功;有任何一個沒找到,則回傳失敗。" + +#: builtins.c:1432 msgid "" "Modify shell resource limits.\n" " \n" @@ -4584,47 +4469,48 @@ msgid "" msgstr "" "修改 shell 資源限制。\n" " \n" -" 在允許此類控制的系統上,提供對於 shell 及其建立的行程所可用的\n" -" 資源的控制。\n" +" 在允許此類控制的系統上,提供對 shell 及其建立的行程,\n" +" 可用資源的控制。\n" " \n" " 選項:\n" -" -S\t使用軟 (「soft」) 資源限制\n" -" -H\t使用硬 (「hard」) 資源限制\n" -" -a\t所有目前限制都被通報\n" -" -b\t通訊端快取尺寸\n" -" -c\t建立核心檔案的最大尺寸\n" -" -d\t一個行程的資料區最大尺寸\n" -" -e\t最高的排程優先順序 (「nice」)\n" -" -f\t有 shell 及其子行程可以寫入的最大檔案尺寸\n" -" -i\t最多可以暫停的訊號數\n" -" -k\t為這個進程所分配的最大 kqueues 數量\n" -" -l\t一個行程可以鎖定的最大記憶體尺寸\n" -" -m\t最大的記憶體進駐尺寸\n" -" -n\t最多開啟的檔案描述符個數\n" -" -p\t管道緩衝區尺寸\n" -" -q\tPOSIX 資訊佇列的最大位元組數\n" +" -S\t使用彈性(「soft」)資源限制\n" +" -H\t使用固定(「hard」)資源限制\n" +" -a\t回報目前的所有限制\n" +" -b\t通訊端快取大小\n" +" -c\t建立之核心檔案的最大大小\n" +" -d\t一個行程資料區的最大大小\n" +" -e\t最高的排程優先順序(「nice」)\n" +" -f\tshell 及其子行程可寫入的最大檔案大小\n" +" -i\t最多可以暫停的信號數\n" +" -k\t為本行程分配之最大 kqueues 數量\n" +" -l\t一個行程可能鎖定的最大記憶體尺寸\n" +" -m\t最大的常駐記憶體大小\n" +" -n\t最多可開啟之檔案描述元個數\n" +" -p\t管道緩衝區大小\n" +" -q\tPOSIX 訊息佇列的最大位元組數\n" " -r\t即時排程的最大優先順序\n" " -s\t最大堆疊尺寸\n" -" -P\t偽終端的最大數量\n" -" -t\t最大的 CPU 時間,以秒為單位\n" +" -t\t最多可用的 CPU 時間,以秒為單位\n" " -u\t最大使用者行程數\n" " -v\t虛擬記憶體尺寸\n" " -x\t最大的檔案鎖數量\n" +" -P\t最大可開啟的偽終端數量\n" +" -R\t一個即時執行緒在堵塞前可執行的最長時間\n" " -T\t最大執行緒數量\n" " \n" " 並非所有選項在所有系統上可用。\n" " \n" -" 如果提供了 LIMIT 變數,則它為指定資源的新值;特別的 LIMIT 值為\n" -" 「soft」、「hard」和「unlimited」,分別表示目前的軟限制,硬限制和無限制。\n" -" 否則印出指定資源的目前限制值,不帶選項則假定為 -f\n" +" 如果有指定 LIMIT,則這個變數是指定資源的新數值;特殊 LIMIT 數值\n" +" 「soft」、「hard」和「unlimited」,分別表示目前的彈性限制、固定限制和\n" +" 無限制。若未指定,則輸出指定資源的目前限制值,不傳入選項則假定為 -f\n" " \n" -" 取值都是 1024 位元組為單位,除了 -t 以秒為單位,-p 以 512 位元組遞增,\n" -" -u 為無尺度的行程數量。\n" +" 取值都是 1024 位元組為單位,除了 -t 以秒為單位、-p 以 512 位元組遞增、\n" +" -u 為無單位的行程數量。\n" " \n" " 結束狀態:\n" " 回傳成功,除非使用了無效的選項或者錯誤發生。" -#: builtins.c:1482 +#: builtins.c:1483 msgid "" "Display or set file mode mask.\n" " \n" @@ -4656,26 +4542,7 @@ msgstr "" " 結束狀態:\n" " 回傳成功,除非使用了無效的 MODE 模式或者選項。" -#: builtins.c:1502 -#, fuzzy -#| msgid "" -#| "Wait for job completion and return exit status.\n" -#| " \n" -#| " Waits for each process identified by an ID, which may be a process ID or a\n" -#| " job specification, and reports its termination status. If ID is not\n" -#| " given, waits for all currently active child processes, and the return\n" -#| " status is zero. If ID is a job specification, waits for all processes\n" -#| " in that job's pipeline.\n" -#| " \n" -#| " If the -n option is supplied, waits for the next job to terminate and\n" -#| " returns its exit status.\n" -#| " \n" -#| " If the -f option is supplied, and job control is enabled, waits for the\n" -#| " specified ID to terminate, instead of waiting for it to change status.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns the status of the last ID; fails if ID is invalid or an invalid\n" -#| " option is given." +#: builtins.c:1503 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4704,20 +4571,27 @@ msgid "" msgstr "" "等待工作完成並回傳結束狀態。\n" " \n" -" 等待以 ID 編號識別的行程,其中 ID 可以是行程編號或者工作規格,\n" -" 並通報它的終止狀態。如果 ID 沒有給出,則等待所有的目前活躍子\n" -" 行程,並且回傳狀態為零。如果 ID 是工作規格,等待工作管道中的\n" +" 等待以 ID 編號識別的行程-其中 ID 可以是行程編號或者工作規格—\n" +" 並回報其終止狀態。若未指定 ID,則等待所有的目前活躍子行程,\n" +" 並設定回傳狀態為 0。如果 ID 是工作規格,則等待工作管線中的\n" " 所有行程。\n" " \n" -" 若指定了 -n 選項,等待下一個工作完成並回傳其狀態。\n" +" 若指定了 -n 選項,則等待 ID 清單中的單一個工作;若未指定,則\n" +" 等待下一個工作完成,並回傳其結束狀態。\n" " \n" -" 如果指定了 -f 選項且啟用工作管理,則等待指定 ID 終止,而非\n" -" 等到其變更狀態。\n" +" 如果指定了 -p 選項,則會將選項引數中命名的 VAR 變數,指定\n" +" 為回傳結束狀態之工作的行程或工作識別子。這個變數在指定前,\n" +" 會先進行 unset。這個僅在指定 -n 選項時有幫助。\n" +"\n" +" 如果指定了 -f 選項且有啟用工作管理,則等待指定 ID 終止,\n" +" 而非等待其變更狀態。\n" " \n" " 結束狀態:\n" -" 回傳最後一個 ID 行程的狀態;如果使用了無效的 ID 或者選項則失敗。" +" 回傳最後一個 ID 行程的狀態;如果 ID 或指定之選項無效;\n" +" 或有指定 -n,shell 卻沒有要不等待 (unwaited) 的子行程,\n" +" 則回傳失敗。" -#: builtins.c:1533 +#: builtins.c:1534 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4737,7 +4611,7 @@ msgstr "" " 結束狀態:\n" " 回傳行程 ID 的狀態;如果 PID 是無效的行程識別碼或者指定了無效的選項則失敗。" -#: builtins.c:1548 +#: builtins.c:1549 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4758,7 +4632,7 @@ msgstr "" " 結束狀態:\n" " 回傳最後執行指令的狀態。" -#: builtins.c:1562 +#: builtins.c:1563 msgid "" "Arithmetic for loop.\n" " \n" @@ -4788,7 +4662,7 @@ msgstr "" " 結束狀態:\n" " 回傳最後執行指令的狀態。" -#: builtins.c:1580 +#: builtins.c:1581 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4821,7 +4695,7 @@ msgstr "" " 結束狀態:\n" " 回傳最後一個執行指令的狀態。" -#: builtins.c:1601 +#: builtins.c:1602 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4849,7 +4723,7 @@ msgstr "" " 結束狀態:\n" " 回傳狀態即 PIPELINE 的回傳狀態。" -#: builtins.c:1618 +#: builtins.c:1619 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4867,7 +4741,7 @@ msgstr "" " 結束狀態:\n" " 回傳最後一個執行指令的狀態。" -#: builtins.c:1630 +#: builtins.c:1631 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4893,43 +4767,43 @@ msgstr "" " 結束狀態:\n" " 回傳最後一個執行指令的狀態。" -#: builtins.c:1647 +#: builtins.c:1648 msgid "" "Execute commands as long as a test succeeds.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `while' COMMANDS has an exit status of zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status of zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" "只要測試成功即執行指令。\n" " \n" -" 只要在「while」<指令> 中的最終指令回傳結果為 0,則\n" -" 展開並執行 <指令>。\n" +" 只要 COMMANDS 中的最後一條命令回傳了結束狀態碼 0,\n" +" 便會展開並執行 COMMANDS-2。\n" " \n" " 結束狀態:\n" " 回傳最後一個執行指令的狀態。" -#: builtins.c:1659 +#: builtins.c:1660 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" -" Expand and execute COMMANDS as long as the final command in the\n" -" `until' COMMANDS has an exit status which is not zero.\n" +" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n" +" an exit status which is not zero.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"當測試不同過時執行指令。\n" +"只要測試不成功即執行指令。\n" " \n" -" 「until」<指令> 的最終指令回傳狀態不為 0 時,\n" -" 展開並執行 <指令>。\n" +" 只要 COMMANDS 中的最後一條命令回傳了不是 0 的結束狀態碼,\n" +" 便會展開並執行 COMMANDS-2。\n" " \n" " 結束狀態:\n" " 回傳最後一個執行指令的狀態。" -#: builtins.c:1671 +#: builtins.c:1672 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4951,7 +4825,7 @@ msgstr "" " 結束狀態:\n" " coprc 指令回傳離開代碼 0。" -#: builtins.c:1685 +#: builtins.c:1686 msgid "" "Define shell function.\n" " \n" @@ -4973,7 +4847,7 @@ msgstr "" " 結束狀態:\n" " 回傳成功除非 <名稱> 為唯讀。" -#: builtins.c:1699 +#: builtins.c:1700 msgid "" "Group commands as a unit.\n" " \n" @@ -4991,7 +4865,7 @@ msgstr "" " 結束狀態:\n" " 回傳最後一個執行指令的狀態。" -#: builtins.c:1711 +#: builtins.c:1712 msgid "" "Resume job in foreground.\n" " \n" @@ -5015,7 +4889,7 @@ msgstr "" " 結束狀態:\n" " 回傳被繼續的工作狀態。" -#: builtins.c:1726 +#: builtins.c:1727 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5033,7 +4907,7 @@ msgstr "" " 結束狀態:\n" " 如果表示式求值為 0 則回傳 1;否則回傳 0。" -#: builtins.c:1738 +#: builtins.c:1739 msgid "" "Execute conditional command.\n" " \n" @@ -5077,7 +4951,7 @@ msgstr "" " 結束狀態:\n" " 根據 EXPRESSION 的值為 0 或 1。" -#: builtins.c:1764 +#: builtins.c:1765 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5172,7 +5046,7 @@ msgstr "" " HISTIGNORE\t用於決定哪些指令被存入歷史記錄檔案的模式\n" " \t\t列表,以冒號分隔。\n" -#: builtins.c:1821 +#: builtins.c:1822 msgid "" "Add directories to stack.\n" " \n" @@ -5223,7 +5097,7 @@ msgstr "" " 結束狀態:\n" " 回傳成功,除非使用了無效的參數或者目錄變換失敗。" -#: builtins.c:1855 +#: builtins.c:1856 msgid "" "Remove directories from stack.\n" " \n" @@ -5270,7 +5144,7 @@ msgstr "" " 結束狀態:\n" " 回傳成功,除非使用了無效的參數或者目錄變換失敗。" -#: builtins.c:1885 +#: builtins.c:1886 msgid "" "Display directory stack.\n" " \n" @@ -5319,7 +5193,7 @@ msgstr "" " 結束狀態:\n" " 回傳成功,除非使用了無效的選項或者發生錯誤。" -#: builtins.c:1916 +#: builtins.c:1917 msgid "" "Set and unset shell options.\n" " \n" @@ -5355,7 +5229,7 @@ msgstr "" " 如果 <選項名稱> 選項被啟用則回傳成功;如果是\n" " 無效的選項或 <選項名稱> 被停用則失敗。" -#: builtins.c:1937 +#: builtins.c:1938 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5374,6 +5248,8 @@ msgid "" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" +" %Q\tlike %q, but apply any precision to the unquoted argument before\n" +" \t\tquoting\n" " %(fmt)T\toutput the date-time string resulting from using FMT as a format\n" " \t string for strftime(3)\n" " \n" @@ -5386,48 +5262,28 @@ msgid "" " Returns success unless an invalid option is given or a write or assignment\n" " error occurs." msgstr "" -"在 <格式> 的控制下格式化並印出 <參數>。\n" +"在 FORMAT 的控制下格式化並印出 ARGUMENTS。\n" " \n" " 選項:\n" -" -v var\t將輸出指派給 shell 變數 VAR 而不顯示在標準輸出上\n" +" -v var\t將輸出指派給 shell 變數 VAR 而非顯示在標準輸出上\n" +" \n" +" FORMAT 是包含三種物件的字元:簡單複製到標準輸出的純字元;\n" +" 變換後複製到標準輸入的跳脫字元;以及每個都會影響到下個引數的格式化規格。\n" " \n" -" <格式> 是包含三種物件的字串:簡單地被複製到標準輸出的普通字元;\n" -" 被變換之後複製到標準輸入的逸出字元;以及每個都會影響到下個參數的印出格式化規格。\n" +" 除了 printf(1) 中描述的標準格式化規格,printf 還會解析:\n" " \n" -" 在 printf(1) 中描述的標準控制規格之外,printf 解析:\n" +" %b\t對應引數中的反斜線跳脫序列\n" +" %q\t以可做為 shell 輸入的格式對引數加上引號\n" +" %Q\t類似 %q,但精度要求會在加引號之前,對未括住的引數生效\n" +" %(fmt)T\t將 FMT 用來當作 strftime(3) 的格式,輸出日期與時間字串\n" +" \n" +" 必要時會重用格式以消耗掉所有引數。如果引數少於格式所需,其他的格式規範則會\n" +" 視為 0 值或空字串(視情況而定)套用。\n" " \n" -" %b\t擴充套件對應參數中的反斜線逸出序列\n" -" %q\t以可做為 shell 輸入的格式引用參數\n" -" %(fmt)T\t以 FMT 為提供 strftime(3) 的格式輸出日期與時間字串 \n" " 結束狀態:\n" " 回傳成功,除非使用了無效的選項或者發生寫入或指派錯誤。" -#: builtins.c:1971 -#, fuzzy -#| msgid "" -#| "Specify how arguments are to be completed by Readline.\n" -#| " \n" -#| " For each NAME, specify how arguments are to be completed. If no options\n" -#| " are supplied, existing completion specifications are printed in a way that\n" -#| " allows them to be reused as input.\n" -#| " \n" -#| " Options:\n" -#| " -p\tprint existing completion specifications in a reusable format\n" -#| " -r\tremove a completion specification for each NAME, or, if no\n" -#| " \t\tNAMEs are supplied, all completion specifications\n" -#| " -D\tapply the completions and actions as the default for commands\n" -#| " \t\twithout any specific completion defined\n" -#| " -E\tapply the completions and actions to \"empty\" commands --\n" -#| " \t\tcompletion attempted on a blank line\n" -#| " -I\tapply the completions and actions to the initial (usually the\n" -#| " \t\tcommand) word\n" -#| " \n" -#| " When completion is attempted, the actions are applied in the order the\n" -#| " uppercase-letter options are listed above. If multiple options are supplied,\n" -#| " the -D option takes precedence over -E, and both take precedence over -I.\n" -#| " \n" -#| " Exit Status:\n" -#| " Returns success unless an invalid option is supplied or an error occurs." +#: builtins.c:1974 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5453,26 +5309,26 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -"規範 readline 如何完成讀取參數。\n" +"指定 readline 如何完成讀取引數。\n" " \n" -" 規格對於每一個<名稱>如何完成讀取參數。如果不帶選項,\n" -" 現有的補完規格會以可以重用為輸入的格式印出。\n" +" 指定每一個 <名稱> 如何完成讀取參數。如果不指定選項,\n" +" 現有的自動完成規格會以可以重新作為輸入使用的格式輸出。\n" " \n" " 選項:\n" -" -p\t以可重用的格式印出現有的補完規格。\n" -" -r\t對於每個<名稱>刪除補完規格,或者如果沒有提供<名稱>\n" -" \t名稱,刪除所有的補完規格。\n" -" -D\t對於沒有補完規格定義的指令,設定預設的補完動作\n" -" -E\t對於「empty」指令設定補完動作,—— 對於空列的補完。\n" -" -I\t套用補完和動作到首個 (通常是指令) 單詞\n" -" \n" -" 嘗試補完時,按照上述大寫字母選項的順序進行動作。 如果傳入了多個選項,\n" +" -p\t以可重用的格式輸出現有的自動完成規格。\n" +" -r\t移除每個 <名稱> 的自動完成規格。若未指定 <名稱>\n" +" \t則移除所有自動完成規格。\n" +" -D\t對於沒有自動完成規格定義的命令,設定預設的自動完成動作\n" +" -E\t對於「empty」指令——嘗試對空白列進行自動完成——套用自動完成和動作。\n" +" -I\t套用自動完成和動作到首個(通常是命令)單字\n" +" \n" +" 發起自動完成嘗試時,將依上述大寫字母選項的順序進行動作。若傳入了多個選項,\n" " -D 選項優先於 -E 選項,而兩者優先於 -I 選項。\n" " \n" " 結束狀態:\n" " 回傳成功,除非使用了無效的選項或者錯誤發生。" -#: builtins.c:2001 +#: builtins.c:2004 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5483,16 +5339,16 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -"依據選項顯示可能的補完。\n" +"依據選項顯示可能的自動完成建議。\n" " \n" -" 意圖在能產生可能的補完 shell 函數內部使用。\n" +" 意圖在能產生可能的自動完成 shell 函數內部使用。\n" " 如果提供了可選的 WORD 參數,則產生按照 WORD\n" " 進行的符合。\n" " \n" " 結束狀態:\n" " 除非使用了無效選項或者錯誤發生,否則回傳成功。" -#: builtins.c:2016 +#: builtins.c:2019 msgid "" "Modify or display completion options.\n" " \n" @@ -5520,29 +5376,29 @@ msgid "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." msgstr "" -"修改或顯示補完選項。\n" +"修改或顯示自動完成選項。\n" " \n" -" 修改每個 <名稱> 的補完選項,或如果沒有提供 <名稱>,執行目前的補完。\n" -" 如果不帶選項,印出每個 <名稱> 的補完選項或目前的補完規格。\n" +" 修改每個 <名稱> 的自動完成選項,或如果沒有提供 <名稱>,執行目前的自動完成。\n" +" 如果不帶選項,印出每個 <名稱> 的自動完成選項或目前的自動完成規格。\n" " \n" " 選項:\n" -" \t-o option\t為每個 <名稱> 設定補完選項 option\n" -" \t-D\t\t為「default」指令補完變更選項\n" -" \t-E\t\t為「empty」指令補完變更選項\n" -" \t-I\t\t為首單詞上的補完變更選項\n" +" \t-o option\t為每個 <名稱> 設定自動完成選項 option\n" +" \t-D\t\t為「default」指令自動完成變更選項\n" +" \t-E\t\t為「empty」指令自動完成變更選項\n" +" \t-I\t\t為首單詞上的自動完成變更選項\n" " \n" " 使用「+o」而不是「-o」可以關閉指定的選項。\n" " \n" " 參數:\n" " \n" -" 每個 <名稱> 都對應一個之前以藉由「complete」內建定義了補完規格的\n" -" 指令。如果不提供 <名稱>,目前產生補完的函數必須呼叫 compopt,\n" -" 並且目前執行的補完產生器選項會被修改。\n" +" 每個 <名稱> 都對應一個之前以藉由「complete」內建定義了自動完成規格的\n" +" 指令。如果不提供 <名稱>,目前產生自動完成的函數必須呼叫 compopt,\n" +" 並且目前執行的自動完成產生器選項會被修改。\n" " \n" " 結束狀態:\n" -" 回傳成功,除非使用了無效的選項或者 <名稱> 沒有定義補完規格。" +" 回傳成功,除非使用了無效的選項或者 <名稱> 沒有定義自動完成規格。" -#: builtins.c:2047 +#: builtins.c:2050 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5602,7 +5458,7 @@ msgstr "" " 結束狀態:\n" " 回傳成功,除非使用了無效的選項,或者 ARRAY 變數唯讀或不是索引陣列。" -#: builtins.c:2083 +#: builtins.c:2086 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5612,6 +5468,9 @@ msgstr "" " \n" " 一個「mapfile」的同義詞。" +#~ msgid "%s: invalid associative array key" +#~ msgstr "%s: 無效的關聯陣列鍵值" + #~ msgid "" #~ "Returns the context of the current subroutine call.\n" #~ " \n" diff --git a/print_cmd.c b/print_cmd.c index 3c8c2d8ff..eef9bb6a0 100644 --- a/print_cmd.c +++ b/print_cmd.c @@ -1,6 +1,6 @@ /* print_command -- A way to make readable commands from a command tree. */ -/* Copyright (C) 1989-2020 Free Software Foundation, Inc. +/* Copyright (C) 1989-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -129,6 +129,7 @@ static int inside_function_def; static int skip_this_indent; static int was_heredoc; static int printing_connection; +static int printing_comsub; static REDIRECT *deferred_heredocs; /* The depth of the group commands that we are currently printing. This @@ -162,6 +163,21 @@ make_command_string (command) return (the_printed_command); } +/* Print a command substitution after parsing it in parse_comsub to turn it + back into an external representation without turning newlines into `;'. + Placeholder for other changes, if any are necessary. */ +char * +print_comsub (command) + COMMAND *command; +{ + char *ret; + + printing_comsub++; + ret = make_command_string (command); + printing_comsub--; + return ret; +} + /* The internal function. This is the real workhorse. */ static void make_command_string_internal (command) @@ -278,25 +294,35 @@ make_command_string_internal (command) break; case ';': - if (deferred_heredocs == 0) - { - if (was_heredoc == 0) - cprintf (";"); - else - was_heredoc = 0; - } - else - print_deferred_heredocs (inside_function_def ? "" : ";"); + case '\n': /* special case this */ + { + char c = command->value.Connection->connector; - if (inside_function_def) - cprintf ("\n"); - else - { - cprintf (" "); - if (command->value.Connection->second) - skip_this_indent++; - } - break; + s[0] = printing_comsub ? c : ';'; + s[1] = '\0'; + + if (deferred_heredocs == 0) + { + if (was_heredoc == 0) + cprintf ("%s", s); /* inside_function_def? */ + else + was_heredoc = 0; + } + else + /* print_deferred_heredocs special-cases `;' */ + print_deferred_heredocs (inside_function_def ? "" : ";"); + + if (inside_function_def) + cprintf ("\n"); + else + { + if (c == ';') + cprintf (" "); + if (command->value.Connection->second) + skip_this_indent++; + } + break; + } default: cprintf (_("print_command: bad connector `%d'"), @@ -440,7 +466,10 @@ indirection_level_string () change_flag ('x', FLAG_ON); if (ps4 == 0 || *ps4 == '\0') - return (indirection_string); + { + FREE (ps4); + return (indirection_string); + } #if defined (HANDLE_MULTIBYTE) ps4_len = strnlen (ps4, MB_CUR_MAX); @@ -956,11 +985,13 @@ void print_simple_command (simple_command) SIMPLE_COM *simple_command; { - command_print_word_list (simple_command->words, " "); + if (simple_command->words) + command_print_word_list (simple_command->words, " "); if (simple_command->redirects) { - cprintf (" "); + if (simple_command->words) + cprintf (" "); print_redirection_list (simple_command->redirects); } } @@ -1050,6 +1081,9 @@ print_redirection_list (redirects) else hdtail = heredocs = newredir; } +#if 0 + /* Remove this heuristic now that the command printing code doesn't + unconditionally put in the redirector file descriptor. */ else if (redirects->instruction == r_duplicating_output_word && (redirects->flags & REDIR_VARASSIGN) == 0 && redirects->redirector.dest == 1) { /* Temporarily translate it as the execution code does. */ @@ -1059,6 +1093,7 @@ print_redirection_list (redirects) print_redirection (redirects); redirects->instruction = r_duplicating_output_word; } +#endif else print_redirection (redirects); @@ -1217,6 +1252,8 @@ print_redirection (redirect) case r_duplicating_input_word: if (redirect->rflags & REDIR_VARASSIGN) cprintf ("{%s}<&%s", redir_word->word, redirectee->word); + else if (redirector == 0) + cprintf ("<&%s", redirectee->word); else cprintf ("%d<&%s", redirector, redirectee->word); break; @@ -1224,6 +1261,8 @@ print_redirection (redirect) case r_duplicating_output_word: if (redirect->rflags & REDIR_VARASSIGN) cprintf ("{%s}>&%s", redir_word->word, redirectee->word); + else if (redirector == 1) + cprintf (">&%s", redirectee->word); else cprintf ("%d>&%s", redirector, redirectee->word); break; @@ -1280,6 +1319,7 @@ reset_locals () indentation = 0; printing_connection = 0; deferred_heredocs = 0; + printing_comsub = 0; } static void @@ -1351,6 +1391,7 @@ named_function_string (name, command, flags) old_amount = indentation_amount; command_string_index = was_heredoc = 0; deferred_heredocs = 0; + printing_comsub = 0; if (name && *name) { diff --git a/quit.h b/quit.h index db8a776b5..0af1d121f 100644 --- a/quit.h +++ b/quit.h @@ -1,6 +1,6 @@ /* quit.h -- How to handle SIGINT gracefully. */ -/* Copyright (C) 1993-2013 Free Software Foundation, Inc. +/* Copyright (C) 1993-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -38,12 +38,6 @@ extern volatile sig_atomic_t terminating_signal; if (interrupt_state) throw_to_top_level (); \ } while (0) -#define CHECK_ALRM \ - do { \ - if (sigalrm_seen) \ - sh_longjmp (alrmbuf, 1); \ - } while (0) - #define SETINTERRUPT interrupt_state = 1 #define CLRINTERRUPT interrupt_state = 0 diff --git a/redir.c b/redir.c index fa92b4d41..8369adccb 100644 --- a/redir.c +++ b/redir.c @@ -1,6 +1,6 @@ /* redir.c -- Functions to perform input and output redirection. */ -/* Copyright (C) 1997-2020 Free Software Foundation, Inc. +/* Copyright (C) 1997-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -88,6 +88,7 @@ extern int errno; #define SHELL_FD_BASE 10 int expanding_redir; +int varassign_redir_autoclose = 0; extern REDIRECT *redirection_undo_list; extern REDIRECT *exec_redirection_undo_list; @@ -459,7 +460,10 @@ here_document_to_fd (redirectee, ri) return fd; } -#if defined (HEREDOC_PIPESIZE) + if (shell_compatibility_level <= 50) + goto use_tempfile; + +#if HEREDOC_PIPESIZE /* Try to use a pipe internal to this process if the document is shorter than the system's pipe capacity (computed at build time). We want to write the entire document without write blocking. */ @@ -467,6 +471,7 @@ here_document_to_fd (redirectee, ri) { if (pipe (herepipe) < 0) { + /* XXX - goto use_tempfile; ? */ r = errno; if (document != redirectee->word) free (document); @@ -808,8 +813,14 @@ do_redirection_internal (redirect, flags, fnp) redirectee_word = redirection_expand (redirectee); /* XXX - what to do with [N]<&$w- where w is unset or null? ksh93 - closes N. */ - if (redirectee_word == 0) + turns it into [N]<&- or [N]>&- and closes N. */ + if ((ri == r_move_input_word || ri == r_move_output_word) && redirectee_word == 0) + { + sd = redirect->redirector; + rd.dest = 0; + new_redirect = make_redirection (sd, r_close_this, rd, 0); + } + else if (redirectee_word == 0) return (AMBIGUOUS_REDIRECT); else if (redirectee_word[0] == '-' && redirectee_word[1] == '\0') { @@ -939,10 +950,15 @@ do_redirection_internal (redirect, flags, fnp) REDIRECTION_ERROR (redirector, r, fd); } - if ((flags & RX_UNDOABLE) && (redirect->rflags & REDIR_VARASSIGN) == 0) + if ((flags & RX_UNDOABLE) && ((redirect->rflags & REDIR_VARASSIGN) == 0 || varassign_redir_autoclose)) { - /* Only setup to undo it if the thing to undo is active. */ - if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) + /* Only setup to undo it if the thing to undo is active. We want + to autoclose if we are doing a varassign redirection and the + varredir_close shell option is set, and we can't test + redirector in this case since we just assigned it above. */ + if (fd != redirector && (redirect->rflags & REDIR_VARASSIGN) && varassign_redir_autoclose) + r = add_undo_close_redirect (redirector); + else if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) r = add_undo_redirect (redirector, ri, -1); else r = add_undo_close_redirect (redirector); @@ -1056,10 +1072,14 @@ do_redirection_internal (redirect, flags, fnp) if (flags & RX_ACTIVE) { - if ((flags & RX_UNDOABLE) && (redirect->rflags & REDIR_VARASSIGN) == 0) + if ((flags & RX_UNDOABLE) && ((redirect->rflags & REDIR_VARASSIGN) == 0 || varassign_redir_autoclose)) { - /* Only setup to undo it if the thing to undo is active. */ - if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) + /* Only setup to undo it if the thing to undo is active. + Close if the right option is set and we are doing a + varassign redirection. */ + if (fd != redirector && (redirect->rflags & REDIR_VARASSIGN) && varassign_redir_autoclose) + r = add_undo_close_redirect (redirector); + else if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) r = add_undo_redirect (redirector, ri, -1); else r = add_undo_close_redirect (redirector); @@ -1117,10 +1137,14 @@ do_redirection_internal (redirect, flags, fnp) if ((flags & RX_ACTIVE) && (redir_fd != redirector)) { - if ((flags & RX_UNDOABLE) && (redirect->rflags & REDIR_VARASSIGN) == 0) + if ((flags & RX_UNDOABLE) && ((redirect->rflags & REDIR_VARASSIGN) == 0 || varassign_redir_autoclose)) { - /* Only setup to undo it if the thing to undo is active. */ - if (fcntl (redirector, F_GETFD, 0) != -1) + /* Only setup to undo it if the thing to undo is active. + Close if the right option is set and we are doing a + varassign redirection. */ + if ((redirect->rflags & REDIR_VARASSIGN) && varassign_redir_autoclose) + r = add_undo_close_redirect (redirector); + else if (fcntl (redirector, F_GETFD, 0) != -1) r = add_undo_redirect (redirector, ri, redir_fd); else r = add_undo_close_redirect (redirector); @@ -1209,7 +1233,6 @@ do_redirection_internal (redirect, flags, fnp) } r = 0; - /* XXX - only if REDIR_VARASSIGN not set? */ if (flags & RX_UNDOABLE) { if (fcntl (redirector, F_GETFD, 0) != -1) @@ -1434,7 +1457,7 @@ redir_varassign (redir, fd) SHELL_VAR *v; w = redir->redirector.filename; - v = bind_var_to_int (w->word, fd); + v = bind_var_to_int (w->word, fd, 0); if (v == 0 || readonly_p (v) || noassign_p (v)) return BADVAR_REDIRECT; @@ -1490,7 +1513,7 @@ redir_varvalue (redir) /* get_variable_value handles references to array variables without subscripts */ if (vr && (array_p (v) || assoc_p (v))) - val = get_array_value (w, 0, (int *)NULL, (arrayind_t *)0); + val = get_array_value (w, 0, (array_eltstate_t *)NULL); else #endif val = get_variable_value (v); diff --git a/redir.h b/redir.h index 64a3d2669..340dc1c02 100644 --- a/redir.h +++ b/redir.h @@ -1,6 +1,6 @@ /* redir.h - functions from redir.c. */ -/* Copyright (C) 1997, 2001, 2005, 2008, 2009-2020 Free Software Foundation, Inc. +/* Copyright (C) 1997, 2001, 2005, 2008, 2009-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -37,4 +37,7 @@ extern int do_redirections PARAMS((REDIRECT *, int)); extern char *redirection_expand PARAMS((WORD_DESC *)); extern int stdin_redirects PARAMS((REDIRECT *)); +/* in builtins/evalstring.c for now, could move later */ +extern int open_redir_file PARAMS((REDIRECT *, char **)); + #endif /* _REDIR_H_ */ diff --git a/shell.c b/shell.c index ce8087f77..ee9d445d2 100644 --- a/shell.c +++ b/shell.c @@ -1,6 +1,6 @@ /* shell.c -- GNU's idea of the POSIX shell specification. */ -/* Copyright (C) 1987-2019 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -72,6 +72,8 @@ extern int get_tty_state PARAMS((void)); #if defined (USING_BASH_MALLOC) && defined (DEBUG) && !defined (DISABLE_MALLOC_WRAPPERS) # include +#elif defined (MALLOC_DEBUG) && defined (USING_BASH_MALLOC) +# include #endif #if defined (HISTORY) @@ -220,8 +222,10 @@ int no_line_editing = 0; /* non-zero -> don't do fancy line editing. */ #else int no_line_editing = 1; /* can't have line editing without readline */ #endif +#if defined (TRANSLATABLE_STRINGS) int dump_translatable_strings; /* Dump strings in $"...", don't execute. */ int dump_po_strings; /* Dump strings in $"..." in po format */ +#endif int wordexp_only = 0; /* Do word expansion only */ int protected_mode = 0; /* No command substitution with --wordexp */ @@ -246,8 +250,10 @@ static const struct { #if defined (DEBUGGER) { "debugger", Int, &debugging_mode, (char **)0x0 }, #endif +#if defined (TRANSLATABLE_STRINGS) { "dump-po-strings", Int, &dump_po_strings, (char **)0x0 }, { "dump-strings", Int, &dump_translatable_strings, (char **)0x0 }, +#endif { "help", Int, &want_initial_help, (char **)0x0 }, { "init-file", Charp, (int *)0x0, &bashrc_file }, { "login", Int, &make_login_shell, (char **)0x0 }, @@ -496,11 +502,13 @@ main (argc, argv, env) set_login_shell ("login_shell", login_shell != 0); +#if defined (TRANSLATABLE_STRINGS) if (dump_po_strings) dump_translatable_strings = 1; if (dump_translatable_strings) read_but_dont_execute = 1; +#endif if (running_setuid && privileged_mode == 0) disable_priv_mode (); @@ -628,7 +636,7 @@ main (argc, argv, env) code = setjmp_sigs (top_level); if (code) { - if (code == EXITPROG || code == ERREXIT) + if (code == EXITPROG || code == ERREXIT || code == EXITBLTIN) exit_shell (last_command_exit_value); else { @@ -694,10 +702,24 @@ main (argc, argv, env) /* The startup files are run with `set -e' temporarily disabled. */ if (locally_skip_execution == 0 && running_setuid == 0) { + char *t; + old_errexit_flag = exit_immediately_on_error; exit_immediately_on_error = 0; + /* Temporarily set $0 while running startup files, then restore it so + we get better error messages when trying to open script files. */ + if (shell_script_filename) + { + t = dollar_vars[0]; + dollar_vars[0] = exec_argv0 ? savestring (exec_argv0) : savestring (shell_script_filename); + } run_startup_files (); + if (shell_script_filename) + { + free (dollar_vars[0]); + dollar_vars[0] = t; + } exit_immediately_on_error += old_errexit_flag; } @@ -939,7 +961,9 @@ parse_shell_options (argv, arg_start, arg_end) break; case 'D': +#if defined (TRANSLATABLE_STRINGS) dump_translatable_strings = 1; +#endif break; default: @@ -1040,6 +1064,7 @@ subshell_exit (s) /* Do trap[0] if defined. Allow it to override the exit status passed to us. */ + last_command_exit_value = s; if (signal_is_trapped (0)) s = run_exit_trap (); @@ -1103,6 +1128,7 @@ run_startup_files () #endif int sourced_login, run_by_ssh; +#if 1 /* TAG:bash-5.3 andrew.gregory.8@gmail.com 2/21/2022 */ /* get the rshd/sshd case out of the way first. */ if (interactive_shell == 0 && no_rc == 0 && login_shell == 0 && act_like_sh == 0 && command_execution_string) @@ -1112,11 +1138,16 @@ run_startup_files () (find_variable ("SSH2_CLIENT") != (SHELL_VAR *)0); #else run_by_ssh = 0; +#endif #endif /* If we were run by sshd or we think we were run by rshd, execute ~/.bashrc if we are a top-level shell. */ +#if 1 /* TAG:bash-5.3 */ if ((run_by_ssh || isnetconn (fileno (stdin))) && shell_level < 2) +#else + if (isnetconn (fileno (stdin) && shell_level < 2) +#endif { #ifdef SYS_BASHRC # if defined (__OPENNT) @@ -1352,6 +1383,7 @@ run_wordexp (words) return last_command_exit_value = 127; case ERREXIT: case EXITPROG: + case EXITBLTIN: return last_command_exit_value; case DISCARD: return last_command_exit_value = 1; @@ -1430,6 +1462,7 @@ run_one_command (command) return last_command_exit_value = 127; case ERREXIT: case EXITPROG: + case EXITBLTIN: return last_command_exit_value; case DISCARD: return last_command_exit_value = 1; diff --git a/shell.h b/shell.h index 8b41792fc..6e44bca69 100644 --- a/shell.h +++ b/shell.h @@ -1,6 +1,6 @@ /* shell.h -- The data structures used by the shell */ -/* Copyright (C) 1993-2020 Free Software Foundation, Inc. +/* Copyright (C) 1993-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -85,6 +85,7 @@ extern int EOF_Reached; #define MATCH_QUOTED 0x020 #define MATCH_ASSIGNRHS 0x040 #define MATCH_STARSUB 0x080 +#define MATCH_EXPREP 0x100 /* for pattern substitution, expand replacement */ /* Some needed external declarations. */ extern char **shell_environment; @@ -165,18 +166,20 @@ extern struct user_info current_user; /* Structure in which to save partial parsing state when doing things like PROMPT_COMMAND and bash_execute_unix_command execution. */ -typedef struct _sh_parser_state_t { - +typedef struct _sh_parser_state_t +{ /* parsing state */ int parser_state; int *token_state; char *token; - int token_buffer_size; + size_t token_buffer_size; + int eof_token; /* input line state -- line number saved elsewhere */ int input_line_terminator; int eof_encountered; + int eol_lookahead; #if defined (HANDLE_MULTIBYTE) /* Nothing right now for multibyte state, but might want something later. */ @@ -204,11 +207,16 @@ typedef struct _sh_parser_state_t { int need_here_doc; int here_doc_first_line; + int esacs_needed; + int expecting_in; + /* structures affecting the parser */ + void *pushed_strings; REDIRECT *redir_stack[HEREDOC_MAX]; } sh_parser_state_t; -typedef struct _sh_input_line_state_t { +typedef struct _sh_input_line_state_t +{ char *input_line; size_t input_line_index; size_t input_line_size; @@ -220,6 +228,9 @@ typedef struct _sh_input_line_state_t { } sh_input_line_state_t; /* Let's try declaring these here. */ +extern void shell_ungets PARAMS((char *)); +extern void rewind_input_string PARAMS((void)); + extern char *parser_remaining_input PARAMS((void)); extern sh_parser_state_t *save_parser_state PARAMS((sh_parser_state_t *)); diff --git a/sig.c b/sig.c index e6537d267..840d57754 100644 --- a/sig.c +++ b/sig.c @@ -1,6 +1,6 @@ /* sig.c - interface for shell signal handlers and signal initialization. */ -/* Copyright (C) 1994-2020 Free Software Foundation, Inc. +/* Copyright (C) 1994-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. diff --git a/sig.h b/sig.h index a564e3cd9..0217be53d 100644 --- a/sig.h +++ b/sig.h @@ -1,6 +1,6 @@ /* sig.h -- header file for signal handler definitions. */ -/* Copyright (C) 1994-2013 Free Software Foundation, Inc. +/* Copyright (C) 1994-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -31,14 +31,10 @@ # define SIGABRT SIGIOT #endif -#define sighandler RETSIGTYPE -typedef RETSIGTYPE SigHandler PARAMS((int)); +#define sighandler void +typedef void SigHandler PARAMS((int)); -#if defined (VOID_SIGHANDLER) -# define SIGRETURN(n) return -#else -# define SIGRETURN(n) return(n) -#endif /* !VOID_SIGHANDLER */ +#define SIGRETURN(n) return /* Here is a definition for set_signal_handler () which simply expands to a call to signal () for non-Posix systems. The code for set_signal_handler diff --git a/siglist.c b/siglist.c index d8361dd79..ec706c90b 100644 --- a/siglist.c +++ b/siglist.c @@ -1,6 +1,6 @@ /* siglist.c -- signal list for those machines that don't have one. */ -/* Copyright (C) 1989-2009 Free Software Foundation, Inc. +/* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -23,6 +23,7 @@ #if !defined (HAVE_SYS_SIGLIST) && !defined (HAVE_UNDER_SYS_SIGLIST) && !defined (HAVE_STRSIGNAL) #include +#include "command.h" #include "general.h" #include diff --git a/stringlib.c b/stringlib.c index 745e5363a..73304966f 100644 --- a/stringlib.c +++ b/stringlib.c @@ -146,7 +146,8 @@ strsub (string, pat, rep, global) char *string, *pat, *rep; int global; { - int patlen, replen, templen, tempsize, repl, i; + size_t patlen, replen, templen, tempsize, i; + int repl; char *temp, *r; patlen = strlen (pat); @@ -178,17 +179,22 @@ strsub (string, pat, rep, global) } /* Replace all instances of C in STRING with TEXT. TEXT may be empty or - NULL. If DO_GLOB is non-zero, we quote the replacement text for - globbing. Backslash may be used to quote C. */ + NULL. If (FLAGS & 1) is non-zero, we quote the replacement text for + globbing. Backslash may be used to quote C. If (FLAGS & 2) we allow + backslash to escape backslash as well. */ char * -strcreplace (string, c, text, do_glob) +strcreplace (string, c, text, flags) char *string; int c; const char *text; - int do_glob; + int flags; { char *ret, *p, *r, *t; - int len, rlen, ind, tlen; + size_t len, rlen, ind, tlen; + int do_glob, escape_backslash; + + do_glob = flags & 1; + escape_backslash = flags & 2; len = STRLEN (text); rlen = len + strlen (string) + 2; @@ -225,6 +231,8 @@ strcreplace (string, c, text, do_glob) if (*p == '\\' && p[1] == c) p++; + else if (escape_backslash && *p == '\\' && p[1] == '\\') + p++; ind = r - ret; RESIZE_MALLOCED_BUFFER (ret, ind, 2, rlen, rlen); diff --git a/subst.c b/subst.c index 2b76256c6..d9feabca9 100644 --- a/subst.c +++ b/subst.c @@ -4,7 +4,7 @@ /* ``Have a little faith, there's magic in the night. You ain't a beauty, but, hey, you're alright.'' */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -45,6 +45,7 @@ #include "shell.h" #include "parser.h" +#include "redir.h" #include "flags.h" #include "jobs.h" #include "execute_cmd.h" @@ -186,9 +187,15 @@ int allow_null_glob_expansion; /* Non-zero means to throw an error when globbing fails to match anything. */ int fail_glob_expansion; +/* If non-zero, perform `&' substitution on the replacement string in the + pattern substitution word expansion. */ +int patsub_replacement = 1; + /* Extern functions and variables from different files. */ extern struct fd_bitmap *current_fds_to_close; extern int wordexp_only; +extern int singlequote_translations; +extern int extended_quote; #if defined (JOB_CONTROL) && defined (PROCESS_SUBSTITUTION) extern PROCESS *last_procsub_child; @@ -257,10 +264,11 @@ static int do_assignment_internal PARAMS((const WORD_DESC *, int)); static char *string_extract_verbatim PARAMS((char *, size_t, int *, char *, int)); static char *string_extract PARAMS((char *, int *, char *, int)); static char *string_extract_double_quoted PARAMS((char *, int *, int)); -static inline char *string_extract_single_quoted PARAMS((char *, int *)); +static inline char *string_extract_single_quoted PARAMS((char *, int *, int)); static inline int skip_single_quoted PARAMS((const char *, size_t, int, int)); static int skip_double_quoted PARAMS((char *, size_t, int, int)); static char *extract_delimited_string PARAMS((char *, int *, char *, char *, char *, int)); +static char *extract_heredoc_dolbrace_string PARAMS((char *, int *, int, int)); static char *extract_dollar_brace_string PARAMS((char *, int *, int, int)); static int skip_matched_pair PARAMS((const char *, int, int, int, int)); @@ -287,7 +295,7 @@ static char *parameter_list_remove_pattern PARAMS((int, char *, int, int)); #ifdef ARRAY_VARS static char *array_remove_pattern PARAMS((SHELL_VAR *, char *, int, int, int)); #endif -static char *parameter_brace_remove_pattern PARAMS((char *, char *, int, char *, int, int, int)); +static char *parameter_brace_remove_pattern PARAMS((char *, char *, array_eltstate_t *, char *, int, int, int)); static char *string_var_assignment PARAMS((SHELL_VAR *, char *)); #if defined (ARRAY_VARS) @@ -300,11 +308,12 @@ static char *parameter_list_transform PARAMS((int, int, int)); #if defined ARRAY_VARS static char *array_transform PARAMS((int, SHELL_VAR *, int, int)); #endif -static char *parameter_brace_transform PARAMS((char *, char *, int, char *, int, int, int, int)); +static char *parameter_brace_transform PARAMS((char *, char *, array_eltstate_t *, char *, int, int, int, int)); static int valid_parameter_transform PARAMS((char *)); static char *process_substitute PARAMS((char *, int)); +static char *optimize_cat_file PARAMS((REDIRECT *, int, int, int *)); static char *read_comsub PARAMS((int, int, int, int *)); #ifdef ARRAY_VARS @@ -315,7 +324,7 @@ static int valid_brace_expansion_word PARAMS((char *, int)); static int chk_atstar PARAMS((char *, int, int, int *, int *)); static int chk_arithsub PARAMS((const char *, int)); -static WORD_DESC *parameter_brace_expand_word PARAMS((char *, int, int, int, arrayind_t *)); +static WORD_DESC *parameter_brace_expand_word PARAMS((char *, int, int, int, array_eltstate_t *)); static char *parameter_brace_find_indir PARAMS((char *, int, int, int)); static WORD_DESC *parameter_brace_expand_indir PARAMS((char *, int, int, int, int *, int *)); static WORD_DESC *parameter_brace_expand_rhs PARAMS((char *, char *, int, int, int, int *, int *)); @@ -326,18 +335,19 @@ static intmax_t parameter_brace_expand_length PARAMS((char *)); static char *skiparith PARAMS((char *, int)); static int verify_substring_values PARAMS((SHELL_VAR *, char *, char *, int, intmax_t *, intmax_t *)); -static int get_var_and_type PARAMS((char *, char *, arrayind_t, int, int, SHELL_VAR **, char **)); +static int get_var_and_type PARAMS((char *, char *, array_eltstate_t *, int, int, SHELL_VAR **, char **)); static char *mb_substring PARAMS((char *, int, int)); -static char *parameter_brace_substring PARAMS((char *, char *, int, char *, int, int, int)); +static char *parameter_brace_substring PARAMS((char *, char *, array_eltstate_t *, char *, int, int, int)); static int shouldexp_replacement PARAMS((char *)); static char *pos_params_pat_subst PARAMS((char *, char *, char *, int)); -static char *parameter_brace_patsub PARAMS((char *, char *, int, char *, int, int, int)); +static char *expand_string_for_patsub PARAMS((char *, int)); +static char *parameter_brace_patsub PARAMS((char *, char *, array_eltstate_t *, char *, int, int, int)); static char *pos_params_casemod PARAMS((char *, char *, int, int)); -static char *parameter_brace_casemod PARAMS((char *, char *, int, int, char *, int, int, int)); +static char *parameter_brace_casemod PARAMS((char *, char *, array_eltstate_t *, int, char *, int, int, int)); static WORD_DESC *parameter_brace_expand PARAMS((char *, int *, int, int, int *, int *)); static WORD_DESC *param_expand PARAMS((char *, int *, int, int *, int *, int *, int *, int)); @@ -361,6 +371,8 @@ static WORD_LIST *expand_declaration_argument PARAMS((WORD_LIST *, WORD_LIST *)) static WORD_LIST *shell_expand_word_list PARAMS((WORD_LIST *, int)); static WORD_LIST *expand_word_list_internal PARAMS((WORD_LIST *, int)); +static int do_assignment_statements PARAMS((WORD_LIST *, char *, int)); + /* **************************************************************** */ /* */ /* Utility Functions */ @@ -436,11 +448,6 @@ dump_word_flags (flags) f &= ~W_EXPANDRHS; fprintf (stderr, "W_EXPANDRHS%s", f ? "|" : ""); } - if (f & W_ITILDE) - { - f &= ~W_ITILDE; - fprintf (stderr, "W_ITILDE%s", f ? "|" : ""); - } if (f & W_NOTILDE) { f &= ~W_NOTILDE; @@ -461,10 +468,10 @@ dump_word_flags (flags) f &= ~W_NOCOMSUB; fprintf (stderr, "W_NOCOMSUB%s", f ? "|" : ""); } - if (f & W_DOLLARSTAR) + if (f & W_ARRAYREF) { - f &= ~W_DOLLARSTAR; - fprintf (stderr, "W_DOLLARSTAR%s", f ? "|" : ""); + f &= ~W_ARRAYREF; + fprintf (stderr, "W_ARRAYREF%s", f ? "|" : ""); } if (f & W_DOLLARAT) { @@ -733,16 +740,15 @@ unquoted_substring (substr, string) INLINE char * sub_append_string (source, target, indx, size) char *source, *target; - int *indx; + size_t *indx; size_t *size; { if (source) { - int n; - size_t srclen; + size_t n, srclen; srclen = STRLEN (source); - if (srclen >= (int)(*size - *indx)) + if (srclen >= (*size - *indx)) { n = srclen + *indx; n = (n + DEFAULT_ARRAY_SIZE) - (n % DEFAULT_ARRAY_SIZE); @@ -766,7 +772,7 @@ char * sub_append_number (number, target, indx, size) intmax_t number; char *target; - int *indx; + size_t *indx; size_t *size; { char *temp; @@ -1086,22 +1092,38 @@ skip_double_quoted (string, slen, sind, flags) /* Extract the contents of STRING as if it is enclosed in single quotes. SINDEX, when passed in, is the offset of the character immediately following the opening single quote; on exit, SINDEX is left pointing after - the closing single quote. */ + the closing single quote. ALLOWESC allows the single quote to be quoted by + a backslash; it's not used yet. */ static inline char * -string_extract_single_quoted (string, sindex) +string_extract_single_quoted (string, sindex, allowesc) char *string; int *sindex; + int allowesc; { register int i; size_t slen; char *t; + int pass_next; DECLARE_MBSTATE; /* Don't need slen for ADVANCE_CHAR unless multibyte chars possible. */ slen = (MB_CUR_MAX > 1) ? strlen (string + *sindex) + *sindex : 0; i = *sindex; - while (string[i] && string[i] != '\'') - ADVANCE_CHAR (string, slen, i); + pass_next = 0; + while (string[i]) + { + if (pass_next) + { + pass_next = 0; + ADVANCE_CHAR (string, slen, i); + continue; + } + if (allowesc && string[i] == '\\') + pass_next++; + else if (string[i] == '\'') + break; + ADVANCE_CHAR (string, slen, i); + } t = substring (string, *sindex, i); @@ -1158,7 +1180,7 @@ string_extract_verbatim (string, slen, sindex, charlist, flags) if ((flags & SX_NOCTLESC) && charlist[0] == '\'' && charlist[1] == '\0') { - temp = string_extract_single_quoted (string, sindex); + temp = string_extract_single_quoted (string, sindex, 0); --*sindex; /* leave *sindex at separator character */ return temp; } @@ -1497,6 +1519,285 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) return (result); } +/* A simplified version of extract_dollar_brace_string that exists to handle + $'...' and $"..." quoting in here-documents, since the here-document read + path doesn't. It's separate because we don't want to mess with the fast + common path. We already know we're going to allocate and return a new + string and quoted == Q_HERE_DOCUMENT. We might be able to cut it down + some more, but extracting strings and adding them as we go adds complexity. + This needs to match the logic in parse.y:parse_matched_pair so we get + consistent behavior between here-documents and double-quoted strings. */ +static char * +extract_heredoc_dolbrace_string (string, sindex, quoted, flags) + char *string; + int *sindex, quoted, flags; +{ + register int i, c; + size_t slen, tlen, result_index, result_size; + int pass_character, nesting_level, si, dolbrace_state; + char *result, *t, *send; + DECLARE_MBSTATE; + + pass_character = 0; + nesting_level = 1; + slen = strlen (string + *sindex) + *sindex; + send = string + slen; + + result_size = slen; + result_index = 0; + result = xmalloc (result_size + 1); + + /* This function isn't called if this condition is not true initially. */ + dolbrace_state = DOLBRACE_QUOTE; + + i = *sindex; + while (c = string[i]) + { + if (pass_character) + { + pass_character = 0; + RESIZE_MALLOCED_BUFFER (result, result_index, locale_mb_cur_max + 1, result_size, 64); + COPY_CHAR_I (result, result_index, string, send, i); + continue; + } + + /* CTLESCs and backslashes quote the next character. */ + if (c == CTLESC || c == '\\') + { + pass_character++; + RESIZE_MALLOCED_BUFFER (result, result_index, 2, result_size, 64); + result[result_index++] = c; + i++; + continue; + } + + /* The entire reason we have this separate function right here. */ + if (c == '$' && string[i+1] == '\'') + { + char *ttrans; + int ttranslen; + + if ((posixly_correct || extended_quote == 0) && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2) + { + RESIZE_MALLOCED_BUFFER (result, result_index, 3, result_size, 64); + result[result_index++] = '$'; + result[result_index++] = '\''; + i += 2; + continue; + } + + si = i + 2; + t = string_extract_single_quoted (string, &si, 1); /* XXX */ + CHECK_STRING_OVERRUN (i, si, slen, c); + + tlen = si - i - 2; /* -2 since si is one after the close quote */ + ttrans = ansiexpand (t, 0, tlen, &ttranslen); + free (t); + + /* needed to correctly quote any embedded single quotes. */ + if (dolbrace_state == DOLBRACE_QUOTE || dolbrace_state == DOLBRACE_QUOTE2) + { + t = sh_single_quote (ttrans); + tlen = strlen (t); + free (ttrans); + } + else if (extended_quote) /* dolbrace_state == DOLBRACE_PARAM */ + { + /* This matches what parse.y:parse_matched_pair() does */ + t = ttrans; + tlen = strlen (t); + } + + RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 1, result_size, 64); + strncpy (result + result_index, t, tlen); + result_index += tlen; + free (t); + i = si; + continue; + } + +#if defined (TRANSLATABLE_STRINGS) + if (c == '$' && string[i+1] == '"') + { + char *ttrans; + int ttranslen; + + si = i + 2; + t = string_extract_double_quoted (string, &si, flags); /* XXX */ + CHECK_STRING_OVERRUN (i, si, slen, c); + + tlen = si - i - 2; /* -2 since si is one after the close quote */ + ttrans = locale_expand (t, 0, tlen, line_number, &ttranslen); + free (t); + + t = singlequote_translations ? sh_single_quote (ttrans) : sh_mkdoublequoted (ttrans, ttranslen, 0); + tlen = strlen (t); + free (ttrans); + + RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 1, result_size, 64); + strncpy (result + result_index, t, tlen); + result_index += tlen; + free (t); + i = si; + continue; + } +#endif /* TRANSLATABLE_STRINGS */ + + if (c == '$' && string[i+1] == LBRACE) + { + nesting_level++; + RESIZE_MALLOCED_BUFFER (result, result_index, 3, result_size, 64); + result[result_index++] = c; + result[result_index++] = string[i+1]; + i += 2; + if (dolbrace_state == DOLBRACE_QUOTE || dolbrace_state == DOLBRACE_QUOTE2 || dolbrace_state == DOLBRACE_WORD) + dolbrace_state = DOLBRACE_PARAM; + continue; + } + + if (c == RBRACE) + { + nesting_level--; + if (nesting_level == 0) + break; + RESIZE_MALLOCED_BUFFER (result, result_index, 2, result_size, 64); + result[result_index++] = c; + i++; + continue; + } + + /* Pass the contents of old-style command substitutions through + verbatim. */ + if (c == '`') + { + si = i + 1; + t = string_extract (string, &si, "`", flags); /* already know (flags & SX_NOALLOC) == 0) */ + CHECK_STRING_OVERRUN (i, si, slen, c); + + tlen = si - i - 1; + RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 3, result_size, 64); + result[result_index++] = c; + strncpy (result + result_index, t, tlen); + result_index += tlen; + result[result_index++] = string[si]; + free (t); + i = si + 1; + continue; + } + + /* Pass the contents of new-style command substitutions and + arithmetic substitutions through verbatim. */ + if (string[i] == '$' && string[i+1] == LPAREN) + { + si = i + 2; + t = extract_command_subst (string, &si, flags); + CHECK_STRING_OVERRUN (i, si, slen, c); + + tlen = si - i - 1; + RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64); + result[result_index++] = c; + result[result_index++] = LPAREN; + strncpy (result + result_index, t, tlen); + result_index += tlen; + result[result_index++] = string[si]; + free (t); + i = si + 1; + continue; + } + +#if defined (PROCESS_SUBSTITUTION) + /* Technically this should only work at the start of a word */ + if ((string[i] == '<' || string[i] == '>') && string[i+1] == LPAREN) + { + si = i + 2; + t = extract_process_subst (string, (string[i] == '<' ? "<(" : ">)"), &si, flags); + CHECK_STRING_OVERRUN (i, si, slen, c); + + tlen = si - i - 1; + RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64); + result[result_index++] = c; + result[result_index++] = LPAREN; + strncpy (result + result_index, t, tlen); + result_index += tlen; + result[result_index++] = string[si]; + free (t); + i = si + 1; + continue; + } +#endif + + if (c == '\'' && posixly_correct && shell_compatibility_level > 42 && dolbrace_state != DOLBRACE_QUOTE) + { + COPY_CHAR_I (result, result_index, string, send, i); + continue; + } + + /* Pass the contents of single and double-quoted strings through verbatim. */ + if (c == '"' || c == '\'') + { + si = i + 1; + if (c == '"') + t = string_extract_double_quoted (string, &si, flags); + else + t = string_extract_single_quoted (string, &si, 0); + CHECK_STRING_OVERRUN (i, si, slen, c); + + tlen = si - i - 2; /* -2 since si is one after the close quote */ + RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 3, result_size, 64); + result[result_index++] = c; + strncpy (result + result_index, t, tlen); + result_index += tlen; + result[result_index++] = string[si - 1]; + free (t); + i = si; + continue; + } + + /* copy this character, which was not special. */ + COPY_CHAR_I (result, result_index, string, send, i); + + /* This logic must agree with parse.y:parse_matched_pair, since they + share the same defines. */ + if (dolbrace_state == DOLBRACE_PARAM && c == '%' && (i - *sindex) > 1) + dolbrace_state = DOLBRACE_QUOTE; + else if (dolbrace_state == DOLBRACE_PARAM && c == '#' && (i - *sindex) > 1) + dolbrace_state = DOLBRACE_QUOTE; + else if (dolbrace_state == DOLBRACE_PARAM && c == '/' && (i - *sindex) > 1) + dolbrace_state = DOLBRACE_QUOTE2; /* XXX */ + else if (dolbrace_state == DOLBRACE_PARAM && c == '^' && (i - *sindex) > 1) + dolbrace_state = DOLBRACE_QUOTE; + else if (dolbrace_state == DOLBRACE_PARAM && c == ',' && (i - *sindex) > 1) + dolbrace_state = DOLBRACE_QUOTE; + /* This is intended to handle all of the [:]op expansions and the substring/ + length/pattern removal/pattern substitution expansions. */ + else if (dolbrace_state == DOLBRACE_PARAM && strchr ("#%^,~:-=?+/", c) != 0) + dolbrace_state = DOLBRACE_OP; + else if (dolbrace_state == DOLBRACE_OP && strchr ("#%^,~:-=?+/", c) == 0) + dolbrace_state = DOLBRACE_WORD; + } + + if (c == 0 && nesting_level) + { + free (result); + if (no_longjmp_on_fatal_error == 0) + { /* { */ + last_command_exit_value = EXECUTION_FAILURE; + report_error (_("bad substitution: no closing `%s' in %s"), "}", string); + exp_jump_to_top_level (DISCARD); + } + else + { + *sindex = i; + return ((char *)NULL); + } + } + + *sindex = i; + result[result_index] = '\0'; + + return (result); +} + /* Extract a parameter expansion expression within ${ and } from STRING. Obey the Posix.2 rules for finding the ending `}': count braces while skipping over enclosed quoted strings and command substitutions. @@ -1516,10 +1817,6 @@ extract_dollar_brace_string (string, sindex, quoted, flags) char *result, *t; DECLARE_MBSTATE; - pass_character = 0; - nesting_level = 1; - slen = strlen (string + *sindex) + *sindex; - /* The handling of dolbrace_state needs to agree with the code in parse.y: parse_matched_pair(). The different initial value is to handle the case where this function is called to parse the word in @@ -1528,6 +1825,13 @@ extract_dollar_brace_string (string, sindex, quoted, flags) if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && (flags & SX_POSIXEXP)) dolbrace_state = DOLBRACE_QUOTE; + if (quoted == Q_HERE_DOCUMENT && dolbrace_state == DOLBRACE_QUOTE && (flags & SX_NOALLOC) == 0) + return (extract_heredoc_dolbrace_string (string, sindex, quoted, flags)); + + pass_character = 0; + nesting_level = 1; + slen = strlen (string + *sindex) + *sindex; + i = *sindex; while (c = string[i]) { @@ -1550,6 +1854,8 @@ extract_dollar_brace_string (string, sindex, quoted, flags) { nesting_level++; i += 2; + if (dolbrace_state == DOLBRACE_QUOTE || dolbrace_state == DOLBRACE_WORD) + dolbrace_state = DOLBRACE_PARAM; continue; } @@ -1737,12 +2043,14 @@ unquote_bang (string) #define CQ_RETURN(x) do { no_longjmp_on_fatal_error = oldjmp; return (x); } while (0) -/* This function assumes s[i] == open; returns with s[ret] == close; used to - parse array subscripts. FLAGS & 1 means to not attempt to skip over - matched pairs of quotes or backquotes, or skip word expansions; it is - intended to be used after expansion has been performed and during final - assignment parsing (see arrayfunc.c:assign_compound_array_list()) or - during execution by a builtin which has already undergone word expansion. */ +/* When FLAGS & 2 == 0, this function assumes STRING[I] == OPEN; when + FLAGS & 2 != 0, it assumes STRING[I] points to one character past OPEN; + returns with STRING[RET] == close; used to parse array subscripts. + FLAGS & 1 means not to attempt to skip over matched pairs of quotes or + backquotes, or skip word expansions; it is intended to be used after + expansion has been performed and during final assignment parsing (see + arrayfunc.c:assign_compound_array_list()) or during execution by a builtin + which has already undergone word expansion. */ static int skip_matched_pair (string, start, open, close, flags) const char *string; @@ -1757,7 +2065,10 @@ skip_matched_pair (string, start, open, close, flags) oldjmp = no_longjmp_on_fatal_error; no_longjmp_on_fatal_error = 1; - i = start + 1; /* skip over leading bracket */ + /* Move to the first character after a leading OPEN. If FLAGS&2, we assume + that START already points to that character. If not, we need to skip over + it here. */ + i = (flags & 2) ? start : start + 1; count = 1; pass_next = backq = 0; ss = (char *)string; @@ -1810,7 +2121,7 @@ skip_matched_pair (string, start, open, close, flags) : skip_double_quoted (ss, slen, ++i, 0); /* no increment, the skip functions increment past the closing quote. */ } - else if ((flags&1) == 0 && c == '$' && (string[i+1] == LPAREN || string[i+1] == LBRACE)) + else if ((flags & 1) == 0 && c == '$' && (string[i+1] == LPAREN || string[i+1] == LBRACE)) { si = i + 2; if (string[si] == '\0') @@ -1838,9 +2149,11 @@ skip_matched_pair (string, start, open, close, flags) } #if defined (ARRAY_VARS) -/* Flags has 1 as a reserved value, since skip_matched_pair uses it for +/* FLAGS has 1 as a reserved value, since skip_matched_pair uses it for skipping over quoted strings and taking the first instance of the - closing character. */ + closing character. FLAGS & 2 means that STRING[START] points one + character past the open bracket; FLAGS & 2 == 0 means that STRING[START] + points to the open bracket. skip_matched_pair knows how to deal with this. */ int skipsubscript (string, start, flags) const char *string; @@ -1964,7 +2277,7 @@ skip_to_delim (string, start, delims, flags) CQ_RETURN(si); if (string[i+1] == LPAREN) - temp = extract_delimited_string (string, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND); /* ) */ + temp = extract_delimited_string (string, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND|completeflag); /* ) */ else temp = extract_dollar_brace_string (string, &si, 0, SX_NOALLOC); CHECK_STRING_OVERRUN (i, si, slen, c); @@ -2176,6 +2489,21 @@ char_is_quoted (string, eindex) oldjmp = no_longjmp_on_fatal_error; no_longjmp_on_fatal_error = 1; i = pass_next = 0; + + /* If we have an open quoted string from a previous line, see if it's + closed before string[eindex], so we don't interpret that close quote + as starting a new quoted string. */ + if (current_command_line_count > 0 && dstack.delimiter_depth > 0) + { + c = dstack.delimiters[dstack.delimiter_depth - 1]; + if (c == '\'') + i = skip_single_quoted (string, slen, 0, 0); + else if (c == '"') + i = skip_double_quoted (string, slen, 0, SX_COMPLETE); + if (i > eindex) + CQ_RETURN (1); + } + while (i <= eindex) { c = string[i]; @@ -2275,7 +2603,7 @@ WORD_LIST * split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp) char *string; int slen; - char *delims; + const char *delims; int sentinel, flags; int *nwp, *cwp; { @@ -2292,7 +2620,7 @@ split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp) return ((WORD_LIST *)NULL); } - d = (delims == 0) ? ifs_value : delims; + d = (delims == 0) ? ifs_value : (char *)delims; ifs_split = delims == 0; /* Make d2 the non-whitespace characters in delims */ @@ -3281,7 +3609,8 @@ do_assignment_internal (word, expand) report_error (_("%s: cannot assign list to array member"), name); ASSIGN_RETURN (0); } - entry = assign_array_element (name, value, aflags); + aflags |= ASS_ALLOWALLSUB; /* allow a[@]=value for existing associative arrays */ + entry = assign_array_element (name, value, aflags, (array_eltstate_t *)0); if (entry == 0) ASSIGN_RETURN (0); } @@ -3576,6 +3905,104 @@ expand_assignment_string_to_string (string, quoted) return (expand_string_to_string_internal (string, quoted, expand_string_assignment)); } +/* Kind of like a combination of dequote_string and quote_string_for_globbing; + try to remove CTLESC quoting characters and convert CTLESC escaping a `&' + or a backslash into a backslash. The output of this function must eventually + be processed by strcreplace(). */ +static char * +quote_string_for_repl (string, flags) + char *string; + int flags; +{ + size_t slen; + char *result, *t; + const char *s, *send; + DECLARE_MBSTATE; + + slen = strlen (string); + send = string + slen; + + result = (char *)xmalloc (slen * 2 + 1); + + if (string[0] == CTLESC && string[1] == 0) + { + result[0] = CTLESC; + result[1] = '\0'; + return (result); + } + + /* This is awkward. We want to translate CTLESC-\ to \\ if we will + eventually send this string through strcreplace(), which we will do + only if shouldexp_replacement() determines that there is something + to replace. We can either make sure to escape backslashes here and + have shouldexp_replacement() signal that we should send the string to + strcreplace() if it sees an escaped backslash, or we can scan the + string before copying it and turn CTLESC-\ into \\ only if we encounter + a CTLESC-& or a &. This does the former and changes shouldexp_replacement(). + If we double the backslashes here, we'll get doubled backslashes in any + result that doesn't get passed to strcreplace(). */ + + for (s = string, t = result; *s; ) + { + /* This function's result has to be processed by strcreplace() */ + if (*s == CTLESC && (s[1] == '&' || s[1] == '\\')) + { + *t++ = '\\'; + s++; + *t++ = *s++; + continue; + } + /* Dequote it */ + if (*s == CTLESC) + { + s++; + if (*s == '\0') + break; + } + COPY_CHAR_P (t, s, send); + } + + *t = '\0'; + return (result); +} + +/* This does not perform word splitting on the WORD_LIST it returns and + it treats $* as if it were quoted. It dequotes the WORD_LIST, adds + backslash escapes before CTLESC-quoted backslash and `& if + patsub_replacement is enabled. */ +static char * +expand_string_for_patsub (string, quoted) + char *string; + int quoted; +{ + WORD_LIST *value; + char *ret, *t; + + if (string == 0 || *string == '\0') + return (char *)NULL; + + value = expand_string_for_pat (string, quoted, (int *)0, (int *)0); + + if (value && value->word) + { + remove_quoted_nulls (value->word->word); /* XXX */ + value->word->flags &= ~W_HASQUOTEDNULL; + } + + if (value) + { + t = (value->next) ? string_list (value) : value->word->word; + ret = quote_string_for_repl (t, quoted); + if (t != value->word->word) + free (t); + dispose_words (value); + } + else + ret = (char *)NULL; + + return (ret); +} + char * expand_arith_string (string, quoted) char *string; @@ -3596,7 +4023,7 @@ expand_arith_string (string, quoted) if (EXP_CHAR (string[i])) break; else if (string[i] == '\'' || string[i] == '\\' || string[i] == '"') - saw_quote = 1; + saw_quote = string[i]; ADVANCE_CHAR (string, slen, i); } @@ -3668,7 +4095,9 @@ remove_backslashes (string) to the != or == operator, and should be treated as a pattern. In this case, we quote the string specially for the globbing code. If SPECIAL is 2, this is an rhs argument for the =~ operator, and should - be quoted appropriately for regcomp/regexec. The caller is responsible + be quoted appropriately for regcomp/regexec. If SPECIAL is 3, this is + an array subscript and should be quoted after expansion so it's only + expanded once (Q_ARITH). The caller is responsible for removing the backslashes if the unquoted word is needed later. In any case, since we don't perform word splitting, we need to do quoted null character removal. */ @@ -3686,7 +4115,8 @@ cond_expand_word (w, special) expand_no_split_dollar_star = 1; w->flags |= W_NOSPLIT2; - l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0); + qflags = (special == 3) ? Q_ARITH : 0; + l = call_expand_word_internal (w, qflags, 0, (int *)0, (int *)0); expand_no_split_dollar_star = 0; if (l) { @@ -3697,6 +4127,13 @@ cond_expand_word (w, special) dequote_list (l); r = string_list (l); } + else if (special == 3) /* arithmetic expression, Q_ARITH */ + { + if (l->word) + word_list_remove_quoted_nulls (l); /* for now */ + dequote_list (l); + r = string_list (l); + } else { /* Need to figure out whether or not we should call dequote_escapes @@ -3712,12 +4149,156 @@ cond_expand_word (w, special) } dispose_words (l); } - else - r = (char *)NULL; + else + r = (char *)NULL; + + return r; +} +#endif + +/* Expand $'...' and $"..." in a string for code paths that don't do it. The + FLAGS argument is 1 if this function should treat CTLESC as a quote + character (e.g., for here-documents) or not (e.g., for shell_expand_line). */ +char * +expand_string_dollar_quote (string, flags) + char *string; + int flags; +{ + size_t slen, retind, retsize; + int sindex, c, translen, peekc, news; + char *ret, *trans, *send, *t; + DECLARE_MBSTATE; + + slen = strlen (string); + send = string + slen; + sindex = 0; + + retsize = slen + 1; + ret = xmalloc (retsize); + retind = 0; + + while (c = string[sindex]) + { + switch (c) + { + default: + RESIZE_MALLOCED_BUFFER (ret, retind, locale_mb_cur_max + 1, retsize, 64); + COPY_CHAR_I (ret, retind, string, send, sindex); + break; + + case '\\': + RESIZE_MALLOCED_BUFFER (ret, retind, locale_mb_cur_max + 2, retsize, 64); + ret[retind++] = string[sindex++]; + + if (string[sindex]) + COPY_CHAR_I (ret, retind, string, send, sindex); + break; + + case '\'': + case '"': + if (c == '\'') + news = skip_single_quoted (string, slen, ++sindex, SX_COMPLETE); + else + news = skip_double_quoted (string, slen, ++sindex, SX_COMPLETE); + translen = news - sindex - 1; + RESIZE_MALLOCED_BUFFER (ret, retind, translen + 3, retsize, 64); + ret[retind++] = c; + if (translen > 0) + { + strncpy (ret + retind, string + sindex, translen); + retind += translen; + } + if (news > sindex && string[news - 1] == c) + ret[retind++] = c; + sindex = news; + break; + + case CTLESC: + RESIZE_MALLOCED_BUFFER (ret, retind, locale_mb_cur_max + 2, retsize, 64); + if (flags) + ret[retind++] = string[sindex++]; + if (string[sindex]) + COPY_CHAR_I (ret, retind, string, send, sindex); + break; + + case '$': + peekc = string[++sindex]; +#if defined (TRANSLATABLE_STRINGS) + if (peekc != '\'' && peekc != '"') +#else + if (peekc != '\'') +#endif + { + RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 16); + ret[retind++] = c; + break; + } + if (string[sindex + 1] == '\0') /* don't bother */ + { + RESIZE_MALLOCED_BUFFER (ret, retind, 3, retsize, 16); + ret[retind++] = c; + ret[retind++] = peekc; + sindex++; + break; + } + if (peekc == '\'') + { + /* SX_COMPLETE is the equivalent of ALLOWESC here */ + /* We overload SX_COMPLETE below */ + news = skip_single_quoted (string, slen, ++sindex, SX_COMPLETE); + /* Check for unclosed string and don't bother if so */ + if (news > sindex && string[news] == '\0' && string[news-1] != peekc) + { + RESIZE_MALLOCED_BUFFER (ret, retind, 3, retsize, 16); + ret[retind++] = c; + ret[retind++] = peekc; + continue; + } + t = substring (string, sindex, news - 1); + trans = ansiexpand (t, 0, news-sindex-1, &translen); + free (t); + t = sh_single_quote (trans); + sindex = news; + } +#if defined (TRANSLATABLE_STRINGS) + else + { + news = ++sindex; + t = string_extract_double_quoted (string, &news, SX_COMPLETE); + /* Check for unclosed string and don't bother if so */ + if (news > sindex && string[news] == '\0' && string[news-1] != peekc) + { + RESIZE_MALLOCED_BUFFER (ret, retind, 3, retsize, 16); + ret[retind++] = c; + ret[retind++] = peekc; + free (t); + continue; + } + trans = locale_expand (t, 0, news-sindex, 0, &translen); + free (t); + if (singlequote_translations && + ((news-sindex-1) != translen || STREQN (t, trans, translen) == 0)) + t = sh_single_quote (trans); + else + t = sh_mkdoublequoted (trans, translen, 0); + sindex = news; + } +#endif /* TRANSLATABLE_STRINGS */ + free (trans); + trans = t; + translen = strlen (trans); + + RESIZE_MALLOCED_BUFFER (ret, retind, translen + 1, retsize, 128); + strcpy (ret + retind, trans); + retind += translen; + FREE (trans); + break; + } + } - return r; + ret[retind] = 0; + return ret; } -#endif /* Call expand_word_internal to expand W and handle error returns. A convenience function for functions that don't want to handle @@ -3844,7 +4425,6 @@ expand_string_assignment (string, quoted) return (value); } - /* Expand one of the PS? prompt strings. This is a sort of combination of expand_string_unsplit and expand_string_internal, but returns the passed string when an error occurs. Might want to trap other calls @@ -3953,9 +4533,10 @@ expand_string_for_rhs (string, quoted, op, pflags, dollar_at_p, expanded_p) #else td.flags |= W_ASSIGNRHS|W_NOASSNTILDE; /* expand b in ${a=b} like assignment */ #endif - td.word = string; + td.word = savestring (string); tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p); expand_no_split_dollar_star = old_nosplit; + free (td.word); return (tresult); } @@ -3977,9 +4558,10 @@ expand_string_for_pat (string, quoted, dollar_at_p, expanded_p) oexp = expand_no_split_dollar_star; expand_no_split_dollar_star = 1; td.flags = W_NOSPLIT2; /* no splitting, remove "" and '' */ - td.word = string; + td.word = savestring (string); tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p); expand_no_split_dollar_star = oexp; + free (td.word); return (tresult); } @@ -4289,10 +4871,8 @@ dequote_string (string) char *result, *send; DECLARE_MBSTATE; -#if defined (DEBUG) if (string[0] == CTLESC && string[1] == 0) - internal_inform ("dequote_string: string with bare CTLESC"); -#endif + internal_debug ("dequote_string: string with bare CTLESC"); slen = STRLEN (string); @@ -5268,9 +5848,9 @@ array_remove_pattern (var, pattern, patspec, starsub, quoted) #endif /* ARRAY_VARS */ static char * -parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flags) +parameter_brace_remove_pattern (varname, value, estatep, patstr, rtype, quoted, flags) char *varname, *value; - int ind; + array_eltstate_t *estatep; char *patstr; int rtype, quoted, flags; { @@ -5284,7 +5864,7 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag oname = this_command_name; this_command_name = varname; - vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); + vtype = get_var_and_type (varname, value, estatep, quoted, flags, &v, &val); if (vtype == -1) { this_command_name = oname; @@ -5497,7 +6077,11 @@ unlink_all_fifos () for (i = 0; i < nfifo; i++) { fifo_list[i].proc = (pid_t)-1; +#if defined (O_NONBLOCK) fd = open (fifo_list[i].file, O_RDWR|O_NONBLOCK); +#else + fd = -1; +#endif unlink_fifo (i); if (fd >= 0) close (fd); @@ -6116,10 +6700,8 @@ process_substitute (string, open_for_read_in_child) remove_quoted_escapes (string); -#if 0 /* TAG: bash-5.2 */ startup_state = 2; /* see if we can avoid a fork */ parse_and_execute_level = 0; -#endif /* Give process substitution a place to jump back to on failure, so we don't go back up to main (). */ @@ -6135,7 +6717,7 @@ process_substitute (string, open_for_read_in_child) if (result == ERREXIT) rc = last_command_exit_value; - else if (result == EXITPROG) + else if (result == EXITPROG || result == EXITBLTIN) rc = last_command_exit_value; else if (result) rc = EXECUTION_FAILURE; @@ -6166,14 +6748,35 @@ process_substitute (string, open_for_read_in_child) /* */ /***********************************/ +#define COMSUB_PIPEBUF 4096 + +static char * +optimize_cat_file (r, quoted, flags, flagp) + REDIRECT *r; + int quoted, flags, *flagp; +{ + char *ret; + int fd; + + fd = open_redir_file (r, (char **)0); + if (fd < 0) + return &expand_param_error; + + ret = read_comsub (fd, quoted, flags, flagp); + close (fd); + + return ret; +} + static char * read_comsub (fd, quoted, flags, rflag) int fd, quoted, flags; int *rflag; { - char *istring, buf[512], *bufp; - int istring_index, c, tflag, skip_ctlesc, skip_ctlnul; + char *istring, buf[COMSUB_PIPEBUF], *bufp; + int c, tflag, skip_ctlesc, skip_ctlnul; int mb_cur_max; + size_t istring_index; size_t istring_size; ssize_t bufn; int nullbyte; @@ -6316,15 +6919,38 @@ command_substitute (string, quoted, flags) /* Don't fork () if there is no need to. In the case of no command to run, just return NULL. */ -#if 1 for (s = string; s && *s && (shellblank (*s) || *s == '\n'); s++) ; if (s == 0 || *s == 0) return ((WORD_DESC *)NULL); -#else - if (!string || !*string || (string[0] == '\n' && !string[1])) - return ((WORD_DESC *)NULL); -#endif + + if (*s == '<' && (s[1] != '<' && s[1] != '>' && s[1] != '&')) + { + COMMAND *cmd; + + cmd = parse_string_to_command (string, 0); /* XXX - flags */ + if (cmd && can_optimize_cat_file (cmd)) + { + tflag = 0; + istring = optimize_cat_file (cmd->value.Simple->redirects, quoted, flags, &tflag); + if (istring == &expand_param_error) + { + last_command_exit_value = EXECUTION_FAILURE; + istring = 0; + } + else + last_command_exit_value = EXECUTION_SUCCESS; /* compat */ + last_command_subst_pid = dollar_dollar_pid; + + dispose_command (cmd); + ret = alloc_word_desc (); + ret->word = istring; + ret->flags = tflag; + + return ret; + } + dispose_command (cmd); + } if (wordexp_only && read_but_dont_execute) { @@ -6488,6 +7114,11 @@ command_substitute (string, quoted, flags) remove_quoted_escapes (string); + /* We want to expand aliases on this pass if we are not in posix mode + for backwards compatibility. */ + if (expand_aliases) + expand_aliases = posixly_correct == 0; + startup_state = 2; /* see if we can avoid a fork */ parse_and_execute_level = 0; @@ -6505,7 +7136,7 @@ command_substitute (string, quoted, flags) if (result == ERREXIT) rc = last_command_exit_value; - else if (result == EXITPROG) + else if (result == EXITPROG || result == EXITBLTIN) rc = last_command_exit_value; else if (result) rc = EXECUTION_FAILURE; @@ -6627,7 +7258,7 @@ array_length_reference (s) if (assoc_p (var)) { t[len - 1] = '\0'; - akey = expand_assignment_string_to_string (t, 0); /* [ */ + akey = expand_subscript_string (t, 0); /* [ */ t[len - 1] = RBRACK; if (akey == 0 || *akey == 0) { @@ -6746,24 +7377,31 @@ chk_atstar (name, quoted, pflags, quoted_dollar_atp, contains_dollar_at) the shell, e.g., "@", "$", "*", etc. QUOTED, if non-zero, means that NAME was found inside of a double-quoted expression. */ static WORD_DESC * -parameter_brace_expand_word (name, var_is_special, quoted, pflags, indp) +parameter_brace_expand_word (name, var_is_special, quoted, pflags, estatep) char *name; int var_is_special, quoted, pflags; - arrayind_t *indp; + array_eltstate_t *estatep; { WORD_DESC *ret; char *temp, *tt; intmax_t arg_index; SHELL_VAR *var; - int atype, rflags; - arrayind_t ind; + int rflags; + array_eltstate_t es; ret = 0; temp = 0; rflags = 0; - if (indp) - *indp = INTMAX_MIN; +#if defined (ARRAY_VARS) + if (estatep) + es = *estatep; /* structure copy */ + else + { + init_eltstate (&es); + es.ind = INTMAX_MIN; + } +#endif /* Handle multiple digit arguments, as in ${11}. */ if (legal_number (name, &arg_index)) @@ -6786,6 +7424,13 @@ parameter_brace_expand_word (name, var_is_special, quoted, pflags, indp) ret = param_expand (tt, &sindex, quoted, (int *)NULL, (int *)NULL, (int *)NULL, (int *)NULL, pflags); + + /* Make sure we note that we saw a quoted null string and pass the flag back + to the caller in addition to the value. */ + if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) && STR_DOLLAR_AT_STAR (name) && + ret && ret->word && QUOTED_NULL (ret->word)) + ret->flags |= W_HASQUOTEDNULL; + free (tt); } #if defined (ARRAY_VARS) @@ -6800,12 +7445,12 @@ expand_arrayref: { /* Only treat as double quoted if array variable */ if (var && (array_p (var) || assoc_p (var))) - temp = array_value (name, quoted|Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &atype, &ind); + temp = array_value (name, quoted|Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &es); else - temp = array_value (name, quoted, 0, &atype, &ind); + temp = array_value (name, quoted, 0, &es); } else - temp = array_value (name, quoted, 0, &atype, &ind); + temp = array_value (name, quoted, 0, &es); } /* Posix interp 888 */ else if (pflags & PF_NOSPLIT2) @@ -6816,31 +7461,38 @@ expand_arrayref: #else if (tt[0] == '@' && tt[1] == RBRACK && var && quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc != ' ') #endif - temp = array_value (name, Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &atype, &ind); + temp = array_value (name, Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &es); else if (tt[0] == '@' && tt[1] == RBRACK) - temp = array_value (name, quoted, 0, &atype, &ind); + temp = array_value (name, quoted, 0, &es); else if (tt[0] == '*' && tt[1] == RBRACK && expand_no_split_dollar_star && ifs_is_null) - temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &atype, &ind); + temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &es); else if (tt[0] == '*' && tt[1] == RBRACK) - temp = array_value (name, quoted, 0, &atype, &ind); + temp = array_value (name, quoted, 0, &es); else - temp = array_value (name, quoted, 0, &atype, &ind); + temp = array_value (name, quoted, 0, &es); } else if (tt[0] == '*' && tt[1] == RBRACK && expand_no_split_dollar_star && ifs_is_null) - temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &atype, &ind); + temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &es); else - temp = array_value (name, quoted, 0, &atype, &ind); - if (atype == 0 && temp) + temp = array_value (name, quoted, 0, &es); + if (es.subtype == 0 && temp) { temp = (*temp && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) ? quote_string (temp) : quote_escapes (temp); rflags |= W_ARRAYIND; - if (indp) - *indp = ind; - } - else if (atype == 1 && temp && QUOTED_NULL (temp) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + if (estatep) + *estatep = es; /* structure copy */ + } + /* Note that array[*] and array[@] expanded to a quoted null string by + returning the W_HASQUOTEDNULL flag to the caller in addition to TEMP. */ + else if (es.subtype == 1 && temp && QUOTED_NULL (temp) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + rflags |= W_HASQUOTEDNULL; + else if (es.subtype == 2 && temp && QUOTED_NULL (temp) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) rflags |= W_HASQUOTEDNULL; + + if (estatep == 0) + flush_eltstate (&es); } #endif else if (var = find_variable (name)) @@ -7047,9 +7699,10 @@ parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdoll { WORD_DESC *w; WORD_LIST *l, *tl; - char *t, *t1, *temp, *vname; - int l_hasdollat, sindex; + char *t, *t1, *temp, *vname, *newval; + int l_hasdollat, sindex, arrayref; SHELL_VAR *v; + array_eltstate_t es; /*itrace("parameter_brace_expand_rhs: %s:%s pflags = %d", name, value, pflags);*/ /* If the entire expression is between double quotes, we want to treat @@ -7194,9 +7847,15 @@ parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdoll } } + arrayref = 0; #if defined (ARRAY_VARS) if (valid_array_reference (vname, 0)) - v = assign_array_element (vname, t1, 0); + { + init_eltstate (&es); + v = assign_array_element (vname, t1, ASS_ALLOWALLSUB, &es); + arrayref = 1; + newval = es.value; + } else #endif /* ARRAY_VARS */ v = bind_variable (vname, t1, 0); @@ -7219,6 +7878,23 @@ parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdoll stupidly_hack_special_variables (vname); + /* "In all cases, the final value of parameter shall be substituted." */ + if (shell_compatibility_level > 51) + { + FREE (t1); +#if defined (ARRAY_VARS) + if (arrayref) + { + t1 = newval; + flush_eltstate (&es); + } + else + t1 = get_variable_value (v); +#else + t1 = value_cell (v); +#endif + } + if (vname != name) free (vname); @@ -7228,12 +7904,11 @@ parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdoll splitting, we want to quote the value we return appropriately, like the other expansions this function handles. */ w->word = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ? quote_string (t1) : quote_escapes (t1); - /* If we have something that's non-null, that's not a quoted null string, + /* If we have something that's non-null, but not a quoted null string, and we're not going to be performing word splitting (we know we're not because the operator is `='), we can forget we saw a quoted null. */ if (w->word && w->word[0] && QUOTED_NULL (w->word) == 0) w->flags &= ~W_SAWQUOTEDNULL; - free (t1); /* If we convert a null string into a quoted null, make sure the caller knows it. */ @@ -7427,7 +8102,7 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p) { char *t, *temp1, *temp2; arrayind_t len; - int expok; + int expok, eflag; #if defined (ARRAY_VARS) ARRAY *a; HASH_TABLE *h; @@ -7440,8 +8115,10 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p) else t = (char *)0; - temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES); - *e1p = evalexp (temp1, 0, &expok); /* XXX - EXP_EXPANDED? */ + temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES|Q_ARITH); + eflag = (shell_compatibility_level > 51) ? 0 : EXP_EXPANDED; + + *e1p = evalexp (temp1, eflag, &expok); free (temp1); if (expok == 0) return (0); @@ -7496,10 +8173,10 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p) { t++; temp2 = savestring (t); - temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES); + temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES|Q_ARITH); free (temp2); t[-1] = ':'; - *e2p = evalexp (temp1, 0, &expok); /* XXX - EXP_EXPANDED? */ + *e2p = evalexp (temp1, eflag, &expok); free (temp1); if (expok == 0) return (0); @@ -7508,7 +8185,7 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p) from end of positional parameters? */ #if 1 if ((vtype == VT_ARRAYVAR || vtype == VT_POSPARMS) && *e2p < 0) -#else /* TAG: bash-5.2 */ +#else /* XXX - postponed; this isn't really a valuable feature */ if (vtype == VT_ARRAYVAR && *e2p < 0) #endif { @@ -7548,15 +8225,15 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p) by VARNAME (value of a variable or a reference to an array element). QUOTED is the standard description of quoting state, using Q_* defines. FLAGS is currently a set of flags to pass to array_value. If IND is - non-null and not INTMAX_MIN, and FLAGS includes AV_USEIND, IND is + not INTMAX_MIN, and FLAGS includes AV_USEIND, IND is passed to array_value so the array index is not computed again. If this returns VT_VARIABLE, the caller assumes that CTLESC and CTLNUL characters in the value are quoted with CTLESC and takes appropriate steps. For convenience, *VALP is set to the dequoted VALUE. */ static int -get_var_and_type (varname, value, ind, quoted, flags, varp, valp) +get_var_and_type (varname, value, estatep, quoted, flags, varp, valp) char *varname, *value; - arrayind_t ind; + array_eltstate_t *estatep; int quoted, flags; SHELL_VAR **varp; char **valp; @@ -7564,7 +8241,6 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp) int vtype, want_indir; char *temp, *vname; SHELL_VAR *v; - arrayind_t lind; want_indir = *varname == '!' && (legal_variable_starter ((unsigned char)varname[1]) || DIGIT (varname[1]) @@ -7594,8 +8270,11 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp) { v = array_variable_part (vname, 0, &temp, (int *)0); /* If we want to signal array_value to use an already-computed index, - set LIND to that index */ - lind = (ind != INTMAX_MIN && (flags & AV_USEIND)) ? ind : 0; + the caller will set ESTATEP->IND to that index and pass AV_USEIND in + FLAGS. */ + if (estatep && (flags & AV_USEIND) == 0) + estatep->ind = INTMAX_MIN; + if (v && invisible_p (v)) { vtype = VT_ARRAYMEMBER; @@ -7615,7 +8294,7 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp) else { vtype = VT_ARRAYMEMBER; - *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, (int *)NULL, &lind); + *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, estatep); } *varp = v; } @@ -7632,7 +8311,7 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp) { vtype = VT_ARRAYMEMBER; *varp = v; - *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, (int *)NULL, &lind); + *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, estatep); } } else if ((v = find_variable (vname)) && (invisible_p (v) == 0) && (assoc_p (v) || array_p (v))) @@ -7782,6 +8461,7 @@ string_transform (xc, v, s) ret = string_var_assignment (v, s); break; case 'K': + case 'k': ret = sh_quote_reusable (s, 0); break; /* Transformations that modify the variable's value */ @@ -7875,7 +8555,7 @@ array_transform (xc, var, starsub, quoted) { ARRAY *a; HASH_TABLE *h; - int itype; + int itype, qflags; char *ret; WORD_LIST *list; SHELL_VAR *v; @@ -7902,6 +8582,23 @@ array_transform (xc, var, starsub, quoted) a = (v && array_p (v)) ? array_cell (v) : 0; h = (v && assoc_p (v)) ? assoc_cell (v) : 0; + /* XXX - for now */ + if (xc == 'k') + { + if (v == 0) + return ((char *)NULL); + list = array_p (v) ? array_to_kvpair_list (a) : assoc_to_kvpair_list (h); + qflags = quoted; + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how $* will be expanded. */ + if (itype == '*' && expand_no_split_dollar_star && ifs_is_null) + qflags |= Q_DOUBLE_QUOTES; /* Posix interp 888 */ + + ret = string_list_pos_params (itype, list, qflags, 0); + dispose_words (list); + return ret; + } + list = a ? array_to_word_list (a) : (h ? assoc_to_word_list (h) : 0); if (list == 0) return ((char *)NULL); @@ -7925,11 +8622,12 @@ valid_parameter_transform (xform) case 'a': /* expand to a string with just attributes */ case 'A': /* expand as an assignment statement with attributes */ case 'K': /* expand assoc array to list of key/value pairs */ + case 'k': /* XXX - for now */ case 'E': /* expand like $'...' */ case 'P': /* expand like prompt string */ case 'Q': /* quote reusably */ case 'U': /* transform to uppercase */ - case 'u': /* tranform by capitalizing */ + case 'u': /* transform by capitalizing */ case 'L': /* transform to lowercase */ return 1; default: @@ -7938,9 +8636,9 @@ valid_parameter_transform (xform) } static char * -parameter_brace_transform (varname, value, ind, xform, rtype, quoted, pflags, flags) +parameter_brace_transform (varname, value, estatep, xform, rtype, quoted, pflags, flags) char *varname, *value; - int ind; + array_eltstate_t *estatep; char *xform; int rtype, quoted, pflags, flags; { @@ -7955,21 +8653,19 @@ parameter_brace_transform (varname, value, ind, xform, rtype, quoted, pflags, fl oname = this_command_name; this_command_name = varname; - vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); + vtype = get_var_and_type (varname, value, estatep, quoted, flags, &v, &val); if (vtype == -1) { this_command_name = oname; return ((char *)NULL); } - if (valid_parameter_transform (xform) == 0) + if (xform[0] == 0 || valid_parameter_transform (xform) == 0) { this_command_name = oname; -#if 0 /* TAG: bash-5.2 Martin Schulte 10/2020 */ + if (vtype == VT_VARIABLE) + FREE (val); return (interactive_shell ? &expand_param_error : &expand_param_fatal); -#else - return &expand_param_error; -#endif } starsub = vtype & VT_STARSUB; @@ -8073,9 +8769,9 @@ mb_substring (string, s, e) VARNAME. If VARNAME is an array variable, use the array elements. */ static char * -parameter_brace_substring (varname, value, ind, substr, quoted, pflags, flags) +parameter_brace_substring (varname, value, estatep, substr, quoted, pflags, flags) char *varname, *value; - int ind; + array_eltstate_t *estatep; char *substr; int quoted, pflags, flags; { @@ -8090,7 +8786,7 @@ parameter_brace_substring (varname, value, ind, substr, quoted, pflags, flags) oname = this_command_name; this_command_name = varname; - vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); + vtype = get_var_and_type (varname, value, estatep, quoted, flags, &v, &val); if (vtype == -1) { this_command_name = oname; @@ -8178,23 +8874,38 @@ parameter_brace_substring (varname, value, ind, substr, quoted, pflags, flags) /* */ /****************************************************************/ -#ifdef INCLUDE_UNUSED static int shouldexp_replacement (s) char *s; { - register char *p; + size_t slen; + int sindex, c; + DECLARE_MBSTATE; - for (p = s; p && *p; p++) + sindex = 0; + slen = STRLEN (s); + while (c = s[sindex]) { - if (*p == '\\') - p++; - else if (*p == '&') + if (c == '\\') + { + sindex++; + if (s[sindex] == 0) + return 0; + /* We want to remove this backslash because we treat it as special + in this context. THIS ASSUMES THE STRING IS PROCESSED BY + strcreplace() OR EQUIVALENT that handles removing backslashes + preceding the special character. */ + if (s[sindex] == '&') + return 1; + if (s[sindex] == '\\') + return 1; + } + else if (c == '&') return 1; + ADVANCE_CHAR (s, slen, sindex); } return 0; } -#endif char * pat_subst (string, pat, rep, mflags) @@ -8210,12 +8921,7 @@ pat_subst (string, pat, rep, mflags) return (savestring ("")); mtype = mflags & MATCH_TYPEMASK; - -#if 0 /* TAG: bash-5.2? */ - rxpand = (rep && *rep) ? shouldexp_replacement (rep) : 0; -#else - rxpand = 0; -#endif + rxpand = mflags & MATCH_EXPREP; /* Special cases: * 1. A null pattern with mtype == MATCH_BEG means to prefix STRING @@ -8224,37 +8930,34 @@ pat_subst (string, pat, rep, mflags) * STRING and return the result. * 3. A null STRING with a matching pattern means to append REP to * STRING and return the result. - * These don't understand or process `&' in the replacement string. + * + * These process `&' in the replacement string, like `sed' does when + * presented with a BRE of `^' or `$'. */ if ((pat == 0 || *pat == 0) && (mtype == MATCH_BEG || mtype == MATCH_END)) { - replen = STRLEN (rep); + rstr = (mflags & MATCH_EXPREP) ? strcreplace (rep, '&', "", 2) : rep; + rslen = STRLEN (rstr); l = STRLEN (string); - ret = (char *)xmalloc (replen + l + 2); - if (replen == 0) + ret = (char *)xmalloc (rslen + l + 2); + if (rslen == 0) strcpy (ret, string); else if (mtype == MATCH_BEG) { - strcpy (ret, rep); - strcpy (ret + replen, string); + strcpy (ret, rstr); + strcpy (ret + rslen, string); } else { strcpy (ret, string); - strcpy (ret + l, rep); + strcpy (ret + l, rstr); } + if (rstr != rep) + free (rstr); return (ret); } else if (*string == 0 && (match_pattern (string, pat, mtype, &s, &e) != 0)) - { - replen = STRLEN (rep); - ret = (char *)xmalloc (replen + 1); - if (replen == 0) - ret[0] = '\0'; - else - strcpy (ret, rep); - return (ret); - } + return ((mflags & MATCH_EXPREP) ? strcreplace (rep, '&', "", 2) : savestring (rep)); ret = (char *)xmalloc (rsize = 64); ret[0] = '\0'; @@ -8274,7 +8977,7 @@ pat_subst (string, pat, rep, mflags) for (x = 0; x < mlen; x++) mstr[x] = s[x]; mstr[mlen] = '\0'; - rstr = strcreplace (rep, '&', mstr, 0); + rstr = strcreplace (rep, '&', mstr, 2); free (mstr); rslen = strlen (rstr); } @@ -8332,7 +9035,8 @@ pat_subst (string, pat, rep, mflags) /* Now copy the unmatched portion of the input string */ if (str && *str) { - RESIZE_MALLOCED_BUFFER (ret, rptr, STRLEN(str) + 1, rsize, 64); + l = send - str + 1; + RESIZE_MALLOCED_BUFFER (ret, rptr, l, rsize, 64); strcpy (ret + rptr, str); } else @@ -8385,9 +9089,9 @@ pos_params_pat_subst (string, pat, rep, mflags) and the string to substitute. QUOTED is a flags word containing the type of quoting currently in effect. */ static char * -parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags) +parameter_brace_patsub (varname, value, estatep, patsub, quoted, pflags, flags) char *varname, *value; - int ind; + array_eltstate_t *estatep; char *patsub; int quoted, pflags, flags; { @@ -8401,7 +9105,7 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags) oname = this_command_name; this_command_name = varname; /* error messages */ - vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); + vtype = get_var_and_type (varname, value, estatep, quoted, flags, &v, &val); if (vtype == -1) { this_command_name = oname; @@ -8456,13 +9160,22 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags) the entire expansion is double-quoted because the parser and string extraction functions treated quotes in the replacement string as special. THIS IS NOT BACKWARDS COMPATIBLE WITH BASH-4.2. */ - if (shell_compatibility_level > 42) + if (shell_compatibility_level > 42 && patsub_replacement == 0) rep = expand_string_if_necessary (rep, quoted & ~(Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT), expand_string_unsplit); + else if (shell_compatibility_level > 42 && patsub_replacement) + rep = expand_string_for_patsub (rep, quoted & ~(Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)); /* This is the bash-4.2 code. */ else if ((mflags & MATCH_QUOTED) == 0) rep = expand_string_if_necessary (rep, quoted, expand_string_unsplit); else rep = expand_string_to_string_internal (rep, quoted, expand_string_unsplit); + + /* Check whether or not to replace `&' in the replacement string after + expanding it, since we want to treat backslashes quoting the `&' + consistently. */ + if (patsub_replacement && rep && *rep && shouldexp_replacement (rep)) + mflags |= MATCH_EXPREP; + } /* ksh93 doesn't allow the match specifier to be a part of the expanded @@ -8622,9 +9335,10 @@ pos_params_modcase (string, pat, modop, mflags) to perform. QUOTED is a flags word containing the type of quoting currently in effect. */ static char * -parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, pflags, flags) +parameter_brace_casemod (varname, value, estatep, modspec, patspec, quoted, pflags, flags) char *varname, *value; - int ind, modspec; + array_eltstate_t *estatep; + int modspec; char *patspec; int quoted, pflags, flags; { @@ -8638,7 +9352,7 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, pflags, oname = this_command_name; this_command_name = varname; - vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); + vtype = get_var_and_type (varname, value, estatep, quoted, flags, &v, &val); if (vtype == -1) { this_command_name = oname; @@ -8815,7 +9529,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta WORD_DESC *tdesc, *ret; int t_index, sindex, c, tflag, modspec, local_pflags, all_element_arrayref; intmax_t number; - arrayind_t ind; + array_eltstate_t es; temp = temp1 = value = (char *)NULL; var_is_set = var_is_null = var_is_special = check_nullness = 0; @@ -8862,7 +9576,10 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta ret = 0; tflag = 0; - ind = INTMAX_MIN; +#if defined (ARRAY_VARS) + init_eltstate (&es); +#endif + es.ind = INTMAX_MIN; /* XXX */ /* If the name really consists of a special variable, then make sure that we have the entire name. We don't allow indirect references @@ -9099,11 +9816,16 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta to return the index we're supposed to be using. */ if (tdesc && tdesc->flags) tdesc->flags &= ~W_ARRAYIND; + + /* If the indir expansion contains $@/$*, extend the special treatment + of the case of no positional parameters and `set -u' to it. */ + if (contains_dollar_at && *contains_dollar_at) + all_element_arrayref = 1; } else { local_pflags |= PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)); - tdesc = parameter_brace_expand_word (name, var_is_special, quoted, local_pflags, &ind); + tdesc = parameter_brace_expand_word (name, var_is_special, quoted, local_pflags, &es); } if (tdesc == &expand_wdesc_error || tdesc == &expand_wdesc_fatal) @@ -9119,7 +9841,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta dispose_word_desc (tdesc); } else - temp = (char *)0; + temp = (char *)0; if (temp == &expand_param_error || temp == &expand_param_fatal) { @@ -9200,9 +9922,12 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta /* If this is a substring spec, process it and add the result. */ if (want_substring) { - temp1 = parameter_brace_substring (name, temp, ind, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); + temp1 = parameter_brace_substring (name, temp, &es, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); FREE (value); FREE (temp); +#if defined (ARRAY_VARS) + flush_eltstate (&es); +#endif if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) { @@ -9232,9 +9957,12 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta } else if (want_patsub) { - temp1 = parameter_brace_patsub (name, temp, ind, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); + temp1 = parameter_brace_patsub (name, temp, &es, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); FREE (value); FREE (temp); +#if defined (ARRAY_VARS) + flush_eltstate (&es); +#endif if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) { @@ -9258,9 +9986,12 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta #if defined (CASEMOD_EXPANSIONS) else if (want_casemod) { - temp1 = parameter_brace_casemod (name, temp, ind, modspec, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); + temp1 = parameter_brace_casemod (name, temp, &es, modspec, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); FREE (value); FREE (temp); +#if defined (ARRAY_VARS) + flush_eltstate (&es); +#endif if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) { @@ -9294,6 +10025,9 @@ bad_substitution: FREE (value); FREE (temp); free (name); +#if defined (ARRAY_VARS) + flush_eltstate (&es); +#endif if (shell_compatibility_level <= 43) return &expand_wdesc_error; else @@ -9303,9 +10037,12 @@ bad_substitution: break; case '@': - temp1 = parameter_brace_transform (name, temp, ind, value, c, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); + temp1 = parameter_brace_transform (name, temp, &es, value, c, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); free (temp); free (value); +#if defined (ARRAY_VARS) + flush_eltstate (&es); +#endif if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) { @@ -9333,9 +10070,12 @@ bad_substitution: FREE (value); break; } - temp1 = parameter_brace_remove_pattern (name, temp, ind, value, c, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0); + temp1 = parameter_brace_remove_pattern (name, temp, &es, value, c, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0); free (temp); free (value); +#if defined (ARRAY_VARS) + flush_eltstate (&es); +#endif ret = alloc_word_desc (); ret->word = temp1; @@ -9394,6 +10134,14 @@ bad_substitution: } else /* VAR not set or VAR is NULL. */ { + /* If we're freeing a quoted null here, we need to remember we saw + it so we can restore it later if needed, or the caller can note it. + The check against `+' doesn't really matter, since the other cases + don't use or return TFLAG, but it's good for clarity. */ + if (c == '+' && temp && QUOTED_NULL (temp) && + (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + tflag |= W_HASQUOTEDNULL; + FREE (temp); temp = (char *)NULL; if (c == '=' && var_is_special) @@ -9402,11 +10150,17 @@ bad_substitution: report_error (_("$%s: cannot assign in this way"), name); free (name); free (value); +#if defined (ARRAY_VARS) + flush_eltstate (&es); +#endif return &expand_wdesc_error; } else if (c == '?') { parameter_brace_expand_error (name, value, check_nullness); +#if defined (ARRAY_VARS) + flush_eltstate (&es); +#endif return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); } else if (c != '+') @@ -9436,6 +10190,9 @@ bad_substitution: break; } free (name); +#if defined (ARRAY_VARS) + flush_eltstate (&es); +#endif if (ret == 0) { @@ -9458,7 +10215,7 @@ param_expand (string, sindex, quoted, expanded_something, int *quoted_dollar_at_p, *had_quoted_null_p, pflags; { char *temp, *temp1, uerror[3], *savecmd; - int zindex, t_index, expok; + int zindex, t_index, expok, eflag; unsigned char c; intmax_t number; SHELL_VAR *var; @@ -9836,7 +10593,9 @@ arithsub: /* No error messages. */ savecmd = this_command_name; this_command_name = (char *)NULL; - number = evalexp (temp1, EXP_EXPANDED, &expok); + + eflag = (shell_compatibility_level > 51) ? 0 : EXP_EXPANDED; + number = evalexp (temp1, eflag, &expok); this_command_name = savecmd; free (temp); free (temp1); @@ -9949,7 +10708,8 @@ comsub: #if defined (ARRAY_VARS) if (temp && *temp && valid_array_reference (temp, 0)) { - tdesc = parameter_brace_expand_word (temp, SPECIAL_VAR (temp, 0), quoted, pflags, (arrayind_t *)NULL); + chk_atstar (temp, quoted, pflags, quoted_dollar_at_p, contains_dollar_at); + tdesc = parameter_brace_expand_word (temp, SPECIAL_VAR (temp, 0), quoted, pflags, 0); if (tdesc == &expand_wdesc_error || tdesc == &expand_wdesc_fatal) return (tdesc); ret = tdesc; @@ -10004,6 +10764,116 @@ return0: return ret; } +#if defined (ARRAY_VARS) +/* Characters that need to be backslash-quoted after expanding array subscripts */ +static char abstab[256] = { '\1' }; + +/* Run an array subscript through the appropriate word expansions. */ +char * +expand_subscript_string (string, quoted) + char *string; + int quoted; +{ + WORD_DESC td; + WORD_LIST *tlist; + int oe; + char *ret; + + if (string == 0 || *string == 0) + return (char *)NULL; + + oe = expand_no_split_dollar_star; + ret = (char *)NULL; + + td.flags = W_NOPROCSUB|W_NOTILDE|W_NOSPLIT2; /* XXX - W_NOCOMSUB? */ + td.word = savestring (string); /* in case it's freed on error */ + + expand_no_split_dollar_star = 1; + tlist = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL); + expand_no_split_dollar_star = oe; + + if (tlist) + { + if (tlist->word) + { + remove_quoted_nulls (tlist->word->word); + tlist->word->flags &= ~W_HASQUOTEDNULL; + } + dequote_list (tlist); + ret = string_list (tlist); + dispose_words (tlist); + } + + free (td.word); + return (ret); +} + +/* Expand the subscript in STRING, which is an array reference. To ensure we + only expand it once, we quote the characters that would start another + expansion and the bracket characters that are special to array subscripts. */ +static char * +expand_array_subscript (string, sindex, quoted, flags) + char *string; + int *sindex; + int quoted, flags; +{ + char *ret, *exp, *t; + size_t slen; + int si, ni; + + si = *sindex; + slen = STRLEN (string); + + if (abstab[0] == '\1') + { + /* These are basically the characters that start shell expansions plus + the characters that delimit subscripts. */ + memset (abstab, '\0', sizeof (abstab)); + abstab[LBRACK] = abstab[RBRACK] = 1; + abstab['$'] = abstab['`'] = abstab['~'] = 1; + abstab['\\'] = abstab['\''] = 1; + abstab['"'] = 1; /* XXX */ + /* We don't quote `@' or `*' in the subscript at all. */ + } + + /* string[si] == LBRACK */ + ni = skipsubscript (string, si, 0); + /* These checks mirror the ones in valid_array_reference. The check for + (ni - si) == 1 checks for empty subscripts. We don't check that the + subscript is a separate word if we're parsing an arithmetic expression. */ + if (ni >= slen || string[ni] != RBRACK || (ni - si) == 1 || + (string[ni+1] != '\0' && (quoted & Q_ARITH) == 0)) + { + /* let's check and see what fails this check */ + INTERNAL_DEBUG (("expand_array_subscript: bad subscript string: `%s'", string+si)); + ret = (char *)xmalloc (2); /* badly-formed subscript */ + ret[0] = string[si]; + ret[1] = '\0'; + *sindex = si + 1; + return ret; + } + + /* STRING[ni] == RBRACK */ + exp = substring (string, si+1, ni); + t = expand_subscript_string (exp, quoted & ~(Q_ARITH|Q_DOUBLE_QUOTES)); + free (exp); + exp = sh_backslash_quote (t, abstab, 0); + free (t); + + slen = STRLEN (exp); + ret = xmalloc (slen + 2 + 1); + ret[0] ='['; + strcpy (ret + 1, exp); + ret[slen + 1] = ']'; + ret[slen + 2] = '\0'; + + free (exp); + *sindex = ni + 1; + + return ret; +} +#endif + void invalidate_cached_quoted_dollar_at () { @@ -10054,7 +10924,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin size_t istring_size; /* Index into ISTRING. */ - int istring_index; + size_t istring_index; /* Temporary string storage. */ char *temp, *temp1; @@ -10080,6 +10950,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin int had_quoted_null; int has_quoted_ifs; /* did we add a quoted $IFS character here? */ int has_dollar_at, temp_has_dollar_at; + int internal_tilde; int split_on_spaces; int local_expanded; int tflag; @@ -10095,7 +10966,9 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin DECLARE_MBSTATE; - /* OK, let's see if we can optimize a common idiom: "$@" */ + /* OK, let's see if we can optimize a common idiom: "$@". This needs to make sure + that all of the flags callers care about (e.g., W_HASQUOTEDNULL) are set in + list->flags. */ if (STREQ (word->word, "\"$@\"") && (word->flags == (W_HASDOLLAR|W_QUOTED)) && dollar_vars[1]) /* XXX - check IFS here as well? */ @@ -10117,6 +10990,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin quoted_dollar_at = had_quoted_null = has_dollar_at = 0; has_quoted_ifs = 0; split_on_spaces = 0; + internal_tilde = 0; /* expanding =~ or :~ */ quoted_state = UNQUOTED; string = word->word; @@ -10181,7 +11055,7 @@ add_string: { /* XXX - technically this should only be expanded at the start of a word */ - if (string[++sindex] != LPAREN || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (word->flags & (W_DQUOTE|W_NOPROCSUB))) + if (string[++sindex] != LPAREN || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (word->flags & W_NOPROCSUB)) { sindex--; /* add_character: label increments sindex */ goto add_character; @@ -10204,6 +11078,22 @@ add_string: } #endif /* PROCESS_SUBSTITUTION */ +#if defined (ARRAY_VARS) + case '[': /*]*/ + if ((quoted & Q_ARITH) == 0 || shell_compatibility_level <= 51) + { + if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0) + goto add_ifs_character; + else + goto add_character; + } + else + { + temp = expand_array_subscript (string, &sindex, quoted, word->flags); + goto add_string; + } +#endif + case '=': /* Posix.2 section 3.6.1 says that tildes following `=' in words which are not assignment statements are not expanded. If the @@ -10232,7 +11122,7 @@ add_string: assignoff == -1 && sindex > 0) assignoff = sindex; if (sindex == assignoff && string[sindex+1] == '~') /* XXX */ - word->flags |= W_ITILDE; + internal_tilde = 1; if (word->flags & W_ASSIGNARG) word->flags |= W_ASSIGNRHS; /* affects $@ */ @@ -10257,7 +11147,7 @@ add_string: if ((word->flags & (W_ASSIGNMENT|W_ASSIGNRHS)) && (posixly_correct == 0 || (word->flags & W_TILDEEXP)) && string[sindex+1] == '~') - word->flags |= W_ITILDE; + internal_tilde = 1; if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c)) goto add_ifs_character; @@ -10270,11 +11160,11 @@ add_string: assignment statement, we don't do tilde expansion. We don't do tilde expansion if quoted or in an arithmetic context. */ - if ((word->flags & (W_NOTILDE|W_DQUOTE)) || - (sindex > 0 && ((word->flags & W_ITILDE) == 0)) || + if ((word->flags & W_NOTILDE) || + (sindex > 0 && (internal_tilde == 0)) || (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) { - word->flags &= ~W_ITILDE; + internal_tilde = 0; if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0) goto add_ifs_character; else @@ -10290,7 +11180,7 @@ add_string: temp = bash_tilde_find_word (string + sindex, tflag, &t_index); - word->flags &= ~W_ITILDE; + internal_tilde = 0; if (temp && *temp && t_index > 0) { @@ -10365,7 +11255,7 @@ add_string: { t_index = sindex++; - temp = string_extract (string, &sindex, "`", SX_REQMATCH); + temp = string_extract (string, &sindex, "`", (word->flags & W_COMPLETE) ? SX_COMPLETE : SX_REQMATCH); /* The test of sindex against t_index is to allow bare instances of ` to pass through, for backwards compatibility. */ if (temp == &extract_string_error || temp == &extract_string_fatal) @@ -10477,6 +11367,7 @@ add_twochars: break; case '"': + /* XXX - revisit this */ if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) && ((quoted & Q_ARITH) == 0)) goto add_character; @@ -10510,7 +11401,8 @@ add_twochars: temp_has_dollar_at = 0; /* does this quoted (sub)string include $@? */ /* Need to get W_HASQUOTEDNULL flag through this function. */ - list = expand_word_internal (tword, Q_DOUBLE_QUOTES, 0, &temp_has_dollar_at, (int *)NULL); + /* XXX - preserve Q_ARITH here? */ + list = expand_word_internal (tword, Q_DOUBLE_QUOTES|(quoted&Q_ARITH), 0, &temp_has_dollar_at, (int *)NULL); has_dollar_at += temp_has_dollar_at; if (list == &expand_word_error || list == &expand_word_fatal) @@ -10665,7 +11557,7 @@ add_twochars: goto add_character; t_index = ++sindex; - temp = string_extract_single_quoted (string, &sindex); + temp = string_extract_single_quoted (string, &sindex, 0); /* If the entire STRING was surrounded by single quotes, then the string is wholly quoted. */ @@ -10806,7 +11698,11 @@ finished_with_string: if (*istring == '\0') { +#if 0 if (quoted_dollar_at == 0 && (had_quoted_null || quoted_state == PARTIALLY_QUOTED)) +#else + if (had_quoted_null || (quoted_dollar_at == 0 && quoted_state == PARTIALLY_QUOTED)) +#endif { istring[0] = CTLNUL; istring[1] = '\0'; @@ -10843,6 +11739,8 @@ finished_with_string: tword->flags |= W_NOGLOB; /* XXX */ if (word->flags & W_NOBRACE) tword->flags |= W_NOBRACE; /* XXX */ + if (word->flags & W_ARRAYREF) + tword->flags |= W_ARRAYREF; if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) tword->flags |= W_QUOTED; list = make_word_list (tword, (WORD_LIST *)NULL); @@ -10951,6 +11849,8 @@ set_word_flags: tword->flags |= W_NOGLOB; if (word->flags & W_NOBRACE) tword->flags |= W_NOBRACE; + if (word->flags & W_ARRAYREF) + tword->flags |= W_ARRAYREF; list = make_word_list (tword, (WORD_LIST *)NULL); } } @@ -11011,7 +11911,7 @@ string_quote_removal (string, quoted) break; } tindex = sindex + 1; - temp = string_extract_single_quoted (string, &tindex); + temp = string_extract_single_quoted (string, &tindex, 0); if (temp) { strcpy (r, temp); @@ -11191,6 +12091,12 @@ word_list_split (list) w->word[0] = '\0'; tresult = make_word_list (w, (WORD_LIST *)NULL); } +#if defined (ARRAY_VARS) + /* pass W_ARRAYREF through for words that are not split and are + identical to the original word. */ + if (tresult && tresult->next == 0 && t->next == 0 && (t->word->flags & W_ARRAYREF) && STREQ (t->word->word, tresult->word->word)) + tresult->word->flags |= W_ARRAYREF; +#endif if (result == 0) result = e = tresult; else @@ -11767,10 +12673,13 @@ expand_declaration_argument (tlist, wcmd) memset (omap, '\0', sizeof (omap)); for (l = wcmd->next; l != tlist; l = l->next) { - if (l->word->word[0] != '-') + int optchar; + + if (l->word->word[0] != '-' && l->word->word[0] != '+') break; /* non-option argument */ if (l->word->word[0] == '-' && l->word->word[1] == '-' && l->word->word[2] == 0) break; /* -- signals end of options */ + optchar = l->word->word[0]; for (oind = 1; l->word->word[oind]; oind++) switch (l->word->word[oind]) { @@ -11782,7 +12691,7 @@ expand_declaration_argument (tlist, wcmd) case 'c': omap[l->word->word[oind]] = 1; if (opti == 0) - opts[opti++] = '-'; + opts[opti++] = optchar; break; default: break; @@ -11937,6 +12846,87 @@ shell_expand_word_list (tlist, eflags) return (new_list); } +/* Perform assignment statements optionally preceding a command name COMMAND. + If COMMAND == NULL, is_nullcmd usually == 1. Follow the POSIX rules for + variable assignment errors. */ +static int +do_assignment_statements (varlist, command, is_nullcmd) + WORD_LIST *varlist; + char *command; + int is_nullcmd; +{ + WORD_LIST *temp_list; + char *savecmd; + sh_wassign_func_t *assign_func; + int is_special_builtin, is_builtin_or_func, tint; + + /* If the remainder of the words expand to nothing, Posix.2 requires + that the variable and environment assignments affect the shell's + environment (do_word_assignment). */ + assign_func = is_nullcmd ? do_word_assignment : assign_in_env; + tempenv_assign_error = 0; + + is_builtin_or_func = command && (find_shell_builtin (command) || find_function (command)); + /* Posix says that special builtins exit if a variable assignment error + occurs in an assignment preceding it. (XXX - this is old -- current Posix + says that any variable assignment error causes a non-interactive shell + to exit. See the STRICT_POSIX checks below. */ + is_special_builtin = posixly_correct && command && find_special_builtin (command); + + savecmd = this_command_name; + for (temp_list = varlist; temp_list; temp_list = temp_list->next) + { + this_command_name = (char *)NULL; + assigning_in_environment = is_nullcmd == 0; + tint = (*assign_func) (temp_list->word, is_builtin_or_func); + assigning_in_environment = 0; + this_command_name = savecmd; + + /* Variable assignment errors in non-interactive shells running + in posix mode cause the shell to exit. */ + if (tint == 0) + { + if (is_nullcmd) /* assignment statement */ + { + last_command_exit_value = EXECUTION_FAILURE; +#if defined (STRICT_POSIX) + if (posixly_correct && interactive_shell == 0) +#else + if (posixly_correct && interactive_shell == 0 && executing_command_builtin == 0) +#endif + exp_jump_to_top_level (FORCE_EOF); + else + exp_jump_to_top_level (DISCARD); + } + /* In posix mode, assignment errors in the temporary environment + cause a non-interactive shell executing a special builtin to + exit and a non-interactive shell to otherwise jump back to the + top level. This is what POSIX says to do for variable assignment + errors, and POSIX says errors in assigning to the temporary + environment are treated as variable assignment errors. + (XXX - this is not what current POSIX says - look at the + STRICT_POSIX defines. */ + else if (posixly_correct) + { + last_command_exit_value = EXECUTION_FAILURE; +#if defined (STRICT_POSIX) + exp_jump_to_top_level ((interactive_shell == 0) ? FORCE_EOF : DISCARD); +#else + if (interactive_shell == 0 && is_special_builtin) + exp_jump_to_top_level (FORCE_EOF); + else if (interactive_shell == 0) + exp_jump_to_top_level (DISCARD); /* XXX - maybe change later */ + else + exp_jump_to_top_level (DISCARD); +#endif + } + else + tempenv_assign_error++; + } + } + return (tempenv_assign_error); +} + /* The workhorse for expand_words () and expand_words_no_vars (). First arg is LIST, a WORD_LIST of words. Second arg EFLAGS is a flags word controlling which expansions are @@ -11956,8 +12946,6 @@ expand_word_list_internal (list, eflags) int eflags; { WORD_LIST *new_list, *temp_list; - int tint; - char *savecmd; tempenv_assign_error = 0; if (list == 0) @@ -11970,30 +12958,11 @@ expand_word_list_internal (list, eflags) if (new_list == 0) { if (subst_assign_varlist) - { - /* All the words were variable assignments, so they are placed - into the shell's environment. */ - for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next) - { - savecmd = this_command_name; - this_command_name = (char *)NULL; /* no arithmetic errors */ - tint = do_word_assignment (temp_list->word, 0); - this_command_name = savecmd; - /* Variable assignment errors in non-interactive shells - running in Posix.2 mode cause the shell to exit, unless - they are being run by the `command' builtin. */ - if (tint == 0) - { - last_command_exit_value = EXECUTION_FAILURE; - if (interactive_shell == 0 && posixly_correct && executing_command_builtin == 0) - exp_jump_to_top_level (FORCE_EOF); - else - exp_jump_to_top_level (DISCARD); - } - } - dispose_words (subst_assign_varlist); - subst_assign_varlist = (WORD_LIST *)NULL; - } + do_assignment_statements (subst_assign_varlist, (char *)NULL, 1); + + dispose_words (subst_assign_varlist); + subst_assign_varlist = (WORD_LIST *)NULL; + return ((WORD_LIST *)NULL); } } @@ -12027,49 +12996,7 @@ expand_word_list_internal (list, eflags) if ((eflags & WEXP_VARASSIGN) && subst_assign_varlist) { - sh_wassign_func_t *assign_func; - int is_special_builtin, is_builtin_or_func; - - /* If the remainder of the words expand to nothing, Posix.2 requires - that the variable and environment assignments affect the shell's - environment. */ - assign_func = new_list ? assign_in_env : do_word_assignment; - tempenv_assign_error = 0; - - is_builtin_or_func = (new_list && new_list->word && (find_shell_builtin (new_list->word->word) || find_function (new_list->word->word))); - /* Posix says that special builtins exit if a variable assignment error - occurs in an assignment preceding it. */ - is_special_builtin = (posixly_correct && new_list && new_list->word && find_special_builtin (new_list->word->word)); - - for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next) - { - savecmd = this_command_name; - this_command_name = (char *)NULL; - assigning_in_environment = (assign_func == assign_in_env); - tint = (*assign_func) (temp_list->word, is_builtin_or_func); - assigning_in_environment = 0; - this_command_name = savecmd; - /* Variable assignment errors in non-interactive shells running - in Posix.2 mode cause the shell to exit. */ - if (tint == 0) - { - if (assign_func == do_word_assignment) - { - last_command_exit_value = EXECUTION_FAILURE; - if (interactive_shell == 0 && posixly_correct) - exp_jump_to_top_level (FORCE_EOF); - else - exp_jump_to_top_level (DISCARD); - } - else if (interactive_shell == 0 && is_special_builtin) - { - last_command_exit_value = EXECUTION_FAILURE; - exp_jump_to_top_level (FORCE_EOF); - } - else - tempenv_assign_error++; - } - } + do_assignment_statements (subst_assign_varlist, (new_list && new_list->word) ? new_list->word->word : (char *)NULL, new_list == 0); dispose_words (subst_assign_varlist); subst_assign_varlist = (WORD_LIST *)NULL; diff --git a/subst.h b/subst.h index 134765158..28cc92031 100644 --- a/subst.h +++ b/subst.h @@ -1,6 +1,6 @@ /* subst.h -- Names of externally visible functions in subst.c. */ -/* Copyright (C) 1993-2017 Free Software Foundation, Inc. +/* Copyright (C) 1993-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -55,6 +55,8 @@ #define ASS_NOEVAL 0x0100 /* don't evaluate value as expression */ #define ASS_NOLONGJMP 0x0200 /* don't longjmp on fatal assignment error */ #define ASS_NOINVIS 0x0400 /* don't resolve local invisible variables */ +#define ASS_ALLOWALLSUB 0x0800 /* allow * and @ as associative array keys */ +#define ASS_ONEWORD 0x1000 /* don't check array subscripts, assume higher level has done that */ /* Flags for the string extraction functions. */ #define SX_NOALLOC 0x0001 /* just skip; don't return substring */ @@ -69,6 +71,7 @@ #define SX_WORD 0x0200 /* extracting word in ${param op word} */ #define SX_COMPLETE 0x0400 /* extracting word for completion */ #define SX_STRIPDQ 0x0800 /* strip double quotes when extracting double-quoted string */ +#define SX_NOERROR 0x1000 /* don't print parser error messages */ /* Remove backslashes which are quoting backquotes from STRING. Modifies STRING, and returns a pointer to it. */ @@ -143,7 +146,7 @@ extern int do_word_assignment PARAMS((WORD_DESC *, int)); of space allocated to TARGET. SOURCE can be NULL, in which case nothing happens. Gets rid of SOURCE by free ()ing it. Returns TARGET in case the location has changed. */ -extern char *sub_append_string PARAMS((char *, char *, int *, size_t *)); +extern char *sub_append_string PARAMS((char *, char *, size_t *, size_t *)); /* Append the textual representation of NUMBER to TARGET. INDEX and SIZE are as in SUB_APPEND_STRING. */ @@ -183,10 +186,14 @@ extern WORD_LIST *expand_string PARAMS((char *, int)); extern char *expand_string_to_string PARAMS((char *, int)); extern char *expand_string_unsplit_to_string PARAMS((char *, int)); extern char *expand_assignment_string_to_string PARAMS((char *, int)); +extern char *expand_subscript_string PARAMS((char *, int)); /* Expand an arithmetic expression string */ extern char *expand_arith_string PARAMS((char *, int)); +/* Expand $'...' and $"..." in a string for code paths that do not. */ +extern char *expand_string_dollar_quote PARAMS((char *, int)); + /* De-quote quoted characters in STRING. */ extern char *dequote_string PARAMS((char *)); @@ -308,6 +315,7 @@ extern char *cond_expand_word PARAMS((WORD_DESC *, int)); #define SD_COMPLETE 0x100 /* skip_to_delim during completion */ #define SD_HISTEXP 0x200 /* skip_to_delim during history expansion */ #define SD_ARITHEXP 0x400 /* skip_to_delim during arithmetic expansion */ +#define SD_NOERROR 0x800 /* don't print error messages */ extern int skip_to_delim PARAMS((char *, int, char *, int)); @@ -318,7 +326,7 @@ extern int skip_to_histexp PARAMS((char *, int, char *, int)); #if defined (READLINE) extern int char_is_quoted PARAMS((char *, int)); extern int unclosed_pair PARAMS((char *, int, char *)); -extern WORD_LIST *split_at_delims PARAMS((char *, int, char *, int, int, int *, int *)); +extern WORD_LIST *split_at_delims PARAMS((char *, int, const char *, int, int, int *, int *)); #endif /* Variables used to keep track of the characters in IFS. */ diff --git a/support/Makefile.in b/support/Makefile.in index 0289e0acf..f7de7ac21 100644 --- a/support/Makefile.in +++ b/support/Makefile.in @@ -9,7 +9,7 @@ # # Currently only man2html is built # -# Copyright (C) 1998-2018 Free Software Foundation, Inc. +# Copyright (C) 1998-2021 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -46,9 +46,11 @@ PROFILE_FLAGS = @PROFILE_FLAGS@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ +BASE_CFLAGS_FOR_BUILD = @BASE_CFLAGS_FOR_BUILD@ CPPFLAGS = @CPPFLAGS@ CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ +STYLE_CFLAGS = @STYLE_CFLAGS@ DEFS = @DEFS@ LOCAL_DEFS = @LOCAL_DEFS@ @@ -56,13 +58,13 @@ LIBS = @LIBS@ LIBS_FOR_BUILD = ${LIBS} # XXX LOCAL_LDFLAGS = @LOCAL_LDFLAGS@ -LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS) $(CFLAGS) +LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS) LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ $(LOCAL_LDFLAGS) $(CFLAGS_FOR_BUILD) INCLUDES = -I${BUILD_DIR} -I${topdir} BASE_CCFLAGS = ${PROFILE_FLAGS} $(DEFS) $(LOCAL_DEFS) $(SYSTEM_FLAGS) \ - ${INCLUDES} $(LOCAL_CFLAGS) + ${INCLUDES} $(STYLE_CFLAGS) $(LOCAL_CFLAGS) CCFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS) CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) @@ -77,7 +79,7 @@ OBJ1 = man2html.o all: man2html$(EXEEXT) man2html$(EXEEXT): $(OBJ1) - $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) $(OBJ1) -o $@ ${LIBS_FOR_BUILD} + $(CC_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(OBJ1) -o $@ ${LIBS_FOR_BUILD} clean: $(RM) man2html$(EXEEXT) $(OBJ1) diff --git a/support/bashbug.sh b/support/bashbug.sh index 01e9f0147..940f70654 100644 --- a/support/bashbug.sh +++ b/support/bashbug.sh @@ -7,7 +7,7 @@ # chet@cwru.edu and, optionally, to bash-testers@cwru.edu. # Other versions send mail to bug-bash@gnu.org. # -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/support/bashbug.sh.in b/support/bashbug.sh.in index d4b48c903..77e14e56e 100644 --- a/support/bashbug.sh.in +++ b/support/bashbug.sh.in @@ -4,10 +4,10 @@ # # The bug address depends on the release status of the shell. Versions # with status `devel', `alpha', `beta', or `rc' mail bug reports to -# chet@cwru.edu and, optionally, to bash-testers@cwru.edu. +# chet.ramey@case.edu and, optionally, to bash-testers@cwru.edu. # Other versions send mail to bug-bash@gnu.org. # -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -102,7 +102,7 @@ esac BASHTESTERS="bash-testers@cwru.edu" case "$RELSTATUS" in -alpha*|beta*|devel*|rc*) BUGBASH=chet@cwru.edu ;; +alpha*|beta*|devel*|rc*) BUGBASH=chet.ramey@case.edu ;; *) BUGBASH=bug-bash@gnu.org ;; esac @@ -132,6 +132,10 @@ if [ -z "$DEFEDITOR" ] && [ -z "$EDITOR" ]; then DEFEDITOR=emacs elif [ -x /usr/bin/xemacs ]; then DEFEDITOR=xemacs + elif [ -x /usr/bin/vim; then + DEFEDITOR=vim + elif [ -x /usr/bin/gvim; then + DEFEDITOR=gvim elif [ -x /usr/bin/nano ]; then DEFEDITOR=nano elif [ -x /usr/contrib/bin/jove ]; then diff --git a/support/bashversion.c b/support/bashversion.c index 4f86b1346..ad02d46ea 100644 --- a/support/bashversion.c +++ b/support/bashversion.c @@ -1,6 +1,6 @@ /* bashversion.c -- Display bash version information. */ -/* Copyright (C) 2001-2020 Free Software Foundation, Inc. +/* Copyright (C) 2001-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. diff --git a/support/config.guess b/support/config.guess old mode 100755 new mode 100644 index 0fc11edb2..7f76b6228 --- a/support/config.guess +++ b/support/config.guess @@ -1,12 +1,14 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2020 Free Software Foundation, Inc. +# Copyright 1992-2022 Free Software Foundation, Inc. -timestamp='2020-11-07' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2022-01-09' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -27,12 +29,20 @@ timestamp='2020-11-07' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . -me=$(echo "$0" | sed -e 's,.*/,,') +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + +me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] @@ -50,7 +60,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2020 Free Software Foundation, Inc. +Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -84,6 +94,9 @@ if test $# != 0; then exit 1 fi +# Just in case it came from the environment. +GUESS= + # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a @@ -102,8 +115,8 @@ set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" - # shellcheck disable=SC2039 - { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } || + # shellcheck disable=SC2039,SC3028 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } @@ -112,7 +125,7 @@ set_cc_for_build() { ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then - CC_FOR_BUILD="$driver" + CC_FOR_BUILD=$driver break fi done @@ -131,16 +144,14 @@ if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi -UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown -UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown -UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown -UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "$UNAME_SYSTEM" in +case $UNAME_SYSTEM in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" @@ -149,22 +160,37 @@ Linux|GNU|GNU/*) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu #else #include + /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl - #else - LIBC=gnu #endif #endif EOF - eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')" + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -176,12 +202,11 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \ - "/sbin/$sysctl" 2>/dev/null || \ - "/usr/sbin/$sysctl" 2>/dev/null || \ - echo unknown)) - case "$UNAME_MACHINE_ARCH" in + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + echo unknown)` + case $UNAME_MACHINE_ARCH in aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; @@ -189,15 +214,15 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) - arch=$(echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,') - endian=$(echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p') - machine="${arch}${endian}"-unknown + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown ;; - *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; @@ -218,10 +243,10 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in ;; esac # Determine ABI tags. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' - abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr") + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release @@ -229,76 +254,82 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "$UNAME_VERSION" in + case $UNAME_VERSION in Debian*) release='-gnu' ;; *) - release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "$machine-${os}${release}${abi-}" - exit ;; + GUESS=$machine-${os}${release}${abi-} + ;; *:Bitrig:*:*) - UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//') - echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" - exit ;; + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//') - echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" - exit ;; + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; *:LibertyBSD:*:*) - UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//') - echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" - exit ;; + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; *:MidnightBSD:*:*) - echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; *:ekkoBSD:*:*) - echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; *:SolidBSD:*:*) - echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; *:OS108:*:*) - echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; *:MirBSD:*:*) - echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; *:Sortix:*:*) - echo "$UNAME_MACHINE"-unknown-sortix - exit ;; + GUESS=$UNAME_MACHINE-unknown-sortix + ;; *:Twizzler:*:*) - echo "$UNAME_MACHINE"-unknown-twizzler - exit ;; + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; *:Redox:*:*) - echo "$UNAME_MACHINE"-unknown-redox - exit ;; + GUESS=$UNAME_MACHINE-unknown-redox + ;; mips:OSF1:*.*) - echo mips-dec-osf1 - exit ;; + GUESS=mips-dec-osf1 + ;; alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 case $UNAME_RELEASE in *4.0) - UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}') + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) - UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}') + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1) - case "$ALPHA_CPU_TYPE" in + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") @@ -335,68 +366,69 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)" - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; + GUESS=m68k-unknown-sysv4 + ;; *:[Aa]miga[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-amigaos - exit ;; + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; *:[Mm]orph[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-morphos - exit ;; + GUESS=$UNAME_MACHINE-unknown-morphos + ;; *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; + GUESS=i370-ibm-openedition + ;; *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; + GUESS=s390-ibm-zvmoe + ;; *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; + GUESS=powerpc-ibm-os400 + ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix"$UNAME_RELEASE" - exit ;; + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; + GUESS=arm-unknown-riscos + ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; + GUESS=hppa1.1-hitachi-hiuxmpp + ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "$( (/bin/universe) 2>/dev/null)" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; + GUESS=pyramid-pyramid-svr4 + ;; DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; + GUESS=sparc-icl-nx6 + ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case $(/usr/bin/uname -p) in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; + case `/usr/bin/uname -p` in + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; s390x:SunOS:*:*) - echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux"$UNAME_RELEASE" - exit ;; + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 @@ -405,47 +437,50 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi - echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; sun4*:SunOS:*:*) - case "$(/usr/bin/arch -k)" in + case `/usr/bin/arch -k` in Series*|S4*) - UNAME_RELEASE=$(uname -v) + UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; sun*:*:4.2BSD:*) - UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case "$(/bin/arch)" in + case `/bin/arch` in sun3) - echo m68k-sun-sunos"$UNAME_RELEASE" + GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) - echo sparc-sun-sunos"$UNAME_RELEASE" + GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac - exit ;; + ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -455,41 +490,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; m68k:machten:*:*) - echo m68k-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; powerpc:machten:*:*) - echo powerpc-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; + GUESS=mips-dec-mach_bsd4.3 + ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix"$UNAME_RELEASE" - exit ;; + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -514,78 +549,79 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && - dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') && - SYSTEM_NAME=$("$dummy" "$dummyarg") && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos"$UNAME_RELEASE" - exit ;; + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; + GUESS=powerpc-motorola-powermax + ;; Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; + GUESS=powerpc-harris-powerunix + ;; m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; + GUESS=m88k-harris-cxux7 + ;; m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; + GUESS=m88k-motorola-sysv4 + ;; m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=$(/usr/bin/uname -p) + UNAME_PROCESSOR=`/usr/bin/uname -p` if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then - echo m88k-dg-dgux"$UNAME_RELEASE" + GUESS=m88k-dg-dgux$UNAME_RELEASE else - echo m88k-dg-dguxbcs"$UNAME_RELEASE" + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else - echo i586-dg-dgux"$UNAME_RELEASE" + GUESS=i586-dg-dgux$UNAME_RELEASE fi - exit ;; + ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; + GUESS=m88k-dolphin-sysv3 + ;; M88*:*:R3*:*) # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; + GUESS=m88k-tektronix-sysv3 + ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; + GUESS=m68k-tektronix-bsd + ;; *:IRIX*:*:*) - echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')" - exit ;; + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'$(uname -s)'" gives 'AIX ' + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; + GUESS=i386-ibm-aix + ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then - IBM_REV=$(/usr/bin/oslevel) + IBM_REV=`/usr/bin/oslevel` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build @@ -600,68 +636,68 @@ EOF exit(0); } EOF - if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then - echo "$SYSTEM_NAME" + GUESS=$SYSTEM_NAME else - echo rs6000-ibm-aix3.2.5 + GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 + GUESS=rs6000-ibm-aix3.2.4 else - echo rs6000-ibm-aix3.2 + GUESS=rs6000-ibm-aix3.2 fi - exit ;; + ;; *:AIX:*:[4567]) - IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }') + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then - IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc | - awk -F: '{ print $3 }' | sed s/[0-9]*$/0/) + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$IBM_ARCH"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; + GUESS=rs6000-ibm-aix + ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) - echo romp-ibm-bsd4.4 - exit ;; + GUESS=romp-ibm-bsd4.4 + ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; + GUESS=rs6000-bull-bosx + ;; DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; + GUESS=m68k-bull-sysv3 + ;; 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; + GUESS=m68k-hp-bsd + ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; + GUESS=m68k-hp-bsd4.4 + ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//') - case "$UNAME_MACHINE" in + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then - sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null) - sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null) - case "$sc_cpu_version" in + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "$sc_kernel_bits" in + case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 @@ -703,7 +739,7 @@ EOF exit (0); } EOF - (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy") + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac @@ -728,12 +764,12 @@ EOF HP_ARCH=hppa64 fi fi - echo "$HP_ARCH"-hp-hpux"$HPUX_REV" - exit ;; + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; ia64:HP-UX:*:*) - HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//') - echo ia64-hp-hpux"$HPUX_REV" - exit ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -761,38 +797,38 @@ EOF exit (0); } EOF - $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; + GUESS=unknown-hitachi-hiuxwe2 + ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) - echo hppa1.1-hp-bsd - exit ;; + GUESS=hppa1.1-hp-bsd + ;; 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; + GUESS=hppa1.0-hp-bsd + ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; + GUESS=hppa1.0-hp-mpeix + ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) - echo hppa1.1-hp-osf - exit ;; + GUESS=hppa1.1-hp-osf + ;; hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; + GUESS=hppa1.0-hp-osf + ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then - echo "$UNAME_MACHINE"-unknown-osf1mk + GUESS=$UNAME_MACHINE-unknown-osf1mk else - echo "$UNAME_MACHINE"-unknown-osf1 + GUESS=$UNAME_MACHINE-unknown-osf1 fi - exit ;; + ;; parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; + GUESS=hppa1.1-hp-lites + ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; + GUESS=c1-convex-bsd + ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd @@ -800,17 +836,18 @@ EOF fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; + GUESS=c34-convex-bsd + ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; + GUESS=c38-convex-bsd + ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; + GUESS=c4-convex-bsd + ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ @@ -818,114 +855,129 @@ EOF -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz) - FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///') - FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/') - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///') - FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/') - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; *:BSD/OS:*:*) - echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; arm:FreeBSD:*:*) - UNAME_PROCESSOR=$(uname -p) + UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else - echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi - exit ;; + ;; *:FreeBSD:*:*) - UNAME_PROCESSOR=$(/usr/bin/uname -p) - case "$UNAME_PROCESSOR" in + UNAME_PROCESSOR=`/usr/bin/uname -p` + case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')" - exit ;; + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; i*:CYGWIN*:*) - echo "$UNAME_MACHINE"-pc-cygwin - exit ;; + GUESS=$UNAME_MACHINE-pc-cygwin + ;; *:MINGW64*:*) - echo "$UNAME_MACHINE"-pc-mingw64 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; *:MINGW*:*) - echo "$UNAME_MACHINE"-pc-mingw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; *:MSYS*:*) - echo "$UNAME_MACHINE"-pc-msys - exit ;; + GUESS=$UNAME_MACHINE-pc-msys + ;; i*:PW*:*) - echo "$UNAME_MACHINE"-pc-pw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; *:Interix*:*) - case "$UNAME_MACHINE" in + case $UNAME_MACHINE in x86) - echo i586-pc-interix"$UNAME_RELEASE" - exit ;; + GUESS=i586-pc-interix$UNAME_RELEASE + ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; IA64) - echo ia64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; esac ;; i*:UWIN*:*) - echo "$UNAME_MACHINE"-pc-uwin - exit ;; + GUESS=$UNAME_MACHINE-pc-uwin + ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-pc-cygwin - exit ;; + GUESS=x86_64-pc-cygwin + ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; *:GNU:*:*) # the GNU system - echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')" - exit ;; + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC" - exit ;; + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; *:Minix:*:*) - echo "$UNAME_MACHINE"-unknown-minix - exit ;; + GUESS=$UNAME_MACHINE-unknown-minix + ;; aarch64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; alpha:Linux:*:*) - case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; @@ -936,60 +988,63 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi - exit ;; + ;; avr32*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; cris:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; crisv32:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; e2k:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; frv:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; hexagon:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; ia64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; k1om:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m32r*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m68*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 @@ -1034,65 +1089,66 @@ EOF #endif #endif EOF - eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')" + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-"$LIBC" - exit ;; + GUESS=or1k-unknown-linux-$LIBC + ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; padre:Linux:*:*) - echo sparc-unknown-linux-"$LIBC" - exit ;; + GUESS=sparc-unknown-linux-$LIBC + ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-"$LIBC" - exit ;; + GUESS=hppa64-unknown-linux-$LIBC + ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level - case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in - PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; - PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; - *) echo hppa-unknown-linux-"$LIBC" ;; + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; esac - exit ;; + ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64-unknown-linux-$LIBC + ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc-unknown-linux-$LIBC + ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64le-unknown-linux-$LIBC + ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-"$LIBC" - exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; s390:Linux:*:* | s390x:Linux:*:*) - echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; sh64*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sh*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; tile*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; vax:Linux:*:*) - echo "$UNAME_MACHINE"-dec-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; x86_64:Linux:*:*) set_cc_for_build LIBCABI=$LIBC @@ -1101,71 +1157,71 @@ EOF (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_X32 >/dev/null then - LIBCABI="$LIBC"x32 + LIBCABI=${LIBC}x32 fi fi - echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI" - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI + ;; xtensa*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; + GUESS=i386-sequent-sysv4 + ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" - exit ;; + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - echo "$UNAME_MACHINE"-pc-os2-emx - exit ;; + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; i*86:XTS-300:*:STOP) - echo "$UNAME_MACHINE"-unknown-stop - exit ;; + GUESS=$UNAME_MACHINE-unknown-stop + ;; i*86:atheos:*:*) - echo "$UNAME_MACHINE"-unknown-atheos - exit ;; + GUESS=$UNAME_MACHINE-unknown-atheos + ;; i*86:syllable:*:*) - echo "$UNAME_MACHINE"-pc-syllable - exit ;; + GUESS=$UNAME_MACHINE-pc-syllable + ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; i*86:*DOS:*:*) - echo "$UNAME_MACHINE"-pc-msdosdjgpp - exit ;; + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; i*86:*:4.*:*) - UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//') + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi - exit ;; + ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. - case $(/bin/uname -X | grep "^Machine") in + case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" - exit ;; + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then - UNAME_REL=$(sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //')) + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 @@ -1173,11 +1229,11 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv32 + GUESS=$UNAME_MACHINE-pc-sysv32 fi - exit ;; + ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -1185,37 +1241,37 @@ EOF # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; + GUESS=i586-pc-msdosdjgpp + ;; Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; + GUESS=i386-pc-mach3 + ;; paragon:*:*:*) - echo i860-intel-osf1 - exit ;; + GUESS=i860-intel-osf1 + ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi - exit ;; + ;; mini*:CTIX:SYS*5:*) # "miniframe" - echo m68010-convergent-sysv - exit ;; + GUESS=m68010-convergent-sysv + ;; mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; + GUESS=m68k-convergent-sysv + ;; M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; + GUESS=m68k-diab-dnix + ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ - && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid) + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ @@ -1226,7 +1282,7 @@ EOF NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ - && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid) + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ @@ -1234,118 +1290,118 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; + GUESS=m68k-atari-sysv4 + ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv"$UNAME_RELEASE" - exit ;; + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=$( (uname -p) 2>/dev/null) - echo "$UNAME_MACHINE"-sni-sysv4 + UNAME_MACHINE=`(uname -p) 2>/dev/null` + GUESS=$UNAME_MACHINE-sni-sysv4 else - echo ns32k-sni-sysv + GUESS=ns32k-sni-sysv fi - exit ;; + ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says - echo i586-unisys-sysv4 - exit ;; + GUESS=i586-unisys-sysv4 + ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; + GUESS=hppa1.1-stratus-sysv4 + ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; + GUESS=i860-stratus-sysv4 + ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo "$UNAME_MACHINE"-stratus-vos - exit ;; + GUESS=$UNAME_MACHINE-stratus-vos + ;; *:VOS:*:*) # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; + GUESS=hppa1.1-stratus-vos + ;; mc68*:A/UX:*:*) - echo m68k-apple-aux"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; + GUESS=mips-sony-newsos6 + ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then - echo mips-nec-sysv"$UNAME_RELEASE" + GUESS=mips-nec-sysv$UNAME_RELEASE else - echo mips-unknown-sysv"$UNAME_RELEASE" + GUESS=mips-unknown-sysv$UNAME_RELEASE fi - exit ;; + ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; + GUESS=powerpc-be-beos + ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; + GUESS=powerpc-apple-beos + ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; + GUESS=i586-pc-beos + ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; + GUESS=i586-pc-haiku + ;; x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; + GUESS=x86_64-unknown-haiku + ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; *:Rhapsody:*:*) - echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; arm64:Darwin:*:*) - echo aarch64-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; *:Darwin:*:*) - UNAME_PROCESSOR=$(uname -p) + UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac @@ -1379,109 +1435,119 @@ EOF # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi - echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=$(uname -p) + UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; *:QNX:*:4*) - echo i386-pc-qnx - exit ;; + GUESS=i386-pc-qnx + ;; NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; NSV-*:NONSTOP_KERNEL:*:*) - echo nsv-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; + GUESS=mips-compaq-nonstopux + ;; BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; + GUESS=bs2000-siemens-sysv + ;; DS/*:UNIX_System_V:*:*) - echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - # shellcheck disable=SC2154 - if test "$cputype" = 386; then + if test "${cputype-}" = 386; then UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype fi - echo "$UNAME_MACHINE"-unknown-plan9 - exit ;; + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; + GUESS=pdp10-unknown-tops10 + ;; *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; + GUESS=pdp10-unknown-tenex + ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; + GUESS=pdp10-dec-tops20 + ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; + GUESS=pdp10-xkl-tops20 + ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; + GUESS=pdp10-unknown-tops20 + ;; *:ITS:*:*) - echo pdp10-unknown-its - exit ;; + GUESS=pdp10-unknown-its + ;; SEI:*:*:SEIUX) - echo mips-sei-seiux"$UNAME_RELEASE" - exit ;; + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; *:DragonFly:*:*) - echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')" - exit ;; + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; *:*VMS:*:*) - UNAME_MACHINE=$( (uname -p) 2>/dev/null) - case "$UNAME_MACHINE" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; + GUESS=i386-pc-xenix + ;; i*86:skyos:*:*) - echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')" - exit ;; + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; i*86:rdos:*:*) - echo "$UNAME_MACHINE"-pc-rdos - exit ;; - i*86:AROS:*:*) - echo "$UNAME_MACHINE"-pc-aros - exit ;; + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; x86_64:VMkernel:*:*) - echo "$UNAME_MACHINE"-unknown-esx - exit ;; + GUESS=$UNAME_MACHINE-unknown-esx + ;; amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs - exit ;; + GUESS=x86_64-unknown-onefs + ;; *:Unleashed:*:*) - echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; esac +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" </dev/null); + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else @@ -1613,7 +1679,7 @@ main () } EOF -$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) && +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. @@ -1621,7 +1687,7 @@ test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 -case "$UNAME_MACHINE:$UNAME_SYSTEM" in +case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 </dev/null || echo unknown) -uname -r = $( (uname -r) 2>/dev/null || echo unknown) -uname -s = $( (uname -s) 2>/dev/null || echo unknown) -uname -v = $( (uname -v) 2>/dev/null || echo unknown) +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` -/usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null) -/bin/uname -X = $( (/bin/uname -X) 2>/dev/null) +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` -hostinfo = $( (hostinfo) 2>/dev/null) -/bin/universe = $( (/bin/universe) 2>/dev/null) -/usr/bin/arch -k = $( (/usr/bin/arch -k) 2>/dev/null) -/bin/arch = $( (/bin/arch) 2>/dev/null) -/usr/bin/oslevel = $( (/usr/bin/oslevel) 2>/dev/null) -/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null) +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" diff --git a/support/config.sub b/support/config.sub old mode 100755 new mode 100644 index c874b7a9d..9b62e37c4 --- a/support/config.sub +++ b/support/config.sub @@ -1,12 +1,14 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2020 Free Software Foundation, Inc. +# Copyright 1992-2021 Free Software Foundation, Inc. -timestamp='2020-11-07' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2021-12-25' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -33,7 +35,7 @@ timestamp='2020-11-07' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -50,7 +52,14 @@ timestamp='2020-11-07' # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. -me=$(echo "$0" | sed -e 's,.*/,,') +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + +me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS @@ -67,7 +76,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2020 Free Software Foundation, Inc. +Copyright 1992-2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -112,9 +121,11 @@ esac # Split fields of configuration type # shellcheck disable=SC2162 +saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <&2 @@ -1749,6 +1784,8 @@ case $kernel-$os in ;; kfreebsd*-gnu* | kopensolaris*-gnu*) ;; + vxworks-simlinux | vxworks-simwindows | vxworks-spe) + ;; nto-qnx*) ;; os2-emx) diff --git a/support/shobj-conf b/support/shobj-conf index 5a3f9776e..cd7634dfa 100755 --- a/support/shobj-conf +++ b/support/shobj-conf @@ -10,7 +10,7 @@ # Chet Ramey # chet@po.cwru.edu -# Copyright (C) 1996-2019 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is part of GNU Bash, the Bourne Again SHell. # @@ -123,7 +123,7 @@ sunos5*|solaris2*) ;; # All versions of Linux (including Gentoo/FreeBSD) or the semi-mythical GNU Hurd. -linux*-*|gnu*-*|k*bsd*-gnu-*|freebsd*|dragonfly*) +linux*-*|gnu*-*|k*bsd*-gnu-*|midnightbsd*|freebsd*|dragonfly*) SHOBJ_CFLAGS=-fPIC SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' @@ -151,13 +151,13 @@ darwin*) darwin[1-7].*) SHOBJ_STATUS=unsupported SHOBJ_LDFLAGS='-dynamic' - SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v' + SHLIB_XLDFLAGS='-install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v' ;; # Darwin 8 == Mac OS X 10.4; Mac OS X 10.N == Darwin N+4 *) case "${host_os}" in darwin[89]*|darwin1[012]*) - SHOBJ_ARCHFLAGS='-arch_only `/usr/bin/arch`' + SHOBJ_ARCHFLAGS= ;; *) # Mac OS X 10.9 (Mavericks) and later SHOBJ_ARCHFLAGS= @@ -241,8 +241,8 @@ osf*) aix4.[2-9]*-*gcc*|aix[5-9].*-*gcc*) # lightly tested by jik@cisco.com SHOBJ_CFLAGS=-fpic - SHOBJ_LD='ld' - SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' + SHOBJ_LD='${CC}' + SHOBJ_LDFLAGS='-Wl,-bdynamic -Wl,-bnoentry -Wl,-bexpall' SHOBJ_XLDFLAGS='-G' SHLIB_XLDFLAGS='-bM:SRE' diff --git a/support/signames.c b/support/signames.c index aba4842ae..84864fd79 100644 --- a/support/signames.c +++ b/support/signames.c @@ -1,6 +1,6 @@ /* signames.c -- Create an array of signal names. */ -/* Copyright (C) 2006-2020 Free Software Foundation, Inc. +/* Copyright (C) 2006-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -84,9 +84,9 @@ initialize_signames () names first. This allows (for example) SIGABRT to overwrite SIGLOST. */ /* POSIX 1003.1b-1993 real time signals, but take care of incomplete - implementations. Acoording to the standard, both, SIGRTMIN and + implementations. According to the standard, both SIGRTMIN and SIGRTMAX must be defined, SIGRTMIN must be strictly less than - SIGRTMAX, and the difference must be at least 7, that is, there + SIGRTMAX, and the difference must be at least 7; that is, there must be at least eight distinct real time signals. */ /* The generated signal names are SIGRTMIN, SIGRTMIN+1, ..., diff --git a/test.c b/test.c index e2fd78b35..9997df149 100644 --- a/test.c +++ b/test.c @@ -2,7 +2,7 @@ /* Modified to run with the GNU shell Apr 25, 1988 by bfox. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -339,12 +339,15 @@ arithcomp (s, t, op, flags) intmax_t l, r; int expok; - if (flags & TEST_ARITHEXP) + if (flags & TEST_ARITHEXP) /* conditional command */ { - l = evalexp (s, EXP_EXPANDED, &expok); + int eflag; + + eflag = (shell_compatibility_level > 51) ? 0 : EXP_EXPANDED; + l = evalexp (s, eflag, &expok); if (expok == 0) return (FALSE); /* should probably longjmp here */ - r = evalexp (t, EXP_EXPANDED, &expok); + r = evalexp (t, eflag, &expok); if (expok == 0) return (FALSE); /* ditto */ } @@ -492,13 +495,13 @@ unary_operator () if (legal_number (argv[pos], &r)) { advance (0); - return (unary_test (op, argv[pos - 1])); + return (unary_test (op, argv[pos - 1], 0)); } else return (FALSE); } else - return (unary_test (op, "1")); + return (unary_test (op, "1", 0)); } /* All of the unary operators take an argument, so we first call @@ -506,17 +509,19 @@ unary_operator () argument, and then advances pos right past it. This means that pos - 1 is the location of the argument. */ unary_advance (); - return (unary_test (op, argv[pos - 1])); + return (unary_test (op, argv[pos - 1], 0)); } int -unary_test (op, arg) +unary_test (op, arg, flags) char *op, *arg; + int flags; { intmax_t r; struct stat stat_buf; struct timespec mtime, atime; SHELL_VAR *v; + int aflags; switch (op[1]) { @@ -624,17 +629,27 @@ unary_test (op, arg) case 'v': #if defined (ARRAY_VARS) - if (valid_array_reference (arg, 0)) + aflags = assoc_expand_once ? AV_NOEXPAND : 0; + if (valid_array_reference (arg, aflags)) { char *t; - int rtype, ret, flags; + int ret; + array_eltstate_t es; /* Let's assume that this has already been expanded once. */ - flags = assoc_expand_once ? AV_NOEXPAND : 0; - t = array_value (arg, 0, flags, &rtype, (arrayind_t *)0); + /* XXX - TAG:bash-5.2 fix with corresponding fix to execute_cmd.c: + execute_cond_node() that passes TEST_ARRAYEXP in FLAGS */ + + if (shell_compatibility_level > 51) + /* Allow associative arrays to use `test -v array[@]' to look for + a key named `@'. */ + aflags |= AV_ATSTARKEYS; /* XXX */ + init_eltstate (&es); + t = get_array_value (arg, aflags|AV_ALLOWALL, &es); ret = t ? TRUE : FALSE; - if (rtype > 0) /* subscript is * or @ */ + if (es.subtype > 0) /* subscript is * or @ */ free (t); + flush_eltstate (&es); return ret; } else if (legal_number (arg, &r)) /* -v n == is $n set? */ @@ -789,6 +804,7 @@ three_arguments () { advance (1); value = !two_arguments (); + pos = argc; } else if (argv[pos][0] == '(' && argv[pos+2][0] == ')') { diff --git a/test.h b/test.h index ea3c33e95..ffd79e5e0 100644 --- a/test.h +++ b/test.h @@ -1,6 +1,6 @@ /* test.h -- external interface to the conditional command code. */ -/* Copyright (C) 1997-2020 Free Software Foundation, Inc. +/* Copyright (C) 1997-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -27,11 +27,12 @@ #define TEST_PATMATCH 0x01 #define TEST_ARITHEXP 0x02 #define TEST_LOCALE 0x04 +#define TEST_ARRAYEXP 0x08 /* array subscript expansion */ extern int test_unop PARAMS((char *)); extern int test_binop PARAMS((char *)); -extern int unary_test PARAMS((char *, char *)); +extern int unary_test PARAMS((char *, char *, int)); extern int binary_test PARAMS((char *, char *, char *, int)); extern int test_command PARAMS((int, char **)); diff --git a/tests/alias.right b/tests/alias.right index 9e33036b5..76f32076f 100644 --- a/tests/alias.right +++ b/tests/alias.right @@ -2,6 +2,7 @@ alias: 0 alias: 0 ./alias.tests: line 38: qfoo: command not found quux +hi bar value bar @@ -40,3 +41,5 @@ baz foo bar baz +<áa> + diff --git a/tests/alias.tests b/tests/alias.tests index 0280c16de..15eac5b17 100644 --- a/tests/alias.tests +++ b/tests/alias.tests @@ -49,8 +49,17 @@ foo bar unalias foo bar baz +# post bash-5.1 problems with compound array assignment during multiline +# alias expansion +alias foo='a=() b="" +for i in 1; do echo hi; done' +foo + +unalias foo + ${THIS_SH} ./alias1.sub ${THIS_SH} ./alias2.sub ${THIS_SH} ./alias3.sub ${THIS_SH} ./alias4.sub ${THIS_SH} ./alias5.sub +${THIS_SH} ./alias6.sub diff --git a/tests/alias6.sub b/tests/alias6.sub new file mode 100644 index 000000000..d2d7daf59 --- /dev/null +++ b/tests/alias6.sub @@ -0,0 +1,13 @@ +# make sure aliases that end in multibyte characters don't interfere with the +# space sentinel alias expansion adds; problem through bash-5.1 +shopt -s expand_aliases + +LC_ALL=en_US.UTF-8 + +alias a1='printf "<%s>\\n" áa' +a1 + +alias a2='printf "<%s>\\n" aá' +a2 + +unalias a1 a2 diff --git a/tests/arith.right b/tests/arith.right index c74602e3c..02687815d 100644 --- a/tests/arith.right +++ b/tests/arith.right @@ -259,5 +259,5 @@ efg 42 42 42 -./arith.tests: line 327: 'foo' : syntax error: operand expected (error token is "'foo' ") -./arith.tests: line 331: b[c]d: syntax error in expression (error token is "d") +./arith.tests: line 330: 'foo' : syntax error: operand expected (error token is "'foo' ") +./arith.tests: line 333: b[c]d: syntax error in expression (error token is "d") diff --git a/tests/arith.tests b/tests/arith.tests index 1a3501aaa..e9ab57651 100644 --- a/tests/arith.tests +++ b/tests/arith.tests @@ -322,10 +322,12 @@ printf "%u\n" $n echo $(( 16#$(printf "%x\n" $n) )) echo $(( 16#$(printf "%X\n" $n) )) +# allow reserved words after an arithmetic command just because +if ((expr)) then ((expr)) fi + # these are errors foo=1 echo $(( 'foo' )) - # causes longjmp botches through bash-2.05b a[b[c]d]=e diff --git a/tests/array-at-star b/tests/array-at-star old mode 100755 new mode 100644 diff --git a/tests/array.right b/tests/array.right index 2d1c51db5..62278852a 100644 --- a/tests/array.right +++ b/tests/array.right @@ -67,6 +67,7 @@ declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="t declare -a b=([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd") declare -ar c declare -a d=([1]="test test") +declare -a e=() declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element") ./array.tests: line 135: unset: ps1: not an array variable ./array.tests: line 139: declare: c: cannot destroy array variables in this way @@ -84,6 +85,7 @@ declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="t declare -a b=([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd") declare -ar c declare -a d=([1]="test test") +declare -a e=() declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element") declare -a rv=([0]="this" [1]="is" [2]="a" [3]="test" [4]="of" [5]="read" [6]="using" [7]="arrays") abde @@ -381,6 +383,8 @@ strlen(4four) = 5 1 2 0 3 1 2 0 3 1 2 0 3 +declare -ai arr=([0]="2" [1]="4" [2]="6") +declare -a arr=([0]="hello" [1]="world") foo index 1: ok foo index 2: ok foo: implicit reference to element 0: ok @@ -492,8 +496,8 @@ x b c declare -a a=([1]="2" [2]="3" [3]="4") abcd unset -./array21.sub: line 30: typeset: a: not found -./array21.sub: line 33: typeset: A: not found +declare -a a=() +declare -A A=([four]="4" [two]="2" [three]="3" [one]="1" ) declare -a a=() declare -A A=() declare -a foo=([0]="1" [1]="(4 5 6)" [2]="3") @@ -520,13 +524,11 @@ argv[1] = ./array23.sub: line 22: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ") ./array23.sub: line 23: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ") -foo -0 -foo -foo -foo -6 -./array23.sub: line 34: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )") +./array23.sub: line 24: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ") +./array23.sub: line 26: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ") +./array23.sub: line 30: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )") +./array23.sub: line 33: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )") +./array23.sub: line 34: $index: syntax error: operand expected (error token is "$index") ./array23.sub: line 35: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )") 0 0 @@ -743,23 +745,43 @@ argv[1] = argv[2] = argv[1] = 7 -./array27.sub: line 24: a[]]=7 : syntax error: invalid arithmetic operator (error token is "]=7 ") +7 declare -A A=([$'\t']="2" [" "]="2" ) -./array27.sub: line 36: ((: A[]]=2 : syntax error: invalid arithmetic operator (error token is "]=2 ") -declare -A A=([$'\t']="2" ["*"]="2" [" "]="2" ["@"]="2" ) -./array27.sub: line 45: A[]]: bad array subscript +declare -A A=([$'\t']="2" ["*"]="2" [" "]="2" ["]"]="2" ["@"]="2" ) +declare -A A=([$'\t']="2" ["*"]="2" [" "]="2" ["]"]="2" ["@"]="2" ) +./array27.sub: line 52: read: `A[]]': not a valid identifier declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" ) -./array27.sub: line 53: A[]]: bad array subscript +./array27.sub: line 60: printf: `A[]]': not a valid identifier declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" ) -./array27.sub: line 61: declare: `A[]]=X': not a valid identifier +./array27.sub: line 68: declare: `A[]]=X': not a valid identifier +declare -A A=(["*"]="X" ["@"]="X" ) +./array27.sub: line 76: declare: `A[]]=X': not a valid identifier declare -A A=(["*"]="X" ["@"]="X" ) -./array27.sub: line 69: declare: `A[]]=X': not a valid identifier -./array27.sub: line 69: A[*]: bad array subscript -./array27.sub: line 69: A[@]: bad array subscript -declare -A A declare -a bug4=([0]="" [1]="5" [2]="" [3]="1" [4]="") declare -a bug=([0]="" [1]="5" [2]="" [3]="1" [4]="") declare -a bug2=([0]="") declare -a bug3=([0]="" [1]="5" [2]="" [3]="1" [4]="") declare -a not_bug=([0]="no" [1]="nulls") declare -a workaround=([0]="") +declare -a var=([0]=$'\001\001\001\001') +declare -A v2=([$'\001']=$'ab\001c' ) +declare -a foo=([0]=$'\001\001\001\001') +declare -A foo=([$'\001']=$'ab\001c' ) +declare -a foo=([0]=$'\001\001\001\001') +declare -a foo=([0]=$'\001\001\001\001') +declare -A foo=([v]=$'\001\001\001\001' ) +declare -A foo=([v]=$'\001\001\001\001' ) +declare -A foo=([$'\001']=$'ab\001c' ) +declare -A foo=([$'\001']=$'ab\001c' ) +foo +declare -a a=([42]="foo") +foo +declare -a a=([42]="foo") +7 +declare -ai a=([42]="7") +42 +declare -ai a=([42]="42") +FOO +declare -Au A=([Darwin]="FOO" ) +FOO +declare -Au A=(["@"]="FOO" ) diff --git a/tests/array.tests b/tests/array.tests index ba8e2254d..d0bb08b74 100644 --- a/tests/array.tests +++ b/tests/array.tests @@ -425,3 +425,5 @@ ${THIS_SH} ./array25.sub ${THIS_SH} ./array26.sub ${THIS_SH} ./array27.sub ${THIS_SH} ./array28.sub +${THIS_SH} ./array29.sub +${THIS_SH} ./array30.sub diff --git a/tests/array15.sub b/tests/array15.sub index 47796b95c..12f5391ef 100644 --- a/tests/array15.sub +++ b/tests/array15.sub @@ -35,3 +35,18 @@ func() func echo "${foo[@]}" + +unset foo + +# test options to declare that disable attributes that affect how values +# are expanded +# +# we already handle options that set attributes specially, so we should +# handle attributes that unset those attributes specially as well + +unset arr +declare -i -a arr=(1+1 2+2 3+3) +declare -p arr + +declare +i arr=(hello world) +declare -p arr diff --git a/tests/array27.sub b/tests/array27.sub index 44ed444dd..e2a1e7083 100644 --- a/tests/array27.sub +++ b/tests/array27.sub @@ -38,6 +38,13 @@ done declare -p A +unset A +declare -A A +for k in ']' '*' '@' $'\t' ' '; do + A[$k]=2 +done +declare -p A + unset A declare -A A @@ -69,4 +76,3 @@ for k in ']' '*' '@'; do declare "A[$k]=X" done declare -p A - diff --git a/tests/array29.sub b/tests/array29.sub new file mode 100644 index 000000000..f73c2d1c6 --- /dev/null +++ b/tests/array29.sub @@ -0,0 +1,86 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Issues with CTLESC characters in array subscripts and values. Bash-5.1 and +# earlier didn't quote them correctly and therefore halved the number of +# CTLESCs. + +declare -a var +var=( $'\x01\x01\x01\x01' ) +declare -p var +declare -A v2 +v2=( $'\x01' ab$'\x01'c ) +declare -p v2 + +pv() +{ + local -a foo + foo=( "${var[@]}" ) + declare -p foo +} +pv + +unset -f pv +pv() +{ + local -A foo + eval foo=\( "${v2[@]@k}" \) + declare -p foo +} +pv + +# these are wrong through bash-5.1; there is a fix tagged for bash-5.2 +# when I uncomment that fix, these results will reflect it + +pv1() +{ + local -a foo=( "${var[@]}" ) + declare -p foo +} +pv1 + +pv2() +{ + local -a foo=( [0]="${var[@]}" ) + declare -p foo +} +pv2 + +pv3() +{ + local -A foo=( v "${var[@]}" ) + declare -p foo +} +pv3 + +pv4() +{ + local -A foo=( [v]="${var[@]}" ) + declare -p foo +} +pv4 + +unset -f pv3 pv4 +pv3() +{ + local -A foo=( $'\x01' "${v2[@]}" ) + declare -p foo +} +pv3 + +pv4() +{ + local -A foo=( [$'\x01']="${v2[@]}" ) + declare -p foo +} +pv4 diff --git a/tests/array30.sub b/tests/array30.sub new file mode 100644 index 000000000..14f97980c --- /dev/null +++ b/tests/array30.sub @@ -0,0 +1,46 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +declare -a a +a=() + +echo ${a[42]=foo} +declare -p a + +a=() +echo ${a[$(echo 42)]=foo} +declare -p a + +unset a + +declare -ai a +a=() +echo ${a[42]=4+3} +declare -p a + +a=() +echo ${a[$(echo 42)]=42} +declare -p a + +unset a + +declare -A A +declare -u A +A=() +echo ${A[$(echo Darwin)]=foo} + +declare -p A +A=() + +echo ${A[@]:=foo} +declare -p A diff --git a/tests/assoc.right b/tests/assoc.right index e9aa9172c..9a1662c45 100644 --- a/tests/assoc.right +++ b/tests/assoc.right @@ -16,25 +16,24 @@ declare -A wheat=([two]="b" [three]="c" [one]="a" [zero]="0" ) declare -A chaff=(["hello world"]="flip" [one]="10" [zero]="5" ) ./assoc.tests: line 51: waste: readonly variable ./assoc.tests: line 52: unset: waste: cannot unset: readonly variable -./assoc.tests: line 53: chaff[*]: bad array subscript -./assoc.tests: line 54: [*]=12: invalid associative array key -declare -A chaff=(["hello world"]="flip" [one]="a" ) +declare -A chaff=(["*"]="12" ["hello world"]="flip" [one]="a" ) flip argv[1] = argv[2] = +argv[3] = <12> +argv[4] = +argv[5] = +argv[1] = +argv[2] = <12> argv[3] = argv[4] = -argv[1] = -argv[2] = -argv[3] = argv[1] = argv[2] = -argv[3] = -argv[4] = -argv[1] = +argv[3] = <12> +argv[4] = +argv[5] = +argv[1] = ./assoc.tests: line 71: declare: chaff: cannot destroy array variables in this way -./assoc.tests: line 73: chaff[*]: bad array subscript -./assoc.tests: line 74: [*]=12: invalid associative array key declare -A wheat=([six]="6" ["foo bar"]="qux qix" ) argv[1] = argv[2] = @@ -200,11 +199,7 @@ declare -A hash=([key]="value1 value2" ) declare -A b=([")"]="" ["\""]="" ["]"]="" ["\\"]="" ["\`"]="" ) declare -A b=(["]"]="" ["\`"]="" ) declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" ) -./assoc9.sub: line 36: unset: `dict[']': not a valid identifier -./assoc9.sub: line 36: unset: `dict["]': not a valid identifier -./assoc9.sub: line 36: unset: `dict[\]': not a valid identifier -./assoc9.sub: line 36: unset: `dict[`]': not a valid identifier -declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" ) +declare -A dict=() declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" ) declare -A dict=() 4 @@ -223,6 +218,14 @@ declare -A a=(["80's"]="Depeche Mode" ) declare -A a=(["\$(date >&2)"]="5" ) declare -A myarray=([foo]="bleh" ["foo[bar"]="bleh" ) foo +declare -A assoc=(["\$var"]="value" ) +declare -A assoc=(["\$var"]="value" ) +declare -A assoc=(["\$var"]="value" ) +declare -A assoc=() +./assoc9.sub: line 154: typeset: `foo[foo]bar]=bax': not a valid identifier +foo]bar +bip +declare -A foo=(["foo]bar"]="bip" ) ./assoc10.sub: line 14: declare: a: cannot convert indexed to associative array f: declare -a a ./assoc10.sub: line 17: declare: a: cannot convert associative to indexed array @@ -250,11 +253,148 @@ declare -A dict=(["?"]="quest" ["*"]="star" ["'"]="squote" ["\$"]="dol" ["\""]=" dict=( "?" "quest" "*" "star" "'" "squote" "\$" "dol" "\"" "dquote" "\\" "bslash" "@" "at" "}" "rbrace" "{" "lbrace" "\`" "bquote" ) declare -A foo=([two]="" [one]="1" ) foo=( two "" one "1" ) -rparen dquote rbrace bs -declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" ) -")" "rparen" "\"" "dquote" "]" "rbrace" "\\" "bs" -declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" ) -declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" ) -declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" ) +rparen dquote rbracket bs +declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbracket" ["\\"]="bs" ) +")" "rparen" "\"" "dquote" "]" "rbracket" "\\" "bs" +declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbracket" ["\\"]="bs" ) +declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbracket" ["\\"]="bs" ) +declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbracket" ["\\"]="bs" ) declare -Arx foo=([two]="2" [three]="3" [one]="1" ) ./assoc11.sub: line 90: foo: readonly variable +declare -A v1=(["1 2"]="3" ) +declare -A v2=(["1 2"]="3" ) +declare -A v3=(["1 2"]="3" ) +declare -A v1=(["1 2"]="3 4 5" ) +declare -A v2=(["1 2"]="3 4 5" ) +declare -A v3=(["1 2"]="3 4 5" ) +declare -A v1=(["1 2"]="3 4 5" ) +declare -A v2=(["1 2"]="3 4 5" ) +declare -A v3=(["1 2"]="3 4 5" ) +declare -A v1=(["1 2"]="3 4 5" ) +declare -A v2=(["1 2"]="3 4 5" ) +declare -A v3=(["1 2"]="3 4 5" ) +declare -A v1=(["20 40 80"]="xtra" ["1 2"]="3 4 5" ) +declare -A v2=(["20 40 80"]="xtra" ["1 2"]="3 4 5" ) +declare -A v3=(["1 2"]="3 4 5" ["\$xtra"]="xtra" ) +declare -A v1=(["20 40 80"]="new xtra" ["1 2"]="3 4 5" ) +declare -A v2=(["20 40 80"]="new xtra" ["1 2"]="3 4 5" ) +declare -A v3=(["1 2"]="3 4 5" ["\$xtra"]="new xtra" ) +declare -A assoc=(["*"]="star" ["!"]="bang" ["@"]="at" ) +at +star +declare -A a=(["@"]="at" ) +./assoc13.sub: line 22: ia[@]: bad array subscript +declare -a ia +declare -A a=(["@"]="at2" ) +declare -A a=(["@"]=" string" ) +declare -A a=(["*"]="star2" ["@"]="at" ) +declare -A assoc=([hello]="world" ["key with spaces"]="value with spaces" [foo]="bar" [one]="1" ) +argv[1] = +argv[2] = +argv[3] = +argv[4] = <1> +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = +argv[7] = +argv[8] = <1> +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[5] = +argv[6] = <1> +argv[7] = +argv[8] = +argv[1] = <'hello'> +argv[2] = <'world'> +argv[3] = <'key with spaces'> +argv[4] = <'value with spaces'> +argv[5] = <'one'> +argv[6] = <'1'> +argv[7] = <'foo'> +argv[8] = <'bar'> +argv[1] = <'hello'> +argv[2] = <'world'> +argv[3] = <'key with spaces'> +argv[4] = <'value with spaces'> +argv[5] = <'one'> +argv[6] = <'1'> +argv[7] = <'foo'> +argv[8] = <'bar'> +declare -A clone=([hello]="world" ["key with spaces"]="value with spaces" [foo]="bar" [one]="1" ) +declare -A posparams=([hello]="world" ["key with spaces"]="value with spaces" [foo]="bar" [one]="1" ) +declare -A var=([$'\001']=$'\001\001\001\001' ) +declare -A v2=([$'\001']=$'\001\001\001\001' ) +argv[1] = <^A> +argv[2] = <^A^A^A^A> +declare -A foo=([$'\001']=$'\001\001\001\001' ) +declare -A var=([$'\001']=$'\001\001\001\001' ) +argv[1] = <^A> +argv[2] = <^A^A^A^A> +declare -A foo=([$'\001']=$'\001\001\001\001' ) +declare -A var=([$'\001']=$'\001\001\001\001' ) +argv[1] = <^A> +argv[2] = <^A^A^A^A> +declare -A foo=([$'\001']=$'\001\001\001\001' ) +declare -a var=([0]=$'\001\001\001\001') +argv[1] = <$'\001\001\001\001'> +declare -a foo=([0]=$'\001\001\001\001') +declare -a var=([0]=$'\001\001\001\001') +argv[1] = <$'\001\001\001\001'> +declare -a foo=([0]=$'\001\001\001\001') +declare -A var=([two]=$'ab\001cd' [one]=$'\001\001\001\001' ) +declare -A foo=([two]=$'ab\001cd' [one]=$'\001\001\001\001' ) +declare -A foo=([$'\001']=$'ab\001cd' ) +declare -A foo=([$'\001']=$'\001\001\001\001' ) +declare -A A=(["\$(echo Darwin ; echo stderr>&2)"]="darjeeling" [Darwin]="darjeeling" ) +stderr +darjsharking +darjsharking +stderr +darj +darj +stderr +DARJEELING +DARJEELING +stderr +'darjeeling' +'darjeeling' +stderr +darjeel +darjeel +stderr +10 +10 +stderr +darjeeling +darjeeling +stderr +set +set +stderr +set +set +stderr +42 +42 +declare -A A=(["]"]="rbracket" ["["]="lbracket" ) +declare -A A=() +declare -A A=(["]"]="rbracket" ["["]="lbracket" ) +declare -A A=() +declare -A A=(["]"]="rbracket" ["["]="lbracket" ) +declare -A A=() +declare -A A=(["]"]="rbracket" ["["]="lbracket" ) +declare -A A=() +declare -A A=(["]"]="rbracket" ["["]="lbracket" ) +declare -A A=() +declare -A A=(["]"]="rbracket" ["["]="lbracket" ) +declare -A A=() +declare -A A=(["]"]="rbracket" ["["]="lbracket" ) +declare -A A=() +5: ok 1 diff --git a/tests/assoc.tests b/tests/assoc.tests index 8d5c89275..c656536b5 100644 --- a/tests/assoc.tests +++ b/tests/assoc.tests @@ -47,7 +47,7 @@ declare +i chaff chaff[hello world]=flip declare -p chaff -# TEST - errors +# TEST - no longer errors waste[stuff]=other unset waste chaff[*]=12 @@ -244,3 +244,25 @@ ${THIS_SH} ./assoc10.sub # test assigning associative arrays using compound key/value pair assignments ${THIS_SH} ./assoc11.sub + +# more kvpair associative array assignment tests +${THIS_SH} ./assoc12.sub + +# assignment to @ and * +${THIS_SH} ./assoc13.sub + +# tests of the @k transformation on associative arrays +${THIS_SH} ./assoc14.sub + +# tests with subscripts and values containing 0x01 (some indexed array tests too) +${THIS_SH} ./assoc15.sub + +# tests with subscripts being expanded more than one in ${xxx} word expansions +${THIS_SH} ./assoc16.sub + +# tests with `[' and `]' subscripts and `unset' +${THIS_SH} ./assoc17.sub + +# tests with `[' and `]' subscripts and printf/read/wait builtins +${THIS_SH} ./assoc18.sub + diff --git a/tests/assoc11.sub b/tests/assoc11.sub index 13111a52b..9d9afae95 100644 --- a/tests/assoc11.sub +++ b/tests/assoc11.sub @@ -69,7 +69,7 @@ foo=(one 1 two) declare -p foo echo foo=\( ${foo[@]@K} \) -typeset -A a=( [\\]=bs [\"]=dquote [\)]=rparen [\]]=rbrace ) +typeset -A a=( [\\]=bs [\"]=dquote [\)]=rparen [\]]=rbracket ) echo ${a[@]} declare -p a diff --git a/tests/assoc12.sub b/tests/assoc12.sub new file mode 100644 index 000000000..359dc0b37 --- /dev/null +++ b/tests/assoc12.sub @@ -0,0 +1,74 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +foo='1 2' +bar='3 4 5' +xtra='20 40 80' + +declare -A v1=( $foo 3 ) +declare -p v1 + +declare -A v2=( [$foo]=3 ) +declare -p v2 + +declare -A v3 +v3=( $foo 3 ) +declare -p v3 + +unset v1 v2 v3 + +declare -A v1=( $foo $bar ) +declare -p v1 + +declare -A v2=( [$foo]=$bar ) +declare -p v2 + +declare -A v3 +v3=( $foo $bar ) +declare -p v3 + +unset v1 v2 v3 + +declare -A v1=( "$foo" $bar ) +declare -p v1 + +declare -A v2=( ["$foo"]=$bar ) +declare -p v2 + +declare -A v3 +v3=( "$foo" $bar ) +declare -p v3 + +unset v1 v2 v3 + +declare -A v1=( "$foo" "$bar" ) +declare -p v1 + +declare -A v2=( ["$foo"]="$bar" ) +declare -p v2 + +declare -A v3 +v3=( "$foo" "$bar" ) +declare -p v3 + +v1+=( $xtra xtra ) +v2+=( "$xtra" xtra ) +v3+=( '$xtra' xtra ) + +declare -p v1 v2 v3 + +v1+=( [$xtra]='new xtra' ) +v2+=( ["$xtra"]='new xtra' ) +v3+=( ['$xtra']='new xtra' ) + +declare -p v1 v2 v3 diff --git a/tests/assoc13.sub b/tests/assoc13.sub new file mode 100644 index 000000000..7e669727d --- /dev/null +++ b/tests/assoc13.sub @@ -0,0 +1,44 @@ +# assignment to @ and * + +declare -A assoc +key=@ +key2=* + +assoc[$key]=at +assoc[$key2]=star +assoc[!]=bang +declare -p assoc + +echo ${assoc[$key]} +echo ${assoc[$key2]} +unset assoc + +declare -A a + +a[@]=at +declare -p a + +declare -a ia +ia[@]=garbage + +declare -p ia + +declare a[@]=at2 +declare -p a + +unset a ia + +declare -A a +printf -v a[@] "%10s" string + +declare -p a +unset a + +declare -A a +declare a[$key2]=star +declare a[@]=at +declare a[*]=star2 + +declare -p a +unset a + diff --git a/tests/assoc14.sub b/tests/assoc14.sub new file mode 100644 index 000000000..95df04925 --- /dev/null +++ b/tests/assoc14.sub @@ -0,0 +1,35 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +declare -A assoc=(hello world "key with spaces" "value with spaces" one 1 foo bar) +declare -p assoc + +recho "${assoc[@]}" +recho "${assoc[@]@k}" + +recho "${assoc[*]}" +recho "${assoc[*]@k}" + +set -- hello world "key with spaces" "value with spaces" one 1 foo bar +recho "${@}" +recho "${@@K}" +recho "${@@k}" + +declare -A clone +eval clone=\( "${assoc[@]@K}" \) +declare -p clone + +declare -A posparams +eval posparams=\( "${@@K}" \) +declare -p posparams diff --git a/tests/assoc15.sub b/tests/assoc15.sub new file mode 100644 index 000000000..c47b15358 --- /dev/null +++ b/tests/assoc15.sub @@ -0,0 +1,92 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# associative arrays first + +v=$'\x01' + +declare -A var foo v2 +var=( $'\x01' $'\x01\x01\x01\x01' ) +declare -p var +v2=( $v $v$v$v$v ) +declare -p v2 + +recho "${var[@]@k}" +eval foo=\( "${var[@]@k}" \) +declare -p foo + +var=(   ) +declare -p var + +recho "${var[@]@k}" +eval foo=\( "${var[@]@k}" \) +declare -p foo + +var=( []= ) +declare -p var + +recho "${var[@]@k}" +eval foo=\( "${var[@]@k}" \) +declare -p foo + +# now indexed arrays +unset -v var foo + +declare -a var +var=( [0]= ) +declare -p var + +declare -a foo +recho "${var[@]@Q}" +eval foo=\( "${var[@]@Q}" \) +declare -p foo + +var=(  ) +declare -p var + +unset foo + +declare -a foo +recho "${var[@]@Q}" +eval foo=\( "${var[@]@Q}" \) +declare -p foo + +# similar to array29.sub +unset -v var foo v2 + +declare -A var +var=( one $'\x01\x01\x01\x01' two ab$'\001'cd ) +declare -p var + +pv() +{ + local -A foo + eval foo=\( "${var[@]@k}" \) + declare -p foo +} +pv + +pv1() +{ + local -A foo=( $'\x01' "${var[two]}" ) + declare -p foo +} +pv1 + +pv2() +{ + local -A foo=( [$'\x01']="${var[one]}" ) + declare -p foo +} +pv2 diff --git a/tests/assoc16.sub b/tests/assoc16.sub new file mode 100644 index 000000000..ae8296b30 --- /dev/null +++ b/tests/assoc16.sub @@ -0,0 +1,56 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# bash versions up to and including bash-5.1 expanded these subscripts more +# than once + +declare -A A + +A["Darwin"]=darjeeling +A['$(echo Darwin ; echo stderr>&2)']=darjeeling + +declare -p A + +echo ${A[$(echo Darwin ; echo stderr>&2)]//eel/shark} +echo ${A['$(echo Darwin ; echo stderr>&2)']//eel/shark} + +echo ${A[$(echo Darwin ; echo stderr>&2)]:0:4} +echo ${A['$(echo Darwin ; echo stderr>&2)']:0:4} + +echo ${A[$(echo Darwin ; echo stderr>&2)]^^} +echo ${A['$(echo Darwin ; echo stderr>&2)']^^} + +echo ${A[$(echo Darwin ; echo stderr>&2)]@Q} +echo ${A['$(echo Darwin ; echo stderr>&2)']@Q} + +echo ${A[$(echo Darwin ; echo stderr>&2)]%ing} +echo ${A['$(echo Darwin ; echo stderr>&2)']%ing} + +echo ${#A[$(echo Darwin ; echo stderr>&2)]} +echo ${#A['$(echo Darwin ; echo stderr>&2)']} + +echo ${A[$(echo Darwin ; echo stderr>&2)]:-value} +echo ${A['$(echo Darwin ; echo stderr>&2)']:-value} + +echo ${A[$(echo Darwin ; echo stderr>&2)]:+set} +echo ${A['$(echo Darwin ; echo stderr>&2)']:+set} + +echo ${A[$(echo Darwin ; echo stderr>&2)]:+set} +echo ${A['$(echo Darwin ; echo stderr>&2)']:+set} + +darjeeling=7*6 +Darwin=7*4 + +echo $(( ${A[$(echo Darwin ; echo stderr>&2)]} )) +echo $(( ${A['$(echo Darwin ; echo stderr>&2)']} )) diff --git a/tests/assoc17.sub b/tests/assoc17.sub new file mode 100644 index 000000000..a98aaa158 --- /dev/null +++ b/tests/assoc17.sub @@ -0,0 +1,58 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# test behavior with `unset' and `[' and ']' subscripts + +declare -A A +rkey=']' +lkey='[' + +A[$rkey]=rbracket +A[$lkey]=lbracket +declare -p A + +unset A[$rkey] +unset A[$lkey] +declare -p A + +A["$rkey"]=rbracket +A["$lkey"]=lbracket +declare -p A + +unset A["$rkey"] +unset A["$lkey"] +declare -p A + +A[\]]=rbracket +A[\[]=lbracket +declare -p A + +unset A[\]] +unset A[\[] +declare -p A + +A[']']=rbracket +A['[']=lbracket +declare -p A + +unset A[']'] +unset A['['] +declare -p A + +A["]"]=rbracket +A["["]=lbracket +declare -p A + +unset A["]"] +unset A["["] +declare -p A diff --git a/tests/assoc18.sub b/tests/assoc18.sub new file mode 100644 index 000000000..059760932 --- /dev/null +++ b/tests/assoc18.sub @@ -0,0 +1,59 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# test behavior of builtins that can take array subscript arguments, make +# sure they work in the presence of associative arrays and `problematic' keys +# if assoc_expand_once is set +# +# affected builtins: printf, read, wait + +declare -A A +rkey=']' +lkey='[' + +shopt -s assoc_expand_once + +printf -v A[$rkey] rbracket +printf -v A[$lkey] lbracket +declare -p A + +unset A[$rkey] +unset A[$lkey] +declare -p A + +unset A +declare -A A + +read A[$rkey] <</dev/null +ulimit -S -c 0 2>/dev/null +ulimit -c -S -- 1000 2>/dev/null +ulimit -c 2>/dev/null # check that break breaks loops for i in a b c; do echo $i; break; echo bad-$i; done diff --git a/tests/builtins5.sub b/tests/builtins5.sub index d36e03a5e..4fcf793dd 100644 --- a/tests/builtins5.sub +++ b/tests/builtins5.sub @@ -36,15 +36,25 @@ echo ${#a[@]} typeset -A B typeset -a b +echo ${#B[@]} +echo ${#b[@]} + scalar1=foo scalar2= +# this now checks for A[@] treating @ as a valid key - post-bash-5.1 if [ -v A[@] ]; then echo assoc A; else echo assoc A unset; fi if [ -v a[@] ]; then echo array a; else echo array a unset; fi +if [ ${#A[@]} -gt 0 ]; then echo assoc A; else echo assoc A unset; fi +if [ ${#a[@]} -gt 0 ]; then echo array a; else echo array a unset; fi + if [ -v B[@] ]; then echo assoc B; else echo assoc B unset; fi if [ -v b[@] ]; then echo array b; else echo array b unset; fi +if [ ${#B[@]} -gt 0 ]; then echo assoc B; else echo assoc B unset; fi +if [ ${#b[@]} -gt 0 ]; then echo array b; else echo array b unset; fi + if [ -v scalar1[@] ]; then echo scalar 1; else echo scalar 1 unset; fi if [ -v scalar2[@] ]; then echo scalar 2; else echo scalar 2 unset; fi if [ -v scalar3[@] ]; then echo scalar 3; else echo scalar 3 unset; fi @@ -71,4 +81,3 @@ echo scalar: ${#scalar3} echo scalar: ${#scalar3[@]} - diff --git a/tests/case.right b/tests/case.right index 557bcadfb..d33c8c5af 100644 --- a/tests/case.right +++ b/tests/case.right @@ -14,6 +14,7 @@ no no no ok +esac ok 1 ok 2 ok 3 diff --git a/tests/case.tests b/tests/case.tests index 2ffcb9063..7ad4c683a 100644 --- a/tests/case.tests +++ b/tests/case.tests @@ -62,6 +62,10 @@ case abc in (["$empty"]|[!a-z]*) echo yes ;; (*) echo no ;; esac case " " in ( [" "] ) echo ok;; ( * ) echo no;; esac +# posix issue discovered after bash-5.1 was released +case esac in (esac) echo esac;; esac +case k in else|done|time|esac) for f in 1 2 3 ; do :; done esac + # tests of quote removal and pattern matching ${THIS_SH} ./case1.sub ${THIS_SH} ./case2.sub diff --git a/tests/complete.right b/tests/complete.right index 5bc89a055..c8bf1dc0c 100644 --- a/tests/complete.right +++ b/tests/complete.right @@ -1,41 +1,49 @@ complete -f -X '!*.+(ps|PS)' gs -complete -c nice complete -e printenv -complete -c gdb complete -f -X '!*.texi*' texi2html -complete -j -P '%' fg complete -g groupmod -complete -f -X '!*.dvi' dvips -complete -f -X '!*.texi*' texi2dvi complete -v -S '=' typeset -complete -f . complete -c nohup complete -a unalias complete -g groupdel complete -A hostname telnet -complete -v -S '=' declare -complete -v -S '=' export complete -v -S '=' local complete -v -S '=' readonly complete -o bashdefault -o filenames -o nospace -F _comp_cd cd -complete -f -X '!*.dvi' xdvi complete -c type complete -f ln complete -f -X '!*.+(gz|tgz)' gunzip complete -f -X '!*.texi*' makeinfo -complete -u su complete -j -P '%' jobs -complete -o dirnames -o filenames -o nospace -d popd -complete -A signal trap complete -o dirnames -o filenames -o nospace -d pushd complete -f -X '!*.pdf' acroread complete -v unset complete -f -X '!*.+(ps|PS)' ghostview -complete -j -W '$(ps -x | tail +2 | cut -c1-5)' -P '%' wait complete -A hostname rsh complete -c exec -complete -f -X '!*.Z' zmore complete -A signal kill +complete -c eval +complete -f chown +complete -f gzip +complete -W '"${GROUPS[@]}"' newgrp +complete -A shopt shopt +complete -A hostname ftp +complete -A hostname rlogin +complete -v getopts +complete -c nice +complete -c gdb +complete -j -P '%' fg +complete -f -X '!*.dvi' dvips +complete -f -X '!*.texi*' texi2dvi +complete -f . +complete -v -S '=' declare +complete -v -S '=' export +complete -f -X '!*.dvi' xdvi +complete -u su +complete -o dirnames -o filenames -o nospace -d popd +complete -A signal trap +complete -j -W '$(ps -x | tail +2 | cut -c1-5)' -P '%' wait +complete -f -X '!*.Z' zmore complete -j -P '%' disown complete -f -X '!*.+(ps|PS)' gs complete -f -X '!*.+(ps|PS)' gv @@ -45,19 +53,11 @@ complete -A stopped -P '%' bg complete -f cat complete -d mkdir complete -A helptopic help -complete -c eval -complete -f chown complete -v read complete -c -k time complete -f -X '!*.Z' zcat -complete -f gzip -complete -W '"${GROUPS[@]}"' newgrp complete -f -X '!*.Z' uncompress complete -d rmdir -complete -A shopt shopt -complete -A hostname ftp complete -f more -complete -A hostname rlogin -complete -v getopts complete -f -X '!*.+(gz|tgz)' gzcat ./complete.tests: line 123: complete: notthere: no completion specification diff --git a/tests/comsub-eof.right b/tests/comsub-eof.right index 426779852..cd5ab6923 100644 --- a/tests/comsub-eof.right +++ b/tests/comsub-eof.right @@ -1,15 +1,17 @@ -./comsub-eof0.sub: line 1: unexpected EOF while looking for matching `)' -./comsub-eof0.sub: line 5: syntax error: unexpected end of file +./comsub-eof0.sub: line 5: warning: here-document at line 3 delimited by end-of-file (wanted `EOF') +hi hi ./comsub-eof2.sub: line 2: warning: here-document at line 1 delimited by end-of-file (wanted `EOF') hi -./comsub-eof3.sub: line 1: unexpected EOF while looking for matching `)' -./comsub-eof3.sub: line 5: syntax error: unexpected end of file -./comsub-eof4.sub: line 6: warning: here-document at line 4 delimited by end-of-file (wanted `EOF') +./comsub-eof3.sub: line 4: warning: here-document at line 1 delimited by end-of-file (wanted `EOF') +./comsub-eof3.sub: line 5: unexpected EOF while looking for matching `)' +./comsub-eof4.sub: line 3: warning: here-document at line 1 delimited by end-of-file (wanted `EOF') contents -./comsub-eof5.sub: line 8: warning: here-document at line 6 delimited by end-of-file (wanted `)') +./comsub-eof5.sub: line 4: warning: here-document at line 2 delimited by end-of-file (wanted `)') +hi +./comsub-eof5.sub: line 9: warning: here-document at line 7 delimited by end-of-file (wanted `EOF') hi -./comsub-eof5.sub: line 13: warning: here-document at line 11 delimited by end-of-file (wanted `EOF') +./comsub-eof5.sub: line 15: warning: here-document at line 13 delimited by end-of-file (wanted `)') hi -./comsub-eof6.sub: line 1: unexpected EOF while looking for matching `)' +./comsub-eof6.sub: command substitution: line 3: unexpected EOF while looking for matching `)' diff --git a/tests/comsub-eof0.sub b/tests/comsub-eof0.sub index 7b0775fb1..7490faabc 100644 --- a/tests/comsub-eof0.sub +++ b/tests/comsub-eof0.sub @@ -1,3 +1,5 @@ +# it's only the space before the paren that makes this an error +# when I fix it, it will show up here foo=$(cat <. +# +: ${THIS_SH:=./bash} + +# problems with recognzing `esac' after a right paren in a command substitution + +: $(case x in x) esac) +: $(case x in x) ;; x) esac) +# non-reserved word beginning with e +: $(case x in x) ;; x) echo ;; esac) +# reserved word beginning with e +: $(case x in x) ;; x) eval esac ;; esac) + +: $(case x in x ) esac) +: $(case x in x ) ;; x) esac) + +: $(case x in (x) esac) +: $(case x in (x) ;; (x) esac) +: $(case x in (x) ;; x) esac) +: $(case x in (x) (echo a) esac) + +: $(case x in (x) (echo esac) esac) +: $(case x in x) (echo esac) esac) + +# these errors should be caught sooner +${THIS_SH} -c ': $(case x in x) ;; x) done esac)' bash +${THIS_SH} -c ': $(case x in x) ;; x) done ;; esac)' bash +${THIS_SH} -c ': $(case x in x) (esac) esac)' bash + +# these are not errors +: $(case x in x) ;; x) eval done ;; esac) + +# these are just ridiculous +: $(case x in (x) a() { echo a; } esac) +: $(case x in (x) if :; then echo a; fi esac) +: $(case x in (x) { echo a; } esac) +: $(case x in (x) while false; do echo a; done esac) +: $(case x in (x) case y in (y) echo a;; esac esac) +: $(case x in (x) case y in (y) echo a;; esac ;; (y) foo ;; esac) + +: $(case x in x) a() { echo a; } esac) +: $(case x in x) if :; then echo a; fi esac) +: $(case x in x) { echo a; } esac) +: $(case x in x) while false; do echo a; done esac) +: $(case x in x) case y in (y) echo a;; esac esac) +: $(case x in x) case y in (y) echo a;; esac ;; y) foo ;; esac) +: $(case x in x) case y in y) echo a;; esac ;; y) foo ;; esac) + +: $(case ni in esac) +: $(case in in esac) + +: $(case x in in|esac) foo;; esac) +: $(case esac in (esac) echo esac;; esac) +: $(case k in else|done|time|esac) for f in 1 2 3 ; do :; done esac) + +# this is an error +${THIS_SH} -c ': $(case x in esac|in) foo;; esac)' bash + +${THIS_SH} -c ': $(case x in x) ;; x) done)' bash diff --git a/tests/comsub-posix6.sub b/tests/comsub-posix6.sub new file mode 100644 index 000000000..212ad204b --- /dev/null +++ b/tests/comsub-posix6.sub @@ -0,0 +1,43 @@ +: ${THIS_SH:=./bash} + +# comsub should not inherit PST_COMPASSIGN + +C=($(echo "${A[@]}" | \ + (while read -d ' ' i; do + C=(${C/ ${i%% *} / }) + done + echo ${C[@]}))) + +# comsub should not inherit PST_CASEPAT + +${THIS_SH} -c ' +case foo in +$( esac ; bar=foo ; echo "$bar")) echo bad 2;; +*) echo ok 2;; +esac + +echo we should not see this' case + +# comsub should not inherit PST_SUBSHELL + +${THIS_SH} -c '( case foo in + ( $(echo foo | cat )) echo ok 2;; + *) echo bad 2;; + esac + + echo $( echo inside ) outside )' subshell + +# comsub should not inherit PST_REDIRLIST + +${THIS_SH} -c ' +{fd} argv[2] = <-e> argv[3] = argv[1] = argv[1] = argv[1] = +nested #esac a ok 1 @@ -55,3 +56,24 @@ d \ g d \ g +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +ok 6 +ok 7 +ok 9 +ok 8 +ok 8 +Mon Aug 29 20:03:02 EDT 2022 +post foo +Mon Aug 29 20:03:02 EDT 2022 +post foo1 +Mon Aug 29 20:03:02 EDT 2022 +Mon Aug 29 20:03:02 EDT 2022 after +7 +Mon Aug 29 20:03:02 EDT 2022 +hey after x +./comsub6.sub: line 40: syntax error near unexpected token `)' +./comsub6.sub: line 40: `math1)' diff --git a/tests/comsub.tests b/tests/comsub.tests index 478630248..698ce30b0 100644 --- a/tests/comsub.tests +++ b/tests/comsub.tests @@ -69,7 +69,16 @@ comsub_foo_1() echo $(while true; do case $HOME in /*) echo abs ;; esac; done) } +echo $( +echo $( +echo $(echo $( echo nested ) +) +) +) + ${THIS_SH} ./comsub1.sub ${THIS_SH} ./comsub2.sub ${THIS_SH} ./comsub3.sub ${THIS_SH} ./comsub4.sub +${THIS_SH} ./comsub5.sub +${THIS_SH} ./comsub6.sub diff --git a/tests/comsub5.sub b/tests/comsub5.sub new file mode 100644 index 000000000..cc83374c1 --- /dev/null +++ b/tests/comsub5.sub @@ -0,0 +1,51 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# this is a new feature: expanding aliases when initially parsing command +# substitutions. required by posix, so enabled in posix mode. default mode +# stays backwards compatible. + +shopt -s expand_aliases +set -o posix + +alias switch=case + +switch foo in foo) echo ok 1;; esac + +echo $( switch foo in foo) echo ok 2;; esac ) +echo "$( switch foo in foo) echo ok 3;; esac )" + +echo $( switch foo in (foo) echo ok 4;; esac ) +echo "$( switch foo in (foo) echo ok 5;; esac )" + +alias nest='(' + +echo $( nest echo ok 6 ) ) +echo "$( nest echo ok 7 ) )" + +alias short='echo ok 8 )' + +alias DO='{ ' +alias DONE='}' +got=$(DO +echo ok 9; DONE) +echo "$got" + +echo $( short +echo "$( short " + +# remember that short" won't work because you start a new quoting context +# inside $( and the token (`short') won't be delimited by the ending double +# quote, so there's no opportunity to perform the alias expansion that would +# terminate the command substitution diff --git a/tests/comsub6.sub b/tests/comsub6.sub new file mode 100644 index 000000000..d2b02bf43 --- /dev/null +++ b/tests/comsub6.sub @@ -0,0 +1,40 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +DATE='Mon Aug 29 20:03:02 EDT 2022' +shopt -s expand_aliases + +alias foo='echo $(echo $DATE)' +alias foo1='echo $(echo $DATE) ' + +foo +echo post foo + +foo1 +echo post foo1 + +alias comsub0='echo $(echo $DATE' +comsub0) +comsub0 ) after + +alias math0='echo $(( 4+3 )' +math0) + +alias x='VAR=$(echo hey)' +x +foo + +echo $VAR after x + +alias math1='echo $( date )' +math1) diff --git a/tests/cond.right b/tests/cond.right index 59a4a8869..a72a1537e 100644 --- a/tests/cond.right +++ b/tests/cond.right @@ -2,6 +2,10 @@ returns: 0 returns: 0 returns: 1 returns: 0 +1 +0 +1 +0 returns: 0 returns: 0 returns: 0 @@ -23,10 +27,12 @@ returns: 0 returns: 1 returns: 1 returns: 0 -./cond.tests: line 114: [[: 4+: syntax error: operand expected (error token is "+") +./cond.tests: line 122: [[: 4+: syntax error: operand expected (error token is "+") returns: 1 returns: 0 returns: 0 +returns: 0 +returns: 0 returns: 1 returns: 0 returns: 0 diff --git a/tests/cond.tests b/tests/cond.tests index aa6a81047..c0747e981 100644 --- a/tests/cond.tests +++ b/tests/cond.tests @@ -33,6 +33,14 @@ echo returns: $? [[ ! x || x ]] echo returns: $? +# ! toggles on and off rather than just setting an `invert result' flag +# this differs from ksh93 +[[ ! 1 -eq 1 ]]; echo $? +[[ ! ! 1 -eq 1 ]]; echo $? + +[[ ! ! ! 1 -eq 1 ]]; echo $? +[[ ! ! ! ! 1 -eq 1 ]]; echo $? + # parenthesized terms didn't work right until post-2.04 [[ a ]] echo returns: $? @@ -122,6 +130,13 @@ A=7 [[ $IVAR -eq A ]] echo returns: $? +[[ "$IVAR" -eq "7" ]] +echo returns: $? + +A=7 +[[ "$IVAR" -eq "A" ]] +echo returns: $? + unset IVAR A # more pattern matching tests @@ -207,6 +222,9 @@ del=$'\177' [[ "" == "$foo" ]] && echo ok 4 [[ "$del" == "${foo,,}" ]] || echo ok 5 +# allow reserved words after a conditional command just because +if [[ str ]] then [[ str ]] fi + ${THIS_SH} ./cond-regexp1.sub ${THIS_SH} ./cond-regexp2.sub diff --git a/tests/cprint.right b/tests/cprint.right index 200007241..269136dc2 100644 --- a/tests/cprint.right +++ b/tests/cprint.right @@ -19,7 +19,7 @@ tf () i=$(( i + 1 )); done; [[ -r /dev/fd/0 && -w /dev/fd/1 ]] || echo oops > /dev/null; - for name in $( echo 1 2 3 ); + for name in $(echo 1 2 3); do test -r /dev/fd/$name; done; diff --git a/tests/dollar-at-star b/tests/dollar-at-star old mode 100755 new mode 100644 index d48089891..721eea124 --- a/tests/dollar-at-star +++ b/tests/dollar-at-star @@ -1,3 +1,17 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + # first, let's start with the basics recho "$@" @@ -246,6 +260,11 @@ ${THIS_SH} ./dollar-at-star8.sub # with different values for IFS ${THIS_SH} ./dollar-at-star9.sub +# tests for expansions of "$*" and "$@" and their array equivalents when $1 == '' +# and we're using the POSIX word expansions +${THIS_SH} ./dollar-at-star10.sub +${THIS_SH} ./dollar-at-star11.sub + # tests for special expansion of "$*" and "${array[*]}" when used with other # expansions -- bugs through bash-2.05b ${THIS_SH} ./dollar-star1.sub diff --git a/tests/dollar-at-star10.sub b/tests/dollar-at-star10.sub new file mode 100644 index 000000000..6b52b015d --- /dev/null +++ b/tests/dollar-at-star10.sub @@ -0,0 +1,66 @@ +# checks for array variables and positional parameter expansions losing quoted +# null string expansions -- problem through bash-5.1 + +set -- '' +myvar[0]= +a="${myvar[*]}" + +recho "$*" +recho "${*}" + +recho "${a}" +recho "${myvar[*]}" + +recho "${a:+nonnull}" +recho "${myvar[*]:+nonnull}" + +a="${myvar[@]}" + +recho "$@" +recho "${@}" + +recho "${a}" +recho "${myvar[@]}" + +recho "${a:+nonnull}" +recho "${myvar[@]:+nonnull}" + +# check to make sure literal CTLNULs are handled correctly +set -- $'\x7f' + +recho "$@" +recho "${@}" +recho "${@:+nonnull}" + +recho "$*" +recho "${*}" +recho "${*:+nonnull}" + +shift $# + +# these should echo nothing +recho "${@}" +recho "${@:+nonnull}" + +unset -v a + +# make sure that other null expansions result in null strings where appropriate +set -- '' +a[0]= + +recho "$*"$x +recho "${*}"$x + +recho "$@"$x +recho "${@}"$x + +recho "${a[*]}"$x +recho "${a[@]}"$x + + +recho "$@"$x +recho "${@}"$x + +recho "${a[*]}" +recho "${a[@]}" + diff --git a/tests/dollar-at-star11.sub b/tests/dollar-at-star11.sub new file mode 100644 index 000000000..b7a6ec468 --- /dev/null +++ b/tests/dollar-at-star11.sub @@ -0,0 +1,80 @@ +a[0]='/' +set -- / + +# these should all result in the empty (null) string + +recho "${a[0]%?}" +recho "${a[*]%?}" +recho "${a[@]%?}" + +recho "${*%?}" +recho "${@%?}" + +recho "${a[0]#?}" +recho "${a[*]#?}" +recho "${a[@]#?}" + +recho "${*#?}" +recho "${@#?}" + +recho "${a[0]/\//}" +recho "${a[*]/\//}" +recho "${a[@]/\//}" + +recho "${*/\//}" +recho "${@/\//}" + +recho "${a[0]:1:1}" +# these next four will all echo / + +# arrays are zero-based +recho "${a[*]:0:1}" +recho "${a[@]:0:1}" +# but the positional parameters start at 1 +recho "${*:1:1}" +recho "${@:1:1}" + +a[0]='' +set -- '' + +# arrays are zero-based +recho "${a[*]:0:1}" +recho "${a[@]:0:1}" + +recho "${*:1:1}" +recho "${@:1:1}" + +# these should all result in the empty (null) string, or quoted as such + +recho "${a[0]@Q}" +recho "${a[*]@Q}" +recho "${a[@]@Q}" + +recho "${*@Q}" +recho "${@@Q}" + +recho "${a[0]@L}" +recho "${a[*]@L}" +recho "${a[@]@L}" + +recho "${*@L}" +recho "${@@L}" + +# examples from the bug report +unset -v a + +a[0]='/' +for i in "${a[@]%/}"; do recho "$i"; done + +a[0]='' +for i in "${a[@]}"; do recho "$i"; done + +a[0]='/' +a[1]="//" +for i in "${a[@]%/}"; do recho "$i"; done + +unset -v x y +x=('/') +y=("${x[@]%/}") + +echo "${#x[@]}:${#y[@]}" diff --git a/tests/dollar.right b/tests/dollar.right index 09910d7e3..10c5cca13 100644 --- a/tests/dollar.right +++ b/tests/dollar.right @@ -399,6 +399,73 @@ argv[1] = <^?> argv[1] = <^?> argv[1] = <> argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <^?> +argv[1] = <^?> +argv[1] = +argv[1] = <^?> +argv[1] = <^?> +argv[1] = +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <''> +argv[1] = <''> +argv[1] = <''> +argv[1] = <''> +argv[1] = <''> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = +1:1 xa|xb|xc xa|xb|xc a|b|c diff --git a/tests/dynvar.tests b/tests/dynvar.tests index 5aefab64e..ddf69ed1c 100644 --- a/tests/dynvar.tests +++ b/tests/dynvar.tests @@ -50,15 +50,27 @@ unset before after # EPOCHSECONDS # not exact, but should work -# could also use python -c 'import time; ts = int(time.time()); print(ts)' -now1=$(perl -e 'print time') +# date +%s should be portable enough now +# then try gawk, perl, python in that order +now1=$(date +%s 2>/dev/null) D=date +[ -z "$now1" ] && +{ + now1=$(gawk 'BEGIN { print systime(); }' 2>/dev/null) D=gawk + [ -z "$now1" ] && now1=$(perl -e 'print time' 2>/dev/null) D=perl + [ -z "$now1" ] && now1=$(python -c 'import time; ts = int(time.time()); print(ts)' 2>/dev/null) D=python +} now2=$EPOCHSECONDS -case $now1 in -$now2) echo EPOCHSECONDS ok ;; -*) echo "current time via perl and EPOCHSECONDS possible mismatch|$now1|$now2" >&2 ;; -esac -unset now1 now2 +# use a window of +-1 second +offset=1 +if [[ -z $now1 ]]; then + echo "cannot get current time using date/gawk/perl/python" >&2 +elif (( $now1 - $offset <= $now2 && $now2 <= $now1 + $offset )); then + echo EPOCHSECONDS ok +else + echo "current time via $D and EPOCHSECONDS possible mismatch|$now1|$now2|offset=$offset" >&2 +fi +unset now1 now2 D LC_ALL=C # force decimal point to `.' now1=$EPOCHREALTIME diff --git a/tests/errors.right b/tests/errors.right index be0c8959a..0bd88efb9 100644 --- a/tests/errors.right +++ b/tests/errors.right @@ -11,93 +11,95 @@ declare -fr func unset: usage: unset [-f] [-v] [-n] [name ...] ./errors.tests: line 55: unset: func: cannot unset: readonly function ./errors.tests: line 58: declare: func: readonly function -./errors.tests: line 62: unset: XPATH: cannot unset: readonly variable -./errors.tests: line 68: unset: cannot simultaneously unset a function and a variable -./errors.tests: line 71: declare: -z: invalid option -declare: usage: declare [-aAfFgiIlnrtux] [-p] [name[=value] ...] -./errors.tests: line 73: declare: `-z': not a valid identifier -./errors.tests: line 74: declare: `/bin/sh': not a valid identifier -./errors.tests: line 78: declare: cannot use `-f' to make functions -./errors.tests: line 81: exec: -i: invalid option +./errors.tests: line 62: declare: -a: invalid option +./errors.tests: line 63: declare: -i: invalid option +./errors.tests: line 67: unset: XPATH: cannot unset: readonly variable +./errors.tests: line 73: unset: cannot simultaneously unset a function and a variable +./errors.tests: line 76: declare: -z: invalid option +declare: usage: declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...] +./errors.tests: line 78: declare: `-z': not a valid identifier +./errors.tests: line 79: declare: `/bin/sh': not a valid identifier +./errors.tests: line 83: declare: cannot use `-f' to make functions +./errors.tests: line 86: exec: -i: invalid option exec: usage: exec [-cl] [-a name] [command [argument ...]] [redirection ...] -./errors.tests: line 85: export: XPATH: not a function -./errors.tests: line 88: break: only meaningful in a `for', `while', or `until' loop -./errors.tests: line 89: continue: only meaningful in a `for', `while', or `until' loop -./errors.tests: line 92: shift: label: numeric argument required -./errors.tests: line 97: shift: too many arguments -./errors.tests: line 103: let: expression expected -./errors.tests: line 106: local: can only be used in a function -./errors.tests: line 109: logout: not login shell: use `exit' -./errors.tests: line 112: hash: notthere: not found -./errors.tests: line 115: hash: -v: invalid option +./errors.tests: line 90: export: XPATH: not a function +./errors.tests: line 93: break: only meaningful in a `for', `while', or `until' loop +./errors.tests: line 94: continue: only meaningful in a `for', `while', or `until' loop +./errors.tests: line 97: shift: label: numeric argument required +./errors.tests: line 102: shift: too many arguments +./errors.tests: line 108: let: expression expected +./errors.tests: line 111: local: can only be used in a function +./errors.tests: line 114: logout: not login shell: use `exit' +./errors.tests: line 117: hash: notthere: not found +./errors.tests: line 120: hash: -v: invalid option hash: usage: hash [-lr] [-p pathname] [-dt] [name ...] -./errors.tests: line 119: hash: hashing disabled -./errors.tests: line 122: export: `AA[4]': not a valid identifier -./errors.tests: line 123: readonly: `AA[4]': not a valid identifier -./errors.tests: line 126: unset: [-2]: bad array subscript -./errors.tests: line 130: AA: readonly variable -./errors.tests: line 134: AA: readonly variable -./errors.tests: line 142: shift: 5: shift count out of range -./errors.tests: line 143: shift: -2: shift count out of range -./errors.tests: line 146: shopt: no_such_option: invalid shell option name -./errors.tests: line 147: shopt: no_such_option: invalid shell option name -./errors.tests: line 150: umask: 09: octal number out of range -./errors.tests: line 151: umask: `:': invalid symbolic mode character -./errors.tests: line 152: umask: `:': invalid symbolic mode operator -./errors.tests: line 155: umask: -i: invalid option +./errors.tests: line 124: hash: hashing disabled +./errors.tests: line 127: export: `AA[4]': not a valid identifier +./errors.tests: line 128: readonly: `AA[4]': not a valid identifier +./errors.tests: line 131: unset: [-2]: bad array subscript +./errors.tests: line 135: AA: readonly variable +./errors.tests: line 139: AA: readonly variable +./errors.tests: line 147: shift: 5: shift count out of range +./errors.tests: line 148: shift: -2: shift count out of range +./errors.tests: line 151: shopt: no_such_option: invalid shell option name +./errors.tests: line 152: shopt: no_such_option: invalid shell option name +./errors.tests: line 155: umask: 09: octal number out of range +./errors.tests: line 156: umask: `:': invalid symbolic mode character +./errors.tests: line 157: umask: `:': invalid symbolic mode operator +./errors.tests: line 160: umask: -i: invalid option umask: usage: umask [-p] [-S] [mode] -./errors.tests: line 159: umask: `u': invalid symbolic mode character -./errors.tests: line 168: VAR: readonly variable -./errors.tests: line 171: declare: VAR: readonly variable -./errors.tests: line 172: declare: VAR: readonly variable -./errors.tests: line 174: declare: unset: not found -./errors.tests: line 177: VAR: readonly variable -./errors.tests: command substitution: line 181: syntax error near unexpected token `)' -./errors.tests: command substitution: line 181: ` for z in 1 2 3; do )' -./errors.tests: command substitution: line 182: syntax error near unexpected token `done' -./errors.tests: command substitution: line 182: ` for z in 1 2 3; done )' -./errors.tests: line 184: cd: HOME not set -./errors.tests: line 185: cd: /tmp/xyz.bash: No such file or directory -./errors.tests: line 187: cd: OLDPWD not set -./errors.tests: line 188: cd: /bin/sh: Not a directory -./errors.tests: line 190: cd: /tmp/cd-notthere: No such file or directory -./errors.tests: line 193: .: filename argument required +./errors.tests: line 164: umask: `u': invalid symbolic mode character +./errors.tests: line 173: VAR: readonly variable +./errors.tests: line 176: declare: VAR: readonly variable +./errors.tests: line 177: declare: VAR: readonly variable +./errors.tests: line 179: declare: unset: not found +./errors.tests: line 182: VAR: readonly variable +comsub: -c: line 1: syntax error near unexpected token `)' +comsub: -c: line 1: `: $( for z in 1 2 3; do )' +comsub: -c: line 1: syntax error near unexpected token `done' +comsub: -c: line 1: `: $( for z in 1 2 3; done )' +./errors.tests: line 189: cd: HOME not set +./errors.tests: line 190: cd: /tmp/xyz.bash: No such file or directory +./errors.tests: line 192: cd: OLDPWD not set +./errors.tests: line 193: cd: /bin/sh: Not a directory +./errors.tests: line 195: cd: /tmp/cd-notthere: No such file or directory +./errors.tests: line 198: .: filename argument required .: usage: . filename [arguments] -./errors.tests: line 194: source: filename argument required +./errors.tests: line 199: source: filename argument required source: usage: source filename [arguments] -./errors.tests: line 197: .: -i: invalid option +./errors.tests: line 202: .: -i: invalid option .: usage: . filename [arguments] -./errors.tests: line 200: set: -q: invalid option -set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] -./errors.tests: line 203: enable: sh: not a shell builtin -./errors.tests: line 203: enable: bash: not a shell builtin -./errors.tests: line 206: shopt: cannot set and unset shell options simultaneously -./errors.tests: line 209: read: var: invalid timeout specification -./errors.tests: line 212: read: `/bin/sh': not a valid identifier -./errors.tests: line 215: VAR: readonly variable -./errors.tests: line 218: readonly: -x: invalid option +./errors.tests: line 205: set: -q: invalid option +set: usage: set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...] +./errors.tests: line 208: enable: sh: not a shell builtin +./errors.tests: line 208: enable: bash: not a shell builtin +./errors.tests: line 211: shopt: cannot set and unset shell options simultaneously +./errors.tests: line 214: read: var: invalid timeout specification +./errors.tests: line 217: read: `/bin/sh': not a valid identifier +./errors.tests: line 220: VAR: readonly variable +./errors.tests: line 223: readonly: -x: invalid option readonly: usage: readonly [-aAf] [name[=value] ...] or readonly -p -./errors.tests: line 221: eval: -i: invalid option +./errors.tests: line 226: eval: -i: invalid option eval: usage: eval [arg ...] -./errors.tests: line 222: command: -i: invalid option +./errors.tests: line 227: command: -i: invalid option command: usage: command [-pVv] command [arg ...] -./errors.tests: line 225: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0") -./errors.tests: line 226: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0") -./errors.tests: line 229: trap: NOSIG: invalid signal specification -./errors.tests: line 232: trap: -s: invalid option +./errors.tests: line 230: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0") +./errors.tests: line 231: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0") +./errors.tests: line 234: trap: NOSIG: invalid signal specification +./errors.tests: line 237: trap: -s: invalid option trap: usage: trap [-lp] [[arg] signal_spec ...] -./errors.tests: line 238: return: can only `return' from a function or sourced script -./errors.tests: line 242: break: 0: loop count out of range -./errors.tests: line 246: continue: 0: loop count out of range -./errors.tests: line 251: builtin: bash: not a shell builtin -./errors.tests: line 255: bg: no job control -./errors.tests: line 256: fg: no job control -./errors.tests: line 259: kill: -s: option requires an argument -./errors.tests: line 261: kill: S: invalid signal specification -./errors.tests: line 263: kill: `': not a pid or valid job spec +./errors.tests: line 243: return: can only `return' from a function or sourced script +./errors.tests: line 247: break: 0: loop count out of range +./errors.tests: line 251: continue: 0: loop count out of range +./errors.tests: line 256: builtin: bash: not a shell builtin +./errors.tests: line 260: bg: no job control +./errors.tests: line 261: fg: no job control +./errors.tests: line 264: kill: -s: option requires an argument +./errors.tests: line 266: kill: S: invalid signal specification +./errors.tests: line 268: kill: `': not a pid or valid job spec kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec] -./errors.tests: line 268: set: trackall: invalid option name -./errors.tests: line 272: xx: readonly variable +./errors.tests: line 273: set: trackall: invalid option name +./errors.tests: line 277: xx: readonly variable 1 ./errors1.sub: line 14: .: -i: invalid option .: usage: . filename [arguments] @@ -174,14 +176,14 @@ after non-special builtin: 0 ./errors7.sub: line 25: x: readonly variable after special builtin: 0 ./errors7.sub: line 27: x: readonly variable +./errors7.sub: line 29: x: readonly variable ./errors7.sub: line 21: x: readonly variable -./errors7.sub: line 21: notthere: command not found -after no such command: 127 +after no such command: 1 ./errors7.sub: line 23: x: readonly variable -echo builtin -after non-special builtin: 0 +after non-special builtin: 1 ./errors7.sub: line 25: x: readonly variable ./errors7.sub: line 27: x: readonly variable +./errors7.sub: line 29: x: readonly variable ./errors8.sub: eval: line 7: syntax error: unexpected end of file ok 1 ./errors8.sub: line 8: v: readonly variable @@ -194,7 +196,13 @@ ok 4 ok 5 ./errors8.sub: line 14: set: notanoption: invalid option name ok 6 +DEBUG +./errors9.sub: line 6: [[: ++: syntax error: operand expected (error token is "+") +DEBUG +./errors9.sub: line 8: ((: -- : syntax error: operand expected (error token is "- ") +DEBUG +./errors9.sub: line 10: ((: -- : syntax error: operand expected (error token is "- ") bash: line 1: return: can only `return' from a function or sourced script after return bash: line 1: return: can only `return' from a function or sourced script -./errors.tests: line 299: `!!': not a valid identifier +./errors.tests: line 305: `!!': not a valid identifier diff --git a/tests/errors.tests b/tests/errors.tests index 531b625bb..0880bb556 100644 --- a/tests/errors.tests +++ b/tests/errors.tests @@ -57,6 +57,11 @@ unset -f func declare -fr func declare -f +r func +# cannot use declare -f in combination with other attributes +a() { echo a; } +declare -f -a a +declare -f -i b c + XPATH=$PATH declare -r XPATH unset -v XPATH @@ -176,9 +181,9 @@ declare -p unset # iteration variable in a for statement being readonly for VAR in 1 2 3 ; do echo $VAR; done -# parser errors -: $( for z in 1 2 3; do ) -: $( for z in 1 2 3; done ) +# parser errors; caught early so we have to run them in subshells +${THIS_SH} -c ': $( for z in 1 2 3; do )' comsub +${THIS_SH} -c ': $( for z in 1 2 3; done )' comsub # various `cd' errors ( unset HOME ; cd ) @@ -287,6 +292,7 @@ ${THIS_SH} ./errors7.sub ${THIS_SH} -o posix ./errors7.sub ${THIS_SH} ./errors8.sub +${THIS_SH} ./errors9.sub ${THIS_SH} -c 'return ; echo after return' bash ${THIS_SH} -o posix -c 'return ; echo after return' bash diff --git a/tests/errors7.sub b/tests/errors7.sub index add8782a7..544e3e4c1 100644 --- a/tests/errors7.sub +++ b/tests/errors7.sub @@ -26,3 +26,5 @@ echo after non-special builtin: $? echo after special builtin: $? ) ( x=8 $nocmd echo after assignment error: $? ) +( x=8 +echo after assignment statement error: $? ) diff --git a/tests/errors9.sub b/tests/errors9.sub new file mode 100644 index 000000000..3a2670466 --- /dev/null +++ b/tests/errors9.sub @@ -0,0 +1,14 @@ +trap 'echo DEBUG' DEBUG + +# make sure that the right command name appears in the error messages and +# that the DEBUG trap doesn't overwrite it + +[[ ++ -gt 3 ]] + +(( -- )) + +for (( -- ; ++; -- )) +do + echo bogus +done + diff --git a/tests/exec.right b/tests/exec.right index 0a249ddad..ef02fbb41 100644 --- a/tests/exec.right +++ b/tests/exec.right @@ -20,8 +20,17 @@ after exec1.sub: one two three 126 0 this is bashenv -./exec3.sub: line 3: /tmp/bash-notthere: No such file or directory -127 +trap -- 'echo EXIT' EXIT +trap -- '' SIGTERM +trap -- 'echo USR1' SIGUSR1 +USR1 +./exec3.sub: line 27: /tmp/bash-notthere: No such file or directory +./exec3.sub: after failed exec: 127 +trap -- 'echo EXIT' EXIT +trap -- '' SIGTERM +trap -- 'echo USR1' SIGUSR1 +USR1 +EXIT ./execscript: line 71: notthere: No such file or directory 127 ./execscript: line 74: notthere: No such file or directory @@ -133,3 +142,31 @@ w x y z +===== +WORKS +done +WORKS +a +b +c +d +a +b +c +d +e +A +B +c +d +c +d +e +x +y +z +WORKS +w +x +y +z diff --git a/tests/exec14.sub b/tests/exec14.sub index 3402fb95f..eddd33fa0 100644 --- a/tests/exec14.sub +++ b/tests/exec14.sub @@ -45,3 +45,20 @@ $THIS_SH -c '$binecho c && $binecho d && echo e' $THIS_SH -c 'trap "echo WORKS" EXIT ; $binecho x ; $binecho y ; $binecho z' ${THIS_SH} -c 'echo w ; { echo x ; $binecho y; }; $binecho z' + +echo ===== + +( trap "echo WORKS && rm $TMPDIR/x$$" EXIT && touch $TMPDIR/x$$ ) +( trap "echo WORKS && rm $TMPDIR/x$$" EXIT && touch $TMPDIR/x$$ ; $binecho done ) + +( echo a && { $binecho b && $binecho c ; } && echo d ) +( echo a && { $binecho b && $binecho c ; } && echo d ; $binecho e ) + +( echo A && $binecho B ) +( $binecho c && echo d ) + +( $binecho c && $binecho d && echo e ) + +( trap "echo WORKS" EXIT ; $binecho x ; $binecho y ; $binecho z ) + +( echo w ; { echo x ; $binecho y; }; $binecho z ) diff --git a/tests/exec3.sub b/tests/exec3.sub index 4f2f8e21a..81b53b72b 100644 --- a/tests/exec3.sub +++ b/tests/exec3.sub @@ -1,6 +1,37 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# test the behavior of `execfail' not exiting an interactive shell +# added tests for changes in 10/2021 for preserving the traps across a failed +# exec + shopt -s execfail +trap 'echo EXIT' EXIT +trap 'echo USR1' USR1 +trap '' TERM +trap + +kill -s USR1 $$ # should run the trap + exec /tmp/bash-notthere + # make sure we're still around -echo $? +echo $0: after failed exec: $? + +trap +kill -s USR1 $$ # should run the trap +kill -s TERM $$ # should still be ignored +# this should run the exit trap +exit 0 diff --git a/tests/exp.right b/tests/exp.right index 4e88ca9b1..60241a1db 100644 --- a/tests/exp.right +++ b/tests/exp.right @@ -227,15 +227,16 @@ argv[2] = argv[1] = argv[1] = argv[1] = -declare -- var="xyz" +declare -- var=$'x\001y\177z' argv[1] = argv[2] = <--> -argv[3] = +argv[3] = +var=x\001y\177z$ declare -- var="x\001y\177z"$ argv[1] = <$'x\001y\177z'> argv[1] = var=$'x\001y\177z' -./exp8.sub: line 29: xyz: syntax error: invalid arithmetic operator (error token is "z") +./exp8.sub: line 30: xyz: syntax error: invalid arithmetic operator (error token is "z") declare -a array=() declare -a array=([0]=$'x\001y\177z') argv[1] = @@ -408,3 +409,11 @@ cdefg abcdefg abcde abcdefg +foo +declare -- a="foo" +7 +declare -i a="7" +42 +declare -- a="42" +FOO +declare -u A="FOO" diff --git a/tests/exp.tests b/tests/exp.tests index 3e69db4fa..61a39d3b4 100644 --- a/tests/exp.tests +++ b/tests/exp.tests @@ -423,3 +423,4 @@ ${THIS_SH} ./exp9.sub ${THIS_SH} ./exp10.sub ${THIS_SH} ./exp11.sub ${THIS_SH} ./exp12.sub +${THIS_SH} ./exp13.sub diff --git a/tests/exp13.sub b/tests/exp13.sub new file mode 100644 index 000000000..80e14635a --- /dev/null +++ b/tests/exp13.sub @@ -0,0 +1,34 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +unset a + +echo ${a:=foo} +declare -p a + +unset a + +declare -i a +echo ${a:=4+3} +declare -p a + +unset a +echo ${a:=42} +declare -p a + +unset a +declare -u A +A= +echo ${A:=foo} + +declare -p A diff --git a/tests/exp8.sub b/tests/exp8.sub index 4c2870caf..7dd5a286f 100644 --- a/tests/exp8.sub +++ b/tests/exp8.sub @@ -19,7 +19,8 @@ recho $var declare -p var recho $(declare -p var) -declare -p var | sed -n l +echo "var=$var" | sed -n l +echo "declare -- var=\"$var\"" | sed -n l recho ${var@Q} recho ${var@P} diff --git a/tests/exportfunc.right b/tests/exportfunc.right index ff7fc8d91..890bdfa4b 100644 --- a/tests/exportfunc.right +++ b/tests/exportfunc.right @@ -4,7 +4,7 @@ exportfunc ok 2 ./exportfunc.tests: eval: line 44: syntax error: unexpected end of file ./exportfunc.tests: line 43: cve7169-bad2: No such file or directory ./exportfunc1.sub: line 14: maximum here-document count exceeded -./exportfunc.tests: line 64: HELLO_WORLD: No such file or directory +./exportfunc.tests: line 72: HELLO_WORLD: No such file or directory eval ok ./exportfunc3.sub: line 23: export: foo=bar: cannot export status: 1 diff --git a/tests/exportfunc.tests b/tests/exportfunc.tests index b2742d2ce..d06b1a33b 100644 --- a/tests/exportfunc.tests +++ b/tests/exportfunc.tests @@ -50,10 +50,18 @@ ${THIS_SH} ./exportfunc1.sub ${THIS_SH} ./exportfunc2.sub # CVE-2014-6277 +A100=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +A1000=${A100} + +for (( i = 0; i < 999; i++ )) +do + A1000+=${A100} +done env BASH_FUNC_foo%%="() { 000(){>0;}&000(){ 0;}<<0 0" ${THIS_SH} -c foo 2>/dev/null -env BASH_FUNC_foo%%="() { 000(){>0;}&000(){ 0;}<<`perl -e '{print "A"x100000}'` 0" ${THIS_SH} -c foo 2>/dev/null +env BASH_FUNC_foo%%="() { 000(){>0;}&000(){ 0;}<<${A1000} 0" ${THIS_SH} -c foo 2>/dev/null ${THIS_SH} -c "f(){ x(){ _;}; x(){ _;}</dev/null +unset A100 A1000 # CVE-2014-6278 diff --git a/tests/extglob.right b/tests/extglob.right index 691f6879d..2974cecaf 100644 --- a/tests/extglob.right +++ b/tests/extglob.right @@ -92,16 +92,16 @@ a ab a ab a ab a -. .. -. .. a.log +*(.) +a.log *(foo) *(foo|bar) a.log ?(foo) a.log a.log -. .. -. .. +*(foo).* +*(foo|bar).* a.log a.log .x .y .z @@ -114,3 +114,71 @@ a b c .x .y .z a b c .x .y .z a b c * +.b a +.b a +a .b +.b +.b +.b a +.b a +a .b +.b +.b +dotglob: .a .foo bar +@(.foo) +.foo +!(.foo) +.a bar +@(.foo|*) +.a .foo bar +!(.foo|*) +!(.foo|*) +@(*) +.a .foo bar +!(*) +!(*) +.* +. .. .a .foo +@(.*) +. .. .a .foo +!(.*) +bar +no dotglob: .a .foo bar +@(.foo) +.foo +!(.foo) +bar +@(.foo|*) +.foo bar +!(.foo|*) +!(.foo|*) +!(bar).foo +!(bar).foo +*(bar).foo +.foo +?(bar).foo +.foo +.? +.. .a +@(.?) +.. .a +!(.?) +bar +dotglob: .a .foo bar +@(?|.?) +.. .a +@(?|.*) +. .. .a .foo +? .* +? . .. .a .foo +* +.a .foo bar +no dotglob: .a .foo bar +@(?|.?) +.. .a +@(?|.*) +. .. .a .foo +? .* +? . .. .a .foo +* +bar diff --git a/tests/extglob.tests b/tests/extglob.tests index 4cb671a8a..7a7cf91bf 100644 --- a/tests/extglob.tests +++ b/tests/extglob.tests @@ -380,13 +380,11 @@ shopt -u globstar builtin cd "$MYDIR" ${THIS_SH} ./extglob1.sub - ${THIS_SH} ./extglob1a.sub - ${THIS_SH} ./extglob3.sub - ${THIS_SH} ./extglob4.sub - ${THIS_SH} ./extglob5.sub +${THIS_SH} ./extglob6.sub +${THIS_SH} ./extglob7.sub exit 0 diff --git a/tests/extglob2.sub b/tests/extglob2.sub index f4a3b3745..1088111f3 100644 --- a/tests/extglob2.sub +++ b/tests/extglob2.sub @@ -2,6 +2,30 @@ LANG=en_US.UTF-8 shopt -s extglob a="aaaäöü" +a1=${a:3:3} + +[[ "${a}" == "${a1}" ]] || { + echo cond ok 1 +} + +case "${a//?aa}" in +"${a1}") echo ok 1;; +*) echo bad 1;; +esac + +case "${a//\aaa}" in +"${a1}") echo ok 2;; +*) echo bad 2;; +esac + +case "${a//aaa}" in +"${a1}") echo ok 3;; +*) echo bad 3;; +esac + +case "${a//@(?aa)}" in +"${a1}") echo ok 4;; +*) echo bad 4;; +esac -echo "${a}" "${a//?aa}" "${a//\aaa}" exit 0 diff --git a/tests/extglob6.sub b/tests/extglob6.sub new file mode 100644 index 000000000..5e2aafbe5 --- /dev/null +++ b/tests/extglob6.sub @@ -0,0 +1,43 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# issues with ? matching "." in certain special circumstances with dotglob set + +shopt -s dotglob extglob + +DIR=$TMPDIR/extglob-$$ +mkdir $DIR +cd $DIR + +touch a .b + +LC_COLLATE=C # fix sort order + +echo @(?|.?) +echo @(.?|?) +echo ? .? + +echo .* +echo \.* + +shopt -u dotglob + +echo @(?|.?) +echo @(.?|?) +echo ? .? + +echo .* +echo \.* + +cd $OLDPWD +rm -rf $DIR diff --git a/tests/extglob7.sub b/tests/extglob7.sub new file mode 100644 index 000000000..5fab9cdab --- /dev/null +++ b/tests/extglob7.sub @@ -0,0 +1,97 @@ +: ${TMPDIR:=/tmp} + +TESTDIR=$TMPDIR/glob-test-$$ +mkdir $TESTDIR || { + echo "$TESTDIR: cannot create" >&2 + exit 1 +} +cd $TESTDIR || { + echo "$TESTDIR: cannot cd" >&2 + exit 1 +} + +LC_CTYPE=C LC_COLLATE=C +shopt -s extglob dotglob +shopt -u globskipdots # XXX - backwards compatibility +touch .foo bar .a + +echo dotglob: .a .foo bar + +echo '@(.foo)' +echo @(.foo) +echo '!(.foo)' +echo !(.foo) + +echo '@(.foo|*)' +echo @(.foo|*) +echo '!(.foo|*)' +echo !(.foo|*) + +echo '@(*)' +echo @(*) +echo '!(*)' +echo !(*) + +echo '.*' +echo .* +echo '@(.*)' +echo @(.*) +echo '!(.*)' +echo !(.*) + +shopt -u dotglob + +echo no dotglob: .a .foo bar + +echo '@(.foo)' +echo @(.foo) +echo '!(.foo)' +echo !(.foo) + +echo '@(.foo|*)' +echo @(.foo|*) +echo '!(.foo|*)' +echo !(.foo|*) + +echo '!(bar).foo' +echo !(bar).foo +echo '*(bar).foo' +echo *(bar).foo +echo '?(bar).foo' +echo ?(bar).foo + +echo '.?' +echo .? +echo '@(.?)' +echo @(.?) +echo '!(.?)' +echo !(.?) + +shopt -s dotglob +echo dotglob: .a .foo bar + +echo '@(?|.?)' +echo @(?|.?) +echo '@(?|.*)' +echo @(?|.*) +echo '? .*' +echo ? .* +echo '*' +echo * + +shopt -u dotglob +echo no dotglob: .a .foo bar + +echo '@(?|.?)' +echo @(?|.?) +echo '@(?|.*)' +echo @(?|.*) +echo '? .*' +echo ? .* +echo '*' +echo * + +rm -f .a bar .foo + +cd $OLDPWD +rm -rf $TESTDIR diff --git a/tests/func.tests b/tests/func.tests index fffe3d2b3..e35ec2b85 100644 --- a/tests/func.tests +++ b/tests/func.tests @@ -11,6 +11,12 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . # +# since we look at functions below, remove all functions now +funcs=$(compgen -A function) +if [ -n "$funcs" ]; then + unset -f $funcs +fi + a() { x=$((x - 1)) diff --git a/tests/getopts10.sub b/tests/getopts10.sub index cc8acb0cf..49b2bfe9c 100644 --- a/tests/getopts10.sub +++ b/tests/getopts10.sub @@ -15,10 +15,10 @@ set -- -a bb readonly OPTARG getopts :x x -echo OPTARG = $OPTARG x = $x +echo OPTARG = $OPTARG x = "$x" getopts x x -echo ${OPTARG-unset} x = $x +echo ${OPTARG-unset} x = "$x" typeset -r RO=foo typeset -n OPTARG=RO diff --git a/tests/glob.right b/tests/glob.right index 949669050..723ee7b46 100644 --- a/tests/glob.right +++ b/tests/glob.right @@ -121,6 +121,10 @@ a\*b a\*b* é/* é/* +a aa b bb +.a .aa .b .bb a aa b bb +.a .aa .b .bb +. .. .a .aa .b .bb argv[1] = argv[2] = argv[3] = @@ -135,7 +139,7 @@ argv[2] = argv[3] = argv[4] = tmp/l1 tmp/l2 tmp/*4 tmp/l3 -./glob.tests: line 65: no match: tmp/*4 +./glob.tests: line 66: no match: tmp/*4 argv[1] = argv[1] = <*> argv[1] = diff --git a/tests/glob.tests b/tests/glob.tests index b35d7336f..02d530261 100644 --- a/tests/glob.tests +++ b/tests/glob.tests @@ -30,6 +30,7 @@ ${THIS_SH} ./glob6.sub ${THIS_SH} ./glob7.sub ${THIS_SH} ./glob8.sub ${THIS_SH} ./glob9.sub +${THIS_SH} ./glob10.sub MYDIR=$PWD # save where we are diff --git a/tests/glob10.sub b/tests/glob10.sub new file mode 100644 index 000000000..7c14c0d24 --- /dev/null +++ b/tests/glob10.sub @@ -0,0 +1,32 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# test basic behavior of globskipdots +TDIR=/tmp/dotglob-$$ + +{ mkdir $TDIR && cd $TDIR; } || exit 1 + +touch a b aa bb .a .b .aa .bb + +echo * +shopt -s dotglob +echo * + +shopt -s globskipdots +echo .* +shopt -u globskipdots +echo .* + +cd $OLDPWD +rm -rf $TDIR diff --git a/tests/glob2.sub b/tests/glob2.sub index cabc35023..09cb6d51f 100644 --- a/tests/glob2.sub +++ b/tests/glob2.sub @@ -13,6 +13,14 @@ # . ./test-glue-functions +# this locale causes problems all over the place +if locale -a | grep -i '^zh_HK\.big5hkscs' >/dev/null ; then + : +else + echo "glob2.sub: warning: you do not have the zh_HK.big5hkscs locale installed;" >&2 + echo "glob2.sub: warning: that will cause some of these tests to fail." >&2 +fi + var='ab\' case $var in diff --git a/tests/glob5.sub b/tests/glob5.sub index 5735715db..a0dd623fa 100644 --- a/tests/glob5.sub +++ b/tests/glob5.sub @@ -11,6 +11,8 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . # +[ $UID -eq 0 ] && { echo "glob5.sub: the test suite should not be run as root" >&2 ; } + ORIGD=$PWD : ${TMPDIR:=/var/tmp} diff --git a/tests/glob6.sub b/tests/glob6.sub index f26ae4d65..88429838c 100644 --- a/tests/glob6.sub +++ b/tests/glob6.sub @@ -12,6 +12,7 @@ # along with this program. If not, see . # # tests of the backslash-in-glob-patterns discussion on the austin-group ML +[ $UID -eq 0 ] && { echo "glob6.sub: the test suite should not be run as root" >&2 ; } : ${TMPDIR:=/var/tmp} diff --git a/tests/heredoc.right b/tests/heredoc.right index f6e53beae..cc193f666 100644 --- a/tests/heredoc.right +++ b/tests/heredoc.right @@ -67,13 +67,13 @@ qux bar qux abc def geh -./heredoc3.sub: line 23: warning: here-document at line 21 delimited by end-of-file (wanted `EOF') +./heredoc3.sub: line 20: warning: here-document at line 18 delimited by end-of-file (wanted `EOF') = here is the text = -./heredoc3.sub: line 29: warning: here-document at line 27 delimited by end-of-file (wanted `EOF') +./heredoc3.sub: line 26: warning: here-document at line 24 delimited by end-of-file (wanted `EOF') this paren ) is not a problem -./heredoc3.sub: line 35: warning: here-document at line 33 delimited by end-of-file (wanted `EOF') +./heredoc3.sub: line 32: warning: here-document at line 30 delimited by end-of-file (wanted `EOF') these balanced parens ( ) are not a problem -./heredoc3.sub: line 41: warning: here-document at line 39 delimited by end-of-file (wanted `EOF') +./heredoc3.sub: line 38: warning: here-document at line 36 delimited by end-of-file (wanted `EOF') quoted balanced parens \( ) are not a problem either more text in a subshell some more text in a different subshell @@ -100,7 +100,34 @@ argv[2] = argv[1] = argv[2] = argv[3] = +1: OK +2: OK +3: OK +4: OK +5: OK +6: OK +7: OK +1: OK +2: OK +3: OK +4: OK +5: OK +5: OK +1: ${x#$'no\t'} +2: O${x#$'no\t'O} +3: ${x#n$'o\t'} +4: ${x#'no '} +5: ${x#$pat} +6: ${y#$'not'} +7: ${y#'not'} +./heredoc7.sub: line 17: warning: command substitution: 1 unterminated here-document +foo bar +./heredoc7.sub: line 21: after: command not found +./heredoc7.sub: line 29: warning: here-document at line 29 delimited by end-of-file (wanted `EOF') +./heredoc7.sub: line 29: foobar: command not found +./heredoc7.sub: line 30: EOF: command not found +grep: *.c: No such file or directory comsub here-string -./heredoc.tests: line 149: warning: here-document at line 147 delimited by end-of-file (wanted `EOF') +./heredoc.tests: line 156: warning: here-document at line 154 delimited by end-of-file (wanted `EOF') hi there diff --git a/tests/heredoc.tests b/tests/heredoc.tests index 430302f58..d10a7c104 100644 --- a/tests/heredoc.tests +++ b/tests/heredoc.tests @@ -137,6 +137,13 @@ ${THIS_SH} ./heredoc4.sub # heredoc tests that use different size documents to test pipe implementation ${THIS_SH} ./heredoc5.sub +# test $'...' and $"..." quoted strings in here-documents +${THIS_SH} ./heredoc6.sub + +# interaction between here-documents and command substitutions +${THIS_SH} ./heredoc7.sub + + echo $( cat <<< "comsub here-string" ) diff --git a/tests/heredoc6.sub b/tests/heredoc6.sub new file mode 100644 index 000000000..1d5fff096 --- /dev/null +++ b/tests/heredoc6.sub @@ -0,0 +1,50 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# test $'...' and $"..." strings in here documents (problem through bash-5.1) + +pat=$'no\t' +x=$'no\tOK' +y=notOK + +cat <. +# + +# should characters outside a command substitution be interpreted as a delimiter +# for a here-document started inside it? +echo $(cat << EOF) +foo +bar +EOF +after + +# should characters inside a command substitution be interpreted as a delimiter +# for a here-document started outside of it? + +cat <. # +# since we look at functions below, remove all functions now +funcs=$(compgen -A function) +if [ -n "$funcs" ]; then + unset -f $funcs +fi + # basics read x <<<"alpha" echo "$x" diff --git a/tests/history.right b/tests/history.right index 379de48b9..5273de6bc 100644 --- a/tests/history.right +++ b/tests/history.right @@ -140,9 +140,9 @@ three one two three -5.1 +5.2 echo ${BASH_VERSION%\.*} -5.1 +5.2 echo ${BASH_VERSION%\.*} a b @@ -264,3 +264,36 @@ out of range 3 12 echo out of range 3 out of range 4 13 fc -l 1 99 +1 +2 +3 +4 +5 +6 + 3 echo 3 + 4 echo 4 + 5 echo 5 + 6 echo 6 + 3 echo 3 + 4 echo 4 + 5 echo 5 +6 +7 + 4 echo 4 + 5 echo 5 + 6 echo 6 + 7 echo 7 + 4 echo 4 + 5 echo 5 + 6 echo 6 +7 +8 + 5 echo 5 + 6 echo 6 +9 +10 + 5 echo 5 + 6 echo 6 + 7 echo 9 + 8 echo 10 + 5 echo 10 diff --git a/tests/history.tests b/tests/history.tests index 53321f051..5826d1304 100644 --- a/tests/history.tests +++ b/tests/history.tests @@ -130,3 +130,4 @@ ${THIS_SH} ./history2.sub ${THIS_SH} ./history3.sub ${THIS_SH} ./history4.sub ${THIS_SH} ./history5.sub +${THIS_SH} ./history6.sub diff --git a/tests/history6.sub b/tests/history6.sub new file mode 100644 index 000000000..a21d8d38b --- /dev/null +++ b/tests/history6.sub @@ -0,0 +1,55 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +: ${TMPDIR:=/tmp} + +HISTFILE=${TMPDIR}/history-$$ +HISTSIZE=4 +HISTIGNORE="history*" + +set -o history + +history -c + +echo 1 +echo 2 +echo 3 +echo 4 +echo 5 +echo 6 + +history + +history -d -1 +history + +echo 6 +echo 7 + +history +history -d -1 +history + +echo 7 +echo 8 +history -d -2--1 +history + +echo 9 +echo 10 +history +history -d 5-7 +history + +unset HISTFILE +exit 0 diff --git a/tests/intl.tests b/tests/intl.tests index c3000fc7c..c4ff02c3c 100644 --- a/tests/intl.tests +++ b/tests/intl.tests @@ -62,7 +62,7 @@ ${THIS_SH} ./intl2.sub # test splitting on characters instead of bytes ${THIS_SH} ./intl3.sub -${THIS_SH} ./unicode1.sub 2>/dev/null +${THIS_SH} ./unicode1.sub # 2>/dev/null ${THIS_SH} ./unicode2.sub ${THIS_SH} ./unicode3.sub 2>&1 diff --git a/tests/intl2.sub b/tests/intl2.sub index 64961bcb9..2f3236e67 100644 --- a/tests/intl2.sub +++ b/tests/intl2.sub @@ -1,5 +1,25 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# this locale causes problems all over the place unset LC_ALL LC_NUMERIC -export LANG=de_DE.UTF-8 +if locale -a | grep -i '^de_DE\.UTF.*8' >/dev/null ; then + export LANG=de_DE.UTF-8 +else + echo "intl2.sub: warning: you do not have the de_DE.UTF-8 locale installed;" >&2 + echo "intl2.sub: that will cause some of these tests to fail." >&2 +fi + printf '%.4f\n' 1 LANG=C printf '%.4f\n' 1 diff --git a/tests/jobs.right b/tests/jobs.right index 5d03b76b9..0510e044a 100644 --- a/tests/jobs.right +++ b/tests/jobs.right @@ -31,6 +31,8 @@ i killed it ./jobs5.sub: line 40: wait: %8: no such job 2: ok 2 2: ok 3 +127 +./jobs5.sub: line 71: declare: wpid: not found child1 exit status 0 [1]+ Running sleep 20 & ./jobs7.sub: line 5: fg: no current jobs diff --git a/tests/jobs4.sub b/tests/jobs4.sub index 7ecd7123a..9f1cd0408 100644 --- a/tests/jobs4.sub +++ b/tests/jobs4.sub @@ -34,4 +34,6 @@ wait # the sleep is intended to give the kill time to execute before the job # exits (sleep 1 ; cat ) & +# suppress any message about terminated process +exec 2>/dev/null kill -1 %% && echo i killed it || echo could not kill it diff --git a/tests/jobs5.sub b/tests/jobs5.sub index e6ffb44e6..e348f2e2f 100644 --- a/tests/jobs5.sub +++ b/tests/jobs5.sub @@ -59,3 +59,13 @@ disown -a unset bgpid1 bgpid2 bgpid3 unset wpid + +# now that we have no jobs, make sure that wait -n -p var leaves var unset +jobs +wait -n -p wpid +echo $wpid $? + +# make sure wait -p var does something useful without the -n option +jobs +wait -p wpid +declare -p wpid diff --git a/tests/jobs7.sub b/tests/jobs7.sub index 3e76db37b..582365ff5 100644 --- a/tests/jobs7.sub +++ b/tests/jobs7.sub @@ -3,4 +3,6 @@ set -m sleep 20 & echo $(jobs) echo $(fg %% ; jobs) +# suppress any message about sleep 20 being terminated +exec 2>/dev/null kill %1 diff --git a/tests/lastpipe.right b/tests/lastpipe.right index cca5938d8..84e1e2ea3 100644 --- a/tests/lastpipe.right +++ b/tests/lastpipe.right @@ -18,3 +18,5 @@ A2 B1 B2 HI -- 42 -- 0 42 +x=x +x=x diff --git a/tests/lastpipe.tests b/tests/lastpipe.tests index 775e81dd2..f9d669ddc 100644 --- a/tests/lastpipe.tests +++ b/tests/lastpipe.tests @@ -71,3 +71,4 @@ ${THIS_SH} ./lastpipe1.sub echo lastpipe1.sub returns $? ${THIS_SH} ./lastpipe2.sub +${THIS_SH} ./lastpipe3.sub diff --git a/tests/lastpipe3.sub b/tests/lastpipe3.sub new file mode 100644 index 000000000..b9222b8ac --- /dev/null +++ b/tests/lastpipe3.sub @@ -0,0 +1,11 @@ +# problem in bash-5.1 running lastpipe in subshell if fd 0 is closed + +shopt -s lastpipe +exec 0<&- + +echo x | read x +echo x=$x +unset x + +echo x | cat | read x +echo x=$x diff --git a/tests/mapfile.right b/tests/mapfile.right index 143d6ddc1..4452232d5 100644 --- a/tests/mapfile.right +++ b/tests/mapfile.right @@ -151,6 +151,7 @@ a [27] aaa [28] aaa [29] aaa +declare -a array=([0]="a" [1]="b" [2]="c" [3]=$'\n') 1 2 3 4 5 foo 0 1 diff --git a/tests/mapfile.tests b/tests/mapfile.tests index 01f1f2e55..c2ea7d24d 100644 --- a/tests/mapfile.tests +++ b/tests/mapfile.tests @@ -52,6 +52,11 @@ for (( i = 0 ; i < ${#E[@]} ; i++ )); do echo "${E[${i}]}" done -${THIS_SH} ./mapfile1.sub +unset -v s array +s=$'a\xffb\xffc\xff' +mapfile -t -d $'\xff' array <<<"$s" +declare -p array +unset -v s array +${THIS_SH} ./mapfile1.sub ${THIS_SH} ./mapfile2.sub diff --git a/tests/misc/run-r2.sh b/tests/misc/run-r2.sh old mode 100755 new mode 100644 diff --git a/tests/misc/sigint-1.sh b/tests/misc/sigint-1.sh old mode 100755 new mode 100644 diff --git a/tests/misc/sigint-2.sh b/tests/misc/sigint-2.sh old mode 100755 new mode 100644 diff --git a/tests/misc/sigint-3.sh b/tests/misc/sigint-3.sh old mode 100755 new mode 100644 diff --git a/tests/misc/sigint-4.sh b/tests/misc/sigint-4.sh old mode 100755 new mode 100644 diff --git a/tests/nameref.right b/tests/nameref.right index 296105c96..83e9ee5b8 100644 --- a/tests/nameref.right +++ b/tests/nameref.right @@ -348,6 +348,10 @@ declare -a v=([1]="1") declare -a v=([0]="0" [1]="1") declare -n n="v[1]" declare -a v=([0]="0") +./nameref15.sub: line 120: warning: xref: removing nameref attribute +declare -a xref=([1]="one") +./nameref15.sub: line 126: warning: xref: removing nameref attribute +declare -a xref=([1]="one") declare -n r1="y" declare -n r2="x" ./nameref16.sub: line 25: typeset: x: not found @@ -424,6 +428,23 @@ declare -a var=([123]="") declare -n ref="var[123]" ./nameref18.sub: line 67: declare: var[123]: not found declare -a var=([123]="X") +argv[1] = <1> +argv[2] = <2> +argv[3] = <3> +argv[1] = <1> +argv[2] = <2> +argv[3] = <3> +argv[1] = <1> +argv[2] = <2> +argv[3] = <3> +argv[1] = <1> +argv[2] = <2> +argv[3] = <3> +argv[1] = <1> +argv[2] = <2> +argv[3] = <31> +argv[4] = <2> +argv[5] = <3> declare -n foo="bar" declare -- foo="bar" ./nameref19.sub: line 22: declare: bar: not found @@ -440,6 +461,8 @@ declare -n foo="bar" declare -- bar declare -- foo="bar" declare -- bar +8 +declare -n ivar="foo" declare -a v=([0]="Y") r: v: @@ -483,3 +506,55 @@ declare -n ref="var" declare -ai var=([1]="0") declare -n ref="var" declare -- var="1" +a string with spaces +many spaces +declare -n foo="bar[0]" +declare -a bar=([0]=" still more spaces") +declare -n foo="bar[0]" +declare -a bar=([0]="spaces still more spaces") +./nameref22.sub: line 50: declare: array: reference variable cannot be an array +./nameref22.sub: line 53: declare: array[128]: reference variable cannot be an array +declare -a array=([0]="one" [1]="two" [2]="three") +declare -- array="(one two three)" +declare -a array=([0]="one" [1]="two" [2]="three") +./nameref22.sub: line 69: declare: `(one two three)': invalid variable name for name reference +./nameref22.sub: line 70: declare: array: reference variable cannot be an array +declare -a array=([0]="zero") +./nameref22.sub: line 74: declare: array: reference variable cannot be an array +declare -a array=([0]="one" [1]="two" [2]="three") +./nameref22.sub: line 79: declare: array: reference variable cannot be an array +declare -a array +declare -ai array=([0]="one") +declare -a array=([0]="zero") +declare -a array=([0]="one" [1]="two" [2]="three") +declare -ai a=([0]="5") +declare -ai a=([0]="6") +declare -ai a=([0]="1") +./nameref23.sub: line 15: declare: b: not found +declare -ai a=([0]="1") +declare -- b="1" +declare -ai a=([0]="1") +declare -- b="11" +declare -ai a=([0]="1") +declare -- b="110" +./nameref23.sub: line 25: declare: `1': invalid variable name for name reference +declare -ai a=([0]="1") +./nameref23.sub: line 27: declare: b: not found +declare -ai a=([0]="4") +declare -in b="a[0]" +declare -ai a=([0]="6") +declare -in b="a[0]" +foo +foo bar +declare -a a=([0]="" [1]="foo bar") +declare -n b="a[1]" +foo +foo bar +declare -a a=([0]="" [1]="foo bar") +declare -n b="a[1]" +12 +16 +declare -ai a=([0]="0" [1]="16") +12 +16 +declare -ai a=([0]="0" [1]="16") diff --git a/tests/nameref15.sub b/tests/nameref15.sub index cce8fbd94..e9a09eeb4 100644 --- a/tests/nameref15.sub +++ b/tests/nameref15.sub @@ -115,3 +115,13 @@ v=(0 1) declare -n n=v[1] unset n declare -p n v + +declare -n xref +declare -a xref[1]=one +declare -p xref + +unset xref +declare -n xref +xref=array +declare -a xref[1]=one +declare -p xref diff --git a/tests/nameref18.sub b/tests/nameref18.sub index a29fe379d..7a32877f3 100644 --- a/tests/nameref18.sub +++ b/tests/nameref18.sub @@ -65,3 +65,19 @@ declare -p ref ${!ref} var declare +t ref ref=X declare -p ref ${!ref} var + +unset -n ref +unset var + +arr=(1 2 3) + +indir='arr[@]' +declare -n ref='arr[@]' + +recho "${!indir}" +recho ${!indir} + +recho "$ref" +recho $ref + +recho "${!indir}$ref" diff --git a/tests/nameref19.sub b/tests/nameref19.sub index b00f68e52..d4b900e81 100644 --- a/tests/nameref19.sub +++ b/tests/nameref19.sub @@ -62,3 +62,12 @@ declare bar declare -p foo bar declare +n foo declare -p foo bar + +# but when we add the nameref attribute, we remove other attributes + +declare -i ivar +ivar=4+4 +echo $ivar + +declare -n ivar=foo +declare -p ivar diff --git a/tests/nameref22.sub b/tests/nameref22.sub new file mode 100644 index 000000000..4e44fbb35 --- /dev/null +++ b/tests/nameref22.sub @@ -0,0 +1,97 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +declare -n foo=bar + +declare foo='a string with spaces' +echo $foo + +unset foo +declare foo+='many spaces' +echo $foo + +unset foo # unsets bar +unset -n foo + +declare -a bar +declare -n foo='bar[0]' +declare foo+=' still more spaces' + +declare -p foo bar +unset -n foo +unset bar + +declare -a bar +declare -n foo='bar[0]' +declare foo=spaces +declare foo+=' still more spaces' + +declare -p foo bar + +unset -n foo +unset bar + +ray=ray + +declare -a array +array[0]=zero + +declare -n array +unset array + +declare -n array[128] +unset array + +declare -a array='(one two three)' +declare -p array +unset array + +declare array='(one two three)' +declare -p array +unset array + +declare -a ar$ray='(one two three)' +declare -p ar$ray +unset array + +declare -a array=(zero) +declare -n array='(one two three)' +declare -n array=three +declare -p array +unset array + +declare -n array=(one two three) +declare -p array +unset array + +declare -a array +declare -n array=one +declare -p array +unset array + +array=one +declare -i array[64]; +declare -p array +unset array + +declare -a array=zero +declare -p array +unset array + +declare -a array +declare array='(one two three)' +declare -p array +unset array + + diff --git a/tests/nameref23.sub b/tests/nameref23.sub new file mode 100644 index 000000000..358c381e1 --- /dev/null +++ b/tests/nameref23.sub @@ -0,0 +1,82 @@ +declare -ai a +a[0]=4 +declare -n b='a[0]' + +b+=1 ; declare -p a + +declare b+=1 ; declare -p a + +unset a b +unset -n b + +###### +declare -ai a=(1) +declare -in b="a[0]" +declare -p a b + +b+=1 ; declare -p a b +b+=1 ; declare -p a b +b+=0 ; declare -p a b + +unset a b + +##### +declare -ai a=(1) +declare -n b="1" +declare -p a +declare -np b + +unset a ; unset -n b + +##### +declare -ai a=('4'); +declare -n b='a[0]'; +declare -ni b; # this should maybe not be allowed, but it is for now +declare -p a b + +b+=2; +declare -p a b + +unset a ; unset -n b + +##### +f() +{ + local -a a=('' 'foo'); + local -n b=a[1]; + echo $b; + b+=\ bar; + echo $b; + declare -p a b; +} +f + +declare -a a=('' 'foo'); +declare -n b=a[1]; +echo $b; +b+=\ bar; +echo $b; +declare -p a b + +unset a ; unset -n b + +unset -f f +f() +{ + local -ai a=(0 12); + local -n b=a[1]; + echo $b; + b+=4; + echo $b; + declare -p a; +} +f + +declare -ai a=(0 12); +declare -n b=a[1]; +echo $b; +b+=4; +echo $b; +declare -p a + +unset a ; unset -n b diff --git a/tests/new-exp.right b/tests/new-exp.right index 752bba5ce..e3dc40e17 100644 --- a/tests/new-exp.right +++ b/tests/new-exp.right @@ -617,7 +617,7 @@ c Sub = 0 2 4 8 <> <> <'ab '\''cd'\'' ef'> -./new-exp10.sub: line 24: ${x@C}: bad substitution +bash: line 1: ${x@C}: bad substitution <'ab'> <'cd ef'> <''> <'gh'> <'ab' 'cd ef' '' 'gh'> <'ab'> <'cd> <''> <'gh'> @@ -625,7 +625,7 @@ c Sub = 0 2 4 8 <'ab cd'> <'4'> <'ab cd'> <> -argv[1] = +argv[1] = < > <' \t\n'> @@ -648,6 +648,7 @@ i declare -i foo A declare -A foo +./new-exp10.sub: line 118: ${V@}: bad substitution abcxxxdef abcÃ¥def ḅć @@ -703,11 +704,21 @@ aaa bbb a bbb aaa bb 'string' +'string' +'value with spaces' 'value with spaces' 'a b' 'c d' 'e f' 'a b' 'c d' 'e f' 0 "zero" 1 "one" 2 "two" 3 "three" 0 "zero z" 1 "one o" 2 "two t" 3 "three t" +argv[1] = <0> +argv[2] = +argv[3] = <1> +argv[4] = +argv[5] = <2> +argv[6] = +argv[7] = <3> +argv[8] = declare -a foo=() ai declare -ai foo @@ -719,6 +730,65 @@ a a a a +/homes/chetdefg +/homes/chetdefg +~defg +defg +defg +defg +$'&' $'&' $'&' $'&' $'&' $'&' $'&' +$'a' $'b' $'c' $'d' $'e' $'f' $'g' +a b c d e f g +a b c d e f g +& & & & & & & +& & & & & & & +& & & & & & & +\& \& \& \& \& \& \& +a a a a a a a +3 3 3 3 3 3 3 +abc defg +abc defg +& defg +& defg +& defg +\& defg +\abc defg +abcdefg +&defg +\abcdefg +\&defg +\&defg +\abcdefg +\\&defg +&defg +&defg +\&defg +\&defg +\\&defg +letx&yee +letx&yee +letxssyee +letxssyee +letx\&yee +letx\&yee +letx&yee +letx&yee +let\&ee +let\\ssee +let\ssee +let\ssee +let\&ee +let\&ee +let&ee +let&ee +twoone +&twoone +onetwo +one&two +two +&two +otwone +&twone argv[1] = argv[1] = diff --git a/tests/new-exp.tests b/tests/new-exp.tests index 079426cb5..c542313f1 100644 --- a/tests/new-exp.tests +++ b/tests/new-exp.tests @@ -631,6 +631,10 @@ ${THIS_SH} ./new-exp14.sub # ongoing work with a/A parameter transformations and `nounset' ${THIS_SH} ./new-exp15.sub +# pattern substitution with `&' (quoted and unquoted) in the replacement string +${THIS_SH} ./new-exp16.sub + + # problems with stray CTLNUL in bash-4.0-alpha unset a a=/a diff --git a/tests/new-exp10.sub b/tests/new-exp10.sub index bf9ebe7aa..5b199d4f5 100644 --- a/tests/new-exp10.sub +++ b/tests/new-exp10.sub @@ -21,7 +21,9 @@ printf "<%s>" "${x@A}" ; echo x="ab 'cd' ef" printf "<%s> " "${x@Q}" ; echo -printf "<%s>" "${x@C}" +# this needs to be run in a subshell because invalid transformation operators +# are now treated as substitution errors, fatal in non-interactive shells +${THIS_SH} -c 'x=abcdef ; printf "<%s>" "${x@C}"' bash # if unquoted, normal word splitting happens set -- ab 'cd ef' '' gh @@ -111,3 +113,6 @@ declare -A foo echo ${foo@a} declare -p foo + +V=42 +echo ${V@} # error diff --git a/tests/new-exp14.sub b/tests/new-exp14.sub index b8bda8de5..92f51ea1a 100644 --- a/tests/new-exp14.sub +++ b/tests/new-exp14.sub @@ -1,4 +1,18 @@ -# test the other uses of the 'K' tranform operator +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# test the other uses of the 'K' transform operator and its sibling 'k' # the associative array tests are performed separately, since that was the # original motivation for this feature foo=string @@ -7,7 +21,9 @@ bar='value with spaces' set -- 'a b' 'c d' 'e f' echo ${foo@K} +echo ${foo@k} echo ${bar@K} +echo ${bar@k} echo ${@@K} echo "${@@K}" @@ -17,3 +33,4 @@ echo ${foo[@]@K} foo=( 'zero z' 'one o' 'two t' 'three t' ) echo ${foo[@]@K} +recho "${foo[@]@k}" diff --git a/tests/new-exp16.sub b/tests/new-exp16.sub new file mode 100644 index 000000000..2ed751d34 --- /dev/null +++ b/tests/new-exp16.sub @@ -0,0 +1,120 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +HOME=/homes/chet +string=abcdefg +set -- a b c + +shopt -u patsub_replacement + +# verify existing behavior +echo ${string/abc/~} +echo "${string/abc/~}" +echo ${string/abc/"~"} + +echo ${string/abc/$notthere} +echo "${string/abc/$notthere}" +echo "${string/abc/"$notthere"}" + +echo ${string//?/\$\'&\' } + +shopt -s patsub_replacement + +echo ${string//?/\$\'&\' } + +echo ${string//?/& } +echo "${string//?/& }" + +echo ${string//?/\& } +echo "${string//?/\& }" +echo ${string//?/"& "} +echo ${string//?/"\& "} + +echo "${string//?/"a "}" +echo "${string//?/"$# "}" + +echo ${string/abc/& } +echo "${string/abc/& }" +echo ${string/abc/"& "} + +echo ${string/abc/\& } +echo "${string/abc/\& }" +echo ${string/abc/"\& "} +echo ${string/abc/\\& } + +rep='\\&' + +echo "${string/abc/&}" +echo ${string/abc/\&} +echo "${string/abc/\\&}" +echo ${string/abc/"\\&"} +echo "${string/abc/"\\&"}" +echo ${string/abc/$rep} +echo ${string/abc/"$rep"} + +shopt -u patsub_replacement + +echo "${string/abc/&}" +echo ${string/abc/\&} +echo "${string/abc/\\&}" +echo "${string/abc/"\\&"}" +echo ${string/abc/"$rep"} + +shopt -s patsub_replacement + +repl='x&y' +r2='x\&y' +var='letssee' + +pat=ss + +echo ${var//$pat/"$repl"} +echo "${var//$pat/"$repl"}" +echo ${var//$pat/$repl} +echo "${var//$pat/$repl}" + +echo ${var//$pat/"$r2"} +echo "${var//$pat/"$r2"}" +echo ${var//$pat/$r2} +echo "${var//$pat/$r2}" + +r2='\\&' +r3='\&' + +echo ${var//$pat/\\\&} +echo ${var//$pat/\\$r2} +echo ${var//$pat/\\&} +echo ${var//$pat/$r2} + +echo ${var//$pat/"\&"} +echo ${var//$pat/"$r3"} +echo ${var//$pat/"&"} +echo ${var//$pat/$r3} + +# these cases provide the same functionality as sed when given a BRE like +# `^' or `$', or when passed a null input line +one=one +null= + +echo ${one/#/&two} +echo ${one/#/\&two} + +echo ${one/%/&two} +echo ${one/%/\&two} + +echo ${null/#/&two} +echo ${null/#/\&two} + +echo ${one/#?/&two} +echo ${one/#?/\&two} diff --git a/tests/nquote.right b/tests/nquote.right index e3ae55585..31c35c3b4 100644 --- a/tests/nquote.right +++ b/tests/nquote.right @@ -35,6 +35,10 @@ argv[1] = ;foo argv[1] = <^I> argv[1] = <'A^IB'> +argv[1] = +argv[1] = <$'a\tb\tc'> + AD +E hello' world hello world! hello' world! @@ -62,3 +66,15 @@ argv[1] = <^?> 0000000 esc fs gs rs us del nl 0000007 \q +foo +./nquote4.sub: line 6: quux: command not found +argv[1] = +argv[1] = +argv[1] = <^A> +argv[1] = <\^A> +0000000 a $ ' \ 0 1 ' b \n a 001 b \n +0000015 +0000000 a $ ' \ 0 1 ' b \n a 001 b \n +0000015 +0000000 A \n A \n +0000004 diff --git a/tests/nquote.tests b/tests/nquote.tests index 20d6415d3..e4d1a56f2 100644 --- a/tests/nquote.tests +++ b/tests/nquote.tests @@ -128,6 +128,15 @@ unset mytab recho "${mytab:-$'\t'}" recho "$( args $'A\tB' )" +# tests for $'...' not being expanded when inside double quotes +recho $'a\tb\tc' +recho "$'a\tb\tc'" + +# tests for $'...' being expanded in command substitution, and when +echo "$(echo $'\t\t\101\104\n\105')" + ${THIS_SH} ./nquote1.sub ${THIS_SH} ./nquote2.sub ${THIS_SH} ./nquote3.sub +${THIS_SH} ./nquote4.sub +${THIS_SH} ./nquote5.sub diff --git a/tests/nquote4.sub b/tests/nquote4.sub new file mode 100644 index 000000000..0d4a4955f --- /dev/null +++ b/tests/nquote4.sub @@ -0,0 +1,6 @@ +# make sure aliases containing new-style single quotes are expanded correctly + +shopt -s expand_aliases +alias foo=$'echo foo\n\nquux\n' + +foo diff --git a/tests/nquote5.sub b/tests/nquote5.sub new file mode 100644 index 000000000..97cbadc41 --- /dev/null +++ b/tests/nquote5.sub @@ -0,0 +1,36 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +. test-glue-functions + +recho $( echo a$'\01)'b ) +recho $( echo ab ) +recho $( echo \ ) +recho $( echo \\ ) + +LC_CTYPE=C +od -c < [ abc def ghi jkl / abc def ghi jkl ] [ abc def ghi jkl ] [ abc def ghi jkl / abc def ghi jkl / abc def ghi jkl ] -5: notOK +1: OK +2: $'not' +3: OK +4: OK +5: tOK OK OK -5: $'not\ttoo\nbad' +$'not' +OK +tOK +6: $'not\ttoo\nbad' +OKa ' b +OKa ' b +7: OK +8: OKa ' b +9: OKa " b +10: OKa " b +tOK +tOK +tOK +tOK +./posixexp7.sub: line 69: ${'x1'%'t'}: bad substitution +./posixexp7.sub: line 70: ${'x1'%'t'}: bad substitution +./posixexp7.sub: line 73: ${'x1'%'t'}: bad substitution +./posixexp7.sub: line 74: ${'x1'%'t'}: bad substitution "A" A argv[1] = <"A"> argv[1] = argv[1] = ./posixexp.tests: line 97: unexpected EOF while looking for matching `}' -./posixexp.tests: line 98: syntax error: unexpected end of file diff --git a/tests/posixexp7.sub b/tests/posixexp7.sub index 2e230cf85..4e3fa007c 100644 --- a/tests/posixexp7.sub +++ b/tests/posixexp7.sub @@ -1,13 +1,76 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# # test the effect of quotes on the WORD in the posix pattern removal operators -# a here document does not behave the same as double quotes +# x=notOK +x1=not + cat <&2 ;; +esac + +export LANG=en_US.UTF-8 case $(printf %d\\n \'À) in 192) exit 0;; *) echo "printf2.sub: multibyte character conversion failed" >&2 ; exit 2 ;; diff --git a/tests/quotearray.right b/tests/quotearray.right new file mode 100644 index 000000000..e68936598 --- /dev/null +++ b/tests/quotearray.right @@ -0,0 +1,152 @@ +declare -A assoc=(["x],b[\$(echo uname >&2)"]="1" ) +declare -A assoc=(["\$key"]="1" ["x],b[\$(echo uname >&2)"]="1" ) +declare -A assoc=(["\$key"]="1" ["x],b[\$(echo uname >&2)"]="2" ) +./quotearray.tests: line 31: ((: 'assoc[x\],b\[\$(echo uname >&2)]++' : syntax error: operand expected (error token is "'assoc[x\],b\[\$(echo uname >&2)]++' ") +declare -A assoc=(["\$key"]="1" ["x],b[\$(echo uname >&2)"]="2" ) +./quotearray.tests: line 34: ((: 'assoc[x\],b\[\$(echo uname >&2)]'++ : syntax error: operand expected (error token is "'assoc[x\],b\[\$(echo uname >&2)]'++ ") +declare -A assoc=(["\$key"]="1" ["x],b[\$(echo uname >&2)"]="2" ) +declare -A assoc=(["\$key"]="1" ["x],b[\$(echo uname >&2)"]="3" ) +4 +klmnopqrst +klmnopqrst +klmno +klmnopqrst +declare -A A=(["\$(echo %)"]="5" [%]="10" ["]"]="10" ) +declare -A A=(["~"]="42" ) +42 +declare -A A=(["~"]="43" ) +42 +declare -A A=(["~"]="43" ["~0"]="43" ) +12 +declare -a a=([0]="12" [1]="42") +2 +2 +declare -Ai assoc=(["']"]="3" ["\$var"]="1" ) +105 +declare -A assoc=(["\` echo >&2 foo\`"]="42" ["\$( echo >&2 bar)"]="63" ) +./quotearray.tests: line 140: x],b[$(echo uname >&2): syntax error: invalid arithmetic operator (error token is "],b[$(echo uname >&2)") +./quotearray.tests: line 144: x],b[$(echo uname >&2): syntax error: invalid arithmetic operator (error token is "],b[$(echo uname >&2)") +1 +./quotearray.tests: line 147: x],b[$(echo uname >&2): syntax error: invalid arithmetic operator (error token is "],b[$(echo uname >&2)") +1 +./quotearray.tests: line 150: x],b[$(echo uname >&2): syntax error: invalid arithmetic operator (error token is "],b[$(echo uname >&2)") +1 +./quotearray.tests: line 153: x],b[$(echo uname >&2): syntax error: invalid arithmetic operator (error token is "],b[$(echo uname >&2)") +1 +declare -A assoc +0 +0 +1 +0 +0 +0 +declare -A assoc=(["\` echo >&2 foo\`"]="128" [0]="0" ["]"]="12" ["x],b[\$(echo uname >&2)"]="42" ["~"]="42" ["\$( echo 2>& date)"]="foo" ) +foo +0 +0 +./quotearray1.sub: line 68: 0\],b\[1: syntax error: invalid arithmetic operator (error token is "\],b\[1") +declare -a array +0 +0 +0 +0 +1 +1 +declare -A aa=(["\$( echo 2>& date)"]="foo" ) +foo +0 +1 +1 +./quotearray1.sub: line 113: test: aa[$(echo: binary operator expected +2 +[[ -v assoc[a] ]]; $?=0 +[[ -v assoc["] ]]; $?=0 +declare -A assoc=(["\""]="123" [a]="123" ) +declare -A a=([1]="1" [0]="0" [" "]="11" ) +7 +7 +declare -A A=([$'\t']="2" [" "]="2" ) +declare -A A=([$'\t']="2" ["*"]="2" [" "]="2" ["]"]="2" ["@"]="2" ) +./quotearray2.sub: line 54: read: `A[]]': not a valid identifier +declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" ) +./quotearray2.sub: line 62: printf: `A[]]': not a valid identifier +declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" ) +./quotearray2.sub: line 70: declare: `A[]]=X': not a valid identifier +declare -A A=(["*"]="X" ["@"]="X" ) +./quotearray2.sub: line 78: declare: `A[]]=X': not a valid identifier +declare -A A=(["*"]="X" ["@"]="X" ) +./quotearray2.sub: line 89: let: assoc[x],b[$(echo: bad array subscript (error token is "b[$(echo") +declare -A assoc +declare -A assoc=(["\$(echo foo)"]="1" ) +0 +declare -A assoc=(["\$var"]="value" ) +declare -A assoc=(["\$var"]="value" ) +declare -A assoc=(["\$var"]="value" ) +declare -A assoc=() +declare -A a=(["\$(echo foo)"]="1" ) +declare -A a=() +declare -A a=(["\$(echo foo)"]="1" ) +declare -A a=(["\$(echo foo)"]="1" ) +declare -A assoc=(["!"]="bang" ) +1 +1 +declare -A assoc=(["!"]="bang" ["@"]="at" ) +declare -A assoc=(["!"]="bang" ) +declare -a array=([0]="1" [1]="2" [2]="3") +declare -a array=() +./quotearray3.sub: line 98: declare: array: not found +declare -A map=(["foo\$(uname >/dev/tty)bar"]="1" ) +1 +declare -A map=() +$(DOESNOTEXIST) +declare -A blah=() +declare -A assoc=(["*"]="star" ["!"]="bang" ["@"]="at" ) +declare -A assoc=(["*"]="star" ["!"]="bang" ) +declare -A assoc=(["!"]="bang" ) +./quotearray4.sub: line 41: declare: assoc: not found +declare -A assoc=(["*"]="star" ["!"]="bang" ["@"]="at" ) +declare -A assoc=(["*"]="star" ["!"]="bang" ) +declare -A assoc=(["!"]="bang" ) +declare -A assoc=(["*"]="star" ["!"]="bang" ) +declare -A assoc=(["!"]="bang" ) +star bang at +star bang at +0 +0 +0 +1 +1 +declare -A assoc=(["*"]="star" ["!"]="bang" ["@"]=" key" ) +=== +1 +1 +declare -a array=([0]="1" [1]="2" [2]="3") +1 2 3 +1 2 3 +0 +0 +./quotearray4.sub: line 115: array[@]: bad array subscript +declare -a array=([0]="1" [1]="2" [2]="3") +./quotearray5.sub: line 27: unset: `a[$(echo': not a valid identifier +./quotearray5.sub: line 27: unset: `foo)]': not a valid identifier +declare -A a=() +declare -A a=() +declare -A a=() +----- +declare -A a=(["\$(echo foo)"]="1" ) +declare -A a=() +declare -A a=() +declare -A a=() +----- +declare -A a=() +declare -A a=() +declare -A a=() +---------- +declare -A a=([.]="v1" ) +declare -A a=([.]="v1" ) +----- +declare -A a=([.]="v1" ) +declare -A a=([.]="v1" ) +----- +declare -A a=([.]="v1" ) +declare -A a=([.]="v1" ) diff --git a/tests/quotearray.tests b/tests/quotearray.tests new file mode 100644 index 000000000..e1ed83b0e --- /dev/null +++ b/tests/quotearray.tests @@ -0,0 +1,164 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# a set of tests for associative arrays in arithmetic contexts + +declare -A assoc +key='x],b[$(echo uname >&2)' + +(( assoc[$key]++ )) +declare -p assoc + +(( assoc['$key']++ )) +declare -p assoc + +(( assoc["$key"]++ )) +declare -p assoc + +declare -A assoc + +(( 'assoc[$key]++' )) +declare -p assoc + +(( 'assoc[$key]'++ )) +declare -p assoc + +(( "assoc[$key]++" )) +declare -p assoc + +unset assoc + +typeset -A a +b="80's" + +((++a[$b])) + +((++a["$b"])) +[[ $((++a[$b])) ]] +[[ $((++a["$b"])) ]] + +echo ${a[$b]} +unset a + +declare -A A + +string=abcdefghijklmnopqrstuvwxyz + +echo ${string:10:10} +k1='%' +k2='$(echo %)' + +A[%]=10 +A[']']=10 +A[$k2]=5 + +k3=']' + +echo ${string:A[%]:A[$k1]} +echo ${string:A[%]:A[$k2]} +echo ${string:A[%]:A[$k3]} + +declare -p A + +unset A string key + +key='~' + +declare -A A +A[$key]=42 + +declare -p A + +echo $(( A[$key]++ )) +declare -p A + +key='~0' +A[$key]=42 +echo $(( A[$key]++ )) +declare -p A + +declare -a a +key='~-2' +a[0]=12 +a[$key]=42 +echo $(( a[7<(4+2)] )) + +declare -p a + +unset A a key + +declare -A A +declare -a a + +sString="devel packager's guide" +i=2 + +A["$sString"]=$i +a[$i]=$sString + +echo "${A[${a[i]}]}" +echo ${A["${a[i]}"]} + +unset A a + +#LANG=C +unset var assoc +var=\'\] +declare -Ai assoc +assoc[$var]=1 +assoc[$var]+=1 +((assoc['$var']++)) +((assoc[$var]++)) +typeset -p assoc + +unset assoc + +declare -A assoc +key1='` echo >&2 foo`' +key2='$( echo >&2 bar)' + +assoc[$key1]=42 +assoc[$key2]=63 + +echo $(( assoc[$key1] + assoc[$key2] )) +declare -p assoc +unset assoc + +declare -a a +key='x],b[$(echo uname >&2)' +a[$key]=42 + +expr='a[$key]' + +(( $expr )) +echo $? + +echo $(( $expr )) +echo $? + +echo $(( expr )) +echo $? + +(( expr )) +echo $? + +${THIS_SH} ./quotearray1.sub +${THIS_SH} ./quotearray2.sub +${THIS_SH} ./quotearray3.sub + +# behavior of builtins with array subscripts @ and * +${THIS_SH} ./quotearray4.sub + +# behavior of unset with quoted and unquoted array arguments +${THIS_SH} ./quotearray5.sub diff --git a/tests/quotearray1.sub b/tests/quotearray1.sub new file mode 100644 index 000000000..19741b1f9 --- /dev/null +++ b/tests/quotearray1.sub @@ -0,0 +1,131 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# arithmetic operators for conditional commands and arithmetic commands + +declare -A assoc +declare -a index + +key='x],b[$(echo uname >&2)' +key1=']' +key2='` echo >&2 foo`' +key3='~' +key4='7<(4+2)' +key5='$( echo 2>& date)' +key6='$(echo foo)' + +[[ -n assoc[$key] ]] +declare -p assoc + +assoc[$key]=42 +assoc[$key1]=12 +assoc[$key2]=128 +assoc[$key3]=42 +assoc[0]=0 + +[[ assoc[$key] -eq assoc[$key] ]] +echo $? + +[[ assoc[$key] -gt assoc[$key1] ]] +echo $? + +[[ assoc[$key2] -lt assoc[$key] ]] +echo $? + +[[ assoc[$key] -eq assoc[$key3] ]] +echo $? + +[[ index[7<(4+2)] -le assoc[0] ]] +echo $? +[[ index[$key4] -le assoc[0] ]] +echo $? + +assoc[$key5]=foo +declare -p assoc + +echo "${assoc[$key5]}" + +[[ -v assoc[$key5] ]] +echo $? +[[ -v assoc[$key] ]] +echo $? + +unset assoc + +declare -a array +index='0],b[1'; +((array[$index]++)) + +declare -p array + +unset array + +declare -A assoc + +assoc[$key]=42 +assoc[$key4]=42 + +[[ -v assoc[$key] ]] +echo $? +[[ -v assoc["$key"] ]] +echo $? + +[[ -v assoc[$key4] ]] +echo $? +[[ -v assoc["$key4"] ]] +echo $? + +[[ -v assoc['$key'] ]] +echo $? +[[ -v assoc['$key4'] ]] +echo $? + +unset -v assoc + +declare -A aa +aa[$key5]=foo + +declare -p aa +echo "${aa[$key5]}" + +[[ -v aa[$key5] ]] +echo $? + +[[ -v aa[$key] ]] +echo $? + +aa[$key6]=42 +# this still performs expansion +test -v aa["$key6"] +echo $? +# should be an error +test -v aa[$key6] +echo $? + +unset aa key + +declare -A assoc + +mytest () +{ + assoc["$1"]=123 + [[ -v assoc["$1"] ]] + printf '[[ -v assoc[%s] ]]; $?=%s\n' "$1" "$?" +} + +mytest 'a' +mytest '"' +declare -p assoc +unset -v assoc +unset -f mytest diff --git a/tests/quotearray2.sub b/tests/quotearray2.sub new file mode 100644 index 000000000..056f8ca2f --- /dev/null +++ b/tests/quotearray2.sub @@ -0,0 +1,107 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# assoc_expand_once for builtins + +typeset -A a +a[0]=0 a[1]=1 + +let "a[\" \"]=11" ; typeset -p a ; a[0]=0 + +unset a + +# tests for `problem' keys when using associative arrays and assoc_expand_once +# deal with problems for now; this is a placeholder for if and when I fix them + +typeset -A a + +k='[' +echo $(( a[$k]=7 )) + +k=']' +echo $(( a[$k]=7 )) + +unset a + +declare -A A + +for k in $'\t' ' '; do + (( A[$k]=2 )) +done +declare -p A + +for k in ']' '*' '@'; do + (( A[$k]=2 )) +done + +declare -p A + +unset A +declare -A A + +for k in $'\t' ' ' ']' '*' '@'; do + read "A[$k]" <<< X +done +declare -p A + +unset A +declare -A A + +for k in $'\t' ' ' ']' '*' '@'; do + printf -v "A[$k]" "%s" X +done +declare -p A + +unset A +declare -A A + +for k in ']' '*' '@'; do + declare A[$k]=X +done +declare -p A + +unset A +declare -A A + +for k in ']' '*' '@'; do + declare "A[$k]=X" +done +declare -p A + +unset A + +# this isn't right yet, but changes will show up here +shopt -s assoc_expand_once +declare -A assoc +key='x],b[$(echo uname >&2)' + +let assoc[$key]++ +declare -p assoc + +unset assoc + +typeset -A assoc +at=@ + +key='$(echo foo)' + +assoc[$key]=1 +declare -p assoc + +shopt -s assoc_expand_once +test -v assoc["$key"] ; echo $? + +unset assoc +shopt -u assoc_expand_once + diff --git a/tests/quotearray3.sub b/tests/quotearray3.sub new file mode 100644 index 000000000..65f950d5d --- /dev/null +++ b/tests/quotearray3.sub @@ -0,0 +1,117 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# assoc_expand_once and unset builtin, which is treated specially + +declare -A assoc + +var=x123 +assoc['$var']=value +declare -p assoc + +shopt -u assoc_expand_once +unset "assoc[$var]" +declare -p assoc + +unset 'assoc[$var]' +declare -p assoc + +assoc['$var']=value +shopt -s assoc_expand_once +unset 'assoc[$var]' +declare -p assoc + +unset assoc +shopt -u assoc_expand_once + +declare -A a +a['$(echo foo)']=1 + +unset 'a[$(echo foo)]' +declare -p a + +key='$(echo foo)' +a[$key]=1 + +unset 'a[$key]' +declare -p a + +a[$key]=1 +unset "a[$key]" +declare -p a + +a[$key]=1 +unset a[$key] +declare -p a + +unset a + +typeset -A assoc +key=@ + +assoc[@]=at +assoc[!]=bang + +# this should only unset the element with key `@' +unset -v assoc[$key] +typeset -p assoc + +# this should check for assoc[@] and return 1 +test -v assoc[$key] +echo $? + +# this should too +[[ -v assoc[$key] ]] +echo $? + +unset assoc array + +declare -A assoc +declare -a array + +assoc=([@]=at [!]=bang) +declare -p assoc + +unset assoc[@] +declare -p assoc + +array=(1 2 3) +declare -p array + +# right now, this still unsets the entire array +unset array[@] +declare -p array + +BASH_COMPAT=51 +unset array[@] +declare -p array + +declare -A map; key='foo$(uname >/dev/tty)bar'; map[$key]=1 +declare -p map +echo ${map["$key"]} + +unset map["$key"] +declare -p map +unset map + +declare -A blah +blah['$(DOESNOTEXIST)']=broken +for i in "${!blah[@]}"; do echo "$i"; done + +for i in "${!blah[@]}"; do unset blah["$i"]; done +declare -p blah +unset blah + + + diff --git a/tests/quotearray4.sub b/tests/quotearray4.sub new file mode 100644 index 000000000..964aac751 --- /dev/null +++ b/tests/quotearray4.sub @@ -0,0 +1,116 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# tests for builtins handling associative array keys `*' and `@', with some +# indexed array tests as well (backwards compatible) + +# derived from test cases posted to bug-bash by myoga.murase@gmail.com + +declare -A assoc +declare -a array + +assoc[@]=at +assoc[*]=star +assoc[!]=bang + +key=@ + +iref='array[@]' +aref='assoc[@]' + +declare -p assoc + +unset assoc[@] +declare -p assoc + +unset assoc[*] +declare -p assoc + +unset assoc +declare -p assoc + +declare -A assoc +assoc[@]=at +assoc[*]=star +assoc[!]=bang + +declare -p assoc + +unset assoc["$key"] +declare -p assoc + +unset assoc["*"] +declare -p assoc + +assoc[@]=at assoc[*]=star + +unset assoc['@'] +declare -p assoc + +unset assoc['*'] + +declare -p assoc + +assoc[@]=at assoc[*]=star +echo ${!aref} + +declare -n nref=$aref +echo ${nref} +unset -n nref + +# for associative arrays, test -v treats @ and * as keys + +test -v 'assoc[@]' +echo $? +test -v assoc[$key] +echo $? +[[ -v assoc[$key] ]] +echo $? + +unset -v 'assoc[@]' + +test -v 'assoc[@]' +echo $? +[[ -v assoc[@] ]] +echo $? + +assoc[@]=at + +printf -v assoc[@] "%10s" key +declare -p assoc + +echo === +array=() +test -v array[@] +echo $? +[[ -v array[@] ]] +echo $? + +array=(1 2 3) +declare -p array + +echo ${!iref} +declare -n nref=$iref + +echo $nref +unset -n nref + +# but for indexed arrays, test -v treats @ and * as standing for the entire array +test -v 'array[@]' +echo $? +[[ -v array[@] ]] +echo $? + +printf -v array[@] "%-10s" key +declare -p array diff --git a/tests/quotearray5.sub b/tests/quotearray5.sub new file mode 100644 index 000000000..5366a9997 --- /dev/null +++ b/tests/quotearray5.sub @@ -0,0 +1,124 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# a set of tests for unset to try to ensure that subscripts are only expanded +# once. Derived from tests submitted by konsolebox@gmail.com + +declare -A a +key='$(echo foo)' + +# Here the tokens are valid array references and pass that fact to unset +# post-expansion + +# This solves the surprise expansion issues. + +a[$key]=1 +unset -v a[$key] # this performs normal word splitting +unset -v a["$key"] # prevent word splitting +declare -p a # Displays no element + +a['$key']=2 +unset -v a['$key'] +declare -p a # Displays no element + +a["foo"]=3 +unset -v a["foo"] +declare -p a # Displays no element + +echo ----- + +# Here the tokens are "strings". They expand and keep the +# original behavior and allows existing scripts to not break. +# It also allows nref or iref references to be transparently +# referenced in it. + +# the quotes prevent the arguments from being recognized as valid array +# references before word expansion. since unset doesn't know to treat +# them specially, they're treated as in previous versions and expansion +# is performed as part of evaluating the subscript + +a[$key]=1 +declare -p a +unset 'a[$key]' # Transforms to a[$key] after expansion +declare -p a # Displays no element + +a['$key']=2 +unset "a['\$key']" # Transforms to a['$key'] after expansion +declare -p a # Displays no element + +a["foo"]=3 +unset 'a["foo"]' # Transforms to a["foo"] after expansion +declare -p a # Displays no element + +echo ----- + +# The update also keeps compatibility with already existing behavior of +# unset when assoc_expand_once is enabled, but only for quoted tokens. + +a=() +shopt -s assoc_expand_once + +a[$key]=1 +unset "a[$key]" +declare -p a # Displays no element + +a['$key']=2 +unset "a[\$key]" +declare -p a # Displays no element + +a["foo"]=3 +unset "a[foo]" +declare -p a # Displays no element + +echo ---------- + +# For unsetting '@' and all elements: + +key=@ + +declare -A a=(@ v0 . v1) +unset a[$key] +declare -p a # Displays 'declare -A a=([.]="v1" )' + +declare -A a=(@ v0 . v1) +unset a[@] +declare -p a # same behavior + +echo ----- + +# these are quoted strings and unset doesn't treat them specially + +unset a +shopt -u assoc_expand_once + +declare -A a=(@ v0 . v1) +unset 'a[$key]' +declare -p a # Displays 'declare -A a=([.]="v1" )' + +declare -A a=(@ v0 . v1) +unset 'a[@]' +declare -p a # same behavior + +echo ----- + +unset a +shopt -s assoc_expand_once + +declare -A a=(@ v0 . v1) +unset "a[$key]" # $key is expanded +declare -p a # Displays 'declare -A a=([.]="v1" )' + +declare -A a=(@ v0 . v1) +unset 'a[@]' +declare -p a # same behavior diff --git a/tests/read.right b/tests/read.right index 114408376..e21fcb5f2 100644 --- a/tests/read.right +++ b/tests/read.right @@ -30,19 +30,24 @@ argv[1] = argv[1] = argv[1] = < foo> a = abcdefg +xyz a = xyz a = -xyz 123- a = abc timeout 1: ok - +unset or null 1 timeout 2: ok - -./read2.sub: line 36: read: -3: invalid timeout specification +unset or null 2 +timeout 3: ok +unset or null 3 +./read2.sub: line 45: read: -3: invalid timeout specification 1 +abcde abcde ./read3.sub: line 17: read: -1: invalid number abc +defg ab abc # @@ -64,3 +69,17 @@ FOO 0 0 1 +timeout 1: ok +unset or null 1 +timeout 2: ok +unset or null 2 +timeout 3: ok +unset or null 3 +timeout 4: ok +abcde +abcde + +one +two three four +one +two three four diff --git a/tests/read.tests b/tests/read.tests index 7384f05f4..6132b6fe8 100644 --- a/tests/read.tests +++ b/tests/read.tests @@ -109,3 +109,9 @@ ${THIS_SH} ./read5.sub # test behavior of read -t 0 ${THIS_SH} ./read6.sub + +# test behavior of readline timeouts +${THIS_SH} ./read7.sub + +# test behavior of read -n and read -d on regular files +${THIS_SH} ./read8.sub diff --git a/tests/read1.sub b/tests/read1.sub index b3b85157d..cf003986f 100644 --- a/tests/read1.sub +++ b/tests/read1.sub @@ -15,6 +15,7 @@ a=7 echo 'abcdefg|xyz' | { read -d '|' a echo a = "${a-unset}" + cat - # make sure we don't read too much } echo xyz 123 | { diff --git a/tests/read2.sub b/tests/read2.sub index 41698e468..d35301153 100644 --- a/tests/read2.sub +++ b/tests/read2.sub @@ -11,27 +11,36 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . # +: ${TMPDIR:=/var/tmp} + a=4 -read -t 2 a < /dev/tty +read -t 1 a < /dev/tty estat=$? if [ $estat -gt 128 ]; then echo timeout 1: ok else echo $estat fi +echo ${a:-unset or null 1} -echo $a - -sleep 5 | read -t 1 a +read -t 0.000001 a < /dev/tty estat=$? if [ $estat -gt 128 ]; then echo timeout 2: ok else echo $estat fi +echo ${a:-unset or null 2} -echo $a +sleep 1 | read -t 0.25 a +estat=$? +if [ $estat -gt 128 ]; then + echo timeout 3: ok +else + echo $estat +fi +echo ${a:-unset or null 3} read -t -3 a < /dev/tty echo $? @@ -40,6 +49,24 @@ echo $a # the above should all time out echo abcde | { - read -t 2 a + read -t 0.5 a echo $a } + +read -t .0001 a << a.pipe +rm -f a.pipe + +for c in {0..2000}; do + (eval "echo {0..$c}" & read -u 9 -t 0.0001) >/dev/null + printf $'ok %d' "$c" >/dev/null +done + +cd $OLDPWD +rm -f $TMPDIR/a.pipe # paranoia diff --git a/tests/read3.sub b/tests/read3.sub index d413f7dba..8a2404013 100644 --- a/tests/read3.sub +++ b/tests/read3.sub @@ -20,6 +20,7 @@ read -n -1 echo abcdefg | { read -n 3 xyz echo $xyz + cat - # make sure we don't read too much } # fewer chars than specified diff --git a/tests/read7.sub b/tests/read7.sub new file mode 100644 index 000000000..553070f46 --- /dev/null +++ b/tests/read7.sub @@ -0,0 +1,66 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# test behavior of native readline timeouts + +# turn off bracketed paste to avoid spurious output +bind 'set enable-bracketed-paste off' 2>/dev/null + +read -t 0.00001 -e var +estat=$? +if [ $estat -gt 128 ]; then + echo timeout 1: ok +else + echo $estat +fi +echo ${var:-unset or null 1} + +read -e -t 0.1 var +estat=$? +if [ $estat -gt 128 ]; then + echo timeout 2: ok +else + echo $estat +fi +echo ${var:-unset or null 2} + +read -e -t 1 var < /dev/tty +estat=$? +if [ $estat -gt 128 ]; then + echo timeout 3: ok +else + echo $estat +fi +echo ${var:-unset or null 3} + +sleep 1 | read -t 0.25 -e a +estat=$? +if [ $estat -gt 128 ]; then + echo timeout 4: ok +else + echo $estat +fi + +# the above should all time out +echo abcde | { + read -e -t 0.5 a + echo $a +} + +read -e -t .0001 a << $tmpf + +# make sure we rewind the input properly when reading a specific number of +# characters or using a non-standard delimiter from a regular file + +exec <$tmpf +read -n 4 input && echo "$input" +cat - + +exec <$tmpf +read -d ' ' input && echo "$input" +cat - + +rm -f $tmpf diff --git a/tests/rsh.right b/tests/rsh.right index a91974a59..5f64049b6 100644 --- a/tests/rsh.right +++ b/tests/rsh.right @@ -13,7 +13,7 @@ ./rsh.tests: line 37: /tmp/restricted: restricted: cannot redirect output ./rsh.tests: line 42: command: -p: restricted ./rsh.tests: line 44: set: +r: invalid option -set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] +set: usage: set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...] ./rsh.tests: line 45: set: restricted: invalid option name ./rsh.tests: line 47: exec: restricted ./rsh.tests: after exec diff --git a/tests/run-all b/tests/run-all index b8219b2d0..1f7492395 100644 --- a/tests/run-all +++ b/tests/run-all @@ -23,12 +23,12 @@ SUFFIX=`${THIS_SH} -c 'echo $(( $RANDOM + $BASHPID ))'` BASH_TSTOUT=${TMPDIR}/bashtst-$SUFFIX # for now export BASH_TSTOUT -trap 'rm -f $BASH_TSTOUT' 0 1 2 3 15 +trap 'rm -f $BASH_TSTOUT ; exit' 1 2 3 15 +trap 'rm -f $BASH_TSTOUT' 0 PATH=.:$PATH # just to get recho/zecho/printenv if not run via `make tests' export PATH - # unset BASH_ENV only if it is set [ "${BASH_ENV+set}" = "set" ] && unset BASH_ENV # can't reliably do it for SHELLOPTS; SHELLOPTS is readonly in bash diff --git a/tests/run-execscript b/tests/run-execscript index de786442b..c3ed53e60 100644 --- a/tests/run-execscript +++ b/tests/run-execscript @@ -1,5 +1,22 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + echo "warning: the text of a system error message may vary between systems and" >&2 echo "warning: produce diff output." >&2 +echo "warning: UNIX versions number signals differently." >&2 +echo "warning: If output differing only in line numbers is produced, please" >&2 +echo "warning: do not consider this a test failure." >&2 echo "warning: if the text of the error messages concerning \`notthere' or" >&2 echo "warning: \`/tmp/bash-notthere' not being found or \`/' being a directory" >&2 echo "warning: produce diff output, please do not consider this a test failure" >&2 diff --git a/tests/run-intl b/tests/run-intl index c31d1d0a7..8234f280f 100644 --- a/tests/run-intl +++ b/tests/run-intl @@ -1,8 +1,5 @@ # See whether or not we can use `diff -a' ( diff -a ./intl.right ./intl.right >/dev/null 2>&1 ) && AFLAG=-a -echo "warning: some of these tests will fail if you do not have UTF-8" >&2 -echo "warning: locales installed on your system." >&2 - ${THIS_SH} ./intl.tests > ${BASH_TSTOUT} diff $AFLAG ${BASH_TSTOUT} intl.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-minimal b/tests/run-minimal index ade30b152..0c3a2e5fb 100644 --- a/tests/run-minimal +++ b/tests/run-minimal @@ -58,8 +58,8 @@ do run-ifs-tests|run-input-test|run-invert|run-more-exp|run-nquote) echo $x ; sh $x ;; run-ifs-posix|run-posix2|run-posixpat|run-posixpipe) echo $x ; sh $x ;; run-precedence|run-quote|run-read|run-rhs-exp|run-strip|run-tilde) echo $x ; sh $x ;; - run-dynvar) echo $x ; sh $x ;; - ;; + run-dynvar|run-iquote) echo $x ; sh $x ;; + run-type|run-comsub-eof|run-comsub-posix) echo $x ; sh $x ;; *) ;; esac rm -f "$BASH_TSTOUT" diff --git a/tests/run-quotearray b/tests/run-quotearray new file mode 100644 index 000000000..06e5e6ebb --- /dev/null +++ b/tests/run-quotearray @@ -0,0 +1,2 @@ +${THIS_SH} ./quotearray.tests >${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} quotearray.right && rm -f ${BASH_TSTOUT} diff --git a/tests/shopt.right b/tests/shopt.right index 8cf46db60..d617c1d72 100644 --- a/tests/shopt.right +++ b/tests/shopt.right @@ -28,6 +28,7 @@ shopt -s extquote shopt -u failglob shopt -s force_fignore shopt -s globasciiranges +shopt -s globskipdots shopt -u globstar shopt -u gnu_errfmt shopt -u histappend @@ -46,13 +47,16 @@ shopt -u mailwarn shopt -u no_empty_cmd_completion shopt -u nocaseglob shopt -u nocasematch +shopt -u noexpand_translation shopt -u nullglob +shopt -s patsub_replacement shopt -s progcomp shopt -u progcomp_alias shopt -s promptvars shopt -u restricted_shell shopt -u shift_verbose shopt -s sourcepath +shopt -u varredir_close shopt -u xpg_echo -- shopt -u huponexit @@ -66,8 +70,10 @@ shopt -s expand_aliases shopt -s extquote shopt -s force_fignore shopt -s globasciiranges +shopt -s globskipdots shopt -s hostcomplete shopt -s interactive_comments +shopt -s patsub_replacement shopt -s progcomp shopt -s promptvars shopt -s sourcepath @@ -108,10 +114,12 @@ shopt -u mailwarn shopt -u no_empty_cmd_completion shopt -u nocaseglob shopt -u nocasematch +shopt -u noexpand_translation shopt -u nullglob shopt -u progcomp_alias shopt -u restricted_shell shopt -u shift_verbose +shopt -u varredir_close shopt -u xpg_echo -- autocd off @@ -150,10 +158,12 @@ mailwarn off no_empty_cmd_completion off nocaseglob off nocasematch off +noexpand_translation off nullglob off progcomp_alias off restricted_shell off shift_verbose off +varredir_close off xpg_echo off -- set +o allexport @@ -294,5 +304,9 @@ xtrace off -- ./shopt.tests: line 106: shopt: xyz1: invalid shell option name ./shopt.tests: line 107: shopt: xyz1: invalid option name +28c28 +< globskipdots off +--- +> globskipdots on expand_aliases on expand_aliases on diff --git a/tests/test.right b/tests/test.right index 391edbbd3..4be22f4bb 100644 --- a/tests/test.right +++ b/tests/test.right @@ -220,6 +220,8 @@ t ! -z "$z" 0 t ! -n "$z" 1 +t ! ! "$z" +0 t "$zero" 1 t ! "$zero" @@ -272,7 +274,7 @@ b ( 1 = 2 2 ./test.tests: line 26: test: too many arguments 2 -./test.tests: line 431: [: missing `]' +./test.tests: line 434: [: missing `]' 2 ./test.tests: line 26: test: (: unary operator expected 2 diff --git a/tests/test.tests b/tests/test.tests index 03e2754a5..df4b85095 100644 --- a/tests/test.tests +++ b/tests/test.tests @@ -358,6 +358,9 @@ t ! -z "$z" echo 't ! -n "$z"' t ! -n "$z" +echo 't ! ! "$z"' +t ! ! "$z" + zero= echo 't "$zero"' t "$zero" diff --git a/tests/tilde.tests b/tests/tilde.tests index 374f3e6d6..20268a731 100644 --- a/tests/tilde.tests +++ b/tests/tilde.tests @@ -86,7 +86,9 @@ echo ~$USER cd "$wdir" +# this test is incomplete; should also test assignment statements (tilde3.sub) +echo foo=bar:~ +set -o posix echo foo=bar:~ -set -o posix; echo foo=bar:~ exit 0 diff --git a/tests/tilde2.right b/tests/tilde2.right index fce04687e..f383e3a3f 100644 --- a/tests/tilde2.right +++ b/tests/tilde2.right @@ -22,3 +22,7 @@ HOME=~ /usr/$x/abc HOME=/usr/$x/abc /usr/$x/abc +foo=/home/xyz:/home/xyz +/home/xyz:/home/xyz +foo=~:~ +/home/xyz:/home/xyz diff --git a/tests/tilde2.tests b/tests/tilde2.tests index cc5dba9f6..d2415cb35 100644 --- a/tests/tilde2.tests +++ b/tests/tilde2.tests @@ -81,3 +81,5 @@ set +o posix eval echo $h eval $h echo $HOME + +$THIS_SH ./tilde3.sub diff --git a/tests/tilde3.sub b/tests/tilde3.sub new file mode 100644 index 000000000..c35ea5003 --- /dev/null +++ b/tests/tilde3.sub @@ -0,0 +1,26 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# regression test for tilde expansion following unquoted colons in posix mode + +HOME=/home/xyz + +echo foo=~:~ +foo=~:~ +printf "%s\n" $foo + +set -o posix + +echo foo=~:~ +foo=~:~ +printf "%s\n" $foo diff --git a/tests/type.right b/tests/type.right index f876715a0..bbc228e85 100644 --- a/tests/type.right +++ b/tests/type.right @@ -54,12 +54,12 @@ f () foo is a function foo () { - echo $(/dev/null ; then + TestCodePage fr_FR.ISO8859-1 fr_FR_ISO_8859_1 +else + echo "unicode1.sub: warning: you do not have the fr_FR.ISO8859-1 locale installed;" >&2 + echo "unicode1.sub: that will cause some of these tests to be skipped." >&2 +fi zh_TW_BIG5=( [0x00f6]=$'\366' [0x00f7]=$'\367' [0x00f8]=$'\370' [0x00f9]=$'\371' [0x00fa]=$'\372' @@ -309,8 +315,14 @@ jp_JP_SHIFT_JIS=( [0xFF9E]=$'\xDE' # HALFWIDTH KATAKANA VOICED SOUND MARK [0xFF9F]=$'\xDF' # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK ) + #TestCodePage ja_JP.SHIFT_JIS jp_JP_SHIFT_JIS -TestCodePage ja_JP.SJIS jp_JP_SHIFT_JIS +if locale -a | grep -i '^ja_JP.SJIS' >/dev/null ; then + TestCodePage ja_JP.SJIS jp_JP_SHIFT_JIS +else + echo "unicode1.sub: warning: you do not have the ja_JP.SJIS locale installed;" >&2 + echo "unicode1.sub: that will cause some of these tests to be skipped." >&2 +fi #for ((x=1;x<1000;x++)); do printf ' [0x%04x]=%-11q' "$x" "$(printf "$(printf '\\U%08x' $x)")" ; [ $(($x%5)) = 0 ] && echo; done C_UTF_8=( diff --git a/tests/varenv.right b/tests/varenv.right index 358f5dc74..f6bd1b5bd 100644 --- a/tests/varenv.right +++ b/tests/varenv.right @@ -168,10 +168,9 @@ after bar: var=global ./varenv13.sub: line 16: `var[0]': not a valid identifier ./varenv13.sub: line 16: `var[@]': not a valid identifier ./varenv13.sub: line 14: declare: var: not found -./varenv13.sub: line 25: var[@]: bad array subscript -declare -A var=([0]="X" ) +declare -A var=([0]="X" ["@"]="Y" ) help -./varenv13.sub: line 34: `var[0]': not a valid identifier +./varenv13.sub: line 35: `var[0]': not a valid identifier 1 declare -A var=([0]="X" ) declare -A var=([Y]="Y" ) @@ -265,6 +264,14 @@ ignoreeof off ignoreeof on 10 match 1 +trap -- 'echo trap:$FUNCNAME' EXIT +trap:f +trap -- 'echo trap:$FUNCNAME' EXIT +trap:f +trap -- 'echo trap:$FUNCNAME' EXIT +trap:f +trap -- 'echo trap:$FUNCNAME' EXIT +trap:f a=z a=b a=z diff --git a/tests/varenv.tests b/tests/varenv.tests index b058ed4ff..68c619ec7 100644 --- a/tests/varenv.tests +++ b/tests/varenv.tests @@ -259,6 +259,7 @@ ${THIS_SH} ./varenv18.sub ${THIS_SH} ./varenv19.sub ${THIS_SH} ./varenv20.sub ${THIS_SH} ./varenv21.sub +${THIS_SH} ./varenv22.sub # make sure variable scoping is done right tt() { typeset a=b;echo a=$a; };a=z;echo a=$a;tt;echo a=$a diff --git a/tests/varenv13.sub b/tests/varenv13.sub index 1f837ec7f..1fa7d5b37 100644 --- a/tests/varenv13.sub +++ b/tests/varenv13.sub @@ -22,6 +22,7 @@ typeset -A var f() { declare -p ${!var*}; } +# this is no longer an error var[0]=X var[@]=Y f diff --git a/tests/varenv22.sub b/tests/varenv22.sub new file mode 100644 index 000000000..6d42bb570 --- /dev/null +++ b/tests/varenv22.sub @@ -0,0 +1,17 @@ +# test behavior of FUNCNAME in and out of parse_and_execute scenarios + +# in parse_and_execute +${THIS_SH} -c 'trap "echo trap:\$FUNCNAME" EXIT ; trap ; f() { exit; } ; f' bash + +${THIS_SH} << \EOF +eval "trap 'echo trap:\$FUNCNAME' EXIT ; trap; f() { exit; } ; f" +EOF + +# not in parse_and_execute +${THIS_SH} << \EOF +trap 'echo trap:$FUNCNAME' EXIT ; trap; f() { exit; } ; f +EOF + +# this has to be last +trap 'echo trap:$FUNCNAME' EXIT ; trap; f() { exit; } ; f + diff --git a/tests/vredir.right b/tests/vredir.right index b2c4cc9c5..6465595b5 100644 --- a/tests/vredir.right +++ b/tests/vredir.right @@ -98,3 +98,4 @@ swizzle () exec {stdin}<&${fd[0]}-; exec {stdout}>&${fd[1]}- } +./vredir8.sub: line 12: $fd: Bad file descriptor diff --git a/tests/vredir.tests b/tests/vredir.tests index ea59eecd3..bd4cb7752 100644 --- a/tests/vredir.tests +++ b/tests/vredir.tests @@ -57,5 +57,6 @@ ${THIS_SH} ./vredir5.sub ${THIS_SH} ./vredir6.sub ${THIS_SH} ./vredir7.sub +${THIS_SH} ./vredir8.sub exit 0 diff --git a/tests/vredir8.sub b/tests/vredir8.sub new file mode 100644 index 000000000..e87b45b3c --- /dev/null +++ b/tests/vredir8.sub @@ -0,0 +1,13 @@ +# test varredir_close + +: {fd}<>/dev/null + +echo redir 1 >&$fd +exec {fd}>&- + +shopt -s varredir_close + +: {fd}<>/dev/tty + +echo redir 2 >&$fd +exec {fd}>&- diff --git a/trap.c b/trap.c index 1b27fb3a3..dd0245e6d 100644 --- a/trap.c +++ b/trap.c @@ -1,7 +1,7 @@ /* trap.c -- Not the trap command, but useful functions for manipulating those objects. The trap command is in builtins/trap.def. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -83,11 +83,11 @@ static void free_trap_string (int); static void reset_signal (int); static void restore_signal (int); static void reset_or_restore_signal_handlers (sh_resetsig_func_t *); +static void reinit_trap (int); static void trap_if_untrapped (int, char *); /* Variables used here but defined in other files. */ -extern procenv_t alrmbuf; extern volatile int from_return_trap; extern int waiting_for_child; @@ -297,11 +297,13 @@ void run_pending_traps () { register int sig; - int old_exit_value, x; - int old_running; + int x; + volatile int old_exit_value, old_running; WORD_LIST *save_subst_varlist; HASH_TABLE *save_tempenv; sh_parser_state_t pstate; + volatile int save_return_catch_flag, function_code; + procenv_t save_return_catch; #if defined (ARRAY_VARS) ARRAY *ps; #endif @@ -311,9 +313,7 @@ run_pending_traps () if (running_trap > 0) { -#if defined (DEBUG) - internal_warning ("run_pending_traps: recursive invocation while running trap for signal %d", running_trap-1); -#endif + internal_debug ("run_pending_traps: recursive invocation while running trap for signal %d", running_trap-1); #if defined (SIGWINCH) if (running_trap == SIGWINCH+1 && pending_traps[SIGWINCH]) return; /* no recursive SIGWINCH trap invocations */ @@ -343,9 +343,7 @@ run_pending_traps () while (pending_traps[sig]--) instead of the if statement. */ if (pending_traps[sig]) { - if (running_trap == sig+1) - /*continue*/; - + /* XXX - set last_command_exit_value = trap_saved_exit_value here? */ running_trap = sig + 1; if (sig == SIGINT) @@ -421,7 +419,6 @@ run_pending_traps () } else { - /* XXX - should we use save_parser_state/restore_parser_state? */ save_parser_state (&pstate); save_subst_varlist = subst_assign_varlist; subst_assign_varlist = 0; @@ -434,7 +431,23 @@ run_pending_traps () /* XXX - set pending_traps[sig] = 0 here? */ pending_traps[sig] = 0; evalnest++; - evalstring (savestring (trap_list[sig]), "trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE); + + function_code = 0; + save_return_catch_flag = return_catch_flag; + if (return_catch_flag) + { + COPY_PROCENV (return_catch, save_return_catch); + function_code = setjmp_nosigs (return_catch); + } + + if (function_code == 0) + x = parse_and_execute (savestring (trap_list[sig]), "trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE); + else + { + parse_and_execute_cleanup (sig + 1); /* XXX - could use -1 */ + x = return_catch_value; + } + evalnest--; #if defined (JOB_CONTROL) restore_pipeline (1); @@ -443,6 +456,19 @@ run_pending_traps () subst_assign_varlist = save_subst_varlist; restore_parser_state (&pstate); temporary_env = save_tempenv; + + if (save_return_catch_flag) + { + return_catch_flag = save_return_catch_flag; + return_catch_value = x; + COPY_PROCENV (save_return_catch, return_catch); + if (function_code) + { + running_trap = old_running; /* XXX */ + /* caller will set last_command_exit_value */ + sh_longjmp (return_catch, 1); + } + } } pending_traps[sig] = 0; /* XXX - move before evalstring? */ @@ -475,9 +501,7 @@ trap_handler (sig) if ((sigmodes[sig] & SIG_TRAPPED) == 0) { -#if defined (DEBUG) - internal_warning ("trap_handler: signal %d: signal not trapped", sig); -#endif + internal_debug ("trap_handler: signal %d: signal not trapped", sig); SIGRETURN (0); } @@ -570,7 +594,7 @@ any_signals_trapped () register int i; for (i = 1; i < NSIG; i++) - if (sigmodes[i] & SIG_TRAPPED) + if ((sigmodes[i] & SIG_TRAPPED) && (sigmodes[i] & SIG_IGNORED) == 0) return i; return -1; } @@ -587,7 +611,8 @@ clear_pending_traps () void check_signals () { - CHECK_ALRM; /* set by the read builtin */ + /* Add any other shell timeouts here */ + check_read_timeout (); /* set by the read builtin */ QUIT; } @@ -981,7 +1006,7 @@ run_exit_trap () } else if (code == ERREXIT) retval = last_command_exit_value; - else if (code == EXITPROG) + else if (code == EXITPROG || code == EXITBLTIN) retval = last_command_exit_value; else if (function_code != 0) retval = return_catch_value; @@ -1365,6 +1390,77 @@ restore_original_signals () reset_or_restore_signal_handlers (restore_signal); } +/* Change the flags associated with signal SIG without changing the trap + string. The string is TRAP_LIST[SIG] if we need it. */ +static void +reinit_trap (sig) + int sig; +{ + sigmodes[sig] |= SIG_TRAPPED; + if (trap_list[sig] == (char *)IGNORE_SIG) + sigmodes[sig] |= SIG_IGNORED; + else + sigmodes[sig] &= ~SIG_IGNORED; + if (sigmodes[sig] & SIG_INPROGRESS) + sigmodes[sig] |= SIG_CHANGED; +} + +/* Undo the effects of reset_signal_handlers(), which unsets the traps but + leaves the trap strings in place. This understands how reset_signal_handlers + works. */ +void +restore_traps () +{ + char *trapstr; + int i; + + /* Take care of the exit trap first. If TRAP_LIST[0] is non-null, the trap + has been set. */ + trapstr = trap_list[EXIT_TRAP]; + if (trapstr) + reinit_trap (EXIT_TRAP); + + /* Then DEBUG, RETURN, and ERROR. TRAP_LIST[N] == 0 if these signals are + not trapped. This knows what reset_signal_handlers does for these traps */ + trapstr = trap_list[DEBUG_TRAP]; + if (trapstr && function_trace_mode == 0) + reinit_trap (DEBUG_TRAP); + trapstr = trap_list[RETURN_TRAP]; + if (trapstr && function_trace_mode == 0) + reinit_trap (RETURN_TRAP); + trapstr = trap_list[ERROR_TRAP]; + if (trapstr && error_trace_mode == 0) + reinit_trap (ERROR_TRAP); + + /* And finally all the `real' signals. reset_signal_handlers just changes the + signal handler for these signals, leaving the trap value in place. We + intuit what to do based on that value. We assume that signals marked as + SIG_SPECIAL are reinitialized by initialize_signals (), so we don't + change the signal handler unless the signal is supposed to be ignored. */ + for (i = 1; i < NSIG; i++) + { + trapstr = trap_list[i]; + if (sigmodes[i] & SIG_SPECIAL) + { + if (trapstr && trapstr != (char *)DEFAULT_SIG) + reinit_trap (i); + if (trapstr == (char *)IGNORE_SIG && (sigmodes[i] & SIG_NO_TRAP) == 0) + set_signal_handler (i, SIG_IGN); + } + else if (trapstr == (char *)IGNORE_SIG) + { + reinit_trap (i); + if ((sigmodes[i] & SIG_NO_TRAP) == 0) + set_signal_handler (i, SIG_IGN); + } + else if (trapstr != (char *)DEFAULT_SIG) + /* set_signal duplicates the string argument before freeing it. */ + set_signal (i, trapstr); + + pending_traps[i] = 0; /* XXX */ + } +} + /* If a trap handler exists for signal SIG, then call it; otherwise just return failure. Returns 1 if it called the trap handler. */ int @@ -1455,7 +1551,7 @@ signal_in_progress (sig) return (sigmodes[sig] & SIG_INPROGRESS); } -#if 0 /* TAG: bash-5.2 */ +#if 0 /* unused */ int block_trapped_signals (maskp, omaskp) sigset_t *maskp; diff --git a/trap.h b/trap.h index ef64a6803..89402a1bc 100644 --- a/trap.h +++ b/trap.h @@ -1,6 +1,6 @@ /* trap.h -- data structures used in the trap mechanism. */ -/* Copyright (C) 1993-2013 Free Software Foundation, Inc. +/* Copyright (C) 1993-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -98,6 +98,7 @@ extern void run_return_trap PARAMS((void)); extern void free_trap_strings PARAMS((void)); extern void reset_signal_handlers PARAMS((void)); extern void restore_original_signals PARAMS((void)); +extern void restore_traps PARAMS((void)); extern void get_original_signal PARAMS((int)); extern void get_all_original_signals PARAMS((void)); diff --git a/unwind_prot.c b/unwind_prot.c index 5703777fe..ec82393d5 100644 --- a/unwind_prot.c +++ b/unwind_prot.c @@ -3,7 +3,7 @@ /* I can't stand it anymore! Please can't we just write the whole Unix system in lisp or something? */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2021 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -35,7 +35,7 @@ # include #endif -#if STDC_HEADERS +#if defined (HAVE_STDDEF_H) # include #endif @@ -48,6 +48,7 @@ #include "unwind_prot.h" #include "sig.h" #include "quit.h" +#include "bashintl.h" /* for _() */ #include "error.h" /* for internal_warning */ #include "ocache.h" @@ -282,7 +283,7 @@ unwind_frame_discard_internal (tag, ignore) } if (found == 0) - internal_warning ("unwind_frame_discard: %s: frame not found", tag); + internal_warning (_("unwind_frame_discard: %s: frame not found"), tag); } /* Restore the value of a variable, based on the contents of SV. @@ -328,7 +329,7 @@ unwind_frame_run_internal (tag, ignore) uwpfree (elt); } if (tag && found == 0) - internal_warning ("unwind_frame_run: %s: frame not found", tag); + internal_warning (_("unwind_frame_run: %s: frame not found"), tag); } static void diff --git a/variables.c b/variables.c index 73f157fb5..1a0c2c45c 100644 --- a/variables.c +++ b/variables.c @@ -1,6 +1,6 @@ /* variables.c -- Functions for hacking shell variables. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -90,6 +90,18 @@ #define BASHFUNC_SUFFIX "%%" #define BASHFUNC_SUFFLEN 2 /* == strlen(BASHFUNC_SUFFIX) */ +#if ARRAY_EXPORT +#define BASHARRAY_PREFIX "BASH_ARRAY_" +#define BASHARRAY_PREFLEN 11 +#define BASHARRAY_SUFFIX "%%" +#define BASHARRAY_SUFFLEN 2 + +#define BASHASSOC_PREFIX "BASH_ASSOC_" +#define BASHASSOC_PREFLEN 11 +#define BASHASSOC_SUFFIX "%%" /* needs to be the same as BASHARRAY_SUFFIX */ +#define BASHASSOC_SUFFLEN 2 +#endif + /* flags for find_variable_internal */ #define FV_FORCETEMPENV 0x01 @@ -199,6 +211,9 @@ static SHELL_VAR *init_dynamic_array_var PARAMS((char *, sh_var_value_func_t *, static SHELL_VAR *init_dynamic_assoc_var PARAMS((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int)); #endif +static inline SHELL_VAR *set_int_value (SHELL_VAR *, intmax_t, int); +static inline SHELL_VAR *set_string_value (SHELL_VAR *, const char *, int); + static SHELL_VAR *assign_seconds PARAMS((SHELL_VAR *, char *, arrayind_t, char *)); static SHELL_VAR *get_seconds PARAMS((SHELL_VAR *)); static SHELL_VAR *init_seconds_var PARAMS((void)); @@ -315,6 +330,8 @@ static void push_func_var PARAMS((PTR_T)); static void push_builtin_var PARAMS((PTR_T)); static void push_exported_var PARAMS((PTR_T)); +static void delete_local_contexts PARAMS((VAR_CONTEXT *)); + /* This needs to be looked at again. */ static inline void push_posix_tempvar_internal PARAMS((SHELL_VAR *, int)); @@ -429,14 +446,54 @@ initialize_shell_variables (env, privmode) #if defined (ARRAY_VARS) # if ARRAY_EXPORT /* Array variables may not yet be exported. */ - if (*string == '(' && string[1] == '[' && string[strlen (string) - 1] == ')') + if (STREQN (BASHARRAY_PREFIX, name, BASHARRAY_PREFLEN) && + STREQN (BASHARRAY_SUFFIX, name + char_index - BASHARRAY_SUFFLEN, BASHARRAY_SUFFLEN) && + *string == '(' && string[1] == '[' && string[strlen (string) - 1] == ')') { + size_t namelen; + char *tname; /* desired imported array variable name */ + + namelen = char_index - BASHARRAY_PREFLEN - BASHARRAY_SUFFLEN; + + tname = name + BASHARRAY_PREFLEN; /* start of variable name */ + tname[namelen] = '\0'; /* now tname == varname */ + string_length = 1; temp_string = extract_array_assignment_list (string, &string_length); - temp_var = assign_array_from_string (name, temp_string, 0); + temp_var = assign_array_from_string (tname, temp_string, 0); + FREE (temp_string); + if (temp_var) + { + VSETATTR (temp_var, (att_exported | att_imported)); + array_needs_making = 1; + } + } + else if (STREQN (BASHASSOC_PREFIX, name, BASHASSOC_PREFLEN) && + STREQN (BASHASSOC_SUFFIX, name + char_index - BASHASSOC_SUFFLEN, BASHASSOC_SUFFLEN) && + *string == '(' && string[1] == '[' && string[strlen (string) - 1] == ')') + { + size_t namelen; + char *tname; /* desired imported assoc variable name */ + + namelen = char_index - BASHASSOC_PREFLEN - BASHASSOC_SUFFLEN; + + tname = name + BASHASSOC_PREFLEN; /* start of variable name */ + tname[namelen] = '\0'; /* now tname == varname */ + + /* need to make sure it exists as an associative array first */ + temp_var = find_or_make_array_variable (tname, 2); + if (temp_var) + { + string_length = 1; + temp_string = extract_array_assignment_list (string, &string_length); + temp_var = assign_array_var_from_string (temp_var, temp_string, 0); + } FREE (temp_string); - VSETATTR (temp_var, (att_exported | att_imported)); - array_needs_making = 1; + if (temp_var) + { + VSETATTR (temp_var, (att_exported | att_imported)); + array_needs_making = 1; + } } else # endif /* ARRAY_EXPORT */ @@ -636,34 +693,11 @@ initialize_shell_variables (env, privmode) rl_prefer_env_winsize = 1; #endif /* READLINE && STRICT_POSIX */ - /* - * 24 October 2001 - * - * I'm tired of the arguing and bug reports. Bash now leaves SSH_CLIENT - * and SSH2_CLIENT alone. I'm going to rely on the shell_level check in - * isnetconn() to avoid running the startup files more often than wanted. - * That will, of course, only work if the user's login shell is bash, so - * I've made that behavior conditional on SSH_SOURCE_BASHRC being defined - * in config-top.h. - */ -#if 0 - temp_var = find_variable ("SSH_CLIENT"); - if (temp_var && imported_p (temp_var)) - { - VUNSETATTR (temp_var, att_exported); - array_needs_making = 1; - } - temp_var = find_variable ("SSH2_CLIENT"); - if (temp_var && imported_p (temp_var)) - { - VUNSETATTR (temp_var, att_exported); - array_needs_making = 1; - } -#endif - /* Get the user's real and effective user ids. */ uidset (); + temp_var = set_if_not ("BASH_LOADABLES_PATH", DEFAULT_LOADABLE_BUILTINS_PATH); + temp_var = find_variable ("BASH_XTRACEFD"); if (temp_var && imported_p (temp_var)) sv_xtracefd (temp_var->name); @@ -1273,6 +1307,39 @@ init_dynamic_assoc_var (name, getfunc, setfunc, attrs) } #endif +/* Set the string value of VAR to the string representation of VALUE. + Right now this takes an INTMAX_T because that's what itos needs. If + FLAGS&1, we force the integer attribute on. */ +static inline SHELL_VAR * +set_int_value (SHELL_VAR *var, intmax_t value, int flags) +{ + char *p; + + p = itos (value); + FREE (value_cell (var)); + var_setvalue (var, p); + if (flags & 1) + VSETATTR (var, att_integer); + return (var); +} + +static inline SHELL_VAR * +set_string_value (SHELL_VAR *var, const char *value, int flags) +{ + char *p; + + if (value && *value) + p = savestring (value); + else + { + p = (char *)xmalloc (1); + p[0] = '\0'; + } + FREE (value_cell (var)); + var_setvalue (var, p); + return (var); +} + /* The value of $SECONDS. This is the number of seconds since shell invocation, or, the number of seconds since the last assignment + the value of the last assignment. */ @@ -1295,7 +1362,7 @@ assign_seconds (self, value, unused, key) seconds_value_assigned = expok ? nval : 0; gettimeofday (&shellstart, NULL); shell_start_time = shellstart.tv_sec; - return (self); + return (set_int_value (self, nval, integer_p (self) != 0)); } static SHELL_VAR * @@ -1303,18 +1370,11 @@ get_seconds (var) SHELL_VAR *var; { time_t time_since_start; - char *p; struct timeval tv; gettimeofday(&tv, NULL); time_since_start = tv.tv_sec - shell_start_time; - p = itos(seconds_value_assigned + time_since_start); - - FREE (value_cell (var)); - - VSETATTR (var, att_integer); - var_setvalue (var, p); - return (var); + return (set_int_value (var, seconds_value_assigned + time_since_start, 1)); } static SHELL_VAR * @@ -1356,7 +1416,7 @@ assign_random (self, value, unused, key) sbrand (seedval); if (subshell_environment) seeded_subshell = getpid (); - return (self); + return (set_int_value (self, seedval, integer_p (self) != 0)); } int @@ -1384,16 +1444,9 @@ get_random (var) SHELL_VAR *var; { int rv; - char *p; rv = get_random_number (); - p = itos (rv); - - FREE (value_cell (var)); - - VSETATTR (var, att_integer); - var_setvalue (var, p); - return (var); + return (set_int_value (var, rv, 1)); } static SHELL_VAR * @@ -1401,16 +1454,9 @@ get_urandom (var) SHELL_VAR *var; { u_bits32_t rv; - char *p; rv = get_urandom32 (); - p = itos (rv); - - FREE (value_cell (var)); - - VSETATTR (var, att_integer); - var_setvalue (var, p); - return (var); + return (set_int_value (var, rv, 1)); } static SHELL_VAR * @@ -1425,7 +1471,7 @@ assign_lineno (var, value, unused, key) if (value == 0 || *value == '\0' || legal_number (value, &new_value) == 0) new_value = 0; line_number = line_number_base = new_value; - return var; + return (set_int_value (var, line_number, integer_p (var) != 0)); } /* Function which returns the current line number. */ @@ -1433,14 +1479,10 @@ static SHELL_VAR * get_lineno (var) SHELL_VAR *var; { - char *p; int ln; ln = executing_line_number (); - p = itos (ln); - FREE (value_cell (var)); - var_setvalue (var, p); - return (var); + return (set_int_value (var, ln, 0)); } static SHELL_VAR * @@ -1462,12 +1504,7 @@ static SHELL_VAR * get_subshell (var) SHELL_VAR *var; { - char *p; - - p = itos (subshell_level); - FREE (value_cell (var)); - var_setvalue (var, p); - return (var); + return (set_int_value (var, subshell_level, 0)); } static SHELL_VAR * @@ -1475,14 +1512,9 @@ get_epochseconds (var) SHELL_VAR *var; { intmax_t now; - char *p; now = NOW; - p = itos (now); - - FREE (value_cell (var)); - var_setvalue (var, p); - return (var); + return (set_int_value (var, now, 0)); } static SHELL_VAR * @@ -1490,7 +1522,6 @@ get_epochrealtime (var) SHELL_VAR *var; { char buf[32]; - char *p; struct timeval tv; gettimeofday (&tv, NULL); @@ -1498,10 +1529,7 @@ get_epochrealtime (var) locale_decpoint (), (unsigned)tv.tv_usec); - p = savestring (buf); - FREE (value_cell (var)); - var_setvalue (var, p); - return (var); + return (set_string_value (var, buf, 0)); } static SHELL_VAR * @@ -1509,27 +1537,16 @@ get_bashpid (var) SHELL_VAR *var; { int pid; - char *p; pid = getpid (); - p = itos (pid); - - FREE (value_cell (var)); - VSETATTR (var, att_integer); /* XXX - was also att_readonly */ - var_setvalue (var, p); - return (var); + return (set_int_value (var, pid, 1)); } static SHELL_VAR * get_bash_argv0 (var) SHELL_VAR *var; { - char *p; - - p = savestring (dollar_vars[0]); - FREE (value_cell (var)); - var_setvalue (var, p); - return var; + return (set_string_value (var, dollar_vars[0], 0)); } static char *static_shell_name = 0; @@ -1574,16 +1591,8 @@ get_bash_command (var) { char *p; - if (the_printed_command_except_trap) - p = savestring (the_printed_command_except_trap); - else - { - p = (char *)xmalloc (1); - p[0] = '\0'; - } - FREE (value_cell (var)); - var_setvalue (var, p); - return (var); + p = the_printed_command_except_trap ? the_printed_command_except_trap : ""; + return (set_string_value (var, p, 0)); } #if defined (HISTORY) @@ -1591,7 +1600,6 @@ static SHELL_VAR * get_histcmd (var) SHELL_VAR *var; { - char *p; int n; /* Do the same adjustment here we do in parse.y:prompt_history_number, @@ -1602,10 +1610,7 @@ get_histcmd (var) already been saved to history and the history number incremented. Right now we use EXECUTING as the determinant. */ n = history_number () - executing; - p = itos (n); - FREE (value_cell (var)); - var_setvalue (var, p); - return (var); + return (set_int_value (var, n, 0)); } #endif @@ -1619,10 +1624,7 @@ get_comp_wordbreaks (var) if (rl_completer_word_break_characters == 0 && bash_readline_initialized == 0) enable_hostname_completion (perform_hostname_completion); - FREE (value_cell (var)); - var_setvalue (var, savestring (rl_completer_word_break_characters)); - - return (var); + return (set_string_value (var, rl_completer_word_break_characters, 0)); } /* When this function returns, rl_completer_word_break_characters points to @@ -1636,7 +1638,7 @@ assign_comp_wordbreaks (self, value, unused, key) { if (rl_completer_word_break_characters && rl_completer_word_break_characters != rl_basic_word_break_characters) - free (rl_completer_word_break_characters); + free ((void *)rl_completer_word_break_characters); rl_completer_word_break_characters = savestring (value); return self; @@ -1858,13 +1860,8 @@ get_funcname (self) SHELL_VAR *self; { #if ! defined (ARRAY_VARS) - char *t; if (variable_context && this_shell_function) - { - FREE (value_cell (self)); - t = savestring (this_shell_function->name); - var_setvalue (self, t); - } + return (set_string_value (self, this_shell_function->name, 0)); #endif return (self); } @@ -2375,7 +2372,7 @@ find_global_variable (name) var = var_lookup (name, global_variables); if (var && nameref_p (var)) - var = find_variable_nameref (var); + var = find_variable_nameref (var); /* XXX - find_global_variable_noref? */ if (var == 0) return ((SHELL_VAR *)NULL); @@ -2527,7 +2524,7 @@ get_variable_value (var) /* Return the string value of a variable. Return NULL if the variable doesn't exist. Don't cons a new string. This is a potential memory leak if the variable is found in the temporary environment, but doesn't - leak in practice. Since functions and variables have separate name + leak in practice. Since functions and variables have separate name spaces, returns NULL if var_name is a shell function only. */ char * get_string_value (var_name) @@ -2847,7 +2844,7 @@ make_local_array_variable (name, flags) scope and discard anything that's invalid. */ if (localvar_inherit && assoc_p (var)) { - internal_warning ("%s: cannot inherit value from incompatible type", name); + internal_warning (_("%s: cannot inherit value from incompatible type"), name); VUNSETATTR (var, att_assoc); dispose_variable_value (var); array = array_create (); @@ -2903,7 +2900,7 @@ make_local_assoc_variable (name, flags) scope and discard anything that's invalid. */ if (localvar_inherit && array_p (var)) { - internal_warning ("%s: cannot inherit value from incompatible type", name); + internal_warning (_("%s: cannot inherit value from incompatible type"), name); VUNSETATTR (var, att_array); dispose_variable_value (var); hash = assoc_create (ASSOC_HASH_BUCKETS); @@ -3136,8 +3133,14 @@ bind_variable_internal (name, value, table, hflags, aflags) VUNSETATTR (tentry, att_nameref); } free (tname); - /* XXX - should it be aflags? */ - entry = assign_array_element (newval, make_variable_value (entry, value, aflags), aflags|ASS_NAMEREF); + + /* entry == nameref variable; tentry == array variable; + newval == x[2]; value = bar + We don't need to call make_variable_value here, since + assign_array_element will eventually do it itself based on + newval and aflags. */ + + entry = assign_array_element (newval, value, aflags|ASS_NAMEREF, (array_eltstate_t *)0); if (entry == 0) return entry; } @@ -3294,7 +3297,7 @@ bind_variable (name, value, flags) return (bind_variable_internal (nv->name, value, nvc->table, 0, flags)); #if defined (ARRAY_VARS) else if (valid_array_reference (nameref_cell (nv), 0)) - return (assign_array_element (nameref_cell (nv), value, flags)); + return (assign_array_element (nameref_cell (nv), value, flags, (array_eltstate_t *)0)); else #endif return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags)); @@ -3427,14 +3430,24 @@ bind_int_variable (lhs, rhs, flags) int flags; { register SHELL_VAR *v; - int isint, isarr, implicitarray; + int isint, isarr, implicitarray, vflags, avflags; isint = isarr = implicitarray = 0; #if defined (ARRAY_VARS) - if (valid_array_reference (lhs, (flags & ASS_NOEXPAND) != 0)) + /* Don't rely on VA_NOEXPAND being 1, set it explicitly */ + vflags = (flags & ASS_NOEXPAND) ? VA_NOEXPAND : 0; + if (flags & ASS_ONEWORD) + vflags |= VA_ONEWORD; + if (valid_array_reference (lhs, vflags)) { isarr = 1; - v = array_variable_part (lhs, (flags & ASS_NOEXPAND) != 0, (char **)0, (int *)0); + avflags = 0; + /* Common code to translate between assignment and reference flags. */ + if (flags & ASS_NOEXPAND) + avflags |= AV_NOEXPAND; + if (flags & ASS_ONEWORD) + avflags |= AV_ONEWORD; + v = array_variable_part (lhs, avflags, (char **)0, (int *)0); } else if (legal_identifier (lhs) == 0) { @@ -3457,7 +3470,7 @@ bind_int_variable (lhs, rhs, flags) #if defined (ARRAY_VARS) if (isarr) - v = assign_array_element (lhs, rhs, flags); + v = assign_array_element (lhs, rhs, flags, (array_eltstate_t *)0); else if (implicitarray) v = bind_array_variable (lhs, 0, rhs, 0); /* XXX - check on flags */ else @@ -3478,14 +3491,15 @@ bind_int_variable (lhs, rhs, flags) } SHELL_VAR * -bind_var_to_int (var, val) +bind_var_to_int (var, val, flags) char *var; intmax_t val; + int flags; { char ibuf[INT_STRLEN_BOUND (intmax_t) + 1], *p; p = fmtulong (val, 10, ibuf, sizeof (ibuf), 0); - return (bind_int_variable (var, p, 0)); + return (bind_int_variable (var, p, flags)); } /* Do a function binding to a variable. You pass the name and @@ -3605,6 +3619,7 @@ assign_in_env (word, flags) if (legal_identifier (name) == 0) { sh_invalidid (name); + free (name); return (0); } @@ -3827,6 +3842,34 @@ unbind_variable_noref (name) return 0; } +int +unbind_global_variable (name) + const char *name; +{ + SHELL_VAR *v, *nv; + int r; + + v = var_lookup (name, global_variables); + /* This starts at the current scope, just like find_global_variable; should we + use find_global_variable_nameref here? */ + nv = (v && nameref_p (v)) ? find_variable_nameref (v) : (SHELL_VAR *)NULL; + + r = nv ? makunbound (nv->name, shell_variables) : makunbound (name, global_variables); + return r; +} + +int +unbind_global_variable_noref (name) + const char *name; +{ + SHELL_VAR *v; + + v = var_lookup (name, global_variables); + if (v) + return makunbound (name, global_variables); + return 0; +} + int check_unbind_variable (name) const char *name; @@ -4708,16 +4751,22 @@ flush_temporary_env () /* **************************************************************** */ static inline char * -mk_env_string (name, value, isfunc) +mk_env_string (name, value, attributes) const char *name, *value; - int isfunc; + int attributes; { size_t name_len, value_len; char *p, *q, *t; + int isfunc, isarray; name_len = strlen (name); value_len = STRLEN (value); + isfunc = attributes & att_function; +#if defined (ARRAY_VARS) && defined (ARRAY_EXPORT) + isarray = attributes & (att_array|att_assoc); +#endif + /* If we are exporting a shell function, construct the encoded function name. */ if (isfunc && value) @@ -4731,6 +4780,39 @@ mk_env_string (name, value, isfunc) memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN); q += BASHFUNC_SUFFLEN; } +#if defined (ARRAY_VARS) && defined (ARRAY_EXPORT) + else if (isarray && value) + { + if (attributes & att_assoc) + p = (char *)xmalloc (BASHASSOC_PREFLEN + name_len + BASHASSOC_SUFFLEN + value_len + 2); + else + p = (char *)xmalloc (BASHARRAY_PREFLEN + name_len + BASHARRAY_SUFFLEN + value_len + 2); + q = p; + if (attributes & att_assoc) + { + memcpy (q, BASHASSOC_PREFIX, BASHASSOC_PREFLEN); + q += BASHASSOC_PREFLEN; + } + else + { + memcpy (q, BASHARRAY_PREFIX, BASHARRAY_PREFLEN); + q += BASHARRAY_PREFLEN; + } + memcpy (q, name, name_len); + q += name_len; + /* These are actually the same currently */ + if (attributes & att_assoc) + { + memcpy (q, BASHASSOC_SUFFIX, BASHASSOC_SUFFLEN); + q += BASHARRAY_SUFFLEN; + } + else + { + memcpy (q, BASHARRAY_SUFFIX, BASHARRAY_SUFFLEN); + q += BASHARRAY_SUFFLEN; + } + } +#endif else { p = (char *)xmalloc (2 + name_len + value_len); @@ -4795,6 +4877,12 @@ valid_exportstr (v) } #endif +#if defined (ARRAY_VARS) +# define USE_EXPORTSTR (value == var->exportstr && array_p (var) == 0 && assoc_p (var) == 0) +#else +# define USE_EXPORTSTR (value == var->exportstr) +#endif + static char ** make_env_array_from_var_list (vars) SHELL_VAR **vars; @@ -4805,8 +4893,6 @@ make_env_array_from_var_list (vars) list = strvec_create ((1 + strvec_len ((char **)vars))); -#define USE_EXPORTSTR (value == var->exportstr) - for (i = 0, list_index = 0; var = vars[i]; i++) { #if defined (__CYGWIN__) @@ -4833,11 +4919,11 @@ make_env_array_from_var_list (vars) continue; /* XXX array vars cannot yet be exported */ # endif /* ARRAY_EXPORT */ else if (assoc_p (var)) -# if 0 +# if ARRAY_EXPORT value = assoc_to_assign (assoc_cell (var), 0); # else continue; /* XXX associative array vars cannot yet be exported */ -# endif +# endif /* ARRAY_EXPORT */ #endif else value = value_cell (var); @@ -4847,18 +4933,17 @@ make_env_array_from_var_list (vars) /* Gee, I'd like to get away with not using savestring() if we're using the cached exportstr... */ list[list_index] = USE_EXPORTSTR ? savestring (value) - : mk_env_string (var->name, value, function_p (var)); + : mk_env_string (var->name, value, var->attributes); + if (USE_EXPORTSTR == 0) SAVE_EXPORTSTR (var, list[list_index]); list_index++; #undef USE_EXPORTSTR -#if 0 /* not yet */ -#if defined (ARRAY_VARS) +#if defined (ARRAY_VARS) && defined (ARRAY_EXPORT) if (array_p (var) || assoc_p (var)) free (value); -#endif #endif } } @@ -5344,10 +5429,8 @@ pop_var_context () internal_error (_("pop_var_context: no global_variables context")); } -/* Delete the HASH_TABLEs for all variable contexts beginning at VCXT, and - all of the VAR_CONTEXTs except GLOBAL_VARIABLES. */ -void -delete_all_contexts (vcxt) +static void +delete_local_contexts (vcxt) VAR_CONTEXT *vcxt; { VAR_CONTEXT *v, *t; @@ -5356,12 +5439,30 @@ delete_all_contexts (vcxt) { t = v->down; dispose_var_context (v); - } + } +} +/* Delete the HASH_TABLEs for all variable contexts beginning at VCXT, and + all of the VAR_CONTEXTs except GLOBAL_VARIABLES. */ +void +delete_all_contexts (vcxt) + VAR_CONTEXT *vcxt; +{ + delete_local_contexts (vcxt); delete_all_variables (global_variables->table); shell_variables = global_variables; } +/* Reset the context so we are not executing in a shell function. Only call + this if you are getting ready to exit the shell. */ +void +reset_local_contexts () +{ + delete_local_contexts (shell_variables); + shell_variables = global_variables; + variable_context = 0; +} + /* **************************************************************** */ /* */ /* Pushing and Popping temporary variable scopes */ @@ -5670,7 +5771,7 @@ pop_args () GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a); GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a); - ce = array_shift (bash_argc_a, 1, 0); + ce = array_unshift_element (bash_argc_a); if (ce == 0 || legal_number (element_value (ce), &i) == 0) i = 0; @@ -6279,19 +6380,27 @@ set_pipestatus_array (ps, nproc) /* Fast case */ if (array_num_elements (a) == nproc && nproc == 1) { +#ifndef ALT_ARRAY_IMPLEMENTATION ae = element_forw (a->head); - free (element_value (ae)); - set_element_value (ae, itos (ps[0])); +#else + ae = a->elements[0]; +#endif + ARRAY_ELEMENT_REPLACE (ae, itos (ps[0])); } else if (array_num_elements (a) <= nproc) { /* modify in array_num_elements members in place, then add */ +#ifndef ALT_ARRAY_IMPLEMENTATION ae = a->head; +#endif for (i = 0; i < array_num_elements (a); i++) { +#ifndef ALT_ARRAY_IMPLEMENTATION ae = element_forw (ae); - free (element_value (ae)); - set_element_value (ae, itos (ps[i])); +#else + ae = a->elements[i]; +#endif + ARRAY_ELEMENT_REPLACE (ae, itos (ps[i])); } /* add any more */ for ( ; i < nproc; i++) @@ -6302,13 +6411,32 @@ set_pipestatus_array (ps, nproc) } else { +#ifndef ALT_ARRAY_IMPLEMENTATION /* deleting elements. it's faster to rebuild the array. */ array_flush (a); - for (i = 0; ps[i] != -1; i++) + for (i = 0; i < nproc; i++) { t = inttostr (ps[i], tbuf, sizeof (tbuf)); array_insert (a, i, t); } +#else + /* deleting elements. replace the first NPROC, free the rest */ + for (i = 0; i < nproc; i++) + { + ae = a->elements[i]; + ARRAY_ELEMENT_REPLACE (ae, itos (ps[i])); + } + for ( ; i <= array_max_index (a); i++) + { + array_dispose_element (a->elements[i]); + a->elements[i] = (ARRAY_ELEMENT *)NULL; + } + + /* bookkeeping usually taken care of by array_insert */ + set_max_index (a, nproc - 1); + set_first_index (a, 0); + set_num_elements (a, nproc); +#endif /* ALT_ARRAY_IMPLEMENTATION */ } } diff --git a/variables.h b/variables.h index c73eb4e52..55f497de0 100644 --- a/variables.h +++ b/variables.h @@ -1,6 +1,6 @@ /* variables.h -- data structures for shell variables. */ -/* Copyright (C) 1987-2020 Free Software Foundation, Inc. +/* Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -320,7 +320,7 @@ extern char *make_variable_value PARAMS((SHELL_VAR *, char *, int)); extern SHELL_VAR *bind_variable_value PARAMS((SHELL_VAR *, char *, int)); extern SHELL_VAR *bind_int_variable PARAMS((char *, char *, int)); -extern SHELL_VAR *bind_var_to_int PARAMS((char *, intmax_t)); +extern SHELL_VAR *bind_var_to_int PARAMS((char *, intmax_t, int)); extern int assign_in_env PARAMS((WORD_DESC *, int)); @@ -328,13 +328,17 @@ extern int unbind_variable PARAMS((const char *)); extern int check_unbind_variable PARAMS((const char *)); extern int unbind_nameref PARAMS((const char *)); extern int unbind_variable_noref PARAMS((const char *)); +extern int unbind_global_variable PARAMS((const char *)); +extern int unbind_global_variable_noref PARAMS((const char *)); extern int unbind_func PARAMS((const char *)); extern int unbind_function_def PARAMS((const char *)); extern int delete_var PARAMS((const char *, VAR_CONTEXT *)); extern int makunbound PARAMS((const char *, VAR_CONTEXT *)); extern int kill_local_variable PARAMS((const char *)); + extern void delete_all_variables PARAMS((HASH_TABLE *)); extern void delete_all_contexts PARAMS((VAR_CONTEXT *)); +extern void reset_local_contexts PARAMS((void)); extern VAR_CONTEXT *new_var_context PARAMS((char *, int)); extern void dispose_var_context PARAMS((VAR_CONTEXT *)); diff --git a/version.c b/version.c index 8c1568ae4..94c85bd22 100644 --- a/version.c +++ b/version.c @@ -1,6 +1,6 @@ /* version.c -- distribution and version numbers. */ -/* Copyright (C) 1989-2020 Free Software Foundation, Inc. +/* Copyright (C) 1989-2022 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -43,7 +43,7 @@ const char * const release_status = (char *)0; #endif const char * const sccs_version = SCCSVERSION; -const char * const bash_copyright = N_("Copyright (C) 2020 Free Software Foundation, Inc."); +const char * const bash_copyright = N_("Copyright (C) 2022 Free Software Foundation, Inc."); const char * const bash_license = N_("License GPLv3+: GNU GPL version 3 or later \n"); /* If == 31, shell compatible with bash-3.1, == 32 with bash-3.2, and so on */ diff --git a/y.tab.c b/y.tab.c index 78b38250b..32b4c7c1d 100644 --- a/y.tab.c +++ b/y.tab.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -45,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30802 -/* Bison version. */ -#define YYBISON_VERSION "3.6.4" +/* Bison version string. */ +#define YYBISON_VERSION "3.8.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -67,7 +67,7 @@ /* First part of user prologue. */ -#line 21 "/Users/chet/src/bash/src/parse.y" +#line 21 "/usr/local/src/chet/src/bash/src/parse.y" #include "config.h" @@ -164,11 +164,24 @@ typedef void *alias_t; # define MBTEST(x) ((x)) #endif +#define EXTEND_SHELL_INPUT_LINE_PROPERTY() \ +do { \ + if (shell_input_line_len + 2 > shell_input_line_propsize) \ + { \ + shell_input_line_propsize = shell_input_line_len + 2; \ + shell_input_line_property = (char *)xrealloc (shell_input_line_property, \ + shell_input_line_propsize); \ + } \ +} while (0) + #if defined (EXTENDED_GLOB) extern int extended_glob; #endif +#if defined (TRANSLATABLE_STRINGS) extern int dump_translatable_strings, dump_po_strings; +extern int singlequote_translations; +#endif /* TRANSLATABLE_STRINGS */ #if !defined (errno) extern int errno; @@ -194,7 +207,6 @@ static int yy_readline_unget PARAMS((int)); static int yy_string_get PARAMS((void)); static int yy_string_unget PARAMS((int)); -static void rewind_input_string PARAMS((void)); static int yy_stream_get PARAMS((void)); static int yy_stream_unget PARAMS((int)); @@ -202,11 +214,9 @@ static int shell_getc PARAMS((int)); static void shell_ungetc PARAMS((int)); static void discard_until PARAMS((int)); -#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) static void push_string PARAMS((char *, int, alias_t *)); static void pop_string PARAMS((void)); static void free_string_list PARAMS((void)); -#endif static char *read_a_line PARAMS((int)); @@ -250,7 +260,7 @@ static void print_offending_line PARAMS((void)); static void report_syntax_error PARAMS((char *)); static void handle_eof_input_unit PARAMS((void)); -static void prompt_again PARAMS((void)); +static void prompt_again PARAMS((int)); #if 0 static void reset_readline_prompt PARAMS((void)); #endif @@ -374,7 +384,7 @@ static REDIRECTEE redir; static FILE *yyoutstream; static FILE *yyerrstream; -#line 378 "y.tab.c" +#line 388 "y.tab.c" # ifndef YY_CAST # ifdef __cplusplus @@ -464,11 +474,13 @@ extern int yydebug; LESS_GREATER = 301, /* LESS_GREATER */ GREATER_BAR = 302, /* GREATER_BAR */ BAR_AND = 303, /* BAR_AND */ - yacc_EOF = 304 /* yacc_EOF */ + DOLPAREN = 304, /* DOLPAREN */ + yacc_EOF = 305 /* yacc_EOF */ }; typedef enum yytokentype yytoken_kind_t; #endif /* Token kinds. */ +#define YYEMPTY -2 #define YYEOF 0 #define YYerror 256 #define YYUNDEF 257 @@ -518,13 +530,14 @@ extern int yydebug; #define LESS_GREATER 301 #define GREATER_BAR 302 #define BAR_AND 303 -#define yacc_EOF 304 +#define DOLPAREN 304 +#define yacc_EOF 305 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 328 "/Users/chet/src/bash/src/parse.y" +#line 338 "/usr/local/src/chet/src/bash/src/parse.y" WORD_DESC *word; /* the word that we read. */ int number; /* the number that we read. */ @@ -534,7 +547,7 @@ union YYSTYPE ELEMENT element; PATTERN_LIST *pattern; -#line 538 "y.tab.c" +#line 551 "y.tab.c" }; typedef union YYSTYPE YYSTYPE; @@ -545,8 +558,10 @@ typedef union YYSTYPE YYSTYPE; extern YYSTYPE yylval; + int yyparse (void); + #endif /* !YY_YY_Y_TAB_H_INCLUDED */ /* Symbol kind. */ enum yysymbol_kind_t @@ -601,56 +616,57 @@ enum yysymbol_kind_t YYSYMBOL_LESS_GREATER = 46, /* LESS_GREATER */ YYSYMBOL_GREATER_BAR = 47, /* GREATER_BAR */ YYSYMBOL_BAR_AND = 48, /* BAR_AND */ - YYSYMBOL_49_ = 49, /* '&' */ - YYSYMBOL_50_ = 50, /* ';' */ - YYSYMBOL_51_n_ = 51, /* '\n' */ - YYSYMBOL_yacc_EOF = 52, /* yacc_EOF */ - YYSYMBOL_53_ = 53, /* '|' */ - YYSYMBOL_54_ = 54, /* '>' */ - YYSYMBOL_55_ = 55, /* '<' */ - YYSYMBOL_56_ = 56, /* '-' */ - YYSYMBOL_57_ = 57, /* '{' */ - YYSYMBOL_58_ = 58, /* '}' */ - YYSYMBOL_59_ = 59, /* '(' */ - YYSYMBOL_60_ = 60, /* ')' */ - YYSYMBOL_YYACCEPT = 61, /* $accept */ - YYSYMBOL_inputunit = 62, /* inputunit */ - YYSYMBOL_word_list = 63, /* word_list */ - YYSYMBOL_redirection = 64, /* redirection */ - YYSYMBOL_simple_command_element = 65, /* simple_command_element */ - YYSYMBOL_redirection_list = 66, /* redirection_list */ - YYSYMBOL_simple_command = 67, /* simple_command */ - YYSYMBOL_command = 68, /* command */ - YYSYMBOL_shell_command = 69, /* shell_command */ - YYSYMBOL_for_command = 70, /* for_command */ - YYSYMBOL_arith_for_command = 71, /* arith_for_command */ - YYSYMBOL_select_command = 72, /* select_command */ - YYSYMBOL_case_command = 73, /* case_command */ - YYSYMBOL_function_def = 74, /* function_def */ - YYSYMBOL_function_body = 75, /* function_body */ - YYSYMBOL_subshell = 76, /* subshell */ - YYSYMBOL_coproc = 77, /* coproc */ - YYSYMBOL_if_command = 78, /* if_command */ - YYSYMBOL_group_command = 79, /* group_command */ - YYSYMBOL_arith_command = 80, /* arith_command */ - YYSYMBOL_cond_command = 81, /* cond_command */ - YYSYMBOL_elif_clause = 82, /* elif_clause */ - YYSYMBOL_case_clause = 83, /* case_clause */ - YYSYMBOL_pattern_list = 84, /* pattern_list */ - YYSYMBOL_case_clause_sequence = 85, /* case_clause_sequence */ - YYSYMBOL_pattern = 86, /* pattern */ - YYSYMBOL_list = 87, /* list */ - YYSYMBOL_compound_list = 88, /* compound_list */ - YYSYMBOL_list0 = 89, /* list0 */ - YYSYMBOL_list1 = 90, /* list1 */ - YYSYMBOL_simple_list_terminator = 91, /* simple_list_terminator */ - YYSYMBOL_list_terminator = 92, /* list_terminator */ - YYSYMBOL_newline_list = 93, /* newline_list */ - YYSYMBOL_simple_list = 94, /* simple_list */ - YYSYMBOL_simple_list1 = 95, /* simple_list1 */ - YYSYMBOL_pipeline_command = 96, /* pipeline_command */ - YYSYMBOL_pipeline = 97, /* pipeline */ - YYSYMBOL_timespec = 98 /* timespec */ + YYSYMBOL_DOLPAREN = 49, /* DOLPAREN */ + YYSYMBOL_50_ = 50, /* '&' */ + YYSYMBOL_51_ = 51, /* ';' */ + YYSYMBOL_52_n_ = 52, /* '\n' */ + YYSYMBOL_yacc_EOF = 53, /* yacc_EOF */ + YYSYMBOL_54_ = 54, /* '|' */ + YYSYMBOL_55_ = 55, /* '>' */ + YYSYMBOL_56_ = 56, /* '<' */ + YYSYMBOL_57_ = 57, /* '-' */ + YYSYMBOL_58_ = 58, /* '{' */ + YYSYMBOL_59_ = 59, /* '}' */ + YYSYMBOL_60_ = 60, /* '(' */ + YYSYMBOL_61_ = 61, /* ')' */ + YYSYMBOL_YYACCEPT = 62, /* $accept */ + YYSYMBOL_inputunit = 63, /* inputunit */ + YYSYMBOL_word_list = 64, /* word_list */ + YYSYMBOL_redirection = 65, /* redirection */ + YYSYMBOL_simple_command_element = 66, /* simple_command_element */ + YYSYMBOL_redirection_list = 67, /* redirection_list */ + YYSYMBOL_simple_command = 68, /* simple_command */ + YYSYMBOL_command = 69, /* command */ + YYSYMBOL_shell_command = 70, /* shell_command */ + YYSYMBOL_for_command = 71, /* for_command */ + YYSYMBOL_arith_for_command = 72, /* arith_for_command */ + YYSYMBOL_select_command = 73, /* select_command */ + YYSYMBOL_case_command = 74, /* case_command */ + YYSYMBOL_function_def = 75, /* function_def */ + YYSYMBOL_function_body = 76, /* function_body */ + YYSYMBOL_subshell = 77, /* subshell */ + YYSYMBOL_comsub = 78, /* comsub */ + YYSYMBOL_coproc = 79, /* coproc */ + YYSYMBOL_if_command = 80, /* if_command */ + YYSYMBOL_group_command = 81, /* group_command */ + YYSYMBOL_arith_command = 82, /* arith_command */ + YYSYMBOL_cond_command = 83, /* cond_command */ + YYSYMBOL_elif_clause = 84, /* elif_clause */ + YYSYMBOL_case_clause = 85, /* case_clause */ + YYSYMBOL_pattern_list = 86, /* pattern_list */ + YYSYMBOL_case_clause_sequence = 87, /* case_clause_sequence */ + YYSYMBOL_pattern = 88, /* pattern */ + YYSYMBOL_compound_list = 89, /* compound_list */ + YYSYMBOL_list0 = 90, /* list0 */ + YYSYMBOL_list1 = 91, /* list1 */ + YYSYMBOL_simple_list_terminator = 92, /* simple_list_terminator */ + YYSYMBOL_list_terminator = 93, /* list_terminator */ + YYSYMBOL_newline_list = 94, /* newline_list */ + YYSYMBOL_simple_list = 95, /* simple_list */ + YYSYMBOL_simple_list1 = 96, /* simple_list1 */ + YYSYMBOL_pipeline_command = 97, /* pipeline_command */ + YYSYMBOL_pipeline = 98, /* pipeline */ + YYSYMBOL_timespec = 99 /* timespec */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -694,6 +710,18 @@ typedef int_least16_t yytype_int16; typedef short yytype_int16; #endif +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ @@ -791,17 +819,23 @@ typedef int yy_state_fast_t; /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) +# define YY_USE(E) ((void) (E)) #else -# define YYUSE(E) /* empty */ +# define YY_USE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else @@ -958,20 +992,21 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 118 +#define YYFINAL 121 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 661 +#define YYLAST 740 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 61 +#define YYNTOKENS 62 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 38 /* YYNRULES -- Number of rules. */ -#define YYNRULES 172 +#define YYNRULES 174 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 346 +#define YYNSTATES 349 -#define YYMAXUTOK 304 +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 305 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -986,18 +1021,18 @@ union yyalloc static const yytype_int8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 51, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 52, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 49, 2, - 59, 60, 2, 2, 2, 56, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 50, - 55, 2, 54, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 50, 2, + 60, 61, 2, 2, 2, 57, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 51, + 56, 2, 55, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 57, 53, 58, 2, 2, 2, 2, + 2, 2, 2, 58, 54, 59, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1015,31 +1050,31 @@ static const yytype_int8 yytranslate[] = 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 52 + 45, 46, 47, 48, 49, 53 }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 381, 381, 392, 401, 416, 433, 443, 445, 449, - 455, 461, 467, 473, 479, 485, 491, 497, 503, 509, - 515, 521, 527, 533, 539, 546, 553, 560, 567, 574, - 581, 587, 593, 599, 605, 611, 617, 623, 629, 635, - 641, 647, 653, 659, 665, 671, 677, 683, 689, 695, - 701, 707, 713, 721, 723, 725, 729, 733, 744, 746, - 750, 752, 754, 770, 772, 776, 778, 780, 782, 784, - 786, 788, 790, 792, 794, 796, 800, 805, 810, 815, - 820, 825, 830, 835, 842, 848, 854, 860, 868, 873, - 878, 883, 888, 893, 898, 903, 910, 915, 920, 927, - 929, 931, 933, 937, 939, 970, 977, 982, 999, 1004, - 1021, 1028, 1030, 1032, 1037, 1041, 1045, 1049, 1051, 1053, - 1057, 1058, 1062, 1064, 1066, 1068, 1072, 1074, 1076, 1078, - 1080, 1082, 1086, 1088, 1097, 1105, 1106, 1112, 1113, 1120, - 1124, 1126, 1128, 1135, 1137, 1139, 1143, 1144, 1147, 1149, - 1151, 1155, 1156, 1165, 1178, 1194, 1209, 1211, 1213, 1220, - 1223, 1227, 1229, 1235, 1241, 1261, 1284, 1286, 1309, 1313, - 1315, 1317, 1319 + 0, 395, 395, 406, 414, 423, 438, 455, 465, 467, + 471, 477, 483, 489, 495, 501, 507, 513, 519, 525, + 531, 537, 543, 549, 555, 561, 568, 575, 582, 589, + 596, 603, 609, 615, 621, 627, 633, 639, 645, 651, + 657, 663, 669, 675, 681, 687, 693, 699, 705, 711, + 717, 723, 729, 735, 743, 745, 747, 751, 755, 766, + 768, 772, 774, 776, 792, 794, 798, 800, 802, 804, + 806, 808, 810, 812, 814, 816, 818, 822, 827, 832, + 837, 842, 847, 852, 857, 864, 870, 876, 882, 890, + 895, 900, 905, 910, 915, 920, 925, 932, 937, 942, + 949, 951, 953, 955, 959, 961, 992, 999, 1003, 1009, + 1014, 1031, 1036, 1053, 1060, 1062, 1064, 1069, 1073, 1077, + 1081, 1083, 1085, 1089, 1090, 1094, 1096, 1098, 1100, 1104, + 1106, 1108, 1110, 1112, 1114, 1118, 1120, 1129, 1135, 1141, + 1142, 1149, 1153, 1155, 1157, 1164, 1166, 1173, 1177, 1178, + 1181, 1183, 1185, 1189, 1190, 1199, 1214, 1232, 1249, 1251, + 1253, 1260, 1263, 1267, 1269, 1275, 1281, 1301, 1324, 1326, + 1349, 1353, 1355, 1357, 1359 }; #endif @@ -1063,18 +1098,18 @@ static const char *const yytname[] = "AND_AND", "OR_OR", "GREATER_GREATER", "LESS_LESS", "LESS_AND", "LESS_LESS_LESS", "GREATER_AND", "SEMI_SEMI", "SEMI_AND", "SEMI_SEMI_AND", "LESS_LESS_MINUS", "AND_GREATER", "AND_GREATER_GREATER", - "LESS_GREATER", "GREATER_BAR", "BAR_AND", "'&'", "';'", "'\\n'", - "yacc_EOF", "'|'", "'>'", "'<'", "'-'", "'{'", "'}'", "'('", "')'", - "$accept", "inputunit", "word_list", "redirection", + "LESS_GREATER", "GREATER_BAR", "BAR_AND", "DOLPAREN", "'&'", "';'", + "'\\n'", "yacc_EOF", "'|'", "'>'", "'<'", "'-'", "'{'", "'}'", "'('", + "')'", "$accept", "inputunit", "word_list", "redirection", "simple_command_element", "redirection_list", "simple_command", "command", "shell_command", "for_command", "arith_for_command", "select_command", "case_command", "function_def", "function_body", - "subshell", "coproc", "if_command", "group_command", "arith_command", - "cond_command", "elif_clause", "case_clause", "pattern_list", - "case_clause_sequence", "pattern", "list", "compound_list", "list0", - "list1", "simple_list_terminator", "list_terminator", "newline_list", - "simple_list", "simple_list1", "pipeline_command", "pipeline", - "timespec", YY_NULLPTR + "subshell", "comsub", "coproc", "if_command", "group_command", + "arith_command", "cond_command", "elif_clause", "case_clause", + "pattern_list", "case_clause_sequence", "pattern", "compound_list", + "list0", "list1", "simple_list_terminator", "list_terminator", + "newline_list", "simple_list", "simple_list1", "pipeline_command", + "pipeline", "timespec", YY_NULLPTR }; static const char * @@ -1084,22 +1119,7 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_int16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 38, - 59, 10, 304, 124, 62, 60, 45, 123, 125, 40, - 41 -}; -#endif - -#define YYPACT_NINF (-204) +#define YYPACT_NINF (-152) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -1109,337 +1129,353 @@ static const yytype_int16 yytoknum[] = #define yytable_value_is_error(Yyn) \ 0 - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const yytype_int16 yypact[] = { - 313, 108, -204, -6, 8, 2, -204, -204, 10, 513, - 17, 363, 153, -21, -204, 593, 606, -204, 14, 26, - 113, 41, 127, 72, 85, 92, 95, 98, -204, -204, - 100, 105, -204, -204, 65, -204, -204, 551, -204, 572, - -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, - -204, 146, 140, -204, 67, 363, -204, -204, -204, 133, - 413, -204, 93, 55, 104, 156, 161, 11, 45, 551, - 572, 163, -204, -204, -204, -204, -204, 167, -204, 152, - 208, 217, 129, 220, 150, 221, 223, 225, 233, 234, - 238, 239, 158, 240, 162, 241, 243, 244, 252, 253, - -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, - -204, -204, -204, -204, -204, -204, 194, 227, -204, -204, - -204, -204, 572, -204, -204, -204, -204, -204, 463, 463, - -204, -204, -204, -204, -204, -204, -204, -7, -204, 59, - -204, 52, -204, -204, -204, -204, 62, -204, -204, -204, - 235, 572, -204, 572, 572, -204, -204, -204, -204, -204, - -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, - -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, - -204, -204, -204, -204, -204, -204, -204, -204, -204, 413, - 413, 191, 191, 245, 245, 203, -204, -204, -204, -204, - -204, -204, 37, -204, 176, -204, 270, 228, 76, 79, - -204, 176, -204, 278, 282, 563, -204, 572, 572, 563, - -204, -204, 67, 67, -204, -204, -204, 291, 413, 413, - 413, 413, 413, 294, 175, -204, 28, -204, -204, 292, - -204, 187, -204, 250, -204, -204, -204, -204, -204, -204, - 295, 413, 187, -204, 251, -204, -204, -204, 563, -204, - 304, 314, -204, -204, -204, 196, 196, 196, -204, -204, - -204, -204, 179, 38, -204, -204, 296, -28, 302, 274, - -204, -204, -204, 87, -204, 318, 276, 322, 280, -204, - -7, -204, 111, -204, -204, -204, -204, -204, -204, -204, - -204, 39, 319, -204, -204, -204, 114, -204, -204, -204, - -204, -204, -204, 115, -204, -204, 226, -204, -204, -204, - 413, -204, -204, 329, 288, -204, -204, 332, 297, -204, - -204, -204, 413, 338, 303, -204, -204, 339, 305, -204, - -204, -204, -204, -204, -204, -204 + 328, 80, -152, -11, -1, 3, -152, -152, 15, 637, + -5, 433, 149, -28, -152, 187, 684, -152, 18, 28, + 130, 38, 139, 50, 52, 60, 65, 74, -152, -152, + -152, 89, 104, -152, -152, 97, -152, -152, 246, -152, + 670, -152, -152, -152, -152, -152, -152, -152, -152, -152, + -152, -152, -152, 146, 211, -152, 1, 433, -152, -152, + 135, 484, -152, 59, 61, 90, 167, 171, 10, 71, + 246, 670, 144, -152, -152, -152, -152, -152, 165, -152, + 142, 179, 192, 140, 194, 160, 227, 245, 252, 253, + 260, 261, 262, 162, 269, 178, 270, 272, 273, 274, + 277, -152, -152, -152, -152, -152, -152, -152, -152, -152, + -152, -152, -152, -152, -152, 168, 379, -152, -152, 173, + 244, -152, -152, -152, -152, 670, -152, -152, -152, -152, + -152, 535, 535, -152, -152, -152, -152, -152, -152, -152, + 205, -152, 14, -152, 36, -152, -152, -152, -152, 84, + -152, -152, -152, 249, 670, -152, 670, 670, -152, -152, + -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, + -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, + -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, + -152, -152, -152, -152, 484, 484, 203, 203, 586, 586, + 145, -152, -152, -152, -152, -152, -152, 0, -152, 119, + -152, 291, 248, 66, 88, -152, 119, -152, 296, 297, + 35, -152, 670, 670, 35, -152, -152, 1, 1, -152, + -152, -152, 306, 484, 484, 484, 484, 484, 305, 169, + -152, 7, -152, -152, 302, -152, 131, -152, 265, -152, + -152, -152, -152, -152, -152, 304, 131, -152, 266, -152, + -152, -152, 35, -152, 313, 317, -152, -152, -152, 225, + 225, 225, -152, -152, -152, -152, 206, 25, -152, -152, + 307, -42, 319, 276, -152, -152, -152, 95, -152, 322, + 283, 332, 284, -152, -152, 102, -152, -152, -152, -152, + -152, -152, -152, -152, 45, 323, -152, -152, -152, 106, + -152, -152, -152, -152, -152, -152, 109, -152, -152, 264, + -152, -152, -152, 484, -152, -152, 333, 293, -152, -152, + 338, 300, -152, -152, -152, 484, 345, 303, -152, -152, + 346, 309, -152, -152, -152, -152, -152, -152, -152 }; - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 0, 151, 0, 0, 0, 151, 151, 0, 0, - 0, 0, 169, 53, 54, 0, 0, 115, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, - 0, 0, 151, 151, 0, 55, 58, 60, 168, 61, - 65, 75, 69, 66, 63, 71, 64, 70, 72, 73, - 74, 0, 153, 160, 161, 0, 4, 5, 135, 0, - 0, 151, 151, 0, 151, 0, 0, 0, 53, 110, - 106, 0, 149, 148, 150, 165, 162, 170, 171, 0, + 0, 0, 153, 0, 0, 0, 153, 153, 0, 0, + 0, 0, 171, 54, 55, 0, 0, 118, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 153, 4, + 7, 0, 0, 153, 153, 0, 56, 59, 61, 170, + 62, 66, 76, 70, 67, 64, 72, 3, 65, 71, + 73, 74, 75, 0, 155, 162, 163, 0, 5, 6, + 0, 0, 153, 153, 0, 153, 0, 0, 0, 54, + 113, 109, 0, 151, 150, 152, 167, 164, 172, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 24, 39, 33, 48, 30, 42, 36, 45, 27, - 51, 52, 21, 18, 9, 10, 0, 0, 1, 53, - 59, 56, 62, 146, 147, 2, 151, 151, 154, 155, - 151, 151, 164, 163, 151, 152, 134, 136, 145, 0, - 151, 0, 151, 151, 151, 151, 0, 151, 151, 151, - 151, 103, 101, 108, 107, 116, 172, 151, 17, 26, - 41, 35, 50, 32, 44, 38, 47, 29, 23, 20, - 13, 14, 16, 25, 40, 34, 49, 31, 43, 37, - 46, 28, 22, 19, 11, 12, 114, 105, 57, 0, - 0, 158, 159, 0, 0, 0, 151, 151, 151, 151, - 151, 151, 0, 151, 0, 151, 0, 0, 0, 0, - 151, 0, 151, 0, 0, 0, 151, 104, 109, 0, - 156, 157, 167, 166, 151, 151, 111, 0, 0, 0, - 138, 139, 137, 0, 120, 151, 0, 151, 151, 0, - 7, 0, 151, 0, 86, 87, 151, 151, 151, 151, - 0, 0, 0, 151, 0, 67, 68, 102, 0, 99, - 0, 0, 113, 140, 141, 142, 143, 144, 98, 126, - 128, 130, 121, 0, 96, 132, 0, 0, 0, 0, - 76, 8, 151, 0, 77, 0, 0, 0, 0, 88, - 0, 151, 0, 89, 100, 112, 151, 127, 129, 131, - 97, 0, 0, 151, 78, 79, 0, 151, 151, 84, - 85, 90, 91, 0, 151, 151, 117, 151, 133, 122, - 123, 151, 151, 0, 0, 151, 151, 0, 0, 151, - 119, 124, 125, 0, 0, 82, 83, 0, 0, 94, - 95, 118, 80, 81, 92, 93 + 0, 16, 25, 40, 34, 49, 31, 43, 37, 46, + 28, 52, 53, 22, 19, 0, 0, 10, 11, 0, + 0, 1, 54, 60, 57, 63, 148, 149, 2, 153, + 153, 156, 157, 153, 153, 166, 165, 153, 154, 137, + 138, 147, 0, 153, 0, 153, 153, 153, 153, 0, + 153, 153, 153, 153, 104, 102, 111, 110, 119, 174, + 153, 18, 27, 42, 36, 51, 33, 45, 39, 48, + 30, 24, 21, 14, 15, 17, 26, 41, 35, 50, + 32, 44, 38, 47, 29, 23, 20, 12, 13, 107, + 108, 117, 106, 58, 0, 0, 160, 161, 0, 0, + 0, 153, 153, 153, 153, 153, 153, 0, 153, 0, + 153, 0, 0, 0, 0, 153, 0, 153, 0, 0, + 0, 153, 105, 112, 0, 158, 159, 169, 168, 153, + 153, 114, 0, 0, 0, 140, 141, 139, 0, 123, + 153, 0, 153, 153, 0, 8, 0, 153, 0, 87, + 88, 153, 153, 153, 153, 0, 0, 153, 0, 68, + 69, 103, 0, 100, 0, 0, 116, 142, 143, 144, + 145, 146, 99, 129, 131, 133, 124, 0, 97, 135, + 0, 0, 0, 0, 77, 9, 153, 0, 78, 0, + 0, 0, 0, 89, 153, 0, 90, 101, 115, 153, + 130, 132, 134, 98, 0, 0, 153, 79, 80, 0, + 153, 153, 85, 86, 91, 92, 0, 153, 153, 120, + 153, 136, 125, 126, 153, 153, 0, 0, 153, 153, + 0, 0, 153, 122, 127, 128, 0, 0, 83, 84, + 0, 0, 95, 96, 121, 81, 82, 93, 94 }; - /* YYPGOTO[NTERM-NUM]. */ +/* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -204, -204, 117, -37, -19, -67, 353, -204, -8, -204, - -204, -204, -204, -204, -184, -204, -204, -204, -204, -204, - -204, 53, -204, 142, -204, 102, -203, -2, -204, 283, - -204, -47, -49, -204, -118, 6, 47, -204 + -152, -152, 112, -29, -14, -64, 360, -152, -8, -152, + -152, -152, -152, -152, -151, -152, -152, -152, -152, -152, + -152, -152, 13, -152, 136, -152, 98, -2, -152, 30, + -152, -54, -26, -152, -123, 6, 78, -152 }; - /* YYDEFGOTO[NTERM-NUM]. */ +/* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 34, 241, 35, 36, 122, 37, 38, 39, 40, - 41, 42, 43, 44, 152, 45, 46, 47, 48, 49, - 50, 227, 233, 234, 235, 277, 58, 117, 136, 137, - 125, 75, 60, 51, 52, 138, 54, 55 + 0, 35, 246, 36, 37, 125, 38, 39, 40, 41, + 42, 43, 44, 45, 155, 46, 47, 48, 49, 50, + 51, 52, 232, 238, 239, 240, 281, 120, 139, 140, + 128, 76, 61, 53, 54, 141, 56, 57 }; - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 59, 70, 121, 154, 65, 66, 53, 250, 132, 254, - 191, 192, 139, 141, 2, 146, 144, 76, 120, 3, - 61, 4, 5, 6, 7, 302, 196, 197, 64, 10, - 116, 257, 303, 121, 62, 259, 67, 274, 79, 63, - 100, 17, 198, 199, 200, 287, 288, 300, 2, 71, - 120, 237, 101, 3, 275, 4, 5, 6, 7, 151, - 153, 133, 149, 10, 275, 118, 203, 105, 32, 142, - 150, 220, 221, 204, 294, 17, 210, 189, 190, 135, - 201, 193, 194, 211, 217, 188, 218, 276, 135, 135, - 246, 202, 302, 248, 238, 208, 209, 276, 109, 317, - 215, 307, 32, 135, 33, 72, 73, 74, 219, 205, - 135, 110, 143, 135, 121, 130, 121, 188, 111, 212, - 131, 112, 337, 338, 113, 314, 114, 135, 321, 325, - 135, 115, 195, 247, 53, 53, 249, 134, 135, 102, - 206, 207, 103, 140, 308, 213, 214, 228, 229, 230, - 231, 232, 236, 106, 145, 160, 107, 242, 161, 56, - 57, 251, 135, 251, 253, 135, 135, 258, 315, 104, - 147, 322, 326, 126, 127, 148, 164, 77, 78, 165, - 188, 188, 155, 108, 174, 162, 273, 175, 178, 128, - 129, 179, 156, 283, 282, 53, 53, 123, 124, 251, - 251, 239, 240, 243, 292, 291, 166, 151, 224, 225, - 226, 151, 157, 281, 176, 269, 270, 271, 180, 297, - 298, 299, 260, 261, 126, 127, 72, 73, 74, 196, - 197, 329, 225, 306, 158, 278, 279, 72, 73, 74, - 222, 223, 313, 159, 285, 286, 163, 167, 2, 168, - 151, 169, 186, 3, 320, 4, 5, 6, 7, 170, - 171, 8, 9, 10, 172, 173, 177, 181, 332, 182, - 183, 13, 14, 15, 16, 17, 251, 251, 184, 185, - 18, 19, 20, 21, 22, 244, 245, 187, 23, 24, - 25, 26, 27, 255, 316, 216, 135, 256, 262, 30, - 31, 319, 32, 268, 33, 323, 324, 280, 284, 293, - 289, 295, 327, 328, 1, 331, 2, 304, 296, 333, - 334, 3, 275, 4, 5, 6, 7, 341, 252, 8, - 9, 10, 305, 309, 310, 11, 12, 311, 312, 13, - 14, 15, 16, 17, 335, 318, 336, 339, 18, 19, - 20, 21, 22, 342, 344, 340, 23, 24, 25, 26, - 27, 343, 69, 345, 28, 29, 2, 30, 31, 330, - 32, 3, 33, 4, 5, 6, 7, 272, 301, 8, - 9, 10, 0, 0, 0, 11, 12, 0, 0, 13, - 14, 15, 16, 17, 0, 0, 0, 0, 18, 19, - 20, 21, 22, 0, 0, 0, 23, 24, 25, 26, - 27, 0, 0, 72, 73, 74, 2, 30, 31, 0, - 32, 3, 33, 4, 5, 6, 7, 0, 0, 8, + 60, 71, 116, 135, 66, 67, 55, 157, 196, 197, + 147, 124, 305, 2, 242, 62, 278, 77, 3, 306, + 4, 5, 6, 7, 123, 63, 115, 72, 10, 65, + 64, 119, 80, 279, 303, 206, 142, 144, 2, 149, + 17, 68, 124, 3, 101, 4, 5, 6, 7, 133, + 208, 279, 138, 10, 102, 134, 123, 209, 243, 138, + 154, 156, 152, 136, 106, 17, 138, 280, 33, 261, + 153, 225, 226, 263, 2, 145, 110, 138, 111, 3, + 251, 4, 5, 6, 7, 280, 112, 138, 138, 10, + 222, 113, 223, 33, 210, 34, 193, 121, 215, 305, + 114, 17, 253, 194, 195, 216, 320, 198, 199, 310, + 143, 297, 73, 74, 75, 117, 317, 207, 138, 146, + 324, 213, 214, 328, 252, 124, 220, 124, 193, 33, + 118, 34, 58, 59, 224, 200, 138, 55, 55, 137, + 138, 148, 217, 211, 212, 245, 254, 138, 218, 219, + 229, 230, 231, 311, 138, 247, 103, 285, 138, 104, + 318, 138, 257, 158, 325, 107, 163, 329, 108, 164, + 73, 74, 75, 78, 79, 233, 234, 235, 236, 237, + 241, 150, 73, 74, 75, 151, 167, 105, 177, 168, + 159, 178, 286, 193, 193, 262, 109, 165, 126, 127, + 55, 55, 294, 160, 181, 161, 244, 182, 248, 273, + 274, 275, 154, 255, 277, 258, 154, 169, 162, 179, + 166, 287, 81, 82, 83, 84, 85, 264, 265, 189, + 86, 295, 191, 87, 88, 183, 129, 130, 201, 202, + 282, 283, 89, 90, 129, 130, 300, 301, 302, 289, + 290, 291, 292, 170, 154, 203, 204, 205, 201, 202, + 309, 131, 132, 267, 268, 269, 270, 271, 316, 332, + 230, 171, 122, 14, 15, 16, 227, 228, 172, 173, + 323, 18, 19, 20, 21, 22, 174, 175, 176, 23, + 24, 25, 26, 27, 335, 180, 184, 319, 185, 186, + 187, 31, 32, 188, 322, 192, 249, 250, 326, 327, + 221, 259, 260, 266, 272, 330, 331, 284, 334, 293, + 298, 299, 336, 337, 288, 296, 340, 341, 256, 1, + 344, 2, 333, 279, 307, 308, 3, 312, 4, 5, + 6, 7, 313, 315, 8, 9, 10, 314, 338, 321, + 11, 12, 339, 342, 13, 14, 15, 16, 17, 343, + 345, 347, 346, 18, 19, 20, 21, 22, 348, 70, + 0, 23, 24, 25, 26, 27, 276, 28, 304, 0, + 29, 30, 2, 31, 32, 0, 33, 3, 34, 4, + 5, 6, 7, 0, 0, 8, 9, 10, 0, 0, + 0, 11, 12, 0, 0, 13, 14, 15, 16, 17, + 0, 0, 0, 0, 18, 19, 20, 21, 22, 0, + 0, 0, 23, 24, 25, 26, 27, 0, 0, 0, + 0, 138, 0, 0, 31, 32, 2, 33, 0, 34, + 190, 3, 0, 4, 5, 6, 7, 0, 0, 8, 9, 10, 0, 0, 0, 11, 12, 0, 0, 13, 14, 15, 16, 17, 0, 0, 0, 0, 18, 19, 20, 21, 22, 0, 0, 0, 23, 24, 25, 26, - 27, 0, 0, 0, 135, 0, 2, 30, 31, 0, - 32, 3, 33, 4, 5, 6, 7, 0, 0, 8, - 9, 10, 0, 0, 0, 11, 12, 0, 0, 13, - 14, 15, 16, 17, 0, 0, 0, 0, 18, 19, - 20, 21, 22, 0, 0, 0, 23, 24, 25, 26, - 27, 263, 264, 265, 266, 267, 2, 30, 31, 0, - 32, 3, 33, 4, 5, 6, 7, 0, 0, 0, - 0, 10, 0, 0, 290, 0, 0, 0, 0, 68, - 14, 15, 16, 17, 0, 0, 0, 0, 18, 19, - 20, 21, 22, 0, 0, 0, 23, 24, 25, 26, - 27, 0, 0, 0, 0, 0, 2, 30, 31, 0, - 32, 3, 33, 4, 5, 6, 7, 119, 14, 15, - 16, 10, 0, 0, 0, 0, 18, 19, 20, 21, - 22, 0, 0, 17, 23, 24, 25, 26, 27, 0, - 15, 16, 0, 0, 0, 30, 31, 18, 19, 20, - 21, 22, 0, 0, 135, 23, 24, 25, 26, 27, - 32, 0, 33, 0, 0, 0, 30, 31, 80, 81, - 82, 83, 84, 0, 0, 0, 85, 0, 0, 86, - 87, 90, 91, 92, 93, 94, 0, 88, 89, 95, - 0, 0, 96, 97, 0, 0, 0, 0, 0, 0, - 98, 99 + 27, 0, 0, 0, 73, 74, 75, 2, 31, 32, + 0, 33, 3, 34, 4, 5, 6, 7, 0, 0, + 8, 9, 10, 0, 0, 0, 11, 12, 0, 0, + 13, 14, 15, 16, 17, 0, 0, 0, 0, 18, + 19, 20, 21, 22, 0, 0, 0, 23, 24, 25, + 26, 27, 0, 0, 0, 0, 138, 0, 2, 31, + 32, 0, 33, 3, 34, 4, 5, 6, 7, 0, + 0, 8, 9, 10, 0, 0, 0, 11, 12, 0, + 0, 13, 14, 15, 16, 17, 0, 0, 0, 0, + 18, 19, 20, 21, 22, 0, 0, 0, 23, 24, + 25, 26, 27, 0, 0, 0, 0, 0, 0, 2, + 31, 32, 0, 33, 3, 34, 4, 5, 6, 7, + 0, 0, 8, 9, 10, 0, 0, 0, 0, 0, + 0, 0, 13, 14, 15, 16, 17, 0, 0, 0, + 0, 18, 19, 20, 21, 22, 0, 0, 0, 23, + 24, 25, 26, 27, 0, 0, 0, 0, 138, 0, + 2, 31, 32, 0, 33, 3, 34, 4, 5, 6, + 7, 0, 0, 0, 0, 10, 0, 0, 0, 0, + 0, 0, 0, 69, 14, 15, 16, 17, 0, 0, + 0, 0, 18, 19, 20, 21, 22, 0, 0, 0, + 23, 24, 25, 26, 27, 0, 0, 0, 0, 0, + 0, 0, 31, 32, 0, 33, 0, 34, 15, 16, + 0, 0, 0, 0, 0, 18, 19, 20, 21, 22, + 0, 0, 0, 23, 24, 25, 26, 27, 0, 91, + 92, 93, 94, 95, 0, 31, 32, 96, 0, 0, + 97, 98, 0, 0, 0, 0, 0, 0, 0, 99, + 100 }; static const yytype_int16 yycheck[] = { - 2, 9, 39, 70, 6, 7, 0, 210, 55, 212, - 128, 129, 61, 62, 3, 64, 63, 11, 37, 8, - 26, 10, 11, 12, 13, 53, 33, 34, 26, 18, - 32, 215, 60, 70, 26, 219, 26, 9, 59, 31, - 26, 30, 49, 50, 51, 248, 249, 9, 3, 32, - 69, 14, 26, 8, 26, 10, 11, 12, 13, 67, - 68, 55, 51, 18, 26, 0, 14, 26, 57, 14, - 59, 189, 190, 21, 258, 30, 14, 126, 127, 51, - 21, 130, 131, 21, 151, 122, 153, 59, 51, 51, - 14, 140, 53, 14, 57, 144, 145, 59, 26, 60, - 149, 14, 57, 51, 59, 50, 51, 52, 157, 57, - 51, 26, 57, 51, 151, 48, 153, 154, 26, 57, - 53, 26, 325, 326, 26, 14, 26, 51, 14, 14, - 51, 26, 134, 57, 128, 129, 57, 4, 51, 26, - 142, 143, 29, 50, 57, 147, 148, 196, 197, 198, - 199, 200, 201, 26, 50, 26, 29, 204, 29, 51, - 52, 210, 51, 212, 211, 51, 51, 216, 57, 56, - 14, 57, 57, 33, 34, 14, 26, 24, 25, 29, - 217, 218, 19, 56, 26, 56, 235, 29, 26, 49, - 50, 29, 25, 242, 241, 189, 190, 51, 52, 248, - 249, 203, 26, 205, 253, 252, 56, 215, 5, 6, - 7, 219, 60, 26, 56, 40, 41, 42, 56, 40, - 41, 42, 224, 225, 33, 34, 50, 51, 52, 33, - 34, 5, 6, 282, 26, 237, 238, 50, 51, 52, - 193, 194, 291, 26, 246, 247, 26, 26, 3, 26, - 258, 26, 58, 8, 303, 10, 11, 12, 13, 26, - 26, 16, 17, 18, 26, 26, 26, 26, 317, 26, - 26, 26, 27, 28, 29, 30, 325, 326, 26, 26, - 35, 36, 37, 38, 39, 15, 58, 60, 43, 44, - 45, 46, 47, 15, 296, 60, 51, 15, 7, 54, - 55, 303, 57, 9, 59, 307, 308, 15, 58, 58, - 15, 7, 314, 315, 1, 317, 3, 15, 4, 321, - 322, 8, 26, 10, 11, 12, 13, 329, 211, 16, - 17, 18, 58, 15, 58, 22, 23, 15, 58, 26, - 27, 28, 29, 30, 15, 26, 58, 15, 35, 36, - 37, 38, 39, 15, 15, 58, 43, 44, 45, 46, - 47, 58, 9, 58, 51, 52, 3, 54, 55, 316, - 57, 8, 59, 10, 11, 12, 13, 235, 276, 16, - 17, 18, -1, -1, -1, 22, 23, -1, -1, 26, - 27, 28, 29, 30, -1, -1, -1, -1, 35, 36, - 37, 38, 39, -1, -1, -1, 43, 44, 45, 46, - 47, -1, -1, 50, 51, 52, 3, 54, 55, -1, - 57, 8, 59, 10, 11, 12, 13, -1, -1, 16, + 2, 9, 28, 57, 6, 7, 0, 71, 131, 132, + 64, 40, 54, 3, 14, 26, 9, 11, 8, 61, + 10, 11, 12, 13, 38, 26, 28, 32, 18, 26, + 31, 33, 60, 26, 9, 21, 62, 63, 3, 65, + 30, 26, 71, 8, 26, 10, 11, 12, 13, 48, + 14, 26, 52, 18, 26, 54, 70, 21, 58, 52, + 68, 69, 52, 57, 26, 30, 52, 60, 58, 220, + 60, 194, 195, 224, 3, 14, 26, 52, 26, 8, + 14, 10, 11, 12, 13, 60, 26, 52, 52, 18, + 154, 26, 156, 58, 58, 60, 125, 0, 14, 54, + 26, 30, 14, 129, 130, 21, 61, 133, 134, 14, + 51, 262, 51, 52, 53, 26, 14, 143, 52, 58, + 14, 147, 148, 14, 58, 154, 152, 156, 157, 58, + 26, 60, 52, 53, 160, 137, 52, 131, 132, 4, + 52, 51, 58, 145, 146, 26, 58, 52, 150, 151, + 5, 6, 7, 58, 52, 209, 26, 26, 52, 29, + 58, 52, 216, 19, 58, 26, 26, 58, 29, 29, + 51, 52, 53, 24, 25, 201, 202, 203, 204, 205, + 206, 14, 51, 52, 53, 14, 26, 57, 26, 29, + 25, 29, 246, 222, 223, 221, 57, 57, 52, 53, + 194, 195, 256, 61, 26, 26, 208, 29, 210, 40, + 41, 42, 220, 215, 240, 217, 224, 57, 26, 57, + 26, 247, 35, 36, 37, 38, 39, 229, 230, 61, + 43, 257, 59, 46, 47, 57, 33, 34, 33, 34, + 242, 243, 55, 56, 33, 34, 40, 41, 42, 251, + 252, 253, 254, 26, 262, 50, 51, 52, 33, 34, + 286, 50, 51, 233, 234, 235, 236, 237, 294, 5, + 6, 26, 26, 27, 28, 29, 198, 199, 26, 26, + 306, 35, 36, 37, 38, 39, 26, 26, 26, 43, + 44, 45, 46, 47, 320, 26, 26, 299, 26, 26, + 26, 55, 56, 26, 306, 61, 15, 59, 310, 311, + 61, 15, 15, 7, 9, 317, 318, 15, 320, 15, + 7, 4, 324, 325, 59, 59, 328, 329, 216, 1, + 332, 3, 319, 26, 15, 59, 8, 15, 10, 11, + 12, 13, 59, 59, 16, 17, 18, 15, 15, 26, + 22, 23, 59, 15, 26, 27, 28, 29, 30, 59, + 15, 15, 59, 35, 36, 37, 38, 39, 59, 9, + -1, 43, 44, 45, 46, 47, 240, 49, 280, -1, + 52, 53, 3, 55, 56, -1, 58, 8, 60, 10, + 11, 12, 13, -1, -1, 16, 17, 18, -1, -1, + -1, 22, 23, -1, -1, 26, 27, 28, 29, 30, + -1, -1, -1, -1, 35, 36, 37, 38, 39, -1, + -1, -1, 43, 44, 45, 46, 47, -1, -1, -1, + -1, 52, -1, -1, 55, 56, 3, 58, -1, 60, + 61, 8, -1, 10, 11, 12, 13, -1, -1, 16, 17, 18, -1, -1, -1, 22, 23, -1, -1, 26, 27, 28, 29, 30, -1, -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, 44, 45, 46, - 47, -1, -1, -1, 51, -1, 3, 54, 55, -1, - 57, 8, 59, 10, 11, 12, 13, -1, -1, 16, - 17, 18, -1, -1, -1, 22, 23, -1, -1, 26, - 27, 28, 29, 30, -1, -1, -1, -1, 35, 36, - 37, 38, 39, -1, -1, -1, 43, 44, 45, 46, - 47, 228, 229, 230, 231, 232, 3, 54, 55, -1, - 57, 8, 59, 10, 11, 12, 13, -1, -1, -1, - -1, 18, -1, -1, 251, -1, -1, -1, -1, 26, - 27, 28, 29, 30, -1, -1, -1, -1, 35, 36, - 37, 38, 39, -1, -1, -1, 43, 44, 45, 46, - 47, -1, -1, -1, -1, -1, 3, 54, 55, -1, - 57, 8, 59, 10, 11, 12, 13, 26, 27, 28, - 29, 18, -1, -1, -1, -1, 35, 36, 37, 38, - 39, -1, -1, 30, 43, 44, 45, 46, 47, -1, - 28, 29, -1, -1, -1, 54, 55, 35, 36, 37, - 38, 39, -1, -1, 51, 43, 44, 45, 46, 47, - 57, -1, 59, -1, -1, -1, 54, 55, 35, 36, - 37, 38, 39, -1, -1, -1, 43, -1, -1, 46, - 47, 35, 36, 37, 38, 39, -1, 54, 55, 43, - -1, -1, 46, 47, -1, -1, -1, -1, -1, -1, - 54, 55 + 47, -1, -1, -1, 51, 52, 53, 3, 55, 56, + -1, 58, 8, 60, 10, 11, 12, 13, -1, -1, + 16, 17, 18, -1, -1, -1, 22, 23, -1, -1, + 26, 27, 28, 29, 30, -1, -1, -1, -1, 35, + 36, 37, 38, 39, -1, -1, -1, 43, 44, 45, + 46, 47, -1, -1, -1, -1, 52, -1, 3, 55, + 56, -1, 58, 8, 60, 10, 11, 12, 13, -1, + -1, 16, 17, 18, -1, -1, -1, 22, 23, -1, + -1, 26, 27, 28, 29, 30, -1, -1, -1, -1, + 35, 36, 37, 38, 39, -1, -1, -1, 43, 44, + 45, 46, 47, -1, -1, -1, -1, -1, -1, 3, + 55, 56, -1, 58, 8, 60, 10, 11, 12, 13, + -1, -1, 16, 17, 18, -1, -1, -1, -1, -1, + -1, -1, 26, 27, 28, 29, 30, -1, -1, -1, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, + 44, 45, 46, 47, -1, -1, -1, -1, 52, -1, + 3, 55, 56, -1, 58, 8, 60, 10, 11, 12, + 13, -1, -1, -1, -1, 18, -1, -1, -1, -1, + -1, -1, -1, 26, 27, 28, 29, 30, -1, -1, + -1, -1, 35, 36, 37, 38, 39, -1, -1, -1, + 43, 44, 45, 46, 47, -1, -1, -1, -1, -1, + -1, -1, 55, 56, -1, 58, -1, 60, 28, 29, + -1, -1, -1, -1, -1, 35, 36, 37, 38, 39, + -1, -1, -1, 43, 44, 45, 46, 47, -1, 35, + 36, 37, 38, 39, -1, 55, 56, 43, -1, -1, + 46, 47, -1, -1, -1, -1, -1, -1, -1, 55, + 56 }; - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ static const yytype_int8 yystos[] = { 0, 1, 3, 8, 10, 11, 12, 13, 16, 17, 18, 22, 23, 26, 27, 28, 29, 30, 35, 36, - 37, 38, 39, 43, 44, 45, 46, 47, 51, 52, - 54, 55, 57, 59, 62, 64, 65, 67, 68, 69, - 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, - 81, 94, 95, 96, 97, 98, 51, 52, 87, 88, - 93, 26, 26, 31, 26, 88, 88, 26, 26, 67, - 69, 32, 50, 51, 52, 92, 96, 24, 25, 59, - 35, 36, 37, 38, 39, 43, 46, 47, 54, 55, - 35, 36, 37, 38, 39, 43, 46, 47, 54, 55, - 26, 26, 26, 29, 56, 26, 26, 29, 56, 26, - 26, 26, 26, 26, 26, 26, 88, 88, 0, 26, - 65, 64, 66, 51, 52, 91, 33, 34, 49, 50, - 48, 53, 92, 96, 4, 51, 89, 90, 96, 93, - 50, 93, 14, 57, 92, 50, 93, 14, 14, 51, - 59, 69, 75, 69, 66, 19, 25, 60, 26, 26, - 26, 29, 56, 26, 26, 29, 56, 26, 26, 26, - 26, 26, 26, 26, 26, 29, 56, 26, 26, 29, - 56, 26, 26, 26, 26, 26, 58, 60, 64, 93, - 93, 95, 95, 93, 93, 88, 33, 34, 49, 50, - 51, 21, 93, 14, 21, 57, 88, 88, 93, 93, - 14, 21, 57, 88, 88, 93, 60, 66, 66, 93, - 95, 95, 97, 97, 5, 6, 7, 82, 93, 93, - 93, 93, 93, 83, 84, 85, 93, 14, 57, 88, - 26, 63, 92, 88, 15, 58, 14, 57, 14, 57, - 87, 93, 63, 92, 87, 15, 15, 75, 93, 75, - 88, 88, 7, 90, 90, 90, 90, 90, 9, 40, - 41, 42, 84, 93, 9, 26, 59, 86, 88, 88, - 15, 26, 92, 93, 58, 88, 88, 87, 87, 15, - 90, 92, 93, 58, 75, 7, 4, 40, 41, 42, - 9, 86, 53, 60, 15, 58, 93, 14, 57, 15, - 58, 15, 58, 93, 14, 57, 88, 60, 26, 88, - 93, 14, 57, 88, 88, 14, 57, 88, 88, 5, - 82, 88, 93, 88, 88, 15, 58, 87, 87, 15, - 58, 88, 15, 58, 15, 58 + 37, 38, 39, 43, 44, 45, 46, 47, 49, 52, + 53, 55, 56, 58, 60, 63, 65, 66, 68, 69, + 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, + 81, 82, 83, 95, 96, 97, 98, 99, 52, 53, + 89, 94, 26, 26, 31, 26, 89, 89, 26, 26, + 68, 70, 32, 51, 52, 53, 93, 97, 24, 25, + 60, 35, 36, 37, 38, 39, 43, 46, 47, 55, + 56, 35, 36, 37, 38, 39, 43, 46, 47, 55, + 56, 26, 26, 26, 29, 57, 26, 26, 29, 57, + 26, 26, 26, 26, 26, 89, 94, 26, 26, 89, + 89, 0, 26, 66, 65, 67, 52, 53, 92, 33, + 34, 50, 51, 48, 54, 93, 97, 4, 52, 90, + 91, 97, 94, 51, 94, 14, 58, 93, 51, 94, + 14, 14, 52, 60, 70, 76, 70, 67, 19, 25, + 61, 26, 26, 26, 29, 57, 26, 26, 29, 57, + 26, 26, 26, 26, 26, 26, 26, 26, 29, 57, + 26, 26, 29, 57, 26, 26, 26, 26, 26, 61, + 61, 59, 61, 65, 94, 94, 96, 96, 94, 94, + 89, 33, 34, 50, 51, 52, 21, 94, 14, 21, + 58, 89, 89, 94, 94, 14, 21, 58, 89, 89, + 94, 61, 67, 67, 94, 96, 96, 98, 98, 5, + 6, 7, 84, 94, 94, 94, 94, 94, 85, 86, + 87, 94, 14, 58, 89, 26, 64, 93, 89, 15, + 59, 14, 58, 14, 58, 89, 64, 93, 89, 15, + 15, 76, 94, 76, 89, 89, 7, 91, 91, 91, + 91, 91, 9, 40, 41, 42, 86, 94, 9, 26, + 60, 88, 89, 89, 15, 26, 93, 94, 59, 89, + 89, 89, 89, 15, 93, 94, 59, 76, 7, 4, + 40, 41, 42, 9, 88, 54, 61, 15, 59, 94, + 14, 58, 15, 59, 15, 59, 94, 14, 58, 89, + 61, 26, 89, 94, 14, 58, 89, 89, 14, 58, + 89, 89, 5, 84, 89, 94, 89, 89, 15, 59, + 89, 89, 15, 59, 89, 15, 59, 15, 59 }; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int8 yyr1[] = { - 0, 61, 62, 62, 62, 62, 62, 63, 63, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 65, 65, 65, 66, 66, 67, 67, - 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, - 70, 70, 70, 70, 71, 71, 71, 71, 72, 72, - 72, 72, 72, 72, 72, 72, 73, 73, 73, 74, - 74, 74, 74, 75, 75, 76, 77, 77, 77, 77, - 77, 78, 78, 78, 79, 80, 81, 82, 82, 82, - 83, 83, 84, 84, 84, 84, 85, 85, 85, 85, - 85, 85, 86, 86, 87, 88, 88, 89, 89, 89, - 90, 90, 90, 90, 90, 90, 91, 91, 92, 92, - 92, 93, 93, 94, 94, 94, 95, 95, 95, 95, - 95, 96, 96, 96, 96, 96, 97, 97, 97, 98, - 98, 98, 98 + 0, 62, 63, 63, 63, 63, 63, 63, 64, 64, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 66, 66, 66, 67, 67, 68, + 68, 69, 69, 69, 69, 69, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, + 71, 71, 71, 71, 71, 72, 72, 72, 72, 73, + 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, + 75, 75, 75, 75, 76, 76, 77, 78, 78, 79, + 79, 79, 79, 79, 80, 80, 80, 81, 82, 83, + 84, 84, 84, 85, 85, 86, 86, 86, 86, 87, + 87, 87, 87, 87, 87, 88, 88, 89, 89, 90, + 90, 90, 91, 91, 91, 91, 91, 91, 92, 92, + 93, 93, 93, 94, 94, 95, 95, 95, 96, 96, + 96, 96, 96, 97, 97, 97, 97, 97, 98, 98, + 98, 99, 99, 99, 99 }; - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ static const yytype_int8 yyr2[] = { - 0, 2, 2, 1, 2, 2, 1, 1, 2, 2, - 2, 3, 3, 3, 3, 2, 3, 3, 2, 3, + 0, 2, 2, 1, 1, 2, 2, 1, 1, 2, + 2, 2, 3, 3, 3, 3, 2, 3, 3, 2, + 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, - 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, - 3, 2, 2, 1, 1, 1, 1, 2, 1, 2, - 1, 1, 2, 1, 1, 1, 1, 5, 5, 1, - 1, 1, 1, 1, 1, 1, 6, 6, 7, 7, - 10, 10, 9, 9, 7, 7, 5, 5, 6, 6, - 7, 7, 10, 10, 9, 9, 6, 7, 6, 5, - 6, 3, 5, 1, 2, 3, 2, 3, 3, 4, - 2, 5, 7, 6, 3, 1, 3, 4, 6, 5, - 1, 2, 4, 4, 5, 5, 2, 3, 2, 3, - 2, 3, 1, 3, 2, 1, 2, 3, 3, 3, - 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, - 1, 0, 2, 1, 2, 2, 4, 4, 3, 3, - 1, 1, 2, 2, 2, 2, 4, 4, 1, 1, - 2, 2, 3 + 3, 3, 2, 2, 1, 1, 1, 1, 2, 1, + 2, 1, 1, 2, 1, 1, 1, 1, 5, 5, + 1, 1, 1, 1, 1, 1, 1, 6, 6, 7, + 7, 10, 10, 9, 9, 7, 7, 5, 5, 6, + 6, 7, 7, 10, 10, 9, 9, 6, 7, 6, + 5, 6, 3, 5, 1, 2, 3, 3, 3, 2, + 3, 3, 4, 2, 5, 7, 6, 3, 1, 3, + 4, 6, 5, 1, 2, 4, 4, 5, 5, 2, + 3, 2, 3, 2, 3, 1, 3, 2, 2, 3, + 3, 3, 4, 4, 4, 4, 4, 1, 1, 1, + 1, 1, 1, 0, 2, 1, 2, 2, 4, 4, + 3, 3, 1, 1, 2, 2, 2, 2, 4, 4, + 1, 1, 2, 2, 3 }; @@ -1451,6 +1487,7 @@ enum { YYENOMEM = -2 }; #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab #define YYRECOVERING() (!!yyerrstatus) @@ -1491,10 +1528,7 @@ do { \ YYFPRINTF Args; \ } while (0) -/* This macro is provided for backward compatibility. */ -# ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif + # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ @@ -1518,15 +1552,11 @@ yy_symbol_value_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { FILE *yyoutput = yyo; - YYUSE (yyoutput); + YY_USE (yyoutput); if (!yyvaluep) return; -# ifdef YYPRINT - if (yykind < YYNTOKENS) - YYPRINT (yyo, yytoknum[yykind], *yyvaluep); -# endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -1640,18 +1670,18 @@ static void yydestruct (const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep) { - YYUSE (yyvaluep); + YY_USE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ @@ -1669,34 +1699,30 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yyerrstatus = 0; - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* Their size. */ - YYPTRDIFF_T yystacksize; + YYPTRDIFF_T yystacksize = YYINITDEPTH; - /* The state stack. */ + /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; - /* The semantic value stack. */ + /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; int yyn; /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ + /* Lookahead symbol kind. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ @@ -1710,18 +1736,10 @@ yyparse (void) Keep to zero when no symbol should be popped. */ int yylen = 0; - yynerrs = 0; - yystate = 0; - yyerrstatus = 0; - - yystacksize = YYINITDEPTH; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - - YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ + goto yysetstate; @@ -1747,7 +1765,7 @@ yysetstate: if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; + YYNOMEM; #else { /* Get the current used size of the three stacks, in elements. */ @@ -1775,7 +1793,7 @@ yysetstate: # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + YYNOMEM; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; @@ -1786,7 +1804,7 @@ yysetstate: YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) - goto yyexhaustedlab; + YYNOMEM; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE @@ -1808,6 +1826,7 @@ yysetstate: } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + if (yystate == YYFINAL) YYACCEPT; @@ -1919,8 +1938,8 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 2: -#line 382 "/Users/chet/src/bash/src/parse.y" + case 2: /* inputunit: simple_list simple_list_terminator */ +#line 396 "/usr/local/src/chet/src/bash/src/parse.y" { /* Case of regular command. Discard the error safety net,and return the command just parsed. */ @@ -1931,11 +1950,23 @@ yyreduce: parser_state |= PST_EOFTOKEN; YYACCEPT; } -#line 1935 "y.tab.c" +#line 1954 "y.tab.c" + break; + + case 3: /* inputunit: comsub */ +#line 407 "/usr/local/src/chet/src/bash/src/parse.y" + { + /* This is special; look at the production and how + parse_comsub sets token_to_read */ + global_command = (yyvsp[0].command); + eof_encountered = 0; + YYACCEPT; + } +#line 1966 "y.tab.c" break; - case 3: -#line 393 "/Users/chet/src/bash/src/parse.y" + case 4: /* inputunit: '\n' */ +#line 415 "/usr/local/src/chet/src/bash/src/parse.y" { /* Case of regular command, but not a very interesting one. Return a NULL command. */ @@ -1944,11 +1975,11 @@ yyreduce: parser_state |= PST_EOFTOKEN; YYACCEPT; } -#line 1948 "y.tab.c" +#line 1979 "y.tab.c" break; - case 4: -#line 402 "/Users/chet/src/bash/src/parse.y" + case 5: /* inputunit: error '\n' */ +#line 424 "/usr/local/src/chet/src/bash/src/parse.y" { /* Error during parsing. Return NULL command. */ global_command = (COMMAND *)NULL; @@ -1963,11 +1994,11 @@ yyreduce: YYABORT; } } -#line 1967 "y.tab.c" +#line 1998 "y.tab.c" break; - case 5: -#line 417 "/Users/chet/src/bash/src/parse.y" + case 6: /* inputunit: error yacc_EOF */ +#line 439 "/usr/local/src/chet/src/bash/src/parse.y" { /* EOF after an error. Do ignoreeof or not. Really only interesting in non-interactive shells */ @@ -1984,11 +2015,11 @@ yyreduce: YYABORT; } } -#line 1988 "y.tab.c" +#line 2019 "y.tab.c" break; - case 6: -#line 434 "/Users/chet/src/bash/src/parse.y" + case 7: /* inputunit: yacc_EOF */ +#line 456 "/usr/local/src/chet/src/bash/src/parse.y" { /* Case of EOF seen by itself. Do ignoreeof or not. */ @@ -1996,495 +2027,495 @@ yyreduce: handle_eof_input_unit (); YYACCEPT; } -#line 2000 "y.tab.c" +#line 2031 "y.tab.c" break; - case 7: -#line 444 "/Users/chet/src/bash/src/parse.y" + case 8: /* word_list: WORD */ +#line 466 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); } -#line 2006 "y.tab.c" +#line 2037 "y.tab.c" break; - case 8: -#line 446 "/Users/chet/src/bash/src/parse.y" + case 9: /* word_list: word_list WORD */ +#line 468 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); } -#line 2012 "y.tab.c" +#line 2043 "y.tab.c" break; - case 9: -#line 450 "/Users/chet/src/bash/src/parse.y" + case 10: /* redirection: '>' WORD */ +#line 472 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0); } -#line 2022 "y.tab.c" +#line 2053 "y.tab.c" break; - case 10: -#line 456 "/Users/chet/src/bash/src/parse.y" + case 11: /* redirection: '<' WORD */ +#line 478 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0); } -#line 2032 "y.tab.c" +#line 2063 "y.tab.c" break; - case 11: -#line 462 "/Users/chet/src/bash/src/parse.y" + case 12: /* redirection: NUMBER '>' WORD */ +#line 484 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0); } -#line 2042 "y.tab.c" +#line 2073 "y.tab.c" break; - case 12: -#line 468 "/Users/chet/src/bash/src/parse.y" + case 13: /* redirection: NUMBER '<' WORD */ +#line 490 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0); } -#line 2052 "y.tab.c" +#line 2083 "y.tab.c" break; - case 13: -#line 474 "/Users/chet/src/bash/src/parse.y" + case 14: /* redirection: REDIR_WORD '>' WORD */ +#line 496 "/usr/local/src/chet/src/bash/src/parse.y" { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN); } -#line 2062 "y.tab.c" +#line 2093 "y.tab.c" break; - case 14: -#line 480 "/Users/chet/src/bash/src/parse.y" + case 15: /* redirection: REDIR_WORD '<' WORD */ +#line 502 "/usr/local/src/chet/src/bash/src/parse.y" { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN); } -#line 2072 "y.tab.c" +#line 2103 "y.tab.c" break; - case 15: -#line 486 "/Users/chet/src/bash/src/parse.y" + case 16: /* redirection: GREATER_GREATER WORD */ +#line 508 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0); } -#line 2082 "y.tab.c" +#line 2113 "y.tab.c" break; - case 16: -#line 492 "/Users/chet/src/bash/src/parse.y" + case 17: /* redirection: NUMBER GREATER_GREATER WORD */ +#line 514 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0); } -#line 2092 "y.tab.c" +#line 2123 "y.tab.c" break; - case 17: -#line 498 "/Users/chet/src/bash/src/parse.y" + case 18: /* redirection: REDIR_WORD GREATER_GREATER WORD */ +#line 520 "/usr/local/src/chet/src/bash/src/parse.y" { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN); } -#line 2102 "y.tab.c" +#line 2133 "y.tab.c" break; - case 18: -#line 504 "/Users/chet/src/bash/src/parse.y" + case 19: /* redirection: GREATER_BAR WORD */ +#line 526 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_force, redir, 0); } -#line 2112 "y.tab.c" +#line 2143 "y.tab.c" break; - case 19: -#line 510 "/Users/chet/src/bash/src/parse.y" + case 20: /* redirection: NUMBER GREATER_BAR WORD */ +#line 532 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_force, redir, 0); } -#line 2122 "y.tab.c" +#line 2153 "y.tab.c" break; - case 20: -#line 516 "/Users/chet/src/bash/src/parse.y" + case 21: /* redirection: REDIR_WORD GREATER_BAR WORD */ +#line 538 "/usr/local/src/chet/src/bash/src/parse.y" { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN); } -#line 2132 "y.tab.c" +#line 2163 "y.tab.c" break; - case 21: -#line 522 "/Users/chet/src/bash/src/parse.y" + case 22: /* redirection: LESS_GREATER WORD */ +#line 544 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_output, redir, 0); } -#line 2142 "y.tab.c" +#line 2173 "y.tab.c" break; - case 22: -#line 528 "/Users/chet/src/bash/src/parse.y" + case 23: /* redirection: NUMBER LESS_GREATER WORD */ +#line 550 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_output, redir, 0); } -#line 2152 "y.tab.c" +#line 2183 "y.tab.c" break; - case 23: -#line 534 "/Users/chet/src/bash/src/parse.y" + case 24: /* redirection: REDIR_WORD LESS_GREATER WORD */ +#line 556 "/usr/local/src/chet/src/bash/src/parse.y" { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN); } -#line 2162 "y.tab.c" +#line 2193 "y.tab.c" break; - case 24: -#line 540 "/Users/chet/src/bash/src/parse.y" + case 25: /* redirection: LESS_LESS WORD */ +#line 562 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } -#line 2173 "y.tab.c" +#line 2204 "y.tab.c" break; - case 25: -#line 547 "/Users/chet/src/bash/src/parse.y" + case 26: /* redirection: NUMBER LESS_LESS WORD */ +#line 569 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } -#line 2184 "y.tab.c" +#line 2215 "y.tab.c" break; - case 26: -#line 554 "/Users/chet/src/bash/src/parse.y" + case 27: /* redirection: REDIR_WORD LESS_LESS WORD */ +#line 576 "/usr/local/src/chet/src/bash/src/parse.y" { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN); push_heredoc ((yyval.redirect)); } -#line 2195 "y.tab.c" +#line 2226 "y.tab.c" break; - case 27: -#line 561 "/Users/chet/src/bash/src/parse.y" + case 28: /* redirection: LESS_LESS_MINUS WORD */ +#line 583 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } -#line 2206 "y.tab.c" +#line 2237 "y.tab.c" break; - case 28: -#line 568 "/Users/chet/src/bash/src/parse.y" + case 29: /* redirection: NUMBER LESS_LESS_MINUS WORD */ +#line 590 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } -#line 2217 "y.tab.c" +#line 2248 "y.tab.c" break; - case 29: -#line 575 "/Users/chet/src/bash/src/parse.y" + case 30: /* redirection: REDIR_WORD LESS_LESS_MINUS WORD */ +#line 597 "/usr/local/src/chet/src/bash/src/parse.y" { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN); push_heredoc ((yyval.redirect)); } -#line 2228 "y.tab.c" +#line 2259 "y.tab.c" break; - case 30: -#line 582 "/Users/chet/src/bash/src/parse.y" + case 31: /* redirection: LESS_LESS_LESS WORD */ +#line 604 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0); } -#line 2238 "y.tab.c" +#line 2269 "y.tab.c" break; - case 31: -#line 588 "/Users/chet/src/bash/src/parse.y" + case 32: /* redirection: NUMBER LESS_LESS_LESS WORD */ +#line 610 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0); } -#line 2248 "y.tab.c" +#line 2279 "y.tab.c" break; - case 32: -#line 594 "/Users/chet/src/bash/src/parse.y" + case 33: /* redirection: REDIR_WORD LESS_LESS_LESS WORD */ +#line 616 "/usr/local/src/chet/src/bash/src/parse.y" { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN); } -#line 2258 "y.tab.c" +#line 2289 "y.tab.c" break; - case 33: -#line 600 "/Users/chet/src/bash/src/parse.y" + case 34: /* redirection: LESS_AND NUMBER */ +#line 622 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 0; redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0); } -#line 2268 "y.tab.c" +#line 2299 "y.tab.c" break; - case 34: -#line 606 "/Users/chet/src/bash/src/parse.y" + case 35: /* redirection: NUMBER LESS_AND NUMBER */ +#line 628 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = (yyvsp[-2].number); redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0); } -#line 2278 "y.tab.c" +#line 2309 "y.tab.c" break; - case 35: -#line 612 "/Users/chet/src/bash/src/parse.y" + case 36: /* redirection: REDIR_WORD LESS_AND NUMBER */ +#line 634 "/usr/local/src/chet/src/bash/src/parse.y" { source.filename = (yyvsp[-2].word); redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN); } -#line 2288 "y.tab.c" +#line 2319 "y.tab.c" break; - case 36: -#line 618 "/Users/chet/src/bash/src/parse.y" + case 37: /* redirection: GREATER_AND NUMBER */ +#line 640 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 1; redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0); } -#line 2298 "y.tab.c" +#line 2329 "y.tab.c" break; - case 37: -#line 624 "/Users/chet/src/bash/src/parse.y" + case 38: /* redirection: NUMBER GREATER_AND NUMBER */ +#line 646 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = (yyvsp[-2].number); redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0); } -#line 2308 "y.tab.c" +#line 2339 "y.tab.c" break; - case 38: -#line 630 "/Users/chet/src/bash/src/parse.y" + case 39: /* redirection: REDIR_WORD GREATER_AND NUMBER */ +#line 652 "/usr/local/src/chet/src/bash/src/parse.y" { source.filename = (yyvsp[-2].word); redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN); } -#line 2318 "y.tab.c" +#line 2349 "y.tab.c" break; - case 39: -#line 636 "/Users/chet/src/bash/src/parse.y" + case 40: /* redirection: LESS_AND WORD */ +#line 658 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0); } -#line 2328 "y.tab.c" +#line 2359 "y.tab.c" break; - case 40: -#line 642 "/Users/chet/src/bash/src/parse.y" + case 41: /* redirection: NUMBER LESS_AND WORD */ +#line 664 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0); } -#line 2338 "y.tab.c" +#line 2369 "y.tab.c" break; - case 41: -#line 648 "/Users/chet/src/bash/src/parse.y" + case 42: /* redirection: REDIR_WORD LESS_AND WORD */ +#line 670 "/usr/local/src/chet/src/bash/src/parse.y" { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN); } -#line 2348 "y.tab.c" +#line 2379 "y.tab.c" break; - case 42: -#line 654 "/Users/chet/src/bash/src/parse.y" + case 43: /* redirection: GREATER_AND WORD */ +#line 676 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0); } -#line 2358 "y.tab.c" +#line 2389 "y.tab.c" break; - case 43: -#line 660 "/Users/chet/src/bash/src/parse.y" + case 44: /* redirection: NUMBER GREATER_AND WORD */ +#line 682 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0); } -#line 2368 "y.tab.c" +#line 2399 "y.tab.c" break; - case 44: -#line 666 "/Users/chet/src/bash/src/parse.y" + case 45: /* redirection: REDIR_WORD GREATER_AND WORD */ +#line 688 "/usr/local/src/chet/src/bash/src/parse.y" { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN); } -#line 2378 "y.tab.c" +#line 2409 "y.tab.c" break; - case 45: -#line 672 "/Users/chet/src/bash/src/parse.y" + case 46: /* redirection: GREATER_AND '-' */ +#line 694 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 1; redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } -#line 2388 "y.tab.c" +#line 2419 "y.tab.c" break; - case 46: -#line 678 "/Users/chet/src/bash/src/parse.y" + case 47: /* redirection: NUMBER GREATER_AND '-' */ +#line 700 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = (yyvsp[-2].number); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } -#line 2398 "y.tab.c" +#line 2429 "y.tab.c" break; - case 47: -#line 684 "/Users/chet/src/bash/src/parse.y" + case 48: /* redirection: REDIR_WORD GREATER_AND '-' */ +#line 706 "/usr/local/src/chet/src/bash/src/parse.y" { source.filename = (yyvsp[-2].word); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); } -#line 2408 "y.tab.c" +#line 2439 "y.tab.c" break; - case 48: -#line 690 "/Users/chet/src/bash/src/parse.y" + case 49: /* redirection: LESS_AND '-' */ +#line 712 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 0; redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } -#line 2418 "y.tab.c" +#line 2449 "y.tab.c" break; - case 49: -#line 696 "/Users/chet/src/bash/src/parse.y" + case 50: /* redirection: NUMBER LESS_AND '-' */ +#line 718 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = (yyvsp[-2].number); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } -#line 2428 "y.tab.c" +#line 2459 "y.tab.c" break; - case 50: -#line 702 "/Users/chet/src/bash/src/parse.y" + case 51: /* redirection: REDIR_WORD LESS_AND '-' */ +#line 724 "/usr/local/src/chet/src/bash/src/parse.y" { source.filename = (yyvsp[-2].word); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); } -#line 2438 "y.tab.c" +#line 2469 "y.tab.c" break; - case 51: -#line 708 "/Users/chet/src/bash/src/parse.y" + case 52: /* redirection: AND_GREATER WORD */ +#line 730 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0); } -#line 2448 "y.tab.c" +#line 2479 "y.tab.c" break; - case 52: -#line 714 "/Users/chet/src/bash/src/parse.y" + case 53: /* redirection: AND_GREATER_GREATER WORD */ +#line 736 "/usr/local/src/chet/src/bash/src/parse.y" { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0); } -#line 2458 "y.tab.c" +#line 2489 "y.tab.c" break; - case 53: -#line 722 "/Users/chet/src/bash/src/parse.y" + case 54: /* simple_command_element: WORD */ +#line 744 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; } -#line 2464 "y.tab.c" +#line 2495 "y.tab.c" break; - case 54: -#line 724 "/Users/chet/src/bash/src/parse.y" + case 55: /* simple_command_element: ASSIGNMENT_WORD */ +#line 746 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; } -#line 2470 "y.tab.c" +#line 2501 "y.tab.c" break; - case 55: -#line 726 "/Users/chet/src/bash/src/parse.y" + case 56: /* simple_command_element: redirection */ +#line 748 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; } -#line 2476 "y.tab.c" +#line 2507 "y.tab.c" break; - case 56: -#line 730 "/Users/chet/src/bash/src/parse.y" + case 57: /* redirection_list: redirection */ +#line 752 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.redirect) = (yyvsp[0].redirect); } -#line 2484 "y.tab.c" +#line 2515 "y.tab.c" break; - case 57: -#line 734 "/Users/chet/src/bash/src/parse.y" + case 58: /* redirection_list: redirection_list redirection */ +#line 756 "/usr/local/src/chet/src/bash/src/parse.y" { register REDIRECT *t; @@ -2493,35 +2524,35 @@ yyreduce: t->next = (yyvsp[0].redirect); (yyval.redirect) = (yyvsp[-1].redirect); } -#line 2497 "y.tab.c" +#line 2528 "y.tab.c" break; - case 58: -#line 745 "/Users/chet/src/bash/src/parse.y" + case 59: /* simple_command: simple_command_element */ +#line 767 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); } -#line 2503 "y.tab.c" +#line 2534 "y.tab.c" break; - case 59: -#line 747 "/Users/chet/src/bash/src/parse.y" + case 60: /* simple_command: simple_command simple_command_element */ +#line 769 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); } -#line 2509 "y.tab.c" +#line 2540 "y.tab.c" break; - case 60: -#line 751 "/Users/chet/src/bash/src/parse.y" + case 61: /* command: simple_command */ +#line 773 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = clean_simple_command ((yyvsp[0].command)); } -#line 2515 "y.tab.c" +#line 2546 "y.tab.c" break; - case 61: -#line 753 "/Users/chet/src/bash/src/parse.y" + case 62: /* command: shell_command */ +#line 775 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 2521 "y.tab.c" +#line 2552 "y.tab.c" break; - case 62: -#line 755 "/Users/chet/src/bash/src/parse.y" + case 63: /* command: shell_command redirection_list */ +#line 777 "/usr/local/src/chet/src/bash/src/parse.y" { COMMAND *tc; @@ -2537,330 +2568,330 @@ yyreduce: tc->redirects = (yyvsp[0].redirect); (yyval.command) = (yyvsp[-1].command); } -#line 2541 "y.tab.c" +#line 2572 "y.tab.c" break; - case 63: -#line 771 "/Users/chet/src/bash/src/parse.y" + case 64: /* command: function_def */ +#line 793 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 2547 "y.tab.c" +#line 2578 "y.tab.c" break; - case 64: -#line 773 "/Users/chet/src/bash/src/parse.y" + case 65: /* command: coproc */ +#line 795 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 2553 "y.tab.c" +#line 2584 "y.tab.c" break; - case 65: -#line 777 "/Users/chet/src/bash/src/parse.y" + case 66: /* shell_command: for_command */ +#line 799 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 2559 "y.tab.c" +#line 2590 "y.tab.c" break; - case 66: -#line 779 "/Users/chet/src/bash/src/parse.y" + case 67: /* shell_command: case_command */ +#line 801 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 2565 "y.tab.c" +#line 2596 "y.tab.c" break; - case 67: -#line 781 "/Users/chet/src/bash/src/parse.y" + case 68: /* shell_command: WHILE compound_list DO compound_list DONE */ +#line 803 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); } -#line 2571 "y.tab.c" +#line 2602 "y.tab.c" break; - case 68: -#line 783 "/Users/chet/src/bash/src/parse.y" + case 69: /* shell_command: UNTIL compound_list DO compound_list DONE */ +#line 805 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); } -#line 2577 "y.tab.c" +#line 2608 "y.tab.c" break; - case 69: -#line 785 "/Users/chet/src/bash/src/parse.y" + case 70: /* shell_command: select_command */ +#line 807 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 2583 "y.tab.c" +#line 2614 "y.tab.c" break; - case 70: -#line 787 "/Users/chet/src/bash/src/parse.y" + case 71: /* shell_command: if_command */ +#line 809 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 2589 "y.tab.c" +#line 2620 "y.tab.c" break; - case 71: -#line 789 "/Users/chet/src/bash/src/parse.y" + case 72: /* shell_command: subshell */ +#line 811 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 2595 "y.tab.c" +#line 2626 "y.tab.c" break; - case 72: -#line 791 "/Users/chet/src/bash/src/parse.y" + case 73: /* shell_command: group_command */ +#line 813 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 2601 "y.tab.c" +#line 2632 "y.tab.c" break; - case 73: -#line 793 "/Users/chet/src/bash/src/parse.y" + case 74: /* shell_command: arith_command */ +#line 815 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 2607 "y.tab.c" +#line 2638 "y.tab.c" break; - case 74: -#line 795 "/Users/chet/src/bash/src/parse.y" + case 75: /* shell_command: cond_command */ +#line 817 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 2613 "y.tab.c" +#line 2644 "y.tab.c" break; - case 75: -#line 797 "/Users/chet/src/bash/src/parse.y" + case 76: /* shell_command: arith_for_command */ +#line 819 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 2619 "y.tab.c" +#line 2650 "y.tab.c" break; - case 76: -#line 801 "/Users/chet/src/bash/src/parse.y" + case 77: /* for_command: FOR WORD newline_list DO compound_list DONE */ +#line 823 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2628 "y.tab.c" +#line 2659 "y.tab.c" break; - case 77: -#line 806 "/Users/chet/src/bash/src/parse.y" + case 78: /* for_command: FOR WORD newline_list '{' compound_list '}' */ +#line 828 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2637 "y.tab.c" +#line 2668 "y.tab.c" break; - case 78: -#line 811 "/Users/chet/src/bash/src/parse.y" + case 79: /* for_command: FOR WORD ';' newline_list DO compound_list DONE */ +#line 833 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2646 "y.tab.c" +#line 2677 "y.tab.c" break; - case 79: -#line 816 "/Users/chet/src/bash/src/parse.y" + case 80: /* for_command: FOR WORD ';' newline_list '{' compound_list '}' */ +#line 838 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2655 "y.tab.c" +#line 2686 "y.tab.c" break; - case 80: -#line 821 "/Users/chet/src/bash/src/parse.y" + case 81: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */ +#line 843 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2664 "y.tab.c" +#line 2695 "y.tab.c" break; - case 81: -#line 826 "/Users/chet/src/bash/src/parse.y" + case 82: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */ +#line 848 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2673 "y.tab.c" +#line 2704 "y.tab.c" break; - case 82: -#line 831 "/Users/chet/src/bash/src/parse.y" + case 83: /* for_command: FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE */ +#line 853 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2682 "y.tab.c" +#line 2713 "y.tab.c" break; - case 83: -#line 836 "/Users/chet/src/bash/src/parse.y" + case 84: /* for_command: FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}' */ +#line 858 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2691 "y.tab.c" +#line 2722 "y.tab.c" break; - case 84: -#line 843 "/Users/chet/src/bash/src/parse.y" + case 85: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE */ +#line 865 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno); if ((yyval.command) == 0) YYERROR; if (word_top > 0) word_top--; } -#line 2701 "y.tab.c" +#line 2732 "y.tab.c" break; - case 85: -#line 849 "/Users/chet/src/bash/src/parse.y" + case 86: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}' */ +#line 871 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno); if ((yyval.command) == 0) YYERROR; if (word_top > 0) word_top--; } -#line 2711 "y.tab.c" +#line 2742 "y.tab.c" break; - case 86: -#line 855 "/Users/chet/src/bash/src/parse.y" + case 87: /* arith_for_command: FOR ARITH_FOR_EXPRS DO compound_list DONE */ +#line 877 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno); if ((yyval.command) == 0) YYERROR; if (word_top > 0) word_top--; } -#line 2721 "y.tab.c" +#line 2752 "y.tab.c" break; - case 87: -#line 861 "/Users/chet/src/bash/src/parse.y" + case 88: /* arith_for_command: FOR ARITH_FOR_EXPRS '{' compound_list '}' */ +#line 883 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno); if ((yyval.command) == 0) YYERROR; if (word_top > 0) word_top--; } -#line 2731 "y.tab.c" +#line 2762 "y.tab.c" break; - case 88: -#line 869 "/Users/chet/src/bash/src/parse.y" + case 89: /* select_command: SELECT WORD newline_list DO compound_list DONE */ +#line 891 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2740 "y.tab.c" +#line 2771 "y.tab.c" break; - case 89: -#line 874 "/Users/chet/src/bash/src/parse.y" + case 90: /* select_command: SELECT WORD newline_list '{' compound_list '}' */ +#line 896 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2749 "y.tab.c" +#line 2780 "y.tab.c" break; - case 90: -#line 879 "/Users/chet/src/bash/src/parse.y" + case 91: /* select_command: SELECT WORD ';' newline_list DO compound_list DONE */ +#line 901 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2758 "y.tab.c" +#line 2789 "y.tab.c" break; - case 91: -#line 884 "/Users/chet/src/bash/src/parse.y" + case 92: /* select_command: SELECT WORD ';' newline_list '{' compound_list '}' */ +#line 906 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2767 "y.tab.c" +#line 2798 "y.tab.c" break; - case 92: -#line 889 "/Users/chet/src/bash/src/parse.y" + case 93: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */ +#line 911 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2776 "y.tab.c" +#line 2807 "y.tab.c" break; - case 93: -#line 894 "/Users/chet/src/bash/src/parse.y" + case 94: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */ +#line 916 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2785 "y.tab.c" +#line 2816 "y.tab.c" break; - case 94: -#line 899 "/Users/chet/src/bash/src/parse.y" + case 95: /* select_command: SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE */ +#line 921 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2794 "y.tab.c" +#line 2825 "y.tab.c" break; - case 95: -#line 904 "/Users/chet/src/bash/src/parse.y" + case 96: /* select_command: SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}' */ +#line 926 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2803 "y.tab.c" +#line 2834 "y.tab.c" break; - case 96: -#line 911 "/Users/chet/src/bash/src/parse.y" + case 97: /* case_command: CASE WORD newline_list IN newline_list ESAC */ +#line 933 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2812 "y.tab.c" +#line 2843 "y.tab.c" break; - case 97: -#line 916 "/Users/chet/src/bash/src/parse.y" + case 98: /* case_command: CASE WORD newline_list IN case_clause_sequence newline_list ESAC */ +#line 938 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2821 "y.tab.c" +#line 2852 "y.tab.c" break; - case 98: -#line 921 "/Users/chet/src/bash/src/parse.y" + case 99: /* case_command: CASE WORD newline_list IN case_clause ESAC */ +#line 943 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2830 "y.tab.c" +#line 2861 "y.tab.c" break; - case 99: -#line 928 "/Users/chet/src/bash/src/parse.y" + case 100: /* function_def: WORD '(' ')' newline_list function_body */ +#line 950 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); } -#line 2836 "y.tab.c" +#line 2867 "y.tab.c" break; - case 100: -#line 930 "/Users/chet/src/bash/src/parse.y" + case 101: /* function_def: FUNCTION WORD '(' ')' newline_list function_body */ +#line 952 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); } -#line 2842 "y.tab.c" +#line 2873 "y.tab.c" break; - case 101: -#line 932 "/Users/chet/src/bash/src/parse.y" + case 102: /* function_def: FUNCTION WORD function_body */ +#line 954 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_function_def ((yyvsp[-1].word), (yyvsp[0].command), function_dstart, function_bstart); } -#line 2848 "y.tab.c" +#line 2879 "y.tab.c" break; - case 102: -#line 934 "/Users/chet/src/bash/src/parse.y" + case 103: /* function_def: FUNCTION WORD '\n' newline_list function_body */ +#line 956 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_function_def ((yyvsp[-3].word), (yyvsp[0].command), function_dstart, function_bstart); } -#line 2854 "y.tab.c" +#line 2885 "y.tab.c" break; - case 103: -#line 938 "/Users/chet/src/bash/src/parse.y" + case 104: /* function_body: shell_command */ +#line 960 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 2860 "y.tab.c" +#line 2891 "y.tab.c" break; - case 104: -#line 940 "/Users/chet/src/bash/src/parse.y" + case 105: /* function_body: shell_command redirection_list */ +#line 962 "/usr/local/src/chet/src/bash/src/parse.y" { COMMAND *tc; @@ -2889,29 +2920,45 @@ yyreduce: tc->redirects = (yyvsp[0].redirect); (yyval.command) = (yyvsp[-1].command); } -#line 2893 "y.tab.c" +#line 2924 "y.tab.c" break; - case 105: -#line 971 "/Users/chet/src/bash/src/parse.y" + case 106: /* subshell: '(' compound_list ')' */ +#line 993 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_subshell_command ((yyvsp[-1].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL; } -#line 2902 "y.tab.c" +#line 2933 "y.tab.c" + break; + + case 107: /* comsub: DOLPAREN compound_list ')' */ +#line 1000 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[-1].command); + } +#line 2941 "y.tab.c" + break; + + case 108: /* comsub: DOLPAREN newline_list ')' */ +#line 1004 "/usr/local/src/chet/src/bash/src/parse.y" + { + (yyval.command) = (COMMAND *)NULL; + } +#line 2949 "y.tab.c" break; - case 106: -#line 978 "/Users/chet/src/bash/src/parse.y" + case 109: /* coproc: COPROC shell_command */ +#line 1010 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } -#line 2911 "y.tab.c" +#line 2958 "y.tab.c" break; - case 107: -#line 983 "/Users/chet/src/bash/src/parse.y" + case 110: /* coproc: COPROC shell_command redirection_list */ +#line 1015 "/usr/local/src/chet/src/bash/src/parse.y" { COMMAND *tc; @@ -2928,20 +2975,20 @@ yyreduce: (yyval.command) = make_coproc_command ("COPROC", (yyvsp[-1].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } -#line 2932 "y.tab.c" +#line 2979 "y.tab.c" break; - case 108: -#line 1000 "/Users/chet/src/bash/src/parse.y" + case 111: /* coproc: COPROC WORD shell_command */ +#line 1032 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } -#line 2941 "y.tab.c" +#line 2988 "y.tab.c" break; - case 109: -#line 1005 "/Users/chet/src/bash/src/parse.y" + case 112: /* coproc: COPROC WORD shell_command redirection_list */ +#line 1037 "/usr/local/src/chet/src/bash/src/parse.y" { COMMAND *tc; @@ -2958,355 +3005,366 @@ yyreduce: (yyval.command) = make_coproc_command ((yyvsp[-2].word)->word, (yyvsp[-1].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } -#line 2962 "y.tab.c" +#line 3009 "y.tab.c" break; - case 110: -#line 1022 "/Users/chet/src/bash/src/parse.y" + case 113: /* coproc: COPROC simple_command */ +#line 1054 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command))); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } -#line 2971 "y.tab.c" +#line 3018 "y.tab.c" break; - case 111: -#line 1029 "/Users/chet/src/bash/src/parse.y" + case 114: /* if_command: IF compound_list THEN compound_list FI */ +#line 1061 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); } -#line 2977 "y.tab.c" +#line 3024 "y.tab.c" break; - case 112: -#line 1031 "/Users/chet/src/bash/src/parse.y" + case 115: /* if_command: IF compound_list THEN compound_list ELSE compound_list FI */ +#line 1063 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); } -#line 2983 "y.tab.c" +#line 3030 "y.tab.c" break; - case 113: -#line 1033 "/Users/chet/src/bash/src/parse.y" + case 116: /* if_command: IF compound_list THEN compound_list elif_clause FI */ +#line 1065 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); } -#line 2989 "y.tab.c" +#line 3036 "y.tab.c" break; - case 114: -#line 1038 "/Users/chet/src/bash/src/parse.y" + case 117: /* group_command: '{' compound_list '}' */ +#line 1070 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_group_command ((yyvsp[-1].command)); } -#line 2995 "y.tab.c" +#line 3042 "y.tab.c" break; - case 115: -#line 1042 "/Users/chet/src/bash/src/parse.y" + case 118: /* arith_command: ARITH_CMD */ +#line 1074 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); } -#line 3001 "y.tab.c" +#line 3048 "y.tab.c" break; - case 116: -#line 1046 "/Users/chet/src/bash/src/parse.y" + case 119: /* cond_command: COND_START COND_CMD COND_END */ +#line 1078 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[-1].command); } -#line 3007 "y.tab.c" +#line 3054 "y.tab.c" break; - case 117: -#line 1050 "/Users/chet/src/bash/src/parse.y" + case 120: /* elif_clause: ELIF compound_list THEN compound_list */ +#line 1082 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); } -#line 3013 "y.tab.c" +#line 3060 "y.tab.c" break; - case 118: -#line 1052 "/Users/chet/src/bash/src/parse.y" + case 121: /* elif_clause: ELIF compound_list THEN compound_list ELSE compound_list */ +#line 1084 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); } -#line 3019 "y.tab.c" +#line 3066 "y.tab.c" break; - case 119: -#line 1054 "/Users/chet/src/bash/src/parse.y" + case 122: /* elif_clause: ELIF compound_list THEN compound_list elif_clause */ +#line 1086 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); } -#line 3025 "y.tab.c" +#line 3072 "y.tab.c" break; - case 121: -#line 1059 "/Users/chet/src/bash/src/parse.y" + case 124: /* case_clause: case_clause_sequence pattern_list */ +#line 1091 "/usr/local/src/chet/src/bash/src/parse.y" { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); } -#line 3031 "y.tab.c" +#line 3078 "y.tab.c" break; - case 122: -#line 1063 "/Users/chet/src/bash/src/parse.y" + case 125: /* pattern_list: newline_list pattern ')' compound_list */ +#line 1095 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); } -#line 3037 "y.tab.c" +#line 3084 "y.tab.c" break; - case 123: -#line 1065 "/Users/chet/src/bash/src/parse.y" + case 126: /* pattern_list: newline_list pattern ')' newline_list */ +#line 1097 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); } -#line 3043 "y.tab.c" +#line 3090 "y.tab.c" break; - case 124: -#line 1067 "/Users/chet/src/bash/src/parse.y" + case 127: /* pattern_list: newline_list '(' pattern ')' compound_list */ +#line 1099 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); } -#line 3049 "y.tab.c" +#line 3096 "y.tab.c" break; - case 125: -#line 1069 "/Users/chet/src/bash/src/parse.y" + case 128: /* pattern_list: newline_list '(' pattern ')' newline_list */ +#line 1101 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); } -#line 3055 "y.tab.c" +#line 3102 "y.tab.c" break; - case 126: -#line 1073 "/Users/chet/src/bash/src/parse.y" + case 129: /* case_clause_sequence: pattern_list SEMI_SEMI */ +#line 1105 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3061 "y.tab.c" +#line 3108 "y.tab.c" break; - case 127: -#line 1075 "/Users/chet/src/bash/src/parse.y" + case 130: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI */ +#line 1107 "/usr/local/src/chet/src/bash/src/parse.y" { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3067 "y.tab.c" +#line 3114 "y.tab.c" break; - case 128: -#line 1077 "/Users/chet/src/bash/src/parse.y" + case 131: /* case_clause_sequence: pattern_list SEMI_AND */ +#line 1109 "/usr/local/src/chet/src/bash/src/parse.y" { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3073 "y.tab.c" +#line 3120 "y.tab.c" break; - case 129: -#line 1079 "/Users/chet/src/bash/src/parse.y" + case 132: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_AND */ +#line 1111 "/usr/local/src/chet/src/bash/src/parse.y" { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3079 "y.tab.c" +#line 3126 "y.tab.c" break; - case 130: -#line 1081 "/Users/chet/src/bash/src/parse.y" + case 133: /* case_clause_sequence: pattern_list SEMI_SEMI_AND */ +#line 1113 "/usr/local/src/chet/src/bash/src/parse.y" { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3085 "y.tab.c" +#line 3132 "y.tab.c" break; - case 131: -#line 1083 "/Users/chet/src/bash/src/parse.y" + case 134: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI_AND */ +#line 1115 "/usr/local/src/chet/src/bash/src/parse.y" { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3091 "y.tab.c" +#line 3138 "y.tab.c" break; - case 132: -#line 1087 "/Users/chet/src/bash/src/parse.y" + case 135: /* pattern: WORD */ +#line 1119 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); } -#line 3097 "y.tab.c" +#line 3144 "y.tab.c" break; - case 133: -#line 1089 "/Users/chet/src/bash/src/parse.y" + case 136: /* pattern: pattern '|' WORD */ +#line 1121 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); } -#line 3103 "y.tab.c" +#line 3150 "y.tab.c" break; - case 134: -#line 1098 "/Users/chet/src/bash/src/parse.y" + case 137: /* compound_list: newline_list list0 */ +#line 1130 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); - if (need_here_doc) + if (need_here_doc && last_read_token == '\n') gather_here_documents (); } -#line 3113 "y.tab.c" +#line 3160 "y.tab.c" break; - case 136: -#line 1107 "/Users/chet/src/bash/src/parse.y" + case 138: /* compound_list: newline_list list1 */ +#line 1136 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 3121 "y.tab.c" +#line 3168 "y.tab.c" break; - case 138: -#line 1114 "/Users/chet/src/bash/src/parse.y" + case 140: /* list0: list1 '&' newline_list */ +#line 1143 "/usr/local/src/chet/src/bash/src/parse.y" { if ((yyvsp[-2].command)->type == cm_connection) (yyval.command) = connect_async_list ((yyvsp[-2].command), (COMMAND *)NULL, '&'); else (yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&'); } -#line 3132 "y.tab.c" +#line 3179 "y.tab.c" break; - case 140: -#line 1125 "/Users/chet/src/bash/src/parse.y" + case 142: /* list1: list1 AND_AND newline_list list1 */ +#line 1154 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); } -#line 3138 "y.tab.c" +#line 3185 "y.tab.c" break; - case 141: -#line 1127 "/Users/chet/src/bash/src/parse.y" + case 143: /* list1: list1 OR_OR newline_list list1 */ +#line 1156 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); } -#line 3144 "y.tab.c" +#line 3191 "y.tab.c" break; - case 142: -#line 1129 "/Users/chet/src/bash/src/parse.y" + case 144: /* list1: list1 '&' newline_list list1 */ +#line 1158 "/usr/local/src/chet/src/bash/src/parse.y" { if ((yyvsp[-3].command)->type == cm_connection) (yyval.command) = connect_async_list ((yyvsp[-3].command), (yyvsp[0].command), '&'); else (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&'); } -#line 3155 "y.tab.c" +#line 3202 "y.tab.c" break; - case 143: -#line 1136 "/Users/chet/src/bash/src/parse.y" + case 145: /* list1: list1 ';' newline_list list1 */ +#line 1165 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); } -#line 3161 "y.tab.c" +#line 3208 "y.tab.c" break; - case 144: -#line 1138 "/Users/chet/src/bash/src/parse.y" - { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); } -#line 3167 "y.tab.c" + case 146: /* list1: list1 '\n' newline_list list1 */ +#line 1167 "/usr/local/src/chet/src/bash/src/parse.y" + { + if (parser_state & PST_CMDSUBST) + (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '\n'); + else + (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); + } +#line 3219 "y.tab.c" break; - case 145: -#line 1140 "/Users/chet/src/bash/src/parse.y" + case 147: /* list1: pipeline_command */ +#line 1174 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 3173 "y.tab.c" +#line 3225 "y.tab.c" break; - case 148: -#line 1148 "/Users/chet/src/bash/src/parse.y" + case 150: /* list_terminator: '\n' */ +#line 1182 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.number) = '\n'; } -#line 3179 "y.tab.c" +#line 3231 "y.tab.c" break; - case 149: -#line 1150 "/Users/chet/src/bash/src/parse.y" + case 151: /* list_terminator: ';' */ +#line 1184 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.number) = ';'; } -#line 3185 "y.tab.c" +#line 3237 "y.tab.c" break; - case 150: -#line 1152 "/Users/chet/src/bash/src/parse.y" + case 152: /* list_terminator: yacc_EOF */ +#line 1186 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.number) = yacc_EOF; } -#line 3191 "y.tab.c" +#line 3243 "y.tab.c" break; - case 153: -#line 1166 "/Users/chet/src/bash/src/parse.y" + case 155: /* simple_list: simple_list1 */ +#line 1200 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); if (need_here_doc) - gather_here_documents (); + gather_here_documents (); /* XXX */ if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token) { +INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 -> simple_list")); global_command = (yyvsp[0].command); eof_encountered = 0; - rewind_input_string (); + if (bash_input.type == st_string) + rewind_input_string (); YYACCEPT; } } -#line 3208 "y.tab.c" +#line 3262 "y.tab.c" break; - case 154: -#line 1179 "/Users/chet/src/bash/src/parse.y" + case 156: /* simple_list: simple_list1 '&' */ +#line 1215 "/usr/local/src/chet/src/bash/src/parse.y" { if ((yyvsp[-1].command)->type == cm_connection) (yyval.command) = connect_async_list ((yyvsp[-1].command), (COMMAND *)NULL, '&'); else (yyval.command) = command_connect ((yyvsp[-1].command), (COMMAND *)NULL, '&'); if (need_here_doc) - gather_here_documents (); + gather_here_documents (); /* XXX */ if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token) { +INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 '&' -> simple_list")); global_command = (yyvsp[-1].command); eof_encountered = 0; - rewind_input_string (); + if (bash_input.type == st_string) + rewind_input_string (); YYACCEPT; } } -#line 3228 "y.tab.c" +#line 3284 "y.tab.c" break; - case 155: -#line 1195 "/Users/chet/src/bash/src/parse.y" + case 157: /* simple_list: simple_list1 ';' */ +#line 1233 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[-1].command); if (need_here_doc) - gather_here_documents (); + gather_here_documents (); /* XXX */ if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token) { +INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 ';' -> simple_list")); global_command = (yyvsp[-1].command); eof_encountered = 0; - rewind_input_string (); + if (bash_input.type == st_string) + rewind_input_string (); YYACCEPT; } } -#line 3245 "y.tab.c" +#line 3303 "y.tab.c" break; - case 156: -#line 1210 "/Users/chet/src/bash/src/parse.y" + case 158: /* simple_list1: simple_list1 AND_AND newline_list simple_list1 */ +#line 1250 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); } -#line 3251 "y.tab.c" +#line 3309 "y.tab.c" break; - case 157: -#line 1212 "/Users/chet/src/bash/src/parse.y" + case 159: /* simple_list1: simple_list1 OR_OR newline_list simple_list1 */ +#line 1252 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); } -#line 3257 "y.tab.c" +#line 3315 "y.tab.c" break; - case 158: -#line 1214 "/Users/chet/src/bash/src/parse.y" + case 160: /* simple_list1: simple_list1 '&' simple_list1 */ +#line 1254 "/usr/local/src/chet/src/bash/src/parse.y" { if ((yyvsp[-2].command)->type == cm_connection) (yyval.command) = connect_async_list ((yyvsp[-2].command), (yyvsp[0].command), '&'); else (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&'); } -#line 3268 "y.tab.c" +#line 3326 "y.tab.c" break; - case 159: -#line 1221 "/Users/chet/src/bash/src/parse.y" + case 161: /* simple_list1: simple_list1 ';' simple_list1 */ +#line 1261 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); } -#line 3274 "y.tab.c" +#line 3332 "y.tab.c" break; - case 160: -#line 1224 "/Users/chet/src/bash/src/parse.y" + case 162: /* simple_list1: pipeline_command */ +#line 1264 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 3280 "y.tab.c" +#line 3338 "y.tab.c" break; - case 161: -#line 1228 "/Users/chet/src/bash/src/parse.y" + case 163: /* pipeline_command: pipeline */ +#line 1268 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 3286 "y.tab.c" +#line 3344 "y.tab.c" break; - case 162: -#line 1230 "/Users/chet/src/bash/src/parse.y" + case 164: /* pipeline_command: BANG pipeline_command */ +#line 1270 "/usr/local/src/chet/src/bash/src/parse.y" { if ((yyvsp[0].command)) (yyvsp[0].command)->flags ^= CMD_INVERT_RETURN; /* toggle */ (yyval.command) = (yyvsp[0].command); } -#line 3296 "y.tab.c" +#line 3354 "y.tab.c" break; - case 163: -#line 1236 "/Users/chet/src/bash/src/parse.y" + case 165: /* pipeline_command: timespec pipeline_command */ +#line 1276 "/usr/local/src/chet/src/bash/src/parse.y" { if ((yyvsp[0].command)) (yyvsp[0].command)->flags |= (yyvsp[-1].number); (yyval.command) = (yyvsp[0].command); } -#line 3306 "y.tab.c" +#line 3364 "y.tab.c" break; - case 164: -#line 1242 "/Users/chet/src/bash/src/parse.y" + case 166: /* pipeline_command: timespec list_terminator */ +#line 1282 "/usr/local/src/chet/src/bash/src/parse.y" { ELEMENT x; @@ -3326,11 +3384,11 @@ yyreduce: token_to_read = ';'; parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ } -#line 3330 "y.tab.c" +#line 3388 "y.tab.c" break; - case 165: -#line 1262 "/Users/chet/src/bash/src/parse.y" + case 167: /* pipeline_command: BANG list_terminator */ +#line 1302 "/usr/local/src/chet/src/bash/src/parse.y" { ELEMENT x; @@ -3351,17 +3409,17 @@ yyreduce: token_to_read = ';'; parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ } -#line 3355 "y.tab.c" +#line 3413 "y.tab.c" break; - case 166: -#line 1285 "/Users/chet/src/bash/src/parse.y" + case 168: /* pipeline: pipeline '|' newline_list pipeline */ +#line 1325 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); } -#line 3361 "y.tab.c" +#line 3419 "y.tab.c" break; - case 167: -#line 1287 "/Users/chet/src/bash/src/parse.y" + case 169: /* pipeline: pipeline BAR_AND newline_list pipeline */ +#line 1327 "/usr/local/src/chet/src/bash/src/parse.y" { /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ COMMAND *tc; @@ -3384,41 +3442,41 @@ yyreduce: (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); } -#line 3388 "y.tab.c" +#line 3446 "y.tab.c" break; - case 168: -#line 1310 "/Users/chet/src/bash/src/parse.y" + case 170: /* pipeline: command */ +#line 1350 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.command) = (yyvsp[0].command); } -#line 3394 "y.tab.c" +#line 3452 "y.tab.c" break; - case 169: -#line 1314 "/Users/chet/src/bash/src/parse.y" + case 171: /* timespec: TIME */ +#line 1354 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.number) = CMD_TIME_PIPELINE; } -#line 3400 "y.tab.c" +#line 3458 "y.tab.c" break; - case 170: -#line 1316 "/Users/chet/src/bash/src/parse.y" + case 172: /* timespec: TIME TIMEOPT */ +#line 1356 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } -#line 3406 "y.tab.c" +#line 3464 "y.tab.c" break; - case 171: -#line 1318 "/Users/chet/src/bash/src/parse.y" + case 173: /* timespec: TIME TIMEIGN */ +#line 1358 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } -#line 3412 "y.tab.c" +#line 3470 "y.tab.c" break; - case 172: -#line 1320 "/Users/chet/src/bash/src/parse.y" + case 174: /* timespec: TIME TIMEOPT TIMEIGN */ +#line 1360 "/usr/local/src/chet/src/bash/src/parse.y" { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } -#line 3418 "y.tab.c" +#line 3476 "y.tab.c" break; -#line 3422 "y.tab.c" +#line 3480 "y.tab.c" default: break; } @@ -3500,6 +3558,7 @@ yyerrorlab: label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; + ++yynerrs; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -3560,7 +3619,7 @@ yyerrlab1: `-------------------------------------*/ yyacceptlab: yyresult = 0; - goto yyreturn; + goto yyreturnlab; /*-----------------------------------. @@ -3568,24 +3627,22 @@ yyacceptlab: `-----------------------------------*/ yyabortlab: yyresult = 1; - goto yyreturn; + goto yyreturnlab; -#if !defined yyoverflow -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ -#endif + goto yyreturnlab; -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ -yyreturn: +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at @@ -3612,7 +3669,7 @@ yyreturn: return yyresult; } -#line 1322 "/Users/chet/src/bash/src/parse.y" +#line 1362 "/usr/local/src/chet/src/bash/src/parse.y" /* Initial size to allocate for tokens, and the @@ -3908,7 +3965,7 @@ with_input_from_string (string, name) That is the true input location. Rewind bash_input.location.string by that number of characters, so it points to the last character actually consumed by the parser. */ -static void +void rewind_input_string () { int xchars; @@ -3920,7 +3977,7 @@ rewind_input_string () xchars++; /* XXX - how to reflect bash_input.location.string back to string passed to - parse_and_execute or xparse_dolparen? xparse_dolparen needs to know how + parse_and_execute or xparse_dolparen? xparse_dolparen needs to know how far into the string we parsed. parse_and_execute knows where bash_input. location.string is, and how far from orig_string that is -- that's the number of characters the command consumed. */ @@ -4117,8 +4174,6 @@ restore_token_state (ts) * everything between a `;;' and the next `)' or `esac' */ -#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) - #define END_OF_ALIAS 0 /* @@ -4142,7 +4197,7 @@ typedef struct string_saver { #if defined (ALIAS) alias_t *expander; /* alias that caused this line to be pushed. */ #endif - size_t saved_line_size, saved_line_index; + size_t saved_line_size, saved_line_index, saved_line_len; int saved_line_terminator; int flags; } STRING_SAVER; @@ -4168,6 +4223,7 @@ push_string (s, expand, ap) temp->expand_alias = expand; temp->saved_line = shell_input_line; temp->saved_line_size = shell_input_line_size; + temp->saved_line_len = shell_input_line_len; temp->saved_line_index = shell_input_line_index; temp->saved_line_terminator = shell_input_line_terminator; temp->flags = 0; @@ -4185,7 +4241,7 @@ push_string (s, expand, ap) #endif shell_input_line = s; - shell_input_line_size = STRLEN (s); + shell_input_line_size = shell_input_line_len = STRLEN (s); shell_input_line_index = 0; shell_input_line_terminator = '\0'; #if 0 @@ -4210,12 +4266,15 @@ pop_string () shell_input_line = pushed_string_list->saved_line; shell_input_line_index = pushed_string_list->saved_line_index; shell_input_line_size = pushed_string_list->saved_line_size; + shell_input_line_len = pushed_string_list->saved_line_len; shell_input_line_terminator = pushed_string_list->saved_line_terminator; +#if defined (ALIAS) if (pushed_string_list->expand_alias) parser_state |= PST_ALEXPNEXT; else parser_state &= ~PST_ALEXPNEXT; +#endif t = pushed_string_list; pushed_string_list = pushed_string_list->next; @@ -4249,8 +4308,6 @@ free_string_list () pushed_string_list = (STRING_SAVER *)NULL; } -#endif /* ALIAS || DPAREN_ARITHMETIC */ - void free_pushed_string_input () { @@ -4340,12 +4397,7 @@ read_a_line (remove_quoted_newline) /* Ignore null bytes in input. */ if (c == 0) - { -#if 0 - internal_warning ("read_a_line: ignored null byte in input"); -#endif - continue; - } + continue; /* If there is no more input, then we return NULL. */ if (c == EOF) @@ -4419,8 +4471,8 @@ read_secondary_line (remove_quoted_newline) int n, c; prompt_string_pointer = &ps2_prompt; - if (SHOULD_PROMPT()) - prompt_again (); + if (SHOULD_PROMPT ()) + prompt_again (0); ret = read_a_line (remove_quoted_newline); #if defined (HISTORY) if (ret && remember_on_history && (parser_state & PST_HEREDOC)) @@ -4656,9 +4708,6 @@ shell_getc (remove_quoted_newline) if (c == '\0') { -#if 0 - internal_warning ("shell_getc: ignored null byte in input"); -#endif /* If we get EOS while parsing a string, treat it as EOF so we don't just keep looping. Happens very rarely */ if (bash_input.type == st_string) @@ -4805,7 +4854,7 @@ shell_getc (remove_quoted_newline) shell_input_line_size = 0; prompt_string_pointer = ¤t_prompt_string; if (SHOULD_PROMPT ()) - prompt_again (); + prompt_again (0); goto restart_read; } @@ -4827,21 +4876,12 @@ shell_getc (remove_quoted_newline) shell_input_line[shell_input_line_len] = '\n'; shell_input_line[shell_input_line_len + 1] = '\0'; -#if 0 - set_line_mbstate (); /* XXX - this is wasteful */ -#else -# if defined (HANDLE_MULTIBYTE) +#if defined (HANDLE_MULTIBYTE) /* This is kind of an abstraction violation, but there's no need to go through the entire shell_input_line again with a call to set_line_mbstate(). */ - if (shell_input_line_len + 2 > shell_input_line_propsize) - { - shell_input_line_propsize = shell_input_line_len + 2; - shell_input_line_property = (char *)xrealloc (shell_input_line_property, - shell_input_line_propsize); - } + EXTEND_SHELL_INPUT_LINE_PROPERTY(); shell_input_line_property[shell_input_line_len] = 1; -# endif #endif } } @@ -4894,12 +4934,29 @@ next_alias_char: (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"')) { parser_state |= PST_ENDALIAS; + /* We need to do this to make sure last_shell_getc_is_singlebyte returns + true, since we are returning a single-byte space. */ + if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0) + { +#if 0 + EXTEND_SHELL_INPUT_LINE_PROPERTY(); + shell_input_line_property[shell_input_line_len++] = 1; + /* extend shell_input_line to accommodate the shell_ungetc that + read_token_word() will perform, since we're extending the index */ + RESIZE_MALLOCED_BUFFER (shell_input_line, shell_input_line_index, 2, shell_input_line_size, 16); + shell_input_line[++shell_input_line_index] = '\0'; /* XXX */ +#else + shell_input_line_property[shell_input_line_index - 1] = 1; +#endif + } return ' '; /* END_ALIAS */ } #endif pop_alias: - /* This case works for PSH_DPAREN as well */ +#endif /* ALIAS || DPAREN_ARITHMETIC */ + /* This case works for PSH_DPAREN as well as the shell_ungets() case that uses + push_string */ if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE) { parser_state &= ~PST_ENDALIAS; @@ -4908,12 +4965,11 @@ pop_alias: if (uc) shell_input_line_index++; } -#endif /* ALIAS || DPAREN_ARITHMETIC */ if MBTEST(uc == '\\' && remove_quoted_newline && shell_input_line[shell_input_line_index] == '\n') { if (SHOULD_PROMPT ()) - prompt_again (); + prompt_again (0); line_number++; /* What do we do here if we're expanding an alias whose definition @@ -4981,6 +5037,60 @@ shell_ungetc (c) eol_ungetc_lookahead = c; } +/* Push S back into shell_input_line; updating shell_input_line_index */ +void +shell_ungets (s) + char *s; +{ + size_t slen, chars_left; + + slen = strlen (s); + + if (shell_input_line[shell_input_line_index] == '\0') + { + /* Easy, just overwrite shell_input_line. This is preferred because it + saves on set_line_mbstate () and other overhead like push_string */ + if (shell_input_line_size <= slen) + RESIZE_MALLOCED_BUFFER (shell_input_line, shell_input_line_index, slen + 1, shell_input_line_size, 64); + strcpy (shell_input_line, s); + shell_input_line_index = 0; + shell_input_line_len = slen; + shell_input_line_terminator = 0; + } + else if (shell_input_line_index >= slen) + { + /* Just as easy, just back up shell_input_line_index, but it means we + will re-process some characters in set_line_mbstate(). Need to + watch pushing back newlines here. */ + while (slen > 0) + shell_input_line[--shell_input_line_index] = s[--slen]; + } + else if (s[slen - 1] == '\n') + { + push_string (savestring (s), 0, (alias_t *)NULL); + /* push_string does set_line_mbstate () */ + return; + } + else + { + /* Harder case: pushing back input string that's longer than what we've + consumed from shell_input_line so far. */ + INTERNAL_DEBUG (("shell_ungets: not at end of shell_input_line")); + + chars_left = shell_input_line_len - shell_input_line_index; + if (shell_input_line_size <= (slen + chars_left)) + RESIZE_MALLOCED_BUFFER (shell_input_line, shell_input_line_index, chars_left + slen + 1, shell_input_line_size, 64); + memmove (shell_input_line + slen, shell_input_line + shell_input_line_index, shell_input_line_len - shell_input_line_index); + strcpy (shell_input_line, s); + shell_input_line_index = 0; + shell_input_line_len = strlen (shell_input_line); /* chars_left + slen? */ + } + +#if defined (HANDLE_MULTIBYTE) + set_line_mbstate (); /* XXX */ +#endif +} + char * parser_remaining_input () { @@ -5054,7 +5164,7 @@ push_token (x) static char *token = (char *)NULL; /* Current size of the token buffer. */ -static int token_buffer_size; +static size_t token_buffer_size; /* Command to read_token () explaining what we want it to do. */ #define READ 0 @@ -5082,7 +5192,7 @@ yylex () /* Avoid printing a prompt if we're not going to read anything, e.g. after resetting the parser with read_token (RESET). */ if (token_to_read == 0 && SHOULD_PROMPT ()) - prompt_again (); + prompt_again (0); } two_tokens_ago = token_before_that; @@ -5092,11 +5202,16 @@ yylex () if ((parser_state & PST_EOFTOKEN) && current_token == shell_eof_token) { - current_token = yacc_EOF; - if (bash_input.type == st_string) - rewind_input_string (); + /* placeholder for any special handling. */ + return (current_token); } - parser_state &= ~PST_EOFTOKEN; /* ??? */ + + if (current_token < 0) +#if defined (YYERRCODE) && !defined (YYUNDEF) + current_token = YYERRCODE; +#else + current_token = YYerror; +#endif return (current_token); } @@ -5187,9 +5302,12 @@ static int open_brace_count; break; \ if ((parser_state & PST_CASEPAT) && last_read_token == '|' && word_token_alist[i].token == ESAC) \ break; /* Posix grammar rule 4 */ \ - if (word_token_alist[i].token == ESAC) \ + if ((parser_state & PST_CASEPAT) && last_read_token == '(' && word_token_alist[i].token == ESAC) /*)*/ \ + break; /* phantom Posix grammar rule 4 */ \ + if (word_token_alist[i].token == ESAC) { \ parser_state &= ~(PST_CASEPAT|PST_CASESTMT); \ - else if (word_token_alist[i].token == CASE) \ + esacs_needed_count--; \ + } else if (word_token_alist[i].token == CASE) \ parser_state |= PST_CASESTMT; \ else if (word_token_alist[i].token == COND_END) \ parser_state &= ~(PST_CONDCMD|PST_CONDEXPR); \ @@ -5249,8 +5367,12 @@ alias_expand_token (tokstr) char *expanded; alias_t *ap; +#if 0 if (((parser_state & PST_ALEXPNEXT) || command_token_position (last_read_token)) && (parser_state & PST_CASEPAT) == 0) +#else + if ((parser_state & PST_ALEXPNEXT) || assignment_acceptable (last_read_token)) +#endif { ap = find_alias (tokstr); @@ -5492,7 +5614,7 @@ reset_parser () #if defined (EXTENDED_GLOB) /* Reset to global value of extended glob */ - if (parser_state & PST_EXTPAT) + if (parser_state & (PST_EXTPAT|PST_CMDSUBST)) extended_glob = global_extglob; #endif @@ -5517,6 +5639,11 @@ reset_parser () eol_ungetc_lookahead = 0; + /* added post-bash-5.1 */ + need_here_doc = 0; + redir_stack[0] = 0; + esacs_needed_count = expecting_in_token = 0; + current_token = '\n'; /* XXX */ last_read_token = '\n'; token_to_read = '\n'; @@ -5594,9 +5721,7 @@ read_token (command) we are eval'ing a string that is an incomplete command), return EOF */ if (character == '\0' && bash_input.type == st_string && expanding_alias() == 0) { -#if defined (DEBUG) -itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.string); -#endif + INTERNAL_DEBUG (("shell_getc: bash_input.location.string = `%s'", bash_input.location.string)); EOF_Reached = 1; return (yacc_EOF); } @@ -5611,7 +5736,7 @@ itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.stri character = '\n'; /* this will take the next if statement and return. */ } - if (character == '\n') + if MBTEST(character == '\n') { /* If we're about to return an unquoted newline, we can go and collect the text of any pending here document. */ @@ -5631,7 +5756,7 @@ itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.stri goto tokword; /* Shell meta-characters. */ - if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0)) + if MBTEST(shellmeta (character)) { #if defined (ALIAS) /* Turn off alias tokenization iff this character sequence would @@ -5652,7 +5777,7 @@ itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.stri else peek_char = shell_getc (1); - if (character == peek_char) + if MBTEST(character == peek_char) { switch (character) { @@ -5811,6 +5936,9 @@ tokword: #define LEX_QUOTEDDOC 0x0400 /* here doc with quoted delim */ #define LEX_INWORD 0x0800 #define LEX_GTLT 0x1000 +#define LEX_CKESAC 0x2000 /* check esac after in -- for later */ +#define LEX_CASEWD 0x4000 /* word after case */ +#define LEX_PATLIST 0x8000 /* case statement pattern list */ #define COMSUB_META(ch) ((ch) == ';' || (ch) == '&' || (ch) == '|') @@ -5878,8 +6006,8 @@ parse_matched_pair (qc, open, close, lenp, flags) } /* Possible reprompting. */ - if (ch == '\n' && SHOULD_PROMPT ()) - prompt_again (); + if MBTEST(ch == '\n' && SHOULD_PROMPT ()) + prompt_again (0); /* Don't bother counting parens or doing anything else if in a comment or part of a case statement */ @@ -5889,7 +6017,7 @@ parse_matched_pair (qc, open, close, lenp, flags) RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); ret[retind++] = ch; - if (ch == '\n') + if MBTEST(ch == '\n') tflags &= ~LEX_INCOMMENT; continue; @@ -5904,7 +6032,8 @@ parse_matched_pair (qc, open, close, lenp, flags) if (tflags & LEX_PASSNEXT) /* last char was backslash */ { tflags &= ~LEX_PASSNEXT; - if (qc != '\'' && ch == '\n') /* double-quoted \ disappears. */ + /* XXX - PST_NOEXPAND? */ + if MBTEST(qc != '\'' && ch == '\n') /* double-quoted \ disappears. */ { if (retind > 0) retind--; /* swallow previously-added backslash */ @@ -6013,9 +6142,10 @@ parse_matched_pair (qc, open, close, lenp, flags) pop_delimiter (dstack); CHECK_NESTRET_ERROR (); - if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0)) + if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0 || dolbrace_state == DOLBRACE_QUOTE || dolbrace_state == DOLBRACE_QUOTE2)) { /* Translate $'...' here. */ + /* PST_NOEXPAND */ ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); free (nestret); @@ -6024,12 +6154,22 @@ parse_matched_pair (qc, open, close, lenp, flags) make sure we single-quote the results of the ansi expansion because quote removal should remove them later */ /* FLAG POSIX INTERP 221 */ - if ((shell_compatibility_level > 42) && (rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_QUOTE2) && (flags & P_DOLBRACE)) + if ((shell_compatibility_level > 42) && (rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_QUOTE2 || dolbrace_state == DOLBRACE_QUOTE) && (flags & P_DOLBRACE)) + { + nestret = sh_single_quote (ttrans); + free (ttrans); + nestlen = strlen (nestret); + } +#if 0 /* TAG:bash-5.3 */ + /* This single-quotes PARAM in ${PARAM OP WORD} when PARAM + contains a $'...' even when extended_quote is set. */ + else if ((rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_PARAM) && (flags & P_DOLBRACE)) { nestret = sh_single_quote (ttrans); free (ttrans); nestlen = strlen (nestret); } +#endif else if ((rflags & P_DQUOTE) == 0) { nestret = sh_single_quote (ttrans); @@ -6038,22 +6178,41 @@ parse_matched_pair (qc, open, close, lenp, flags) } else { + /* Should we quote CTLESC here? */ nestret = ttrans; nestlen = ttranslen; } retind -= 2; /* back up before the $' */ } +#if defined (TRANSLATABLE_STRINGS) else if MBTEST((tflags & LEX_WASDOL) && ch == '"' && (extended_quote || (rflags & P_DQUOTE) == 0)) { /* Locale expand $"..." here. */ - ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); + /* PST_NOEXPAND */ + ttrans = locale_expand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); free (nestret); - nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); + /* If we're supposed to single-quote translated strings, + check whether the translated result is different from + the original and single-quote the string if it is. */ + if (singlequote_translations && + ((nestlen - 1) != ttranslen || STREQN (nestret, ttrans, ttranslen) == 0)) + { + if ((rflags & P_DQUOTE) == 0) + nestret = sh_single_quote (ttrans); + else if ((rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_QUOTE2) && (flags & P_DOLBRACE)) + nestret = sh_single_quote (ttrans); + else + /* single quotes aren't special, use backslash instead */ + nestret = sh_backslash_quote_for_double_quotes (ttrans, 0); + } + else + nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); free (ttrans); - nestlen = ttranslen + 2; + nestlen = strlen (nestret); retind -= 2; /* back up before the $" */ } +#endif /* TRANSLATABLE_STRINGS */ APPEND_NESTRET (); FREE (nestret); @@ -6155,11 +6314,26 @@ dump_tflags (flags) f &= ~LEX_CKCASE; fprintf (stderr, "LEX_CKCASE%s", f ? "|" : ""); } + if (f & LEX_CKESAC) + { + f &= ~LEX_CKESAC; + fprintf (stderr, "LEX_CKESAC%s", f ? "|" : ""); + } if (f & LEX_INCASE) { f &= ~LEX_INCASE; fprintf (stderr, "LEX_INCASE%s", f ? "|" : ""); } + if (f & LEX_CASEWD) + { + f &= ~LEX_CASEWD; + fprintf (stderr, "LEX_CASEWD%s", f ? "|" : ""); + } + if (f & LEX_PATLIST) + { + f &= ~LEX_PATLIST; + fprintf (stderr, "LEX_PATLIST%s", f ? "|" : ""); + } if (f & LEX_INHEREDOC) { f &= ~LEX_INHEREDOC; @@ -6191,554 +6365,172 @@ dump_tflags (flags) } #endif -/* Parse a $(...) command substitution. This is messier than I'd like, and - reproduces a lot more of the token-reading code than I'd like. */ +/* Parse a $(...) command substitution. This reads input from the current + input stream. */ static char * parse_comsub (qc, open, close, lenp, flags) int qc; /* `"' if this construct is within double quotes */ int open, close; int *lenp, flags; { - int count, ch, peekc, tflags, lex_rwlen, lex_wlen, lex_firstind; - int nestlen, ttranslen, start_lineno, orig_histexp; - char *ret, *nestret, *ttrans, *heredelim; - int retind, retsize, rflags, hdlen; + int peekc, r; + int start_lineno, local_extglob, was_extpat; + char *ret, *tcmd; + int retlen; + sh_parser_state_t ps; + STRING_SAVER *saved_strings; + COMMAND *saved_global, *parsed_command; /* Posix interp 217 says arithmetic expressions have precedence, so assume $(( introduces arithmetic expansion and parse accordingly. */ - peekc = shell_getc (0); - shell_ungetc (peekc); - if (peekc == '(') - return (parse_matched_pair (qc, open, close, lenp, 0)); + if (open == '(') /*)*/ + { + peekc = shell_getc (1); + shell_ungetc (peekc); + if (peekc == '(') /*)*/ + return (parse_matched_pair (qc, open, close, lenp, 0)); + } /*itrace("parse_comsub: qc = `%c' open = %c close = %c", qc, open, close);*/ - count = 1; - tflags = LEX_RESWDOK; -#if defined (BANG_HISTORY) - orig_histexp = history_expansion_inhibited; -#endif - if ((flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0) - tflags |= LEX_CKCASE; - if ((tflags & LEX_CKCASE) && (interactive == 0 || interactive_comments)) - tflags |= LEX_CKCOMMENT; + /*debug_parser(1);*/ + start_lineno = line_number; - /* RFLAGS is the set of flags we want to pass to recursive calls. */ - rflags = (flags & P_DQUOTE); + save_parser_state (&ps); - ret = (char *)xmalloc (retsize = 64); - retind = 0; + was_extpat = (parser_state & PST_EXTPAT); + + /* State flags we don't want to persist into command substitutions. */ + parser_state &= ~(PST_REGEXP|PST_EXTPAT|PST_CONDCMD|PST_CONDEXPR|PST_COMPASSIGN); + /* Could do PST_CASESTMT too, but that also affects history. Setting + expecting_in_token below should take care of the parsing requirements. + Unsetting PST_REDIRLIST isn't strictly necessary because of how we set + token_to_read below, but we do it anyway. */ + parser_state &= ~(PST_CASEPAT|PST_ALEXPNEXT|PST_SUBSHELL|PST_REDIRLIST); + /* State flags we want to set for this run through the parser. */ + parser_state |= PST_CMDSUBST|PST_EOFTOKEN|PST_NOEXPAND; + + /* leave pushed_string_list alone, since we might need to consume characters + from it to satisfy this command substitution (in some perverse case). */ + shell_eof_token = close; + + saved_global = global_command; /* might not be necessary */ + global_command = (COMMAND *)NULL; + + /* These are reset by reset_parser() */ + need_here_doc = 0; + esacs_needed_count = expecting_in_token = 0; + + /* We want to expand aliases on this pass if we're in posix mode, since the + standard says you have to take aliases into account when looking for the + terminating right paren. Otherwise, we defer until execution time for + backwards compatibility. */ + if (expand_aliases) + expand_aliases = posixly_correct != 0; +#if defined (EXTENDED_GLOB) + /* If (parser_state & PST_EXTPAT), we're parsing an extended pattern for a + conditional command and have already set global_extglob appropriately. */ + if (shell_compatibility_level <= 51 && was_extpat == 0) + { + local_extglob = global_extglob = extended_glob; + extended_glob = 1; + } +#endif - start_lineno = line_number; - lex_rwlen = lex_wlen = 0; + current_token = '\n'; /* XXX */ + token_to_read = DOLPAREN; /* let's trick the parser */ - heredelim = 0; - lex_firstind = -1; + r = yyparse (); - while (count) + if (need_here_doc > 0) { -comsub_readchar: - ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT|LEX_QUOTEDDOC)) == 0); + internal_warning ("command substitution: %d unterminated here-document%s", need_here_doc, (need_here_doc == 1) ? "" : "s"); + gather_here_documents (); /* XXX check compatibility level? */ + } - if (ch == EOF) - { -eof_error: -#if defined (BANG_HISTORY) - history_expansion_inhibited = orig_histexp; +#if defined (EXTENDED_GLOB) + if (shell_compatibility_level <= 51 && was_extpat == 0) + extended_glob = local_extglob; #endif - free (ret); - FREE (heredelim); - parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close); - EOF_Reached = 1; /* XXX */ - return (&matched_pair_error); - } - /* If we hit the end of a line and are reading the contents of a here - document, and it's not the same line that the document starts on, - check for this line being the here doc delimiter. Otherwise, if - we're in a here document, mark the next character as the beginning - of a line. */ - if (ch == '\n') - { - if ((tflags & LEX_HEREDELIM) && heredelim) - { - tflags &= ~LEX_HEREDELIM; - tflags |= LEX_INHEREDOC; -#if defined (BANG_HISTORY) - history_expansion_inhibited = 1; -#endif - lex_firstind = retind + 1; - } - else if (tflags & LEX_INHEREDOC) - { - int tind; - tind = lex_firstind; - while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t') - tind++; - if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen)) - { - tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC); -/*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/ - free (heredelim); - heredelim = 0; - lex_firstind = -1; -#if defined (BANG_HISTORY) - history_expansion_inhibited = orig_histexp; -#endif - } - else - lex_firstind = retind + 1; - } - } + parsed_command = global_command; - /* Possible reprompting. */ - if (ch == '\n' && SHOULD_PROMPT ()) - prompt_again (); + if (EOF_Reached) + { + shell_eof_token = ps.eof_token; + expand_aliases = ps.expand_aliases; - /* XXX -- we currently allow here doc to be delimited by ending right - paren in default mode and posix mode. To change posix mode, change - the #if 1 to #if 0 below */ - if ((tflags & LEX_INHEREDOC) && ch == close && count == 1) + /* yyparse() has already called yyerror() and reset_parser() */ + return (&matched_pair_error); + } + else if (r != 0) + { + /* parser_error (start_lineno, _("could not parse command substitution")); */ + /* Non-interactive shells exit on parse error in a command substitution. */ + if (last_command_exit_value == 0) + last_command_exit_value = EXECUTION_FAILURE; + set_exit_status (last_command_exit_value); + if (interactive_shell == 0) + jump_to_top_level (FORCE_EOF); /* This is like reader_loop() */ + else { - int tind; -/*itrace("parse_comsub:%d: in here doc, ch == close, retind - firstind = %d hdlen = %d retind = %d", line_number, retind-lex_firstind, hdlen, retind);*/ - tind = lex_firstind; - while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t') - tind++; -#if 1 - if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen)) -#else - /* Posix-mode shells require the newline after the here-document - delimiter. */ - if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen) && - posixly_correct == 0) -#endif - { - tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC); -/*itrace("parse_comsub:%d: found here doc end `%*s'", line_number, hdlen, ret + tind);*/ - free (heredelim); - heredelim = 0; - lex_firstind = -1; -#if defined (BANG_HISTORY) - history_expansion_inhibited = orig_histexp; -#endif - } + shell_eof_token = ps.eof_token; + expand_aliases = ps.expand_aliases; + + jump_to_top_level (DISCARD); /* XXX - return (&matched_pair_error)? */ } + } - /* Don't bother counting parens or doing anything else if in a comment or - here document (not exactly right for here-docs -- if we want to allow - recursive calls to parse_comsub to have their own here documents, - change the LEX_INHEREDOC to LEX_QUOTEDDOC here and uncomment the next - clause below. Note that to make this work completely, we need to make - additional changes to allow xparse_dolparen to work right when the - command substitution is parsed, because read_secondary_line doesn't know - to recursively parse through command substitutions embedded in here- - documents */ - if (tflags & (LEX_INCOMMENT|LEX_INHEREDOC)) - { - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; + if (current_token != shell_eof_token) + { +INTERNAL_DEBUG(("current_token (%d) != shell_eof_token (%c)", current_token, shell_eof_token)); + token_to_read = current_token; - if ((tflags & LEX_INCOMMENT) && ch == '\n') - { -/*itrace("parse_comsub:%d: lex_incomment -> 0 ch = `%c'", line_number, ch);*/ - tflags &= ~LEX_INCOMMENT; - } + /* If we get here we can check eof_encountered and if it's 1 but the + previous EOF_Reached test didn't succeed, we can assume that the shell + is interactive and ignoreeof is set. We might want to restore the + parser state in this case. */ + shell_eof_token = ps.eof_token; + expand_aliases = ps.expand_aliases; - continue; - } -#if 0 - /* If we're going to recursively parse a command substitution inside a - here-document, make sure we call parse_comsub recursively below. See - above for additional caveats. */ - if ((tflags & LEX_INHEREDOC) && ((tflags & LEX_WASDOL) == 0 || ch != '(')) /*)*/ - { - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; - if MBTEST(ch == '$') - tflags |= LEX_WASDOL; - else - tflags &= ~LEX_WASDOL; - } -#endif + return (&matched_pair_error); + } - if (tflags & LEX_PASSNEXT) /* last char was backslash */ - { -/*itrace("parse_comsub:%d: lex_passnext -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/ - tflags &= ~LEX_PASSNEXT; - if (qc != '\'' && ch == '\n') /* double-quoted \ disappears. */ - { - if (retind > 0) - retind--; /* swallow previously-added backslash */ - continue; - } + /* We don't want to restore the old pushed string list, since we might have + used it to consume additional input from an alias while parsing this + command substitution. */ + saved_strings = pushed_string_list; + restore_parser_state (&ps); + pushed_string_list = saved_strings; - RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); - if MBTEST(ch == CTLESC) - ret[retind++] = CTLESC; - ret[retind++] = ch; - continue; - } - - /* If this is a shell break character, we are not in a word. If not, - we either start or continue a word. */ - if MBTEST(shellbreak (ch)) - { - tflags &= ~LEX_INWORD; -/*itrace("parse_comsub:%d: lex_inword -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/ - } - else - { - if (tflags & LEX_INWORD) - { - lex_wlen++; -/*itrace("parse_comsub:%d: lex_inword == 1 ch = `%c' lex_wlen = %d (%d)", line_number, ch, lex_wlen, __LINE__);*/ - } - else - { -/*itrace("parse_comsub:%d: lex_inword -> 1 ch = `%c' (%d)", line_number, ch, __LINE__);*/ - tflags |= LEX_INWORD; - lex_wlen = 0; - if (tflags & LEX_RESWDOK) - lex_rwlen = 0; - } - } - - /* Skip whitespace */ - if MBTEST(shellblank (ch) && (tflags & LEX_HEREDELIM) == 0 && lex_rwlen == 0) - { - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; - continue; - } - - /* Either we are looking for the start of the here-doc delimiter - (lex_firstind == -1) or we are reading one (lex_firstind >= 0). - If this character is a shell break character and we are reading - the delimiter, save it and note that we are now reading a here - document. If we've found the start of the delimiter, note it by - setting lex_firstind. Backslashes can quote shell metacharacters - in here-doc delimiters. */ - if (tflags & LEX_HEREDELIM) - { - if (lex_firstind == -1 && shellbreak (ch) == 0) - lex_firstind = retind; -#if 0 - else if (heredelim && (tflags & LEX_PASSNEXT) == 0 && ch == '\n') - { - tflags |= LEX_INHEREDOC; - tflags &= ~LEX_HEREDELIM; - lex_firstind = retind + 1; -#if defined (BANG_HISTORY) - history_expansion_inhibited = 1; -#endif - } -#endif - else if (lex_firstind >= 0 && (tflags & LEX_PASSNEXT) == 0 && shellbreak (ch)) - { - if (heredelim == 0) - { - nestret = substring (ret, lex_firstind, retind); - heredelim = string_quote_removal (nestret, 0); - hdlen = STRLEN(heredelim); -/*itrace("parse_comsub:%d: found here doc delimiter `%s' (%d)", line_number, heredelim, hdlen);*/ - if (STREQ (heredelim, nestret) == 0) - tflags |= LEX_QUOTEDDOC; - free (nestret); - } - if (ch == '\n') - { - tflags |= LEX_INHEREDOC; - tflags &= ~LEX_HEREDELIM; - lex_firstind = retind + 1; -#if defined (BANG_HISTORY) - history_expansion_inhibited = 1; -#endif - } - else - lex_firstind = -1; - } - } - - /* Meta-characters that can introduce a reserved word. Not perfect yet. */ - if MBTEST((tflags & LEX_RESWDOK) == 0 && (tflags & LEX_CKCASE) && (tflags & LEX_INCOMMENT) == 0 && (shellmeta(ch) || ch == '\n')) - { - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; - peekc = shell_getc (1); - if (ch == peekc && (ch == '&' || ch == '|' || ch == ';')) /* two-character tokens */ - { - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = peekc; -/*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/ - tflags |= LEX_RESWDOK; - lex_rwlen = 0; - continue; - } - else if (ch == '\n' || COMSUB_META(ch)) - { - shell_ungetc (peekc); -/*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/ - tflags |= LEX_RESWDOK; - lex_rwlen = 0; - continue; - } - else if (ch == EOF) - goto eof_error; - else - { - /* `unget' the character we just added and fall through */ - retind--; - shell_ungetc (peekc); - } - } - - /* If we can read a reserved word, try to read one. */ - if (tflags & LEX_RESWDOK) - { - if MBTEST(islower ((unsigned char)ch)) - { - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; - lex_rwlen++; - continue; - } - else if MBTEST(lex_rwlen == 4 && shellbreak (ch)) - { - if (STREQN (ret + retind - 4, "case", 4)) - { - tflags |= LEX_INCASE; - tflags &= ~LEX_RESWDOK; -/*itrace("parse_comsub:%d: found `case', lex_incase -> 1 lex_reswdok -> 0", line_number);*/ - } - else if (STREQN (ret + retind - 4, "esac", 4)) - { - tflags &= ~LEX_INCASE; -/*itrace("parse_comsub:%d: found `esac', lex_incase -> 0 lex_reswdok -> 1", line_number);*/ - tflags |= LEX_RESWDOK; - lex_rwlen = 0; - } - else if (STREQN (ret + retind - 4, "done", 4) || - STREQN (ret + retind - 4, "then", 4) || - STREQN (ret + retind - 4, "else", 4) || - STREQN (ret + retind - 4, "elif", 4) || - STREQN (ret + retind - 4, "time", 4)) - { - /* these are four-character reserved words that can be - followed by a reserved word; anything else turns off - the reserved-word-ok flag */ -/*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 1", line_number, ret+retind-4);*/ - tflags |= LEX_RESWDOK; - lex_rwlen = 0; - } - else if (shellmeta (ch) == 0) - { - tflags &= ~LEX_RESWDOK; -/*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/ - } - else /* can't be in a reserved word any more */ - lex_rwlen = 0; - } - else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0))) - ; /* don't modify LEX_RESWDOK if we're starting a comment */ - /* Allow `do' followed by space, tab, or newline to preserve the - RESWDOK flag, but reset the reserved word length counter so we - can read another one. */ - else if MBTEST(((tflags & LEX_INCASE) == 0) && - (isblank((unsigned char)ch) || ch == '\n') && - lex_rwlen == 2 && - STREQN (ret + retind - 2, "do", 2)) - { -/*itrace("parse_comsub:%d: lex_incase == 0 found `%c', found \"do\"", line_number, ch);*/ - lex_rwlen = 0; - } - else if MBTEST((tflags & LEX_INCASE) && ch != '\n') - /* If we can read a reserved word and we're in case, we're at the - point where we can read a new pattern list or an esac. We - handle the esac case above. If we read a newline, we want to - leave LEX_RESWDOK alone. If we read anything else, we want to - turn off LEX_RESWDOK, since we're going to read a pattern list. */ - { - tflags &= ~LEX_RESWDOK; -/*itrace("parse_comsub:%d: lex_incase == 1 found `%c', lex_reswordok -> 0", line_number, ch);*/ - } - else if MBTEST(shellbreak (ch) == 0) - { - tflags &= ~LEX_RESWDOK; -/*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/ - } -#if 0 - /* If we find a space or tab but have read something and it's not - `do', turn off the reserved-word-ok flag */ - else if MBTEST(isblank ((unsigned char)ch) && lex_rwlen > 0) - { - tflags &= ~LEX_RESWDOK; -/*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/ - } -#endif - } - - /* Might be the start of a here-doc delimiter */ - if MBTEST((tflags & LEX_INCOMMENT) == 0 && (tflags & LEX_CKCASE) && ch == '<') - { - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; - peekc = shell_getc (1); - if (peekc == EOF) - goto eof_error; - if (peekc == ch) - { - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = peekc; - peekc = shell_getc (1); - if (peekc == EOF) - goto eof_error; - if (peekc == '-') - { - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = peekc; - tflags |= LEX_STRIPDOC; - } - else - shell_ungetc (peekc); - if (peekc != '<') - { - tflags |= LEX_HEREDELIM; - lex_firstind = -1; - } - continue; - } - else - { - shell_ungetc (peekc); /* not a here-doc, start over */ - continue; - } - } - else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (((tflags & LEX_RESWDOK) && lex_rwlen == 0) || ((tflags & LEX_INWORD) && lex_wlen == 0))) - { -/*itrace("parse_comsub:%d: lex_incomment -> 1 (%d)", line_number, __LINE__);*/ - tflags |= LEX_INCOMMENT; - } - - if MBTEST(ch == CTLESC || ch == CTLNUL) /* special shell escapes */ - { - RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); - ret[retind++] = CTLESC; - ret[retind++] = ch; - continue; - } -#if 0 - else if MBTEST((tflags & LEX_INCASE) && ch == close && close == ')') - tflags &= ~LEX_INCASE; /* XXX */ -#endif - else if MBTEST(ch == close && (tflags & LEX_INCASE) == 0) /* ending delimiter */ - { - count--; -/*itrace("parse_comsub:%d: found close: count = %d", line_number, count);*/ - } - else if MBTEST(((flags & P_FIRSTCLOSE) == 0) && (tflags & LEX_INCASE) == 0 && ch == open) /* nested begin */ - { - count++; -/*itrace("parse_comsub:%d: found open: count = %d", line_number, count);*/ - } - - /* Add this character. */ - RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); - ret[retind++] = ch; - - /* If we just read the ending character, don't bother continuing. */ - if (count == 0) - break; - - if MBTEST(ch == '\\') /* backslashes */ - tflags |= LEX_PASSNEXT; - - if MBTEST(shellquote (ch)) - { - /* '', ``, or "" inside $(...). */ - push_delimiter (dstack, ch); - if MBTEST((tflags & LEX_WASDOL) && ch == '\'') /* $'...' inside group */ - nestret = parse_matched_pair (ch, ch, ch, &nestlen, P_ALLOWESC|rflags); - else - nestret = parse_matched_pair (ch, ch, ch, &nestlen, rflags); - pop_delimiter (dstack); - CHECK_NESTRET_ERROR (); - - if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0)) - { - /* Translate $'...' here. */ - ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); - free (nestret); - - if ((rflags & P_DQUOTE) == 0) - { - nestret = sh_single_quote (ttrans); - free (ttrans); - nestlen = strlen (nestret); - } - else - { - nestret = ttrans; - nestlen = ttranslen; - } - retind -= 2; /* back up before the $' */ - } - else if MBTEST((tflags & LEX_WASDOL) && ch == '"' && (extended_quote || (rflags & P_DQUOTE) == 0)) - { - /* Locale expand $"..." here. */ - ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); - free (nestret); - - nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); - free (ttrans); - nestlen = ttranslen + 2; - retind -= 2; /* back up before the $" */ - } - - APPEND_NESTRET (); - FREE (nestret); - } - else if MBTEST((tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ - /* check for $(), $[], or ${} inside command substitution. */ - { - if ((tflags & LEX_INCASE) == 0 && open == ch) /* undo previous increment */ - count--; - if (ch == '(') /* ) */ - nestret = parse_comsub (0, '(', ')', &nestlen, (rflags|P_COMMAND) & ~P_DQUOTE); - else if (ch == '{') /* } */ - nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags); - else if (ch == '[') /* ] */ - nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags); - - CHECK_NESTRET_ERROR (); - APPEND_NESTRET (); - - FREE (nestret); - } - if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0) - tflags |= LEX_WASDOL; - else - tflags &= ~LEX_WASDOL; + tcmd = print_comsub (parsed_command); /* returns static memory */ + retlen = strlen (tcmd); + if (tcmd[0] == '(') /* ) need a space to prevent arithmetic expansion */ + retlen++; + ret = xmalloc (retlen + 2); + if (tcmd[0] == '(') /* ) */ + { + ret[0] = ' '; + strcpy (ret + 1, tcmd); } + else + strcpy (ret, tcmd); + ret[retlen++] = ')'; + ret[retlen] = '\0'; + + dispose_command (parsed_command); + global_command = saved_global; -#if defined (BANG_HISTORY) - history_expansion_inhibited = orig_histexp; -#endif - FREE (heredelim); - ret[retind] = '\0'; if (lenp) - *lenp = retind; + *lenp = retlen; + /*itrace("parse_comsub:%d: returning `%s'", line_number, ret);*/ return ret; } -/* Recursively call the parser to parse a $(...) command substitution. */ +/* Recursively call the parser to parse a $(...) command substitution. This is + called by the word expansion code and so does not have to reset as much + parser state before calling yyparse(). */ char * xparse_dolparen (base, string, indp, flags) char *base; @@ -6748,11 +6540,8 @@ xparse_dolparen (base, string, indp, flags) { sh_parser_state_t ps; sh_input_line_state_t ls; - int orig_ind, nc, sflags, orig_eof_token, start_lineno; + int orig_ind, nc, sflags, start_lineno; char *ret, *ep, *ostring; -#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) - STRING_SAVER *saved_pushed_strings; -#endif /*debug_parser(1);*/ orig_ind = *indp; @@ -6770,41 +6559,48 @@ xparse_dolparen (base, string, indp, flags) } /*itrace("xparse_dolparen: size = %d shell_input_line = `%s' string=`%s'", shell_input_line_size, shell_input_line, string);*/ + sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE; if (flags & SX_NOLONGJMP) sflags |= SEVAL_NOLONGJMP; + save_parser_state (&ps); save_input_line_state (&ls); - orig_eof_token = shell_eof_token; + #if defined (ALIAS) || defined (DPAREN_ARITHMETIC) - saved_pushed_strings = pushed_string_list; /* separate parsing context */ pushed_string_list = (STRING_SAVER *)NULL; #endif - /*(*/ parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/ shell_eof_token = ')'; + if (flags & SX_COMPLETE) + parser_state |= PST_NOERROR; + + /* Don't expand aliases on this pass at all. Either parse_comsub() does it + at parse time, in which case this string already has aliases expanded, + or command_substitute() does it in the child process executing the + command substitution and we want to defer it completely until then. The + old value will be restored by restore_parser_state(). */ + expand_aliases = 0; +#if defined (EXTENDED_GLOB) + global_extglob = extended_glob; /* for reset_parser() */ +#endif - /* Should we save and restore the bison/yacc lookahead token (yychar) here? - Or only if it's not YYEMPTY? */ + token_to_read = DOLPAREN; /* let's trick the parser */ - nc = parse_string (string, "command substitution", sflags, &ep); + nc = parse_string (string, "command substitution", sflags, (COMMAND **)NULL, &ep); + /* Should we save and restore the bison/yacc lookahead token (yychar) here? + Or only if it's not YYEMPTY? */ if (current_token == shell_eof_token) yyclearin; /* might want to clear lookahead token unconditionally */ - reset_parser (); + reset_parser (); /* resets extended_glob too */ /* reset_parser() clears shell_input_line and associated variables, including parser_state, so we want to reset things, then restore what we need. */ restore_input_line_state (&ls); - - shell_eof_token = orig_eof_token; restore_parser_state (&ps); -#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) - pushed_string_list = saved_pushed_strings; -#endif - token_to_read = 0; /* If parse_string returns < 0, we need to jump to top level with the @@ -6815,17 +6611,18 @@ xparse_dolparen (base, string, indp, flags) clear_shell_input_line (); /* XXX */ if (bash_input.type != st_string) /* paranoia */ parser_state &= ~(PST_CMDSUBST|PST_EOFTOKEN); - jump_to_top_level (-nc); /* XXX */ + if ((flags & SX_NOLONGJMP) == 0) + jump_to_top_level (-nc); /* XXX */ } - /* Need to find how many characters parse_and_execute consumed, update + /* Need to find how many characters parse_string() consumed, update *indp, if flags != 0, copy the portion of the string parsed into RET and return it. If flags & 1 (SX_NOALLOC) we can return NULL. */ /*(*/ if (ep[-1] != ')') { -#if DEBUG +#if 0 if (ep[-1] != '\n') itrace("xparse_dolparen:%d: ep[-1] != RPAREN (%d), ep = `%s'", line_number, ep[-1], ep); #endif @@ -6837,17 +6634,18 @@ xparse_dolparen (base, string, indp, flags) *indp = ep - base - 1; /*((*/ -#if DEBUG +#if 0 if (base[*indp] != ')') itrace("xparse_dolparen:%d: base[%d] != RPAREN (%d), base = `%s'", line_number, *indp, base[*indp], base); if (*indp < orig_ind) itrace("xparse_dolparen:%d: *indp (%d) < orig_ind (%d), orig_string = `%s'", line_number, *indp, orig_ind, ostring); #endif - if (base[*indp] != ')') + if (base[*indp] != ')' && (flags & SX_NOLONGJMP) == 0) { /*(*/ - parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), ')'); + if ((flags & SX_NOERROR) == 0) + parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), ')'); jump_to_top_level (DISCARD); } @@ -6865,6 +6663,74 @@ xparse_dolparen (base, string, indp, flags) return ret; } +/* Recursively call the parser to parse the string from a $(...) command + substitution to a COMMAND *. This is called from command_substitute() and + has the same parser state constraints as xparse_dolparen(). */ +COMMAND * +parse_string_to_command (string, flags) + char *string; + int flags; +{ + sh_parser_state_t ps; + sh_input_line_state_t ls; + int nc, sflags; + size_t slen; + char *ret, *ep; + COMMAND *cmd; + + if (*string == 0) + return (COMMAND *)NULL; + + ep = string; + slen = STRLEN (string); + +/*itrace("parse_string_to_command: size = %d shell_input_line = `%s' string=`%s'", shell_input_line_size, shell_input_line, string);*/ + + sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE; + if (flags & SX_NOLONGJMP) + sflags |= SEVAL_NOLONGJMP; + + save_parser_state (&ps); + save_input_line_state (&ls); + +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + pushed_string_list = (STRING_SAVER *)NULL; +#endif + if (flags & SX_COMPLETE) + parser_state |= PST_NOERROR; + + expand_aliases = 0; + + cmd = 0; + nc = parse_string (string, "command substitution", sflags, &cmd, &ep); + + reset_parser (); + /* reset_parser() clears shell_input_line and associated variables, including + parser_state, so we want to reset things, then restore what we need. */ + restore_input_line_state (&ls); + restore_parser_state (&ps); + + /* If parse_string returns < 0, we need to jump to top level with the + negative of the return value. We abandon the rest of this input line + first */ + if (nc < 0) + { + clear_shell_input_line (); /* XXX */ + if ((flags & SX_NOLONGJMP) == 0) + jump_to_top_level (-nc); /* XXX */ + } + + /* Need to check how many characters parse_string() consumed, make sure it's + the entire string. */ + if (nc < slen) + { + dispose_command (cmd); + return (COMMAND *)NULL; + } + + return cmd; +} + #if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) /* Parse a double-paren construct. It can be either an arithmetic command, an arithmetic `for' command, or a nested subshell. Returns @@ -6881,7 +6747,9 @@ parse_dparen (c) #if defined (ARITH_FOR_COMMAND) if (last_read_token == FOR) { - arith_for_lineno = line_number; + if (word_top < MAX_CASE_NEST) + word_top++; + arith_for_lineno = word_lineno[word_top] = line_number; cmdtyp = parse_arith_cmd (&wval, 0); if (cmdtyp == 1) { @@ -6905,7 +6773,7 @@ parse_dparen (c) { wd = alloc_word_desc (); wd->word = wval; - wd->flags = W_QUOTED|W_NOSPLIT|W_NOGLOB|W_DQUOTE; + wd->flags = W_QUOTED|W_NOSPLIT|W_NOGLOB|W_NOTILDE|W_NOPROCSUB; yylval.word_list = make_word_list (wd, (WORD_LIST *)NULL); return (ARITH_CMD); } @@ -7040,7 +6908,7 @@ cond_skip_newlines () while ((cond_token = read_token (READ)) == '\n') { if (SHOULD_PROMPT ()) - prompt_again (); + prompt_again (0); } return (cond_token); } @@ -7053,7 +6921,7 @@ cond_term () { WORD_DESC *op; COND_COM *term, *tleft, *tright; - int tok, lineno; + int tok, lineno, local_extglob; char *etext; /* Read a token. It can be a left paren, a `!', a unary operator, or a @@ -7122,6 +6990,7 @@ cond_term () tleft = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); /* binop */ + /* tok = cond_skip_newlines (); ? */ tok = read_token (READ); if (tok == WORD && test_binop (yylval.word->word)) { @@ -7166,11 +7035,12 @@ cond_term () } /* rhs */ + local_extglob = extended_glob; if (parser_state & PST_EXTPAT) extended_glob = 1; tok = read_token (READ); if (parser_state & PST_EXTPAT) - extended_glob = global_extglob; + extended_glob = local_extglob; parser_state &= ~(PST_REGEXP|PST_EXTPAT); if (tok == WORD) @@ -7326,11 +7196,18 @@ read_token_word (character) double-quotes, quote some things inside of double-quotes. */ if MBTEST(character == '\\') { + if (parser_state & PST_NOEXPAND) + { + pass_next_character++; + quoted = 1; + goto got_character; + } + peek_char = shell_getc (0); /* Backslash-newline is ignored in all cases except when quoted with single quotes. */ - if (peek_char == '\n') + if MBTEST(peek_char == '\n') { character = '\n'; goto next_character; @@ -7340,7 +7217,7 @@ read_token_word (character) shell_ungetc (peek_char); /* If the next character is to be quoted, note it now. */ - if (cd == 0 || cd == '`' || + if MBTEST(cd == 0 || cd == '`' || (cd == '"' && peek_char >= 0 && (sh_syntaxtab[peek_char] & CBSDQUOTE))) pass_next_character++; @@ -7425,7 +7302,7 @@ read_token_word (character) /* If the delimiter character is not single quote, parse some of the shell expansions that must be read as a single word. */ - if (shellexp (character)) + if MBTEST(shellexp (character)) { peek_char = shell_getc (1); /* $(...), <(...), >(...), $((...)), ${...}, and $[...] constructs */ @@ -7462,7 +7339,11 @@ read_token_word (character) goto next_character; } /* This handles $'...' and $"..." new-style quoted strings. */ +#if defined (TRANSLATABLE_STRINGS) else if MBTEST(character == '$' && (peek_char == '\'' || peek_char == '"')) +#else + else if MBTEST(character == '$' && peek_char == '\'') +#endif { int first_line; @@ -7476,6 +7357,7 @@ read_token_word (character) return -1; if (peek_char == '\'') { + /* PST_NOEXPAND */ ttrans = ansiexpand (ttok, 0, ttoklen - 1, &ttranslen); free (ttok); @@ -7487,18 +7369,27 @@ read_token_word (character) ttranslen = strlen (ttok); ttrans = ttok; } +#if defined (TRANSLATABLE_STRINGS) else { + /* PST_NOEXPAND */ /* Try to locale-expand the converted string. */ - ttrans = localeexpand (ttok, 0, ttoklen - 1, first_line, &ttranslen); + ttrans = locale_expand (ttok, 0, ttoklen - 1, first_line, &ttranslen); free (ttok); - /* Add the double quotes back */ - ttok = sh_mkdoublequoted (ttrans, ttranslen, 0); + /* Add the double quotes back (or single quotes if the user + has set that option). */ + if (singlequote_translations && + ((ttoklen - 1) != ttranslen || STREQN (ttok, ttrans, ttranslen) == 0)) + ttok = sh_single_quote (ttrans); + else + ttok = sh_mkdoublequoted (ttrans, ttranslen, 0); + free (ttrans); - ttranslen += 2; ttrans = ttok; + ttranslen = strlen (ttrans); } +#endif /* TRANSLATABLE_STRINGS */ RESIZE_MALLOCED_BUFFER (token, token_index, ttranslen + 1, token_buffer_size, @@ -7591,7 +7482,7 @@ read_token_word (character) } got_character: - if (character == CTLESC || character == CTLNUL) + if MBTEST(character == CTLESC || character == CTLNUL) { RESIZE_MALLOCED_BUFFER (token, token_index, 2, token_buffer_size, TOKEN_DEFAULT_GROW_SIZE); @@ -7609,7 +7500,7 @@ got_escaped_character: next_character: if (character == '\n' && SHOULD_PROMPT ()) - prompt_again (); + prompt_again (0); /* We want to remove quoted newlines (that is, a \ pair) unless we are within single quotes or pass_next_character is @@ -7705,7 +7596,7 @@ got_token: yylval.word = the_word; /* should we check that quoted == 0 as well? */ - if (token[0] == '{' && token[token_index-1] == '}' && + if MBTEST(token[0] == '{' && token[token_index-1] == '}' && (character == '<' || character == '>')) { /* can use token; already copied to the_word */ @@ -7767,8 +7658,10 @@ reserved_word_acceptable (toksym) case '{': case '}': /* XXX */ case AND_AND: + case ARITH_CMD: case BANG: case BAR_AND: + case COND_END: case DO: case DONE: case ELIF: @@ -7788,6 +7681,7 @@ reserved_word_acceptable (toksym) case UNTIL: case WHILE: case 0: + case DOLPAREN: return 1; default: #if defined (COPROCESS_SUPPORT) @@ -7947,8 +7841,11 @@ history_delimiting_chars (line) return (" "); } + /* Assume that by this point we are reading lines in a multi-line command. + If we have multiple consecutive blank lines we want to return only one + semicolon. */ if (line_isblank (line)) - return (""); + return (current_command_line_count > 1 && last_read_token == '\n' && token_before_that != '\n') ? "; " : ""; return ("; "); } @@ -7957,7 +7854,8 @@ history_delimiting_chars (line) /* Issue a prompt, or prepare to issue a prompt when the next character is read. */ static void -prompt_again () +prompt_again (force) + int force; { char *temp_prompt; @@ -8087,7 +7985,7 @@ decode_prompt_string (string) int last_exit_value, last_comsub_pid; #if defined (PROMPT_STRING_DECODE) size_t result_size; - int result_index; + size_t result_index; int c, n, i; char *temp, *t_host, octal_string[4]; struct tm *tm; @@ -8224,7 +8122,7 @@ decode_prompt_string (string) /* Make sure that expand_prompt_string is called with a second argument of Q_DOUBLE_QUOTES if we use this function here. */ - temp = sh_backslash_quote_for_double_quotes (timebuf); + temp = sh_backslash_quote_for_double_quotes (timebuf, 0); else temp = savestring (timebuf); goto add_string; @@ -8240,9 +8138,14 @@ decode_prompt_string (string) temp = base_pathname (shell_name); /* Try to quote anything the user can set in the file system */ if (promptvars || posixly_correct) - temp = sh_backslash_quote_for_double_quotes (temp); + { + char *t; + t = sh_strvis (temp); + temp = sh_backslash_quote_for_double_quotes (t, 0); + free (t); + } else - temp = savestring (temp); + temp = sh_strvis (temp); goto add_string; case 'v': @@ -8317,9 +8220,14 @@ decode_prompt_string (string) /* Make sure that expand_prompt_string is called with a second argument of Q_DOUBLE_QUOTES if we use this function here. */ - temp = sh_backslash_quote_for_double_quotes (t_string); + { + char *t; + t = sh_strvis (t_string); + temp = sh_backslash_quote_for_double_quotes (t, 0); + free (t); + } else - temp = savestring (t_string); + temp = sh_strvis (t_string); goto add_string; } @@ -8339,7 +8247,7 @@ decode_prompt_string (string) /* Make sure that expand_prompt_string is called with a second argument of Q_DOUBLE_QUOTES if we use this function here. */ - temp = sh_backslash_quote_for_double_quotes (t_host); + temp = sh_backslash_quote_for_double_quotes (t_host, 0); else temp = savestring (t_host); free (t_host); @@ -8494,7 +8402,8 @@ int yyerror (msg) const char *msg; { - report_syntax_error ((char *)NULL); + if ((parser_state & PST_NOERROR) == 0) + report_syntax_error ((char *)NULL); reset_parser (); return (0); } @@ -8656,8 +8565,14 @@ report_syntax_error (message) } else { - msg = EOF_Reached ? _("syntax error: unexpected end of file") : _("syntax error"); - parser_error (line_number, "%s", msg); + if (EOF_Reached && shell_eof_token && current_token != shell_eof_token) + parser_error (line_number, _("unexpected EOF while looking for matching `%c'"), shell_eof_token); + else + { + msg = EOF_Reached ? _("syntax error: unexpected end of file") : _("syntax error"); + parser_error (line_number, "%s", msg); + } + /* When the shell is interactive, this file uses EOF_Reached only for error reporting. Other mechanisms are used to decide whether or not to exit. */ @@ -8726,7 +8641,7 @@ handle_eof_input_unit () last_read_token = current_token = '\n'; /* Reset the prompt string to be $PS1. */ prompt_string_pointer = (char **)NULL; - prompt_again (); + prompt_again (0); return; } } @@ -8765,31 +8680,26 @@ parse_string_to_word_list (s, flags, whom) const char *whom; { WORD_LIST *wl; - int tok, orig_current_token, orig_line_number, orig_input_terminator; - int orig_line_count; - int old_echo_input, old_expand_aliases, ea; -#if defined (HISTORY) - int old_remember_on_history, old_history_expansion_inhibited; -#endif + int tok, orig_current_token, orig_line_number; + int orig_parser_state; + sh_parser_state_t ps; + int ea; + + orig_line_number = line_number; + save_parser_state (&ps); #if defined (HISTORY) - old_remember_on_history = remember_on_history; -# if defined (BANG_HISTORY) - old_history_expansion_inhibited = history_expansion_inhibited; -# endif bash_history_disable (); #endif - orig_line_number = line_number; - orig_line_count = current_command_line_count; - orig_input_terminator = shell_input_line_terminator; - old_echo_input = echo_input_at_read; - old_expand_aliases = expand_aliases; - push_stream (1); if (ea = expanding_alias ()) parser_save_alias (); - last_read_token = WORD; /* WORD to allow reserved words here */ + + /* WORD to avoid parsing reserved words as themselves and just parse them as + WORDs. */ + last_read_token = WORD; + current_command_line_count = 0; echo_input_at_read = expand_aliases = 0; @@ -8797,7 +8707,13 @@ parse_string_to_word_list (s, flags, whom) wl = (WORD_LIST *)NULL; if (flags & 1) - parser_state |= PST_COMPASSIGN|PST_REPARSE; + { + orig_parser_state = parser_state; /* XXX - not needed? */ + /* State flags we don't want to persist into compound assignments. */ + parser_state &= ~PST_NOEXPAND; /* parse_comsub sentinel */ + /* State flags we want to set for this run through the tokenizer. */ + parser_state |= PST_COMPASSIGN|PST_REPARSE; + } while ((tok = read_token (READ)) != yacc_EOF) { @@ -8826,21 +8742,10 @@ parse_string_to_word_list (s, flags, whom) if (ea) parser_restore_alias (); -#if defined (HISTORY) - remember_on_history = old_remember_on_history; -# if defined (BANG_HISTORY) - history_expansion_inhibited = old_history_expansion_inhibited; -# endif /* BANG_HISTORY */ -#endif /* HISTORY */ - - echo_input_at_read = old_echo_input; - expand_aliases = old_expand_aliases; - - current_command_line_count = orig_line_count; - shell_input_line_terminator = orig_input_terminator; + restore_parser_state (&ps); if (flags & 1) - parser_state &= ~(PST_COMPASSIGN|PST_REPARSE); + parser_state = orig_parser_state; /* XXX - not needed? */ if (wl == &parse_string_error) { @@ -8859,30 +8764,37 @@ parse_compound_assignment (retlenp) int *retlenp; { WORD_LIST *wl, *rl; - int tok, orig_line_number, orig_token_size, orig_last_token, assignok; - char *saved_token, *ret; + int tok, orig_line_number, assignok; + sh_parser_state_t ps; + char *ret; - saved_token = token; - orig_token_size = token_buffer_size; orig_line_number = line_number; - orig_last_token = last_read_token; + save_parser_state (&ps); - last_read_token = WORD; /* WORD to allow reserved words here */ + /* WORD to avoid parsing reserved words as themselves and just parse them as + WORDs. Plus it means we won't be in a command position and so alias + expansion won't happen. */ + last_read_token = WORD; token = (char *)NULL; token_buffer_size = 0; + wl = (WORD_LIST *)NULL; /* ( */ assignok = parser_state&PST_ASSIGNOK; /* XXX */ - wl = (WORD_LIST *)NULL; /* ( */ + /* State flags we don't want to persist into compound assignments. */ + parser_state &= ~(PST_NOEXPAND|PST_CONDCMD|PST_CONDEXPR|PST_REGEXP|PST_EXTPAT); + /* State flags we want to set for this run through the tokenizer. */ parser_state |= PST_COMPASSIGN; + esacs_needed_count = expecting_in_token = 0; + while ((tok = read_token (READ)) != ')') { if (tok == '\n') /* Allow newlines in compound assignments */ { if (SHOULD_PROMPT ()) - prompt_again (); + prompt_again (0); continue; } if (tok != WORD && tok != ASSIGNMENT_WORD) @@ -8900,11 +8812,7 @@ parse_compound_assignment (retlenp) wl = make_word_list (yylval.word, wl); } - FREE (token); - token = saved_token; - token_buffer_size = orig_token_size; - - parser_state &= ~PST_COMPASSIGN; + restore_parser_state (&ps); if (wl == &parse_string_error) { @@ -8916,8 +8824,6 @@ parse_compound_assignment (retlenp) jump_to_top_level (DISCARD); } - last_read_token = orig_last_token; /* XXX - was WORD? */ - if (wl) { rl = REVERSE_LIST (wl, WORD_LIST *); @@ -8956,6 +8862,7 @@ save_parser_state (ps) ps->input_line_terminator = shell_input_line_terminator; ps->eof_encountered = eof_encountered; + ps->eol_lookahead = eol_ungetc_lookahead; ps->prompt_string_pointer = prompt_string_pointer; @@ -8981,11 +8888,19 @@ save_parser_state (ps) ps->need_here_doc = need_here_doc; ps->here_doc_first_line = here_doc_first_line; + ps->esacs_needed = esacs_needed_count; + ps->expecting_in = expecting_in_token; + if (need_here_doc == 0) ps->redir_stack[0] = 0; else memcpy (ps->redir_stack, redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX); +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + ps->pushed_strings = pushed_string_list; +#endif + + ps->eof_token = shell_eof_token; ps->token = token; ps->token_buffer_size = token_buffer_size; /* Force reallocation on next call to read_token_word */ @@ -9013,6 +8928,7 @@ restore_parser_state (ps) shell_input_line_terminator = ps->input_line_terminator; eof_encountered = ps->eof_encountered; + eol_ungetc_lookahead = ps->eol_lookahead; prompt_string_pointer = ps->prompt_string_pointer; @@ -9038,6 +8954,9 @@ restore_parser_state (ps) need_here_doc = ps->need_here_doc; here_doc_first_line = ps->here_doc_first_line; + esacs_needed_count = ps->esacs_needed; + expecting_in_token = ps->expecting_in; + #if 0 for (i = 0; i < HEREDOC_MAX; i++) redir_stack[i] = ps->redir_stack[i]; @@ -9048,9 +8967,14 @@ restore_parser_state (ps) memcpy (redir_stack, ps->redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX); #endif +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + pushed_string_list = (STRING_SAVER *)ps->pushed_strings; +#endif + FREE (token); token = ps->token; token_buffer_size = ps->token_buffer_size; + shell_eof_token = ps->eof_token; } sh_input_line_state_t * diff --git a/y.tab.h b/y.tab.h index 41bdea08e..3f3010777 100644 --- a/y.tab.h +++ b/y.tab.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -100,11 +100,13 @@ extern int yydebug; LESS_GREATER = 301, /* LESS_GREATER */ GREATER_BAR = 302, /* GREATER_BAR */ BAR_AND = 303, /* BAR_AND */ - yacc_EOF = 304 /* yacc_EOF */ + DOLPAREN = 304, /* DOLPAREN */ + yacc_EOF = 305 /* yacc_EOF */ }; typedef enum yytokentype yytoken_kind_t; #endif /* Token kinds. */ +#define YYEMPTY -2 #define YYEOF 0 #define YYerror 256 #define YYUNDEF 257 @@ -154,13 +156,14 @@ extern int yydebug; #define LESS_GREATER 301 #define GREATER_BAR 302 #define BAR_AND 303 -#define yacc_EOF 304 +#define DOLPAREN 304 +#define yacc_EOF 305 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 328 "/Users/chet/src/bash/src/parse.y" +#line 338 "/usr/local/src/chet/src/bash/src/parse.y" WORD_DESC *word; /* the word that we read. */ int number; /* the number that we read. */ @@ -170,7 +173,7 @@ union YYSTYPE ELEMENT element; PATTERN_LIST *pattern; -#line 174 "y.tab.h" +#line 177 "y.tab.h" }; typedef union YYSTYPE YYSTYPE; @@ -181,6 +184,8 @@ typedef union YYSTYPE YYSTYPE; extern YYSTYPE yylval; + int yyparse (void); + #endif /* !YY_YY_Y_TAB_H_INCLUDED */